Imported Upstream version 7.40.0 07/51807/1
authortaesub.kim <taesub.kim@samsung.com>
Mon, 16 Nov 2015 08:28:24 +0000 (17:28 +0900)
committertaesub.kim <taesub.kim@samsung.com>
Mon, 16 Nov 2015 08:28:36 +0000 (17:28 +0900)
Change-Id: I744943f451cb7db8f796a53f10dd6f57c297287d

1841 files changed:
CHANGES
CMake/CurlCheckCSourceCompiles.cmake [deleted file]
CMake/CurlCheckCSourceRuns.cmake [deleted file]
CMake/CurlTests.c
CMake/FindGSS.cmake [new file with mode: 0644]
CMake/FindOpenSSL.cmake [deleted file]
CMake/FindZLIB.cmake [deleted file]
CMake/Macros.cmake [new file with mode: 0644]
CMake/OtherTests.cmake
CMake/Platforms/WindowsCache.cmake
CMakeLists.txt
COPYING
Makefile
Makefile.am
Makefile.in
RELEASE-NOTES
acinclude.m4
aclocal.m4
buildconf
config.guess
config.sub
configure
configure.ac
docs/BINDINGS
docs/CONTRIBUTE
docs/DISTRO-DILEMMA
docs/FAQ
docs/FEATURES
docs/HISTORY
docs/INSTALL
docs/INTERNALS
docs/KNOWN_BUGS
docs/LIBCURL-STRUCTS
docs/LICENSE-MIXING
docs/MAIL-ETIQUETTE
docs/MANUAL
docs/Makefile.am
docs/Makefile.in
docs/README.netware
docs/RELEASE-PROCEDURE [new file with mode: 0644]
docs/SECURITY [new file with mode: 0644]
docs/SSL-PROBLEMS [new file with mode: 0644]
docs/SSLCERTS
docs/THANKS
docs/TODO
docs/TheArtOfHttpScripting
docs/curl-config.pdf
docs/curl.1
docs/curl.html
docs/curl.pdf
docs/examples/10-at-a-time.c
docs/examples/Makefile.in
docs/examples/Makefile.inc
docs/examples/Makefile.m32
docs/examples/Makefile.netware
docs/examples/asiohiper.cpp
docs/examples/cacertinmem.c
docs/examples/evhiperfifo.c
docs/examples/externalsocket.c
docs/examples/fopen.c
docs/examples/ftp-wildcard.c
docs/examples/ftpgetresp.c
docs/examples/getinmemory.c
docs/examples/ghiper.c
docs/examples/hiperfifo.c
docs/examples/href_extractor.c
docs/examples/httpcustomheader.c
docs/examples/httpput.c
docs/examples/imap-append.c [new file with mode: 0644]
docs/examples/imap-copy.c [new file with mode: 0644]
docs/examples/imap-create.c [new file with mode: 0644]
docs/examples/imap-delete.c [new file with mode: 0644]
docs/examples/imap-examine.c [new file with mode: 0644]
docs/examples/imap-fetch.c [moved from docs/examples/imap.c with 67% similarity]
docs/examples/imap-list.c [new file with mode: 0644]
docs/examples/imap-lsub.c [new file with mode: 0644]
docs/examples/imap-multi.c [new file with mode: 0644]
docs/examples/imap-noop.c [new file with mode: 0644]
docs/examples/imap-search.c [new file with mode: 0644]
docs/examples/imap-ssl.c [moved from docs/examples/pop3slist.c with 64% similarity]
docs/examples/imap-store.c [new file with mode: 0644]
docs/examples/imap-tls.c [new file with mode: 0644]
docs/examples/multi-app.c
docs/examples/multi-debugcallback.c
docs/examples/multi-double.c
docs/examples/multi-post.c
docs/examples/multi-single.c
docs/examples/multi-uv.c
docs/examples/pop3-dele.c [new file with mode: 0644]
docs/examples/pop3-list.c [new file with mode: 0644]
docs/examples/pop3-multi.c [new file with mode: 0644]
docs/examples/pop3-noop.c [new file with mode: 0644]
docs/examples/pop3-retr.c [new file with mode: 0644]
docs/examples/pop3-ssl.c [moved from docs/examples/pop3s.c with 64% similarity]
docs/examples/pop3-stat.c [new file with mode: 0644]
docs/examples/pop3-tls.c [new file with mode: 0644]
docs/examples/pop3-top.c [new file with mode: 0644]
docs/examples/pop3-uidl.c [new file with mode: 0644]
docs/examples/postinmemory.c [new file with mode: 0644]
docs/examples/rtsp.c
docs/examples/sepheaders.c
docs/examples/sessioninfo.c [new file with mode: 0644]
docs/examples/simplesmtp.c [deleted file]
docs/examples/simplessl.c
docs/examples/smtp-expn.c [new file with mode: 0644]
docs/examples/smtp-mail.c [new file with mode: 0644]
docs/examples/smtp-multi.c
docs/examples/smtp-ssl.c [new file with mode: 0644]
docs/examples/smtp-tls.c
docs/examples/smtp-vrfy.c [new file with mode: 0644]
docs/examples/synctime.c
docs/examples/url2file.c
docs/examples/usercertinmem.c
docs/libcurl/ABI
docs/libcurl/Makefile.am
docs/libcurl/Makefile.in
docs/libcurl/curl_easy_cleanup.3
docs/libcurl/curl_easy_cleanup.html
docs/libcurl/curl_easy_cleanup.pdf
docs/libcurl/curl_easy_duphandle.3
docs/libcurl/curl_easy_duphandle.html
docs/libcurl/curl_easy_duphandle.pdf
docs/libcurl/curl_easy_escape.3
docs/libcurl/curl_easy_escape.html
docs/libcurl/curl_easy_escape.pdf
docs/libcurl/curl_easy_getinfo.3
docs/libcurl/curl_easy_getinfo.html
docs/libcurl/curl_easy_getinfo.pdf
docs/libcurl/curl_easy_init.3
docs/libcurl/curl_easy_init.html
docs/libcurl/curl_easy_init.pdf
docs/libcurl/curl_easy_pause.3
docs/libcurl/curl_easy_pause.html
docs/libcurl/curl_easy_pause.pdf
docs/libcurl/curl_easy_perform.3
docs/libcurl/curl_easy_perform.html
docs/libcurl/curl_easy_perform.pdf
docs/libcurl/curl_easy_recv.3
docs/libcurl/curl_easy_recv.html
docs/libcurl/curl_easy_recv.pdf
docs/libcurl/curl_easy_reset.3
docs/libcurl/curl_easy_reset.html
docs/libcurl/curl_easy_reset.pdf
docs/libcurl/curl_easy_send.3
docs/libcurl/curl_easy_send.html
docs/libcurl/curl_easy_send.pdf
docs/libcurl/curl_easy_setopt.3
docs/libcurl/curl_easy_setopt.html
docs/libcurl/curl_easy_setopt.pdf
docs/libcurl/curl_easy_strerror.3
docs/libcurl/curl_easy_strerror.html
docs/libcurl/curl_easy_strerror.pdf
docs/libcurl/curl_easy_unescape.3
docs/libcurl/curl_easy_unescape.html
docs/libcurl/curl_easy_unescape.pdf
docs/libcurl/curl_escape.html
docs/libcurl/curl_escape.pdf
docs/libcurl/curl_formadd.3
docs/libcurl/curl_formadd.html
docs/libcurl/curl_formadd.pdf
docs/libcurl/curl_formfree.3
docs/libcurl/curl_formfree.html
docs/libcurl/curl_formfree.pdf
docs/libcurl/curl_formget.html
docs/libcurl/curl_formget.pdf
docs/libcurl/curl_free.3
docs/libcurl/curl_free.html
docs/libcurl/curl_free.pdf
docs/libcurl/curl_getdate.3
docs/libcurl/curl_getdate.html
docs/libcurl/curl_getdate.pdf
docs/libcurl/curl_getenv.html
docs/libcurl/curl_getenv.pdf
docs/libcurl/curl_global_cleanup.html
docs/libcurl/curl_global_cleanup.pdf
docs/libcurl/curl_global_init.3
docs/libcurl/curl_global_init.html
docs/libcurl/curl_global_init.pdf
docs/libcurl/curl_global_init_mem.html
docs/libcurl/curl_global_init_mem.pdf
docs/libcurl/curl_mprintf.pdf
docs/libcurl/curl_multi_add_handle.3
docs/libcurl/curl_multi_add_handle.html
docs/libcurl/curl_multi_add_handle.pdf
docs/libcurl/curl_multi_assign.3
docs/libcurl/curl_multi_assign.html
docs/libcurl/curl_multi_assign.pdf
docs/libcurl/curl_multi_cleanup.html
docs/libcurl/curl_multi_cleanup.pdf
docs/libcurl/curl_multi_fdset.3
docs/libcurl/curl_multi_fdset.html
docs/libcurl/curl_multi_fdset.pdf
docs/libcurl/curl_multi_info_read.html
docs/libcurl/curl_multi_info_read.pdf
docs/libcurl/curl_multi_init.html
docs/libcurl/curl_multi_init.pdf
docs/libcurl/curl_multi_perform.3
docs/libcurl/curl_multi_perform.html
docs/libcurl/curl_multi_perform.pdf
docs/libcurl/curl_multi_remove_handle.3
docs/libcurl/curl_multi_remove_handle.html
docs/libcurl/curl_multi_remove_handle.pdf
docs/libcurl/curl_multi_setopt.3
docs/libcurl/curl_multi_setopt.html
docs/libcurl/curl_multi_setopt.pdf
docs/libcurl/curl_multi_socket.html
docs/libcurl/curl_multi_socket.pdf
docs/libcurl/curl_multi_socket_action.html
docs/libcurl/curl_multi_socket_action.pdf
docs/libcurl/curl_multi_strerror.html
docs/libcurl/curl_multi_strerror.pdf
docs/libcurl/curl_multi_timeout.html
docs/libcurl/curl_multi_timeout.pdf
docs/libcurl/curl_multi_wait.3
docs/libcurl/curl_multi_wait.html
docs/libcurl/curl_multi_wait.pdf
docs/libcurl/curl_share_cleanup.html
docs/libcurl/curl_share_cleanup.pdf
docs/libcurl/curl_share_init.3
docs/libcurl/curl_share_init.html
docs/libcurl/curl_share_init.pdf
docs/libcurl/curl_share_setopt.html
docs/libcurl/curl_share_setopt.pdf
docs/libcurl/curl_share_strerror.html
docs/libcurl/curl_share_strerror.pdf
docs/libcurl/curl_slist_append.html
docs/libcurl/curl_slist_append.pdf
docs/libcurl/curl_slist_free_all.html
docs/libcurl/curl_slist_free_all.pdf
docs/libcurl/curl_strequal.pdf
docs/libcurl/curl_unescape.3
docs/libcurl/curl_unescape.html
docs/libcurl/curl_unescape.pdf
docs/libcurl/curl_version.3
docs/libcurl/curl_version.html
docs/libcurl/curl_version.pdf
docs/libcurl/curl_version_info.3
docs/libcurl/curl_version_info.html
docs/libcurl/curl_version_info.pdf
docs/libcurl/libcurl-easy.3
docs/libcurl/libcurl-easy.html
docs/libcurl/libcurl-easy.pdf
docs/libcurl/libcurl-errors.3
docs/libcurl/libcurl-errors.html
docs/libcurl/libcurl-errors.pdf
docs/libcurl/libcurl-multi.3
docs/libcurl/libcurl-multi.html
docs/libcurl/libcurl-multi.pdf
docs/libcurl/libcurl-share.3
docs/libcurl/libcurl-share.html
docs/libcurl/libcurl-share.pdf
docs/libcurl/libcurl-tutorial.3
docs/libcurl/libcurl-tutorial.html
docs/libcurl/libcurl-tutorial.pdf
docs/libcurl/libcurl.3
docs/libcurl/libcurl.html
docs/libcurl/libcurl.m4
docs/libcurl/libcurl.pdf
docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.html [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.html [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3 [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_MAXCONNECTS.html [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_MAXCONNECTS.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3 [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.html [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3 [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.html [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3 [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.html [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_PIPELINING.3 [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_PIPELINING.html [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_PIPELINING.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3 [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.html [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3 [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.html [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_SOCKETDATA.3 [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_SOCKETDATA.html [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_SOCKETDATA.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3 [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.html [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_TIMERDATA.3 [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_TIMERDATA.html [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_TIMERDATA.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3 [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.html [new file with mode: 0644]
docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_APPEND.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_APPEND.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_APPEND.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_AUTOREFERER.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_AUTOREFERER.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_AUTOREFERER.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_BUFFERSIZE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_BUFFERSIZE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_BUFFERSIZE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CAINFO.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CAINFO.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CAINFO.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CAPATH.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CAPATH.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CAPATH.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CERTINFO.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CERTINFO.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CERTINFO.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CHUNK_DATA.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CHUNK_DATA.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CHUNK_DATA.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CONNECT_ONLY.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CONNECT_ONLY.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_COOKIE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_COOKIE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_COOKIE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_COOKIEFILE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_COOKIEFILE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_COOKIEFILE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_COOKIEJAR.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_COOKIEJAR.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_COOKIEJAR.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_COOKIELIST.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_COOKIELIST.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_COOKIELIST.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_COOKIESESSION.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_COOKIESESSION.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_COOKIESESSION.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CRLF.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CRLF.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CRLF.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CRLFILE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CRLFILE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CRLFILE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_DEBUGDATA.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_DEBUGDATA.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_DEBUGDATA.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_DIRLISTONLY.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_DIRLISTONLY.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_DIRLISTONLY.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_DNS_INTERFACE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_DNS_INTERFACE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_DNS_SERVERS.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_DNS_SERVERS.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_DNS_SERVERS.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_EGDSOCKET.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_EGDSOCKET.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_EGDSOCKET.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_ERRORBUFFER.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_ERRORBUFFER.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_ERRORBUFFER.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FAILONERROR.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FAILONERROR.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FAILONERROR.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FILETIME.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FILETIME.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FILETIME.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FNMATCH_DATA.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FNMATCH_DATA.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FORBID_REUSE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FORBID_REUSE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FORBID_REUSE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FRESH_CONNECT.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FRESH_CONNECT.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTPPORT.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTPPORT.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTPPORT.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTPSSLAUTH.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTPSSLAUTH.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTP_USE_PRET.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_FTP_USE_PRET.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HEADER.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HEADER.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HEADER.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HEADERDATA.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HEADERDATA.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HEADERDATA.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HEADERFUNCTION.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HEADERFUNCTION.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HEADEROPT.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HEADEROPT.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HEADEROPT.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HTTP200ALIASES.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HTTP200ALIASES.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HTTPAUTH.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HTTPAUTH.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HTTPAUTH.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HTTPGET.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HTTPGET.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HTTPGET.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HTTPHEADER.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HTTPHEADER.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HTTPHEADER.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HTTPPOST.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HTTPPOST.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HTTPPOST.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HTTP_VERSION.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HTTP_VERSION.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_HTTP_VERSION.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_INFILESIZE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_INFILESIZE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_INFILESIZE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_INTERFACE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_INTERFACE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_INTERFACE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_IOCTLDATA.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_IOCTLDATA.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_IOCTLDATA.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_IPRESOLVE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_IPRESOLVE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_IPRESOLVE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_ISSUERCERT.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_ISSUERCERT.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_ISSUERCERT.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_KEYPASSWD.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_KEYPASSWD.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_KEYPASSWD.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_KRBLEVEL.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_KRBLEVEL.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_KRBLEVEL.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_LOCALPORT.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_LOCALPORT.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_LOCALPORT.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_MAIL_AUTH.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_MAIL_AUTH.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_MAIL_AUTH.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_MAIL_FROM.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_MAIL_FROM.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_MAIL_FROM.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_MAIL_RCPT.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_MAIL_RCPT.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_MAIL_RCPT.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_MAXCONNECTS.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_MAXCONNECTS.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_MAXCONNECTS.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_MAXFILESIZE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_MAXFILESIZE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_MAXFILESIZE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_MAXREDIRS.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_MAXREDIRS.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_MAXREDIRS.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_NETRC.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_NETRC.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_NETRC.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_NETRC_FILE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_NETRC_FILE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_NETRC_FILE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_NOBODY.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_NOBODY.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_NOBODY.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_NOPROGRESS.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_NOPROGRESS.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_NOPROGRESS.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_NOPROXY.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_NOPROXY.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_NOPROXY.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_NOSIGNAL.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_NOSIGNAL.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_NOSIGNAL.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PASSWORD.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PASSWORD.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PASSWORD.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PORT.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PORT.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PORT.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_POST.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_POST.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_POST.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_POSTFIELDS.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_POSTFIELDS.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_POSTFIELDS.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_POSTQUOTE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_POSTQUOTE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_POSTQUOTE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_POSTREDIR.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_POSTREDIR.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_POSTREDIR.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PREQUOTE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PREQUOTE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PREQUOTE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PRIVATE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PRIVATE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PRIVATE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROGRESSDATA.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROGRESSDATA.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROGRESSDATA.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROTOCOLS.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROTOCOLS.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROTOCOLS.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROXY.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROXY.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROXY.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROXYAUTH.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROXYAUTH.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROXYAUTH.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROXYHEADER.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROXYHEADER.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROXYHEADER.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROXYPASSWORD.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROXYPASSWORD.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROXYPORT.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROXYPORT.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROXYPORT.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROXYTYPE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROXYTYPE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROXYTYPE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROXYUSERNAME.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROXYUSERNAME.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROXYUSERPWD.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROXYUSERPWD.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PUT.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PUT.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PUT.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_QUOTE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_QUOTE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_QUOTE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_RANDOM_FILE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_RANDOM_FILE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_RANDOM_FILE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_RANGE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_RANGE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_RANGE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_READDATA.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_READDATA.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_READDATA.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_READFUNCTION.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_READFUNCTION.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_READFUNCTION.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_REFERER.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_REFERER.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_REFERER.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_RESOLVE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_RESOLVE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_RESOLVE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_RESUME_FROM.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_RESUME_FROM.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_RESUME_FROM.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_RTSP_REQUEST.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_RTSP_REQUEST.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SASL_IR.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SASL_IR.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SASL_IR.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SEEKDATA.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SEEKDATA.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SEEKDATA.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SEEKFUNCTION.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SEEKFUNCTION.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SHARE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SHARE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SHARE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SOCKOPTDATA.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SOCKOPTDATA.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSH_KEYDATA.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSH_KEYDATA.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSLCERT.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSLCERT.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSLCERT.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSLCERTTYPE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSLCERTTYPE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSLENGINE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSLENGINE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSLENGINE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSLKEY.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSLKEY.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSLKEY.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSLKEYTYPE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSLKEYTYPE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSLVERSION.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSLVERSION.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSLVERSION.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSL_OPTIONS.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSL_OPTIONS.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_STDERR.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_STDERR.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_STDERR.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TCP_NODELAY.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TCP_NODELAY.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TCP_NODELAY.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TELNETOPTIONS.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TELNETOPTIONS.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TIMECONDITION.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TIMECONDITION.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TIMECONDITION.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TIMEOUT.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TIMEOUT.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TIMEOUT.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TIMEOUT_MS.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TIMEOUT_MS.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TIMEVALUE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TIMEVALUE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TIMEVALUE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TRANSFERTEXT.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TRANSFERTEXT.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_UPLOAD.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_UPLOAD.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_UPLOAD.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_URL.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_URL.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_URL.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_USERAGENT.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_USERAGENT.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_USERAGENT.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_USERNAME.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_USERNAME.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_USERNAME.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_USERPWD.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_USERPWD.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_USERPWD.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_USE_SSL.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_USE_SSL.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_USE_SSL.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_VERBOSE.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_VERBOSE.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_VERBOSE.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_WILDCARDMATCH.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_WILDCARDMATCH.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_WRITEDATA.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_WRITEDATA.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_WRITEDATA.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_WRITEFUNCTION.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_WRITEFUNCTION.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_XFERINFODATA.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_XFERINFODATA.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_XFERINFODATA.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.pdf [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.html [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.pdf [new file with mode: 0644]
docs/libcurl/opts/Makefile.am [new file with mode: 0644]
docs/libcurl/opts/Makefile.in [new file with mode: 0644]
docs/libcurl/symbols-in-versions
docs/mk-ca-bundle.html
docs/mk-ca-bundle.pdf
include/Makefile.in
include/curl/Makefile.in
include/curl/curl.h
include/curl/curlbuild.h
include/curl/curlbuild.h.cmake
include/curl/curlver.h
include/curl/multi.h
include/curl/typecheck-gcc.h
install-sh
lib/CMakeLists.txt
lib/Makefile.Watcom
lib/Makefile.am
lib/Makefile.b32
lib/Makefile.in
lib/Makefile.inc
lib/Makefile.m32
lib/Makefile.netware
lib/Makefile.vc10
lib/Makefile.vc6
lib/Makefile.vc8
lib/Makefile.vc9
lib/Makefile.vxworks
lib/README.hostip
lib/asyn-ares.c
lib/asyn-thread.c
lib/base64.c
lib/config-dos.h
lib/config-os400.h
lib/config-symbian.h
lib/config-tpf.h
lib/config-vxworks.h
lib/config-win32.h
lib/conncache.c
lib/conncache.h
lib/connect.c
lib/connect.h
lib/cookie.c
lib/curl_addrinfo.c
lib/curl_addrinfo.h
lib/curl_base64.h
lib/curl_config.h.cmake
lib/curl_config.h.in
lib/curl_endian.c [new file with mode: 0644]
lib/curl_endian.h [new file with mode: 0644]
lib/curl_gssapi.c
lib/curl_gssapi.h
lib/curl_md4.h
lib/curl_multibyte.c
lib/curl_multibyte.h
lib/curl_ntlm.c
lib/curl_ntlm.h
lib/curl_ntlm_core.c
lib/curl_ntlm_core.h
lib/curl_ntlm_msgs.c
lib/curl_ntlm_msgs.h
lib/curl_ntlm_wb.c
lib/curl_ntlm_wb.h
lib/curl_rtmp.c
lib/curl_sasl.c
lib/curl_sasl.h
lib/curl_sasl_gssapi.c [new file with mode: 0644]
lib/curl_sasl_sspi.c [new file with mode: 0644]
lib/curl_sec.h [moved from lib/krb4.h with 82% similarity]
lib/curl_setup.h
lib/curl_setup_once.h
lib/curl_sspi.c
lib/curl_sspi.h
lib/curl_threads.c
lib/curl_threads.h
lib/dict.c
lib/dotdot.c
lib/dotdot.h
lib/easy.c
lib/easyif.h
lib/escape.c
lib/file.c
lib/formdata.c
lib/ftp.c
lib/ftp.h
lib/ftplistparser.c
lib/getinfo.c
lib/gopher.c
lib/gskit.c [deleted file]
lib/hostasyn.c
lib/hostcheck.c
lib/hostip.c
lib/hostip.h
lib/hostip4.c
lib/hostip6.c
lib/hostsyn.c
lib/http.c
lib/http.h
lib/http2.c [new file with mode: 0644]
lib/http2.h [new file with mode: 0644]
lib/http_chunks.c
lib/http_chunks.h
lib/http_digest.c
lib/http_digest.h
lib/http_negotiate.c
lib/http_negotiate.h
lib/http_negotiate_sspi.c
lib/http_proxy.c
lib/http_proxy.h
lib/idn_win32.c
lib/if2ip.c
lib/if2ip.h
lib/imap.c
lib/imap.h
lib/krb4.c [deleted file]
lib/krb5.c
lib/ldap.c
lib/libcurl.plist
lib/md4.c
lib/md5.c
lib/memdebug.c
lib/mk-ca-bundle.pl
lib/mk-ca-bundle.vbs
lib/mprintf.c
lib/multi.c
lib/multihandle.h
lib/multiif.h
lib/netrc.c
lib/netrc.h
lib/non-ascii.c
lib/openldap.c
lib/parsedate.c
lib/pingpong.c
lib/pipeline.c
lib/pipeline.h
lib/pop3.c
lib/pop3.h
lib/progress.c
lib/progress.h
lib/qssl.c [deleted file]
lib/qssl.h [deleted file]
lib/rtsp.c
lib/security.c
lib/select.c
lib/sendf.c
lib/sendf.h
lib/setup-os400.h
lib/setup-vms.h
lib/share.c
lib/sigpipe.h [new file with mode: 0644]
lib/smb.c [new file with mode: 0644]
lib/smb.h [new file with mode: 0644]
lib/smtp.c
lib/smtp.h
lib/socks.c
lib/socks.h
lib/socks_gssapi.c
lib/socks_sspi.c
lib/speedcheck.c
lib/splay.c
lib/ssh.c
lib/ssh.h
lib/strdup.c
lib/strdup.h
lib/strerror.c
lib/strtoofft.h
lib/telnet.c
lib/tftp.c
lib/timeval.c
lib/transfer.c
lib/url.c
lib/url.h
lib/urldata.h
lib/version.c
lib/vtls/axtls.c [moved from lib/axtls.c with 91% similarity]
lib/vtls/axtls.h [moved from lib/axtls.h with 78% similarity]
lib/vtls/curl_darwinssl.c [moved from lib/curl_darwinssl.c with 74% similarity]
lib/vtls/curl_darwinssl.h [moved from lib/curl_darwinssl.h with 83% similarity]
lib/vtls/curl_schannel.c [moved from lib/curl_schannel.c with 88% similarity]
lib/vtls/curl_schannel.h [moved from lib/curl_schannel.h with 80% similarity]
lib/vtls/cyassl.c [moved from lib/cyassl.c with 87% similarity]
lib/vtls/cyassl.h [moved from lib/cyassl.h with 81% similarity]
lib/vtls/gskit.c [new file with mode: 0644]
lib/vtls/gskit.h [moved from lib/gskit.h with 87% similarity]
lib/vtls/gtls.c [moved from lib/gtls.c with 74% similarity]
lib/vtls/gtls.h [moved from lib/gtls.h with 80% similarity]
lib/vtls/nss.c [moved from lib/nss.c with 68% similarity]
lib/vtls/nssg.h [moved from lib/nssg.h with 74% similarity]
lib/vtls/openssl.c [moved from lib/ssluse.c with 81% similarity]
lib/vtls/openssl.h [moved from lib/ssluse.h with 82% similarity]
lib/vtls/polarssl.c [moved from lib/polarssl.c with 74% similarity]
lib/vtls/polarssl.h [moved from lib/polarssl.h with 77% similarity]
lib/vtls/polarssl_threadlock.c [moved from lib/polarssl_threadlock.c with 100% similarity]
lib/vtls/polarssl_threadlock.h [moved from lib/polarssl_threadlock.h with 100% similarity]
lib/vtls/vtls.c [moved from lib/sslgen.c with 73% similarity]
lib/vtls/vtls.h [moved from lib/sslgen.h with 74% similarity]
lib/warnless.c
lib/warnless.h
lib/x509asn1.c
lib/x509asn1.h
ltmain.sh
m4/curl-compilers.m4
m4/curl-functions.m4
m4/libtool.m4
maketgz
mkinstalldirs
packages/AIX/Makefile.in
packages/AIX/RPM/Makefile.in
packages/Android/Android.mk
packages/DOS/common.dj
packages/EPM/Makefile.in
packages/EPM/README
packages/Linux/Makefile.in
packages/Linux/RPM/Makefile.in
packages/Makefile.in
packages/OS400/README.OS400
packages/OS400/ccsidcurl.c
packages/OS400/ccsidcurl.h
packages/OS400/curl.inc.in
packages/OS400/initscript.sh
packages/OS400/make-include.sh
packages/OS400/make-lib.sh
packages/OS400/make-tests.sh
packages/OS400/os400sys.c
packages/OS400/os400sys.h
packages/Solaris/Makefile.in
packages/Symbian/group/curl.pkg
packages/Symbian/group/libcurl.mmp
packages/Symbian/group/libcurl.pkg
packages/Win32/Makefile.in
packages/Win32/cygwin/Makefile.in
packages/vms/Makefile.in
packages/vms/backup_gnv_curl_src.com
packages/vms/build_curl-config_script.com
packages/vms/build_gnv_curl_release_notes.com
packages/vms/build_libcurl_pc.com
packages/vms/build_vms.com
packages/vms/clean_gnv_curl.com
packages/vms/config_h.com
packages/vms/curl_crtl_init.c
packages/vms/curl_gnv_build_steps.txt
packages/vms/generate_config_vms_h_curl.com
packages/vms/gnv_curl_configure.sh
packages/vms/gnv_link_curl.com
packages/vms/make_gnv_curl_install.sh
packages/vms/pcsi_product_gnv_curl.com
projects/README [new file with mode: 0644]
projects/Windows/VC10/curl.sln [new file with mode: 0644]
projects/Windows/VC10/lib/libcurl.sln [new file with mode: 0644]
projects/Windows/VC10/lib/libcurl.vcxproj [new file with mode: 0644]
projects/Windows/VC10/src/curlsrc.sln [new file with mode: 0644]
projects/Windows/VC10/src/curlsrc.vcxproj [new file with mode: 0644]
projects/Windows/VC11/curl.sln [new file with mode: 0644]
projects/Windows/VC11/lib/libcurl.sln [new file with mode: 0644]
projects/Windows/VC11/lib/libcurl.vcxproj [new file with mode: 0644]
projects/Windows/VC11/src/curlsrc.sln [new file with mode: 0644]
projects/Windows/VC11/src/curlsrc.vcxproj [new file with mode: 0644]
projects/Windows/VC12/curl.sln [new file with mode: 0644]
projects/Windows/VC12/lib/libcurl.sln [new file with mode: 0644]
projects/Windows/VC12/lib/libcurl.vcxproj [new file with mode: 0644]
projects/Windows/VC12/src/curlsrc.sln [new file with mode: 0644]
projects/Windows/VC12/src/curlsrc.vcxproj [new file with mode: 0644]
projects/Windows/VC6/curl.dsw [moved from vs/vc6/vc6curl.dsw with 79% similarity]
projects/Windows/VC6/lib/libcurl.dsp [new file with mode: 0644]
projects/Windows/VC6/lib/libcurl.dsw [moved from vs/vc6/lib/vc6libcurl.dsw with 83% similarity]
projects/Windows/VC6/src/curlsrc.dsp [new file with mode: 0644]
projects/Windows/VC6/src/curlsrc.dsw [moved from vs/vc6/src/vc6curltool.dsw with 83% similarity]
projects/Windows/VC7.1/curl.sln [new file with mode: 0644]
projects/Windows/VC7.1/lib/libcurl.sln [new file with mode: 0644]
projects/Windows/VC7.1/lib/libcurl.vcproj [new file with mode: 0644]
projects/Windows/VC7.1/src/curlsrc.sln [new file with mode: 0644]
projects/Windows/VC7.1/src/curlsrc.vcproj [new file with mode: 0644]
projects/Windows/VC7/curl.sln [new file with mode: 0644]
projects/Windows/VC7/lib/libcurl.sln [new file with mode: 0644]
projects/Windows/VC7/lib/libcurl.vcproj [new file with mode: 0644]
projects/Windows/VC7/src/curlsrc.sln [new file with mode: 0644]
projects/Windows/VC7/src/curlsrc.vcproj [new file with mode: 0644]
projects/Windows/VC8/curl.sln [new file with mode: 0644]
projects/Windows/VC8/lib/libcurl.sln [new file with mode: 0644]
projects/Windows/VC8/lib/libcurl.vcproj [new file with mode: 0644]
projects/Windows/VC8/src/curlsrc.sln [new file with mode: 0644]
projects/Windows/VC8/src/curlsrc.vcproj [new file with mode: 0644]
projects/Windows/VC9/curl.sln [new file with mode: 0644]
projects/Windows/VC9/lib/libcurl.sln [new file with mode: 0644]
projects/Windows/VC9/lib/libcurl.vcproj [new file with mode: 0644]
projects/Windows/VC9/src/curlsrc.sln [new file with mode: 0644]
projects/Windows/VC9/src/curlsrc.vcproj [new file with mode: 0644]
projects/build-openssl.bat [new file with mode: 0644]
projects/checksrc.bat [new file with mode: 0644]
src/CMakeLists.txt
src/Makefile.Watcom
src/Makefile.am
src/Makefile.b32
src/Makefile.in
src/Makefile.inc
src/Makefile.m32
src/Makefile.netware
src/Makefile.vc10
src/Makefile.vc6
src/Makefile.vc8
src/Makefile.vc9
src/macos/MACINSTALL.TXT
src/makefile.amiga
src/mkhelp.pl
src/tool_binmode.c
src/tool_cb_dbg.c
src/tool_cb_prg.c
src/tool_cb_prg.h
src/tool_cb_wrt.c
src/tool_cfgable.c
src/tool_cfgable.h
src/tool_doswin.c
src/tool_doswin.h
src/tool_easysrc.c
src/tool_easysrc.h
src/tool_formparse.c
src/tool_formparse.h
src/tool_getparam.c
src/tool_getparam.h
src/tool_getpass.c
src/tool_help.c
src/tool_help.h
src/tool_helpers.c
src/tool_helpers.h
src/tool_hugehelp.c
src/tool_hugehelp.h
src/tool_libinfo.c
src/tool_main.c
src/tool_metalink.c
src/tool_metalink.h
src/tool_msgs.c
src/tool_msgs.h
src/tool_operate.c
src/tool_operate.h
src/tool_operhlp.c
src/tool_operhlp.h
src/tool_paramhlp.c
src/tool_paramhlp.h
src/tool_parsecfg.c
src/tool_parsecfg.h
src/tool_sdecls.h
src/tool_setopt.c
src/tool_setopt.h
src/tool_setup.h
src/tool_sleep.c
src/tool_strdup.c [moved from src/version.h with 66% similarity]
src/tool_strdup.h [new file with mode: 0644]
src/tool_urlglob.c
src/tool_urlglob.h
src/tool_util.c
src/tool_version.h
src/tool_writeout.c
src/tool_xattr.c
tests/CMakeLists.txt
tests/FILEFORMAT
tests/Makefile.in
tests/README
tests/certs/Makefile.am
tests/certs/Makefile.in
tests/certs/Server-localhost-sv.pub.der [new file with mode: 0644]
tests/certs/Server-localhost-sv.pub.pem [new file with mode: 0644]
tests/certs/Server-localhost.nn-sv.pub.der [new file with mode: 0644]
tests/certs/Server-localhost.nn-sv.pub.pem [new file with mode: 0644]
tests/certs/Server-localhost0h-sv.pub.der [new file with mode: 0644]
tests/certs/Server-localhost0h-sv.pub.pem [new file with mode: 0644]
tests/certs/scripts/Makefile.in
tests/certs/scripts/genserv.sh
tests/data/DISABLED
tests/data/Makefile.am
tests/data/Makefile.in
tests/data/Makefile.inc [new file with mode: 0644]
tests/data/test100
tests/data/test1001
tests/data/test1002
tests/data/test1008
tests/data/test101
tests/data/test1010
tests/data/test1021
tests/data/test1029
tests/data/test1030
tests/data/test1032
tests/data/test1041
tests/data/test1042
tests/data/test1047
tests/data/test1048
tests/data/test1060
tests/data/test1061
tests/data/test1071
tests/data/test1079
tests/data/test1080
tests/data/test1081
tests/data/test1086
tests/data/test1095
tests/data/test1097
tests/data/test1098
tests/data/test1099
tests/data/test1100
tests/data/test1105
tests/data/test1112
tests/data/test1113
tests/data/test1114
tests/data/test1115
tests/data/test1119
tests/data/test1123
tests/data/test1124
tests/data/test1132
tests/data/test1133
tests/data/test1134 [new file with mode: 0644]
tests/data/test116
tests/data/test1212
tests/data/test1215
tests/data/test1220
tests/data/test1221
tests/data/test1222
tests/data/test1228
tests/data/test1229
tests/data/test1230
tests/data/test1234 [new file with mode: 0644]
tests/data/test1235 [new file with mode: 0644]
tests/data/test1236 [new file with mode: 0644]
tests/data/test1237 [new file with mode: 0644]
tests/data/test1238 [new file with mode: 0644]
tests/data/test1239 [new file with mode: 0644]
tests/data/test1240 [new file with mode: 0644]
tests/data/test130
tests/data/test1309
tests/data/test131
tests/data/test1316
tests/data/test1319
tests/data/test132
tests/data/test1320
tests/data/test1321
tests/data/test1325
tests/data/test1328
tests/data/test133
tests/data/test1330
tests/data/test1331
tests/data/test1332
tests/data/test1334
tests/data/test1335
tests/data/test1336
tests/data/test1337
tests/data/test1338
tests/data/test1339
tests/data/test134
tests/data/test1340
tests/data/test1341
tests/data/test1342
tests/data/test1343
tests/data/test1344
tests/data/test1345
tests/data/test1346
tests/data/test1347
tests/data/test1348
tests/data/test1349
tests/data/test1350
tests/data/test1351
tests/data/test1352
tests/data/test1353
tests/data/test1354
tests/data/test1356
tests/data/test1357
tests/data/test1358
tests/data/test1359
tests/data/test1360
tests/data/test1361
tests/data/test1362
tests/data/test1363
tests/data/test1364
tests/data/test1365
tests/data/test1366
tests/data/test1367
tests/data/test1368
tests/data/test1369
tests/data/test1370
tests/data/test1371
tests/data/test1372
tests/data/test1373
tests/data/test1374
tests/data/test1375
tests/data/test1376
tests/data/test1377
tests/data/test1378
tests/data/test1379
tests/data/test1380
tests/data/test1381
tests/data/test1382
tests/data/test1383
tests/data/test1384
tests/data/test1385
tests/data/test1386
tests/data/test1387
tests/data/test1388
tests/data/test1389
tests/data/test1390
tests/data/test1391
tests/data/test1392
tests/data/test1393
tests/data/test1397 [new file with mode: 0644]
tests/data/test1398 [new file with mode: 0644]
tests/data/test1404
tests/data/test1405
tests/data/test1406
tests/data/test1407
tests/data/test1408
tests/data/test1411 [new file with mode: 0644]
tests/data/test1412
tests/data/test1415 [new file with mode: 0644]
tests/data/test1416 [new file with mode: 0644]
tests/data/test1417 [new file with mode: 0644]
tests/data/test1418 [new file with mode: 0644]
tests/data/test1419 [new file with mode: 0644]
tests/data/test1420 [new file with mode: 0644]
tests/data/test1428 [new file with mode: 0644]
tests/data/test1429 [new file with mode: 0644]
tests/data/test1430 [new file with mode: 0644]
tests/data/test1431 [new file with mode: 0644]
tests/data/test1432 [new file with mode: 0644]
tests/data/test1433 [new file with mode: 0644]
tests/data/test1434 [new file with mode: 0644]
tests/data/test1435 [new file with mode: 0644]
tests/data/test1436 [new file with mode: 0644]
tests/data/test150
tests/data/test1500
tests/data/test1502
tests/data/test1503
tests/data/test1504
tests/data/test1505
tests/data/test1506
tests/data/test1507
tests/data/test1508
tests/data/test1509
tests/data/test1510
tests/data/test1511
tests/data/test1512
tests/data/test1513 [new file with mode: 0644]
tests/data/test1514 [new file with mode: 0644]
tests/data/test1515 [new file with mode: 0644]
tests/data/test1516 [new file with mode: 0644]
tests/data/test1520 [new file with mode: 0644]
tests/data/test1525 [new file with mode: 0644]
tests/data/test1526 [new file with mode: 0644]
tests/data/test1527 [new file with mode: 0644]
tests/data/test1528 [new file with mode: 0644]
tests/data/test1529 [new file with mode: 0644]
tests/data/test153
tests/data/test154
tests/data/test155
tests/data/test159
tests/data/test162
tests/data/test167
tests/data/test168
tests/data/test169
tests/data/test170
tests/data/test172
tests/data/test176
tests/data/test18
tests/data/test1800 [new file with mode: 0644]
tests/data/test1801 [new file with mode: 0644]
tests/data/test1900
tests/data/test1901
tests/data/test1902
tests/data/test1903
tests/data/test194
tests/data/test199
tests/data/test2013
tests/data/test2014
tests/data/test2015
tests/data/test2016
tests/data/test2017
tests/data/test2018
tests/data/test2019
tests/data/test2020
tests/data/test2021
tests/data/test2022
tests/data/test2024
tests/data/test2025
tests/data/test2026
tests/data/test2027
tests/data/test2028
tests/data/test2029
tests/data/test2030
tests/data/test2031
tests/data/test2032
tests/data/test2033
tests/data/test2034 [new file with mode: 0644]
tests/data/test2035 [new file with mode: 0644]
tests/data/test2036 [new file with mode: 0644]
tests/data/test2037 [new file with mode: 0644]
tests/data/test2038 [new file with mode: 0644]
tests/data/test206
tests/data/test207
tests/data/test209
tests/data/test212
tests/data/test213
tests/data/test215
tests/data/test22
tests/data/test227
tests/data/test239
tests/data/test243
tests/data/test245
tests/data/test246
tests/data/test250
tests/data/test251
tests/data/test258
tests/data/test259
tests/data/test265
tests/data/test267
tests/data/test273
tests/data/test280
tests/data/test294
tests/data/test31
tests/data/test320
tests/data/test321
tests/data/test322
tests/data/test324
tests/data/test325 [new file with mode: 0644]
tests/data/test33
tests/data/test350
tests/data/test351
tests/data/test352
tests/data/test353
tests/data/test500
tests/data/test502
tests/data/test506
tests/data/test508
tests/data/test509
tests/data/test510
tests/data/test512
tests/data/test514
tests/data/test515
tests/data/test516
tests/data/test517
tests/data/test518
tests/data/test519
tests/data/test521
tests/data/test522
tests/data/test523
tests/data/test528
tests/data/test530
tests/data/test535
tests/data/test536
tests/data/test537
tests/data/test539
tests/data/test540
tests/data/test543
tests/data/test544
tests/data/test545
tests/data/test547
tests/data/test548
tests/data/test549
tests/data/test550
tests/data/test551
tests/data/test552
tests/data/test553
tests/data/test554
tests/data/test555
tests/data/test556
tests/data/test557
tests/data/test558
tests/data/test560
tests/data/test561
tests/data/test565
tests/data/test566
tests/data/test567
tests/data/test568
tests/data/test570
tests/data/test571
tests/data/test572
tests/data/test573
tests/data/test574
tests/data/test575
tests/data/test576
tests/data/test578
tests/data/test579
tests/data/test580
tests/data/test581
tests/data/test582
tests/data/test583
tests/data/test584
tests/data/test585
tests/data/test588
tests/data/test590
tests/data/test591
tests/data/test592
tests/data/test593
tests/data/test594
tests/data/test595
tests/data/test596
tests/data/test598
tests/data/test599
tests/data/test604
tests/data/test61
tests/data/test623
tests/data/test627
tests/data/test64
tests/data/test640 [new file with mode: 0644]
tests/data/test641 [new file with mode: 0644]
tests/data/test65
tests/data/test67
tests/data/test68
tests/data/test69
tests/data/test70
tests/data/test72
tests/data/test74
tests/data/test75
tests/data/test77
tests/data/test78
tests/data/test8
tests/data/test800
tests/data/test801
tests/data/test802
tests/data/test803
tests/data/test804
tests/data/test805
tests/data/test806
tests/data/test807
tests/data/test808
tests/data/test809
tests/data/test81
tests/data/test810 [new file with mode: 0644]
tests/data/test811 [new file with mode: 0644]
tests/data/test812 [new file with mode: 0644]
tests/data/test813 [new file with mode: 0644]
tests/data/test814 [new file with mode: 0644]
tests/data/test815 [new file with mode: 0644]
tests/data/test816 [new file with mode: 0644]
tests/data/test817 [new file with mode: 0644]
tests/data/test818 [new file with mode: 0644]
tests/data/test819 [new file with mode: 0644]
tests/data/test820 [new file with mode: 0644]
tests/data/test821 [new file with mode: 0644]
tests/data/test822 [new file with mode: 0644]
tests/data/test823 [new file with mode: 0644]
tests/data/test824 [new file with mode: 0644]
tests/data/test825 [new file with mode: 0644]
tests/data/test826 [new file with mode: 0644]
tests/data/test827 [new file with mode: 0644]
tests/data/test828 [new file with mode: 0644]
tests/data/test829 [moved from tests/data/test1324 with 88% similarity]
tests/data/test83
tests/data/test830 [new file with mode: 0644]
tests/data/test831 [new file with mode: 0644]
tests/data/test832 [new file with mode: 0644]
tests/data/test833 [new file with mode: 0644]
tests/data/test834 [new file with mode: 0644]
tests/data/test835 [new file with mode: 0644]
tests/data/test836 [new file with mode: 0644]
tests/data/test850
tests/data/test851
tests/data/test852
tests/data/test853
tests/data/test854
tests/data/test855
tests/data/test856
tests/data/test857
tests/data/test858 [new file with mode: 0644]
tests/data/test859 [new file with mode: 0644]
tests/data/test86
tests/data/test860 [new file with mode: 0644]
tests/data/test861 [new file with mode: 0644]
tests/data/test862 [new file with mode: 0644]
tests/data/test863 [new file with mode: 0644]
tests/data/test864 [new file with mode: 0644]
tests/data/test865 [new file with mode: 0644]
tests/data/test866 [new file with mode: 0644]
tests/data/test867 [new file with mode: 0644]
tests/data/test868 [new file with mode: 0644]
tests/data/test869 [new file with mode: 0644]
tests/data/test87
tests/data/test870 [new file with mode: 0644]
tests/data/test871 [new file with mode: 0644]
tests/data/test872 [new file with mode: 0644]
tests/data/test873 [new file with mode: 0644]
tests/data/test874 [new file with mode: 0644]
tests/data/test875 [moved from tests/data/test1322 with 88% similarity]
tests/data/test876 [new file with mode: 0644]
tests/data/test877 [new file with mode: 0644]
tests/data/test878 [new file with mode: 0644]
tests/data/test879 [new file with mode: 0644]
tests/data/test88
tests/data/test880 [new file with mode: 0644]
tests/data/test881 [new file with mode: 0644]
tests/data/test882 [new file with mode: 0644]
tests/data/test89
tests/data/test90
tests/data/test900
tests/data/test901
tests/data/test902
tests/data/test903
tests/data/test904
tests/data/test905
tests/data/test906
tests/data/test907
tests/data/test908
tests/data/test909
tests/data/test91
tests/data/test910
tests/data/test911
tests/data/test912 [new file with mode: 0644]
tests/data/test913 [new file with mode: 0644]
tests/data/test914 [new file with mode: 0644]
tests/data/test915 [new file with mode: 0644]
tests/data/test916 [new file with mode: 0644]
tests/data/test917 [new file with mode: 0644]
tests/data/test918 [new file with mode: 0644]
tests/data/test919 [new file with mode: 0644]
tests/data/test920 [new file with mode: 0644]
tests/data/test921 [new file with mode: 0644]
tests/data/test922 [new file with mode: 0644]
tests/data/test923 [new file with mode: 0644]
tests/data/test924 [new file with mode: 0644]
tests/data/test925 [new file with mode: 0644]
tests/data/test926 [new file with mode: 0644]
tests/data/test927 [new file with mode: 0644]
tests/data/test928 [new file with mode: 0644]
tests/data/test929 [new file with mode: 0644]
tests/data/test930 [new file with mode: 0644]
tests/data/test931 [moved from tests/data/test1323 with 88% similarity]
tests/data/test932 [new file with mode: 0644]
tests/data/test933 [new file with mode: 0644]
tests/data/test934 [new file with mode: 0644]
tests/data/test935 [new file with mode: 0644]
tests/data/test936 [new file with mode: 0644]
tests/data/test937 [new file with mode: 0644]
tests/data/test938 [new file with mode: 0644]
tests/data/test939 [new file with mode: 0644]
tests/data/test940 [new file with mode: 0644]
tests/data/test941 [new file with mode: 0644]
tests/data/test96
tests/ftpserver.pl
tests/getpart.pm
tests/http_pipe.py
tests/httpserver.pl
tests/libtest/Makefile.in
tests/libtest/Makefile.inc
tests/libtest/first.c
tests/libtest/lib1500.c
tests/libtest/lib1506.c
tests/libtest/lib1507.c
tests/libtest/lib1509.c
tests/libtest/lib1510.c
tests/libtest/lib1512.c
tests/libtest/lib1513.c [new file with mode: 0644]
tests/libtest/lib1514.c [new file with mode: 0644]
tests/libtest/lib1515.c [new file with mode: 0644]
tests/libtest/lib1520.c [new file with mode: 0644]
tests/libtest/lib1525.c [new file with mode: 0644]
tests/libtest/lib1526.c [new file with mode: 0644]
tests/libtest/lib1527.c [new file with mode: 0644]
tests/libtest/lib1528.c [new file with mode: 0644]
tests/libtest/lib1529.c [new file with mode: 0644]
tests/libtest/lib1900.c
tests/libtest/lib500.c
tests/libtest/lib505.c
tests/libtest/lib506.c
tests/libtest/lib508.c
tests/libtest/lib510.c
tests/libtest/lib513.c
tests/libtest/lib541.c
tests/libtest/lib544.c
tests/libtest/lib556.c
tests/libtest/lib557.c
tests/libtest/lib579.c
tests/libtest/lib599.c
tests/libtest/libauthretry.c
tests/libtest/sethostname.h
tests/libtest/test.h
tests/libtest/test1013.pl
tests/runtests.1
tests/runtests.html
tests/runtests.pdf
tests/runtests.pl
tests/secureserver.pl
tests/server/Makefile.in
tests/server/getpart.c
tests/server/resolve.c
tests/server/server_sockaddr.h
tests/server/sockfilt.c
tests/server/sws.c
tests/server/tftpd.c
tests/serverhelp.pm
tests/sshhelp.pm
tests/sshserver.pl
tests/stunnel.pem
tests/symbol-scan.pl
tests/testcurl.pdf
tests/testcurl.pl
tests/unit/Makefile.in
tests/unit/Makefile.inc
tests/unit/unit1302.c
tests/unit/unit1303.c
tests/unit/unit1304.c
tests/unit/unit1305.c
tests/unit/unit1394.c
tests/unit/unit1395.c
tests/unit/unit1396.c
tests/unit/unit1397.c [new file with mode: 0644]
tests/unit/unit1398.c [new file with mode: 0644]
tests/valgrind.supp
vs/t/README [deleted file]
vs/t/lib/vc6_libcurl_dsp.foot [deleted file]
vs/t/lib/vc6_libcurl_dsp.head [deleted file]
vs/t/lib/vc8_libcurl_prj.foot [deleted file]
vs/t/lib/vc8_libcurl_prj.head [deleted file]
vs/vc6/lib/vc6libcurl.dsp [deleted file]
vs/vc6/src/vc6curltool.dsp [deleted file]
vs/vc8/lib/vc8libcurl.vcproj [deleted file]
winbuild/BUILD.WINDOWS.txt
winbuild/Makefile.vc
winbuild/MakefileBuild.vc
winbuild/gen_resp_file.bat

diff --git a/CHANGES b/CHANGES
index 44c9792..ddcd07e 100644 (file)
--- a/CHANGES
+++ b/CHANGES
 
                                   Changelog
 
 
                                   Changelog
 
-Version 7.32.0 (11 Aug 2013)
+Version 7.40.0 (7 Jan 2015)
 
 
-Daniel Stenberg (11 Aug 2013)
-- THANKS: added contributors from the 7.32.0 release notes
+Daniel Stenberg (7 Jan 2015)
+- RELEASE-NOTES: version 7.40.0
 
 
-- [Fabian Keil brought this change]
-
-  test1228: add 'HTTP proxy' to the keywords
-
-- [Fabian Keil brought this change]
-
-  tests: add keywords for a couple of FILE tests
-
-- [Fabian Keil brought this change]
-
-  tests: add 'FAILURE' keywords to tests 1409 and 1410
-
-- [Fabian Keil brought this change]
-
-  tests: add keywords for a couple of HTTP tests
-
-- [Fabian Keil brought this change]
-
-  tests: add keywords for a couple of FTP tests
-
-- [Fabian Keil brought this change]
-
-  test1511: consistently terminate headers with CRLF
-
-- DISABLED: shut of test 1512 for now
+- darwinssl: fix session ID keys to only reuse identical sessions
   
   
-  It shows intermittent failures and I haven't been able to track them
-  down yet. Disable this test for now.
-
-- curl_multi_add_handle.3: ... that timer callback is for event-based
-
-- comments: remove old and wrong multi/easy interface statements
-
-- curl_multi_add_handle.3: mention the CURLMOPT_TIMERFUNCTION use
-
-- [John E. Malmberg brought this change]
-
-  KNOWN_BUGS: 22 and 57 have been fixed and committed
-
-- RELEASE-NOTES: synced with d20def20462e7
-
-- global dns cache: fix memory leak
+  ...to avoid a session ID getting cached without certificate checking and
+  then after a subsequent _enabling_ of the check libcurl could still
+  re-use the session done without cert checks.
   
   
-  The take down of the global dns cache didn't take CURLOPT_RESOLVE names
-  into account.
+  Bug: http://curl.haxx.se/docs/adv_20150108A.html
+  Reported-by: Marc Hesse
 
 
-- global dns cache: didn't work [regression]
+- tests: make sure CRLFs can't be used in URLs passed to proxy
   
   
-  CURLOPT_DNS_USE_GLOBAL_CACHE broke in commit c43127414d89ccb (been
-  broken since the libcurl 7.29.0 release). While this option has been
-  documented as deprecated for almost a decade and nobody even reported
-  this bug, it should remain functional.
+  Bug: http://curl.haxx.se/docs/adv_20150108B.html
+
+- url-parsing: reject CRLFs within URLs
   
   
-  Added test case 1512 to verify
+  Bug: http://curl.haxx.se/docs/adv_20150108B.html
+  Reported-by: Andrey Labunets
 
 
-Yang Tse (8 Aug 2013)
-- [John Malmberg brought this change]
+Steve Holme (7 Jan 2015)
+- ldap: Convert attribute output to UTF-8 when Unicode
 
 
-  packages/vms: update VMS build files
-  
-  VMS modified files either missing from a previous commit and changes
-  to remove references to CVS repositories.
+- ldap: Convert DN output to UTF-8 when Unicode
 
 
-Daniel Stenberg (8 Aug 2013)
-- FTP: renamed several local functions
-  
-  The previous naming scheme ftp_state_post_XXXX() wasn't really helpful
-  as it wasn't always immediately after 'xxxx' and it wasn't easy to
-  understand what it does based on such a name.
+Daniel Stenberg (7 Jan 2015)
+- hostip: remove 'stale' argument from Curl_fetch_addr proto
   
   
-  This new one is instead ftp_state_yyyy() where yyyy describes what it
-  does or sends.
+  Also, remove the log output of the resolved name is NOT in the cache in
+  the spirit of only telling when something is actually happening.
 
 
-- mk-ca-bundle.1: don't install on make install
+Steve Holme (7 Jan 2015)
+- ldap/imap: Fixed spelling mistake in comments and variable names
   
   
-  Since the mk-ca-bundle tool itself isn't installed with make install,
-  there's no point in installing its documentation.
-  
-  Bug: http://curl.haxx.se/mail/lib-2013-08/0057.html
-  Reported-by: Guenter Knauf
+  Reported-by: Michael Osipov
 
 
-Yang Tse (7 Aug 2013)
-- packages/vms/Makefile.am: add latest file additions to EXTRA_DIST
+Daniel Stenberg (7 Jan 2015)
+- RELEASE-NOTES: updated with ./contributors.sh output
 
 
-- [John Malmberg brought this change]
+Dan Fandrich (5 Jan 2015)
+- curl_multibyte.h: Eliminated some trailing whitespace
 
 
-  Building_vms_pcsi_kit
-  
-  These are the files needed to build VMS distribution packages known as
-  PCSI kits.
-  
-  Also minor update to the existing files, mainly to the documentation and
-  file clean up code.
+Steve Holme (4 Jan 2015)
+- RELEASE-NOTES: Synced with ea93252ef1
 
 
-Daniel Stenberg (6 Aug 2013)
-- LIBCURL-STRUCTS: new document
-  
-  This is the first version of this new document, detailing the seven
-  perhaps most important internal structs in libcurl source code:
+- ldap: Fixed Unicode usage for all Win32 builds
   
   
-    1.1 SessionHandle
-    1.2 connectdata
-    1.3 Curl_multi
-    1.4 Curl_handler
-    1.5 conncache
-    1.6 Curl_share
-    1.7 CookieInfo
+  Otherwise, the fixes in the previous commits would only be applicable
+  to IDN and SSPI based builds and not others such as OpenSSL with LDAP
+  enabled.
 
 
-- CONTRIBUTE: minor language polish
+- ldap: Fixed memory leak from commit efb64fdf80
 
 
-- FTP: when EPSV gets a 229 but fails to connect, retry with PASV
-  
-  This is a regression as this logic used to work. It isn't clear when it
-  broke, but I'm assuming in 7.28.0 when we went all-multi internally.
-  
-  This likely never worked with the multi interface. As the failed
-  connection is detected once the multi state has reached DO_MORE, the
-  Curl_do_more() function was now expanded somewhat so that the
-  ftp_do_more() function can request to go "back" to the previous state
-  when it makes another attempt - using PASV.
-  
-  Added test case 1233 to verify this fix. It has the little issue that it
-  assumes no service is listening/accepting connections on port 1...
-  
-  Reported-by: byte_bucket in the #curl IRC channel
+- ldap: Fix memory leak from commit 3a805c5cc1
 
 
-Nick Zitzmann (5 Aug 2013)
-- md5: remove use of CommonCrypto-to-OpenSSL macros for the benefit of Leopard
+- ldap: Fixed attribute variable warnings when Unicode is enabled
   
   
-  For some reason, OS X 10.5's GCC suddenly stopped working correctly with
-  macros that change MD5_Init etc. in the code to CC_MD5_Init etc., so I
-  worked around this by removing use of the macros and inserting static
-  functions that just call CommonCrypto's implementations of the functions
-  instead.
+  Use 'TCHAR *' for local attribute variable rather than 'char *'.
 
 
-Guenter Knauf (5 Aug 2013)
-- Simplify check for trusted certificates.
+- ldap: Fixed DN variable warnings when Unicode is enabled
   
   
-  This changes the previous check for untrusted certs to a check for
-  certs explicitely marked as trusted.
-  The change is backward-compatible (tested with certdata.txt v1.80).
+  Use 'TCHAR *' for local DN variable rather than 'char *'.
 
 
-Daniel Stenberg (5 Aug 2013)
-- configure: warn on bad env variable use, don't error
+- ldap: Remove the unescape_elements() function
   
   
-  Use XC_CHECK_BUILD_FLAGS instead XC_CHECK_USER_FLAGS.
+  Due to the recent modifications this function is no longer used.
 
 
-- Revert "configure: don't error out on variable confusions, just warn"
+- ldap.c: Fixed compilation warning
   
   
-  This reverts commit 6b27703b5f525eccdc0a8409f51de8595c75132a.
+  ldap.c:98: warning: extra tokens at end of #endif directive
 
 
-- formadd: wrong pointer for file name when CURLFORM_BUFFERPTR used
-  
-  The internal function that's used to detect known file extensions for
-  the default Content-Type got the the wrong pointer passed in when
-  CURLFORM_BUFFER + CURLFORM_BUFFERPTR were used. This had the effect that
-  strlen() would be used which could lead to an out-of-bounds read (and
-  thus segfault). In most cases it would only lead to it not finding or
-  using the correct default content-type.
-  
-  It also showed that test 554 and test 587 were testing for the
-  previous/wrong behavior and now they're updated as well.
-  
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1262
-  Reported-by: Konstantin Isakov
+- ldap: Fixed support for Unicode filter in Win32 search call
 
 
-Guenter Knauf (4 Aug 2013)
-- Skip more untrusted certificates.
+- ldap.c: Fixed compilation warning
   
   
-  Christian Heimes brought to our attention that the certdata.txt
-  format has recently changed [1], causing ca-bundle.crt created
-  with mk-ca-bundle.[pl|vbs] to include untrusted certs.
-  
-  [1] http://lists.debian.org/debian-release/2012/11/msg00411.html
+  ldap.c:802: warning: comparison between signed and unsigned integer
+              expressions
 
 
-Daniel Stenberg (4 Aug 2013)
-- configure: don't error out on variable confusions, just warn
+- ldap: Fixed support for Unicode attributes in Win32 search call
 
 
-- configure: rephrase the notice in _XC_CHECK_VAR_*
+- ldap: Fixed memory leak from commit efb64fdf80
   
   
-  Instead of claiming it is an error, we call it a "note" to reduce the
-  severity level. But the following text now says the [variable] "*should*
-  only be used to specify"... instead of previously having said "may".
+  The unescapped DN was not freed after a successful character conversion.
 
 
-- multi: remove data->state.current_conn struct field
+- ldap.c: Fixed compilation error
   
   
-  Not needed
+  ldap.c:738: error: macro "LDAP_TRACE" passed 2 arguments, but takes
+              just 1
 
 
-- multi: remove the one_easy struct field
+- ldap.c: Fixed compilation warning
   
   
-  Since the merge of SessionHandle with Curl_one_easy, this indirection
-  isn't used anymore.
+  ldap.c:89: warning: extra tokens at end of #endif directive
 
 
-- multi: rename all Curl_one_easy to SessionHandle
+- ldap: Fixed support for Unicode DN in Win32 search call
 
 
-- multi: remove the multi_pos struct field
-  
-  Since Curl_one_easy is really a SessionHandle now, this indirection
-  doesn't exist anymore.
+- ldap: Fixed Unicode user and password in Win32 bind calls
 
 
-- multi: remove easy_handle struct field
-  
-  It isn't needed anymore
+- ldap: Fixed Unicode host name in Win32 initialisation calls
 
 
-- multi: remove 'Curl_one_easy' struct, phase 1
-  
-  The motivation for having a separate struct that keep track of an easy
-  handle when using the multi handle was removed when we switched to
-  always using the multi interface internally. Now they were just two
-  separate struct that was always allocated for each easy handle.
-  
-  This first step just moves the Curl_one_easy struct members into the
-  SessionHandle struct and hides this somehow (== keeps the source code
-  changes to a minimum) by defining Curl_one_easy to SessionHandle
-  
-  The biggest changes in this commit are:
-  
-   1 - the linked list of easy handles had to be changed somewhat due
-       to the new struct layout. This made the main linked list pointer
-       get renamed to 'easyp' and there's also a new pointer to the last
-       node, called easylp. It is no longer circular but ends with ->next
-       pointing to NULL. New nodes are still added last.
+- ldap: Use host.dispname for infof() connection failure messages
   
   
-   2 - easy->state is now called easy->mstate to avoid name collision
+  As host.name may be encoded use dispname for infof() failure messages.
 
 
-Steve Holme (2 Aug 2013)
-- Revert "DOCS: Added IMAP URL example for listing new messages"
-  
-  This reverts commit 82ab5f1b0c7c3f as this was the wrong place to
-  document the complexity of IMAP URLs and Custom Requests.
+- ldap: Prefer 'CURLcode result' for curl result codes
 
 
-- DOCS: Added IMAP URL example for listing new messages
+- ldap: Pass write length in all Curl_client_write() calls
   
   
-  In addition to listing the folder contents, in the URL examples, added
-  an example to list the new messages waiting in the user's inbox.
-
-Yang Tse (1 Aug 2013)
-- packages/vms/Makefile.am: add latest file additions to EXTRA_DIST
+  As we get the length for the DN and attribute variables, and we know
+  the length for the line terminator, pass the length values rather than
+  zero as this will save Curl_client_write() from having to perform an
+  additional strlen() call.
 
 
-- [John Malmberg brought this change]
-
-  Add in the files needed to build libcurl shared images on VMS.
-  
-  Update the packages/vms/readme file to be current.
-  
-  Also some files for the GNV based build were either missing or needed an
-  update.
-  
-  curl_crtl_init.c is a special file that is run before main() to
-  set up the proper C runtime behavior.
-  
-  generate_vax_transfer.com generates the VAX transfer vector modules from
-  the gnv_libcurl_symbols.opt file.
-  
-  gnv_conftest.c_first is a helper file needed for configure scripts to
-  come up with the expected answers on VMS.
-  
-  gnv_libcurl_symbols.opt is the public symbols for the libcurl shared
-  image.
+- ldap: Fixed attribute memory leaks on failed client write
   
   
-  gnv_link_curl.com builds the shared libcurl image and rebuilds other
-  programs to use it.
-  
-  macro32_exactcase.patch is a hack to make a local copy of the VMS Macro32
-  assembler case sensitive, which is needed to build the VAX transfer modules.
-  
-  report_openssl_version.c is a tool for help verify that the libcurl
-  shared image is being built for a minium version of openssl.
+  Fixed memory leaks from commit 086ad79970 as was noted in the commit
+  comments.
 
 
-- curl: second follow-up for commit 5af2bfb9
+- ldap: Fixed DN memory leaks on failed client write
   
   
-  Display progress-bar unconditionally on first call
+  Fixed memory leaks from commit 086ad79970 as was noted in the commit
+  comments.
 
 
-- curl: follow-up for commit 5af2bfb9
+- curl_ntlm_core.c: Fixed compilation warning from commit 1cb17b2a5d
   
   
-  Use tvnow() and tvdiff() to avoid introducing new linkage issues
-
-Daniel Stenberg (31 Jul 2013)
-- curl: --progress-bar max update frequency now at 5Hz
+  curl_ntlm_core.c:146: warning: passing 'DES_cblock' (aka 'unsigned char
+                        [8]') to parameter of type 'char *' converts
+                        between pointers to integer types with different
+                        sign
 
 
-- curl: make --progress-bar update the line less frequently
-  
-  Also, use memset() instead of a lame loop.
-  
-  The previous logic that tried to avoid too many updates were very
-  ineffective for really fast transfers, as then it could easily end up
-  doing hundreds of updates per second that would make a significant
-  impact in transfer performance!
+- ntlm: Use extend_key_56_to_64() for all cryptography engines
   
   
-  Bug: http://curl.haxx.se/mail/archive-2013-07/0031.html
-  Reported-by: Marc Doughty
+  Rather than duplicate the code in setup_des_key() for OpenSSL and in
+  extend_key_56_to_64() for non-OpenSSL based crypto engines, as it is
+  the same, use extend_key_56_to_64() for all engines.
 
 
-Nick Zitzmann (30 Jul 2013)
-- darwinssl: added LFs to some strings passed into infof()
-  
-  (This doesn't need to appear in the release notes.) I noticed a few places
-  where infof() was called, and there should've been an LF at the end of the
-  string, but there wasn't.
+- RELEASE-NOTES: Synced with 34f0bd110f
 
 
-- darwinssl: fix build error in crypto authentication under Snow Leopard
-  
-  It turns out Snow Leopard not only has SecItemCopyMatching() defined in
-  a header not included by the omnibus header, but it won't work for our
-  purposes, because searching for SecIdentityRef objects wasn't added
-  to that API until Lion. So we now use the old SecKeychainSearch API
-  instead if the user is building under, or running under, Snow Leopard.
+- curl_ntlm_core.c: Fixed compilation warning
   
   
-  Bug: http://sourceforge.net/p/curl/bugs/1255/
-  Reported by: Edward Rudd
+  curl_ntlm_core.c:458: warning: 'ascii_uppercase_to_unicode_le' defined
+                        but not used
 
 
-- md5 & metalink: use better build macros on Apple operating systems
+- endian: Fixed bit-shift in 64-bit integer read functions
   
   
-  Previously we used __MAC_10_X and __IPHONE_X to mark digest-generating
-  code that was specific to OS X and iOS. Now we use
-  __MAC_OS_X_VERSION_MAX_ALLOWED and __IPHONE_OS_VERSION_MAX_ALLOWED
-  instead of those macros.
+  From commit 43792592ca and 4bb5a351b2.
   
   
-  Bug: http://sourceforge.net/p/curl/bugs/1255/
-  Reported by: Edward Rudd
+  Reported-by: Michael Osipov
 
 
-Yang Tse (29 Jul 2013)
-- tool_operhlp.c: fix add_file_name_to_url() OOM handling
+- smb: Use endian functions for reading NBT and message size values
 
 
-- tool_operate.c: fix brace placement for vi/emacs delimiter matching
+- endian: Added big endian read functions
 
 
-- tool_operate.c: move <fabdef.h> header inclusion location
+- endian: Added 64-bit integer read function
 
 
-Daniel Stenberg (29 Jul 2013)
-- RELEASE-NOTES: synced with b5478a0e033e7
+- COPYING: Bumped copyright year to 2015
 
 
-- curl_easy_pause: on unpause, trigger mulit-socket handling
-  
-  When the multi-socket API is used, we need the handle to be checked
-  again when it gets unpaused.
+- version: Bump copyright year to 2015
+
+- smb.c: Fixed compilation warnings
   
   
-  Bug: http://curl.haxx.se/mail/lib-2013-07/0239.html
-  Reported-by: Justin Karneges
+  smb.c:780: warning: passing 'char *' to parameter of type 'unsigned
+             char *' converts between pointers to integer types with
+             different sign
+  smb.c:781: warning: passing 'char *' to parameter of type 'unsigned
+             char *' converts between pointers to integer types with
+             different sign
+  smb.c:804: warning: passing 'char *' to parameter of type 'unsigned
+             char *' converts between pointers to integer types with
+             different sign
 
 
-- [John E. Malmberg brought this change]
+- smb: Use endian functions for reading length and offset values
 
 
-  curl_formadd: fix file upload on VMS
-  
-  For the standard VMS text file formats, VMS needs to read the file to
-  get the actual file size.
-  
-  For the standard VMS binary file formats, VMS needs a special format of
-  fopen() call so that it stops reading at the logical end of file instead
-  of at the end of the blocks allocated to the file.
-  
-  I structured the patch this way as I was not sure about changing the
-  structures or parameters to the routines, but would prefer to only call
-  the stat() function once and pass the information to where the fopen()
-  call is made.
-  
-  Bug: https://sourceforge.net/p/curl/bugs/758/
+- endian: Added 16-bit integer write function
 
 
-- formadd: CURLFORM_FILECONTENT wrongly rejected some option combos
-  
-  The code for CURLFORM_FILECONTENT had its check for duplicate options
-  wrong so that it would reject CURLFORM_PTRNAME if used in combination
-  with it (but not CURLFORM_COPYNAME)! The flags field used for this
-  purpose cannot be interpreted that broadly.
+- endian: Fixed Linux compilation issues
   
   
-  Bug: http://curl.haxx.se/mail/lib-2013-07/0258.html
-  Reported-by: Byrial Jensen
+  Having files named endian.[c|h] seemed to cause issues under Linux so
+  renamed them both to have the curl_ prefix in the filenames.
 
 
-Yang Tse (25 Jul 2013)
-- packages/vms/Makefile.am: add latest file additions to EXTRA_DIST
+- [Julien Nabet brought this change]
 
 
-- [John E. Malmberg brought this change]
+  lib1900.c: Fixed cppcheck error
+  
+  lib1900.c:182: (style) Array index 'handlenum' is used before limits
+                 check
+  
+  Bug: https://github.com/bagder/curl/pull/133
 
 
-  VMS: intial set of files to allow building using GNV toolkit.
+- endian: Added standard function descriptions
 
 
-- string formatting: fix too many arguments for format
+- endian: Renamed functions for curl API naming convention
 
 
-- string formatting: fix zero-length printf format string
+- endian: Moved write functions to new module
 
 
-- easy.c: curl_easy_getinfo() fix va_start/va_end matching
+- endian: Moved read functions to new module
 
 
-- imap.c: imap_sendf() fix va_start/va_end matching
+- endian: Introduced endian module
+  
+  To allow the little endian functions, currently used in two of the NTLM
+  source files, to be used by other modules such as the SMB module.
 
 
-- string formatting: fix 15+ printf-style format strings
+- sepheaders.c: Applied curl oding standards
 
 
-Patrick Monnerat (24 Jul 2013)
-- OS400: sync ILE/RPG binding with current curl.h
+- [Julien Nabet brought this change]
 
 
-Yang Tse (24 Jul 2013)
-- string formatting: fix 25+ printf-style format strings
+  sepheaders.c: Fixed resource leak on failure
 
 
-Daniel Stenberg (23 Jul 2013)
-- Makefile.am: use LDFLAGS as well when linking libcurl
+- vtls: Use '(void) arg' for unused parameters
   
   
-  Linking on Solaris 10 x86 with Sun Studio 12 failed when we upgraded
-  automake for the release builds.
+  Prefer void for unused parameters, rather than assigning an argument to
+  itself as a) unintelligent compilers won't optimize it out, b) it can't
+  be used for const parameters, c) it will cause compilation warnings for
+  clang with -Wself-assign and d) is inconsistent with other areas of the
+  curl source code.
+
+- smb.c: Fixed compilation warning
   
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1217
-  Reported-by: Dagobert Michelsen
+  smb.c:586: warning: conversion to 'short unsigned int' from 'int' may
+             alter its value
 
 
-- [Fabian Keil brought this change]
+- [Bill Nagel brought this change]
 
 
-  url.c: Fix dot file path cleanup when using an HTTP proxy
+  smb: Use the connection's upload buffer
   
   
-  Previously the path was cleaned, but the URL wasn't properly updated.
+  Use the connection's upload buffer instead of allocating our own send
+  buffer.
 
 
-- [Fabian Keil brought this change]
+- RELEASE-NOTES: Synced with 1933f9d33c
 
 
-  tests: test1232 verifies dotdot removal from path with proxy
-
-- [Fabian Keil brought this change]
+- schannel: Moved the ISC return flag definitions to the SSPI module
+  
+  Moved our Initialize Security Context return attribute definitions to
+  the SSPI module, as a) these can be used by other SSPI based providers
+  and b) the ISC required attributes are defined there.
 
 
-  dotdot.c: Fix a RFC section number in a comment for Curl_dedotdotify()
+- [Bill Nagel brought this change]
 
 
-- [John E. Malmberg brought this change]
+  smb: Close the connection after a failed client write
 
 
-  build_vms.com: fix debug and float options
+- darwinssl: Fixed compilation warning
   
   
-  In the reorganization of the build_vms.com the debug and float options
-  were not fixed up correctly.
+  vtls.c:683:43: warning: unused parameter 'data'
 
 
-- [John E. Malmberg brought this change]
-
-  curl: fix upload of a zip file in OpenVMS
+- sockfilt.c: Fixed compilation warnings
   
   
-  Two fixes:
+  sockfilt.c:288: warning: conversion to 'DWORD' from 'size_t' may alter
+                  its value
+  sockfilt.c:291: warning: conversion to 'DWORD' from 'size_t' may alter
+                  its value
+  sockfilt.c:323: warning: conversion to 'DWORD' from 'size_t' may alter
+                  its value
+  sockfilt.c:326: warning: conversion to 'DWORD' from 'size_t' may alter
+                  its value
+
+- test1509: Fixed compilation warning
   
   
-  1. Force output file format to be stream-lf so that partial downloads
-  can be continued.
+  lib1509.c:93:18: warning: conversion to 'long int' from 'size_t' may
+                   alter its value
+
+- test556: Fixed compilation warning
   
   
-  This should have minor impact as if the file does not exist, it was
-  created with stream-lf format.  The only time this was an issue is if
-  there was already an existing file with a different format.
+  lib556.c:90: warning: conversion to 'unsigned int' from 'size_t' may
+               alter its value
+
+- sasl_gssapi: Fixed use of dummy username with real username
+
+- vtls: Fixed compilation warning and an ignored return code
   
   
-  2. Fix file uploads are now fixed.
+  curl_schannel.h:123: warning: right-hand operand of comma expression
+                       has no effect
   
   
-     a. VMS binary files such as ZIP archives are now uploaded
-        correctly.
+  Some instances of the curlssl_close_all() function were declared with a
+  void return type whilst others as int. The schannel version returned
+  CURLE_NOT_BUILT_IN and others simply returned zero, but in all cases the
+  return code was ignored by the calling function Curl_ssl_close_all().
   
   
-     b. VMS text files are read once to get the correct size
-        and then converted to line-feed terminated records as
-        they are read into curl.
+  For the time being and to keep the internal API consistent, changed all
+  declarations to use a void return type.
   
   
-  The default VMS text formats do not contain either line-feed or
-  carriage-return terminated records.  Those delimiters are added by the
-  operating system file read calls if the application requests them.
+  To reduce code we might want to consider removing the unimplemented
+  versions and use a void #define like schannel does.
+
+Daniel Stenberg (28 Dec 2014)
+- TODO: 2.3 Better support for same name resolves
+
+Steve Holme (28 Dec 2014)
+- test1520: Fixed initial teething problems
   
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=496
+  * Missing initialisation of upload status caused a seg fault
+  * Missing data termination caused corrupt data to be uploaded
+  * Data verification should be performed in <upload> element
+  * Added missing recipient list cleanup
 
 
-Yang Tse (22 Jul 2013)
-- libtest: fix data type of some *_setopt() 'long' arguments
+- test1520: Fixed compilation errors
 
 
-- curl: fix symbolic names for CURL_NETRC_* enum in --libcurl output
+- tests: Added test for bug #1456
 
 
-- curl: fix symbolic names for CURLUSESSL_* enum in --libcurl output
+- checksrc.bat: Fixed a problem opening files with spaces in the filename
 
 
-- tool_operate.c: fix passing curl_easy_setopt long arg on some x64 ABIs
-  
-  We no longer pass our 'bool' data type variables nor constants as
-  an argument to my_setopt(), instead we use proper 1L or 0L values.
-  
-  This also fixes macro used to pass string argument for CURLOPT_SSLCERT,
-  CURLOPT_SSLKEY and CURLOPT_EGDSOCKET using my_setopt_str() instead of
-  my_setopt().
-  
-  This also casts enum or int argument data types to long when passed to
-  my_setopt_enum().
+- openldap: Prefer use of 'CURLcode result'
 
 
-Daniel Stenberg (21 Jul 2013)
-- curl_multi_wait: fix revents
-  
-  Commit 6d30f8ebed34e7276 didn't work properly. First, it used the wrong
-  array index, but this fix also:
-  
-  1 - only does the copying if indeed there was any activity
+- openldap: Use 'LDAPMessage *msg' for messages
   
   
-  2 - makes sure to properly translate between internal and external
-  bitfields, which are not guaranteed to match
-  
-  Reported-by: Evgeny Turnaev
+  This frees up the 'result' variable for CURLcode based result codes.
 
 
-- RELEASE-NOTES: synced with d529f3882b9bca
+- nss: Don't ignore Curl_extract_certinfo() OOM failure
 
 
-- curl_easy_perform: gradually increase the delay time
-  
-  Instead of going 50,100,150 etc millisecond delay time when nothing has
-  been found to do or wait for, we now start lower and double each loop as
-  in 4,8,16,32 etc.
-  
-  This lowers the minimum wait without sacrifizing the longer wait too
-  much with unnecessary CPU cycles burnt.
-  
-  Bug: http://curl.haxx.se/mail/lib-2013-07/0103.html
-  Reported-by: Andreas Malzahn
+- nss: Don't ignore Curl_ssl_init_certinfo() OOM failure
 
 
-- ftp_do_more: consider DO_MORE complete when server connects back
-  
-  In the case of an active connection when ftp_do_more() detects that the
-  server has connected back, it must make sure to mark it as complete so
-  that the multi_runsingle() function will detect this and move on to the
-  next state.
+- nss: Use 'CURLcode result' for curl result codes
   
   
-  Bug: http://curl.haxx.se/mail/lib-2013-07/0115.html
-  Reported-by: Clemens Gruber
+  ...and don't use CURLE_OK in failure/success comparisons.
 
 
-Yang Tse (19 Jul 2013)
-- Makefile.b32: Borland makefile adjustments. Tested with BCC 5.5.1
+- getinfo: Code style policing
 
 
-- WIN32 MemoryTracking: require UNICODE for wide strdup code support
+- getinfo: Use 'CURLcode result' for curl result codes
 
 
-Daniel Stenberg (18 Jul 2013)
-- CURLOPT_XFERINFOFUNCTION: introducing a new progress callback
-  
-  CURLOPT_XFERINFOFUNCTION is now the preferred progress callback function
-  and CURLOPT_PROGRESSFUNCTION is considered deprecated.
-  
-  This new callback uses pure 'curl_off_t' arguments to pass on full
-  resolution sizes. It otherwise retains the same characteristics: the
-  same call rate, the same meanings for the arguments and the return code
-  is used the same way.
-  
-  The progressfunc.c example is updated to show how to use the new
-  callback for newer libcurls while supporting the older one if built with
-  an older libcurl or even built with a newer libcurl while running with
-  an older.
+- darwinssl: Use 'CURLcode result' for curl result codes
 
 
-Yang Tse (18 Jul 2013)
-- Reinstate "WIN32 MemoryTracking: track wcsdup() _wcsdup() and _tcsdup() usage".
-  
-  This reverts commit 7ed25cc, reinstating commit 8ec2cb5.
-  
-  As of 18-jul-2013 we still do have code in libcurl that makes use of these
-  memory functions. Commit 8ec2cb5 comment still applies and is yet valid.
-  
-  These memory functions are solely used in Windows builds, so all related
-  code is protected with '#ifdef WIN32' preprocessor conditional compilation
-  directives.
+- polarssl: Use 'CURLcode result' for curl result codes
+
+- docs: Updated following the addition of SASL GSSAPI via GSS-API libraries
   
   
-  Specifically, wcsdup() _wcsdup() are used when building a Windows target with
-  UNICODE and USE_WINDOWS_SSPI preprocessor symbols defined. This is the case
-  when building a Windows UNICODE target with Windows native SSL/TLS support
-  enabled.
+  As this feature has been implemented for 7.40.0.
+
+- asiohiper.cpp: No need to initialise members of ConnInfo
   
   
-  Realizing that wcsdup() _wcsdup() are used is a bit tricky given that usage
-  of these is hidden behind _tcsdup() which is MS way of dealing with code
-  that must tolerate UNICODE and non-UNICODE compilation. Additionally, MS
-  header files and those compatible from other compilers use this preprocessor
-  conditional compilation directive in order to select at compilation time
-  whether 'wide' or 'ansi' MS API functions are used.
+  ...as calloc() automatically clears the area of memory with zeros.
+
+- asiohiper.cpp: Updated for curl coding standards
   
   
-  Without this code, Windows build targets with Windows native SSL/TLS support
-  enabled and MemoryTracking support enabled misbehave in tracking memory usage,
-  regardless of being a UNICODE enabled build or not.
+  ...with the exception of the start of block statement curly brackets.
 
 
-- xc-am-iface.m4: comments refinement
+- code/docs: Use correct case for IPv4 and IPv6
+  
+  For consistency, as we seem to have a bit of a mixed bag, changed all
+  instances of ipv4 and ipv6 in comments and documentations to use the
+  correct case.
 
 
-- configure: fix 'subdir-objects' distclean related issue
+- runtests: Fixed detection of Unix Sockets feature
   
   
-  See XC_AMEND_DISTCLEAN comments for details.
+  ...following change in curl --version output.
 
 
-Daniel Stenberg (18 Jul 2013)
-- [Evgeny Turnaev brought this change]
+- code/docs: Use Unix rather than UNIX to avoid use of the trademark
+  
+  Use Unix when generically writing about Unix based systems as UNIX is
+  the trademark and should only be used in a particular product's name.
 
 
-  curl_multi_wait: set revents for extra fds
+- ip2ip.c: Fixed compilation warning when IPv6 Scope ID not supported
   
   
-  Pass back the revents that happened for the user-provided file
-  descriptors.
+  if2ip.c:119: warning: unused parameter 'remote_scope_id'
+  
+  ...and some minor code style policing in the same function.
 
 
-- [Ben Greear brought this change]
+- vtls: Don't set cert info count until memory allocation is successful
+  
+  Otherwise Curl_ssl_init_certinfo() can fail and set the num_of_certs
+  member variable to the requested count, which could then be used
+  incorrectly as libcurl closes down.
 
 
-  asyn-ares: Don't blank ares servers if none configured.
+- vtls: Use CURLcode for Curl_ssl_init_certinfo() return type
   
   
-  Best to just let c-ares use it's defaults if none are configured
-  in (lib)curl.
+  The return type for this function was 0 on success and 1 on error. This
+  was then examined by the calling functions and, in most cases, used to
+  return CURLE_OUT_OF_MEMORY.
   
   
-  Signed-off-by: Ben Greear <greearb@candelatech.com>
+  Instead use CURLcode for the return type and return the out of memory
+  error directly, propagating it up the call stack.
 
 
-- [Sergei Nikulov brought this change]
-
-  cmake: Fix for MSVC2010 project generation
+- configure: Use camel case for UNIX sockets feature output
   
   
-  Fixed issue with static build for MSVC2010.
+  To match the curl --version output.
+
+Marc Hoersken (26 Dec 2014)
+- sockfilt.c: Reduce the number of individual memory allocations
   
   
-  After some investigation I've discovered known issue
-  http://public.kitware.com/Bug/view.php?id=11240 When .rc file is linked
-  to static lib it fails with following linker error
+  Merge multiple internal arrays into one, even if some variables
+  will not not be used. They are all created with the number of
+  file descriptors as their size.
   
   
-  LINK : warning LNK4068: /MACHINE not specified; defaulting to X86
-  file.obj : fatal error LNK1112: module machine type 'x64' conflicts with
-  target machine type 'X86'
+  Also fix possible thread handle leak in CloseHandle-loop.
+
+- sockfilt.c: Replace 100ms sleep with thread throttle
   
   
-  Fix add target property /MACHINE: for MSVC generation.
+  Improves performance of test cases 574 and 575 by 50%.
   
   
-  Also removed old workarounds - it caused errors during msvc build.
+  A value of zero causes the thread to relinquish the remainder
+  of its time slice to any other thread of equal priority that is
+  ready to run. If there are no other threads of equal priority
+  ready to run, the function returns immediately, and the thread
+  continues execution.
   
   
-  Bug: http://curl.haxx.se/mail/lib-2013-07/0046.html
-
-- mk-ca-bundle.1: point out certdata.txt format docs
-
-Yang Tse (16 Jul 2013)
-- slist.c: Curl_slist_append_nodup() OOM handling fix
+  http://msdn.microsoft.com/library/windows/desktop/ms686307.aspx
 
 
-Daniel Stenberg (16 Jul 2013)
-- test1414: FTP PORT download without SIZE support
+Steve Holme (25 Dec 2014)
+- tool_help: Use camel case for UNIX sockets feature output
+  
+  In line with the other features listed in the --version output,
+  capitalise the UNIX socket feature.
 
 
-Yang Tse (16 Jul 2013)
-- tests/Makefile.am: add configurehelp.pm to DISTCLEANFILES
+- vtls: Use bool for Curl_ssl_getsessionid() return type
+  
+  The return type of this function is a boolean value, and even uses a
+  bool internally, so use bool in the function declaration as well as
+  the variables that store the return value, to avoid any confusion.
 
 
-Patrick Monnerat (15 Jul 2013)
-- curl_slist_append(): fix error detection
+- schannel: Minor code style policing for casts
 
 
-- slist.c: fix indentation
+- schannel: Prefer 'CURLcode result' for curl result codes
 
 
-- OS400: new SSL backend GSKit
+- cyassl: Prefer 'CURLcode result' for curl result codes
 
 
-- OS400: add slist and certinfo EBCDIC support
+- tool_xattr: Use 'CURLcode result' for curl result codes
 
 
-- config-os400.h: enable system strdup(), strcmpi(), etc.
+- curl_ntlm_core.c: Fixed compilation warnings
+  
+  curl_ntlm_core.c:301: warning: pointer targets in passing argument 2 of
+                        'CryptImportKey' differ in signedness
+  curl_ntlm_core.c:310: warning: passing argument 6 of 'CryptEncrypt' from
+                        incompatible pointer type
+  curl_ntlm_core.c:540: warning: passing argument 4 of 'CryptGetHashParam'
+                        from incompatible pointer type
 
 
-- x509asn1.c,x509asn1.h: new module to support ASN.1/X509 parsing & info extract
-  Use from qssl backend
+- RELEASE-NOTES: Synced with 8830df8b66
 
 
-- ssluse.c,sslgen.c,sslgen.h: move certinfo support to generic SSL
+- gtls: Use preferred 'CURLcode result'
 
 
-- Merge branch 'master' of github.com:bagder/curl
+- openldap: Use standard naming for setup connection function
   
   
-  Merge for resync
+  Renamed ldap_setup() to ldap_setup_connection() to follow more widely
+  used function naming.
 
 
-- slist.c, slist.h, cookie.c: new internal procedure Curl_slist_append_nodup()
-
-Yang Tse (15 Jul 2013)
-- sslgen.c: fix Curl_rand() compiler warning
+- rtmp: Use standard naming for setup connection function
   
   
-  Use simple seeding method upon RANDOM_FILE seeding method failure.
-
-- sslgen.c: fix unreleased Curl_rand() infinite recursion
+  Renamed rtmp_setup() to rtmp_setup_connection() to follow more widely
+  used function naming.
 
 
-Daniel Stenberg (14 Jul 2013)
-- [Dave Reisner brought this change]
-
-  src/tool: allow timeouts to accept decimal values
-  
-  Implement wrappers around strtod to convert the user argument to a
-  double with sane error checking. Use this to allow --max-time and
-  --connect-timeout to accept decimal values instead of strictly integers.
+- smb: Use standard naming for setup connection function
   
   
-  The manpage is updated to make mention of this feature and,
-  additionally, forewarn that the actual timeout of the operation can
-  vary in its precision (particularly as the value increases in its
-  decimal precision).
-
-- [Dave Reisner brought this change]
+  Renamed smb_setup() to smb_setup_connection() to follow more widely
+  used function naming.
 
 
-  curl.1: fix long line, found by checksrc.pl
+- config-win32.h: Fixed line length > 79 columns
 
 
-- [Dave Reisner brought this change]
+- openssl: Prefer we don't use NULL in comparisons
 
 
-  src/tool_paramhlp: try harder to catch negatives
+- build: Removed WIN32 definition from the Visual Studio projects
   
   
-  strto* functions happily chomp off leading whitespace, so simply
-  checking for str[0] can lead to false negatives. Do the full parse and
-  check the out value instead.
-
-- [John E. Malmberg brought this change]
+  As this pre-processor definition is defined in curl_setup.h there is no
+  need to include it in the Visual Studio project files.
 
 
-  build_vms.com: detect and use zlib shared image
+- build: Removed WIN64 definition from the libcurl Visual Studio projects
   
   
-  Update the build_vms.com to detect and use zlib shared image installed
-  by the ZLIB kit produced by Jean-Francois Pieronne, and the also the
-  future ZLIB 1.2.8 kit in addition to the older ZLIB kits.
+  Removed the WIN64 pre-processor definition from the libcurl project
+  files as:
   
   
-  Also fix the indentation to match one of the common standards used for
-  VMS DCL command files and removed the hard tab characters.
+  * WIN64 is not used in our source code
+  * The curl projects files don't define it
+  * It isn't required by or used in the platform SDK
+  * For backwards compatability curl_setup.h defines WIN32
+  * The compiler automatically defines _WIN64 for x64 builds
   
   
-  Tested on OpenVMS 8.4 Alpha and IA64, and OpenVMS 7.3 VAX.
-
-Yang Tse (14 Jul 2013)
-- url.c: fix parse_url_login() OOM handling
-
-- http_digest.c: SIGSEGV and OOM handling fixes
-
-- url.c: fix parse_login_details() OOM handling
-
-- [John E. Malmberg brought this change]
-
-  setup-vms.h: sk_pop symbol tweak
+  Historically Visual Studio projects have defined WIN32, in addition to
+  the compiler defined _WIN32 definition, and I had incorrectly changed
+  that to WIN64 for the x64 libcurl builds but not in the curl projects.
   
   
-  Newer versions of curl are referencing a sk_pop symbol while the HP
-  OpenSSL library has the symbol in uppercase only.
-
-- getinfo.c: fix enumerated type mixed with another type
-
-- test 1511: fix enumerated type mixed with another type
-
-- url.c: fix SIGSEGV
-
-- dotdot.c: fix global declaration shadowing
-
-- easy.c: fix global declaration shadowing
-
-Kamil Dudka (9 Jul 2013)
-- Revert "curl.1: document the --time-cond option in the man page"
+  As such, it is questionable whether this should be defined or not. For
+  more information see the following cache of a discussion that took
+  place on the microsoft.public.vc.mfc newsgroup:
   
   
-  This reverts commit 3a0e931fc715a80004958794a96b12cf90503f99 because
-  the documentation of --time-cond was duplicated by mistake.
-  
-  Reported by: Dave Reisner
-
-- curl.1: document the --sasl-ir option in the man page
-
-- curl.1: document the --post303 option in the man page
+  http://www.tech-archive.net/Archive/VC/microsoft.public.vc.mfc/2008-06/msg00074.html
 
 
-- curl.1: document the --time-cond option in the man page
-
-Yang Tse (9 Jul 2013)
-- configure: automake 1.14 compatibility tweak (use XC_AUTOMAKE)
+- openssl.c Fix for compilation errors with older versions of OpenSSL
+  
+  openssl.c:1408: error: 'TLS1_1_VERSION' undeclared
+  openssl.c:1411: error: 'TLS1_2_VERSION' undeclared
 
 
-- xc-am-iface.m4: provide XC_AUTOMAKE macro
+Daniel Stenberg (22 Dec 2014)
+- [John Malmberg brought this change]
 
 
-Guenter Knauf (8 Jul 2013)
-- Added winssl-zlib target to VC builds.
+  Fix comment edit in vms/backup_gnv_curl_src.com
+  
+  packages/vms/backup_gnv_curl_src.com: Originally copied from Bash port.
 
 
-- Synced Makefile.vc6 with recent changes.
+- curl: show size of inhibited data when using -v
   
   
-  Issue posted to the list by malinowsky AT FTW DOT at.
+  To offer some more info and yet it doesn't use more lines.
 
 
-- Added libmetalink URL; added Android versions.
+- openssl: fix SSL/TLS versions in verbose output
 
 
-Dan Fandrich (3 Jul 2013)
-- examples: Moved usercertinmem.c to COMPLICATED_EXAMPLES
-  
-  This prevents it from being built during a "make check" since it
-  depends on OpenSSL.
+- openssl: make it compile against openssl 1.1.0-DEV master branch
 
 
-Nick Zitzmann (2 Jul 2013)
-- Merge branch 'master' of https://github.com/bagder/curl
+Marc Hoersken (22 Dec 2014)
+- sshserver.pl: clarify and streamline variable names
 
 
-- darwinssl: SSLv2 connections are aborted if unsupported by the OS
+Daniel Stenberg (21 Dec 2014)
+- openssl: warn for SRP set if SSLv3 is used, not for TLS version
   
   
-  I just noticed that OS X no longer supports SSLv2. Other TLS engines return
-  an error if the requested protocol isn't supported by the underlying
-  engine, so we do that now for SSLv2 if the framework returns an error
-  when trying to turn on SSLv2 support. (Note: As always, SSLv2 support is
-  only enabled in curl when starting the app with the -2 argument; it's off
-  by default. SSLv2 is really old and insecure.)
-
-Marc Hoersken (1 Jul 2013)
-- lib506.c: Fixed possible use of uninitialized variables
+  ... as it requires TLS and it was was left to warn on the default from
+  when default was SSL...
 
 
-Kamil Dudka (30 Jun 2013)
-- url: restore the functionality of 'curl -u :'
+- smb: use memcpy() instead of strncpy()
   
   
-  This commit fixes a regression introduced in
-  fddb7b44a79d78e05043e1c97e069308b6b85f79.
+  ... as it never copies the trailing zero anyway and always just the four
+  bytes so let's not mislead anyone into thinking it is actually treated
+  as a string.
   
   
-  Reported by: Markus Moeller
-  Bug: http://curl.haxx.se/mail/archive-2013-06/0052.html
+  Coverity CID: 1260214
 
 
-Daniel Stenberg (25 Jun 2013)
-- digest: append the timer to the random for the nonce
+- [John E. Malmberg brought this change]
 
 
-- digest: improve nonce generation
+  VMS: Updates for 0740-0D1220
   
   
-  Use the new improved Curl_rand() to generate better random nonce for
-  Digest auth.
-
-- curl.1: fix typo in --xattr description
+  lib/setup-vms.h : VAX HP OpenSSL port is ancient, needs help.
+                    More defines to set symbols to uppercase.
   
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1252
-  Reported-by: Jean-Noël Rouvignac
-
-- RELEASE-NOTES: synced with 365c5ba39591
-  
-  The 10 first bug fixes for the pending release...
-
-- formpost: better random boundaries
+  src/tool_main.c : Fix parameter to vms_special_exit() call.
   
   
-  When doing multi-part formposts, libcurl used a pseudo-random value that
-  was seeded with time(). This turns out to be bad for users who formpost
-  data that is provided with users who then can guess how the boundary
-  string will look like and then they can forge a different formpost part
-  and trick the receiver.
+  packages/vms/ :
+    backup_gnv_curl_src.com : Fix the error message to have the correct package.
   
   
-  My advice to such implementors is (still even after this change) to not
-  rely on the boundary strings being cryptographically strong. Fix your
-  code and logic to not depend on them that much!
+    build_curl-config_script.com : Rewrite to be more accurate.
   
   
-  I moved the Curl_rand() function into the sslgen.c source file now to be
-  able to take advantage of the SSL library's random function if it
-  provides one. If not, try to use the RANDOM_FILE for seeding and as a
-  last resort keep the old logic, just modified to also add microseconds
-  which makes it harder to properly guess the exact seed.
+    build_libcurl_pc.com : Use tool_version.h now.
   
   
-  The formboundary() function in formdata.c is now using 64 bit entropy
-  for the boundary and therefore the string of dashes was reduced by 4
-  letters and there are 16 hex digits following it. The total length is
-  thus still the same.
+    build_vms.com : Fix to handle lib/vtls directory.
   
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1251
-  Reported-by: "Floris"
-
-- printf: make sure %x are treated unsigned
+    curl_gnv_build_steps.txt : Updated build procedure documentation.
   
   
-  When using %x, the number must be treated as unsigned as otherwise it
-  would get sign-extended on for example 64bit machines and do wrong
-  output. This problem showed when doing printf("%08x", 0xffeeddcc) on a
-  64bit host.
-
-- tests: add test1395 to the tarball
-
-- SIGPIPE: don't use 'data' in sigpipe restore
+    generate_config_vms_h_curl.com :
+         * VAX does not support 64 bit ints, so no NTLM support for now.
+         * VAX HP SSL port is ancient, needs some help.
+         * Disable NGHTTP2 for now, not ported to VMS.
+         * Disable UNIX_SOCKETS, not available on VMS yet.
+         * HP GSSAPI port does not have gss_nt_service_name.
   
   
-  Follow-up fix from 7d80ed64e43515.
+    gnv_link_curl.com : Update for new curl structure.
   
   
-  The SessionHandle may not be around to use when we restore the sigpipe
-  sighandler so we store the no_signal boolean in the local struct to know
-  if/how to restore.
+    pcsi_product_gnv_curl.com : Set up to optionally do a complete build.
 
 
-- TODO: 1.8 Modified buffer size approach
+Marc Hoersken (21 Dec 2014)
+- sockfilt.c: use non-Ex functions that are available before WinXP
   
   
-  Thoughts around buffer sizes and what might be possible to do...
+  It was initially reported by Guenter that GetFileSizeEx
+  requires (_WIN32_WINNT >= 0x0500) to be true.
 
 
-- c-ares: improve error message on failed resolve
+- tests: use Cygwin-style paths in SSH, SSHD and SFTP config files
   
   
-  When the c-ares based resolver backend failed to resolve a name, it
-  tried to show the name that failed from existing structs. This caused
-  the wrong output and shown hostname when for example --interface
-  [hostname] was used and that name resolving failed.
+  Second patch to enable Windows support using Cygwin-based OpenSSH.
   
   
-  Now we use the hostname used in the actual resolve attempt in the error
-  message as well.
-  
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1191
-  Reported-by: Kim Vandry
+  Tested with CopSSH 5.0.0 free edition using an msys shell on Windows 7.
 
 
-- ossl_recv: check for an OpenSSL error, don't assume
-  
-  When we recently started to treat a zero return code from SSL_read() as
-  an error we also got false positives - which primarily looks to be
-  because the OpenSSL documentation is wrong and a zero return code is not
-  at all an error case in many situations.
+- tests: support spaces in paths to SSH, SSHD and SFTP binaries
   
   
-  Now ossl_recv() will check with ERR_get_error() to see if there is a
-  stored error and only then consider it to be a true error if SSL_read()
-  returned zero.
-  
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1249
-  Reported-by: Nach M. S.
-  Patch-by: Nach M. S.
-
-Nick Zitzmann (22 Jun 2013)
-- Merge branch 'master' of https://github.com/bagder/curl
+  First patch to enable Windows support using Cygwin-based OpenSSH.
 
 
-- darwinssl: fix crash that started happening in Lion
+Steve Holme (20 Dec 2014)
+- non-ascii: Reduce variable usage
   
   
-  Something (a recent security update maybe?) changed in Lion, and now it
-  has changed SSLCopyPeerTrust such that it may return noErr but also give
-  us a null trust, which caught us off guard and caused an eventual crash.
+  Removed 'next' variable in Curl_convert_form(). Rather than setting it
+  from 'form->next' and using that to set 'form' after the conversion
+  just use 'form = form->next' instead.
 
 
-Daniel Stenberg (22 Jun 2013)
-- SIGPIPE: ignored while inside the library
-  
-  ... and restore the ordinary handling again when it returns. This is
-  done for curl_easy_perform() and curl_easy_cleanup() only for now - and
-  only when built to use OpenSSL as backend as this is the known culprit
-  for the spurious SIGPIPEs people have received.
+- non-ascii: Prefer while loop rather than a do loop
   
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1180
-  Reported by: Lluís Batlle i Rossell
+  This also removes the need to check that the 'form' argument is valid.
 
 
-- KNOWN_BUGS: #83 unable to load non-default openssl engines
-
-- test1396: invoke the correct test tool!
+- non-ascii: Reduce variable scope
   
   
-  This erroneously run unit test 1310 instead of 1396!
+  As 'result' isn't used out side the conversion callback code and
+  previously caused variable shadowing in the libiconv based code.
 
 
-Kamil Dudka (22 Jun 2013)
-- test1230: avoid using hard-wired port number
+- non-ascii: We prefer 'CURLcode result'
   
   
-  ... to prevent failure when a non-default -b option is given
-
-- curl-config.in: replace tabs by spaces
+  This also fixes a variable shadowing issue when HAVE_ICONV is defined
+  as rc was declared for the result code of libiconv based functions.
 
 
-Nick Zitzmann (22 Jun 2013)
-- darwinssl: reform OS-specific #defines
+Marc Hoersken (19 Dec 2014)
+- secureserver.pl: clean up formatting of config and fix verbose output
   
   
-  This doesn't need to be in the release notes. I cleaned up a lot of the #if
-  lines in the code to use MAC_OS_X_VERSION_MIN_REQUIRED and
-  MAC_OS_X_VERSION_MAX_ALLOWED instead of checking for whether things like
-  __MAC_10_6 or whatever were defined, because for some SDKs Apple has released
-  they were defined out of place.
+  Verbose output was not matching the actual configuration file,
+  because FIPS and Windows conditions were ignored.
 
 
-Daniel Stenberg (22 Jun 2013)
-- [Alessandro Ghedini brought this change]
-
-  docs: fix typo in curl_easy_getinfo manpage
+- secureserver.pl: update Windows detection and fix path conversion
 
 
-- dotdot: introducing dot file path cleanup
-  
-  RFC3986 details how a path part passed in as part of a URI should be
-  "cleaned" from dot sequences before getting used. The described
-  algorithm is now implemented in lib/dotdot.c with the accompanied test
-  case in test 1395.
+- secureserver.pl: make OpenSSL CApath and cert absolute path values
   
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1200
-  Reported-by: Alex Vinnik
+  Recent stunnel versions (5.08) seem to have trouble with relative
+  paths on Windows. This turns the relative paths into absolute ones.
 
 
-- bump: start working towards what most likely will become 7.32.0
+Patrick Monnerat (18 Dec 2014)
+- if2ip: dummy scope parameter for Curl_if2ip() call in SIOCGIFADDR-enabled code.
 
 
-- THANKS: added 24 new contributors from the 7.31.0 release
+- [Kyle J. McKay brought this change]
 
 
-Version 7.31.0 (22 Jun 2013)
+  parseurlandfillconn(): fix improper non-numeric scope_id stripping.
+  Fixes SF bug 1149: http://sourceforge.net/p/curl/bugs/1449/
 
 
-Daniel Stenberg (22 Jun 2013)
-- RELEASE-NOTES: synced with 0de7249bb39a2 - 7.31.0
+- IPV6: address scope != scope id
+  There was a confusion between these: this commit tries to disambiguate them.
+  - Scope can be computed from the address itself.
+  - Scope id is scope dependent: it is currently defined as 1-based local
+    interface index for link-local scoped addresses, and as a site index(?) for
+    (obsolete) site-local addresses. Linux only supports it for link-local
+    addresses.
+  The URL parser properly parses a scope id as an interface index, but stores it
+  in a field named "scope": confusion. The field has been renamed into "scope_id".
+  Curl_if2ip() used the scope id as it was a scope. This caused failures
+  to bind to an interface.
+  Scope is now computed from the addresses and Curl_if2ip() matches them.
+  If redundantly specified in the URL, scope id is check for mismatch with
+  the interface index.
+  
+  This commit should fix SF bug #1451.
 
 
-- unit1396: unit tests to verify curl_easy_(un)escape
+- connect: singleipconnect(): properly try other address families after failure
 
 
-- Curl_urldecode: no peeking beyond end of input buffer
-  
-  Security problem: CVE-2013-2174
+Daniel Stenberg (16 Dec 2014)
+- SFTP: work-around servers that return zero size on STAT
   
   
-  If a program would give a string like "%FF" to curl_easy_unescape() but
-  ask for it to decode only the first byte, it would still parse and
-  decode the full hex sequence. The function then not only read beyond the
-  allowed buffer but it would also deduct the *unsigned* counter variable
-  for how many more bytes there's left to read in the buffer by two,
-  making the counter wrap. Continuing this, the function would go on
-  reading beyond the buffer and soon writing beyond the allocated target
-  buffer...
+  Bug: http://curl.haxx.se/mail/lib-2014-12/0103.html
+  Pathed-by: Marc Renault
+
+- glob_next_url: make the loop count upwards
   
   
-  Bug: http://curl.haxx.se/docs/adv_20130622.html
-  Reported-by: Timo Sirainen
+  As the former contruct apparently caused a compiler warning, mentioned
+  in d8efde07e556c.
 
 
-Guenter Knauf (20 Jun 2013)
-- Use opened body.out file and write content to it.
+- tool_operate: we prefer 'CURLcode result'
 
 
-Daniel Stenberg (20 Jun 2013)
-- multi_socket: react on socket close immediately
+- tool_urlglob: unify return codes to use CURLcode
   
   
-  As a remedy to the problem when a socket gets closed and a new one is
-  opened with the same file descriptor number and as a result
-  multi.c:singlesocket() doesn't detect the difference, the new function
-  Curl_multi_closed() gets told when a socket is closed so that it can be
-  removed from the socket hash. When the old one has been removed, a new
-  socket should be detected fine by the singlesocket() on next invoke.
+  There was a mix of GlobCode, CURLcode and ints and they were mostly
+  passing around CURLcode errors. This change makes the functions use only
+  CURLcode and removes the GlobCode type completely.
+
+- tool_urlglob.c: partly reverse dc19789444
   
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1248
-  Reported-by: Erik Johansson
+  The loop in glob_next_url() needs to be done backwards to maintain the
+  logic. dc19789444 caused test 1235 to fail.
 
 
-- RELEASE-NOTES: synced with e305f5ec715f
+- KNOWN_BUGS: the SFTP code doesn't support CURLINFO_FILETIME
 
 
-- TODO: mention the DANE patch from March
+- [Jay Satiro brought this change]
 
 
-- CURLOPT_COOKIELIST: take cookie share lock
+  opts: Warn CURLOPT_TIMEOUT overrides when set after CURLOPT_TIMEOUT_MS
   
   
-  When performing COOKIELIST operations the cookie lock needs to be taken
-  for the cases where the cookies are shared among multiple handles!
+  Change CURLOPT_TIMEOUT doc to warn that if CURLOPT_TIMEOUT and
+  CURLOPT_TIMEOUT_MS are both set whichever one is set last is the one
+  that will be used.
   
   
-  Verified by Benjamin Gilbert's updated test 506
+  Prior to this change that behavior was only noted in the
+  CURLOPT_TIMEOUT_MS doc.
+
+Nick Zitzmann (15 Dec 2014)
+- darwinssl: fix incorrect usage of aprintf()
   
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1215
-  Reported-by: Benjamin Gilbert
+  Commit b13923f changed an snprintf() to use aprintf(), but the API usage
+  wasn't correct, and was causing a crash to occur. This fixes it.
 
 
-- [Benjamin Gilbert brought this change]
+Steve Holme (14 Dec 2014)
+- copyright: Updated the copyright year following recent updates
 
 
-  test506: verify that CURLOPT_COOKIELIST takes share lock
+Daniel Stenberg (14 Dec 2014)
+- tool_urlglob.c: reverse two loops
   
   
-  It doesn't right now: http://curl.haxx.se/bug/view.cgi?id=1215
+  By counting from 0 and up instead of backwards like before, we remove
+  the need for the "funny" check of the unsigned variable when decreased
+  passed zero. Easier to read and less risk for compiler warnings.
 
 
-- TODO: HTTP2/SPDY support
+Marc Hoersken (14 Dec 2014)
+- tool_urlglob.c: Added braces to clarify the conditions
 
 
-- curl_easy_setopt.3: clarify CURLOPT_PROGRESSFUNCTION frequency
+- tool_urlglob.c: Silence warning C6293: Ill-defined for-loop
   
   
-  Make it clearer that the CURLOPT_PROGRESSFUNCTION callback will be
-  called more frequently than once per second when things are happening.
+  The >= 0 is actually not required, since i underflows and
+  the for-loop is stopped using the < condition, but this
+  makes the VS2012 compiler and code analysis happy.
 
 
-- RELEASE-NOTES: synced with 9c3e098259b82
+- tool_binmode.c: Explicitly ignore the return code of setmode
   
   
-  Mention 7 recent bug fixes and their associated contributors
+  Fixes code analysis warning C6031:
+  return value ignored: <function> could return unexpected value
 
 
-- curl_multi_wait.3: clarify the numfds counter
-
-- curl_easy_perform: avoid busy-looping
+- lib: Fixed multiple code analysis warnings if SAL are available
   
   
-  When curl_multi_wait() finds no file descriptor to wait for, it returns
-  instantly and this must be handled gracefully within curl_easy_perform()
-  or cause a busy-loop. Starting now, repeated fast returns without any
-  file descriptors is detected and a gradually increasing sleep will be
-  used (up to a max of 1000 milliseconds) before continuing the loop.
+  warning C28252: Inconsistent annotation for function:
+  parameter has another annotation on this instance
+
+Steve Holme (14 Dec 2014)
+- smb.c: Fixed code analysis warning
   
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1238
-  Reported-by: Miguel Angel
+  smb.c:320: warning C6297: Arithmetic overflow: 32-bit value is shifted,
+             then cast to 64-bit value. Result may not be an expected
+             value
 
 
-- [YAMADA Yasuharu brought this change]
+Marc Hoersken (14 Dec 2014)
+- tool_util.c: Use GetTickCount64 if it is available
 
 
-  cookies: follow-up fix for path checking
+Steve Holme (14 Dec 2014)
+- smb: Use HAVE_PROCESS_H for process.h inclusion
   
   
-  The initial fix to only compare full path names were done in commit
-  04f52e9b4db0 but found out to be incomplete. This takes should make the
-  change more complete and there's now two additional tests to verify
-  (test 31 and 62).
+  Rather than testing against _WIN32 use the preferred HAVE_PROCESS_H
+  pre-processor define when including process.h.
 
 
-- [Sergei Nikulov brought this change]
-
-  lib1900: use tutil_tvnow instead of gettimeofday
+Daniel Stenberg (14 Dec 2014)
+- darwinssl: aprintf() to allocate the session key
   
   
-  Makes it build on windows
+  ... to avoid using a fixed memory size that risks being too large or too
+  small.
 
 
-- [Eric Hu brought this change]
+Marc Hoersken (14 Dec 2014)
+- curl_schannel: Improvements to memory re-allocation strategy
+  
+  - do not grow memory by doubling its size
+  - do not leak previously allocated memory if reallocation fails
+  - replace while-loop with a single check to make sure
+    that the requested amount of data fits into the buffer
+  
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1450
+  Reported-by: Warren Menzer
 
 
-  axtls: now done non-blocking
+Steve Holme (14 Dec 2014)
+- asyn-ares: We prefer use of 'CURLcode result'
 
 
-- [Eric Hu brought this change]
+Marc Hoersken (14 Dec 2014)
+- curl_schannel.c: Data may be available before connection shutdown
 
 
-  test2033: requires NTLM support
+Steve Holme (14 Dec 2014)
+- http2: Use 'CURLcode result' for curl result codes
 
 
-- KNOWN_BUGS: #82 failed build with Borland compiler
+- asyn-thread:  We prefer 'CURLcode result'
 
 
-- Curl_output_digest: support auth-int for empty entity body
+- smb: Fixed unnecessary initialisation of struct member variables
   
   
-  By always returning the md5 for an empty body when auth-int is asked
-  for, libcurl now at least sometimes does the right thing.
-  
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1235
-  Patched-by: Nach M. S.
+  There is no need to set the 'state' and 'result' member variables to
+  SMB_REQUESTING (0) and CURLE_OK (0) after the allocation via calloc()
+  as calloc() initialises the contents to zero.
 
 
-- multi_socket: reduce timeout inaccuracy margin
-  
-  Allow less room for "triggered too early" mistakes by applications /
-  timers on non-windows platforms. Starting now, we assume that a timeout
-  call is never made earlier than 3 milliseconds before the actual
-  timeout. This greatly improves timeout accuracy on Linux.
+- ntlm: Fixed return code for bad type-2 Target Info
   
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1228
-  Reported-by: Hang Su
+  Use CURLE_BAD_CONTENT_ENCODING for bad type-2 Target Info security
+  buffers just like we do for bad decodes.
 
 
-- cert_stuff: avoid double free in the PKCS12 code
+- ntlm: Remove unnecessary casts in readshort_le()
   
   
-  In the pkcs12 code, we get a list of x509 records returned from
-  PKCS12_parse but when iterating over the list and passing each to
-  SSL_CTX_add_extra_chain_cert() we didn't also properly remove them from
-  the "stack", which made them get freed twice (both in sk_X509_pop_free()
-  and then later in SSL_CTX_free).
-  
-  This isn't really documented anywhere...
+  I don't think both of my fix ups from yesterday were needed to fix the
+  compilation warning, so remove the one that I think is unnecessary and
+  let the next Android autobuild prove/disprove it.
+
+- curl_ntlm_msgs.c: Another attempt to fix compilation warning
   
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1236
-  Reported-by: Nikaiw
+  curl_ntlm_msgs.c:170: warning: conversion to 'short unsigned int' from
+                        'int' may alter its value
 
 
-- cert_stuff: remove code duplication in the pkcs12 logic
+Guenter Knauf (13 Dec 2014)
+- synctime.c: added own user-agent string.
 
 
-- [Aleksey Tulinov brought this change]
+Steve Holme (13 Dec 2014)
+- smb.c: Fixed line longer than 79 columns
 
 
-  axtls: honor disabled VERIFYHOST
+- curl_ntlm_msgs.c: Fixed compilation warning from commit 783b5c3b11
   
   
-  When VERIFYHOST == 0, libcurl should let invalid certificates to pass.
+  curl_ntlm_msgs.c:169: warning: conversion to 'short unsigned int' from
+                        'int' may alter its value
 
 
-- [Peter Gal brought this change]
+Guenter Knauf (13 Dec 2014)
+- mk-ca-bundle.pl: restored forced run again.
 
 
-  curl_easy_setopt.3: HTTP header with no content
+- synctime.c: removed another timeserver URL.
   
   
-  Update the documentation on how to specify a HTTP header with no
-  content.
+  worldtimeserver.com seems also no longer available.
 
 
-- RELEASE-NOTES: synced with 87cf677eca55
+- synctime.c: fixed timeserver URLs.
   
   
-  Added 11 bugs and 7 contributors
+  For getting the date header its not necessary to access special
+  pages or even CGI scripts - all pages including the main index
+  reply with the date header, therefore shortened URLs to domain.
+  Removed worldtime.com; added pool.ntp.org.
 
 
-- lib1500: remove bad check
-  
-  After curl_multi_wait() returns, this test checked that we got exactly
-  one file descriptor told to read from, but we cannot be sure that is
-  true. curl_multi_wait() will sometimes return earlier without any file
-  descriptor to handle, just just because it is a suitable time to call
-  *perform().
+Steve Holme (13 Dec 2014)
+- ftp.c: Fixed compilation warning when no verbose string support
   
   
-  This problem showed up with commit 29bf0598.
-  
-  Bug: http://curl.haxx.se/mail/lib-2013-06/0029.html
-  Reported-by: Fabian Keil
+  ftp.c:819: warning: unused parameter 'lineno'
 
 
-- tests/Makefile: typo in the perlcheck target
+- smb: Added state change functions to assist with debugging
   
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1239
-  Reported-by: Christian Weisgerber
+  For debugging purposes, and as per other protocols within curl, added
+  state change functions rather than changing the states directly.
 
 
-- test1230: verify CONNECT to a numerical ipv6-address
+- ntlm: Use short integer when decoding 16-bit values
 
 
-- sws: support extracting test number from CONNECT ipv6-address!
-  
-  If an ipv6-address is provided to CONNECT, the last hexadecimal group in
-  the address will be used as the test number! For example the address
-  "[1234::ff]" would be treated as test case 255.
+- RELEASE-NOTES: Synced with 6291a16b20
 
 
-- curl_multi_wait: only use internal timer if not -1
+- smtp.c: Fixed compilation warnings
   
   
-  commit 29bf0598aad5 introduced a problem when the "internal" timeout is
-  prefered to the given if shorter, as it didn't consider the case where
-  -1 was returned. Now the internal timeout is only considered if not -1.
+  smtp.c:2357 warning: adding 'size_t' (aka 'unsigned long') to a string
+              does not append to the string
+  smtp.c:2375 warning: adding 'size_t' (aka 'unsigned long') to a string
+              does not append to the string
+  smtp.c:2386 warning: adding 'size_t' (aka 'unsigned long') to a string
+              does not append to the string
   
   
-  Reported-by: Tor Arntsen
-  Bug: http://curl.haxx.se/mail/lib-2013-06/0015.html
+  Used array index notation instead.
 
 
-Dan Fandrich (3 Jun 2013)
-- libcurl-tutorial.3: added a section on IPv6
+- smb: Disable SMB when 64-bit integers are not supported
   
   
-  Also added a (correctly-escaped) backslash to the autoexec.bat
-  example file and a new Windows character device name with
-  a colon as examples of other characters that are special
-  and potentially dangerous (this reverts and reworks commit
-  7d8d2a54).
+  This fixes compilation issues with compilers that don't support 64-bit
+  integers through long long or __int64.
 
 
-Daniel Stenberg (3 Jun 2013)
-- curl_multi_wait: reduce timeout if the multi handle wants to
-  
-  If the multi handle's pending timeout is less than what is passed into
-  this function, it will now opt to use the shorter time anyway since it
-  is a very good hint that the handle wants to process something in a
-  shorter time than what otherwise would happen.
-  
-  curl_multi_wait.3 was updated accordingly to clarify
-  
-  This is the reason for bug #1224
+- ntlm: Disable NTLM v2 when 64-bit integers are not supported
   
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1224
-  Reported-by: Andrii Moiseiev
+  This fixes compilation issues with compilers that don't support 64-bit
+  integers through long long or __int64 which was introduced in commit
+  07b66cbfa4.
 
 
-- multi_runsingle: switch an if() condition for readability
+- ntlm: Allow NTLM2Session messages when USE_NTRESPONSES manually defined
   
   
-  ... because there's an identical check right next to it so using the
-  operators in the check in the same order increases readability.
+  Previously USE_NTLM2SESSION would only be defined automatically when
+  USE_NTRESPONSES wasn't already defined. Separated the two definitions
+  so that the user can manually set USE_NTRESPONSES themselves but
+  USE_NTLM2SESSION is defined automatically if they don't define it.
 
 
-Marc Hoersken (2 Jun 2013)
-- curl_schannel.c: Removed variable unused since 35874298e4
+- smtp.c: Fixed line longer than 79 columns
 
 
-- curl_setup.h: Fixed redefinition warning using mingw-w64
-
-Daniel Stenberg (30 May 2013)
-- multi_runsingle: add braces to clarify the code
-
-- libcurl-tutorial.3: remove incorrect backslash
-  
-  A single backslash in the content is not legal nroff syntax.
+- config-win32.h: Don't enable Windows Crypt API if using OpenSSL
   
   
-  Reported and fixed by: Eric S. Raymond
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1234
+  As the OpenSSL and NSS Crypto engines are prefered by the core NTLM
+  routines, to the Windows Crypt API, don't define USE_WIN32_CRYPT
+  automatically when either OpenSSL or NSS are in use - doing so would
+  disable NTLM2Session responses in NTLM type-3 messages.
 
 
-- curl_formadd.3: fixed wrong "end-marker" syntax
+- smtp: Fixed inappropriate free of the scratch buffer
   
   
-  Reported and fixed by: Eric S. Raymond
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1233
-
-- curl.1: clarify that --silent still outputs data
-
-- Digest auth: escape user names with \ or " in them
+  If the scratch buffer was allocated in a previous call to
+  Curl_smtp_escape_eob(), a new buffer not allocated in the subsequent
+  call and no action taken by that call, then an attempt would be made to
+  try and free the buffer which, by now, would be part of the data->state
+  structure.
   
   
-  When sending the HTTP Authorization: header for digest, the user name
-  needs to be escaped if it contains a double-quote or backslash.
+  This bug was introduced in commit 4bd860a001.
+
+- smtp: Fixed dot stuffing when EOL characters were at end of input buffers
   
   
-  Test 1229 was added to verify
+  Fixed a problem with the CRLF. detection when multiple buffers were
+  used to upload an email to libcurl and the line ending character(s)
+  appeared at the end of each buffer. This meant any lines which started
+  with . would not be escaped into .. and could be interpreted as the end
+  of transmission string instead.
   
   
-  Reported and fixed by: Nach M. S
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1230
-
-- [Mike Giancola brought this change]
-
-  ossl_recv: SSL_read() returning 0 is an error too
+  This only affected libcurl based applications that used a read function
+  and wasn't reproducible with the curl command-line tool.
   
   
-  SSL_read can return 0 for "not successful", according to the open SSL
-  documentation: http://www.openssl.org/docs/ssl/SSL_read.html
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1456
+  Assisted-by: Patrick Monnerat
 
 
-- [Mike Giancola brought this change]
+Daniel Stenberg (11 Dec 2014)
+- telnet: fix "cast increases required alignment of target type"
 
 
-  ossl_send: SSL_write() returning 0 is an error too
+- ntlm_wb_response: fix "statement not reached"
   
   
-  We found that in specific cases if the connection is abruptly closed,
-  the underlying socket is listed in a close_wait state. We continue to
-  call the curl_multi_perform, curl_mutli_fdset etc. None of these APIs
-  report the socket closed / connection finished.  Since we have cases
-  where the multi connection is only used once, this can pose a problem
-  for us. I've read that if another connection was to come in, curl would
-  see the socket as bad and attempt to close it at that time -
-  unfortunately, this does not work for us.
+  ... and I could use a break instead of a goto to end the loop.
   
   
-  I found that in specific situations, if SSL_write returns 0, curl did
-  not recognize the socket as closed (or errored out) and did not report
-  it to the application. I believe we need to change the code slightly, to
-  check if ssl_write returns 0. If so, treat it as an error - the same as
-  a negative return code.
-  
-  For OpenSSL - the ssl_write documentation is here:
-  http://www.openssl.org/docs/ssl/SSL_write.html
+  Bug: http://curl.haxx.se/mail/lib-2014-12/0089.html
+  Reported-by: Tor Arntsen
 
 
-- KNOWN_BUGS: curl -OJC- fails to resume
+Steve Holme (10 Dec 2014)
+- RELEASE-NOTES: Synced with 1cc5194337
   
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1169
+  Added some bug fixes that I had missed in previous synchronisations.
 
 
-- Curl_cookie_add: handle IPv6 hosts
+Daniel Stenberg (10 Dec 2014)
+- Curl_unix2addr: avoid using the variable name 'sun'
   
   
-  1 - don't skip host names with a colon in them in an attempt to bail out
-  on HTTP headers in the cookie file parser. It was only a shortcut anyway
-  and trying to parse a file with HTTP headers will still be handled, only
-  slightly slower.
+  I suspect this causes compile failures on Solaris:
   
   
-  2 - don't skip domain names based on number of dots. The original
-  netscape cookie spec had this oddity mentioned and while our code
-  decreased the check to only check for two, the existing cookie spec has
-  no such dot counting required.
-  
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1221
-  Reported-by: Stefan Neis
-
-- curl_easy_setopt.3: expand the PROGRESSFUNCTION section
-  
-  Explain the callback and its arguments better and with more descriptive
-  text.
-
-- tests: add test1394 file to the tarball
-
-- tarball: include the xmlstream example
+  Bug: http://curl.haxx.se/mail/lib-2014-12/0081.html
 
 
-- [David Strauss brought this change]
-
-  xmlstream: XML stream parsing example source code
+Steve Holme (10 Dec 2014)
+- url.c: Fixed compilation warning when USE_NTLM is not defined
   
   
-  Add an XML stream parsing example using Expat. Add missing ignore for
-  the binary from an unrelated example.
-
-- [YAMADA Yasuharu brought this change]
+  url.c:3078: warning: variable 'credentialsMatch' set but not used
 
 
-  cookies: only consider full path matches
-  
-  I found a bug which cURL sends cookies to the path not to aim at.
-  For example:
-  - cURL sends a request to http://example.fake/hoge/
-  - server returns cookie which with path=/hoge;
-    the point is there is NOT the '/' end of path string.
-  - cURL sends a request to http://example.fake/hogege/ with the cookie.
+- parsedate.c: Fixed compilation warning
   
   
-  The reason for this old "feature" is because that behavior is what is
-  described in the original netscape cookie spec:
-  http://curl.haxx.se/rfc/cookie_spec.html
+  parsedate.c:548: warning: 'parsed' may be used uninitialized in this
+                   function
   
   
-  The current cookie spec (RFC6265) clarifies the situation:
-  http://tools.ietf.org/html/rfc6265#section-5.2.4
-
-- [Eric Hu brought this change]
-
-  axtls: prevent memleaks on SSL handshake failures
+  As curl_getdate() returns -1 when parsedate() fails we can initialise
+  parsed to -1.
 
 
-- Revert "WIN32 MemoryTracking: track wcsdup() _wcsdup() and _tcsdup() usage"
+Daniel Stenberg (10 Dec 2014)
+- TODO: Cache negative name resolves
   
   
-  This reverts commit 8ec2cb5544b86306b702484ea785b6b9596562ab.
-  
-  We don't have any code anywhere in libcurl (or the curl tool) that use
-  wcsdup so there's no such memory use to track. It seems to cause mild
-  problems with the Borland compiler though that we may avoid by reverting
-  this change again.
-  
-  Bug: http://curl.haxx.se/mail/lib-2013-05/0070.html
-
-- RELEASE-NOTES: synced with ae26ee3489588f0
+  Worth exploring
 
 
-Guenter Knauf (11 May 2013)
-- Updated zlib version in build files.
-
-Daniel Stenberg (9 May 2013)
-- [Renaud Guillard brought this change]
+- ldap: check Curl_client_write() return codes
+  
+  There might be one or two memory leaks left in the error paths.
 
 
-  OS X framework: fix invalid symbolic link
+- ldap: rename variables to comply to curl standards
 
 
-Kamil Dudka (9 May 2013)
-- [Daniel Stenberg brought this change]
+Dan Fandrich (10 Dec 2014)
+- sws.c: Fixed 'rc' may be used uninitialized warning
 
 
-  nss: give PR_INTERVAL_NO_WAIT instead of -1 to PR_Recv/PR_Send
+- cookies: Improved OOM handling in cookies
   
   
-  Reported by: David Strauss
-  Bug: http://curl.haxx.se/mail/lib-2013-05/0088.html
+  This fixes the test 506 torture test. The internal cookie API really
+  ought to be improved to separate cookie parsing errors (which may be
+  ignored) with OOM errors (which should be fatal).
 
 
-Daniel Stenberg (8 May 2013)
-- libtest: gitignore more binary files
-
-- servercert: allow empty subject
+Guenter Knauf (9 Dec 2014)
+- synctime.c: fixed user-agent setting.
   
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1220
-  Patch by: John Gardiner Myers
-
-- [Steve Holme brought this change]
-
-  tests: Added new SMTP tests to verify commit 99b40451836d
+  Some websites meanwhile refuse to reply to requests from ancient
+  browsers like IE6, therefore I've comment out this setting, but
+  also fixed the string to now fake IE8 if someone enables it.
 
 
-- runtests.pl: support nonewline="yes" in client/stdin sections
+Daniel Stenberg (9 Dec 2014)
+- smb: fix unused return code warning
 
 
-- build: fixed unit1394 for debug and metlink builds
+Patrick Monnerat (9 Dec 2014)
+- Curl_client_write() & al.: chop long data, convert data only once.
 
 
-Kamil Dudka (6 May 2013)
-- unit1394.c: plug the curl tool unit test in
+Guenter Knauf (9 Dec 2014)
+- VC build: added sspi define for winssl-zlib builds.
 
 
-- [Jared Jennings brought this change]
+Daniel Stenberg (9 Dec 2014)
+- schannel_recv: return the correct code
+  
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1462
+  Reported-by: Tae Hyoung Ahn
 
 
-  unit1394.c: basis of a unit test for parse_cert_parameter()
+- http2: avoid logging neg "failure" if h2 was not requested
 
 
-- src/Makefile.am: build static lib for unit tests if enabled
+- openldap: do not ignore Curl_client_write() return codes
 
 
-- tool_getparam: ensure string termination in parse_cert_parameter()
+- compile: warn on unused return code from Curl_client_write()
 
 
-- tool_getparam: fix memleak in handling the -E option
+Patrick Monnerat (8 Dec 2014)
+- SMB: Fix a data size mismatch that broke SMB on big-endian platforms
 
 
-- tool_getparam: describe what parse_cert_parameter() does
+Steve Holme (7 Dec 2014)
+- smb: Fixed Windows autoconf builds following commit eb88d778e7
   
   
-  ... and de-duplicate the code initializing *passphrase
-
-- curl.1: document escape sequences recognized by -E
+  As Windows based autoconf builds don't yet define USE_WIN32_CRYPTO
+  either explicitly through --enable-win32-cypto or automatically on
+  _WIN32 based platforms, subsequent builds broke with the following
+  error message:
+  
+  "Can't compile NTLM support without a crypto library."
 
 
-- [Jared Jennings brought this change]
+- RELEASE-NOTES: Synced with 526603ff05
 
 
-  curl -E: allow to escape ':' in cert nickname
+- [Bill Nagel brought this change]
 
 
-Marc Hoersken (5 May 2013)
-- curl_schannel.c: Fixed invalid memory access during SSL shutdown
+  smb: Build with SSPI enabled
+  
+  Build SMB/CIFS protocol support when SSPI is enabled.
 
 
-Steve Holme (4 May 2013)
-- smtp: Fix trailing whitespace warning
+- [Bill Nagel brought this change]
 
 
-- smtp: Fix compilation warning
+  ntlm: Use Windows Crypt API
   
   
-  comparison between signed and unsigned integer expressions
-
-- RELEASE-NOTES: synced with 92ef5f19c801
+  Allow the use of the Windows Crypt API for NTLMv1 functions.
 
 
-- smtp: Updated RFC-2821 references to RFC-5321
+Dan Fandrich (7 Dec 2014)
+- cookie.c: Refactored cleanup code to simplify
+  
+  Also, fixed the outdated comments on the cookie API.
 
 
-- smtp: Fixed sending of double CRLF caused by first in EOB
+- get_url_file_name: Fixed crash on OOM on debug build
   
   
-  If the mail sent during the transfer contains a terminating <CRLF> then
-  we should not send the first <CRLF> of the EOB as specified in RFC-5321.
+  This caused a null-pointer dereference which caused a few dozen
+  torture tests to fail.
+
+Steve Holme (6 Dec 2014)
+- sws.c: Fixed compilation warning
   
   
-  Additionally don't send the <CRLF> if there is "no mail data" as the
-  DATA command already includes it.
+  sws.c:2191 warning: 'rc' may be used uninitialized in this function
 
 
-- tests: Corrected MAIL SIZE for CRLF line endings
+- ftp.c: Fixed compilation warnings when proxy support disabled
   
   
-  ... which was missed in commit: f5c3d9538452
+  ftp.c:1827 warning: unused parameter 'newhost'
+  ftp.c:1827 warning: unused parameter 'newport'
 
 
-- tests: Corrected infilesize for CRLF line endings
+- smb: Fixed a problem with large file transfers
   
   
-  ... which was missed in commit: f5c3d9538452
+  Fixed an issue with the message size calculation where the raw bytes
+  from the buffer were interpreted as signed values rather than unsigned
+  values.
+  
+  Reported-by: Gisle Vanem
+  Assisted-by: Bill Nagel
 
 
-- tests: Corrected test1406 to be RFC2821 compliant
+- smb: Moved the URL decoding into a separate function
 
 
-- tests: Corrected test1320 to be RFC2821 compliant
+- smb: Fixed URL encoded URLs not working
 
 
-- tests: Corrected typo in test909
-  
-  Introduced in commit: 514817669e9e
+- Makefile.inc: Added our standard header and updated file formatting
 
 
-- tests: Corrected test909 to be RFC2821 compliant
+- Makefile.inc: Updated file formatting
+  
+  Aligned continuation character and used space as the separator
+  character as per other makefile files.
 
 
-- tests: Updated test references to 909 from 1411
+- curl_md4.h: Updated copyright year following recent edit
   
   
-  ...and removed references to libcurl and test1406.
+  ...and minor layout adjustment.
 
 
-- tests: Renamed test1411 to test909 as this is a main SMTP test
+Patrick Monnerat (5 Dec 2014)
+- SMB: Fix big endian problems. Make it OS/400 aware.
 
 
-Daniel Stenberg (1 May 2013)
-- [Lars Johannesen brought this change]
+- OS400: enable NTLM authentication
 
 
-  bindlocal: move brace out of #ifdef
-  
-  The code within #ifdef HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID wrongly had two
-  closing braces when it should only have one, so builds without that
-  define would fail.
+Steve Holme (5 Dec 2014)
+- multi.c: Fixed compilation warning
   
   
-  Bug: http://curl.haxx.se/mail/lib-2013-05/0000.html
+  multi.c:2695: warning: declaration of `exp' shadows a global declaration
 
 
-Steve Holme (30 Apr 2013)
-- smtp: Tidy up to move the eob counter to the per-request structure
-  
-  Move the eob counter from the smtp_conn structure to the SMTP structure
-  as it is associated with a SMTP payload on a per-request basis.
+Guenter Knauf (5 Dec 2014)
+- build: updated dependencies in makefiles.
 
 
-- TODO: Updated following the addition of CURLOPT_SASL_IR
+Steve Holme (5 Dec 2014)
+- sasl: Corrected formatting of function descriptions
 
 
-- smtp: Fixed unknown percentage complete in progress bar
-  
-  The curl command line utility would display the the completed progress
-  bar with a percentage of zero as the progress routines didn't know the
-  size of the transfer.
+- sasl_gssapi: Added missing function description
 
 
-Daniel Stenberg (29 Apr 2013)
-- ftpserver: silence warnings
+- RELEASE-NOTES: Provided better descriptions
   
   
-  Fix regressions in commit b56e3d43e5d. Make @data local and filter off
-  non-numerical digits from $testno in STATUS_imap.
+  As it is often difficult to choose the best description for a single
+  feature when it spans many commits, updated the descriptions for the
+  recent SMB/CIFS protocol and GSS-API additions.
 
 
-Steve Holme (29 Apr 2013)
-- ftpserver.pl: Corrected the imap LOGIN response
-  
-  ...to be more realistic and consistent with the other imap responses.
+- sasl_sspi: Corrected some typos
 
 
-- tests: Added imap STATUS command test
-
-- tests: Corrected the SMTP tests to be RFC2821 compliant
-  
-  The emails that are sent to the server during these tests were
-  incorrectly formatted as they contained one or more LF terminated lines
-  rather than being CRLF terminated as per Section 2.3.7 of RFC-2821.
+- sasl_sspi: Don't use hard coded sizes in Kerberos V5 security data
   
   
-  This wasn't a problem for the test suite as the <stdin> data matched the
-  <upload> data but anyone using these tests as reference would be sending
-  incorrect data to a server.
+  Don't use a hard coded size of 4 for the security layer and buffer size
+  in Curl_sasl_create_gssapi_security_message(), instead, use sizeof() as
+  we have done in the sasl_gssapi module.
 
 
-- email: Tidy up of *_perform_authenticate()
+- sasl_sspi: Free the Kerberos V5 challenge as soon as we're done with it
   
   
-  Removed the hard returns from imap and pop3 by using the same style for
-  sending the authentication string as smtp. Moved the "Other mechanisms
-  not supported" check in smtp to match that of imap and pop3 to provide
-  consistency between the three email protocols.
+  Reduced the amount of free's required for the decoded challenge message
+  in Curl_sasl_create_gssapi_security_message() as a result of coding it
+  differently in the sasl_gssapi module.
 
 
-- smtp: Updated limit check to be more readable like the check in pop3
+- gssapi: Corrected typo in comments
 
 
-- pop3: Added 255 octet limit check when sending initial response
-  
-  Added 255 octet limit check as per Section 4. Paragraph 8 of RFC-5034.
+- sasl_gssapi: Added body to Curl_sasl_create_gssapi_security_message()
 
 
-- DOCS: Corrected line length of recent Secure Transport changes
+Daniel Stenberg (4 Dec 2014)
+- [Stefan Bühler brought this change]
 
 
-Nick Zitzmann (27 Apr 2013)
-- darwinssl: add TLS crypto authentication
+  http_perhapsrewind: don't abort CONNECT requests
   
   
-  Users using the Secure Transport (darwinssl) back-end can now use a
-  certificate and private key to authenticate with a site using TLS. Because
-  Apple's security system is based around the keychain and does not have any
-  non-public function to create a SecIdentityRef data structure from data
-  loaded outside of the Keychain, the certificate and private key have to be
-  loaded into the Keychain first (using the certtool command line tool or
-  the Security framework's C API) before we can find it and use it.
+  ...they never have a body
 
 
-Steve Holme (27 Apr 2013)
-- Corrected version numbers after bump
+- [Stefan Bühler brought this change]
 
 
-Daniel Stenberg (27 Apr 2013)
-- bump version
+  HTTP: Free (proxy)userpwd for NTLM/Negotiate after sending a request
   
   
-  Since we're adding new stuff, the next release will bump the minor
-  version and we're looking forward to 7.31.0
+  Sending NTLM/Negotiate header again after successful authentication
+  breaks the connection with certain Proxies and request types (POST to MS
+  Forefront).
 
 
-Steve Holme (27 Apr 2013)
-- RELEASE-NOTES: synced with f4e6e201b146
+- [Stefan Bühler brought this change]
 
 
-- DOCS: Updated following the addition of CURLOPT_SASL_IR
+  HTTP: don't abort connections with pending Negotiate authentication
   
   
-  Documented the the option in curl_easy_setopt() and added it to
-  symbols-in-versions.
+  ... similarly to how NTLM works as Negotiate is in fact often NTLM with
+  another name.
 
 
-- tests: Corrected command line arguments in test907 and test908
+- [Stefan Bühler brought this change]
 
 
-- tests: Added SMTP AUTH with initial response tests
+  fix gdb libtool invocation path
 
 
-- tests: Updated SMTP tests to decouple client initial response
-  
-  Updated test903 and test904 following the addition of CURLOPT_SASL_IR
-  as the default behaviour of SMTP AUTH responses is now to not include
-  the initial response. New tests with --sasl-ir support to follow.
+Steve Holme (4 Dec 2014)
+- sasl_gssapi: Fixed missing include from commit d3cca934ee
 
 
-- imap: Added support for overriding the SASL initial response
-  
-  In addition to checking for the SASL-IR capability the user can override
-  the sending of the client's initial response in the AUTHENTICATION
-  command with the use of CURLOPT_SASL_IR should the server erroneously
-  not report SASL-IR when it does support it.
-
-- smtp: Added support for disabling the SASL initial response
-  
-  Updated the default behaviour of sending the client's initial response in the AUTH
-  command to not send it and added support for CURLOPT_SASL_IR to allow the user to
-  specify including the response.
-  
-  Related Bug: http://curl.haxx.se/mail/lib-2012-03/0114.html
-  Reported-by: Gokhan Sengun
+Daniel Stenberg (4 Dec 2014)
+- [Jay Satiro brought this change]
 
 
-- pop3: Added support for enabling the SASL initial response
+  examples: remove sony.com from 10-at-a-time
   
   
-  Allowed the user to specify whether to send the client's intial response
-  in the AUTH command via CURLOPT_SASL_IR.
+  Prior to this change the 10-at-a-time example showed CURLE_RECV_ERROR
+  for the sony website because it ends the connection when the request is
+  missing a user agent.
 
 
-- sasl-ir: Added --sasl-ir option to curl command line tool
+Steve Holme (4 Dec 2014)
+- sasl_gssapi: Fixed missing decoding debug failure message
 
 
-- sasl-ir: Added CURLOPT_SASL_IR to enable/disable the SASL initial response
+- sasl_gssapi: Fixed honouring of no mutual authentication
 
 
-Daniel Stenberg (26 Apr 2013)
-- curl_easy_init: use less mallocs
-  
-  By introducing an internal alternative to curl_multi_init() that accepts
-  parameters to set the hash sizes, easy handles will now use tiny socket
-  and connection hash tables since it will only ever add a single easy
-  handle to that multi handle.
-  
-  This decreased the number mallocs in test 40 (which is a rather simple
-  and typical easy interface use case) from 1142 to 138. The maximum
-  amount of memory allocated used went down from 118969 to 78805.
+- sasl_sspi: Added more Kerberos V5 decoding debug failure messages
 
 
-Steve Holme (26 Apr 2013)
-- ftpserver.pl: Fixed imap logout confirmation data
-  
-  An IMAP server should response with the BYE continuation response before
-  confirming the LOGOUT command was successful.
+Daniel Stenberg (4 Dec 2014)
+- [Anthon Pang brought this change]
 
 
-Daniel Stenberg (26 Apr 2013)
-- ftp_state_pasv_resp: connect through proxy also when set by env
-  
-  When connecting back to an FTP server after having sent PASV/EPSV,
-  libcurl sometimes didn't use the proxy properly even though the proxy
-  was used for the initial connect.
+  docs: Fix FAILONERROR typos
   
   
-  The function wrongly checked for the CURLOPT_PROXY variable to be set,
-  which made it act wrongly if the proxy information was set with an
-  environment variable.
+  It returns error for >= 400 HTTP responses.
   
   
-  Added test case 711 to verify (based on 707 which uses --socks5). Also
-  added test712 to verify another variation of setting the proxy: with
-  --proxy socks5://
-  
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1218
-  Reported-by: Zekun Ni
+  Bug: https://github.com/bagder/curl/pull/129
 
 
-Kamil Dudka (26 Apr 2013)
-- [Zdenek Pavlas brought this change]
+- [Peter Wu brought this change]
 
 
-  url: initialize speed-check data for file:// protocol
+  tool: fix CURLOPT_UNIX_SOCKET_PATH in --libcurl output
   
   
-  ... in order to prevent an artificial timeout event based on stale
-  speed-check data from a previous network transfer.  This commit fixes
-  a regression caused by 9dd85bced56f6951107f69e581c872c1e7e3e58e.
+  Mark CURLOPT_UNIX_SOCKET_PATH as string to ensure that it ends up as
+  option in the file generated by --libcurl.
   
   
-  Bug: https://bugzilla.redhat.com/906031
+  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
 
 
-Daniel Stenberg (25 Apr 2013)
-- test709: clarify the test in the name
+- [Peter Wu brought this change]
 
 
-- sshserver: disable StrictHostKeyChecking
+  opts: fix CURLOPT_UNIX_SOCKET_PATH formatting
   
   
-  I couldn't figure out why the host key logic isn't working, but having
-  it set to yes prevents my SSH-based test cases to run. I also don't see
-  a strong need to use strict host key checking on this test server.
+  Add .nf and .fi such that the code gets wrapped in a pre on the web.
+  Fixed grammar, fixed formatting of the "See also" items.
   
   
-  So I disabled it.
+  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
 
 
-- runtests: log more commands in verbose mode
-  
-  ... to aid tracking down failures
+Patrick Monnerat (4 Dec 2014)
+- OS400: enable Unix sockets.
 
 
-Steve Holme (25 Apr 2013)
-- TODO: Corrected copy/paste typo
+Daniel Stenberg (3 Dec 2014)
+- RELEASE-NOTES: synced with b216427e73b5e9
 
 
-- TODO: Added new ideas for future SMTP, POP3 and IMAP features
+- opts: added CURLOPT_UNIX_SOCKET_PATH to Makefile.am
 
 
-- TODO: Updated following the addition of ;auth=<MECH> support
+- updateconninfo: clear destination struct before getsockname()
+  
+  Otherwise we may read uninitialized bytes later in the unix-domain
+  sockets case.
 
 
-- DOCS: Minor rewording / clarification of host name protocol detection
+- curl.1: added --unix-socket
 
 
-- RELEASE-NOTES: synced with a8c92cb60890
+- [Peter Wu brought this change]
 
 
-- DOCS: Added reference to IETF draft for SMTP URL Interface
+  tool: add --unix-socket option
   
   
-  ...when mentioning login options. Additional minor clarification of
-  "Windows builds" to be "Windows builds with SSPI"as a way of enabling
-  NTLM as Windows builds may be built with OpenSSL to enable NTLM or
-  without NTLM support altogether.
-
-Linus Nielsen Feltzing (23 Apr 2013)
-- HISTORY: Fix spelling error.
-
-Steve Holme (23 Apr 2013)
-- DOCS: Reworked the scheme calculation explanation under CURLOPT_URL
+  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
 
 
-- url: Added smtp and pop3 hostnames to the protocol detection list
+- [Peter Wu brought this change]
 
 
-Daniel Stenberg (23 Apr 2013)
-- HISTORY: correct some years/dates
+  libcurl: add UNIX domain sockets support
   
   
-  Thanks to archive.org's wayback machine I updated this document with
-  some facts from the early httpget/urlget web page:
+  The ability to do HTTP requests over a UNIX domain socket has been
+  requested before, in Apr 2008 [0][1] and Sep 2010 [2]. While a
+  discussion happened, no patch seems to get through. I decided to give it
+  a go since I need to test a nginx HTTP server which listens on a UNIX
+  domain socket.
   
   
-  http://web.archive.org/web/19980216125115/http://www.inf.ufrgs.br/~sagula/urlget.html
-
-- [Alessandro Ghedini brought this change]
-
-  tests: add test1511 to check timecond clean-up
+  One patch [3] seems to make it possible to use the
+  CURLOPT_OPENSOCKETFUNCTION function to gain a UNIX domain socket.
+  Another person wrote a Go program which can do HTTP over a UNIX socket
+  for Docker[4] which uses a special URL scheme (though the name contains
+  cURL, it has no relation to the cURL library).
   
   
-  Verifies the timecond fix in commit c49ed0b6c0f
-
-- [Alessandro Ghedini brought this change]
-
-  getinfo.c: reset timecond when clearing session-info variables
+  This patch considers support for UNIX domain sockets at the same level
+  as HTTP proxies / IPv6, it acts as an intermediate socket provider and
+  not as a separate protocol. Since this feature affects network
+  operations, a new feature flag was added ("unix-sockets") with a
+  corresponding CURL_VERSION_UNIX_SOCKETS macro.
   
   
-  Bug: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=705783
-  Reported-by: Ludovico Cavedon <cavedon@debian.org>
-
-Steve Holme (22 Apr 2013)
-- DOCS: Added information about login options to CURLOPT_USERPWD
-
-- DOCS: Added information about login options in the URL
-
-- url: Fixed missing length check in parse_proxy()
+  A new CURLOPT_UNIX_SOCKET_PATH option is added and documented. This
+  option enables UNIX domain sockets support for all requests on the
+  handle (replacing IP sockets and skipping proxies).
   
   
-  Commit 11332577b3cb removed the length check that was performed by the
-  old scanf() code.
-
-- url: Fixed crash when no username or password supplied for proxy
+  A new configure option (--enable-unix-sockets) and CMake option
+  (ENABLE_UNIX_SOCKETS) can disable this optional feature. Note that I
+  deliberately did not mark this feature as advanced, this is a
+  feature/component that should easily be available.
   
   
-  Fixed an issue in parse_proxy(), introduced in commit 11332577b3cb,
-  where an empty username or password (For example: http://:@example.com)
-  would cause a crash.
-
-- url: Removed unused text length constants
+   [0]: http://curl.haxx.se/mail/lib-2008-04/0279.html
+   [1]: http://daniel.haxx.se/blog/2008/04/14/http-over-unix-domain-sockets/
+   [2]: http://sourceforge.net/p/curl/feature-requests/53/
+   [3]: http://curl.haxx.se/mail/lib-2008-04/0361.html
+   [4]: https://github.com/Soulou/curl-unix-socket
+  
+  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
 
 
-- url: Updated proxy URL parsing to use parse_login_details()
+- [Peter Wu brought this change]
 
 
-- url: Tidy up of setstropt_userpwd() parameters
+  tests: add two HTTP over UNIX socket tests
   
   
-  Updated the naming convention of the login parameters to match those of
-  other functions.
-
-- url: Tidy up of code and comments following recent changes
+  test1435: a simple test that checks whether a HTTP request can be
+  performed over the UNIX socket. The hostname/port are interpreted
+  by sws and should be ignored by cURL.
   
   
-  Tidy up of variable names and comments in setstropt_userpwd() and
-  parse_login_details().
-
-- url: Simplified setstropt_userpwd() following recent changes
+  test1436: test for the ability to do two requests to the same host,
+  interleaved with one to a different hostname.
   
   
-  There is no need to perform separate clearing of data if a NULL option
-  pointer is passed in. Instead this operation can be performed by simply
-  not calling parse_login_details() and letting the rest of the code do
-  the work.
+  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
 
 
-- url: Correction to scope of if statements when setting data
+- [Peter Wu brought this change]
 
 
-- url: Fixed memory leak in setstropt_userpwd()
+  tests: add HTTP UNIX socket server testing support
   
   
-  setstropt_userpwd() was calling setstropt() in commit fddb7b44a79d to
-  set each of the login details which would duplicate the strings and
-  subsequently cause a memory leak.
-
-- RELEASE-NOTES: synced with d535c4a2e1f7
+  The variable `$ipvnum` can now contain "unix" besides the integers 4
+  and 6 since the variable. Functions which receive this parameter
+  have their `$port` parameter renamed to `$port_or_path` to support a
+  path to the UNIX domain socket (as a "port" is only meaningful for TCP).
+  
+  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
 
 
-- url: Added overriding of URL login options from CURLOPT_USERPWD
+- [Peter Wu brought this change]
 
 
-- tool_paramhlp: Fixed options being included in username
+  sws: try to remove socket and retry bind
   
   
-  Fix to prevent the options from being displayed when curl requests the
-  user's password if the following command line is specified:
+  If sws is killed it might leave a stale socket file on the filesystem
+  which would cause an EADDRINUSE error. After this patch, it is checked
+  whether the socket is really stale and if so, the socket file gets
+  removed and another bind is executed.
   
   
-  --user username;options
+  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+
+- [Peter Wu brought this change]
 
 
-- url: Added support for parsing login options from the CURLOPT_USERPWD
+  sws: add UNIX domain socket support
   
   
-  In addition to parsing the optional login options from the URL, added
-  support for parsing them from CURLOPT_USERPWD, to allow the following
-  supported command line:
+  This extends sws with a --unix-socket option which causes the port to
+  be ignored (as the server now listens on the path specified by
+  --unix-socket). This feature will be available in the following patch
+  that enables checking for UNIX domain socket support.
   
   
-  --user username:password;options
-
-- url: Added bounds checking to parse_login_details()
+  Proxy support (CONNECT) is not considered nor tested. It does not make
+  sense anyway, first connecting through a TCP proxy, then let that TCP
+  proxy connect to a UNIX socket.
   
   
-  Added bounds checking when searching for the separator characters within
-  the login string as this string may not be NULL terminated (For example
-  it is the login part of a URL). We do this in preference to allocating a
-  new string to copy the login details into which could then be passed to
-  parse_login_details() for performance reasons.
-
-- url: Added size_t cast to pointer based length calculations
+  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
 
 
-- url: Corrected minor typo in comment
+- [Peter Wu brought this change]
 
 
-Daniel Stenberg (18 Apr 2013)
-- CURL_CHECK_CA_BUNDLE: don't check for paths when cross-compiling
+  sws: restrict TCP_NODELAY to IP sockets
   
   
-  When cross-compiling we can't scan and detect existing files or paths.
+  TCP_NODELAY does not make sense for Unix sockets, so enable it only if
+  the socket is using IP.
   
   
-  Bug: http://curl.haxx.se/mail/lib-2013-04/0294.html
+  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
 
 
-- [Ishan SinghLevett brought this change]
+Dan Fandrich (3 Dec 2014)
+- [Dave Reisner brought this change]
 
 
-  usercertinmem.c: add example showing user cert in memory
-  
-  Relies on CURLOPT_SSL_CTX_FUNCTION, which is OpenSSL specific
+  curl.1: fix trivial typo
 
 
-Steve Holme (18 Apr 2013)
-- url: Fix chksrc longer than 79 columns warning
+Steve Holme (3 Dec 2014)
+- sasl_gssapi: Added body to Curl_sasl_create_gssapi_user_message()
 
 
-- url: Fix incorrect variable type for result code
+- sasl_gssapi: Added body to Curl_sasl_gssapi_cleanup()
 
 
-- url: Fix compiler warning
+- sasl_gssapi: Added Curl_sasl_build_gssapi_spn() function
   
   
-  signed and unsigned type in conditional expression
+  Added helper function for returning a GSS-API compatible SPN.
 
 
-- url: Moved parsing of login details out of parse_url_login()
+Daniel Stenberg (3 Dec 2014)
+- NSS: enable the CAPATH option
   
   
-  Separated the parsing of login details from the processing of them in
-  parse_url_login() ready for use by setstropt_userpwd().
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1457
+  Patch-by: Tomasz Kojm
 
 
-- url: Re-factored set_userpass() and parse_url_userpass()
-  
-  Re-factored these functions to reflect their new behaviour following the
-  addition of login options.
+Steve Holme (3 Dec 2014)
+- sasl_gssapi: Enable USE_KERBEROS5 for GSS-API based builds
 
 
-- url: Reworked URL parsing to allow overriding by CURLOPT_USERPWD
+- sasl_gssapi: Added GSS-API based Kerberos V5 variables
 
 
-Daniel Stenberg (18 Apr 2013)
-- maketgz: make bzip2 creation work with Parallel BZIP2 too
+- sws.c: Fixed compilation warning when IPv6 is disabled
   
   
-  Apparently the previous usage didn't work with that implementation,
-  while this updated version works with at least both Parallel BZIP2
-  v1.1.8 and regular bzip "Version 1.0.6, 6-Sept-2010".
+  sws.c:69: warning: comma at end of enumerator list
 
 
-Linus Nielsen Feltzing (18 Apr 2013)
-- Add tests/http_pipe.py to the tarball build
+- sasl_gssapi: Made log_gss_error() a common GSS-API function
+  
+  Made log_gss_error() a common function so that it can be used in both
+  the http_negotiate code as well as the curl_sasl_gssapi code.
 
 
-Steve Holme (16 Apr 2013)
-- smtp: Re-factored all perform based functions
+- sasl_gssapi: Introduced GSS-API based SASL module
   
   
-  Standardised the naming of all perform based functions to be in the form
-  smtp_perform_something().
+  Added the initial version of curl_sasl_gssapi.c and updated the project
+  files in preparation for adding GSS-API based Kerberos V5 support.
 
 
-- smtp: Added description comments to all perform based functions
+- smb: Don't try to connect with empty credentials
+  
+  On some platforms curl would crash if no credentials were used. As such
+  added detection of such a use case to prevent this from happening.
+  
+  Reported-by: Gisle Vanem
 
 
-- smtp: Moved smtp_quit() to be with the other perform functions
+- smb.c: Coding policing of pointer usage
 
 
-- smtp: Moved smtp_rcpt_to() to be with the other perform functions
+- configure: Fixed inclusion of SMB when no crypto engines available
 
 
-- smtp: Moved smtp_mail() to be with the other perform functions
+Guenter Knauf (1 Dec 2014)
+- build: in Makefile.m32 simplified autodetection.
 
 
-Daniel Stenberg (16 Apr 2013)
-- [Wouter Van Rooy brought this change]
+Daniel Stenberg (30 Nov 2014)
+- [Peter Wu brought this change]
 
 
-  curl-config: don't output static libs when they are disabled
+  sws: move away from IPv4/IPv4-only assumption
   
   
-  Curl-config outputs static libraries even when they are disabled in
-  configure.
+  Instead of depending the socket domain type on use_ipv6, specify the
+  domain type (AF_INET / AF_INET6) as variable. An enum is used here with
+  switch to avoid compiler warnings in connect_to, complaining that rc
+  is possibly undefined (which is not possible as socket_domain is
+  always set).
   
   
-  This causes problems with the build of pycurl.
-
-- [Dave Reisner brought this change]
-
-  docs/libcurl: fix formatting in manpage
+  Besides abstracting the socket type, make the debugging messages be
+  independent on IP (introduce location_str which points to "port XXXXX").
+  Rename "ipv_inuse" to "socket_type" and tighten the scope (main).
   
   
-  Commit c3ea3eb6 introduced some minor cosmetic errors in
-  curl_mutli_socket_action(3).
+  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
 
 
-- [Paul Howarth brought this change]
+- [Peter Wu brought this change]
 
 
-  Add extra libs for lib1900 and lib2033 test programs
+  lib/connect: restrict IP/TCP options to said sockets
   
   
-  These are needed in cases where clock_gettime is used, from librt.
-
-Dan Fandrich (15 Apr 2013)
-- FAQ: mention that the network connection can be monitored
+  This patch prepares for adding UNIX domain sockets support.
   
   
-  Also note the prohibition on sharing handles across threads.
-
-Steve Holme (15 Apr 2013)
-- pop3: Added missing comment for pop3_state_apop_resp()
-
-- smtp: Updated the coding style of smtp_state_servergreet_resp()
+  TCP_NODELAY and TCP_KEEPALIVE are specific to TCP/IP sockets, so do not
+  apply these to other socket types. bindlocal only works for IP sockets
+  (independent of TCP/UDP), so filter that out too for other types.
   
   
-  Updated the coding style, in this function, to be consistant with other
-  response functions rather then performing a hard return on failure.
+  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
 
 
-- pop3: Updated the coding style of pop3_state_servergreet_resp()
+- smb.c: use size_t as input argument types for msg sizes
   
   
-  Updated the coding style, in this function, to be consistent with other
-  response functions rather then performing a hard return on failure.
+  This fixes warnings about conversions to int
 
 
-- pop3: Re-factored all perform based functions
-  
-  Standardised the naming of all perform based functions to be in the form
-  pop3_perform_something() following the changes made to IMAP.
+Steve Holme (30 Nov 2014)
+- version: The next release will become 7.40.0
 
 
-- pop3: Added description comments to all perform based functions
+- [Bill Nagel brought this change]
 
 
-- pop3: Moved pop3_quit() to be with the other perform functions
+  docs: Updated for the SMB protocol
+  
+  This patch updates the documentation for the SMB/CIFS protocol.
 
 
-- pop3: Moved pop3_command() to be with the other perform functions
+- curl tool: Exclude SMB from the protocol redirect
   
   
-  Started to apply the same tidy up to the POP3 code as applied to the
-  IMAP code in the 7.30.0 release.
+  As local files could be accessed through \\localhost\c$.
 
 
-- RELEASE-NOTES: Removed erroneous spaces
+- [Bill Nagel brought this change]
 
 
-- RELEASE-NOTES: synced with 8723cade21fb
+  curl tool: Enable support for the SMB protocol
+  
+  This patch enables SMB/CIFS support in the curl command-line tool.
 
 
-- smtp: Added support for ;auth=<mech> in the URL
+- smb.c: Fixed compilation warnings
   
   
-  Added support for specifying the preferred authentication mechanism in
-  the URL as per Internet-Draft 'draft-earhart-url-smtp-00'.
+  smb.c:398: warning: comparison of integers of different signs:
+             'ssize_t' (aka 'long') and 'unsigned long'
+  smb.c:443: warning: comparison of integers of different signs:
+             'ssize_t' (aka 'long') and 'unsigned long'
 
 
-- pop3: Reworked authentication type constants
+- libcurl: Exclude SMB from the protocol redirect
   
   
-  ... to use left-shifted values, like those defined in curl.h, rather
-  than 16-bit hexadecimal values.
+  As local files could be accessed through \\localhost\c$.
 
 
-- pop3: Small consistency tidy up
+- [Bill Nagel brought this change]
 
 
-- pop3: Added support for ;auth=<mech> in the URL
+  libcurl: Enable support for the SMB protocol
   
   
-  Added support for specifying the preferred authentication type and SASL
-  mechanism in the URL as per RFC-2384.
+  This patch enables SMB/CIFS support in libcurl.
 
 
-- imap: Added support for ;auth=<mech> in the URL
+- smb.c: Fixed compilation warnings
   
   
-  Added support for specifying the preferred authentication mechanism in
-  the URL as per RFC-5092.
+  smb.c:322: warning: conversion to 'short unsigned int' from 'unsigned
+             int' may alter its value
+  smb.c:323: warning: conversion to 'short unsigned int' from 'unsigned
+             int' may alter its value
+  smb.c:482: warning: conversion to 'short unsigned int' from 'int' may
+             alter its value
+  smb.c:521: warning: conversion to 'unsigned int' from 'curl_off_t' may
+             alter its value
+  smb.c:549: warning: conversion to 'unsigned int' from 'curl_off_t' may
+             alter its value
+  smb.c:550: warning: conversion to 'short unsigned int' from 'int' may
+             alter its value
 
 
-- sasl: Reworked SASL mechanism constants
+- smb.c: Renamed SMB command message variables to avoid compiler warnings
   
   
-  ... to use left-shifted values, like those defined in curl.h, rather
-  than 16-bit hexadecimal values.
+  smb.c:489: warning: declaration of 'close' shadows a global declaration
+  smb.c:511: warning: declaration of 'read' shadows a global declaration
+  smb.c:528: warning: declaration of 'write' shadows a global declaration
 
 
-- sasl: Added predefined preferred mechanism values
+- smb.c: Fixed compilation warnings
   
   
-  In preparation for the upcoming changes to IMAP, POP3 and SMTP added
-  preferred mechanism values.
+  smb.c:212: warning: unused parameter 'done'
+  smb.c:380: warning: ISO C does not allow extra ';' outside of a function
+  smb.c:812: warning: unused parameter 'premature'
+  smb.c:822: warning: unused parameter 'dead'
 
 
-- url: Added support for parsing login options from the URL
-  
-  As well as parsing the username and password from the URL, added support
-  for parsing the optional options part from the login details, to allow
-  the following supported URL format:
+- smb.c: Fixed compilation warnings
   
   
-  schema://username:password;options@example.com/path?q=foobar
+  smb.c:311: warning: conversion from 'unsigned __int64' to 'u_short',
+             possible loss of data
+  smb.c:425: warning: conversion from '__int64' to 'unsigned short',
+             possible loss of data
+  smb.c:452: warning: conversion from '__int64' to 'unsigned short',
+             possible loss of data
+
+- smb.c: Fixed compilation warnings
   
   
-  This will only be used by IMAP, POP3 and SMTP at present but any
-  protocol that may be given login options in the URL will be able to
-  add support for them.
+  smb.c:162: error: comma at end of enumerator list
+  smb.c:469: warning: conversion from 'size_t' to 'unsigned short',
+             possible loss of data
+  smb.c:517: warning: conversion from 'curl_off_t' to 'unsigned int',
+             possible loss of data
+  smb.c:545: warning: conversion from 'curl_off_t' to 'unsigned int',
+             possible loss of data
 
 
-- smtp: Fix compiler warning
+- [Bill Nagel brought this change]
+
+  smb: Added initial SMB functionality
   
   
-  warning: unused variable 'smtp' introduced in commit 73cbd21b5ee6.
+  Initial implementation of the SMB/CIFS protocol.
 
 
-- smtp: Moved parsing of url path into separate function
+- [Bill Nagel brought this change]
 
 
-Daniel Stenberg (12 Apr 2013)
-- FTP: handle a 230 welcome response
+  smb: Added SMB handler interfaces
   
   
-  ...instead of the 220 we otherwise expect.
+  Added the SMB and SMBS handler interface structures and associated
+  functions required for SMB/CIFS operation.
+
+- transfer: Code style policing
   
   
-  Made the ftpserver.pl support sending a custom "welcome" and then
-  created test 1219 to verify this fix with such a 230 welcome.
+  Prefer ! rather than NULL in if statements, added comments and updated
+  function spacing, argument spacing and line spacing to be more readble.
+
+- transfer: Fixed existing scratch buffer being checked for NULL twice
   
   
-  Bug: http://curl.haxx.se/mail/lib-2013-02/0102.html
-  Reported by: Anders Havn
+  If the scratch buffer already existed when the CRLF conversion was
+  performed then the buffer pointer would be checked twice for NULL. This
+  second check is only necessary if the call to malloc() was performed by
+  the first check.
 
 
-- configure: try pthread_create without -lpthread
+- smtp: Fixed dot stuffing being performed when no new data read
   
   
-  For libc variants without a spearate pthread lib (like bionic), try
-  using pthreads without the pthreads lib first and only if that fails try
-  the -lpthread linker flag.
+  Whilst I had moved the dot stuffing code from being performed before
+  CRLF conversion takes place to after it, in commit 4bd860a001, I had
+  moved it outside the 'when something read' block of code when meant
+  it could perform the dot stuffing twice on partial send if nread
+  happened to contain the right values. It also meant the function could
+  potentially read past the end of buffer. This was highlighted by the
+  following warning:
   
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1216
-  Reported by: Duncan
+  warning: `nread' might be used uninitialized in this function
 
 
-- FTP: access files in root dir correctly
-  
-  Accessing a file with an absolute path in the root dir but with no
-  directory specified was not handled correctly. This fix comes with four
-  new test cases that verify it.
+Daniel Stenberg (29 Nov 2014)
+- smb.h: fixed picky compiler warning
   
   
-  Bug: http://curl.haxx.se/mail/lib-2013-04/0142.html
-  Reported by: Sam Deane
+  smb.h:30:16: error: comma at end of enumerator list [-Werror=pedantic]
 
 
-Steve Holme (12 Apr 2013)
-- pop3: Reworked the function description for Curl_pop3_write()
+Steve Holme (29 Nov 2014)
+- tests: Disable test 1013 until SMB is fully added
 
 
-- pop3: Added function description to pop3_parse_custom_request()
+- [Bill Nagel brought this change]
 
 
-- pop3: Moved utility functions to end of pop3.c
+  smb: Added SMB protocol and port definitions
+  
+  Added the necessary protocol and port definitions in order to support
+  SMB/CIFS.
 
 
-Nick Zitzmann (12 Apr 2013)
-- darwinssl: add TLS session resumption
+- [Bill Nagel brought this change]
+
+  smb: Added internal SMB definitions and structures
   
   
-  This ought to speed up additional TLS handshakes, at least in theory.
+  Added the internal definitions and structures necessary for SMB/CIFS
+  support.
 
 
-Steve Holme (12 Apr 2013)
-- imap: Added function description to imap_parse_custom_request()
+- [Bill Nagel brought this change]
 
 
-- imap: Moved utility functions to end of imap.c (Part 3/3)
+  smb: Added SMB connection structure
   
   
-  Moved imap_is_bchar() be with the other utility based functions.
+  Added the connection structure that will be required in urldata.h for
+  SMB/CIFS based connections.
+
+- [Bill Nagel brought this change]
 
 
-- imap: Moved utility functions to end of imap.c (Part 2/3)
+  smb: Added initial source files for SMB
   
   
-  Moved imap_parse_url_path() and imap_parse_custom_request() to the end of the
-  file allowing all utility functions to be grouped together.
+  Added the initial source files and updated the relevant project files in
+  order to support SMB/CIFS.
 
 
-- imap: Moved utility functions to end of imap.c (Part 1/3)
+- [Bill Nagel brought this change]
+
+  smb: Added configuration options for SMB
   
   
-  Moved imap_atom() and imap_sendf() to the end of the file allowing all
-  utility functions to be grouped together.
+  Added --enable-smb and --disable-smb configuration options for the
+  upcoming SMB/CIFS protocol support.
 
 
-- imap: Corrected function description for imap_connect()
+Daniel Stenberg (28 Nov 2014)
+- [Peter Wu brought this change]
 
 
-Kamil Dudka (12 Apr 2013)
-- tests: prevent test206, test1060, and test1061 from failing
+  runtests.pl: fix startup of IPv6 servers
+  
+  Commit curl-7_23_1-143-g8218064 changed the parameter of
+  responsive_http_server to accept types other than IPv6 (converting
+  from a boolean to a string), but only considered the lower-case "ipv6"
+  and not the "IPv6" variant. This caused all servers to start in IPv4
+  mode instead.
   
   
-  ... in case runtests.pl is invoked with non-default -b option
+  This patch converts the remaining cases to "ipv6". While not strictly
+  necessary for the run*server variants, these got also converted for
+  consistency and to prevent future errors.
   
   
-  Fixes a regression caused by 1e29d275c643ef6aab7948f0f55a7a9397e56b42.
+  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
 
 
-Daniel Stenberg (12 Apr 2013)
-- [David Strauss brought this change]
+- [Peter Wu brought this change]
 
 
-  libcurl-share.3: update what it does and does not share.
+  runtests.pl: fix warning message, remove duplicate value
   
   
-  Update sharing interface documentation to provide exhaustive list of
-  what it does and does not share.
+  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
 
 
-- THANKS: remove duplicated names
+Steve Holme (27 Nov 2014)
+- http.c: Fixed compilation warnings from features being disabled
+  
+  warning: unused variable 'data'
+  warning: variable 'addcookies' set but not used
+  
+  ...and some very minor coding style policing.
 
 
-- bump: start working towards next release
+- RELEASE-NOTES: Synced with c5399c827d
 
 
-- THANKS: added people from the 7.30.0 RELEASE-NOTES
+- tests: Added SMTP with --crlf test case
 
 
-Version 7.30.0 (12 Apr 2013)
+- docs: Updated for commit 4bd860a001 and SMTP Unix line ending conversion
 
 
-Daniel Stenberg (12 Apr 2013)
-- RELEASE-NOTES: cleaned up for 7.30 (synced with 5c5e1a1cd20)
+- smtp: Fixed const'ness of nread parameter in Curl_smtp_escape_eob()
   
   
-  Most notable the security advisory:
-  http://curl.haxx.se/docs/adv_20130412.html
+  ...and some comment typos!
 
 
-- test1218: another cookie tailmatch test
+- smtp: Added support for the conversion of Unix newlines during mail send
   
   
-  ... and make 1216 also verify it with a file input
+  Added support for the automatic conversion of Unix newlines to CRLF
+  during mail uploads.
   
   
-  These tests verify commit 3604fde3d3c9b0d, the fix for the "cookie
-  domain tailmatch" vulnerability. See
-  http://curl.haxx.se/docs/adv_20130412.html
+  Feature: http://curl.haxx.se/bug/view.cgi?id=1456
 
 
-- [YAMADA Yasuharu brought this change]
+- CURLOPT_CRLF.3: Fixed inclusion of SMTP in listed protocols
 
 
-  cookie: fix tailmatching to prevent cross-domain leakage
-  
-  Cookies set for 'example.com' could accidentaly also be sent by libcurl
-  to the 'bexample.com' (ie with a prefix to the first domain name).
+Daniel Stenberg (25 Nov 2014)
+- curl*3: added small examples
   
   
-  This is a security vulnerabilty, CVE-2013-1944.
-  
-  Bug: http://curl.haxx.se/docs/adv_20130412.html
+  and some minor edits
 
 
-Guenter Knauf (11 Apr 2013)
-- Enabled MinGW sync resolver builds.
+- libcurl.3: fix formatting
+  
+  refer to functions with the man page section properly
 
 
-Yang Tse (10 Apr 2013)
-- if2ip.c: fix compiler warning
+- man pages: SEE ALSO curl_multi_wait
 
 
-Guenter Knauf (10 Apr 2013)
-- Fixed lost OpenSSL output with "-t" - followup.
-  
-  The previously applied patch didnt work on Windows; we cant rely
-  on shell commands like 'echo' since they act diffently on each
-  platform and each shell.
-  In order to keep this script platform-independent the code must
-  only use pure Perl.
+- curl_multi_wait.3: clarify numfds being used if not NULL
 
 
-Daniel Stenberg (9 Apr 2013)
-- test1217: verify parsing 257 responses with "rubbish" before path
+- multi-single.c: switch to use curl_multi_wait
   
   
-  Test 1217 verifies commit e0fb2d86c9f78, and without that change this
-  test fails.
+  Makes the example much easier and straight-forward!
 
 
-- [Bill Middlecamp brought this change]
+- testcurl: bump the version of this script!
 
 
-  FTP: handle "rubbish" in front of directory name in 257 responses
+- testcurl: skip reading the setup file if given enough cmdline info
   
   
-  When doing PWD, there's a 257 response which apparently some servers
-  prefix with a comment before the path instead of after it as is
-  otherwise the norm.
-  
-  Failing to parse this, several otherwise legitimate use cases break.
+  This makes it much easier to run multiple tests in the same directory,
+  just altering the command lines used.
+
+- select.c: fix compilation for VxWorks
   
   
-  Bug: http://curl.haxx.se/mail/lib-2013-04/0113.html
+  Reported-by: Brian
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1455
 
 
-Guenter Knauf (9 Apr 2013)
-- Fixed ares-enabled builds with static makefiles.
+Patrick Monnerat (24 Nov 2014)
+- [moparisthebest brought this change]
 
 
-- Fixed lost OpenSSL output with "-t".
-  
-  The OpenSSL pipe wrote to the final CA bundle file, but the encoded PEM
-  output wrote to a temporary file.  Consequently, the OpenSSL output was
-  lost when the temp file was renamed to the final file at script finish
-  (overwriting the final file written earlier by openssl).
-  Patch posted to the list by Richard Michael (rmichael edgeofthenet org).
+  SSL: Add PEM format support for public key pinning
 
 
-Daniel Stenberg (9 Apr 2013)
-- test1216: test tailmatching cookie domains
+Kamil Dudka (24 Nov 2014)
+- Revert "repository: ignore patch files generated by git"
   
   
-  This test is an attempt to repeat the problem YAMADA Yasuharu reported
-  at http://curl.haxx.se/mail/lib-2013-04/0108.html
-
-- RELEASe-NOTES: synced with 29fdb2700f797
+  This reverts commit 217024a687ce86eb6d2317822ed81c7e5abc4b61.
   
   
-  added "tcpkeepalive on Mac OS X"
+  Bug: https://github.com/bagder/curl/commit/217024a6#commitcomment-8693738
 
 
-Nick Zitzmann (8 Apr 2013)
-- darwinssl: disable insecure ciphers by default
+Steve Holme (23 Nov 2014)
+- multi.c: Fixed compilation warnings when no verbose string support
   
   
-  I noticed that aria2's SecureTransport code disables insecure ciphers such
-  as NULL, anonymous, IDEA, and weak-key ciphers used by SSLv3 and later.
-  That's a good idea, and now we do the same thing in order to prevent curl
-  from accessing a "secure" site that only negotiates insecure ciphersuites.
+  warning: variable 'connection_id' set but not used
+  warning: unused parameter 'lineno'
+
+- RELEASE-NOTES: Synced with 1450712e76
+
+- sasl: Tidied up some parameter comments
 
 
-Daniel Stenberg (8 Apr 2013)
-- [Robert Wruck brought this change]
+- sasl: Reduced the need for two sets of NTLM functions
 
 
-  tcpkeepalive: Support CURLOPT_TCP_KEEPIDLE on OSX
-  
-  MacOS X doesn't have TCP_KEEPIDLE/TCP_KEEPINTVL but only a single
-  TCP_KEEPALIVE (see
-  http://developer.apple.com/library/mac/#DOCUMENTATION/Darwin/Reference/ManPages/man4/tcp.4.html).
-  Here is a patch for CURLOPT_TCP_KEEPIDLE on OSX platforms.
+- ntlm: Moved NSS initialisation to base decode function
 
 
-- configure: remove CURL_CHECK_FUNC_RECVFROM
-  
-  1 - We don't use the results from the test and we never did. recvfrom()
-  is only used by the TFTP code and it has not caused any problems.
+- http_ntlm: Fixed additional NSS initialisation call when decoding type-2
   
   
-  2 - the CURL_CHECK_FUNC_RECVFROM function is extremely slow
+  After commit 48d19acb7c the HTTP code would call Curl_nss_force_init()
+  twice when decoding a NTLM type-2 message, once directly and the other
+  through the call to Curl_sasl_decode_ntlm_type2_message().
 
 
-Steve Holme (8 Apr 2013)
-- RELEASE-NOTES: Corrected duplicate NTLM memory leaks
+- ntlm: Fixed static'ness of local decode function
 
 
-- RELEASE-NOTES: Removed trailing full stop
+- ntlm: Corrected some parameter names and comments
 
 
-Daniel Stenberg (8 Apr 2013)
-- [Fabian Keil brought this change]
+- runtests.pl: Re-aligned feature support comments
 
 
-  proxy: make ConnectionExists() check credential of proxyconnections too
+- runtests.pl: Use Kerberos and SPNEGO as proxies for the crypto feature
   
   
-  Previously it only compared credentials if the requested needle
-  connection wasn't using a proxy. This caused NTLM authentication
-  failures when using proxies as the authentication code wasn't send on
-  the connection where the challenge arrived.
+  In addition to NTLM, use Kerberos and SPNEGO as proxies to the crypto
+  feature.
   
   
-  Added test 1215 to verify: NTLM server authentication through a proxy
-  (This is a modified copy of test 67)
+  ...and converted tab characters, from commit 4b4e8a5853, to spaces.
 
 
-- RELEASE-NOTES: sync with 704a5dfca9
+- runtests.pl: Added support for SPNEGO
 
 
-- TODO-RELEASE: cleaned up, not really maintained lately
+- runtests.pl: Added Kerberos detection
 
 
-Marc Hoersken (7 Apr 2013)
-- if2ip.c: Fixed another warning: unused parameter 'remote_scope'
+- runtests.pl: Added GSS-API detection
 
 
-Daniel Stenberg (7 Apr 2013)
-- [Marc Hoersken brought this change]
+- FILEFORMAT: Added SSPI, GSS-API and Kerberos to the features list
 
 
-  cookie.c: Made cookie sort function more deterministic
+- FILEFORMAT: Added test requires feature not present information
   
   
-  Since qsort implementations vary with regards to handling the order
-  of similiar elements, this change makes the internal sort function
-  more deterministic by comparing path length first, then domain length
-  and finally the cookie name. Spotted with testcase 62 on Windows.
+  Such as !SSPI as we do for the NTLM and Digest tests.
 
 
-Marc Hoersken (7 Apr 2013)
-- curl_schannel.c: Follow up on memory leak fix ae4558d
+Daniel Stenberg (20 Nov 2014)
+- http.c: log if it notices HTTP 1.1 after a upgrade to http2
 
 
-- Revert "getpart.pm: Strip carriage returns to fix Windows support"
-  
-  This reverts commit e51b23c925a2721cf7c29b2b376d3d8903cfb067.
-  As discussed on the mailinglist, this was not the correct approach.
+- test1801: first real http2 test case
 
 
-- http_negotiate.c: Fixed passing argument from incompatible pointer type
+- sws: initial tiny steps toward http2 support
 
 
-- ftp.c: Added missing brackets around ABOR command logic
+- FILEFORMAT: mention the new upgrade support
 
 
-- sockfilt.c: Fixed detection of client-side connection close
+- test1800: first plain-text http2 test case
   
   
-  WINSOCK only:
-  Since FD_CLOSE is only signaled once, it may trigger at the same
-  time as FD_READ. Data actually being available makes it impossible
-  to detect that the connection was closed by checking that recv returns
-  zero. Another recv attempt could block the connection if it was
-  not closed. This workaround abuses exceptfds in conjunction with
-  readfds to signal that the connection has actually closed.
+  Verifies the upgrade request, but gets a plain 1.1 response
 
 
-- curl_schannel.c: Fixed memory leak if connection was not successful
+- [Tatsuhiro Tsujikawa brought this change]
 
 
-- if2ip.c: Fixed warning: unused parameter 'remote_scope'
+  http: Disable pipelining for HTTP/2 and upgraded connections
+  
+  This commit disables pipelining for HTTP/2 or upgraded connections.  For
+  HTTP/2, we do not support multiplexing.  In general, requests cannot be
+  pipelined in an upgraded connection, since it is now different protocol.
+
+- [Brad Harder brought this change]
 
 
-- runtests.pl: Fixed --verbose parameter passed to http_pipe.py
+  CURLOPT_POSTFIELDS.3: mention the COPYPOSTFIELDS option
 
 
-- sockfilt.c: Reduce CPU load while running under a Windows PIPE
+Steve Holme (19 Nov 2014)
+- multi-uv.c: Updated for curl coding standards
 
 
-- tftpd.c: Apply sread timeout to the whole data transfer session
+- conncache: Fixed specifiers in infof() for long and size_t variables
 
 
-- getpart.pm: Strip carriage returns to fix Windows support
+- [Peter Wu brought this change]
 
 
-Daniel Stenberg (6 Apr 2013)
-- ftp tests: libcurl returns CURLE_FTP_ACCEPT_FAILED better now
+  cmake: add Kerberos to the supported features
   
   
-  Since commit 57aeabcc1a20f, it handles errors on the control connection
-  while waiting for the data connection better.
+  Updated following commit eda919f and a4b7f71.
   
   
-  Test 591 and 592 are updated accordingly.
+  Acked-by: Brad King <brad.king@kitware.com>
+  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
 
 
-- FTP: wait on both connections during active STOR state
+- [Peter Wu brought this change]
+
+  cmake: fix NTLM detection when CURL_DISABLE_HTTP defined
+  
+  Updated following changes in commit f0d860d.
   
   
-  When doing PORT and upload (STOR), this function needs to extract the
-  file descriptor for both connections so that it will respond immediately
-  when the server eventually connects back.
+  Acked-by: Brad King <brad.king@kitware.com>
+  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
+
+Daniel Stenberg (19 Nov 2014)
+- RELEASE-NOTES: synced with cb13fad733e
+
+- [Jay Satiro brought this change]
+
+  examples: Wait recommended 100ms when no file descriptors are ready
   
   
-  This flaw caused active connections to become unnecessary slow but they
-  would still often work due to the normal polling on a timeout. The bug
-  also would not occur if the server connected back very fast, like when
-  testing on local networks.
+  Prior to this change when no file descriptors were ready on platforms
+  other than Windows the multi examples would sleep whatever was in
+  timeout, which may or may not have been less than the minimum
+  recommended value [1] of 100ms.
   
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1183
-  Reported by: Daniel Theron
+  [1]: http://curl.haxx.se/libcurl/c/curl_multi_fdset.html
+
+- [Waldek Kozba brought this change]
 
 
-Marc Hoersken (6 Apr 2013)
-- tftpd.c: Follow up cleanup and restore of previous sockopt
+  multi-uv.c: close the file handle after download
 
 
-Daniel Stenberg (6 Apr 2013)
-- [Kim Vandry brought this change]
+- [Jon Spencer brought this change]
 
 
-  connect: treat an interface bindlocal() problem as a non-fatal error
+  multi: inform about closed sockets before they are closed
   
   
-  I am using curl_easy_setopt(CURLOPT_INTERFACE, "if!something") to force
-  transfers to use a particular interface but the transfer fails with
-  CURLE_INTERFACE_FAILED, "Failed binding local connection end" if the
-  interface I specify has no IPv6 address. The cause is as follows:
+  When the connection code decides to close a socket it informs the multi
+  system via the Curl_multi_closed function. The multi system may, in
+  turn, invoke the CURLMOPT_SOCKETFUNCTION function with
+  CURL_POLL_REMOVE. This happens after the socket has already been
+  closed. Reorder the code so that CURL_POLL_REMOVE is called before the
+  socket is closed.
+
+Guenter Knauf (19 Nov 2014)
+- build: in Makefile.m32 moved target autodetection.
   
   
-  The remote hostname resolves successfully and has an IPv6 address and an
-  IPv4 address.
+  Moved target autodetection block after defining CC macro.
+
+- build: in Makefile.m32 simplify platform flags.
+
+- build: in Makefile.m32 try to detect 64bit target.
+
+Daniel Stenberg (19 Nov 2014)
+- [Brad King brought this change]
+
+  CMake: Simplify if() conditions on check result variables
   
   
-  cURL attempts to connect to the IPv6 address first.
+  Remove use of an old hack that takes advantage of the auto-dereference
+  behavior of the if() command to detect if a variable is defined.  The
+  hack has the form:
   
   
-  bindlocal (in lib/connect.c) fails because Curl_if2ip cannot find an
-  IPv6 address on the interface.
+   if("${VAR} MATCHES "^${VAR}$")
   
   
-  This is a fatal error in singleipconnect()
+  where "${VAR}" is a macro argument reference.  Use if(DEFINED) instead.
+  This also avoids warnings for CMake Policy CMP0054 in CMake 3.1.
+
+- TODO-RELEASE: removed
+
+- [Carlo Wood brought this change]
+
+  debug: added new connection cache output, plus fixups
   
   
-  This change will make cURL try the next IP address in the list.
+  Debug output 'typo' fix.
   
   
-  Also included are two changes related to IPv6 address scope:
+  Don't print an extra "0x" in
+    * Pipe broke: handle 0x0x2546d88, url = /
   
   
-  - Filter the choice of address in Curl_if2ip to only consider addresses
-  with the same scope ID as the connection address (mismatched scope for
-  local and remote address does not result in a working connection).
+  Add debug output.
+  Print the number of connections in the connection cache when
+    adding one, and not only when one is removed.
   
   
-  - bindlocal was ignoring the scope ID of addresses returned by
-  Curl_if2ip . Now it uses them.
+  Fix typos in comments.
+
+- multi: move the ending condition into the loop as well
   
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1189
+  ... as it was before I changed the loop in commit e04ccbd50. It caused
+  test 2030 and 2032 to fail.
 
 
-Marc Hoersken (6 Apr 2013)
-- tftpd.c: Fixed sread timeout on Windows by setting it manually
+Steve Holme (18 Nov 2014)
+- multi: Prefer we don't use CURLE_OK and NULL in comparisons
 
 
-- ftp.pm: Added tskill to support Windows XP Home
+Daniel Stenberg (18 Nov 2014)
+- multi_runsingle: use 'result' for local CURLcode storage
+  
+  ... and assign data->result only at the end. Makes the code more compact
+  (easier to read) and more similar to other code.
 
 
-- runtests.pl: Modularization of MinGW/Msys compatibility functions
+- multi_runsingle: rename result to rc
+  
+  save 'result' for CURLcode types
 
 
-- ftp.pm: Made Perl testsuite able to handle Windows processes
+- multi: make multi_runsingle loop internally
+  
+  simplifies the use of this function at little cost.
 
 
-- util.c: Revert workaround eeefcdf, 6eb56e7 and e3787e8
+- [Carlo Wood brought this change]
 
 
-- ftp.pm: Made Perl testsuite able to kill Windows processes
+  multi: when leaving for timeout, close accordingly
+  
+  Fixes the problem when a transfer in a pipeline times out.
 
 
-- util.c: Follow up cleanup on eeefcdf
+Guenter Knauf (18 Nov 2014)
+- build: in Makefile.m32 add -m32 flag for 32bit.
 
 
-Daniel Stenberg (6 Apr 2013)
-- cpp: use #ifdef __MINGW32__ to avoid compiler complaints
-  
-  ... instead of just #if
+- mk-ca-bundle.vbs: update copyright year.
 
 
-Marc Hoersken (6 Apr 2013)
-- util.c: Made write_pidfile write the correct PID on MinGW/Msys
-  
-  This workaround fixes an issue on MinGW/Msys regarding the Perl
-  testsuite scripts not being able to signal or control the server
-  processes. The MinGW Perl runtime only sees the Msys processes and
-  their corresponding PIDs, but sockfilt (and other servers) wrote the
-  Windows PID into their PID-files. Since this PID is useless to the
-  testsuite, the write_pidfile function was changed to search for the
-  Msys PID and write that into the PID-file.
+- build: in Makefile.m32 pass -F flag to windres.
 
 
-Daniel Stenberg (5 Apr 2013)
-- RELEASE-NOTES: synced with 5e722b2d09087
+Steve Holme (17 Nov 2014)
+- config-win32: Fixed build targets for the VS2012+ Windows XP toolset
   
   
-  3 more bug fixes, 6 more contributors
+  Even though commit 23e70e1cc6 mentioned the v110_xp toolset, I had
+  forgotten to include the relevant pre-processor definitions.
 
 
-Marc Hoersken (5 Apr 2013)
-- sockfilt.c: Fixed handling of multiple fds being signaled
+- sasl_sspi: Removed note about the NTLM functions being a wrapper
 
 
-Kamil Dudka (5 Apr 2013)
-- curl_global_init.3: improve description of CURL_GLOBAL_ALL
+- connect.c: Fixed compilation warning when no verbose string support
   
   
-  Reported by: Tomas Mlcoch
+  warning: unused parameter 'reason'
 
 
-- examples/multi-single.c: fix the order of destructions
-  
-  ... so that it adheres to the API documentation.
+- easy.c: Fixed compilation warning when no verbose string support
   
   
-  Reported by: Tomas Mlcoch
+  warning: unused parameter 'easy'
 
 
-Daniel Stenberg (5 Apr 2013)
-- Curl_open: restore default MAXCONNECTS to 5
+- win32: Updated some legacy APIs to use the newer extended versions
   
   
-  At some point recently we lost the default value for the easy handle's
-  connection cache, and this change puts it back to 5 - which is the
-  former default value and it is documented in the curl_easy_setopt.3 man
-  page.
-
-Marc Hoersken (4 Apr 2013)
-- sockfilt.c: Added wrapper functions to fix Windows console issues
+  Updated the usage of some legacy APIs, that are preventing curl from
+  compiling for Windows Store and Windows Phone build targets.
   
   
-  The new read and write wrapper functions support reading from stdin
-  and writing to stdout/stderr on Windows by using the appropriate
-  Windows API functions and data types.
-
-Yang Tse (4 Apr 2013)
-- lib1509.c: fix compiler warnings
+  Suggested-by: Stefan Neis
+  Feature: http://sourceforge.net/p/curl/feature-requests/82/
 
 
-- easy.c: fix compiler warning
-
-Daniel Stenberg (4 Apr 2013)
-- --engine: spellfix the help message
+- config-win32: Introduce build targets for VS2012+
   
   
-  Reported by: Fredrik Thulin
+  Visual Studio 2012 introduced support for Windows Store apps as well as
+  supporting Windows Phone 8. Introduced build targets that allow more
+  modern APIs to be used as certain legacy ones are not available on these
+  new platforms.
 
 
-Yang Tse (4 Apr 2013)
-- http_negotiate.c: follow-up for commit 3dcc1a9c
+- sasl_sspi: Fixed compilation warnings when no verbose string support
 
 
-Linus Nielsen Feltzing (4 Apr 2013)
-- easy: Fix the broken CURLOPT_MAXCONNECTS option
-  
-  Copy the CURLOPT_MAXCONNECTS option to CURLMOPT_MAXCONNECTS in
-  curl_easy_perform().
+- sasl_sspi: Added base64 decoding debug failure messages
   
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1212
-  Reported-by: Steven Gu
+  Just like in the NTLM code, added infof() failure messages for
+  DIGEST-MD5 and GSSAPI authentication when base64 decoding fails.
 
 
-Guenter Knauf (4 Apr 2013)
-- Updated copyright date.
+- ntlm: Moved the SSPI based Type-3 message generation into the SASL module
 
 
-- Another small output fix for --help and --version.
+- ntlm: Moved the SSPI based Type-2 message decoding into the SASL module
 
 
-Yang Tse (4 Apr 2013)
-- http_negotiate.c: fix several SPNEGO memory handling issues
+- ntlm: Moved the SSPI based Type-1 message generation into the SASL module
 
 
-Guenter Knauf (4 Apr 2013)
-- Added a cont to specify base64 line wrap.
+- [Michael Osipov brought this change]
 
 
-- Fixed version output.
+  kerberos: Use symbol qualified with _KERBEROS5
+  
+  For consistency renamed USE_KRB5 to USE_KERBEROS5.
 
 
-- Added support for --help and --version options.
+Daniel Stenberg (15 Nov 2014)
+- [Jay Satiro brought this change]
 
 
-- Added option to specify length of base64 output.
+  examples: Don't call select() to sleep on windows
+  
+  Windows does not support using select() for sleeping without a dummy
+  socket. Instead use Windows' Sleep() and sleep for 100ms which is the
+  minimum suggested value in the curl_multi_fdset() doc.
   
   
-  Based on a patch posted to the list by Richard Michael.
+  Prior to this change the multi examples would exit prematurely since
+  select() would error instead of sleeping when called without an fd.
+  
+  Reported-by: Johan Lantz
+  Bug: http://curl.haxx.se/mail/lib-2014-11/0221.html
 
 
-Daniel Stenberg (3 Apr 2013)
-- curl_easy_setopt.3: CURLOPT_HTTPGET disables CURLOPT_UPLOAD
+- [Tatsuhiro Tsujikawa brought this change]
 
 
-- [Yasuharu Yamada brought this change]
+  http2: Don't send Upgrade headers when we already do HTTP/2
 
 
-  Curl_cookie_add: only increase numcookies for new cookies
+Steve Holme (15 Nov 2014)
+- sasl: Corrected Curl_sasl_build_spn() function description
   
   
-  Count up numcookies in Curl_cookie_add() only when cookie is new one
+  There was a mismatch in function parameter names.
 
 
-- SO_SNDBUF: don't set SNDBUF for win32 versions vista or later
-  
-  The Microsoft knowledge-base article
-  http://support.microsoft.com/kb/823764 describes how to use SNDBUF to
-  overcome a performance shortcoming in winsock, but it doesn't apply to
-  Windows Vista and later versions. If the described SNDBUF magic is
-  applied when running on those more recent Windows versions, it seems to
-  instead have the reversed effect in many cases and thus make libcurl
-  perform less good on those systems.
+- tool: Removed krb4 from the supported features
   
   
-  This fix thus adds a run-time version-check that does the SNDBUF magic
-  conditionally depending if it is deemed necessary or not.
-  
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1188
-  Reported by: Andrew Kurushin
-  Tested by: Christian Hägele
+  Although libcurl would never return CURL_VERSION_KERBEROS4 after 7.33,
+  so would not be output with --version, removed krb4 from the supported
+  features output.
 
 
-Nick Zitzmann (1 Apr 2013)
-- darwinssl: additional descriptive messages of SSL handshake errors
-  
-  (This doesn't need to appear in the release notes.)
+- [Michael Osipov brought this change]
 
 
-Guenter Knauf (1 Apr 2013)
-- Added dns and connect time to output.
+  tool: Use Kerberos for supported features
 
 
-Daniel Stenberg (1 Apr 2013)
-- RELEASE-NOTES: synced with 0614b902136
+- urldata: Don't define sec_complete when no GSS-API support present
+  
+  This variable is only used with HAVE_GSSAPI is defined by the FTP code
+  so let's place the definition with the other GSS-API based variables.
 
 
-- code-policed
+- [Michael Osipov brought this change]
 
 
-- tcpkeepalive: support TCP_KEEPIDLE/TCP_KEEPINTVL on win32
-  
-  Patch by: Robert Wruck
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1209
+  docs: Use consistent naming for Kerberos
 
 
-- BINDINGS: BBHTTP is a cocoa binding, Julia has a binding
+- TODO: Lets support QOP options in GSSAPI authentication
 
 
-- ftp_sendquote: use PPSENDF, not FTPSENDF
+- sasl_sspi: Corrected a couple of comment typos
+
+- sasl: Moved Curl_sasl_gssapi_cleanup() definition into header file
   
   
-  The last remaining code piece that still used FTPSENDF now uses PPSENDF.
-  In the problematic case, a PREQUOTE series was done on a re-used
-  connection when Curl_pp_init() hadn't been called so it had messed up
-  pointers. The init call is done properly from Curl_pp_sendf() so this
-  change fixes this particular crash.
+  Rather than define the function as extern in the source files that use
+  it, moved the function declaration into the SASL header file just like
+  the Digest and NTLM clean-up functions.
   
   
-  Bug: http://curl.haxx.se/mail/lib-2013-03/0319.html
-  Reported by: Sam Deane
+  Additionally, added a function description comment block.
 
 
-Steve Holme (27 Mar 2013)
-- RELEASE-NOTES: Corrected typo
+- sasl_sspi: Added missing RFC reference for HTTP Digest authentication
 
 
-Daniel Stenberg (27 Mar 2013)
-- [Clemens Gruber brought this change]
+- ntlm: Clean-up and standardisation of base64 decoding
 
 
-  multi-uv.c: remove unused variable
+- ntlm: We prefer 'CURLcode result'
 
 
-- RELEASE-NOTES: add two references
+Daniel Stenberg (13 Nov 2014)
+- [Brad King brought this change]
 
 
-- test1509: verify proxy header response headers count
+  CMake: Restore order-dependent library checks
   
   
-  Modified sws to support and use custom CONNECT responses instead of the
-  previously naive hard-coded version. Made the HTTP test server able to
-  extract test case number from the host name in a CONNECT request by
-  finding the number after the last dot. It makes 'machine.moo.123' use
-  test case 123.
+  Revert commit 2257deb502 (Cmake: Avoid cycle directory dependencies,
+  2014-08-22) and add a comment explaining the purpose of the original
+  code.
   
   
-  Adapted a larger amount of tests to the new <connect> style.
+  The check_library_exists_concat macro is intended to be called multiple
+  times on a sequence of possibly dependent libraries.  Later libraries
+  may depend on earlier libraries when they are static.  They cannot be
+  safely linked in reverse order on some platforms.
   
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1204
-  Reported by: Martin Jansen
-
-- [Clemens Gruber brought this change]
+  Signed-off-by: Brad King <brad.king@kitware.com>
 
 
-  Added libuv example multi-uv.c
+- [Brad King brought this change]
 
 
-Yang Tse (25 Mar 2013)
-- NTLM: fix several NTLM code paths memory leaks
-
-- WIN32 MemoryTracking: track wcsdup() _wcsdup() and _tcsdup() usage
-  
-  As of 25-mar-2013 wcsdup() _wcsdup() and _tcsdup() are only used in
-  WIN32 specific code, so tracking of these has not been extended for
-  other build targets. Without this fix, memory tracking system on
-  WIN32 builds, when using these functions, would provide misleading
-  results.
+  CMake: Restore order-dependent header checks
   
   
-  In order to properly extend this support for all targets curl.h
-  would have to define curl_wcsdup_callback prototype and consequently
-  wchar_t should be visible before that in curl.h.  IOW curl_wchar_t
-  defined in curlbuild.h and this pulling whatever system header is
-  required to get wchar_t definition.
+  Revert commit 1269df2e3b (Cmake: Don't check for all headers each
+  time, 2014-08-15) and add a comment explaining the purpose of the
+  original code.
   
   
-  Additionally a new curl_global_init_mem() function that also receives
-  user defined wcsdup() callback would be required.
-
-- curl_ntlm_msgs.c: revert commit 463082bea4
+  The check_include_file_concat macro is intended to be called multiple
+  times on a sequence of possibly dependent headers.  Later headers
+  may depend on earlier headers to provide declarations.  They cannot
+  be safely included independently on some platforms.
   
   
-  reverts unreleased invalid memory leak fix
-
-Daniel Stenberg (23 Mar 2013)
-- RELEASE-NOTES: synced with bc6037ed3ec02
+  For example, many POSIX APIs document including sys/types.h before some
+  other headers.  Also on some OS X versions sys/socket.h must be included
+  before net/if.h or the check for the latter will fail.
   
   
-  More changes, bugfixes and contributors!
+  Signed-off-by: Brad King <brad.king@kitware.com>
 
 
-- [Martin Jansen brought this change]
+- [Peter Wu brought this change]
 
 
-  Curl_proxyCONNECT: count received headers
+  test22: expand a backtick command
   
   
-  Proxy servers tend to add their own headers at the beginning of
-  responses. The size of these headers was not taken into account by
-  CURLINFO_HEADER_SIZE before this change.
+  This is the only user of the backtick operator in the command. As the
+  commands will soon not be executed by a shell anymore (but by perl),
+  replace the command with its output.
   
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1204
+  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
 
 
-Steve Holme (21 Mar 2013)
-- sasl: Corrected a few violations of the curl coding standards
-  
-  Corrected some incorrectly positioned pointer variable declarations to
-  be "char *" rather than "char* ".
+- RELEASE-NOTES: synced with 2ee3c63b13
 
 
-- multi.c: Corrected a couple of violations of the curl coding standards
-  
-  Corrected some incorrectly positioned pointer variable declarations to
-  be "type *" rather than "type* ".
+- http2: fix switched macro when http2 is not enabled
 
 
-- imap-tests: Added CRLF to reply data to be compliant with RFC-822
-  
-  Updated the reply data in tests: 800, 801, 802, 804 and 1321 to possess
-  the CRLF as per RFC-822.
+- [Tatsuhiro Tsujikawa brought this change]
 
 
-- multi.c: Fix compilation warning
+  http2: Deal with HTTP/2 data inside response header buffer
   
   
-  warning: an enumerated type is mixed with another type
+  Previously if HTTP/2 traffic is appended to HTTP Upgrade response header
+  (thus they are in the same buffer), the trailing HTTP/2 traffic is not
+  processed and lost.  The appended data is most likely SETTINGS frame.
+  If it is lost, nghttp2 library complains server does not obey the HTTP/2
+  protocol and issues GOAWAY frame and curl eventually drops connection.
+  This commit fixes this problem and now trailing data is processed.
 
 
-- multi.c: fix compilation error
+Steve Holme (11 Nov 2014)
+- configure: Fixed inclusion of krb5 when CURL_DISABLE_CRYPTO_AUTH is defined
   
   
-  warning: conversion from enumeration type to different enumeration type
+  Commit fe0f8967bf fixed a problem with krb5 not being defined as a
+  supported feature when HAVE_GSSAPI is defined, however, it should
+  only be included if CURL_DISABLE_CRYPTO_AUTH is not set, like when
+  SPNEGO is listed as a feature.
 
 
-- lib1900.c: fix compilation warning
+Daniel Stenberg (10 Nov 2014)
+- multi: removed Curl_multi_set_easy_connection
+  
+  It isn't used anywhere!
   
   
-  warning: declaration of 'time' shadows a global declaration
+  Reported-by: Carlo Wood
 
 
-Yang Tse (20 Mar 2013)
-- [John E. Malmberg brought this change]
+- [Peter Wu brought this change]
 
 
-  build_vms.com: use existing curlbuild.h and parsing fix
-  
-  This patch removes building curlbuild.h from the build_vms.com procedure
-  and uses the one in the daily or release tarball instead.
+  symbol-scan.pl: do not require autotools
   
   
-  packages/vms/build_curlbuild_h.com is obsolete with this change.
+  Makes test1119 pass when building with cmake.
   
   
-  Accessing the library module name "tool_main" needs different handling
-  when the optional extended parsing is enabled.
+  configurehelp.pm is generated by configure (autotools). As cmake does
+  not provide a separate variable for the C preprocessor, default to cpp.
+  Before commit ef24ecde68a5f577a7f0f423a767620f09a0ab16 ("symbol-scan:
+  use configure script knowledge about how to run the C preprocessor"),
+  this tool would also use 'cpp'.
   
   
-  Tested on IA64/VMS 8.4 and VAX/VMS 7.3
+  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
 
 
-Nick Zitzmann (19 Mar 2013)
-- darwinssl: disable ECC ciphers under Mountain Lion by default
-  
-  I found out that ECC doesn't work as of OS X 10.8.3, so those ciphers are
-  turned off until the next point release of OS X.
-
-Steve Holme (18 Mar 2013)
-- FEATURES: Small tidy up for constancy and grammar
+- [Peter Wu brought this change]
 
 
-Daniel Stenberg (18 Mar 2013)
-- [Oliver Schindler brought this change]
-
-  Curl_proxyCONNECT: clear 'rewindaftersend' on success
-  
-  After having done a POST over a CONNECT request, the 'rewindaftersend'
-  boolean could be holding the previous value which could lead to badness.
+  cmake: add ENABLE_THREADED_RESOLVER, rename ARES
   
   
-  This should be tested for in a new test case!
+  Fix detection of the AsynchDNS feature which not just depends on
+  pthreads support, but also on whether USE_POSIX_THREADS is set or not.
+  Caught by test 1014.
   
   
-  Bug: https://groups.google.com/d/msg/msysgit/B31LNftR4BI/KhRTz0iuGmUJ
-
-Steve Holme (18 Mar 2013)
-- TODO: Reordered the protocol and security sections
+  This patch adds a new ENABLE_THREADED_RESOLVER option (corresponding to
+  --enable-threaded-resolver of autotools) which also needs a check for
+  HAVE_PTHREAD_H.
   
   
-  Moved SMTP, POP3, IMAP and New Protocol sections to be listed after the
-  other protocols (FTP, HTTP and TELNET) and SASL to be after SSL and
-  GnuTLS as these are all security related.
+  For symmetry with autotools, CURL_USE_ARES is renamed to ENABLE_ARES
+  (--enable-ares). Checks that test for the availability actually use
+  USE_ARES instead as that is the result of whether a-res is available or
+  not (in practice this does not matter as CARES is marked as required
+  package, but nevertheless it is better to write the intent).
   
   
-  Additionally fixed numbering of the SSL and GnuTLS sections as they
-  weren't consecutive.
+  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
 
 
-Yang Tse (18 Mar 2013)
-- tests: specify 'text' mode for some output files in verify section
+- [Peter Wu brought this change]
 
 
-Steve Holme (17 Mar 2013)
-- imap: Fixed incorrect initial response generation for SASL AUTHENTICATE
+  cmake: build libhostname for test suite
   
   
-  Fixed incorrect initial response generation for the NTLM and LOGIN SASL
-  authentication mechanisms when the SASL-IR was detected.
+  Used by some test cases via LD_PRELOAD in order to fake the host name.
   
   
-  Introduced in commit: 6da7dc026c14.
-
-- FEATURES: Expanded the supported enhanced IMAP command list
-
-- TODO: Corrected typo in TOC
-
-- TODO: Added IMAP section and removed unused Other protocols section
-
-- TODO: Added graceful base64 decoding failure to SMTP and POP3
-
-- TODO: Corrected typo on section 10.2 heading
-
-Yang Tse (16 Mar 2013)
-- tests: 96, 558, 1330: strip build subdirectory dependent leading path
-
-Steve Holme (15 Mar 2013)
-- TODO: Added section 10.2 Initial response to POP3 to do list
+  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
 
 
-- imap-tests: Corrected copy/paste error in test808 reply data
+- [Peter Wu brought this change]
 
 
-Yang Tse (15 Mar 2013)
-- unit1330.c: fix date
-
-- tests: add #96 #558 and #1330
+  cmake: fix HAVE_GETHOSTNAME definition
+  
+  Otherwise Curl_gethostname always fails. Windows has gethostname
+  since Vista according to
+  http://msdn.microsoft.com/en-us/library/ms738527%28VS.85%29.aspx, but
+  accordings to byte_bucket's VC 2005 documentation, it is available even
+  in Windows 95. (possibly after installing a Platform SDK, the
+  Windows Server 2003 SP1 Platform SDK should be sufficient).
   
   
-  These verfy that the 'memory tracking' subsystem is actually doing its
-  job when using curl tool (#96), a test in libtest (#558) and also a unit
-  test (#1330), in order to prevent regressions in this functionallity.
+  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
 
 
-Steve Holme (15 Mar 2013)
-- imap-tests: Added test808 for custom EXAMINE command
+- [Peter Wu brought this change]
 
 
-Daniel Stenberg (15 Mar 2013)
-- HTTP proxy: insert slash in URL if missing
+  tests: fix libhostname visibility
   
   
-  curl has been accepting URLs using slightly wrong syntax for a long
-  time, such as when completely missing as slash "http://example.org" or
-  missing a slash when a query part is given
-  "http://example.org?q=foobar".
+  I noticed that a patched cmake build would pass tests with a fake local
+  hostname, but the autotools build skips them:
   
   
-  curl would translate these into a legitimate HTTP request to servers,
-  although as was shown in bug #1206 it was not adjusted properly in the
-  cases where a HTTP proxy was used.
+      got unexpected host name back, LD_PRELOAD failed
   
   
-  Test 1213 and 1214 were added to the test suite to verify this fix.
+  It turns out that -fvisibility=hidden hides the symbol, and since the
+  tests are not part of libcurl, it fails too. Just remove the LIBCURL
+  guard.
   
   
-  The test HTTP server was adjusted to allow us to specify test number in
-  the host name only without using any slashes in a given URL.
+  Broken since cURL 7.30 (commit 83a42ee20ea7fc25abb61c0b7ef56ebe712d7093,
+  "curl.h: stricter CURL_EXTERN linkage decorations logic").
   
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1206
-  Reported by: ScottJi
+  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
 
 
-Steve Holme (14 Mar 2013)
-- ftpserver.pl: Added EXAMINE_imap() for IMAP EXAMINE commands
+- [Peter Wu brought this change]
+
+  tests: fix memleak in server/resolve.c
+  
+  This makes LeakSanitizer happy.
   
   
-  Used hard coded data from RFC-3501 section 6.3.2.
+  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
 
 
-Yang Tse (14 Mar 2013)
-- curl_memory.h: introduce CURLX_NO_MEMORY_CALLBACKS usage possibility
+- configure: assume krb5 when gss-api works
   
   
-  This commit alone does not fix anything nor modifies existing
-  interfaces or behaviors, although it is a prerequisite for other
-  fixes.
+  To please test 1014 while we work out if this is truly the a correct
+  assumption.
 
 
-- Makefile.vc6: add missing files
+Steve Holme (9 Nov 2014)
+- vtls.h: Fixed compiler warning when compiled without SSL
+  
+  vtls.c:185:46: warning: unused parameter 'data'
 
 
-Linus Nielsen Feltzing (14 Mar 2013)
-- pipelining: Remove dead code.
+- RELEASE-NOTES: Synced with 2fbf23875f
 
 
-- Multiple pipelines and limiting the number of connections.
-  
-  Introducing a number of options to the multi interface that
-  allows for multiple pipelines to the same host, in order to
-  optimize the balance between the penalty for opening new
-  connections and the potential pipelining latency.
+- ntlm: Added separate SSPI based functions
   
   
-  Two new options for limiting the number of connections:
+  In preparation for moving the NTLM message code into the SASL module,
+  and separating the native code from the SSPI code, added functions that
+  simply call the functions in curl_ntlm_msg.c.
+
+- http_ntlm: Use the SASL functions instead
   
   
-  CURLMOPT_MAX_HOST_CONNECTIONS - Limits the number of running connections
-  to the same host. When adding a handle that exceeds this limit,
-  that handle will be put in a pending state until another handle is
-  finished, so we can reuse the connection.
+  In preparation for moving the NTLM message code into the SASL module
+  use the SASL functions in the HTTP code instead.
+
+Daniel Stenberg (9 Nov 2014)
+- libssh2: detect features based on version, not configure checks
   
   
-  CURLMOPT_MAX_TOTAL_CONNECTIONS - Limits the number of connections in total.
-  When adding a handle that exceeds this limit,
-  that handle will be put in a pending state until another handle is
-  finished. The free connection will then be reused, if possible, or
-  closed if the pending handle can't reuse it.
+  ... so that non-configure builds get the correct functions too based on
+  the libssh2 version used.
+
+- [Nobuhiro Ban brought this change]
+
+  SSH: use the port number as well for known_known checks
   
   
-  Several new options for pipelining:
+  ... if the libssh2 version is new enough.
   
   
-  CURLMOPT_MAX_PIPELINE_LENGTH - Limits the pipeling length. If a
-  pipeline is "full" when a connection is to be reused, a new connection
-  will be opened if the CURLMOPT_MAX_xxx_CONNECTIONS limits allow it.
-  If not, the handle will be put in a pending state until a connection is
-  ready (either free or a pipe got shorter).
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1448
+
+Steve Holme (9 Nov 2014)
+- INSTALL: Updated pre-processor references to the old VC6 project files
   
   
-  CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE - A pipelined connection will not
-  be reused if it is currently processing a transfer with a content
-  length that is larger than this.
+  Reworked the two sections that discuss modifying the Visual Studio pre-
+  processor settings, and vc6libcurl.dsw/vc6libcurl.dsp, to remove the
+  project files references as they have been superseded by a more thorough
+  set of project files for VC6 through VC12, but to also give the correct
+  reference to this setting in later versions of Visual Studio.
+
+- INSTALL: Added email protocols to the "Disabling in Win32 builds" section
+
+- configure: Fixed NTLM missing from features when CURL_DISABLE_HTTP defined
+
+- build: Fixed no NTLM support for email when CURL_DISABLE_HTTP is defined
   
   
-  CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE - A pipelined connection will not
-  be reused if it is currently processing a chunk larger than this.
+  USE_NTLM would only be defined if: HTTP support was enabled, NTLM and
+  cryptography weren't disabled, and either a supporting cryptography
+  library or Windows SSPI was being compiled against.
   
   
-  CURLMOPT_PIPELINING_SITE_BL - A blacklist of hosts that don't allow
-  pipelining.
+  This means it was not possible to build libcurl without HTTP support
+  and use NTLM for other protocols such as IMAP, POP3 and SMTP. Rather
+  than introduce a new SASL pre-processor definition, removed the HTTP
+  prerequisite just like USE_SPNEGO and USE_KRB5.
   
   
-  CURLMOPT_PIPELINING_SERVER_BL - A blacklist of server types that don't allow
-  pipelining.
+  Note: Winbind support still needs to be dependent on CURL_DISABLE_HTTP
+  as it is only available to HTTP at present.
   
   
-  See the curl_multi_setopt() man page for details.
+  This bug dates back to August 2011 when I started to add support for
+  NTLM to SMTP.
 
 
-Yang Tse (13 Mar 2013)
-- tool_main.c: remove redundant vms_show storage-class specifier
+- ntlm: Removed an unnecessary free of native Target Info
   
   
-  vms_show 'extern' storage-class specifier removed from tool_main.c due to...
-  
-  - Advice from Tor Arntsen: http://curl.haxx.se/mail/lib-2013-03/0164.html
-  
-  - HP OpenVMS docs stating that 'Extern is the default storage class for
-    variables declared outside a function.'
-    http://h71000.www7.hp.com/commercial/c/docs/dec_c_help_5.html
-    (Storage_Classes section)
+  Due to commit 40ee1ba0dc the free in Curl_ntlm_decode_type2_target() is
+  longer required.
 
 
-- test509: libcurl initialization with memory callbacks and actual usage
+- ntlm: Moved the native Target Info clean-up from HTTP specific function
 
 
-Steve Holme (13 Mar 2013)
-- pop3: Removed unnecessary transfer cancellation
-  
-  Following commit e450f66a02d8 and the changes in the multi interface
-  being used internally, from 7.29.0, the transfer cancellation in
-  pop3_dophase_done() is no longer required.
+- ntlm: Moved SSPI clean-up code into SASL module
 
 
-Yang Tse (13 Mar 2013)
-- Makefile.am: add VMS files not being included in tarball
+- Makefile.dist: Added support for WinIDN
 
 
-- [Tom Grace brought this change]
+- Makefile.vc6: Added support for WinIDN
 
 
-  build_vms.com: VMS build fixes
-  
-  Added missing slash in cc_full_list.
-  Removed unwanted extra quotes inside symbol tool_main
-  for non-VAX architectures that triggered link failure.
-  Replaced curl_sys_inc with sys_inc.
+- Makefile.dist: Added some missing SSPI configurations
 
 
-- [Tom Grace brought this change]
+- Makefile.dist: Separated the groups of SSL configurations from each other
 
 
-  tool_main.c: fix VMS global variable storage-class specifier
-  
-  An extern submits a psect and a global reference to the linker to point
-  to it. Using "extern int vms_show = 0" also creates a globaldef.
+- Makefile.dist: Grouped the x64 configurations next to their x86 counterparts
+
+- curl.h: Tidy up of CURL_VERSION_* flags
   
   
-  The use of the extern by itself does declare a psect but does not declare
-  a globalsymbol. It does declare a globalref. But the linker needs one and
-  only one globaldef or there is an error.
+  As the list has gotten a little messy and hard to read, especially with
+  the introduction of deprecated items, aligned the values and comments
+  into clean columns and reworked some of the comments in the process.
 
 
-Patrick Monnerat (12 Mar 2013)
-- OS400: synchronize RPG binding
+- curl_tool: Added krb5 to the supported features
 
 
-Steve Holme (12 Mar 2013)
-- pop3: Fixed continuous wait when using --ftp-list
-  
-  Don't initiate a transfer when using --ftp-list.
+- configure: Added krb5 to the supported features
+
+- version info: Added Kerberos V5 to the supported features
 
 
-Kamil Dudka (12 Mar 2013)
-- [Zdenek Pavlas brought this change]
+Guenter Knauf (7 Nov 2014)
+- mk-ca-bundle.vbs: switch to new certdata.txt url.
 
 
-  curl_global_init: accept the CURL_GLOBAL_ACK_EINTR flag
+Steve Holme (7 Nov 2014)
+- RELEASE-NOTES: Synced with dcad09e125
+
+- http_digest: Fixed some memory leaks introduced in commit 6f8d8131b1
   
   
-  The flag can be used in pycurl-based applications where using the multi
-  interface would not be acceptable because of the performance lost caused
-  by implementing the select() loop in python.
+  Fixed a couple of memory leaks as a result of moving code that used to
+  populate allocuserpwd and relied on it's clean up.
+
+- docs: Updated following the addition of SSPI based HTTP digest auth
+
+- sasl_sspi: Tidy up of the existing digest code
   
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1168
-  Downstream Bug: https://bugzilla.redhat.com/919127
+  Following the addition of SSPI support for HTTP digest, synchronised
+  elements of the email digest code with that of the new HTTP code.
 
 
-- easy: do not ignore poll() failures other than EINTR
+- http_digest: Post SSPI support tidy up
+  
+  Post tidy up to ensure commonality of code style and variable names.
 
 
-Yang Tse (12 Mar 2013)
-- curl.h: stricter CURL_EXTERN linkage decorations logic
+Dan Fandrich (6 Nov 2014)
+- test552: Don't run HTTP digest tests for SSPI based builds
   
   
-  No API change involved.
+  Technical difficulties prevented this from going into the
+  previous commit.
+
+Steve Holme (6 Nov 2014)
+- tests: Don't run HTTP digest tests for SSPI based builds
   
   
-  Info: http://curl.haxx.se/mail/lib-2013-02/0234.html
+  Added !SSPI to the features list of the HTTP digest tests, as SSPI
+  based builds now use the Windows SSPI messaging API rather than the
+  internal functions, and we can't control the random numbers that get
+  used as part of the digest.
 
 
-Daniel Stenberg (11 Mar 2013)
-- THANKS: Latin-1'ified Jiri's name
+Daniel Stenberg (6 Nov 2014)
+- curl.1: show zone index use in a URL
 
 
-Steve Holme (11 Mar 2013)
-- test806: Added CRLF to reply data to be compliant with RFC-822
+Steve Holme (6 Nov 2014)
+- http_digest: Fixed auth retry loop when SSPI based authentication fails
 
 
-Daniel Stenberg (11 Mar 2013)
-- test805: added crlf newlines to make data size match
+- http_digest: Reworked the SSPI based input token storage
   
   
-  since mails sent are supposed to have CRLF line endings I added them and
-  now the data size after (\Seen) matches again properly
+  Reworked the input token (challenge message) storage as what is passed
+  to the buf and desc in the response generation are typically blobs of
+  data rather than strings, so this is more in keeping with other areas
+  of the SSPI code, such as the NTLM message functions.
 
 
-- test: fix newline for the data check of 807
+- sasl_sspi: Fixed compilation warning from commit 2d2a62e3d9
+  
+  Added void reference to unused 'data' parameter back to fix compilation
+  warning.
 
 
-Yang Tse (11 Mar 2013)
-- test801 to test807: fix protocol section line endings
+- sspi: Align definition values to even columns as we use 2 char spacing
 
 
-Steve Holme (10 Mar 2013)
-- Makefile.am: Corrected a couple of spurious tab characters
+- sspi: Fixed missing definition of ISC_REQ_USE_HTTP_STYLE
   
   
-  Corrected a couple of tab characters between test702 and test703, and
-  between test900 and test901 which should be spaces.
+  Some versions of Microsoft's sspi.h don't define this.
 
 
-- [Jiri Hruska brought this change]
+- sasl: Removed non-SSPI Digest functions and defines from SSPI based builds
+  
+  Introduced in commit 7e6d51a73c these functions and definitions are only
+  required by the internal challenge-response functions now.
 
 
-  imap: Added test807 for custom request functionality (STORE)
+- sasl_sspi: Added HTTP digest response generation code
 
 
-- [Jiri Hruska brought this change]
+- http_digest: Added SSPI based challenge decoding code
 
 
-  imap: Added test806 for IMAP (folder) LIST command
+- http_digest: Added SSPI based clean-up code
 
 
-- [Jiri Hruska brought this change]
+- http_digest: Added SSPI based authentication functions
+  
+  This temporarily breaks HTTP digest authentication in SSPI based builds,
+  causing CURLE_NOT_BUILT_IN to be returned. A follow up commit will
+  resume normal operation.
 
 
-  imap: Added test805 for APPEND functionality
+- http_digest: Added required SSPI based variables to digest structure
 
 
-- [Jiri Hruska brought this change]
+Daniel Stenberg (6 Nov 2014)
+- [Frank Gevaerts brought this change]
 
 
-  imap: Added test804 for skipping SELECT if in the same mailbox
+  contributors.sh: --releasenotes reads in names from RELEASE-NOTES
+  
+  This is very handy when updating the RELEASE-NOTES as then we sometimes
+  have names added manually in the existing list and we use this script to
+  update the set.
 
 
-- [Jiri Hruska brought this change]
+- RELEASE-NOTES: synced with 68542e72a9
 
 
-  imap: Added test802 and test803 for UIDVALIDITY verification
+- curl_easy_setopt.3: add CURLOPT_PINNEDPUBLICKEY
   
   
-  Added one test for a request with matching UIDVALIDITY and one which is
-  a mismatched request that will fail.
+  Reported-by: Christian Hägele
+  Bug: http://curl.haxx.se/mail/lib-2014-11/0078.html
 
 
-- [Jiri Hruska brought this change]
+Steve Holme (5 Nov 2014)
+- build: Fixed Visual Studio project file generation of strdup.[c|h]
+  
+  As the curl command-line tool now includes it's own version of strdup(),
+  for platforms that don't have it, fixed up the git respository Visual
+  Studio project file generator to not include the version from lib in the
+  tool project files, rather than having both lib\strdup.[c|h] and
+  src\tool_strdup.[c|h] present.
 
 
-  imap: Added test801 for UID and SECTION URL parameters
+Daniel Stenberg (5 Nov 2014)
+- tool_strdup.c: include the tool strdup.h
+  
+  ... not the lib/ one that the tool no longer uses!
 
 
-- [Jiri Hruska brought this change]
+- THANKS-filter: added another Michał Górny version we've used
 
 
-  imap-tests: Accept quoted parameters in ftpserver.pl
+- contributors.sh: split lists using " and "
   
   
-  Any IMAP parameter can come in escaped and in double quotes. Added a
-  simple function to unquote the command parameters and applied it to
-  the IMAP command handlers.
+  ... and require the space after the filtering to make the filter able to
+  remove names.
 
 
-- [Jiri Hruska brought this change]
+Steve Holme (5 Nov 2014)
+- http_digest: Fixed memory leaks from commit 6f8d8131b1
 
 
-  tests: Fix ftpserver.pl indentation
+- sasl: Fixed compilation warning from commit 25264131e2
   
   
-  The whole of FETCH_imap() had one extra space of indentation, whilst
-  APPEND_imap() used indentation of 2 instead of 4 in places.
-
-- Makefile.am: Corrected end of line filler character
+  Added forward declaration of digestdata to overcome the following
+  compilation warning:
   
   
-  The majority of lines, that specify a test file for inclusion, end with
-  a tab character before the slash whilst some end with a space. Corrected
-  those that end with a space to end with a tab character as well.
-
-- email-tests: Updated the test data that corresponds to the test number
+  warning: 'struct digestdata' declared inside parameter list
   
   
-  Finished segregating the email protocol tests, into their own protocol
-  based ranges, in preparation of adding more e-mail related tests to the
-  test suite.
+  Additionally made the ntlmdata forward declaration dependent on
+  USE_NTLM similar to how digestdata and kerberosdata are.
 
 
-- email-tests: Renamed the IMAP test to be 800
+- sasl: Fixed HTTP digest challenges with spaces between auth parameters
   
   
-  Continued segregating the email protocol tests, into their own protocol
-  based ranges, in preparation of adding more e-mail related tests to the
-  test suite.
+  Broken as part of the rework, in commit 7e6d51a73c, to assist with the
+  addition of HTTP digest via Windows SSPI.
 
 
-- email-tests: Renamed the SMTP tests to be in the range 900-906
+- http_digest: Fixed compilation errors from commit 6f8d8131b1
   
   
-  Continued segregating the email protocol tests, into their own protocol
-  based ranges, in preparation of adding more e-mail related tests to the
-  test suite.
+  error: invalid operands to binary
+  warning: pointer targets in assignment differ in signedness
 
 
-- email-tests: Renamed the POP3 tests to be in the range 850-857
-  
-  Started segregating the email protocol tests, into their own protocol
-  based ranges, in preparation of adding more e-mail related tests to the
-  test suite.
+- http_digest: Moved response generation into SASL module
 
 
-Daniel Stenberg (10 Mar 2013)
-- hiperfifo: updated to use current libevent API
-  
-  Patch by: Myk Taylor
+- http_digest: Moved challenge decoding into SASL module
 
 
-Steve Holme (10 Mar 2013)
-- imap: Reworked some function descriptions
+- http_digest: Moved clean-up function into SASL module
 
 
-- imap: Added some missing comments to imap_sendf()
+- http_digest: Moved algorithm definitions to SASL module
 
 
-- email: Removed hard returns from init functions
+- [Gisle Vanem brought this change]
 
 
-Daniel Stenberg (9 Mar 2013)
-- curl_multi_wait: avoid second loop if nothing to do
+  ssh: Fixed build on platforms where R_OK is not defined
   
   
-  ... hopefully this will also make clang-analyzer stop warning on
-  potentional NULL dereferences (which were false positives anyway).
+  Bug: http://curl.haxx.se/mail/lib-2014-11/0035.html
+  Reported-by: Jan Ehrhardt
 
 
-- multi_runsingle: avoid NULL dereference
+- strdup: Removed irrelevant comment
   
   
-  When Curl_do() returns failure, the connection pointer could be NULL so
-  the code path following needs to that that into account.
-  
-  Bug: http://curl.haxx.se/mail/lib-2013-03/0062.html
-  Reported by: Eric Hu
+  ...as Curl_memdup() duplicates an area of fix size memory, that may be
+  binary, and not a null terminated string.
 
 
-Steve Holme (9 Mar 2013)
-- imap: Re-factored all perform based functions
+- url.c: Fixed compilation warning
   
   
-  Standardised the naming of all perform based functions to be in the form
-  imap_perform_something().
-
-Daniel Stenberg (9 Mar 2013)
-- [Cédric Deltheil brought this change]
+  conversion from 'curl_off_t' to 'size_t', possible loss of data
 
 
-  examples/getinmemory.c: abort the transfer if not enough memory
+- http_digest: Use CURLcode instead of CURLdigest
   
   
-  No more use exit(3) but instead tell libcurl that no byte has been
-  written to let it return a `CURLE_WRITE_ERROR`. In addition, check
-  curl easy handle return code.
+  To provide consistent behaviour between the various HTTP authentication
+  functions use CURLcode based error codes for Curl_input_digest()
+  especially as the calling code doesn't use the specific error code just
+  that it failed.
 
 
-- RELEASE-NOTES: synced with ca3c0ed3a9c
+Daniel Stenberg (5 Nov 2014)
+- contributors.sh: filter common alternative name spellings
   
   
-  8 more bugfixes, one change and a bunch of contributors
+  docs/THANKS-filter is a new filter file for converting contributor names
+  we get or have recorded in alternative formats to the one we already use
+  in THANKS. To help us show individual contributors using a single
+  presentation of their names.
 
 
-Yang Tse (9 Mar 2013)
-- Makefile.am: empty AM_LDFLAGS definition for automake 1.7 compatibility
+- THANKS: added missing contributor from 2012
 
 
-Steve Holme (9 Mar 2013)
-- imap: Added description comments to all perform based functions
+- [Frank Gevaerts brought this change]
 
 
-- imap: Removed the need for separate custom request functions
+  Remove duplicate names.
   
   
-  Moved the custom request processing into the LIST command as the logic
-  is the same.
-
-- imap: Corrected typo in comment
-
-Yang Tse (9 Mar 2013)
-- Makefile.am: empty AM_LDFLAGS definition for automake 1.7 compatibility
+  The removed names also appear as:
+  Andrés García, François Charlier, Gökhan Şengün, Michał Górny, Sébastien
+  Willemijns, Christopher Conroy, John E. Malmberg, Luca Altea, Peter Su,
+  S. Moonesamy, Samuel Listopad, Yasuharu Yamada, Karl Moerder
 
 
-Steve Holme (9 Mar 2013)
-- imap: Moved imap_logout() to be grouped with the other perform functions
-
-- email: Updated the function descriptions for the logout / quit functions
+Steve Holme (5 Nov 2014)
+- sspi: Define authentication package name constants
+  
+  These were previously hard coded, and whilst defined in security.h,
+  they may or may not be present in old header files given that these
+  defines were never used in the original code.
   
   
-  Updated the function description comments following commit 4838d196fdbf.
+  Not only that, but there appears to be some ambiguity between the ANSI
+  and UNICODE NTLM definition name in security.h.
 
 
-- email: Simplified the logout / quit functions
+Patrick Monnerat (5 Nov 2014)
+- Adjust OS400-specific support to last release
+
+Daniel Stenberg (5 Nov 2014)
+- THANKS: added two missing names and removed a duplicate
   
   
-  Moved the blocking state machine to the disconnect functions so that the
-  logout / quit functions are only responsible for sending the actual
-  command needed to logout or quit.
+  ./contributors.sh found these extra ones that somehow had fallen
+  through the cracks and never gotten added here.
   
   
-  Additionally removed the hard return on failure.
+  Reported-by: Frank Gevaerts
 
 
-- email: Tidied up the *_regular_transfer() functions
-  
-  Added comments and simplified convoluted dophase_done comparison.
+- bump: towards next release
 
 
-- email: Simplified nesting of if statements in *_doing() functions
+- THANKS: added names from 7.39.0 release notes
 
 
-Daniel Stenberg (8 Mar 2013)
-- RELEASE-NOTES: mention that krb4 is up for consideration
+Version 7.39.0 (5 Nov 2014)
 
 
-Steve Holme (8 Mar 2013)
-- imap: Fixed handling of untagged responses for the STORE custom command
-  
-  Added an exception, for the STORE command, to the untagged response
-  processor in imap_endofresp() as servers will back respones containing
-  the FETCH keyword instead.
+Daniel Stenberg (5 Nov 2014)
+- RELEASE-NOTES: 7.39.0 release (commit b3875606925)
 
 
-Yang Tse (8 Mar 2013)
-- curlbuild.h.dist: enhance non-configure GCC ABI detection logic
+- curl_easy_duphandle: CURLOPT_COPYPOSTFIELDS read out of bounds
   
   
-  GCC specific adjustments:
+  When duplicating a handle, the data to post was duplicated using
+  strdup() when it could be binary and contain zeroes and it was not even
+  zero terminated! This caused read out of bounds crashes/segfaults.
   
   
-  - check __ILP32__ before 32 and 64bit processor architectures in
-    order to detect ILP32 programming model on 64 bit processors
-    which, of course, also support LP64 programming model, when using
-    gcc 4.7 or newer.
+  Since the lib/strdup.c file no longer is easily shared with the curl
+  tool with this change, it now uses its own version instead.
   
   
-  - keep 32bit processor architecture checks in order to support gcc
-    versions older than 4.7 which don't define __ILP32__
+  Bug: http://curl.haxx.se/docs/adv_20141105.html
+  CVE: CVE-2014-3707
+  Reported-By: Symeon Paraschoudis
+
+- lib544.c: use duphandle for test 545
   
   
-  - check __LP64__ for gcc 3.3 and newer, while keeping 64bit processor
-    architecture checks for older versions which don't define __LP64__
+  To verify that curl_easy_duphandle() works fine on a handle that has
+  gotten data stored with *_COPYPOSTFIELDS.
 
 
-- curlbuild.h.dist: fix GCC build on ARM systems without configure script
+- tests: add new feature 'SSLpinning'
   
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1205
-  Reported by: technion
+  ... and make test 2034 and 2035 require it, and have it set when built
+  with OpenSSL or GnuTLS.
 
 
-- [Gisle Vanem brought this change]
+- buildconf: update copyright year
 
 
-  polarssl.c: fix header filename typo
+Steve Holme (4 Nov 2014)
+- INSTALL: Consistent spacing in section headings, paragraphs and examples
 
 
-- configure: use XC_LIBTOOL for portability across libtool versions
+Daniel Stenberg (4 Nov 2014)
+- buildconf: stop checking for libtool
+  
+  As we only use libtoolize, only check for that!
 
 
-- xc-lt-iface.m4: provide XC_LIBTOOL macro
+Steve Holme (4 Nov 2014)
+- INSTALL: Corrected MIT Kerberos and Heimdal package names
 
 
-Steve Holme (7 Mar 2013)
-- imap: Fixed SELECT not being performed for custom requests
+- README: Corrected inconsistent use of --help
 
 
-- email: Minor code tidy up following recent changes
+- INSTALL: Use GSS-API rather than GSSAPI
   
   
-  Removed unwanted braces and added variable initialisation.
+  As implementations are refereed to GSS-API libraries as per the RFC and
+  GSSAPI typically refers to the SASL authentication mechanism.
+  
+  ...and minor rewording on the same paragraph.
 
 
-- DOCS: Corrected the IMAP URL grammar of the UIDVALIDITY parameter
+- README: Added note about using Visual Studio projects out of git repository
 
 
-- FEATURES: Provided a little clarity in some IMAP features
+Daniel Stenberg (4 Nov 2014)
+- [K. R. Walker brought this change]
 
 
-- email: Optimised block_statemach() functions
+  cmake: fix ZLIB_INCLUDE_DIRS use
   
   
-  Optimised the result test in each of the block_statemach() functions.
-
-- DOCS: Added the list command to the IMAP URL section
+  CMake 2.8's FindZLIB.cmake documents ZLIB_INCLUDE_DIRS, see
+  http://www.cmake.org/cmake/help/v2.8.0/cmake.html#module:FindZLIB
   
   
-  Added examples of the list command and clarified existing example URLs
-  following recent changes.
+  Bug: https://github.com/bagder/curl/pull/123
 
 
-- FEATURES: Updated for recent imap additions
+- [Jay Satiro brought this change]
+
+  SSL: PolarSSL default min SSL version TLS 1.0
   
   
-  Updated the imap features list, corrected a typo in the smtp features
-  and clarified a pop3 feature.
+  - Prior to this change no SSL minimum version was set by default at
+  runtime for PolarSSL. Therefore in most cases PolarSSL would probably
+  have defaulted to a minimum version of SSLv3 which is no longer secure.
 
 
-Daniel Stenberg (7 Mar 2013)
-- version bump: the next release will be 7.30.0
+- opts-Makefile: put more man pages into dist and make hmtl+pdf
 
 
-- checksrc: ban unsafe functions
-  
-  The list of unsafe functions currently consists of sprintf, vsprintf,
-  strcat, strncat and gets.
+- curl_multi_setopt.3: refer to stand-alone pages
   
   
-  Subsequently, some existing code needed updating to avoid warnings on
-  this.
+  ... instead of duplicating info.
 
 
-Steve Holme (7 Mar 2013)
-- RELEASE-NOTES: Added missing imap fixes and additions
+- opts: more multi options as stand-alone man pages
+
+- Makefile.am: two cmake files are gone
   
   
-  With all the recent imap changes it wasn't clear what new features and
-  fixes should be included in the release notes.
+  8cb010144 removed the CurlCheckCSourceCompiles.cmake and
+  CurlCheckCSourceRuns.cmake files
 
 
-Nick Zitzmann (6 Mar 2013)
-- RELEASE-NOTES: brought this up-to-date with the latest changes
+- opts: made stand-alone man-pages for several multi options
 
 
-Steve Holme (6 Mar 2013)
-- [Jiri Hruska brought this change]
+- [Carlo Wood brought this change]
 
 
-  imap: Fixed test801 and test1321 to specify a message UID
+  Curl_single_getsock: fix hold/pause sock handling
   
   
-  Just a folder list would be retrieved if UID was not specified now.
+  The previous condition that checked if the socket was marked as readable
+  when also adding a writable one, was incorrect and didn't take the pause
+  bits properly into account.
 
 
-- [Jiri Hruska brought this change]
+- [Peter Wu brought this change]
 
 
-  imap: Fixed ftpserver.pl to allow verification even through LIST command
+  cmake: fix struct sockaddr_storage check
   
   
-  Commit 198012ee inadvertently broke LIST_imap().
-
-- imap: Tidied up the APPEND and final APPEND response functions
+  CHECK_TYPE_SIZE_PREINCLUDE is an internal, undocumented variable which
+  was removed in cmake 2.8.1. According to the MSDN docs[1], inclusion
+  of winsock2.h is sufficient. WIN32_LEAN_AND_MEAN does not really seem
+  to affect the tests, so remove it too[2].
   
   
-  Removed unnecessary state changes on failure and setting of result codes
-  on success.
-
-- imap: Tidied up the final FETCH response function
+  For the non-windows case, remove inet headers as POSIX only requires
+  sys/socket.h.
   
   
-  Removed unnecessary state change on failure and setting of result code on
-  success.
-
-- imap: Tidied up the LIST response function
+   [1]: http://msdn.microsoft.com/en-us/library/windows/desktop/ms740504%28v=vs.85%29.aspx
+   [2]: http://stackoverflow.com/questions/11040133/what-does-defining-win32-lean-and-mean-exclude-exactly
   
   
-  Reworked comments as they referenced custom commands, removed
-  unnecessary state change on failure and setting of result code on
-  success.
+  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
 
 
-- imap: Removed the custom request response function
+- [Peter Wu brought this change]
+
+  cmake: clean OtherTests, fixing -Werror
+  
+  There were several -Wunused warnings and one duplicate macro definition.
+  The EXTRA_DEFINES variable of the CurlCheckCSources macro was being
+  abused ("__unused1\n#undef inline\n#define __unused2", seriously?) to
+  insert extra C code. Avoid this broken abstraction and use cmake's
+  check_c_source_compiles directly (works fine with CMake 2.8, maybe
+  even cmake 2.6).
+  
+  After cleaning up all related variables (EXTRA_DEFINES,
+  HEADER_INCLUDES, auxiliary headers_hack), also remove a duplicate
+  add_headers_include macro and remove duplicate header additions before
+  the struct timeval check.
+  
+  Oh, and now the code is converted to use CheckCSourceRuns and
+  CheckCSourceCompiles, the two curl-specific helpers can be removed.
+  Unfortunately, the cmake output is now slightly more verbose. Before:
   
   
-  Removed imap_state_custom_resp() as imap_state_list_resp() provides the
-  same functionality.
+      Performing Test int send(int, const void *, size_t, int) (curl_cv_func_send_test)
+      Performing Test int send(int, const void *, size_t, int) (curl_cv_func_send_test) - Failed
+  
+  Since check_c_source_compiles prints the varname, now you see:
+  
+      Performing Test curl_cv_func_send_test
+      Performing Test curl_cv_func_send_test - Failed
+      Tested: int send(int, const void *, size_t, int)
+  
+  Compared cmake output with each other using vimdiff, no functional
+  differences were found. Tested with GCC 4.9.1 and Clang 3.5.0.
+  
+  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
 
 
-- [Jiri Hruska brought this change]
+- [Peter Wu brought this change]
 
 
-  imap: Updated ftpserver.pl to be more compliant, added new commands
+  cmake: fix gethostby{addr,name}_r in CurlTests
   
   
-  Enriched IMAP capabilities of ftpserver.pl in order to be able to
-  add tests for the new IMAP features.
+  This patch cleans up the automatically-generated (?) code and fixes one
+  case that will always fail due to syntax error.
   
   
-  * Added support for APPEND - Saves uploaded data to log/upload.$testno
-  * Added support for LIST - Returns the contents of <reply/> section in
-    the current test, like e.g FETCH.
-  * Added support for STORE - Returns hardcoded updated flags
-  * Changed handling of SELECT - Returns much more information in the
-    usual set of untagged responses; uses hardcoded data from an example
-    in the IMAP RFC
-  * Changed handling of FETCH - Fixed response format
-
-- imap: Added check for empty UID in FETCH command
+  HAVE_GETHOSTBYADDR_R_5_REENTRANT always failed because of a trailing
+  character ("int length;q"). Several parameter type and unused variable
+  warnings popped up. This causes a detection failure with -Werror.
   
   
-  As the UID has to be specified by the user for the FETCH command to work
-  correctly, added a check to imap_fetch(), although strictly speaking it
-  is protected by the call from imap_perform().
-
-Kamil Dudka (6 Mar 2013)
-- nss: fix misplaced code enabling non-blocking socket mode
+  Observe that the REENTRANT cases are exactly the same as their
+  non-REENTRANT cases except for a `_REENTRANT` macro definition.
+  Merge all these pieces and build one big main function with different
+  cases, but reusing variables where logical.
   
   
-  The option needs to be set on the SSL socket.  Setting it on the model
-  takes no effect.  Note that the non-blocking mode is still not enabled
-  for the handshake because the code is not yet ready for that.
-
-Daniel Stenberg (6 Mar 2013)
-- imap: fix compiler warning
+  For the cases where the parameters where NULL, I looked at
+  lib/hostip4.c to get an idea of the parameters types.
   
   
-  imap.c:694:21: error: unused variable 'imapc' [-Werror=unused-variable]
-
-Steve Holme (5 Mar 2013)
-- imap: Added support for list command
+  void-cast variables such as 'rc' to avoid -Wuninitialized errors.
+  
+  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
 
 
-- imap: Added list perform and response handler functions
+- [Peter Wu brought this change]
 
 
-- imap: Introduced IMAP_LIST state
+  cmake: drop _BSD_SOURCE macro usage
+  
+  autotools does not use features.h nor _BSD_SOURCE. As this macro
+  triggers warnings since glibc 2.20, remove it. It should not have
+  functional differences.
+  
+  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
 
 
-- imap: Small tidy up of imap_select() to match imap_append()
+Steve Holme (2 Nov 2014)
+- RELEASE-NOTES: Synced with d71ea7c01e
   
   
-  Updated the style of imap_select() before adding the LIST command.
+  Additionally, updated "GSSAPI" to "GSS-API" for a Cmake related change
+  as GSSAPI can be confused with the authentication mechanism rather than
+  a GSS-API implementation library such as MIT or Heimdal.
 
 
-- imap: Moved mailbox check from the imap_do() function
+- build: Added WinIDN build configuration options
   
   
-  In preparation for the addition of the LIST command, moved the mailbox
-  check from imap_do() to imap_select() and imap_append().
+  Added support for WinIDN build configurations to the VC6 project files.
 
 
-- curl_setup.h: Added S_IRDIR() macro for compilers that don't support it
+- build: Added WinIDN build configuration options
   
   
-  Commit 26eaa8383001 introduces the use of S_ISDIR() yet some compilers,
-  such as MSVC don't support it, so we must define a substitute using
-  file flags and mask.
+  Added support for WinIDN build configurations to the VC7 and VC7.1
+  project files.
 
 
-Daniel Stenberg (4 Mar 2013)
-- AddFormData: prevent only directories from being posted
+- build: Fixed the pre-processor separator in Visual Studio project files
   
   
-  Commit f4cc54cb4746ae5a6d (shipped as part of the 7.29.0 release) was a
-  bug fix that introduced a regression in that while trying to avoid
-  allowing directory names, it also forbade "special" files like character
-  devices and more. like "/dev/null" as was used by Oliver who reported
-  this regression.
+  A left over from the VC6 project files, so mainly cosmetic in Visual
+  Studio .NET as it can handle both comma and semi-colon characters for
+  separating multiple pre-processor definitions.
   
   
-  Reported by: Oliver Gondža
-  Bug: http://curl.haxx.se/mail/archive-2013-02/0040.html
-
-Nick Zitzmann (3 Mar 2013)
-- darwinssl: fix infinite loop if server disconnected abruptly
+  However, the IDE uses semi-colons if the value is edited, and as such,
+  this may cause problems in future for anyone updating the files or
+  merging patches.
   
   
-  If the server hung up the connection without sending a closure alert,
-  then we'd keep probing the socket for data even though it's dead. Now
-  we're ready for this situation.
+  Used the Visual Studio IDE to correct the separator character.
+
+- build: Added optional specific version generation of VC project files
   
   
-  Bug: http://curl.haxx.se/mail/lib-2013-03/0014.html
-  Reported by: Aki Koskinen
+  ..when working from the git repository. This is particularly useful
+  for single development environments where the project files for all
+  supported versions of Visual Studio may not be required.
+
+- [Jay Satiro brought this change]
 
 
-Steve Holme (3 Mar 2013)
-- imap: Added comments to imap_append()
+  build-openssl.bat: Fix x64 release build
+  
+  Prior to this change if x64 release was specified a failed attempt was
+  made to build x86 release instead.
 
 
-- [Jiri Hruska brought this change]
+- CURLOPT_XOAUTH2_BEARER.3: Corrected the OAuth version number
 
 
-  imap: Added required mailbox check for FETCH and APPEND commands
+- CURLOPT_SASL_IR.3: Added supported mechanism information
+  
+  ...and removed duplication of what protocols are supported from the
+  description text.
 
 
-- pingpong.c: Fix enumerated type mixed with another type
+- opts: Use common wording for MAIL related names
 
 
-- smtp: Updated the coding style for state changes after a send operation
+- opts: Use common wording for TLS user/password option names
   
   
-  Some state changes would be performed after a failure test that
-  performed a hard return, whilst others would be performed within a test
-  for success. Updated the code, for consistency, so all instances are
-  performed within a success test.
+  ...and revised the proxy wording a little as well.
 
 
-- pop3: Updated the coding style for state changes after a send operation
+- CURLOPT_MAXCONNECTS.3: Reworked the description to be less confusing
   
   
-  Some state changes would be performed after a failure test that
-  performed a hard return, whilst others would be performed within a test
-  for success. Updated the code, for consistency, so all instances are
-  performed within a success test.
+  ...and corrected a related typo in curl_easy_setopt.3.
 
 
-- imap: Fixed typo in variable assignment
+Guenter Knauf (2 Nov 2014)
+- RELEASE-NOTES: removed obsolete entry; fixed entry.
 
 
-- [Jiri Hruska brought this change]
+Steve Holme (2 Nov 2014)
+- RELEASE-NOTES: Synced with e7da67f5d3
 
 
-  imap: Fixed custom request handling in imap_done()
+- docs: Added mention of Kerberos for CURL_VERSION_SSPI
   
   
-  Fixed imap_done() so that neither the FINAL states are not entered when
-  a custom command has been performed.
+  As this has been present for SOCKSv5 proxy since v7.19.4 and for IMAP,
+  POP3 and SMTP authentication since v7.38.0.
 
 
-- [Jiri Hruska brought this change]
-
-  imap: Enabled custom requests in imap_select_resp()
+- CURL_VERSION_KERBEROS4: Mark as deprecated
   
   
-  Changed imap_select_resp() to invoke imap_custom() instead of
-  imap_fetch() after the mailbox has been selected if a custom
-  command has been set.
-
-- [Jiri Hruska brought this change]
+  Support for Kerberos V4 was removed in v7.33.0.
 
 
-  imap: Enabled custom requests in imap_perform()
+- sasl: Fixed Kerberos V5 inclusion when CURL_DISABLE_CRYPTO_AUTH is used
   
   
-  Modified imap_perform() to start with the custom command instead of
-  SELECT when a custom command is to be performed and no mailbox has
-  been given.
+  Typically the USE_WINDOWS_SSPI definition would not be used when the
+  CURL_DISABLE_CRYPTO_AUTH define is, however, it is still a valid build
+  configuration and, as such, the SASL Kerberos V5 (GSSAPI) authentication
+  data structures and functions would incorrectly be used when they
+  shouldn't be.
+  
+  Introduced a new USE_KRB5 definition that takes into account the use of
+  CURL_DISABLE_CRYPTO_AUTH like USE_SPNEGO and USE_NTLM do.
 
 
-- [Jiri Hruska brought this change]
+- openssl: Use 'CURLcode result'
+  
+  More CURLcode fixes.
 
 
-  imap: Added custom request perform and response handler functions
+Daniel Stenberg (1 Nov 2014)
+- resume: consider a resume from [content-length] to be OK
   
   
-  Added imap_custom(), which initiates the custom command processing,
-  and an associated response handler imap_state_custom_resp(), which
-  handles any responses by sending them to the client as body data.
+  Basically since servers often then don't respond well to this and
+  instead send the full contents and then libcurl would instead error out
+  with the assumption that the server doesn't support resume. As the data
+  is then already transfered, this is now considered fine.
   
   
-  All untagged responses with the same name as the first word of the
-  custom request string are accepted, with the exception of SELECT and
-  EXAMINE which have responses that cannot be easily identified. An
-  extra check has been provided for them so that any untagged responses
-  are accepted for them.
-
-- pop3: Fixed unnecessary parent structure reference
+  Test case 1434 added to verify this. Test case 1042 slightly modified.
   
   
-  Updated pop3 code following recent imap changes.
-
-- [Jiri Hruska brought this change]
+  Reported-by: hugo
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1443
 
 
-  imap: Added custom request parsing
+Steve Holme (1 Nov 2014)
+- openssl: Use 'CURLcode result'
   
   
-  Added imap_parse_custom_request() for parsing the CURLOPT_CUSTOMREQUEST
-  parameter which URL decodes the value and separates the request from
-  any parameters - This makes it easier to filter untagged responses
-  by the request command.
+  More standardisation of CURLcode usage and coding style.
 
 
-- [Jiri Hruska brought this change]
-
-  imap: Introduced custom request parameters
+- openssl: Use 'CURLcode result'
   
   
-  Added custom request parameters to the per-request structure.
+  ...and some minor code style changes.
 
 
-- [Jiri Hruska brought this change]
+- ftplistparser: We prefer 'CURLcode result'
 
 
-  imap: Introduced IMAP_CUSTOM state
+- opts: Use common wording for user/password option names
 
 
-- imap: Minor code tidy up
+- CURLOPT_CONNECT_ONLY.3: Removed "This option is implemented for..." text
   
   
-  Minor tidy up of code layout and comments following recent changes.
+  As this is covered by the PROTOCOLS section and saves having to update
+  two parts of the document with the same information in future.
 
 
-- imap: Simplified the imap_state_append_resp() function
+- CURLOPT_GSSAPI_DELEGATION.3: Use GSS-API rather than GSSAPI
   
   
-  Introduced the result code variable to simplify the state changes and
-  remove the hard returns.
+  As implementations are refereed to GSS-API libraries as per the RFC and
+  GSSAPI typically refers to an authentication mechanism.
 
 
-- imap: Changed successful response logic in imap_state_append_resp()
+- CURLOPT_CONNECT_ONLY.3: Fixed incomplete protocol list
   
   
-  For consistency changed the logic of the imap_state_append_resp()
-  function to test for an unsucessful continuation response rather than a
-  succesful one.
+  Added missing IMAP to the protocol list.
+
+- code cleanup: Use 'CURLcode result'
 
 
-- imap: Standardised imapcode condition tests
+- curl_easy_setopt.3: Fixed lots of typos
+
+- curl_easy_setopt.3: Moved CURLOPT_DIRLISTONLY into PROTOCOL OPTIONS
   
   
-  For consistency changed two if(constant != imapcode) tests to be
-  if(imapcode != constant).
+  ...as this option affects more that just FTP.
 
 
-- imap: Moved imap_append() to be with the other perform functions
+Guenter Knauf (30 Oct 2014)
+- build: added Watcom support to build with WinSSL.
 
 
-- [Jiri Hruska brought this change]
+Daniel Stenberg (30 Oct 2014)
+- CURLOPT_PINNEDPUBLICKEY.3: added details
 
 
-  imap: Enabled APPEND support in imap_perform()
+Steve Holme (30 Oct 2014)
+- CURLOPT_CUSTOMREQUEST.3: Fixed incomplete protocol list
   
   
-  Added logic in imap_perform() to perform an APPEND rather than SELECT
-  and FETCH if an upload has been specified.
+  Whilst the description included information about SMTP, the protocol
+  list only showed "TTP, FTP, IMAP, POP3".
 
 
-- [Jiri Hruska brought this change]
+- CURLOPT_DIRLISTONLY.3: Added information about the usage in POP3
 
 
-  imap: Implemented APPEND final processing
+Daniel Stenberg (29 Oct 2014)
+- openssl: enable NPN separately from ALPN
   
   
-  The APPEND operation needs to be performed in several steps:
-    1) We send "<tag> APPEND <mailbox> <flags> {<size>}\r\n"
-    2) Server responds with continuation respose "+ ...\r\n"
-    3) We start the transfer and send <size> bytes of data
-    4) Only now we end the request command line by sending "\r\n"
-    5) Server responds with "<tag> OK ...\r\n"
+  ... and allow building with nghttp2 but completely without NPN and ALPN,
+  as nghttp2 can still be used for plain-text HTTP.
   
   
-  This commit performs steps 4 and 5, in the DONE phase, as more
-  processing is required after the transfer.
-
-- [Jiri Hruska brought this change]
+  Reported-by: Lucas Pardue
 
 
-  imap: Added APPEND perform and response handler functions
+- configure.ac: remove checks for OpenSSL NPN/ALPN funcs again
   
   
-  Added imap_append() function to initiate upload and imap_append_resp()
-  to handle the continuation response and start the transfer.
+  ... since the conditional in the code are now based on OpenSSL versions
+  instead to better support non-configure builds.
 
 
-- [Jiri Hruska brought this change]
+- opts: added some "SEE ALSO" references
 
 
-  imap: Introduced IMAP_APPEND and IMAP_APPEND_FINAL states
+Steve Holme (29 Oct 2014)
+- RELEASE-NOTES: Synced with 32913182dc
 
 
-- [Jiri Hruska brought this change]
+- vtls.c: Fixed compilation warning
+  
+  conversion from 'size_t' to 'unsigned int', possible loss of data
 
 
-  imap: Updated setting of transfer variables in imap_state_fetch_resp()
+- sspi: Return CURLE_LOGIN_DENIED on AcquireCredentialsHandle() failure
   
   
-  Add number of bytes retrieved from the PP cache to req.bytecount and set
-  req.maxdownload only when starting a proper download.
+  Return a more appropriate error, rather than CURLE_OUT_OF_MEMORY when
+  acquiring the credentials handle fails. This is then consistent with
+  the code prior to commit f7e24683c4 when log-in credentials were empty.
 
 
-- [Jiri Hruska brought this change]
+- sasl_sspi: Allow DIGEST-MD5 to use current windows credentials
+  
+  Fixed the ability to use the current log-in credentials with DIGEST-MD5.
+  I had previously disabled this functionality in commit 607883f13c as I
+  couldn't get this to work under Windows 8, however, from testing HTTP
+  Digest authentication through Windows SSPI and then further testing of
+  this code I have found it works in Windows 7.
+  
+  Some further investigation is required to see what the differences are
+  between Windows 7 and 8, but for now enable this functionality as the
+  code will return an error when AcquireCredentialsHandle() fails.
 
 
-  imap: Improved FETCH response parsing
+Kamil Dudka (29 Oct 2014)
+- transfer: drop the code handling the ssl_connect_retry flag
   
   
-  Added safer parsing of the untagged FETCH response line and the size of
-  continuation data.
+  Its last use has been removed by the previous commit.
 
 
-- imap: Fixed accidentally lossing the result code
+- nss: drop the code for libcurl-level downgrade to SSLv3
   
   
-  Accidentally lost the result code in imap_state_capability() and
-  imap_state_login() with commit b06a78622609.
+  This code was already deactivated by commit
+  ec783dc142129d3860e542b443caaa78a6172d56.
 
 
-- imap: Another minor comment addition / tidy up
+- openssl: fix a line length warning
 
 
-- imap: Updated the coding style for state changes after a send operation
-  
-  Some state changes would be performed after a failure test that
-  performed a hard return, whilst others would be performed within a test
-  for success. Updated the code, for consistency, so all instances are
-  performed within a success test.
+Guenter Knauf (29 Oct 2014)
+- Added NetWare support to build with nghttp2.
 
 
-- pop3 / smtp: Small comment tidy up
+- Fixed error message since we require ALPN support.
+
+- Check for ALPN via OpenSSL version number.
   
   
-  Small tidy up to keep some comments consistant across each of the email
-  protocols.
+  This check works also with to non-configure platforms.
 
 
-- [Jiri Hruska brought this change]
+Steve Holme (28 Oct 2014)
+- sasl_sspi: Fixed typo in comment
 
 
-  imap: FETCH response handler cleanup before further changes
-  
-  Removed superfluous NULL assignment after Curl_safefree() and rewrote
-  some comments and logging messages.
+- code cleanup: We prefer 'CURLcode result'
 
 
-- pop3: Small tidy up of function arguments
+Daniel Stenberg (28 Oct 2014)
+- TODO: consider supporting STAT
 
 
-- imap: Small tidy up of function arguments
+- mk-ca-bundle: spell fix "version"
 
 
-- smtp: Corrected debug message for POP3_AUTH_FINAL constant
+- HTTP: return larger than 3 digit response codes too
   
   
-  Following commit ad3177da24b8 corrected the debug message in state()
-  from AUTH to AUTH_FINAL.
+  HTTP 1.1 is clearly specified to only allow three digit response codes,
+  and libcurl used sscanf("%3d") for that purpose. This made libcurl
+  support smaller numbers but not larger. It does now, but we will not
+  make any specific promises nor document this further since it is going
+  outside of what HTTP is.
+  
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1441
+  Reported-by: Balaji
 
 
-- pop3: Corrected debug message for POP3_AUTH_FINAL constant
+- src/: remove version.h.dist from gitignore
   
   
-  Following commit afad1ce753a1 corrected the debug message in state()
-  from AUTH to AUTH_FINAL.
+  It has not been used since commit f7bfdbab in 2011
 
 
-- imap: Corrected debug message for IMAP_AUTHENTICATE_FINAL constant
+Steve Holme (26 Oct 2014)
+- ntlm: We prefer 'CURLcode result'
   
   
-  Following commit 13006f3de9ec corrected the debug message in state()
-  from AUTHENTICATE to AUTHENTICATE_FINAL.
+  Continuing commit 0eb3d15ccb more return code variable name changes.
+
+Guenter Knauf (26 Oct 2014)
+- Cosmetics: lowercase non-special subroutine names.
 
 
-- [Jiri Hruska brought this change]
+Steve Holme (26 Oct 2014)
+- RELEASE-NOTES: Synced with 07ac29a058
 
 
-  imap: Fixed error code returned for invalid FETCH response
+- http_negotiate: We prefer 'CURLcode result'
   
   
-  If the FETCH command does not result in an untagged response the the
-  UID is probably invalid. As such do not return CURLE_OK.
+  Continuing commit 0eb3d15ccb more return code variable name changes.
 
 
-- [Jiri Hruska brought this change]
+- http_negotiate: Fixed missing check for USE_SPNEGO
 
 
-  imap: Added processing of the final FETCH responses
-  
-  Not processing the final FETCH responses was not optimal, not only
-  because the response code would be ignored but it would also leave data
-  unread on the socket which would prohibit connection reuse.
+- sspi: Synchronization of cleanup code between auth mechanisms
 
 
-- [Jiri Hruska brought this change]
+- sspi: Renamed max token length variables
+  
+  Code cleanup to try and synchronise code between the different SSPI
+  based authentication mechanisms.
 
 
-  imap: Introduced FETCH_FINAL state for processing final fetch responses
+- sspi: Renamed expiry time stamp variables
   
   
-  A typical FETCH response can be broken down into four parts:
+  Code cleanup to try and synchronise code between the different SSPI
+  based authentication mechanisms.
+
+- sspi: Only call CompleteAuthToken() when complete is needed
   
   
-    1) "* <uid> FETCH (<what> {<size>}\r\n", using continuation syntax
-    2) <size> bytes of the actual message
-    3) ")\r\n", finishing the untagged response
-    4) "<tag> OK ...", finishing the command
+  Don't call CompleteAuthToken() after InitializeSecurityContext() has
+  returned SEC_I_CONTINUE_NEEDED as this return code only indicates the
+  function should be called again after receiving a response back from
+  the server.
   
   
-  Part 1 is read in imap_fetch_resp(), part 2 is consumed in the PERFORM
-  phase by the transfer subsystem, parts 3 and 4 are currently ignored.
+  This only affected the Digest and NTLM authentication code.
 
 
-- imap: fix autobuild warning
+Dan Fandrich (26 Oct 2014)
+- Added the "flaky" keyword to a number of tests
   
   
-  Removed whitespace from imap_perform()
+  Each shows evidence of flakiness on at least one platform on
+  the autobuilds. Users can use this keyword to skip these tests
+  if desired.
 
 
-- imap: fix compiler warning
+Steve Holme (26 Oct 2014)
+- ntlm: Return all errors from Curl_ntlm_core_mk_nt_hash()
   
   
-  error: declaration of 'imap' shadows a previous local
+  For consistency with other areas of the NTLM code propagate all errors
+  from Curl_ntlm_core_mk_nt_hash() up the call stack rather than just
+  CURLE_OUT_OF_MEMORY.
+
+- ntlm: Return CURLcode from Curl_ntlm_core_mk_lm_hash()
 
 
-- smtp: Re-factored the final SMTP_AUTH constant
+- ntlm: Use 'CURLcode result'
   
   
-  Changed the final SMTP_AUTH constant to SMTP_AUTH_FINAL for consistency
-  with the response function.
+  Continuing commit 0eb3d15ccb more return code variable name changes.
 
 
-- pop3: Re-factored the final POP3_AUTH constant
+- ntlm: Only define ntlm data structure when USE_NTLM is defined
+
+- ntlm: Changed handles to be dynamic like other SSPI handles
   
   
-  Changed the final POP3_AUTH constant to POP3_AUTH_FINAL for consistency
-  with the response function.
+  Code cleanup to try and synchronise code between the different SSPI
+  based authentication mechanisms.
 
 
-- imap: Re-factored final IMAP_AUTHENTICATE constant
+- ntlm: Renamed handle variables to match other SSPI structures
   
   
-  Changed the final IMAP_AUTHENTICATE constant to IMAP_AUTHENTICATE_FINAL
-  for consistency with the response function.
+  Code cleanup to try and synchronise code between the different SSPI
+  based authentication mechanisms.
 
 
-- imap: Updated the coding style of imap_state_servergreet_resp()
+- ntlm: Renamed SSPI based input token variables
   
   
-  Updated the coding style, in this function, to be consistant with other
-  response functions rather then performing a hard return on failure.
+  Code cleanup to try and synchronise code between the different SSPI
+  based authentication mechanisms.
 
 
-- imap: Reversed the logic of the (un)successful tagged SELECT response
+- ntlm: We prefer 'CURLcode result'
   
   
-  Reversed the logic of the unsuccessful vs successful tagged SELECT
-  response in imap_state_select_resp() to be more logical to read.
+  Continuing commit 0eb3d15ccb more return code variable name changes.
 
 
-- imap: Reversed the logic of the (un)successful tagged CAPABILITY response
+- build: Added WinIDN build configuration options
   
   
-  Reversed the logic of the unsuccessful vs successful tagged CAPABILITY
-  response in imap_state_capability_resp() to be more logical to read.
+  Added support for WinIDN build configurations to the VC8 and VC9
+  project files.
 
 
-- imap: Corrected char* references with char *
+Nick Zitzmann (24 Oct 2014)
+- darwinssl: detect possible future removal of SSLv3 from the framework
   
   
-  Corrected char* references made in commit: 709b3506cd9b.
+  If Apple ever drops SSLv3 support from the Security framework, we'll fail with an error if the user insists on using SSLv3.
 
 
-- [Jiri Hruska brought this change]
+Patrick Monnerat (24 Oct 2014)
+- gskit.c: remove SSLv3 from SSL default.
 
 
-  imap: Added processing of more than one response when sent in same packet
-  
-  Added a loop to imap_statemach_act() in which Curl_pp_readresp() is
-  called until the cache is drained. Without this multiple responses
-  received in a single packet could result in a hang or delay.
+- gskit.c: use 'CURLcode result'
 
 
-- [Jiri Hruska brought this change]
+Daniel Stenberg (24 Oct 2014)
+- [Jay Satiro brought this change]
 
 
-  imap: Added skipping of SELECT command if already in the same mailbox
+  SSL: Remove SSLv3 from SSL default due to POODLE attack
   
   
-  Added storage and checking of the last mailbox userd to prevent
-  unnecessary switching.
+  - Remove SSLv3 from SSL default in darwinssl, schannel, cyassl, nss,
+  openssl effectively making the default TLS 1.x. axTLS is not affected
+  since it supports only TLS, and gnutls is not affected since it already
+  defaults to TLS 1.x.
+  
+  - Update CURLOPT_SSLVERSION doc
 
 
-- [Jiri Hruska brought this change]
+- pipelining: only output "is not blacklisted" in debug builds
 
 
-  imap: Introduced the mailbox variable
-  
-  Added the mailbox variable to the per-connection structure in
-  preparation for checking for an already selected mailbox.
+- *.3: add/extend "SEE ALSO" sections
 
 
-- email: Slight reordering of connection based variables
-  
-  Reordered the state and ssl_done variables in order to provide more
-  consistency between the email protocols as well as for for an upcoming
-  change.
+- curl_easy_pause.3: minor wording edit
 
 
-- imap: Tidied up comments for connection based variables
+- curl_getdate.3: provide a "SEE ALSO" section
 
 
-- DOCS: Added the IMAP UIDVALIDITY property to the CURLOPT_URL section
+- curl_global_init.3: minor formatting fix, add version info
 
 
-- [Jiri Hruska brought this change]
+- url.c: use 'CURLcode result'
 
 
-  imap: Added verification of UIDVALIDITY mailbox attribute
+- code cleanup: we prefer 'CURLcode result'
+  
+  ... for the local variable name in functions holding the return
+  code. Using the same name universally makes code easier to read and
+  follow.
   
   
-  Added support for checking the UIDVALIDITY, and aborting the request, if
-  it has been specified in the URL and the server response is different.
+  Also, unify code for checking for CURLcode errors with:
+  
+   if(result) or if(!result)
+  
+  instead of
+  
+   if(result == CURLE_OK), if(CURLE_OK == result) or if(result != CURLE_OK)
 
 
-- [Jiri Hruska brought this change]
+- Curl_add_timecondition: skip superfluous varible assignment
+  
+  Detected by cppcheck.
 
 
-  imap: Added support for parsing the UIDVALIDITY property
+- Curl_pp_flushsend: skip superfluous assignment
   
   
-  Added support for parsing the UIDVALIDITY property from the SELECT
-  response and storing it in the per-connection structure.
+  Detected by cppcheck.
 
 
-- [Jiri Hruska brought this change]
+- Curl_pp_readresp: remove superfluous assignment
+  
+  Variable already assigned a few lines up.
+  
+  Detected by cppcheck.
 
 
-  imap: Introduced the mailbox_uidvalidity variable
+- Curl_proxyCONNECT: remove superfluous statement
   
   
-  Added the mailbox_uidvalidity variable to the per-connection structure
-  in preparation for checking the UIDVALIDITY mailbox attribute.
+  The variable is already assigned, skip the duplicate assignment.
+  
+  Pointed out by cppcheck.
 
 
-- imap: Corrected comment in imap_endofresp()
+Guenter Knauf (24 Oct 2014)
+- Added MinGW support to build with nghttp2.
 
 
-- imap: Corrected whitespace
+- Added VC ssh2 target to main Makefile.
 
 
-- [Jiri Hruska brought this change]
+- Some cosmetics and simplifies.
 
 
-  imap: Added filtering of CAPABILITY and FETCH untagged responses
+- Remove dependency on openssl and cut.
   
   
-  Only responses that contain "CAPABILITY" and "FETCH", respectively,
-  will be sent to their response handler.
+  Prefer usage of Perl modules for sha1 calculation since there
+  might be systems where openssl is not installed or not in path.
+  If openssl is used for sha1 calculation then dont rely on cut
+  since it is usually not available on other systems than Linux.
+
+Daniel Stenberg (23 Oct 2014)
+- RELEASE-NOTES: synced with e116d0a62
 
 
-- [Jiri Hruska brought this change]
+- CURLOPT_RESOLVE.3: add an example
 
 
-  imap: Added a helper function for upcoming untagged response filtering
+- gnutls: removed dead code
   
   
-  RFC 3501 states that "the client MUST be prepared to accept any response
-  at all times" yet we assume anything received with "* " at the beginning
-  is the untagged response we want.
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1437
+  Reported-by: Julien
+
+- Curl_rand: Uninitialized variable: r
+  
+  This is not actually used uninitialized but we silence warnings.
   
   
-  Introduced a helper function that checks whether the input looks like a
-  response to specified command, so that we may filter the ones we are
-  interested in according to the current state.
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1437
+  Reported-by: Julien
 
 
-- [Jiri Hruska brought this change]
+- opts: provide more and updated examples
 
 
-  imap: Moved CAPABILITY response handling to imap_state_capability_resp()
+- CURLOPT_RANGE.3: works for SFTP as well
   
   
-  Introduced similar handling to the FETCH responses, where even the
-  untagged data responses are handled by the response handler of the
-  individual state.
+  ... and added a small example
 
 
-Linus Nielsen Feltzing (26 Feb 2013)
-- Remove unused variable in smtp_state_data_resp()
+- curl.1: edited for clarity
 
 
-Steve Holme (25 Feb 2013)
-- email: Small tidy up following recent changes
-
-- smtp: Removed bytecountp from the per-request structure
-  
-  Removed this pointer to a downloaded bytes counter because it was set in
-  smtp_init() to point to the same variable the transfer functions keep
-  the count in (k->bytecount), effectively making the code in transfer.c
-  "*k->bytecountp = k->bytecount" a no-op.
+- CURLOPT_SSLVERSION.3: provide an example
 
 
-- pop3: Removed bytecountp from the per-request structure
-  
-  Removed this pointer to a downloaded bytes counter because it was set in
-  pop3_init() to point to the same variable the transfer functions keep
-  the count in (k->bytecount), effectively making the code in transfer.c
-  "*k->bytecountp = k->bytecount" a no-op.
+- docs/libcurl/ABI: more markdown friendly
 
 
-- [Jiri Hruska brought this change]
+- docs: edited lots of libcurl docs for clarity
 
 
-  imap: Removed bytecountp from the per-request structure
-  
-  Removed this pointer to a downloaded bytes counter because it was set in
-  imap_init() to point to the same variable the transfer functions keep
-  the count in (k->bytecount), effectively making the code in transfer.c
-  "*k->bytecountp = k->bytecount" a no-op.
+- opts: added examples
 
 
-- [Jiri Hruska brought this change]
+- HISTORY: two glimpses in 2014
 
 
-  imap: Adjusted SELECT and FETCH function order
+Kamil Dudka (20 Oct 2014)
+- nss: reset SSL handshake state machine
   
   
-  Moved imap_select() and imap_fetch() to be grouped with the other
-  perform functions.
+  ... when the handshake succeeds
+  
+  This fixes a connection failure when FTPS handle is reused.
 
 
-- [Jiri Hruska brought this change]
+Daniel Stenberg (20 Oct 2014)
+- [Peter Wu brought this change]
 
 
-  imap: Adjusted SELECT and FETCH state order in imap_statemach_act()
+  cmake: generate pkg-config and curl-config
   
   
-  Exchanged the position of these states in the switch statements to
-  match the state enum, execution and function order.
-
-- imap: Minor tidy up of comments in imap_parse_url_path()
+  Initial work to generate a pkg-config and curl-config script. Static
+  linking (`curl-config --static-libs` and `pkg-config --shared --libs
+  libcurl`) is broken and therefore disabled.
   
   
-  Tidy up of comments before next round of imap changes.
-
-- imap: Fixed incorrect comparison for STARTTLS in imap_endofresp()
+  CONFIGURE_OPTIONS does not make sense for CMake, use an empty string
+  for now.
   
   
-  Corrected the comparison type in addition to commit 1dac29fa83a9.
-
-- DOCS: Corrected IMAP URL examples according to RFC5092
+  At least `curl-config --features` and `curl-config --protocols` work
+  which is needed by runtests.pl.
   
   
-  URL examples that included the UID weren't technically correct although
-  would pass the curl parser.
+  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
 
 
-Nick Zitzmann (24 Feb 2013)
-- darwinssl: fix undefined $ssllib warning in runtests.pl
+- [Peter Wu brought this change]
+
+  cmake: use LIBCURL_VERSION from curlver.h
+  
+  This matches the behavior from autotools. The auxiliary major, minor
+  and patch components are not needed anymore and therefore removed.
   
   
-  I also added --with-darwinssl to the list of SSL options in configure.
+  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
 
 
-Steve Holme (24 Feb 2013)
-- imap: Added check for new internal imap response code
+- [Peter Wu brought this change]
 
 
-- imap: Changed the order of the response types in imap_endofresp()
+  cmake: add SUPPORT_FEATURES and SUPPORT_PROTOCOLS
   
   
-  From a maintenance point of view the code reads better to view tagged
-  responses, then untagged followed by continuation responses.
+  For compatibility with autoconf, it will be used later for curl-config
+  and pkg-config. Not all features and or protocols can be enabled as
+  these are missing additional checks (see new TODOs).
   
   
-  Additionally, this matches the order of responses in POP3.
+  SUPPORT_PROTOCOLS is partially scripted (grep for SUPPORT_PROTOCOLS=)
+  and manually verified/modified. SUPPORT_FEATURES is manually added.
+  
+  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
 
 
-- [Jiri Hruska brought this change]
+- cmake: add CMake/Macros.cmake to the release tarball
 
 
-  imap: Added stricter parsing of continuation responses
+- test545: make it not use a trailing zero
   
   
-  Enhanced the parsing to only allow continuation responses in some
-  states.
+  CURLOPT_COPYPOSTFIELDS with a given CURLOPT_POSTFIELDSIZE does not
+  require a trailing zero of the data and by making sure this test doesn't
+  use one we know it works (combined with valgrind).
 
 
-- imap: Simplified memcmp() in tagged response parsing
+Steve Holme (16 Oct 2014)
+- ntlm: Fixed empty type-2 decoded message info text
+  
+  Updated the info text when the base-64 decode of the type-2 message
+  returns a null buffer to be more specific.
 
 
-- [Jiri Hruska brought this change]
+- ntlm: Fixed empty/bad base-64 decoded buffer return codes
 
 
-  imap: Reworked the logic of untagged command responses
+- ntlm: Avoid unnecessary buffer allocation for SSPI based type-2 token
 
 
-- imap: Corrected spacing of trailing brace
+Daniel Stenberg (16 Oct 2014)
+- httpcustomheader.c: make use of more CURLOPT_HTTPHEADER features
+  
+  ... and only do a single request for clarity.
 
 
-- [Jiri Hruska brought this change]
+Steve Holme (15 Oct 2014)
+- sasl_sspi: Fixed some typos
 
 
-  imap: Added stricter parsing of tagged command responses
-  
-  Enhanced the parsing of tagged responses which must start with "OK",
-  "NO" or "BAD"
+- sasl_sspi: Fixed Kerberos response buffer not being allocated when using SSO
 
 
-- [Jiri Hruska brought this change]
+Daniel Stenberg (15 Oct 2014)
+- [Bruno Thomsen brought this change]
 
 
-  imap: Simplified command response test in imap_endofresp()
+  mk-ca-bundle: added SHA-384 signature algorithm
+  
+  Certificates based on SHA-1 are being phased out[1].
+  So we should expect a rise in certificates based on SHA-2.
+  Adding SHA-384 as a valid signature algorithm.
+  
+  [1] https://blog.mozilla.org/security/2014/09/23/phasing-out-certificates-with-sha-1-based-signature-algorithms/
+  
+  Signed-off-by: Bruno Thomsen <bth@kamstrup.dk>
 
 
-- [Jiri Hruska brought this change]
+Patrick Monnerat (14 Oct 2014)
+- OS400: fix bugs in curl_*escape_ccsid() and reduce variables scope
 
 
-  imap: Corrected comment in imap_endofresp()
+- Implement pinned public key in GSKit backend
 
 
-- DOCS: Corrected layout of POP3 and IMAP URL examples
-  
-  Corrected layout issues with the POP3 and IMAP URL examples introduced
-  in commit cb3ae6894fb2.
+Daniel Stenberg (14 Oct 2014)
+- CURLOPT_TLSAUTH_*.3: fix reference typos
 
 
-- DOCS: Updated CURLOPT_URL section following recent POP3 and IMAP changes
+- cleanups: reduce variable scope
   
   
-  Updated the POP3 sub-section to refer to message ID rather than mailbox.
-  
-  Added an IMAP sub-section with example URLs depicting the specification
-  of mailbox, uid and section.
+  cppcheck pointed these out.
 
 
-- pop3: Refactored the mailbox variable as it didn't reflect it's purpose
+- singleipconnect: remove dead assignment never used
   
   
-  Updated the mailbox variable to correctly reflect it's purpose. The
-  name mailbox was a leftover from when IMAP and POP3 support was
-  initially added to curl.
+  cppcheck pointed this out.
+
+- pinning: minor code style policing
+
+Patrick Monnerat (13 Oct 2014)
+- Factorize pinned public key code into generic file handling and backend specific
+
+- vtls: remove QsoSSL
 
 
-- FEATURES: Updated following recent IMAP changes
+- gskit: supply dummy randomization function
 
 
-- [Jiri Hruska brought this change]
+- vtls/*: deprecate have_curlssl_md5sum and set-up default md5sum implementation
 
 
-  imap: Added the ability to FETCH a specific UID and SECTION
+Daniel Stenberg (13 Oct 2014)
+- [Peter Wu brought this change]
+
+  tests: move TESTCASES to Makefile.inc, add show for cmake
+  
+  This change allows runtests.pl to be run from the CMake builddir:
   
   
-  Updated the FETCH command to send the UID and SECTION parsed from the
-  URL. By default the BODY specifier doesn't include a section, BODY[] is
-  now sent whereas BODY[TEXT] was previously sent. In my opinion
-  retrieving just the message text is rarely useful when dealing with
-  emails, as the headers are required for example, so that functionality
-  is not retained. In can however be simulated by adding SECTION=TEXT to
-  the URL.
+      export srcdir=/tmp/curl/tests;
+      perl -I$srcdir $srcdir/runtests.pl -l
   
   
-  Also updated test801 and test1321 due to the BODY change.
+  In order to make this possible, all test cases have been moved from
+  Makefile.am to Makefile.inc.
+  
+  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
 
 
-- email: Additional tidy up of comments following recent changes
+- [Peter Wu brought this change]
 
 
-- smtp: Removed some FTP heritage leftovers
+  cmake: enable IPv6 by default if available
   
   
-  Removed user and passwd from the SMTP struct as these cannot be set on
-  a per-request basis and are leftover from legacy FTP code.
+  ENABLE_IPV6 depends on HAVE_GETADDRINFO or you will get a
+  Curl_getaddrinfo_ex error. Enable IPv6 by default, disabling it if
+  struct sockaddr_in6 is not found in netinet/in.h.
   
   
-  Changed some comments still using FTP terminology.
-
-- smtp: Moved the per-request variables to the per-request data structure
+  Note that HAVE_GETADDRINFO_THREADSAFE is still not set as it needs more
+  platform checks even though POSIX requires a thread-safe getaddrinfo.
   
   
-  Moved the rcpt variable from the per-connection struct smtp_conn to the
-  new per-request struct and fixed references accordingly.
-
-- pop3: Introduced a custom SMTP structure for per-request data
+  Verified on Arch Linux x86_64 with glibc 2.20-2 and Linux 3.16-rc7.
   
   
-  Created a new SMTP structure and changed the type of the smtp proto
-  variable in connectdata from FTP* to SMTP*.
+  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
 
 
-unknown (23 Feb 2013)
-- [Steve Holme brought this change]
+- [Peter Wu brought this change]
 
 
-  imap: Minor correction of comments for max line length
+  cmake: build tool_hugehelp (ENABLE_MANUAL)
+  
+  Rather than always outputting an empty manual page for the '-M' option,
+  generate a full manual page as done by autotools. For simplicity in
+  CMake, always generate the gzipped page as it will not be used anyway
+  when zlib is not available.
+  
+  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
 
 
-Daniel Stenberg (23 Feb 2013)
-- strcasestr: remove check for this unused function
+- [Peter Wu brought this change]
 
 
-- pop3: fix compiler warning
+  tests/http_pipe.py: Python 3 support
+  
+  The 2to3 tool converted socketserver (which I manually fixed up with an
+  import fallback) and the print(e) line. The xrange option was converted
+  to range, but it seems better to use the '*' operator here for
+  simplicity.
   
   
-  error: declaration of 'pop3' shadows a previous local
+  Signed-off-by: Peter Wu <peter@lekensteyn.nl>
 
 
-Steve Holme (23 Feb 2013)
-- [Jiri Hruska brought this change]
+- SECURITY: slightly nicer markdown format
 
 
-  imap: Added URL parsing of new variables
+- RELEASE-PROCEDURE: better markdown, more content
+
+- RELEASE-NOTES: synced with 6637b237e6eb
   
   
-  Updated the imap_parse_url_path() function to parse uidvalidity, uid and
-  section parameters based on RFC-5092.
+  ... and bumped the planned release version.
 
 
-- [Jiri Hruska brought this change]
+- vtls: have vtls.h include the backend header files
+  
+  It turned out some features were not enabled in the build since for
+  example url.c #ifdefs on features that are defined on a per-backend
+  basis but vtls.h didn't include the backend headers.
+  
+  CURLOPT_CERTINFO was one such feature that was accidentally disabled.
 
 
-  imap: Introduced imap_is_bchar() function
+- test2036: verify -O with no slash at all in the URL
   
   
-  Added imap_is_bchar() for testing if a given character is a valid bchar
-  or not.
+  Similar to test 76 but that test's URL has a slash just no file name
+  part.
 
 
-- [Jiri Hruska brought this change]
+- get_url_file_name: make no slash equal empty string
 
 
-  imap: Introduced new per-request veriables
+- get_url_file_name: never return a NULL string *and* OK
+  
+  Change 987a4a73 assumes that as it simplifies life in the calling
+  function.
   
   
-  Added uidvalidity, uid and section variables to the per-request IMAP
-  structure in preparation for upcoming URL parsing.
+  Reported-by: Fabian Keil
 
 
-- pingpong: Renamed curl_ftptransfer to curl_pp_transfer
+- [Jakub Zakrzewski brought this change]
 
 
-- pop3: Removed some FTP heritage leftovers
+  Cmake: Build with GSSAPI (MIT or Heimdal)
   
   
-  Removed user and passwd from the POP3 struct as these cannot be set on
-  a per-request basis and are leftover from legacy FTP code.
+  It tries hard to recognise SDK's on different platforms. On windows MIT
+  Kerberos installs SDK with other things and puts path into registry.
+  Heimdal have separate zip archive. On linux pkg-config is tried, then
+  krb5-config script and finally old-style libs and headers detection.
   
   
-  Changed some comments still using FTP terminology.
+  Command line args:
+  * CMAKE_USE_GSSAPI - enables GSSAPI detection
+  * GSS_ROOT_DIR - if set, should point to the root of GSSAPI installation
+                   (the one with include and lib directories)
 
 
-- pop3: Moved the per-request variables to the per-request data structure
-  
-  Moved the mailbox and custom request variables from the per-connection
-  struct pop3_conn to the new per-request struct and fixed references
-  accordingly.
+- [Jakub Zakrzewski brought this change]
 
 
-- pop3: Introduced a custom POP3 structure for per-request data
+  Cmake: Got rid of setup_curl_dependencies
   
   
-  Created a new POP3 structure and changed the type of the pop3 proto
-  variable in connectdata from FTP* to POP*.
+  There is no need for such function. Include_directories propagate by
+  themselves and having a function with one simple link statement makes
+  little sense.
 
 
-- [Jiri Hruska brought this change]
+- [Jakub Zakrzewski brought this change]
 
 
-  imap: Fixed escaping of mailbox names
+  Cmake: Avoid cycle directory dependencies.
   
   
-  Used imap_atom() to escape mailbox names in imap_select().
+  Because we prepended libraries to list, CMake had troubles resolving
+  link directory order as it detected some cycles. Appending to list ensures
+  that dependencies will preceed dependees.
 
 
-- pingpong: Moved curl_ftptransfer definition to pingpong.h
-  
-  Moved the ftp transfer structure into pingpong.h so other protocols that
-  require it don't have to include ftp.h.
+- [Jakub Zakrzewski brought this change]
 
 
-- urldata.h: Fixed comment for opt_no_body variable
+  Cmake: Fix library list provided to cURL tests.
   
   
-  Corrected comment for opt_no_body variable to CURLOPT_NOBODY.
-
-- email: Minor tidy up following IMAP changes
+  The list must be set after those nice CMake tests as we mess with
+  CMAKE_REQUIRED_LIBRARIES there.
 
 
-- [Jiri Hruska brought this change]
+- [Jakub Zakrzewski brought this change]
 
 
-  imap: Removed more FTP leftovers
+  Cmake: Check for OpenSSL before OpenLDAP.
   
   
-  Changed some variables and comments still using FTP terminology.
+  OpenLDAP might have been build with OpenSSL. Checking for OpenLDAP first
+  may result in undefined symbols. Of course, the found OpenSSL libraries
+  must also be linked whenever OpenLDAP is.
 
 
-- [Jiri Hruska brought this change]
+- curl_multi_fdset.3: improved the formatting slightly
 
 
-  imap: Removed some FTP heritage leftovers
+- curl_multi_fdset: explain the fd_set arguments
+
+Kamil Dudka (8 Oct 2014)
+- nss: do not fail if a CRL is already cached
   
   
-  Removed user and passwd from the IMAP struct as these cannot be set on
-  a per-request basis and are leftover from legacy FTP code.
+  This fixes a copy-paste mistake from commit 2968f957.
 
 
-- [Jiri Hruska brought this change]
+Patrick Monnerat (8 Oct 2014)
+- OS400: upgrade interface for pinned public key (no implementation yet)
 
 
-  imap: Introduced a custom IMAP structure for per-request data
+Daniel Stenberg (8 Oct 2014)
+- FormAdd: precaution against memdup() of NULL pointer
   
   
-  Created a new IMAP structure and changed the type of the imap proto
-  variable in connectdata from FTP* to the new IMAP*.
+  Coverity CID 252518. This function is in general far too complicated for
+  its own good and really should be broken down into several smaller
+  funcitons instead - but I'm adding this protection here now since it
+  seems there's a risk the code flow can end up here and dereference a
+  NULL pointer.
+
+- operate: avoid NULL dereference
   
   
-  Moved the mailbox variable from the per-connection struct imap_conn to
-  the new per-request struct and fixed references accordingly.
+  Coverity CID 1241948. dumpeasysrc() would get called with
+  config->current set to NULL which could be dereferenced by a warnf()
+  call.
 
 
-- pop3: Updated do phrase clean-up comment
+- do_sec_send: remove dead code
   
   
-  Following commit 65644b833532 for the IMAP module updated the clean-up
-  comment in POP3.
+  Coverity CID 1241951. The condition 'len >= 0' would always be true at
+  that point and thus not necessary to check for.
 
 
-- imap: Fixed memory leak when performing multiple selects
+- krb5_encode: remove unused argument
   
   
-  Moved the clean-up of the mailbox variable from imap_disconnect() to
-  imap_done() as this variable is allocated in the do phase, yet would
-  have only been freed only once if multiple selects where preformed
-  on a single connection.
+  Coverity CID 1241957. Removed the unused argument. As this struct and
+  pointer now are used only for krb5, there's no need to keep unused
+  function arguments around.
 
 
-Daniel Stenberg (22 Feb 2013)
-- [Alexander Klauer brought this change]
+- operate_do: skip superfluous check for NULL pointer
+  
+  Coverity CID 1243583. get_url_file_name() cannot fail and return a NULL
+  file name pointer so skip the check for that - it tricks coverity into
+  believing it can happen and it then warns later on when we use 'outfile'
+  without checking for NULL.
 
 
-  Documentation: Typo in docs/CONTRIBUTE
+- curl_easy_getinfo.3: spell-fix
   
   
-  Fixes a typo get → git in docs/CONTRIBUTE.
+  Reported-By: Luan Cestari
 
 
-- [Alexander Klauer brought this change]
+- [moparisthebest brought this change]
 
 
-  repository: ignore patch files generated by git
-  
-  Ignores the patch files generated by the 'git format-patch' command.
+  GnuTLS: Implement public key pinning
 
 
-- [Alexander Klauer brought this change]
+- [moparisthebest brought this change]
 
 
-  libcurl documentation: clarifications and typos
+  SSL: implement public key pinning
   
   
-  * Elaborates on default values of some curl_easy_setopt() options.
-  * Reminds the user to cast variadic arguments to curl_easy_setopt() to
-    'void *' where curl internally interprets them as such.
-  * Clarifies the working of the CURLOPT_SEEKFUNCTION option for
-    curl_easy_setopt().
-  * Fixes typo 'forth' → 'fourth'.
-  * Elaborates on CURL_SOCKET_TIMEOUT.
-  * Adds some missing periods.
-  * Notes that the return value of curl_version() must not be passed to
-    free().
-
-- [Alexander Klauer brought this change]
+  Option --pinnedpubkey takes a path to a public key in DER format and
+  only connect if it matches (currently only implemented with OpenSSL).
+  
+  Provides CURLOPT_PINNEDPUBLICKEY for curl_easy_setopt().
+  
+  Extract a public RSA key from a website like so:
+  openssl s_client -connect google.com:443 2>&1 < /dev/null | \
+  sed -n '/-----BEGIN/,/-----END/p' | openssl x509 -noout -pubkey \
+  | openssl rsa -pubin -outform DER > google.com.der
 
 
-  lib/url.c: Generic read/write data pointers
+- multi_runsingle: fix possible memory leak
   
   
-  Always interprets the pointer passed with the CURLOPT_WRITEDATA or
-  CURLOPT_READDATA options of curl_easy_setopt() as a void pointer in
-  order to avoid problems in environments where FILE and void pointers
-  have non-trivial conversion.
+  Coverity CID 1202837. 'newurl' can in fact be allocated even when
+  Curl_retry_request() returns failure so free it if need be.
 
 
-- [Alexander Klauer brought this change]
+- ares::Curl_resolver_cancel: skip checking for NULL conn
+  
+  Coverity CID 1243581. 'conn' will never be NULL here, and if it would be
+  the subsequent statement would dereference it!
 
 
-  libcurl documentation: updates HTML index
+- parseconfig: skip a NULL check
   
   
-  * Adds several links to documentation of library functions which were
-    missing.
-  * Marks documentation of deprecated library functions "(deprecated)".
-  * Removes spurious .html suffixes.
+  Coverity CID 1154198. This NULL check implies that the pointer _can_ be
+  NULL at this point, which it can't. Thus it is dead code. It tricks
+  static analyzers to warn about dereferencing the pointer since the code
+  seems to imply it can be NULL.
 
 
-- ossl_seed: avoid recursive seeding!
+- [Waldek Kozba brought this change]
 
 
-Steve Holme (22 Feb 2013)
-- [Jiri Hruska brought this change]
+  multi-uv.c: call curl_multi_info_read() better
+  
+  Improves it for low-latency cases (like the communication with
+  localhost)
 
 
-  Fixed checking the socket if there is data waiting in the cache
+- tool_go_sleep: use (void) to spell out we ignore the return value
   
   
-  Use Curl_pp_moredata() in Curl_pp_multi_statemach() to check if there is
-  more data to be received, rather than the socket state, as a task could
-  hang waiting for more data from the socket itself.
+  Coverity CID 1222080.
 
 
-- imap.c: Fixed an incorrect variable reference
+- ssh_statemach_act: split out assignment from check
   
   
-  Fixed an incorrect variable reference which was introduced in commit
-  a1701eea289f as a result of a copy and paste from SMTP/POP3.
+  just a minor code style thing to make the code clearer
 
 
-- [Jiri Hruska brought this change]
+Marc Hoersken (4 Oct 2014)
+- curl_schannel.c: Fixed possible memory or handle leak
+  
+  First try to fix possible memory leaks, in this case:
+  Only connssl->ctxt xor onnssl->cred being initialized.
 
 
-  pingpong: Introduce Curl_pp_moredata()
+Daniel Stenberg (4 Oct 2014)
+- getparameter: remove dead code
   
   
-  A simple function to test whether the PP is not sending and there are
-  still more data in its receiver cache. This will be later utilized to:
+  Coverity CID 1061126. 'parse' will always be non-NULL here.
+
+- getparameter: comment a switch FALLTHROUGH
   
   
-  1) Change Curl_pp_multi_statemach() and Curl_pp_easy_statemach() to
-     not test socket state and just call user's statemach_act() function
-     when there are more data to process, because otherwise the task would
-     just hang, waiting for more data from the socket.
+  Coverity CID 1061118. Point out that it is on purpose.
+
+- choose_mech: fix return code
   
   
-  2) Allow PP users to read multiple responses by looping as long as there
-     are more data available and current phase is not finished.
-     (Currently needed for correct processing of IMAP SELECT responses.)
+  Coverity CID 1241950. The pointer is never NULL but it might point to
+  NULL.
 
 
-Nick Zitzmann (19 Feb 2013)
-- FEATURES: why yes, we do support metalink
+- Curl_sec_read_msg: spell out that we ignore return code
   
   
-  I just noticed Metalink support wasn't listed as a feature of the tool.
+  Coverity CID 1241947. Since if sscanf() fails, the previously set value
+  remains set.
 
 
-- metalink: fix improbable crash parsing metalink filename
+- nonblock: call with (void) to show we ignore the return code
   
   
-  The this_url pointer wasn't being initialized, so if strdup() would return
-  null when copying the filename in a metalink file, then hilarity would
-  ensue during the cleanup phase. This change was brought to you by clang,
-  which noticed this and raised a warning.
+  Coverity pointed out several of these.
 
 
-Yang Tse (19 Feb 2013)
-- smtp.c: fix enumerated type mixed with another type
+- parse_proxy: remove dead code.
+  
+  Coverity CID 982331.
 
 
-- polarssl threadlock cleanup
+- Curl_debug: document switch fallthroughs
 
 
-Nick Zitzmann (18 Feb 2013)
-- docs: schannel and darwinssl documentation improvements
+- curl_multi_remove_handle: remove dead code
   
   
-  Schannel and darwinssl use the certificates built into the
-  OS to do vert verification instead of bundles. darwinssl
-  is thread-safe. Corrected typos in the NSS docs.
+  Coverify CID 1157776. Removed a superfluous if() that always evaluated
+  true (and an else clause that never ran), and then re-indented the
+  function accordingly.
 
 
-Daniel Stenberg (18 Feb 2013)
-- resolver_error: remove wrong error message output
+- Curl_pipeline_server_blacklisted: handle a NULL server name
   
   
-  The attempt to use gai_strerror() or alternative function didn't work as
-  the 'sock_error' field didn't contain the proper error code. But since
-  this hasn't been reported and thus isn't really a big deal I decided to
-  just scrap the whole attempt to output the detailed resolver error and
-  instead remain with just stating that the resolving of the name failed.
+  Coverity CID 1215284. The server name is extracted with
+  Curl_copy_header_value() and passed in to this function, and
+  copy_header_value can actually can fail and return NULL.
 
 
-- [Kim Vandry brought this change]
+- ssh: comment "fallthrough" in switch statement
 
 
-  Curl_resolver_is_resolved: show proper host name on failed resolve
+- [Jeremy Lin brought this change]
 
 
-- Curl_resolver_is_resolved: fix compiler warning
+  ssh: improve key file search
   
   
-  conversion to 'int' from 'long int' may alter its value
-
-- compiler warning fix
+  For private keys, use the first match from: user-specified key file
+  (if provided), ~/.ssh/id_rsa, ~/.ssh/id_dsa, ./id_rsa, ./id_dsa
+  
+  Note that the previous code only looked for id_dsa files. id_rsa is
+  now generally preferred, as it supports larger key sizes.
   
   
-  follow-up to commit ed7174c6f66, rename 'wait' to 'block'
+  For public keys, use the user-specified key file, if provided.
+  Otherwise, try to extract the public key from the private key file.
+  This means that passing --pubkey is typically no longer required,
+  and makes the key-handling behavior more like OpenSSH.
 
 
-- compiler warning fix: declaration of 'wait' shadows a global declaration
+- CURLOPT_HTTPHEADER.3: libcurl doesn't copy the whole list
+
+- detect_proxy: fix possible single-byte memory leak
   
   
-  It seems older gcc installations (at least) will cause warnings if we
-  name a variable 'wait'. Now changed to 'block' instead.
+  Coverity CID 1202836. If the proxy environment variable returned an empty
+  string, it would be leaked. While an empty string is not really a proxy, other
+  logic in this function already allows a blank string to be returned so allow
+  that here to avoid the leak.
+
+- multi_runsingle: fix memory leak
   
   
-  Reported by: Jiří Hruška
-  Bug: http://curl.haxx.se/mail/lib-2013-02/0247.html
+  Coverity CID 1202837. There's a potential risk that 'newurl' gets
+  overwritten when it was already pointing to allocated memory.
 
 
-Nick Zitzmann (17 Feb 2013)
-- MacOSX-Framework: Make script work in Xcode 4.0 and later
+- pop3_perform_authentication: fix memory leak
   
   
-  Apple made a number of changes to Xcode 4. The SDKs were moved, the entire
-  Developer folder was moved, and PowerPC support was removed. The script
-  will now adapt to those changes and should be future-proofed against
-  additional changes in case Apple moves the Developer folder ever again.
-  Also, the minimum OS X version compiler option was removed, so that the
-  framework can be built against the latest SDK but still run in older cats.
+  Coverity CID 1215287. There's a potential risk for a memory leak in
+  here, and moving the free call to be unconditional seems like a cheap
+  price to remove the risk.
 
 
-Daniel Stenberg (17 Feb 2013)
-- docs: refer to CURLOPT_ACCEPT_ENCODING instead of the old name
+- imap_perform_authentication: fix memory leak
+  
+  Coverity CID 1215296. There's a potential risk for a memory leak in
+  here, and moving the free call to be unconditional seems like a cheap
+  price to remove the risk.
 
 
-Steve Holme (16 Feb 2013)
-- email: Tidied up result code variables
+- wait_or_timeout: return failure when Curl_poll() fails
   
   
-  Tidied up result variables to be consistent in name, declaration order
-  and default values.
+  Coverity detected this. CID 1241954. When Curl_poll() returns a negative value
+  'mcode' was uninitialized. Pretty harmless since this is debug code only and
+  would at worst cause an error to _not_ be returned...
 
 
-Nick Zitzmann (16 Feb 2013)
-- ntlm_core: fix compiler warning when building with clang
+- curl.1: mention quoting in the URL section
   
   
-  Fixed a 64-to-32 compiler warning raised when building with
-  clang and the --with-darwinssl option.
+  and separate the example URLs with newlines
 
 
-Daniel Stenberg (16 Feb 2013)
-- Guile-curl: a new libcurl binding
+Steve Holme (30 Sep 2014)
+- [Bill Nagel brought this change]
 
 
-- polarsslthreadlock: #include the proper memory and debug includes
+  smtp: Fixed intermittent "SSL3_WRITE_PENDING: bad write retry" error
+  
+  This patch fixes the "SSL3_WRITE_PENDING: bad write retry" error that
+  sometimes occurs when sending an email over SMTPS with OpenSSL. OpenSSL
+  appears to require the same pointer on a write that follows a retry
+  (CURLE_AGAIN) as discussed here:
   
   
-  Pointed out by Steve Holme
+  http://stackoverflow.com/questions/2997218/why-am-i-getting-error1409f07fssl-routinesssl3-write-pending-bad-write-retr
 
 
-Steve Holme (16 Feb 2013)
-- email: Removed unnecessary forward declaration
+Daniel Stenberg (30 Sep 2014)
+- RELEASE-NOTES: synced with 53cbea22310f15
+
+- file: reject paths using embedded %00
+  
+  Mostly because we use C strings and they end at a binary zero so we know
+  we can't open a file name using an embedded binary zero.
   
   
-  Due to the reordering of functions in commit 586f5d361474 the forward
-  declaration to state_upgrade_tls() are no longer required.
+  Reported-by: research@g0blin.co.uk
 
 
-- pop3.c: Added reference to RFC-5034
+Dan Fandrich (26 Sep 2014)
+- test506: Fixed a couple of memory leaks in test
 
 
-Daniel Stenberg (15 Feb 2013)
-- [Willem Sparreboom brought this change]
+Daniel Stenberg (25 Sep 2014)
+- [Yousuke Kimoto brought this change]
 
 
-  PolarSSL: Change to cURL coding style
-  
-  Repaired all curl/lib/checksrc.pl warnings in the previous four patches
+  CURLOPT_COOKIELIST: Added "RELOAD" command
+
+- [Michael Wallner brought this change]
 
 
-- [Willem Sparreboom brought this change]
+  CURLOPT_POSTREDIR.3: Added availability for CURL_REDIR_POST_303
 
 
-  PolarSSL: WIN32 threading support for entropy
+- threaded-resolver: revert Curl_expire_latest() switch
   
   
-  Added WIN32 threading support for PolarSSL entropy if
-  --enable-threaded-resolver config flag is set and process.h can be found.
+  The switch to using Curl_expire_latest() in commit cacdc27f52b was a
+  mistake and was against the advice even mentioned in that commit. The
+  comparison in asyn-thread.c:Curl_resolver_is_resolved() makes
+  Curl_expire() the suitable function to use.
+  
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1426
+  Reported-By: graysky
 
 
-- [Willem Sparreboom brought this change]
+- libcurl docs: improvements all over
 
 
-  PolarSSL: pthread support for entropy
+Steve Holme (19 Sep 2014)
+- build: Added WinIDN build configuration options
   
   
-  Added pthread support for polarssl entropy if --enable-threaded-resolver
-  config flag is set and pthread.h can be found.
+  Added initial support for WinIDN build configurations to the VC10+
+  project files.
 
 
-- [Willem Sparreboom brought this change]
+Daniel Stenberg (19 Sep 2014)
+- tutorial: signals aren't used for the threaded resolver
 
 
-  PolarSSL: changes to entropy/ctr_drbg/HAVEGE_RANDOM
+- FAQ: update the pronunciation section
+  
+  As we weren't using the correct phonetic description and doing it correctly
+  involves funny letters that I'm sure will cause problems for people in a text
+  document so I instead rephrased it and link to a WAV file with a person
+  actually saying 'curl'.
   
   
-  Add non-threaded entropy and ctr_drbg and removed HAVEGE_RANDOM define
+  Reported-By: Dimitar Boevski
 
 
-- [Willem Sparreboom brought this change]
+- CURLOPT_COOKIE*: added more cross-references
 
 
-  PolarSSL: added human readable error strings
+- BINDINGS: add node-libcurl
   
   
-  Print out human readable error strings for PolarSSL related errors
+  Reported-By: Jonathan Cardoso Machado
+  URL: http://curl.haxx.se/mail/lib-2014-09/0102.html
 
 
-Steve Holme (15 Feb 2013)
-- pop3: Removed unnecessary state changes on failure
+- README.http2: updated to reflect current status
 
 
-- imap: Removed unnecessary state change on failure
+- formdata: removed unnecessary USE_SSLEAY use
 
 
-Daniel Stenberg (15 Feb 2013)
-- metalink_cleanup: yet another follow-up fix
+- curlssl: make tls backend symbols use curlssl in the name
 
 
-- metalink_cleanup: define it without argument
+- url: let the backend decide CURLOPT_SSL_CTX_ support
   
   
-  Since the function takes no argument, the macro shouldn't take one as
-  some compilers will error out on that.
+  ... to further remove specific TLS backend knowledge from url.c
 
 
-- rename "easy" statemachines: call them block instead
-  
-  ... since they're not used by the easy interface really, I wanted to
-  remove the association. Also, I unified the pingpong statemachine driver
-  into a single function with a 'wait' argument: Curl_pp_statemach.
+- vtls: have the backend tell if it supports CERTINFO
 
 
-Yang Tse (15 Feb 2013)
-- [Gisle Vanem brought this change]
+- [Catalin Patulea brought this change]
 
 
-  curl_setup_once.h: definition of HAVE_CLOSE_S defines sclose() to close_s()
+  configure: allow --with-ca-path with PolarSSL too
+  
+  Missed this in af45542c.
+  
+  Signed-off-by: Catalin Patulea <cat@vv.carleton.ca>
 
 
-- [Gisle Vanem brought this change]
+- CURLOPT_CAPATH: return failure if set without backend support
 
 
-  config-dos.h: define HAVE_CLOSE_S for MSDOS/Watt-32
+- [Tatsuhiro Tsujikawa brought this change]
 
 
-- [Gisle Vanem brought this change]
+  http2: Fix busy loop when EOF is encountered
+  
+  Previously we did not handle EOF from underlying transport socket and
+  wrongly just returned error code CURL_AGAIN from http2_recv, which
+  caused busy loop since socket has been closed.  This patch adds the
+  code to handle EOF situation and tells the upper layer that we got
+  EOF.
 
 
-  config-dos.h: define strerror() to strerror_s_() for High-C
+Steve Holme (13 Sep 2014)
+- build: Added batch wrapper to checksrc.pl
 
 
-- [Gisle Vanem brought this change]
+- RELEASE-NOTES: Synced with bd3df5ec6d
 
 
-  config-dos.h: define HAVE_TERMIOS_H only for djgpp
+- [Marcel Raad brought this change]
 
 
-Steve Holme (14 Feb 2013)
-- smtp.c: Fixed a trailing whitespace
+  sasl_sspi: Fixed Unicode build
   
   
-  Remove tailing whitespace introduced in commit 7ed689d24a4e.
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1422
+  Verified-by: Steve Holme
 
 
-- pop3: Fixed blocking SSL connect when connecting via POP3S
+Daniel Stenberg (12 Sep 2014)
+- libcurl-tutorial.3: fix GnuTLS link to thread-safety guidelines
   
   
-  A call to Curl_ssl_connect() was accidentally left in when the SSL/TLS
-  connection layer was reworked in 7.29. Not only would this cause the
-  connection to block but had the additional overhead of calling the
-  non-blocking connect a little bit later.
-
-- smtp: Refactored the smtp_state_auth_resp() function
+  The former link was turned into a 404 at some point.
   
   
-  Renamed smtp_state_auth_resp() function to match the implementations in
-  IMAP and POP3.
+  Reported-By: Askar Safin
 
 
-Daniel Stenberg (14 Feb 2013)
-- remove ifdefs
+- contributors.sh: split list of names at comma
   
   
-  Clarify the code by reducing ifdefs
+  ... to support a list of names provided in a commit message.
+
+Steve Holme (12 Sep 2014)
+- [Ulrich Telle brought this change]
 
 
-- strlcat: remove function
+  ntlm: Fixed HTTP proxy authentication when using Windows SSPI
   
   
-  This function was only used twice, both in places where performance
-  isn't crucial (socks + if2ip). Removing the use of this function removes
-  the need to have our private version for systems without it == reduced
-  amount of code.
+  Removed ISC_REQ_* flags from calls to InitializeSecurityContext to fix
+  bug in NTLM handshake for HTTP proxy authentication.
   
   
-  Also, in the SOCKS case it is clearly better to fail gracefully rather
-  than to truncate the results.
+  NTLM handshake for HTTP proxy authentication failed with error
+  SEC_E_INVALID_TOKEN from InitializeSecurityContext for certain proxy
+  servers on generating the NTLM Type-3 message.
   
   
-  This work was triggered by a bug report on the strcal prototype in
-  strequal.h.
+  The flag ISC_REQ_CONFIDENTIALITY seems to cause the problem according
+  to the observations and suggestions made in a bug report for the
+  QT project (https://bugreports.qt-project.org/browse/QTBUG-17322).
   
   
-  strlcat was added in commit db70cd28 in February 2001!
+  Removing all the flags solved the problem.
   
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1192
-  Reported by: Jeremy Huddleston
+  Bug: http://curl.haxx.se/mail/lib-2014-08/0273.html
+  Reported-by: Ulrich Telle
+  Assisted-by: Steve Holme, Daniel Stenberg
 
 
-- Curl_FormBoundary: made static
+Daniel Stenberg (12 Sep 2014)
+- [Ray Satiro brought this change]
+
+  newlines: fix mixed newlines to LF-only
+  
+  I use the curl repo mainly on Windows with the typical Windows git
+  checkout which converts the LF line endings in the curl repo to CRLF
+  automatically on checkout. The automatic conversion is not done on files
+  in the repo with mixed line endings. I recently noticed some weird
+  output with projects/build-openssl.bat that I traced back to mixed line
+  endings, so I scanned the repo and there are files (excluding the
+  test data) that have mixed line endings.
   
   
-  As Curl_FormBoundary() is no longer used outside of this file (since
-  commit ad7291c1a9d), it is now renamed to formboundary() and is made
-  static.
+  I used this command below to do the scan. Unfortunately it's not as easy
+  as git grep, at least not on Windows. This gets the names of all the
+  files in the repo's HEAD, gets each of those files raw from HEAD, checks
+  for mixed line endings of both LF and CRLF, and prints the name if
+  mixed. I excluded path tests/data/test* because those can have mixed
+  line endings if I understand correctly.
+  
+  for f in `git ls-tree --name-only --full-tree -r HEAD`;
+  do if [ -n "${f##tests/data/test*}" ];
+      then git show "HEAD:$f" | \
+          perl -0777 -ne 'exit 1 if /([^\r]\n.*\r\n)|(\r\n.*[^\r]\n)/';
+      if [ $? -ne 0 ];
+          then echo "$f";
+      fi;
+  fi;
+  done
+
+- [Viktor Szakáts brought this change]
 
 
-- ossl_seed: fix the last resort PRNG seeding
+  mk-ca-bundle.pl: converted tabs to spaces, deleted trailing spaces
+
+- ROADMAP: markdown eats underscores
   
   
-  Instead of just abusing the pseudo-randomizer from Curl_FormBoundary(),
-  this now uses Curl_ossl_random() to get entropy.
+  It interprets them as italic indictors unless we backtick the word.
+
+- ROADMAP: tiny formatting edit for nicer web output
+
+Steve Holme (10 Sep 2014)
+- ROADMAP.md: Updated GSSAPI authentication following 7.38.0 additions
+
+- INTERNALS: Added email and updated Kerberos details
 
 
-Steve Holme (13 Feb 2013)
-- email: Tidy up before additional IMAP work
+- FEATURES: Updated Kerberos details
   
   
-  Replaced two explicit comparisons of CURLE_OK with boolean alternatives.
+  Added support for Kerberos 5 to the email protocols following the recent
+  additions in 7.38.0.
   
   
-  General tidy up of comments.
+  Removed Kerberos 4 as this has been gone for a while now.
 
 
-- smtp: Removed duplicate pingpong structure initialisation
-  
-  The smtp_connect() function was setting the member variables of the
-  pingpong structure twice, once before calling Curl_pp_init() and once
-  after!
+Daniel Stenberg (10 Sep 2014)
+- [Paul Howarth brought this change]
 
 
-Yang Tse (13 Feb 2013)
-- move msvc IDE related files to 'vs' directory tree
+  openssl: build fix for versions < 0.9.8e
   
   
-  Use 'vs' directory tree given that 'vc' intended one clashes
-  with an already existing build target in file Makefile.dist.
+  Bug: http://curl.haxx.se/mail/lib-2014-09/0064.html
 
 
-Daniel Stenberg (13 Feb 2013)
-- install-sh: updated to support multiple source files as arguments
+- mk-ca-bundle.pl: first, try downloading HTTPS with curl
   
   
-  Version 7.29.0 uses Makefiles generated with a newer version of the
-  autotools than the previous 7.28.1. These Makefiles try to install
-  e.g. header files by calling install-sh with multiple source files as
-  arguments. The bundled install-sh is to old and does not support this.
+  As a sort of step forward, this script will now first try to get the
+  data from the HTTPS URL using curl, and only if that fails it will
+  switch back to the HTTP transfer using perl's native LWP functionality.
+  To reduce the risk of this script being tricked.
   
   
-  The problem only occurs, if install-sh is actually being used, ie. the
-  platform install executable is to old or not usable. Example: Solaris
-  10.
+  Using HTTPS to get a cert bundle introduces a chicken-and-egg problem so
+  we can't really ever completely disable HTTP, but chances are that most
+  users already have a ca cert bundle that trusts the mozilla.org site
+  that this script downloads from.
   
   
-  The files install-sh and mkinstalldirs are now updated with the automake
-  1.11.3 versions. A better fix might be to completely remove them from
-  git and force the files to be added/created during buildconf.
+  A future version of this script will probably switch to require a
+  dedicated "insecure" command line option to allow downloading over HTTP
+  (or unverified HTTPS).
+
+- LICENSE-MIXING: removed krb4 info
   
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1195
-  Reported by: Rainer Jung
+  krb4 has been dropped since a while now
+
+- bump: on the 7.38.1-DEV train now!
 
 
-Yang Tse (13 Feb 2013)
-- move msvc IDE related files to 'vc' directory tree
+- SSLCERTS: minor updates
+  
+  Edited format to look better on the web, added a "it is about trust"
+  section.
 
 
-- msvc IDE 'vc' directory tree preparation
+Version 7.38.0 (10 Sep 2014)
 
 
-Steve Holme (12 Feb 2013)
-- imap: Corrected a whitespace issue from previous commit
+Daniel Stenberg (10 Sep 2014)
+- dist: two cmake files are no more
   
   
-  Fixed a small whitespace issue that crept in there in commit
-  508cdf4da4d7.
+  CMake/FindOpenSSL.cmake and FindZLIB.cmake are gone since 14aa8f0c117b
 
 
-- email: Another post optimisation of endofresp() tidy up
+- RELEASE-NOTES: final update for 7.38.0
 
 
-- sasl: Fixed null pointer reference when decoding empty digest challenge
+- cookies: reject incoming cookies set for TLDs
   
   
-  Fixed a null pointer reference when an empty challenge is passed to the
-  Curl_sasl_create_digest_md5_message() function.
+  Test 61 was modified to verify this.
   
   
-  Bug: http://sourceforge.net/p/curl/bugs/1193/
-  Reported by: Saran Neti
-
-- email: Post optimisation of endofresp() tidy up
+  CVE-2014-3620
   
   
-  Removed unnecessary end of line check and return.
+  Reported-by: Tim Ruehsen
+  URL: http://curl.haxx.se/docs/adv_20140910B.html
 
 
-Nick Zitzmann (12 Feb 2013)
-- darwinssl: Fix send glitchiness with data > 32 or so KB
+- [Tim Ruehsen brought this change]
+
+  cookies: only use full host matches for hosts used as IP address
+  
+  By not detecting and rejecting domain names for partial literal IP
+  addresses properly when parsing received HTTP cookies, libcurl can be
+  fooled to both send cookies to wrong sites and to allow arbitrary sites
+  to set cookies for others.
   
   
-  An ambiguity in the SSLWrite() documentation lead to a bad inference in the
-  code where we assumed SSLWrite() returned the amount of bytes written to
-  the socket, when that is not actually true; it returns the amount of data
-  that is buffered for writing to the socket if it returns errSSLWouldBlock.
-  Now darwinssl_send() returns CURLE_AGAIN if data is buffered but not written.
+  CVE-2014-3613
   
   
-  Reference URL: http://curl.haxx.se/mail/lib-2013-02/0145.html
+  Bug: http://curl.haxx.se/docs/adv_20140910A.html
 
 
-Steve Holme (12 Feb 2013)
-- pingpong.h: Fixed line length over 78 characters from b56c9eb48e3c
+- HISTORY: fix the 1998 title position
 
 
-- pingpong: Optimised the endofresp() function
+- HISTORY: extended and now markdown
+
+- SSLCERTS: converted to markdown
   
   
-  Reworked the pp->endofresp() function so that the conndata, line and
-  line length are passed down to it just as with Curl_client_write()
-  rather than each implementation of the function having to query
-  these values.
+  Only minor edits to make it generate nice HTML output using markdown, as
+  this document serves both in source release tarballs as on the web site.
   
   
-  Additionally changed the int return type to bool as this is more
-  representative of the function's usage.
+  URL: http://curl.haxx.se/docs/sslcerts.html
 
 
-- email: Post STARTLS capability code tidy up (Part Three)
+- ftp-wildcard.c: spell fix
   
   
-  Corrected the order of the upgrade_tls() functions and moved the handler
-  upgrade and getsock() functions out from the middle of the state related
-  functions.
+  Reported-By: Frank Gevaerts
 
 
-- email: Post STARTLS capability code tidy up (Part Two)
-  
-  Corrected the order of the pop3_state_capa() / imap_state_capability()
-  and the pop3_state_capa_resp() / imap_state_capability_resp() functions
-  to match the execution order.
+- RELEASE-NOTES: synced with 921a0c22a6f
 
 
-Daniel Stenberg (11 Feb 2013)
-- [ulion brought this change]
+- THANKS: synced with RELEASE-NOTES for 921a0c22a6f
 
 
-  SOCKS: fix socks proxy when noproxy matched
-  
-  Test 1212 added to verify
+- polarassl: avoid memset() when clearing the first byte is enough
+
+- [Catalin Patulea brought this change]
+
+  polarssl: support CURLOPT_CAPATH / --capath
   
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1190
+  Signed-off-by: Catalin Patulea <cat@vv.carleton.ca>
+
+- SECURITY: eh, make more sense!
 
 
-Steve Holme (11 Feb 2013)
-- ntlm: Updated comments for the addition of SASL support to IMAP in v7.29
+- SECURITY: how to join the curl-security list
 
 
-- RELEASE-NOTES: Updated following the recent imap/pop3/smtp changes
+- RELEASE-NOTES: fix the required nghttp2 version typo
 
 
-Linus Nielsen Feltzing (10 Feb 2013)
-- Fix NULL pointer reference when closing an unused multi handle.
+- [Brandon Casey brought this change]
 
 
-Steve Holme (10 Feb 2013)
-- email: Post STARTLS capability code tidy up (Part One)
+  Ensure progress.size_dl/progress.size_ul are always >= 0
+  
+  Historically the default "unknown" value for progress.size_dl and
+  progress.size_ul has been zero, since these values are initialized
+  implicitly by the calloc that allocates the curl handle that these
+  variables are a part of.  Users of curl that install progress
+  callbacks may expect these values to always be >= 0.
+  
+  Currently it is possible for progress.size_dl and progress.size_ul
+  to by set to a value of -1, if Curl_pgrsSetDownloadSize() or
+  Curl_pgrsSetUploadSize() are passed a "size" of -1 (which a few
+  places currently do, and a following patch will add more).  So
+  lets update Curl_pgrsSetDownloadSize() and Curl_pgrsSetUploadSize()
+  so they make sure that these variables always contain a value that
+  is >= 0.
   
   
-  Corrected the order of the CAPA / CAPABILITY state machine constants to
-  match the execution order.
+  Updates test579 and test599.
+  
+  Signed-off-by: Brandon Casey <drafnel@gmail.com>
 
 
-- imap: Fixed memory leak following commit f6010d9a0359
+Steve Holme (7 Sep 2014)
+- tests: Added test1420 to the makefile
 
 
-- smtp: Added support for the STARTTLS capability (Part Two)
-  
-  Added honoring of the tls_supported flag when starting a TLS upgrade
-  rather than unconditionally attempting it. If the use_ssl flag is set
-  to CURLUSESSL_TRY and the server doesn't support TLS upgrades then the
-  connection will continue to authenticate. If this flag is set to
-  CURLUSESSL_ALL then the connection will complete with a failure as it
-  did previously.
+- test1420: Removed unnecessary CURLOPT setting
 
 
-- pop3: Added support for the STLS capability (Part Three)
-  
-  Added honoring of the tls_supported flag when starting a TLS upgrade
-  rather than unconditionally attempting it. If the use_ssl flag is set
-  to CURLUSESSL_TRY and the server doesn't support TLS upgrades then the
-  connection will continue to authenticate. If this flag is set to
-  CURLUSESSL_ALL then the connection will complete with a failure as it
-  did previously.
+- tests: Added more "Clear Text" authentication keywords
 
 
-- imap: Added support for the STARTTLS capability (Part Three)
-  
-  Added honoring of the tls_supported flag when starting a TLS upgrade
-  rather than unconditionally attempting it. If the use_ssl flag is set
-  to CURLUSESSL_TRY and the server doesn't support TLS upgrades then the
-  connection will continue to authenticate. If this flag is set to
-  CURLUSESSL_ALL then the connection will complete with a failure as it
-  did previously.
+- tests: Updated "based on" text due to email test renumbering
 
 
-Daniel Stenberg (10 Feb 2013)
-- [Alessandro Ghedini brought this change]
+- tests: For consistency added --libcurl to test name
 
 
-  htmltitle: fix suggested build command
+- tests: Added --libcurl for IMAP test case
 
 
-Steve Holme (10 Feb 2013)
-- pop3: Added support for the STLS capability (Part Two)
+- multi.c: Avoid invalid memory read after free() from commit 3c8c873252
   
   
-  Added sending of initial CAPA command before STLS is sent. This allows
-  for the detection of the capability before trying to upgrade the
-  connection.
+  As the current element in the list is free()d by Curl_llist_remove(),
+  when the associated connection is pending, reworked the loop to avoid
+  accessing the next element through e->next afterward.
 
 
-- imap: Added support for the STARTTLS capability (Part Two)
+- multi.c: Fixed compilation warning from commit 3c8c873252
   
   
-  Added sending of initial CAPABILITY command before STARTTLS is sent.
-  This allows for the detection of the capability before trying to
-  upgrade the connection.
+  warning: implicit conversion from enumeration type 'CURLMcode' to
+  different enumeration type 'CURLcode'
 
 
-- smtp: Added support for the STLS capability (Part One)
+- url.c: Use CURLAUTH_NONE constant rather than 0
   
   
-  Introduced detection of the STARTTLS capability, in order to add support
-  for TLS upgrades without unconditionally sending the STARTTLS command.
+  Small follow up to commit 898808fa8c to use auth constants rather than
+  hard code value when clearing picked authentication mechanism.
 
 
-- pop3: Added support for the STLS capability (Part One)
-  
-  Introduced detection of the STLS capability, in order to add support
-  for TLS upgrades without unconditionally sending the STLS command.
+- RELEASE-NOTES: Synced with fd1ce3856a
 
 
-- imap: Added support for the STARTTLS capability (Part One)
+Nick Zitzmann (4 Sep 2014)
+- [Vilmos Nebehaj brought this change]
+
+  darwinssl: Use CopyCertSubject() to check CA cert.
+  
+  SecCertificateCopyPublicKey() is not available on iPhone. Use
+  CopyCertSubject() instead to see if the certificate returned by
+  SecCertificateCreateWithData() is valid.
   
   
-  Introduced detection of the STARTTLS capability, in order to add support
-  for TLS upgrades without unconditionally sending the STARTTLS command.
+  Reported-by: Toby Peterson
 
 
-- RELEASE-NOTES: synced with 92f7606f29b704
+Steve Holme (4 Sep 2014)
+- RELEASE-NOTES: Clarify email Kerberos support is currently via Windows SSPI
 
 
-- smtp: Fixed an issue when processing EHLO failure responses (Part 3)
-  
-  Follow up fix to commit 62bd21746443 to cater for servers that don't
-  respond with a 250 in their EHLO responses. Additionally updated the
-  SMTP tests to respond with a 250 response code as per RFC5321.
+Daniel Stenberg (4 Sep 2014)
+- MAIL-ETIQUETTE: "1.8 I posted, now what?"
 
 
-- pop3: Fixed SASL authentication capability detection
+- CURLOPT_CA*: better refering between *CAINFO and *CAPATH
   
   
-  Fixed the SASL capability detection to include the space character
-  before the authentication mechanism list. Otherwise a capability such
-  as SASLSOMETHING would be interpreted as enabling SASL and potentially
-  trying to identify SOMETHING as a mechanism.
+  ... and a minor wording edit
 
 
-- pop3: Fixed incorrect return value from pop3_endofresp()
+- THANKS: added Dennis Clarke
   
   
-  Corrected an incorrect return value when -ERR is received from the
-  server - introduced in commit b5bb61ee697b (June 2012).
+  Dennis Clarke from Blastwave.org for ensuring that nightly builds run
+  smooth on Solaris!
 
 
-- smtp: Fixed an issue when processing EHLO failure responses (Part 2)
+- curl_multi_cleanup: remove superfluous NULL assigns
   
   
-  Follow up fix to commit 23d17190ee32 as EHLO capabilities can exist
-  within a positive response line.
+  ... as the struct is free()d in the end anyway. It was first pointed out
+  to me that one of the ->msglist assignments were supposed to have been
+  ->pending but was a copy and paste mistake when I realized none of the
+  clearing of pointers had to be there.
 
 
-- smtp: Fixed an issue with missing capabilities after the AUTH line
+- multi: convert CURLM_STATE_CONNECT_PEND handling to a list
   
   
-  Follow up to commit 40f9bb787f05 to fix missing capabilities after an
-  AUTH line.
-
-Nick Zitzmann (8 Feb 2013)
-- darwinssl: Make certificate errors less techy
+  ... instead of scanning through all handles, stash only the actual
+  handles that are in that state in the new ->pending list and scan that
+  list only. It should be mostly empty or very short. And only used for
+  pipelining.
+  
+  This avoids a rather hefty slow-down especially notable if you add many
+  handles to the same multi handle. Regression introduced in commit
+  0f147887 (version 7.30.0).
   
   
-  Previously if a problem was found with one of the server's certificates,
-  we'd log an OSStatus for the end user to look up. Now we explain what
-  was wrong with the site's certificate chain. Also un-did part of the
-  previous commit where the code wouldn't catch errSSLServerAuthCompleted
-  if built under Leopard.
+  Bug: http://curl.haxx.se/mail/lib-2014-07/0206.html
+  Reported-by: David Meyer
 
 
-Guenter Knauf (9 Feb 2013)
-- Updated dependency libs.
+- RELEASE-NOTES: synced with e608324f9f9
 
 
-Steve Holme (9 Feb 2013)
-- imap: Corrected some comments
+- [Andre Heinecke brought this change]
 
 
-- smtp: Fixed an issue when processing EHLO failure responses
+  polarssl: implement CURLOPT_SSLVERSION
   
   
-  Fixed a small issue where smtp_endofresp() would look for capabilities
-  in the description part of a failure response. In theory a server
-  shouldn't respond with SIZE or AUTH in an EHLO command's failure
-  response but if it did then capabilities would be unnecessarily set
-  before eventually failing.
-
-- pop3: Reworked pop3_endofresp() to simplify it little
+  Forwards the setting as minimum ssl version (if set) to polarssl.  If
+  the server does not support the requested version the SSL Handshake will
+  fail.
   
   
-  Reworked pop3_endofresp() to simplify it and provide consistency between
-  imap and smtp.
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1419
 
 
-- imap: Renamed state variables in imap_authenticate()
-  
-  Renamed the authstate1 and authstate2 variables in imap_authenticate()
-  as the old name was a left over from when there was only one state
-  variable which was named due to a clash with the state() function.
+nickzman (1 Sep 2014)
+- Merge pull request #115 from ldx/darwinsslfixpr
   
   
-  Additionally this provides consistency with the smtp module.
+  darwinssl: now accepts cacert bundles in PEM format in addition to single certs
 
 
-- smtp: Reworked smtp_endofresp() to allow for extra capability detection
-
-- smtp: Renamed smtp_state_auth_passwd_resp() function
+Vilmos Nebehaj (1 Sep 2014)
+- Check CA certificate in curl_darwinssl.c.
   
   
-  Renamed the login password response function to better describe it's
-  purpose as well as for consistency with the imap and pop3 modules.
-
-Daniel Stenberg (8 Feb 2013)
-- [Gisle Vanem brought this change]
+  SecCertificateCreateWithData() returns a non-NULL SecCertificateRef even
+  if the buffer holds an invalid or corrupt certificate. Call
+  SecCertificateCopyPublicKey() to make sure cacert is a valid
+  certificate.
 
 
-  ntlm: fix memory leak
+Daniel Stenberg (31 Aug 2014)
+- low-speed-limit: avoid timeout flood
   
   
-  Running tests\libtest\libntlmconnect.exe reveals a 1 byte (!) leak in
-  ./lib/curl_ntlm_msgs.c:
+  Introducing Curl_expire_latest(). To be used when we the code flow only
+  wants to get called at a later time that is "no later than X" so that
+  something can be checked (and another timeout be added).
   
   
-  perl ..\memanalyze.pl c:memdebug.curl
-  Leak detected: memory still allocated: 1 bytes
-  At 9771e8, there's 1 bytes.
-  allocated by curl_ntlm_msgs.c:399
+  The low-speed logic for example could easily be made to set very many
+  expire timeouts if it would be called faster or sooner than what it had
+  set its own timer and this goes for a few other timers too that aren't
+  explictiy checked for timer expiration in the code.
   
   
-  Snippet from curl_ntlm_msgs.c:
-     /* setup ntlm identity's domain and length */
-     dup_domain.tchar_ptr = malloc(sizeof(TCHAR) * (domlen + 1));
+  If there's no condition the code that says if(time-passed >= TIME), then
+  Curl_expire_latest() is preferred to Curl_expire().
   
   
-  (my domlen == 0).
+  If there exists such a condition, it is on the other hand important that
+  Curl_expire() is used and not the other.
   
   
-  'dup_domain.tbyte_ptr' looks to be freed in Curl_ntlm_sspi_cleanup() via
-  'ntlm->identity.Domain'. But I see no freeing of 'dup_domain.tchar_ptr'.
+  Bug: http://curl.haxx.se/mail/lib-2014-06/0235.html
+  Reported-by: Florian Weimer
+
+- [Michael Wallner brought this change]
 
 
-- DONE: consider callback-aborted transfers premature
+  resolve: cache lookup for async resolvers
   
   
-  This bug report properly identified that when doing SMTP and aborting
-  the transfer with a callback, it must be considered aborted prematurely
-  by the code to avoid QUIT etc to be attempted as that would cause a
-  hang.
+  While waiting for a host resolve, check if the host cache may have
+  gotten the name already (by someone else), for when the same name is
+  resolved by several simultanoues requests.
   
   
-  The new test case 1507 verifies this behavior.
+  The resolver thread occasionally gets stuck in getaddrinfo() when the
+  DNS or anything else is crappy or slow, so when a host is found in the
+  DNS cache, leave the thread alone and let itself cleanup the mess.
+
+Vilmos Nebehaj (30 Aug 2014)
+- Fix CA certificate bundle handling in darwinssl.
   
   
-  Reported by: Patricia Muscalu
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1184
+  If the --cacert option is used with a CA certificate bundle that
+  contains multiple CA certificates, iterate through it, adding each
+  certificate as a trusted root CA.
 
 
-- FAQ: refreshed some phrases
+Daniel Stenberg (29 Aug 2014)
+- [Askar Safin brought this change]
 
 
-Nick Zitzmann (7 Feb 2013)
-- darwinssl: Fix build under Leopard
-  
-  It turns out that Leopard (OS X 10.5) doesn't have constants for the ECDH
-  ciphers in its headers, so the cases for them have been taken out of the
-  build when building under Leopard. Also added a standard function for
-  getting a string description of a SecCertificateRef.
+  getinfo-times: Typo fixed
 
 
-Steve Holme (7 Feb 2013)
-- RELEASE-NOTES: Added new imap features
+- [Askar Safin brought this change]
 
 
-- imap: Added support for SASL-IR extension (Part 2)
-  
-  Modified imap_authenticate() to add support for sending the initial
-  response with the AUTHENTICATE command, as per RFC4959.
+  libcurl.3: Typo fixed
 
 
-- smtp: Updated SMTP_AUTH_PASSWD state constant
-  
-  Changed the SMTP_AUTH_PASSWD state constant to SMTP_AUTH_LOGIN_PASSWD to
-  better describe the state as the second part of an AUTH LOGIN command,
-  as well as for consistency with the imap and pop3 modules.
+- curl_formadd.3: setting CURLFORM_CONTENTSLENGTH 0 zero means strlen
+
+- curl.1: add an example for -H
+
+- FAQ: mention -w in the 4.20 answer as well
 
 
-- imap: Added support for SASL-IR extension (Part 1)
+- FAQ: 4.20 curl doesn't return error for HTTP non-200 responses
+
+- CURLOPT_NOBODY.3: clarify this option is for downloads
+  
+  When enabling CURLOPT_NOBODY, libcurl effectively switches off upload
+  mode and will do a download (without a body). This is now better
+  explained in this man page.
   
   
-  Introduced detection of the SASL-IR capability, in order to add support
-  for sending the initial response with the AUTHENTICATE command, as per
-  RFC4959.
+  Bug: http://curl.haxx.se/mail/lib-2014-08/0236.html
+  Reported-by: John Coffey
+
+- INTERNALS: nghttp2 must be 0.6.0 or later
+
+- [Tatsuhiro Tsujikawa brought this change]
 
 
-Daniel Stenberg (7 Feb 2013)
-- Revert "vc: remove explicit MSVC6 IDE project file and documentation"
+  Compile with latest nghttp2
+
+Dan Fandrich (26 Aug 2014)
+- THANKS: removed a few more duplicates
+
+Daniel Stenberg (26 Aug 2014)
+- RELEASE-NOTES: synced with 007242257683a
   
   
-  This reverts commit 0e66d5878edc3d7ffc445116d194b58bbc7504b9.
+  ... and bumped the contributor amount after recount
 
 
-Steve Holme (7 Feb 2013)
-- imap: Changed response tag generation to be completely unique
+- THANKS: added 52 missing contributors
   
   
-  Updated the automatic response tag generation to follow the examples
-  given in RC3501, which list a 4 character string such as A001, A002,
-  etc.
+  I re-ran contributors.sh on all changes since 7.10 and I found these
+  contributors who are mentioned in the commits but never were added to
+  THANKS before!
   
   
-  As a unique identifier should be generated for each command the string
-  generation is based on the connection id and the incrementing command
-  id.
+  I also removed a couple of duplicates (mostly due to different
+  spellings).
+
+- contributors: grep and sort case insensitively
+
+- [Michael Osipov brought this change]
 
 
-Dan Fandrich (6 Feb 2013)
-- Tweak the Android.mk file for its new location
+  configure.ac: Add support for recent GSS-API implementations for HP-UX
   
   
-  This is untested, but ought to be enough to still allow it
-  to work automatically when the entire curl source tree is
-  dropped into a full Android source tree.
+  By default, configure script assumes that libcurl will use the
+  HP-supplied GSS-API implementation which does not have krb5-config.
+  If a dev needs a more recent version which has that config script,
+  the change will allow to pass an appropriate GSSAPI_ROOT.
 
 
-Daniel Stenberg (6 Feb 2013)
-- vc: remove explicit MSVC6 IDE project file and documentation
+- CONNECT: close proxy connections that fail to CONNECT
   
   
-  VC6 is _very_ old and we provide working makefiles even for that
-  compiler. Users who build with the IDE never use that method and project
-  file anyway and it was just lingering in the root dir.
+  This is usually due to failed auth. There's no point in us keeping such
+  a connection alive since it shouldn't be re-used anyway.
+  
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1381
+  Reported-by: Marcel Raad
 
 
-Steve Holme (6 Feb 2013)
-- imap: Small variable rename in preparation for upcoming change
+- RELEASE-NOTES: added two missing HTTP/2 bug fixes
   
   
-  Renamed a couple of variables and updated some comments in
-  preparation for upcoming command id / response tag change.
+  And renamed all http2 references to HTTP/2 in this file
+
+- RELEASE-NOTES: synced with f646e9075f47
 
 
-Daniel Stenberg (6 Feb 2013)
-- msvc: move Makefile.msvc.names into winbuild/
+- [Jakub Zakrzewski brought this change]
+
+  Cmake: Possibility to use OpenLDAP, OpenSSL, LibSSH2 on windows
   
   
-  In an attempt to clear up misc files from the root dir
+  At this point I can build libcurl on windows. It provides at least the same
+  list of protocols as for linux build and works with our software.
 
 
-- build: move Android.mk to packages/Android/
+- [Jakub Zakrzewski brought this change]
 
 
-- emacs files: remove from git and dist
+  Cmake: Removed repeated content from ending blocks
   
   
-  We don't need them and I doubt many people used them. We also don't have
-  any configs for other editors and we wouldn't want that.
+  They are unnecesary in modern CMake and removing them improves readability.
+
+- [Jakub Zakrzewski brought this change]
 
 
-Steve Holme (6 Feb 2013)
-- email: Moved starttls code in separate functions
+  Cmake: Removed some useless empty SET statements.
   
   
-  To help maintain the readability of the code in imap.c, pop3.c and
-  smtp.c moved the starttls code into state_starttls() functions.
+  Undefined variables resolve to empty strings and we do not ever test if
+  the variable is defined thus those SETs are superfluous.
 
 
-- [Nick Zitzmann brought this change]
+- [Jakub Zakrzewski brought this change]
 
 
-  FEATURES: More NTLM and SSL changes, added two others, fixed typo
+  Cmake: Removed useless comments from CMakeLists.txt
   
   
-  Added IDN and HTTP data compression as they were left out of the
-  document until now.
+  They look like some relics after changes.
+
+- [Jakub Zakrzewski brought this change]
+
+  Cmake: Don't check for all headers each time
   
   
-  Added notes for qssl, schannel and Secure Transport supporting SSLv2,
-  Secure Transport supports NTLM, and axTLS does not support SSLv3.
+  One header at a time is the right way. Apart from that the output on
+  windows goes from:
+  ...
+  -- Looking for include files I:/src/libssh2-1.4.3/include/libssh2.h, ws2tcpip.h
+  -- Looking for include files I:/src/libssh2-1.4.3/include/libssh2.h, ws2tcpip.h
+  - found
+  -- Looking for 3 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., wins
+  ock2.h
+  -- Looking for 3 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., wins
+  ock2.h - found
+  -- Looking for 4 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., stdi
+  o.h
+  -- Looking for 4 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., stdi
+  o.h - found
+  -- Looking for 5 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., wind
+  ows.h
+  -- Looking for 5 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., wind
+  ows.h - found
+  -- Looking for 6 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., wins
+  ock.h
+  -- Looking for 6 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., wins
+  ock.h - found
+  -- Looking for 7 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., sys/
+  filio.h
+  -- Looking for 7 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., sys/
+  filio.h - not found
+  -- Looking for 7 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., sys/
+  ioctl.h
+  -- Looking for 7 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., sys/
+  ioctl.h - not found
+  -- Looking for 7 include files I:/src/libssh2-1.4.3/include/libssh2.h, ..., sys/
+  resource.h
+  ...
   
   
-  There was also a typo; "AUTH TSL" should be "AUTH TLS".
+  To much nicer:
+  ...
+  -- Looking for ws2tcpip.h
+  -- Looking for ws2tcpip.h - found
+  -- Looking for winsock2.h
+  -- Looking for winsock2.h - found
+  -- Looking for stdio.h
+  -- Looking for stdio.h - found
+  -- Looking for windows.h
+  -- Looking for windows.h - found
+  -- Looking for winsock.h
+  -- Looking for winsock.h - found
+  -- Looking for sys/filio.h
+  -- Looking for sys/filio.h - not found
+  -- Looking for sys/ioctl.h
+  -- Looking for sys/ioctl.h - not found
+  -- Looking for sys/resource.h
 
 
-Kamil Dudka (6 Feb 2013)
-- curl-config.in: do not randomly mix tabs and spaces
+- [Jakub Zakrzewski brought this change]
 
 
-Daniel Stenberg (6 Feb 2013)
-- 7.29.1: onwards!
+  Cmake: Append OpenSSL include directory to search path
+  
+  At this point I can build libcurl with OpenSSL, OpenLDAP and LibSSH2.
+  Supported protocols are at least:
+  HTTP, HTTPS, FTP, SFTP, TFTP, LDAP, LDAPS, POP3, SMTP
+  (those are the ones we have regression tests for
+  in our product's testsuite)
 
 
-- THANKS: 12 contributors from 7.29.0
+- [Jakub Zakrzewski brought this change]
 
 
-Version 7.29.0 (6 Feb 2013)
+  Cmake: Search for liblber, LDAP SSL headers, swith for using OpenLDAP code.
 
 
-Daniel Stenberg (6 Feb 2013)
-- vms: config-vms.h is removed, no use trying to distribute it
+- [Jakub Zakrzewski brought this change]
 
 
-- RELEASE-NOTES: mention the SASL buffer overflow
+  Cmake: LibSSH2 detection and use.
 
 
-- [Eldar Zaitov brought this change]
+- [Jakub Zakrzewski brought this change]
 
 
-  Curl_sasl_create_digest_md5_message: fix buffer overflow
-  
-  When negotiating SASL DIGEST-MD5 authentication, the function
-  Curl_sasl_create_digest_md5_message() uses the data provided from the
-  server without doing the proper length checks and that data is then
-  appended to a local fixed-size buffer on the stack.
-  
-  This vulnerability can be exploited by someone who is in control of a
-  server that a libcurl based program is accessing with POP3, SMTP or
-  IMAP. For applications that accept user provided URLs, it is also
-  thinkable that a malicious user would feed an application with a URL to
-  a server hosting code targetting this flaw.
-  
-  Bug: http://curl.haxx.se/docs/adv_20130206.html
+  Cmake: Moved macros out of the main CMakeLists.txt
 
 
-Steve Holme (6 Feb 2013)
-- FEATURES: Removed erroneous whitespace
-  
-  Removed whitespace introduced in commit 5f8f20f5e65b that caused
-  formatting issues when generating the website docs.
+- [Jakub Zakrzewski brought this change]
 
 
-Yang Tse (6 Feb 2013)
-- setup-vms.h: post VMS patch cleanup - III
+  Cmake: Added missing protocol-disable switches
   
   
-  - rename post-config-vms.h to setup-vms.h
-  - move its inclusion into proper location in curl_setup.h
+  They already have their defines in config.h. This makes it possible to
+  disable the protocols from command line during configure step.
 
 
-- vms_show: post VMS patch cleanup - II
-  
-  - remove multiple declarations of vms_show and add comments
+- [Jakub Zakrzewski brought this change]
 
 
-- tool_main.c: post VMS patch cleanup - I
+  Cmake: Made boolean defines be defined to "1" instead of "ON"
   
   
-  - remove header inclusion already done in curl_setup_once.h
+  It's by convention, for compatibility and because the comments say so.
+  Just mabe someone have written a test like "#if HAVE_XX==1"
 
 
-Steve Holme (6 Feb 2013)
-- FEATURES: Added SSPI to list of NTLM libraries
+- [Jakub Zakrzewski brought this change]
 
 
-- FEATURES: Added Secure Transport and qssl to list of SSL libraries
+  Cmake: Require at least CMake 2.8.
+  
+  CMake 2.6 is already a bit old. Many bugs have been fixed since
+  its release. We use 2.8 in our company and we have no intention
+  of polluting our environment with old software, so 2.6 would
+  not be tested. This shouldn't be a problem since all one need
+  to build CMake from source is C and C++ compiler.
 
 
-- FEATURES: Added email feature set
+- disconnect: don't touch easy-related state on disconnects
+  
+  This was done to make sure NTLM state that is bound to a connection
+  doesn't survive and gets used for the subsequent request - but
+  disconnects can also be done to for example make room in the connection
+  cache and thus that connection is not strictly related to the easy
+  handle's current operation.
   
   
-  Added SMTP, SMTPS, POP3, POP3S, IMAP and IMAPS features.
+  The http authentication state is still kept in the easy handle since all
+  http auth _except_ NTLM is connection independent and thus survive over
+  multiple connections.
+  
+  Bug: http://curl.haxx.se/mail/lib-2014-08/0148.html
+  Reported-by: Paras S
 
 
-- imap.h: Corrected incorrect comment clarification
+- curl.1: clarify --limit-rate's effect on both directions
   
   
-  Corrected comment clarification made in commit 167717b8069a.
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1414
+  Reported-by: teo8976
 
 
-- COPYING: Updated copyright year to include 2013
+- curl.1: mention the --post30x options within the --location desc
 
 
-Daniel Stenberg (5 Feb 2013)
-- RELEASE-NOTES: synced with 25f351424b3538
-  
-  8 more bug fixes mentioned
+Dan Fandrich (22 Aug 2014)
+- sasl: Fixed a memory leak on OOM
 
 
-- [John E. Malmberg brought this change]
+Daniel Stenberg (22 Aug 2014)
+- [Frank Meier brought this change]
 
 
-  VMS: fix and generate the VMS build config
-  
-  config_h.com is a new file that generates a config.h file based on the
-  curl_config.h.in file and a quick scan of the configure script.  This is
-  actually a generic procedure that is shared with other VMS packages.
+  NTLM: ignore CURLOPT_FORBID_REUSE during NTLM HTTP auth
   
   
-  The existing pre-built config-vms.h had over 100 entries that were not
-  correct and in some cases conflicted with the build options available in
-  the build_vms.com.
+  Problem: if CURLOPT_FORBID_REUSE is set, requests using NTLM failed
+  since NTLM requires multiple requests that re-use the same connection
+  for the authentication to work
   
   
-  generate_config_vms_h_curl.com is a helper procedure to the
-  config_h.com.  It covers the cases that the generic config_h.com is not
-  able to figure out, and accepts input from the build_vms.com procedure.
+  Solution: Ignore the forbid reuse flag in case the NTLM authentication
+  handshake is in progress, according to the NTLM state flag.
   
   
-  build_curlbuild_h.com is a new file to generate the curlbuild.h file
-  that Curl is now using when it is using a curl_config.h file.
+  Fixed known bug #77.
+
+Steve Holme (22 Aug 2014)
+- openssl.c: Fixed longer than 79 columns
+
+- openssl.c: Fixed compilation warning
   
   
-  post-config-vms.h is a new file that is needed to provide VMS specific
-  definitions, and most of them need to be set before the system header
-  files are included.
+  warning: declaration of 'minor' shadows a global declaration
+
+Daniel Stenberg (21 Aug 2014)
+- [Haris Okanovic brought this change]
+
+  win32: Fixed WinSock 2 #if
   
   
-  The VMS build procedure is fixed:
+  A conditionally compiled block in connect.c references WinSock 2
+  symbols, but used `#ifdef HAVE_WINSOCK_H` instead of `#ifdef
+  HAVE_WINSOCK2_H`.
   
   
-     1. Fixed to link in the correct HP ssl library.
-     2. Fixed to detect if HP Kerberos is installed.
-     3. Fixed to detect if HP LDAP is installed.
-     4. Fixed to detect if gnv$libzshr is installed.
-     5. Simplified the input parameter parsing to not use a loop.
-     6. Warn that 64 bit pointer option support is not complete
-        in comments.
-     7. Default to IEEE floating if platform supports it so
-        resulting libcurl will be compatible with other
-        open source projects on VMS.
-     8. Default to LARGEFILE if platform supports it.
-     9. Default to enable SSL, LDAP, Kerberos, libz
-        if the libraries are present.
-     10. Build with exact case global symbols for libcurl.
-     11. Generate linker option file needed.
-     12. Compiler list option only commonly needed items.
-     13. fulllist option for those who really want it.
-     14. Create debug symbol file on Alpha, IA64.
+  Bug: http://curl.haxx.se/mail/lib-2014-08/0155.html
 
 
-- Curl_proxyCONNECT: return once CONNECT is sent
+- Curl_disconnect: don't free the URL
   
   
-  By doing this unconditionally, we infer a simpler and more defined
-  behavior. This also has the upside that test 1021 no longer fails for me
-  even if I run with valgrind.
+  The URL is not a property of the connection so it should not be freed in
+  the connection disconnect but in the Curl_close() that frees the easy
+  handle.
   
   
-  Also fixed some wrong comments.
+  Bug: http://curl.haxx.se/mail/lib-2014-08/0148.html
+  Reported-by: Paras S
 
 
-Steve Holme (5 Feb 2013)
-- email: Reworked comments in the endofresp() functions
+- help output: minor whitespace edits
   
   
-  Tidied up the comments in the endofresp() functions to be more
-  meaningful prior to release.
+  Should've been amended in the previous commit but wasn't due to a
+  mistake.
 
 
-Marc Hoersken (5 Feb 2013)
-- schannel: Removed extended error connection setup flag
-  
-  According KB975858 this flag may cause problems on Windows 7 and
-  Windows Server 2008 R2 systems. Extended error information is not
-  currently used by libcurl and therefore not a requirement.
-  
-  The flag may improve the SSL-connection shutdown in case of an
-  error. This means it might be a good improvement in the future.
+- [Zearin brought this change]
+
+  help output: use ≥2 spaces between option and description
   
   
-  Fixes bug/issue #1187 - thanks for the report
+  ... and some other cleanups
 
 
-Daniel Stenberg (5 Feb 2013)
-- [Tor Arntsen brought this change]
+- FAQ: some actually sometimes get paid...
 
 
-  singleipconnect: Update *sockp for all CURLE_OK
-  
-  The 56b7c87c7 change left a case where a good sockfd was not copied to
-  *sockp before returning with CURLE_OK
+Steve Holme (17 Aug 2014)
+- sasl_sspi: Fixed a memory leak with the GSSAPI base-64 decoded challenge
 
 
-- curl_easy_perform: Value stored to 'mcode' is never read
+- sasl_sspi: Renamed GSSAPI mutual authentication parameter
   
   
-  pointed out by clang-analyzer
+  ...From "mutual" to "mutual_auth" which better describes what it is.
 
 
-- singleipconnect: remove dead assignment
+- sasl_sspi: Corrected some of the GSSAPI security message error codes
   
   
-  pointed out by clang-analyzer
-
-Linus Nielsen Feltzing (5 Feb 2013)
-- CURLMOPT_MAXCONNECTS: restore functionality
+  Corrected a number of the error codes that can be returned from the
+  Curl_sasl_create_gssapi_security_message() function when things go
+  wrong.
   
   
-  When a connection is no longer used, it is kept in the cache. If the
-  cache is full, the oldest idle connection is closed. If no connection is
-  idle, the current one is closed instead.
+  It makes more sense to return CURLE_BAD_CONTENT_ENCODING when the
+  inbound security challenge can't be decoded correctly or doesn't
+  contain the KERB_WRAP_NO_ENCRYPT flag and CURLE_OUT_OF_MEMORY when
+  EncryptMessage() fails. Unfortunately the previous error code of
+  CURLE_RECV_ERROR was a copy and paste mistakes on my part and should
+  have been correct in commit 4b491c675f :(
 
 
-Steve Holme (5 Feb 2013)
-- RELEASE-NOTES: Updated following recent changes to the email protocols
-  
-  Added recent additions and fixes following the changes to imap, pop3
-  and smtp. Additionally added another contributor that helped to test
-  the imap sasl changes.
+- docs: Escaped single backslash
 
 
-- email: Provided extra comments following recent pop3/imap fixes
+- TODO: Updated following GSSAPI (Kerberos V5) additions
   
   
-  Provided additional clarification about the logic of the authenticate()
-  functions following commit 6b6bdc83bd36 and b4270a9af1d0.
-
-Daniel Stenberg (5 Feb 2013)
-- [Andrei Kurushin brought this change]
+  Updated "FTP 4.6 GSSAPI via Windows SSPI" and "SASL 14.1 Other
+  authentication mechanisms" following recent additions.
+  
+  Added SASL 14.2 GSSAPI via GSS-API libraries.
 
 
-  winbuild: include version info for .dll .exe
+- CURLOPT_USERNAME.3: Added Kerberos V5 and NTLM domain information
   
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1186
+  This repeats what has already been documented in both the curl manpage
+  and CURLOPT_USERPWD documentation but is provided here for completeness
+  as someone may not especially read the latter when using libcurl.
 
 
-- FAQ: clarify 5.13 How do I stop an ongoing transfer
+- CURLOPT_USERPWD.3: Updated following Kerberos V5 SSPI changes
   
   
-  Rich Gray provided good feedback and we now clarify that you can in fact
-  stop a multi transfer at any point you like by removing the easy handle.
+  Added information about Kerberos V5 requiring the domain part in the
+  user name.
+  
+  Mentioned that the user name can be specified in UPN format, and not
+  just in Down-Level Logon Name format, following the information
+  added in commit 7679cb3fa8 reworking the exisitng information in the
+  process.
 
 
-- [Matt Arsenault brought this change]
+- docs: Added Kerberos V5 and NTLM domain information to --user
 
 
-  cmake: Fix mingw build
+- docs: Added Kerberos V5 to the --user SSPI current credentials usage
 
 
-- [Sergei Nikulov brought this change]
+- sasl_sspi: Tell the server we don't support a GSSAPI receive buffer
 
 
-  cmake: updated OpenSSL build
+- smtp: Added support for GSSAPI (Kerberos V5) authentication via Windows SSPI
 
 
-Steve Holme (4 Feb 2013)
-- pop3.c: Updated variable names to use shorter / more readable variant
-  
-  Tidied up code from commit 6b6bdc83bdUpdated where a few instances of
-  the pop3c struct variable used the longer conndata struct rather than
-  matching what other code in pop3_authenticate() used.
+- pop3: Added support for GSSAPI (Kerberos V5) authentication via Windows SSPI
 
 
-Guenter Knauf (4 Feb 2013)
-- updated copyright years.
+- imap: Added support for GSSAPI (Kerberos V5) authentication via Windows SSPI
 
 
-- configure: update the copyright years for the output.
+- email: Added mutual authentication flag
 
 
-Steve Holme (3 Feb 2013)
-- imap: Fixed no known authentication mechanism when fallback is required
-  
-  Fixed an issue where (lib)curl is compiled without support for a
-  supported challenge-response based SASL authentication mechanism, such
-  as CRAM-MD5 or NTLM, the server doesn't support the LOGIN or PLAIN
-  mechanisms and (lib)curl doesn't fallback to Clear Text authentication.
+Daniel Stenberg (15 Aug 2014)
+- RELEASE-NOTES: synced with 0187c9e11d079
+
+- http: fix the Content-Range: parser
   
   
-  Note: In order to fallback to Clear Text authentication properly this
-  fix adds support for the LOGINDISABLED server capability.
-  imap: Fixed no known authentication mechanism when fallback is required
+  ... to handle "*/[total]". Also, removed the strange hack that made
+  CURLOPT_FAILONERROR on a 416 response after a *RESUME_FROM return
+  CURLE_OK.
   
   
-  Fixed an issue where (lib)curl is compiled without support for a
-  supported challenge-response based SASL authentication mechanism, such
-  as CRAM-MD5 or NTLM, the server doesn't support the LOGIN or PLAIN
-  mechanisms and (lib)curl doesn't fallback to Clear Text authentication.
+  Reported-by: Dimitrios Siganos
+  Bug: http://curl.haxx.se/mail/lib-2014-06/0221.html
+
+Steve Holme (14 Aug 2014)
+- email: Introduced the GSSAPI states
+
+- curl_sasl_sspi.c: Fixed more compilation warnings from commit 4b491c675f
   
   
-  Note: In order to fallback to Clear Text authentication properly this
-  fix adds support for the LOGINDISABLED server capability.
+  warning: unused variable 'resp'
   
   
-  Related bug: http://curl.haxx.se/mail/lib-2013-02/0004.html
-  Reported by: Stanislav Ivochkin
+  warning: no previous prototype for 'Curl_sasl_gssapi_cleanup'
 
 
-- pop3: Fixed no known authentication mechanism when fallback is required
+- SHA-1: 61c93383b7f6cf79d12ff99e9dced1d1cc2a7064
   
   
-  Fixed an issue where (lib)curl is compiled without support for a
-  supported challenge-response based SASL authentication mechanism, such
-  as CRAM-MD5 or NTLM, the server doesn't support the LOGIN or PLAIN
-  mechanisms and (lib)curl doesn't fallback to APOP or Clear Text
-  authentication.
+  * curl_sasl_sspi.c: Fixed compilation warning from commit 4b491c675f
   
   
-  Bug: http://curl.haxx.se/mail/lib-2013-02/0004.html
-  Reported by: Stanislav Ivochkin
+  warning: declaration of 'result' shadows a previous local
 
 
-Daniel Stenberg (1 Feb 2013)
-- singleipconnect: simplify and clean up
-  
-  Remove timeout argument that's never used.
+- curl_sasl.h: Fixed compilation error from commit 4b491c675f
   
   
-  Make the actual connection get detected on a single spot to reduce code
-  duplication.
+  warning: 'struct kerberos5data' declared inside parameter list
   
   
-  Store the IPv6 state already when the connection is attempted.
+  Due to missing forward declaration.
 
 
-- Curl_perfom: removed
+- urldata.h: Fixed compilation warnings from commit 3ec253532e
   
   
-  Curl_perfom is no longer used anywhere since the always-multi commit
-  c43127414d89ccb9, and some related functions were used only from within
-  Curl_perfom.
+  warning: extra tokens at end of #endif directive
 
 
-Guenter Knauf (30 Jan 2013)
-- Updated date.
+- sasl_sspi: Added GSSAPI message functions
 
 
-Yang Tse (30 Jan 2013)
-- zz40-xc-ovr.m4: fix 'wc' detection - follow-up 2
+- urldata: Introduced a GSSAPI (Kerberos V5) data structure
   
   
-  - Fix a pair of single quotes to double quotes.
-  
-  URL: http://curl.haxx.se/mail/lib-2013-01/0355.html
-  Reported by: Tor Arntsen
+  Added a kerberos5data structure which is similar in nature to the
+  ntlmdata and negotiatedata structures.
 
 
-- zz40-xc-ovr.m4: fix 'wc' detection - follow-up
-  
-  - Take into account that 'wc' may return leading spaces and/or tabs.
+- sspi: Moved KERB_WRAP_NO_ENCRYPT from socks_sspi module
   
   
-  - Set initial IFS to space, tab and newline.
+  In preparation for the upcoming SSPI implementation of GSSAPI
+  authentication, moved the definition of KERB_WRAP_NO_ENCRYPT from
+  socks_sspi.c to curl_sspi.h allowing it to be shared amongst other
+  SSPI based code.
 
 
-- zz40-xc-ovr.m4: fix 'wc' detection
+Daniel Stenberg (13 Aug 2014)
+- mk-ca-bundle.pl: add missing $
+
+- mk-ca-bundle.pl: switched to using hg.mozilla.org
   
   
-  - Take into account that 'wc' may return leading spaces.
+  ... as mxr.mozilla.org is due to be retired.
   
   
-  - Set internationalization behavior variables.
+  The new host doesn't support If-Modified-Since nor ETags, meaning that
+  the script will now defer to download and do a post-transfer checksum
+  check to see if a new output is to be generated. The new output format
+  will hold the SHA1 checksum of the source file for that purpose.
   
   
-  Tor Arntsen analyzed and reported the issue.
+  We call this version 1.22
   
   
-  URL: http://curl.haxx.se/mail/lib-2013-01/0351.html
+  Reported-by: Ed Morley
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1409
 
 
-- zz40-xc-ovr.m4: check another three basic utilities
+- [Jose Alf brought this change]
 
 
-Guenter Knauf (29 Jan 2013)
-- Fixed debug.c to work again unchanged.
+  openssl: fix version report for the 0.9.8 branch
   
   
-  Added CURLOPT_FOLLOWLOCATION since example.com is now redirected.
+  Fixed libcurl to correctly output the newer versions of OpenSSL 0.9.8,
+  starting from openssl-0.9.8za.
 
 
-Daniel Stenberg (29 Jan 2013)
-- [Nick Zitzmann brought this change]
+- [Frank Meier brought this change]
 
 
-  darwinssl: Fix bug where packets were sometimes transmitted twice
+  create_conn: prune dead connections
+  
+  Bringing back the old functionality that was mistakenly removed when the
+  connection cache was remade. When creating a new connection, all the
+  existing ones are checked and those that are known to be dead get
+  disconnected for real and removed from the connection cache. It helps
+  the cache from holding on to very many stale connections and aids in
+  keeping down the number of system sockets in wait states.
   
   
-  There was a bug where, if SSLWrite() returned errSSLWouldBlock but did
-  succeed in transmitting at least something, then we'd incorrectly
-  resend the packet. Now we never take errSSLWouldBlock as a sign that
-  nothing was transferred to/from the server.
+  Help-by: Jonatan Vela <jonatan.vela@ergon.ch>
   
   
-  Bug: http://curl.haxx.se/mail/lib-2013-01/0295.html
-  Reported by: Bruno de Carvalho
+  Bug: http://curl.haxx.se/mail/lib-2014-06/0189.html
 
 
-- [Nick Zitzmann brought this change]
+Kamil Dudka (11 Aug 2014)
+- docs/SSLCERTS: update the section about NSS database
+  
+  Bug: http://curl.haxx.se/mail/lib-2014-07/0335.html
+  Reported-by: David Shaw
 
 
-  FAQ: "Darwinssl" is AKA "Secure Transport" and supports NTLM
+Daniel Stenberg (11 Aug 2014)
+- [Peter Wang brought this change]
 
 
-- RELEASE-NOTES: only list Nick once
+  Curl_poll + Curl_wait_ms: fix timeout return value
   
   
-  Even though he's a fine dude, once is enough for this time!
-
-Yang Tse (28 Jan 2013)
-- zz40-xc-ovr.m4: 1.0 interface stabilization
+  Curl_poll and Curl_wait_ms require the fix applied to Curl_socket_check
+  in commits b61e8b8 and c771968:
   
   
-  - Stabilization results in 4 public interface m4 macros:
-    XC_CONFIGURE_PREAMBLE
-    XC_CONFIGURE_PREAMBLE_VER_MAJOR
-    XC_CONFIGURE_PREAMBLE_VER_MINOR
-    XC_CHECK_PATH_SEPARATOR
-  - Avoid one level of internal indirection
-  - Update comments
-  - Drop XC_OVR_ZZ40 macro
+  When poll or select are interrupted and coincides with the timeout
+  elapsing, the functions return -1 indicating an error instead of 0 for
+  the timeout.
 
 
-Kamil Dudka (28 Jan 2013)
-- docs: fix typos in man pages
-  
-  Reported by: Jiri Jaburek
-  Bug: https://bugzilla.redhat.com/896544
+Steve Holme (10 Aug 2014)
+- config-tpf.h: Fixed up line lengths > 79 characters
+
+- config-symbian.h: Fixed up line lengths > 79 characters
 
 
-- docs: update the comments about loading CA certs with NSS
+- tool_hugehelp.c.cvs: Added copyright
   
   
-  Bug: https://bugzilla.redhat.com/696783
+  Added copyright due to warning from checksrc.pl.
 
 
-Guenter Knauf (28 Jan 2013)
-- Updated dependency libs.
+- RELEASE-NOTES: Synced with cd6ecf6a89
 
 
-- Fixed simple.c to work again unchanged.
+- sasl_sspi: Fixed hard coded buffer for response generation
   
   
-  Added CURLOPT_FOLLOWLOCATION since example.com is now redirected.
+  Given the SSPI package info query indicates a token size of 4096 bytes,
+  updated to use a dynamic buffer for the response message generation
+  rather than a fixed buffer of 1024 bytes.
 
 
-Steve Holme (27 Jan 2013)
-- smtp.c: Fixed unnecessary state change if starttls fails
-  
-  The state machine should only be changed to SMTP_STARTTLS when the
-  STARTTLS command has been successfully sent to the server.
+- sasl_sspi: Fixed missing free of challenge buffer on SPN failure
 
 
-- pop3.c: Fixed unnecessary state change if starttls fails
+- http_negotiate_sspi: Tidy up to remove the get_gss_name() function
   
   
-  The state machine should only be changed to POP3_STARTTLS when the
-  STLS command has been successfully sent to the server.
+  Due to the reduction of code in commit 3b924b29 of get_gss_name() the
+  function isn't necessary anymore.
 
 
-- imap.c: Fixed unnecessary state change if starttls fails
+- http_negotiate_sspi: Use a dynamic buffer for SPN generation
   
   
-  The state machine should only be changed to IMAP_STARTTLS when the
-  STARTTLS command has been successfully sent to the server.
+  Updated to use a dynamic buffer for the SPN generation via the recently
+  introduced Curl_sasl_build_spn() function rather than a fixed buffer of
+  1024 characters, which should have been more than enough, but by using
+  the new function removes the need for another variable sname to do the
+  wide character conversion in Unicode builds.
 
 
-- email: Updated comment regarding ssldone usage
-  
-  Updated the ssldone comment as multi mode is always used internally now.
+- sasl: Tidy up to rename SPN variable from URI
 
 
-Yang Tse (26 Jan 2013)
-- zz40-xc-ovr.m4: emit witness message in configure BODY
+- sasl: Use a dynamic buffer for SPN generation
   
   
-  This avoids witness message in output when running configure --help,
-  while sending the message to config.log for other configure runs.
+  Updated Curl_sasl_create_digest_md5_message() to use a dynamic buffer
+  for the SPN generation via the recently introduced Curl_sasl_build_spn()
+  function rather than a fixed buffer of 128 characters.
 
 
-Steve Holme (25 Jan 2013)
-- smtp.c: Added comments to smtp_endofresp()
+- sasl_sspi: Fixed SPN not being converted to wchar under Unicode builds
   
   
-  Minor code tidy up to add comments similar to those used in the pop3
-  and imap end of resp functions, in order to assist anyone reading the
-  code and highlight the similarities between each of these protocols.
-
-Yang Tse (25 Jan 2013)
-- zz40-xc-ovr.m4: truly do version conditional overriding
+  Curl_sasl_create_digest_md5_message() would simply cast the SPN variable
+  to a TCHAR when calling InitializeSecurityContext(). This meant that,
+  under Unicode builds, it would not be valid wide character string.
   
   
-  - version conditional overriding
-  - catch unexpanded XC macros
-  - fix double words in comments
+  Updated to use the recently introduced Curl_sasl_build_spn() function
+  which performs the correct conversion for us.
 
 
-- zz40-xc-ovr.m4: fix variable assignment of subshell output bashism
+- sasl: Introduced Curl_sasl_build_spn() for building a SPN
   
   
-  Tor Arntsen analyzed and reported the issue.
+  Various parts of the libcurl source code build a SPN for inclusion in
+  authentication data. This information is either used by our own native
+  generation routines or passed to authentication functions in third-party
+  libraries such as SSPI. However, some of these instances use fixed
+  buffers rather than dynamically allocated ones and not all of those that
+  should, convert to wide character strings in Unicode builds.
   
   
-  URL: http://curl.haxx.se/mail/lib-2013-01/0306.html
+  Implemented a common function that generates a SPN and performs the
+  wide character conversion where necessary.
 
 
-- zz40-xc-ovr.m4: reinstate strict AC_REQUIRE macro dependencies
+- sasl_sspi: Fixed memory leak with not releasing Package Info struct
+  
+  Curl_sasl_create_digest_md5_message() wouldn't free the Package Info
+  structure after QuerySecurityPackageInfo() had allocated it.
 
 
-- zz40-xc-ovr.m4: avoid double single-quote usage
+- [Michael Osipov brought this change]
 
 
-- zz40-xc-ovr.m4: parentheses balancing of 'case' statements
+  docs: Update SPNEGO and GSS-API related doc sections
   
   
-  m4 quadrigraph shell comment technique allows proper autoconf
-  parentheses balancing in shell 'case' statements. The presence
-  of unbalanced parentheses may otherwise trigger expansion bugs.
+  Reflect recent changes in SPNEGO and GSS-API code in the docs.
+  Update them with appropriate namings and remove visible spots for
+  GSS-Negotiate.
 
 
-Steve Holme (24 Jan 2013)
-- smtp.c: Corrected RFC references
+- sspi: Minor code tidy up to standardise coding style
   
   
-  The most recent version of the SMTP RFC is RFC5321 and not RFC2821 as
-  previously documented.
+  Following the recent changes and in attempt to align the SSPI based
+  authentication code performed the following:
   
   
-  Added RFC1870 and re-ordered list numerically.
+  * Use NULL and SECBUFFVERSION rather than hard coded constants.
+  * Avoid comparison of zero in if statements.
+  * Standardised the buf and desc setup code.
 
 
-- smtp.c: Fixed failure detection during TLS upgrade
+- schannel: Fixed compilation warning in vtls.c
   
   
-  smtp_state_upgrade_tls() would attempt to incorrectly complete the
-  upgrade to smtps and start the EHLO command if
-  Curl_ssl_connect_nonblocking() returned a failure code and if ssldone
-  was set to TRUE. This would only happen when a non-blocking API hadn't
-  been provided by the SSL implementation and curlssl_connect() was
-  called underneath.
+  vtls.c:688:43: warning: unused parameter 'data'
 
 
-- pop3.c: Fixed failure detection during TLS upgrade
+- tool_getparam.c: Fixed compilation warning
   
   
-  pop3_state_upgrade_tls() would attempt to incorrectly complete the
-  upgrade to pop3s and start the CAPA command if
-  Curl_ssl_connect_nonblocking() returned a failure code and if ssldone
-  was set to TRUE. This would only happen when a non-blocking API hadn't
-  been provided by the SSL implementation and curlssl_connect() was
-  called underneath.
+  warning: `orig_opt' might be used uninitialized in this function
 
 
-- imap.c: Fixed failure detection during TLS upgrade
-  
-  imap_state_upgrade_tls() would attempt to incorrectly complete the
-  upgrade to imaps and start the CAPABILITY command if
-  Curl_ssl_connect_nonblocking() returned a failure code and if ssldone
-  was set to TRUE. This would only happen when a non-blocking API hadn't
-  been provided by the SSL implementation and curlssl_connect() was
-  called underneath.
+- RELEASE-NOTES: Synced with 159c3aafd8
+
+Daniel Stenberg (8 Aug 2014)
+- curl_ntlm_msgs: make < 80 columns wide
 
 
-Yang Tse (24 Jan 2013)
-- zz40-xc-ovr.m4: internals overhauling
+Steve Holme (8 Aug 2014)
+- ntlm: Fixed hard coded buffer for SSPI based auth packet generation
   
   
-  - Update comments
-  - Execute commands in subshells
-  - Faster path separator check
-  - Fix missing 'test' command
-  - Rename private macros
-  - Minimize AC_REQUIRE usage
+  Given the SSPI package info query indicates a token size of 2888 bytes,
+  and as with the Winbind code and commit 9008f3d56, use a dynamic buffer
+  for the Type-1 and Type-3 message generation rather than a fixed buffer
+  of 1024 bytes.
 
 
-Steve Holme (23 Jan 2013)
-- email: Removed unnecessary return statements
+- ntlm: Added support for SSPI package info query
   
   
-  Small tidy up to remove unnecessary return statements prior to the next
-  fix.
+  Just as with the SSPI implementations of Digest and Negotiate added a
+  package info query so that libcurl can a) return a more appropriate
+  error code when the NTLM package is not supported and b) it can be of
+  use later to allocate a dynamic buffer for the Type-1 and Type-3
+  output tokens rather than use a fixed buffer of 1024 bytes.
 
 
-Yang Tse (23 Jan 2013)
-- zz40-xc-ovr.m4: redirect errors and warnings to stderr
+Daniel Stenberg (7 Aug 2014)
+- http2: added some more logging for debugging stream problems
 
 
-- zz40-xc-ovr.m4: AC_REQUIRE also XC_CONFIGURE_PREAMBLE success message
+- [Tatsuhiro Tsujikawa brought this change]
 
 
-- zz60-xc-ovr.m4: tighten XC_OVR_ZZ60 macro placement requirements
+  HTTP/2: Reset promised stream, not its associated stream.
 
 
-- configure: use XC_CONFIGURE_PREAMBLE early checks
-  
-  Some basic checks we make were placed early enough in generated
-  configure script when using autoconf 2.5X versions. Newer autoconf
-  versions expand these checks much further into the configure script,
-  rendering them useless. Using XC_CONFIGURE_PREAMBLE fixes placement
-  of early intended checks across all our autoconf supported versions.
+- [Tatsuhiro Tsujikawa brought this change]
 
 
-- zz40-xc-ovr.m4: provide XC_CONFIGURE_PREAMBLE macro
+  HTTP/2: Move :authority before non-pseudo header fields
 
 
-Daniel Stenberg (23 Jan 2013)
-- FAQ: update the SSL lib list and wording in question 2.2
+- http2: show the received header for better debugging
 
 
-Steve Holme (22 Jan 2013)
-- curl_sasl.c: Corrected references to RFC
+- openssl: replace call to OPENSSL_config
   
   
-  The most recent version of the RFC is RFC4422 and not RFC2222 as
-  previously documented.
-
-- email: Corrected references to SASL RFC
+  OPENSSL_config() is "strongly recommended" to use but unfortunately that
+  function makes an exit() call on wrongly formatted config files which
+  makes it hard to use in some situations. OPENSSL_config() itself calls
+  CONF_modules_load_file() and we use that instead and we ignore its
+  return code!
   
   
-  The most recent version of the SASL RFC is RFC4422 and not RFC2222 as
-  previously documented.
+  Reported-by: Jan Ehrhardt
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1401
 
 
-Daniel Stenberg (22 Jan 2013)
-- [Ulion brought this change]
+Dan Fandrich (7 Aug 2014)
+- [Fabian Keil brought this change]
 
 
-  formpost: support quotes, commas and semicolon in file names
-  
-  - document the double-quote and backslash need be escaped if quoting.
-  - libcurl formdata escape double-quote in filename by backslash.
-  - curl formparse can parse filename both contains '"' and ',' or ';'.
-  - curl now can uploading file with ',' or ';' in filename.
+  runtests.pl: Pad test case numbers with up to three zeroes
   
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1171
+  Test case numbers with four digits have been available for a
+  while now.
 
 
-- memanalyze.pl: handle fopen() of file names with quotes
+Steve Holme (7 Aug 2014)
+- docs: Added Negotiate to the SSPI current credentials usage description
 
 
-Yang Tse (21 Jan 2013)
-- xc-cc-check.m4: re-evaluate exporting and AC_SUBST'ing vars
-  
-  Notes:
-  
-  When running a configure script that has nested packages (for example
-  libcurl's configure with --enable-ares and c-ares sources embedded in
-  curl tree) and AC_CONFIG_SUBDIRS([nested-subdir]) machinery is used to
-  automatically run the nested configure script from within the parent
-  configure script, it happens that the nested _shell_ script will
-  inherit shell variables exported from the parent _shell_ script.
-  
-  If for example parent configure script sets and exports LDFLAGS and LIBS
-  variables with proper values in order to link either a parent library or
-  program with a library which will be configured and built by a nested
-  package; It will happen that when the nested configure script runs, the
-  nested library does not exist yet and _any_ link-test done in the nested
-  configure will fail, such as those that autoconf macros perform in order
-  to detect existing compiler and its characteristics, the result is that
-  the nested configure script will fail with errors such as:
+- TODO: HTTP Digest via Windows SSPI
+
+- TODO: FTP GSSAPI via Windows SSPI
+
+- http_negotiate_sspi: Fixed specific username and password not working
   
   
-  configure: error: C compiler cannot create executables
+  Bug: http://curl.haxx.se/mail/lib-2014-06/0224.html
+  Reported-by: Leonardo Rosati
+
+- http_negotiate_sspi: Fixed endless unauthorized loop in commit 6bc76194e8
   
   
-  For now, we no longer export variables previously exported here.
+  If the server rejects our authentication attempt and curl hasn't
+  called CompleteAuthToken() then the status variable will be
+  SEC_I_CONTINUE_NEEDED and not SEC_E_OK.
   
   
-  On the other hand, AC_SUBST'ing them is appropriate and even with nested
-  packages each package's config.status gets its own package values.
+  As such the existing detection mechanism for determining whether or not
+  the authentication process has finished is not sufficient.
   
   
-  So we reinstate AC_SUBST'ing previously AC_SUBST'ed variables.
+  However, the WWW-Authenticate: Negotiate header line will not contain
+  any data when the server has exhausted the negotiation, so we can use
+  that coupled with the already allocated context pointer.
 
 
-Daniel Stenberg (21 Jan 2013)
-- FAQ: 3.22 curl -X gives me HTTP problems
+Daniel Stenberg (5 Aug 2014)
+- RELEASE-NOTES: synced with 5b37db44a3eb
 
 
-Yang Tse (21 Jan 2013)
-- xc-cc-check.m4: avoid recursive package automake'ing breakage
+Dan Fandrich (5 Aug 2014)
+- parsedate.c: fix the return code for an overflow edge condition
 
 
-- xc-cc-check.m4: mark earlier variables that are to be exported
+Daniel Stenberg (5 Aug 2014)
+- [Toby Peterson brought this change]
 
 
-- configure: autotools compatibility fixes - step I
+  darwinssl: don't use strtok()
   
   
-  Fix proper macro expansion order across autotools versions for
-  C compiler and preprocessor program checks.
+  The GetDarwinVersionNumber() function uses strtok, which is not
+  thread-safe.
 
 
-Steve Holme (20 Jan 2013)
-- pop3.c: Fixed conditional compilation of the apop response function
+- Curl_ossl_version: adapted to detect BoringSSL
   
   
-  Extended the fix from commit 8b15c84ea91e to additionally exclude
-  pop3_state_apop_resp() if the CURL_DISABLE_CRYPTO_AUTH flag is
-  defined.
+  This seems to be the way it should work. Right now we can't build with
+  BoringSSL and try this out properly due to a minor API breakage.
 
 
-Yang Tse (20 Jan 2013)
-- Makefile.inc: fix $(top_srcdir) not allowed in _SOURCES variables
-
-Daniel Stenberg (19 Jan 2013)
-- formadd: reject trying to read a directory where a file is expected
+- Curl_ossl_version: detect and show libressl
   
   
-  Bug: http://curl.haxx.se/mail/archive-2013-01/0017.html
-  Reported by: Ulrich Doehner
+  LibreSSL is otherwise OpenSSL API compliant (so far)
 
 
-- curl_easy_send.3: document return codes
-  
-  Reported by: Craig Davison
-  Bug: http://curl.haxx.se/mail/lib-2013-01/0234.html
+- [Tatsuhiro Tsujikawa brought this change]
 
 
-- curl_easy_recv.3: document return codes
+  HTTP/2: Fix infinite loop in readwrite_data()
   
   
-  Reported by: Craig Davison
-  Bug: http://curl.haxx.se/mail/lib-2013-01/0234.html
+  To prevent infinite loop in readwrite_data() function when stream is
+  reset before any response body comes, reset closed flag to false once
+  it is evaluated to true.
 
 
-Steve Holme (19 Jan 2013)
-- email: General code tidy up
-  
-  Corrected some function argument definitions to maximize the 80
-  character line length limit and be in keeping with the curl
-  coding style.
+Dan Fandrich (3 Aug 2014)
+- gtls: only define Curl_gtls_seed if Nettle is not being used
 
 
-- pop3.c: Fixed a problem with pop3s connections not connecting properly
-  
-  Fixed an issue where Curl_ssl_connect_nonblocking() wouldn't complete
-  correctly and the ssldone flag wouldn't be set to true for pop3s based
-  connections.
-  
-  Bug introduced in commit: 4ffb8a6398ed.
+- ssl: provide Curl_ssl_backend even if no SSL library is available
 
 
-Daniel Stenberg (18 Jan 2013)
-- RELEASE-NOTES: add references to several bugfixes+changes
+Daniel Stenberg (2 Aug 2014)
+- [Tatsuhiro Tsujikawa brought this change]
 
 
-Steve Holme (18 Jan 2013)
-- RELEASE-NOTES: Added missing imap fix
+  HTTP2: Support expect: 100-continue
   
   
-  Added missing imap fix as per commit 709b3506cd9b.
+  "Expect: 100-continue", which was once deprecated in HTTP/2, is now
+  resurrected in HTTP/2 draft 14.  This change adds its support to
+  HTTP/2 code.  This change also includes stricter header field
+  checking.
 
 
-Yang Tse (18 Jan 2013)
-- runtests.pl: make VPATH builds find valgrind.supp
+- CURLOPT_SSL_VERIFYPEER.3. add a warning about disabling it
 
 
-Daniel Stenberg (18 Jan 2013)
-- RELEASE-NOTES: synced with c43127414d89
+- FEATURES: minor update
 
 
-- always-multi: always use non-blocking internals
-  
-  Remove internal separated behavior of the easy vs multi intercace.
-  curl_easy_perform() is now using the multi interface itself.
+- openssl: make ossl_send return CURLE_OK better
   
   
-  Several minor multi interface quirks and bugs have been fixed in the
-  process.
+  Previously it only returned a CURLcode for errors, which is when it
+  returns a different size than what was passed in to it.
   
   
-  Much help with debugging this has been provided by: Yang Tse
+  The http2 code only checked the curlcode and thus failed.
+
+- RELEASE-NOTES: synced with 7bb4c8cadb5d0
+
+- [Michael Wallner brought this change]
+
+  CURLOPT_HEADEROPT.3: typo: do -> to
 
 
-Yang Tse (17 Jan 2013)
-- url.c: fix HTTP CONNECT tunnel establishment upon delayed response
+- [Marcel Raad brought this change]
+
+  schannel: use CryptGenRandom for random numbers
   
   
-  Fixes initial proxy response being processed by the tunneled protocol
-  handler instead of the HTTP wrapper handler. This issue would trigger
-  upon delayed CONNECT response from the proxy.
+  This function is available for every Windows version since Windows 95/NT.
   
   
-  Additionally fixes a multi interface code-path in which connections
-  would not time out properly.
+  reference:
+  http://msdn.microsoft.com/en-us/library/windows/desktop/aa379942.aspx
+
+- curl_version_info.3: 'ssl_version_num' is always 0
   
   
-  This does not fix known bug #39.
+  ... and has been so since 2005
+
+- ssl: generalize how the ssl backend identifier is set
   
   
-  URL: http://curl.haxx.se/mail/lib-2013-01/0191.html
+  Each backend now defines CURL_SSL_BACKEND accordingly. Added the *AXTLS
+  one which was missing previously.
 
 
-Daniel Stenberg (16 Jan 2013)
-- [Yves Arrouye brought this change]
+Dan Fandrich (31 Jul 2014)
+- axtls: define curlssl_random using axTLS's PRNG
 
 
-  --libcurl: fix for non-zero default options
-  
-  If the default value for an option taking a long as its value is non
-  zero, and it is set by zero by a command line option, then that command
-  line option is not reflected in --libcurl's output. This is because line
-  520-521 of tool_setopt.c look like:
+- cyassl: fix the test for ASN_NO_SIGNER_E
   
   
-  if(!lval)
-      skip = TRUE;
-  
-  An example of a command-line option doing so is the -k option that sets
-  CURLOPT_SLL_VERIFYPEER and CURLOPT_SSL_VERIFYHOST to 0L, when the
-  defaults are non-zero.
+  It's an enum so a macro test won't work. The CyaSSL changelog doesn't
+  say exactly when this error code was introduced, but it's likely
+  to be 2.7.0.
 
 
-- FTP: reject illegal port numbers in EPSV 229 responses
+- cyassl: use RNG_GenerateBlock to generate a good random number
 
 
-Yang Tse (15 Jan 2013)
-- commit bc682cbd follow-up
+- opts: fixed some typos
 
 
-- build: use per-target '_CPPFLAGS' for those currently using default
-  
-  Automake documents that doing this will make it choose a different name
-  for intermediate object files even when sharing source files across
-  targets of same Makefile.am.
+- smtp: fixed a segfault during test 1320 torture test
   
   
-  Up to automake 1.13.1 target's intermediate object files were placed
-  in the build subdirectory of the target. We depended on this, probably
-  undocumented behavior, to achieve same behavior as if a per-target flag
-  had been specified when building targets that actually belong to
-  different Makefile.am files.
-  
-  It seems automake 1.13.2 is going to break behavior mentioned above.
+  Under these circumstances, the connection hasn't been fully established
+  and smtp_connect hasn't been called, yet smtp_done still calls the state
+  machine which dereferences the NULL conn pointer in struct pingpong.
+
+Daniel Stenberg (30 Jul 2014)
+- vtls: repair build without TLS support
   
   
-  So, lets use a documented behavior in order to achieve same purpose,
-  across automake versions, no matter where automake wishes to place
-  intermediate object files.
+  ... by defining Curl_ssl_random() properly
+
+- polarssl: provide a (weak) random function
   
   
-  Our build targets that already were using a per-target '_CFLAGS' or
-  '_CPPFLAGS' need no 'fixing', these were already 'fixed'. The only
-  Makefile.am or Makefile.in files in libcurl's source tree touched by
-  this 'fix' are tests/libtest/Makefile.inc and tests/unit/Makefile.inc.
+  This now provides a weak random function since PolarSSL doesn't have a
+  quick and easy way to provide a good one. It does however provide the
+  framework to make one so it _can_ and _should_ be done...
 
 
-- tests/libtest/Makefile.inc: sort build targets
+- [Michael Wallner brought this change]
 
 
-- tests/Makefile.am: remove wildcard usage in EXTRA_DIST
+  curl_tlsinfo -> curl_tlssessioninfo
 
 
-Kamil Dudka (15 Jan 2013)
-- nss: fix error messages for CURLE_SSL_{CACERT,CRL}_BADFILE
+- cyassl: use the default (weeker) random
   
   
-  Do not use the error messages from NSS for errors not occurring in NSS.
+  I couldn't find any dedicated function in its API to get a "good" random
+  with.
 
 
-Steve Holme (14 Jan 2013)
-- TODO: Updated following IMAP SASL additions
+- cyassl: made it compile with version 2.0.6 again
+  
+  ASN_NO_SIGNER_E didn't exist back then!
 
 
-Yang Tse (14 Jan 2013)
-- configure: fix automake 1.13 compatibility
+- vtls: make the random function mandatory in the TLS backend
   
   
-  Tested with:
+  To force each backend implementation to really attempt to provide proper
+  random. If a proper random function is missing, then we can explicitly
+  make use of the default one we use when TLS support is missing.
   
   
-  buildconf: autoconf version 2.69
-  buildconf: autom4te version 2.69
-  buildconf: autoheader version 2.69
-  buildconf: automake version 1.13.1
-  buildconf: aclocal version 1.13.1
-  buildconf: libtool version 2.4
-  buildconf: GNU m4 version 1.4.16
+  This commit makes sure it works for darwinssl, gnutls, nss and openssl.
 
 
-Daniel Stenberg (13 Jan 2013)
-- BUGS: update bug tracker URL
+- libcurl.m4: include the standard source header
   
   
-  ... and refresh number of lines of code
+  ... with permission from David Shaw
 
 
-- Curl_resolver_getsock: fix the function description comment
+Kamil Dudka (28 Jul 2014)
+- nss: do not check the version of NSS at run time
   
   
-  It referred to it by the wrong name and said it returned the wrong value.
-  
-  Reported by: Gisle Vanem
+  The minimal required version of NSS is 3.14.x so it does not make sense
+  to check for NSS 3.12.0+ at run time.
+
+Daniel Stenberg (28 Jul 2014)
+- [Anthon Pang brought this change]
 
 
-Kamil Dudka (11 Jan 2013)
-- nss: clear session cache if a client cert from file is used
+  curl.h: bring back CURLE_OBSOLETE16
   
   
-  This commit fixes a regression introduced in 052a08ff.
+  Removing defines, even obsolete ones that haven't been used for a very
+  long time, still break a lot of applications.
   
   
-  NSS caches certs/keys returned by the SSL_GetClientAuthDataHook callback
-  and if we connect second time to the same server, the cached cert/key
-  pair is used.  If we use multiple client certificates for different
-  paths on the same server, we need to clear the session cache to force
-  NSS to call the hook again.  The commit 052a08ff prevented the session
-  cache from being cleared if a client certificate from file was used.
+  Bug: https://github.com/bagder/curl/pull/106
+
+Dan Fandrich (26 Jul 2014)
+- [Fabian Keil brought this change]
+
+  tests: Fix a couple of incomplete response lines
+
+- [Fabian Keil brought this change]
+
+  runtests.pl: Remove filteroff() which hasn't been used since 2001
+
+- [Fabian Keil brought this change]
+
+  runtests.pl: Don't expect $TESTDIR/DISABLED to exist
   
   
-  The condition is now fixed to cover both cases: consssl->client_nickname
-  is not NULL if a client certificate from the NSS database is used and
-  connssl->obj_clicert is not NULL if a client certificate from file is
-  used.
+  If a non-standard $TESTDIR is used the file may not be necessary.
   
   
-  Review by: Kai Engert
+  Previously a "missing" file resulted in the warning:
+  readline() on closed filehandle D at ./runtests.pl line 4940.
 
 
-Yang Tse (11 Jan 2013)
-- sockfilt.c: log file descriptor number on read/write error
+- [Fabian Keil brought this change]
 
 
-- [Gisle Vanem brought this change]
+  getpart.pm: Fix a comment typo
 
 
-  packages/DOS/common.dj: remove COFF debug info generation
-  
-  gcc on DOS hasn't really supported COFF-debug (-gcoff) on djgpp for a
-  long time.
+Daniel Stenberg (25 Jul 2014)
+- c-ares: fix build without IPv6 support
   
   
-  "Sounds like the COFF debug info generation has bit-rotted in GCC.
-   Nothing new here, no other platform uses COFF AFAIK."
+  Bug: http://curl.haxx.se/mail/lib-2014-07/0337.html
+  Reported-by: Spork Schivago
+
+- Curl_base64url_encode: unit-tested in 1302
+
+- base64: added Curl_base64url_encode()
   
   
-  So lets drop it too.
+  This is now used by the http2 code. It has two different symbols at the
+  end of the base64 table to make the output "url safe".
   
   
-  URL: http://curl.haxx.se/mail/lib-2013-01/0130.html
+  Bug: https://github.com/tatsuhiro-t/nghttp2/issues/62
 
 
-- curl: ignore SIGPIPE - compilation fix - follow-up
+- [Marcel Raad brought this change]
 
 
-- test servers: handle W32/W64 SIGBREAK with exit_signal_handler
+  SSPI Negotiate: Fix 3 memory leaks
+  
+  Curl_base64_decode allocates the output string by itself and two other
+  strings were not freed either.
 
 
-- test servers: fix errno, ERRNO and SOCKERRNO usage for W32/W64
+- symbols: CURL_VERSION_GSSNEGOTIATE is deprecated
 
 
-- sockfilt.c: fix some W64 compiler warnings
+- test1013.pl: GSS-Negotiate doesn't exist as a feature anymore
 
 
-Daniel Stenberg (9 Jan 2013)
-- [Nick Zitzmann brought this change]
+- [Sergey Nikulov brought this change]
 
 
-  docs: the --with-darwinssl option is available on Apple OSes
+  libtest: fixed duplicated line in Makefile
+  
+  Bug: https://github.com/bagder/curl/pull/105
 
 
-Yang Tse (9 Jan 2013)
-- curl: ignore SIGPIPE - compilation fix
+Patrick Monnerat (23 Jul 2014)
+- GSSAPI: remove useless *_MECHANISM defines.
 
 
-- build: fix circular header inclusion with other packages
-  
-  This commit renames lib/setup.h to lib/curl_setup.h and
-  renames lib/setup_once.h to lib/curl_setup_once.h.
-  
-  Removes the need and usage of a header inclusion guard foreign
-  to libcurl. [1]
-  
-  Removes the need and presence of an alarming notice we carried
-  in old setup_once.h [2]
-  
-  ----------------------------------------
+Daniel Stenberg (23 Jul 2014)
+- findprotocol: show unsupported protocol within quotes
   
   
-  1 - lib/setup_once.h used __SETUP_ONCE_H macro as header inclusion guard
-      up to commit ec691ca3 which changed this to HEADER_CURL_SETUP_ONCE_H,
-      this single inclusion guard is enough to ensure that inclusion of
-      lib/setup_once.h done from lib/setup.h is only done once.
-  
-      Additionally lib/setup.h has always used __SETUP_ONCE_H macro to
-      protect inclusion of setup_once.h even after commit ec691ca3, this
-      was to avoid a circular header inclusion triggered when building a
-      c-ares enabled version with c-ares sources available which also has
-      a setup_once.h header. Commit ec691ca3 exposes the real nature of
-      __SETUP_ONCE_H usage in lib/setup.h, it is a header inclusion guard
-      foreign to libcurl belonging to c-ares's setup_once.h
-  
-      The renaming this commit does, fixes the circular header inclusion,
-      and as such removes the need and usage of a header inclusion guard
-      foreign to libcurl. Macro __SETUP_ONCE_H no longer used in libcurl.
-  
-  2 - Due to the circular interdependency of old lib/setup_once.h and the
-      c-ares setup_once.h header, old file lib/setup_once.h has carried
-      back from 2006 up to now days an alarming and prominent notice about
-      the need of keeping libcurl's and c-ares's setup_once.h in sync.
+  ... to aid when for example prefixed with a space or other weird
+  character.
+
+Patrick Monnerat (23 Jul 2014)
+- GSSAPI: private export mechanisms OIDs. OS400: Make RPG binding up to date.
+
+Daniel Stenberg (23 Jul 2014)
+- [Marcel Raad brought this change]
+
+  conncache: fix compiler warning
   
   
-      Given that this commit fixes the circular interdependency, the need
-      and presence of mentioned notice is removed.
+  warning C4267: '=' : conversion from 'size_t' to 'long', possible loss
+  of data
   
   
-      All mentioned interdependencies come back from now old days when
-      the c-ares project lived inside a curl subdirectory. This commit
-      removes last traces of such fact.
-
-Daniel Stenberg (8 Jan 2013)
-- curl: ignore SIGPIPE
+  The member connection_id of struct connectdata is a long (always a
+  32-bit signed integer on Visual C++) and the member next_connection_id
+  of struct conncache is a size_t, so one of them should be changed to
+  match the other.
   
   
-  This is a work-around for bug #1180 which is really libcurl's inability
-  to ignore SIGPIPE in a few cases. With this work-around at least curl
-  won't suffer from it!
+  This patch the size_t in struct conncache to long (the less invasive
+  change as that variable is only ever used in a single code line).
   
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1180
-  Reported by: Lluís Batlle i Rossell
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1399
 
 
-Yang Tse (8 Jan 2013)
-- sockfilt.c: fix some compiler warnings
+- RELEASE-NOTES: synced with 81cd24adb8b
 
 
-Daniel Stenberg (8 Jan 2013)
-- Revert "configure: update req to 2.59"
+- http2: more and better error checking
   
   
-  This reverts commit 7a6d8b1b1a8fcc184c36d6b6e741e32250b4bacb.
+  1 - fixes the warnings when built without http2 support
   
   
-  URL: http://curl.haxx.se/mail/lib-2013-01/0103.html
+  2 - adds CURLE_HTTP2, a new error code for errors detected by nghttp2
+  basically when they are about http2 specific things.
 
 
-Steve Holme (8 Jan 2013)
-- pop3: Added support for non-blocking SSL upgrade
+Dan Fandrich (23 Jul 2014)
+- cyassl.c: return the correct error code on no CA cert
   
   
-  Added support for asynchronous SSL upgrade when using the
-  multi-interface.
+  CyaSSL 3.0.0 returns a unique error code if no CA cert is available,
+  so translate that into CURLE_SSL_CACERT_BADFILE when peer verification
+  is requested.
 
 
-Daniel Stenberg (8 Jan 2013)
-- configure: update req to 2.59
-  
-  I ran the 2.59 version of autoupdate that updates obsoleted configure.ac
-  constructs to the 2.59 standard. With a little hands-on fiddling I
-  prevented it from ruining the quoting in AS_HELP_STRING() uses.
-  
-  I subsequently also bumped the required autoconf version to 2.59
-  (released in December 2003) as I don't have an older autoconf version
-  around to test with and I can't be bothered to install one either...
-  
-  Inspired by: Björn Stenberg
-  Related blog post: http://cazfi.livejournal.com/195108.html
+Daniel Stenberg (23 Jul 2014)
+- symbols-in-versions: new SPNEGO/GSS-API symbols in 7.38.0
 
 
-Steve Holme (7 Jan 2013)
-- imap.c: Small tidy up to add missing comment
+- test1013.pl: remove SPNEGO/GSS-API tweaks
+  
+  No longer necessary after Michael Osipov's rework
 
 
-- imap: Added support for sasl digest-md5 authentication
+- http_negotiate: remove unused variable
 
 
-- imap: Added support for sasl cram-md5 authentication
+- [Michael Osipov brought this change]
 
 
-Marc Hoersken (7 Jan 2013)
-- tests/server/sockfilt.c: Fixed integer comparison warning
+  docs: Improve inline GSS-API naming in code documentation
 
 
-- tests/server/sockfilt.c: Include required Win32 headers
+- [Michael Osipov brought this change]
 
 
-Steve Holme (7 Jan 2013)
-- imap: Added support for sasl ntlm authentication
+  curl.h/features: Deprecate GSS-Negotiate macros due to bad naming
+  
+  - Replace CURLAUTH_GSSNEGOTIATE with CURLAUTH_NEGOTIATE
+  - CURL_VERSION_GSSNEGOTIATE is deprecated which
+    is served by CURL_VERSION_SSPI, CURL_VERSION_GSSAPI and
+    CURUL_VERSION_SPNEGO now.
+  - Remove display of feature 'GSS-Negotiate'
 
 
-- imap: Added support for sasl login authentication
+- [Michael Osipov brought this change]
 
 
-- pop3.c: Fixed default authentication detection
-  
-  Fixed an issue where a server may positively respond to the CAPA command
-  but not list clear text as a valid authentication type.
+  configure/features: Add feature and version info for GSS-API and SPNEGO
 
 
-- curl_sasl.c: Small code tidy up following imap changes
+- [Michael Osipov brought this change]
 
 
-- smtp.c: Small code tidy up following imap changes
+  HTTP: Remove checkprefix("GSS-Negotiate")
+  
+  That auth mech has never existed neither on MS nor on Unix side.
+  There is only Negotiate over SPNEGO.
 
 
-- pop3.c: Small code tidy up following imap changes
+- [Michael Osipov brought this change]
 
 
-- imap: Added support for sasl plain text authentication
+  curl_gssapi: Add macros for common mechs and pass them appropriately
+  
+  Macros defined: KRB5_MECHANISM and SPNEGO_MECHANISM called from
+  HTTP, FTP and SOCKS on Unix
 
 
-Marc Hoersken (6 Jan 2013)
-- tests/server/sockfilt.c: Fixed support for listening sockets
+- CONNECT: Revert Curl_proxyCONNECT back to 7.29.0 design
   
   
-  This commit fixes support for sockets that are ready to accept
-  a new connection and have previously been put into listening mode.
+  This reverts commit cb3e6dfa3511 and instead fixes the problem
+  differently.
   
   
-  It also includes changes which are the result of investigation
-  regarding Windows STDIN. These changes are the preparation for further
-  improvements regarding support for reading data from STDIN on Windows.
+  The reverted commit addressed a test failure in test 1021 by simplifying
+  and generalizing the code flow in a way that damaged the
+  performance. Now we modify the flow so that Curl_proxyCONNECT() again
+  does as much as possible in one go, yet still do test 1021 with and
+  without valgrind. It failed due to mistakes in the multi state machine.
   
   
-  Open issue: WaitForMultipleObjectsEx does not support PIPE handles
-  which are returned by GetStdHandle while running without a GUI.
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1397
+  Reported-by: Paul Saab
 
 
-- tests/server/sockfilt.c: Set Windows Console to binary mode
+- [Marcel Raad brought this change]
 
 
-- tests/server/sockfilt.c: Improved log error messages
+  url.c: use the preferred symbol name: *READDATA
+  
+  with CURL_NO_OLDIES defined, it doesn't compile because this deprecated
+  symbol (*INFILE) is used
   
   
-  Include error code and parameters in error messages.
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1398
 
 
-Steve Holme (6 Jan 2013)
-- imap: Introduced the continue response in imap_endofresp()
+Dan Fandrich (19 Jul 2014)
+- [Alessandro Ghedini brought this change]
 
 
-- imap: Added support for SASL based authentication mechanism detection
-  
-  Added support for detecting the supported SASL authentication mechanisms
-  via the CAPABILITY command.
+  CURLOPT_CHUNK_BGN_FUNCTION: fix typo
 
 
-Yang Tse (6 Jan 2013)
-- Revert changes relative to lib/*.[ch] recent renaming
-  
-  This reverts renaming and usage of lib/*.h header files done
-  28-12-2012, reverting 2 commits:
+Kamil Dudka (18 Jul 2014)
+- [Alessandro Ghedini brought this change]
+
+  build: link curl to NSS libraries when NSS support is enabled
   
   
-    f871de0... build: make use of 76 lib/*.h renamed files
-    ffd8e12... build: rename 76 lib/*.h files
+  This fixes a build failure on Debian caused by commit
+  24c3cdce88f39731506c287cb276e8bf4a1ce393.
   
   
-  This also reverts removal of redundant include guard (redundant thanks
-  to changes in above commits) done 2-12-2013, reverting 1 commit:
+  Bug: http://curl.haxx.se/mail/lib-2014-07/0209.html
+
+Steve Holme (17 Jul 2014)
+- build: Removed unnecessary XML Documentation file directive from VC8 to VC12
   
   
-    c087374... curl_setup.h: remove redundant include guard
+  The curl tool project files for VC8 to VC12 would set this setting to
+  $(IntDir) which is the Visual Studio default value. To avoid confusion
+  when viewing settings from within Visual Studio and for consistency
+  with the libcurl project files removed this setting.
   
   
-  This also reverts renaming and usage of lib/*.c source files done
-  3-12-2013, reverting 3 commits:
+  Conflicts:
+       projects/Windows/VC10/src/curlsrc.tmpl
+       projects/Windows/VC11/src/curlsrc.tmpl
+       projects/Windows/VC12/src/curlsrc.tmpl
+       projects/Windows/VC8/src/curlsrc.tmpl
+       projects/Windows/VC9/src/curlsrc.tmpl
+
+- build: Removed unnecessary Precompiled Header file directive in VC7 to VC12
   
   
-    13606bb... build: make use of 93 lib/*.c renamed files
-    5b6e792... build: rename 93 lib/*.c files
-    7d83dff... build: commit 13606bbfde follow-up 1
+  The curl tool project files for VC7 to VC12 would set this settings to
+  $(IntDir)$(TargetName).pch which is the Visual Studio default value. To
+  avoid confusion when viewing settings from within Visual Studio and for
+  consistency with the libcurl project files removed this setting.
   
   
-  Start of related discussion thread:
+  Conflicts:
+       projects/Windows/VC10/src/curlsrc.tmpl
+       projects/Windows/VC11/src/curlsrc.tmpl
+       projects/Windows/VC12/src/curlsrc.tmpl
+       projects/Windows/VC8/src/curlsrc.tmpl
+       projects/Windows/VC9/src/curlsrc.tmpl
+
+- build: Removed unnecessary ASM and Object file directives in VC7 to VC12
   
   
-    http://curl.haxx.se/mail/lib-2013-01/0012.html
+  The curl tool project files for VC7 to VC12 would set these settings to
+  $(IntDir) which is the Visual Studio default value. To avoid confusion
+  when viewing settings from within Visual Studio and for consistency
+  with the libcurl project files removed these two settings.
+
+Daniel Stenberg (17 Jul 2014)
+- [Dave Reisner brought this change]
+
+  src/Makefile.am: add .DELETE_ON_ERROR
   
   
-  Asking for confirmation on pushing this revertion commit:
+  This prevents targets like tool_hugehelp.c from leaving around
+  half-constructed files if the rule fails with GNU make.
   
   
-    http://curl.haxx.se/mail/lib-2013-01/0048.html
+  Reported-by: Rafaël Carré <funman@videolan.org>
+
+- THANKS: added new contributors from 7.37.1 announcement
+
+Dan Fandrich (17 Jul 2014)
+- testcurl.pl: log the value of --runtestopts in the test header
+
+Daniel Stenberg (16 Jul 2014)
+- RELEASE-NOTES: cleared, working towards next release
+
+- curl_gssapi.c: make line shorter than 80 columns
+
+- [David Woodhouse brought this change]
+
+  Fix negotiate auth to proxies to track correct state
+
+- [David Woodhouse brought this change]
+
+  Don't abort Negotiate auth when the server has a response for us
   
   
-  Confirmation summary:
+  It's wrong to assume that we can send a single SPNEGO packet which will
+  complete the authentication. It's a *negotiation* — the clue is in the
+  name. So make sure we handle responses from the server.
   
   
-    http://curl.haxx.se/mail/lib-2013-01/0079.html
+  Curl_input_negotiate() will already handle bailing out if it thinks the
+  state is GSS_S_COMPLETE (or SEC_E_OK on Windows) and the server keeps
+  talking to us, so we should avoid endless loops that way.
+
+- [David Woodhouse brought this change]
+
+  Don't clear GSSAPI state between each exchange in the negotiation
   
   
-  NOTICE: The list of 2 files that have been modified by other
-  intermixed commits, while renamed, and also by at least one
-  of the 6 commits this one reverts follows below. These 2 files
-  will exhibit a hole in history unless git's '--follow' option
-  is used when viewing logs.
+  GSSAPI doesn't work very well if we forget everything ever time.
   
   
-    lib/curl_imap.h
-    lib/curl_smtp.h
+  XX: Is Curl_http_done() the right place to do the final cleanup?
 
 
-Daniel Stenberg (6 Jan 2013)
-- mk-ca-bundle.1: convert syntax to what's used elsewhere
-  
-  ... mostly to make sure roffit works better on it, but also to make our
-  man pages use a more unified style.
+- [David Woodhouse brought this change]
 
 
-- mk-ca-bundle.1: mention new -f, fix outputfile output
+  Use SPNEGO for HTTP Negotiate
   
   
-  also edited a few sentences to become more verbose
-
-- mk-ca-bundle: add -f, support passing to stdout and more
+  This is the correct way to do SPNEGO. Just ask for it
   
   
-  1. When the downloaded data file from Mozilla is current, but the output
-  bundle does not exist: continue processing to create the bundle.  The
-  goal is to have the output file - not just download the latest input.
+  Now I correctly see it trying NTLMSSP authentication when a Kerberos ticket
+  isn't available. Of course, we bail out when the server responds with the
+  challenge packet, since we don't expect that. But I'll fix that bug next...
+
+- [David Woodhouse brought this change]
+
+  Remove all traces of FBOpenSSL SPNEGO support
   
   
-  2. added -f option to force re-processing the file.  Useful for
-  debugging/testing the process.
+  This is just fundamentally broken. SPNEGO (RFC4178) is a protocol which
+  allows client and server to negotiate the underlying mechanism which will
+  actually be used to authenticate. This is *often* Kerberos, and can also
+  be NTLM and other things. And to complicate matters, there are various
+  different OIDs which can be used to specify the Kerberos mechanism too.
   
   
-  3. added support for output to '-' (stdout), allowing the output to be
-  piped.
+  A SPNEGO exchange will identify *which* GSSAPI mechanism is being used,
+  and will exchange GSSAPI tokens which are appropriate for that mechanism.
   
   
-  4. All progress and error messages go to STDERR rather than STDOUT (3)
+  But this SPNEGO implementation just strips the incoming SPNEGO packet
+  and extracts the token, if any. And completely discards the information
+  about *which* mechanism is being used. Then we *assume* it was Kerberos,
+  and feed the token into gss_init_sec_context() with the default
+  mechanism (GSS_S_NO_OID for the mech_type argument).
   
   
-  5. The script opened and closed the output file many times
-  unnecessarily.  It now opens it once, does the output and closes it.
+  Furthermore... broken as this code is, it was never even *used* for input
+  tokens anyway, because higher layers of curl would just bail out if the
+  server actually said anything *back* to us in the negotiation. We assume
+  that we send a single token to the server, and it accepts it. If the server
+  wants to continue the exchange (as is required for NTLM and for SPNEGO
+  to do anything useful), then curl was broken anyway.
   
   
-  6. Backup of the input files happens after successful processing, not
-  before.
+  So the only bit which actually did anything was the bit in
+  Curl_output_negotiate(), which always generates an *initial* SPNEGO
+  token saying "Hey, I support only the Kerberos mechanism and this is its
+  token".
   
   
-  7. The output is written to a temporary file, and renamed to the
-  requested name after backup - this greatly reduces the window where the
-  file can be seen partially written.
+  You could have done that by manually just prefixing the Kerberos token
+  with the appropriate bytes, if you weren't going to do any proper SPNEGO
+  handling. There's no need for the FBOpenSSL library at all.
   
   
-  8. all die calls have a \n at the end to suppress perl's traceback - the
-  traceback isn't useful to end users.
+  The sane way to do SPNEGO is just to *ask* the GSSAPI library to do
+  SPNEGO. That's what the 'mech_type' argument to gss_init_sec_context()
+  is for. And then it should all Just Work™.
   
   
-  Patch: http://curl.haxx.se/mail/lib-2013-01/0045.html
+  That 'sane way' will be added in a subsequent patch, as will bug fixes
+  for our failure to handle any exchange other than a single outbound
+  token to the server which results in immediate success.
 
 
-Yang Tse (5 Jan 2013)
-- imap test server: fix typo in name of SELECT_imap() sub definition
-  
-  IMAP test server breaking typo introduced with commit b708a522a1
+- [David Woodhouse brought this change]
 
 
-Steve Holme (4 Jan 2013)
-- imap test server: Added support for the CAPABILITY command
-  
-  Added support for the CAPABILITY command in preparation of upcoming
-  changes.
-
-Daniel Stenberg (3 Jan 2013)
-- writeout: -w now supports remote_ip/port and local_ip/port
-  
-  Added mention to the curl.1 man page.
-  
-  Test case 1223 verifies remote_ip/port.
-
-Yang Tse (3 Jan 2013)
-- test 1222: 8 chars object name generation  &&  test 1221: adjustments
-
-Daniel Stenberg (3 Jan 2013)
-- INTERNALS: remove "footnote" never used
-
-Yang Tse (3 Jan 2013)
-- build: commit 13606bbfde follow-up 1
-
-Daniel Stenberg (3 Jan 2013)
-- FAQ: Can I write a server with libcurl?
-
-Yang Tse (3 Jan 2013)
-- build: rename 93 lib/*.c files
-  
-  93 lib/*.c source files renamed to use our standard naming scheme.
-  
-  This commit only does the file renaming.
-  
-  ----------------------------------------
-  
-    renamed:    lib/amigaos.c -> lib/curl_amigaos.c
-    renamed:    lib/asyn-ares.c -> lib/curl_asyn_ares.c
-    renamed:    lib/asyn-thread.c -> lib/curl_asyn_thread.c
-    renamed:    lib/axtls.c -> lib/curl_axtls.c
-    renamed:    lib/base64.c -> lib/curl_base64.c
-    renamed:    lib/bundles.c -> lib/curl_bundles.c
-    renamed:    lib/conncache.c -> lib/curl_conncache.c
-    renamed:    lib/connect.c -> lib/curl_connect.c
-    renamed:    lib/content_encoding.c -> lib/curl_content_encoding.c
-    renamed:    lib/cookie.c -> lib/curl_cookie.c
-    renamed:    lib/cyassl.c -> lib/curl_cyassl.c
-    renamed:    lib/dict.c -> lib/curl_dict.c
-    renamed:    lib/easy.c -> lib/curl_easy.c
-    renamed:    lib/escape.c -> lib/curl_escape.c
-    renamed:    lib/file.c -> lib/curl_file.c
-    renamed:    lib/fileinfo.c -> lib/curl_fileinfo.c
-    renamed:    lib/formdata.c -> lib/curl_formdata.c
-    renamed:    lib/ftp.c -> lib/curl_ftp.c
-    renamed:    lib/ftplistparser.c -> lib/curl_ftplistparser.c
-    renamed:    lib/getenv.c -> lib/curl_getenv.c
-    renamed:    lib/getinfo.c -> lib/curl_getinfo.c
-    renamed:    lib/gopher.c -> lib/curl_gopher.c
-    renamed:    lib/gtls.c -> lib/curl_gtls.c
-    renamed:    lib/hash.c -> lib/curl_hash.c
-    renamed:    lib/hmac.c -> lib/curl_hmac.c
-    renamed:    lib/hostasyn.c -> lib/curl_hostasyn.c
-    renamed:    lib/hostcheck.c -> lib/curl_hostcheck.c
-    renamed:    lib/hostip.c -> lib/curl_hostip.c
-    renamed:    lib/hostip4.c -> lib/curl_hostip4.c
-    renamed:    lib/hostip6.c -> lib/curl_hostip6.c
-    renamed:    lib/hostsyn.c -> lib/curl_hostsyn.c
-    renamed:    lib/http.c -> lib/curl_http.c
-    renamed:    lib/http_chunks.c -> lib/curl_http_chunks.c
-    renamed:    lib/http_digest.c -> lib/curl_http_digest.c
-    renamed:    lib/http_negotiate.c -> lib/curl_http_negotiate.c
-    renamed:    lib/http_negotiate_sspi.c -> lib/curl_http_negotiate_sspi.c
-    renamed:    lib/http_proxy.c -> lib/curl_http_proxy.c
-    renamed:    lib/idn_win32.c -> lib/curl_idn_win32.c
-    renamed:    lib/if2ip.c -> lib/curl_if2ip.c
-    renamed:    lib/imap.c -> lib/curl_imap.c
-    renamed:    lib/inet_ntop.c -> lib/curl_inet_ntop.c
-    renamed:    lib/inet_pton.c -> lib/curl_inet_pton.c
-    renamed:    lib/krb4.c -> lib/curl_krb4.c
-    renamed:    lib/krb5.c -> lib/curl_krb5.c
-    renamed:    lib/ldap.c -> lib/curl_ldap.c
-    renamed:    lib/llist.c -> lib/curl_llist.c
-    renamed:    lib/md4.c -> lib/curl_md4.c
-    renamed:    lib/md5.c -> lib/curl_md5.c
-    renamed:    lib/memdebug.c -> lib/curl_memdebug.c
-    renamed:    lib/mprintf.c -> lib/curl_mprintf.c
-    renamed:    lib/multi.c -> lib/curl_multi.c
-    renamed:    lib/netrc.c -> lib/curl_netrc.c
-    renamed:    lib/non-ascii.c -> lib/curl_non_ascii.c
-    renamed:    lib/curl_non-ascii.h -> lib/curl_non_ascii.h
-    renamed:    lib/nonblock.c -> lib/curl_nonblock.c
-    renamed:    lib/nss.c -> lib/curl_nss.c
-    renamed:    lib/nwlib.c -> lib/curl_nwlib.c
-    renamed:    lib/nwos.c -> lib/curl_nwos.c
-    renamed:    lib/openldap.c -> lib/curl_openldap.c
-    renamed:    lib/parsedate.c -> lib/curl_parsedate.c
-    renamed:    lib/pingpong.c -> lib/curl_pingpong.c
-    renamed:    lib/polarssl.c -> lib/curl_polarssl.c
-    renamed:    lib/pop3.c -> lib/curl_pop3.c
-    renamed:    lib/progress.c -> lib/curl_progress.c
-    renamed:    lib/qssl.c -> lib/curl_qssl.c
-    renamed:    lib/rawstr.c -> lib/curl_rawstr.c
-    renamed:    lib/rtsp.c -> lib/curl_rtsp.c
-    renamed:    lib/security.c -> lib/curl_security.c
-    renamed:    lib/select.c -> lib/curl_select.c
-    renamed:    lib/sendf.c -> lib/curl_sendf.c
-    renamed:    lib/share.c -> lib/curl_share.c
-    renamed:    lib/slist.c -> lib/curl_slist.c
-    renamed:    lib/smtp.c -> lib/curl_smtp.c
-    renamed:    lib/socks.c -> lib/curl_socks.c
-    renamed:    lib/socks_gssapi.c -> lib/curl_socks_gssapi.c
-    renamed:    lib/socks_sspi.c -> lib/curl_socks_sspi.c
-    renamed:    lib/speedcheck.c -> lib/curl_speedcheck.c
-    renamed:    lib/splay.c -> lib/curl_splay.c
-    renamed:    lib/ssh.c -> lib/curl_ssh.c
-    renamed:    lib/sslgen.c -> lib/curl_sslgen.c
-    renamed:    lib/ssluse.c -> lib/curl_ssluse.c
-    renamed:    lib/strdup.c -> lib/curl_strdup.c
-    renamed:    lib/strequal.c -> lib/curl_strequal.c
-    renamed:    lib/strerror.c -> lib/curl_strerror.c
-    renamed:    lib/strtok.c -> lib/curl_strtok.c
-    renamed:    lib/strtoofft.c -> lib/curl_strtoofft.c
-    renamed:    lib/telnet.c -> lib/curl_telnet.c
-    renamed:    lib/tftp.c -> lib/curl_tftp.c
-    renamed:    lib/timeval.c -> lib/curl_timeval.c
-    renamed:    lib/transfer.c -> lib/curl_transfer.c
-    renamed:    lib/url.c -> lib/curl_url.c
-    renamed:    lib/version.c -> lib/curl_version.c
-    renamed:    lib/warnless.c -> lib/curl_warnless.c
-    renamed:    lib/wildcard.c -> lib/curl_wildcard.c
-  
-  ----------------------------------------
-
-- build: make use of 93 lib/*.c renamed files
-  
-  93 *.c source files renamed to use our standard naming scheme.
-  
-  This change affects 77 files in libcurl's source tree.
-
-Daniel Stenberg (3 Jan 2013)
-- INSTALL: unify the SSL library texts
-  
-  Make them smaller and more similar for each separate SSL library
-  supported by the configure build
-
-Yang Tse (2 Jan 2013)
-- curl_setup.h: remove redundant include guard
-
-- build and tests: curl_10char_object_name() shell function
-  
-  lib/objnames.inc provides definition of curl_10char_object_name() shell
-  function. The intended purpose of this function is to transliterate a
-  (*.c) source file name that may be longer than 10 characters, or not,
-  into a string with at most 10 characters which may be used as an OS/400
-  object name.
-  
-  Test case 1221 does unit testng of this function and also verifies
-  that it is possible to generate distinct short object names for all
-  curl and libcurl *.c source file names.
-  
-  lib/objnames-test.sh is the shell script used for test case 1221.
-  
-  tests/runtests.pl modified to accept shell script test cases.
-  
-  More details inside lib/objnames.inc and lib/objnames-test.sh
+  ntlm_wb: Avoid invoking ntlm_auth helper with empty username
 
 
-- configure.ac: replace AM_CONFIG_HEADER with AC_CONFIG_HEADERS
-  
-  automake 1.13 errors if AM_CONFIG_HEADER is used in configure script.
-  automake 1.13 no longer autoupdates AM_CONFIG_HEADER to
-  AC_CONFIG_HEADERS, thing which automake has been doing since automake
-  version 1.7
-  
-  Given that our first automake supported version is automake 1.7,
-  simply replacing AM_CONFIG_HEADER usage with AC_CONFIG_HEADERS seems
-  enough to yet support same automake versions.
-  
-  Dave Reisner reported issue with 1.13 and provided patch.
+- [David Woodhouse brought this change]
+
+  ntlm_wb: Fix hard-coded limit on NTLM auth packet size
   
   
-  http://curl.haxx.se/mail/lib-2012-12/0246.html
+  Bumping it to 1KiB in commit aaaf9e50ec is all very well, but having hit
+  a hard limit once let's just make it cope by reallocating as necessary.
+
+Version 7.37.1 (16 Jul 2014)
 
 
-- curl-override.m4: provide AC_CONFIG_MACRO_DIR definition conditionally
+Daniel Stenberg (16 Jul 2014)
+- RELEASE-NOTES: synced with 4cb2521595
+
+- test506: verify aa6884845168
   
   
-  Provide a 'traceable' AC_CONFIG_MACRO_DIR definition only when using
-  an autoconf version that does not provide it, instead of what we were
-  doing up to now of providing and overriding AC_CONFIG_MACRO_DIR for
-  all autoconf versions.
+  After the fixed cookie lock deadlock, this test now passes and it
+  detects double-locking and double-unlocking of mutexes.
 
 
-Steve Holme (30 Dec 2012)
-- imap.c: Minor follow up tidy up
+- [Yousuke Kimoto brought this change]
 
 
-- imap: Code tidy up prior to adding support for the CAPABILITY command
+  cookie: avoid mutex deadlock
   
   
-  * Changing the order of the state machine to represent the order in
-    which commands are sent to the server.
+  ... by removing the extra mutex locks around th call to
+  Curl_flush_cookies() which takes care of the locking itself already.
   
   
-  * Reworking the imap_endofresp() function as the FETCH response doesn't
-    include the command id and shouldn't be part of the length comparison
-    that takes into account the id string.
+  Bug: http://curl.haxx.se/mail/lib-2014-02/0184.html
 
 
-- pop3_doing: Applied debug info message when function fails
+- gnutls: fix compiler warning
   
   
-  Applied the same debug message as used in smtp_doing() and imap_doing()
-  when pop3_multi_statemach() fails.
+  conversion to 'int' from 'long int' may alter its value
 
 
-- imap_doing: don't call imap_dophase_done() if already failed
+Dan Fandrich (15 Jul 2014)
+- test320: strip off the actual negotiated cipher width
   
   
-  Applied the POP3 fix from commit 2897ce7dc2e1 so imap_dophase_done()
-  isn't called if imap_multi_statemach() fails.
+  It's irrelevant to the test, and will change depending on which SSL
+  library is being used by libcurl.
 
 
-- smtp_doing: don't call smtp_dophase_done() if already failed
+- gnutls: detect lack of SRP support in GnuTLS at run-time and try without
   
   
-  Applied the POP3 fix from commit 2897ce7dc2e1 so smtp_dophase_done()
-  isn't called if smtp_multi_statemach() fails.
+  Reported-by: David Woodhouse
 
 
-Yang Tse (29 Dec 2012)
-- examples/certinfo.c: fix compiler warning
+Daniel Stenberg (14 Jul 2014)
+- [Michał Górny brought this change]
 
 
-Steve Holme (29 Dec 2012)
-- pop3.c: Removed unnecessary POP3_STOP state changes
+  configure: respect host tool prefix for krb5-config
   
   
-  Removed unnecessary state changes in pop3_state_starttls_resp()
-  following previous fix in IMAP module.
+  Use ${host_alias}-krb5-config if available. This improves cross-
+  compilation support and fixes multilib on Gentoo (at least).
 
 
-- smtp.c: Added extra comments around SMTP_STOP state change
-  
-  Provided extra comments in the SMTP module following previous IMAP fix.
+- [David Woodhouse brought this change]
 
 
-- imap.c: Fixed bad state error when logging in with invalid credentials
+  gnutls: handle IP address in cert name check
   
   
-  Fixed a problem with the state machine when attempting to log in with
-  invalid credentials. The server would report login failure but libcurl
-  would not read the response due to inappropriate IMAP_STOP states being
-  set after the login was sent.
+  Before GnuTLS 3.3.6, the gnutls_x509_crt_check_hostname() function
+  didn't actually check IP addresses in SubjectAltName, even though it was
+  explicitly documented as doing so. So do it ourselves...
+
+Dan Fandrich (14 Jul 2014)
+- build: set _POSIX_PTHREAD_SEMANTICS on Solaris to get proper getpwuid_r
 
 
-Yang Tse (29 Dec 2012)
-- imap.c: remove trailing whitespace
+Daniel Stenberg (14 Jul 2014)
+- RELEASE-NOTES: next one is called 7.37.1
 
 
-Steve Holme (28 Dec 2012)
-- imap.c: Code tidy up - Part 2
-
-- imap.c: Code tidy up - Part 1
-  
-  Applied some of the comment and layout changes that had already been
-  applied to the pop3 and smtp code over the last 6 to 9 months.
-  
-  This is in preparation of adding SASL based authentication.
-
-- pop3.c: Minor code tidy up
-  
-  Minor tidy up of comments and layout prior to next part of imap work.
-
-- smtp: Minor code tidy up
-  
-  Minor tidy up of comments and layout prior to next part of imap work.
-
-- curl_imap.h: Tidy up of comments to be more readable
-
-- imap.c: Code tidy up renaming imapsendf() to imap_sendf()
+Dan Fandrich (13 Jul 2014)
+- gnutls: improved error message if setting cipher list fails
   
   
-  Renamed imapsendf() to imap_sendf() to be more in keeping with the
-  other imap functions as well as Curl_pp_sendf() that it replaces.
-
-Yang Tse (28 Dec 2012)
-- build: rename 76 lib/*.h files
-  
-  76 private header files renamed to use our standard naming scheme.
-  
-  This commit only does the file renaming.
-  
-  ----------------------------------------
+  Reported-by: David Woodhouse
+
+- netrc: fixed thread safety problem by using getpwuid_r if available
   
   
-    renamed:    amigaos.h -> curl_amigaos.h
-    renamed:    arpa_telnet.h -> curl_arpa_telnet.h
-    renamed:    asyn.h -> curl_asyn.h
-    renamed:    axtls.h -> curl_axtls.h
-    renamed:    bundles.h -> curl_bundles.h
-    renamed:    conncache.h -> curl_conncache.h
-    renamed:    connect.h -> curl_connect.h
-    renamed:    content_encoding.h -> curl_content_encoding.h
-    renamed:    cookie.h -> curl_cookie.h
-    renamed:    cyassl.h -> curl_cyassl.h
-    renamed:    dict.h -> curl_dict.h
-    renamed:    easyif.h -> curl_easyif.h
-    renamed:    escape.h -> curl_escape.h
-    renamed:    file.h -> curl_file.h
-    renamed:    fileinfo.h -> curl_fileinfo.h
-    renamed:    formdata.h -> curl_formdata.h
-    renamed:    ftp.h -> curl_ftp.h
-    renamed:    ftplistparser.h -> curl_ftplistparser.h
-    renamed:    getinfo.h -> curl_getinfo.h
-    renamed:    gopher.h -> curl_gopher.h
-    renamed:    gtls.h -> curl_gtls.h
-    renamed:    hash.h -> curl_hash.h
-    renamed:    hostcheck.h -> curl_hostcheck.h
-    renamed:    hostip.h -> curl_hostip.h
-    renamed:    http.h -> curl_http.h
-    renamed:    http_chunks.h -> curl_http_chunks.h
-    renamed:    http_digest.h -> curl_http_digest.h
-    renamed:    http_negotiate.h -> curl_http_negotiate.h
-    renamed:    http_proxy.h -> curl_http_proxy.h
-    renamed:    if2ip.h -> curl_if2ip.h
-    renamed:    imap.h -> curl_imap.h
-    renamed:    inet_ntop.h -> curl_inet_ntop.h
-    renamed:    inet_pton.h -> curl_inet_pton.h
-    renamed:    krb4.h -> curl_krb4.h
-    renamed:    llist.h -> curl_llist.h
-    renamed:    memdebug.h -> curl_memdebug.h
-    renamed:    multiif.h -> curl_multiif.h
-    renamed:    netrc.h -> curl_netrc.h
-    renamed:    non-ascii.h -> curl_non-ascii.h
-    renamed:    nonblock.h -> curl_nonblock.h
-    renamed:    nssg.h -> curl_nssg.h
-    renamed:    parsedate.h -> curl_parsedate.h
-    renamed:    pingpong.h -> curl_pingpong.h
-    renamed:    polarssl.h -> curl_polarssl.h
-    renamed:    pop3.h -> curl_pop3.h
-    renamed:    progress.h -> curl_progress.h
-    renamed:    qssl.h -> curl_qssl.h
-    renamed:    rawstr.h -> curl_rawstr.h
-    renamed:    rtsp.h -> curl_rtsp.h
-    renamed:    select.h -> curl_select.h
-    renamed:    sendf.h -> curl_sendf.h
-    renamed:    setup.h -> curl_setup.h
-    renamed:    setup_once.h -> curl_setup_once.h
-    renamed:    share.h -> curl_share.h
-    renamed:    slist.h -> curl_slist.h
-    renamed:    smtp.h -> curl_smtp.h
-    renamed:    sockaddr.h -> curl_sockaddr.h
-    renamed:    socks.h -> curl_socks.h
-    renamed:    speedcheck.h -> curl_speedcheck.h
-    renamed:    splay.h -> curl_splay.h
-    renamed:    ssh.h -> curl_ssh.h
-    renamed:    sslgen.h -> curl_sslgen.h
-    renamed:    ssluse.h -> curl_ssluse.h
-    renamed:    strdup.h -> curl_strdup.h
-    renamed:    strequal.h -> curl_strequal.h
-    renamed:    strerror.h -> curl_strerror.h
-    renamed:    strtok.h -> curl_strtok.h
-    renamed:    strtoofft.h -> curl_strtoofft.h
-    renamed:    telnet.h -> curl_telnet.h
-    renamed:    tftp.h -> curl_tftp.h
-    renamed:    timeval.h -> curl_timeval.h
-    renamed:    transfer.h -> curl_transfer.h
-    renamed:    url.h -> curl_url.h
-    renamed:    urldata.h -> curl_urldata.h
-    renamed:    warnless.h -> curl_warnless.h
-    renamed:    wildcard.h -> curl_wildcard.h
+  The old way using getpwuid could cause problems in programs that enable
+  reading from netrc files simultaneously in multiple threads.
   
   
-  ----------------------------------------
+  Reported-by: David Woodhouse
+
+- RELEASE-NOTES: add the reporter of the previous bug fix
 
 
-- build: make use of 76 lib/*.h renamed files
+- netrc: treat failure to find home dir same as missing netrc file
   
   
-  76 private header files renamed to use our standard naming scheme.
+  This previously caused a fatal error (with a confusing error code, at
+  that).
   
   
-  This change affects 322 files in libcurl's source tree.
+  Reported by: Glen A Johnson Jr.
 
 
-- lib/*.h: use our standard naming scheme for header inclusion guards
+Steve Holme (12 Jul 2014)
+- RELEASE-NOTES: Synced with aaaf9e50ec
+
+- ntlm_wb: Fixed buffer size not being large enough for NTLMv2 sessions
+  
+  Bug: http://curl.haxx.se/mail/lib-2014-07/0103.html
+  Reported-by: David Woodhouse
 
 
-Steve Holme (28 Dec 2012)
-- imsp.c: Fixed usernames and passwords that contain escape characters
+- build: Fixed overridden compiler PDB settings in VC7 to VC12
   
   
-  Fixed a problem with sending usernames and passwords that contain
-  backslash, quotation mark and space characters.
+  The curl tool project files for VC7 to VC12 would override the default
+  setting with the output filename being the same as the linker PDB file.
+  As such the compiler file would be overwritten with the linker file
+  for all debug builds.
+  
+  To avoid this overwrite and for consistency with the libcurl project
+  files, removed the setting to force the default filename to be used.
 
 
-Daniel Stenberg (27 Dec 2012)
-- curl.1: extend the -X, --request description
+Dan Fandrich (12 Jul 2014)
+- tests: added globbing keyword to URL globbing tests
 
 
-- RELEASE-NOTES: synced with e3ed2b82e6
+- Fixed some "statement not reached" warnings
 
 
-- [Nick Zitzmann brought this change]
+- gnutls: fixed a couple of uninitialized variable references
 
 
-  darwinssl: Fixed inability to disable peer verification
+- gnutls: fixed compilation against versions < 2.12.0
   
   
-  ... on Snow Leopard and Lion
+  The AES-GCM ciphers were added to GnuTLS as late as ver. 3.0.1 but
+  the code path in which they're referenced here is only ever used for
+  somewhat older GnuTLS versions. This caused undeclared identifier errors
+  when compiling against those.
+
+- gnutls: explicitly added SRP to the priority string
   
   
-  Snow Leopard introduced the SSLSetSessionOption() function, but it
-  doesn't disable peer verification as expected on Snow Leopard or
-  Lion (it works as expected in Mountain Lion). So we now use sysctl()
-  to detect whether or not the user is using Snow Leopard or Lion,
-  and if that's the case, then we now use the deprecated
-  SSLSetEnableCertVerify() function instead to disable peer verification.
+  This seems to have become necessary for SRP support to work starting
+  with GnuTLS ver. 2.99.0. Since support for SRP was added to GnuTLS
+  before the function that takes this priority string, there should be no
+  issue with backward compatibility.
 
 
-Yang Tse (26 Dec 2012)
-- curl tool: rename hugehelp files to tool_hugehelp
+- tests: adjust for capitalization differences in newer gnutls-serv
+
+- test320/1/2/4: fix the port number substitution variables
+  
+  These tests have been broken since commit 1958fe57 in Oct. 2011
 
 
-- curl tool: renaming hugehelp files to tool_hugehelp
+- tests: document more test identifiers and variables
 
 
-- sockfilt.c: commit b44da5a82a follow-up 2
+- gnutls: ignore invalid certificate dates with VERIFYPEER disabled
+  
+  This makes the behaviour consistent with what happens if a date can
+  be extracted from the certificate but is expired.
 
 
-- sockfilt.c: commit b44da5a82a follow-up
+Steve Holme (10 Jul 2014)
+- CURLOPT_UPLOAD: Corrected argument type
 
 
-- sockfilt.c: fix some compiler warnings
+Daniel Stenberg (9 Jul 2014)
+- FAQ: expand the thread-safe section
+  
+  ... with a mention of *NOSIGNAL, based on talk in bug #1386
 
 
-- curl_multi_remove_handle: commit 0aabfd9963 follow-up
+Dan Fandrich (9 Jul 2014)
+- url.c: Fixed memory leak on OOM
+  
+  This showed itself on some systems with torture failures
+  in tests 1060 and 1061
 
 
-Daniel Stenberg (25 Dec 2012)
-- lib556: enable VERBOSE to ease debugging on failures
+- Update instances of some obsolete CURLOPTs to their new names
 
 
-Marc Hoersken (25 Dec 2012)
-- socklift.c: Quick fix to re-add missing code
+Daniel Stenberg (5 Jul 2014)
+- [Marcel Raad brought this change]
 
 
-- socklift.c: Added select_ws function to support Windows
+  compiler warnings: potentially uninitialized variables
+  
+  ... pointed out by MSVC2013
   
   
-  WinSock select() does not support standard file descriptors,
-  it can only check SOCKETs. The following function is an attempt
-  to create a select() function with support for other handles.
+  Bug: http://curl.haxx.se/bug/view.cgi?id=1391
 
 
-Yang Tse (25 Dec 2012)
-- Enable tests 1503, 1504 and 1505
+Kamil Dudka (4 Jul 2014)
+- nss: make the list of CRL items global
+  
+  Otherwise NSS could use an already freed item for another connection.
 
 
-- curl_multi_remove_handle: fix memory leak triggered with CURLOPT_RESOLVE
+- nss: fix a memory leak when CURLOPT_CRLFILE is used
 
 
-- Curl_hash_clean: OOM handling fix
+- nss: make crl_der allocated on heap
+  
+  ... and spell it as crl_der instead of crlDER
 
 
-- test 1504 and 1505: same as 1502 but with different cleanup sequences
+- nss: let nss_{cache,load}_crl return CURLcode
 
 
-Daniel Stenberg (24 Dec 2012)
-- Curl_conncache_foreach: allow callback to break loop
+- tool: oops, forgot to include <plarenas.h>
   
   
-  ... and have it take a proper 'struct connectdata *' as first argument
+  ... that contains the declaration of PL_ArenaFinish()
 
 
-- pop3_doing: don't call pop3_dophase_done() if already failed
+- tool: call PL_ArenaFinish() on exit if NSPR is used
   
   
-  ... it also clobbered the 'result' return value so that it wouldn't
-  return the error back to the parent function properly, which broke test
-  809 when run with 'multi-always'.
+  This prevents valgrind from reporting still reachable memory allocated
+  by NSPR arenas (mainly the freelist).
+  
+  Reported-by: Hubert Kario
+
+Daniel Stenberg (3 Jul 2014)
+- [Dimitrios Siganos brought this change]
 
 
-Yang Tse (23 Dec 2012)
-- test 1503: same as 1502 but with a different cleanup sequence
+  example: use correct type (long) for CURLOPT_FOLLOWLOCATION
 
 
-- test 1502: OOM handling fixes
+- [Dimitrios Siganos brought this change]
 
 
-- curl_multi_wait: OOM handling fix
+  Document type of argument for CURLOPT_FOLLOWLOCATION.
 
 
-- [Daniel Stenberg brought this change]
+- [Dimitrios Siganos brought this change]
 
 
-  curl_multi_wait: avoid an unnecessary memory allocation
+  Document type of argument for CURLOPT_ERRORBUFFER.
 
 
-- runtests.pl: prepend $srcdir to HTTPTLS server config files path
+- [Dimitrios Siganos brought this change]
 
 
-- multi.c: OOM handling fix
+  Document type of argument for CURLOPT_COPYPOSTFIELDS.
 
 
-- lib543.c: OOM handling fixes
+- [Dimitrios Siganos brought this change]
 
 
-- configure: add internal sanity check (warn only) on vars for makefiles
+  Document type of argument for CURLOPT_ADDRESS_SCOPE.
 
 
-Daniel Stenberg (21 Dec 2012)
-- SCP: relative path didn't work
+- curl.1: minor language fix
+  
+  Bug: http://curl.haxx.se/mail/archive-2014-07/0006.html
+
+- [Ray Satiro brought this change]
+
+  progress callback: skip last callback update on errors
+  
+  When an error has been detected, skip the final forced call to the
+  progress callback by making sure to pass the current return code
+  variable in the Curl_done() call in the CURLM_STATE_DONE state.
   
   
-  When prefixing a path with /~/ it is supposed to be used relative to the
-  user's home directory but it didn't work. Now we cut off the entire
-  three byte sequenct "/~/" which seems to be how OpenSSH does it.
+  This avoids the "extra" callback that could occur even if you returned
+  error from the progress callback.
   
   
-  Bug: http://curl.haxx.se/bug/view.cgi?id=1173
-  Reported by: Balaji Parasuram
+  Bug: http://curl.haxx.se/mail/lib-2014-06/0062.html
+  Reported by: Jonathan Cardoso Machado
 
 
-Yang Tse (21 Dec 2012)
-- configure: LIBMETALINK_CFLAGS actually is LIBMETALINK_CPPFLAGS
+Dan Fandrich (2 Jul 2014)
+- opts: fixed some CURLOPT references so they get turned into links
 
 
-- configure: add minimal sanity check on user provided CFLAGS and CPPFLAGS
+Kamil Dudka (2 Jul 2014)
+- tool: call PR_Cleanup() on exit if NSPR is used
+  
+  This prevents valgrind from reporting possibly lost memory that NSPR
+  uses for file descriptor cache and other globally allocated internal
+  data structures.
+
+- nss: make the fallback to SSLv3 work again
+  
+  This feature was unintentionally disabled by commit ff92fcfb.
 
 
-- bundles connection caching: some out of memory handling fixes
+- nss: do not abort on connection failure
+  
+  ... due to calling SSL_VersionRangeGet() with NULL file descriptor
+  
+  reported-by: upstream tests 305 and 404
 
 
-- libntlmconnect.c: fix compiler warnings and OOM handling
+Dan Fandrich (1 Jul 2014)
+- opts: Document the socket callback function parameters
 
 
-- configure.ac: clear local test intended variables before use
+Steve Holme (28 Jun 2014)
+- opts: Fixed some typos
 
 
-- VC6 IDE: link with advapi32.lib when using WIN32 crypto API (md5.c)
+Dan Fandrich (25 Jun 2014)
+- curl_easy_setopt.3: fixed the error code for an unsupported option
 
 
-- curl-functions.m4: improve gethostname arg 2 data type check
+- opts: added some DEFAULT and RETURN VALUE sections
 
 
-- setup_once.h: HP-UX specific 'bool', 'false' and 'true' definitions.
+Daniel Stenberg (21 Jun 2014)
+- libcurl docs: man page edits
   
   
-  Also reverts commit f254c59dc7
+  mainly to improve how the web versions render
 
 
-- configure: check if compiler halts on function prototype mismatch
+Dan Fandrich (21 Jun 2014)
+- curl_easy_setopt.3: fixed some typos
 
 
-- warnless.c: fix compiler warnings
+Daniel Stenberg (21 Jun 2014)
+- lib man pages: update easy setopt option references
+  
+  ... by using the "\fIopt(3)\fP" syntax they will be linked properly when
+  the web version of the page is generated.
 
 
-- curl-functions.m4: add gethostname arg 2 data type check and definition
+- opts: the CURLOPT_SSL_ENABLE_*PN options are enabled by default
 
 
-Daniel Stenberg (14 Dec 2012)
-- [Nick Zitzmann brought this change]
+- [Colin Hogben brought this change]
 
 
-  darwinssl: Fix implicit conversion compiler warnings
+  lib: documentation updates in README.hostip
   
   
-  The Clang compiler found a few implicit conversion problems that have
-  now been fixed.
+  c-ares now does support IPv6;
+  avoid implying threaded resolver is Windows-only;
+  two referenced source files were renamed in 7de2f92
 
 
-Yang Tse (14 Dec 2012)
-- setup_once.h: HP-UX <sys/socket.h> issue workaround
+- curl_easy_setopt.3: CURLOPT_POSTFIELDS is the exception
   
   
-  Issue: When building a 32bit target with large file support HP-UX
-  <sys/socket.h> header file may simultaneously provide two different
-  sets of declarations for sendfile and sendpath functions, one with
-  static and another with external linkage. Given that we do not use
-  mentioned functions we really don't care which linkage is the
-  appropriate one, but on the other hand, the double declaration emmits
-  warnings when using the HP-UX compiler and errors when using modern
-  gcc versions resulting in fatal compilation errors.
+  ... to the always-copy-char *-argument.
   
   
-  Mentioned issue is now fixed as long as we don't use sendfile nor
-  sendpath functions.
+  And fix some minor mistakes.
 
 
-- setup_once.h: refactor inclusion of <unistd.h> and <sys/socket.h>
+- curl_easy_setopt.3: refer to the individual man pages
   
   
-  Inclusion of top two most included header files now done in setup_once.h
+  With all the new individual option man pages created, this now refers to
+  each separate one instead of duplicaing the info. Also makes this page
+  easier to overview.
 
 
-- setup_once.h: HP-UX specific TRUE and FALSE definitions
+Dan Fandrich (21 Jun 2014)
+- opts: fixed mancheck for out-of-tree builds
+
+Daniel Stenberg (21 Jun 2014)
+- curl_easy_setopt.3: shorten
   
   
-  Some HP-UX system headers require TRUE defined to 1 and FALSE to 0.
+  shorten descriptions, mostly refer to the separate descriptions
+
+- CURLOPT_DNS_LOCAL_IP4.3: better short desc
 
 
-Daniel Stenberg (12 Dec 2012)
-- gopher: #include cleanup
+Dan Fandrich (20 Jun 2014)
+- opts: document CURLE_OUT_OF_MEMORY among other return values
+
+- opts: fixed some typos
+
+Daniel Stenberg (20 Jun 2014)
+- opts: various corrections
+
+- opts: add the rest of the options
   
   
-  Remove all system file includes from this file as they're not needed
+  ... and fixed mancheck to ignore obsolete options
+
+- opts: the final bunch of options as man pages
   
   
-  Reported by: Dan Fandrich
+  Now all current options have their own man pages.
 
 
-Yang Tse (11 Dec 2012)
-- examples/simplessl.c: fix compiler warning
+- opts: 37 additional man pages
 
 
-- examples/externalsocket.c: fix SunPro compilation issue
+- CURLOPT_URL: move up the text from "Notes"
 
 
-- examples/simplessl.c: fix compiler warning
+- ROADMAP: removed, now ROADMAP.md
 
 
-- build: add bundles and conncache files to other build systems
+- ROADMAP.md: make it markdown formatted
 
 
-- conncache: fix enumerated type mixed with another type
+- ROADMAP: initial commit of "curl the next few years"
+  
+  To be further discussed, debated and edited
 
 
-- examples/anyauthput.c: fix Tru64 compilation issue
+- opts: more man pages
 
 
-Daniel Stenberg (8 Dec 2012)
-- [Colin Watson brought this change]
+- CURLOPT_UNRESTRICTED_AUTH.3: added missing 'T'
 
 
-  configure: fix cross pkg-config detection
-  
-  When cross-compiling, CURL_CHECK_PKGCONFIG was checking for the cross
-  pkg-config using ${host}-pkg-config.
-  
-  The gold standard for doing this correctly is pkg-config's own macro,
-  PKG_PROG_PKG_CONFIG.  However, on the assumption that you have a good
-  reason not to use that directly (reduced dependencies for maintainer
-  builds?), the behaviour of cURL's version should at least match.
-  PKG_PROG_PKG_CONFIG uses AC_PATH_TOOL, which ultimately ends up trying
-  ${host_alias}-pkg-config; this is not quite the same as what cURL does,
-  and may differ because ${host} has been run through config.sub.  For
-  instance, when cross-building to the armhf architecture on Ubuntu,
-  ${host_alias} is arm-linux-gnueabihf while ${host} is
-  arm-unknown-linux-gnueabihf.  This may also have been the cause of the
-  problem reported at http://curl.haxx.se/mail/lib-2012-04/0224.html.
-  
-  AC_PATH_TOOL is significantly simpler than cURL's current code, and
-  dates back to well before the current minimum of Autoconf 2.57, so let's
-  use it instead.
+- opts: makefile now includes all current man pages
 
 
-- [Linus Nielsen Feltzing brought this change]
+- opts: 11 more man pages
 
 
-  Introducing a new persistent connection caching system using "bundles".
-  
-  A bundle is a list of all persistent connections to the same host.
-  The connection cache consists of a hash of bundles, with the
-  hostname as the key.
-  The benefits may not be obvious, but they are two:
-  
-  1) Faster search for connections to reuse, since the hash
-     lookup only finds connections to the host in question.
-  2) It lays out the groundworks for an upcoming patch,
-     which will introduce multiple HTTP pipelines.
-  
-  This patch also removes the awkward list of "closure handles",
-  which were needed to send QUIT commands to the FTP server
-  when closing a connection.
-  Now we allocate a separate closure handle and use that
-  one to close all connections.
-  
-  This has been tested in a live system for a few weeks, and of
-  course passes the test suite.
+Dan Fandrich (18 Jun 2014)
+- opts: document CURLE_OUT_OF_MEMORY as RETURN VALUE
 
 
-- [Fabian Keil brought this change]
+- opts: fixed a couple of typos
 
 
-  runtests and friends: Do not add undefined values to @INC
-  
-  On FreeBSD this fixes the warning:
-  Use of uninitialized value $p in string eq at /usr/local/lib/perl5/5.14.2/BSDPAN/BSDPAN.pm line 36.
+Patrick Monnerat (18 Jun 2014)
+- OS400: make it compilable again. Make RPG binding up to date.
 
 
-Steve Holme (5 Dec 2012)
-- Merge pull request #52 from isn-/master
+- buildconf: do not search tools in current directory.
+
+Dan Fandrich (18 Jun 2014)
+- curl.h: renamed CURLOPT_DEPRECATEDx to CURLOPT_OBSOLETEx
   
   
-  small compilation fix
+  This is consistent with the existing obsolete error code naming
+  convention.
+
+Daniel Stenberg (18 Jun 2014)
+- opts: 16 more man pages
diff --git a/CMake/CurlCheckCSourceCompiles.cmake b/CMake/CurlCheckCSourceCompiles.cmake
deleted file mode 100644 (file)
index b632768..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-# - Check if the source code provided in the SOURCE argument compiles.
-# CURL_CHECK_C_SOURCE_COMPILES(SOURCE VAR)
-# - macro which checks if the source code compiles
-#  SOURCE   - source code to try to compile
-#  VAR      - variable to store whether the source code compiled
-#
-# The following variables may be set before calling this macro to
-# modify the way the check is run:
-#
-#  CMAKE_REQUIRED_FLAGS = string of compile command line flags
-#  CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
-#  CMAKE_REQUIRED_INCLUDES = list of include directories
-#  CMAKE_REQUIRED_LIBRARIES = list of libraries to link
-
-macro(CURL_CHECK_C_SOURCE_COMPILES SOURCE VAR)
-  if("${VAR}" MATCHES "^${VAR}$" OR "${VAR}" MATCHES "UNKNOWN")
-    set(message "${VAR}")
-    # If the number of arguments is greater than 2 (SOURCE VAR)
-    if(${ARGC} GREATER 2)
-      # then add the third argument as a message
-      set(message "${ARGV2} (${VAR})")
-    endif(${ARGC} GREATER 2)
-    set(MACRO_CHECK_FUNCTION_DEFINITIONS
-      "-D${VAR} ${CMAKE_REQUIRED_FLAGS}")
-    if(CMAKE_REQUIRED_LIBRARIES)
-      set(CURL_CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES
-        "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
-    else(CMAKE_REQUIRED_LIBRARIES)
-      set(CURL_CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES)
-    endif(CMAKE_REQUIRED_LIBRARIES)
-    if(CMAKE_REQUIRED_INCLUDES)
-      set(CURL_CHECK_C_SOURCE_COMPILES_ADD_INCLUDES
-        "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
-    else(CMAKE_REQUIRED_INCLUDES)
-      set(CURL_CHECK_C_SOURCE_COMPILES_ADD_INCLUDES)
-    endif(CMAKE_REQUIRED_INCLUDES)
-    set(src "")
-    foreach(def ${EXTRA_DEFINES})
-      set(src "${src}#define ${def} 1\n")
-    endforeach(def)
-    foreach(inc ${HEADER_INCLUDES})
-      set(src "${src}#include <${inc}>\n")
-    endforeach(inc)
-
-    set(src "${src}\nint main() { ${SOURCE} ; return 0; }")
-    set(CMAKE_CONFIGURABLE_FILE_CONTENT "${src}")
-    configure_file(${CMAKE_CURRENT_SOURCE_DIR}/CMake/CMakeConfigurableFile.in
-      "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.c"
-      IMMEDIATE)
-    message(STATUS "Performing Test ${message}")
-    try_compile(${VAR}
-      ${CMAKE_BINARY_DIR}
-      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.c
-      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
-      CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
-      "${CURL_CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES}"
-      "${CURL_CHECK_C_SOURCE_COMPILES_ADD_INCLUDES}"
-      OUTPUT_VARIABLE OUTPUT)
-    if(${VAR})
-      set(${VAR} 1 CACHE INTERNAL "Test ${message}")
-      message(STATUS "Performing Test ${message} - Success")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-        "Performing C SOURCE FILE Test ${message} succeded with the following output:\n"
-        "${OUTPUT}\n"
-        "Source file was:\n${src}\n")
-    else(${VAR})
-      message(STATUS "Performing Test ${message} - Failed")
-      set(${VAR} "" CACHE INTERNAL "Test ${message}")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-        "Performing C SOURCE FILE Test ${message} failed with the following output:\n"
-        "${OUTPUT}\n"
-        "Source file was:\n${src}\n")
-    endif(${VAR})
-  endif("${VAR}" MATCHES "^${VAR}$" OR "${VAR}" MATCHES "UNKNOWN")
-endmacro(CURL_CHECK_C_SOURCE_COMPILES)
diff --git a/CMake/CurlCheckCSourceRuns.cmake b/CMake/CurlCheckCSourceRuns.cmake
deleted file mode 100644 (file)
index 6b14af8..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-# - Check if the source code provided in the SOURCE argument compiles and runs.
-# CURL_CHECK_C_SOURCE_RUNS(SOURCE VAR)
-# - macro which checks if the source code runs
-#  SOURCE   - source code to try to compile
-#  VAR - variable to store size if the type exists.
-#
-# The following variables may be set before calling this macro to
-# modify the way the check is run:
-#
-#  CMAKE_REQUIRED_FLAGS = string of compile command line flags
-#  CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
-#  CMAKE_REQUIRED_INCLUDES = list of include directories
-#  CMAKE_REQUIRED_LIBRARIES = list of libraries to link
-
-macro(CURL_CHECK_C_SOURCE_RUNS SOURCE VAR)
-  if("${VAR}" MATCHES "^${VAR}$" OR "${VAR}" MATCHES "UNKNOWN")
-    set(message "${VAR}")
-    # If the number of arguments is greater than 2 (SOURCE VAR)
-    if(${ARGC} GREATER 2)
-      # then add the third argument as a message
-      set(message "${ARGV2} (${VAR})")
-    endif(${ARGC} GREATER 2)
-    set(MACRO_CHECK_FUNCTION_DEFINITIONS
-      "-D${VAR} ${CMAKE_REQUIRED_FLAGS}")
-    if(CMAKE_REQUIRED_LIBRARIES)
-      set(CURL_CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES
-        "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
-    else(CMAKE_REQUIRED_LIBRARIES)
-      set(CURL_CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES)
-    endif(CMAKE_REQUIRED_LIBRARIES)
-    if(CMAKE_REQUIRED_INCLUDES)
-      set(CURL_CHECK_C_SOURCE_COMPILES_ADD_INCLUDES
-        "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
-    else(CMAKE_REQUIRED_INCLUDES)
-      set(CURL_CHECK_C_SOURCE_COMPILES_ADD_INCLUDES)
-    endif(CMAKE_REQUIRED_INCLUDES)
-    set(src "")
-    foreach(def ${EXTRA_DEFINES})
-      set(src "${src}#define ${def} 1\n")
-    endforeach(def)
-    foreach(inc ${HEADER_INCLUDES})
-      set(src "${src}#include <${inc}>\n")
-    endforeach(inc)
-
-    set(src "${src}\nint main() { ${SOURCE} ; return 0; }")
-    set(CMAKE_CONFIGURABLE_FILE_CONTENT "${src}")
-    configure_file(${CMAKE_CURRENT_SOURCE_DIR}/CMake/CMakeConfigurableFile.in
-      "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.c"
-      IMMEDIATE)
-    message(STATUS "Performing Test ${message}")
-    try_run(${VAR} ${VAR}_COMPILED
-      ${CMAKE_BINARY_DIR}
-      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.c
-      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
-      CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
-      "${CURL_CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES}"
-      "${CURL_CHECK_C_SOURCE_COMPILES_ADD_INCLUDES}"
-      OUTPUT_VARIABLE OUTPUT)
-    # if it did not compile make the return value fail code of 1
-    if(NOT ${VAR}_COMPILED)
-      set(${VAR} 1)
-    endif(NOT ${VAR}_COMPILED)
-    # if the return value was 0 then it worked
-    set(result_var ${${VAR}})
-    if("${result_var}" EQUAL 0)
-      set(${VAR} 1 CACHE INTERNAL "Test ${message}")
-      message(STATUS "Performing Test ${message} - Success")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-        "Performing C SOURCE FILE Test ${message} succeded with the following output:\n"
-        "${OUTPUT}\n"
-        "Return value: ${${VAR}}\n"
-        "Source file was:\n${src}\n")
-    else("${result_var}" EQUAL 0)
-      message(STATUS "Performing Test ${message} - Failed")
-      set(${VAR} "" CACHE INTERNAL "Test ${message}")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-        "Performing C SOURCE FILE Test ${message} failed with the following output:\n"
-        "${OUTPUT}\n"
-        "Return value: ${result_var}\n"
-        "Source file was:\n${src}\n")
-    endif("${result_var}" EQUAL 0)
-  endif("${VAR}" MATCHES "^${VAR}$" OR "${VAR}" MATCHES "UNKNOWN")
-endmacro(CURL_CHECK_C_SOURCE_RUNS)
index 199871a..04d5e7e 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -71,264 +71,88 @@ main ()
 }
 #endif
 
 }
 #endif
 
-#ifdef HAVE_GETHOSTBYADDR_R_5
+/* tests for gethostbyaddr_r or gethostbyname_r */
+#if defined(HAVE_GETHOSTBYADDR_R_5_REENTRANT) || \
+    defined(HAVE_GETHOSTBYADDR_R_7_REENTRANT) || \
+    defined(HAVE_GETHOSTBYADDR_R_8_REENTRANT) || \
+    defined(HAVE_GETHOSTBYNAME_R_3_REENTRANT) || \
+    defined(HAVE_GETHOSTBYNAME_R_5_REENTRANT) || \
+    defined(HAVE_GETHOSTBYNAME_R_6_REENTRANT)
+#   define _REENTRANT
+    /* no idea whether _REENTRANT is always set, just invent a new flag */
+#   define TEST_GETHOSTBYFOO_REENTRANT
+#endif
+#if defined(HAVE_GETHOSTBYADDR_R_5) || \
+    defined(HAVE_GETHOSTBYADDR_R_7) || \
+    defined(HAVE_GETHOSTBYADDR_R_8) || \
+    defined(HAVE_GETHOSTBYNAME_R_3) || \
+    defined(HAVE_GETHOSTBYNAME_R_5) || \
+    defined(HAVE_GETHOSTBYNAME_R_6) || \
+    defined(TEST_GETHOSTBYFOO_REENTRANT)
 #include <sys/types.h>
 #include <netdb.h>
 #include <sys/types.h>
 #include <netdb.h>
-int
-main ()
-{
-
-char * address;
-int length;
-int type;
-struct hostent h;
-struct hostent_data hdata;
-int rc;
-#ifndef gethostbyaddr_r
-  (void)gethostbyaddr_r;
-#endif
-rc = gethostbyaddr_r(address, length, type, &h, &hdata);
-  ;
-  return 0;
-}
-#endif
-#ifdef HAVE_GETHOSTBYADDR_R_5_REENTRANT
-#define _REENTRANT
-#include <sys/types.h>
-#include <netdb.h>
-int
-main ()
-{
-
-char * address;
-int length;q
-int type;
-struct hostent h;
-struct hostent_data hdata;
-int rc;
-#ifndef gethostbyaddr_r
-  (void)gethostbyaddr_r;
-#endif
-rc = gethostbyaddr_r(address, length, type, &h, &hdata);
-  ;
-  return 0;
-}
-#endif
-#ifdef HAVE_GETHOSTBYADDR_R_7
-#include <sys/types.h>
-#include <netdb.h>
-int
-main ()
-{
-
-char * address;
-int length;
-int type;
-struct hostent h;
-char buffer[8192];
-int h_errnop;
-struct hostent * hp;
-
-#ifndef gethostbyaddr_r
-  (void)gethostbyaddr_r;
-#endif
-hp = gethostbyaddr_r(address, length, type, &h,
-                     buffer, 8192, &h_errnop);
-  ;
-  return 0;
-}
-#endif
-#ifdef HAVE_GETHOSTBYADDR_R_7_REENTRANT
-#define _REENTRANT
-#include <sys/types.h>
-#include <netdb.h>
-int
-main ()
+int main(void)
 {
 {
-
-char * address;
-int length;
-int type;
-struct hostent h;
-char buffer[8192];
-int h_errnop;
-struct hostent * hp;
-
-#ifndef gethostbyaddr_r
-  (void)gethostbyaddr_r;
-#endif
-hp = gethostbyaddr_r(address, length, type, &h,
-                     buffer, 8192, &h_errnop);
-  ;
-  return 0;
-}
+  char *address = "example.com";
+  int length = 0;
+  int type = 0;
+  struct hostent h;
+  int rc = 0;
+#if defined(HAVE_GETHOSTBYADDR_R_5) || \
+    defined(HAVE_GETHOSTBYADDR_R_5_REENTRANT) || \
+    \
+    defined(HAVE_GETHOSTBYNAME_R_3) || \
+    defined(HAVE_GETHOSTBYNAME_R_3_REENTRANT)
+  struct hostent_data hdata;
+#elif defined(HAVE_GETHOSTBYADDR_R_7) || \
+      defined(HAVE_GETHOSTBYADDR_R_7_REENTRANT) || \
+      defined(HAVE_GETHOSTBYADDR_R_8) || \
+      defined(HAVE_GETHOSTBYADDR_R_8_REENTRANT) || \
+      \
+      defined(HAVE_GETHOSTBYNAME_R_5) || \
+      defined(HAVE_GETHOSTBYNAME_R_5_REENTRANT) || \
+      defined(HAVE_GETHOSTBYNAME_R_6) || \
+      defined(HAVE_GETHOSTBYNAME_R_6_REENTRANT)
+  char buffer[8192];
+  int h_errnop;
+  struct hostent *hp;
 #endif
 #endif
-#ifdef HAVE_GETHOSTBYADDR_R_8
-#include <sys/types.h>
-#include <netdb.h>
-int
-main ()
-{
-
-char * address;
-int length;
-int type;
-struct hostent h;
-char buffer[8192];
-int h_errnop;
-struct hostent * hp;
-int rc;
-
-#ifndef gethostbyaddr_r
-  (void)gethostbyaddr_r;
-#endif
-rc = gethostbyaddr_r(address, length, type, &h,
-                     buffer, 8192, &hp, &h_errnop);
-  ;
-  return 0;
-}
-#endif
-#ifdef HAVE_GETHOSTBYADDR_R_8_REENTRANT
-#define _REENTRANT
-#include <sys/types.h>
-#include <netdb.h>
-int
-main ()
-{
-
-char * address;
-int length;
-int type;
-struct hostent h;
-char buffer[8192];
-int h_errnop;
-struct hostent * hp;
-int rc;
 
 #ifndef gethostbyaddr_r
   (void)gethostbyaddr_r;
 #endif
 
 #ifndef gethostbyaddr_r
   (void)gethostbyaddr_r;
 #endif
-rc = gethostbyaddr_r(address, length, type, &h,
-                     buffer, 8192, &hp, &h_errnop);
-  ;
-  return 0;
-}
-#endif
-#ifdef HAVE_GETHOSTBYNAME_R_3
-#include <string.h>
-#include <sys/types.h>
-#include <netdb.h>
-#undef NULL
-#define NULL (void *)0
-
-int
-main ()
-{
-
-struct hostent_data data;
-#ifndef gethostbyname_r
-  (void)gethostbyname_r;
-#endif
-gethostbyname_r(NULL, NULL, NULL);
-  ;
-  return 0;
-}
-#endif
-#ifdef HAVE_GETHOSTBYNAME_R_3_REENTRANT
-#define _REENTRANT
-#include <string.h>
-#include <sys/types.h>
-#include <netdb.h>
-#undef NULL
-#define NULL (void *)0
-
-int
-main ()
-{
-
-struct hostent_data data;
-#ifndef gethostbyname_r
-  (void)gethostbyname_r;
-#endif
-gethostbyname_r(NULL, NULL, NULL);
-  ;
-  return 0;
-}
-#endif
-#ifdef HAVE_GETHOSTBYNAME_R_5
-#include <sys/types.h>
-#include <netinet/in.h>
-#include <netdb.h>
-#undef NULL
-#define NULL (void *)0
-
-int
-main ()
-{
-#ifndef gethostbyname_r
-  (void)gethostbyname_r;
-#endif
-gethostbyname_r(NULL, NULL, NULL, 0, NULL);
-  ;
-  return 0;
-}
-#endif
-#ifdef HAVE_GETHOSTBYNAME_R_5_REENTRANT
-#define _REENTRANT
-#include <sys/types.h>
-#include <netdb.h>
-#undef NULL
-#define NULL (void *)0
 
 
-int
-main ()
-{
-
-#ifndef gethostbyname_r
-  (void)gethostbyname_r;
-#endif
-gethostbyname_r(NULL, NULL, NULL, 0, NULL);
-  ;
+#if   defined(HAVE_GETHOSTBYADDR_R_5) || \
+      defined(HAVE_GETHOSTBYADDR_R_5_REENTRANT)
+  rc = gethostbyaddr_r(address, length, type, &h, &hdata);
+#elif defined(HAVE_GETHOSTBYADDR_R_7) || \
+      defined(HAVE_GETHOSTBYADDR_R_7_REENTRANT)
+  hp = gethostbyaddr_r(address, length, type, &h, buffer, 8192, &h_errnop);
+  (void)hp;
+#elif defined(HAVE_GETHOSTBYADDR_R_8) || \
+      defined(HAVE_GETHOSTBYADDR_R_8_REENTRANT)
+  rc = gethostbyaddr_r(address, length, type, &h, buffer, 8192, &hp, &h_errnop);
+#endif
+
+#if   defined(HAVE_GETHOSTBYNAME_R_3) || \
+      defined(HAVE_GETHOSTBYNAME_R_3_REENTRANT)
+  rc = gethostbyname_r(address, &h, &hdata);
+#elif defined(HAVE_GETHOSTBYNAME_R_5) || \
+      defined(HAVE_GETHOSTBYNAME_R_5_REENTRANT)
+  rc = gethostbyname_r(address, &h, buffer, 8192, 0, &h_errnop);
+  (void)hp; /* not used for test */
+#elif defined(HAVE_GETHOSTBYNAME_R_6) || \
+      defined(HAVE_GETHOSTBYNAME_R_6_REENTRANT)
+  rc = gethostbyname_r(address, &h, buffer, 8192, &hp, &h_errnop);
+#endif
+
+  (void)length;
+  (void)type;
+  (void)rc;
   return 0;
 }
 #endif
   return 0;
 }
 #endif
-#ifdef HAVE_GETHOSTBYNAME_R_6
-#include <sys/types.h>
-#include <netdb.h>
-#undef NULL
-#define NULL (void *)0
-
-int
-main ()
-{
 
 
-#ifndef gethostbyname_r
-  (void)gethostbyname_r;
-#endif
-gethostbyname_r(NULL, NULL, NULL, 0, NULL, NULL);
-  ;
-  return 0;
-}
-#endif
-#ifdef HAVE_GETHOSTBYNAME_R_6_REENTRANT
-#define _REENTRANT
-#include <sys/types.h>
-#include <netdb.h>
-#undef NULL
-#define NULL (void *)0
-
-int
-main ()
-{
-
-#ifndef gethostbyname_r
-  (void)gethostbyname_r;
-#endif
-gethostbyname_r(NULL, NULL, NULL, 0, NULL, NULL);
-  ;
-  return 0;
-}
-#endif
 #ifdef HAVE_SOCKLEN_T
 #ifdef _WIN32
 #include <ws2tcpip.h>
 #ifdef HAVE_SOCKLEN_T
 #ifdef _WIN32
 #include <ws2tcpip.h>
diff --git a/CMake/FindGSS.cmake b/CMake/FindGSS.cmake
new file mode 100644 (file)
index 0000000..4986a8e
--- /dev/null
@@ -0,0 +1,289 @@
+# - Try to find the GSS Kerberos library
+# Once done this will define
+#
+#  GSS_ROOT_DIR - Set this variable to the root installation of GSS
+#
+# Read-Only variables:
+#  GSS_FOUND - system has the Heimdal library
+#  GSS_FLAVOUR - "MIT" or "Heimdal" if anything found.
+#  GSS_INCLUDE_DIR - the Heimdal include directory
+#  GSS_LIBRARIES - The libraries needed to use GSS
+#  GSS_LINK_DIRECTORIES - Directories to add to linker search path
+#  GSS_LINKER_FLAGS - Additional linker flags
+#  GSS_COMPILER_FLAGS - Additional compiler flags
+#  GSS_VERSION - This is set to version advertised by pkg-config or read from manifest.
+#                In case the library is found but no version info availabe it'll be set to "unknown"
+
+set(_MIT_MODNAME mit-krb5-gssapi)
+set(_HEIMDAL_MODNAME heimdal-gssapi)
+
+include(CheckIncludeFile)
+include(CheckIncludeFiles)
+include(CheckTypeSize)
+
+set(_GSS_ROOT_HINTS
+    "${GSS_ROOT_DIR}"
+    "$ENV{GSS_ROOT_DIR}"
+)
+
+# try to find library using system pkg-config if user didn't specify root dir
+if(NOT GSS_ROOT_DIR AND NOT "$ENV{GSS_ROOT_DIR}")
+    if(UNIX)
+        find_package(PkgConfig QUIET)
+        pkg_search_module(_GSS_PKG ${_MIT_MODNAME} ${_HEIMDAL_MODNAME})
+        list(APPEND _GSS_ROOT_HINTS "${_GSS_PKG_PREFIX}")
+    elseif(WIN32)
+        list(APPEND _GSS_ROOT_HINTS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MIT\\Kerberos;InstallDir]")
+    endif()
+endif()
+
+if(NOT _GSS_FOUND) #not found by pkg-config. Let's take more traditional approach.
+    find_file(_GSS_CONFIGURE_SCRIPT
+        NAMES
+            "krb5-config"
+        HINTS
+            ${_GSS_ROOT_HINTS}
+        PATH_SUFFIXES
+            bin
+        NO_CMAKE_PATH
+        NO_CMAKE_ENVIRONMENT_PATH
+    )
+
+    # if not found in user-supplied directories, maybe system knows better
+    find_file(_GSS_CONFIGURE_SCRIPT
+        NAMES
+            "krb5-config"
+        PATH_SUFFIXES
+            bin
+    )
+
+    if(_GSS_CONFIGURE_SCRIPT)
+        execute_process(
+            COMMAND ${_GSS_CONFIGURE_SCRIPT} "--cflags" "gssapi"
+            OUTPUT_VARIABLE _GSS_CFLAGS
+            RESULT_VARIABLE _GSS_CONFIGURE_FAILED
+        )
+message(STATUS "CFLAGS: ${_GSS_CFLAGS}")
+        if(NOT _GSS_CONFIGURE_FAILED) # 0 means success
+            # should also work in an odd case when multiple directories are given
+            string(STRIP "${_GSS_CFLAGS}" _GSS_CFLAGS)
+            string(REGEX REPLACE " +-I" ";" _GSS_CFLAGS "${_GSS_CFLAGS}")
+            string(REGEX REPLACE " +-([^I][^ \\t;]*)" ";-\\1"_GSS_CFLAGS "${_GSS_CFLAGS}")
+
+            foreach(_flag ${_GSS_CFLAGS})
+                if(_flag MATCHES "^-I.*")
+                    string(REGEX REPLACE "^-I" "" _val "${_flag}")
+                    list(APPEND _GSS_INCLUDE_DIR "${_val}")
+                else()
+                    list(APPEND _GSS_COMPILER_FLAGS "${_flag}")
+                endif()
+            endforeach()
+        endif()
+
+        execute_process(
+            COMMAND ${_GSS_CONFIGURE_SCRIPT} "--libs" "gssapi"
+            OUTPUT_VARIABLE _GSS_LIB_FLAGS
+            RESULT_VARIABLE _GSS_CONFIGURE_FAILED
+        )
+message(STATUS "LDFLAGS: ${_GSS_LIB_FLAGS}")
+        if(NOT _GSS_CONFIGURE_FAILED) # 0 means success
+            # this script gives us libraries and link directories. Blah. We have to deal with it.
+            string(STRIP "${_GSS_LIB_FLAGS}" _GSS_LIB_FLAGS)
+            string(REGEX REPLACE " +-(L|l)" ";-\\1" _GSS_LIB_FLAGS "${_GSS_LIB_FLAGS}")
+            string(REGEX REPLACE " +-([^Ll][^ \\t;]*)" ";-\\1"_GSS_LIB_FLAGS "${_GSS_LIB_FLAGS}")
+
+            foreach(_flag ${_GSS_LIB_FLAGS})
+                if(_flag MATCHES "^-l.*")
+                    string(REGEX REPLACE "^-l" "" _val "${_flag}")
+                    list(APPEND _GSS_LIBRARIES "${_val}")
+                elseif(_flag MATCHES "^-L.*")
+                    string(REGEX REPLACE "^-L" "" _val "${_flag}")
+                    list(APPEND _GSS_LINK_DIRECTORIES "${_val}")
+                else()
+                    list(APPEND _GSS_LINKER_FLAGS "${_flag}")
+                endif()
+            endforeach()
+        endif()
+
+
+        execute_process(
+            COMMAND ${_GSS_CONFIGURE_SCRIPT} "--version"
+            OUTPUT_VARIABLE _GSS_VERSION
+            RESULT_VARIABLE _GSS_CONFIGURE_FAILED
+        )
+
+        # older versions may not have the "--version" parameter. In this case we just don't care.
+        if(_GSS_CONFIGURE_FAILED)
+            set(_GSS_VERSION 0)
+        endif()
+
+
+        execute_process(
+            COMMAND ${_GSS_CONFIGURE_SCRIPT} "--vendor"
+            OUTPUT_VARIABLE _GSS_VENDOR
+            RESULT_VARIABLE _GSS_CONFIGURE_FAILED
+        )
+
+        # older versions may not have the "--vendor" parameter. In this case we just don't care.
+        if(_GSS_CONFIGURE_FAILED)
+            set(GSS_FLAVOUR "Heimdal") # most probably, shouldn't really matter
+        else()
+            if(_GSS_VENDOR MATCHES ".*H|heimdal.*")
+                set(GSS_FLAVOUR "Heimdal")
+            else()
+                set(GSS_FLAVOUR "MIT")
+            endif()
+        endif()
+
+    else() # either there is no config script or we are on platform that doesn't provide one (Windows?)
+
+        find_path(_GSS_INCLUDE_DIR
+            NAMES
+                "gssapi/gssapi.h"
+            HINTS
+                ${_GSS_ROOT_HINTS}
+            PATH_SUFFIXES
+                include
+                inc
+        )
+
+        if(_GSS_INCLUDE_DIR) #jay, we've found something
+            set(CMAKE_REQUIRED_INCLUDES "${_GSS_INCLUDE_DIR}")
+            check_include_files( "gssapi/gssapi_generic.h;gssapi/gssapi_krb5.h" _GSS_HAVE_MIT_HEADERS)
+
+            if(_GSS_HAVE_MIT_HEADERS)
+                set(GSS_FLAVOUR "MIT")
+            else()
+                # prevent compiling the header - just check if we can include it
+                set(CMAKE_REQUIRED_DEFINITIONS "-D__ROKEN_H__")
+                check_include_file( "roken.h" _GSS_HAVE_ROKEN_H)
+
+                check_include_file( "heimdal/roken.h" _GSS_HAVE_HEIMDAL_ROKEN_H)
+                if(_GSS_HAVE_ROKEN_H OR _GSS_HAVE_HEIMDAL_ROKEN_H)
+                    set(GSS_FLAVOUR "Heimdal")
+                endif()
+                set(CMAKE_REQUIRED_DEFINITIONS "")
+            endif()
+        else()
+            # I'm not convienced if this is the right way but this is what autotools do at the moment
+            find_path(_GSS_INCLUDE_DIR
+                NAMES
+                    "gssapi.h"
+                HINTS
+                    ${_GSS_ROOT_HINTS}
+                PATH_SUFFIXES
+                    include
+                    inc
+            )
+
+            if(_GSS_INCLUDE_DIR)
+                set(GSS_FLAVOUR "Heimdal")
+            endif()
+        endif()
+
+        # if we have headers, check if we can link libraries
+        if(GSS_FLAVOUR)
+            set(_GSS_LIBDIR_SUFFIXES "")
+            set(_GSS_LIBDIR_HINTS ${_GSS_ROOT_HINTS})
+            get_filename_component(_GSS_CALCULATED_POTENTIAL_ROOT "${_GSS_INCLUDE_DIR}" PATH)
+            list(APPEND _GSS_LIBDIR_HINTS ${_GSS_CALCULATED_POTENTIAL_ROOT})
+
+            if(WIN32)
+                if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+                    list(APPEND _GSS_LIBDIR_SUFFIXES "lib/AMD64")
+                    if(GSS_FLAVOUR STREQUAL "MIT")
+                        set(_GSS_LIBNAME "gssapi64")
+                    else()
+                        set(_GSS_LIBNAME "libgssapi")
+                    endif()
+                else()
+                    list(APPEND _GSS_LIBDIR_SUFFIXES "lib/i386")
+                    if(GSS_FLAVOUR STREQUAL "MIT")
+                        set(_GSS_LIBNAME "gssapi32")
+                    else()
+                        set(_GSS_LIBNAME "libgssapi")
+                    endif()
+                endif()
+            else()
+                list(APPEND _GSS_LIBDIR_SUFFIXES "lib;lib64") # those suffixes are not checked for HINTS
+                if(GSS_FLAVOUR STREQUAL "MIT")
+                    set(_GSS_LIBNAME "gssapi_krb5")
+                else()
+                    set(_GSS_LIBNAME "gssapi")
+                endif()
+            endif()
+
+            find_library(_GSS_LIBRARIES
+                NAMES
+                    ${_GSS_LIBNAME}
+                HINTS
+                    ${_GSS_LIBDIR_HINTS}
+                PATH_SUFFIXES
+                    ${_GSS_LIBDIR_SUFFIXES}
+            )
+
+        endif()
+
+    endif()
+else()
+    if(_GSS_PKG_${_MIT_MODNAME}_VERSION)
+        set(GSS_FLAVOUR "MIT")
+        set(_GSS_VERSION _GSS_PKG_${_MIT_MODNAME}_VERSION)
+    else()
+        set(GSS_FLAVOUR "Heimdal")
+        set(_GSS_VERSION _GSS_PKG_${_MIT_HEIMDAL}_VERSION)
+    endif()
+endif()
+
+set(GSS_INCLUDE_DIR ${_GSS_INCLUDE_DIR})
+set(GSS_LIBRARIES ${_GSS_LIBRARIES})
+set(GSS_LINK_DIRECTORIES ${_GSS_LINK_DIRECTORIES})
+set(GSS_LINKER_FLAGS ${_GSS_LINKER_FLAGS})
+set(GSS_COMPILER_FLAGS ${_GSS_COMPILER_FLAGS})
+set(GSS_VERSION ${_GSS_VERSION})
+
+if(GSS_FLAVOUR)
+
+    if(NOT GSS_VERSION AND GSS_FLAVOUR STREQUAL "Heimdal")
+        if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+            set(HEIMDAL_MANIFEST_FILE "Heimdal.Application.amd64.manifest")
+        else()
+            set(HEIMDAL_MANIFEST_FILE "Heimdal.Application.x86.manifest")
+        endif()
+
+        if(EXISTS "${GSS_INCLUDE_DIR}/${HEIMDAL_MANIFEST_FILE}")
+            file(STRINGS "${GSS_INCLUDE_DIR}/${HEIMDAL_MANIFEST_FILE}" heimdal_version_str
+                 REGEX "^.*version=\"[0-9]\\.[^\"]+\".*$")
+
+            string(REGEX MATCH "[0-9]\\.[^\"]+"
+                   GSS_VERSION "${heimdal_version_str}")
+        endif()
+
+        if(NOT GSS_VERSION)
+            set(GSS_VERSION "Heimdal Unknown")
+        endif()
+    elseif(NOT GSS_VERSION AND GSS_FLAVOUR STREQUAL "MIT")
+        get_filename_component(_MIT_VERSION "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MIT\\Kerberos\\SDK\\CurrentVersion;VersionString]" NAME CACHE)
+        if(WIN32 AND _MIT_VERSION)
+            set(GSS_VERSION "${_MIT_VERSION}")
+        else()
+            set(GSS_VERSION "MIT Unknown")
+        endif()
+    endif()
+endif()
+
+
+include(FindPackageHandleStandardArgs)
+
+set(_GSS_REQUIRED_VARS GSS_LIBRARIES GSS_FLAVOUR)
+
+find_package_handle_standard_args(GSS
+    REQUIRED_VARS
+        ${_GSS_REQUIRED_VARS}
+    VERSION_VAR
+        GSS_VERSION
+    FAIL_MESSAGE
+        "Could NOT find GSS, try to set the path to GSS root folder in the system variable GSS_ROOT_DIR"
+)
+
+mark_as_advanced(GSS_INCLUDE_DIR GSS_LIBRARIES)
diff --git a/CMake/FindOpenSSL.cmake b/CMake/FindOpenSSL.cmake
deleted file mode 100644 (file)
index 279428b..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-# Extension of the standard FindOpenSSL.cmake
-# Adds OPENSSL_INCLUDE_DIRS and libeay32
-include("${CMAKE_ROOT}/Modules/FindOpenSSL.cmake")
-
-# starting 2.8 it is better to use standard modules
-if(CMAKE_MAJOR_VERSION EQUAL "2" AND CMAKE_MINOR_VERSION LESS "8")
-  # Bill Hoffman told that libeay32 is necessary for him:
-  find_library(SSL_LIBEAY NAMES libeay32)
-
-  if(OPENSSL_FOUND)
-    if(SSL_LIBEAY)
-      list(APPEND OPENSSL_LIBRARIES ${SSL_LIBEAY})
-    else()
-      set(OPENSSL_FOUND FALSE)
-    endif()
-  endif()
-endif() # if (CMAKE_MAJOR_VERSION EQUAL "2" AND CMAKE_MINOR_VERSION LESS "8")
-
-if(OPENSSL_FOUND)
-  set(OPENSSL_INCLUDE_DIRS ${OPENSSL_INCLUDE_DIR})
-endif()
diff --git a/CMake/FindZLIB.cmake b/CMake/FindZLIB.cmake
deleted file mode 100644 (file)
index b2cfe18..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-# Locate zlib
-include("${CMAKE_ROOT}/Modules/FindZLIB.cmake")
-
-# starting 2.8 it is better to use standard modules
-if(CMAKE_MAJOR_VERSION EQUAL "2" AND CMAKE_MINOR_VERSION LESS "8")
-  find_library(ZLIB_LIBRARY_DEBUG NAMES zd zlibd zdlld zlib1d )
-  if(ZLIB_FOUND AND ZLIB_LIBRARY_DEBUG)
-    set( ZLIB_LIBRARIES optimized "${ZLIB_LIBRARY}" debug ${ZLIB_LIBRARY_DEBUG})
-  endif()
-endif()
diff --git a/CMake/Macros.cmake b/CMake/Macros.cmake
new file mode 100644 (file)
index 0000000..dab005f
--- /dev/null
@@ -0,0 +1,95 @@
+#File defines convenience macros for available feature testing
+
+# This macro checks if the symbol exists in the library and if it
+# does, it prepends library to the list.  It is intended to be called
+# multiple times with a sequence of possibly dependent libraries in
+# order of least-to-most-dependent.  Some libraries depend on others
+# to link correctly.
+macro(CHECK_LIBRARY_EXISTS_CONCAT LIBRARY SYMBOL VARIABLE)
+  check_library_exists("${LIBRARY};${CURL_LIBS}" ${SYMBOL} "${CMAKE_LIBRARY_PATH}"
+    ${VARIABLE})
+  if(${VARIABLE})
+    set(CURL_LIBS ${LIBRARY} ${CURL_LIBS})
+  endif(${VARIABLE})
+endmacro(CHECK_LIBRARY_EXISTS_CONCAT)
+
+# Check if header file exists and add it to the list.
+# This macro is intended to be called multiple times with a sequence of
+# possibly dependent header files.  Some headers depend on others to be
+# compiled correctly.
+macro(CHECK_INCLUDE_FILE_CONCAT FILE VARIABLE)
+  check_include_files("${CURL_INCLUDES};${FILE}" ${VARIABLE})
+  if(${VARIABLE})
+    set(CURL_INCLUDES ${CURL_INCLUDES} ${FILE})
+    set(CURL_TEST_DEFINES "${CURL_TEST_DEFINES} -D${VARIABLE}")
+  endif(${VARIABLE})
+endmacro(CHECK_INCLUDE_FILE_CONCAT)
+
+# For other curl specific tests, use this macro.
+macro(CURL_INTERNAL_TEST CURL_TEST)
+  if(NOT DEFINED "${CURL_TEST}")
+    set(MACRO_CHECK_FUNCTION_DEFINITIONS
+      "-D${CURL_TEST} ${CURL_TEST_DEFINES} ${CMAKE_REQUIRED_FLAGS}")
+    if(CMAKE_REQUIRED_LIBRARIES)
+      set(CURL_TEST_ADD_LIBRARIES
+        "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
+    endif(CMAKE_REQUIRED_LIBRARIES)
+
+    message(STATUS "Performing Curl Test ${CURL_TEST}")
+    try_compile(${CURL_TEST}
+      ${CMAKE_BINARY_DIR}
+      ${CMAKE_CURRENT_SOURCE_DIR}/CMake/CurlTests.c
+      CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
+      "${CURL_TEST_ADD_LIBRARIES}"
+      OUTPUT_VARIABLE OUTPUT)
+    if(${CURL_TEST})
+      set(${CURL_TEST} 1 CACHE INTERNAL "Curl test ${FUNCTION}")
+      message(STATUS "Performing Curl Test ${CURL_TEST} - Success")
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+        "Performing Curl Test ${CURL_TEST} passed with the following output:\n"
+        "${OUTPUT}\n")
+    else(${CURL_TEST})
+      message(STATUS "Performing Curl Test ${CURL_TEST} - Failed")
+      set(${CURL_TEST} "" CACHE INTERNAL "Curl test ${FUNCTION}")
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+        "Performing Curl Test ${CURL_TEST} failed with the following output:\n"
+        "${OUTPUT}\n")
+    endif(${CURL_TEST})
+  endif()
+endmacro(CURL_INTERNAL_TEST)
+
+macro(CURL_INTERNAL_TEST_RUN CURL_TEST)
+  if(NOT DEFINED "${CURL_TEST}_COMPILE")
+    set(MACRO_CHECK_FUNCTION_DEFINITIONS
+      "-D${CURL_TEST} ${CMAKE_REQUIRED_FLAGS}")
+    if(CMAKE_REQUIRED_LIBRARIES)
+      set(CURL_TEST_ADD_LIBRARIES
+        "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
+    endif(CMAKE_REQUIRED_LIBRARIES)
+
+    message(STATUS "Performing Curl Test ${CURL_TEST}")
+    try_run(${CURL_TEST} ${CURL_TEST}_COMPILE
+      ${CMAKE_BINARY_DIR}
+      ${CMAKE_CURRENT_SOURCE_DIR}/CMake/CurlTests.c
+      CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
+      "${CURL_TEST_ADD_LIBRARIES}"
+      OUTPUT_VARIABLE OUTPUT)
+    if(${CURL_TEST}_COMPILE AND NOT ${CURL_TEST})
+      set(${CURL_TEST} 1 CACHE INTERNAL "Curl test ${FUNCTION}")
+      message(STATUS "Performing Curl Test ${CURL_TEST} - Success")
+    else(${CURL_TEST}_COMPILE AND NOT ${CURL_TEST})
+      message(STATUS "Performing Curl Test ${CURL_TEST} - Failed")
+      set(${CURL_TEST} "" CACHE INTERNAL "Curl test ${FUNCTION}")
+      file(APPEND "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log"
+        "Performing Curl Test ${CURL_TEST} failed with the following output:\n"
+        "${OUTPUT}")
+      if(${CURL_TEST}_COMPILE)
+        file(APPEND
+          "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log"
+          "There was a problem running this test\n")
+      endif(${CURL_TEST}_COMPILE)
+      file(APPEND "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log"
+        "\n\n")
+    endif(${CURL_TEST}_COMPILE AND NOT ${CURL_TEST})
+  endif()
+endmacro(CURL_INTERNAL_TEST_RUN)
index 89d0048..4f07f22 100644 (file)
@@ -1,15 +1,10 @@
-include(CurlCheckCSourceCompiles)
-set(EXTRA_DEFINES "__unused1\n#undef inline\n#define __unused2")
-set(HEADER_INCLUDES)
-set(headers_hack)
+include(CheckCSourceCompiles)
+# The begin of the sources (macros and includes)
+set(_source_epilogue "#undef inline")
 
 macro(add_header_include check header)
   if(${check})
 
 macro(add_header_include check header)
   if(${check})
-    set(headers_hack
-      "${headers_hack}\n#include <${header}>")
-    #SET(HEADER_INCLUDES
-    #  ${HEADER_INCLUDES}
-    #  "${header}")
+    set(_source_epilogue "${_source_epilogue}\n#include <${header}>")
   endif(${check})
 endmacro(add_header_include)
 
   endif(${check})
 endmacro(add_header_include)
 
@@ -18,22 +13,23 @@ if(HAVE_WINDOWS_H)
   add_header_include(HAVE_WINDOWS_H "windows.h")
   add_header_include(HAVE_WINSOCK2_H "winsock2.h")
   add_header_include(HAVE_WINSOCK_H "winsock.h")
   add_header_include(HAVE_WINDOWS_H "windows.h")
   add_header_include(HAVE_WINSOCK2_H "winsock2.h")
   add_header_include(HAVE_WINSOCK_H "winsock.h")
-  set(EXTRA_DEFINES ${EXTRA_DEFINES}
-    "__unused7\n#ifndef WIN32_LEAN_AND_MEAN\n#define WIN32_LEAN_AND_MEAN\n#endif\n#define __unused3")
+  set(_source_epilogue
+      "${_source_epilogue}\n#ifndef WIN32_LEAN_AND_MEAN\n#define WIN32_LEAN_AND_MEAN\n#endif")
   set(signature_call_conv "PASCAL")
   set(signature_call_conv "PASCAL")
+  if(HAVE_LIBWS2_32)
+    set(CMAKE_REQUIRED_LIBRARIES ws2_32)
+  endif()
 else(HAVE_WINDOWS_H)
   add_header_include(HAVE_SYS_TYPES_H "sys/types.h")
   add_header_include(HAVE_SYS_SOCKET_H "sys/socket.h")
 endif(HAVE_WINDOWS_H)
 
 else(HAVE_WINDOWS_H)
   add_header_include(HAVE_SYS_TYPES_H "sys/types.h")
   add_header_include(HAVE_SYS_SOCKET_H "sys/socket.h")
 endif(HAVE_WINDOWS_H)
 
-set(EXTRA_DEFINES_BACKUP "${EXTRA_DEFINES}")
-set(EXTRA_DEFINES "${EXTRA_DEFINES_BACKUP}\n${headers_hack}\n${extern_line}\n#define __unused5")
-curl_check_c_source_compiles("recv(0, 0, 0, 0)" curl_cv_recv)
+check_c_source_compiles("${_source_epilogue}
+int main(void) {
+    recv(0, 0, 0, 0);
+    return 0;
+}" curl_cv_recv)
 if(curl_cv_recv)
 if(curl_cv_recv)
-  #    AC_CACHE_CHECK([types of arguments and return type for recv],
-  #[curl_cv_func_recv_args], [
-  #SET(curl_cv_func_recv_args "unknown")
-  #for recv_retv in 'int' 'ssize_t'; do
   if(NOT DEFINED curl_cv_func_recv_args OR "${curl_cv_func_recv_args}" STREQUAL "unknown")
     foreach(recv_retv "int" "ssize_t" )
       foreach(recv_arg1 "int" "ssize_t" "SOCKET")
   if(NOT DEFINED curl_cv_func_recv_args OR "${curl_cv_func_recv_args}" STREQUAL "unknown")
     foreach(recv_retv "int" "ssize_t" )
       foreach(recv_arg1 "int" "ssize_t" "SOCKET")
@@ -41,17 +37,23 @@ if(curl_cv_recv)
           foreach(recv_arg3 "size_t" "int" "socklen_t" "unsigned int")
             foreach(recv_arg4 "int" "unsigned int")
               if(NOT curl_cv_func_recv_done)
           foreach(recv_arg3 "size_t" "int" "socklen_t" "unsigned int")
             foreach(recv_arg4 "int" "unsigned int")
               if(NOT curl_cv_func_recv_done)
-                set(curl_cv_func_recv_test "UNKNOWN")
-                set(extern_line "extern ${recv_retv} ${signature_call_conv} recv(${recv_arg1}, ${recv_arg2}, ${recv_arg3}, ${recv_arg4})\;")
-                set(EXTRA_DEFINES "${EXTRA_DEFINES_BACKUP}\n${headers_hack}\n${extern_line}\n#define __unused5")
-                curl_check_c_source_compiles("
+                unset(curl_cv_func_recv_test CACHE)
+                check_c_source_compiles("
+                  ${_source_epilogue}
+                  extern ${recv_retv} ${signature_call_conv}
+                  recv(${recv_arg1}, ${recv_arg2}, ${recv_arg3}, ${recv_arg4});
+                  int main(void) {
                     ${recv_arg1} s=0;
                     ${recv_arg2} buf=0;
                     ${recv_arg3} len=0;
                     ${recv_arg4} flags=0;
                     ${recv_arg1} s=0;
                     ${recv_arg2} buf=0;
                     ${recv_arg3} len=0;
                     ${recv_arg4} flags=0;
-                    ${recv_retv} res = recv(s, buf, len, flags)"
-                  curl_cv_func_recv_test
-                  "${recv_retv} recv(${recv_arg1}, ${recv_arg2}, ${recv_arg3}, ${recv_arg4})")
+                    ${recv_retv} res = recv(s, buf, len, flags);
+                    (void) res;
+                    return 0;
+                  }"
+                  curl_cv_func_recv_test)
+                message(STATUS
+                  "Tested: ${recv_retv} recv(${recv_arg1}, ${recv_arg2}, ${recv_arg3}, ${recv_arg4})")
                 if(curl_cv_func_recv_test)
                   set(curl_cv_func_recv_args
                     "${recv_arg1},${recv_arg2},${recv_arg3},${recv_arg4},${recv_retv}")
                 if(curl_cv_func_recv_test)
                   set(curl_cv_func_recv_args
                     "${recv_arg1},${recv_arg2},${recv_arg3},${recv_arg4},${recv_retv}")
@@ -69,18 +71,13 @@ if(curl_cv_recv)
         endforeach(recv_arg2)
       endforeach(recv_arg1)
     endforeach(recv_retv)
         endforeach(recv_arg2)
       endforeach(recv_arg1)
     endforeach(recv_retv)
-  else(NOT DEFINED curl_cv_func_recv_args OR "${curl_cv_func_recv_args}" STREQUAL "unknown")
+  else()
     string(REGEX REPLACE "^([^,]*),[^,]*,[^,]*,[^,]*,[^,]*$" "\\1" RECV_TYPE_ARG1 "${curl_cv_func_recv_args}")
     string(REGEX REPLACE "^[^,]*,([^,]*),[^,]*,[^,]*,[^,]*$" "\\1" RECV_TYPE_ARG2 "${curl_cv_func_recv_args}")
     string(REGEX REPLACE "^[^,]*,[^,]*,([^,]*),[^,]*,[^,]*$" "\\1" RECV_TYPE_ARG3 "${curl_cv_func_recv_args}")
     string(REGEX REPLACE "^[^,]*,[^,]*,[^,]*,([^,]*),[^,]*$" "\\1" RECV_TYPE_ARG4 "${curl_cv_func_recv_args}")
     string(REGEX REPLACE "^[^,]*,[^,]*,[^,]*,[^,]*,([^,]*)$" "\\1" RECV_TYPE_RETV "${curl_cv_func_recv_args}")
     string(REGEX REPLACE "^([^,]*),[^,]*,[^,]*,[^,]*,[^,]*$" "\\1" RECV_TYPE_ARG1 "${curl_cv_func_recv_args}")
     string(REGEX REPLACE "^[^,]*,([^,]*),[^,]*,[^,]*,[^,]*$" "\\1" RECV_TYPE_ARG2 "${curl_cv_func_recv_args}")
     string(REGEX REPLACE "^[^,]*,[^,]*,([^,]*),[^,]*,[^,]*$" "\\1" RECV_TYPE_ARG3 "${curl_cv_func_recv_args}")
     string(REGEX REPLACE "^[^,]*,[^,]*,[^,]*,([^,]*),[^,]*$" "\\1" RECV_TYPE_ARG4 "${curl_cv_func_recv_args}")
     string(REGEX REPLACE "^[^,]*,[^,]*,[^,]*,[^,]*,([^,]*)$" "\\1" RECV_TYPE_RETV "${curl_cv_func_recv_args}")
-    #MESSAGE("RECV_TYPE_ARG1 ${RECV_TYPE_ARG1}")
-    #MESSAGE("RECV_TYPE_ARG2 ${RECV_TYPE_ARG2}")
-    #MESSAGE("RECV_TYPE_ARG3 ${RECV_TYPE_ARG3}")
-    #MESSAGE("RECV_TYPE_ARG4 ${RECV_TYPE_ARG4}")
-    #MESSAGE("RECV_TYPE_RETV ${RECV_TYPE_RETV}")
-  endif(NOT DEFINED curl_cv_func_recv_args OR "${curl_cv_func_recv_args}" STREQUAL "unknown")
+  endif()
 
   if("${curl_cv_func_recv_args}" STREQUAL "unknown")
     message(FATAL_ERROR "Cannot find proper types to use for recv args")
 
   if("${curl_cv_func_recv_args}" STREQUAL "unknown")
     message(FATAL_ERROR "Cannot find proper types to use for recv args")
@@ -91,12 +88,12 @@ endif(curl_cv_recv)
 set(curl_cv_func_recv_args "${curl_cv_func_recv_args}" CACHE INTERNAL "Arguments for recv")
 set(HAVE_RECV 1)
 
 set(curl_cv_func_recv_args "${curl_cv_func_recv_args}" CACHE INTERNAL "Arguments for recv")
 set(HAVE_RECV 1)
 
-curl_check_c_source_compiles("send(0, 0, 0, 0)" curl_cv_send)
+check_c_source_compiles("${_source_epilogue}
+int main(void) {
+    send(0, 0, 0, 0);
+    return 0;
+}" curl_cv_send)
 if(curl_cv_send)
 if(curl_cv_send)
-  #    AC_CACHE_CHECK([types of arguments and return type for send],
-  #[curl_cv_func_send_args], [
-  #SET(curl_cv_func_send_args "unknown")
-  #for send_retv in 'int' 'ssize_t'; do
   if(NOT DEFINED curl_cv_func_send_args OR "${curl_cv_func_send_args}" STREQUAL "unknown")
     foreach(send_retv "int" "ssize_t" )
       foreach(send_arg1 "int" "ssize_t" "SOCKET")
   if(NOT DEFINED curl_cv_func_send_args OR "${curl_cv_func_send_args}" STREQUAL "unknown")
     foreach(send_retv "int" "ssize_t" )
       foreach(send_arg1 "int" "ssize_t" "SOCKET")
@@ -104,19 +101,24 @@ if(curl_cv_send)
           foreach(send_arg3 "size_t" "int" "socklen_t" "unsigned int")
             foreach(send_arg4 "int" "unsigned int")
               if(NOT curl_cv_func_send_done)
           foreach(send_arg3 "size_t" "int" "socklen_t" "unsigned int")
             foreach(send_arg4 "int" "unsigned int")
               if(NOT curl_cv_func_send_done)
-                set(curl_cv_func_send_test "UNKNOWN")
-                set(extern_line "extern ${send_retv} ${signature_call_conv} send(${send_arg1}, ${send_arg2}, ${send_arg3}, ${send_arg4})\;")
-                set(EXTRA_DEFINES "${EXTRA_DEFINES_BACKUP}\n${headers_hack}\n${extern_line}\n#define __unused5")
-                curl_check_c_source_compiles("
+                unset(curl_cv_func_send_test CACHE)
+                check_c_source_compiles("
+                  ${_source_epilogue}
+                  extern ${send_retv} ${signature_call_conv}
+                  send(${send_arg1}, ${send_arg2}, ${send_arg3}, ${send_arg4});
+                  int main(void) {
                     ${send_arg1} s=0;
                     ${send_arg2} buf=0;
                     ${send_arg3} len=0;
                     ${send_arg4} flags=0;
                     ${send_arg1} s=0;
                     ${send_arg2} buf=0;
                     ${send_arg3} len=0;
                     ${send_arg4} flags=0;
-                    ${send_retv} res = send(s, buf, len, flags)"
-                  curl_cv_func_send_test
-                  "${send_retv} send(${send_arg1}, ${send_arg2}, ${send_arg3}, ${send_arg4})")
+                    ${send_retv} res = send(s, buf, len, flags);
+                    (void) res;
+                    return 0;
+                  }"
+                  curl_cv_func_send_test)
+                message(STATUS
+                  "Tested: ${send_retv} send(${send_arg1}, ${send_arg2}, ${send_arg3}, ${send_arg4})")
                 if(curl_cv_func_send_test)
                 if(curl_cv_func_send_test)
-                  #MESSAGE("Found arguments: ${curl_cv_func_send_test}")
                   string(REGEX REPLACE "(const) .*" "\\1" send_qual_arg2 "${send_arg2}")
                   string(REGEX REPLACE "const (.*)" "\\1" send_arg2 "${send_arg2}")
                   set(curl_cv_func_send_args
                   string(REGEX REPLACE "(const) .*" "\\1" send_qual_arg2 "${send_arg2}")
                   string(REGEX REPLACE "const (.*)" "\\1" send_arg2 "${send_arg2}")
                   set(curl_cv_func_send_args
@@ -135,20 +137,14 @@ if(curl_cv_send)
         endforeach(send_arg2)
       endforeach(send_arg1)
     endforeach(send_retv)
         endforeach(send_arg2)
       endforeach(send_arg1)
     endforeach(send_retv)
-  else(NOT DEFINED curl_cv_func_send_args OR "${curl_cv_func_send_args}" STREQUAL "unknown")
+  else()
     string(REGEX REPLACE "^([^,]*),[^,]*,[^,]*,[^,]*,[^,]*,[^,]*$" "\\1" SEND_TYPE_ARG1 "${curl_cv_func_send_args}")
     string(REGEX REPLACE "^[^,]*,([^,]*),[^,]*,[^,]*,[^,]*,[^,]*$" "\\1" SEND_TYPE_ARG2 "${curl_cv_func_send_args}")
     string(REGEX REPLACE "^[^,]*,[^,]*,([^,]*),[^,]*,[^,]*,[^,]*$" "\\1" SEND_TYPE_ARG3 "${curl_cv_func_send_args}")
     string(REGEX REPLACE "^[^,]*,[^,]*,[^,]*,([^,]*),[^,]*,[^,]*$" "\\1" SEND_TYPE_ARG4 "${curl_cv_func_send_args}")
     string(REGEX REPLACE "^[^,]*,[^,]*,[^,]*,[^,]*,([^,]*),[^,]*$" "\\1" SEND_TYPE_RETV "${curl_cv_func_send_args}")
     string(REGEX REPLACE "^[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,([^,]*)$" "\\1" SEND_QUAL_ARG2 "${curl_cv_func_send_args}")
     string(REGEX REPLACE "^([^,]*),[^,]*,[^,]*,[^,]*,[^,]*,[^,]*$" "\\1" SEND_TYPE_ARG1 "${curl_cv_func_send_args}")
     string(REGEX REPLACE "^[^,]*,([^,]*),[^,]*,[^,]*,[^,]*,[^,]*$" "\\1" SEND_TYPE_ARG2 "${curl_cv_func_send_args}")
     string(REGEX REPLACE "^[^,]*,[^,]*,([^,]*),[^,]*,[^,]*,[^,]*$" "\\1" SEND_TYPE_ARG3 "${curl_cv_func_send_args}")
     string(REGEX REPLACE "^[^,]*,[^,]*,[^,]*,([^,]*),[^,]*,[^,]*$" "\\1" SEND_TYPE_ARG4 "${curl_cv_func_send_args}")
     string(REGEX REPLACE "^[^,]*,[^,]*,[^,]*,[^,]*,([^,]*),[^,]*$" "\\1" SEND_TYPE_RETV "${curl_cv_func_send_args}")
     string(REGEX REPLACE "^[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,([^,]*)$" "\\1" SEND_QUAL_ARG2 "${curl_cv_func_send_args}")
-    #MESSAGE("SEND_TYPE_ARG1 ${SEND_TYPE_ARG1}")
-    #MESSAGE("SEND_TYPE_ARG2 ${SEND_TYPE_ARG2}")
-    #MESSAGE("SEND_TYPE_ARG3 ${SEND_TYPE_ARG3}")
-    #MESSAGE("SEND_TYPE_ARG4 ${SEND_TYPE_ARG4}")
-    #MESSAGE("SEND_TYPE_RETV ${SEND_TYPE_RETV}")
-    #MESSAGE("SEND_QUAL_ARG2 ${SEND_QUAL_ARG2}")
-  endif(NOT DEFINED curl_cv_func_send_args OR "${curl_cv_func_send_args}" STREQUAL "unknown")
+  endif()
 
   if("${curl_cv_func_send_args}" STREQUAL "unknown")
     message(FATAL_ERROR "Cannot find proper types to use for send args")
 
   if("${curl_cv_func_send_args}" STREQUAL "unknown")
     message(FATAL_ERROR "Cannot find proper types to use for send args")
@@ -160,88 +156,71 @@ endif(curl_cv_send)
 set(curl_cv_func_send_args "${curl_cv_func_send_args}" CACHE INTERNAL "Arguments for send")
 set(HAVE_SEND 1)
 
 set(curl_cv_func_send_args "${curl_cv_func_send_args}" CACHE INTERNAL "Arguments for send")
 set(HAVE_SEND 1)
 
-set(EXTRA_DEFINES "${EXTRA_DEFINES}\n${headers_hack}\n#define __unused5")
-curl_check_c_source_compiles("int flag = MSG_NOSIGNAL" HAVE_MSG_NOSIGNAL)
+check_c_source_compiles("${_source_epilogue}
+  int main(void) {
+    int flag = MSG_NOSIGNAL;
+    (void)flag;
+    return 0;
+  }" HAVE_MSG_NOSIGNAL)
 
 
-set(EXTRA_DEFINES "__unused1\n#undef inline\n#define __unused2")
-set(HEADER_INCLUDES)
-set(headers_hack)
-
-macro(add_header_include check header)
-  if(${check})
-    set(headers_hack
-      "${headers_hack}\n#include <${header}>")
-    #SET(HEADER_INCLUDES
-    #  ${HEADER_INCLUDES}
-    #  "${header}")
-  endif(${check})
-endmacro(add_header_include header)
-
-if(HAVE_WINDOWS_H)
-  set(EXTRA_DEFINES ${EXTRA_DEFINES}
-    "__unused7\n#ifndef WIN32_LEAN_AND_MEAN\n#define WIN32_LEAN_AND_MEAN\n#endif\n#define __unused3")
-  add_header_include(HAVE_WINDOWS_H "windows.h")
-  add_header_include(HAVE_WINSOCK2_H "winsock2.h")
-  add_header_include(HAVE_WINSOCK_H "winsock.h")
-else(HAVE_WINDOWS_H)
-  add_header_include(HAVE_SYS_TYPES_H "sys/types.h")
+if(NOT HAVE_WINDOWS_H)
   add_header_include(HAVE_SYS_TIME_H "sys/time.h")
   add_header_include(TIME_WITH_SYS_TIME "time.h")
   add_header_include(HAVE_TIME_H "time.h")
   add_header_include(HAVE_SYS_TIME_H "sys/time.h")
   add_header_include(TIME_WITH_SYS_TIME "time.h")
   add_header_include(HAVE_TIME_H "time.h")
-endif(HAVE_WINDOWS_H)
-set(EXTRA_DEFINES "${EXTRA_DEFINES}\n${headers_hack}\n#define __unused5")
-curl_check_c_source_compiles("struct timeval ts;\nts.tv_sec  = 0;\nts.tv_usec = 0" HAVE_STRUCT_TIMEVAL)
-
-
-include(CurlCheckCSourceRuns)
-set(EXTRA_DEFINES)
-set(HEADER_INCLUDES)
+endif()
+check_c_source_compiles("${_source_epilogue}
+int main(void) {
+  struct timeval ts;
+  ts.tv_sec  = 0;
+  ts.tv_usec = 0;
+  (void)ts;
+  return 0;
+}" HAVE_STRUCT_TIMEVAL)
+
+
+include(CheckCSourceRuns)
+set(CMAKE_REQUIRED_FLAGS)
 if(HAVE_SYS_POLL_H)
 if(HAVE_SYS_POLL_H)
-  set(HEADER_INCLUDES "sys/poll.h")
+  set(CMAKE_REQUIRED_FLAGS "-DHAVE_SYS_POLL_H")
 endif(HAVE_SYS_POLL_H)
 endif(HAVE_SYS_POLL_H)
-curl_check_c_source_runs("return poll((void *)0, 0, 10 /*ms*/)" HAVE_POLL_FINE)
+check_c_source_runs("
+  #ifdef HAVE_SYS_POLL_H
+  #  include <sys/poll.h>
+  #endif
+  int main(void) {
+    return poll((void *)0, 0, 10 /*ms*/);
+  }" HAVE_POLL_FINE)
 
 set(HAVE_SIG_ATOMIC_T 1)
 
 set(HAVE_SIG_ATOMIC_T 1)
-set(EXTRA_DEFINES)
-set(HEADER_INCLUDES)
+set(CMAKE_REQUIRED_FLAGS)
 if(HAVE_SIGNAL_H)
 if(HAVE_SIGNAL_H)
-  set(HEADER_INCLUDES "signal.h")
+  set(CMAKE_REQUIRED_FLAGS "-DHAVE_SIGNAL_H")
   set(CMAKE_EXTRA_INCLUDE_FILES "signal.h")
 endif(HAVE_SIGNAL_H)
 check_type_size("sig_atomic_t" SIZEOF_SIG_ATOMIC_T)
 if(HAVE_SIZEOF_SIG_ATOMIC_T)
   set(CMAKE_EXTRA_INCLUDE_FILES "signal.h")
 endif(HAVE_SIGNAL_H)
 check_type_size("sig_atomic_t" SIZEOF_SIG_ATOMIC_T)
 if(HAVE_SIZEOF_SIG_ATOMIC_T)
-  curl_check_c_source_compiles("static volatile sig_atomic_t dummy = 0" HAVE_SIG_ATOMIC_T_NOT_VOLATILE)
+  check_c_source_compiles("
+    #ifdef HAVE_SIGNAL_H
+    #  include <signal.h>
+    #endif
+    int main(void) {
+      static volatile sig_atomic_t dummy = 0;
+      (void)dummy;
+      return 0;
+    }" HAVE_SIG_ATOMIC_T_NOT_VOLATILE)
   if(NOT HAVE_SIG_ATOMIC_T_NOT_VOLATILE)
     set(HAVE_SIG_ATOMIC_T_VOLATILE 1)
   endif(NOT HAVE_SIG_ATOMIC_T_NOT_VOLATILE)
 endif(HAVE_SIZEOF_SIG_ATOMIC_T)
 
   if(NOT HAVE_SIG_ATOMIC_T_NOT_VOLATILE)
     set(HAVE_SIG_ATOMIC_T_VOLATILE 1)
   endif(NOT HAVE_SIG_ATOMIC_T_NOT_VOLATILE)
 endif(HAVE_SIZEOF_SIG_ATOMIC_T)
 
-set(CHECK_TYPE_SIZE_PREINCLUDE
-  "#undef inline")
-
 if(HAVE_WINDOWS_H)
 if(HAVE_WINDOWS_H)
-  set(CHECK_TYPE_SIZE_PREINCLUDE "${CHECK_TYPE_SIZE_PREINCLUDE}
-  #ifndef WIN32_LEAN_AND_MEAN
-  #define WIN32_LEAN_AND_MEAN
-  #endif
-  #include <windows.h>")
-  if(HAVE_WINSOCK2_H)
-    set(CHECK_TYPE_SIZE_PREINCLUDE "${CHECK_TYPE_SIZE_PREINCLUDE}\n#include <winsock2.h>")
-  endif(HAVE_WINSOCK2_H)
-else(HAVE_WINDOWS_H)
+  set(CMAKE_EXTRA_INCLUDE_FILES winsock2.h)
+else()
+  set(CMAKE_EXTRA_INCLUDE_FILES)
   if(HAVE_SYS_SOCKET_H)
   if(HAVE_SYS_SOCKET_H)
-    set(CMAKE_EXTRA_INCLUDE_FILES ${CMAKE_EXTRA_INCLUDE_FILES}
-      "sys/socket.h")
+    set(CMAKE_EXTRA_INCLUDE_FILES sys/socket.h)
   endif(HAVE_SYS_SOCKET_H)
   endif(HAVE_SYS_SOCKET_H)
-  if(HAVE_NETINET_IN_H)
-    set(CMAKE_EXTRA_INCLUDE_FILES ${CMAKE_EXTRA_INCLUDE_FILES}
-      "netinet/in.h")
-  endif(HAVE_NETINET_IN_H)
-  if(HAVE_ARPA_INET_H)
-    set(CMAKE_EXTRA_INCLUDE_FILES ${CMAKE_EXTRA_INCLUDE_FILES}
-      "arpa/inet.h")
-  endif(HAVE_ARPA_INET_H)
-endif(HAVE_WINDOWS_H)
+endif()
 
 check_type_size("struct sockaddr_storage" SIZEOF_STRUCT_SOCKADDR_STORAGE)
 if(HAVE_SIZEOF_STRUCT_SOCKADDR_STORAGE)
 
 check_type_size("struct sockaddr_storage" SIZEOF_STRUCT_SOCKADDR_STORAGE)
 if(HAVE_SIZEOF_STRUCT_SOCKADDR_STORAGE)
index 49161f8..6fc2991 100644 (file)
@@ -5,6 +5,7 @@ if(NOT UNIX)
     set(HAVE_LIBSOCKET 0)
     set(NOT_NEED_LIBNSL 0)
     set(HAVE_LIBNSL 0)
     set(HAVE_LIBSOCKET 0)
     set(NOT_NEED_LIBNSL 0)
     set(HAVE_LIBNSL 0)
+    set(HAVE_GETHOSTNAME 1)
     set(HAVE_LIBZ 0)
     set(HAVE_LIBCRYPTO 0)
 
     set(HAVE_LIBZ 0)
     set(HAVE_LIBCRYPTO 0)
 
@@ -14,7 +15,6 @@ if(NOT UNIX)
     set(HAVE_ARPA_INET_H 0)
     set(HAVE_DLFCN_H 0)
     set(HAVE_FCNTL_H 1)
     set(HAVE_ARPA_INET_H 0)
     set(HAVE_DLFCN_H 0)
     set(HAVE_FCNTL_H 1)
-    set(HAVE_FEATURES_H 0)
     set(HAVE_INTTYPES_H 0)
     set(HAVE_IO_H 1)
     set(HAVE_MALLOC_H 1)
     set(HAVE_INTTYPES_H 0)
     set(HAVE_IO_H 1)
     set(HAVE_MALLOC_H 1)
@@ -108,7 +108,11 @@ if(NOT UNIX)
     set(HAVE_IN_ADDR_T 0)
     set(HAVE_INET_NTOA_R_DECL 0)
     set(HAVE_INET_NTOA_R_DECL_REENTRANT 0)
     set(HAVE_IN_ADDR_T 0)
     set(HAVE_INET_NTOA_R_DECL 0)
     set(HAVE_INET_NTOA_R_DECL_REENTRANT 0)
-    set(HAVE_GETADDRINFO 0)
+    if(ENABLE_IPV6)
+      set(HAVE_GETADDRINFO 1)
+    else()
+      set(HAVE_GETADDRINFO 0)
+    endif()
     set(STDC_HEADERS 1)
     set(RETSIGTYPE_TEST 1)
 
     set(STDC_HEADERS 1)
     set(RETSIGTYPE_TEST 1)
 
index a7ecace..fc75d59 100644 (file)
@@ -1,3 +1,24 @@
+#***************************************************************************
+#                                  _   _ ____  _
+#  Project                     ___| | | |  _ \| |
+#                             / __| | | | |_) | |
+#                            | (__| |_| |  _ <| |___
+#                             \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at http://curl.haxx.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
 # cURL/libcurl CMake script
 # by Tetetest and Sukender (Benoit Neil)
 
 # cURL/libcurl CMake script
 # by Tetetest and Sukender (Benoit Neil)
 
 # To check:
 # (From Daniel Stenberg) The cmake build selected to run gcc with -fPIC on my box while the plain configure script did not.
 # (From Daniel Stenberg) The gcc command line use neither -g nor any -O options. As a developer, I also treasure our configure scripts's --enable-debug option that sets a long range of "picky" compiler options.
 # To check:
 # (From Daniel Stenberg) The cmake build selected to run gcc with -fPIC on my box while the plain configure script did not.
 # (From Daniel Stenberg) The gcc command line use neither -g nor any -O options. As a developer, I also treasure our configure scripts's --enable-debug option that sets a long range of "picky" compiler options.
-cmake_minimum_required(VERSION 2.6.2 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
 set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake;${CMAKE_MODULE_PATH}")
 include(Utilities)
 set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake;${CMAKE_MODULE_PATH}")
 include(Utilities)
+include(Macros)
 
 project( CURL C )
 
 
 project( CURL C )
 
+message(WARNING "the curl cmake build system is poorly maintained. Be aware")
+
 file (READ ${CURL_SOURCE_DIR}/include/curl/curlver.h CURL_VERSION_H_CONTENTS)
 file (READ ${CURL_SOURCE_DIR}/include/curl/curlver.h CURL_VERSION_H_CONTENTS)
-string (REGEX MATCH "LIBCURL_VERSION_MAJOR[ \t]+([0-9]+)"
-  LIBCURL_VERSION_MJ ${CURL_VERSION_H_CONTENTS})
-string (REGEX MATCH "([0-9]+)"
-  LIBCURL_VERSION_MJ ${LIBCURL_VERSION_MJ})
-string (REGEX MATCH
-  "LIBCURL_VERSION_MINOR[ \t]+([0-9]+)"
-  LIBCURL_VERSION_MI ${CURL_VERSION_H_CONTENTS})
-string (REGEX MATCH "([0-9]+)" LIBCURL_VERSION_MI ${LIBCURL_VERSION_MI})
-string (REGEX MATCH
-  "LIBCURL_VERSION_PATCH[ \t]+([0-9]+)"
-  LIBCURL_VERSION_PT ${CURL_VERSION_H_CONTENTS})
-string (REGEX MATCH "([0-9]+)" LIBCURL_VERSION_PT ${LIBCURL_VERSION_PT})
-set (CURL_MAJOR_VERSION ${LIBCURL_VERSION_MJ})
-set (CURL_MINOR_VERSION ${LIBCURL_VERSION_MI})
-set (CURL_PATCH_VERSION ${LIBCURL_VERSION_PT})
+string (REGEX MATCH "#define LIBCURL_VERSION \"[^\"]*"
+  CURL_VERSION ${CURL_VERSION_H_CONTENTS})
+string (REGEX REPLACE "[^\"]+\"" "" CURL_VERSION ${CURL_VERSION})
+string (REGEX MATCH "#define LIBCURL_VERSION_NUM 0x[0-9a-fA-F]+"
+  CURL_VERSION_NUM ${CURL_VERSION_H_CONTENTS})
+string (REGEX REPLACE "[^0]+0x" "" CURL_VERSION_NUM ${CURL_VERSION_NUM})
 
 include_regular_expression("^.*$")    # Sukender: Is it necessary?
 
 # Setup package meta-data
 # SET(PACKAGE "curl")
 
 include_regular_expression("^.*$")    # Sukender: Is it necessary?
 
 # Setup package meta-data
 # SET(PACKAGE "curl")
-set(CURL_VERSION ${CURL_MAJOR_VERSION}.${CURL_MINOR_VERSION}.${CURL_PATCH_VERSION})
 message(STATUS "curl version=[${CURL_VERSION}]")
 # SET(PACKAGE_TARNAME "curl")
 # SET(PACKAGE_NAME "curl")
 message(STATUS "curl version=[${CURL_VERSION}]")
 # SET(PACKAGE_TARNAME "curl")
 # SET(PACKAGE_NAME "curl")
@@ -60,12 +74,17 @@ include_directories( ${CURL_SOURCE_DIR}/include )
 option(BUILD_CURL_EXE "Set to ON to build cURL executable." ON)
 option(BUILD_CURL_TESTS "Set to ON to build cURL tests." ON)
 option(CURL_STATICLIB "Set to ON to build libcurl with static linking." OFF)
 option(BUILD_CURL_EXE "Set to ON to build cURL executable." ON)
 option(BUILD_CURL_TESTS "Set to ON to build cURL tests." ON)
 option(CURL_STATICLIB "Set to ON to build libcurl with static linking." OFF)
-option(CURL_USE_ARES "Set to ON to enable c-ares support" OFF)
+option(ENABLE_ARES "Set to ON to enable c-ares support" OFF)
+option(ENABLE_THREADED_RESOLVER "Set to ON to enable POSIX threaded DNS lookup" OFF)
 # initialize CURL_LIBS
 set(CURL_LIBS "")
 
 # initialize CURL_LIBS
 set(CURL_LIBS "")
 
-if(CURL_USE_ARES)
-  set(USE_ARES ${CURL_USE_ARES})
+if(ENABLE_THREADED_RESOLVER AND ENABLE_ARES)
+  message(FATAL_ERROR "Options ENABLE_THREADED_RESOLVER and ENABLE_ARES are mutually exclusive")
+endif()
+
+if(ENABLE_ARES)
+  set(USE_ARES 1)
   find_package(CARES REQUIRED)
   list(APPEND CURL_LIBS ${CARES_LIBRARY} )
   set(CURL_LIBS ${CURL_LIBS} ${CARES_LIBRARY})
   find_package(CARES REQUIRED)
   list(APPEND CURL_LIBS ${CARES_LIBRARY} )
   set(CURL_LIBS ${CURL_LIBS} ${CARES_LIBRARY})
@@ -110,6 +129,19 @@ mark_as_advanced(CURL_DISABLE_HTTP)
 option(CURL_DISABLE_LDAPS "to disable LDAPS" OFF)
 mark_as_advanced(CURL_DISABLE_LDAPS)
 
 option(CURL_DISABLE_LDAPS "to disable LDAPS" OFF)
 mark_as_advanced(CURL_DISABLE_LDAPS)
 
+option(CURL_DISABLE_RTSP "to disable RTSP" OFF)
+mark_as_advanced(CURL_DISABLE_RTSP)
+option(CURL_DISABLE_PROXY "to disable proxy" OFF)
+mark_as_advanced(CURL_DISABLE_PROXY)
+option(CURL_DISABLE_POP3 "to disable POP3" OFF)
+mark_as_advanced(CURL_DISABLE_POP3)
+option(CURL_DISABLE_IMAP "to disable IMAP" OFF)
+mark_as_advanced(CURL_DISABLE_IMAP)
+option(CURL_DISABLE_SMTP "to disable SMTP" OFF)
+mark_as_advanced(CURL_DISABLE_SMTP)
+option(CURL_DISABLE_GOPHER "to disable Gopher" OFF)
+mark_as_advanced(CURL_DISABLE_GOPHER)
+
 if(HTTP_ONLY)
   set(CURL_DISABLE_FTP ON)
   set(CURL_DISABLE_LDAP ON)
 if(HTTP_ONLY)
   set(CURL_DISABLE_FTP ON)
   set(CURL_DISABLE_LDAP ON)
@@ -118,6 +150,11 @@ if(HTTP_ONLY)
   set(CURL_DISABLE_DICT ON)
   set(CURL_DISABLE_FILE ON)
   set(CURL_DISABLE_TFTP ON)
   set(CURL_DISABLE_DICT ON)
   set(CURL_DISABLE_FILE ON)
   set(CURL_DISABLE_TFTP ON)
+  set(CURL_DISABLE_RTSP ON)
+  set(CURL_DISABLE_POP3 ON)
+  set(CURL_DISABLE_IMAP ON)
+  set(CURL_DISABLE_SMTP ON)
+  set(CURL_DISABLE_GOPHER ON)
 endif()
 
 option(CURL_DISABLE_COOKIES "to disable cookies support" OFF)
 endif()
 
 option(CURL_DISABLE_COOKIES "to disable cookies support" OFF)
@@ -129,9 +166,52 @@ option(CURL_DISABLE_VERBOSE_STRINGS "to disable verbose strings" OFF)
 mark_as_advanced(CURL_DISABLE_VERBOSE_STRINGS)
 option(DISABLED_THREADSAFE "Set to explicitly specify we don't want to use thread-safe functions" OFF)
 mark_as_advanced(DISABLED_THREADSAFE)
 mark_as_advanced(CURL_DISABLE_VERBOSE_STRINGS)
 option(DISABLED_THREADSAFE "Set to explicitly specify we don't want to use thread-safe functions" OFF)
 mark_as_advanced(DISABLED_THREADSAFE)
-option(ENABLE_IPV6 "Define if you want to enable IPv6 support" OFF)
+option(ENABLE_IPV6 "Define if you want to enable IPv6 support" ON)
 mark_as_advanced(ENABLE_IPV6)
 mark_as_advanced(ENABLE_IPV6)
+if(ENABLE_IPV6)
+  include(CheckStructHasMember)
+  check_struct_has_member("struct sockaddr_in6" sin6_addr "netinet/in.h"
+                          HAVE_SOCKADDR_IN6_SIN6_ADDR)
+  check_struct_has_member("struct sockaddr_in6" sin6_scope_id "netinet/in.h"
+                          HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID)
+  if(NOT HAVE_SOCKADDR_IN6_SIN6_ADDR)
+    message(WARNING "struct sockaddr_in6 not available, disabling IPv6 support")
+    # Force the feature off as this name is used as guard macro...
+    set(ENABLE_IPV6 OFF
+        CACHE BOOL "Define if you want to enable IPv6 support" FORCE)
+  endif()
+endif()
 
 
+option(ENABLE_MANUAL "to provide the built-in manual" ON)
+unset(USE_MANUAL CACHE) # TODO: cache NROFF/NROFF_MANOPT/USE_MANUAL vars?
+if(ENABLE_MANUAL)
+  find_program(NROFF NAMES gnroff nroff)
+  if(NROFF)
+    # Need a way to write to stdin, this will do
+    file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/nroff-input.txt" "test")
+    # Tests for a valid nroff option to generate a manpage
+    foreach(_MANOPT "-man" "-mandoc")
+      execute_process(COMMAND "${NROFF}" ${_MANOPT}
+        OUTPUT_VARIABLE NROFF_MANOPT_OUTPUT
+        INPUT_FILE "${CMAKE_CURRENT_BINARY_DIR}/nroff-input.txt"
+        ERROR_QUIET)
+      # Save the option if it was valid
+      if(NROFF_MANOPT_OUTPUT)
+        message("Found *nroff option: -- ${_MANOPT}")
+        set(NROFF_MANOPT ${_MANOPT})
+        set(USE_MANUAL 1)
+        break()
+      endif()
+    endforeach()
+    # No need for the temporary file
+    file(REMOVE "${CMAKE_CURRENT_BINARY_DIR}/nroff-input.txt")
+    if(NOT USE_MANUAL)
+      message(WARNING "Found no *nroff option to get plaintext from man pages")
+    endif()
+  else()
+    message(WARNING "Found no *nroff program")
+  endif()
+endif()
 
 # We need ansi c-flags, especially on HP
 set(CMAKE_C_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_C_FLAGS}")
 
 # We need ansi c-flags, especially on HP
 set(CMAKE_C_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_C_FLAGS}")
@@ -154,21 +234,24 @@ include (CheckIncludeFiles)
 include (CheckLibraryExists)
 include (CheckSymbolExists)
 include (CheckTypeSize)
 include (CheckLibraryExists)
 include (CheckSymbolExists)
 include (CheckTypeSize)
+include (CheckCSourceCompiles)
 
 # On windows preload settings
 if(WIN32)
   include(${CMAKE_CURRENT_SOURCE_DIR}/CMake/Platforms/WindowsCache.cmake)
 endif(WIN32)
 
 
 # On windows preload settings
 if(WIN32)
   include(${CMAKE_CURRENT_SOURCE_DIR}/CMake/Platforms/WindowsCache.cmake)
 endif(WIN32)
 
-# This macro checks if the symbol exists in the library and if it
-# does, it prepends library to the list.
-macro(CHECK_LIBRARY_EXISTS_CONCAT LIBRARY SYMBOL VARIABLE)
-  check_library_exists("${LIBRARY};${CURL_LIBS}" ${SYMBOL} "${CMAKE_LIBRARY_PATH}"
-    ${VARIABLE})
-  if(${VARIABLE})
-    set(CURL_LIBS ${LIBRARY} ${CURL_LIBS})
-  endif(${VARIABLE})
-endmacro(CHECK_LIBRARY_EXISTS_CONCAT)
+if(ENABLE_THREADED_RESOLVER)
+  check_include_file_concat("pthread.h" HAVE_PTHREAD_H)
+  if(HAVE_PTHREAD_H)
+    set(CMAKE_THREAD_PREFER_PTHREAD 1)
+    find_package(Threads)
+    if(CMAKE_USE_PTHREADS_INIT)
+      set(CURL_LIBS ${CURL_LIBS} ${CMAKE_THREAD_LIBS_INIT})
+      set(USE_THREADS_POSIX 1)
+    endif()
+  endif()
+endif()
 
 # Check for all needed libraries
 check_library_exists_concat("dl"     dlopen       HAVE_LIBDL)
 
 # Check for all needed libraries
 check_library_exists_concat("dl"     dlopen       HAVE_LIBDL)
@@ -186,89 +269,271 @@ if(NOT NOT_NEED_LIBNSL)
   check_library_exists_concat("nsl"    gethostbyname  HAVE_LIBNSL)
 endif(NOT NOT_NEED_LIBNSL)
 
   check_library_exists_concat("nsl"    gethostbyname  HAVE_LIBNSL)
 endif(NOT NOT_NEED_LIBNSL)
 
-check_library_exists_concat("ws2_32" getch        HAVE_LIBWS2_32)
-check_library_exists_concat("winmm"  getch        HAVE_LIBWINMM)
-check_library_exists("wldap32" cldap_open "" HAVE_WLDAP32)
+check_function_exists(gethostname HAVE_GETHOSTNAME)
 
 if(WIN32)
 
 if(WIN32)
-  set(CURL_DEFAULT_DISABLE_LDAP OFF)
-  # some windows compilers do not have wldap32
-  if(NOT HAVE_WLDAP32)
+  check_library_exists_concat("ws2_32" getch        HAVE_LIBWS2_32)
+  check_library_exists_concat("winmm"  getch        HAVE_LIBWINMM)
+endif()
+
+option(CMAKE_USE_OPENSSL "Use OpenSSL code. Experimental" ON)
+mark_as_advanced(CMAKE_USE_OPENSSL)
+
+set(USE_SSLEAY OFF)
+set(USE_OPENSSL OFF)
+set(HAVE_LIBCRYPTO OFF)
+set(HAVE_LIBSSL OFF)
+
+if(CMAKE_USE_OPENSSL)
+  find_package(OpenSSL)
+  if(OPENSSL_FOUND)
+    list(APPEND CURL_LIBS ${OPENSSL_LIBRARIES})
+    set(USE_SSLEAY ON)
+    set(USE_OPENSSL ON)
+    set(HAVE_LIBCRYPTO ON)
+    set(HAVE_LIBSSL ON)
+    include_directories(${OPENSSL_INCLUDE_DIR})
+    set(CMAKE_REQUIRED_INCLUDES ${OPENSSL_INCLUDE_DIR})
+    check_include_file_concat("openssl/crypto.h" HAVE_OPENSSL_CRYPTO_H)
+    check_include_file_concat("openssl/engine.h" HAVE_OPENSSL_ENGINE_H)
+    check_include_file_concat("openssl/err.h"    HAVE_OPENSSL_ERR_H)
+    check_include_file_concat("openssl/pem.h"    HAVE_OPENSSL_PEM_H)
+    check_include_file_concat("openssl/pkcs12.h" HAVE_OPENSSL_PKCS12_H)
+    check_include_file_concat("openssl/rsa.h"    HAVE_OPENSSL_RSA_H)
+    check_include_file_concat("openssl/ssl.h"    HAVE_OPENSSL_SSL_H)
+    check_include_file_concat("openssl/x509.h"   HAVE_OPENSSL_X509_H)
+    check_include_file_concat("openssl/rand.h"   HAVE_OPENSSL_RAND_H)
+  endif()
+endif()
+
+if(NOT CURL_DISABLE_LDAP)
+
+  if(WIN32)
+    option(CURL_LDAP_WIN "Use Windows LDAP implementation" ON)
+    if(CURL_LDAP_WIN)
+      check_library_exists("wldap32" cldap_open "" HAVE_WLDAP32)
+      if(NOT HAVE_WLDAP32)
+        set(CURL_LDAP_WIN OFF)
+      endif()
+    endif()
+  endif()
+
+  option(CMAKE_USE_OPENLDAP "Use OpenLDAP code." OFF)
+  mark_as_advanced(CMAKE_USE_OPENLDAP)
+  set(CMAKE_LDAP_LIB "ldap" CACHE STRING "Name or full path to ldap library")
+  set(CMAKE_LBER_LIB "lber" CACHE STRING "Name or full path to lber library")
+
+  if(CMAKE_USE_OPENLDAP AND CURL_LDAP_WIN)
+    message(FATAL_ERROR "Cannot use CURL_LDAP_WIN and CMAKE_USE_OPENLDAP at the same time")
+  endif()
+  
+  # Now that we know, we're not using windows LDAP...
+  if(NOT CURL_LDAP_WIN)
+    # Check for LDAP
+    set(CMAKE_REQUIRED_LIBRARIES ${OPENSSL_LIBRARIES})
+    check_library_exists_concat(${CMAKE_LDAP_LIB} ldap_init HAVE_LIBLDAP)
+    check_library_exists_concat(${CMAKE_LBER_LIB} ber_init HAVE_LIBLBER)
+  else()
+    check_include_file_concat("winldap.h" HAVE_WINLDAP_H)
+    check_include_file_concat("winber.h"  HAVE_WINBER_H)
+  endif()
+  
+  set(CMAKE_LDAP_INCLUDE_DIR "" CACHE STRING "Path to LDAP include directory")
+  if(CMAKE_LDAP_INCLUDE_DIR)
+    set(CMAKE_REQUIRED_INCLUDES ${CMAKE_LDAP_INCLUDE_DIR})
+  endif()
+  check_include_file_concat("ldap.h"           HAVE_LDAP_H)
+  check_include_file_concat("lber.h"           HAVE_LBER_H)
+
+  if(NOT HAVE_LDAP_H)
+    message(STATUS "LDAP_H not found CURL_DISABLE_LDAP set ON")
+    set(CURL_DISABLE_LDAP ON CACHE BOOL "" FORCE)
+  elseif(NOT HAVE_LIBLDAP)
+    message(STATUS "LDAP library '${CMAKE_LDAP_LIB}' not found CURL_DISABLE_LDAP set ON")
     set(CURL_DISABLE_LDAP ON CACHE BOOL "" FORCE)
     set(CURL_DISABLE_LDAP ON CACHE BOOL "" FORCE)
-    message(STATUS "wldap32 not found CURL_DISABLE_LDAP set ON")
-    option(CURL_LDAP_WIN "Use Windows LDAP implementation" OFF)
   else()
   else()
-    option(CURL_LDAP_WIN "Use Windows LDAP implementation" ON)
+    if(CMAKE_USE_OPENLDAP)
+      set(USE_OPENLDAP ON)
+    endif()
+    if(CMAKE_LDAP_INCLUDE_DIR)
+      include_directories(${CMAKE_LDAP_INCLUDE_DIR})
+    endif()
+    set(NEED_LBER_H ON)
+    set(_HEADER_LIST)
+    if(HAVE_WINDOWS_H)
+      list(APPEND _HEADER_LIST "windows.h")
+    endif()
+    if(HAVE_SYS_TYPES_H)
+      list(APPEND _HEADER_LIST "sys/types.h")
+    endif()
+    list(APPEND _HEADER_LIST "ldap.h")
+
+    set(_SRC_STRING "")
+    foreach(_HEADER ${_HEADER_LIST})
+      set(_INCLUDE_STRING "${_INCLUDE_STRING}#include <${_HEADER}>\n")
+    endforeach()
+
+    set(_SRC_STRING
+      "
+      ${_INCLUDE_STRING}
+      int main(int argc, char ** argv)
+      {
+        BerValue *bvp = NULL;
+        BerElement *bep = ber_init(bvp);
+        ber_free(bep, 1);
+        return 0;
+      }"
+    )
+    set(CMAKE_REQUIRED_DEFINITIONS "-DLDAP_DEPRECATED=1" "-DWIN32_LEAN_AND_MEAN")
+    list(APPEND CMAKE_REQUIRED_LIBRARIES ${CMAKE_LDAP_LIB})
+    if(HAVE_LIBLBER)
+      list(APPEND CMAKE_REQUIRED_LIBRARIES ${CMAKE_LBER_LIB})
+    endif()
+    check_c_source_compiles("${_SRC_STRING}" NOT_NEED_LBER_H)
+
+    if(NOT_NEED_LBER_H)
+      set(NEED_LBER_H OFF)
+    else()
+      set(CURL_TEST_DEFINES "${CURL_TEST_DEFINES} -DNEED_LBER_H")
+    endif()
   endif()
   endif()
-  mark_as_advanced(CURL_LDAP_WIN)
+
 endif()
 
 endif()
 
+# No ldap, no ldaps.
+if(CURL_DISABLE_LDAP)
+  if(NOT CURL_DISABLE_LDAPS)
+    message(STATUS "LDAP needs to be enabled to support LDAPS")
+    set(CURL_DISABLE_LDAPS ON CACHE BOOL "" FORCE)
+  endif()
+endif()
 
 
-# IF(NOT CURL_SPECIAL_LIBZ)
-#  CHECK_LIBRARY_EXISTS_CONCAT("z"      inflateEnd   HAVE_LIBZ)
-# ENDIF(NOT CURL_SPECIAL_LIBZ)
+if(NOT CURL_DISABLE_LDAPS)
+  check_include_file_concat("ldap_ssl.h" HAVE_LDAP_SSL_H)
+  check_include_file_concat("ldapssl.h"  HAVE_LDAPSSL_H)
+endif()
 
 # Check for idn
 check_library_exists_concat("idn" idna_to_ascii_lz HAVE_LIBIDN)
 
 
 # Check for idn
 check_library_exists_concat("idn" idna_to_ascii_lz HAVE_LIBIDN)
 
-# Check for LDAP
-check_library_exists_concat("ldap" ldap_init HAVE_LIBLDAP)
-# if(NOT HAVE_LIBLDAP)
-# SET(CURL_DISABLE_LDAP ON)
-# endif(NOT HAVE_LIBLDAP)
-
 # Check for symbol dlopen (same as HAVE_LIBDL)
 check_library_exists("${CURL_LIBS}" dlopen "" HAVE_DLOPEN)
 
 # Check for symbol dlopen (same as HAVE_LIBDL)
 check_library_exists("${CURL_LIBS}" dlopen "" HAVE_DLOPEN)
 
-# For other tests to use the same libraries
-set(CMAKE_REQUIRED_LIBRARIES ${CURL_LIBS})
-
 option(CURL_ZLIB "Set to ON to enable building cURL with zlib support." ON)
 set(HAVE_LIBZ OFF)
 set(HAVE_ZLIB_H OFF)
 set(HAVE_ZLIB OFF)
 option(CURL_ZLIB "Set to ON to enable building cURL with zlib support." ON)
 set(HAVE_LIBZ OFF)
 set(HAVE_ZLIB_H OFF)
 set(HAVE_ZLIB OFF)
-if(CURL_ZLIB)  # AND CURL_CONFIG_HAS_BEEN_RUN_BEFORE
+if(CURL_ZLIB)
   find_package(ZLIB QUIET)
   if(ZLIB_FOUND)
     set(HAVE_ZLIB_H ON)
     set(HAVE_ZLIB ON)
     set(HAVE_LIBZ ON)
     list(APPEND CURL_LIBS ${ZLIB_LIBRARIES})
   find_package(ZLIB QUIET)
   if(ZLIB_FOUND)
     set(HAVE_ZLIB_H ON)
     set(HAVE_ZLIB ON)
     set(HAVE_LIBZ ON)
     list(APPEND CURL_LIBS ${ZLIB_LIBRARIES})
+    include_directories(${ZLIB_INCLUDE_DIRS})
   endif()
 endif()
 
   endif()
 endif()
 
-option(CMAKE_USE_OPENSSL "Use OpenSSL code. Experimental" ON)
-mark_as_advanced(CMAKE_USE_OPENSSL)
-if(CMAKE_USE_OPENSSL)
-
-  set(USE_SSLEAY OFF)
-  set(USE_OPENSSL OFF)
-  set(HAVE_LIBCRYPTO OFF)
-  set(HAVE_LIBSSL OFF)
-
-  find_package(OpenSSL)
-  if(OPENSSL_FOUND)
-    list(APPEND CURL_LIBS ${OPENSSL_LIBRARIES})
-    list(APPEND CMAKE_REQUIRED_INCLUDES ${OPENSSL_INCLUDE_DIR})
-    set(USE_SSLEAY ON)
-    set(USE_OPENSSL ON)
-    set(HAVE_LIBCRYPTO ON)
-    set(HAVE_LIBSSL ON)
-  endif(OPENSSL_FOUND)
-endif(CMAKE_USE_OPENSSL)
-
-# If we have features.h, then do the _BSD_SOURCE magic
-check_include_file("features.h"       HAVE_FEATURES_H)
+#libSSH2
+option(CMAKE_USE_LIBSSH2 "Use libSSH2" ON)
+mark_as_advanced(CMAKE_USE_LIBSSH2)
+set(USE_LIBSSH2 OFF)
+set(HAVE_LIBSSH2 OFF)
+set(HAVE_LIBSSH2_H OFF)
+
+if(CMAKE_USE_LIBSSH2)
+  find_package(LibSSH2)
+  if(LIBSSH2_FOUND)
+    list(APPEND CURL_LIBS ${LIBSSH2_LIBRARY})
+    set(CMAKE_REQUIRED_LIBRARIES ${LIBSSH2_LIBRARY})
+    set(CMAKE_REQUIRED_INCLUDES "${LIBSSH2_INCLUDE_DIR}")
+    include_directories("${LIBSSH2_INCLUDE_DIR}")
+    set(HAVE_LIBSSH2 ON)
+    set(USE_LIBSSH2 ON)
+
+    # find_package has already found the headers
+    set(HAVE_LIBSSH2_H ON)
+    set(CURL_INCLUDES ${CURL_INCLUDES} "${LIBSSH2_INCLUDE_DIR}/libssh2.h")
+    set(CURL_TEST_DEFINES "${CURL_TEST_DEFINES} -DHAVE_LIBSSH2_H")
+
+    # now check for specific libssh2 symbols as they were added in different versions
+    set(CMAKE_EXTRA_INCLUDE_FILES "libssh2.h")
+    check_function_exists(libssh2_version           HAVE_LIBSSH2_VERSION)
+    check_function_exists(libssh2_init              HAVE_LIBSSH2_INIT)
+    check_function_exists(libssh2_exit              HAVE_LIBSSH2_EXIT)
+    check_function_exists(libssh2_scp_send64        HAVE_LIBSSH2_SCP_SEND64)
+    check_function_exists(libssh2_session_handshake HAVE_LIBSSH2_SESSION_HANDSHAKE)
+    set(CMAKE_EXTRA_INCLUDE_FILES "")
+
+  endif(LIBSSH2_FOUND)
+endif(CMAKE_USE_LIBSSH2)
+
+option(CMAKE_USE_GSSAPI "Use GSSAPI implementation (right now only Heimdal is supported with CMake build)" OFF)
+mark_as_advanced(CMAKE_USE_GSSAPI)
+
+if(CMAKE_USE_GSSAPI)
+  find_package(GSS)
+
+  set(HAVE_GSS_API ${GSS_FOUND})
+  if(GSS_FOUND)
+
+    message(STATUS "Found ${GSS_FLAVOUR} GSSAPI version: \"${GSS_VERSION}\"")
+
+    set(CMAKE_REQUIRED_INCLUDES ${GSS_INCLUDE_DIR})
+    check_include_file_concat("gssapi/gssapi.h"  HAVE_GSSAPI_GSSAPI_H)
+    check_include_file_concat("gssapi/gssapi_generic.h" HAVE_GSSAPI_GSSAPI_GENERIC_H)
+    check_include_file_concat("gssapi/gssapi_krb5.h" HAVE_GSSAPI_GSSAPI_KRB5_H)
+
+    if(GSS_FLAVOUR STREQUAL "Heimdal")
+      set(HAVE_GSSHEIMDAL ON)
+    else() # MIT
+      set(HAVE_GSSMIT ON)
+      set(_INCLUDE_LIST "")
+      if(HAVE_GSSAPI_GSSAPI_H)
+        list(APPEND _INCLUDE_LIST "gssapi/gssapi.h")
+      endif()
+      if(HAVE_GSSAPI_GSSAPI_GENERIC_H)
+        list(APPEND _INCLUDE_LIST "gssapi/gssapi_generic.h")
+      endif()
+      if(HAVE_GSSAPI_GSSAPI_KRB5_H)
+        list(APPEND _INCLUDE_LIST "gssapi/gssapi_krb5.h")
+      endif()
+
+      string(REPLACE ";" " " _COMPILER_FLAGS_STR "${GSS_COMPILER_FLAGS}")
+      string(REPLACE ";" " " _LINKER_FLAGS_STR "${GSS_LINKER_FLAGS}")
+
+      foreach(_dir ${GSS_LINK_DIRECTORIES})
+        set(_LINKER_FLAGS_STR "${_LINKER_FLAGS_STR} -L\"${_dir}\"")
+      endforeach()
+
+      set(CMAKE_REQUIRED_FLAGS "${_COMPILER_FLAGS_STR} ${_LINKER_FLAGS_STR}")
+      set(CMAKE_REQUIRED_LIBRARIES ${GSS_LIBRARIES})
+      check_symbol_exists("GSS_C_NT_HOSTBASED_SERVICE" ${_INCLUDE_LIST} HAVE_GSS_C_NT_HOSTBASED_SERVICE)
+      if(NOT HAVE_GSS_C_NT_HOSTBASED_SERVICE)
+        set(HAVE_OLD_GSSMIT ON)
+      endif()
+
+    endif()
+
+    include_directories(${GSS_INCLUDE_DIR})
+    link_directories(${GSS_LINK_DIRECTORIES})
+    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GSS_COMPILER_FLAGS}")
+    set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${GSS_LINKER_FLAGS}")
+    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GSS_LINKER_FLAGS}")
+    list(APPEND CURL_LIBS ${GSS_LIBRARIES})
 
 
-# Check if header file exists and add it to the list.
-macro(CHECK_INCLUDE_FILE_CONCAT FILE VARIABLE)
-  check_include_files("${CURL_INCLUDES};${FILE}" ${VARIABLE})
-  if(${VARIABLE})
-    set(CURL_INCLUDES ${CURL_INCLUDES} ${FILE})
-    set(CURL_TEST_DEFINES "${CURL_TEST_DEFINES} -D${VARIABLE}")
-  endif(${VARIABLE})
-endmacro(CHECK_INCLUDE_FILE_CONCAT)
+  else()
+    message(WARNING "GSSAPI support has been requested but no supporting libraries found. Skipping.")
+  endif()
+endif()
 
 
+option(ENABLE_UNIX_SOCKETS "Define if you want Unix domain sockets support" ON)
+if(ENABLE_UNIX_SOCKETS)
+  include(CheckStructHasMember)
+  check_struct_has_member("struct sockaddr_un" sun_path "sys/un.h" USE_UNIX_SOCKETS)
+else()
+  unset(USE_UNIX_SOCKETS CACHE)
+endif()
 
 # Check for header files
 if(NOT UNIX)
 
 # Check for header files
 if(NOT UNIX)
@@ -305,32 +570,18 @@ check_include_file_concat("des.h"            HAVE_DES_H)
 check_include_file_concat("err.h"            HAVE_ERR_H)
 check_include_file_concat("errno.h"          HAVE_ERRNO_H)
 check_include_file_concat("fcntl.h"          HAVE_FCNTL_H)
 check_include_file_concat("err.h"            HAVE_ERR_H)
 check_include_file_concat("errno.h"          HAVE_ERRNO_H)
 check_include_file_concat("fcntl.h"          HAVE_FCNTL_H)
-check_include_file_concat("gssapi/gssapi.h"  HAVE_GSSAPI_GSSAPI_H)
-check_include_file_concat("gssapi/gssapi_generic.h" HAVE_GSSAPI_GSSAPI_GENERIC_H)
-check_include_file_concat("gssapi/gssapi_krb5.h" HAVE_GSSAPI_GSSAPI_KRB5_H)
 check_include_file_concat("idn-free.h"       HAVE_IDN_FREE_H)
 check_include_file_concat("ifaddrs.h"        HAVE_IFADDRS_H)
 check_include_file_concat("io.h"             HAVE_IO_H)
 check_include_file_concat("krb.h"            HAVE_KRB_H)
 check_include_file_concat("libgen.h"         HAVE_LIBGEN_H)
 check_include_file_concat("idn-free.h"       HAVE_IDN_FREE_H)
 check_include_file_concat("ifaddrs.h"        HAVE_IFADDRS_H)
 check_include_file_concat("io.h"             HAVE_IO_H)
 check_include_file_concat("krb.h"            HAVE_KRB_H)
 check_include_file_concat("libgen.h"         HAVE_LIBGEN_H)
-check_include_file_concat("libssh2.h"        HAVE_LIBSSH2_H)
 check_include_file_concat("limits.h"         HAVE_LIMITS_H)
 check_include_file_concat("locale.h"         HAVE_LOCALE_H)
 check_include_file_concat("net/if.h"         HAVE_NET_IF_H)
 check_include_file_concat("netdb.h"          HAVE_NETDB_H)
 check_include_file_concat("netinet/in.h"     HAVE_NETINET_IN_H)
 check_include_file_concat("netinet/tcp.h"    HAVE_NETINET_TCP_H)
 check_include_file_concat("limits.h"         HAVE_LIMITS_H)
 check_include_file_concat("locale.h"         HAVE_LOCALE_H)
 check_include_file_concat("net/if.h"         HAVE_NET_IF_H)
 check_include_file_concat("netdb.h"          HAVE_NETDB_H)
 check_include_file_concat("netinet/in.h"     HAVE_NETINET_IN_H)
 check_include_file_concat("netinet/tcp.h"    HAVE_NETINET_TCP_H)
-if(CMAKE_USE_OPENSSL AND OPENSSL_FOUND)
-  check_include_file_concat("openssl/crypto.h" HAVE_OPENSSL_CRYPTO_H)
-  check_include_file_concat("openssl/engine.h" HAVE_OPENSSL_ENGINE_H)
-  check_include_file_concat("openssl/err.h"    HAVE_OPENSSL_ERR_H)
-  check_include_file_concat("openssl/pem.h"    HAVE_OPENSSL_PEM_H)
-  check_include_file_concat("openssl/pkcs12.h" HAVE_OPENSSL_PKCS12_H)
-  check_include_file_concat("openssl/rsa.h"    HAVE_OPENSSL_RSA_H)
-  check_include_file_concat("openssl/ssl.h"    HAVE_OPENSSL_SSL_H)
-  check_include_file_concat("openssl/x509.h"   HAVE_OPENSSL_X509_H)
-  check_include_file_concat("openssl/rand.h"   HAVE_OPENSSL_RAND_H)
-endif(CMAKE_USE_OPENSSL AND OPENSSL_FOUND)
+
 check_include_file_concat("pem.h"            HAVE_PEM_H)
 check_include_file_concat("poll.h"           HAVE_POLL_H)
 check_include_file_concat("pwd.h"            HAVE_PWD_H)
 check_include_file_concat("pem.h"            HAVE_PEM_H)
 check_include_file_concat("poll.h"           HAVE_POLL_H)
 check_include_file_concat("pwd.h"            HAVE_PWD_H)
@@ -359,25 +610,13 @@ check_include_file_concat("stddef.h"         HAVE_STDDEF_H)
 check_include_file_concat("dlfcn.h"          HAVE_DLFCN_H)
 check_include_file_concat("malloc.h"         HAVE_MALLOC_H)
 check_include_file_concat("memory.h"         HAVE_MEMORY_H)
 check_include_file_concat("dlfcn.h"          HAVE_DLFCN_H)
 check_include_file_concat("malloc.h"         HAVE_MALLOC_H)
 check_include_file_concat("memory.h"         HAVE_MEMORY_H)
-check_include_file_concat("ldap.h"           HAVE_LDAP_H)
 check_include_file_concat("netinet/if_ether.h" HAVE_NETINET_IF_ETHER_H)
 check_include_file_concat("stdint.h"        HAVE_STDINT_H)
 check_include_file_concat("sockio.h"        HAVE_SOCKIO_H)
 check_include_file_concat("sys/utsname.h"   HAVE_SYS_UTSNAME_H)
 check_include_file_concat("idna.h"          HAVE_IDNA_H)
 
 check_include_file_concat("netinet/if_ether.h" HAVE_NETINET_IF_ETHER_H)
 check_include_file_concat("stdint.h"        HAVE_STDINT_H)
 check_include_file_concat("sockio.h"        HAVE_SOCKIO_H)
 check_include_file_concat("sys/utsname.h"   HAVE_SYS_UTSNAME_H)
 check_include_file_concat("idna.h"          HAVE_IDNA_H)
 
-if(NOT HAVE_LDAP_H)
-  message(STATUS "LDAP_H not found CURL_DISABLE_LDAP set ON")
-  set(CURL_DISABLE_LDAP ON CACHE BOOL "" FORCE)
-endif()
 
 
-# No ldap, no ldaps.
-if(CURL_DISABLE_LDAP)
-  if(NOT CURL_DISABLE_LDAPS)
-    message(STATUS "LDAP needs to be enabled to support LDAPS")
-    set(CURL_DISABLE_LDAPS ON CACHE BOOL "" FORCE)
-  endif()
-endif()
 
 check_type_size(size_t  SIZEOF_SIZE_T)
 check_type_size(ssize_t  SIZEOF_SSIZE_T)
 
 check_type_size(size_t  SIZEOF_SIZE_T)
 check_type_size(ssize_t  SIZEOF_SSIZE_T)
@@ -450,6 +689,12 @@ find_file(RANDOM_FILE urandom /dev)
 mark_as_advanced(RANDOM_FILE)
 
 # Check for some functions that are used
 mark_as_advanced(RANDOM_FILE)
 
 # Check for some functions that are used
+if(HAVE_LIBWS2_32)
+  set(CMAKE_REQUIRED_LIBRARIES ws2_32)
+elseif(HAVE_LIBSOCKET)
+  set(CMAKE_REQUIRED_LIBRARIES socket)
+endif()
+
 check_symbol_exists(basename      "${CURL_INCLUDES}" HAVE_BASENAME)
 check_symbol_exists(socket        "${CURL_INCLUDES}" HAVE_SOCKET)
 check_symbol_exists(poll          "${CURL_INCLUDES}" HAVE_POLL)
 check_symbol_exists(basename      "${CURL_INCLUDES}" HAVE_BASENAME)
 check_symbol_exists(socket        "${CURL_INCLUDES}" HAVE_SOCKET)
 check_symbol_exists(poll          "${CURL_INCLUDES}" HAVE_POLL)
@@ -513,6 +758,7 @@ check_symbol_exists(strerror_r     "${CURL_INCLUDES}" HAVE_STRERROR_R)
 check_symbol_exists(siginterrupt   "${CURL_INCLUDES}" HAVE_SIGINTERRUPT)
 check_symbol_exists(perror         "${CURL_INCLUDES}" HAVE_PERROR)
 check_symbol_exists(fork           "${CURL_INCLUDES}" HAVE_FORK)
 check_symbol_exists(siginterrupt   "${CURL_INCLUDES}" HAVE_SIGINTERRUPT)
 check_symbol_exists(perror         "${CURL_INCLUDES}" HAVE_PERROR)
 check_symbol_exists(fork           "${CURL_INCLUDES}" HAVE_FORK)
+check_symbol_exists(getaddrinfo    "${CURL_INCLUDES}" HAVE_GETADDRINFO)
 check_symbol_exists(freeaddrinfo   "${CURL_INCLUDES}" HAVE_FREEADDRINFO)
 check_symbol_exists(freeifaddrs    "${CURL_INCLUDES}" HAVE_FREEIFADDRS)
 check_symbol_exists(pipe           "${CURL_INCLUDES}" HAVE_PIPE)
 check_symbol_exists(freeaddrinfo   "${CURL_INCLUDES}" HAVE_FREEADDRINFO)
 check_symbol_exists(freeifaddrs    "${CURL_INCLUDES}" HAVE_FREEIFADDRS)
 check_symbol_exists(pipe           "${CURL_INCLUDES}" HAVE_PIPE)
@@ -551,75 +797,6 @@ if(NOT HAVE_STRICMP)
   set(HAVE_LDAP_URL_PARSE 1)
 endif(NOT HAVE_STRICMP)
 
   set(HAVE_LDAP_URL_PARSE 1)
 endif(NOT HAVE_STRICMP)
 
-# For other curl specific tests, use this macro.
-macro(CURL_INTERNAL_TEST CURL_TEST)
-  if("${CURL_TEST}" MATCHES "^${CURL_TEST}$")
-    set(MACRO_CHECK_FUNCTION_DEFINITIONS
-      "-D${CURL_TEST} ${CURL_TEST_DEFINES} ${CMAKE_REQUIRED_FLAGS}")
-    if(CMAKE_REQUIRED_LIBRARIES)
-      set(CURL_TEST_ADD_LIBRARIES
-        "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
-    endif(CMAKE_REQUIRED_LIBRARIES)
-
-    message(STATUS "Performing Curl Test ${CURL_TEST}")
-    try_compile(${CURL_TEST}
-      ${CMAKE_BINARY_DIR}
-      ${CMAKE_CURRENT_SOURCE_DIR}/CMake/CurlTests.c
-      CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
-      "${CURL_TEST_ADD_LIBRARIES}"
-      OUTPUT_VARIABLE OUTPUT)
-    if(${CURL_TEST})
-      set(${CURL_TEST} 1 CACHE INTERNAL "Curl test ${FUNCTION}")
-      message(STATUS "Performing Curl Test ${CURL_TEST} - Success")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-        "Performing Curl Test ${CURL_TEST} passed with the following output:\n"
-        "${OUTPUT}\n")
-    else(${CURL_TEST})
-      message(STATUS "Performing Curl Test ${CURL_TEST} - Failed")
-      set(${CURL_TEST} "" CACHE INTERNAL "Curl test ${FUNCTION}")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-        "Performing Curl Test ${CURL_TEST} failed with the following output:\n"
-        "${OUTPUT}\n")
-    endif(${CURL_TEST})
-  endif("${CURL_TEST}" MATCHES "^${CURL_TEST}$")
-endmacro(CURL_INTERNAL_TEST)
-
-macro(CURL_INTERNAL_TEST_RUN CURL_TEST)
-  if("${CURL_TEST}_COMPILE" MATCHES "^${CURL_TEST}_COMPILE$")
-    set(MACRO_CHECK_FUNCTION_DEFINITIONS
-      "-D${CURL_TEST} ${CMAKE_REQUIRED_FLAGS}")
-    if(CMAKE_REQUIRED_LIBRARIES)
-      set(CURL_TEST_ADD_LIBRARIES
-        "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
-    endif(CMAKE_REQUIRED_LIBRARIES)
-
-    message(STATUS "Performing Curl Test ${CURL_TEST}")
-    try_run(${CURL_TEST} ${CURL_TEST}_COMPILE
-      ${CMAKE_BINARY_DIR}
-      ${CMAKE_CURRENT_SOURCE_DIR}/CMake/CurlTests.c
-      CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
-      "${CURL_TEST_ADD_LIBRARIES}"
-      OUTPUT_VARIABLE OUTPUT)
-    if(${CURL_TEST}_COMPILE AND NOT ${CURL_TEST})
-      set(${CURL_TEST} 1 CACHE INTERNAL "Curl test ${FUNCTION}")
-      message(STATUS "Performing Curl Test ${CURL_TEST} - Success")
-    else(${CURL_TEST}_COMPILE AND NOT ${CURL_TEST})
-      message(STATUS "Performing Curl Test ${CURL_TEST} - Failed")
-      set(${CURL_TEST} "" CACHE INTERNAL "Curl test ${FUNCTION}")
-      file(APPEND "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log"
-        "Performing Curl Test ${CURL_TEST} failed with the following output:\n"
-        "${OUTPUT}")
-      if(${CURL_TEST}_COMPILE)
-        file(APPEND
-          "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log"
-          "There was a problem running this test\n")
-      endif(${CURL_TEST}_COMPILE)
-      file(APPEND "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log"
-        "\n\n")
-    endif(${CURL_TEST}_COMPILE AND NOT ${CURL_TEST})
-  endif("${CURL_TEST}_COMPILE" MATCHES "^${CURL_TEST}_COMPILE$")
-endmacro(CURL_INTERNAL_TEST_RUN)
-
 # Do curl specific tests
 foreach(CURL_TEST
     HAVE_FCNTL_O_NONBLOCK
 # Do curl specific tests
 foreach(CURL_TEST
     HAVE_FCNTL_O_NONBLOCK
@@ -783,6 +960,17 @@ else()
   set(CURL_SIZEOF_CURL_SOCKLEN_T ${SIZEOF_INT})
 endif()
 
   set(CURL_SIZEOF_CURL_SOCKLEN_T ${SIZEOF_INT})
 endif()
 
+# TODO test which of these headers are required for the typedefs used in curlbuild.h
+if(WIN32)
+  set(CURL_PULL_WS2TCPIP_H ${HAVE_WS2TCPIP_H})
+else()
+  set(CURL_PULL_SYS_TYPES_H ${HAVE_SYS_TYPES_H})
+  set(CURL_PULL_SYS_SOCKET_H ${HAVE_SYS_SOCKET_H})
+  set(CURL_PULL_SYS_POLL_H ${HAVE_SYS_POLL_H})
+endif()
+set(CURL_PULL_STDINT_H ${HAVE_STDINT_H})
+set(CURL_PULL_INTTYPES_H ${HAVE_INTTYPES_H})
+
 include(CMake/OtherTests.cmake)
 
 add_definitions(-DHAVE_CONFIG_H)
 include(CMake/OtherTests.cmake)
 
 add_definitions(-DHAVE_CONFIG_H)
@@ -796,24 +984,6 @@ if(MSVC)
   add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE)
 endif(MSVC)
 
   add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE)
 endif(MSVC)
 
-# Sets up the dependencies (zlib, OpenSSL, etc.) of a cURL subproject according to options.
-# TODO This is far to be complete!
-function(SETUP_CURL_DEPENDENCIES TARGET_NAME)
-  if(CURL_ZLIB AND ZLIB_FOUND)
-    include_directories(${ZLIB_INCLUDE_DIR})
-    #ADD_DEFINITIONS( -DHAVE_ZLIB_H -DHAVE_ZLIB -DHAVE_LIBZ )
-  endif()
-
-  if(CMAKE_USE_OPENSSL AND OPENSSL_FOUND)
-    include_directories(${OPENSSL_INCLUDE_DIR})
-  endif()
-  if(CMAKE_USE_OPENSSL AND CURL_CONFIG_HAS_BEEN_RUN_BEFORE)
-    #ADD_DEFINITIONS( -DUSE_SSLEAY )
-  endif()
-
-  target_link_libraries(${TARGET_NAME} ${CURL_LIBS})
-endfunction()
-
 # Ugly (but functional) way to include "Makefile.inc" by transforming it (= regenerate it).
 function(TRANSFORM_MAKEFILE_INC INPUT_FILE OUTPUT_FILE)
   file(READ ${INPUT_FILE} MAKEFILE_INC_TEXT)
 # Ugly (but functional) way to include "Makefile.inc" by transforming it (= regenerate it).
 function(TRANSFORM_MAKEFILE_INC INPUT_FILE OUTPUT_FILE)
   file(READ ${INPUT_FILE} MAKEFILE_INC_TEXT)
@@ -838,6 +1008,133 @@ if(BUILD_CURL_TESTS)
   add_subdirectory(tests)
 endif()
 
   add_subdirectory(tests)
 endif()
 
+# TODO support GNUTLS, NSS, POLARSSL, AXTLS, CYASSL, WINSSL, DARWINSSL
+if(USE_OPENSSL)
+  set(SSL_ENABLED 1)
+endif()
+
+# Helper to populate a list (_items) with a label when conditions (the remaining
+# args) are satisfied
+function(_add_if label)
+  # TODO need to disable policy CMP0054 (CMake 3.1) to allow this indirection
+  if(${ARGN})
+    set(_items ${_items} "${label}" PARENT_SCOPE)
+  endif()
+endfunction()
+
+# Clear list and try to detect available features
+set(_items)
+_add_if("SSL"           SSL_ENABLED)
+_add_if("IPv6"          ENABLE_IPV6)
+_add_if("unix-sockets"  USE_UNIX_SOCKETS)
+_add_if("libz"          HAVE_LIBZ)
+_add_if("AsynchDNS"     USE_ARES OR USE_THREADS_POSIX)
+_add_if("IDN"           HAVE_LIBIDN)
+# TODO SSP1 (WinSSL) check is missing
+_add_if("SSPI"          USE_WINDOWS_SSPI)
+_add_if("GSS-API"       HAVE_GSS_API)
+# TODO SSP1 missing for SPNEGO
+_add_if("SPNEGO"        NOT CURL_DISABLE_CRYPTO_AUTH AND
+                        (HAVE_GSS_API OR USE_WINDOWS_SSPI))
+_add_if("Kerberos"      NOT CURL_DISABLE_CRYPTO_AUTH AND
+                        (HAVE_GSS_API OR USE_WINDOWS_SSPI))
+# NTLM support requires crypto function adaptions from various SSL libs
+# TODO alternative SSL libs tests for SSP1, GNUTLS, NSS, DARWINSSL
+if(NOT CURL_DISABLE_CRYPTO_AUTH AND (USE_OPENSSL OR
+   USE_WINDOWS_SSPI OR GNUTLS_ENABLED OR NSS_ENABLED OR DARWINSSL_ENABLED))
+  _add_if("NTLM"        1)
+  # TODO missing option (autoconf: --enable-ntlm-wb)
+  _add_if("NTLM_WB"     NOT CURL_DISABLE_HTTP AND NTLM_WB_ENABLED)
+endif()
+# TODO missing option (--enable-tls-srp), depends on GNUTLS_SRP/OPENSSL_SRP
+_add_if("TLS-SRP"       USE_TLS_SRP)
+# TODO option --with-nghttp2 tests for nghttp2 lib and nghttp2/nghttp2.h header
+_add_if("HTTP2"         USE_NGHTTP2)
+string(REPLACE ";" " " SUPPORT_FEATURES "${_items}")
+message(STATUS "Enabled features: ${SUPPORT_FEATURES}")
+
+# Clear list and try to detect available protocols
+set(_items)
+_add_if("HTTP"          NOT CURL_DISABLE_HTTP)
+_add_if("HTTPS"         NOT CURL_DISABLE_HTTP AND SSL_ENABLED)
+_add_if("FTP"           NOT CURL_DISABLE_FTP)
+_add_if("FTPS"          NOT CURL_DISABLE_FTP AND SSL_ENABLED)
+_add_if("FILE"          NOT CURL_DISABLE_FILE)
+_add_if("TELNET"        NOT CURL_DISABLE_TELNET)
+_add_if("LDAP"          NOT CURL_DISABLE_LDAP)
+# CURL_DISABLE_LDAP implies CURL_DISABLE_LDAPS
+# TODO check HAVE_LDAP_SSL (in autoconf this is enabled with --enable-ldaps)
+_add_if("LDAPS"         NOT CURL_DISABLE_LDAPS AND
+                        ((USE_OPENLDAP AND SSL_ENABLED) OR
+                        (NOT USE_OPENLDAP AND HAVE_LDAP_SSL)))
+_add_if("DICT"          NOT CURL_DISABLE_DICT)
+_add_if("TFTP"          NOT CURL_DISABLE_TFTP)
+_add_if("GOPHER"        NOT CURL_DISABLE_GOPHER)
+_add_if("POP3"          NOT CURL_DISABLE_POP3)
+_add_if("POP3S"         NOT CURL_DISABLE_POP3 AND SSL_ENABLED)
+_add_if("IMAP"          NOT CURL_DISABLE_IMAP)
+_add_if("IMAPS"         NOT CURL_DISABLE_IMAP AND SSL_ENABLED)
+_add_if("SMTP"          NOT CURL_DISABLE_SMTP)
+_add_if("SMTPS"         NOT CURL_DISABLE_SMTP AND SSL_ENABLED)
+_add_if("SCP"           USE_LIBSSH2)
+_add_if("SFTP"          USE_LIBSSH2)
+_add_if("RTSP"          NOT CURL_DISABLE_RTSP)
+_add_if("RTMP"          USE_LIBRTMP)
+list(SORT _items)
+string(REPLACE ";" " " SUPPORT_PROTOCOLS "${_items}")
+message(STATUS "Enabled protocols: ${SUPPORT_PROTOCOLS}")
+
+# curl-config needs the following options to be set.
+set(CC                      "${CMAKE_C_COMPILER}")
+# TODO probably put a -D... options here?
+set(CONFIGURE_OPTIONS       "")
+# TODO when to set "-DCURL_STATICLIB" for CPPFLAG_CURL_STATICLIB?
+set(CPPFLAG_CURL_STATICLIB  "")
+# TODO need to set this (see CURL_CHECK_CA_BUNDLE in acinclude.m4)
+set(CURL_CA_BUNDLE          "")
+set(CURLVERSION             "${CURL_VERSION}")
+set(ENABLE_SHARED           "yes")
+if(CURL_STATICLIB)
+  # Broken: LIBCURL_LIBS below; .a lib is not built
+  message(WARNING "Static linking is broken!")
+  set(ENABLE_STATIC         "no")
+else()
+  set(ENABLE_STATIC         "no")
+endif()
+set(exec_prefix             "\${prefix}")
+set(includedir              "\${prefix}/include")
+set(LDFLAGS                 "${CMAKE_SHARED_LINKER_FLAGS}")
+set(LIBCURL_LIBS            "")
+set(libdir                  "${CMAKE_INSTALL_PREFIX}/lib")
+# TODO CURL_LIBS also contains absolute paths which don't work with static -l...
+foreach(_lib ${CMAKE_C_IMPLICIT_LINK_LIBRARIES} ${CURL_LIBS})
+  set(LIBCURL_LIBS          "${LIBCURL_LIBS} -l${_lib}")
+endforeach()
+# "a" (Linux) or "lib" (Windows)
+string(REPLACE "." "" libext "${CMAKE_STATIC_LIBRARY_SUFFIX}")
+set(prefix                  "${CMAKE_INSTALL_PREFIX}")
+# Set this to "yes" to append all libraries on which -lcurl is dependent
+set(REQUIRE_LIB_DEPS        "no")
+# SUPPORT_FEATURES
+# SUPPORT_PROTOCOLS
+set(VERSIONNUM              "${CURL_VERSION_NUM}")
+
+# Finally generate a "curl-config" matching this config
+configure_file("${CURL_SOURCE_DIR}/curl-config.in"
+               "${CURL_BINARY_DIR}/curl-config" @ONLY)
+install(FILES "${CMAKE_BINARY_DIR}/curl-config"
+        DESTINATION bin
+        PERMISSIONS
+          OWNER_READ OWNER_WRITE OWNER_EXECUTE
+          GROUP_READ GROUP_EXECUTE
+          WORLD_READ WORLD_EXECUTE)
+
+# Finally generate a pkg-config file matching this config
+configure_file("${CURL_SOURCE_DIR}/libcurl.pc.in"
+               "${CURL_BINARY_DIR}/libcurl.pc" @ONLY)
+install(FILES "${CMAKE_BINARY_DIR}/libcurl.pc"
+        DESTINATION lib/pkgconfig)
+
 # This needs to be run very last so other parts of the scripts can take advantage of this.
 if(NOT CURL_CONFIG_HAS_BEEN_RUN_BEFORE)
   set(CURL_CONFIG_HAS_BEEN_RUN_BEFORE 1 CACHE INTERNAL "Flag to track whether this is the first time running CMake or if CMake has been configured before")
 # This needs to be run very last so other parts of the scripts can take advantage of this.
 if(NOT CURL_CONFIG_HAS_BEEN_RUN_BEFORE)
   set(CURL_CONFIG_HAS_BEEN_RUN_BEFORE 1 CACHE INTERNAL "Flag to track whether this is the first time running CMake or if CMake has been configured before")
diff --git a/COPYING b/COPYING
index 85d122e..6b5d59f 100644 (file)
--- a/COPYING
+++ b/COPYING
@@ -1,6 +1,6 @@
 COPYRIGHT AND PERMISSION NOTICE
 
 COPYRIGHT AND PERMISSION NOTICE
 
-Copyright (c) 1996 - 2013, Daniel Stenberg, <daniel@haxx.se>.
+Copyright (c) 1996 - 2015, Daniel Stenberg, <daniel@haxx.se>.
 
 All rights reserved.
 
 
 All rights reserved.
 
index 3efb8eb..f0f50d8 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -130,29 +130,143 @@ vc-x64: $(VC)
        cd ..\src
        nmake /f Makefile.$(VC) MACHINE=x64 cfg=release
 
        cd ..\src
        nmake /f Makefile.$(VC) MACHINE=x64 cfg=release
 
+vc-sspi: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) cfg=release WINDOWS_SSPI=1
+       cd ..\src
+       nmake /f Makefile.$(VC) cfg=release WINDOWS_SSPI=1
+
+vc-x64-sspi: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release WINDOWS_SSPI=1
+       cd ..\src
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release WINDOWS_SSPI=1
+
+vc-idn: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) cfg=release USE_IDN=1
+       cd ..\src
+       nmake /f Makefile.$(VC) cfg=release USE_IDN=1
+
+vc-x64-idn: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release USE_IDN=1
+       cd ..\src
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release USE_IDN=1
+
+vc-idn-sspi: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) cfg=release USE_IDN=1 WINDOWS_SSPI=1
+       cd ..\src
+       nmake /f Makefile.$(VC) cfg=release USE_IDN=1 WINDOWS_SSPI=1
+
+vc-x64-idn-sspi: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release USE_IDN=1 WINDOWS_SSPI=1
+       cd ..\src
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release USE_IDN=1 WINDOWS_SSPI=1
+
 vc-zlib: $(VC)
        cd lib
        nmake /f Makefile.$(VC) cfg=release-zlib
        cd ..\src
        nmake /f Makefile.$(VC) cfg=release-zlib
 
 vc-zlib: $(VC)
        cd lib
        nmake /f Makefile.$(VC) cfg=release-zlib
        cd ..\src
        nmake /f Makefile.$(VC) cfg=release-zlib
 
+vc-x64-zlib: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-zlib
+       cd ..\src
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-zlib
+
+vc-zlib-sspi: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) cfg=release-zlib WINDOWS_SSPI=1
+       cd ..\src
+       nmake /f Makefile.$(VC) cfg=release-zlib WINDOWS_SSPI=1
+
+vc-x64-zlib-sspi: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-zlib WINDOWS_SSPI=1
+       cd ..\src
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-zlib WINDOWS_SSPI=1
+
+vc-zlib-idn: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) cfg=release-zlib USE_IDN=1
+       cd ..\src
+       nmake /f Makefile.$(VC) cfg=release-zlib USE_IDN=1
+
+vc-x64-zlib-idn: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-zlib USE_IDN=1
+       cd ..\src
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-zlib USE_IDN=1
+
+vc-zlib-idn-sspi: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) cfg=release-zlib USE_IDN=1 WINDOWS_SSPI=1
+       cd ..\src
+       nmake /f Makefile.$(VC) cfg=release-zlib USE_IDN=1 WINDOWS_SSPI=1
+
+vc-x64-zlib-idn-sspi: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-zlib USE_IDN=1 WINDOWS_SSPI=1
+       cd ..\src
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-zlib USE_IDN=1 WINDOWS_SSPI=1
+
 vc-ssl: $(VC)
        cd lib
        nmake /f Makefile.$(VC) cfg=release-ssl
        cd ..\src
        nmake /f Makefile.$(VC) cfg=release-ssl
 
 vc-ssl: $(VC)
        cd lib
        nmake /f Makefile.$(VC) cfg=release-ssl
        cd ..\src
        nmake /f Makefile.$(VC) cfg=release-ssl
 
-vc-ssl-zlib: $(VC)
+vc-x64-ssl: $(VC)
        cd lib
        cd lib
-       nmake /f Makefile.$(VC) cfg=release-ssl-zlib
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl
        cd ..\src
        cd ..\src
-       nmake /f Makefile.$(VC) cfg=release-ssl-zlib
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl
 
 
-vc-winssl-zlib: $(VC)
+vc-ssl-sspi: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) cfg=release-ssl WINDOWS_SSPI=1
+       cd ..\src
+       nmake /f Makefile.$(VC) cfg=release-ssl WINDOWS_SSPI=1
+
+vc-x64-ssl-sspi: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl WINDOWS_SSPI=1
+       cd ..\src
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl WINDOWS_SSPI=1
+
+vc-ssl-idn: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) cfg=release-ssl USE_IDN=1
+       cd ..\src
+       nmake /f Makefile.$(VC) cfg=release-ssl USE_IDN=1
+
+vc-x64-ssl-idn: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl USE_IDN=1
+       cd ..\src
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl USE_IDN=1
+
+vc-ssl-idn-sspi: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) cfg=release-ssl USE_IDN=1 WINDOWS_SSPI=1
+       cd ..\src
+       nmake /f Makefile.$(VC) cfg=release-ssl USE_IDN=1 WINDOWS_SSPI=1
+
+vc-x64-ssl-idn-sspi: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl USE_IDN=1 WINDOWS_SSPI=1
+       cd ..\src
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl USE_IDN=1 WINDOWS_SSPI=1
+
+vc-ssl-zlib: $(VC)
        cd lib
        cd lib
-       nmake /f Makefile.$(VC) cfg=release-winssl-zlib
+       nmake /f Makefile.$(VC) cfg=release-ssl-zlib
        cd ..\src
        cd ..\src
-       nmake /f Makefile.$(VC) cfg=release-winssl-zlib
+       nmake /f Makefile.$(VC) cfg=release-ssl-zlib
 
 vc-x64-ssl-zlib: $(VC)
        cd lib
 
 vc-x64-ssl-zlib: $(VC)
        cd lib
@@ -160,11 +274,137 @@ vc-x64-ssl-zlib: $(VC)
        cd ..\src
        nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-zlib
 
        cd ..\src
        nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-zlib
 
+vc-ssl-zlib-sspi: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) cfg=release-ssl-zlib WINDOWS_SSPI=1
+       cd ..\src
+       nmake /f Makefile.$(VC) cfg=release-ssl-zlib WINDOWS_SSPI=1
+
+vc-x64-ssl-zlib-sspi: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-zlib WINDOWS_SSPI=1
+       cd ..\src
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-zlib WINDOWS_SSPI=1
+
+vc-ssl-zlib-idn: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) cfg=release-ssl-zlib USE_IDN=1
+       cd ..\src
+       nmake /f Makefile.$(VC) cfg=release-ssl-zlib USE_IDN=1
+
+vc-x64-ssl-zlib-idn: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-zlib USE_IDN=1
+       cd ..\src
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-zlib USE_IDN=1
+
+vc-ssl-zlib-idn-sspi: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) cfg=release-ssl-zlib USE_IDN=1 WINDOWS_SSPI=1
+       cd ..\src
+       nmake /f Makefile.$(VC) cfg=release-ssl-zlib USE_IDN=1 WINDOWS_SSPI=1
+
+vc-x64-ssl-zlib-idn-sspi: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-zlib USE_IDN=1 WINDOWS_SSPI=1
+       cd ..\src
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-zlib USE_IDN=1 WINDOWS_SSPI=1
+
+vc-ssl-ssh2-zlib: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) cfg=release-ssl-ssh2-zlib
+       cd ..\src
+       nmake /f Makefile.$(VC) cfg=release-ssl-ssh2-zlib
+
+vc-x64-ssl-ssh2-zlib: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-ssh2-zlib
+       cd ..\src
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-ssh2-zlib
+
+vc-ssl-ssh2-zlib-sspi: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) cfg=release-ssl-ssh2-zlib WINDOWS_SSPI=1
+       cd ..\src
+       nmake /f Makefile.$(VC) cfg=release-ssl-ssh2-zlib WINDOWS_SSPI=1
+
+vc-x64-ssl-ssh2-zlib-sspi: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-ssh2-zlib WINDOWS_SSPI=1
+       cd ..\src
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-ssh2-zlib WINDOWS_SSPI=1
+
+vc-ssl-ssh2-zlib-idn: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) cfg=release-ssl-ssh2-zlib USE_IDN=1
+       cd ..\src
+       nmake /f Makefile.$(VC) cfg=release-ssl-ssh2-zlib USE_IDN=1
+
+vc-x64-ssl-ssh2-zlib-idn: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-ssh2-zlib USE_IDN=1
+       cd ..\src
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-ssh2-zlib USE_IDN=1
+
+vc-ssl-ssh2-zlib-idn-sspi: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) cfg=release-ssl-ssh2-zlib USE_IDN=1 WINDOWS_SSPI=1
+       cd ..\src
+       nmake /f Makefile.$(VC) cfg=release-ssl-ssh2-zlib USE_IDN=1 WINDOWS_SSPI=1
+
+vc-x64-ssl-ssh2-zlib-idn-sspi: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-ssh2-zlib USE_IDN=1 WINDOWS_SSPI=1
+       cd ..\src
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-ssh2-zlib USE_IDN=1 WINDOWS_SSPI=1
+
+vc-winssl: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) cfg=release-winssl WINDOWS_SSPI=1
+       cd ..\src
+       nmake /f Makefile.$(VC) cfg=release-winssl WINDOWS_SSPI=1
+
+vc-x64-winssl: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-winssl WINDOWS_SSPI=1
+       cd ..\src
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-winssl WINDOWS_SSPI=1
+
+vc-winssl-idn: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) cfg=release-winssl USE_IDN=1 WINDOWS_SSPI=1
+       cd ..\src
+       nmake /f Makefile.$(VC) cfg=release-winssl USE_IDN=1 WINDOWS_SSPI=1
+
+vc-x64-winssl-idn: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-winssl USE_IDN=1 WINDOWS_SSPI=1
+       cd ..\src
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-winssl USE_IDN=1 WINDOWS_SSPI=1
+
+vc-winssl-zlib: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) cfg=release-winssl-zlib WINDOWS_SSPI=1
+       cd ..\src
+       nmake /f Makefile.$(VC) cfg=release-winssl-zlib WINDOWS_SSPI=1
+
 vc-x64-winssl-zlib: $(VC)
        cd lib
 vc-x64-winssl-zlib: $(VC)
        cd lib
-       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-winssl-zlib
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-winssl-zlib WINDOWS_SSPI=1
        cd ..\src
        cd ..\src
-       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-winssl-zlib
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-winssl-zlib WINDOWS_SSPI=1
+
+vc-winssl-zlib-idn: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) cfg=release-winssl-zlib USE_IDN=1 WINDOWS_SSPI=1
+       cd ..\src
+       nmake /f Makefile.$(VC) cfg=release-winssl-zlib USE_IDN=1 WINDOWS_SSPI=1
+
+vc-x64-winssl-zlib-idn: $(VC)
+       cd lib
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-winssl-zlib USE_IDN=1 WINDOWS_SSPI=1
+       cd ..\src
+       nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-winssl-zlib USE_IDN=1 WINDOWS_SSPI=1
 
 vc-ssl-dll: $(VC)
        cd lib
 
 vc-ssl-dll: $(VC)
        cd lib
@@ -208,12 +448,6 @@ vc-zlib-dll: $(VC)
        cd ..\src
        nmake /f Makefile.$(VC) cfg=release-zlib-dll
 
        cd ..\src
        nmake /f Makefile.$(VC) cfg=release-zlib-dll
 
-vc-sspi: $(VC)
-       cd lib
-       nmake /f Makefile.$(VC) cfg=release WINDOWS_SSPI=1
-       cd ..\src
-       nmake /f Makefile.$(VC) cfg=release WINDOWS_SSPI=1
-
 djgpp:
        $(MAKE) -C lib -f Makefile.dj
        $(MAKE) -C src -f Makefile.dj
 djgpp:
        $(MAKE) -C lib -f Makefile.dj
        $(MAKE) -C src -f Makefile.dj
@@ -266,6 +500,18 @@ linux-ssl: ssl
 # We don't need to do anything for vc6.
 vc6:
 
 # We don't need to do anything for vc6.
 vc6:
 
+# VC7 makefiles are for use with VS.NET and VS.NET 2003
+vc7: lib/Makefile.vc7 src/Makefile.vc7
+
+lib/Makefile.vc7: lib/Makefile.vc6
+       @echo "generate $@"
+       @sed -e "s/VC6/VC7/g" lib/Makefile.vc6 > lib/Makefile.vc7
+
+src/Makefile.vc7: src/Makefile.vc6
+       @echo "generate $@"
+       @sed -e "s/VC6/VC7/g" src/Makefile.vc6 > src/Makefile.vc7
+
+# VC8 makefiles are for use with VS2005
 vc8: lib/Makefile.vc8 src/Makefile.vc8
 
 lib/Makefile.vc8: lib/Makefile.vc6
 vc8: lib/Makefile.vc8 src/Makefile.vc8
 
 lib/Makefile.vc8: lib/Makefile.vc6
@@ -298,6 +544,28 @@ src/Makefile.vc10: src/Makefile.vc6
        @echo "generate $@"
        @sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib/g" -e "s/vc6/vc10/g" -e "s/VC6/VC10/g" src/Makefile.vc6 > src/Makefile.vc10
 
        @echo "generate $@"
        @sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib/g" -e "s/vc6/vc10/g" -e "s/VC6/VC10/g" src/Makefile.vc6 > src/Makefile.vc10
 
+# VC11 makefiles are for use with VS2012
+vc11: lib/Makefile.vc11 src/Makefile.vc11
+
+lib/Makefile.vc11: lib/Makefile.vc6
+       @echo "generate $@"
+       @sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib/g" -e "s/vc6/vc11/g" -e "s/VC6/VC11/g" lib/Makefile.vc6 > lib/Makefile.vc11
+
+src/Makefile.vc11: src/Makefile.vc6
+       @echo "generate $@"
+       @sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib/g" -e "s/vc6/vc11/g" -e "s/VC6/VC11/g" src/Makefile.vc6 > src/Makefile.vc11
+
+# VC12 makefiles are for use with VS2013
+vc12: lib/Makefile.vc12 src/Makefile.vc12
+
+lib/Makefile.vc12: lib/Makefile.vc6
+       @echo "generate $@"
+       @sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib/g" -e "s/vc6/vc12/g" -e "s/VC6/VC12/g" lib/Makefile.vc6 > lib/Makefile.vc12
+
+src/Makefile.vc12: src/Makefile.vc6
+       @echo "generate $@"
+       @sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib/g" -e "s/vc6/vc12/g" -e "s/VC6/VC12/g" src/Makefile.vc6 > src/Makefile.vc12
+
 ca-bundle: lib/mk-ca-bundle.pl
        @echo "generate a fresh ca-bundle.crt"
        @perl $< -b -l -u lib/ca-bundle.crt
 ca-bundle: lib/mk-ca-bundle.pl
        @echo "generate a fresh ca-bundle.crt"
        @perl $< -b -l -u lib/ca-bundle.crt
index 608bd11..3b91e83 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -24,34 +24,94 @@ AUTOMAKE_OPTIONS = foreign
 
 ACLOCAL_AMFLAGS = -I m4
 
 
 ACLOCAL_AMFLAGS = -I m4
 
-CMAKE_DIST = CMakeLists.txt CMake/CMakeConfigurableFile.in             \
-CMake/CurlCheckCSourceCompiles.cmake CMake/CurlCheckCSourceRuns.cmake  \
-CMake/CurlTests.c CMake/FindOpenSSL.cmake CMake/FindZLIB.cmake         \
-CMake/OtherTests.cmake CMake/Platforms/WindowsCache.cmake              \
-CMake/Utilities.cmake include/curl/curlbuild.h.cmake
-
-VC6LIBDSP = vs/vc6/lib/vc6libcurl.dsp
-VC6LIBDSPHEAD = vs/t/lib/vc6_libcurl_dsp.head
-VC6LIBDSPFOOT = vs/t/lib/vc6_libcurl_dsp.foot
-
-VC8LIBPRJ = vs/vc8/lib/vc8libcurl.vcproj
-VC8LIBPRJHEAD = vs/t/lib/vc8_libcurl_prj.head
-VC8LIBPRJFOOT = vs/t/lib/vc8_libcurl_prj.foot
-
-VC_DIST = \
- vs/t/README \
- $(VC6LIBDSP) $(VC6LIBDSPHEAD) $(VC6LIBDSPFOOT) \
- $(VC8LIBPRJ) $(VC8LIBPRJHEAD) $(VC8LIBPRJFOOT) \
- vs/vc6/vc6curl.dsw \
- vs/vc6/lib/vc6libcurl.dsw \
- vs/vc6/src/vc6curltool.dsw \
- vs/vc6/src/vc6curltool.dsp
-
-VC6LIBDSP_DEPS = $(VC6LIBDSPHEAD) $(VC6LIBDSPFOOT) \
- Makefile.am lib/Makefile.inc
-
-VC8LIBPRJ_DEPS = $(VC8LIBPRJHEAD) $(VC8LIBPRJFOOT) \
- Makefile.am lib/Makefile.inc
+CMAKE_DIST = CMakeLists.txt CMake/CMakeConfigurableFile.in     \
+ CMake/CurlTests.c CMake/FindGSS.cmake CMake/OtherTests.cmake  \
+ CMake/Platforms/WindowsCache.cmake CMake/Utilities.cmake      \
+ include/curl/curlbuild.h.cmake CMake/Macros.cmake
+
+VC6_LIBTMPL = projects/Windows/VC6/lib/libcurl.tmpl
+VC6_LIBDSP = projects/Windows/VC6/lib/libcurl.dsp
+VC6_LIBDSP_DEPS = $(VC6_LIBTMPL) Makefile.am lib/Makefile.inc
+VC6_SRCTMPL = projects/Windows/VC6/src/curlsrc.tmpl
+VC6_SRCDSP = projects/Windows/VC6/src/curlsrc.dsp
+VC6_SRCDSP_DEPS = $(VC6_SRCTMPL) Makefile.am src/Makefile.inc
+
+VC7_LIBTMPL = projects/Windows/VC7/lib/libcurl.tmpl
+VC7_LIBVCPROJ = projects/Windows/VC7/lib/libcurl.vcproj
+VC7_LIBVCPROJ_DEPS = $(VC7_LIBTMPL) Makefile.am lib/Makefile.inc
+VC7_SRCTMPL = projects/Windows/VC7/src/curlsrc.tmpl
+VC7_SRCVCPROJ = projects/Windows/VC7/src/curlsrc.vcproj
+VC7_SRCVCPROJ_DEPS = $(VC7_SRCTMPL) Makefile.am src/Makefile.inc
+
+VC71_LIBTMPL = projects/Windows/VC7.1/lib/libcurl.tmpl
+VC71_LIBVCPROJ = projects/Windows/VC7.1/lib/libcurl.vcproj
+VC71_LIBVCPROJ_DEPS = $(VC71_LIBTMPL) Makefile.am lib/Makefile.inc
+VC71_SRCTMPL = projects/Windows/VC7.1/src/curlsrc.tmpl
+VC71_SRCVCPROJ = projects/Windows/VC7.1/src/curlsrc.vcproj
+VC71_SRCVCPROJ_DEPS = $(VC71_SRCTMPL) Makefile.am src/Makefile.inc
+
+VC8_LIBTMPL = projects/Windows/VC8/lib/libcurl.tmpl
+VC8_LIBVCPROJ = projects/Windows/VC8/lib/libcurl.vcproj
+VC8_LIBVCPROJ_DEPS = $(VC8_LIBTMPL) Makefile.am lib/Makefile.inc
+VC8_SRCTMPL = projects/Windows/VC8/src/curlsrc.tmpl
+VC8_SRCVCPROJ = projects/Windows/VC8/src/curlsrc.vcproj
+VC8_SRCVCPROJ_DEPS = $(VC8_SRCTMPL) Makefile.am src/Makefile.inc
+
+VC9_LIBTMPL = projects/Windows/VC9/lib/libcurl.tmpl
+VC9_LIBVCPROJ = projects/Windows/VC9/lib/libcurl.vcproj
+VC9_LIBVCPROJ_DEPS = $(VC9_LIBTMPL) Makefile.am lib/Makefile.inc
+VC9_SRCTMPL = projects/Windows/VC9/src/curlsrc.tmpl
+VC9_SRCVCPROJ = projects/Windows/VC9/src/curlsrc.vcproj
+VC9_SRCVCPROJ_DEPS = $(VC9_SRCTMPL) Makefile.am src/Makefile.inc
+
+VC10_LIBTMPL = projects/Windows/VC10/lib/libcurl.tmpl
+VC10_LIBVCXPROJ = projects/Windows/VC10/lib/libcurl.vcxproj
+VC10_LIBVCXPROJ_DEPS = $(VC10_LIBTMPL) Makefile.am lib/Makefile.inc
+VC10_SRCTMPL = projects/Windows/VC10/src/curlsrc.tmpl
+VC10_SRCVCXPROJ = projects/Windows/VC10/src/curlsrc.vcxproj
+VC10_SRCVCXPROJ_DEPS = $(VC10_SRCTMPL) Makefile.am src/Makefile.inc
+
+VC11_LIBTMPL = projects/Windows/VC11/lib/libcurl.tmpl
+VC11_LIBVCXPROJ = projects/Windows/VC11/lib/libcurl.vcxproj
+VC11_LIBVCXPROJ_DEPS = $(VC11_LIBTMPL) Makefile.am lib/Makefile.inc
+VC11_SRCTMPL = projects/Windows/VC11/src/curlsrc.tmpl
+VC11_SRCVCXPROJ = projects/Windows/VC11/src/curlsrc.vcxproj
+VC11_SRCVCXPROJ_DEPS = $(VC11_SRCTMPL) Makefile.am src/Makefile.inc
+
+VC12_LIBTMPL = projects/Windows/VC12/lib/libcurl.tmpl
+VC12_LIBVCXPROJ = projects/Windows/VC12/lib/libcurl.vcxproj
+VC12_LIBVCXPROJ_DEPS = $(VC12_LIBTMPL) Makefile.am lib/Makefile.inc
+VC12_SRCTMPL = projects/Windows/VC12/src/curlsrc.tmpl
+VC12_SRCVCXPROJ = projects/Windows/VC12/src/curlsrc.vcxproj
+VC12_SRCVCXPROJ_DEPS = $(VC12_SRCTMPL) Makefile.am src/Makefile.inc
+
+VC_DIST = projects/README      \
+ projects/build-openssl.bat    \
+ projects/checksrc.bat \
+ projects/Windows/VC6/curl.dsw \
+ projects/Windows/VC6/lib/libcurl.dsw $(VC6_LIBDSP)    \
+ projects/Windows/VC6/src/curlsrc.dsw $(VC6_SRCDSP)    \
+ projects/Windows/VC7/curl.sln \
+ projects/Windows/VC7/lib/libcurl.sln $(VC7_LIBVCPROJ) \
+ projects/Windows/VC7/src/curlsrc.sln $(VC7_SRCVCPROJ) \
+ projects/Windows/VC7.1/curl.sln       \
+ projects/Windows/VC7.1/lib/libcurl.sln $(VC71_LIBVCPROJ)      \
+ projects/Windows/VC7.1/src/curlsrc.sln $(VC71_SRCVCPROJ)      \
+ projects/Windows/VC8/curl.sln \
+ projects/Windows/VC8/lib/libcurl.sln $(VC8_LIBVCPROJ) \
+ projects/Windows/VC8/src/curlsrc.sln $(VC8_SRCVCPROJ) \
+ projects/Windows/VC9/curl.sln \
+ projects/Windows/VC9/lib/libcurl.sln $(VC9_LIBVCPROJ) \
+ projects/Windows/VC9/src/curlsrc.sln $(VC9_SRCVCPROJ) \
+ projects/Windows/VC10/curl.sln        \
+ projects/Windows/VC10/lib/libcurl.sln $(VC10_LIBVCXPROJ)      \
+ projects/Windows/VC10/src/curlsrc.sln $(VC10_SRCVCXPROJ)      \
+ projects/Windows/VC11/curl.sln        \
+ projects/Windows/VC11/lib/libcurl.sln $(VC11_LIBVCXPROJ)      \
+ projects/Windows/VC11/src/curlsrc.sln $(VC11_SRCVCXPROJ)      \
+ projects/Windows/VC12/curl.sln        \
+ projects/Windows/VC12/lib/libcurl.sln $(VC12_LIBVCXPROJ)      \
+ projects/Windows/VC12/src/curlsrc.sln $(VC12_SRCVCXPROJ)
 
 WINBUILD_DIST = winbuild/BUILD.WINDOWS.txt winbuild/gen_resp_file.bat  \
  winbuild/MakefileBuild.vc winbuild/Makefile.vc                                \
 
 WINBUILD_DIST = winbuild/BUILD.WINDOWS.txt winbuild/gen_resp_file.bat  \
  winbuild/MakefileBuild.vc winbuild/Makefile.vc                                \
@@ -61,7 +121,10 @@ EXTRA_DIST = CHANGES COPYING maketgz Makefile.dist curl-config.in   \
  RELEASE-NOTES buildconf libcurl.pc.in MacOSX-Framework        \
  $(CMAKE_DIST) $(VC_DIST) $(WINBUILD_DIST) lib/libcurl.vers.in
 
  RELEASE-NOTES buildconf libcurl.pc.in MacOSX-Framework        \
  $(CMAKE_DIST) $(VC_DIST) $(WINBUILD_DIST) lib/libcurl.vers.in
 
-CLEANFILES = $(VC6LIBDSP) $(VC8LIBPRJ)
+CLEANFILES = $(VC6_LIBDSP) $(VC6_SRCDSP) $(VC7_LIBVCPROJ) $(VC7_SRCVCPROJ)     \
+ $(VC71_LIBVCPROJ) $(VC71_SRCVCPROJ) $(VC8_LIBVCPROJ) $(VC8_SRCVCPROJ) \
+ $(VC9_LIBVCPROJ) $(VC9_SRCVCPROJ) $(VC10_LIBVCXPROJ) $(VC10_SRCVCXPROJ)       \
+ $(VC11_LIBVCXPROJ) $(VC11_SRCVCXPROJ) $(VC12_LIBVCXPROJ) $(VC12_SRCVCXPROJ)
 
 bin_SCRIPTS = curl-config
 
 
 bin_SCRIPTS = curl-config
 
@@ -71,11 +134,9 @@ DIST_SUBDIRS = $(SUBDIRS) tests packages docs
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = libcurl.pc
 
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = libcurl.pc
 
-# List of libcurl source files required to generate VC IDE dsp and prj files
+# List of files required to generate VC IDE .dsp, .vcproj and .vcxproj files
 include lib/Makefile.inc
 include lib/Makefile.inc
-
-WIN32SOURCES = $(CSOURCES)
-WIN32HEADERS = $(HHEADERS) config-win32.h
+include src/Makefile.inc
 
 dist-hook:
        rm -rf $(top_builddir)/tests/log
 
 dist-hook:
        rm -rf $(top_builddir)/tests/log
@@ -187,96 +248,283 @@ uninstall-hook:
        cd docs && $(MAKE) uninstall
 
 ca-bundle: lib/mk-ca-bundle.pl
        cd docs && $(MAKE) uninstall
 
 ca-bundle: lib/mk-ca-bundle.pl
-       @echo "generate a fresh ca-bundle.crt"
+       @echo "generating a fresh ca-bundle.crt"
        @perl $< -b -l -u lib/ca-bundle.crt
 
 ca-firefox: lib/firefox-db2pem.sh
        @perl $< -b -l -u lib/ca-bundle.crt
 
 ca-firefox: lib/firefox-db2pem.sh
-       @echo "generate a fresh ca-bundle.crt"
+       @echo "generating a fresh ca-bundle.crt"
        ./lib/firefox-db2pem.sh lib/ca-bundle.crt
 
 checksrc:
        cd lib && $(MAKE) checksrc
        cd src && $(MAKE) checksrc
 
        ./lib/firefox-db2pem.sh lib/ca-bundle.crt
 
 checksrc:
        cd lib && $(MAKE) checksrc
        cd src && $(MAKE) checksrc
 
-.PHONY: vc6-ide
-
-vc6-ide:
-       $(MAKE) $(VC6LIBDSP)
-
-$(VC6LIBDSP): $(VC6LIBDSP_DEPS)
-       @(echo "generating '$(VC6LIBDSP)'"; \
+.PHONY: vc-ide
+
+vc-ide: $(VC6_LIBDSP_DEPS) $(VC6_SRCDSP_DEPS) $(VC7_LIBVCPROJ_DEPS)    \
+ $(VC7_SRCVCPROJ_DEPS) $(VC71_LIBVCPROJ_DEPS) $(VC71_SRCVCPROJ_DEPS)   \
+ $(VC8_LIBVCPROJ_DEPS) $(VC8_SRCVCPROJ_DEPS) $(VC9_LIBVCPROJ_DEPS)     \
+ $(VC9_SRCVCPROJ_DEPS) $(VC10_LIBVCXPROJ_DEPS) $(VC10_SRCVCXPROJ_DEPS) \
+ $(VC11_LIBVCXPROJ_DEPS) $(VC11_SRCVCXPROJ_DEPS) $(VC12_LIBVCXPROJ_DEPS)       \
+ $(VC12_SRCVCXPROJ_DEPS)
+       @(win32_lib_srcs='$(LIB_CFILES)'; \
+       win32_lib_hdrs='$(LIB_HFILES) config-win32.h'; \
+       win32_lib_rc='$(LIB_RCFILES)'; \
+       win32_lib_vtls_srcs='$(LIB_VTLS_CFILES)'; \
+       win32_lib_vtls_hdrs='$(LIB_VTLS_HFILES)'; \
+       win32_src_srcs='$(CURL_CFILES)'; \
+       win32_src_hdrs='$(CURL_HFILES)'; \
+       win32_src_rc='$(CURL_RCFILES)'; \
+       win32_src_x_srcs='$(CURLX_CFILES)'; \
+       win32_src_x_hdrs='$(CURLX_HFILES) ../lib/config-win32.h'; \
        \
        \
-       for dir in 'vs' 'vs/vc6' 'vs/vc6/lib'; do \
-         test -d "$$dir" || mkdir "$$dir" || exit 1; \
-       done; \
+       sorted_lib_srcs=`for file in $$win32_lib_srcs; do echo $$file; done | sort`; \
+       sorted_lib_hdrs=`for file in $$win32_lib_hdrs; do echo $$file; done | sort`; \
+       sorted_lib_vtls_srcs=`for file in $$win32_lib_vtls_srcs; do echo $$file; done | sort`; \
+       sorted_lib_vtls_hdrs=`for file in $$win32_lib_vtls_hdrs; do echo $$file; done | sort`; \
+       sorted_src_srcs=`for file in $$win32_src_srcs; do echo $$file; done | sort`; \
+       sorted_src_hdrs=`for file in $$win32_src_hdrs; do echo $$file; done | sort`; \
+       sorted_src_x_srcs=`for file in $$win32_src_x_srcs; do echo $$file; done | sort`; \
+       sorted_src_x_hdrs=`for file in $$win32_src_x_hdrs; do echo $$file; done | sort`; \
        \
        \
-       dir='..\..\..\lib\'; \
-       body='$(VC6LIBDSP)'.body; \
-       win32_srcs='$(WIN32SOURCES)'; \
-       win32_hdrs='$(WIN32HEADERS)'; \
-       sorted_srcs=`for file in $$win32_srcs; do echo $$file; done | sort`; \
-       sorted_hdrs=`for file in $$win32_hdrs; do echo $$file; done | sort`; \
+       awk_code='\
+function gen_element(type, dir, file)\
+{\
+  sub(/vtls\//, "", file);\
+\
+  spaces="    ";\
+  if(dir == "lib\\vtls")\
+    tabs="                             ";\
+  else\
+    tabs="                     ";\
+\
+  if(type == "dsp") {\
+    printf("# Begin Source File\r\n");\
+    printf("\r\n");\
+    printf("SOURCE=..\\..\\..\\..\\%s\\%s\r\n", dir, file);\
+    printf("# End Source File\r\n");\
+  }\
+  else if(type == "vcproj1") {\
+    printf("%s<File\r\n", tabs);\
+    printf("%s RelativePath=\"..\\..\\..\\..\\%s\\%s\">\r\n",\
+           tabs, dir, file);\
+    printf("%s</File>\r\n", tabs);\
+  }\
+  else if(type == "vcproj2") {\
+    printf("%s<File\r\n", tabs);\
+    printf("%s RelativePath=\"..\\..\\..\\..\\%s\\%s\"\r\n",\
+           tabs, dir, file);\
+    printf("%s>\r\n", tabs);\
+    printf("%s</File>\r\n", tabs);\
+  }\
+  else if(type == "vcxproj") {\
+    i = index(file, ".");\
+    ext = substr(file, i == 0 ? 0 : i + 1);\
+\
+    if(ext == "c")\
+      printf("%s<ClCompile Include=\"..\\..\\..\\..\\%s\\%s\" />\r\n",\
+             spaces, dir, file);\
+    else if(ext == "h")\
+      printf("%s<ClInclude Include=\"..\\..\\..\\..\\%s\\%s\" />\r\n",\
+             spaces, dir, file);\
+    else if(ext == "rc")\
+      printf("%s<ResourceCompile Include=\"..\\..\\..\\..\\%s\\%s\" />\r\n",\
+      spaces, dir, file);\
+  }\
+}\
+\
+{\
+\
+  if($$0 == "CURL_LIB_C_FILES") {\
+    split(lib_srcs, arr);\
+    for(val in arr) gen_element(proj_type, "lib", arr[val]);\
+  }\
+  else if($$0 == "CURL_LIB_H_FILES") {\
+    split(lib_hdrs, arr);\
+    for(val in arr) gen_element(proj_type, "lib", arr[val]);\
+  }\
+  else if($$0 == "CURL_LIB_RC_FILES") {\
+    split(lib_rc, arr);\
+    for(val in arr) gen_element(proj_type, "lib", arr[val]);\
+  }\
+  else if($$0 == "CURL_LIB_VTLS_C_FILES") {\
+    split(lib_vtls_srcs, arr);\
+    for(val in arr) gen_element(proj_type, "lib\\vtls", arr[val]);\
+  }\
+  else if($$0 == "CURL_LIB_VTLS_H_FILES") {\
+    split(lib_vtls_hdrs, arr);\
+    for(val in arr) gen_element(proj_type, "lib\\vtls", arr[val]);\
+  }\
+  else if($$0 == "CURL_SRC_C_FILES") {\
+    split(src_srcs, arr);\
+    for(val in arr) gen_element(proj_type, "src", arr[val]);\
+  }\
+  else if($$0 == "CURL_SRC_H_FILES") {\
+    split(src_hdrs, arr);\
+    for(val in arr) gen_element(proj_type, "src", arr[val]);\
+  }\
+  else if($$0 == "CURL_SRC_RC_FILES") {\
+    split(src_rc, arr);\
+    for(val in arr) gen_element(proj_type, "src", arr[val]);\
+  }\
+  else if($$0 == "CURL_SRC_X_C_FILES") {\
+    split(src_x_srcs, arr);\
+    for(val in arr) {\
+      sub(/..\/lib\//, "", arr[val]);\
+      gen_element(proj_type, "lib", arr[val]);\
+    }\
+  }\
+  else if($$0 == "CURL_SRC_X_H_FILES") {\
+    split(src_x_hdrs, arr);\
+    for(val in arr) {\
+      sub(/..\/lib\//, "", arr[val]);\
+      gen_element(proj_type, "lib", arr[val]);\
+    }\
+  }\
+  else\
+    printf("%s\r\n", $$0);\
+}';\
        \
        \
-       echo "# Begin Group \"Source Files\""  > $$body; \
-       echo ""                               >> $$body; \
-       echo "# PROP Default_Filter \"\""     >> $$body; \
-       for file in $$sorted_srcs; do \
-         echo "# Begin Source File"          >> $$body; \
-         echo ""                             >> $$body; \
-         echo "SOURCE="$$dir$$file           >> $$body; \
-         echo "# End Source File"            >> $$body; \
-       done; \
-       echo "# End Group"                    >> $$body; \
-       echo "# Begin Group \"Header Files\"" >> $$body; \
-       echo ""                               >> $$body; \
-       echo "# PROP Default_Filter \"\""     >> $$body; \
-       for file in $$sorted_hdrs; do \
-         echo "# Begin Source File"          >> $$body; \
-         echo ""                             >> $$body; \
-         echo "SOURCE="$$dir$$file           >> $$body; \
-         echo "# End Source File"            >> $$body; \
-       done; \
-       echo "# End Group"                    >> $$body; \
+       echo "generating '$(VC6_LIBDSP)'"; \
+       awk -v proj_type=dsp \
+               -v lib_srcs="$$sorted_lib_srcs" \
+               -v lib_hdrs="$$sorted_lib_hdrs" \
+               -v lib_rc="$$win32_lib_rc" \
+               -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
+               -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC6_LIBTMPL) > $(VC6_LIBDSP) || { exit 1; }; \
        \
        \
-       awk '{ printf("%s\r\n", $$0); }' \
-         $(srcdir)/$(VC6LIBDSPHEAD) $$body $(srcdir)/$(VC6LIBDSPFOOT) \
-         > $(VC6LIBDSP) || { rm -f $$body; exit 1; }; \
+       echo "generating '$(VC6_SRCDSP)'"; \
+       awk -v proj_type=dsp \
+               -v src_srcs="$$sorted_src_srcs" \
+               -v src_hdrs="$$sorted_src_hdrs" \
+               -v src_rc="$$win32_src_rc" \
+               -v src_x_srcs="$$sorted_src_x_srcs" \
+               -v src_x_hdrs="$$sorted_src_x_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC6_SRCTMPL) > $(VC6_SRCDSP) || { exit 1; }; \
        \
        \
-       rm -f $$body)
-
-.PHONY: vc8-ide
-
-vc8-ide:
-       $(MAKE) $(VC8LIBPRJ)
-
-$(VC8LIBPRJ): $(VC8LIBPRJ_DEPS)
-       @(echo "generating '$(VC8LIBPRJ)'"; \
+       echo "generating '$(VC7_LIBVCPROJ)'"; \
+       awk -v proj_type=vcproj1 \
+               -v lib_srcs="$$sorted_lib_srcs" \
+               -v lib_hdrs="$$sorted_lib_hdrs" \
+               -v lib_rc="$$win32_lib_rc" \
+               -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
+               -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC7_LIBTMPL) > $(VC7_LIBVCPROJ) || { exit 1; }; \
        \
        \
-       for dir in 'vs' 'vs/vc8' 'vs/vc8/lib'; do \
-         test -d "$$dir" || mkdir "$$dir" || exit 1; \
-       done; \
+       echo "generating '$(VC7_SRCVCPROJ)'"; \
+       awk -v proj_type=vcproj1 \
+               -v src_srcs="$$sorted_src_srcs" \
+               -v src_hdrs="$$sorted_src_hdrs" \
+               -v src_rc="$$win32_src_rc" \
+               -v src_x_srcs="$$sorted_src_x_srcs" \
+               -v src_x_hdrs="$$sorted_src_x_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC7_SRCTMPL) > $(VC7_SRCVCPROJ) || { exit 1; }; \
        \
        \
-       dir='..\..\..\lib\'; \
-       body='$(VC8LIBPRJ)'.body; \
-       win32_srcs='$(WIN32SOURCES)'; \
-       win32_hdrs='$(WIN32HEADERS)'; \
-       sorted_srcs=`for file in $$win32_srcs; do echo $$file; done | sort`; \
-       sorted_hdrs=`for file in $$win32_hdrs; do echo $$file; done | sort`; \
+       echo "generating '$(VC71_LIBVCPROJ)'"; \
+       awk -v proj_type=vcproj1 \
+               -v lib_srcs="$$sorted_lib_srcs" \
+               -v lib_hdrs="$$sorted_lib_hdrs" \
+               -v lib_rc="$$win32_lib_rc" \
+               -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
+               -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC71_LIBTMPL) > $(VC71_LIBVCPROJ) || { exit 1; }; \
        \
        \
-       echo "%tab%%tab%<Filter Name=\"Source Files\">"  > $$body; \
-       for file in $$sorted_srcs; do \
-         echo "%tab%%tab%%tab%<File RelativePath=\""$$dir$$file"\"></File>" >> $$body; \
-       done; \
-       echo "%tab%%tab%</Filter>"                      >> $$body; \
-       echo "%tab%%tab%<Filter Name=\"Header Files\">" >> $$body; \
-       for file in $$sorted_hdrs; do \
-         echo "%tab%%tab%%tab%<File RelativePath=\""$$dir$$file"\"></File>" >> $$body; \
-       done; \
-       echo "%tab%%tab%</Filter>"                      >> $$body; \
+       echo "generating '$(VC71_SRCVCPROJ)'"; \
+       awk -v proj_type=vcproj1 \
+               -v src_srcs="$$sorted_src_srcs" \
+               -v src_hdrs="$$sorted_src_hdrs" \
+               -v src_rc="$$win32_src_rc" \
+               -v src_x_srcs="$$sorted_src_x_srcs" \
+               -v src_x_hdrs="$$sorted_src_x_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC71_SRCTMPL) > $(VC71_SRCVCPROJ) || { exit 1; }; \
        \
        \
-       awk '{ gsub(/%tab%/, "\t"); printf("%s\r\n", $$0); }' \
-         $(srcdir)/$(VC8LIBPRJHEAD) $$body $(srcdir)/$(VC8LIBPRJFOOT) \
-         > $(VC8LIBPRJ) || { rm -f $$body; exit 1; }; \
+       echo "generating '$(VC8_LIBVCPROJ)'"; \
+       awk -v proj_type=vcproj2 \
+               -v lib_srcs="$$sorted_lib_srcs" \
+               -v lib_hdrs="$$sorted_lib_hdrs" \
+               -v lib_rc="$$win32_lib_rc" \
+               -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
+               -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC8_LIBTMPL) > $(VC8_LIBVCPROJ) || { exit 1; }; \
        \
        \
-       rm -f $$body)
-
+       echo "generating '$(VC8_SRCVCPROJ)'"; \
+       awk -v proj_type=vcproj2 \
+               -v src_srcs="$$sorted_src_srcs" \
+               -v src_hdrs="$$sorted_src_hdrs" \
+               -v src_rc="$$win32_src_rc" \
+               -v src_x_srcs="$$sorted_src_x_srcs" \
+               -v src_x_hdrs="$$sorted_src_x_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC8_SRCTMPL) > $(VC8_SRCVCPROJ) || { exit 1; }; \
+       \
+       echo "generating '$(VC9_LIBVCPROJ)'"; \
+       awk -v proj_type=vcproj2 \
+               -v lib_srcs="$$sorted_lib_srcs" \
+               -v lib_hdrs="$$sorted_lib_hdrs" \
+               -v lib_rc="$$win32_lib_rc" \
+               -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
+               -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC9_LIBTMPL) > $(VC9_LIBVCPROJ) || { exit 1; }; \
+       \
+       echo "generating '$(VC9_SRCVCPROJ)'"; \
+       awk -v proj_type=vcproj2 \
+               -v src_srcs="$$sorted_src_srcs" \
+               -v src_hdrs="$$sorted_src_hdrs" \
+               -v src_rc="$$win32_src_rc" \
+               -v src_x_srcs="$$sorted_src_x_srcs" \
+               -v src_x_hdrs="$$sorted_src_x_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC9_SRCTMPL) > $(VC9_SRCVCPROJ) || { exit 1; }; \
+       \
+       echo "generating '$(VC10_LIBVCXPROJ)'"; \
+       awk -v proj_type=vcxproj \
+               -v lib_srcs="$$sorted_lib_srcs" \
+               -v lib_hdrs="$$sorted_lib_hdrs" \
+               -v lib_rc="$$win32_lib_rc" \
+               -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
+               -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC10_LIBTMPL) > $(VC10_LIBVCXPROJ) || { exit 1; }; \
+       \
+       echo "generating '$(VC10_SRCVCXPROJ)'"; \
+       awk -v proj_type=vcxproj \
+               -v src_srcs="$$sorted_src_srcs" \
+               -v src_hdrs="$$sorted_src_hdrs" \
+               -v src_rc="$$win32_src_rc" \
+               -v src_x_srcs="$$sorted_src_x_srcs" \
+               -v src_x_hdrs="$$sorted_src_x_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC10_SRCTMPL) > $(VC10_SRCVCXPROJ) || { exit 1; }; \
+       \
+       echo "generating '$(VC11_LIBVCXPROJ)'"; \
+       awk -v proj_type=vcxproj \
+               -v lib_srcs="$$sorted_lib_srcs" \
+               -v lib_hdrs="$$sorted_lib_hdrs" \
+               -v lib_rc="$$win32_lib_rc" \
+               -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
+               -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC11_LIBTMPL) > $(VC11_LIBVCXPROJ) || { exit 1; }; \
+       \
+       echo "generating '$(VC11_SRCVCXPROJ)'"; \
+       awk -v proj_type=vcxproj \
+               -v src_srcs="$$sorted_src_srcs" \
+               -v src_hdrs="$$sorted_src_hdrs" \
+               -v src_rc="$$win32_src_rc" \
+               -v src_x_srcs="$$sorted_src_x_srcs" \
+               -v src_x_hdrs="$$sorted_src_x_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC11_SRCTMPL) > $(VC11_SRCVCXPROJ) || { exit 1; }; \
+       \
+       echo "generating '$(VC12_LIBVCXPROJ)'"; \
+       awk -v proj_type=vcxproj \
+               -v lib_srcs="$$sorted_lib_srcs" \
+               -v lib_hdrs="$$sorted_lib_hdrs" \
+               -v lib_rc="$$win32_lib_rc" \
+               -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
+               -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC12_LIBTMPL) > $(VC12_LIBVCXPROJ) || { exit 1; }; \
+       \
+       echo "generating '$(VC12_SRCVCXPROJ)'"; \
+       awk -v proj_type=vcxproj \
+               -v src_srcs="$$sorted_src_srcs" \
+               -v src_hdrs="$$sorted_src_hdrs" \
+               -v src_rc="$$win32_src_rc" \
+               -v src_x_srcs="$$sorted_src_x_srcs" \
+               -v src_x_hdrs="$$sorted_src_x_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC12_SRCTMPL) > $(VC12_SRCVCXPROJ) || { exit 1; };)
index 0818741..51c490e 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -21,7 +21,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
 #
 ###########################################################################
 
 #
 ###########################################################################
 
-# ./lib/Makefile.inc
+#***************************************************************************
+#                                  _   _ ____  _
+#  Project                     ___| | | |  _ \| |
+#                             / __| | | | |_) | |
+#                            | (__| |_| |  _ <| |___
+#                             \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at http://curl.haxx.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
+
+# ./src/Makefile.inc
 # Using the backslash as line continuation character might be problematic
 # with some make flavours, as Watcom's wmake showed us already. If we
 # ever want to change this in a portable manner then we should consider
 # Using the backslash as line continuation character might be problematic
 # with some make flavours, as Watcom's wmake showed us already. If we
 # ever want to change this in a portable manner then we should consider
@@ -110,11 +132,12 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-DIST_COMMON = $(srcdir)/lib/Makefile.inc $(srcdir)/Makefile.in \
-       $(srcdir)/Makefile.am $(top_srcdir)/configure \
-       $(am__configure_deps) mkinstalldirs $(srcdir)/curl-config.in \
-       $(srcdir)/libcurl.pc.in COPYING README compile config.guess \
-       config.sub depcomp install-sh missing ltmain.sh
+DIST_COMMON = $(srcdir)/lib/Makefile.inc $(srcdir)/src/Makefile.inc \
+       $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+       $(top_srcdir)/configure $(am__configure_deps) mkinstalldirs \
+       $(srcdir)/curl-config.in $(srcdir)/libcurl.pc.in COPYING \
+       README compile config.guess config.sub depcomp install-sh \
+       missing ltmain.sh
 subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
 subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
@@ -302,6 +325,7 @@ CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
+CURL_DISABLE_SMB = @CURL_DISABLE_SMB@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
@@ -326,7 +350,6 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_NSS_INITCONTEXT = @HAVE_NSS_INITCONTEXT@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
@@ -335,7 +358,6 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
-KRB4_ENABLED = @KRB4_ENABLED@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
@@ -356,6 +378,7 @@ MKDIR_P = @MKDIR_P@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
+NSS_LIBS = @NSS_LIBS@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
@@ -391,11 +414,13 @@ USE_GNUTLS = @USE_GNUTLS@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
+USE_NGHTTP2 = @USE_NGHTTP2@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
+USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
@@ -456,32 +481,86 @@ top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 AUTOMAKE_OPTIONS = foreign
 ACLOCAL_AMFLAGS = -I m4
 top_srcdir = @top_srcdir@
 AUTOMAKE_OPTIONS = foreign
 ACLOCAL_AMFLAGS = -I m4
-CMAKE_DIST = CMakeLists.txt CMake/CMakeConfigurableFile.in             \
-CMake/CurlCheckCSourceCompiles.cmake CMake/CurlCheckCSourceRuns.cmake  \
-CMake/CurlTests.c CMake/FindOpenSSL.cmake CMake/FindZLIB.cmake         \
-CMake/OtherTests.cmake CMake/Platforms/WindowsCache.cmake              \
-CMake/Utilities.cmake include/curl/curlbuild.h.cmake
-
-VC6LIBDSP = vs/vc6/lib/vc6libcurl.dsp
-VC6LIBDSPHEAD = vs/t/lib/vc6_libcurl_dsp.head
-VC6LIBDSPFOOT = vs/t/lib/vc6_libcurl_dsp.foot
-VC8LIBPRJ = vs/vc8/lib/vc8libcurl.vcproj
-VC8LIBPRJHEAD = vs/t/lib/vc8_libcurl_prj.head
-VC8LIBPRJFOOT = vs/t/lib/vc8_libcurl_prj.foot
-VC_DIST = \
- vs/t/README \
- $(VC6LIBDSP) $(VC6LIBDSPHEAD) $(VC6LIBDSPFOOT) \
- $(VC8LIBPRJ) $(VC8LIBPRJHEAD) $(VC8LIBPRJFOOT) \
- vs/vc6/vc6curl.dsw \
- vs/vc6/lib/vc6libcurl.dsw \
- vs/vc6/src/vc6curltool.dsw \
- vs/vc6/src/vc6curltool.dsp
-
-VC6LIBDSP_DEPS = $(VC6LIBDSPHEAD) $(VC6LIBDSPFOOT) \
- Makefile.am lib/Makefile.inc
-
-VC8LIBPRJ_DEPS = $(VC8LIBPRJHEAD) $(VC8LIBPRJFOOT) \
- Makefile.am lib/Makefile.inc
+CMAKE_DIST = CMakeLists.txt CMake/CMakeConfigurableFile.in     \
+ CMake/CurlTests.c CMake/FindGSS.cmake CMake/OtherTests.cmake  \
+ CMake/Platforms/WindowsCache.cmake CMake/Utilities.cmake      \
+ include/curl/curlbuild.h.cmake CMake/Macros.cmake
+
+VC6_LIBTMPL = projects/Windows/VC6/lib/libcurl.tmpl
+VC6_LIBDSP = projects/Windows/VC6/lib/libcurl.dsp
+VC6_LIBDSP_DEPS = $(VC6_LIBTMPL) Makefile.am lib/Makefile.inc
+VC6_SRCTMPL = projects/Windows/VC6/src/curlsrc.tmpl
+VC6_SRCDSP = projects/Windows/VC6/src/curlsrc.dsp
+VC6_SRCDSP_DEPS = $(VC6_SRCTMPL) Makefile.am src/Makefile.inc
+VC7_LIBTMPL = projects/Windows/VC7/lib/libcurl.tmpl
+VC7_LIBVCPROJ = projects/Windows/VC7/lib/libcurl.vcproj
+VC7_LIBVCPROJ_DEPS = $(VC7_LIBTMPL) Makefile.am lib/Makefile.inc
+VC7_SRCTMPL = projects/Windows/VC7/src/curlsrc.tmpl
+VC7_SRCVCPROJ = projects/Windows/VC7/src/curlsrc.vcproj
+VC7_SRCVCPROJ_DEPS = $(VC7_SRCTMPL) Makefile.am src/Makefile.inc
+VC71_LIBTMPL = projects/Windows/VC7.1/lib/libcurl.tmpl
+VC71_LIBVCPROJ = projects/Windows/VC7.1/lib/libcurl.vcproj
+VC71_LIBVCPROJ_DEPS = $(VC71_LIBTMPL) Makefile.am lib/Makefile.inc
+VC71_SRCTMPL = projects/Windows/VC7.1/src/curlsrc.tmpl
+VC71_SRCVCPROJ = projects/Windows/VC7.1/src/curlsrc.vcproj
+VC71_SRCVCPROJ_DEPS = $(VC71_SRCTMPL) Makefile.am src/Makefile.inc
+VC8_LIBTMPL = projects/Windows/VC8/lib/libcurl.tmpl
+VC8_LIBVCPROJ = projects/Windows/VC8/lib/libcurl.vcproj
+VC8_LIBVCPROJ_DEPS = $(VC8_LIBTMPL) Makefile.am lib/Makefile.inc
+VC8_SRCTMPL = projects/Windows/VC8/src/curlsrc.tmpl
+VC8_SRCVCPROJ = projects/Windows/VC8/src/curlsrc.vcproj
+VC8_SRCVCPROJ_DEPS = $(VC8_SRCTMPL) Makefile.am src/Makefile.inc
+VC9_LIBTMPL = projects/Windows/VC9/lib/libcurl.tmpl
+VC9_LIBVCPROJ = projects/Windows/VC9/lib/libcurl.vcproj
+VC9_LIBVCPROJ_DEPS = $(VC9_LIBTMPL) Makefile.am lib/Makefile.inc
+VC9_SRCTMPL = projects/Windows/VC9/src/curlsrc.tmpl
+VC9_SRCVCPROJ = projects/Windows/VC9/src/curlsrc.vcproj
+VC9_SRCVCPROJ_DEPS = $(VC9_SRCTMPL) Makefile.am src/Makefile.inc
+VC10_LIBTMPL = projects/Windows/VC10/lib/libcurl.tmpl
+VC10_LIBVCXPROJ = projects/Windows/VC10/lib/libcurl.vcxproj
+VC10_LIBVCXPROJ_DEPS = $(VC10_LIBTMPL) Makefile.am lib/Makefile.inc
+VC10_SRCTMPL = projects/Windows/VC10/src/curlsrc.tmpl
+VC10_SRCVCXPROJ = projects/Windows/VC10/src/curlsrc.vcxproj
+VC10_SRCVCXPROJ_DEPS = $(VC10_SRCTMPL) Makefile.am src/Makefile.inc
+VC11_LIBTMPL = projects/Windows/VC11/lib/libcurl.tmpl
+VC11_LIBVCXPROJ = projects/Windows/VC11/lib/libcurl.vcxproj
+VC11_LIBVCXPROJ_DEPS = $(VC11_LIBTMPL) Makefile.am lib/Makefile.inc
+VC11_SRCTMPL = projects/Windows/VC11/src/curlsrc.tmpl
+VC11_SRCVCXPROJ = projects/Windows/VC11/src/curlsrc.vcxproj
+VC11_SRCVCXPROJ_DEPS = $(VC11_SRCTMPL) Makefile.am src/Makefile.inc
+VC12_LIBTMPL = projects/Windows/VC12/lib/libcurl.tmpl
+VC12_LIBVCXPROJ = projects/Windows/VC12/lib/libcurl.vcxproj
+VC12_LIBVCXPROJ_DEPS = $(VC12_LIBTMPL) Makefile.am lib/Makefile.inc
+VC12_SRCTMPL = projects/Windows/VC12/src/curlsrc.tmpl
+VC12_SRCVCXPROJ = projects/Windows/VC12/src/curlsrc.vcxproj
+VC12_SRCVCXPROJ_DEPS = $(VC12_SRCTMPL) Makefile.am src/Makefile.inc
+VC_DIST = projects/README      \
+ projects/build-openssl.bat    \
+ projects/checksrc.bat \
+ projects/Windows/VC6/curl.dsw \
+ projects/Windows/VC6/lib/libcurl.dsw $(VC6_LIBDSP)    \
+ projects/Windows/VC6/src/curlsrc.dsw $(VC6_SRCDSP)    \
+ projects/Windows/VC7/curl.sln \
+ projects/Windows/VC7/lib/libcurl.sln $(VC7_LIBVCPROJ) \
+ projects/Windows/VC7/src/curlsrc.sln $(VC7_SRCVCPROJ) \
+ projects/Windows/VC7.1/curl.sln       \
+ projects/Windows/VC7.1/lib/libcurl.sln $(VC71_LIBVCPROJ)      \
+ projects/Windows/VC7.1/src/curlsrc.sln $(VC71_SRCVCPROJ)      \
+ projects/Windows/VC8/curl.sln \
+ projects/Windows/VC8/lib/libcurl.sln $(VC8_LIBVCPROJ) \
+ projects/Windows/VC8/src/curlsrc.sln $(VC8_SRCVCPROJ) \
+ projects/Windows/VC9/curl.sln \
+ projects/Windows/VC9/lib/libcurl.sln $(VC9_LIBVCPROJ) \
+ projects/Windows/VC9/src/curlsrc.sln $(VC9_SRCVCPROJ) \
+ projects/Windows/VC10/curl.sln        \
+ projects/Windows/VC10/lib/libcurl.sln $(VC10_LIBVCXPROJ)      \
+ projects/Windows/VC10/src/curlsrc.sln $(VC10_SRCVCXPROJ)      \
+ projects/Windows/VC11/curl.sln        \
+ projects/Windows/VC11/lib/libcurl.sln $(VC11_LIBVCXPROJ)      \
+ projects/Windows/VC11/src/curlsrc.sln $(VC11_SRCVCXPROJ)      \
+ projects/Windows/VC12/curl.sln        \
+ projects/Windows/VC12/lib/libcurl.sln $(VC12_LIBVCXPROJ)      \
+ projects/Windows/VC12/src/curlsrc.sln $(VC12_SRCVCXPROJ)
 
 WINBUILD_DIST = winbuild/BUILD.WINDOWS.txt winbuild/gen_resp_file.bat  \
  winbuild/MakefileBuild.vc winbuild/Makefile.vc                                \
 
 WINBUILD_DIST = winbuild/BUILD.WINDOWS.txt winbuild/gen_resp_file.bat  \
  winbuild/MakefileBuild.vc winbuild/Makefile.vc                                \
@@ -491,62 +570,173 @@ EXTRA_DIST = CHANGES COPYING maketgz Makefile.dist curl-config.in        \
  RELEASE-NOTES buildconf libcurl.pc.in MacOSX-Framework        \
  $(CMAKE_DIST) $(VC_DIST) $(WINBUILD_DIST) lib/libcurl.vers.in
 
  RELEASE-NOTES buildconf libcurl.pc.in MacOSX-Framework        \
  $(CMAKE_DIST) $(VC_DIST) $(WINBUILD_DIST) lib/libcurl.vers.in
 
-CLEANFILES = $(VC6LIBDSP) $(VC8LIBPRJ)
+CLEANFILES = $(VC6_LIBDSP) $(VC6_SRCDSP) $(VC7_LIBVCPROJ) $(VC7_SRCVCPROJ)     \
+ $(VC71_LIBVCPROJ) $(VC71_SRCVCPROJ) $(VC8_LIBVCPROJ) $(VC8_SRCVCPROJ) \
+ $(VC9_LIBVCPROJ) $(VC9_SRCVCPROJ) $(VC10_LIBVCXPROJ) $(VC10_SRCVCXPROJ)       \
+ $(VC11_LIBVCXPROJ) $(VC11_SRCVCXPROJ) $(VC12_LIBVCXPROJ) $(VC12_SRCVCXPROJ)
+
 bin_SCRIPTS = curl-config
 SUBDIRS = lib src include
 DIST_SUBDIRS = $(SUBDIRS) tests packages docs
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = libcurl.pc
 bin_SCRIPTS = curl-config
 SUBDIRS = lib src include
 DIST_SUBDIRS = $(SUBDIRS) tests packages docs
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = libcurl.pc
-CSOURCES = file.c timeval.c base64.c hostip.c progress.c formdata.c    \
-  cookie.c http.c sendf.c ftp.c url.c dict.c if2ip.c speedcheck.c      \
-  ldap.c ssluse.c version.c getenv.c escape.c mprintf.c telnet.c       \
-  netrc.c getinfo.c transfer.c strequal.c easy.c security.c krb4.c     \
-  curl_fnmatch.c fileinfo.c ftplistparser.c wildcard.c krb5.c          \
-  memdebug.c http_chunks.c strtok.c connect.c llist.c hash.c multi.c   \
-  content_encoding.c share.c http_digest.c md4.c md5.c \
-  http_negotiate.c inet_pton.c strtoofft.c strerror.c amigaos.c                \
-  hostasyn.c hostip4.c hostip6.c hostsyn.c inet_ntop.c parsedate.c     \
-  select.c gtls.c sslgen.c tftp.c splay.c strdup.c socks.c ssh.c nss.c \
-  qssl.c rawstr.c curl_addrinfo.c socks_gssapi.c socks_sspi.c          \
-  curl_sspi.c slist.c nonblock.c curl_memrchr.c imap.c pop3.c smtp.c   \
-  pingpong.c rtsp.c curl_threads.c warnless.c hmac.c polarssl.c                \
-  polarssl_threadlock.c curl_rtmp.c openldap.c curl_gethostname.c      \
-  gopher.c axtls.c idn_win32.c http_negotiate_sspi.c cyassl.c          \
-  http_proxy.c non-ascii.c asyn-ares.c asyn-thread.c curl_gssapi.c     \
-  curl_ntlm.c curl_ntlm_wb.c curl_ntlm_core.c curl_ntlm_msgs.c         \
-  curl_sasl.c curl_schannel.c curl_multibyte.c curl_darwinssl.c                \
+LIB_VTLS_CFILES = vtls/openssl.c vtls/gtls.c vtls/vtls.c vtls/nss.c     \
+  vtls/polarssl.c vtls/polarssl_threadlock.c vtls/axtls.c               \
+  vtls/cyassl.c vtls/curl_schannel.c vtls/curl_darwinssl.c vtls/gskit.c
+
+LIB_VTLS_HFILES = vtls/openssl.h vtls/vtls.h vtls/gtls.h                \
+  vtls/nssg.h vtls/polarssl.h vtls/polarssl_threadlock.h vtls/axtls.h   \
+  vtls/cyassl.h vtls/curl_schannel.h vtls/curl_darwinssl.h vtls/gskit.h
+
+LIB_CFILES = file.c timeval.c base64.c hostip.c progress.c formdata.c   \
+  cookie.c http.c sendf.c ftp.c url.c dict.c if2ip.c speedcheck.c       \
+  ldap.c version.c getenv.c escape.c mprintf.c telnet.c netrc.c         \
+  getinfo.c transfer.c strequal.c easy.c security.c curl_fnmatch.c      \
+  fileinfo.c ftplistparser.c wildcard.c krb5.c memdebug.c http_chunks.c \
+  strtok.c connect.c llist.c hash.c multi.c content_encoding.c share.c  \
+  http_digest.c md4.c md5.c http_negotiate.c inet_pton.c strtoofft.c    \
+  strerror.c amigaos.c hostasyn.c hostip4.c hostip6.c hostsyn.c         \
+  inet_ntop.c parsedate.c select.c tftp.c splay.c strdup.c socks.c      \
+  ssh.c rawstr.c curl_addrinfo.c socks_gssapi.c socks_sspi.c            \
+  curl_sspi.c slist.c nonblock.c curl_memrchr.c imap.c pop3.c smtp.c    \
+  pingpong.c rtsp.c curl_threads.c warnless.c hmac.c curl_rtmp.c        \
+  openldap.c curl_gethostname.c gopher.c idn_win32.c                    \
+  http_negotiate_sspi.c http_proxy.c non-ascii.c asyn-ares.c            \
+  asyn-thread.c curl_gssapi.c curl_ntlm.c curl_ntlm_wb.c                \
+  curl_ntlm_core.c curl_ntlm_msgs.c curl_sasl.c curl_multibyte.c        \
   hostcheck.c bundles.c conncache.c pipeline.c dotdot.c x509asn1.c      \
   hostcheck.c bundles.c conncache.c pipeline.c dotdot.c x509asn1.c      \
-  gskit.c
-
-HHEADERS = arpa_telnet.h netrc.h file.h timeval.h qssl.h hostip.h      \
-  progress.h formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h     \
-  if2ip.h speedcheck.h urldata.h curl_ldap.h ssluse.h escape.h telnet.h        \
-  getinfo.h strequal.h krb4.h memdebug.h http_chunks.h \
-  curl_fnmatch.h wildcard.h fileinfo.h ftplistparser.h strtok.h                \
-  connect.h llist.h hash.h content_encoding.h share.h curl_md4.h       \
-  curl_md5.h http_digest.h http_negotiate.h inet_pton.h amigaos.h      \
-  strtoofft.h strerror.h inet_ntop.h curlx.h curl_memory.h curl_setup.h        \
-  transfer.h select.h easyif.h multiif.h parsedate.h sslgen.h gtls.h   \
-  tftp.h sockaddr.h splay.h strdup.h socks.h ssh.h nssg.h curl_base64.h        \
-  rawstr.h curl_addrinfo.h curl_sspi.h slist.h nonblock.h              \
-  curl_memrchr.h imap.h pop3.h smtp.h pingpong.h rtsp.h curl_threads.h \
-  warnless.h curl_hmac.h polarssl.h polarssl_threadlock.h curl_rtmp.h  \
-  curl_gethostname.h gopher.h axtls.h cyassl.h http_proxy.h non-ascii.h        \
-  asyn.h curl_ntlm.h curl_gssapi.h curl_ntlm_wb.h curl_ntlm_core.h     \
-  curl_ntlm_msgs.h curl_sasl.h curl_schannel.h curl_multibyte.h                \
-  curl_darwinssl.h hostcheck.h bundles.h conncache.h curl_setup_once.h \
-  multihandle.h setup-vms.h pipeline.h dotdot.h x509asn1.h gskit.h
-
-
-# List of libcurl source files required to generate VC IDE dsp and prj files
-WIN32SOURCES = $(CSOURCES)
-WIN32HEADERS = $(HHEADERS) config-win32.h
+  http2.c curl_sasl_sspi.c smb.c curl_sasl_gssapi.c curl_endian.c
+
+LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \
+  formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h if2ip.h         \
+  speedcheck.h urldata.h curl_ldap.h escape.h telnet.h getinfo.h        \
+  strequal.h curl_sec.h memdebug.h http_chunks.h curl_fnmatch.h         \
+  wildcard.h fileinfo.h ftplistparser.h strtok.h connect.h llist.h      \
+  hash.h content_encoding.h share.h curl_md4.h curl_md5.h http_digest.h \
+  http_negotiate.h inet_pton.h amigaos.h strtoofft.h strerror.h         \
+  inet_ntop.h curlx.h curl_memory.h curl_setup.h transfer.h select.h    \
+  easyif.h multiif.h parsedate.h tftp.h sockaddr.h splay.h strdup.h     \
+  socks.h ssh.h curl_base64.h rawstr.h curl_addrinfo.h curl_sspi.h      \
+  slist.h nonblock.h curl_memrchr.h imap.h pop3.h smtp.h pingpong.h     \
+  rtsp.h curl_threads.h warnless.h curl_hmac.h curl_rtmp.h              \
+  curl_gethostname.h gopher.h http_proxy.h non-ascii.h asyn.h           \
+  curl_ntlm.h curl_gssapi.h curl_ntlm_wb.h curl_ntlm_core.h             \
+  curl_ntlm_msgs.h curl_sasl.h curl_multibyte.h hostcheck.h bundles.h   \
+  conncache.h curl_setup_once.h multihandle.h setup-vms.h pipeline.h    \
+  dotdot.h x509asn1.h http2.h sigpipe.h smb.h curl_endian.h
+
+LIB_RCFILES = libcurl.rc
+CSOURCES = $(LIB_CFILES) $(LIB_VTLS_CFILES)
+HHEADERS = $(LIB_HFILES) $(LIB_VTLS_HFILES)
+
+# libcurl has sources that provide functions named curlx_* that aren't part of
+# the official API, but we re-use the code here to avoid duplication.
+CURLX_CFILES = \
+       ../lib/strtoofft.c \
+       ../lib/rawstr.c \
+       ../lib/nonblock.c \
+       ../lib/warnless.c
+
+CURLX_HFILES = \
+       ../lib/curl_setup.h \
+       ../lib/strtoofft.h \
+       ../lib/rawstr.h \
+       ../lib/nonblock.h \
+       ../lib/warnless.h
+
+CURL_CFILES = \
+       tool_binmode.c \
+       tool_bname.c \
+       tool_cb_dbg.c \
+       tool_cb_hdr.c \
+       tool_cb_prg.c \
+       tool_cb_rea.c \
+       tool_cb_see.c \
+       tool_cb_wrt.c \
+       tool_cfgable.c \
+       tool_convert.c \
+       tool_dirhie.c \
+       tool_doswin.c \
+       tool_easysrc.c \
+       tool_formparse.c \
+       tool_getparam.c \
+       tool_getpass.c \
+       tool_help.c \
+       tool_helpers.c \
+       tool_homedir.c \
+       tool_hugehelp.c \
+       tool_libinfo.c \
+       tool_main.c \
+       tool_metalink.c \
+       tool_mfiles.c \
+       tool_msgs.c \
+       tool_operate.c \
+       tool_operhlp.c \
+       tool_panykey.c \
+       tool_paramhlp.c \
+       tool_parsecfg.c \
+       tool_strdup.c \
+       tool_setopt.c \
+       tool_sleep.c \
+       tool_urlglob.c \
+       tool_util.c \
+       tool_vms.c \
+       tool_writeenv.c \
+       tool_writeout.c \
+       tool_xattr.c
+
+CURL_HFILES = \
+       tool_binmode.h \
+       tool_bname.h \
+       tool_cb_dbg.h \
+       tool_cb_hdr.h \
+       tool_cb_prg.h \
+       tool_cb_rea.h \
+       tool_cb_see.h \
+       tool_cb_wrt.h \
+       tool_cfgable.h \
+       tool_convert.h \
+       tool_dirhie.h \
+       tool_doswin.h \
+       tool_easysrc.h \
+       tool_formparse.h \
+       tool_getparam.h \
+       tool_getpass.h \
+       tool_help.h \
+       tool_helpers.h \
+       tool_homedir.h \
+       tool_hugehelp.h \
+       tool_libinfo.h \
+       tool_main.h \
+       tool_metalink.h \
+       tool_mfiles.h \
+       tool_msgs.h \
+       tool_operate.h \
+       tool_operhlp.h \
+       tool_panykey.h \
+       tool_paramhlp.h \
+       tool_parsecfg.h \
+       tool_sdecls.h \
+       tool_setopt.h \
+       tool_setup.h \
+       tool_sleep.h \
+       tool_strdup.h \
+       tool_urlglob.h \
+       tool_util.h \
+       tool_version.h \
+       tool_vms.h \
+       tool_writeenv.h \
+       tool_writeout.h \
+       tool_xattr.h
+
+CURL_RCFILES = curl.rc
+curl_SOURCES = $(CURL_CFILES) $(CURLX_CFILES) $(CURL_HFILES)
 all: all-recursive
 
 .SUFFIXES:
 am--refresh: Makefile
        @:
 all: all-recursive
 
 .SUFFIXES:
 am--refresh: Makefile
        @:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/lib/Makefile.inc $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/lib/Makefile.inc $(srcdir)/src/Makefile.inc $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
@@ -569,7 +759,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
            echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
            cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
        esac;
            echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
            cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
        esac;
-$(srcdir)/lib/Makefile.inc:
+$(srcdir)/lib/Makefile.inc $(srcdir)/src/Makefile.inc:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
        $(SHELL) ./config.status --recheck
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
        $(SHELL) ./config.status --recheck
@@ -839,10 +1029,16 @@ dist-xz: distdir
        $(am__post_remove_distdir)
 
 dist-tarZ: distdir
        $(am__post_remove_distdir)
 
 dist-tarZ: distdir
+       @echo WARNING: "Support for shar distribution archives is" \
+                      "deprecated." >&2
+       @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
        tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
        $(am__post_remove_distdir)
 
 dist-shar: distdir
        tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
        $(am__post_remove_distdir)
 
 dist-shar: distdir
+       @echo WARNING: "Support for distribution archives compressed with" \
+                      "legacy program 'compress' is deprecated." >&2
+       @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
        shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
        $(am__post_remove_distdir)
 
        shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
        $(am__post_remove_distdir)
 
@@ -884,9 +1080,10 @@ distcheck: dist
          && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
          && am__cwd=`pwd` \
          && $(am__cd) $(distdir)/_build \
          && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
          && am__cwd=`pwd` \
          && $(am__cd) $(distdir)/_build \
-         && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+         && ../configure \
            $(AM_DISTCHECK_CONFIGURE_FLAGS) \
            $(DISTCHECK_CONFIGURE_FLAGS) \
            $(AM_DISTCHECK_CONFIGURE_FLAGS) \
            $(DISTCHECK_CONFIGURE_FLAGS) \
+           --srcdir=.. --prefix="$$dc_install_base" \
          && $(MAKE) $(AM_MAKEFLAGS) \
          && $(MAKE) $(AM_MAKEFLAGS) dvi \
          && $(MAKE) $(AM_MAKEFLAGS) check \
          && $(MAKE) $(AM_MAKEFLAGS) \
          && $(MAKE) $(AM_MAKEFLAGS) dvi \
          && $(MAKE) $(AM_MAKEFLAGS) check \
@@ -1069,6 +1266,8 @@ uninstall-am: uninstall-binSCRIPTS uninstall-pkgconfigDATA
        uninstall-pkgconfigDATA
 
 
        uninstall-pkgconfigDATA
 
 
+# List of files required to generate VC IDE .dsp, .vcproj and .vcxproj files
+
 dist-hook:
        rm -rf $(top_builddir)/tests/log
        find $(distdir) -name "*.dist" -exec rm {} \;
 dist-hook:
        rm -rf $(top_builddir)/tests/log
        find $(distdir) -name "*.dist" -exec rm {} \;
@@ -1174,98 +1373,286 @@ uninstall-hook:
        cd docs && $(MAKE) uninstall
 
 ca-bundle: lib/mk-ca-bundle.pl
        cd docs && $(MAKE) uninstall
 
 ca-bundle: lib/mk-ca-bundle.pl
-       @echo "generate a fresh ca-bundle.crt"
+       @echo "generating a fresh ca-bundle.crt"
        @perl $< -b -l -u lib/ca-bundle.crt
 
 ca-firefox: lib/firefox-db2pem.sh
        @perl $< -b -l -u lib/ca-bundle.crt
 
 ca-firefox: lib/firefox-db2pem.sh
-       @echo "generate a fresh ca-bundle.crt"
+       @echo "generating a fresh ca-bundle.crt"
        ./lib/firefox-db2pem.sh lib/ca-bundle.crt
 
 checksrc:
        cd lib && $(MAKE) checksrc
        cd src && $(MAKE) checksrc
 
        ./lib/firefox-db2pem.sh lib/ca-bundle.crt
 
 checksrc:
        cd lib && $(MAKE) checksrc
        cd src && $(MAKE) checksrc
 
-.PHONY: vc6-ide
-
-vc6-ide:
-       $(MAKE) $(VC6LIBDSP)
-
-$(VC6LIBDSP): $(VC6LIBDSP_DEPS)
-       @(echo "generating '$(VC6LIBDSP)'"; \
+.PHONY: vc-ide
+
+vc-ide: $(VC6_LIBDSP_DEPS) $(VC6_SRCDSP_DEPS) $(VC7_LIBVCPROJ_DEPS)    \
+ $(VC7_SRCVCPROJ_DEPS) $(VC71_LIBVCPROJ_DEPS) $(VC71_SRCVCPROJ_DEPS)   \
+ $(VC8_LIBVCPROJ_DEPS) $(VC8_SRCVCPROJ_DEPS) $(VC9_LIBVCPROJ_DEPS)     \
+ $(VC9_SRCVCPROJ_DEPS) $(VC10_LIBVCXPROJ_DEPS) $(VC10_SRCVCXPROJ_DEPS) \
+ $(VC11_LIBVCXPROJ_DEPS) $(VC11_SRCVCXPROJ_DEPS) $(VC12_LIBVCXPROJ_DEPS)       \
+ $(VC12_SRCVCXPROJ_DEPS)
+       @(win32_lib_srcs='$(LIB_CFILES)'; \
+       win32_lib_hdrs='$(LIB_HFILES) config-win32.h'; \
+       win32_lib_rc='$(LIB_RCFILES)'; \
+       win32_lib_vtls_srcs='$(LIB_VTLS_CFILES)'; \
+       win32_lib_vtls_hdrs='$(LIB_VTLS_HFILES)'; \
+       win32_src_srcs='$(CURL_CFILES)'; \
+       win32_src_hdrs='$(CURL_HFILES)'; \
+       win32_src_rc='$(CURL_RCFILES)'; \
+       win32_src_x_srcs='$(CURLX_CFILES)'; \
+       win32_src_x_hdrs='$(CURLX_HFILES) ../lib/config-win32.h'; \
        \
        \
-       for dir in 'vs' 'vs/vc6' 'vs/vc6/lib'; do \
-         test -d "$$dir" || mkdir "$$dir" || exit 1; \
-       done; \
+       sorted_lib_srcs=`for file in $$win32_lib_srcs; do echo $$file; done | sort`; \
+       sorted_lib_hdrs=`for file in $$win32_lib_hdrs; do echo $$file; done | sort`; \
+       sorted_lib_vtls_srcs=`for file in $$win32_lib_vtls_srcs; do echo $$file; done | sort`; \
+       sorted_lib_vtls_hdrs=`for file in $$win32_lib_vtls_hdrs; do echo $$file; done | sort`; \
+       sorted_src_srcs=`for file in $$win32_src_srcs; do echo $$file; done | sort`; \
+       sorted_src_hdrs=`for file in $$win32_src_hdrs; do echo $$file; done | sort`; \
+       sorted_src_x_srcs=`for file in $$win32_src_x_srcs; do echo $$file; done | sort`; \
+       sorted_src_x_hdrs=`for file in $$win32_src_x_hdrs; do echo $$file; done | sort`; \
        \
        \
-       dir='..\..\..\lib\'; \
-       body='$(VC6LIBDSP)'.body; \
-       win32_srcs='$(WIN32SOURCES)'; \
-       win32_hdrs='$(WIN32HEADERS)'; \
-       sorted_srcs=`for file in $$win32_srcs; do echo $$file; done | sort`; \
-       sorted_hdrs=`for file in $$win32_hdrs; do echo $$file; done | sort`; \
+       awk_code='\
+function gen_element(type, dir, file)\
+{\
+  sub(/vtls\//, "", file);\
+\
+  spaces="    ";\
+  if(dir == "lib\\vtls")\
+    tabs="                             ";\
+  else\
+    tabs="                     ";\
+\
+  if(type == "dsp") {\
+    printf("# Begin Source File\r\n");\
+    printf("\r\n");\
+    printf("SOURCE=..\\..\\..\\..\\%s\\%s\r\n", dir, file);\
+    printf("# End Source File\r\n");\
+  }\
+  else if(type == "vcproj1") {\
+    printf("%s<File\r\n", tabs);\
+    printf("%s RelativePath=\"..\\..\\..\\..\\%s\\%s\">\r\n",\
+           tabs, dir, file);\
+    printf("%s</File>\r\n", tabs);\
+  }\
+  else if(type == "vcproj2") {\
+    printf("%s<File\r\n", tabs);\
+    printf("%s RelativePath=\"..\\..\\..\\..\\%s\\%s\"\r\n",\
+           tabs, dir, file);\
+    printf("%s>\r\n", tabs);\
+    printf("%s</File>\r\n", tabs);\
+  }\
+  else if(type == "vcxproj") {\
+    i = index(file, ".");\
+    ext = substr(file, i == 0 ? 0 : i + 1);\
+\
+    if(ext == "c")\
+      printf("%s<ClCompile Include=\"..\\..\\..\\..\\%s\\%s\" />\r\n",\
+             spaces, dir, file);\
+    else if(ext == "h")\
+      printf("%s<ClInclude Include=\"..\\..\\..\\..\\%s\\%s\" />\r\n",\
+             spaces, dir, file);\
+    else if(ext == "rc")\
+      printf("%s<ResourceCompile Include=\"..\\..\\..\\..\\%s\\%s\" />\r\n",\
+      spaces, dir, file);\
+  }\
+}\
+\
+{\
+\
+  if($$0 == "CURL_LIB_C_FILES") {\
+    split(lib_srcs, arr);\
+    for(val in arr) gen_element(proj_type, "lib", arr[val]);\
+  }\
+  else if($$0 == "CURL_LIB_H_FILES") {\
+    split(lib_hdrs, arr);\
+    for(val in arr) gen_element(proj_type, "lib", arr[val]);\
+  }\
+  else if($$0 == "CURL_LIB_RC_FILES") {\
+    split(lib_rc, arr);\
+    for(val in arr) gen_element(proj_type, "lib", arr[val]);\
+  }\
+  else if($$0 == "CURL_LIB_VTLS_C_FILES") {\
+    split(lib_vtls_srcs, arr);\
+    for(val in arr) gen_element(proj_type, "lib\\vtls", arr[val]);\
+  }\
+  else if($$0 == "CURL_LIB_VTLS_H_FILES") {\
+    split(lib_vtls_hdrs, arr);\
+    for(val in arr) gen_element(proj_type, "lib\\vtls", arr[val]);\
+  }\
+  else if($$0 == "CURL_SRC_C_FILES") {\
+    split(src_srcs, arr);\
+    for(val in arr) gen_element(proj_type, "src", arr[val]);\
+  }\
+  else if($$0 == "CURL_SRC_H_FILES") {\
+    split(src_hdrs, arr);\
+    for(val in arr) gen_element(proj_type, "src", arr[val]);\
+  }\
+  else if($$0 == "CURL_SRC_RC_FILES") {\
+    split(src_rc, arr);\
+    for(val in arr) gen_element(proj_type, "src", arr[val]);\
+  }\
+  else if($$0 == "CURL_SRC_X_C_FILES") {\
+    split(src_x_srcs, arr);\
+    for(val in arr) {\
+      sub(/..\/lib\//, "", arr[val]);\
+      gen_element(proj_type, "lib", arr[val]);\
+    }\
+  }\
+  else if($$0 == "CURL_SRC_X_H_FILES") {\
+    split(src_x_hdrs, arr);\
+    for(val in arr) {\
+      sub(/..\/lib\//, "", arr[val]);\
+      gen_element(proj_type, "lib", arr[val]);\
+    }\
+  }\
+  else\
+    printf("%s\r\n", $$0);\
+}';\
        \
        \
-       echo "# Begin Group \"Source Files\""  > $$body; \
-       echo ""                               >> $$body; \
-       echo "# PROP Default_Filter \"\""     >> $$body; \
-       for file in $$sorted_srcs; do \
-         echo "# Begin Source File"          >> $$body; \
-         echo ""                             >> $$body; \
-         echo "SOURCE="$$dir$$file           >> $$body; \
-         echo "# End Source File"            >> $$body; \
-       done; \
-       echo "# End Group"                    >> $$body; \
-       echo "# Begin Group \"Header Files\"" >> $$body; \
-       echo ""                               >> $$body; \
-       echo "# PROP Default_Filter \"\""     >> $$body; \
-       for file in $$sorted_hdrs; do \
-         echo "# Begin Source File"          >> $$body; \
-         echo ""                             >> $$body; \
-         echo "SOURCE="$$dir$$file           >> $$body; \
-         echo "# End Source File"            >> $$body; \
-       done; \
-       echo "# End Group"                    >> $$body; \
+       echo "generating '$(VC6_LIBDSP)'"; \
+       awk -v proj_type=dsp \
+               -v lib_srcs="$$sorted_lib_srcs" \
+               -v lib_hdrs="$$sorted_lib_hdrs" \
+               -v lib_rc="$$win32_lib_rc" \
+               -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
+               -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC6_LIBTMPL) > $(VC6_LIBDSP) || { exit 1; }; \
        \
        \
-       awk '{ printf("%s\r\n", $$0); }' \
-         $(srcdir)/$(VC6LIBDSPHEAD) $$body $(srcdir)/$(VC6LIBDSPFOOT) \
-         > $(VC6LIBDSP) || { rm -f $$body; exit 1; }; \
+       echo "generating '$(VC6_SRCDSP)'"; \
+       awk -v proj_type=dsp \
+               -v src_srcs="$$sorted_src_srcs" \
+               -v src_hdrs="$$sorted_src_hdrs" \
+               -v src_rc="$$win32_src_rc" \
+               -v src_x_srcs="$$sorted_src_x_srcs" \
+               -v src_x_hdrs="$$sorted_src_x_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC6_SRCTMPL) > $(VC6_SRCDSP) || { exit 1; }; \
        \
        \
-       rm -f $$body)
-
-.PHONY: vc8-ide
-
-vc8-ide:
-       $(MAKE) $(VC8LIBPRJ)
-
-$(VC8LIBPRJ): $(VC8LIBPRJ_DEPS)
-       @(echo "generating '$(VC8LIBPRJ)'"; \
+       echo "generating '$(VC7_LIBVCPROJ)'"; \
+       awk -v proj_type=vcproj1 \
+               -v lib_srcs="$$sorted_lib_srcs" \
+               -v lib_hdrs="$$sorted_lib_hdrs" \
+               -v lib_rc="$$win32_lib_rc" \
+               -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
+               -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC7_LIBTMPL) > $(VC7_LIBVCPROJ) || { exit 1; }; \
        \
        \
-       for dir in 'vs' 'vs/vc8' 'vs/vc8/lib'; do \
-         test -d "$$dir" || mkdir "$$dir" || exit 1; \
-       done; \
+       echo "generating '$(VC7_SRCVCPROJ)'"; \
+       awk -v proj_type=vcproj1 \
+               -v src_srcs="$$sorted_src_srcs" \
+               -v src_hdrs="$$sorted_src_hdrs" \
+               -v src_rc="$$win32_src_rc" \
+               -v src_x_srcs="$$sorted_src_x_srcs" \
+               -v src_x_hdrs="$$sorted_src_x_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC7_SRCTMPL) > $(VC7_SRCVCPROJ) || { exit 1; }; \
        \
        \
-       dir='..\..\..\lib\'; \
-       body='$(VC8LIBPRJ)'.body; \
-       win32_srcs='$(WIN32SOURCES)'; \
-       win32_hdrs='$(WIN32HEADERS)'; \
-       sorted_srcs=`for file in $$win32_srcs; do echo $$file; done | sort`; \
-       sorted_hdrs=`for file in $$win32_hdrs; do echo $$file; done | sort`; \
+       echo "generating '$(VC71_LIBVCPROJ)'"; \
+       awk -v proj_type=vcproj1 \
+               -v lib_srcs="$$sorted_lib_srcs" \
+               -v lib_hdrs="$$sorted_lib_hdrs" \
+               -v lib_rc="$$win32_lib_rc" \
+               -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
+               -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC71_LIBTMPL) > $(VC71_LIBVCPROJ) || { exit 1; }; \
        \
        \
-       echo "%tab%%tab%<Filter Name=\"Source Files\">"  > $$body; \
-       for file in $$sorted_srcs; do \
-         echo "%tab%%tab%%tab%<File RelativePath=\""$$dir$$file"\"></File>" >> $$body; \
-       done; \
-       echo "%tab%%tab%</Filter>"                      >> $$body; \
-       echo "%tab%%tab%<Filter Name=\"Header Files\">" >> $$body; \
-       for file in $$sorted_hdrs; do \
-         echo "%tab%%tab%%tab%<File RelativePath=\""$$dir$$file"\"></File>" >> $$body; \
-       done; \
-       echo "%tab%%tab%</Filter>"                      >> $$body; \
+       echo "generating '$(VC71_SRCVCPROJ)'"; \
+       awk -v proj_type=vcproj1 \
+               -v src_srcs="$$sorted_src_srcs" \
+               -v src_hdrs="$$sorted_src_hdrs" \
+               -v src_rc="$$win32_src_rc" \
+               -v src_x_srcs="$$sorted_src_x_srcs" \
+               -v src_x_hdrs="$$sorted_src_x_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC71_SRCTMPL) > $(VC71_SRCVCPROJ) || { exit 1; }; \
+       \
+       echo "generating '$(VC8_LIBVCPROJ)'"; \
+       awk -v proj_type=vcproj2 \
+               -v lib_srcs="$$sorted_lib_srcs" \
+               -v lib_hdrs="$$sorted_lib_hdrs" \
+               -v lib_rc="$$win32_lib_rc" \
+               -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
+               -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC8_LIBTMPL) > $(VC8_LIBVCPROJ) || { exit 1; }; \
+       \
+       echo "generating '$(VC8_SRCVCPROJ)'"; \
+       awk -v proj_type=vcproj2 \
+               -v src_srcs="$$sorted_src_srcs" \
+               -v src_hdrs="$$sorted_src_hdrs" \
+               -v src_rc="$$win32_src_rc" \
+               -v src_x_srcs="$$sorted_src_x_srcs" \
+               -v src_x_hdrs="$$sorted_src_x_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC8_SRCTMPL) > $(VC8_SRCVCPROJ) || { exit 1; }; \
+       \
+       echo "generating '$(VC9_LIBVCPROJ)'"; \
+       awk -v proj_type=vcproj2 \
+               -v lib_srcs="$$sorted_lib_srcs" \
+               -v lib_hdrs="$$sorted_lib_hdrs" \
+               -v lib_rc="$$win32_lib_rc" \
+               -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
+               -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC9_LIBTMPL) > $(VC9_LIBVCPROJ) || { exit 1; }; \
+       \
+       echo "generating '$(VC9_SRCVCPROJ)'"; \
+       awk -v proj_type=vcproj2 \
+               -v src_srcs="$$sorted_src_srcs" \
+               -v src_hdrs="$$sorted_src_hdrs" \
+               -v src_rc="$$win32_src_rc" \
+               -v src_x_srcs="$$sorted_src_x_srcs" \
+               -v src_x_hdrs="$$sorted_src_x_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC9_SRCTMPL) > $(VC9_SRCVCPROJ) || { exit 1; }; \
+       \
+       echo "generating '$(VC10_LIBVCXPROJ)'"; \
+       awk -v proj_type=vcxproj \
+               -v lib_srcs="$$sorted_lib_srcs" \
+               -v lib_hdrs="$$sorted_lib_hdrs" \
+               -v lib_rc="$$win32_lib_rc" \
+               -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
+               -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC10_LIBTMPL) > $(VC10_LIBVCXPROJ) || { exit 1; }; \
+       \
+       echo "generating '$(VC10_SRCVCXPROJ)'"; \
+       awk -v proj_type=vcxproj \
+               -v src_srcs="$$sorted_src_srcs" \
+               -v src_hdrs="$$sorted_src_hdrs" \
+               -v src_rc="$$win32_src_rc" \
+               -v src_x_srcs="$$sorted_src_x_srcs" \
+               -v src_x_hdrs="$$sorted_src_x_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC10_SRCTMPL) > $(VC10_SRCVCXPROJ) || { exit 1; }; \
+       \
+       echo "generating '$(VC11_LIBVCXPROJ)'"; \
+       awk -v proj_type=vcxproj \
+               -v lib_srcs="$$sorted_lib_srcs" \
+               -v lib_hdrs="$$sorted_lib_hdrs" \
+               -v lib_rc="$$win32_lib_rc" \
+               -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
+               -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC11_LIBTMPL) > $(VC11_LIBVCXPROJ) || { exit 1; }; \
+       \
+       echo "generating '$(VC11_SRCVCXPROJ)'"; \
+       awk -v proj_type=vcxproj \
+               -v src_srcs="$$sorted_src_srcs" \
+               -v src_hdrs="$$sorted_src_hdrs" \
+               -v src_rc="$$win32_src_rc" \
+               -v src_x_srcs="$$sorted_src_x_srcs" \
+               -v src_x_hdrs="$$sorted_src_x_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC11_SRCTMPL) > $(VC11_SRCVCXPROJ) || { exit 1; }; \
        \
        \
-       awk '{ gsub(/%tab%/, "\t"); printf("%s\r\n", $$0); }' \
-         $(srcdir)/$(VC8LIBPRJHEAD) $$body $(srcdir)/$(VC8LIBPRJFOOT) \
-         > $(VC8LIBPRJ) || { rm -f $$body; exit 1; }; \
+       echo "generating '$(VC12_LIBVCXPROJ)'"; \
+       awk -v proj_type=vcxproj \
+               -v lib_srcs="$$sorted_lib_srcs" \
+               -v lib_hdrs="$$sorted_lib_hdrs" \
+               -v lib_rc="$$win32_lib_rc" \
+               -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
+               -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC12_LIBTMPL) > $(VC12_LIBVCXPROJ) || { exit 1; }; \
        \
        \
-       rm -f $$body)
+       echo "generating '$(VC12_SRCVCXPROJ)'"; \
+       awk -v proj_type=vcxproj \
+               -v src_srcs="$$sorted_src_srcs" \
+               -v src_hdrs="$$sorted_src_hdrs" \
+               -v src_rc="$$win32_src_rc" \
+               -v src_x_srcs="$$sorted_src_x_srcs" \
+               -v src_x_hdrs="$$sorted_src_x_hdrs" \
+               "$$awk_code" $(srcdir)/$(VC12_SRCTMPL) > $(VC12_SRCVCXPROJ) || { exit 1; };)
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index c796d8d..123088f 100644 (file)
-Curl and libcurl 7.32.0
+Curl and libcurl 7.40.0
 
 
- Public curl releases:         134
- Command line options:         152
- curl_easy_setopt() options:   199
+ Public curl releases:         143
+ Command line options:         162
+ curl_easy_setopt() options:   208
  Public functions in libcurl:  58
  Public functions in libcurl:  58
- Known libcurl bindings:       42
- Contributors:                 1049
-
-***
-  krb4 support is up for removal. If you care about it at all, speak up
-  on the curl-library list asap!
-***
+ Contributors:                 1219
 
 This release includes the following changes:
 
 
 This release includes the following changes:
 
- o curl: allow timeouts to accept decimal values
- o OS400: add slist and certinfo EBCDIC support
- o OS400: new SSL backend GSKit
- o CURLOPT_XFERINFOFUNCTION: introducing a new progress callback
- o LIBCURL-STRUCTS: new document
+ o http_digest: Added support for Windows SSPI based authentication
+ o version info: Added Kerberos V5 to the supported features
+ o Makefile: Added VC targets for WinIDN
+ o config-win32: Introduce build targets for VS2012+
+ o SSL: Add PEM format support for public key pinning
+ o smtp: Added support for the conversion of Unix newlines during mail send [8]
+ o smb: Added initial support for the SMB/CIFS protocol
+ o Added support for HTTP over unix domain sockets, via
+   CURLOPT_UNIX_SOCKET_PATH and --unix-socket
+ o sasl: Added support for GSS-API based Kerberos V5 authentication
 
 This release includes the following bugfixes:
 
 
 This release includes the following bugfixes:
 
- o dotdot: introducing dot file path cleanup [1]
- o docs: fix typo in curl_easy_getinfo manpage
- o test1230: avoid using hard-wired port number
- o test1396: invoke the correct test tool
- o SIGPIPE: ignored while inside the library [2]
- o darwinssl: fix crash that started happening in Lion
- o OpenSSL: check for read errors, don't assume [3]
- o c-ares: improve error message on failed resolve [4]
- o printf: make sure %x are treated unsigned
- o formpost: better random boundaries [5]
- o url: restore the functionality of 'curl -u :' [6]
- o curl.1: fix typo in --xattr description [7]
- o digest: improve nonce generation
- o configure: automake 1.14 compatibility tweak
- o curl.1: document the --post303 option in the man page
- o curl.1: document the --sasl-ir option in the man page
- o setup-vms.h: sk_pop symbol tweak
- o tool_paramhlp: try harder to catch negatives
- o cmake: Fix for MSVC2010 project generation [8]
- o asyn-ares: Don't blank ares servers if none configured
- o curl_multi_wait: set revents for extra fds
- o Reinstate "WIN32 MemoryTracking: track wcsdup() _wcsdup() and _tcsdup()
- o ftp_do_more: consider DO_MORE complete when server connects back [9]
- o curl_easy_perform: gradually increase the delay time [10]
- o curl: fix symbolic names for CURLUSESSL_* enum in --libcurl output
- o curl: fix upload of a zip file in OpenVMS [11]
- o build: fix linking on Solaris 10 [12]
- o curl_formadd: CURLFORM_FILECONTENT wrongly rejected some option combos [13]
- o curl_formadd: fix file upload on VMS [14]
- o curl_easy_pause: on unpause, trigger mulit-socket handling [15]
- o md5 & metalink: use better build macros on Apple operating systems [16]
- o darwinssl: fix build error in crypto authentication under Snow Leopard [16]
- o curl: make --progress-bar update the line less frequently [17]
- o configure: don't error out on variable confusions (CFLAGS, LDFLAGS etc)
- o mk-ca-bundle: skip more untrusted certificates
- o formadd: wrong pointer for file name when CURLFORM_BUFFERPTR used [18]
- o FTP: when EPSV gets a 229 but fails to connect, retry with PASV
- o mk-ca-bundle.1: don't install on make install [19]
- o VMS: lots of updates and fixes of the build procedure
- o global dns cache: didn't work (regression)
- o global dns cache: fix memory leak
- o 
+ o darwinssl: fix session ID keys to only reuse identical sessions [18]
+ o url-parsing: reject CRLFs within URLs [19]
+ o OS400: Adjust specific support to last release
+ o THANKS: Remove duplicate names
+ o url.c: Fixed compilation warning
+ o ssh: Fixed build on platforms where R_OK is not defined [1]
+ o tool_strdup.c: include the tool strdup.h
+ o build: Fixed Visual Studio project file generation of strdup.[c|h]
+ o curl_easy_setopt.3: add CURLOPT_PINNEDPUBLICKEY [2]
+ o curl.1: show zone index use in a URL
+ o mk-ca-bundle.vbs: switch to new certdata.txt url
+ o Makefile.dist: Added some missing SSPI configurations
+ o build: Fixed no NTLM support for email when CURL_DISABLE_HTTP is defined
+ o SSH: use the port number as well for known_known checks [3]
+ o libssh2: detect features based on version, not configure checks
+ o http2: Deal with HTTP/2 data inside Upgrade response header buffer [4]
+ o multi: removed Curl_multi_set_easy_connection
+ o symbol-scan.pl: do not require autotools
+ o cmake: add ENABLE_THREADED_RESOLVER, rename ARES
+ o cmake: build libhostname for test suite
+ o cmake: fix HAVE_GETHOSTNAME definition
+ o tests: fix libhostname visibility
+ o tests: fix memleak in server/resolve.c
+ o vtls.h: Fixed compiler warning when compiled without SSL
+ o CMake: Restore order-dependent header checks
+ o CMake: Restore order-dependent library checks
+ o tool: Removed krb4 from the supported features
+ o http2: Don't send Upgrade headers when we already do HTTP/2
+ o examples: Don't call select() to sleep on windows [6]
+ o win32: Updated some legacy APIs to use the newer extended versions [5]
+ o easy.c: Fixed compilation warning when no verbose string support
+ o connect.c: Fixed compilation warning when no verbose string support
+ o build: in Makefile.m32 pass -F flag to windres
+ o build: in Makefile.m32 add -m32 flag for 32bit
+ o multi: when leaving for timeout, close accordingly
+ o CMake: Simplify if() conditions on check result variables
+ o build: in Makefile.m32 try to detect 64bit target
+ o multi: inform about closed sockets before they are closed
+ o multi-uv.c: close the file handle after download
+ o examples: Wait recommended 100ms when no file descriptors are ready
+ o ntlm: Split the SSPI based messaging code from the native messaging code
+ o cmake: fix NTLM detection when CURL_DISABLE_HTTP defined
+ o cmake: add Kerberos to the supported feature
+ o CURLOPT_POSTFIELDS.3: mention the COPYPOSTFIELDS option
+ o http: Disable pipelining for HTTP/2 and upgraded connections
+ o ntlm: Fixed static'ness of local decode function
+ o sasl: Reduced the need for two sets of NTLM messaging functions
+ o multi.c: Fixed compilation warnings when no verbose string support
+ o select.c: fix compilation for VxWorks [7]
+ o multi-single.c: switch to use curl_multi_wait
+ o curl_multi_wait.3: clarify numfds being used if not NULL
+ o http.c: Fixed compilation warnings from features being disabled
+ o NSS: enable the CAPATH option [9]
+ o docs: Fix FAILONERROR typos
+ o HTTP: don't abort connections with pending Negotiate authentication
+ o HTTP: Free (proxy)userpwd for NTLM/Negotiate after sending a request
+ o http_perhapsrewind: don't abort CONNECT requests
+ o build: updated dependencies in makefiles
+ o multi.c: Fixed compilation warning
+ o ftp.c: Fixed compilation warnings when proxy support disabled
+ o get_url_file_name: Fixed crash on OOM on debug build
+ o cookie.c: Refactored cleanup code to simplify
+ o OS400: enable NTLM authentication
+ o ntlm: Use Windows Crypt API
+ o http2: avoid logging neg "failure" if h2 was not requested
+ o schannel_recv: return the correct code [10]
+ o VC build: added sspi define for winssl-zlib builds
+ o Curl_client_write(): chop long data, convert data only once
+ o openldap: do not ignore Curl_client_write() return code
+ o ldap: check Curl_client_write() return codes
+ o parsedate.c: Fixed compilation warning
+ o url.c: Fixed compilation warning when USE_NTLM is not defined
+ o ntlm_wb_response: fix "statement not reached" [11]
+ o telnet: fix "cast increases required alignment of target type"
+ o smtp: Fixed dot stuffing when EOL characters at end of input buffers [12]
+ o ntlm: Allow NTLM2Session messages when USE_NTRESPONSES manually defined
+ o ntlm: Disable NTLM v2 when 64-bit integers are not supported
+ o ntlm: Use short integer when decoding 16-bit values
+ o ftp.c: Fixed compilation warning when no verbose string support
+ o synctime.c: fixed timeserver URLs
+ o mk-ca-bundle.pl: restored forced run again
+ o ntlm: Fixed return code for bad type-2 Target Info
+ o curl_schannel.c: Data may be available before connection shutdown
+ o curl_schannel: Improvements to memory re-allocation strategy [13]
+ o darwinssl: aprintf() to allocate the session key
+ o tool_util.c: Use GetTickCount64 if it is available
+ o lib: Fixed multiple code analysis warnings if SAL are available
+ o tool_binmode.c: Explicitly ignore the return code of setmode
+ o tool_urlglob.c: Silence warning C6293: Ill-defined for-loop
+ o opts: Warn CURLOPT_TIMEOUT overrides when set after CURLOPT_TIMEOUT_MS
+ o SFTP: work-around servers that return zero size on STAT [14]
+ o connect: singleipconnect(): properly try other address families after failure
+ o IPV6: address scope != scope id [15]
+ o parseurlandfillconn(): fix improper non-numeric scope_id stripping [16]
+ o secureserver.pl: make OpenSSL CApath and cert absolute path values
+ o secureserver.pl: update Windows detection and fix path conversion
+ o secureserver.pl: clean up formatting of config and fix verbose output
+ o tests: Added Windows support using Cygwin-based OpenSSH
+ o sockfilt.c: use non-Ex functions that are available before WinXP
+ o VMS: Updates for 0740-0D1220
+ o openssl: warn for SRP set if SSLv3 is used, not for TLS version
+ o openssl: make it compile against openssl 1.1.0-DEV master branch
+ o openssl: fix SSL/TLS versions in verbose output
+ o curl: show size of inhibited data when using -v
+ o build: Removed WIN32 definition from the Visual Studio projects
+ o build: Removed WIN64 definition from the libcurl Visual Studio projects
+ o vtls: Use bool for Curl_ssl_getsessionid() return type
+ o sockfilt.c: Replace 100ms sleep with thread throttle
+ o sockfilt.c: Reduce the number of individual memory allocations
+ o vtls: Don't set cert info count until memory allocation is successful
+ o nss: Don't ignore Curl_ssl_init_certinfo() OOM failure
+ o nss: Don't ignore Curl_extract_certinfo() OOM failure
+ o vtls: Fixed compilation warning and an ignored return code
+ o sockfilt.c: Fixed compilation warnings
+ o darwinssl: Fixed compilation warning
+ o vtls: Use '(void) arg' for unused parameters
+ o sepheaders.c: Fixed resource leak on failure
+ o lib1900.c: Fixed cppcheck error [17]
+ o ldap: Fixed Unicode connection details in Win32 initialsation / bind calls
+ o ldap: Fixed Unicode DN, attributes and filter in Win32 search calls
 
 This release includes the following known bugs:
 
 
 This release includes the following known bugs:
 
@@ -72,34 +149,35 @@ This release includes the following known bugs:
 This release would not have looked like this without help, code, reports and
 advice from friends like these:
 
 This release would not have looked like this without help, code, reports and
 advice from friends like these:
 
- Alex Vinnik, Alessandro Ghedini, Nick Zitzmann, Kamil Dudka,
- Lluis Batlle i Rossell, Nach M. S., Kim Vandry, Ben Greear, Dan Fandrich,
- Dave Reisner, Evgeny Turnaev, Guenter Knauf, John E. Malmberg, Marc Hoersken,
- Patrick Monnerat, Sergei Nikulov, Yang Tse, Andreas Malzahn, Clemens Gruber,
- Jean-Noel Rouvignac, Markus Moeller, Fabian Keil, Dagobert Michelsen,
- Byrial Jensen, Justin Karneges, Edward Rudd, Marc Doughty, Konstantin Isakov,
+  Andrey Labunets, Anthon Pang, Bill Nagel, Brad Harder, Brad King, Carlo Wood,
+  Christian Hägele, Dan Fandrich, Daniel Stenberg, Dave Reisner, Frank Gevaerts,
+  Gisle Vanem, Guenter Knauf, Jan Ehrhardt, Johan Lantz, John E. Malmberg,
+  Jon Spencer, Julien Nabet, Kamil Dudka, Kyle J. McKay, Lucas Pardue,
+  Marc Hesse, Marc Hoersken, Marc Renault, Michael Osipov, Nick Zitzmann,
+  Nobuhiro Ban, Patrick Monnerat, Peter Wu, Ray Satiro, Sam Hurst,
+  Stefan Bühler, Stefan Neis, Steve Holme, Tae Hyoung Ahn, Tatsuhiro Tsujikawa,
+  Tomasz Kojm, Tor Arntsen, Waldek Kozba, Warren Menzer
 
         Thanks! (and sorry if I forgot to mention someone)
 
 References to bug reports and discussions on issues:
 
 
         Thanks! (and sorry if I forgot to mention someone)
 
 References to bug reports and discussions on issues:
 
- [1] = http://curl.haxx.se/bug/view.cgi?id=1200
- [2] = http://curl.haxx.se/bug/view.cgi?id=1180
- [3] = http://curl.haxx.se/bug/view.cgi?id=1249
- [4] = http://curl.haxx.se/bug/view.cgi?id=1191
- [5] = http://curl.haxx.se/bug/view.cgi?id=1251
- [6] = http://curl.haxx.se/mail/archive-2013-06/0052.html
- [7] = http://curl.haxx.se/bug/view.cgi?id=1252
- [8] = http://curl.haxx.se/mail/lib-2013-07/0046.html
- [9] = http://curl.haxx.se/mail/lib-2013-07/0115.html
- [10] = http://curl.haxx.se/mail/lib-2013-07/0103.html
- [11] = http://curl.haxx.se/bug/view.cgi?id=496
- [12] = http://curl.haxx.se/bug/view.cgi?id=1217
- [13] = http://curl.haxx.se/mail/lib-2013-07/0258.html
- [14] = http://curl.haxx.se/bug/view.cgi?id=758
- [15] = http://curl.haxx.se/mail/lib-2013-07/0239.html
- [16] = http://curl.haxx.se/bug/view.cgi?id=1255
- [17] = http://curl.haxx.se/mail/archive-2013-07/0031.html
- [18] = http://curl.haxx.se/bug/view.cgi?id=1262
- [19] = http://curl.haxx.se/mail/lib-2013-08/0057.html
+ [1] = http://curl.haxx.se/mail/lib-2014-11/0035.html
+ [2] = http://curl.haxx.se/mail/lib-2014-11/0078.html
+ [3] = http://curl.haxx.se/bug/view.cgi?id=1448
+ [4] = https://github.com/tatsuhiro-t/nghttp2/issues/103
+ [5] = http://sourceforge.net/p/curl/feature-requests/82/
+ [6] = http://curl.haxx.se/mail/lib-2014-11/0221.html
+ [7] = http://curl.haxx.se/bug/view.cgi?id=1455
+ [8] = http://curl.haxx.se/bug/view.cgi?id=1456
+ [9] = http://curl.haxx.se/bug/view.cgi?id=1457
+ [10] = http://curl.haxx.se/bug/view.cgi?id=1462
+ [11] = http://curl.haxx.se/mail/lib-2014-12/0089.html
+ [12] = http://curl.haxx.se/bug/view.cgi?id=1456
+ [13] = http://curl.haxx.se/bug/view.cgi?id=1450
+ [14] = http://curl.haxx.se/mail/lib-2014-12/0103.html
+ [15] = http://curl.haxx.se/bug/view.cgi?id=1451
+ [16] = http://curl.haxx.se/bug/view.cgi?id=1449
+ [17] = https://github.com/bagder/curl/pull/133
+ [18] = http://curl.haxx.se/docs/adv_20150108A.html
+ [19] = http://curl.haxx.se/docs/adv_20150108B.html
index 5a3906a..453358d 100644 (file)
@@ -2614,53 +2614,54 @@ AC_HELP_STRING([--without-ca-path], [Don't use a default CA path]),
     capath="no"
   elif test "x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then
     dnl --with-ca-path given
     capath="no"
   elif test "x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then
     dnl --with-ca-path given
-    if test "x$OPENSSL_ENABLED" != "x1"; then
-      AC_MSG_ERROR([--with-ca-path only works with openSSL])
+    if test "x$OPENSSL_ENABLED" != "x1" -a "x$POLARSSL_ENABLED" != "x1"; then
+      AC_MSG_ERROR([--with-ca-path only works with openSSL or PolarSSL])
     fi
     capath="$want_capath"
     ca="no"
     fi
     capath="$want_capath"
     ca="no"
-  elif test "x$cross_compiling" != "xyes"; then
-    dnl NOT cross-compiling and...
-    dnl neither of the --with-ca-* options are provided
-
+  else
     dnl first try autodetecting a CA bundle , then a CA path
     dnl both autodetections can be skipped by --without-ca-*
     ca="no"
     capath="no"
     dnl first try autodetecting a CA bundle , then a CA path
     dnl both autodetections can be skipped by --without-ca-*
     ca="no"
     capath="no"
-    if test "x$want_ca" = "xunset"; then
-      dnl the path we previously would have installed the curl ca bundle
-      dnl to, and thus we now check for an already existing cert in that place
-      dnl in case we find no other
-      if test "x$prefix" != xNONE; then
-        cac="${prefix}/share/curl/curl-ca-bundle.crt"
-      else
-        cac="$ac_default_prefix/share/curl/curl-ca-bundle.crt"
-      fi
-
-      for a in /etc/ssl/certs/ca-certificates.crt \
-               /etc/pki/tls/certs/ca-bundle.crt \
-               /usr/share/ssl/certs/ca-bundle.crt \
-               /usr/local/share/certs/ca-root.crt \
-               /etc/ssl/cert.pem \
-               "$cac"; do
-        if test -f "$a"; then
-          ca="$a"
-          break
-        fi
-      done
-    fi
-    if test "x$want_capath" = "xunset" -a "x$ca" = "xno" -a \
-            "x$OPENSSL_ENABLED" = "x1"; then
-      for a in /etc/ssl/certs/; do
-        if test -d "$a" && ls "$a"/[[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]].0 >/dev/null 2>/dev/null; then
-          capath="$a"
-          break
+    if test "x$cross_compiling" != "xyes"; then
+      dnl NOT cross-compiling and...
+      dnl neither of the --with-ca-* options are provided
+      if test "x$want_ca" = "xunset"; then
+        dnl the path we previously would have installed the curl ca bundle
+        dnl to, and thus we now check for an already existing cert in that
+        dnl place in case we find no other
+        if test "x$prefix" != xNONE; then
+          cac="${prefix}/share/curl/curl-ca-bundle.crt"
+        else
+          cac="$ac_default_prefix/share/curl/curl-ca-bundle.crt"
         fi
         fi
-      done
+
+        for a in /etc/ssl/certs/ca-certificates.crt \
+                 /etc/pki/tls/certs/ca-bundle.crt \
+                 /usr/share/ssl/certs/ca-bundle.crt \
+                 /usr/local/share/certs/ca-root.crt \
+                 /etc/ssl/cert.pem \
+                 "$cac"; do
+          if test -f "$a"; then
+            ca="$a"
+            break
+          fi
+        done
+      fi
+      if test "x$want_capath" = "xunset" -a "x$ca" = "xno" -a \
+              "x$OPENSSL_ENABLED" = "x1"; then
+        for a in /etc/ssl/certs/; do
+          if test -d "$a" && ls "$a"/[[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]].0 >/dev/null 2>/dev/null; then
+            capath="$a"
+            break
+          fi
+        done
+      fi
+    else
+      dnl no option given and cross-compiling
+      AC_MSG_WARN([skipped the ca-cert path detection when cross-compiling])
     fi
     fi
-  else
-    dnl no option given and cross-compiling
-    AC_MSG_WARN([skipped the ca-cert path detection when cross-compiling])
   fi
 
   if test "x$ca" != "xno"; then
   fi
 
   if test "x$ca" != "xno"; then
index 7f275db..fd841ca 100644 (file)
@@ -1,4 +1,4 @@
-# generated automatically by aclocal 1.13.3 -*- Autoconf -*-
+# generated automatically by aclocal 1.14.1 -*- Autoconf -*-
 
 # Copyright (C) 1996-2013 Free Software Foundation, Inc.
 
 
 # Copyright (C) 1996-2013 Free Software Foundation, Inc.
 
@@ -32,10 +32,10 @@ To do so, use the procedure documented by the package, typically 'autoreconf'.])
 # generated from the m4 files accompanying Automake X.Y.
 # (This private macro should not be called outside this file.)
 AC_DEFUN([AM_AUTOMAKE_VERSION],
 # generated from the m4 files accompanying Automake X.Y.
 # (This private macro should not be called outside this file.)
 AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.13'
+[am__api_version='1.14'
 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
 dnl require some minimum version.  Point them to the right macro.
 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
 dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.13.3], [],
+m4_if([$1], [1.14.1], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -51,7 +51,7 @@ m4_define([_AM_AUTOCONF_VERSION], [])
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.13.3])dnl
+[AM_AUTOMAKE_VERSION([1.14.1])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
@@ -103,10 +103,9 @@ _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 # configured tree to be moved without reconfiguration.
 
 AC_DEFUN([AM_AUX_DIR_EXPAND],
 # configured tree to be moved without reconfiguration.
 
 AC_DEFUN([AM_AUX_DIR_EXPAND],
-[dnl Rely on autoconf to set up CDPATH properly.
-AC_PREREQ([2.50])dnl
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
+[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
 ])
 
 # AM_CONDITIONAL                                            -*- Autoconf -*-
 ])
 
 # AM_CONDITIONAL                                            -*- Autoconf -*-
@@ -418,6 +417,12 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 # This macro actually does too much.  Some checks are only needed if
 # your package does certain things.  But this isn't really a big deal.
 
 # This macro actually does too much.  Some checks are only needed if
 # your package does certain things.  But this isn't really a big deal.
 
+dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
+m4_define([AC_PROG_CC],
+m4_defn([AC_PROG_CC])
+[_AM_PROG_CC_C_O
+])
+
 # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
 # AM_INIT_AUTOMAKE([OPTIONS])
 # -----------------------------------------------
 # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
 # AM_INIT_AUTOMAKE([OPTIONS])
 # -----------------------------------------------
@@ -526,6 +531,48 @@ dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
 AC_CONFIG_COMMANDS_PRE(dnl
 [m4_provide_if([_AM_COMPILER_EXEEXT],
   [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
 AC_CONFIG_COMMANDS_PRE(dnl
 [m4_provide_if([_AM_COMPILER_EXEEXT],
   [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake@gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
+  fi
+fi
 ])
 
 dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
 ])
 
 dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
@@ -534,7 +581,6 @@ dnl mangled by Autoconf and run in a shell conditional statement.
 m4_define([_AC_COMPILER_EXEEXT],
 m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
 
 m4_define([_AC_COMPILER_EXEEXT],
 m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
 
-
 # When config.status generates a header, we must update the stamp-h file.
 # This file resides in the same directory as the config header
 # that is generated.  The stamp files are numbered to have different names.
 # When config.status generates a header, we must update the stamp-h file.
 # This file resides in the same directory as the config header
 # that is generated.  The stamp files are numbered to have different names.
@@ -682,38 +728,6 @@ AC_MSG_RESULT([$_am_result])
 rm -f confinc confmf
 ])
 
 rm -f confinc confmf
 ])
 
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_CC_C_O
-# --------------
-# Like AC_PROG_CC_C_O, but changed for automake.
-AC_DEFUN([AM_PROG_CC_C_O],
-[AC_REQUIRE([AC_PROG_CC_C_O])dnl
-AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([compile])dnl
-# FIXME: we rely on the cache variable name because
-# there is no other way.
-set dummy $CC
-am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
-eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
-if test "$am_t" != yes; then
-   # Losing compiler, so override with the script.
-   # FIXME: It is wrong to rewrite CC.
-   # But if we don't then we get into trouble of one sort or another.
-   # A longer-term fix would be to have automake use am__CC in this case,
-   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
-   CC="$am_aux_dir/compile $CC"
-fi
-dnl Make sure AC_PROG_CC is never called again, or it will override our
-dnl setting of CC.
-m4_define([AC_PROG_CC],
-          [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
-])
-
 # Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
 
 # Copyright (C) 1997-2013 Free Software Foundation, Inc.
 # Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
 
 # Copyright (C) 1997-2013 Free Software Foundation, Inc.
@@ -784,6 +798,70 @@ AC_DEFUN([_AM_SET_OPTIONS],
 AC_DEFUN([_AM_IF_OPTION],
 [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
 
 AC_DEFUN([_AM_IF_OPTION],
 [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
 
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_CC_C_O
+# ---------------
+# Like AC_PROG_CC_C_O, but changed for automake.  We rewrite AC_PROG_CC
+# to automatically call this.
+AC_DEFUN([_AM_PROG_CC_C_O],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+AC_LANG_PUSH([C])dnl
+AC_CACHE_CHECK(
+  [whether $CC understands -c and -o together],
+  [am_cv_prog_cc_c_o],
+  [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i])
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+AC_LANG_POP([C])])
+
+# For backward compatibility.
+AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
+
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_RUN_LOG(COMMAND)
+# -------------------
+# Run COMMAND, save the exit status in ac_status, and log it.
+# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
+AC_DEFUN([AM_RUN_LOG],
+[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   (exit $ac_status); }])
+
 # Check to make sure that the build environment is sane.    -*- Autoconf -*-
 
 # Copyright (C) 1996-2013 Free Software Foundation, Inc.
 # Check to make sure that the build environment is sane.    -*- Autoconf -*-
 
 # Copyright (C) 1996-2013 Free Software Foundation, Inc.
index a7eb51a..f3f0bd5 100755 (executable)
--- a/buildconf
+++ b/buildconf
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -32,6 +32,7 @@ die(){
 #--------------------------------------------------------------------------
 # findtool works as 'which' but we use a different name to make it more
 # obvious we aren't using 'which'! ;-)
 #--------------------------------------------------------------------------
 # findtool works as 'which' but we use a different name to make it more
 # obvious we aren't using 'which'! ;-)
+# Unlike 'which' does, the current directory is ignored.
 #
 findtool(){
   file="$1"
 #
 findtool(){
   file="$1"
@@ -49,7 +50,7 @@ findtool(){
   do
     IFS=$old_IFS
     # echo "checks for $file in $path" >&2
   do
     IFS=$old_IFS
     # echo "checks for $file in $path" >&2
-    if test -f "$path/$file"; then
+    if test "$path" -a "$path" != '.' -a -f "$path/$file"; then
       echo "$path/$file"
       return
     fi
       echo "$path/$file"
       return
     fi
@@ -189,32 +190,32 @@ else
 fi
 
 #--------------------------------------------------------------------------
 fi
 
 #--------------------------------------------------------------------------
-# GNU libtool preliminary check
+# GNU libtoolize preliminary check
 #
 want_lt_major=1
 want_lt_minor=4
 want_lt_patch=2
 want_lt_version=1.4.2
 
 #
 want_lt_major=1
 want_lt_minor=4
 want_lt_patch=2
 want_lt_version=1.4.2
 
-# This approach that tries 'glibtool' first is intended for systems that
-# have GNU libtool named as 'glibtool' and libtool not being GNU's.
+# This approach that tries 'glibtoolize' first is intended for systems that
+# have GNU libtool named as 'glibtoolize' and libtoolize not being GNU's.
 
 
-libtool=`findtool glibtool 2>/dev/null`
-if test ! -x "$libtool"; then
-  libtool=`findtool ${LIBTOOL:-libtool}`
+libtoolize=`findtool glibtoolize 2>/dev/null`
+if test ! -x "$libtoolize"; then
+  libtoolize=`findtool ${LIBTOOLIZE:-libtoolize}`
 fi
 fi
-if test -z "$libtool"; then
-  echo "buildconf: libtool not found."
-  echo "            You need GNU libtool $want_lt_version or newer installed."
+if test -z "$libtoolize"; then
+  echo "buildconf: libtoolize not found."
+  echo "  You need GNU libtoolize $want_lt_version or newer installed."
   exit 1
 fi
 
   exit 1
 fi
 
-lt_pver=`$libtool --version 2>/dev/null|head -n 1`
+lt_pver=`$libtoolize --version 2>/dev/null|head -n 1`
 lt_qver=`echo $lt_pver|sed -e "s/([^)]*)//g" -e "s/^[^0-9]*//g"`
 lt_version=`echo $lt_qver|sed -e "s/[- ].*//" -e "s/\([a-z]*\)$//"`
 if test -z "$lt_version"; then
 lt_qver=`echo $lt_pver|sed -e "s/([^)]*)//g" -e "s/^[^0-9]*//g"`
 lt_version=`echo $lt_qver|sed -e "s/[- ].*//" -e "s/\([a-z]*\)$//"`
 if test -z "$lt_version"; then
-  echo "buildconf: libtool not found."
-  echo "            You need GNU libtool $want_lt_version or newer installed."
+  echo "buildconf: libtoolize not found."
+  echo "  You need GNU libtoolize $want_lt_version or newer installed."
   exit 1
 fi
 old_IFS=$IFS; IFS='.'; set $lt_version; IFS=$old_IFS
   exit 1
 fi
 old_IFS=$IFS; IFS='.'; set $lt_version; IFS=$old_IFS
@@ -244,27 +245,12 @@ else
   lt_status="good"
 fi
 if test "$lt_status" != "good"; then
   lt_status="good"
 fi
 if test "$lt_status" != "good"; then
-  echo "buildconf: libtool version $lt_version found."
-  echo "            You need GNU libtool $want_lt_version or newer installed."
+  echo "buildconf: libtoolize version $lt_version found."
+  echo "  You need GNU libtoolize $want_lt_version or newer installed."
   exit 1
 fi
 
   exit 1
 fi
 
-echo "buildconf: libtool version $lt_version (ok)"
-
-#--------------------------------------------------------------------------
-# GNU libtoolize check
-#
-if test -z "$LIBTOOLIZE"; then
-  # use (g)libtoolize from same location as (g)libtool
-  libtoolize="${libtool}ize"
-else
-  libtoolize=`findtool $LIBTOOLIZE`
-fi
-if test ! -f "$libtoolize"; then
-  echo "buildconf: libtoolize not found."
-  echo "            You need GNU libtoolize $want_lt_version or newer installed."
-  exit 1
-fi
+echo "buildconf: libtoolize version $lt_version (ok)"
 
 #--------------------------------------------------------------------------
 # m4 check
 
 #--------------------------------------------------------------------------
 # m4 check
index 120cc0d..1f5c50c 100755 (executable)
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright 1992-2013 Free Software Foundation, Inc.
+#   Copyright 1992-2014 Free Software Foundation, Inc.
 
 
-timestamp='2013-05-16'
+timestamp='2014-03-23'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -50,7 +50,7 @@ version="\
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright 1992-2013 Free Software Foundation, Inc.
+Copyright 1992-2014 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -149,7 +149,7 @@ Linux|GNU|GNU/*)
        LIBC=gnu
        #endif
        EOF
        LIBC=gnu
        #endif
        EOF
-       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
        ;;
 esac
 
        ;;
 esac
 
@@ -826,7 +826,7 @@ EOF
     *:MINGW*:*)
        echo ${UNAME_MACHINE}-pc-mingw32
        exit ;;
     *:MINGW*:*)
        echo ${UNAME_MACHINE}-pc-mingw32
        exit ;;
-    i*:MSYS*:*)
+    *:MSYS*:*)
        echo ${UNAME_MACHINE}-pc-msys
        exit ;;
     i*:windows32*:*)
        echo ${UNAME_MACHINE}-pc-msys
        exit ;;
     i*:windows32*:*)
@@ -969,10 +969,10 @@ EOF
        eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
        test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
        ;;
        eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
        test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
        ;;
-    or1k:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+    openrisc*:Linux:*:*)
+       echo or1k-unknown-linux-${LIBC}
        exit ;;
        exit ;;
-    or32:Linux:*:*)
+    or32:Linux:*:* | or1k*:Linux:*:*)
        echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
     padre:Linux:*:*)
        echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
     padre:Linux:*:*)
@@ -995,6 +995,12 @@ EOF
     ppc:Linux:*:*)
        echo powerpc-unknown-linux-${LIBC}
        exit ;;
     ppc:Linux:*:*)
        echo powerpc-unknown-linux-${LIBC}
        exit ;;
+    ppc64le:Linux:*:*)
+       echo powerpc64le-unknown-linux-${LIBC}
+       exit ;;
+    ppcle:Linux:*:*)
+       echo powerpcle-unknown-linux-${LIBC}
+       exit ;;
     s390:Linux:*:* | s390x:Linux:*:*)
        echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
        exit ;;
     s390:Linux:*:* | s390x:Linux:*:*)
        echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
        exit ;;
@@ -1254,16 +1260,26 @@ EOF
        if test "$UNAME_PROCESSOR" = unknown ; then
            UNAME_PROCESSOR=powerpc
        fi
        if test "$UNAME_PROCESSOR" = unknown ; then
            UNAME_PROCESSOR=powerpc
        fi
-       if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-           if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-               (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-               grep IS_64BIT_ARCH >/dev/null
-           then
-               case $UNAME_PROCESSOR in
-                   i386) UNAME_PROCESSOR=x86_64 ;;
-                   powerpc) UNAME_PROCESSOR=powerpc64 ;;
-               esac
+       if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
+           if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+               if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+                   (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+                   grep IS_64BIT_ARCH >/dev/null
+               then
+                   case $UNAME_PROCESSOR in
+                       i386) UNAME_PROCESSOR=x86_64 ;;
+                       powerpc) UNAME_PROCESSOR=powerpc64 ;;
+                   esac
+               fi
            fi
            fi
+       elif test "$UNAME_PROCESSOR" = i386 ; then
+           # Avoid executing cc on OS X 10.9, as it ships with a stub
+           # that puts up a graphical alert prompting to install
+           # developer tools.  Any system running Mac OS X 10.7 or
+           # later (Darwin 11 and later) is required to have a 64-bit
+           # processor. This is not true of the ARM version of Darwin
+           # that Apple uses in portable devices.
+           UNAME_PROCESSOR=x86_64
        fi
        echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
        exit ;;
        fi
        echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
        exit ;;
@@ -1355,154 +1371,6 @@ EOF
        exit ;;
 esac
 
        exit ;;
 esac
 
-eval $set_cc_for_build
-cat >$dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
-  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
-     I don't know....  */
-  printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
-  printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
-       "4"
-#else
-       ""
-#endif
-       ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
-  printf ("arm-acorn-riscix\n"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
-  printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
-  int version;
-  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
-  if (version < 4)
-    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
-  else
-    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
-  exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
-  printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
-  printf ("ns32k-encore-mach\n"); exit (0);
-#else
-  printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
-  printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
-  printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
-  printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
-    struct utsname un;
-
-    uname(&un);
-
-    if (strncmp(un.version, "V2", 2) == 0) {
-       printf ("i386-sequent-ptx2\n"); exit (0);
-    }
-    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
-       printf ("i386-sequent-ptx1\n"); exit (0);
-    }
-    printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-# if !defined (ultrix)
-#  include <sys/param.h>
-#  if defined (BSD)
-#   if BSD == 43
-      printf ("vax-dec-bsd4.3\n"); exit (0);
-#   else
-#    if BSD == 199006
-      printf ("vax-dec-bsd4.3reno\n"); exit (0);
-#    else
-      printf ("vax-dec-bsd\n"); exit (0);
-#    endif
-#   endif
-#  else
-    printf ("vax-dec-bsd\n"); exit (0);
-#  endif
-# else
-    printf ("vax-dec-ultrix\n"); exit (0);
-# endif
-#endif
-
-#if defined (alliant) && defined (i860)
-  printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
-  exit (1);
-}
-EOF
-
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
-       { echo "$SYSTEM_NAME"; exit; }
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
-    case `getsysinfo -f cpu_type` in
-    c1*)
-       echo c1-convex-bsd
-       exit ;;
-    c2*)
-       if getsysinfo -f scalar_acc
-       then echo c32-convex-bsd
-       else echo c2-convex-bsd
-       fi
-       exit ;;
-    c34*)
-       echo c34-convex-bsd
-       exit ;;
-    c38*)
-       echo c38-convex-bsd
-       exit ;;
-    c4*)
-       echo c4-convex-bsd
-       exit ;;
-    esac
-fi
-
 cat >&2 <<EOF
 $0: unable to guess system type
 
 cat >&2 <<EOF
 $0: unable to guess system type
 
index 8b612ab..bba4efb 100755 (executable)
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Configuration validation subroutine script.
 #! /bin/sh
 # Configuration validation subroutine script.
-#   Copyright 1992-2013 Free Software Foundation, Inc.
+#   Copyright 1992-2014 Free Software Foundation, Inc.
 
 
-timestamp='2013-04-24'
+timestamp='2014-09-11'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -68,7 +68,7 @@ Report bugs and patches to <config-patches@gnu.org>."
 version="\
 GNU config.sub ($timestamp)
 
 version="\
 GNU config.sub ($timestamp)
 
-Copyright 1992-2013 Free Software Foundation, Inc.
+Copyright 1992-2014 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -257,7 +257,7 @@ case $basic_machine in
        | avr | avr32 \
        | be32 | be64 \
        | bfin \
        | avr | avr32 \
        | be32 | be64 \
        | bfin \
-       | c4x | clipper \
+       | c4x | c8051 | clipper \
        | d10v | d30v | dlx | dsp16xx \
        | epiphany \
        | fido | fr30 | frv \
        | d10v | d30v | dlx | dsp16xx \
        | epiphany \
        | fido | fr30 | frv \
@@ -265,6 +265,7 @@ case $basic_machine in
        | hexagon \
        | i370 | i860 | i960 | ia64 \
        | ip2k | iq2000 \
        | hexagon \
        | i370 | i860 | i960 | ia64 \
        | ip2k | iq2000 \
+       | k1om \
        | le32 | le64 \
        | lm32 \
        | m32c | m32r | m32rle | m68000 | m68k | m88k \
        | le32 | le64 \
        | lm32 \
        | m32c | m32r | m32rle | m68000 | m68k | m88k \
@@ -282,8 +283,10 @@ case $basic_machine in
        | mips64vr5900 | mips64vr5900el \
        | mipsisa32 | mipsisa32el \
        | mipsisa32r2 | mipsisa32r2el \
        | mips64vr5900 | mips64vr5900el \
        | mipsisa32 | mipsisa32el \
        | mipsisa32r2 | mipsisa32r2el \
+       | mipsisa32r6 | mipsisa32r6el \
        | mipsisa64 | mipsisa64el \
        | mipsisa64r2 | mipsisa64r2el \
        | mipsisa64 | mipsisa64el \
        | mipsisa64r2 | mipsisa64r2el \
+       | mipsisa64r6 | mipsisa64r6el \
        | mipsisa64sb1 | mipsisa64sb1el \
        | mipsisa64sr71k | mipsisa64sr71kel \
        | mipsr5900 | mipsr5900el \
        | mipsisa64sb1 | mipsisa64sb1el \
        | mipsisa64sr71k | mipsisa64sr71kel \
        | mipsr5900 | mipsr5900el \
@@ -295,11 +298,11 @@ case $basic_machine in
        | nds32 | nds32le | nds32be \
        | nios | nios2 | nios2eb | nios2el \
        | ns16k | ns32k \
        | nds32 | nds32le | nds32be \
        | nios | nios2 | nios2eb | nios2el \
        | ns16k | ns32k \
-       | open8 \
-       | or1k | or32 \
+       | open8 | or1k | or1knd | or32 \
        | pdp10 | pdp11 | pj | pjl \
        | powerpc | powerpc64 | powerpc64le | powerpcle \
        | pyramid \
        | pdp10 | pdp11 | pj | pjl \
        | powerpc | powerpc64 | powerpc64le | powerpcle \
        | pyramid \
+       | riscv32 | riscv64 \
        | rl78 | rx \
        | score \
        | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
        | rl78 | rx \
        | score \
        | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
@@ -324,7 +327,7 @@ case $basic_machine in
        c6x)
                basic_machine=tic6x-unknown
                ;;
        c6x)
                basic_machine=tic6x-unknown
                ;;
-       m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
+       m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
                basic_machine=$basic_machine-unknown
                os=-none
                ;;
                basic_machine=$basic_machine-unknown
                os=-none
                ;;
@@ -372,7 +375,7 @@ case $basic_machine in
        | be32-* | be64-* \
        | bfin-* | bs2000-* \
        | c[123]* | c30-* | [cjt]90-* | c4x-* \
        | be32-* | be64-* \
        | bfin-* | bs2000-* \
        | c[123]* | c30-* | [cjt]90-* | c4x-* \
-       | clipper-* | craynv-* | cydra-* \
+       | c8051-* | clipper-* | craynv-* | cydra-* \
        | d10v-* | d30v-* | dlx-* \
        | elxsi-* \
        | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
        | d10v-* | d30v-* | dlx-* \
        | elxsi-* \
        | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
@@ -381,6 +384,7 @@ case $basic_machine in
        | hexagon-* \
        | i*86-* | i860-* | i960-* | ia64-* \
        | ip2k-* | iq2000-* \
        | hexagon-* \
        | i*86-* | i860-* | i960-* | ia64-* \
        | ip2k-* | iq2000-* \
+       | k1om-* \
        | le32-* | le64-* \
        | lm32-* \
        | m32c-* | m32r-* | m32rle-* \
        | le32-* | le64-* \
        | lm32-* \
        | m32c-* | m32r-* | m32rle-* \
@@ -400,8 +404,10 @@ case $basic_machine in
        | mips64vr5900-* | mips64vr5900el-* \
        | mipsisa32-* | mipsisa32el-* \
        | mipsisa32r2-* | mipsisa32r2el-* \
        | mips64vr5900-* | mips64vr5900el-* \
        | mipsisa32-* | mipsisa32el-* \
        | mipsisa32r2-* | mipsisa32r2el-* \
+       | mipsisa32r6-* | mipsisa32r6el-* \
        | mipsisa64-* | mipsisa64el-* \
        | mipsisa64r2-* | mipsisa64r2el-* \
        | mipsisa64-* | mipsisa64el-* \
        | mipsisa64r2-* | mipsisa64r2el-* \
+       | mipsisa64r6-* | mipsisa64r6el-* \
        | mipsisa64sb1-* | mipsisa64sb1el-* \
        | mipsisa64sr71k-* | mipsisa64sr71kel-* \
        | mipsr5900-* | mipsr5900el-* \
        | mipsisa64sb1-* | mipsisa64sb1el-* \
        | mipsisa64sr71k-* | mipsisa64sr71kel-* \
        | mipsr5900-* | mipsr5900el-* \
@@ -413,6 +419,7 @@ case $basic_machine in
        | nios-* | nios2-* | nios2eb-* | nios2el-* \
        | none-* | np1-* | ns16k-* | ns32k-* \
        | open8-* \
        | nios-* | nios2-* | nios2eb-* | nios2el-* \
        | none-* | np1-* | ns16k-* | ns32k-* \
        | open8-* \
+       | or1k*-* \
        | orion-* \
        | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
        | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
        | orion-* \
        | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
        | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
@@ -794,7 +801,7 @@ case $basic_machine in
                os=-mingw64
                ;;
        mingw32)
                os=-mingw64
                ;;
        mingw32)
-               basic_machine=i386-pc
+               basic_machine=i686-pc
                os=-mingw32
                ;;
        mingw32ce)
                os=-mingw32
                ;;
        mingw32ce)
@@ -822,6 +829,10 @@ case $basic_machine in
                basic_machine=powerpc-unknown
                os=-morphos
                ;;
                basic_machine=powerpc-unknown
                os=-morphos
                ;;
+       moxiebox)
+               basic_machine=moxie-unknown
+               os=-moxiebox
+               ;;
        msdos)
                basic_machine=i386-pc
                os=-msdos
        msdos)
                basic_machine=i386-pc
                os=-msdos
@@ -830,7 +841,7 @@ case $basic_machine in
                basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
                ;;
        msys)
                basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
                ;;
        msys)
-               basic_machine=i386-pc
+               basic_machine=i686-pc
                os=-msys
                ;;
        mvs)
                os=-msys
                ;;
        mvs)
@@ -1367,14 +1378,14 @@ case $os in
              | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
              | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
              | -linux-newlib* | -linux-musl* | -linux-uclibc* \
              | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
              | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
              | -linux-newlib* | -linux-musl* | -linux-uclibc* \
-             | -uxpv* | -beos* | -mpeix* | -udk* \
+             | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
              | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
              | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
              | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
              | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
              | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
              | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
              | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
              | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
              | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
              | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
              | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
              | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-             | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
+             | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*)
        # Remember, each alternative MUST END IN *, to match a version number.
                ;;
        -qnx*)
        # Remember, each alternative MUST END IN *, to match a version number.
                ;;
        -qnx*)
@@ -1546,6 +1557,9 @@ case $basic_machine in
        c4x-* | tic4x-*)
                os=-coff
                ;;
        c4x-* | tic4x-*)
                os=-coff
                ;;
+       c8051-*)
+               os=-elf
+               ;;
        hexagon-*)
                os=-elf
                ;;
        hexagon-*)
                os=-elf
                ;;
@@ -1589,9 +1603,6 @@ case $basic_machine in
        mips*-*)
                os=-elf
                ;;
        mips*-*)
                os=-elf
                ;;
-       or1k-*)
-               os=-elf
-               ;;
        or32-*)
                os=-coff
                ;;
        or32-*)
                os=-coff
                ;;
index 618bea8..bbdf846 100755 (executable)
--- a/configure
+++ b/configure
@@ -11,7 +11,7 @@
 # This configure script is free software; the Free Software Foundation
 # gives unlimited permission to copy, distribute and modify it.
 #
 # This configure script is free software; the Free Software Foundation
 # gives unlimited permission to copy, distribute and modify it.
 #
-# Copyright (c) 1998 - 2013 Daniel Stenberg, <daniel@haxx.se>
+# Copyright (c) 1998 - 2014 Daniel Stenberg, <daniel@haxx.se>
 # This configure script may be copied, distributed and modified under the
 # terms of the curl license; see COPYING for more details
 
 # This configure script may be copied, distributed and modified under the
 # terms of the curl license; see COPYING for more details
 
@@ -890,6 +890,7 @@ SONAME_BUMP_TRUE
 CFLAG_CURL_SYMBOL_HIDING
 DOING_CURL_SYMBOL_HIDING_FALSE
 DOING_CURL_SYMBOL_HIDING_TRUE
 CFLAG_CURL_SYMBOL_HIDING
 DOING_CURL_SYMBOL_HIDING_FALSE
 DOING_CURL_SYMBOL_HIDING_TRUE
+USE_UNIX_SOCKETS
 BUILD_LIBHOSTNAME_FALSE
 BUILD_LIBHOSTNAME_TRUE
 USE_EMBEDDED_ARES_FALSE
 BUILD_LIBHOSTNAME_FALSE
 BUILD_LIBHOSTNAME_TRUE
 USE_EMBEDDED_ARES_FALSE
@@ -902,6 +903,7 @@ MANOPT
 NROFF
 PERL
 IPV6_ENABLED
 NROFF
 PERL
 IPV6_ENABLED
+USE_NGHTTP2
 IDN_ENABLED
 CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_FALSE
 CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_TRUE
 IDN_ENABLED
 CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_FALSE
 CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_TRUE
@@ -914,7 +916,7 @@ LIBMETALINK_LIBS
 CURL_CA_BUNDLE
 SSL_ENABLED
 USE_AXTLS
 CURL_CA_BUNDLE
 SSL_ENABLED
 USE_AXTLS
-HAVE_NSS_INITCONTEXT
+NSS_LIBS
 USE_NSS
 USE_CYASSL
 USE_POLARSSL
 USE_NSS
 USE_CYASSL
 USE_POLARSSL
@@ -928,7 +930,6 @@ PKGCONFIG
 USE_DARWINSSL
 USE_WINDOWS_SSPI
 USE_SCHANNEL
 USE_DARWINSSL
 USE_WINDOWS_SSPI
 USE_SCHANNEL
-KRB4_ENABLED
 USE_OPENLDAP
 ZLIB_LIBS
 HAVE_LIBZ_FALSE
 USE_OPENLDAP
 ZLIB_LIBS
 HAVE_LIBZ_FALSE
@@ -936,6 +937,7 @@ HAVE_LIBZ_TRUE
 HAVE_LIBZ
 CURL_DISABLE_GOPHER
 CURL_DISABLE_SMTP
 HAVE_LIBZ
 CURL_DISABLE_GOPHER
 CURL_DISABLE_SMTP
+CURL_DISABLE_SMB
 CURL_DISABLE_IMAP
 CURL_DISABLE_POP3
 CURL_DISABLE_TFTP
 CURL_DISABLE_IMAP
 CURL_DISABLE_POP3
 CURL_DISABLE_TFTP
@@ -1125,6 +1127,7 @@ enable_telnet
 enable_tftp
 enable_pop3
 enable_imap
 enable_tftp
 enable_pop3
 enable_imap
+enable_smb
 enable_smtp
 enable_gopher
 enable_manual
 enable_smtp
 enable_gopher
 enable_manual
@@ -1134,10 +1137,6 @@ with_zlib
 with_ldap_lib
 with_lber_lib
 enable_ipv6
 with_ldap_lib
 with_lber_lib
 enable_ipv6
-with_krb4_includes
-with_krb4_libs
-with_krb4
-with_spnego
 with_gssapi_includes
 with_gssapi_libs
 with_gssapi
 with_gssapi_includes
 with_gssapi_libs
 with_gssapi
@@ -1159,12 +1158,14 @@ with_librtmp
 enable_versioned_symbols
 with_winidn
 with_libidn
 enable_versioned_symbols
 with_winidn
 with_libidn
+with_nghttp2
 enable_threaded_resolver
 enable_verbose
 enable_sspi
 enable_crypto_auth
 enable_ntlm_wb
 enable_tls_srp
 enable_threaded_resolver
 enable_verbose
 enable_sspi
 enable_crypto_auth
 enable_ntlm_wb
 enable_tls_srp
+enable_unix_sockets
 enable_cookies
 enable_soname_bump
 '
 enable_cookies
 enable_soname_bump
 '
@@ -1851,6 +1852,8 @@ Optional Features:
   --disable-pop3          Disable POP3 support
   --enable-imap           Enable IMAP support
   --disable-imap          Disable IMAP support
   --disable-pop3          Disable POP3 support
   --enable-imap           Enable IMAP support
   --disable-imap          Disable IMAP support
+  --enable-smb            Enable SMB/CIFS support
+  --disable-smb           Disable SMB/CIFS support
   --enable-smtp           Enable SMTP support
   --disable-smtp          Disable SMTP support
   --enable-gopher         Enable Gopher support
   --enable-smtp           Enable SMTP support
   --disable-smtp          Disable SMTP support
   --enable-gopher         Enable Gopher support
@@ -1861,8 +1864,8 @@ Optional Features:
   --disable-libcurl-option
                           Disable --libcurl C code generation support
   --enable-libgcc         use libgcc when linking
   --disable-libcurl-option
                           Disable --libcurl C code generation support
   --enable-libgcc         use libgcc when linking
-  --enable-ipv6           Enable ipv6 (with ipv4) support
-  --disable-ipv6          Disable ipv6 support
+  --enable-ipv6           Enable IPv6 (with IPv4) support
+  --disable-ipv6          Disable IPv6 support
   --enable-versioned-symbols
                           Enable versioned symbols in shared library
   --disable-versioned-symbols
   --enable-versioned-symbols
                           Enable versioned symbols in shared library
   --disable-versioned-symbols
@@ -1884,6 +1887,8 @@ Optional Features:
                           helper
   --enable-tls-srp        Enable TLS-SRP authentication
   --disable-tls-srp       Disable TLS-SRP authentication
                           helper
   --enable-tls-srp        Enable TLS-SRP authentication
   --disable-tls-srp       Disable TLS-SRP authentication
+  --enable-unix-sockets   Enable Unix domain sockets
+  --disable-unix-sockets  Disable Unix domain sockets
   --enable-cookies        Enable cookies support
   --disable-cookies       Disable cookies support
   --enable-soname-bump    Enable enforced SONAME bump
   --enable-cookies        Enable cookies support
   --disable-cookies       Disable cookies support
   --enable-soname-bump    Enable enforced SONAME bump
@@ -1901,15 +1906,10 @@ Optional Packages:
   --without-zlib          disable use of zlib
   --with-ldap-lib=libname Specify name of ldap lib file
   --with-lber-lib=libname Specify name of lber lib file
   --without-zlib          disable use of zlib
   --with-ldap-lib=libname Specify name of ldap lib file
   --with-lber-lib=libname Specify name of lber lib file
-  --with-krb4-includes=DIR
-                          Specify location of kerberos4 headers
-  --with-krb4-libs=DIR    Specify location of kerberos4 libs
-  --with-krb4=DIR         where to look for Kerberos4
-  --with-spnego=DIR       Specify location of SPNEGO library fbopenssl
   --with-gssapi-includes=DIR
   --with-gssapi-includes=DIR
-                          Specify location of GSSAPI header
-  --with-gssapi-libs=DIR  Specify location of GSSAPI libs
-  --with-gssapi=DIR       Where to look for GSSAPI
+                          Specify location of GSS-API headers
+  --with-gssapi-libs=DIR  Specify location of GSS-API libs
+  --with-gssapi=DIR       Where to look for GSS-API
   --with-winssl           enable Windows native SSL/TLS
   --without-winssl        disable Windows native SSL/TLS
   --with-darwinssl        enable iOS/Mac OS X native SSL/TLS
   --with-winssl           enable Windows native SSL/TLS
   --without-winssl        disable Windows native SSL/TLS
   --with-darwinssl        enable iOS/Mac OS X native SSL/TLS
@@ -1959,6 +1959,8 @@ Optional Packages:
   --without-winidn        disable Windows native IDN
   --with-libidn=PATH      Enable libidn usage
   --without-libidn        Disable libidn usage
   --without-winidn        disable Windows native IDN
   --with-libidn=PATH      Enable libidn usage
   --without-libidn        Disable libidn usage
+  --with-nghttp2=PATH     Enable nghttp2 usage
+  --without-nghttp2       Disable nghttp2 usage
 
 Some influential environment variables:
   CC          C compiler command
 
 Some influential environment variables:
   CC          C compiler command
@@ -2043,7 +2045,7 @@ Copyright (C) 2012 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 
-Copyright (c) 1998 - 2013 Daniel Stenberg, <daniel@haxx.se>
+Copyright (c) 1998 - 2014 Daniel Stenberg, <daniel@haxx.se>
 This configure script may be copied, distributed and modified under the
 terms of the curl license; see COPYING for more details
 _ACEOF
 This configure script may be copied, distributed and modified under the
 terms of the curl license; see COPYING for more details
 _ACEOF
@@ -2618,6 +2620,61 @@ $as_echo "$ac_res" >&6; }
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
 } # ac_fn_c_check_type
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
 } # ac_fn_c_check_type
+
+# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES
+# ----------------------------------------------------
+# Tries to find if the field MEMBER exists in type AGGR, after including
+# INCLUDES, setting cache variable VAR accordingly.
+ac_fn_c_check_member ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
+$as_echo_n "checking for $2.$3... " >&6; }
+if eval \${$4+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$5
+int main (void)
+{
+static $2 ac_aggr;
+if (ac_aggr.$3)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$4=yes"
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$5
+int main (void)
+{
+static $2 ac_aggr;
+if (sizeof ac_aggr.$3)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$4=yes"
+else
+  eval "$4=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$4
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_member
 cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
@@ -3810,6 +3867,9 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
 
 test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
 
 
 test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
 
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
+
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -4591,16 +4651,14 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-if test "x$CC" != xcc; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5
-$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5
-$as_echo_n "checking whether cc understands -c and -o together... " >&6; }
-fi
-set dummy $CC; ac_cc=`$as_echo "$2" |
-                     sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
-if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then :
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
+$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
+if ${am_cv_prog_cc_c_o+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -4613,103 +4671,30 @@ int main (void)
  return 0;
 }
 _ACEOF
  return 0;
 }
 _ACEOF
-# Make sure it works both with $CC and with simple cc.
-# We do the test twice because some compilers refuse to overwrite an
-# existing .o file with -o, though they will create one.
-ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
-rm -f conftest2.*
-if { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } &&
-   test -f conftest2.$ac_objext && { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; };
-then
-  eval ac_cv_prog_cc_${ac_cc}_c_o=yes
-  if test "x$CC" != xcc; then
-    # Test first that cc exists at all.
-    if { ac_try='cc -c conftest.$ac_ext >&5'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then
-      ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
-      rm -f conftest2.*
-      if { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } &&
-        test -f conftest2.$ac_objext && { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; };
-      then
-       # cc works too.
-       :
-      else
-       # cc exists but doesn't like -o.
-       eval ac_cv_prog_cc_${ac_cc}_c_o=no
-      fi
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
+   ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
     fi
     fi
-  fi
-else
-  eval ac_cv_prog_cc_${ac_cc}_c_o=no
-fi
-rm -f core conftest*
-
-fi
-if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h
-
+  done
+  rm -f core conftest*
+  unset am_i
 fi
 fi
-
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
-
-# FIXME: we rely on the cache variable name because
-# there is no other way.
-set dummy $CC
-am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
-eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
-if test "$am_t" != yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+$as_echo "$am_cv_prog_cc_c_o" >&6; }
+if test "$am_cv_prog_cc_c_o" != yes; then
    # Losing compiler, so override with the script.
    # FIXME: It is wrong to rewrite CC.
    # But if we don't then we get into trouble of one sort or another.
    # Losing compiler, so override with the script.
    # FIXME: It is wrong to rewrite CC.
    # But if we don't then we get into trouble of one sort or another.
@@ -4717,6 +4702,12 @@ if test "$am_t" != yes; then
    # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
    CC="$am_aux_dir/compile $CC"
 fi
    # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
    CC="$am_aux_dir/compile $CC"
 fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
 
 
 ac_ext=c
 
 
 ac_ext=c
@@ -4867,7 +4858,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
 
 
 
-am__api_version='1.13'
+am__api_version='1.14'
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
 $as_echo_n "checking whether build environment is sane... " >&6; }
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
 $as_echo_n "checking whether build environment is sane... " >&6; }
@@ -5496,6 +5487,48 @@ fi
 
 
 
 
 
 
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake@gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
+  fi
+fi
+
 ## ------------------------------------- ##
 ##  End of automake initialization code  ##
 ## ------------------------------------- ##
 ## ------------------------------------- ##
 ##  End of automake initialization code  ##
 ## ------------------------------------- ##
@@ -5521,12 +5554,11 @@ PKGADD_VENDOR="curl.haxx.se"
     curl_ssl_msg="no      (--with-{ssl,gnutls,nss,polarssl,cyassl,axtls,winssl,darwinssl} )"
     curl_ssh_msg="no      (--with-libssh2)"
    curl_zlib_msg="no      (--with-zlib)"
     curl_ssl_msg="no      (--with-{ssl,gnutls,nss,polarssl,cyassl,axtls,winssl,darwinssl} )"
     curl_ssh_msg="no      (--with-libssh2)"
    curl_zlib_msg="no      (--with-zlib)"
-   curl_krb4_msg="no      (--with-krb4*)"
     curl_gss_msg="no      (--with-gssapi)"
     curl_gss_msg="no      (--with-gssapi)"
- curl_spnego_msg="no      (--with-spnego)"
 curl_tls_srp_msg="no      (--enable-tls-srp)"
     curl_res_msg="default (--enable-ares / --enable-threaded-resolver)"
    curl_ipv6_msg="no      (--enable-ipv6)"
 curl_tls_srp_msg="no      (--enable-tls-srp)"
     curl_res_msg="default (--enable-ares / --enable-threaded-resolver)"
    curl_ipv6_msg="no      (--enable-ipv6)"
+curl_unix_sockets_msg="no      (--enable-unix-sockets)"
     curl_idn_msg="no      (--with-{libidn,winidn})"
  curl_manual_msg="no      (--enable-manual)"
 curl_libcurl_msg="enabled (--disable-libcurl-option)"
     curl_idn_msg="no      (--with-{libidn,winidn})"
  curl_manual_msg="no      (--enable-manual)"
 curl_libcurl_msg="enabled (--disable-libcurl-option)"
@@ -7606,7 +7638,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
                       && LARGE_OFF_T % 2147483647 == 1)
                      ? 1 : -1];
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
                       && LARGE_OFF_T % 2147483647 == 1)
                      ? 1 : -1];
@@ -7651,7 +7683,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
                       && LARGE_OFF_T % 2147483647 == 1)
                      ? 1 : -1];
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
                       && LARGE_OFF_T % 2147483647 == 1)
                      ? 1 : -1];
@@ -7674,7 +7706,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
                       && LARGE_OFF_T % 2147483647 == 1)
                      ? 1 : -1];
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
                       && LARGE_OFF_T % 2147483647 == 1)
                      ? 1 : -1];
@@ -7718,7 +7750,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
                       && LARGE_OFF_T % 2147483647 == 1)
                      ? 1 : -1];
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
                       && LARGE_OFF_T % 2147483647 == 1)
                      ? 1 : -1];
@@ -7741,7 +7773,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
                       && LARGE_OFF_T % 2147483647 == 1)
                      ? 1 : -1];
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
                       && LARGE_OFF_T % 2147483647 == 1)
                      ? 1 : -1];
@@ -9975,7 +10007,7 @@ ia64-*-hpux*)
   rm -rf conftest*
   ;;
 
   rm -rf conftest*
   ;;
 
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
 s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
 s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
@@ -10000,7 +10032,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
                ;;
            esac
            ;;
                ;;
            esac
            ;;
-         ppc64-*linux*|powerpc64-*linux*)
+         powerpc64le-*)
+           LD="${LD-ld} -m elf32lppclinux"
+           ;;
+         powerpc64-*)
            LD="${LD-ld} -m elf32ppclinux"
            ;;
          s390x-*linux*)
            LD="${LD-ld} -m elf32ppclinux"
            ;;
          s390x-*linux*)
@@ -10019,7 +10054,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
          x86_64-*linux*)
            LD="${LD-ld} -m elf_x86_64"
            ;;
          x86_64-*linux*)
            LD="${LD-ld} -m elf_x86_64"
            ;;
-         ppc*-*linux*|powerpc*-*linux*)
+         powerpcle-*)
+           LD="${LD-ld} -m elf64lppc"
+           ;;
+         powerpc-*)
            LD="${LD-ld} -m elf64ppc"
            ;;
          s390*-*linux*|s390*-*tpf*)
            LD="${LD-ld} -m elf64ppc"
            ;;
          s390*-*linux*|s390*-*tpf*)
@@ -16726,8 +16764,8 @@ squeeze() {
       INTEL_UNIX_C)
         #
                         tmp_CFLAGS="$tmp_CFLAGS -std=gnu89"
       INTEL_UNIX_C)
         #
                         tmp_CFLAGS="$tmp_CFLAGS -std=gnu89"
-                                                tmp_CPPFLAGS="$tmp_CPPFLAGS -we 140,147,165,266"
-                                        tmp_CPPFLAGS="$tmp_CPPFLAGS -wd 279,981,1469"
+                                                tmp_CPPFLAGS="$tmp_CPPFLAGS -we140,147,165,266"
+                                        tmp_CPPFLAGS="$tmp_CPPFLAGS -wd279,981,1469"
         ;;
         #
       INTEL_WINDOWS_C)
         ;;
         #
       INTEL_WINDOWS_C)
@@ -17814,7 +17852,7 @@ $as_echo_n "checking if compiler halts on function prototype mismatch... " >&6;
 int main (void)
 {
 
 int main (void)
 {
 
-      int i[2];
+      int i[2]={0,0};
       int j = rand(i[0]);
       if(j)
         return j;
       int j = rand(i[0]);
       if(j)
         return j;
 
 
 
 
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to support smb" >&5
+$as_echo_n "checking whether to support smb... " >&6; }
+# Check whether --enable-smb was given.
+if test "${enable_smb+set}" = set; then :
+  enableval=$enable_smb;  case "$enableval" in
+  no)
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+$as_echo "#define CURL_DISABLE_SMB 1" >>confdefs.h
+
+       CURL_DISABLE_SMB=1
+
+       ;;
+  *)   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+       ;;
+  esac
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+fi
+
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to support smtp" >&5
 $as_echo_n "checking whether to support smtp... " >&6; }
 # Check whether --enable-smtp was given.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to support smtp" >&5
 $as_echo_n "checking whether to support smtp... " >&6; }
 # Check whether --enable-smtp was given.
@@ -20877,8 +20940,8 @@ if test x$CURL_DISABLE_LDAPS != x1 ; then
 fi
 
 
 fi
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable ipv6" >&5
-$as_echo_n "checking whether to enable ipv6... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable IPv6" >&5
+$as_echo_n "checking whether to enable IPv6... " >&6; }
 # Check whether --enable-ipv6 was given.
 if test "${enable_ipv6+set}" = set; then :
   enableval=$enable_ipv6;  case "$enableval" in
 # Check whether --enable-ipv6 was given.
 if test "${enable_ipv6+set}" = set; then :
   enableval=$enable_ipv6;  case "$enableval" in
@@ -20904,6 +20967,7 @@ else
  /* is AF_INET6 available? */
 #include <sys/types.h>
 #include <sys/socket.h>
  /* is AF_INET6 available? */
 #include <sys/types.h>
 #include <sys/socket.h>
+#include <stdlib.h> /* for exit() */
 main()
 {
  if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
 main()
 {
  if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
@@ -21019,304 +21083,6 @@ esac
 
 
 
 
 
 
-# Check whether --with-krb4-includes was given.
-if test "${with_krb4_includes+set}" = set; then :
-  withval=$with_krb4_includes;
- CPPFLAGS="$CPPFLAGS -I$withval"
- KRB4INC="$withval"
- want_krb4=yes
-
-fi
-
-
-
-# Check whether --with-krb4-libs was given.
-if test "${with_krb4_libs+set}" = set; then :
-  withval=$with_krb4_libs;
- LDFLAGS="$LDFLAGS -L$withval"
- KRB4LIB="$withval"
- want_krb4=yes
-
-fi
-
-
-
-OPT_KRB4=off
-
-# Check whether --with-krb4 was given.
-if test "${with_krb4+set}" = set; then :
-  withval=$with_krb4;
-  OPT_KRB4="$withval"
-  if test X"$OPT_KRB4" != Xno; then
-    want_krb4="yes"
-    if test X"$OPT_KRB4" != Xyes; then
-      LDFLAGS="$LDFLAGS -L$OPT_KRB4/lib$libsuff"
-      KRB4LIB="$OPT_KRB4/lib$libsuff"
-      CPPFLAGS="$CPPFLAGS -I$OPT_KRB4/include"
-      KRB4INC="$OPT_KRB4/include"
-    fi
-  fi
-
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if Kerberos4 support is requested" >&5
-$as_echo_n "checking if Kerberos4 support is requested... " >&6; }
-
-if test "$want_krb4" = yes
-then
-  if test "$ipv6" = "yes"; then
-    echo krb4 is not compatible with IPv6
-    exit 1
-  fi
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to look for Kerberos4" >&5
-$as_echo_n "checking where to look for Kerberos4... " >&6; }
-  if test X"$OPT_KRB4" = Xyes
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: defaults" >&5
-$as_echo "defaults" >&6; }
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: libs in $KRB4LIB, headers in $KRB4INC" >&5
-$as_echo "libs in $KRB4LIB, headers in $KRB4INC" >&6; }
-  fi
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for des_pcbc_encrypt in -ldes" >&5
-$as_echo_n "checking for des_pcbc_encrypt in -ldes... " >&6; }
-if ${ac_cv_lib_des_des_pcbc_encrypt+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldes  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-#ifdef __cplusplus
-extern "C"
-#endif
-char des_pcbc_encrypt ();
-int main (void)
-{
-return des_pcbc_encrypt ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_des_des_pcbc_encrypt=yes
-else
-  ac_cv_lib_des_des_pcbc_encrypt=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_des_des_pcbc_encrypt" >&5
-$as_echo "$ac_cv_lib_des_des_pcbc_encrypt" >&6; }
-if test "x$ac_cv_lib_des_des_pcbc_encrypt" = xyes; then :
-
-    for ac_header in des.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "des.h" "ac_cv_header_des_h" "$ac_includes_default"
-if test "x$ac_cv_header_des_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_DES_H 1
-_ACEOF
-
-fi
-
-done
-
-
-        ac_fn_c_check_func "$LINENO" "res_search" "ac_cv_func_res_search"
-if test "x$ac_cv_func_res_search" = xyes; then :
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for res_search in -lresolv" >&5
-$as_echo_n "checking for res_search in -lresolv... " >&6; }
-if ${ac_cv_lib_resolv_res_search+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lresolv  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-#ifdef __cplusplus
-extern "C"
-#endif
-char res_search ();
-int main (void)
-{
-return res_search ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_resolv_res_search=yes
-else
-  ac_cv_lib_resolv_res_search=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_res_search" >&5
-$as_echo "$ac_cv_lib_resolv_res_search" >&6; }
-if test "x$ac_cv_lib_resolv_res_search" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBRESOLV 1
-_ACEOF
-
-  LIBS="-lresolv $LIBS"
-
-fi
-
-fi
-
-
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb_net_read in -lkrb" >&5
-$as_echo_n "checking for krb_net_read in -lkrb... " >&6; }
-if ${ac_cv_lib_krb_krb_net_read+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lkrb  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-#ifdef __cplusplus
-extern "C"
-#endif
-char krb_net_read ();
-int main (void)
-{
-return krb_net_read ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_krb_krb_net_read=yes
-else
-  ac_cv_lib_krb_krb_net_read=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_krb_krb_net_read" >&5
-$as_echo "$ac_cv_lib_krb_krb_net_read" >&6; }
-if test "x$ac_cv_lib_krb_krb_net_read" = xyes; then :
-
-            for ac_header in krb.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "krb.h" "ac_cv_header_krb_h" "$ac_includes_default"
-if test "x$ac_cv_header_krb_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_KRB_H 1
-_ACEOF
-
-fi
-
-done
-
-
-            LIBS="-lkrb -lcom_err -ldes $LIBS"
-
-                  for ac_func in krb_get_our_ip_for_realm
-do :
-  ac_fn_c_check_func "$LINENO" "krb_get_our_ip_for_realm" "ac_cv_func_krb_get_our_ip_for_realm"
-if test "x$ac_cv_func_krb_get_our_ip_for_realm" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_KRB_GET_OUR_IP_FOR_REALM 1
-_ACEOF
-
-fi
-done
-
-
-
-$as_echo "#define HAVE_KRB4 1" >>confdefs.h
-
-
-            KRB4_ENABLED=1
-
-
-      curl_krb4_msg="enabled"
-
-            for ac_func in strlcpy
-do :
-  ac_fn_c_check_func "$LINENO" "strlcpy" "ac_cv_func_strlcpy"
-if test "x$ac_cv_func_strlcpy" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_STRLCPY 1
-_ACEOF
-
-fi
-done
-
-
-
-fi
-
-
-fi
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
-# Check whether --with-spnego was given.
-if test "${with_spnego+set}" = set; then :
-  withval=$with_spnego;
-  SPNEGO_ROOT="$withval"
-  if test x"$SPNEGO_ROOT" != xno; then
-    want_spnego="yes"
-  fi
-
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if SPNEGO support is requested" >&5
-$as_echo_n "checking if SPNEGO support is requested... " >&6; }
-if test x"$want_spnego" = xyes; then
-
-  if test X"$SPNEGO_ROOT" = Xyes; then
-     as_fn_error $? "FBOpenSSL libs and/or directories were not found where specified!" "$LINENO" 5
-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  else
-     if test -z "$SPNEGO_LIB_DIR"; then
-        LDFLAGS="$LDFLAGS -L$SPNEGO_ROOT -lfbopenssl"
-     else
-        LDFLAGS="$LDFLAGS $SPNEGO_LIB_DIR"
-     fi
-
-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
-$as_echo "#define HAVE_SPNEGO 1" >>confdefs.h
-
-     curl_spnego_msg="enabled"
-  fi
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
 GSSAPI_ROOT="/usr"
 
 # Check whether --with-gssapi-includes was given.
 GSSAPI_ROOT="/usr"
 
 # Check whether --with-gssapi-includes was given.
 
 
 save_CPPFLAGS="$CPPFLAGS"
 
 
 save_CPPFLAGS="$CPPFLAGS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if GSSAPI support is requested" >&5
-$as_echo_n "checking if GSSAPI support is requested... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if GSS-API support is requested" >&5
+$as_echo_n "checking if GSS-API support is requested... " >&6; }
 if test x"$want_gss" = xyes; then
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 
   if test -z "$GSSAPI_INCS"; then
 if test x"$want_gss" = xyes; then
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 
   if test -z "$GSSAPI_INCS"; then
-     if test -f "$GSSAPI_ROOT/bin/krb5-config"; then
+     if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then
+        GSSAPI_INCS=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --cflags gssapi`
+     elif test -f "$GSSAPI_ROOT/bin/krb5-config"; then
         GSSAPI_INCS=`$GSSAPI_ROOT/bin/krb5-config --cflags gssapi`
      elif test "$GSSAPI_ROOT" != "yes"; then
         GSSAPI_INCS="-I$GSSAPI_ROOT/include"
         GSSAPI_INCS=`$GSSAPI_ROOT/bin/krb5-config --cflags gssapi`
      elif test "$GSSAPI_ROOT" != "yes"; then
         GSSAPI_INCS="-I$GSSAPI_ROOT/include"
@@ -21424,8 +21192,8 @@ $as_echo "#define HAVE_GSSHEIMDAL 1" >>confdefs.h
 else
 
                             want_gss=no
 else
 
                             want_gss=no
-              { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: disabling GSSAPI since no header files was found" >&5
-$as_echo "$as_me: WARNING: disabling GSSAPI since no header files was found" >&2;}
+              { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: disabling GSS-API support since no header files were found" >&5
+$as_echo "$as_me: WARNING: disabling GSS-API support since no header files were found" >&2;}
 
 
 fi
 
 
 fi
@@ -21435,8 +21203,8 @@ fi
 
 $as_echo "#define HAVE_GSSMIT 1" >>confdefs.h
 
 
 $as_echo "#define HAVE_GSSMIT 1" >>confdefs.h
 
-                { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gssapi headers declare GSS_C_NT_HOSTBASED_SERVICE" >&5
-$as_echo_n "checking if gssapi headers declare GSS_C_NT_HOSTBASED_SERVICE... " >&6; }
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking if GSS-API headers declare GSS_C_NT_HOSTBASED_SERVICE" >&5
+$as_echo_n "checking if GSS-API headers declare GSS_C_NT_HOSTBASED_SERVICE... " >&6; }
         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -21488,8 +21256,8 @@ if test x"$want_gss" = xyes; then
 
 $as_echo "#define HAVE_GSSAPI 1" >>confdefs.h
 
 
 $as_echo "#define HAVE_GSSAPI 1" >>confdefs.h
 
-
-  curl_gss_msg="enabled (MIT/Heimdal)"
+  HAVE_GSSAPI=1
+  curl_gss_msg="enabled (MIT Kerberos/Heimdal)"
 
   if test -n "$gnu_gss"; then
     curl_gss_msg="enabled (GNU GSS)"
 
   if test -n "$gnu_gss"; then
     curl_gss_msg="enabled (GNU GSS)"
@@ -21501,20 +21269,41 @@ $as_echo "#define HAVE_GSSAPI 1" >>confdefs.h
         LIBS="-lgssapi_krb5 -lresolv $LIBS"
         ;;
      *)
         LIBS="-lgssapi_krb5 -lresolv $LIBS"
         ;;
      *)
-        if test -f "$GSSAPI_ROOT/bin/krb5-config"; then
+        if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then
+                                 gss_libs=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --libs gssapi`
+           LIBS="$gss_libs $LIBS"
+        elif test -f "$GSSAPI_ROOT/bin/krb5-config"; then
                                  gss_libs=`$GSSAPI_ROOT/bin/krb5-config --libs gssapi`
            LIBS="$gss_libs $LIBS"
                                  gss_libs=`$GSSAPI_ROOT/bin/krb5-config --libs gssapi`
            LIBS="$gss_libs $LIBS"
-        elif test "$GSSAPI_ROOT" != "yes"; then
-           LDFLAGS="$LDFLAGS -L$GSSAPI_ROOT/lib$libsuff"
-           LIBS="-lgssapi $LIBS"
         else
         else
-           LIBS="-lgssapi $LIBS"
+           case $host in
+           *-hp-hpux*)
+              gss_libname="gss"
+              ;;
+           *)
+              gss_libname="gssapi"
+              ;;
+           esac
+
+           if test "$GSSAPI_ROOT" != "yes"; then
+              LDFLAGS="$LDFLAGS -L$GSSAPI_ROOT/lib$libsuff"
+              LIBS="-l$gss_libname $LIBS"
+           else
+              LIBS="-l$gss_libname $LIBS"
+           fi
         fi
         ;;
      esac
   else
      LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
         fi
         ;;
      esac
   else
      LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
-     LIBS="-lgssapi $LIBS"
+     case $host in
+     *-hp-hpux*)
+        LIBS="-lgss $LIBS"
+        ;;
+     *)
+        LIBS="-lgssapi $LIBS"
+        ;;
+     esac
   fi
 else
   CPPFLAGS="$save_CPPFLAGS"
   fi
 else
   CPPFLAGS="$save_CPPFLAGS"
       { $as_echo "$as_me:${as_lineno-$LINENO}: detected CyaSSL" >&5
 $as_echo "$as_me: detected CyaSSL" >&6;}
 
       { $as_echo "$as_me:${as_lineno-$LINENO}: detected CyaSSL" >&5
 $as_echo "$as_me: detected CyaSSL" >&6;}
 
+            # The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5
+$as_echo_n "checking size of long long... " >&6; }
+if ${ac_cv_sizeof_long_long+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long"        "$ac_includes_default"; then :
+
+else
+  if test "$ac_cv_type_long_long" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (long long)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_long_long=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5
+$as_echo "$ac_cv_sizeof_long_long" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long
+_ACEOF
+
+
+
+            for ac_header in cyassl/error-ssl.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "cyassl/error-ssl.h" "ac_cv_header_cyassl_error_ssl_h" "$ac_includes_default"
+if test "x$ac_cv_header_cyassl_error_ssl_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_CYASSL_ERROR_SSL_H 1
+_ACEOF
+
+fi
+
+done
+
+
       LIBS="-lcyassl -lm $LIBS"
 
       if test -n "$cyassllib"; then
       LIBS="-lcyassl -lm $LIBS"
 
       if test -n "$cyassllib"; then
@@ -23886,9 +23722,9 @@ $as_echo "found" >&6; }
          CPPFLAGS="$CPPFLAGS $addcflags"
       fi
 
          CPPFLAGS="$CPPFLAGS $addcflags"
       fi
 
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PK11_CreateGenericObject in -lnss3" >&5
-$as_echo_n "checking for PK11_CreateGenericObject in -lnss3... " >&6; }
-if ${ac_cv_lib_nss3_PK11_CreateGenericObject+:} false; then :
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL_VersionRangeSet in -lnss3" >&5
+$as_echo_n "checking for SSL_VersionRangeSet in -lnss3... " >&6; }
+if ${ac_cv_lib_nss3_SSL_VersionRangeSet+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -23900,26 +23736,26 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 #ifdef __cplusplus
 extern "C"
 #endif
 #ifdef __cplusplus
 extern "C"
 #endif
-char PK11_CreateGenericObject ();
+char SSL_VersionRangeSet ();
 int main (void)
 {
 int main (void)
 {
-return PK11_CreateGenericObject ();
+return SSL_VersionRangeSet ();
  ;
  return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
  ;
  return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_nss3_PK11_CreateGenericObject=yes
+  ac_cv_lib_nss3_SSL_VersionRangeSet=yes
 else
 else
-  ac_cv_lib_nss3_PK11_CreateGenericObject=no
+  ac_cv_lib_nss3_SSL_VersionRangeSet=no
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nss3_PK11_CreateGenericObject" >&5
-$as_echo "$ac_cv_lib_nss3_PK11_CreateGenericObject" >&6; }
-if test "x$ac_cv_lib_nss3_PK11_CreateGenericObject" = xyes; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nss3_SSL_VersionRangeSet" >&5
+$as_echo "$ac_cv_lib_nss3_SSL_VersionRangeSet" >&6; }
+if test "x$ac_cv_lib_nss3_SSL_VersionRangeSet" = xyes; then :
 
 
 $as_echo "#define USE_NSS 1" >>confdefs.h
 
 
 $as_echo "#define USE_NSS 1" >>confdefs.h
         { $as_echo "$as_me:${as_lineno-$LINENO}: detected NSS version $version" >&5
 $as_echo "$as_me: detected NSS version $version" >&6;}
 
         { $as_echo "$as_me:${as_lineno-$LINENO}: detected NSS version $version" >&5
 $as_echo "$as_me: detected NSS version $version" >&6;}
 
-                        ac_fn_c_check_func "$LINENO" "NSS_InitContext" "ac_cv_func_NSS_InitContext"
-if test "x$ac_cv_func_NSS_InitContext" = xyes; then :
-
-
-$as_echo "#define HAVE_NSS_INITCONTEXT 1" >>confdefs.h
-
-          HAVE_NSS_INITCONTEXT=1
-
-
-fi
+                NSS_LIBS=$addlib
 
 
                                         if test "x$cross_compiling" != "xyes"; then
 
 
                                         if test "x$cross_compiling" != "xyes"; then
@@ -24044,11 +23871,12 @@ $as_echo "#define USE_AXTLS 1" >>confdefs.h
       USE_AXTLS="yes"
       curl_ssl_msg="enabled (axTLS)"
 
       USE_AXTLS="yes"
       curl_ssl_msg="enabled (axTLS)"
 
-
-      LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_AXTLS"
-      export LD_LIBRARY_PATH
-      { $as_echo "$as_me:${as_lineno-$LINENO}: Added $LIB_AXTLS to LD_LIBRARY_PATH" >&5
+      if test "x$cross_compiling" != "xyes"; then
+        LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_AXTLS"
+        export LD_LIBRARY_PATH
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Added $LIB_AXTLS to LD_LIBRARY_PATH" >&5
 $as_echo "$as_me: Added $LIB_AXTLS to LD_LIBRARY_PATH" >&6;}
 $as_echo "$as_me: Added $LIB_AXTLS to LD_LIBRARY_PATH" >&6;}
+      fi
 
 else
 
 
 else
 
         ca="$want_ca"
     capath="no"
   elif test "x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then
         ca="$want_ca"
     capath="no"
   elif test "x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then
-        if test "x$OPENSSL_ENABLED" != "x1"; then
-      as_fn_error $? "--with-ca-path only works with openSSL" "$LINENO" 5
+        if test "x$OPENSSL_ENABLED" != "x1" -a "x$POLARSSL_ENABLED" != "x1"; then
+      as_fn_error $? "--with-ca-path only works with openSSL or PolarSSL" "$LINENO" 5
     fi
     capath="$want_capath"
     ca="no"
     fi
     capath="$want_capath"
     ca="no"
-  elif test "x$cross_compiling" != "xyes"; then
-
+  else
             ca="no"
     capath="no"
             ca="no"
     capath="no"
-    if test "x$want_ca" = "xunset"; then
-                        if test "x$prefix" != xNONE; then
-        cac="${prefix}/share/curl/curl-ca-bundle.crt"
-      else
-        cac="$ac_default_prefix/share/curl/curl-ca-bundle.crt"
-      fi
-
-      for a in /etc/ssl/certs/ca-certificates.crt \
-               /etc/pki/tls/certs/ca-bundle.crt \
-               /usr/share/ssl/certs/ca-bundle.crt \
-               /usr/local/share/certs/ca-root.crt \
-               /etc/ssl/cert.pem \
-               "$cac"; do
-        if test -f "$a"; then
-          ca="$a"
-          break
-        fi
-      done
-    fi
-    if test "x$want_capath" = "xunset" -a "x$ca" = "xno" -a \
-            "x$OPENSSL_ENABLED" = "x1"; then
-      for a in /etc/ssl/certs/; do
-        if test -d "$a" && ls "$a"/[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f].0 >/dev/null 2>/dev/null; then
-          capath="$a"
-          break
+    if test "x$cross_compiling" != "xyes"; then
+                  if test "x$want_ca" = "xunset"; then
+                                if test "x$prefix" != xNONE; then
+          cac="${prefix}/share/curl/curl-ca-bundle.crt"
+        else
+          cac="$ac_default_prefix/share/curl/curl-ca-bundle.crt"
         fi
         fi
-      done
-    fi
-  else
-        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: skipped the ca-cert path detection when cross-compiling" >&5
+
+        for a in /etc/ssl/certs/ca-certificates.crt \
+                 /etc/pki/tls/certs/ca-bundle.crt \
+                 /usr/share/ssl/certs/ca-bundle.crt \
+                 /usr/local/share/certs/ca-root.crt \
+                 /etc/ssl/cert.pem \
+                 "$cac"; do
+          if test -f "$a"; then
+            ca="$a"
+            break
+          fi
+        done
+      fi
+      if test "x$want_capath" = "xunset" -a "x$ca" = "xno" -a \
+              "x$OPENSSL_ENABLED" = "x1"; then
+        for a in /etc/ssl/certs/; do
+          if test -d "$a" && ls "$a"/[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f].0 >/dev/null 2>/dev/null; then
+            capath="$a"
+            break
+          fi
+        done
+      fi
+    else
+            { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: skipped the ca-cert path detection when cross-compiling" >&5
 $as_echo "$as_me: WARNING: skipped the ca-cert path detection when cross-compiling" >&2;}
 $as_echo "$as_me: WARNING: skipped the ca-cert path detection when cross-compiling" >&2;}
+    fi
   fi
 
   if test "x$ca" != "xno"; then
   fi
 
   if test "x$ca" != "xno"; then
@@ -24790,19 +24619,6 @@ done
   if test "$LIBSSH2_ENABLED" = "1"; then
     if test -n "$DIR_SSH2"; then
 
   if test "$LIBSSH2_ENABLED" = "1"; then
     if test -n "$DIR_SSH2"; then
 
-                                   for ac_func in libssh2_version libssh2_init libssh2_exit \
-                       libssh2_scp_send64 libssh2_session_handshake
-do :
-  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
        if test "x$cross_compiling" != "xyes"; then
          LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DIR_SSH2"
          export LD_LIBRARY_PATH
        if test "x$cross_compiling" != "xyes"; then
          LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DIR_SSH2"
          export LD_LIBRARY_PATH
@@ -25080,19 +24896,19 @@ $as_echo "$as_me: WARNING: You need an ld version supporting the --version-scrip
 $as_echo "yes" >&6; }
         if test "x$OPENSSL_ENABLED" = "x1"; then
           versioned_symbols_flavour="OPENSSL_"
 $as_echo "yes" >&6; }
         if test "x$OPENSSL_ENABLED" = "x1"; then
           versioned_symbols_flavour="OPENSSL_"
-        elif test "x$GNUTLS_ENABLED" == "x1"; then
+        elif test "x$GNUTLS_ENABLED" = "x1"; then
           versioned_symbols_flavour="GNUTLS_"
           versioned_symbols_flavour="GNUTLS_"
-        elif test "x$NSS_ENABLED" == "x1"; then
+        elif test "x$NSS_ENABLED" = "x1"; then
           versioned_symbols_flavour="NSS_"
           versioned_symbols_flavour="NSS_"
-        elif test "x$POLARSSL_ENABLED" == "x1"; then
+        elif test "x$POLARSSL_ENABLED" = "x1"; then
           versioned_symbols_flavour="POLARSSL_"
           versioned_symbols_flavour="POLARSSL_"
-        elif test "x$CYASSL_ENABLED" == "x1"; then
+        elif test "x$CYASSL_ENABLED" = "x1"; then
           versioned_symbols_flavour="CYASSL_"
           versioned_symbols_flavour="CYASSL_"
-        elif test "x$AXTLS_ENABLED" == "x1"; then
+        elif test "x$AXTLS_ENABLED" = "x1"; then
           versioned_symbols_flavour="AXTLS_"
           versioned_symbols_flavour="AXTLS_"
-        elif test "x$WINSSL_ENABLED" == "x1"; then
+        elif test "x$WINSSL_ENABLED" = "x1"; then
           versioned_symbols_flavour="WINSSL_"
           versioned_symbols_flavour="WINSSL_"
-        elif test "x$DARWINSSL_ENABLED" == "x1"; then
+        elif test "x$DARWINSSL_ENABLED" = "x1"; then
           versioned_symbols_flavour="DARWINSSL_"
         else
           versioned_symbols_flavour=""
           versioned_symbols_flavour="DARWINSSL_"
         else
           versioned_symbols_flavour=""
@@ -25715,7 +25531,7 @@ done
       IDN_ENABLED=1
 
       curl_idn_msg="enabled"
       IDN_ENABLED=1
 
       curl_idn_msg="enabled"
-      if test -n "$IDN_DIR"; then
+      if test -n "$IDN_DIR" -a "x$cross_compiling" != "xyes"; then
         LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$IDN_DIR"
         export LD_LIBRARY_PATH
         { $as_echo "$as_me:${as_lineno-$LINENO}: Added $IDN_DIR to LD_LIBRARY_PATH" >&5
         LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$IDN_DIR"
         export LD_LIBRARY_PATH
         { $as_echo "$as_me:${as_lineno-$LINENO}: Added $IDN_DIR to LD_LIBRARY_PATH" >&5
 
 
 
 
 
 
+OPT_H2="yes"
+
+# Check whether --with-nghttp2 was given.
+if test "${with_nghttp2+set}" = set; then :
+  withval=$with_nghttp2; OPT_H2=$withval
+fi
+
+case "$OPT_H2" in
+  no)
+        want_h2="no"
+    ;;
+  yes)
+        want_h2="default"
+    want_h2_path=""
+    ;;
+  *)
+        want_h2="yes"
+    want_h2_path="$withval/lib/pkgconfig"
+    ;;
+esac
+
+curl_h2_msg="disabled (--with-nghttp2)"
+if test X"$want_h2" != Xno; then
+    CLEANLDFLAGS="$LDFLAGS"
+  CLEANCPPFLAGS="$CPPFLAGS"
+  CLEANLIBS="$LIBS"
+
+
+
+    PKGCONFIG="no"
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PKGCONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PKGCONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$PATH:/usr/bin:/usr/local/bin"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PKGCONFIG=$ac_cv_path_PKGCONFIG
+if test -n "$PKGCONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5
+$as_echo "$PKGCONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_PKGCONFIG"; then
+  ac_pt_PKGCONFIG=$PKGCONFIG
+  # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_PKGCONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_PKGCONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$PATH:/usr/bin:/usr/local/bin"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG
+if test -n "$ac_pt_PKGCONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5
+$as_echo "$ac_pt_PKGCONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_PKGCONFIG" = x; then
+    PKGCONFIG="no"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    PKGCONFIG=$ac_pt_PKGCONFIG
+  fi
+else
+  PKGCONFIG="$ac_cv_path_PKGCONFIG"
+fi
+
+
+    if test x$PKGCONFIG != xno; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libnghttp2 options with pkg-config" >&5
+$as_echo_n "checking for libnghttp2 options with pkg-config... " >&6; }
+            itexists=`
+    if test -n "$want_h2_path"; then
+      PKG_CONFIG_LIBDIR="$want_h2_path"
+      export PKG_CONFIG_LIBDIR
+    fi
+         $PKGCONFIG --exists libnghttp2 >/dev/null 2>&1 && echo 1`
+
+      if test -z "$itexists"; then
+                        PKGCONFIG="no"
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5
+$as_echo "found" >&6; }
+      fi
+    fi
+
+
+  if test "$PKGCONFIG" != "no" ; then
+    LIB_H2=`
+    if test -n "$want_h2_path"; then
+      PKG_CONFIG_LIBDIR="$want_h2_path"
+      export PKG_CONFIG_LIBDIR
+    fi
+
+      $PKGCONFIG --libs-only-l libnghttp2`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: -l is $LIB_H2" >&5
+$as_echo "$as_me: -l is $LIB_H2" >&6;}
+
+    CPP_H2=`
+    if test -n "$want_h2_path"; then
+      PKG_CONFIG_LIBDIR="$want_h2_path"
+      export PKG_CONFIG_LIBDIR
+    fi
+       $PKGCONFIG --cflags-only-I libnghttp2`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: -I is $CPP_H2" >&5
+$as_echo "$as_me: -I is $CPP_H2" >&6;}
+
+    LD_H2=`
+    if test -n "$want_h2_path"; then
+      PKG_CONFIG_LIBDIR="$want_h2_path"
+      export PKG_CONFIG_LIBDIR
+    fi
+
+      $PKGCONFIG --libs-only-L libnghttp2`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: -L is $LD_H2" >&5
+$as_echo "$as_me: -L is $LD_H2" >&6;}
+
+    LDFLAGS="$LDFLAGS $LD_H2"
+    CPPFLAGS="$CPPFLAGS $CPP_H2"
+    LIBS="$LIB_H2 $LIBS"
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nghttp2_session_callbacks_set_send_callback in -lnghttp2" >&5
+$as_echo_n "checking for nghttp2_session_callbacks_set_send_callback in -lnghttp2... " >&6; }
+if ${ac_cv_lib_nghttp2_nghttp2_session_callbacks_set_send_callback+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lnghttp2  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+#ifdef __cplusplus
+extern "C"
+#endif
+char nghttp2_session_callbacks_set_send_callback ();
+int main (void)
+{
+return nghttp2_session_callbacks_set_send_callback ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_nghttp2_nghttp2_session_callbacks_set_send_callback=yes
+else
+  ac_cv_lib_nghttp2_nghttp2_session_callbacks_set_send_callback=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nghttp2_nghttp2_session_callbacks_set_send_callback" >&5
+$as_echo "$ac_cv_lib_nghttp2_nghttp2_session_callbacks_set_send_callback" >&6; }
+if test "x$ac_cv_lib_nghttp2_nghttp2_session_callbacks_set_send_callback" = xyes; then :
+
+       for ac_header in nghttp2/nghttp2.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "nghttp2/nghttp2.h" "ac_cv_header_nghttp2_nghttp2_h" "$ac_includes_default"
+if test "x$ac_cv_header_nghttp2_nghttp2_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_NGHTTP2_NGHTTP2_H 1
+_ACEOF
+ curl_h2_msg="enabled (nghttp2)"
+          NGHTTP2_ENABLED=1
+
+$as_echo "#define USE_NGHTTP2 1" >>confdefs.h
+
+          USE_NGHTTP2=1
+
+
+fi
+
+done
+
+
+else
+          LDFLAGS=$CLEANLDFLAGS
+        CPPFLAGS=$CLEANCPPFLAGS
+        LIBS=$CLEANLIBS
+
+fi
+
+
+  else
+        if test X"$want_h2" != Xdefault; then
+                  as_fn_error $? "--with-nghttp2 was specified but could not find libnghttp2 pkg-config file." "$LINENO" 5
+    fi
+  fi
+
+fi
+
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
 $as_echo_n "checking for ANSI C header files... " >&6; }
 if ${ac_cv_header_stdc+:} false; then :
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
 $as_echo_n "checking for ANSI C header files... " >&6; }
 if ${ac_cv_header_stdc+:} false; then :
@@ -34351,7 +34426,7 @@ $as_echo "no" >&6; }
   tst_allow_poll="unknown"
   #
   case $host_os in
   tst_allow_poll="unknown"
   #
   case $host_os in
-    darwin*|interix*)
+    darwin[123456789].*|darwin10.*|darwin11.*|darwin12.*|interix*)
                               curl_disallow_poll="yes"
       ;;
   esac
                               curl_disallow_poll="yes"
       ;;
   esac
@@ -37836,8 +37911,10 @@ for ac_func in fork \
   getppid \
   getprotobyname \
   getpwuid \
   getppid \
   getprotobyname \
   getpwuid \
+  getpwuid_r \
   getrlimit \
   gettimeofday \
   getrlimit \
   gettimeofday \
+  if_nametoindex \
   inet_addr \
   perror \
   pipe \
   inet_addr \
   perror \
   pipe \
@@ -38835,6 +38912,7 @@ $as_echo "no" >&6; }
 
 $as_echo "#define CURL_DISABLE_CRYPTO_AUTH 1" >>confdefs.h
 
 
 $as_echo "#define CURL_DISABLE_CRYPTO_AUTH 1" >>confdefs.h
 
+       CURL_DISABLE_CRYPTO_AUTH=1
        ;;
   *)   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
        ;;
   *)   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
@@ -38928,6 +39006,53 @@ $as_echo "#define USE_TLS_SRP 1" >>confdefs.h
    curl_tls_srp_msg="enabled"
 fi
 
    curl_tls_srp_msg="enabled"
 fi
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable Unix domain sockets" >&5
+$as_echo_n "checking whether to enable Unix domain sockets... " >&6; }
+# Check whether --enable-unix-sockets was given.
+if test "${enable_unix_sockets+set}" = set; then :
+  enableval=$enable_unix_sockets;  case "$enableval" in
+  no)  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+       want_unix_sockets=no
+       ;;
+  *)   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+       want_unix_sockets=yes
+       ;;
+  esac
+else
+
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: auto" >&5
+$as_echo "auto" >&6; }
+       want_unix_sockets=auto
+
+
+fi
+
+if test "x$want_unix_sockets" != "xno"; then
+  ac_fn_c_check_member "$LINENO" "struct sockaddr_un" "sun_path" "ac_cv_member_struct_sockaddr_un_sun_path" "
+    #include <sys/un.h>
+
+"
+if test "x$ac_cv_member_struct_sockaddr_un_sun_path" = xyes; then :
+
+
+$as_echo "#define USE_UNIX_SOCKETS 1" >>confdefs.h
+
+    USE_UNIX_SOCKETS=1
+
+    curl_unix_sockets_msg="enabled"
+
+else
+
+    if test "x$want_unix_sockets" = "xyes"; then
+      as_fn_error $? "--enable-unix-sockets is not available on this platform!" "$LINENO" 5
+    fi
+
+fi
+
+fi
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable support for cookies" >&5
 $as_echo_n "checking whether to enable support for cookies... " >&6; }
 # Check whether --enable-cookies was given.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable support for cookies" >&5
 $as_echo_n "checking whether to enable support for cookies... " >&6; }
 # Check whether --enable-cookies was given.
@@ -39044,12 +39169,12 @@ if test "x$USE_SSLEAY" = "x1"; then
 elif test -n "$SSL_ENABLED"; then
   SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
 fi
 elif test -n "$SSL_ENABLED"; then
   SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
 fi
-if test "@KRB4_ENABLED@" = "x1"; then
-  SUPPORT_FEATURES="$SUPPORT_FEATURES KRB4"
-fi
 if test "x$IPV6_ENABLED" = "x1"; then
   SUPPORT_FEATURES="$SUPPORT_FEATURES IPv6"
 fi
 if test "x$IPV6_ENABLED" = "x1"; then
   SUPPORT_FEATURES="$SUPPORT_FEATURES IPv6"
 fi
+if test "x$USE_UNIX_SOCKETS" = "x1"; then
+  SUPPORT_FEATURES="$SUPPORT_FEATURES UnixSockets"
+fi
 if test "x$HAVE_LIBZ" = "x1"; then
   SUPPORT_FEATURES="$SUPPORT_FEATURES libz"
 fi
 if test "x$HAVE_LIBZ" = "x1"; then
   SUPPORT_FEATURES="$SUPPORT_FEATURES libz"
 fi
 if test "x$USE_WINDOWS_SSPI" = "x1"; then
   SUPPORT_FEATURES="$SUPPORT_FEATURES SSPI"
 fi
 if test "x$USE_WINDOWS_SSPI" = "x1"; then
   SUPPORT_FEATURES="$SUPPORT_FEATURES SSPI"
 fi
-if test "x$CURL_DISABLE_HTTP" != "x1"; then
+
+if test "x$HAVE_GSSAPI" = "x1"; then
+  SUPPORT_FEATURES="$SUPPORT_FEATURES GSS-API"
+fi
+
+if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" -a \
+    \( "x$HAVE_GSSAPI" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \); then
+  SUPPORT_FEATURES="$SUPPORT_FEATURES SPNEGO"
+fi
+
+if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" -a \
+    \( "x$HAVE_GSSAPI" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \); then
+  SUPPORT_FEATURES="$SUPPORT_FEATURES Kerberos"
+fi
+
+if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1"; then
   if test "x$USE_SSLEAY" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
       -o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1" \
       -o "x$DARWINSSL_ENABLED" = "x1"; then
     SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM"
   if test "x$USE_SSLEAY" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
       -o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1" \
       -o "x$DARWINSSL_ENABLED" = "x1"; then
     SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM"
-    if test "x$NTLM_WB_ENABLED" = "x1"; then
+
+    if test "x$CURL_DISABLE_HTTP" != "x1" -a \
+        "x$NTLM_WB_ENABLED" = "x1"; then
       SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM_WB"
     fi
   fi
 fi
       SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM_WB"
     fi
   fi
 fi
+
 if test "x$USE_TLS_SRP" = "x1"; then
   SUPPORT_FEATURES="$SUPPORT_FEATURES TLS-SRP"
 fi
 
 if test "x$USE_TLS_SRP" = "x1"; then
   SUPPORT_FEATURES="$SUPPORT_FEATURES TLS-SRP"
 fi
 
+if test "x$USE_NGHTTP2" = "x1"; then
+  SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP2"
+fi
+
 
 
 if test "x$CURL_DISABLE_HTTP" != "x1"; then
 
 
 if test "x$CURL_DISABLE_HTTP" != "x1"; then
@@ -39126,6 +39273,16 @@ if test "x$CURL_DISABLE_IMAP" != "x1"; then
     SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAPS"
   fi
 fi
     SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAPS"
   fi
 fi
+if test "x$CURL_DISABLE_SMB" != "x1" \
+    -a "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" \
+    -a \( "x$USE_SSLEAY" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
+      -o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1" \
+      -o "x$DARWINSSL_ENABLED" = "x1" \); then
+  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMB"
+  if test "x$SSL_ENABLED" = "x1"; then
+    SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMBS"
+  fi
+fi
 if test "x$CURL_DISABLE_SMTP" != "x1"; then
   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTP"
   if test "x$SSL_ENABLED" = "x1"; then
 if test "x$CURL_DISABLE_SMTP" != "x1"; then
   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTP"
   if test "x$SSL_ENABLED" = "x1"; then
@@ -39334,7 +39491,7 @@ if test "x$want_curldebug_assumed" = "xyes" &&
   ac_configure_args="$ac_configure_args --enable-curldebug"
 fi
 
   ac_configure_args="$ac_configure_args --enable-curldebug"
 fi
 
-ac_config_files="$ac_config_files Makefile docs/Makefile docs/examples/Makefile docs/libcurl/Makefile include/Makefile include/curl/Makefile src/Makefile lib/Makefile lib/libcurl.vers tests/Makefile tests/certs/Makefile tests/certs/scripts/Makefile tests/data/Makefile tests/server/Makefile tests/libtest/Makefile tests/unit/Makefile packages/Makefile packages/Win32/Makefile packages/Win32/cygwin/Makefile packages/Linux/Makefile packages/Linux/RPM/Makefile packages/Linux/RPM/curl.spec packages/Linux/RPM/curl-ssl.spec packages/Solaris/Makefile packages/EPM/curl.list packages/EPM/Makefile packages/vms/Makefile packages/AIX/Makefile packages/AIX/RPM/Makefile packages/AIX/RPM/curl.spec curl-config libcurl.pc"
+ac_config_files="$ac_config_files Makefile docs/Makefile docs/examples/Makefile docs/libcurl/Makefile docs/libcurl/opts/Makefile include/Makefile include/curl/Makefile src/Makefile lib/Makefile lib/libcurl.vers tests/Makefile tests/certs/Makefile tests/certs/scripts/Makefile tests/data/Makefile tests/server/Makefile tests/libtest/Makefile tests/unit/Makefile packages/Makefile packages/Win32/Makefile packages/Win32/cygwin/Makefile packages/Linux/Makefile packages/Linux/RPM/Makefile packages/Linux/RPM/curl.spec packages/Linux/RPM/curl-ssl.spec packages/Solaris/Makefile packages/EPM/curl.list packages/EPM/Makefile packages/vms/Makefile packages/AIX/Makefile packages/AIX/RPM/Makefile packages/AIX/RPM/curl.spec curl-config libcurl.pc"
 
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
@@ -40408,6 +40565,7 @@ do
     "docs/Makefile") CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;;
     "docs/examples/Makefile") CONFIG_FILES="$CONFIG_FILES docs/examples/Makefile" ;;
     "docs/libcurl/Makefile") CONFIG_FILES="$CONFIG_FILES docs/libcurl/Makefile" ;;
     "docs/Makefile") CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;;
     "docs/examples/Makefile") CONFIG_FILES="$CONFIG_FILES docs/examples/Makefile" ;;
     "docs/libcurl/Makefile") CONFIG_FILES="$CONFIG_FILES docs/libcurl/Makefile" ;;
+    "docs/libcurl/opts/Makefile") CONFIG_FILES="$CONFIG_FILES docs/libcurl/opts/Makefile" ;;
     "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;;
     "include/curl/Makefile") CONFIG_FILES="$CONFIG_FILES include/curl/Makefile" ;;
     "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
     "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;;
     "include/curl/Makefile") CONFIG_FILES="$CONFIG_FILES include/curl/Makefile" ;;
     "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
@@ -41974,6 +42132,109 @@ _EOF
 
 
 
 
 
 
+## ---------------------------------- ##
+##  Start of distclean amending code  ##
+## ---------------------------------- ##
+
+for xc_subdir in lib src tests/unit tests/server tests/libtest docs/examples
+do
+
+if test ! -f "$xc_subdir/Makefile"; then
+  echo "$xc_msg_err $xc_subdir/Makefile file not found. $xc_msg_abrt" >&2
+  exit 1
+fi
+
+# Fetch dependency tracking file list from Makefile include lines.
+
+xc_inc_lines=`grep '^include .*(DEPDIR)' "$xc_subdir/Makefile" 2>/dev/null`
+xc_cnt_words=`echo "$xc_inc_lines" | wc -w | tr -d "$xc_space$xc_tab"`
+
+# --disable-dependency-tracking might have been used, consequently
+# there is nothing to amend without a dependency tracking file list.
+
+if test $xc_cnt_words -gt 0; then
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: amending $xc_subdir/Makefile" >&5
+$as_echo "$as_me: amending $xc_subdir/Makefile" >&6;}
+
+# Build Makefile specific patch hunk.
+
+xc_p="$xc_subdir/xc_patch.tmp"
+
+xc_rm_depfiles=`echo "$xc_inc_lines" \
+  | $SED 's%include%   -rm -f%' 2>/dev/null`
+
+xc_dep_subdirs=`echo "$xc_inc_lines" \
+  | $SED 's%include[ ][ ]*%%' 2>/dev/null \
+  | $SED 's%(DEPDIR)/.*%(DEPDIR)%' 2>/dev/null \
+  | sort | uniq`
+
+echo "$xc_rm_depfiles" >$xc_p
+
+for xc_dep_dir in $xc_dep_subdirs; do
+  echo "${xc_tab}@xm_dep_cnt=\`ls $xc_dep_dir | wc -l 2>/dev/null\`; \\"            >>$xc_p
+  echo "${xc_tab}if test \$\$xm_dep_cnt -eq 0 && test -d $xc_dep_dir; then \\"      >>$xc_p
+  echo "${xc_tab}  rm -rf $xc_dep_dir; \\"                                          >>$xc_p
+  echo "${xc_tab}fi"                                                                >>$xc_p
+done
+
+# Build Makefile patching sed scripts.
+
+xc_s1="$xc_subdir/xc_script_1.tmp"
+xc_s2="$xc_subdir/xc_script_2.tmp"
+xc_s3="$xc_subdir/xc_script_3.tmp"
+
+cat >$xc_s1 <<\_EOT
+/^distclean[ ]*:/,/^[^ ][^     ]*:/{
+  s/^.*(DEPDIR)/___xc_depdir_line___/
+}
+/^maintainer-clean[ ]*:/,/^[^  ][^     ]*:/{
+  s/^.*(DEPDIR)/___xc_depdir_line___/
+}
+_EOT
+
+cat >$xc_s2 <<\_EOT
+/___xc_depdir_line___$/{
+  N
+  /___xc_depdir_line___$/D
+}
+_EOT
+
+cat >$xc_s3 <<_EOT
+/^___xc_depdir_line___/{
+  r $xc_p
+  d
+}
+_EOT
+
+# Apply patch to Makefile and cleanup.
+
+$SED -f "$xc_s1" "$xc_subdir/Makefile"      >"$xc_subdir/Makefile.tmp1"
+$SED -f "$xc_s2" "$xc_subdir/Makefile.tmp1" >"$xc_subdir/Makefile.tmp2"
+$SED -f "$xc_s3" "$xc_subdir/Makefile.tmp2" >"$xc_subdir/Makefile.tmp3"
+
+if test -f "$xc_subdir/Makefile.tmp3"; then
+  mv -f "$xc_subdir/Makefile.tmp3" "$xc_subdir/Makefile"
+fi
+
+test -f "$xc_subdir/Makefile.tmp1" && rm -f "$xc_subdir/Makefile.tmp1"
+test -f "$xc_subdir/Makefile.tmp2" && rm -f "$xc_subdir/Makefile.tmp2"
+test -f "$xc_subdir/Makefile.tmp3" && rm -f "$xc_subdir/Makefile.tmp3"
+
+test -f "$xc_p"  && rm -f "$xc_p"
+test -f "$xc_s1" && rm -f "$xc_s1"
+test -f "$xc_s2" && rm -f "$xc_s2"
+test -f "$xc_s3" && rm -f "$xc_s3"
+
+fi
+
+done
+
+## -------------------------------- ##
+##  End of distclean amending code  ##
+## -------------------------------- ##
+
+
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: Configured to build curl/libcurl:
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: Configured to build curl/libcurl:
 
@@ -41984,12 +42245,11 @@ _EOF
   SSL support:      ${curl_ssl_msg}
   SSH support:      ${curl_ssh_msg}
   zlib support:     ${curl_zlib_msg}
   SSL support:      ${curl_ssl_msg}
   SSH support:      ${curl_ssh_msg}
   zlib support:     ${curl_zlib_msg}
-  krb4 support:     ${curl_krb4_msg}
-  GSSAPI support:   ${curl_gss_msg}
-  SPNEGO support:   ${curl_spnego_msg}
+  GSS-API support:  ${curl_gss_msg}
   TLS-SRP support:  ${curl_tls_srp_msg}
   resolver:         ${curl_res_msg}
   TLS-SRP support:  ${curl_tls_srp_msg}
   resolver:         ${curl_res_msg}
-  ipv6 support:     ${curl_ipv6_msg}
+  IPv6 support:     ${curl_ipv6_msg}
+  Unix sockets support: ${curl_unix_sockets_msg}
   IDN support:      ${curl_idn_msg}
   Build libcurl:    Shared=${enable_shared}, Static=${enable_static}
   Built-in manual:  ${curl_manual_msg}
   IDN support:      ${curl_idn_msg}
   Build libcurl:    Shared=${enable_shared}, Static=${enable_static}
   Built-in manual:  ${curl_manual_msg}
@@ -42003,6 +42263,7 @@ _EOF
   RTSP support:     ${curl_rtsp_msg}
   RTMP support:     ${curl_rtmp_msg}
   metalink support: ${curl_mtlnk_msg}
   RTSP support:     ${curl_rtsp_msg}
   RTMP support:     ${curl_rtmp_msg}
   metalink support: ${curl_mtlnk_msg}
+  HTTP2 support:    ${curl_h2_msg}
   Protocols:        ${SUPPORT_PROTOCOLS}
 " >&5
 $as_echo "$as_me: Configured to build curl/libcurl:
   Protocols:        ${SUPPORT_PROTOCOLS}
 " >&5
 $as_echo "$as_me: Configured to build curl/libcurl:
@@ -42014,12 +42275,11 @@ $as_echo "$as_me: Configured to build curl/libcurl:
   SSL support:      ${curl_ssl_msg}
   SSH support:      ${curl_ssh_msg}
   zlib support:     ${curl_zlib_msg}
   SSL support:      ${curl_ssl_msg}
   SSH support:      ${curl_ssh_msg}
   zlib support:     ${curl_zlib_msg}
-  krb4 support:     ${curl_krb4_msg}
-  GSSAPI support:   ${curl_gss_msg}
-  SPNEGO support:   ${curl_spnego_msg}
+  GSS-API support:  ${curl_gss_msg}
   TLS-SRP support:  ${curl_tls_srp_msg}
   resolver:         ${curl_res_msg}
   TLS-SRP support:  ${curl_tls_srp_msg}
   resolver:         ${curl_res_msg}
-  ipv6 support:     ${curl_ipv6_msg}
+  IPv6 support:     ${curl_ipv6_msg}
+  Unix sockets support: ${curl_unix_sockets_msg}
   IDN support:      ${curl_idn_msg}
   Build libcurl:    Shared=${enable_shared}, Static=${enable_static}
   Built-in manual:  ${curl_manual_msg}
   IDN support:      ${curl_idn_msg}
   Build libcurl:    Shared=${enable_shared}, Static=${enable_static}
   Built-in manual:  ${curl_manual_msg}
@@ -42033,6 +42293,7 @@ $as_echo "$as_me: Configured to build curl/libcurl:
   RTSP support:     ${curl_rtsp_msg}
   RTMP support:     ${curl_rtmp_msg}
   metalink support: ${curl_mtlnk_msg}
   RTSP support:     ${curl_rtsp_msg}
   RTMP support:     ${curl_rtmp_msg}
   metalink support: ${curl_mtlnk_msg}
+  HTTP2 support:    ${curl_h2_msg}
   Protocols:        ${SUPPORT_PROTOCOLS}
 " >&6;}
 
   Protocols:        ${SUPPORT_PROTOCOLS}
 " >&6;}
 
index 00ffe5c..a1b560c 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -31,7 +31,7 @@ XC_OVR_ZZ60
 CURL_OVERRIDE_AUTOCONF
 
 dnl configure script copyright
 CURL_OVERRIDE_AUTOCONF
 
 dnl configure script copyright
-AC_COPYRIGHT([Copyright (c) 1998 - 2013 Daniel Stenberg, <daniel@haxx.se>
+AC_COPYRIGHT([Copyright (c) 1998 - 2014 Daniel Stenberg, <daniel@haxx.se>
 This configure script may be copied, distributed and modified under the
 terms of the curl license; see COPYING for more details])
 
 This configure script may be copied, distributed and modified under the
 terms of the curl license; see COPYING for more details])
 
@@ -150,12 +150,11 @@ dnl initialize all the info variables
     curl_ssl_msg="no      (--with-{ssl,gnutls,nss,polarssl,cyassl,axtls,winssl,darwinssl} )"
     curl_ssh_msg="no      (--with-libssh2)"
    curl_zlib_msg="no      (--with-zlib)"
     curl_ssl_msg="no      (--with-{ssl,gnutls,nss,polarssl,cyassl,axtls,winssl,darwinssl} )"
     curl_ssh_msg="no      (--with-libssh2)"
    curl_zlib_msg="no      (--with-zlib)"
-   curl_krb4_msg="no      (--with-krb4*)"
     curl_gss_msg="no      (--with-gssapi)"
     curl_gss_msg="no      (--with-gssapi)"
- curl_spnego_msg="no      (--with-spnego)"
 curl_tls_srp_msg="no      (--enable-tls-srp)"
     curl_res_msg="default (--enable-ares / --enable-threaded-resolver)"
    curl_ipv6_msg="no      (--enable-ipv6)"
 curl_tls_srp_msg="no      (--enable-tls-srp)"
     curl_res_msg="default (--enable-ares / --enable-threaded-resolver)"
    curl_ipv6_msg="no      (--enable-ipv6)"
+curl_unix_sockets_msg="no      (--enable-unix-sockets)"
     curl_idn_msg="no      (--with-{libidn,winidn})"
  curl_manual_msg="no      (--enable-manual)"
 curl_libcurl_msg="enabled (--disable-libcurl-option)"
     curl_idn_msg="no      (--with-{libidn,winidn})"
  curl_manual_msg="no      (--enable-manual)"
 curl_libcurl_msg="enabled (--disable-libcurl-option)"
@@ -576,6 +575,22 @@ AC_HELP_STRING([--disable-imap],[Disable IMAP support]),
 )
 
 
 )
 
 
+AC_MSG_CHECKING([whether to support smb])
+AC_ARG_ENABLE(smb,
+AC_HELP_STRING([--enable-smb],[Enable SMB/CIFS support])
+AC_HELP_STRING([--disable-smb],[Disable SMB/CIFS support]),
+[ case "$enableval" in
+  no)
+       AC_MSG_RESULT(no)
+       AC_DEFINE(CURL_DISABLE_SMB, 1, [to disable SMB/CIFS])
+       AC_SUBST(CURL_DISABLE_SMB, [1])
+       ;;
+  *)   AC_MSG_RESULT(yes)
+       ;;
+  esac ],
+       AC_MSG_RESULT(yes)
+)
+
 AC_MSG_CHECKING([whether to support smtp])
 AC_ARG_ENABLE(smtp,
 AC_HELP_STRING([--enable-smtp],[Enable SMTP support])
 AC_MSG_CHECKING([whether to support smtp])
 AC_ARG_ENABLE(smtp,
 AC_HELP_STRING([--enable-smtp],[Enable SMTP support])
@@ -1049,10 +1064,10 @@ dnl **********************************************************************
 dnl Checks for IPv6
 dnl **********************************************************************
 
 dnl Checks for IPv6
 dnl **********************************************************************
 
-AC_MSG_CHECKING([whether to enable ipv6])
+AC_MSG_CHECKING([whether to enable IPv6])
 AC_ARG_ENABLE(ipv6,
 AC_ARG_ENABLE(ipv6,
-AC_HELP_STRING([--enable-ipv6],[Enable ipv6 (with ipv4) support])
-AC_HELP_STRING([--disable-ipv6],[Disable ipv6 support]),
+AC_HELP_STRING([--enable-ipv6],[Enable IPv6 (with IPv4) support])
+AC_HELP_STRING([--disable-ipv6],[Disable IPv6 support]),
 [ case "$enableval" in
   no)
        AC_MSG_RESULT(no)
 [ case "$enableval" in
   no)
        AC_MSG_RESULT(no)
@@ -1066,6 +1081,7 @@ AC_HELP_STRING([--disable-ipv6],[Disable ipv6 support]),
   AC_TRY_RUN([ /* is AF_INET6 available? */
 #include <sys/types.h>
 #include <sys/socket.h>
   AC_TRY_RUN([ /* is AF_INET6 available? */
 #include <sys/types.h>
 #include <sys/socket.h>
+#include <stdlib.h> /* for exit() */
 main()
 {
  if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
 main()
 {
  if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
@@ -1135,159 +1151,29 @@ no)
 esac
 
 dnl **********************************************************************
 esac
 
 dnl **********************************************************************
-dnl Check for the presence of Kerberos4 libraries and headers
-dnl **********************************************************************
-
-AC_ARG_WITH(krb4-includes,
-AC_HELP_STRING([--with-krb4-includes=DIR],
-               [Specify location of kerberos4 headers]),[
- CPPFLAGS="$CPPFLAGS -I$withval"
- KRB4INC="$withval"
- want_krb4=yes
- ])
-
-AC_ARG_WITH(krb4-libs,
-AC_HELP_STRING([--with-krb4-libs=DIR],[Specify location of kerberos4 libs]),[
- LDFLAGS="$LDFLAGS -L$withval"
- KRB4LIB="$withval"
- want_krb4=yes
- ])
-
-
-OPT_KRB4=off
-AC_ARG_WITH(krb4,dnl
-AC_HELP_STRING([--with-krb4=DIR],[where to look for Kerberos4]),[
-  OPT_KRB4="$withval"
-  if test X"$OPT_KRB4" != Xno; then
-    want_krb4="yes"
-    if test X"$OPT_KRB4" != Xyes; then
-      LDFLAGS="$LDFLAGS -L$OPT_KRB4/lib$libsuff"
-      KRB4LIB="$OPT_KRB4/lib$libsuff"
-      CPPFLAGS="$CPPFLAGS -I$OPT_KRB4/include"
-      KRB4INC="$OPT_KRB4/include"
-    fi
-  fi
- ])
-
-AC_MSG_CHECKING([if Kerberos4 support is requested])
-
-if test "$want_krb4" = yes
-then
-  if test "$ipv6" = "yes"; then
-    echo krb4 is not compatible with IPv6
-    exit 1
-  fi
-  AC_MSG_RESULT(yes)
-
-  dnl Check for & handle argument to --with-krb4
-
-  AC_MSG_CHECKING(where to look for Kerberos4)
-  if test X"$OPT_KRB4" = Xyes
-  then
-    AC_MSG_RESULT([defaults])
-  else
-    AC_MSG_RESULT([libs in $KRB4LIB, headers in $KRB4INC])
-  fi
-
-  dnl Check for DES library
-  AC_CHECK_LIB(des, des_pcbc_encrypt,
-  [
-    AC_CHECK_HEADERS(des.h)
-
-    dnl resolv lib?
-    AC_CHECK_FUNC(res_search, , [AC_CHECK_LIB(resolv, res_search)])
-
-    dnl Check for the Kerberos4 library
-    AC_CHECK_LIB(krb, krb_net_read,
-    [
-      dnl Check for header files
-      AC_CHECK_HEADERS(krb.h)
-
-      dnl we found the required libraries, add to LIBS
-      LIBS="-lkrb -lcom_err -ldes $LIBS"
-
-      dnl Check for function krb_get_our_ip_for_realm
-      dnl this is needed for NAT networks
-      AC_CHECK_FUNCS(krb_get_our_ip_for_realm)
-
-      dnl add define KRB4
-      AC_DEFINE(HAVE_KRB4, 1,
-      [if you have the Kerberos4 libraries (including -ldes)])
-
-      dnl substitute it too!
-      KRB4_ENABLED=1
-      AC_SUBST(KRB4_ENABLED)
-
-      curl_krb4_msg="enabled"
-
-      dnl the krb4 stuff needs a strlcpy()
-      AC_CHECK_FUNCS(strlcpy)
-
-    ])
-  ])
-else
-  AC_MSG_RESULT(no)
-fi
-
-dnl **********************************************************************
-dnl Check for FBopenssl(SPNEGO) libraries
-dnl **********************************************************************
-
-AC_ARG_WITH(spnego,
-  AC_HELP_STRING([--with-spnego=DIR],
-                 [Specify location of SPNEGO library fbopenssl]), [
-  SPNEGO_ROOT="$withval"
-  if test x"$SPNEGO_ROOT" != xno; then
-    want_spnego="yes"
-  fi
-])
-
-AC_MSG_CHECKING([if SPNEGO support is requested])
-if test x"$want_spnego" = xyes; then
-
-  if test X"$SPNEGO_ROOT" = Xyes; then
-     AC_MSG_ERROR([FBOpenSSL libs and/or directories were not found where specified!])
-     AC_MSG_RESULT(no)
-  else
-     if test -z "$SPNEGO_LIB_DIR"; then
-        LDFLAGS="$LDFLAGS -L$SPNEGO_ROOT -lfbopenssl"
-     else
-        LDFLAGS="$LDFLAGS $SPNEGO_LIB_DIR"
-     fi
-
-     AC_MSG_RESULT(yes)
-     AC_DEFINE(HAVE_SPNEGO, 1,
-               [Define this if you have the SPNEGO library fbopenssl])
-     curl_spnego_msg="enabled"
-  fi
-else
-  AC_MSG_RESULT(no)
-fi
-
-dnl **********************************************************************
 dnl Check for GSS-API libraries
 dnl **********************************************************************
 
 dnl Check for GSS-API libraries
 dnl **********************************************************************
 
-dnl check for gss stuff in the /usr as default
+dnl check for GSS-API stuff in the /usr as default
 
 GSSAPI_ROOT="/usr"
 AC_ARG_WITH(gssapi-includes,
   AC_HELP_STRING([--with-gssapi-includes=DIR],
 
 GSSAPI_ROOT="/usr"
 AC_ARG_WITH(gssapi-includes,
   AC_HELP_STRING([--with-gssapi-includes=DIR],
-                 [Specify location of GSSAPI header]),
+                 [Specify location of GSS-API headers]),
   [ GSSAPI_INCS="-I$withval"
     want_gss="yes" ]
 )
 
 AC_ARG_WITH(gssapi-libs,
   AC_HELP_STRING([--with-gssapi-libs=DIR],
   [ GSSAPI_INCS="-I$withval"
     want_gss="yes" ]
 )
 
 AC_ARG_WITH(gssapi-libs,
   AC_HELP_STRING([--with-gssapi-libs=DIR],
-                 [Specify location of GSSAPI libs]),
+                 [Specify location of GSS-API libs]),
   [ GSSAPI_LIB_DIR="-L$withval"
     want_gss="yes" ]
 )
 
 AC_ARG_WITH(gssapi,
   AC_HELP_STRING([--with-gssapi=DIR],
   [ GSSAPI_LIB_DIR="-L$withval"
     want_gss="yes" ]
 )
 
 AC_ARG_WITH(gssapi,
   AC_HELP_STRING([--with-gssapi=DIR],
-                 [Where to look for GSSAPI]), [
+                 [Where to look for GSS-API]), [
   GSSAPI_ROOT="$withval"
   if test x"$GSSAPI_ROOT" != xno; then
     want_gss="yes"
   GSSAPI_ROOT="$withval"
   if test x"$GSSAPI_ROOT" != xno; then
     want_gss="yes"
@@ -1299,12 +1185,14 @@ AC_ARG_WITH(gssapi,
 ])
 
 save_CPPFLAGS="$CPPFLAGS"
 ])
 
 save_CPPFLAGS="$CPPFLAGS"
-AC_MSG_CHECKING([if GSSAPI support is requested])
+AC_MSG_CHECKING([if GSS-API support is requested])
 if test x"$want_gss" = xyes; then
   AC_MSG_RESULT(yes)
 
   if test -z "$GSSAPI_INCS"; then
 if test x"$want_gss" = xyes; then
   AC_MSG_RESULT(yes)
 
   if test -z "$GSSAPI_INCS"; then
-     if test -f "$GSSAPI_ROOT/bin/krb5-config"; then
+     if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then
+        GSSAPI_INCS=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --cflags gssapi`
+     elif test -f "$GSSAPI_ROOT/bin/krb5-config"; then
         GSSAPI_INCS=`$GSSAPI_ROOT/bin/krb5-config --cflags gssapi`
      elif test "$GSSAPI_ROOT" != "yes"; then
         GSSAPI_INCS="-I$GSSAPI_ROOT/include"
         GSSAPI_INCS=`$GSSAPI_ROOT/bin/krb5-config --cflags gssapi`
      elif test "$GSSAPI_ROOT" != "yes"; then
         GSSAPI_INCS="-I$GSSAPI_ROOT/include"
@@ -1316,7 +1204,7 @@ if test x"$want_gss" = xyes; then
   AC_CHECK_HEADER(gss.h,
     [
       dnl found in the given dirs
   AC_CHECK_HEADER(gss.h,
     [
       dnl found in the given dirs
-      AC_DEFINE(HAVE_GSSGNU, 1, [if you have the GNU gssapi libraries])
+      AC_DEFINE(HAVE_GSSGNU, 1, [if you have GNU GSS])
       gnu_gss=yes
     ],
     [
       gnu_gss=yes
     ],
     [
@@ -1337,19 +1225,19 @@ AC_INCLUDES_DEFAULT
         AC_CHECK_HEADER(gssapi.h,
             [
               dnl found
         AC_CHECK_HEADER(gssapi.h,
             [
               dnl found
-              AC_DEFINE(HAVE_GSSHEIMDAL, 1, [if you have the Heimdal gssapi libraries])
+              AC_DEFINE(HAVE_GSSHEIMDAL, 1, [if you have Heimdal])
             ],
             [
               dnl no header found, disabling GSS
               want_gss=no
             ],
             [
               dnl no header found, disabling GSS
               want_gss=no
-              AC_MSG_WARN(disabling GSSAPI since no header files was found)
+              AC_MSG_WARN(disabling GSS-API support since no header files were found)
             ]
           )
       else
         dnl MIT found
             ]
           )
       else
         dnl MIT found
-        AC_DEFINE(HAVE_GSSMIT, 1, [if you have the MIT gssapi libraries])
-        dnl check if we have a really old MIT kerberos (<= 1.2)
-        AC_MSG_CHECKING([if gssapi headers declare GSS_C_NT_HOSTBASED_SERVICE])
+        AC_DEFINE(HAVE_GSSMIT, 1, [if you have MIT Kerberos])
+        dnl check if we have a really old MIT Kerberos version (<= 1.2)
+        AC_MSG_CHECKING([if GSS-API headers declare GSS_C_NT_HOSTBASED_SERVICE])
         AC_COMPILE_IFELSE([
           AC_LANG_PROGRAM([[
 #include <gssapi/gssapi.h>
         AC_COMPILE_IFELSE([
           AC_LANG_PROGRAM([[
 #include <gssapi/gssapi.h>
@@ -1367,7 +1255,7 @@ AC_INCLUDES_DEFAULT
         ],[
           AC_MSG_RESULT([no])
           AC_DEFINE(HAVE_OLD_GSSMIT, 1,
         ],[
           AC_MSG_RESULT([no])
           AC_DEFINE(HAVE_OLD_GSSMIT, 1,
-            [if you have an old MIT gssapi library, lacking GSS_C_NT_HOSTBASED_SERVICE])
+            [if you have an old MIT Kerberos version, lacking GSS_C_NT_HOSTBASED_SERVICE])
         ])
       fi
     ]
         ])
       fi
     ]
@@ -1376,9 +1264,9 @@ else
   AC_MSG_RESULT(no)
 fi
 if test x"$want_gss" = xyes; then
   AC_MSG_RESULT(no)
 fi
 if test x"$want_gss" = xyes; then
-  AC_DEFINE(HAVE_GSSAPI, 1, [if you have the gssapi libraries])
-
-  curl_gss_msg="enabled (MIT/Heimdal)"
+  AC_DEFINE(HAVE_GSSAPI, 1, [if you have GSS-API libraries])
+  HAVE_GSSAPI=1
+  curl_gss_msg="enabled (MIT Kerberos/Heimdal)"
 
   if test -n "$gnu_gss"; then
     curl_gss_msg="enabled (GNU GSS)"
 
   if test -n "$gnu_gss"; then
     curl_gss_msg="enabled (GNU GSS)"
@@ -1390,22 +1278,45 @@ if test x"$want_gss" = xyes; then
         LIBS="-lgssapi_krb5 -lresolv $LIBS"
         ;;
      *)
         LIBS="-lgssapi_krb5 -lresolv $LIBS"
         ;;
      *)
-        if test -f "$GSSAPI_ROOT/bin/krb5-config"; then
+        if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then
+           dnl krb5-config doesn't have --libs-only-L or similar, put everything
+           dnl into LIBS
+           gss_libs=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --libs gssapi`
+           LIBS="$gss_libs $LIBS"
+        elif test -f "$GSSAPI_ROOT/bin/krb5-config"; then
            dnl krb5-config doesn't have --libs-only-L or similar, put everything
            dnl into LIBS
            gss_libs=`$GSSAPI_ROOT/bin/krb5-config --libs gssapi`
            LIBS="$gss_libs $LIBS"
            dnl krb5-config doesn't have --libs-only-L or similar, put everything
            dnl into LIBS
            gss_libs=`$GSSAPI_ROOT/bin/krb5-config --libs gssapi`
            LIBS="$gss_libs $LIBS"
-        elif test "$GSSAPI_ROOT" != "yes"; then
-           LDFLAGS="$LDFLAGS -L$GSSAPI_ROOT/lib$libsuff"
-           LIBS="-lgssapi $LIBS"
         else
         else
-           LIBS="-lgssapi $LIBS"
+           case $host in
+           *-hp-hpux*)
+              gss_libname="gss"
+              ;;
+           *)
+              gss_libname="gssapi"
+              ;;
+           esac
+
+           if test "$GSSAPI_ROOT" != "yes"; then
+              LDFLAGS="$LDFLAGS -L$GSSAPI_ROOT/lib$libsuff"
+              LIBS="-l$gss_libname $LIBS"
+           else
+              LIBS="-l$gss_libname $LIBS"
+           fi
         fi
         ;;
      esac
   else
      LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
         fi
         ;;
      esac
   else
      LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
-     LIBS="-lgssapi $LIBS"
+     case $host in
+     *-hp-hpux*)
+        LIBS="-lgss $LIBS"
+        ;;
+     *)
+        LIBS="-lgssapi $LIBS"
+        ;;
+     esac
   fi
 else
   CPPFLAGS="$save_CPPFLAGS"
   fi
 else
   CPPFLAGS="$save_CPPFLAGS"
@@ -2079,6 +1990,12 @@ if test "$curl_ssl_msg" = "$init_ssl_msg"; then
     if test "x$USE_CYASSL" = "xyes"; then
       AC_MSG_NOTICE([detected CyaSSL])
 
     if test "x$USE_CYASSL" = "xyes"; then
       AC_MSG_NOTICE([detected CyaSSL])
 
+      dnl cyassl/ctaocrypt/types.h needs SIZEOF_LONG_LONG defined!
+      AC_CHECK_SIZEOF(long long)
+
+      dnl Versions since at least 2.9.4 renamed error.h to error-ssl.h
+      AC_CHECK_HEADERS(cyassl/error-ssl.h)
+
       LIBS="-lcyassl -lm $LIBS"
 
       if test -n "$cyassllib"; then
       LIBS="-lcyassl -lm $LIBS"
 
       if test -n "$cyassllib"; then
@@ -2163,8 +2080,8 @@ if test "$curl_ssl_msg" = "$init_ssl_msg"; then
          CPPFLAGS="$CPPFLAGS $addcflags"
       fi
 
          CPPFLAGS="$CPPFLAGS $addcflags"
       fi
 
-      dnl The function PK11_CreateGenericObject is needed to load libnsspem.so
-      AC_CHECK_LIB(nss3, PK11_CreateGenericObject,
+      dnl The function SSL_VersionRangeSet() is needed to enable TLS > 1.0
+      AC_CHECK_LIB(nss3, SSL_VersionRangeSet,
        [
        AC_DEFINE(USE_NSS, 1, [if NSS is enabled])
        AC_SUBST(USE_NSS, [1])
        [
        AC_DEFINE(USE_NSS, 1, [if NSS is enabled])
        AC_SUBST(USE_NSS, [1])
@@ -2180,13 +2097,9 @@ if test "$curl_ssl_msg" = "$init_ssl_msg"; then
       if test "x$USE_NSS" = "xyes"; then
         AC_MSG_NOTICE([detected NSS version $version])
 
       if test "x$USE_NSS" = "xyes"; then
         AC_MSG_NOTICE([detected NSS version $version])
 
-        dnl NSS_InitContext() was introduced in NSS 3.12.5 and helps to prevent
-        dnl collisions on NSS initialization/shutdown with other libraries
-        AC_CHECK_FUNC(NSS_InitContext,
-        [
-          AC_DEFINE(HAVE_NSS_INITCONTEXT, 1, [if you have the NSS_InitContext function])
-          AC_SUBST(HAVE_NSS_INITCONTEXT, [1])
-        ])
+        dnl needed when linking the curl tool without USE_EXPLICIT_LIB_DEPS
+        NSS_LIBS=$addlib
+        AC_SUBST([NSS_LIBS])
 
         dnl when shared libs were found in a path that the run-time
         dnl linker doesn't search through, we need to add it to
 
         dnl when shared libs were found in a path that the run-time
         dnl linker doesn't search through, we need to add it to
@@ -2248,10 +2161,11 @@ if test "$curl_ssl_msg" = "$init_ssl_msg"; then
       USE_AXTLS="yes"
       curl_ssl_msg="enabled (axTLS)"
 
       USE_AXTLS="yes"
       curl_ssl_msg="enabled (axTLS)"
 
-
-      LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_AXTLS"
-      export LD_LIBRARY_PATH
-      AC_MSG_NOTICE([Added $LIB_AXTLS to LD_LIBRARY_PATH])
+      if test "x$cross_compiling" != "xyes"; then
+        LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_AXTLS"
+        export LD_LIBRARY_PATH
+        AC_MSG_NOTICE([Added $LIB_AXTLS to LD_LIBRARY_PATH])
+      fi
       ],[
       LDFLAGS="$CLEANLDFLAGS"
       CPPFLAGS="$CLEANCPPFLAGS"
       ],[
       LDFLAGS="$CLEANLDFLAGS"
       CPPFLAGS="$CLEANCPPFLAGS"
@@ -2435,12 +2349,6 @@ if test X"$OPT_LIBSSH2" != Xno; then
        dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
        dnl to prevent further configure tests to fail due to this
 
        dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
        dnl to prevent further configure tests to fail due to this
 
-       dnl libssh2_version is a post 1.0 addition
-       dnl libssh2_init and libssh2_exit were added in 1.2.5
-       dnl libssh2_scp_send64 was added in 1.2.6
-       dnl libssh2_session_handshake was added in 1.2.8
-       AC_CHECK_FUNCS( libssh2_version libssh2_init libssh2_exit \
-                       libssh2_scp_send64 libssh2_session_handshake)
        if test "x$cross_compiling" != "xyes"; then
          LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DIR_SSH2"
          export LD_LIBRARY_PATH
        if test "x$cross_compiling" != "xyes"; then
          LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DIR_SSH2"
          export LD_LIBRARY_PATH
@@ -2553,19 +2461,19 @@ AC_HELP_STRING([--disable-versioned-symbols], [Disable versioned symbols in shar
         AC_MSG_RESULT(yes)
         if test "x$OPENSSL_ENABLED" = "x1"; then
           versioned_symbols_flavour="OPENSSL_"
         AC_MSG_RESULT(yes)
         if test "x$OPENSSL_ENABLED" = "x1"; then
           versioned_symbols_flavour="OPENSSL_"
-        elif test "x$GNUTLS_ENABLED" == "x1"; then
+        elif test "x$GNUTLS_ENABLED" = "x1"; then
           versioned_symbols_flavour="GNUTLS_"
           versioned_symbols_flavour="GNUTLS_"
-        elif test "x$NSS_ENABLED" == "x1"; then
+        elif test "x$NSS_ENABLED" = "x1"; then
           versioned_symbols_flavour="NSS_"
           versioned_symbols_flavour="NSS_"
-        elif test "x$POLARSSL_ENABLED" == "x1"; then
+        elif test "x$POLARSSL_ENABLED" = "x1"; then
           versioned_symbols_flavour="POLARSSL_"
           versioned_symbols_flavour="POLARSSL_"
-        elif test "x$CYASSL_ENABLED" == "x1"; then
+        elif test "x$CYASSL_ENABLED" = "x1"; then
           versioned_symbols_flavour="CYASSL_"
           versioned_symbols_flavour="CYASSL_"
-        elif test "x$AXTLS_ENABLED" == "x1"; then
+        elif test "x$AXTLS_ENABLED" = "x1"; then
           versioned_symbols_flavour="AXTLS_"
           versioned_symbols_flavour="AXTLS_"
-        elif test "x$WINSSL_ENABLED" == "x1"; then
+        elif test "x$WINSSL_ENABLED" = "x1"; then
           versioned_symbols_flavour="WINSSL_"
           versioned_symbols_flavour="WINSSL_"
-        elif test "x$DARWINSSL_ENABLED" == "x1"; then
+        elif test "x$DARWINSSL_ENABLED" = "x1"; then
           versioned_symbols_flavour="DARWINSSL_"
         else
           versioned_symbols_flavour=""
           versioned_symbols_flavour="DARWINSSL_"
         else
           versioned_symbols_flavour=""
@@ -2783,7 +2691,7 @@ if test "$want_idn" = "yes"; then
     if test "x$ac_cv_header_tld_h" = "xyes"; then
       AC_SUBST([IDN_ENABLED], [1])
       curl_idn_msg="enabled"
     if test "x$ac_cv_header_tld_h" = "xyes"; then
       AC_SUBST([IDN_ENABLED], [1])
       curl_idn_msg="enabled"
-      if test -n "$IDN_DIR"; then
+      if test -n "$IDN_DIR" -a "x$cross_compiling" != "xyes"; then
         LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$IDN_DIR"
         export LD_LIBRARY_PATH
         AC_MSG_NOTICE([Added $IDN_DIR to LD_LIBRARY_PATH])
         LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$IDN_DIR"
         export LD_LIBRARY_PATH
         AC_MSG_NOTICE([Added $IDN_DIR to LD_LIBRARY_PATH])
@@ -2809,6 +2717,84 @@ dnl genprogc/thread_quick_ref.htm
 
 
 dnl **********************************************************************
 
 
 dnl **********************************************************************
+dnl Check for nghttp2
+dnl **********************************************************************
+
+OPT_H2="yes"
+AC_ARG_WITH(nghttp2,
+AC_HELP_STRING([--with-nghttp2=PATH],[Enable nghttp2 usage])
+AC_HELP_STRING([--without-nghttp2],[Disable nghttp2 usage]),
+  [OPT_H2=$withval])
+case "$OPT_H2" in
+  no)
+    dnl --without-nghttp2 option used
+    want_h2="no"
+    ;;
+  yes)
+    dnl --with-nghttp2 option used without path
+    want_h2="default"
+    want_h2_path=""
+    ;;
+  *)
+    dnl --with-nghttp2 option used with path
+    want_h2="yes"
+    want_h2_path="$withval/lib/pkgconfig"
+    ;;
+esac
+
+curl_h2_msg="disabled (--with-nghttp2)"
+if test X"$want_h2" != Xno; then
+  dnl backup the pre-nghttp2 variables
+  CLEANLDFLAGS="$LDFLAGS"
+  CLEANCPPFLAGS="$CPPFLAGS"
+  CLEANLIBS="$LIBS"
+
+  CURL_CHECK_PKGCONFIG(libnghttp2, $want_h2_path)
+
+  if test "$PKGCONFIG" != "no" ; then
+    LIB_H2=`CURL_EXPORT_PCDIR([$want_h2_path])
+      $PKGCONFIG --libs-only-l libnghttp2`
+    AC_MSG_NOTICE([-l is $LIB_H2])
+
+    CPP_H2=`CURL_EXPORT_PCDIR([$want_h2_path]) dnl
+      $PKGCONFIG --cflags-only-I libnghttp2`
+    AC_MSG_NOTICE([-I is $CPP_H2])
+
+    LD_H2=`CURL_EXPORT_PCDIR([$want_h2_path])
+      $PKGCONFIG --libs-only-L libnghttp2`
+    AC_MSG_NOTICE([-L is $LD_H2])
+
+    LDFLAGS="$LDFLAGS $LD_H2"
+    CPPFLAGS="$CPPFLAGS $CPP_H2"
+    LIBS="$LIB_H2 $LIBS"
+
+    AC_CHECK_LIB(nghttp2, nghttp2_session_callbacks_set_send_callback,
+      [
+       AC_CHECK_HEADERS(nghttp2/nghttp2.h,
+          curl_h2_msg="enabled (nghttp2)"
+          NGHTTP2_ENABLED=1
+          AC_DEFINE(USE_NGHTTP2, 1, [if nghttp2 is in use])
+          AC_SUBST(USE_NGHTTP2, [1])
+       )
+      ],
+        dnl not found, revert back to clean variables
+        LDFLAGS=$CLEANLDFLAGS
+        CPPFLAGS=$CLEANCPPFLAGS
+        LIBS=$CLEANLIBS
+    )
+
+  else
+    dnl no nghttp2 pkg-config found, deal with it
+    if test X"$want_h2" != Xdefault; then
+      dnl To avoid link errors, we do not allow --with-nghttp2 without
+      dnl a pkgconfig file
+      AC_MSG_ERROR([--with-nghttp2 was specified but could not find libnghttp2 pkg-config file.])
+    fi
+  fi
+
+fi
+
+dnl **********************************************************************
 dnl Back to "normal" configuring
 dnl **********************************************************************
 
 dnl Back to "normal" configuring
 dnl **********************************************************************
 
@@ -3035,8 +3021,10 @@ AC_CHECK_FUNCS([fork \
   getppid \
   getprotobyname \
   getpwuid \
   getppid \
   getprotobyname \
   getpwuid \
+  getpwuid_r \
   getrlimit \
   gettimeofday \
   getrlimit \
   gettimeofday \
+  if_nametoindex \
   inet_addr \
   perror \
   pipe \
   inet_addr \
   perror \
   pipe \
@@ -3247,6 +3235,7 @@ AC_HELP_STRING([--disable-crypto-auth],[Disable cryptographic authentication]),
   no)
        AC_MSG_RESULT(no)
        AC_DEFINE(CURL_DISABLE_CRYPTO_AUTH, 1, [to disable cryptographic authentication])
   no)
        AC_MSG_RESULT(no)
        AC_DEFINE(CURL_DISABLE_CRYPTO_AUTH, 1, [to disable cryptographic authentication])
+       CURL_DISABLE_CRYPTO_AUTH=1
        ;;
   *)   AC_MSG_RESULT(yes)
        ;;
        ;;
   *)   AC_MSG_RESULT(yes)
        ;;
@@ -3286,6 +3275,39 @@ if test "$want_tls_srp" = "yes" && ( test "x$HAVE_GNUTLS_SRP" = "x1" || test "x$
 fi
 
 dnl ************************************************************
 fi
 
 dnl ************************************************************
+dnl disable Unix domain sockets support
+dnl
+AC_MSG_CHECKING([whether to enable Unix domain sockets])
+AC_ARG_ENABLE(unix-sockets,
+AC_HELP_STRING([--enable-unix-sockets],[Enable Unix domain sockets])
+AC_HELP_STRING([--disable-unix-sockets],[Disable Unix domain sockets]),
+[ case "$enableval" in
+  no)  AC_MSG_RESULT(no)
+       want_unix_sockets=no
+       ;;
+  *)   AC_MSG_RESULT(yes)
+       want_unix_sockets=yes
+       ;;
+  esac ], [
+       AC_MSG_RESULT(auto)
+       want_unix_sockets=auto
+       ]
+)
+if test "x$want_unix_sockets" != "xno"; then
+  AC_CHECK_MEMBER([struct sockaddr_un.sun_path], [
+    AC_DEFINE(USE_UNIX_SOCKETS, 1, [Use Unix domain sockets])
+    AC_SUBST(USE_UNIX_SOCKETS, [1])
+    curl_unix_sockets_msg="enabled"
+  ], [
+    if test "x$want_unix_sockets" = "xyes"; then
+      AC_MSG_ERROR([--enable-unix-sockets is not available on this platform!])
+    fi
+  ], [
+    #include <sys/un.h>
+  ])
+fi
+
+dnl ************************************************************
 dnl disable cookies support
 dnl
 AC_MSG_CHECKING([whether to enable support for cookies])
 dnl disable cookies support
 dnl
 AC_MSG_CHECKING([whether to enable support for cookies])
@@ -3365,12 +3387,12 @@ if test "x$USE_SSLEAY" = "x1"; then
 elif test -n "$SSL_ENABLED"; then
   SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
 fi
 elif test -n "$SSL_ENABLED"; then
   SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
 fi
-if test "@KRB4_ENABLED@" = "x1"; then
-  SUPPORT_FEATURES="$SUPPORT_FEATURES KRB4"
-fi
 if test "x$IPV6_ENABLED" = "x1"; then
   SUPPORT_FEATURES="$SUPPORT_FEATURES IPv6"
 fi
 if test "x$IPV6_ENABLED" = "x1"; then
   SUPPORT_FEATURES="$SUPPORT_FEATURES IPv6"
 fi
+if test "x$USE_UNIX_SOCKETS" = "x1"; then
+  SUPPORT_FEATURES="$SUPPORT_FEATURES UnixSockets"
+fi
 if test "x$HAVE_LIBZ" = "x1"; then
   SUPPORT_FEATURES="$SUPPORT_FEATURES libz"
 fi
 if test "x$HAVE_LIBZ" = "x1"; then
   SUPPORT_FEATURES="$SUPPORT_FEATURES libz"
 fi
@@ -3383,20 +3405,42 @@ fi
 if test "x$USE_WINDOWS_SSPI" = "x1"; then
   SUPPORT_FEATURES="$SUPPORT_FEATURES SSPI"
 fi
 if test "x$USE_WINDOWS_SSPI" = "x1"; then
   SUPPORT_FEATURES="$SUPPORT_FEATURES SSPI"
 fi
-if test "x$CURL_DISABLE_HTTP" != "x1"; then
+
+if test "x$HAVE_GSSAPI" = "x1"; then
+  SUPPORT_FEATURES="$SUPPORT_FEATURES GSS-API"
+fi
+
+if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" -a \
+    \( "x$HAVE_GSSAPI" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \); then
+  SUPPORT_FEATURES="$SUPPORT_FEATURES SPNEGO"
+fi
+
+if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" -a \
+    \( "x$HAVE_GSSAPI" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \); then
+  SUPPORT_FEATURES="$SUPPORT_FEATURES Kerberos"
+fi
+
+if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1"; then
   if test "x$USE_SSLEAY" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
       -o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1" \
       -o "x$DARWINSSL_ENABLED" = "x1"; then
     SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM"
   if test "x$USE_SSLEAY" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
       -o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1" \
       -o "x$DARWINSSL_ENABLED" = "x1"; then
     SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM"
-    if test "x$NTLM_WB_ENABLED" = "x1"; then
+
+    if test "x$CURL_DISABLE_HTTP" != "x1" -a \
+        "x$NTLM_WB_ENABLED" = "x1"; then
       SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM_WB"
     fi
   fi
 fi
       SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM_WB"
     fi
   fi
 fi
+
 if test "x$USE_TLS_SRP" = "x1"; then
   SUPPORT_FEATURES="$SUPPORT_FEATURES TLS-SRP"
 fi
 
 if test "x$USE_TLS_SRP" = "x1"; then
   SUPPORT_FEATURES="$SUPPORT_FEATURES TLS-SRP"
 fi
 
+if test "x$USE_NGHTTP2" = "x1"; then
+  SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP2"
+fi
+
 AC_SUBST(SUPPORT_FEATURES)
 
 dnl For supported protocols in pkg-config file
 AC_SUBST(SUPPORT_FEATURES)
 
 dnl For supported protocols in pkg-config file
@@ -3448,6 +3492,16 @@ if test "x$CURL_DISABLE_IMAP" != "x1"; then
     SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAPS"
   fi
 fi
     SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAPS"
   fi
 fi
+if test "x$CURL_DISABLE_SMB" != "x1" \
+    -a "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" \
+    -a \( "x$USE_SSLEAY" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
+      -o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1" \
+      -o "x$DARWINSSL_ENABLED" = "x1" \); then
+  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMB"
+  if test "x$SSL_ENABLED" = "x1"; then
+    SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMBS"
+  fi
+fi
 if test "x$CURL_DISABLE_SMTP" != "x1"; then
   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTP"
   if test "x$SSL_ENABLED" = "x1"; then
 if test "x$CURL_DISABLE_SMTP" != "x1"; then
   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTP"
   if test "x$SSL_ENABLED" = "x1"; then
@@ -3498,6 +3552,7 @@ AC_CONFIG_FILES([Makefile \
            docs/Makefile \
            docs/examples/Makefile \
            docs/libcurl/Makefile \
            docs/Makefile \
            docs/examples/Makefile \
            docs/libcurl/Makefile \
+           docs/libcurl/opts/Makefile \
            include/Makefile \
            include/curl/Makefile \
            src/Makefile \
            include/Makefile \
            include/curl/Makefile \
            src/Makefile \
@@ -3542,12 +3597,11 @@ AC_MSG_NOTICE([Configured to build curl/libcurl:
   SSL support:      ${curl_ssl_msg}
   SSH support:      ${curl_ssh_msg}
   zlib support:     ${curl_zlib_msg}
   SSL support:      ${curl_ssl_msg}
   SSH support:      ${curl_ssh_msg}
   zlib support:     ${curl_zlib_msg}
-  krb4 support:     ${curl_krb4_msg}
-  GSSAPI support:   ${curl_gss_msg}
-  SPNEGO support:   ${curl_spnego_msg}
+  GSS-API support:  ${curl_gss_msg}
   TLS-SRP support:  ${curl_tls_srp_msg}
   resolver:         ${curl_res_msg}
   TLS-SRP support:  ${curl_tls_srp_msg}
   resolver:         ${curl_res_msg}
-  ipv6 support:     ${curl_ipv6_msg}
+  IPv6 support:     ${curl_ipv6_msg}
+  Unix sockets support: ${curl_unix_sockets_msg}
   IDN support:      ${curl_idn_msg}
   Build libcurl:    Shared=${enable_shared}, Static=${enable_static}
   Built-in manual:  ${curl_manual_msg}
   IDN support:      ${curl_idn_msg}
   Build libcurl:    Shared=${enable_shared}, Static=${enable_static}
   Built-in manual:  ${curl_manual_msg}
@@ -3561,6 +3615,7 @@ AC_MSG_NOTICE([Configured to build curl/libcurl:
   RTSP support:     ${curl_rtsp_msg}
   RTMP support:     ${curl_rtmp_msg}
   metalink support: ${curl_mtlnk_msg}
   RTSP support:     ${curl_rtsp_msg}
   RTMP support:     ${curl_rtmp_msg}
   metalink support: ${curl_mtlnk_msg}
+  HTTP2 support:    ${curl_h2_msg}
   Protocols:        ${SUPPORT_PROTOCOLS}
 ])
 
   Protocols:        ${SUPPORT_PROTOCOLS}
 ])
 
index 466c36b..d4cf488 100644 (file)
@@ -128,6 +128,11 @@ Mono
   libcurl-net by Jeffrey Phillips
   http://sourceforge.net/projects/libcurl-net/
 
   libcurl-net by Jeffrey Phillips
   http://sourceforge.net/projects/libcurl-net/
 
+node.js
+
+  node-libcurl by Jonathan Cardoso Machado
+  https://github.com/JCMais/node-libcurl
+
 Object-Pascal
 
   Free Pascal, Delphi and Kylix binding written by Christophe Espern.
 Object-Pascal
 
   Free Pascal, Delphi and Kylix binding written by Christophe Espern.
index 75e7ebb..83fa420 100644 (file)
       [full description, no wider than 72 columns that describe as much as
       possible as to why this change is made, and possibly what things
       it fixes and everything else that is related]
       [full description, no wider than 72 columns that describe as much as
       possible as to why this change is made, and possibly what things
       it fixes and everything else that is related]
+
+      [Bug: link to source of the report or more related discussion]
+      [Reported-by: John Doe - credit the reporter]
+      [whatever-else-by: credit all helpers, finders, doers]
       ---- stop ----
 
  Don't forget to use commit --author="" if you commit someone else's work,
       ---- stop ----
 
  Don't forget to use commit --author="" if you commit someone else's work,
index 108e6ba..71186a2 100644 (file)
@@ -59,7 +59,7 @@ GnuTLS
  OpenSSL does. Now, you can build and distribute an TLS/SSL capable libcurl
  without including any Original BSD licensed code.
 
  OpenSSL does. Now, you can build and distribute an TLS/SSL capable libcurl
  without including any Original BSD licensed code.
 
- I believe Debian is the first (only?) distro that provides libcurl/GnutTLS
+ I believe Debian is the first (only?) distro that provides libcurl/GnuTLS
  packages.
 
 yassl
  packages.
 
 yassl
@@ -72,20 +72,20 @@ GnuTLS vs OpenSSL vs yassl
 
  While these three libraries offer similar features, they are not equal.
  libcurl does not (yet) offer a standardized stable ABI if you decide to
 
  While these three libraries offer similar features, they are not equal.
  libcurl does not (yet) offer a standardized stable ABI if you decide to
- switch from using libcurl-openssl to libcurl-gnutls or vice versa. The GnuTLS
+ switch from using libcurl-openssl to libcurl-gnutls or vice-versa. The GnuTLS
  and yassl support is very recent in libcurl and it has not been tested nor
  used very extensively, while the OpenSSL equivalent code has been used and
  thus matured since 1999.
 
  GnuTLS
  and yassl support is very recent in libcurl and it has not been tested nor
  used very extensively, while the OpenSSL equivalent code has been used and
  thus matured since 1999.
 
  GnuTLS
-   - LGPL licensened
+   - LGPL licensed
    - supports SRP
    - lacks SSLv2 support
    - lacks MD2 support (used by at least some CA certs)
    - lacks the crypto functions libcurl uses for NTLM
 
  OpenSSL
    - supports SRP
    - lacks SSLv2 support
    - lacks MD2 support (used by at least some CA certs)
    - lacks the crypto functions libcurl uses for NTLM
 
  OpenSSL
-   - Original BSD licensened
+   - Original BSD licensed
    - lacks SRP
    - supports SSLv2
    - older and more widely used
    - lacks SRP
    - supports SSLv2
    - older and more widely used
index 2b15254..043b7bb 100644 (file)
--- a/docs/FAQ
+++ b/docs/FAQ
@@ -80,6 +80,7 @@ FAQ
   4.17 Non-functional connect timeouts on Windows
   4.18 file:// URLs containing drive letters (Windows, NetWare)
   4.19 Why doesn't cURL return an error when the network cable is unplugged?
   4.17 Non-functional connect timeouts on Windows
   4.18 file:// URLs containing drive letters (Windows, NetWare)
   4.19 Why doesn't cURL return an error when the network cable is unplugged?
+  4.20 curl doesn't return error for HTTP non-200 responses!
 
  5. libcurl Issues
   5.1 Is libcurl thread-safe?
 
  5. libcurl Issues
   5.1 Is libcurl thread-safe?
@@ -99,6 +100,7 @@ FAQ
   5.15 How do I get an FTP directory listing?
   5.16 I want a different time-out!
   5.17 Can I write a server with libcurl?
   5.15 How do I get an FTP directory listing?
   5.16 I want a different time-out!
   5.17 Can I write a server with libcurl?
+  5.18 Does libcurl use threads?
 
  6. License Issues
   6.1 I have a GPL program, can I use the libcurl library?
 
  6. License Issues
   6.1 I have a GPL program, can I use the libcurl library?
@@ -132,14 +134,14 @@ FAQ
 
     A free and easy-to-use client-side URL transfer library, supporting DICT,
     FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3,
 
     A free and easy-to-use client-side URL transfer library, supporting DICT,
     FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3,
-    POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP.
+    POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET and TFTP.
 
     libcurl supports HTTPS certificates, HTTP POST, HTTP PUT, FTP uploading,
 
     libcurl supports HTTPS certificates, HTTP POST, HTTP PUT, FTP uploading,
-    kerberos, HTTP form based upload, proxies, cookies, user+password
+    Kerberos, SPNEGO, HTTP form based upload, proxies, cookies, user+password
     authentication, file transfer resume, http proxy tunneling and more!
 
     libcurl is highly portable, it builds and works identically on numerous
     authentication, file transfer resume, http proxy tunneling and more!
 
     libcurl is highly portable, it builds and works identically on numerous
-    platforms, including Solaris, NetBSD, FreeBSD, OpenBSD, Darwin, HPUX,
+    platforms, including Solaris, NetBSD, FreeBSD, OpenBSD, Darwin, HP-UX,
     IRIX, AIX, Tru64, Linux, UnixWare, HURD, Windows, Amiga, OS/2, BeOS, Mac
     OS X, Ultrix, QNX, OpenVMS, RISC OS, Novell NetWare, DOS, Symbian, OSF,
     Android, Minix, IBM TPF and more...
     IRIX, AIX, Tru64, Linux, UnixWare, HURD, Windows, Amiga, OS/2, BeOS, Mac
     OS X, Ultrix, QNX, OpenVMS, RISC OS, Novell NetWare, DOS, Symbian, OSF,
     Android, Minix, IBM TPF and more...
@@ -154,7 +156,10 @@ FAQ
     Since curl uses libcurl, curl supports the same wide range of common
     Internet protocols that libcurl does.
 
     Since curl uses libcurl, curl supports the same wide range of common
     Internet protocols that libcurl does.
 
-  We pronounce curl and cURL with an initial k sound: [kurl].
+  We pronounce curl with an initial k sound. It rhymes with words like girl
+  and earl. This is a short WAV file to help you:
+
+     http://media.merriam-webster.com/soundc11/c/curl0001.wav
 
   There are numerous sub-projects and related projects that also use the word
   curl in the project names in various combinations, but you should take
 
   There are numerous sub-projects and related projects that also use the word
   curl in the project names in various combinations, but you should take
@@ -202,27 +207,25 @@ FAQ
   better. We do however believe in a few rules when it comes to the future of
   curl:
 
   better. We do however believe in a few rules when it comes to the future of
   curl:
 
-  Curl -- the command line tool -- is to remain a non-graphical command line
-    tool. If you want GUIs or fancy scripting capabilities, you should look
-    for another tool that uses libcurl.
+  Curl -- the command line tool -- is to remain a non-graphical command line
+  tool. If you want GUIs or fancy scripting capabilities, you should look for
+  another tool that uses libcurl.
 
 
-  * We do not add things to curl that other small and available tools already
-    do very fine at the side. Curl's output is fine to pipe into another
-    program or redirect to another file for the next program to interpret.
+  We do not add things to curl that other small and available tools already do
+  very fine at the side. Curl's output is fine to pipe into another program or
+  redirect to another file for the next program to interpret.
 
 
-  * We focus on protocol related issues and improvements. If you wanna do more
-    magic with the supported protocols than curl currently does, chances are
-    big we will agree. If you wanna add more protocols, we may very well
-    agree.
+  We focus on protocol related issues and improvements. If you wanna do more
+  magic with the supported protocols than curl currently does, chances are big
+  we will agree. If you wanna add more protocols, we may very well agree.
 
 
-  If you want someone else to make all the work while you wait for us to
-    implement it for you, that is not a very friendly attitude. We spend a
-    considerable time already on maintaining and developing curl. In order to
-    get more out of us, you should consider trading in some of your time and
-    efforts in return.
+  If you want someone else to make all the work while you wait for us to
+  implement it for you, that is not a very friendly attitude. We spend a
+  considerable time already on maintaining and developing curl. In order to
+  get more out of us, you should consider trading in some of your time and
+  efforts in return.
 
 
-  * If you write the code, chances are bigger that it will get into curl
-    faster.
+  If you write the code, chances are bigger that it will get into curl faster.
 
   1.5 Who makes curl?
 
 
   1.5 Who makes curl?
 
@@ -239,10 +242,10 @@ FAQ
   1.6 What do you get for making curl?
 
   Project cURL is entirely free and open. No person gets paid for developing
   1.6 What do you get for making curl?
 
   Project cURL is entirely free and open. No person gets paid for developing
-  (lib)curl on full or even part time. We do this voluntarily on our spare
-  time. Occasionally companies pay individual developers to work on curl, but
-  that's up to each company and developer. It is not controlled by nor
-  supervised in any way by the project.
+  curl on full time. We do this voluntarily, mostly on spare time.
+  Occasionally companies pay individual developers to work on curl, but that's
+  up to each company and developer. It is not controlled by nor supervised in
+  any way by the project.
 
   We still get help from companies. Haxx provides web site, bandwidth, mailing
   lists etc, sourceforge.net hosts project services we take advantage from,
 
   We still get help from companies. Haxx provides web site, bandwidth, mailing
   lists etc, sourceforge.net hosts project services we take advantage from,
@@ -263,7 +266,7 @@ FAQ
 
   Our project name curl has been in effective use since 1998. We were not the
   first computer related project to use the name "curl" and do not claim any
 
   Our project name curl has been in effective use since 1998. We were not the
   first computer related project to use the name "curl" and do not claim any
-  first-hand rights to the name.
+  rights to the name.
 
   We recognize that we will be living in parallel with curl.com and wish them
   every success.
 
   We recognize that we will be living in parallel with curl.com and wish them
   every success.
@@ -424,7 +427,7 @@ FAQ
 
   curl can be built to use one of the following SSL alternatives: OpenSSL,
   GnuTLS, yassl, NSS, PolarSSL, axTLS, Secure Transport (native iOS/OS X),
 
   curl can be built to use one of the following SSL alternatives: OpenSSL,
   GnuTLS, yassl, NSS, PolarSSL, axTLS, Secure Transport (native iOS/OS X),
-  schannel (native Windows) or qssl (native IBM i). They all have their pros
+  WinSSL (native Windows) or GSKit (native IBM i). They all have their pros
   and cons, and we try to maintain a comparison of them here:
   http://curl.haxx.se/docs/ssl-compared.html
 
   and cons, and we try to maintain a comparison of them here:
   http://curl.haxx.se/docs/ssl-compared.html
 
@@ -620,15 +623,15 @@ FAQ
 
   Some workarounds usually suggested to overcome this Javascript dependency:
 
 
   Some workarounds usually suggested to overcome this Javascript dependency:
 
-  - Depending on the Javascript complexity, write up a script that
-    translates it to another language and execute that.
+  Depending on the Javascript complexity, write up a script that translates it
+  to another language and execute that.
 
 
-  Read the Javascript code and rewrite the same logic in another language.
+  Read the Javascript code and rewrite the same logic in another language.
 
 
-  Implement a Javascript interpreter, people have successfully used the
-    Mozilla Javascript engine in the past.
+  Implement a Javascript interpreter, people have successfully used the
+  Mozilla Javascript engine in the past.
 
 
-  Ask your admins to stop this, for a static proxy setup or similar.
+  Ask your admins to stop this, for a static proxy setup or similar.
 
   3.15 Can I do recursive fetches with curl?
 
 
   3.15 Can I do recursive fetches with curl?
 
@@ -644,34 +647,38 @@ FAQ
   There are three different kinds of "certificates" to keep track of when we
   talk about using SSL-based protocols (HTTPS or FTPS) using curl or libcurl.
 
   There are three different kinds of "certificates" to keep track of when we
   talk about using SSL-based protocols (HTTPS or FTPS) using curl or libcurl.
 
-  - Client certificate. The server you communicate may require that you can
-    provide this in order to prove that you actually are who you claim to be.
-    If the server doesn't require this, you don't need a client certificate.
-
-    A client certificate is always used together with a private key, and the
-    private key has a pass phrase that protects it.
-
-  - Server certificate. The server you communicate with has a server
-    certificate. You can and should verify this certificate to make sure that
-    you are truly talking to the real server and not a server impersonating
-    it.
-
-  - Certificate Authority certificate ("CA cert"). You often have several CA
-    certs in a CA cert bundle that can be used to verify a server certificate
-    that was signed by one of the authorities in the bundle. curl does not
-    come with a CA cert bundle but most curl installs provide one. You can
-    also override the default.
-
-    The server certificate verification process is made by using a Certificate
-    Authority certificate ("CA cert") that was used to sign the server
-    certificate. Server certificate verification is enabled by default in curl
-    and libcurl and is often the reason for problems as explained in FAQ entry
-    4.12 and the SSLCERTS document
-    (http://curl.haxx.se/docs/sslcerts.html). Server certificates that are
-    "self-signed" or otherwise signed by a CA that you do not have a CA cert
-    for, cannot be verified. If the verification during a connect fails, you
-    are refused access. You then need to explicitly disable the verification
-    to connect to the server.
+  CLIENT CERTIFICATE
+
+  The server you communicate may require that you can provide this in order to
+  prove that you actually are who you claim to be.  If the server doesn't
+  require this, you don't need a client certificate.
+
+  A client certificate is always used together with a private key, and the
+  private key has a pass phrase that protects it.
+
+  SERVER CERTIFICATE
+
+  The server you communicate with has a server certificate. You can and should
+  verify this certificate to make sure that you are truly talking to the real
+  server and not a server impersonating it.
+
+  CERTIFICATE AUTHORITY CERTIFICATE ("CA cert")
+
+  You often have several CA certs in a CA cert bundle that can be used to
+  verify a server certificate that was signed by one of the authorities in the
+  bundle. curl does not come with a CA cert bundle but most curl installs
+  provide one. You can also override the default.
+
+  The server certificate verification process is made by using a Certificate
+  Authority certificate ("CA cert") that was used to sign the server
+  certificate. Server certificate verification is enabled by default in curl
+  and libcurl and is often the reason for problems as explained in FAQ entry
+  4.12 and the SSLCERTS document
+  (http://curl.haxx.se/docs/sslcerts.html). Server certificates that are
+  "self-signed" or otherwise signed by a CA that you do not have a CA cert
+  for, cannot be verified. If the verification during a connect fails, you are
+  refused access. You then need to explicitly disable the verification to
+  connect to the server.
 
   3.17 How do I list the root dir of an FTP server?
 
 
   3.17 How do I list the root dir of an FTP server?
 
@@ -794,12 +801,13 @@ FAQ
 
      curl 'http://www.altavista.com/cgi-bin/query?text=yes&q=curl'
 
 
      curl 'http://www.altavista.com/cgi-bin/query?text=yes&q=curl'
 
-  In Windows, the standard DOS shell treats the %-symbol specially and you
-  need to use TWO %-symbols for each single one you want to use in the URL.
+  In Windows, the standard DOS shell treats the percent sign specially and you
+  need to use TWO percent signs for each single one you want to use in the
+  URL.
 
 
-  Also note that if you want the literal %-symbol to be part of the data you
-  pass in a POST using -d/--data you must encode it as '%25' (which then also
-  needs the %-symbol doubled on Windows machines).
+  If you want a literal percent sign to be part of the data you pass in a POST
+  using -d/--data you must encode it as '%25' (which then also needs the
+  percent sign doubled on Windows machines).
 
   4.3 How can I use {, }, [ or ] to specify multiple URLs?
 
 
   4.3 How can I use {, }, [ or ] to specify multiple URLs?
 
@@ -968,13 +976,13 @@ FAQ
   4.14 Redirects work in browser but not with curl!
 
   curl supports HTTP redirects fine (see item 3.8). Browsers generally support
   4.14 Redirects work in browser but not with curl!
 
   curl supports HTTP redirects fine (see item 3.8). Browsers generally support
-  at least two other ways to perform directs that curl does not:
+  at least two other ways to perform redirects that curl does not:
 
 
-  - Meta tags. You can write a HTML tag that will cause the browser to
-    redirect to another given URL after a certain time.
+  Meta tags. You can write a HTML tag that will cause the browser to redirect
+  to another given URL after a certain time.
 
 
-  - Javascript. You can write a Javascript program embedded in a HTML page
-    that redirects the browser to another given URL.
+  Javascript. You can write a Javascript program embedded in a HTML page that
+  redirects the browser to another given URL.
 
   There is no way to make curl follow these redirects. You must either
   manually figure out what the page is set to do, or you write a script that
 
   There is no way to make curl follow these redirects. You must either
   manually figure out what the page is set to do, or you write a script that
@@ -1082,7 +1090,31 @@ FAQ
   immediately if its lone network connection goes down.  That can be achieved
   by having the application monitor the network connection on its own using an
   OS-specific mechanism, then signalling libcurl to abort (see also item 5.13).
   immediately if its lone network connection goes down.  That can be achieved
   by having the application monitor the network connection on its own using an
   OS-specific mechanism, then signalling libcurl to abort (see also item 5.13).
-  
+
+  4.20 curl doesn't return error for HTTP non-200 responses!
+
+  Correct. Unless you use -f (--fail).
+
+  When doing HTTP transfers, curl will perform exactly what you're asking it
+  to do and if successful it will not return an error. You can use curl to
+  test your web server's "file not found" page (that gets 404 back), you can
+  use it to check your authentication protected web pages (that get a 401
+  back) and so on.
+
+  The specific HTTP response code does not constitute a problem or error for
+  curl. It simply sends and delivers HTTP as you asked and if that worked,
+  everything is fine and dandy. The response code is generally providing more
+  higher level error information that curl doesn't care about. The error was
+  not in the HTTP transfer.
+
+  If you want your command line to treat error codes in the 400 and up range
+  as errors and thus return a non-zero value and possibly show an error
+  message, curl has a dedicated option for that: -f (CURLOPT_FAILONERROR in
+  libcurl speak).
+
+  You can also use the -w option and the variable %{response_code} to extract
+  the exact response code that was return in the response.
+
 
 5. libcurl Issues
 
 
 5. libcurl Issues
 
@@ -1095,6 +1127,12 @@ FAQ
   your system has such.  Note that you must never share the same handle in
   multiple threads.
 
   your system has such.  Note that you must never share the same handle in
   multiple threads.
 
+  libcurl's implementation of timeouts might use signals (depending on what it
+  was built to use for name resolving), and signal handling is generally not
+  thread-safe.  Multi-threaded Applicationss that call libcurl from different
+  threads (on different handles) might want to use CURLOPT_NOSIGNAL, e.g.:
+
+    curl_easy_setopt(handle, CURLOPT_NOSIGNAL, true);
 
   If you use a OpenSSL-powered libcurl in a multi-threaded environment, you
   need to provide one or two locking functions:
 
   If you use a OpenSSL-powered libcurl in a multi-threaded environment, you
   need to provide one or two locking functions:
@@ -1236,7 +1274,7 @@ FAQ
   you want to change name resolver function you must rebuild libcurl and tell
   it to use a different function.
 
   you want to change name resolver function you must rebuild libcurl and tell
   it to use a different function.
 
-  - The non-ipv6 resolver that can use one out of four host name resolve calls
+  - The non-IPv6 resolver that can use one out of four host name resolve calls
     (depending on what your system supports):
 
       A - gethostbyname()
     (depending on what your system supports):
 
       A - gethostbyname()
@@ -1244,15 +1282,15 @@ FAQ
       C - gethostbyname_r() with 5 arguments
       D - gethostbyname_r() with 6 arguments
 
       C - gethostbyname_r() with 5 arguments
       D - gethostbyname_r() with 6 arguments
 
-  - The ipv6-resolver that uses getaddrinfo()
+  - The IPv6-resolver that uses getaddrinfo()
 
   - The c-ares based name resolver that uses the c-ares library for resolves.
     Using this offers asynchronous name resolves.
 
   - The threaded resolver (default option on Windows). It uses:
 
 
   - The c-ares based name resolver that uses the c-ares library for resolves.
     Using this offers asynchronous name resolves.
 
   - The threaded resolver (default option on Windows). It uses:
 
-      A - gethostbyname() on plain ipv4 hosts
-      B - getaddrinfo() on ipv6-enabled hosts
+      A - gethostbyname() on plain IPv4 hosts
+      B - getaddrinfo() on IPv6 enabled hosts
 
   Also note that libcurl never resolves or reverse-lookups addresses given as
   pure numbers, such as 127.0.0.1 or ::1.
 
   Also note that libcurl never resolves or reverse-lookups addresses given as
   pure numbers, such as 127.0.0.1 or ::1.
@@ -1270,17 +1308,18 @@ FAQ
 
   5.12 Can I make libcurl fake or hide my real IP address?
 
 
   5.12 Can I make libcurl fake or hide my real IP address?
 
-  No. libcurl operates on a higher level than so. Besides, faking IP address
-  would imply sending IP packages with a made-up source address, and then you
-  normally get a problem with intercepting the packages sent back as they
-  would then not be routed to you!
+  No. libcurl operates on a higher level. Besides, faking IP address would
+  imply sending IP packet with a made-up source address, and then you normally
+  get a problem with receiving the packet sent back as they would then not be
+  routed to you!
 
   If you use a proxy to access remote sites, the sites will not see your local
   IP address but instead the address of the proxy.
 
   Also note that on many networks NATs or other IP-munging techniques are used
   that makes you see and use a different IP address locally than what the
 
   If you use a proxy to access remote sites, the sites will not see your local
   IP address but instead the address of the proxy.
 
   Also note that on many networks NATs or other IP-munging techniques are used
   that makes you see and use a different IP address locally than what the
-  remote server will see you coming from.
+  remote server will see you coming from. You may also consider using
+  http://www.torproject.org .
 
   5.13 How do I stop an ongoing transfer?
 
 
   5.13 How do I stop an ongoing transfer?
 
@@ -1361,6 +1400,19 @@ FAQ
   server for. And there are really good stand-alone ones that have been tested
   and proven for many years. There's no need for you to reinvent them!
 
   server for. And there are really good stand-alone ones that have been tested
   and proven for many years. There's no need for you to reinvent them!
 
+  5.18 Does libcurl use threads?
+
+  Put simply: no, libcurl will execute in the same thread you call it in. All
+  callbacks will be called in the same thread as the one you call libcurl in.
+
+  If you want to avoid your thread to be blocked by the libcurl call, you make
+  sure you use the non-blocking API which will do transfers asynchronously -
+  but still in the same single thread.
+
+  libcurl will potentially internally use threads for name resolving, if it
+  was built to work like that, but in those cases it'll create the child
+  threads by itself and they will only be used and then killed internally by
+  libcurl and never exposed to the outside.
 
 6. License Issues
 
 
 6. License Issues
 
index 14d7e78..a674002 100644 (file)
@@ -28,7 +28,7 @@ libcurl
  - selectable network interface for outgoing traffic
  - IPv6 support on unix and Windows
  - persistent connections
  - selectable network interface for outgoing traffic
  - IPv6 support on unix and Windows
  - persistent connections
- - socks5 support
+ - socks 4 + 5 support, with or without local name resolving
  - supports user name and password in proxy environment variables
  - operations through proxy "tunnel" (using CONNECT)
  - support for large files (>2GB and >4GB) during upload and download
  - supports user name and password in proxy environment variables
  - operations through proxy "tunnel" (using CONNECT)
  - support for large files (>2GB and >4GB) during upload and download
@@ -45,8 +45,8 @@ HTTP
  - POST
  - Pipelining
  - multipart formpost (RFC1867-style)
  - POST
  - Pipelining
  - multipart formpost (RFC1867-style)
- - authentication: Basic, Digest, NTLM (*9), GSS-Negotiate/Negotiate (*3) and
-   SPNEGO (*4) to server and proxy
+ - authentication: Basic, Digest, NTLM (*9) and Negotiate (SPNEGO) (*3)
+   to server and proxy
  - resume (both GET and PUT)
  - follow redirects
  - maximum amount of redirects to follow
  - resume (both GET and PUT)
  - follow redirects
  - maximum amount of redirects to follow
@@ -55,7 +55,7 @@ HTTP
  - reads/writes the netscape cookie file format
  - custom headers (replace/remove internally generated headers)
  - custom user-agent string
  - reads/writes the netscape cookie file format
  - custom headers (replace/remove internally generated headers)
  - custom user-agent string
- - custom referer string
+ - custom referrer string
  - range
  - proxy authentication
  - time conditions
  - range
  - proxy authentication
  - time conditions
@@ -64,6 +64,7 @@ HTTP
  - Content-Encoding support for deflate and gzip
  - "Transfer-Encoding: chunked" support in uploads
  - data compression (*12)
  - Content-Encoding support for deflate and gzip
  - "Transfer-Encoding: chunked" support in uploads
  - data compression (*12)
+ - HTTP/2 (*5)
 
 HTTPS (*1)
  - (all the HTTP features)
 
 HTTPS (*1)
  - (all the HTTP features)
@@ -76,8 +77,7 @@ HTTPS (*1)
 FTP
  - download
  - authentication
 FTP
  - download
  - authentication
- - kerberos4 (*5)
- - kerberos5 (*3)
+ - Kerberos 5 (*14)
  - active/passive using PORT, EPRT, PASV or EPSV
  - single file size information (compare to HTTP HEAD)
  - 'type=' URL support
  - active/passive using PORT, EPRT, PASV or EPSV
  - single file size information (compare to HTTP HEAD)
  - 'type=' URL support
@@ -127,8 +127,15 @@ FILE
  - upload
  - resume
 
  - upload
  - resume
 
+SMB
+ - SMBv1 over TCP and SSL
+ - download
+ - upload
+ - authentication with NTLMv1
+
 SMTP
 SMTP
- - authentication: Plain, Login, CRAM-MD5, Digest-MD5 and NTLM (*9)
+ - authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM (*9) and Kerberos 5
+   (*4)
  - send e-mails
  - mail from support
  - mail size support
  - send e-mails
  - mail from support
  - mail size support
@@ -143,8 +150,8 @@ SMTPS (*1)
 
 POP3
  - authentication: Clear Text, APOP and SASL
 
 POP3
  - authentication: Clear Text, APOP and SASL
- - SASL based authentication: Plain, Login, CRAM-MD5, Digest-MD5 and
-   NTLM (*9)
+ - SASL based authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM (*9) and
+   Kerberos 5 (*4)
  - list e-mails
  - retrieve e-mails
  - enhanced command support for: CAPA, DELE, TOP, STAT, UIDL and NOOP via
  - list e-mails
  - retrieve e-mails
  - enhanced command support for: CAPA, DELE, TOP, STAT, UIDL and NOOP via
@@ -158,11 +165,11 @@ POP3S (*1)
 
 IMAP
  - authentication: Clear Text and SASL
 
 IMAP
  - authentication: Clear Text and SASL
- - SASL based authentication: Plain, Login, CRAM-MD5, Digest-MD5 and
-   NTLM (*9)
+ - SASL based authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM (*9) and
+   Kerberos 5 (*4)
  - list the folders of a mailbox
  - list the folders of a mailbox
- - select a mailbox with support for verifing the UIDVALIDITY
- - fetch e-mails with support for specifing the UID and SECTION
+ - select a mailbox with support for verifying the UIDVALIDITY
+ - fetch e-mails with support for specifying the UID and SECTION
  - upload e-mails via the append command
  - enhanced command support for: EXAMINE, CREATE, DELETE, RENAME, STATUS,
    STORE, COPY and UID via custom requests
  - upload e-mails via the append command
  - enhanced command support for: EXAMINE, CREATE, DELETE, RENAME, STATUS,
    STORE, COPY and UID via custom requests
@@ -176,14 +183,16 @@ IMAPS (*1)
 FOOTNOTES
 =========
 
 FOOTNOTES
 =========
 
-  *1 = requires OpenSSL, GnuTLS, NSS, yassl, axTLS, PolarSSL, schannel (native
-       Windows), Secure Transport (native iOS/OS X) or qssl (native IBM i)
+  *1 = requires OpenSSL, GnuTLS, NSS, yassl, axTLS, PolarSSL, WinSSL (native
+       Windows), Secure Transport (native iOS/OS X) or GSKit (native IBM i)
   *2 = requires OpenLDAP
   *2 = requires OpenLDAP
-  *3 = requires a GSSAPI-compliant library, such as Heimdal or similar
-  *4 = requires FBopenssl
-  *5 = requires a krb4 library, such as the MIT one or similar
+  *3 = requires a GSS-API implementation (such as Heimdal or MIT Kerberos) or
+       SSPI (native Windows)
+  *4 = requires a GSS-API implementation, however, only Windows SSPI is
+       currently supported
+  *5 = requires nghttp2 and possibly a recent TLS library
   *6 = requires c-ares
   *6 = requires c-ares
-  *7 = requires OpenSSL, NSS, qssl, schannel or Secure Transport; GnuTLS, for
+  *7 = requires OpenSSL, NSS, GSKit, WinSSL or Secure Transport; GnuTLS, for
        example, only supports SSLv3 and TLSv1
   *8 = requires libssh2
   *9 = requires OpenSSL, GnuTLS, NSS, yassl, Secure Transport or SSPI (native
        example, only supports SSLv3 and TLSv1
   *8 = requires libssh2
   *9 = requires OpenSSL, GnuTLS, NSS, yassl, Secure Transport or SSPI (native
@@ -194,3 +203,4 @@ FOOTNOTES
   *12 = requires libz
   *13 = requires libmetalink, and either an Apple or Microsoft operating
         system, or OpenSSL, or GnuTLS, or NSS
   *12 = requires libz
   *13 = requires libmetalink, and either an Apple or Microsoft operating
         system, or OpenSSL, or GnuTLS, or NSS
+  *14 = requires a GSS-API implementation (such as Heimdal or MIT Kerberos)
index 3c14099..e76e5b9 100644 (file)
@@ -4,23 +4,31 @@
                             | (__| |_| |  _ <| |___
                              \___|\___/|_| \_\_____|
 
                             | (__| |_| |  _ <| |___
                              \___|\___/|_| \_\_____|
 
-                          How cURL Became Like This
+How cURL Became Like This
+=========================
 
 
-
-Towards the end of 1996, Daniel Stenberg came up with the idea to make
+Towards the end of 1996, Daniel Stenberg was spending time writing an IRC bot
+for an Amiga related channel on EFnet. He then came up with the idea to make
 currency-exchange calculations available to Internet Relay Chat (IRC)
 users. All the necessary data are published on the Web; he just needed to
 automate their retrieval.
 
 Daniel simply adopted an existing command-line open-source tool, httpget, that
 Brazilian Rafael Sagula had written and recently release version 0.1 of. After
 currency-exchange calculations available to Internet Relay Chat (IRC)
 users. All the necessary data are published on the Web; he just needed to
 automate their retrieval.
 
 Daniel simply adopted an existing command-line open-source tool, httpget, that
 Brazilian Rafael Sagula had written and recently release version 0.1 of. After
-a few minor adjustments, it did just what he needed. HttpGet 1.0 was released
-on April 8th 1997 with brand new HTTP proxy support.
+a few minor adjustments, it did just what he needed.
+
+1997
+----
+
+HttpGet 1.0 was released on April 8th 1997 with brand new HTTP proxy support.
 
 We soon found and fixed support for getting currencies over GOPHER.  Once FTP
 download support was added, the name of the project was changed and urlget 2.0
 was released in August 1997. The http-only days were already passed.
 
 
 We soon found and fixed support for getting currencies over GOPHER.  Once FTP
 download support was added, the name of the project was changed and urlget 2.0
 was released in August 1997. The http-only days were already passed.
 
+1998
+----
+
 The project slowly grew bigger. When upload capabilities were added and the
 name once again was misleading, a second name change was made and on March 20,
 1998 curl 4 was released. (The version numbering from the previous names was
 The project slowly grew bigger. When upload capabilities were added and the
 name once again was misleading, a second name change was made and on March 20,
 1998 curl 4 was released. (The version numbering from the previous names was
@@ -33,33 +41,39 @@ was revealed to us much later.)
 
 SSL support was added, powered by the SSLeay library.
 
 
 SSL support was added, powered by the SSLeay library.
 
-August 1998, first announcement of curl on freshmeat.net.
+August, first announcement of curl on freshmeat.net.
 
 
-October 1998, with the curl 4.9 release and the introduction of cookie
-support, curl was no longer released under the GPL license. Now we're at 4000
-lines of code, we switched over to the MPL license to restrict the effects of
+October, with the curl 4.9 release and the introduction of cookie support,
+curl was no longer released under the GPL license. Now we're at 4000 lines of
+code, we switched over to the MPL license to restrict the effects of
 "copyleft".
 
 "copyleft".
 
-November 1998, configure script and reported successful compiles on several
+November, configure script and reported successful compiles on several
 major operating systems. The never-quite-understood -F option was added and
 curl could now simulate quite a lot of a browser. TELNET support was added.
 
 Curl 5 was released in December 1998 and introduced the first ever curl man
 page. People started making Linux RPM packages out of it.
 
 major operating systems. The never-quite-understood -F option was added and
 curl could now simulate quite a lot of a browser. TELNET support was added.
 
 Curl 5 was released in December 1998 and introduced the first ever curl man
 page. People started making Linux RPM packages out of it.
 
-January 1999, DICT support added.
+1999
+----
+
+January, DICT support added.
 
 OpenSSL took over where SSLeay was abandoned.
 
 
 OpenSSL took over where SSLeay was abandoned.
 
-May 1999, first Debian package.
+May, first Debian package.
 
 
-August 1999, LDAP:// and FILE:// support added. The curl web site gets 1300
-visits weekly.
+August, LDAP:// and FILE:// support added. The curl web site gets 1300 visits
+weekly.
 
 Released curl 6.0 in September. 15000 lines of code.
 
 
 Released curl 6.0 in September. 15000 lines of code.
 
-December 28 1999, added the project on Sourceforge and started using its
-services for managing the project.
+December 28, added the project on Sourceforge and started using its services
+for managing the project.
+
+2000
+----
 
 Spring 2000, major internal overhaul to provide a suitable library interface.
 The first non-beta release was named 7.1 and arrived in August. This offered
 
 Spring 2000, major internal overhaul to provide a suitable library interface.
 The first non-beta release was named 7.1 and arrived in August. This offered
@@ -67,19 +81,22 @@ the easy interface and turned out to be the beginning of actually getting
 other software and programs to get based on and powered by libcurl. Almost
 20000 lines of code.
 
 other software and programs to get based on and powered by libcurl. Almost
 20000 lines of code.
 
-August 2000, the curl web site gets 4000 visits weekly.
+August, the curl web site gets 4000 visits weekly.
 
 The PHP guys adopted libcurl already the same month, when the first ever third
 party libcurl binding showed up. CURL has been a supported module in PHP since
 the release of PHP 4.0.2. This would soon get followers. More than 16
 different bindings exist at the time of this writing.
 
 
 The PHP guys adopted libcurl already the same month, when the first ever third
 party libcurl binding showed up. CURL has been a supported module in PHP since
 the release of PHP 4.0.2. This would soon get followers. More than 16
 different bindings exist at the time of this writing.
 
-September 2000, kerberos4 support was added.
+September, kerberos4 support was added.
+
+In November started the work on a test suite for curl. It was later re-written
+from scratch again. The libcurl major SONAME number was set to 1.
 
 
-In November 2000 started the work on a test suite for curl. It was later
-re-written from scratch again. The libcurl major SONAME number was set to 1.
+2001
+----
 
 
-January 2001, Daniel released curl 7.5.2 under a new license again: MIT (or
+January, Daniel released curl 7.5.2 under a new license again: MIT (or
 MPL). The MIT license is extremely liberal and can be used combined with GPL
 in other projects. This would finally put an end to the "complaints" from
 people involved in GPLed projects that previously were prohibited from using
 MPL). The MIT license is extremely liberal and can be used combined with GPL
 in other projects. This would finally put an end to the "complaints" from
 people involved in GPLed projects that previously were prohibited from using
@@ -92,17 +109,20 @@ code. The libcurl major SONAME number was bumped to 2 due to this overhaul.
 
 The first experimental ftps:// support was added in March 2001.
 
 
 The first experimental ftps:// support was added in March 2001.
 
-August 2001. curl is bundled in Mac OS X, 10.1. It was already becoming more
-and more of a standard utility of Linux distributions and a regular in the BSD
+August. curl is bundled in Mac OS X, 10.1. It was already becoming more and
+more of a standard utility of Linux distributions and a regular in the BSD
 ports collections. The curl web site gets 8000 visits weekly. Curl Corporation
 contacted Daniel to discuss "the name issue". After Daniel's reply, they have
 never since got in touch again.
 
 ports collections. The curl web site gets 8000 visits weekly. Curl Corporation
 contacted Daniel to discuss "the name issue". After Daniel's reply, they have
 never since got in touch again.
 
-September 2001, libcurl 7.9 introduces cookie jar and curl_formadd(). During
-the forthcoming 7.9.x releases, we introduced the multi interface slowly and
+September, libcurl 7.9 introduces cookie jar and curl_formadd(). During the
+forthcoming 7.9.x releases, we introduced the multi interface slowly and
 without much whistles.
 
 without much whistles.
 
-June 2002, the curl web site gets 13000 visits weekly. curl and libcurl is
+2002
+----
+
+June, the curl web site gets 13000 visits weekly. curl and libcurl is
 35000 lines of code. Reported successful compiles on more than 40 combinations
 of CPUs and operating systems.
 
 35000 lines of code. Reported successful compiles on more than 40 combinations
 of CPUs and operating systems.
 
@@ -111,134 +131,152 @@ impossible. Around 5000 downloaded packages each week from the main site gives
 a hint, but the packages are mirrored extensively, bundled with numerous OS
 distributions and otherwise retrieved as part of other software.
 
 a hint, but the packages are mirrored extensively, bundled with numerous OS
 distributions and otherwise retrieved as part of other software.
 
-September 2002, with the release of curl 7.10 it is released under the MIT
-license only.
+September, with the release of curl 7.10 it is released under the MIT license
+only.
+
+2003
+----
 
 
-January 2003. Started working on the distributed curl tests. The autobuilds.
+January. Started working on the distributed curl tests. The autobuilds.
 
 
-February 2003, the curl site averages at 20000 visits weekly. At any given
-moment, there's an average of 3 people browsing the curl.haxx.se site.
+February, the curl site averages at 20000 visits weekly. At any given moment,
+there's an average of 3 people browsing the curl.haxx.se site.
 
 Multiple new authentication schemes are supported: Digest (May), NTLM (June)
 and Negotiate (June).
 
 
 Multiple new authentication schemes are supported: Digest (May), NTLM (June)
 and Negotiate (June).
 
-November 2003: curl 7.10.8 is released. 45000 lines of code. ~55000 unique
-visitors to the curl.haxx.se site. Five official web mirrors.
+November: curl 7.10.8 is released. 45000 lines of code. ~55000 unique visitors
+to the curl.haxx.se site. Five official web mirrors.
 
 
-December 2003, full-fledged SSL for FTP is supported.
+December, full-fledged SSL for FTP is supported.
 
 
-January 2004: curl 7.11.0 introduced large file support.
+2004
+----
 
 
-June 2004:
+January: curl 7.11.0 introduced large file support.
 
 
-  curl 7.12.0 introduced IDN support. 10 official web mirrors.
+June: curl 7.12.0 introduced IDN support. 10 official web mirrors.
 
 
-  This release bumped the major SONAME to 3 due to the removal of the
-  curl_formparse() function
+This release bumped the major SONAME to 3 due to the removal of the
+curl_formparse() function
 
 
-August 2004:
- Curl and libcurl 7.12.1
+August: Curl and libcurl 7.12.1
 
 
- Public curl release number:               82
- Releases counted from the very beginning: 109
- Available command line options:           96
- Available curl_easy_setopt() options:     120
- Number of public functions in libcurl:    36
- Amount of public web site mirrors:        12
- Number of known libcurl bindings:         26
   Public curl release number:               82
   Releases counted from the very beginning: 109
   Available command line options:           96
   Available curl_easy_setopt() options:     120
   Number of public functions in libcurl:    36
   Amount of public web site mirrors:        12
   Number of known libcurl bindings:         26
 
 
-April 2005:
+2005
+----
 
 
- GnuTLS can now optionally be used for the secure layer when curl is built.
+April. GnuTLS can now optionally be used for the secure layer when curl is
+built.
 
 
-September 2005:
+September: TFTP support was added.
 
 
- TFTP support was added.
+More than 100,000 unique visitors of the curl web site. 25 mirrors.
 
 
- More than 100,000 unique visitors of the curl web site. 25 mirrors.
+December: security vulnerability: libcurl URL Buffer Overflow
 
 
-December 2005:
+2006
+----
 
 
- security vulnerability: libcurl URL Buffer Overflow
+January. We dropped support for Gopher. We found bugs in the implementation
+that turned out having been introduced years ago, so with the conclusion that
+nobody had found out in all this time we removed it instead of fixing it.
 
 
-January 2006:
+March: security vulnerability: libcurl TFTP Packet Buffer Overflow
 
 
- We dropped support for Gopher. We found bugs in the implementation that
- turned out having been introduced years ago, so with the conclusion that
- nobody had found out in all this time we removed it instead of fixing it.
+April: Added the multi_socket() API
 
 
-March 2006:
+September: The major SONAME number for libcurl was bumped to 4 due to the
+removal of ftp third party transfer support.
 
 
- security vulnerability: libcurl TFTP Packet Buffer Overflow
+November: Added SCP and SFTP support
 
 
-April 2006:
+2007
+----
 
 
- Added the multi_socket() API
+February: Added support for the Mozilla NSS library to do the SSL/TLS stuff
 
 
-September 2006:
+July: security vulnerability: libcurl GnuTLS insufficient cert verification
 
 
- The major SONAME number for libcurl was bumped to 4 due to the removal of
- ftp third party transfer support.
+2008
+----
 
 
-November 2006:
+November:
 
 
- Added SCP and SFTP support
+    Command line options:         128
+    curl_easy_setopt() options:   158
+    Public functions in libcurl:  58
+    Known libcurl bindings:       37
+    Contributors:                 683
 
 
-February 2007:
+ 145,000 unique visitors. >100 GB downloaded.
 
 
- Added support for the Mozilla NSS library to do the SSL/TLS stuff
+2009
+----
 
 
-July 2007:
+March: security vulnerability: libcurl Arbitrary File Access
 
 
- security vulnerability: libcurl GnuTLS insufficient cert verification
+August: security vulnerability: libcurl embedded zero in cert name
 
 
-November 2008:
+December: Added support for IMAP, POP3 and SMTP
 
 
- Command line options:         128
- curl_easy_setopt() options:   158
- Public functions in libcurl:  58
- Known libcurl bindings:       37
- Contributors:                 683
+2010
+----
 
 
- 145,000 unique visitors. >100 GB downloaded.
+January: Added support for RTSP
 
 
-March 2009:
+February: security vulnerability: libcurl data callback excessive length
 
 
- security vulnerability: libcurl Arbitrary File Access
+March: The project switched over to use git (hosted by github) instead of CVS
+for source code control
 
 
-August 2009:
+May: Added support for RTMP
 
 
- security vulnerability: libcurl embedded zero in cert name
+Added support for PolarSSL to do the SSL/TLS stuff
 
 
-December 2009:
+August:
 
 
- Added support for IMAP, POP3 and SMTP
+    Public curl releases:         117
+    Command line options:         138
+    curl_easy_setopt() options:   180
+    Public functions in libcurl:  58
+    Known libcurl bindings:       39
+    Contributors:                 808
 
 
-January 2010:
+ Gopher support added (re-added actually)
 
 
- Added support for RTSP
+2012
+----
 
 
-February 2010:
+ July: Added support for Schannel (native Windows TLS backend) and Darwin SSL
+ (Native Mac OS X and iOS TLS backend).
 
 
- security vulnerability: libcurl data callback excessive length
+ Supports metalink
 
 
-March 2010:
+ October: SSH-agent support.
 
 
- The project switched over to use git instead of CVS for source code control
+2013
+----
 
 
-May 2010:
+ February: Cleaned up internals to always uses the "multi" non-blocking
+ approach internally and only expose the blocking API with a wrapper.
 
 
- Added support for RTMP
+ September: First small steps on supporting HTTP/2 with nghttp2.
 
 
- Added support for PolarSSL to do the SSL/TLS stuff
+ October: Removed krb4 support.
 
 
-August 2010:
+ December: Happy eyeballs.
 
 
- Public curl releases:         117
- Command line options:         138
- curl_easy_setopt() options:   180
- Public functions in libcurl:  58
- Known libcurl bindings:       39
- Contributors:                 808
+2014
+----
 
 
- Gopher support added (re-added actually)
+ March: first real release supporting HTTP/2
+
+ September: Web site had 245,000 unique visitors and served 236GB data
index 4140359..30dec53 100644 (file)
@@ -20,9 +20,10 @@ Building from git
    If you get your code off a git repository, see the GIT-INFO file in the
    root directory for specific instructions on how to proceed.
 
    If you get your code off a git repository, see the GIT-INFO file in the
    root directory for specific instructions on how to proceed.
 
-UNIX
+Unix
 ====
 ====
-   A normal unix installation is made in three or four steps (after you've
+
+   A normal Unix installation is made in three or four steps (after you've
    unpacked the source archive):
 
         ./configure
    unpacked the source archive):
 
         ./configure
@@ -115,18 +116,6 @@ UNIX
 
        ./configure --disable-thread
 
 
        ./configure --disable-thread
 
-     To build curl with kerberos4 support enabled, curl requires the krb4 libs
-     and headers installed. You can then use a set of options to tell
-     configure where those are:
-
-          --with-krb4-includes[=DIR]   Specify location of kerberos4 headers
-          --with-krb4-libs[=DIR]       Specify location of kerberos4 libs
-          --with-krb4[=DIR]            where to look for Kerberos4
-
-     In most cases, /usr/athena is the install prefix and then it works with
-
-       ./configure --with-krb4=/usr/athena
-
      If you're a curl developer and use gcc, you might want to enable more
      debug options with the --enable-debug option.
 
      If you're a curl developer and use gcc, you might want to enable more
      debug options with the --enable-debug option.
 
@@ -148,8 +137,8 @@ UNIX
 
      To build with axTLS for SSL/TLS, use both --without-ssl and --with-axtls.
 
 
      To build with axTLS for SSL/TLS, use both --without-ssl and --with-axtls.
 
-     To get GSSAPI support, build with --with-gssapi and have the MIT or
-     Heimdal Kerberos 5 packages installed.
+     To build with GSS-API support, use --with-gssapi and have the MIT Kerberos
+     or Heimdal packages installed.
 
      To get support for SCP and SFTP, build with --with-libssh2 and have
      libssh2 0.16 or later installed.
 
      To get support for SCP and SFTP, build with --with-libssh2 and have
      libssh2 0.16 or later installed.
@@ -159,6 +148,7 @@ UNIX
 
    SPECIAL CASES
    -------------
 
    SPECIAL CASES
    -------------
+
    Some versions of uClibc require configuring with CPPFLAGS=-D_GNU_SOURCE=1
    to get correct large file support.
 
    Some versions of uClibc require configuring with CPPFLAGS=-D_GNU_SOURCE=1
    to get correct large file support.
 
@@ -167,7 +157,6 @@ UNIX
        ./configure CC=owcc AR="$WATCOM/binl/wlib" AR_FLAGS=-q \
            RANLIB=/bin/true STRIP="$WATCOM/binl/wstrip" CFLAGS=-Wextra
 
        ./configure CC=owcc AR="$WATCOM/binl/wlib" AR_FLAGS=-q \
            RANLIB=/bin/true STRIP="$WATCOM/binl/wstrip" CFLAGS=-Wextra
 
-
 Win32
 =====
 
 Win32
 =====
 
@@ -199,7 +188,6 @@ Win32
 
    If you get linkage errors read section 5.7 of the FAQ document.
 
 
    If you get linkage errors read section 5.7 of the FAQ document.
 
-
    MingW32
    -------
 
    MingW32
    -------
 
@@ -221,7 +209,7 @@ Win32
    environment variables, for example:
 
      set ZLIB_PATH=c:\zlib-1.2.8
    environment variables, for example:
 
      set ZLIB_PATH=c:\zlib-1.2.8
-     set OPENSSL_PATH=c:\openssl-0.9.8y
+     set OPENSSL_PATH=c:\openssl-0.9.8zc
      set LIBSSH2_PATH=c:\libssh2-1.4.3
 
    ATTENTION: if you want to build with libssh2 support you have to use latest
      set LIBSSH2_PATH=c:\libssh2-1.4.3
 
    ATTENTION: if you want to build with libssh2 support you have to use latest
@@ -246,7 +234,6 @@ Win32
    - optional recent Novell CLDAP SDK available from:
      http://developer.novell.com/ndk/cldap.htm
 
    - optional recent Novell CLDAP SDK available from:
      http://developer.novell.com/ndk/cldap.htm
 
-
    Cygwin
    ------
 
    Cygwin
    ------
 
@@ -264,8 +251,10 @@ Win32
    MSVC 6 caveats
    --------------
 
    MSVC 6 caveats
    --------------
 
-   If you use MSVC 6 it is required that you use the February 2003 edition PSDK:
-   http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
+   If you use MSVC 6 it is required that you use the February 2003 edition of
+   the 'Platform SDK' which can be downloaded from:
+
+   http://www.microsoft.com/en-us/download/details.aspx?id=12261
 
    Building any software with MSVC 6 without having PSDK installed is just
    asking for trouble down the road once you have released it, you might notice
 
    Building any software with MSVC 6 without having PSDK installed is just
    asking for trouble down the road once you have released it, you might notice
@@ -273,8 +262,6 @@ Win32
    choice of static vs dynamic runtime and third party libraries. Anyone using
    software built in such way will at some point regret having done so.
 
    choice of static vs dynamic runtime and third party libraries. Anyone using
    software built in such way will at some point regret having done so.
 
-   When someone uses MSVC 6 without PSDK he is using a compiler back from 1998.
-
    If the compiler has been updated with the installation of a service pack as
    those mentioned in http://support.microsoft.com/kb/194022 the compiler can be
    safely used to read source code, translate and make it object code.
    If the compiler has been updated with the installation of a service pack as
    those mentioned in http://support.microsoft.com/kb/194022 the compiler can be
    safely used to read source code, translate and make it object code.
@@ -284,13 +271,6 @@ Win32
    header files and libraries with bugs and security issues which have already
    been addressed and fixed long time ago.
 
    header files and libraries with bugs and security issues which have already
    been addressed and fixed long time ago.
 
-   In order to make use of the updated system headers and fixed libraries
-   for MSVC 6, it is required that 'Platform SDK', PSDK from now onwards,
-   is installed. The specific PSDK that must be installed for MSVC 6 is the
-   February 2003 edition, which is the latest one supporting the MSVC 6 compiler,
-   this PSDK is also known as 'Windows Server 2003 PSDK' and can be downloaded
-   from http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
-
    So, building curl and libcurl with MSVC 6 without PSDK is absolutely
    discouraged for the benefit of anyone using software built in such
    environment. And it will not be supported in any way, as we could just
    So, building curl and libcurl with MSVC 6 without PSDK is absolutely
    discouraged for the benefit of anyone using software built in such
    environment. And it will not be supported in any way, as we could just
@@ -337,7 +317,7 @@ Win32
    Before running nmake define the OPENSSL_PATH environment variable with
    the root/base directory of OpenSSL, for example:
 
    Before running nmake define the OPENSSL_PATH environment variable with
    the root/base directory of OpenSSL, for example:
 
-     set OPENSSL_PATH=c:\openssl-0.9.8y
+     set OPENSSL_PATH=c:\openssl-0.9.8zc
 
    Then run 'nmake vc-ssl' or 'nmake vc-ssl-dll' in curl's root
    directory.  'nmake vc-ssl' will create a libcurl static and dynamic
 
    Then run 'nmake vc-ssl' or 'nmake vc-ssl-dll' in curl's root
    directory.  'nmake vc-ssl' will create a libcurl static and dynamic
@@ -352,39 +332,18 @@ Win32
    at runtime.
    Run 'nmake vc-ssl-zlib' to build with both ssl and zlib support.
 
    at runtime.
    Run 'nmake vc-ssl-zlib' to build with both ssl and zlib support.
 
-   MSVC 6 IDE
-   ----------
-
-   A minimal VC++ 6.0 reference workspace (vc6curl.dsw) is available with the
-   source distribution archive to allow proper building of the two included
-   projects, the libcurl library and the curl tool.
-
-   1) Open the vs/vc6/vc6curl.dsw workspace with MSVC6's IDE.
-   2) Select 'Build' from top menu.
-   3) Select 'Batch Build' from dropdown menu.
-   4) Make sure that the eight project configurations are 'checked'.
-   5) Click on the 'Build' button.
-   6) Once the eight project configurations are built you are done.
-
-   Dynamic and static libcurl libraries are built in debug and release flavours,
-   and can be located each one in its own subdirectory, dll-debug, dll-release,
-   lib-debug and lib-release, all of them below the 'vs/vc6/lib' subdirectory.
+   MSVC IDE
+   --------
 
 
-   In the same way four curl executables are created, each using its respective
-   library. The resulting curl executables are located in its own subdirectory,
-   dll-debug, dll-release, lib-debug and lib-release, below 'vs/vc6/src' subdir.
+   A fairly comprehensive set of Visual Studio project files are available for
+   v6.0 through v12.0 and are located in the projects folder to allow proper
+   building of both the libcurl library as well as the curl tool.
 
 
-   These reference VC++ 6.0 configurations are generated using the dynamic CRT.
-
-   Intentionally, these reference VC++ 6.0 projects and configurations don't use
-   third party libraries, such as OpenSSL or Zlib, to allow proper compilation
-   and configuration for all new users without further requirements.
-
-   If you need something more 'involved' you might adjust them for your own use,
-   or explore the world of makefiles described above 'MSVC from command line'.
+   For more information about these projects and building via Visual Studio
+   please see the README file located in the projects folder.
 
    Borland C++ compiler
 
    Borland C++ compiler
-   ---------------------
+   --------------------
 
    Ensure that your build environment is properly set up to use the compiler
    and associated tools. PATH environment variable must include the path to
 
    Ensure that your build environment is properly set up to use the compiler
    and associated tools. PATH environment variable must include the path to
@@ -429,7 +388,6 @@ Win32
    is required, as well as the OpenSSL libeay32.lib and ssleay32.lib
    libraries.
 
    is required, as well as the OpenSSL libeay32.lib and ssleay32.lib
    libraries.
 
-
    OTHER MSVC IDEs
    ---------------
 
    OTHER MSVC IDEs
    ---------------
 
@@ -440,7 +398,6 @@ Win32
    Make the sources in the src/ drawer be a "win32 console application"
    project. Name it curl.
 
    Make the sources in the src/ drawer be a "win32 console application"
    project. Name it curl.
 
-
    Disabling Specific Protocols in Win32 builds
    --------------------------------------------
 
    Disabling Specific Protocols in Win32 builds
    --------------------------------------------
 
@@ -459,16 +416,21 @@ Win32
    CURL_DISABLE_FILE     disables FILE
    CURL_DISABLE_TFTP     disables TFTP
    CURL_DISABLE_HTTP     disables HTTP
    CURL_DISABLE_FILE     disables FILE
    CURL_DISABLE_TFTP     disables TFTP
    CURL_DISABLE_HTTP     disables HTTP
+   CURL_DISABLE_IMAP     disables IMAP
+   CURL_DISABLE_POP3     disables POP3
+   CURL_DISABLE_SMTP     disables SMTP
 
 
-   If you want to set any of these defines you have the following
-   possibilities:
+   If you want to set any of these defines you have the following options:
 
    - Modify lib/config-win32.h
    - Modify lib/curl_setup.h
    - Modify lib/Makefile.vc6
 
    - Modify lib/config-win32.h
    - Modify lib/curl_setup.h
    - Modify lib/Makefile.vc6
-   - Add defines to Project/Settings/C/C++/General/Preprocessor Definitions
-     in the vc6libcurl.dsw/vc6libcurl.dsp Visual C++ 6 IDE project.
+   - Modify the "Preprocessor Definitions" in the libcurl project
 
 
+   Note: The pre-processor settings can be found using the Visual Studio IDE
+   under "Project -> Settings -> C/C++ -> General" in VC6 and "Project ->
+   Properties -> Configuration Properties -> C/C++ -> Preprocessor" in later
+   versions.
 
    Using BSD-style lwIP instead of Winsock TCP/IP stack in Win32 builds
    --------------------------------------------------------------------
 
    Using BSD-style lwIP instead of Winsock TCP/IP stack in Win32 builds
    --------------------------------------------------------------------
@@ -480,8 +442,12 @@ Win32
 
    - Modify lib/config-win32.h and src/config-win32.h
    - Modify lib/Makefile.vc6
 
    - Modify lib/config-win32.h and src/config-win32.h
    - Modify lib/Makefile.vc6
-   - Add definition to Project/Settings/C/C++/General/Preprocessor Definitions
-     in the vc6libcurl.dsw/vc6libcurl.dsp Visual C++ 6 IDE project.
+   - Modify the "Preprocessor Definitions" in the libcurl project
+
+   Note: The pre-processor settings can be found using the Visual Studio IDE
+   under "Project -> Settings -> C/C++ -> General" in VC6 and "Project ->
+   Properties -> Configuration Properties -> C/C++ -> Preprocessor" in later
+   versions.
 
    Once that libcurl has been built with BSD-style lwIP TCP/IP stack support,
    in order to use it with your program it is mandatory that your program
 
    Once that libcurl has been built with BSD-style lwIP TCP/IP stack support,
    in order to use it with your program it is mandatory that your program
@@ -505,9 +471,9 @@ Win32
    add '-DCURL_STATICLIB' to your CFLAGS.  Otherwise the linker will look for
    dynamic import symbols.
 
    add '-DCURL_STATICLIB' to your CFLAGS.  Otherwise the linker will look for
    dynamic import symbols.
 
-
 Apple iOS and Mac OS X
 ======================
 Apple iOS and Mac OS X
 ======================
+
    On recent Apple operating systems, curl can be built to use Apple's
    SSL/TLS implementation, Secure Transport, instead of OpenSSL. To build with
    Secure Transport for SSL/TLS, use the configure option --with-darwinssl. (It
    On recent Apple operating systems, curl can be built to use Apple's
    SSL/TLS implementation, Secure Transport, instead of OpenSSL. To build with
    Secure Transport for SSL/TLS, use the configure option --with-darwinssl. (It
@@ -537,9 +503,9 @@ Apple iOS and Mac OS X
       ./configure --with-darwinssl
       make
 
       ./configure --with-darwinssl
       make
 
-
 IBM OS/2
 ========
 IBM OS/2
 ========
+
    Building under OS/2 is not much different from building under unix.
    You need:
 
    Building under OS/2 is not much different from building under unix.
    You need:
 
@@ -567,9 +533,9 @@ IBM OS/2
    If you're getting huge binaries, probably your makefiles have the -g in
    CFLAGS.
 
    If you're getting huge binaries, probably your makefiles have the -g in
    CFLAGS.
 
-
 VMS
 ===
 VMS
 ===
+
    (The VMS section is in whole contributed by the friendly Nico Baggus)
 
    Curl seems to work with FTP & HTTP other protocols are not tested.  (the
    (The VMS section is in whole contributed by the friendly Nico Baggus)
 
    Curl seems to work with FTP & HTTP other protocols are not tested.  (the
@@ -614,6 +580,7 @@ VMS
    the name can be fetched from external or internal message libraries
    Error code - the err codes assigned by the application
    Sev. - severity: Even = error, off = non error
    the name can be fetched from external or internal message libraries
    Error code - the err codes assigned by the application
    Sev. - severity: Even = error, off = non error
+
       0 = Warning
       1 = Success
       2 = Error
       0 = Warning
       1 = Success
       2 = Error
@@ -635,12 +602,13 @@ VMS
       Compaq C V6.2-003 on OpenVMS Alpha V7.1-1H2
 
    So far for porting notes as of:
       Compaq C V6.2-003 on OpenVMS Alpha V7.1-1H2
 
    So far for porting notes as of:
+
    13-jul-2001
    N. Baggus
 
    13-jul-2001
    N. Baggus
 
-
 QNX
 ===
 QNX
 ===
+
    (This section was graciously brought to us by David Bentham)
 
    As QNX is targeted for resource constrained environments, the QNX headers
    (This section was graciously brought to us by David Bentham)
 
    As QNX is targeted for resource constrained environments, the QNX headers
@@ -651,11 +619,12 @@ QNX
 
    A good all-round solution to this is to override the default when building
    libcurl, by overriding CFLAGS during configure, example
 
    A good all-round solution to this is to override the default when building
    libcurl, by overriding CFLAGS during configure, example
-   #  configure CFLAGS='-DFD_SETSIZE=64 -g -O2'
 
 
+   #  configure CFLAGS='-DFD_SETSIZE=64 -g -O2'
 
 RISC OS
 =======
 
 RISC OS
 =======
+
    The library can be cross-compiled using gccsdk as follows:
 
         CC=riscos-gcc AR=riscos-ar RANLIB='riscos-ar -s' ./configure \
    The library can be cross-compiled using gccsdk as follows:
 
         CC=riscos-gcc AR=riscos-ar RANLIB='riscos-ar -s' ./configure \
@@ -665,9 +634,9 @@ RISC OS
    where riscos-gcc and riscos-ar are links to the gccsdk tools.
    You can then link your program with curl/lib/.libs/libcurl.a
 
    where riscos-gcc and riscos-ar are links to the gccsdk tools.
    You can then link your program with curl/lib/.libs/libcurl.a
 
-
 AmigaOS
 =======
 AmigaOS
 =======
+
    (This section was graciously brought to us by Diego Casorran)
 
    To build cURL/libcurl on AmigaOS just type 'make amiga' ...
    (This section was graciously brought to us by Diego Casorran)
 
    To build cURL/libcurl on AmigaOS just type 'make amiga' ...
@@ -687,10 +656,11 @@ AmigaOS
    To enable SSL support, you need a OpenSSL native version (without ixemul),
    you can find a precompiled package at http://amiga.sourceforge.net/OpenSSL/
 
    To enable SSL support, you need a OpenSSL native version (without ixemul),
    you can find a precompiled package at http://amiga.sourceforge.net/OpenSSL/
 
-
 NetWare
 =======
 NetWare
 =======
+
    To compile curl.nlm / libcurl.nlm you need:
    To compile curl.nlm / libcurl.nlm you need:
+
    - either any gcc / nlmconv, or CodeWarrior 7 PDK 4 or later.
    - gnu make and awk running on the platform you compile on;
      native Win32 versions can be downloaded from:
    - either any gcc / nlmconv, or CodeWarrior 7 PDK 4 or later.
    - gnu make and awk running on the platform you compile on;
      native Win32 versions can be downloaded from:
@@ -731,9 +701,9 @@ NetWare
    the status of these builds can be viewed at the autobuild table:
    http://curl.haxx.se/dev/builds.html
 
    the status of these builds can be viewed at the autobuild table:
    http://curl.haxx.se/dev/builds.html
 
-
 eCos
 ====
 eCos
 ====
+
    curl does not use the eCos build system, so you must first build eCos
    separately, then link curl to the resulting eCos library.  Here's a sample
    configure line to do so on an x86 Linux box targeting x86:
    curl does not use the eCos build system, so you must first build eCos
    separately, then link curl to the resulting eCos library.  Here's a sample
    configure line to do so on an x86 Linux box targeting x86:
@@ -801,9 +771,9 @@ eCos
 
    config.errors = stderr; /* default errors to stderr */
 
 
    config.errors = stderr; /* default errors to stderr */
 
-
 Minix
 =====
 Minix
 =====
+
    curl can be compiled on Minix 3 using gcc or ACK (starting with
    ver. 3.1.3).  Ensure that GNU gawk and bash are both installed and
    available in the PATH.
    curl can be compiled on Minix 3 using gcc or ACK (starting with
    ver. 3.1.3).  Ensure that GNU gawk and bash are both installed and
    available in the PATH.
@@ -833,9 +803,9 @@ Minix
      make
      chmem =256000 src/curl
 
      make
      chmem =256000 src/curl
 
-
 Symbian OS
 ==========
 Symbian OS
 ==========
+
    The Symbian OS port uses the Symbian build system to compile.  From the
    packages/Symbian/group/ directory, run:
 
    The Symbian OS port uses the Symbian build system to compile.  From the
    packages/Symbian/group/ directory, run:
 
@@ -846,9 +816,9 @@ Symbian OS
    SDK doesn't include support for P.I.P.S., you will need to contact
    your SDK vendor to obtain that first.
 
    SDK doesn't include support for P.I.P.S., you will need to contact
    your SDK vendor to obtain that first.
 
-
 VxWorks
 ========
 VxWorks
 ========
+
    Build for VxWorks is performed using cross compilation.
    That means you build on Windows machine using VxWorks tools and
    run the built image on the VxWorks device.
    Build for VxWorks is performed using cross compilation.
    That means you build on Windows machine using VxWorks tools and
    run the built image on the VxWorks device.
@@ -872,13 +842,15 @@ VxWorks
    As a result the libcurl.a library should be created in the 'lib' folder.
    To clean the build results type 'make -f ./Makefile.vxworks clean'.
 
    As a result the libcurl.a library should be created in the 'lib' folder.
    To clean the build results type 'make -f ./Makefile.vxworks clean'.
 
-
 Android
 =======
 Android
 =======
+
    Method using the static makefile:
    Method using the static makefile:
+
       - see the build notes in the packages/Android/Android.mk file.
 
    Method using a configure cross-compile (tested with Android NDK r7c, r8):
       - see the build notes in the packages/Android/Android.mk file.
 
    Method using a configure cross-compile (tested with Android NDK r7c, r8):
+
       - prepare the toolchain of the Android NDK for standalone use; this can
         be done by invoking the script:
         ./build/tools/make-standalone-toolchain.sh
       - prepare the toolchain of the Android NDK for standalone use; this can
         be done by invoking the script:
         ./build/tools/make-standalone-toolchain.sh
@@ -900,7 +872,8 @@ Android
         found in your automake folder:
         find /usr -name config.sub
 
         found in your automake folder:
         find /usr -name config.sub
 
-   Wrapper for pkg-config
+   Wrapper for pkg-config:
+
       - In order to make proper use of pkg-config so that configure is able to
         find all dependencies you should create a wrapper script for pkg-config;
         file /opt/arm-linux-androideabi-4.4.3/bin/arm-linux-androideabi-pkg-config:
       - In order to make proper use of pkg-config so that configure is able to
         find all dependencies you should create a wrapper script for pkg-config;
         file /opt/arm-linux-androideabi-4.4.3/bin/arm-linux-androideabi-pkg-config:
@@ -914,9 +887,9 @@ Android
 
         also create a copy or symlink with name arm-unknown-linux-androideabi-pkg-config.
 
 
         also create a copy or symlink with name arm-unknown-linux-androideabi-pkg-config.
 
-
 CROSS COMPILE
 =============
 CROSS COMPILE
 =============
+
    (This section was graciously brought to us by Jim Duey, with additions by
    Dan Fandrich)
 
    (This section was graciously brought to us by Jim Duey, with additions by
    Dan Fandrich)
 
@@ -962,9 +935,9 @@ CROSS COMPILE
 
        ./configure --host=ARCH-OS
 
 
        ./configure --host=ARCH-OS
 
-
 REDUCING SIZE
 =============
 REDUCING SIZE
 =============
+
    There are a number of configure options that can be used to reduce the
    size of libcurl for embedded applications where binary size is an
    important factor.  First, be sure to set the CFLAGS variable when
    There are a number of configure options that can be used to reduce the
    size of libcurl for embedded applications where binary size is an
    important factor.  First, be sure to set the CFLAGS variable when
@@ -993,6 +966,7 @@ REDUCING SIZE
      --disable-verbose (eliminates debugging strings and error code strings)
      --enable-hidden-symbols (eliminates unneeded symbols in the shared library)
      --without-libidn (disables support for the libidn DNS library)
      --disable-verbose (eliminates debugging strings and error code strings)
      --enable-hidden-symbols (eliminates unneeded symbols in the shared library)
      --without-libidn (disables support for the libidn DNS library)
+     --without-librtmp (disables support for RTMP)
      --without-ssl (disables support for SSL/TLS)
      --without-zlib (disables support for on-the-fly decompression)
 
      --without-ssl (disables support for SSL/TLS)
      --without-zlib (disables support for on-the-fly decompression)
 
@@ -1000,6 +974,7 @@ REDUCING SIZE
    size of the libcurl dynamic libraries on some platforms even further.
    Specify them by providing appropriate CFLAGS and LDFLAGS variables on the
    configure command-line, e.g.
    size of the libcurl dynamic libraries on some platforms even further.
    Specify them by providing appropriate CFLAGS and LDFLAGS variables on the
    configure command-line, e.g.
+
      CFLAGS="-Os -ffunction-sections -fdata-sections \
              -fno-unwind-tables -fno-asynchronous-unwind-tables" \
      LDFLAGS="-Wl,-s -Wl,-Bsymbolic -Wl,--gc-sections"
      CFLAGS="-Os -ffunction-sections -fdata-sections \
              -fno-unwind-tables -fno-asynchronous-unwind-tables" \
      LDFLAGS="-Wl,-s -Wl,-Bsymbolic -Wl,--gc-sections"
@@ -1011,9 +986,9 @@ REDUCING SIZE
    .comment section).
 
    Using these techniques it is possible to create a basic HTTP-only shared
    .comment section).
 
    Using these techniques it is possible to create a basic HTTP-only shared
-   libcurl library for i386 Linux platforms that is only 106 KiB in size, and
-   an FTP-only library that is 108 KiB in size (as of libcurl version 7.27.0,
-   using gcc 4.6.3).
+   libcurl library for i386 Linux platforms that is only 114 KiB in size, and
+   an FTP-only library that is 115 KiB in size (as of libcurl version 7.35.0,
+   using gcc 4.8.2).
 
    You may find that statically linking libcurl to your application will
    result in a lower total size than dynamically linking.
 
    You may find that statically linking libcurl to your application will
    result in a lower total size than dynamically linking.
@@ -1025,13 +1000,12 @@ REDUCING SIZE
    command line.  Following is a list of appropriate key words:
 
      --disable-cookies          !cookies
    command line.  Following is a list of appropriate key words:
 
      --disable-cookies          !cookies
-     --disable-crypto-auth      !HTTP\ Digest\ auth !HTTP\ proxy\ Digest\ auth
      --disable-manual           !--manual
      --disable-proxy            !HTTP\ proxy !proxytunnel !SOCKS4 !SOCKS5
 
      --disable-manual           !--manual
      --disable-proxy            !HTTP\ proxy !proxytunnel !SOCKS4 !SOCKS5
 
-
 PORTS
 =====
 PORTS
 =====
+
    This is a probably incomplete list of known hardware and operating systems
    that curl has been compiled for. If you know a system curl compiles and
    runs on, that isn't listed, please let us know!
    This is a probably incomplete list of known hardware and operating systems
    that curl has been compiled for. If you know a system curl compiles and
    runs on, that isn't listed, please let us know!
index 66e11a4..f8b1b47 100644 (file)
@@ -14,6 +14,7 @@ INTERNALS
 
 GIT
 ===
 
 GIT
 ===
+
  All changes to the sources are committed to the git repository as soon as
  they're somewhat verified to work. Changes shall be committed as independently
  as possible so that individual changes can be easier spotted and tracked
  All changes to the sources are committed to the git repository as soon as
  they're somewhat verified to work. Changes shall be committed as independently
  as possible so that individual changes can be easier spotted and tracked
@@ -33,7 +34,7 @@ Portability
  want it to remain functional and buildable with these and later versions
  (older versions may still work but is not what we work hard to maintain):
 
  want it to remain functional and buildable with these and later versions
  (older versions may still work but is not what we work hard to maintain):
 
- OpenSSL      0.9.6
+ OpenSSL      0.9.7
  GnuTLS       1.2
  zlib         1.1.4
  libssh2      0.16
  GnuTLS       1.2
  zlib         1.1.4
  libssh2      0.16
@@ -41,11 +42,13 @@ Portability
  libidn       0.4.1
  cyassl       2.0.0
  openldap     2.0
  libidn       0.4.1
  cyassl       2.0.0
  openldap     2.0
- MIT krb5 lib 1.2.4
qsossl       V5R3M0
- NSS          3.12.x
+ MIT Kerberos 1.2.4
GSKit        V5R3M0
+ NSS          3.14.x
  axTLS        1.2.7
  axTLS        1.2.7
+ PolarSSL     1.3.0
  Heimdal      ?
  Heimdal      ?
+ nghttp2      0.6.0
 
  On systems where configure runs, we aim at working on them all - if they have
  a suitable C compiler. On systems that don't run configure, we strive to keep
 
  On systems where configure runs, we aim at working on them all - if they have
  a suitable C compiler. On systems that don't run configure, we strive to keep
@@ -249,7 +252,9 @@ Library
 
  Kerberos
 
 
  Kerberos
 
- The kerberos support is mainly in lib/krb4.c and lib/security.c.
+ Kerberos support is mainly in lib/krb5.c and lib/security.c but also
+ curl_sasl_sspi.c and curl_sasl_gssapi.c for the email protocols and
+ socks_gssapi.c & socks_sspi.c for SOCKS5 proxy specifics.
 
  TELNET
 
 
  TELNET
 
@@ -259,10 +264,18 @@ Library
 
  The file:// protocol is dealt with in lib/file.c.
 
 
  The file:// protocol is dealt with in lib/file.c.
 
+ SMB
+
+ The smb:// protocol is dealt with in lib/smb.c.
+
  LDAP
 
  Everything LDAP is in lib/ldap.c and lib/openldap.c
 
  LDAP
 
  Everything LDAP is in lib/ldap.c and lib/openldap.c
 
+ E-mail
+
+ The e-mail related source code is in lib/imap.c, lib/pop3.c and lib/smtp.c.
+
  GENERAL
 
  URL encoding and decoding, called escaping and unescaping in the source code,
  GENERAL
 
  URL encoding and decoding, called escaping and unescaping in the source code,
@@ -300,7 +313,7 @@ Persistent Connections
  o When libcurl is told to perform a transfer, it first checks for an already
    existing connection in the cache that we can use. Otherwise it creates a
    new one and adds that the cache. If the cache is full already when a new
  o When libcurl is told to perform a transfer, it first checks for an already
    existing connection in the cache that we can use. Otherwise it creates a
    new one and adds that the cache. If the cache is full already when a new
-   conncetion is added added, it will first close the oldest unused one.
+   connection is added added, it will first close the oldest unused one.
  o When the transfer operation is complete, the connection is left
    open. Particular options may tell libcurl not to, and protocols may signal
    closure on connections and then they won't be kept open of course.
  o When the transfer operation is complete, the connection is left
    open. Particular options may tell libcurl not to, and protocols may signal
    closure on connections and then they won't be kept open of course.
@@ -337,10 +350,10 @@ SSL libraries
  in future libcurl versions.
 
  To deal with this internally in the best way possible, we have a generic SSL
  in future libcurl versions.
 
  To deal with this internally in the best way possible, we have a generic SSL
- function API as provided by the sslgen.[ch] system, and they are the only SSL
- functions we must use from within libcurl. sslgen is then crafted to use the
+ function API as provided by the vtls.[ch] system, and they are the only SSL
+ functions we must use from within libcurl. vtls is then crafted to use the
  appropriate lower-level function calls to whatever SSL library that is in
  appropriate lower-level function calls to whatever SSL library that is in
- use.
+ use. For example vtls/openssl.[ch] for the OpenSSL library.
 
 Library Symbols
 ===============
 
 Library Symbols
 ===============
index 7bd6e6e..7788567 100644 (file)
@@ -3,43 +3,56 @@ join in and help us correct one or more of these! Also be sure to check the
 changelog of the current development status, as one or more of these problems
 may have been fixed since this was written!
 
 changelog of the current development status, as one or more of these problems
 may have been fixed since this was written!
 
-83. curl is unable to load non-default openssl engines, because openssl isn't
-  initialized properly. This seems to require OpenSSL_config() or
-  CONF_modules_load_file() to be used by libcurl but the first seems to not
-  work and we've gotten not reports from tests with the latter. Possibly we
-  need to discuss with OpenSSL developers how this is supposed to be done. We
-  need users with actual external openssl engines for testing to work on this.
-  http://curl.haxx.se/bug/view.cgi?id=1208
+88. libcurl doesn't support CURLINFO_FILETIME for SFTP transfers and thus
+  curl's -R option also doesn't work then.
+
+87. -J/--remote-header-name doesn't decode %-encoded file names. RFC6266
+  details how it should be done. The can of worm is basically that we have no
+  charset handling in curl and ascii >=128 is a challenge for us. Not to
+  mention that decoding also means that we need to check for nastiness that is
+  attempted, like "../" sequences and the like. Probably everything to the left
+  of any embedded slashes should be cut off.
+  http://curl.haxx.se/bug/view.cgi?id=1294
+
+86. The disconnect commands (LOGOUT and QUIT) may not be sent by IMAP, POP3
+  and SMTP if a failure occurs during the authentication phase of a
+  connection.
+
+85. Wrong STARTTRANSFER timer accounting for POST requests
+  Timer works fine with GET requests, but while using POST the time for
+  CURLINFO_STARTTRANSFER_TIME is wrong. While using POST
+  CURLINFO_STARTTRANSFER_TIME minus CURLINFO_PRETRANSFER_TIME is near to zero
+  every time.
+  http://curl.haxx.se/bug/view.cgi?id=1213
+
+84. CURLINFO_SSL_VERIFYRESULT is only implemented for the OpenSSL and NSS
+  backends, so relying on this information in a generic app is flaky.
 
 82. When building with the Windows Borland compiler, it fails because the
   "tlib" tool doesn't support hyphens (minus signs) in file names and we have
   such in the build.
   http://curl.haxx.se/bug/view.cgi?id=1222
 
 
 82. When building with the Windows Borland compiler, it fails because the
   "tlib" tool doesn't support hyphens (minus signs) in file names and we have
   such in the build.
   http://curl.haxx.se/bug/view.cgi?id=1222
 
-81. When using -J (with -O), automaticly resumed downloading together with "-C
-  -" fails. Without -J the same command line works! This happens because the
-  resume logic is worked out before the target file name (and thus its
+81. When using -J (with -O), automatically resumed downloading together with
+  "-C -" fails. Without -J the same command line works! This happens because
+  the resume logic is worked out before the target file name (and thus its
   pre-transfer size) has been figured out!
   http://curl.haxx.se/bug/view.cgi?id=1169
 
 80. Curl doesn't recognize certificates in DER format in keychain, but it
   works with PEM.
   pre-transfer size) has been figured out!
   http://curl.haxx.se/bug/view.cgi?id=1169
 
 80. Curl doesn't recognize certificates in DER format in keychain, but it
   works with PEM.
-  http://curl.haxx.se/bug/view.cgi?id=3439999
+  http://curl.haxx.se/bug/view.cgi?id=1065
 
 79. SMTP. When sending data to multiple recipients, curl will abort and return
   failure if one of the recipients indicate failure (on the "RCPT TO"
   command). Ordinary mail programs would proceed and still send to the ones
   that can receive data. This is subject for change in the future.
 
 79. SMTP. When sending data to multiple recipients, curl will abort and return
   failure if one of the recipients indicate failure (on the "RCPT TO"
   command). Ordinary mail programs would proceed and still send to the ones
   that can receive data. This is subject for change in the future.
-  http://curl.haxx.se/bug/view.cgi?id=3438362
+  http://curl.haxx.se/bug/view.cgi?id=1116
 
 78. curl and libcurl don't always signal the client properly when "sending"
   zero bytes files - it makes for example the command line client not creating
   any file at all. Like when using FTP.
 
 78. curl and libcurl don't always signal the client properly when "sending"
   zero bytes files - it makes for example the command line client not creating
   any file at all. Like when using FTP.
-  http://curl.haxx.se/bug/view.cgi?id=3438362
-
-77. CURLOPT_FORBID_REUSE on a handle prevents NTLM from working since it
-  "abuses" the underlying connection re-use system and if connections are
-  forced to close they break the NTLM support.
+  http://curl.haxx.se/bug/view.cgi?id=1063
 
 76. The SOCKET type in Win64 is 64 bits large (and thus so is curl_socket_t on
   that platform), and long is only 32 bits. It makes it impossible for
 
 76. The SOCKET type in Win64 is 64 bits large (and thus so is curl_socket_t on
   that platform), and long is only 32 bits. It makes it impossible for
@@ -47,12 +60,12 @@ may have been fixed since this was written!
   option as for all other operating systems.
 
 75. NTLM authentication involving unicode user name or password only works
   option as for all other operating systems.
 
 75. NTLM authentication involving unicode user name or password only works
-  properly if built with UNICODE defined together with the schannel/winssl
+  properly if built with UNICODE defined together with the WinSSL/schannel
   backend. The original problem was mentioned in:
   http://curl.haxx.se/mail/lib-2009-10/0024.html
   backend. The original problem was mentioned in:
   http://curl.haxx.se/mail/lib-2009-10/0024.html
-  http://curl.haxx.se/bug/view.cgi?id=2944325
+  http://curl.haxx.se/bug/view.cgi?id=896
 
 
-  The schannel version verified to work as mentioned in
+  The WinSSL/schannel version verified to work as mentioned in
   http://curl.haxx.se/mail/lib-2012-07/0073.html
 
 73. if a connection is made to a FTP server but the server then just never
   http://curl.haxx.se/mail/lib-2012-07/0073.html
 
 73. if a connection is made to a FTP server but the server then just never
@@ -60,7 +73,7 @@ may have been fixed since this was written!
   acknowledge the connection timeout during that phase but only the "real"
   timeout - which may surprise users as it is probably considered to be the
   connect phase to most people. Brought up (and is being misunderstood) in:
   acknowledge the connection timeout during that phase but only the "real"
   timeout - which may surprise users as it is probably considered to be the
   connect phase to most people. Brought up (and is being misunderstood) in:
-  http://curl.haxx.se/bug/view.cgi?id=2844077
+  http://curl.haxx.se/bug/view.cgi?id=856
 
 72. "Pausing pipeline problems."
   http://curl.haxx.se/mail/lib-2009-07/0214.html
 
 72. "Pausing pipeline problems."
   http://curl.haxx.se/mail/lib-2009-07/0214.html
@@ -78,7 +91,7 @@ may have been fixed since this was written!
   http://tools.ietf.org/html/draft-reschke-rfc2231-in-http-02
 
 66. When using telnet, the time limitation options don't work.
   http://tools.ietf.org/html/draft-reschke-rfc2231-in-http-02
 
 66. When using telnet, the time limitation options don't work.
-  http://curl.haxx.se/bug/view.cgi?id=2818950
+  http://curl.haxx.se/bug/view.cgi?id=846
 
 65. When doing FTP over a socks proxy or CONNECT through HTTP proxy and the
   multi interface is used, libcurl will fail if the (passive) TCP connection
 
 65. When doing FTP over a socks proxy or CONNECT through HTTP proxy and the
   multi interface is used, libcurl will fail if the (passive) TCP connection
@@ -109,7 +122,7 @@ may have been fixed since this was written!
   and instead the connection is "cancelled" (the operation is considered done)
   prematurely. There is a half-baked (busy-looping) patch provided in the bug
   report but it cannot be accepted as-is. See
   and instead the connection is "cancelled" (the operation is considered done)
   prematurely. There is a half-baked (busy-looping) patch provided in the bug
   report but it cannot be accepted as-is. See
-  http://curl.haxx.se/bug/view.cgi?id=2006544
+  http://curl.haxx.se/bug/view.cgi?id=748
 
 55. libcurl fails to build with MIT Kerberos for Windows (KfW) due to KfW's
   library header files exporting symbols/macros that should be kept private
 
 55. libcurl fails to build with MIT Kerberos for Windows (KfW) due to KfW's
   library header files exporting symbols/macros that should be kept private
@@ -133,12 +146,12 @@ may have been fixed since this was written!
   protocol code. This should be very rare.
 
 43. There seems to be a problem when connecting to the Microsoft telnet server.
   protocol code. This should be very rare.
 
 43. There seems to be a problem when connecting to the Microsoft telnet server.
-  http://curl.haxx.se/bug/view.cgi?id=1720605
+  http://curl.haxx.se/bug/view.cgi?id=649
 
 41. When doing an operation over FTP that requires the ACCT command (but not
   when logging in), the operation will fail since libcurl doesn't detect this
   and thus fails to issue the correct command:
 
 41. When doing an operation over FTP that requires the ACCT command (but not
   when logging in), the operation will fail since libcurl doesn't detect this
   and thus fails to issue the correct command:
-  http://curl.haxx.se/bug/view.cgi?id=1693337
+  http://curl.haxx.se/bug/view.cgi?id=635
 
 39. Steffen Rumler's Race Condition in Curl_proxyCONNECT:
   http://curl.haxx.se/mail/lib-2007-01/0045.html
 
 39. Steffen Rumler's Race Condition in Curl_proxyCONNECT:
   http://curl.haxx.se/mail/lib-2007-01/0045.html
@@ -151,28 +164,15 @@ may have been fixed since this was written!
 
 34. The SOCKS4 connection codes don't properly acknowledge (connect) timeouts.
   Also see #12. According to bug #1556528, even the SOCKS5 connect code does
 
 34. The SOCKS4 connection codes don't properly acknowledge (connect) timeouts.
   Also see #12. According to bug #1556528, even the SOCKS5 connect code does
-  not do it right: http://curl.haxx.se/bug/view.cgi?id=1556528,
+  not do it right: http://curl.haxx.se/bug/view.cgi?id=604
 
 31. "curl-config --libs" will include details set in LDFLAGS when configure is
   run that might be needed only for building libcurl. Further, curl-config
   --cflags suffers from the same effects with CFLAGS/CPPFLAGS.
 
 
 31. "curl-config --libs" will include details set in LDFLAGS when configure is
   run that might be needed only for building libcurl. Further, curl-config
   --cflags suffers from the same effects with CFLAGS/CPPFLAGS.
 
-30. You need to use -g to the command line tool in order to use RFC2732-style
-  IPv6 numerical addresses in URLs.
-
-29. IPv6 URLs with zone ID is not nicely supported.
-  http://www.ietf.org/internet-drafts/draft-fenner-literal-zone-02.txt (expired)
-  specifies the use of a plus sign instead of a percent when specifying zone
-  IDs in URLs to get around the problem of percent signs being
-  special. According to the reporter, Firefox deals with the URL _with_ a
-  percent letter (which seems like a blatant URL spec violation).
-  libcurl supports zone IDs where the percent sign is URL-escaped (i.e. %25).
-
-   See http://curl.haxx.se/bug/view.cgi?id=1371118
-
 26. NTLM authentication using SSPI (on Windows) when (lib)curl is running in
   "system context" will make it use wrong(?) user name - at least when compared
 26. NTLM authentication using SSPI (on Windows) when (lib)curl is running in
   "system context" will make it use wrong(?) user name - at least when compared
-  to what winhttp does. See http://curl.haxx.se/bug/view.cgi?id=1281867
+  to what winhttp does. See http://curl.haxx.se/bug/view.cgi?id=535
 
 23. SOCKS-related problems:
   B) libcurl doesn't support FTPS over a SOCKS proxy.
 
 23. SOCKS-related problems:
   B) libcurl doesn't support FTPS over a SOCKS proxy.
@@ -200,7 +200,7 @@ may have been fixed since this was written!
   be to use a data structure other than a plain C string, one that can handle
   embedded NUL characters.  From a practical standpoint, most FTP servers
   would not meaningfully support NUL characters within RFC 959 <string>,
   be to use a data structure other than a plain C string, one that can handle
   embedded NUL characters.  From a practical standpoint, most FTP servers
   would not meaningfully support NUL characters within RFC 959 <string>,
-  anyway (e.g., UNIX pathnames may not contain NUL).
+  anyway (e.g., Unix pathnames may not contain NUL).
 
 14. Test case 165 might fail on a system which has libidn present, but with an
   old iconv version (2.1.3 is a known bad version), since it doesn't recognize
 
 14. Test case 165 might fail on a system which has libidn present, but with an
   old iconv version (2.1.3 is a known bad version), since it doesn't recognize
@@ -215,10 +215,10 @@ may have been fixed since this was written!
   acknowledged after the actual TCP connect (during the SOCKS "negotiate"
   phase).
 
   acknowledged after the actual TCP connect (during the SOCKS "negotiate"
   phase).
 
-10. To get HTTP Negotiate authentication to work fine, you need to provide a
-  (fake) user name (this concerns both curl and the lib) because the code
-  wrongly only considers authentication if there's a user name provided.
-  http://curl.haxx.se/bug/view.cgi?id=1004841. How?
+10. To get HTTP Negotiate (SPNEGO) authentication to work fine, you need to
+  provide a (fake) user name (this concerns both curl and the lib) because the
+  code wrongly only considers authentication if there's a user name provided.
+  http://curl.haxx.se/bug/view.cgi?id=440 How?
   http://curl.haxx.se/mail/lib-2004-08/0182.html
 
 8. Doing resumed upload over HTTP does not work with '-C -', because curl
   http://curl.haxx.se/mail/lib-2004-08/0182.html
 
 8. Doing resumed upload over HTTP does not work with '-C -', because curl
index 20f2d34..136d17c 100644 (file)
@@ -47,7 +47,7 @@ for older and later versions as things don't change drastically that often.
   ->mstate is the multi state of this particular SessionHandle. When
   multi_runsingle() is called, it will act on this handle according to which
   state it is in. The mstate is also what tells which sockets to return for a
   ->mstate is the multi state of this particular SessionHandle. When
   multi_runsingle() is called, it will act on this handle according to which
   state it is in. The mstate is also what tells which sockets to return for a
-  speicific SessionHandle when curl_multi_fdset() is called etc.
+  specific SessionHandle when curl_multi_fdset() is called etc.
 
   The libcurl source code generally use the name 'data' for the variable that
   points to the SessionHandle.
 
   The libcurl source code generally use the name 'data' for the variable that
   points to the SessionHandle.
@@ -60,7 +60,7 @@ for older and later versions as things don't change drastically that often.
   re-use an existing one instead of creating a new as it creates a significant
   performance boost.
 
   re-use an existing one instead of creating a new as it creates a significant
   performance boost.
 
-  Each 'connectdata' identifies a single physical conncetion to a server. If
+  Each 'connectdata' identifies a single physical connection to a server. If
   the connection can't be kept alive, the connection will be closed after use
   and then this struct can be removed from the cache and freed.
 
   the connection can't be kept alive, the connection will be closed after use
   and then this struct can be removed from the cache and freed.
 
@@ -158,18 +158,18 @@ for older and later versions as things don't change drastically that often.
 
   ->do_it is the function called to issue the transfer request. What we call
   the DO action internally. If the DO is not enough and things need to be kept
 
   ->do_it is the function called to issue the transfer request. What we call
   the DO action internally. If the DO is not enough and things need to be kept
-  getting done for the entier DO sequence to complete, ->doing is then usually
+  getting done for the entire DO sequence to complete, ->doing is then usually
   also provided. Each protocol that needs to do multiple commands or similar
   for do/doing need to implement their own state machines (see SCP, SFTP,
   FTP). Some protocols (only FTP and only due to historical reasons) has a
   separate piece of the DO state called DO_MORE.
 
   also provided. Each protocol that needs to do multiple commands or similar
   for do/doing need to implement their own state machines (see SCP, SFTP,
   FTP). Some protocols (only FTP and only due to historical reasons) has a
   separate piece of the DO state called DO_MORE.
 
-  ->doing keeps getting called while issudeing the transfer request command(s)
+  ->doing keeps getting called while issuing the transfer request command(s)
 
   ->done gets called when the transfer is complete and DONE. That's after the
   main data has been transferred.
 
 
   ->done gets called when the transfer is complete and DONE. That's after the
   main data has been transferred.
 
-  ->do_more gets called doring the DO_MORE state. The FTP protocol uses this
+  ->do_more gets called during the DO_MORE state. The FTP protocol uses this
   state when setting up the second connection.
 
   ->proto_getsock
   state when setting up the second connection.
 
   ->proto_getsock
index f596546..a53835c 100644 (file)
@@ -21,9 +21,7 @@ announcement clause that collides with GPL.
 libcurl http://curl.haxx.se/docs/copyright.html
 
         Uses an MIT (or Modified BSD)-style license that is as liberal as
 libcurl http://curl.haxx.se/docs/copyright.html
 
         Uses an MIT (or Modified BSD)-style license that is as liberal as
-        possible.  Some of the source files that deal with KRB4 have Original
-        BSD-style announce-clause licenses. You may not distribute binaries
-        with krb4-enabled libcurl that also link with GPL-licensed code!
+        possible.
 
 OpenSSL http://www.openssl.org/source/license.html
 
 
 OpenSSL http://www.openssl.org/source/license.html
 
@@ -70,14 +68,6 @@ zlib    http://www.gzip.org/zlib/zlib_license.html
         (Used for compressed Transfer-Encoding support) Uses an MIT-style
         license that shouldn't collide with any other library.
 
         (Used for compressed Transfer-Encoding support) Uses an MIT-style
         license that shouldn't collide with any other library.
 
-krb4
-
-        While nothing in particular says that a Kerberos4 library must use any
-        particular license, the one I've tried and used successfully so far
-        (kth-krb4) is partly Original BSD-licensed with the announcement
-        clause. Some of the code in libcurl that is written to deal with
-        Kerberos4 is Modified BSD-licensed.
-
 MIT Kerberos http://web.mit.edu/kerberos/www/dist/
 
         (May be used for GSS support) MIT licensed, that shouldn't collide
 MIT Kerberos http://web.mit.edu/kerberos/www/dist/
 
         (May be used for GSS support) MIT licensed, that shouldn't collide
@@ -94,12 +84,6 @@ GNU GSS http://www.gnu.org/software/gss/
         may not distribute binary curl packages that uses this if you build
         curl to also link and use any Original BSD licensed libraries!
 
         may not distribute binary curl packages that uses this if you build
         curl to also link and use any Original BSD licensed libraries!
 
-fbopenssl
-
-        (Used for SPNEGO support) Unclear license. Based on its name, I assume
-        that it uses the OpenSSL license and thus shares the same issues as
-        described for OpenSSL above.
-
 libidn  http://josefsson.org/libidn/
 
         (Used for IDNA support) Uses the GNU Lesser General Public
 libidn  http://josefsson.org/libidn/
 
         (Used for IDNA support) Uses the GNU Lesser General Public
index ae1821a..fb50312 100644 (file)
@@ -14,6 +14,7 @@ MAIL ETIQUETTE
   1.5 Moderation of new posters
   1.6 Handling trolls and spam
   1.7 How to unsubscribe
   1.5 Moderation of new posters
   1.6 Handling trolls and spam
   1.7 How to unsubscribe
+  1.8 I posted, now what?
 
  2. Sending mail
   2.1 Reply or New Mail
 
  2. Sending mail
   2.1 Reply or New Mail
@@ -105,7 +106,7 @@ MAIL ETIQUETTE
   No matter what, we NEVER EVER respond to trolls or spammers on the list. If
   you believe the list admin should do something particular, contact him/her
   off-list. The subject will be taken care of as good as possible to prevent
   No matter what, we NEVER EVER respond to trolls or spammers on the list. If
   you believe the list admin should do something particular, contact him/her
   off-list. The subject will be taken care of as good as possible to prevent
-  repeated offences, but responding on the list to such messages never lead to
+  repeated offenses, but responding on the list to such messages never lead to
   anything good and only puts the light even more on the offender: which was
   the entire purpose of it getting to the list in the first place.
 
   anything good and only puts the light even more on the offender: which was
   the entire purpose of it getting to the list in the first place.
 
@@ -125,6 +126,42 @@ MAIL ETIQUETTE
   You NEVER EVER email the mailing list requesting someone else to get you off
   the list.
 
   You NEVER EVER email the mailing list requesting someone else to get you off
   the list.
 
+  1.8 I posted, now what?
+
+  If you aren't subscribed with the exact same email address that you used to
+  send the email, your post will just be silently discarded.
+
+  If you posted for the first time to the mailing list, you first need to wait
+  for an administrator to allow your email to go through. This normally
+  happens very quickly but in case we're asleep, you may have to wait a few
+  hours.
+
+  Once your email goes through it is sent out to several hundred or even
+  thousand recipients.  Your email may cover an area that not that many people
+  know about or are interested in. Or possibly the person who knows about it
+  is on vacation or under a very heavy work load right now. You have to wait
+  for a response and you must not expect to get a response at all, but
+  hopefully you get an answer within a couple of days.
+
+  You do yourself and all of us a service when you include as many details as
+  possible already in your first email. Mention your operating system and
+  environment. Tell us which curl version you're using and tell us what you
+  did, what happened and what you expected would happen. Preferably, show us
+  what you did in details enough to allow others to help point out the problem
+  or repeat the same steps in their places.
+
+  Failing to include details will only delay responses and make people respond
+  and ask for the details and you have to send a follow-up email that includes
+  them.
+
+  Expect the responses to primarily help YOU debug the issue, or ask you
+  questions that can lead you or others towards a solution or explanation to
+  whatever you experience.
+
+  If you are a repeat offender to the guidelines outlined in this document,
+  chances are that people will ignore you at will and your chances to get
+  responses will greatly diminish.
+
 
 2. Sending mail
 
 
 2. Sending mail
 
index 4ad2e13..113df20 100644 (file)
@@ -41,16 +41,27 @@ SIMPLE USAGE
 
   Get a file from an SSH server using SFTP:
 
 
   Get a file from an SSH server using SFTP:
 
-        curl -u username sftp://shell.example.com/etc/issue
+        curl -u username sftp://example.com/etc/issue
 
 
-  Get a file from an SSH server using SCP using a private key to authenticate:
+  Get a file from an SSH server using SCP using a private key
+  (not password-protected) to authenticate:
 
 
-        curl -u username: --key ~/.ssh/id_dsa --pubkey ~/.ssh/id_dsa.pub \
-            scp://shell.example.com/~/personal.txt
+        curl -u username: --key ~/.ssh/id_rsa \
+             scp://example.com/~/file.txt
+
+  Get a file from an SSH server using SCP using a private key
+  (password-protected) to authenticate:
+
+        curl -u username: --key ~/.ssh/id_rsa --pass private_key_password \
+             scp://example.com/~/file.txt
 
   Get the main page from an IPv6 web server:
 
 
   Get the main page from an IPv6 web server:
 
-        curl -g "http://[2001:1890:1112:1::20]/"
+        curl "http://[2001:1890:1112:1::20]/"
+
+  Get a file from an SMB server:
+
+        curl -u "domain\username:passwd" smb://server.example.com/share/file.txt
 
 DOWNLOAD TO A FILE
 
 
 DOWNLOAD TO A FILE
 
@@ -91,10 +102,13 @@ USING PASSWORDS
 
  SFTP / SCP
 
 
  SFTP / SCP
 
-   This is similar to FTP, but you can specify a private key to use instead of
-   a password. Note that the private key may itself be protected by a password
-   that is unrelated to the login password of the remote system.  If you
-   provide a private key file you must also provide a public key file.
+   This is similar to FTP, but you can use the --key option to specify a
+   private key to use instead of a password. Note that the private key may
+   itself be protected by a password that is unrelated to the login password
+   of the remote system; this password is specified using the --pass option.
+   Typically, curl will automatically extract the public key from the private
+   key file, but in cases where curl does not have the proper library support,
+   a matching public key file must be specified using the --pubkey option.
 
  HTTP
 
 
  HTTP
 
@@ -108,10 +122,10 @@ USING PASSWORDS
         curl -u name:passwd http://machine.domain/full/path/to/file
 
    HTTP offers many different methods of authentication and curl supports
         curl -u name:passwd http://machine.domain/full/path/to/file
 
    HTTP offers many different methods of authentication and curl supports
-   several: Basic, Digest, NTLM and Negotiate. Without telling which method to
-   use, curl defaults to Basic. You can also ask curl to pick the most secure
-   ones out of the ones that the server accepts for the given URL, by using
-   --anyauth.
+   several: Basic, Digest, NTLM and Negotiate (SPNEGO). Without telling which
+   method to use, curl defaults to Basic. You can also ask curl to pick the
+   most secure ones out of the ones that the server accepts for the given URL,
+   by using --anyauth.
 
    NOTE! According to the URL specification, HTTP URLs can not contain a user
    and password, so that style will not work when using curl via a proxy, even
 
    NOTE! According to the URL specification, HTTP URLs can not contain a user
    and password, so that style will not work when using curl via a proxy, even
@@ -218,6 +232,11 @@ UPLOADING
 
         curl --proxytunnel -x proxy:port -T localfile ftp.upload.com
 
 
         curl --proxytunnel -x proxy:port -T localfile ftp.upload.com
 
+SMB / SMBS
+
+        curl -T file.txt -u "domain\username:passwd" 
+         smb://server.example.com/share/
+
  HTTP
 
   Upload all data on stdin to a specified HTTP site:
  HTTP
 
   Upload all data on stdin to a specified HTTP site:
@@ -956,9 +975,9 @@ IPv6
   When this style is used, the -g option must be given to stop curl from
   interpreting the square brackets as special globbing characters.  Link local
   and site local addresses including a scope identifier, such as fe80::1234%1,
   When this style is used, the -g option must be given to stop curl from
   interpreting the square brackets as special globbing characters.  Link local
   and site local addresses including a scope identifier, such as fe80::1234%1,
-  may also be used, but the scope portion must be numeric and the percent
-  character must be URL escaped. The previous example in an SFTP URL might
-  look like:
+  may also be used, but the scope portion must be numeric or match an existing
+  network interface on Linux and the percent character must be URL escaped. The
+  previous example in an SFTP URL might look like:
 
     sftp://[fe80::1234%251]/
 
 
     sftp://[fe80::1234%251]/
 
index 8466a6c..1f92911 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -37,7 +37,8 @@ EXTRA_DIST = MANUAL BUGS CONTRIBUTE FAQ FEATURES INTERNALS SSLCERTS    \
  README.win32 RESOURCES TODO TheArtOfHttpScripting THANKS VERSIONS      \
  KNOWN_BUGS BINDINGS $(man_MANS) $(HTMLPAGES) HISTORY INSTALL           \
  $(PDFPAGES) LICENSE-MIXING README.netware DISTRO-DILEMMA INSTALL.devcpp \
  README.win32 RESOURCES TODO TheArtOfHttpScripting THANKS VERSIONS      \
  KNOWN_BUGS BINDINGS $(man_MANS) $(HTMLPAGES) HISTORY INSTALL           \
  $(PDFPAGES) LICENSE-MIXING README.netware DISTRO-DILEMMA INSTALL.devcpp \
- MAIL-ETIQUETTE HTTP-COOKIES LIBCURL-STRUCTS
+ MAIL-ETIQUETTE HTTP-COOKIES LIBCURL-STRUCTS SECURITY RELEASE-PROCEDURE  \
+ SSL-PROBLEMS
 
 MAN2HTML= roffit < $< >$@
 
 
 MAN2HTML= roffit < $< >$@
 
index 43a3729..49f9338 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -21,7 +21,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -272,6 +272,7 @@ CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
+CURL_DISABLE_SMB = @CURL_DISABLE_SMB@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
@@ -296,7 +297,6 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_NSS_INITCONTEXT = @HAVE_NSS_INITCONTEXT@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
@@ -305,7 +305,6 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
-KRB4_ENABLED = @KRB4_ENABLED@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
@@ -326,6 +325,7 @@ MKDIR_P = @MKDIR_P@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
+NSS_LIBS = @NSS_LIBS@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
@@ -361,11 +361,13 @@ USE_GNUTLS = @USE_GNUTLS@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
+USE_NGHTTP2 = @USE_NGHTTP2@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
+USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
@@ -436,7 +438,8 @@ EXTRA_DIST = MANUAL BUGS CONTRIBUTE FAQ FEATURES INTERNALS SSLCERTS  \
  README.win32 RESOURCES TODO TheArtOfHttpScripting THANKS VERSIONS      \
  KNOWN_BUGS BINDINGS $(man_MANS) $(HTMLPAGES) HISTORY INSTALL           \
  $(PDFPAGES) LICENSE-MIXING README.netware DISTRO-DILEMMA INSTALL.devcpp \
  README.win32 RESOURCES TODO TheArtOfHttpScripting THANKS VERSIONS      \
  KNOWN_BUGS BINDINGS $(man_MANS) $(HTMLPAGES) HISTORY INSTALL           \
  $(PDFPAGES) LICENSE-MIXING README.netware DISTRO-DILEMMA INSTALL.devcpp \
- MAIL-ETIQUETTE HTTP-COOKIES LIBCURL-STRUCTS
+ MAIL-ETIQUETTE HTTP-COOKIES LIBCURL-STRUCTS SECURITY RELEASE-PROCEDURE  \
+ SSL-PROBLEMS
 
 MAN2HTML = roffit < $< >$@
 SUFFIXES = .1 .html .pdf
 
 MAN2HTML = roffit < $< >$@
 SUFFIXES = .1 .html .pdf
index 41da2e8..12065f3 100644 (file)
@@ -10,7 +10,7 @@ README.netware
 
   Curl has been successfully compiled with gcc / nlmconv on different flavours
   of Linux as well as with the official Metrowerks CodeWarrior compiler.
 
   Curl has been successfully compiled with gcc / nlmconv on different flavours
   of Linux as well as with the official Metrowerks CodeWarrior compiler.
-  While not being the main development target, a continously growing share of
+  While not being the main development target, a continuously growing share of
   curl users are NetWare-based, specially also consuming the lib from PHP.
 
   The unix-style man pages are tricky to read on windows, so therefore are all
   curl users are NetWare-based, specially also consuming the lib from PHP.
 
   The unix-style man pages are tricky to read on windows, so therefore are all
diff --git a/docs/RELEASE-PROCEDURE b/docs/RELEASE-PROCEDURE
new file mode 100644 (file)
index 0000000..2f85b3f
--- /dev/null
@@ -0,0 +1,94 @@
+                                  _   _ ____  _
+                              ___| | | |  _ \| |
+                             / __| | | | |_) | |
+                            | (__| |_| |  _ <| |___
+                             \___|\___/|_| \_\_____|
+
+curl release procedure - how to do a release
+============================================
+
+in the source code repo
+-----------------------
+
+- edit `RELEASE-NOTES` to be accurate
+
+- update `docs/THANKS`
+
+- make sure all relevant changes are committed on the master branch
+
+- tag the git repo in this style: `git tag -a curl-7_34_0`. -a annotates the
+  tag and we use underscores instead of dots in the version number. 
+   
+- run "./maketgz 7.34.0" to build the release tarballs. It is important that
+  you run this on a machine with the correct set of autotools etc installed
+  as this is what then will be shipped and used by most users on *nix like
+  systems.
+
+- push the git commits and the new tag
+
+- gpg sign the 4 tarballs as maketgz suggests
+
+- upload the 8 resulting files to the primary download directory
+
+in the curl-www repo
+--------------------
+
+- edit `Makefile` (version number and date),
+
+- edit `_newslog.html` (announce the new release) and
+
+- edit `_changes.html` (insert changes+bugfixes from RELEASE-NOTES)
+
+- commit all local changes
+
+- tag the repo with the same tag as used for the source repo
+
+- make sure all relevant changes are committed and pushed on the master branch
+
+  (the web site then updates its contents automatically)
+
+inform
+------
+
+- send an email to curl-users, curl-announce and curl-library. Insert the
+  RELEASE-NOTES into the mail.
+
+celebrate
+---------
+
+- suitable beverage intake is encouraged for the festivities
+
+curl release scheduling
+=======================
+
+Basics
+------
+
+We do releases every 8 weeks on Wednesdays. If critical problems arise, we can
+insert releases outside of the schedule or we can move the release date - but
+this is very rare.
+
+Each 8 week release cycle is split in two 4-week periods.
+
+- During the first 4 weeks after a release, we allow new features and changes
+  to curl and libcurl. If we accept any such changes, we bump the minor number
+  used for the next release.
+
+- During the second 4-week period we do not merge any features or changes, we
+  then only focus on fixing bugs and polishing things to make a solid coming
+  release.
+
+Coming dates
+------------
+
+Based on the description above, here are some planned release dates (at the
+time of this writing):
+
+- November 5, 2014 (version 7.39.0)
+- December 31, 2014
+- February 25, 2015
+- April 22, 2015
+- June 17, 2015
+- August 12, 2015
+- October 7, 2015
+- December 2, 2015
diff --git a/docs/SECURITY b/docs/SECURITY
new file mode 100644 (file)
index 0000000..ee844d8
--- /dev/null
@@ -0,0 +1,107 @@
+                                  _   _ ____  _
+                              ___| | | |  _ \| |
+                             / __| | | | |_) | |
+                            | (__| |_| |  _ <| |___
+                             \___|\___/|_| \_\_____|
+
+curl security for developers
+============================
+
+This document is intended to provide guidance to curl developers on how
+security vulnerabilities should be handled.
+
+Publishing Information
+----------------------
+
+All known and public curl or libcurl related vulnerabilities are listed on
+[the curl web site security page](http://curl.haxx.se/docs/security.html).
+
+Security vulnerabilities should not be entered in the project's public bug
+tracker unless the necessary configuration is in place to limit access to the
+issue to only the reporter and the project's security team.
+
+Vulnerability Handling
+----------------------
+
+The typical process for handling a new security vulnerability is as follows.
+
+No information should be made public about a vulnerability until it is
+formally announced at the end of this process. That means, for example that a
+bug tracker entry must NOT be created to track the issue since that will make
+the issue public and it should not be discussed on any of the project's public
+mailing lists. Also messages associated with any commits should not make
+any reference to the security nature of the commit if done prior to the public
+announcement.
+
+- The person discovering the issue, the reporter, reports the vulnerability
+  privately to `curl-security@haxx.se`. That's an email alias that reaches a
+  handful of selected and trusted people.
+
+- Messages that do not relate to the reporting or managing of an undisclosed
+  security vulnerability in curl or libcurl are ignored and no further action
+  is required.
+
+- A person in the security team sends an e-mail to the original reporter to
+  acknowledge the report.
+
+- The security team investigates the report and either rejects it or accepts
+  it.
+
+- If the report is rejected, the team writes to the reporter to explain why.
+
+- If the report is accepted, the team writes to the reporter to let him/her
+  know it is accepted and that they are working on a fix.
+
+- The security team discusses the problem, works out a fix, considers the
+  impact of the problem and suggests a release schedule. This discussion
+  should involve the reporter as much as possible.
+
+- The release of the information should be "as soon as possible" and is most
+  often synced with an upcoming release that contains the fix. If the
+  reporter, or anyone else, thinks the next planned release is too far away
+  then a separate earlier release for security reasons should be considered.
+
+- Write a security advisory draft about the problem that explains what the
+  problem is, its impact, which versions it affects, solutions or
+  workarounds, when the release is out and make sure to credit all
+  contributors properly.
+
+- Request a CVE number from distros@openwall[1] when also informing and
+  preparing them for the upcoming public security vulnerability announcement -
+  attach the advisory draft for information. Note that 'distros' won't accept
+  an embargo longer than 19 days.
+
+- Update the "security advisory" with the CVE number.
+
+- The security team commits the fix in a private branch. The commit message
+  should ideally contain the CVE number. This fix is usually also distributed
+  to the 'distros' mailing list to allow them to use the fix prior to the
+  public announcement.
+
+- At the day of the next release, the private branch is merged into the master
+  branch and pushed. Once pushed, the information is accessible to the public
+  and the actual release should follow suit immediately afterwards.
+
+- The project team creates a release that includes the fix.
+
+- The project team announces the release and the vulnerability to the world in
+  the same manner we always announce releases. It gets sent to the
+  curl-announce, curl-library and curl-users mailing lists.
+
+- The security web page on the web site should get the new vulnerability
+  mentioned.
+
+[1] = http://oss-security.openwall.org/wiki/mailing-lists/distros
+
+CURL-SECURITY (at haxx dot se)
+------------------------------
+
+Who is on this list? There are a couple of criteria you must meet, and then we
+might ask you to join the list or you can ask to join it. It really isn't very
+formal. We basically only require that you have a long-term presence in the
+curl project and you have shown an understanding for the project and its way
+of working. You must've been around for a good while and you should have no
+plans in vanishing in the near future.
+
+We do not make the list of partipants public mostly because it tends to vary
+somewhat over time and a list somewhere will only risk getting outdated.
diff --git a/docs/SSL-PROBLEMS b/docs/SSL-PROBLEMS
new file mode 100644 (file)
index 0000000..7ee4d14
--- /dev/null
@@ -0,0 +1,67 @@
+                                  _   _ ____  _
+                              ___| | | |  _ \| |
+                             / __| | | | |_) | |
+                            | (__| |_| |  _ <| |___
+                             \___|\___/|_| \_\_____|
+
+SSL problems
+
+  First, let's establish that we often refer to TLS and SSL interchangeably as
+  SSL here. The current protocol is called TLS, it was called SSL a long time
+  ago.
+
+  There are several known reasons why a connection that involves SSL might
+  fail. This is a document that attempts to details the most common ones and
+  how to mitigate them.
+
+CA certs
+
+  CA certs are used to digitally verify the server's certificate. You need a
+  "ca bundle" for this. See lots of more details on this in the SSLCERTS
+  document.
+
+CA bundle missing intermediate certificates
+
+  When using said CA bundle to verify a server cert, you will experience
+  problems if your CA cert does not have the certificates for the
+  intermediates in the whole trust chain.
+
+SSL version
+
+  Some broken servers fail to support the protocol negotiation properly that
+  SSL servers are supposed to handle. This may cause the connection to fail
+  completely. Sometimes you may need to explicitly select a SSL version to use
+  when connecting to make the connection succeed.
+
+  An additional complication can be that modern SSL libraries sometimes are
+  built with support for older SSL and TLS versions disabled!
+
+SSL ciphers
+
+  Clients give servers a list of ciphers to select from. If the list doesn't
+  include any ciphers the server wants/can use, the connection handshake
+  fails.
+
+  curl has recently disabled the user of a whole bunch of seriously insecure
+  ciphers from its default set (slightly depending on SSL backend in use).
+
+  You may have to explicitly provide an alternative list of ciphers for curl
+  to use to allow the server to use a WEAK cipher for you.
+
+  Note that these weak ciphers are identified as flawed. For example, this
+  includes symmetric ciphers with less than 128 bit keys and RC4.
+
+  References:
+
+  http://tools.ietf.org/html/draft-popov-tls-prohibiting-rc4-01
+  
+Allow BEAST
+
+  BEAST is the name of a TLS 1.0 attack that surfaced 2011. When adding means
+  to mitigate this attack, it turned out that some broken servers out there in
+  the wild didn't work properly with the BEAST mitigation in place.
+
+  To make such broken servers work, the --ssl-allow-beast option was
+  introduced. Exactly as it sounds, it re-introduces the BEAST vulnerability
+  but on the other hand it allows curl to connect to that kind of strange
+  servers.
index e6b05c3..89e5bb6 100644 (file)
@@ -1,23 +1,46 @@
-                      Peer SSL Certificate Verification
-                      =================================
+SSL Certificate Verification
+============================
 
 
-(NOTE: If libcurl was built with Schannel or Secure Transport support, then
-this does not apply to you. Scroll down for details on how the OS-native
-engines handle SSL certificates. If you're not sure, then run "curl -V" and
-read the results. If the version string says "WinSSL" in it, then it was built
-with Schannel support.)
+SSL is TLS
+----------
+
+SSL is the old name. It is called TLS these days.
+
+
+Native SSL
+----------
+
+If libcurl was built with Schannel or Secure Transport support (the native SSL
+libraries included in Windows and Mac OS X), then this does not apply to
+you. Scroll down for details on how the OS-native engines handle SSL
+certificates. If you're not sure, then run "curl -V" and read the results. If
+the version string says "WinSSL" in it, then it was built with Schannel
+support.
+
+It is about trust
+-----------------
+
+This system is about trust. In your local CA cert bundle you have certs from
+*trusted* Certificate Authorities that you then can use to verify that the
+server certificates you see are valid. They're signed by one of the CAs you
+trust.
+
+Which CAs do you trust? You can decide to trust the same set of companies your
+operating system trusts, or the set one of the known browsers trust. That's
+basically trust via someone else you trust. You should just be aware that
+modern operating systems and browsers are setup to trust *hundreds* of
+companies and recent years several such CAs have been found untrustworthy.
+
+Certificate Verification
+------------------------
 
 libcurl performs peer SSL certificate verification by default.  This is done
 by using CA cert bundle that the SSL library can use to make sure the peer's
 server certificate is valid.
 
 
 libcurl performs peer SSL certificate verification by default.  This is done
 by using CA cert bundle that the SSL library can use to make sure the peer's
 server certificate is valid.
 
-If you communicate with HTTPS or FTPS servers using certificates that are
-signed by CAs present in the bundle, you can be sure that the remote server
-really is the one it claims to be.
-
-Until 7.18.0, curl bundled a severely outdated ca bundle file that was
-installed by default. These days, the curl archives include no ca certs at
-all. You need to get them elsewhere. See below for example.
+If you communicate with HTTPS, FTPS or other TLS-using servers using
+certificates that are signed by CAs present in the bundle, you can be sure
+that the remote server really is the one it claims to be.
 
 If the remote server uses a self-signed certificate, if you don't install a CA
 cert bundle, if the server uses a certificate signed by a CA that isn't
 
 If the remote server uses a self-signed certificate, if you don't install a CA
 cert bundle, if the server uses a certificate signed by a CA that isn't
@@ -26,13 +49,13 @@ impersonating your favorite site, and you want to transfer files from this
 server, do one of the following:
 
  1. Tell libcurl to *not* verify the peer. With libcurl you disable this with
 server, do one of the following:
 
  1. Tell libcurl to *not* verify the peer. With libcurl you disable this with
-    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, FALSE);
+    `curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, FALSE);`
 
     With the curl command line tool, you disable this with -k/--insecure.
 
  2. Get a CA certificate that can verify the remote server and use the proper
     option to point out this CA cert for verification when connecting. For
 
     With the curl command line tool, you disable this with -k/--insecure.
 
  2. Get a CA certificate that can verify the remote server and use the proper
     option to point out this CA cert for verification when connecting. For
-    libcurl hackers: curl_easy_setopt(curl, CURLOPT_CAPATH, capath);
+    libcurl hackers: `curl_easy_setopt(curl, CURLOPT_CAPATH, capath);`
 
     With the curl command line tool: --cacert [file]
 
 
     With the curl command line tool: --cacert [file]
 
@@ -46,32 +69,32 @@ server, do one of the following:
     If you use Internet Explorer, this is one way to get extract the CA cert
     for a particular server:
 
     If you use Internet Explorer, this is one way to get extract the CA cert
     for a particular server:
 
-     o View the certificate by double-clicking the padlock
-     o Find out where the CA certificate is kept (Certificate>
+     - View the certificate by double-clicking the padlock
+     - Find out where the CA certificate is kept (Certificate>
        Authority Information Access>URL)
        Authority Information Access>URL)
-     o Get a copy of the crt file using curl
-     o Convert it from crt to PEM using the openssl tool:
+     - Get a copy of the crt file using curl
+     - Convert it from crt to PEM using the openssl tool:
        openssl x509 -inform DES -in yourdownloaded.crt \
        -out outcert.pem -text
        openssl x509 -inform DES -in yourdownloaded.crt \
        -out outcert.pem -text
-     o Append the 'outcert.pem' to the CA cert bundle or use it stand-alone
+     - Append the 'outcert.pem' to the CA cert bundle or use it stand-alone
        as described below.
 
     If you use the 'openssl' tool, this is one way to get extract the CA cert
     for a particular server:
 
        as described below.
 
     If you use the 'openssl' tool, this is one way to get extract the CA cert
     for a particular server:
 
-     o openssl s_client -connect xxxxx.com:443 |tee logfile
-     o type "QUIT", followed by the "ENTER" key
-     o The certificate will have "BEGIN CERTIFICATE" and "END CERTIFICATE"
+     - `openssl s_client -connect xxxxx.com:443 |tee logfile`
+     - type "QUIT", followed by the "ENTER" key
+     - The certificate will have "BEGIN CERTIFICATE" and "END CERTIFICATE"
        markers.
        markers.
-     o If you want to see the data in the certificate, you can do: "openssl
+     - If you want to see the data in the certificate, you can do: "openssl
        x509 -inform PEM -in certfile -text -out certdata" where certfile is
        the cert you extracted from logfile. Look in certdata.
        x509 -inform PEM -in certfile -text -out certdata" where certfile is
        the cert you extracted from logfile. Look in certdata.
-     o If you want to trust the certificate, you can append it to your
-       cert_bundle or use it stand-alone as described. Just remember that the
+     - If you want to trust the certificate, you can append it to your
+       cert bundle or use it stand-alone as described. Just remember that the
        security is no better than the way you obtained the certificate.
 
  4. If you're using the curl command line tool, you can specify your own CA
        security is no better than the way you obtained the certificate.
 
  4. If you're using the curl command line tool, you can specify your own CA
-    cert path by setting the environment variable CURL_CA_BUNDLE to the path
+    cert path by setting the environment variable `CURL_CA_BUNDLE` to the path
     of your choice.
 
     If you're using the curl command line tool on Windows, curl will search
     of your choice.
 
     If you're using the curl command line tool on Windows, curl will search
@@ -86,9 +109,7 @@ server, do one of the following:
  5. Get a better/different/newer CA cert bundle! One option is to extract the
     one a recent Firefox browser uses by running 'make ca-bundle' in the curl
     build tree root, or possibly download a version that was generated this
  5. Get a better/different/newer CA cert bundle! One option is to extract the
     one a recent Firefox browser uses by running 'make ca-bundle' in the curl
     build tree root, or possibly download a version that was generated this
-    way for you:
-
-        http://curl.haxx.se/docs/caextract.html
+    way for you: [CA Extract](http://curl.haxx.se/docs/caextract.html)
 
 Neglecting to use one of the above methods when dealing with a server using a
 certificate that isn't signed by one of the certificates in the installed CA
 
 Neglecting to use one of the above methods when dealing with a server using a
 certificate that isn't signed by one of the certificates in the installed CA
@@ -96,35 +117,29 @@ cert bundle, will cause SSL to report an error ("certificate verify failed")
 during the handshake and SSL will then refuse further communication with that
 server.
 
 during the handshake and SSL will then refuse further communication with that
 server.
 
-                      Peer SSL Certificate Verification with NSS
-                      ==========================================
+Certificate Verification with NSS
+---------------------------------
 
 If libcurl was built with NSS support, then depending on the OS distribution,
 
 If libcurl was built with NSS support, then depending on the OS distribution,
-it is probably required to take some additional steps to use the system-wide CA
-cert db. RedHat ships with an additional module, libnsspem.so, which enables
-NSS to read the OpenSSL PEM CA bundle. This library is missing in OpenSuSE, and
-without it, NSS can only work with its own internal formats. NSS also has a new
-database format: https://wiki.mozilla.org/NSS_Shared_DB
-
-Starting with version 7.19.7, libcurl will check for the NSS version it runs,
-and automatically add the 'sql:' prefix to the certdb directory (either the
-hardcoded default /etc/pki/nssdb or the directory configured with SSL_DIR
-environment variable) if version 3.12.0 or later is detected. To check which
-ertdb format your distribution provides, examine the default
-certdb location: /etc/pki/nssdb; the new certdb format can be identified by
-the filenames cert9.db, key4.db, pkcs11.txt; filenames of older versions are
-cert8.db, key3.db, modsec.db.
-
-Usually these cert databases are empty, but NSS also has built-in CAs which are
-provided through a shared library, libnssckbi.so; if you want to use these
-built-in CAs, then create a symlink to libnssckbi.so in /etc/pki/nssdb:
-ln -s /usr/lib[64]/libnssckbi.so /etc/pki/nssdb/libnssckbi.so
-
-     Peer SSL Certificate Verification with Schannel and Secure Transport
-     ====================================================================
-
-If libcurl was built with Schannel (Microsoft's TLS/SSL engine) or Secure
-Transport (Apple's TLS/SSL engine) support, then libcurl will still perform
+it is probably required to take some additional steps to use the system-wide
+CA cert db. RedHat ships with an additional module, libnsspem.so, which
+enables NSS to read the OpenSSL PEM CA bundle. This library is missing in
+OpenSuSE, and without it, NSS can only work with its own internal formats. NSS
+also has a new [database format](https://wiki.mozilla.org/NSS_Shared_DB).
+
+Starting with version 7.19.7, libcurl automatically adds the 'sql:' prefix to
+the certdb directory (either the hardcoded default /etc/pki/nssdb or the
+directory configured with SSL_DIR environment variable). To check which certdb
+format your distribution provides, examine the default certdb location:
+/etc/pki/nssdb; the new certdb format can be identified by the filenames
+cert9.db, key4.db, pkcs11.txt; filenames of older versions are cert8.db,
+key3.db, secmod.db.
+
+Certificate Verification with Schannel and Secure Transport
+-----------------------------------------------------------
+
+If libcurl was built with Schannel (Microsoft's native TLS engine) or Secure
+Transport (Apple's native TLS engine) support, then libcurl will still perform
 peer certificate verification, but instead of using a CA cert bundle, it will
 use the certificates that are built into the OS. These are the same
 certificates that appear in the Internet Options control panel (under Windows)
 peer certificate verification, but instead of using a CA cert bundle, it will
 use the certificates that are built into the OS. These are the same
 certificates that appear in the Internet Options control panel (under Windows)
index 693139b..0887881 100644 (file)
@@ -4,11 +4,14 @@
 
  If you have contributed but are missing here, please let us know!
 
 
  If you have contributed but are missing here, please let us know!
 
+Aaro Koskinen
 Aaron Oneal
 Aaron Orenstein
 Aaron Oneal
 Aaron Orenstein
+Abram Pousada
 Adam D. Moss
 Adam Light
 Adam Piggott
 Adam D. Moss
 Adam Light
 Adam Piggott
+Adam Sampson
 Adam Tkac
 Adrian Schuur
 Adriano Meirelles
 Adam Tkac
 Adrian Schuur
 Adriano Meirelles
@@ -19,7 +22,7 @@ Alan Pinstein
 Albert Chin-A-Young
 Albert Choy
 Ale Vesely
 Albert Chin-A-Young
 Albert Choy
 Ale Vesely
-Alejandro Alvarez
+Alejandro Alvarez Ayllon
 Aleksandar Milivojevic
 Aleksey Tulinov
 Alessandro Ghedini
 Aleksandar Milivojevic
 Aleksey Tulinov
 Alessandro Ghedini
@@ -27,6 +30,7 @@ Alessandro Vesely
 Alex Bligh
 Alex Fishman
 Alex Gruz
 Alex Bligh
 Alex Fishman
 Alex Gruz
+Alex McLellan
 Alex Neblett
 Alex Suykov
 Alex Vinnik
 Alex Neblett
 Alex Suykov
 Alex Vinnik
@@ -44,6 +48,7 @@ Alexey Zakhlestin
 Alexis Carvalho
 Alfred Gebert
 Allen Pulsifer
 Alexis Carvalho
 Alfred Gebert
 Allen Pulsifer
+Alona Rossen
 Amol Pattekar
 Amr Shahin
 Anatoli Tubman
 Amol Pattekar
 Amr Shahin
 Anatoli Tubman
@@ -51,6 +56,7 @@ Anders Gustafsson
 Anders Havn
 Andi Jahja
 Andre Guibert de Bruet
 Anders Havn
 Andi Jahja
 Andre Guibert de Bruet
+Andre Heinecke
 Andreas Damm
 Andreas Faerber
 Andreas Farber
 Andreas Damm
 Andreas Faerber
 Andreas Farber
@@ -62,7 +68,8 @@ Andreas Schuldei
 Andreas Wurf
 Andrei Benea
 Andrei Cipu
 Andreas Wurf
 Andrei Benea
 Andrei Cipu
-Andres Garcia
+Andrei Kurushin
+Andrej E Baranov
 Andrew Benham
 Andrew Biggs
 Andrew Bushnell
 Andrew Benham
 Andrew Biggs
 Andrew Bushnell
@@ -78,6 +85,7 @@ Andy Cedilnik
 Andy Serpa
 Andy Tsouladze
 Angus Mackay
 Andy Serpa
 Andy Tsouladze
 Angus Mackay
+Anthon Pang
 Anthony Bryan
 Anthony G. Basile
 Antoine Calando
 Anthony Bryan
 Anthony G. Basile
 Antoine Calando
@@ -91,12 +99,17 @@ Arnaud Compan
 Arnaud Ebalard
 Arthur Murray
 Arve Knudsen
 Arnaud Ebalard
 Arthur Murray
 Arve Knudsen
+Arvid Norberg
+Ask Bjørn Hansen
+Askar Safin
 Ates Goral
 Augustus Saunders
 Avery Fay
 Axel Tillequin
 Balaji Parasuram
 Ates Goral
 Augustus Saunders
 Avery Fay
 Axel Tillequin
 Balaji Parasuram
+Balaji Salunke
 Balint Szilakszi
 Balint Szilakszi
+Barry Abrahamson
 Bart Whiteley
 Bas Mevissen
 Ben Darnell
 Bart Whiteley
 Bas Mevissen
 Ben Darnell
@@ -109,12 +122,16 @@ Benbuck Nason
 Benjamin Gerard
 Benjamin Gilbert
 Benjamin Johnson
 Benjamin Gerard
 Benjamin Gilbert
 Benjamin Johnson
+Benoit Neil
+Benoit Sigoure
 Bernard Leak
 Bernhard Reutner-Fischer
 Bertrand Demiddelaer
 Bernard Leak
 Bernhard Reutner-Fischer
 Bertrand Demiddelaer
+Bill Doyle
 Bill Egert
 Bill Hoffman
 Bill Middlecamp
 Bill Egert
 Bill Hoffman
 Bill Middlecamp
+Bill Nagel
 Bjoern Sikora
 Bjorn Augustsson
 Bjorn Reese
 Bjoern Sikora
 Bjorn Augustsson
 Bjorn Reese
@@ -127,7 +144,9 @@ Bogdan Nicula
 Brad Burdick
 Brad Hards
 Brad King
 Brad Burdick
 Brad Hards
 Brad King
+Brad Spencer
 Bradford Bruce
 Bradford Bruce
+Brandon Casey
 Brandon Wang
 Brendan Jurd
 Brent Beardsley
 Brandon Wang
 Brendan Jurd
 Brent Beardsley
@@ -138,6 +157,7 @@ Brian R Duffy
 Brian Ulm
 Brock Noland
 Bruce Mitchener
 Brian Ulm
 Brock Noland
 Bruce Mitchener
+Bruno Thomsen
 Bruno de Carvalho
 Bryan Henderson
 Bryan Kemp
 Bruno de Carvalho
 Bryan Henderson
 Bryan Kemp
@@ -145,22 +165,25 @@ Byrial Jensen
 Cameron Kaiser
 Camille Moncelier
 Caolan McNamara
 Cameron Kaiser
 Camille Moncelier
 Caolan McNamara
+Carlo Wood
 Carsten Lange
 Casey O'Donnell
 Carsten Lange
 Casey O'Donnell
-Cedric Deltheil
+Catalin Patulea
 Chad Monroe
 Chandrakant Bagul
 Charles Kerr
 Chad Monroe
 Chandrakant Bagul
 Charles Kerr
+Chen Prog
 Chih-Chung Chang
 Chris "Bob Bob"
 Chris Combes
 Chih-Chung Chang
 Chris "Bob Bob"
 Chris Combes
-Chris Conroy
+Chris Conlon
 Chris Deidun
 Chris Flerackers
 Chris Gaukroger
 Chris Maltby
 Chris Mumford
 Chris Smowton
 Chris Deidun
 Chris Flerackers
 Chris Gaukroger
 Chris Maltby
 Chris Mumford
 Chris Smowton
+Chris Young
 Christian Grothoff
 Christian Hägele
 Christian Krause
 Christian Grothoff
 Christian Hägele
 Christian Krause
@@ -181,6 +204,9 @@ Clarence Gardner
 Clemens Gruber
 Clifford Wolf
 Cody Jones
 Clemens Gruber
 Clifford Wolf
 Cody Jones
+Cody Mack
+Colby Ranger
+Colin Blair
 Colin Hogben
 Colin Watson
 Colm Buckley
 Colin Hogben
 Colin Watson
 Colm Buckley
@@ -194,8 +220,10 @@ Cristian Rodríguez
 Curt Bogmine
 Cyrill Osterwalder
 Cédric Deltheil
 Curt Bogmine
 Cyrill Osterwalder
 Cédric Deltheil
+D. Flinkmann
 Dag Ekengren
 Dagobert Michelsen
 Dag Ekengren
 Dagobert Michelsen
+Damian Dixon
 Damien Adant
 Dan Becker
 Dan C
 Damien Adant
 Dan Becker
 Dan C
@@ -221,6 +249,7 @@ Dave Halbakken
 Dave Hamilton
 Dave May
 Dave Reisner
 Dave Hamilton
 Dave May
 Dave Reisner
+Dave Thompson
 Dave Vasilevsky
 David Bau
 David Binderman
 Dave Vasilevsky
 David Bau
 David Binderman
@@ -237,21 +266,31 @@ David Kimdon
 David Lang
 David LeBlanc
 David McCreedy
 David Lang
 David LeBlanc
 David McCreedy
+David Meyer
 David Odin
 David Phillips
 David Rosenstrauch
 David Odin
 David Phillips
 David Rosenstrauch
+David Ryskalczyk
 David Shaw
 David Strauss
 David Tarendash
 David Thiel
 David Shaw
 David Strauss
 David Tarendash
 David Thiel
+David Walser
+David Woodhouse
 David Wright
 David Yan
 Dengminwen
 David Wright
 David Yan
 Dengminwen
+Dennis Clarke
+Derek Higgins
 Detlef Schmier
 Didier Brisebourg
 Diego Casorran
 Detlef Schmier
 Didier Brisebourg
 Diego Casorran
+Dilyan Palauzov
 Dima Barsky
 Dima Barsky
+Dima Tisnek
+Dimitar Boevski
 Dimitre Dimitrov
 Dimitre Dimitrov
+Dimitrios Siganos
 Dimitris Sarris
 Dinar
 Dirk Eddelbuettel
 Dimitris Sarris
 Dinar
 Dirk Eddelbuettel
@@ -259,6 +298,7 @@ Dirk Manske
 Dmitri Shubin
 Dmitriy Sergeyev
 Dmitry Bartsevich
 Dmitri Shubin
 Dmitriy Sergeyev
 Dmitry Bartsevich
+Dmitry Falko
 Dmitry Kurochkin
 Dmitry Popov
 Dmitry Rechkin
 Dmitry Kurochkin
 Dmitry Popov
 Dmitry Rechkin
@@ -274,13 +314,13 @@ Douglas R. Horner
 Douglas Steinwand
 Dov Murik
 Duane Cathey
 Douglas Steinwand
 Dov Murik
 Duane Cathey
-Duncan
 Duncan Mac-Vicar Prett
 Dustin Boswell
 Dylan Ellicott
 Dylan Salisbury
 Early Ehlinger
 Ebenezer Ikonne
 Duncan Mac-Vicar Prett
 Dustin Boswell
 Dylan Ellicott
 Dylan Salisbury
 Early Ehlinger
 Ebenezer Ikonne
+Ed Morley
 Edin Kadribasic
 Eduard Bloch
 Edward Rudd
 Edin Kadribasic
 Eduard Bloch
 Edward Rudd
@@ -289,6 +329,7 @@ Eelco Dolstra
 Eetu Ojanen
 Eldar Zaitov
 Ellis Pritchard
 Eetu Ojanen
 Eldar Zaitov
 Ellis Pritchard
+Elmira A Semenova
 Emanuele Bovisio
 Emil Romanus
 Emiliano Ida
 Emanuele Bovisio
 Emil Romanus
 Emiliano Ida
@@ -298,6 +339,7 @@ Eric Cooper
 Eric Hu
 Eric Landes
 Eric Lavigne
 Eric Hu
 Eric Landes
 Eric Lavigne
+Eric Lubin
 Eric Melville
 Eric Mertens
 Eric Rautman
 Eric Melville
 Eric Mertens
 Eric Rautman
@@ -308,20 +350,26 @@ Eric Wong
 Eric Young
 Erick Nuwendam
 Erik Johansson
 Eric Young
 Erick Nuwendam
 Erik Johansson
+Ernest Beinrohr
 Erwan Legrand
 Erwin Authried
 Erwan Legrand
 Erwin Authried
+Ethan Glasser Camp
 Eugene Kotlyarov
 Evan Jordan
 Evgeny Turnaev
 Eygene Ryabinkin
 Eugene Kotlyarov
 Evan Jordan
 Evgeny Turnaev
 Eygene Ryabinkin
+Fabian Frank
 Fabian Hiernaux
 Fabian Keil
 Fabrizio Ammollo
 Fedor Karpelevitch
 Fabian Hiernaux
 Fabian Keil
 Fabrizio Ammollo
 Fedor Karpelevitch
+Felix Yan
 Felix von Leitner
 Feng Tu
 Florian Schoppmann
 Felix von Leitner
 Feng Tu
 Florian Schoppmann
+Florian Weimer
 Forrest Cahoon
 Forrest Cahoon
+Frank Gevaerts
 Frank Hempel
 Frank Keeney
 Frank McGeough
 Frank Hempel
 Frank Keeney
 Frank McGeough
@@ -329,6 +377,7 @@ Frank Meier
 Frank Ticheler
 Frank Van Uffelen
 František Kučera
 Frank Ticheler
 Frank Van Uffelen
 František Kučera
+François Charlier
 Fred Machado
 Fred New
 Fred Noz
 Fred Machado
 Fred New
 Fred Noz
@@ -342,11 +391,14 @@ Gautam Kachroo
 Gautam Mani
 Gavrie Philipson
 Gaz Iqbal
 Gautam Mani
 Gavrie Philipson
 Gaz Iqbal
+Gaël Portay
+Geoff Beier
 Georg Horn
 Georg Huettenegger
 Georg Lippitsch
 Georg Wicherski
 Gerd v. Egidy
 Georg Horn
 Georg Huettenegger
 Georg Lippitsch
 Georg Wicherski
 Gerd v. Egidy
+Gergely Nagy
 Gerhard Herre
 Gerrit Bruchhäuser
 Ghennadi Procopciuc
 Gerhard Herre
 Gerrit Bruchhäuser
 Ghennadi Procopciuc
@@ -359,21 +411,27 @@ Gilles Blanc
 Gisle Vanem
 Giuseppe Attardi
 Giuseppe D'Ambrosio
 Gisle Vanem
 Giuseppe Attardi
 Giuseppe D'Ambrosio
+Glen A Johnson Jr.
 Glen Nakamura
 Glen Scott
 Glen Nakamura
 Glen Scott
-Gokhan Sengun
+Glenn Sheridan
+Gordon Marler
+Gorilla Maguila
 Grant Erickson
 Greg Hewgill
 Greg Morse
 Greg Onufer
 Grant Erickson
 Greg Hewgill
 Greg Morse
 Greg Onufer
+Greg Pratt
 Greg Zavertnik
 Grigory Entin
 Guenole Bescon
 Guenter Knauf
 Guido Berhoerster
 Guillaume Arluison
 Greg Zavertnik
 Grigory Entin
 Guenole Bescon
 Guenter Knauf
 Guido Berhoerster
 Guillaume Arluison
+Gunter Knauf
 Gustaf Hui
 Gwenole Beauchesne
 Gustaf Hui
 Gwenole Beauchesne
+Gökhan Şengün
 Götz Babin-Ebell
 Hamish Mackenzie
 Hang Kin Lau
 Götz Babin-Ebell
 Hamish Mackenzie
 Hang Kin Lau
@@ -382,10 +440,14 @@ Hanno Kranzhoff
 Hans Steegers
 Hans-Jurgen May
 Hardeep Singh
 Hans Steegers
 Hans-Jurgen May
 Hardeep Singh
+Haris Okanovic
 Harshal Pradhan
 Hauke Duden
 Harshal Pradhan
 Hauke Duden
+He Qin
 Heikki Korpela
 Heinrich Ko
 Heikki Korpela
 Heinrich Ko
+Heinrich Schaefer
+Helwing Lutz
 Hendrik Visage
 Henrik Storner
 Henry Ludemann
 Hendrik Visage
 Henrik Storner
 Henry Ludemann
@@ -395,6 +457,7 @@ Ho-chi Chen
 Hoi-Ho Chan
 Hongli Lai
 Howard Chu
 Hoi-Ho Chan
 Hongli Lai
 Howard Chu
+Hubert Kario
 Hzhijun
 Ian D Allen
 Ian Ford
 Hzhijun
 Ian D Allen
 Ian Ford
@@ -406,6 +469,7 @@ Ignacio Vazquez-Abrams
 Igor Franchuk
 Igor Novoseltsev
 Igor Polyakov
 Igor Franchuk
 Igor Novoseltsev
 Igor Polyakov
+Iida Yosiaki
 Ilguiz Latypov
 Ilja van Sprundel
 Immanuel Gregoire
 Ilguiz Latypov
 Ilja van Sprundel
 Immanuel Gregoire
@@ -413,15 +477,18 @@ Ingmar Runge
 Ingo Ralf Blum
 Ingo Wilken
 Ishan SinghLevett
 Ingo Ralf Blum
 Ingo Wilken
 Ishan SinghLevett
+Ivo Bellin Salarin
 Jack Zhang
 Jacky Lam
 Jacob Meuser
 Jacob Moshenko
 Jad Chamcham
 Jack Zhang
 Jacky Lam
 Jacob Meuser
 Jacob Moshenko
 Jad Chamcham
+Jakub Zakrzewski
 James Bursa
 James Cheng
 James Clancy
 James Cone
 James Bursa
 James Cheng
 James Clancy
 James Cone
+James Dury
 James Gallagher
 James Griffiths
 James Housley
 James Gallagher
 James Griffiths
 James Housley
@@ -436,11 +503,13 @@ Jan Schaumann
 Jan Van Boghout
 Jared Jennings
 Jared Lundell
 Jan Van Boghout
 Jared Jennings
 Jared Lundell
+Jari Aalto
 Jari Sundell
 Jason Glasgow
 Jason Liu
 Jason McDonald
 Jason S. Priebe
 Jari Sundell
 Jason Glasgow
 Jason Liu
 Jason McDonald
 Jason S. Priebe
+Javier Barroso
 Jay Austin
 Jayesh A Shah
 Jaz Fresh
 Jay Austin
 Jayesh A Shah
 Jaz Fresh
@@ -449,19 +518,24 @@ Jean-Claude Chauve
 Jean-Francois Bertrand
 Jean-Louis Lemaire
 Jean-Marc Ranger
 Jean-Francois Bertrand
 Jean-Louis Lemaire
 Jean-Marc Ranger
-Jean-Noel Rouvignac
+Jean-Noël Rouvignac
 Jean-Philippe Barrette-LaPierre
 Jeff Connelly
 Jean-Philippe Barrette-LaPierre
 Jeff Connelly
+Jeff Hodges
 Jeff Johnson
 Jeff Johnson
+Jeff King
 Jeff Lawson
 Jeff Phillips
 Jeff Pohlmeyer
 Jeff Weber
 Jeff Lawson
 Jeff Phillips
 Jeff Pohlmeyer
 Jeff Weber
-Jeffrey Pohlmeyer
 Jeremy Friesner
 Jeremy Huddleston
 Jeremy Friesner
 Jeremy Huddleston
+Jeremy Lin
+Jeroen Koekkoek
 Jerome Muffat-Meridol
 Jerome Muffat-Meridol
+Jerome Robert
 Jerome Vouillon
 Jerome Vouillon
+Jerry Krinock
 Jerry Wu
 Jes Badwal
 Jesper Jensen
 Jerry Wu
 Jes Badwal
 Jesper Jensen
@@ -473,6 +547,7 @@ Jim Hollinger
 Jim Meyering
 Jiri Hruska
 Jiri Jaburek
 Jim Meyering
 Jiri Hruska
 Jiri Jaburek
+Jiri Malak
 Jocelyn Jaubert
 Joe Halpin
 Joe Malicki
 Jocelyn Jaubert
 Joe Halpin
 Joe Malicki
@@ -483,9 +558,12 @@ Johan Anderson
 Johan Nilsson
 Johan van Selst
 Johannes Bauer
 Johan Nilsson
 Johan van Selst
 Johannes Bauer
+Johannes Ernst
 John Bradshaw
 John Bradshaw
+John Coffey
 John Crow
 John Dennis
 John Crow
 John Dennis
+John Dunn
 John E. Malmberg
 John Gardiner Myers
 John Janssen
 John E. Malmberg
 John Gardiner Myers
 John Janssen
@@ -503,14 +581,18 @@ Johnny Luong
 Jon Grubbs
 Jon Nelson
 Jon Sargeant
 Jon Grubbs
 Jon Nelson
 Jon Sargeant
+Jon Torrey
 Jon Travis
 Jon Turner
 Jonas Forsman
 Jonas Schnelli
 Jonatan Lander
 Jon Travis
 Jon Turner
 Jonas Forsman
 Jonas Schnelli
 Jonatan Lander
+Jonatan Vela
+Jonathan Cardoso Machado
 Jonathan Hseu
 Jonathan Nieder
 Jongki Suwandi
 Jonathan Hseu
 Jonathan Nieder
 Jongki Suwandi
+Jose Alf
 Jose Kahan
 Josef Wolf
 Josh Kapell
 Jose Kahan
 Josef Wolf
 Josh Kapell
@@ -530,15 +612,16 @@ Jun-ichiro itojun Hagino
 Jurij Smakov
 Justin Fletcher
 Justin Karneges
 Jurij Smakov
 Justin Fletcher
 Justin Karneges
+Justin Maggard
 Jörg Mueller-Tolk
 Jörn Hartroth
 Jörg Mueller-Tolk
 Jörn Hartroth
+K. R. Walker
 Kai Engert
 Kai Sommerfeld
 Kai-Uwe Rommel
 Kalle Vahlman
 Kamil Dudka
 Kang-Jin Lee
 Kai Engert
 Kai Sommerfeld
 Kai-Uwe Rommel
 Kalle Vahlman
 Kamil Dudka
 Kang-Jin Lee
-Karl M
 Karl Moerder
 Karol Pietrzak
 Kaspar Brand
 Karl Moerder
 Karol Pietrzak
 Kaspar Brand
@@ -569,10 +652,13 @@ Krishnendu Majumdar
 Krister Johansen
 Kristian Gunstone
 Kristian Köhntopp
 Krister Johansen
 Kristian Gunstone
 Kristian Köhntopp
+Kyle L. Huff
 Kyle Sallee
 Lachlan O'Dea
 Larry Campbell
 Larry Fahnoe
 Kyle Sallee
 Lachlan O'Dea
 Larry Campbell
 Larry Fahnoe
+Larry Lin
+Larry Stone
 Lars Buitinck
 Lars Gustafsson
 Lars J. Aas
 Lars Buitinck
 Lars Gustafsson
 Lars J. Aas
@@ -583,12 +669,16 @@ Lau Hang Kin
 Laurent Rabret
 Legoff Vincent
 Lehel Bernadt
 Laurent Rabret
 Legoff Vincent
 Lehel Bernadt
+Leif W
 Len Krause
 Lenaic Lefever
 Lenny Rachitsky
 Len Krause
 Lenaic Lefever
 Lenny Rachitsky
+Leon Winter
+Leonardo Rosati
 Liam Healy
 Lijo Antony
 Linas Vepstas
 Liam Healy
 Lijo Antony
 Linas Vepstas
+Lindley French
 Ling Thio
 Linus Nielsen Feltzing
 Lisa Xu
 Ling Thio
 Linus Nielsen Feltzing
 Lisa Xu
@@ -596,21 +686,28 @@ Liza Alenchery
 Lluís Batlle i Rossell
 Loic Dachary
 Loren Kirkby
 Lluís Batlle i Rossell
 Loic Dachary
 Loren Kirkby
+Luan Cestari
 Luca Altea
 Luca Altea
-Luca Alteas
 Lucas Adamski
 Lucas Adamski
+Lucas Pardue
+Ludek Finstrle
 Ludovico Cavedon
 Lukasz Czekierda
 Luke Amery
 Luke Call
 Ludovico Cavedon
 Lukasz Czekierda
 Luke Amery
 Luke Call
+Luke Dashjr
 Luong Dinh Dung
 Luong Dinh Dung
+Lyndon Hill
 Maciej Karpiuk
 Maciej Karpiuk
+Maciej Puzio
 Maciej W. Rozycki
 Maciej W. Rozycki
+Maks Naumov
 Mamoru Tasaka
 Mandy Wu
 Manfred Schwarb
 Manuel Massing
 Marc Boucher
 Mamoru Tasaka
 Mandy Wu
 Manfred Schwarb
 Manuel Massing
 Marc Boucher
+Marc Deslauriers
 Marc Doughty
 Marc Hoersken
 Marc Kleine-Budde
 Marc Doughty
 Marc Hoersken
 Marc Kleine-Budde
@@ -618,6 +715,7 @@ Marcel Raad
 Marcel Roelofs
 Marcelo Juchem
 Marcin Adamski
 Marcel Roelofs
 Marcelo Juchem
 Marcin Adamski
+Marcin Gryszkalis
 Marcin Konicki
 Marco G. Salvagno
 Marco Maggi
 Marcin Konicki
 Marco G. Salvagno
 Marco Maggi
@@ -655,6 +753,7 @@ Mateusz Loskot
 Mathias Axelsson
 Mats Lidell
 Matt Arsenault
 Mathias Axelsson
 Mats Lidell
 Matt Arsenault
+Matt Ford
 Matt Kraai
 Matt Veenstra
 Matt Witherspoon
 Matt Kraai
 Matt Veenstra
 Matt Witherspoon
@@ -672,6 +771,7 @@ Maxim Prohorov
 Maxime Larocque
 Mehmet Bozkurt
 Mekonikum
 Maxime Larocque
 Mehmet Bozkurt
 Mekonikum
+Melissa Mears
 Mettgut Jamalla
 Michael Benedict
 Michael Calmer
 Mettgut Jamalla
 Michael Benedict
 Michael Calmer
@@ -683,15 +783,17 @@ Michael Jahn
 Michael Jerris
 Michael Mealling
 Michael Mueller
 Michael Jerris
 Michael Mealling
 Michael Mueller
+Michael Osipov
 Michael Smith
 Michael Stillwell
 Michael Wallner
 Michal Bonino
 Michael Smith
 Michael Stillwell
 Michael Wallner
 Michal Bonino
-Michal Gorny
-Michal Kowalczyk
 Michal Marek
 Michal Marek
+Michał Górny
+Michał Kowalczyk
 Michele Bini
 Miguel Angel
 Michele Bini
 Miguel Angel
+Miguel Diaz
 Mihai Ionescu
 Mikael Johansson
 Mikael Sennerholm
 Mihai Ionescu
 Mikael Johansson
 Mikael Sennerholm
@@ -699,17 +801,22 @@ Mike Bytnar
 Mike Crowe
 Mike Dobbs
 Mike Giancola
 Mike Crowe
 Mike Dobbs
 Mike Giancola
+Mike Hasselberg
+Mike Henshaw
 Mike Hommey
 Mike Hommey
+Mike Mio
 Mike Power
 Mike Protts
 Mike Revi
 Miklos Nemeth
 Mike Power
 Mike Protts
 Mike Revi
 Miklos Nemeth
+Miroslav Spousta
 Mitz Wark
 Mohamed Lrhazi
 Mitz Wark
 Mohamed Lrhazi
+Mohammad AlSaleh
 Mohun Biswas
 Mohun Biswas
-Moonesamy
 Myk Taylor
 Nach M. S.
 Myk Taylor
 Nach M. S.
+Nagai H
 Nathan Coulter
 Nathan O'Sullivan
 Nathanael Nerode
 Nathan Coulter
 Nathan O'Sullivan
 Nathanael Nerode
@@ -740,10 +847,12 @@ Nodak Sodak
 Norbert Frese
 Norbert Novotny
 Ofer
 Norbert Frese
 Norbert Novotny
 Ofer
+Ola Mork
 Olaf Flebbe
 Olaf Flebbe
-Olaf Stueben
 Olaf Stüben
 Oliver Gondža
 Olaf Stüben
 Oliver Gondža
+Oliver Kuckertz
+Oliver Schindler
 Olivier Berger
 Oren Tirosh
 Ori Avtalion
 Olivier Berger
 Oren Tirosh
 Ori Avtalion
@@ -751,23 +860,30 @@ Oscar Koeroo
 Oscar Norlander
 P R Schaffner
 Paolo Piacentini
 Oscar Norlander
 P R Schaffner
 Paolo Piacentini
+Paras Sethia
 Pascal Terjan
 Pasha Kuznetsov
 Pascal Terjan
 Pasha Kuznetsov
+Pasi Karkkainen
 Pat Ray
 Patrice Guerin
 Patricia Muscalu
 Patrick Bihan-Faou
 Pat Ray
 Patrice Guerin
 Patricia Muscalu
 Patrick Bihan-Faou
+Patrick McManus
 Patrick Monnerat
 Patrick Scott
 Patrick Smith
 Patrick Monnerat
 Patrick Scott
 Patrick Smith
+Patrick Watson
 Patrik Thunstrom
 Pau Garcia i Quiles
 Patrik Thunstrom
 Pau Garcia i Quiles
+Paul Donohue
 Paul Harrington
 Paul Howarth
 Paul Harrington
 Paul Howarth
+Paul Marks
 Paul Marquis
 Paul Moore
 Paul Nolan
 Paul Querna
 Paul Marquis
 Paul Moore
 Paul Nolan
 Paul Querna
+Paul Saab
 Pavel Cenek
 Pavel Orehov
 Pavel Raiskup
 Pavel Cenek
 Pavel Orehov
 Pavel Raiskup
@@ -775,7 +891,6 @@ Pawel A. Gajda
 Pawel Kierski
 Pedro Larroy
 Pedro Neves
 Pawel Kierski
 Pedro Larroy
 Pedro Neves
-Pete Su
 Peter Bray
 Peter Forret
 Peter Gal
 Peter Bray
 Peter Forret
 Peter Gal
@@ -790,8 +905,13 @@ Peter Su
 Peter Sylvester
 Peter Todd
 Peter Verhas
 Peter Sylvester
 Peter Todd
 Peter Verhas
+Peter Wang
+Peter Wu
 Peter Wullinger
 Peteris Krumins
 Peter Wullinger
 Peteris Krumins
+Petr Bahula
+Petr Novak
+Petr Pisar
 Phil Blundell
 Phil Karn
 Phil Lisiecki
 Phil Blundell
 Phil Karn
 Phil Lisiecki
@@ -809,12 +929,16 @@ Pierre Joye
 Pierre Ynard
 Pooyan McSporran
 Pramod Sharma
 Pierre Ynard
 Pooyan McSporran
 Pramod Sharma
+Prash Dush
+Priyanka Shah
 Puneet Pawaia
 Quagmire
 Quanah Gibson-Mount
 Quinn Slack
 Puneet Pawaia
 Quagmire
 Quanah Gibson-Mount
 Quinn Slack
+Radu Simionescu
 Rafa Muyo
 Rafael Sagula
 Rafa Muyo
 Rafael Sagula
+Rafaël Carré
 Rainer Canavan
 Rainer Jung
 Rainer Koenig
 Rainer Canavan
 Rainer Jung
 Rainer Koenig
@@ -827,7 +951,9 @@ Randy McMurchy
 Ravi Pratap
 Ray Dassen
 Ray Pekowski
 Ravi Pratap
 Ray Dassen
 Ray Pekowski
+Ray Satiro
 Reinout van Schouwen
 Reinout van Schouwen
+Remi Gacogne
 Renato Botelho
 Renaud Chaillat
 Renaud Duhaut
 Renato Botelho
 Renaud Chaillat
 Renaud Duhaut
@@ -846,11 +972,13 @@ Richard Clayton
 Richard Cooper
 Richard Gorton
 Richard Michael
 Richard Cooper
 Richard Gorton
 Richard Michael
+Richard Moore
 Richard Prescott
 Richard Silverman
 Rick Jones
 Rick Richardson
 Rob Crittenden
 Richard Prescott
 Richard Silverman
 Rick Jones
 Rick Richardson
 Rob Crittenden
+Rob Davies
 Rob Jones
 Rob Stanzel
 Rob Ward
 Rob Jones
 Rob Stanzel
 Rob Ward
@@ -868,6 +996,7 @@ Robin Johnson
 Robin Kay
 Robson Braga Araujo
 Rodney Simmons
 Robin Kay
 Robson Braga Araujo
 Rodney Simmons
+Rodric Glaser
 Rodrigo Silva
 Roland Blom
 Roland Krikava
 Rodrigo Silva
 Roland Blom
 Roland Krikava
@@ -875,20 +1004,23 @@ Roland Zimmermann
 Rolland Dudemaine
 Roman Koifman
 Roman Mamedov
 Rolland Dudemaine
 Roman Koifman
 Roman Mamedov
+Romulo A. Ceccon
+Ron Parker
 Ron Zapp
 Rosimildo da Silva
 Roy Shan
 Rune Kleveland
 Ruslan Gazizov
 Rutger Hofman
 Ron Zapp
 Rosimildo da Silva
 Roy Shan
 Rune Kleveland
 Ruslan Gazizov
 Rutger Hofman
+Ryan Braud
 Ryan Chan
 Ryan Nelson
 Ryan Schmidt
 Ryan Chan
 Ryan Nelson
 Ryan Schmidt
+Rémy Léone
 S. Moonesamy
 Salvador Dávila
 Salvatore Sorrentino
 Sam Deane
 S. Moonesamy
 Salvador Dávila
 Salvatore Sorrentino
 Sam Deane
-Sam Listopad
 Sampo Kellomaki
 Samuel Díaz García
 Samuel Listopad
 Sampo Kellomaki
 Samuel Díaz García
 Samuel Listopad
@@ -899,6 +1031,7 @@ Santhana Todatry
 Saqib Ali
 Sara Golemon
 Saran Neti
 Saqib Ali
 Sara Golemon
 Saran Neti
+Sascha Swiercy
 Saul good
 Scott Bailey
 Scott Barrett
 Saul good
 Scott Bailey
 Scott Barrett
@@ -906,14 +1039,16 @@ Scott Cantor
 Scott Davis
 Scott McCreary
 Sebastian Rasmussen
 Scott Davis
 Scott McCreary
 Sebastian Rasmussen
-Sebastien Willemijns
 Senthil Raja Velu
 Sergei Nikulov
 Senthil Raja Velu
 Sergei Nikulov
+Sergey Tatarincev
 Sergio Ballestrero
 Seshubabu Pasam
 Sh Diao
 Sergio Ballestrero
 Seshubabu Pasam
 Sh Diao
+Shao Shuchao
 Sharad Gupta
 Shard
 Sharad Gupta
 Shard
+Shawn Landden
 Shawn Poulson
 Shmulik Regev
 Siddhartha Prakash Jain
 Shawn Poulson
 Shmulik Regev
 Siddhartha Prakash Jain
@@ -926,6 +1061,7 @@ Song Ma
 Sonia Subramanian
 Spacen Jasset
 Spiridonoff A.V
 Sonia Subramanian
 Spacen Jasset
 Spiridonoff A.V
+Spork Schivago
 Stadler Stephan
 Stan van de Burgt
 Stanislav Ivochkin
 Stadler Stephan
 Stan van de Burgt
 Stanislav Ivochkin
@@ -935,6 +1071,7 @@ Stefan Neis
 Stefan Teleman
 Stefan Tomanek
 Stefan Ulrich
 Stefan Teleman
 Stefan Tomanek
 Stefan Ulrich
+Steinar H. Gunderson
 Stephan Bergmann
 Stephen Collyer
 Stephen Kick
 Stephan Bergmann
 Stephen Collyer
 Stephen Kick
@@ -954,9 +1091,11 @@ Steven Gu
 Steven M. Schweda
 Steven Parkes
 Stoned Elipot
 Steven M. Schweda
 Steven Parkes
 Stoned Elipot
+Sune Ahlgren
 Sven Anders
 Sven Neuhaus
 Sven Wegener
 Sven Anders
 Sven Neuhaus
 Sven Wegener
+Symeon Paraschoudis
 Sébastien Willemijns
 T. Bharath
 T. Yamada
 Sébastien Willemijns
 T. Bharath
 T. Yamada
@@ -964,12 +1103,15 @@ Taneli Vahakangas
 Tanguy Fautre
 Tatsuhiro Tsujikawa
 Temprimus
 Tanguy Fautre
 Tatsuhiro Tsujikawa
 Temprimus
+Thomas Braun
 Thomas J. Moore
 Thomas Klausner
 Thomas L. Shinnick
 Thomas Lopatic
 Thomas Schwinge
 Thomas Tonino
 Thomas J. Moore
 Thomas Klausner
 Thomas L. Shinnick
 Thomas Lopatic
 Thomas Schwinge
 Thomas Tonino
+Tiit Pikma
+Till Maas
 Tim Ansell
 Tim Baker
 Tim Bartley
 Tim Ansell
 Tim Baker
 Tim Bartley
@@ -978,9 +1120,12 @@ Tim Costello
 Tim Harder
 Tim Heckman
 Tim Newsome
 Tim Harder
 Tim Heckman
 Tim Newsome
+Tim Ruehsen
 Tim Sneddon
 Tim Sneddon
+Tim Starling
 Timo Sirainen
 Tinus van den Berg
 Timo Sirainen
 Tinus van den Berg
+Tobias Markus
 Tobias Rundström
 Toby Peterson
 Todd A Ouska
 Tobias Rundström
 Toby Peterson
 Todd A Ouska
@@ -995,8 +1140,10 @@ Tom Mattison
 Tom Moers
 Tom Mueller
 Tom Regner
 Tom Moers
 Tom Mueller
 Tom Regner
+Tom Sparrow
 Tom Wright
 Tom Zerucha
 Tom Wright
 Tom Zerucha
+Tomas Hoger
 Tomas Mlcoch
 Tomas Pospisek
 Tomas Szepe
 Tomas Mlcoch
 Tomas Pospisek
 Tomas Szepe
@@ -1014,12 +1161,18 @@ Traian Nicolescu
 Troels Walsted Hansen
 Troy Engel
 Tupone Alfredo
 Troels Walsted Hansen
 Troy Engel
 Tupone Alfredo
+Tyler Hall
+Török Edwin
 Ulf Härnhammar
 Ulf Härnhammar
+Ulf Samuelsson
 Ulrich Doehner
 Ulrich Doehner
+Ulrich Telle
 Ulrich Zadow
 Venkat Akella
 Victor Snezhko
 Ulrich Zadow
 Venkat Akella
 Victor Snezhko
+Vijay Panghal
 Vikram Saxena
 Vikram Saxena
+Viktor Szakáts
 Vilmos Nebehaj
 Vincent Bronner
 Vincent Le Normand
 Vilmos Nebehaj
 Vincent Bronner
 Vincent Le Normand
@@ -1033,6 +1186,7 @@ Vladimir Lazarenko
 Vojtech Janota
 Vojtech Minarik
 Vsevolod Novikov
 Vojtech Janota
 Vojtech Minarik
 Vsevolod Novikov
+Waldek Kozba
 Walter J. Mack
 Ward Willats
 Wayne Haigh
 Walter J. Mack
 Ward Willats
 Wayne Haigh
@@ -1041,15 +1195,22 @@ Wesley Laxton
 Wesley Miaw
 Wez Furlong
 Wilfredo Sanchez
 Wesley Miaw
 Wez Furlong
 Wilfredo Sanchez
+Will Dietz
 Willem Sparreboom
 Willem Sparreboom
+William Ahern
 Wojciech Zwiefka
 Wouter Van Rooy
 Wu Yongzheng
 Xavier Bouchoux
 Wojciech Zwiefka
 Wouter Van Rooy
 Wu Yongzheng
 Xavier Bouchoux
-Yamada Yasuharu
+Yaakov Selkowitz
 Yang Tse
 Yarram Sunil
 Yang Tse
 Yarram Sunil
+Yasuharu Yamada
+Yehezkel Horowitz
 Yehoshua Hershberg
 Yehoshua Hershberg
+Yi Huang
+Yingwei Liu
+Yousuke Kimoto
 Yukihiro Kawada
 Yuriy Sosov
 Yves Arrouye
 Yukihiro Kawada
 Yuriy Sosov
 Yves Arrouye
@@ -1061,3 +1222,4 @@ Zvi Har'El
 nk
 swalkaus at yahoo.com
 tommink[at]post.pl
 nk
 swalkaus at yahoo.com
 tommink[at]post.pl
+Никита Дорохин
index 8b133dc..2b5a4c2 100644 (file)
--- a/docs/TODO
+++ b/docs/TODO
  1.3 struct lifreq
  1.4 signal-based resolver timeouts
  1.5 get rid of PATH_MAX
  1.3 struct lifreq
  1.4 signal-based resolver timeouts
  1.5 get rid of PATH_MAX
- 1.6 Happy Eyeball dual stack connect
- 1.7 Modified buffer size approach
+ 1.6 Modified buffer size approach
+ 1.7 Detect when called from within callbacks
+ 1.8 Allow SSL (HTTPS) to proxy
+ 1.9 Cache negative name resolves
 
  2. libcurl - multi interface
  2.1 More non-blocking
  2.2 Fix HTTP Pipelining for PUT
 
  2. libcurl - multi interface
  2.1 More non-blocking
  2.2 Fix HTTP Pipelining for PUT
+ 2.3 Better support for same name resolves
 
  3. Documentation
 
  3. Documentation
- 3.1  More and better
+ 3.1 Update date and version in man pages
 
  4. FTP
  4.1 HOST
  4.2 Alter passive/active on failure and retry
  4.3 Earlier bad letter detection
  4.4 REST for large files
 
  4. FTP
  4.1 HOST
  4.2 Alter passive/active on failure and retry
  4.3 Earlier bad letter detection
  4.4 REST for large files
- 4.5 FTP proxy support
- 4.6 ASCII support
+ 4.5 ASCII support
+ 4.6 GSSAPI via Windows SSPI
+ 4.7 STAT for LIST without data connection
 
  5. HTTP
  5.1 Better persistency for HTTP 1.0
  5.2 support FF3 sqlite cookie files
  5.3 Rearrange request header order
 
  5. HTTP
  5.1 Better persistency for HTTP 1.0
  5.2 support FF3 sqlite cookie files
  5.3 Rearrange request header order
- 5.4 HTTP2/SPDY
+ 5.4 SPDY
+ 5.5 auth= in URLs
 
  6. TELNET
  6.1 ditch stdin
 
  6. TELNET
  6.1 ditch stdin
 
  7. SMTP
  7.1 Pipelining
 
  7. SMTP
  7.1 Pipelining
- 7.2 Graceful base64 decoding failure
- 7.3 Enhanced capability support
+ 7.2 Enhanced capability support
  
  8. POP3
  8.1 Pipelining
  
  8. POP3
  8.1 Pipelining
- 8.2 Graceful base64 decoding failure
- 8.3 Enhanced capability support
+ 8.2 Enhanced capability support
  
  9. IMAP
  
  9. IMAP
- 9.1 Graceful base64 decoding failure
- 9.2 Enhanced capability support
+ 9.1 Enhanced capability support
  
  10. LDAP
  10.1 SASL based authentication mechanisms
  
  10. LDAP
  10.1 SASL based authentication mechanisms
@@ -73,9 +75,8 @@
  12.4 Cache OpenSSL contexts
  12.5 Export session ids
  12.6 Provide callback for cert verification
  12.4 Cache OpenSSL contexts
  12.5 Export session ids
  12.6 Provide callback for cert verification
- 12.7 Support other SSL libraries
- 12.8 improve configure --with-ssl
- 12.9 Support DANE
+ 12.7 improve configure --with-ssl
+ 12.8 Support DANE
 
  13. GnuTLS
  13.1 SSL engine stuff
 
  13. GnuTLS
  13.1 SSL engine stuff
@@ -83,6 +84,7 @@
 
  14. SASL
  14.1 Other authentication mechanisms
 
  14. SASL
  14.1 Other authentication mechanisms
+ 14.2 Add QOP support to GSSAPI authentication
  
  15. Client
  15.1 sync
  
  15. Client
  15.1 sync
@@ -90,9 +92,7 @@
  15.3 prevent file overwriting
  15.4 simultaneous parallel transfers
  15.5 provide formpost headers
  15.3 prevent file overwriting
  15.4 simultaneous parallel transfers
  15.5 provide formpost headers
- 15.6 url-specific options
- 15.7 warning when setting an option
- 15.8 IPv6 addresses with globbing
+ 15.6 warning when setting an option
 
  16. Build
  16.1 roffit
 
  16. Build
  16.1 roffit
  17.2 nicer lacking perl message
  17.3 more protocols supported
  17.4 more platforms supported
  17.2 nicer lacking perl message
  17.3 more protocols supported
  17.4 more platforms supported
+ 17.5 Add support for concurrent connections
 
  18. Next SONAME bump
 
  18. Next SONAME bump
- 18.1 http-style HEAD output for ftp
+ 18.1 http-style HEAD output for FTP
  18.2 combine error codes
  18.3 extend CURLOPT_SOCKOPTFUNCTION prototype
 
  18.2 combine error codes
  18.3 extend CURLOPT_SOCKOPTFUNCTION prototype
 
 
  Use 'struct lifreq' and SIOCGLIFADDR instead of 'struct ifreq' and
  SIOCGIFADDR on newer Solaris versions as they claim the latter is obsolete.
 
  Use 'struct lifreq' and SIOCGLIFADDR instead of 'struct ifreq' and
  SIOCGIFADDR on newer Solaris versions as they claim the latter is obsolete.
- To support ipv6 interface addresses for network interfaces properly.
+ To support IPv6 interface addresses for network interfaces properly.
 
 1.4 signal-based resolver timeouts
 
 
 1.4 signal-based resolver timeouts
 
  we need libssh2 to properly tell us when we pass in a too small buffer and
  its current API (as of libssh2 1.2.7) doesn't.
 
  we need libssh2 to properly tell us when we pass in a too small buffer and
  its current API (as of libssh2 1.2.7) doesn't.
 
-1.6 Happy Eyeball dual stack connect
-
- In order to make alternative technologies not suffer when transitioning, like
- when introducing IPv6 as an alternative to IPv4 and there are more than one
- option existing simultaneously there are reasons to reconsider internal
- choices.
-
- To make libcurl do blazing fast IPv6 in a dual-stack configuration, this needs
- to be addressed:
-
-    http://tools.ietf.org/html/rfc6555
-
-1.7 Modified buffer size approach
+1.6 Modified buffer size approach
 
  Current libcurl allocates a fixed 16K size buffer for download and an
  additional 16K for upload. They are always unconditionally part of the easy
 
  Current libcurl allocates a fixed 16K size buffer for download and an
  additional 16K for upload. They are always unconditionally part of the easy
  Dynamically allocate buffer size depending on protocol in use in combination
  with freeing it after each individual transfer? Other suggestions?
 
  Dynamically allocate buffer size depending on protocol in use in combination
  with freeing it after each individual transfer? Other suggestions?
 
+1.7 Detect when called from within callbacks
+
+ We should set a state variable before calling callbacks, so that we
+ subsequently can add code within libcurl that returns error if called within
+ callbacks for when that's not supported.
+
+1.8 Allow SSL (HTTPS) to proxy
+
+ To prevent local users from snooping on your traffic to the proxy. Supported
+ by Chrome already:
+ http://www.chromium.org/developers/design-documents/secure-web-proxy
+
+ ...and by Firefox soon:
+ https://bugzilla.mozilla.org/show_bug.cgi?id=378637
+
+1.9 Cache negative name resolves
+
+ A name resolve that has failed is likely to fail when made again within a
+ short period of time. Currently we only cache positive responses.
+
 
 2. libcurl - multi interface
 
 
 2. libcurl - multi interface
 
  serial requests and currently libcurl only supports that for HEAD and GET
  requests but it should also be possible for PUT.
 
  serial requests and currently libcurl only supports that for HEAD and GET
  requests but it should also be possible for PUT.
 
+2.3 Better support for same name resolves
+
+ If a name resolve has been initiated for name NN and a second easy handle
+ wants to resolve that name as well, make it wait for the first resolve to end
+ up in the cache instead of doing a second separate resolve. This is
+ especially needed when adding many simultaneous handles using the same host
+ name when the DNS resolver can get flooded.
+
+
 3. Documentation
 
 3. Documentation
 
-3.1  More and better
+3.1 Update date and version in man pages
 
 
- Exactly
+ 'maketgz' or another suitable script could update the .TH sections of the man
+ pages at release time to use the current date and curl/libcurl version
+ number.
 
 4. FTP
 
 4.1 HOST
 
 
 4. FTP
 
 4.1 HOST
 
- HOST is a suggested command in the works for a client to tell which host name
to use, to offer FTP servers named-based virtual hosting:
+ HOST is a command for a client to tell which host name to use, to offer FTP
+ servers named-based virtual hosting:
 
 
- http://tools.ietf.org/html/draft-hethmon-mcmurray-ftp-hosts-11
+ http://tools.ietf.org/html/rfc7151
 
 4.2 Alter passive/active on failure and retry
 
 
 4.2 Alter passive/active on failure and retry
 
 
 4.3 Earlier bad letter detection
 
 
 4.3 Earlier bad letter detection
 
- Make the detection of (bad) %0d and %0a codes in FTP url parts earlier in the
+ Make the detection of (bad) %0d and %0a codes in FTP URL parts earlier in the
  process to avoid doing a resolve and connect in vain.
 
 4.4 REST for large files
  process to avoid doing a resolve and connect in vain.
 
 4.4 REST for large files
  the server doesn't set the pointer to the requested index. The tricky
  (impossible?) part is to figure out if the server did the right thing or not.
 
  the server doesn't set the pointer to the requested index. The tricky
  (impossible?) part is to figure out if the server did the right thing or not.
 
-4.5 FTP proxy support
-
- Support the most common FTP proxies, Philip Newton provided a list allegedly
- from ncftp. This is not a subject without debate, and is probably not really
- suitable for libcurl.  http://curl.haxx.se/mail/archive-2003-04/0126.html
-
-4.6 ASCII support
+4.5 ASCII support
 
  FTP ASCII transfers do not follow RFC959. They don't convert the data
  accordingly.
 
 
  FTP ASCII transfers do not follow RFC959. They don't convert the data
  accordingly.
 
+4.6 GSSAPI via Windows SSPI
+
+In addition to currently supporting the SASL GSSAPI mechanism (Kerberos V5)
+via third-party GSS-API libraries, such as Heimdal or MIT Kerberos, also add
+support for GSSAPI authentication via Windows SSPI.
+
+4.7 STAT for LIST without data connection
+
+Some FTP servers allow STAT for listing directories instead of using LIST, and
+the response is then sent over the control connection instead of as the
+otherwise usedw data connection: http://www.nsftools.com/tips/RawFTP.htm#STAT
+
+This is not detailed in any FTP specification.
+
 5. HTTP
 
 5.1 Better persistency for HTTP 1.0
 5. HTTP
 
 5.1 Better persistency for HTTP 1.0
  headers use a default value so only headers that need to be moved have to be
  specified.
 
  headers use a default value so only headers that need to be moved have to be
  specified.
 
-5.4 HTTP2/SPDY
+5.4 SPDY
+
+ Chrome and Firefox already support SPDY and lots of web services do. There's
+ a library for us to use for this (spdylay) that has a similar API and the
+ same author as nghttp2.
 
 
- The first drafts for HTTP2 have been published
- (http://tools.ietf.org/html/draft-ietf-httpbis-http2-03) and is so far based
- on SPDY (http://www.chromium.org/spdy) designs and experiences. Chances are
- it will end up in that style. Chrome and Firefox already support SPDY and
- lots of web services do.
+ spdylay: https://github.com/tatsuhiro-t/spdylay
 
 
- It would make sense to implement SPDY support now and later transition into
- or add HTTP2 support as well.
+5.5 auth= in URLs
 
 
- We should base or HTTP2/SPDY work on a 3rd party library for the protocol
- fiddling. The Spindy library (http://spindly.haxx.se/) was an attempt to make
- such a library with an API suitable for use by libcurl but that effort has
- more or less stalled.  spdylay (https://github.com/tatsuhiro-t/spdylay) may
- be a better option, either used directly or wrapped with a more spindly-like
- API.
+ Add the ability to specify the preferred authentication mechanism to use by
+ using ;auth=<mech> in the login part of the URL.
 
 
+ For example:
+
+ http://test:pass;auth=NTLM@example.com would be equivalent to specifying --user
+ test:pass;auth=NTLM or --user test:pass --ntlm from the command line. 
+
+ Additionally this should be implemented for proxy base URLs as well.
 
 6. TELNET
 
 
 6. TELNET
 
@@ -331,14 +360,7 @@ to provide the data to send.
 
  Add support for pipelining emails.
 
 
  Add support for pipelining emails.
 
-7.2 Graceful base64 decoding failure
-
- Rather than shutting down the session and returning an error when the
- decoding of a base64 encoded authentication response fails, we should
- gracefully shutdown the authentication process by sending a * response to the
- server as per RFC4954.
-
-7.3 Enhanced capability support
+7.2 Enhanced capability support
 
  Add the ability, for an application that uses libcurl, to obtain the list of
  capabilities returned from the EHLO command.
 
  Add the ability, for an application that uses libcurl, to obtain the list of
  capabilities returned from the EHLO command.
@@ -349,28 +371,14 @@ to provide the data to send.
 
  Add support for pipelining commands.
 
 
  Add support for pipelining commands.
 
-8.2 Graceful base64 decoding failure
-
- Rather than shutting down the session and returning an error when the
- decoding of a base64 encoded authentication response fails, we should
- gracefully shutdown the authentication process by sending a * response to the
- server as per RFC5034.
-8.3 Enhanced capability support
+8.2 Enhanced capability support
 
  Add the ability, for an application that uses libcurl, to obtain the list of
  capabilities returned from the CAPA command.
 
 9. IMAP
 
 
  Add the ability, for an application that uses libcurl, to obtain the list of
  capabilities returned from the CAPA command.
 
 9. IMAP
 
-9.1 Graceful base64 decoding failure
-
- Rather than shutting down the session and returning an error when the
- decoding of a base64 encoded authentication response fails, we should
- gracefully shutdown the authentication process by sending a * response to the
- server as per RFC3501.
-
-9.2 Enhanced capability support
+9.1 Enhanced capability support
 
  Add the ability, for an application that uses libcurl, to obtain the list of
  capabilities returned from the CAPABILITY command.
 
  Add the ability, for an application that uses libcurl, to obtain the list of
  capabilities returned from the CAPABILITY command.
@@ -382,7 +390,7 @@ to provide the data to send.
  Currently the LDAP module only supports ldap_simple_bind_s() in order to bind
  to an LDAP server. However, this function sends username and password details
  using the simple authentication mechanism (as clear text). However, it should
  Currently the LDAP module only supports ldap_simple_bind_s() in order to bind
  to an LDAP server. However, this function sends username and password details
  using the simple authentication mechanism (as clear text). However, it should
- be possible to use ldap_bind_s() instead specifing the security context
+ be possible to use ldap_bind_s() instead specifying the security context
  information ourselves.
 
 11. New protocols
  information ourselves.
 
 11. New protocols
@@ -413,7 +421,7 @@ to provide the data to send.
 12.4 Cache OpenSSL contexts
 
  "Look at SSL cafile - quick traces look to me like these are done on every
 12.4 Cache OpenSSL contexts
 
  "Look at SSL cafile - quick traces look to me like these are done on every
- request as well, when they should only be necessary once per ssl context (or
+ request as well, when they should only be necessary once per SSL context (or
  once per handle)". The major improvement we can rather easily do is to make
  sure we don't create and kill a new SSL "context" for every request, but
  instead make one for every connection and re-use that SSL context in the same
  once per handle)". The major improvement we can rather easily do is to make
  sure we don't create and kill a new SSL "context" for every request, but
  instead make one for every connection and re-use that SSL context in the same
@@ -434,17 +442,12 @@ to provide the data to send.
  certificate, but this doesn't seem to be exposed in the libcurl APIs. Could
  it be? There's so much that could be done if it were!
 
  certificate, but this doesn't seem to be exposed in the libcurl APIs. Could
  it be? There's so much that could be done if it were!
 
-12.7 Support other SSL libraries
-
- Make curl's SSL layer capable of using other free SSL libraries.  Such as
- MatrixSSL (http://www.matrixssl.org/).
-
-12.8 improve configure --with-ssl
+12.7 improve configure --with-ssl
 
  make the configure --with-ssl option first check for OpenSSL, then GnuTLS,
  then NSS...
 
 
  make the configure --with-ssl option first check for OpenSSL, then GnuTLS,
  then NSS...
 
-12.9 Support DANE
+12.8 Support DANE
 
  DNS-Based Authentication of Named Entities (DANE) is a way to provide SSL
  keys and certs over DNS using DNSSEC as an alternative to the CA model.
 
  DNS-Based Authentication of Named Entities (DANE) is a way to provide SSL
  keys and certs over DNS using DNSSEC as an alternative to the CA model.
@@ -471,7 +474,15 @@ to provide the data to send.
 
 14.1 Other authentication mechanisms
 
 
 14.1 Other authentication mechanisms
 
- Add support for GSSAPI to SMTP, POP3 and IMAP.
+ Add support for other authentication mechanisms such as EXTERNAL, OLP,
+ GSS-SPNEGO and others.
+14.2 Add QOP support to GSSAPI authentication
+
+ Currently the GSSAPI authentication only supports the default QOP of auth
+ (Authentication), whilst Kerberos V5 supports both auth-int (Authentication
+ with integrity protection) and auth-conf (Authentication with integrity and
+ privacy protection).
 
 15. Client
 
 
 15. Client
 
@@ -518,33 +529,12 @@ to provide the data to send.
  which should overwrite the program reasonable defaults (plain/text,
  8bit...)
 
  which should overwrite the program reasonable defaults (plain/text,
  8bit...)
 
-15.6 url-specific options
-
- Provide a way to make options bound to a specific URL among several on the
- command line. Possibly by letting ':' separate options between URLs,
- similar to this:
-
-    curl --data foo --url url.com : \
-        --url url2.com : \
-        --url url3.com --data foo3
-
- (More details: http://curl.haxx.se/mail/archive-2004-07/0133.html)
-
- The example would do a POST-GET-POST combination on a single command line.
-
-15.7 warning when setting an option
+15.6 warning when setting an option
 
   Display a warning when libcurl returns an error when setting an option.
   This can be useful to tell when support for a particular feature hasn't been
   compiled into the library.
 
 
   Display a warning when libcurl returns an error when setting an option.
   This can be useful to tell when support for a particular feature hasn't been
   compiled into the library.
 
-15.8 IPv6 addresses with globbing
-
-  Currently the command line client needs to get url globbing disabled (with
-  -g) for it to support IPv6 numerical addresses. This is a rather silly flaw
-  that should be corrected. It probably involves a smarter detection of the
-  '[' and ']' letters.
-
 16. Build
 
 16.1 roffit
 16. Build
 
 16.1 roffit
@@ -567,7 +557,7 @@ to provide the data to send.
 
 17.3 more protocols supported
 
 
 17.3 more protocols supported
 
- Extend the test suite to include more protocols. The telnet could just do ftp
+ Extend the test suite to include more protocols. The telnet could just do FTP
  or http operations (for which we have test servers).
 
 17.4 more platforms supported
  or http operations (for which we have test servers).
 
 17.4 more platforms supported
@@ -575,12 +565,26 @@ to provide the data to send.
  Make the test suite work on more platforms. OpenBSD and Mac OS. Remove
  fork()s and it should become even more portable.
 
  Make the test suite work on more platforms. OpenBSD and Mac OS. Remove
  fork()s and it should become even more portable.
 
+17.5 Add support for concurrent connections
+
+ Tests 836, 882 and 938 were designed to verify that separate connections aren't
+ used when using different login credentials in protocols that shouldn't re-use
+ a connection under such circumstances.
+
+ Unfortunately, ftpserver.pl doesn't appear to support multiple concurrent
+ connections. The read while() loop seems to loop until it receives a disconnect
+ from the client, where it then enters the waiting for connections loop. When
+ the client opens a second connection to the server, the first connection hasn't
+ been dropped (unless it has been forced - which we shouldn't do in these tests)
+ and thus the wait for connections loop is never entered to receive the second
+ connection.
+
 18. Next SONAME bump
 
 18. Next SONAME bump
 
-18.1 http-style HEAD output for ftp
+18.1 http-style HEAD output for FTP
 
  #undef CURL_FTP_HTTPSTYLE_HEAD in lib/ftp.c to remove the HTTP-style headers
 
  #undef CURL_FTP_HTTPSTYLE_HEAD in lib/ftp.c to remove the HTTP-style headers
- from being output in NOBODY requests over ftp
+ from being output in NOBODY requests over FTP
 
 18.2 combine error codes
 
 
 18.2 combine error codes
 
@@ -614,7 +618,7 @@ to provide the data to send.
  for applications to differentiate on TCP vs UDP and even HTTP vs FTP and
  similar.
 
  for applications to differentiate on TCP vs UDP and even HTTP vs FTP and
  similar.
 
-10. Next major release
+19. Next major release
 
 19.1 cleanup return codes
 
 
 19.1 cleanup return codes
 
@@ -678,7 +682,7 @@ to provide the data to send.
  but instead often restricts how the form functions can or can't be modified.
 
  Changing them to return a private handle will benefit the implementation and
  but instead often restricts how the form functions can or can't be modified.
 
  Changing them to return a private handle will benefit the implementation and
- allow us much greater freedoms while still maintining a solid API and ABI.
+ allow us much greater freedoms while still maintaining a solid API and ABI.
 
 19.9 have form functions use CURL handle argument
 
 
 19.9 have form functions use CURL handle argument
 
@@ -692,7 +696,7 @@ to provide the data to send.
 
  Rather than use the URL to specify the mail client string to present in the
  HELO and EHLO commands, libcurl should support a new CURLOPT specifically for
 
  Rather than use the URL to specify the mail client string to present in the
  HELO and EHLO commands, libcurl should support a new CURLOPT specifically for
- specifing this data as the URL is non-standard and to be honest a bit of a
+ specifying this data as the URL is non-standard and to be honest a bit of a
  hack ;-)
 
  Please see the following thread for more information:
  hack ;-)
 
  Please see the following thread for more information:
index b0dab5f..7235f12 100644 (file)
@@ -1,16 +1,72 @@
-Online:  http://curl.haxx.se/docs/httpscripting.html
-Date:    Jan 19, 2011
-
-                The Art Of Scripting HTTP Requests Using Curl
-                =============================================
-
- This document will assume that you're familiar with HTML and general
- networking.
-
- The possibility to write scripts is essential to make a good computer
- system. Unix' capability to be extended by shell scripts and various tools to
- run various automated commands and scripts is one reason why it has succeeded
- so well.
+Updated: Dec 24, 2013 (http://curl.haxx.se/docs/httpscripting.html)
+                                  _   _ ____  _
+                              ___| | | |  _ \| |
+                             / __| | | | |_) | |
+                            | (__| |_| |  _ <| |___
+                             \___|\___/|_| \_\_____|
+
+
+The Art Of Scripting HTTP Requests Using Curl
+
+ 1. HTTP Scripting
+ 1.1 Background
+ 1.2 The HTTP Protocol
+ 1.3 See the Protocol
+ 1.4 See the Timing
+ 1.5 See the Response
+ 2. URL
+ 2.1 Spec
+ 2.2 Host
+ 2.3 Port number
+ 2.4 User name and password
+ 2.5 Path part
+ 3. Fetch a page
+ 3.1 GET
+ 3.2 HEAD
+ 4. HTML forms
+ 4.1 Forms explained
+ 4.2 GET
+ 4.3 POST
+ 4.4 File Upload POST
+ 4.5 Hidden Fields
+ 4.6 Figure Out What A POST Looks Like
+ 5. HTTP upload
+ 5.1 PUT
+ 6. HTTP Authentication
+ 6.1 Basic Authentication
+ 6.2 Other Authentication
+ 6.3 Proxy Authentication
+ 6.4 Hiding credentials
+ 7. More HTTP Headers
+ 7.1 Referer
+ 7.2 User Agent
+ 8. Redirects
+ 8.1 Location header
+ 8.2 Other redirects
+ 9. Cookies
+ 9.1 Cookie Basics
+ 9.2 Cookie options
+ 10. HTTPS
+ 10.1 HTTPS is HTTP secure
+ 10.2 Certificates
+ 11. Custom Request Elements
+ 11.1 Modify method and headers
+ 11.2 More on changed methods
+ 12. Web Login
+ 12.1 Some login tricks
+ 13. Debug
+ 13.1 Some debug tricks
+ 14. References
+ 14.1 Standards
+ 14.2 Sites
+
+==============================================================================
+
+1. HTTP Scripting
+
+ 1.1 Background
+
+ This document assumes that you're familiar with HTML and general networking.
 
  The increasing amount of applications moving to the web has made "HTTP
  Scripting" more frequently requested and wanted. To be able to automatically
 
  The increasing amount of applications moving to the web has made "HTTP
  Scripting" more frequently requested and wanted. To be able to automatically
@@ -27,7 +83,7 @@ Date:    Jan 19, 2011
  to glue everything together using some kind of script language or repeated
  manual invokes.
 
  to glue everything together using some kind of script language or repeated
  manual invokes.
 
-1. The HTTP Protocol
+ 1.2 The HTTP Protocol
 
  HTTP is the protocol used to fetch data from web servers. It is a very simple
  protocol that is built upon TCP/IP. The protocol also allows information to
 
  HTTP is the protocol used to fetch data from web servers. It is a very simple
  protocol that is built upon TCP/IP. The protocol also allows information to
@@ -44,7 +100,7 @@ Date:    Jan 19, 2011
  well), response headers and most often also a response body. The "body" part
  is the plain data you requested, like the actual HTML or the image etc.
 
  well), response headers and most often also a response body. The "body" part
  is the plain data you requested, like the actual HTML or the image etc.
 
- 1.1 See the Protocol
+ 1.3 See the Protocol
 
   Using curl's option --verbose (-v as a short option) will display what kind
   of commands curl sends to the server, as well as a few other informational
 
   Using curl's option --verbose (-v as a short option) will display what kind
   of commands curl sends to the server, as well as a few other informational
@@ -59,13 +115,88 @@ Date:    Jan 19, 2011
 
       curl --trace-ascii debugdump.txt http://www.example.com/
 
 
       curl --trace-ascii debugdump.txt http://www.example.com/
 
+ 1.4 See the Timing
+
+  Many times you may wonder what exactly is taking all the time, or you just
+  want to know the amount of milliseconds between two points in a
+  transfer. For those, and other similar situations, the --trace-time option
+  is what you need. It'll prepend the time to each trace output line:
+
+      curl --trace-ascii d.txt --trace-time http://example.com/
+
+ 1.5 See the Response
+
+  By default curl sends the response to stdout. You need to redirect it
+  somewhere to avoid that, most often that is done with -o or -O.
+
 2. URL
 
 2. URL
 
+ 2.1 Spec
+
  The Uniform Resource Locator format is how you specify the address of a
  particular resource on the Internet. You know these, you've seen URLs like
  The Uniform Resource Locator format is how you specify the address of a
  particular resource on the Internet. You know these, you've seen URLs like
- http://curl.haxx.se or https://yourbank.com a million times.
+ http://curl.haxx.se or https://yourbank.com a million times. RFC 3986 is the
+ canonical spec.
+
+ 2.2 Host
+
+ The host name is usually resolved using DNS or your /etc/hosts file to an IP
+ address and that's what curl will communicate with. Alternatively you specify
+ the IP address directly in the URL instead of a name.
+
+ For development and other trying out situation, you can point out a different
+ IP address for a host name than what would otherwise be used, by using curl's
+ --resolve option:
+
+      curl --resolve www.example.org:80:127.0.0.1 http://www.example.org/
+ 2.3 Port number
+
+ Each protocol curl supports operate on a default port number, be it over TCP
+ or in some cases UDP. Normally you don't have to take that into
+ consideration, but at times you run test servers on other ports or
+ similar. Then you can specify the port number in the URL with a colon and a
+ number immediately following the host name. Like when doing HTTP to port
+ 1234:
+
+      curl http://www.example.org:1234/
+
+ The port number you specify in the URL is the number that the server uses to
+ offer its services. Sometimes you may use a local proxy, and then you may
+ need to specify that proxy's port number separate on what curl needs to
+ connect to locally. Like when using a HTTP proxy on port 4321:
+
+      curl --proxy http://proxy.example.org:4321 http://remote.example.org/
+
+ 2.4 User name and password
+
+ Some services are setup to require HTTP authentication and then you need to
+ provide name and password which then is transferred to the remote site in
+ various ways depending on the exact authentication protocol used.
+
+ You can opt to either insert the user and password in the URL or you can
+ provide them separately:
+
+      curl http://user:password@example.org/
+
+ or
+
+      curl -u user:password http://example.org/
+
+ You need to pay attention that this kind of HTTP authentication is not what
+ is usually done and requested by user-oriented web sites these days. They
+ tend to use forms and cookies instead.
+
+ 2.5 Path part
+
+ The path part is just sent off to the server to request that it sends back
+ the associated response. The path is what is to the right side of the slash
+ that follows the host name and possibly port number.
+
 
 
-3. GET a page
+3. Fetch a page
+
+ 3.1 GET
 
  The simplest and most common request/operation made using HTTP is to get a
  URL. The URL could itself refer to a web page, an image or a file. The client
 
  The simplest and most common request/operation made using HTTP is to get a
  URL. The URL could itself refer to a web page, an image or a file. The client
@@ -79,10 +210,23 @@ Date:    Jan 19, 2011
 
  All HTTP replies contain a set of response headers that are normally hidden,
  use curl's --include (-i) option to display them as well as the rest of the
 
  All HTTP replies contain a set of response headers that are normally hidden,
  use curl's --include (-i) option to display them as well as the rest of the
- document. You can also ask the remote server for ONLY the headers by using
- the --head (-I) option (which will make curl issue a HEAD request).
+ document.
+
+ 3.2 HEAD
+
+ You can ask the remote server for ONLY the headers by using the --head (-I)
+ option which will make curl issue a HEAD request. In some special cases
+ servers deny the HEAD method while others still work, which is a particular
+ kind of annoyance.
+
+ The HEAD method is defined and made so that the server returns the headers
+ exactly the way it would do for a GET, but without a body. It means that you
+ may see a Content-Length: in the response headers, but there must not be an
+ actual body in the HEAD response.
 
 
-4. Forms
+4. HTML forms
+
+ 4.1 Forms explained
 
  Forms are the general way a web site can present a HTML page with fields for
  the user to enter data in, and then press some kind of 'OK' or 'submit'
 
  Forms are the general way a web site can present a HTML page with fields for
  the user to enter data in, and then press some kind of 'OK' or 'submit'
@@ -95,7 +239,7 @@ Date:    Jan 19, 2011
  Of course there has to be some kind of program in the server end to receive
  the data you send. You cannot just invent something out of the air.
 
  Of course there has to be some kind of program in the server end to receive
  the data you send. You cannot just invent something out of the air.
 
- 4.1 GET
+ 4.2 GET
 
   A GET-form uses the method GET, as specified in HTML like:
 
 
   A GET-form uses the method GET, as specified in HTML like:
 
@@ -121,7 +265,7 @@ Date:    Jan 19, 2011
 
         curl "http://www.hotmail.com/when/junk.cgi?birthyear=1905&press=OK"
 
 
         curl "http://www.hotmail.com/when/junk.cgi?birthyear=1905&press=OK"
 
- 4.2 POST
+ 4.3 POST
 
   The GET method makes all input field names get displayed in the URL field of
   your browser. That's generally a good thing when you want to be able to
 
   The GET method makes all input field names get displayed in the URL field of
   your browser. That's generally a good thing when you want to be able to
@@ -158,7 +302,7 @@ Date:    Jan 19, 2011
 
         curl --data-urlencode "name=I am Daniel" http://www.example.com
 
 
         curl --data-urlencode "name=I am Daniel" http://www.example.com
 
- 4.3 File Upload POST
+ 4.4 File Upload POST
 
   Back in late 1995 they defined an additional way to post data over HTTP. It
   is documented in the RFC 1867, why this method sometimes is referred to as
 
   Back in late 1995 they defined an additional way to post data over HTTP. It
   is documented in the RFC 1867, why this method sometimes is referred to as
@@ -179,7 +323,7 @@ Date:    Jan 19, 2011
 
         curl --form upload=@localfilename --form press=OK [URL]
 
 
         curl --form upload=@localfilename --form press=OK [URL]
 
- 4.4 Hidden Fields
+ 4.5 Hidden Fields
 
   A very common way for HTML based application to pass state information
   between pages is to add hidden fields to the forms. Hidden fields are
 
   A very common way for HTML based application to pass state information
   between pages is to add hidden fields to the forms. Hidden fields are
@@ -200,7 +344,7 @@ Date:    Jan 19, 2011
 
         curl --data "birthyear=1905&press=OK&person=daniel" [URL]
 
 
         curl --data "birthyear=1905&press=OK&person=daniel" [URL]
 
- 4.5 Figure Out What A POST Looks Like
+ 4.6 Figure Out What A POST Looks Like
 
   When you're about fill in a form and send to a server by using curl instead
   of a browser, you're of course very interested in sending a POST exactly the
 
   When you're about fill in a form and send to a server by using curl instead
   of a browser, you're of course very interested in sending a POST exactly the
@@ -213,7 +357,9 @@ Date:    Jan 19, 2011
   You will then clearly see the data get appended to the URL, separated with a
   '?'-letter as GET forms are supposed to.
 
   You will then clearly see the data get appended to the URL, separated with a
   '?'-letter as GET forms are supposed to.
 
-5. PUT
+5. HTTP upload
+
+ 5.1 PUT
 
  The perhaps best way to upload data to a HTTP server is to use PUT. Then
  again, this of course requires that someone put a program or script on the
 
  The perhaps best way to upload data to a HTTP server is to use PUT. Then
  again, this of course requires that someone put a program or script on the
@@ -225,6 +371,8 @@ Date:    Jan 19, 2011
 
 6. HTTP Authentication
 
 
 6. HTTP Authentication
 
+ 6.1 Basic Authentication
+
  HTTP Authentication is the ability to tell the server your username and
  password so that it can verify that you're allowed to do the request you're
  doing. The Basic authentication used in HTTP (which is the type curl uses by
  HTTP Authentication is the ability to tell the server your username and
  password so that it can verify that you're allowed to do the request you're
  doing. The Basic authentication used in HTTP (which is the type curl uses by
@@ -236,10 +384,14 @@ Date:    Jan 19, 2011
 
         curl --user name:password http://www.example.com
 
 
         curl --user name:password http://www.example.com
 
+ 6.2 Other Authentication
+
  The site might require a different authentication method (check the headers
  returned by the server), and then --ntlm, --digest, --negotiate or even
  --anyauth might be options that suit you.
 
  The site might require a different authentication method (check the headers
  returned by the server), and then --ntlm, --digest, --negotiate or even
  --anyauth might be options that suit you.
 
+ 6.3 Proxy Authentication
+
  Sometimes your HTTP access is only available through the use of a HTTP
  proxy. This seems to be especially common at various companies. A HTTP proxy
  may require its own user and password to allow the client to get through to
  Sometimes your HTTP access is only available through the use of a HTTP
  proxy. This seems to be especially common at various companies. A HTTP proxy
  may require its own user and password to allow the client to get through to
@@ -253,6 +405,8 @@ Date:    Jan 19, 2011
  If you use any one these user+password options but leave out the password
  part, curl will prompt for the password interactively.
 
  If you use any one these user+password options but leave out the password
  part, curl will prompt for the password interactively.
 
+ 6.4 Hiding credentials
+
  Do note that when a program is run, its parameters might be possible to see
  when listing the running processes of the system. Thus, other users may be
  able to watch your passwords if you pass them as plain command line
  Do note that when a program is run, its parameters might be possible to see
  when listing the running processes of the system. Thus, other users may be
  able to watch your passwords if you pass them as plain command line
@@ -262,7 +416,9 @@ Date:    Jan 19, 2011
  many web sites will not use this concept when they provide logins etc. See
  the Web Login chapter further below for more details on that.
 
  many web sites will not use this concept when they provide logins etc. See
  the Web Login chapter further below for more details on that.
 
-7. Referer
+7. More HTTP Headers
+
+ 7.1 Referer
 
  A HTTP request may include a 'referer' field (yes it is misspelled), which
  can be used to tell from which URL the client got to this particular
 
  A HTTP request may include a 'referer' field (yes it is misspelled), which
  can be used to tell from which URL the client got to this particular
@@ -276,7 +432,7 @@ Date:    Jan 19, 2011
 
         curl --referer http://www.example.come http://www.example.com
 
 
         curl --referer http://www.example.come http://www.example.com
 
-8. User Agent
+ 7.2 User Agent
 
  Very similar to the referer field, all HTTP requests may set the User-Agent
  field. It names what user agent (client) that is being used. Many
 
  Very similar to the referer field, all HTTP requests may set the User-Agent
  field. It names what user agent (client) that is being used. Many
@@ -298,7 +454,9 @@ Date:    Jan 19, 2011
 
   curl --user-agent "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" [URL]
 
 
   curl --user-agent "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" [URL]
 
-9. Redirects
+8. Redirects
+
+ 8.1 Location header
 
  When a resource is requested from a server, the reply from the server may
  include a hint about where the browser should go next to find this page, or a
 
  When a resource is requested from a server, the reply from the server may
  include a hint about where the browser should go next to find this page, or a
@@ -318,7 +476,16 @@ Date:    Jan 19, 2011
  only use POST in the first request, and then revert to GET in the following
  operations.
 
  only use POST in the first request, and then revert to GET in the following
  operations.
 
-10. Cookies
+ 8.2 Other redirects
+
+ Browser typically support at least two other ways of redirects that curl
+ doesn't: first the html may contain a meta refresh tag that asks the browser
+ to load a specific URL after a set number of seconds, or it may use
+ javascript to do it.
+
+9. Cookies
+
+ 9.1 Cookie Basics
 
  The way the web browsers do "client side state control" is by using
  cookies. Cookies are just names with associated contents. The cookies are
 
  The way the web browsers do "client side state control" is by using
  cookies. Cookies are just names with associated contents. The cookies are
@@ -335,6 +502,8 @@ Date:    Jan 19, 2011
  must be able to record and send back cookies the way the web application
  expects them. The same way browsers deal with them.
 
  must be able to record and send back cookies the way the web application
  expects them. The same way browsers deal with them.
 
+ 9.2 Cookie options
+
  The simplest way to send a few cookies to the server when getting a page with
  curl is to add them on the command line like:
 
  The simplest way to send a few cookies to the server when getting a page with
  curl is to add them on the command line like:
 
@@ -351,7 +520,7 @@ Date:    Jan 19, 2011
 
  Curl has a full blown cookie parsing engine built-in that comes to use if you
  want to reconnect to a server and use cookies that were stored from a
 
  Curl has a full blown cookie parsing engine built-in that comes to use if you
  want to reconnect to a server and use cookies that were stored from a
- previous connection (or handicrafted manually to fool the server into
+ previous connection (or hand-crafted manually to fool the server into
  believing you had a previous connection). To use previously stored cookies,
  you run curl like:
 
  believing you had a previous connection). To use previously stored cookies,
  you run curl like:
 
@@ -366,16 +535,18 @@ Date:    Jan 19, 2011
         curl --cookie nada --location http://www.example.com
 
  Curl has the ability to read and write cookie files that use the same file
         curl --cookie nada --location http://www.example.com
 
  Curl has the ability to read and write cookie files that use the same file
- format that Netscape and Mozilla do. It is a convenient way to share cookies
- between browsers and automatic scripts. The --cookie (-b) switch
- automatically detects if a given file is such a cookie file and parses it,
- and by using the --cookie-jar (-c) option you'll make curl write a new cookie
file at the end of an operation:
+ format that Netscape and Mozilla once used. It is a convenient way to share
+ cookies between scripts or invokes. The --cookie (-b) switch automatically
+ detects if a given file is such a cookie file and parses it, and by using the
+ --cookie-jar (-c) option you'll make curl write a new cookie file at the end
+ of an operation:
 
         curl --cookie cookies.txt --cookie-jar newcookies.txt \
         http://www.example.com
 
 
         curl --cookie cookies.txt --cookie-jar newcookies.txt \
         http://www.example.com
 
-11. HTTPS
+10. HTTPS
+
+ 10.1 HTTPS is HTTP secure
 
  There are a few ways to do secure HTTP transfers. The by far most common
  protocol for doing this is what is generally known as HTTPS, HTTP over
 
  There are a few ways to do secure HTTP transfers. The by far most common
  protocol for doing this is what is generally known as HTTPS, HTTP over
@@ -391,7 +562,7 @@ Date:    Jan 19, 2011
 
         curl https://secure.example.com
 
 
         curl https://secure.example.com
 
- 11.1 Certificates
+ 10.2 Certificates
 
   In the HTTPS world, you use certificates to validate that you are the one
   you claim to be, as an addition to normal passwords. Curl supports client-
 
   In the HTTPS world, you use certificates to validate that you are the one
   you claim to be, as an addition to normal passwords. Curl supports client-
@@ -413,7 +584,9 @@ Date:    Jan 19, 2011
 
         http://curl.haxx.se/docs/sslcerts.html
 
 
         http://curl.haxx.se/docs/sslcerts.html
 
-12. Custom Request Elements
+11. Custom Request Elements
+
+11.1 Modify method and headers
 
  Doing fancy stuff, you may need to add or change elements of a single curl
  request.
 
  Doing fancy stuff, you may need to add or change elements of a single curl
  request.
@@ -434,7 +607,26 @@ Date:    Jan 19, 2011
 
         curl --header "Destination: http://nowhere" http://example.com
 
 
         curl --header "Destination: http://nowhere" http://example.com
 
-13. Web Login
+ 11.2 More on changed methods
+
+ It should be noted that curl selects which methods to use on its own
+ depending on what action to ask for. -d will do POST, -I will do HEAD and so
+ on. If you use the --request / -X option you can change the method keyword
+ curl selects, but you will not modify curl's behavior. This means that if you
+ for example use -d "data" to do a POST, you can modify the method to a
+ PROPFIND with -X and curl will still think it sends a POST. You can change
+ the normal GET to a POST method by simply adding -X POST in a command line
+ like:
+
+        curl -X POST http://example.org/
+
+ ... but curl will still think and act as if it sent a GET so it won't send any
+ request body etc.
+
+
+12. Web Login
+
+ 12.1 Some login tricks
 
  While not strictly just HTTP related, it still cause a lot of people problems
  so here's the executive run-down of how the vast majority of all login forms
 
  While not strictly just HTTP related, it still cause a lot of people problems
  so here's the executive run-down of how the vast majority of all login forms
@@ -453,7 +645,7 @@ Date:    Jan 19, 2011
  sometimes they use such code to set or modify cookie contents. Possibly they
  do that to prevent programmed logins, like this manual describes how to...
  Anyway, if reading the code isn't enough to let you repeat the behavior
  sometimes they use such code to set or modify cookie contents. Possibly they
  do that to prevent programmed logins, like this manual describes how to...
  Anyway, if reading the code isn't enough to let you repeat the behavior
- manually, capturing the HTTP requests done by your browers and analyzing the
+ manually, capturing the HTTP requests done by your browsers and analyzing the
  sent cookies is usually a working method to work out how to shortcut the
  javascript need.
 
  sent cookies is usually a working method to work out how to shortcut the
  javascript need.
 
@@ -463,7 +655,9 @@ Date:    Jan 19, 2011
  to do a proper login POST. Remember that the contents need to be URL encoded
  when sent in a normal POST.
 
  to do a proper login POST. Remember that the contents need to be URL encoded
  when sent in a normal POST.
 
-14. Debug
+13. Debug
+
+ 13.1 Some debug tricks
 
  Many times when you run curl on a site, you'll notice that the site doesn't
  seem to respond the same way to your curl requests as it does to your
 
  Many times when you run curl on a site, you'll notice that the site doesn't
  seem to respond the same way to your curl requests as it does to your
@@ -473,35 +667,40 @@ Date:    Jan 19, 2011
  browser's requests:
 
  * Use the --trace-ascii option to store fully detailed logs of the requests
  browser's requests:
 
  * Use the --trace-ascii option to store fully detailed logs of the requests
  for easier analyzing and better understanding
+ for easier analyzing and better understanding
 
  * Make sure you check for and use cookies when needed (both reading with
 
  * Make sure you check for and use cookies when needed (both reading with
  --cookie and writing with --cookie-jar)
+ --cookie and writing with --cookie-jar)
 
  * Set user-agent to one like a recent popular browser does
 
  * Set referer like it is set by the browser
 
  * If you use POST, make sure you send all the fields and in the same order as
 
  * Set user-agent to one like a recent popular browser does
 
  * Set referer like it is set by the browser
 
  * If you use POST, make sure you send all the fields and in the same order as
-   the browser does it. (See chapter 4.5 above)
+ the browser does it.
 
  A very good helper to make sure you do this right, is the LiveHTTPHeader tool
  that lets you view all headers you send and receive with Mozilla/Firefox
 
  A very good helper to make sure you do this right, is the LiveHTTPHeader tool
  that lets you view all headers you send and receive with Mozilla/Firefox
- (even when using HTTPS).
+ (even when using HTTPS). Chrome features similar functionality out of the box
+ among the developer's tools.
 
  A more raw approach is to capture the HTTP traffic on the network with tools
  such as ethereal or tcpdump and check what headers that were sent and
  received by the browser. (HTTPS makes this technique inefficient.)
 
 
  A more raw approach is to capture the HTTP traffic on the network with tools
  such as ethereal or tcpdump and check what headers that were sent and
  received by the browser. (HTTPS makes this technique inefficient.)
 
-15. References
+14. References
+
+ 14.1 Standards
 
  RFC 2616 is a must to read if you want in-depth understanding of the HTTP
 
  RFC 2616 is a must to read if you want in-depth understanding of the HTTP
- protocol.
+ protocol
+
+ RFC 3986 explains the URL syntax
 
 
- RFC 3986 explains the URL syntax.
+ RFC 1867 defines the HTTP post upload format
 
 
- RFC 2109 defines how cookies are supposed to work.
+ RFC 6525 defines how HTTP cookies work
 
 
- RFC 1867 defines the HTTP post upload format.
+ 14.2 Sites
 
  http://curl.haxx.se is the home of the cURL project
 
  http://curl.haxx.se is the home of the cURL project
index 429812f..3015304 100644 (file)
Binary files a/docs/curl-config.pdf and b/docs/curl-config.pdf differ
index 9e1a688..0b9971c 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
 .\" *
 .\" **************************************************************************
 .\"
-.TH curl 1 "27 July 2012" "Curl 7.27.0" "Curl Manual"
+.TH curl 1 "30 Nov 2014" "Curl 7.40.0" "Curl Manual"
 .SH NAME
 curl \- transfer a URL
 .SH SYNOPSIS
 .SH NAME
 curl \- transfer a URL
 .SH SYNOPSIS
@@ -30,8 +30,8 @@ curl \- transfer a URL
 .B curl
 is a tool to transfer data from or to a server, using one of the supported
 protocols (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP,
 .B curl
 is a tool to transfer data from or to a server, using one of the supported
 protocols (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP,
-LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP).  The
-command is designed to work without user interaction.
+LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET
+and TFTP). The command is designed to work without user interaction.
 
 curl offers a busload of useful tricks like proxy support, user
 authentication, FTP upload, HTTP post, SSL connections, cookies, file transfer
 
 curl offers a busload of useful tricks like proxy support, user
 authentication, FTP upload, HTTP post, SSL connections, cookies, file transfer
@@ -48,18 +48,20 @@ RFC 3986.
 You can specify multiple URLs or parts of URLs by writing part sets within
 braces as in:
 
 You can specify multiple URLs or parts of URLs by writing part sets within
 braces as in:
 
- http://site.{one,two,three}.com
 http://site.{one,two,three}.com
 
 or you can get sequences of alphanumeric series by using [] as in:
 
 
 or you can get sequences of alphanumeric series by using [] as in:
 
- ftp://ftp.numericals.com/file[1-100].txt
- ftp://ftp.numericals.com/file[001-100].txt    (with leading zeros)
- ftp://ftp.letters.com/file[a-z].txt
+  ftp://ftp.numericals.com/file[1-100].txt
+
+  ftp://ftp.numericals.com/file[001-100].txt    (with leading zeros)
+
+  ftp://ftp.letters.com/file[a-z].txt
 
 Nested sequences are not supported, but you can use several ones next to each
 other:
 
 
 Nested sequences are not supported, but you can use several ones next to each
 other:
 
- http://any.org/archive[1996-1999]/vol[1-4]/part{a,b,c}.html
 http://any.org/archive[1996-1999]/vol[1-4]/part{a,b,c}.html
 
 You can specify any amount of URLs on the command line. They will be fetched
 in a sequential manner in the specified order.
 
 You can specify any amount of URLs on the command line. They will be fetched
 in a sequential manner in the specified order.
@@ -67,8 +69,19 @@ in a sequential manner in the specified order.
 You can specify a step counter for the ranges to get every Nth number or
 letter:
 
 You can specify a step counter for the ranges to get every Nth number or
 letter:
 
- http://www.numericals.com/file[1-100:10].txt
- http://www.letters.com/file[a-z:2].txt
+  http://www.numericals.com/file[1-100:10].txt
+
+  http://www.letters.com/file[a-z:2].txt
+
+When using [] or {} sequences when invoked from a command line prompt, you
+probably have to put the full URL within double quotes to avoid the shell from
+interfering with it. This also goes for other characters treated special, like
+for example '&', '?' and '*'.
+
+Provide the IPv6 zone index in the URL with an escaped percentage sign and the
+interface name. Like in
+
+  http://[fe80::3%25eth0]/
 
 If you specify URL without protocol:// prefix, curl will attempt to guess what
 protocol you might want. It will then default to HTTP but try other protocols
 
 If you specify URL without protocol:// prefix, curl will attempt to guess what
 protocol you might want. It will then default to HTTP but try other protocols
@@ -103,6 +116,18 @@ any response data to the terminal.
 If you prefer a progress "bar" instead of the regular meter, \fI-#\fP is your
 friend.
 .SH OPTIONS
 If you prefer a progress "bar" instead of the regular meter, \fI-#\fP is your
 friend.
 .SH OPTIONS
+Options start with one or two dashes. Many of the options require an
+additional value next to them.
+
+The short "single-dash" form of the options, -d for example, may be used with
+or without a space between it and its value, although a space is a recommended
+separator. The long "double-dash" form, --data for example, requires a space
+between it and its value.
+
+Short version options that don't need any additional values can be used
+immediately next to each other, like for example you can specify all the
+options -O, -L and -v at once as -OLv.
+
 In general, all boolean options are enabled with --\fBoption\fP and yet again
 disabled with --\fBno-\fPoption. That is, you use the exact same option name
 but prefix it with "no-". However, in this list we mostly only list and show
 In general, all boolean options are enabled with --\fBoption\fP and yet again
 disabled with --\fBno-\fPoption. That is, you use the exact same option name
 but prefix it with "no-". However, in this list we mostly only list and show
@@ -112,30 +137,56 @@ same command line option.)
 .IP "-#, --progress-bar"
 Make curl display progress as a simple progress bar instead of the standard,
 more informational, meter.
 .IP "-#, --progress-bar"
 Make curl display progress as a simple progress bar instead of the standard,
 more informational, meter.
+.IP "-:, --next"
+Tells curl to use a separate operation for the following URL and associated
+options. This allows you to send several URL requests, each with their own
+specific options, for example, such as different user names or custom requests
+for each. (Added in 7.36.0)
 .IP "-0, --http1.0"
 .IP "-0, --http1.0"
-(HTTP) Forces curl to issue its requests using HTTP 1.0 instead of using its
-internally preferred: HTTP 1.1.
+(HTTP) Tells curl to use HTTP version 1.0 instead of using its internally
+preferred: HTTP 1.1.
+.IP "--http1.1"
+(HTTP) Tells curl to use HTTP version 1.1. This is the internal default
+version. (Added in 7.33.0)
+.IP "--http2"
+(HTTP) Tells curl to issue its requests using HTTP 2. This requires that the
+underlying libcurl was built to support it. (Added in 7.33.0)
+.IP "--no-npn"
+Disable the NPN TLS extension. NPN is enabled by default if libcurl was built
+with an SSL library that supports NPN. NPN is used by a libcurl that supports
+HTTP 2 to negotiate HTTP 2 support with the server during https sessions.
+
+(Added in 7.36.0)
+.IP "--no-alpn"
+Disable the ALPN TLS extension. ALPN is enabled by default if libcurl was built
+with an SSL library that supports ALPN. ALPN is used by a libcurl that supports
+HTTP 2 to negotiate HTTP 2 support with the server during https sessions.
+
+(Added in 7.36.0)
 .IP "-1, --tlsv1"
 (SSL)
 .IP "-1, --tlsv1"
 (SSL)
-Forces curl to use TLS version 1 when negotiating with a remote TLS server.
+Forces curl to use TLS version 1.x when negotiating with a remote TLS server.
+You can use options \fI--tlsv1.0\fP, \fI--tlsv1.1\fP, and \fI--tlsv1.2\fP to
+control the TLS version more precisely (if the SSL backend in use supports such
+a level of control).
 .IP "-2, --sslv2"
 .IP "-2, --sslv2"
-(SSL)
-Forces curl to use SSL version 2 when negotiating with a remote SSL server.
+(SSL) Forces curl to use SSL version 2 when negotiating with a remote SSL
+server. Sometimes curl is built without SSLv2 support. SSLv2 is widely
+considered insecure.
 .IP "-3, --sslv3"
 .IP "-3, --sslv3"
-(SSL)
-Forces curl to use SSL version 3 when negotiating with a remote SSL server.
+(SSL) Forces curl to use SSL version 3 when negotiating with a remote SSL
+server. Sometimes curl is built without SSLv3 support.
 .IP "-4, --ipv4"
 .IP "-4, --ipv4"
-If curl is capable of resolving an address to multiple IP versions (which it
-is if it is IPv6-capable), this option tells curl to resolve names to IPv4
-addresses only.
+This option tells curl to resolve names to IPv4 addresses only, and not for
+example try IPv6.
 .IP "-6, --ipv6"
 .IP "-6, --ipv6"
-If curl is capable of resolving an address to multiple IP versions (which it
-is if it is IPv6-capable), this option tells curl to resolve names to IPv6
-addresses only.
+This option tells curl to resolve names to IPv6 addresses only, and not for
+example try IPv4.
 .IP "-a, --append"
 .IP "-a, --append"
-(FTP/SFTP) When used in an upload, this will tell curl to append to the target
-file instead of overwriting it. If the file doesn't exist, it will be created.
-Note that this flag is ignored by some SSH servers (including OpenSSH).
+(FTP/SFTP) When used in an upload, this makes curl append to the target file
+instead of overwriting it. If the remote file doesn't exist, it will be
+created.  Note that this flag is ignored by some SFTP servers (including
+OpenSSH).
 .IP "-A, --user-agent <agent string>"
 (HTTP) Specify the User-Agent string to send to the HTTP server. Some badly
 done CGIs fail if this field isn't set to "Mozilla/4.0". To encode blanks in
 .IP "-A, --user-agent <agent string>"
 (HTTP) Specify the User-Agent string to send to the HTTP server. Some badly
 done CGIs fail if this field isn't set to "Mozilla/4.0". To encode blanks in
@@ -156,10 +207,9 @@ since it may require data to be sent twice and then the client must be able to
 rewind. If the need should arise when uploading from stdin, the upload
 operation will fail.
 .IP "-b, --cookie <name=data>"
 rewind. If the need should arise when uploading from stdin, the upload
 operation will fail.
 .IP "-b, --cookie <name=data>"
-(HTTP)
-Pass the data to the HTTP server as a cookie. It is supposedly the
-data previously received from the server in a "Set-Cookie:" line.
-The data should be in the format "NAME1=VALUE1; NAME2=VALUE2".
+(HTTP) Pass the data to the HTTP server as a cookie. It is supposedly the data
+previously received from the server in a "Set-Cookie:" line.  The data should
+be in the format "NAME1=VALUE1; NAME2=VALUE2".
 
 If no '=' symbol is used in the line, it is treated as a filename to use to
 read previously stored cookie lines from, which should be used in this session
 
 If no '=' symbol is used in the line, it is treated as a filename to use to
 read previously stored cookie lines from, which should be used in this session
@@ -169,26 +219,29 @@ in combination with the \fI-L, --location\fP option. The file format of the
 file to read cookies from should be plain HTTP headers or the Netscape/Mozilla
 cookie file format.
 
 file to read cookies from should be plain HTTP headers or the Netscape/Mozilla
 cookie file format.
 
-\fBNOTE\fP that the file specified with \fI-b, --cookie\fP is only used as
-input. No cookies will be stored in the file. To store cookies, use the
-\fI-c, --cookie-jar\fP option or you could even save the HTTP headers to a file
-using \fI-D, --dump-header\fP!
+The file specified with \fI-b, --cookie\fP is only used as input. No cookies
+will be written to the file. To store cookies, use the \fI-c, --cookie-jar\fP
+option.
 
 If this option is used several times, the last one will be used.
 .IP "-B, --use-ascii"
 
 If this option is used several times, the last one will be used.
 .IP "-B, --use-ascii"
-(FTP/LDAP) Enable ASCII transfer. For FTP, this can also be
-enforced by using an URL that ends with ";type=A". This option causes data
-sent to stdout to be in text mode for win32 systems.
+(FTP/LDAP) Enable ASCII transfer. For FTP, this can also be enforced by using
+an URL that ends with ";type=A". This option causes data sent to stdout to be
+in text mode for win32 systems.
 .IP "--basic"
 .IP "--basic"
-(HTTP) Tells curl to use HTTP Basic authentication. This is the default and
-this option is usually pointless, unless you use it to override a previously
-set option that sets a different authentication method (such as \fI--ntlm\fP,
-\fI--digest\fP, or \fI--negotiate\fP).
+(HTTP) Tells curl to use HTTP Basic authentication with the remote host. This
+is the default and this option is usually pointless, unless you use it to
+override a previously set option that sets a different authentication method
+(such as \fI--ntlm\fP, \fI--digest\fP, or \fI--negotiate\fP).
+
+Used together with \fI-u, --user\fP and \fI-x, --proxy\fP.
+
+See also \fI--proxy-basic\fP.
 .IP "-c, --cookie-jar <file name>"
 (HTTP) Specify to which file you want curl to write all cookies after a
 completed operation. Curl writes all cookies previously read from a specified
 file as well as all cookies received from remote server(s). If no cookies are
 .IP "-c, --cookie-jar <file name>"
 (HTTP) Specify to which file you want curl to write all cookies after a
 completed operation. Curl writes all cookies previously read from a specified
 file as well as all cookies received from remote server(s). If no cookies are
-known, no file will be written. The file will be written using the Netscape
+known, no data will be written. The file will be written using the Netscape
 cookie file format. If you set the file name to a single dash, "-", the
 cookies will be written to stdout.
 
 cookie file format. If you set the file name to a single dash, "-", the
 cookies will be written to stdout.
 
@@ -228,11 +281,12 @@ If this option is used several times, the last one will be used.
 supports, and save the uncompressed document.  If this option is used and the
 server sends an unsupported encoding, curl will report an error.
 .IP "--connect-timeout <seconds>"
 supports, and save the uncompressed document.  If this option is used and the
 server sends an unsupported encoding, curl will report an error.
 .IP "--connect-timeout <seconds>"
-Maximum time in seconds that you allow the connection to the server to take.
-This only limits the connection phase, once curl has connected this option is
-of no more use.  Since 7.32.0, this option accepts decimal values, but the
-actual timeout will decrease in accuracy as the specified timeout increases in
-decimal precision. See also the \fI-m, --max-time\fP option.
+Maximum time in seconds that you allow curl's connection to take.  This only
+limits the connection phase, so if curl connects within the given period it
+will continue - if not it will exit.  Since version 7.32.0, this option
+accepts decimal values.
+
+See also the \fI-m, --max-time\fP option.
 
 If this option is used several times, the last one will be used.
 .IP "--create-dirs"
 
 If this option is used several times, the last one will be used.
 .IP "--create-dirs"
@@ -244,7 +298,9 @@ uses no dir or if the dirs it mentions already exist, no dir will be created.
 To create remote directories when using FTP or SFTP, try
 \fI--ftp-create-dirs\fP.
 .IP "--crlf"
 To create remote directories when using FTP or SFTP, try
 \fI--ftp-create-dirs\fP.
 .IP "--crlf"
-(FTP) Convert LF to CRLF in upload. Useful for MVS (OS/390).
+Convert LF to CRLF in upload. Useful for MVS (OS/390).
+
+(SMTP added in 7.40.0)
 .IP "--crlfile <file>"
 (HTTPS/FTPS) Provide a file using PEM format with a Certificate Revocation
 List that may specify peer certificates that are to be considered revoked.
 .IP "--crlfile <file>"
 (HTTPS/FTPS) Provide a file using PEM format with a Certificate Revocation
 List that may specify peer certificates that are to be considered revoked.
@@ -269,23 +325,23 @@ data pieces specified will be merged together with a separating
 chunk that looks like \&'name=daniel&skill=lousy'.
 
 If you start the data with the letter @, the rest should be a file name to
 chunk that looks like \&'name=daniel&skill=lousy'.
 
 If you start the data with the letter @, the rest should be a file name to
-read the data from, or - if you want curl to read the data from stdin.  The
-contents of the file must already be URL-encoded. Multiple files can also be
-specified. Posting data from a file named 'foobar' would thus be done with
-\fI--data @foobar\fP.
+read the data from, or - if you want curl to read the data from
+stdin. Multiple files can also be specified. Posting data from a file
+named 'foobar' would thus be done with \fI--data\fP @foobar. When --data is
+told to read from a file like that, carriage returns and newlines will be
+stripped out.
 .IP "-D, --dump-header <file>"
 Write the protocol headers to the specified file.
 
 This option is handy to use when you want to store the headers that an HTTP
 site sends to you. Cookies from the headers could then be read in a second
 curl invocation by using the \fI-b, --cookie\fP option! The
 .IP "-D, --dump-header <file>"
 Write the protocol headers to the specified file.
 
 This option is handy to use when you want to store the headers that an HTTP
 site sends to you. Cookies from the headers could then be read in a second
 curl invocation by using the \fI-b, --cookie\fP option! The
-\fI-c, --cookie-jar\fP option is however a better way to store cookies.
+\fI-c, --cookie-jar\fP option is a better way to store cookies.
 
 When used in FTP, the FTP server response lines are considered being "headers"
 and thus are saved there.
 
 If this option is used several times, the last one will be used.
 
 When used in FTP, the FTP server response lines are considered being "headers"
 and thus are saved there.
 
 If this option is used several times, the last one will be used.
-
 .IP "--data-ascii <data>"
 See \fI-d, --data\fP.
 .IP "--data-binary <data>"
 .IP "--data-ascii <data>"
 See \fI-d, --data\fP.
 .IP "--data-binary <data>"
@@ -294,7 +350,7 @@ whatsoever.
 
 If you start the data with the letter @, the rest should be a filename.  Data
 is posted in a similar manner as \fI--data-ascii\fP does, except that newlines
 
 If you start the data with the letter @, the rest should be a filename.  Data
 is posted in a similar manner as \fI--data-ascii\fP does, except that newlines
-are preserved and conversions are never done.
+and carriage returns are preserved and conversions are never done.
 
 If this option is used several times, the ones following the first will append
 data as described in \fI-d, --data\fP.
 
 If this option is used several times, the ones following the first will append
 data as described in \fI-d, --data\fP.
@@ -369,8 +425,41 @@ is an alias for \fB--disable-epsv\fP.
 
 Disabling EPSV only changes the passive behavior. If you want to switch to
 active mode you need to use \fI-P, --ftp-port\fP.
 
 Disabling EPSV only changes the passive behavior. If you want to switch to
 active mode you need to use \fI-P, --ftp-port\fP.
+.IP "--dns-interface <interface>"
+Tell curl to send outgoing DNS requests through <interface>. This option
+is a counterpart to \fI--interface\fP (which does not affect DNS). The
+supplied string must be an interface name (not an address).
+
+This option requires that libcurl was built with a resolver backend that
+supports this operation. The c-ares backend is the only such one. (Added in
+7.33.0)
+.IP "--dns-ipv4-addr <ip-address>"
+Tell curl to bind to <ip-address> when making IPv4 DNS requests, so that
+the DNS requests originate from this address. The argument should be a
+single IPv4 address.
+
+This option requires that libcurl was built with a resolver backend that
+supports this operation. The c-ares backend is the only such one.  (Added in
+7.33.0)
+.IP "--dns-ipv6-addr <ip-address>"
+Tell curl to bind to <ip-address> when making IPv6 DNS requests, so that
+the DNS requests originate from this address. The argument should be a
+single IPv6 address.
+
+This option requires that libcurl was built with a resolver backend that
+supports this operation. The c-ares backend is the only such one.  (Added in
+7.33.0)
+.IP "--dns-servers <ip-address,ip-address>"
+Set the list of DNS servers to be used instead of the system default.
+The list of IP addresses should be separated with commas. Port numbers
+may also optionally be given as \fI:<port-number>\fP after each IP
+address.
+
+This option requires that libcurl was built with a resolver backend that
+supports this operation. The c-ares backend is the only such one.  (Added in
+7.33.0)
 .IP "-e, --referer <URL>"
 .IP "-e, --referer <URL>"
-(HTTP) Sends the "Referer Page" information to the HTTP server. This can also
+(HTTP) Sends the "Referrer Page" information to the HTTP server. This can also
 be set with the \fI-H, --header\fP flag of course.  When used with
 \fI-L, --location\fP you can append ";auto" to the --referer URL to make curl
 automatically set the previous URL when it follows a Location: header. The
 be set with the \fI-H, --header\fP flag of course.  When used with
 \fI-L, --location\fP you can append ";auto" to the --referer URL to make curl
 automatically set the previous URL when it follows a Location: header. The
@@ -380,7 +469,8 @@ If this option is used several times, the last one will be used.
 .IP "-E, --cert <certificate[:password]>"
 (SSL) Tells curl to use the specified client certificate file when getting a
 file with HTTPS, FTPS or another SSL-based protocol. The certificate must be
 .IP "-E, --cert <certificate[:password]>"
 (SSL) Tells curl to use the specified client certificate file when getting a
 file with HTTPS, FTPS or another SSL-based protocol. The certificate must be
-in PEM format.  If the optional password isn't specified, it will be queried
+in PKCS#12 format if using Secure Transport, or PEM format if using any other
+engine.  If the optional password isn't specified, it will be queried
 for on the terminal. Note that this option assumes a \&"certificate" file that
 is the private key and the private certificate concatenated! See \fI--cert\fP
 and \fI--key\fP to specify them independently.
 for on the terminal. Note that this option assumes a \&"certificate" file that
 is the private key and the private certificate concatenated! See \fI--cert\fP
 and \fI--key\fP to specify them independently.
@@ -396,9 +486,10 @@ recognized as password delimiter.  If the nickname contains "\\", it needs to
 be escaped as "\\\\" so that it is not recognized as an escape character.
 
 (iOS and Mac OS X only) If curl is built against Secure Transport, then the
 be escaped as "\\\\" so that it is not recognized as an escape character.
 
 (iOS and Mac OS X only) If curl is built against Secure Transport, then the
-certificate string must match the name of a certificate that's in the system or
-user keychain. The private key corresponding to the certificate, and
-certificate chain (if any),  must also be present in the keychain.
+certificate string can either be the name of a certificate/private key in the
+system or user keychain, or the path to a PKCS#12-encoded certificate and
+private key. If you want to use a file from the current directory, please
+precede it with "./" prefix, in order to avoid confusion with a nickname.
 
 If this option is used several times, the last one will be used.
 .IP "--engine <name>"
 
 If this option is used several times, the last one will be used.
 .IP "--engine <name>"
@@ -448,12 +539,25 @@ OpenSSL-powered curl to make SSL-connections much more efficiently than using
 
 If this option is set, the default capath value will be ignored, and if it is
 used several times, the last one will be used.
 
 If this option is set, the default capath value will be ignored, and if it is
 used several times, the last one will be used.
+.IP "--pinnedpubkey <pinned public key>"
+(SSL) Tells curl to use the specified public key file to verify the peer. The
+file must contain a single public key in PEM or DER format.
+
+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.
+
+This is currently only implemented in the OpenSSL, GnuTLS and GSKit backends.
+
+If this option is used several times, the last one will be used.
+(Added in 7.39.0)
 .IP "-f, --fail"
 (HTTP) Fail silently (no output at all) on server errors. This is mostly done
 .IP "-f, --fail"
 (HTTP) Fail silently (no output at all) on server errors. This is mostly done
-to better enable scripts etc to better deal with failed attempts. In
-normal cases when an HTTP server fails to deliver a document, it returns an
-HTML document stating so (which often also describes why and more). This flag
-will prevent curl from outputting that and return error 22.
+to better enable scripts etc to better deal with failed attempts. In normal
+cases when an HTTP server fails to deliver a document, it returns an HTML
+document stating so (which often also describes why and more). This flag will
+prevent curl from outputting that and return error 22.
 
 This method is not fail-safe and there are occasions where non-successful
 response codes will slip through, especially when authentication is involved
 
 This method is not fail-safe and there are occasions where non-successful
 response codes will slip through, especially when authentication is involved
@@ -462,11 +566,11 @@ response codes will slip through, especially when authentication is involved
 (HTTP) This lets curl emulate a filled-in form in which a user has pressed the
 submit button. This causes curl to POST data using the Content-Type
 multipart/form-data according to RFC 2388. This enables uploading of binary
 (HTTP) This lets curl emulate a filled-in form in which a user has pressed the
 submit button. This causes curl to POST data using the Content-Type
 multipart/form-data according to RFC 2388. This enables uploading of binary
-files etc. To force the 'content' part to be a file, prefix the file name
-with an @ sign. To just get the content part from a file, prefix the file name
-with the symbol <. The difference between @ and < is then that @ makes a file
-get attached in the post as a file upload, while the < makes a text field and
-just get the contents for that text field from a file.
+files etc. To force the 'content' part to be a file, prefix the file name with
+an @ sign. To just get the content part from a file, prefix the file name with
+the symbol <. The difference between @ and < is then that @ makes a file get
+attached in the post as a file upload, while the < makes a text field and just
+get the contents for that text field from a file.
 
 Example, to send your password file to the server, where
 \&'password' is the name of the form-field to which /etc/passwd will be the
 
 Example, to send your password file to the server, where
 \&'password' is the name of the form-field to which /etc/passwd will be the
@@ -592,10 +696,10 @@ you can specify URLs that contain the letters {}[] without having them being
 interpreted by curl itself. Note that these letters are not normal legal URL
 contents but they should be encoded according to the URI standard.
 .IP "-G, --get"
 interpreted by curl itself. Note that these letters are not normal legal URL
 contents but they should be encoded according to the URI standard.
 .IP "-G, --get"
-When used, this option will make all data specified with \fI-d, --data\fP or
-\fI--data-binary\fP to be used in an HTTP GET request instead of the POST
-request that otherwise would be used. The data will be appended to the URL
-with a '?' separator.
+When used, this option will make all data specified with \fI-d, --data\fP,
+\fI--data-binary\fP or \fI--data-urlencode\fP to be used in an HTTP GET
+request instead of the POST request that otherwise would be used. The data
+will be appended to the URL with a '?' separator.
 
 If used in combination with -I, the POST data will instead be appended to the
 URL with a HEAD request.
 
 If used in combination with -I, the POST data will instead be appended to the
 URL with a HEAD request.
@@ -604,16 +708,16 @@ If this option is used several times, only the first one is used. This is
 because undoing a GET doesn't make sense, but you should then instead enforce
 the alternative method you prefer.
 .IP "-H, --header <header>"
 because undoing a GET doesn't make sense, but you should then instead enforce
 the alternative method you prefer.
 .IP "-H, --header <header>"
-(HTTP) Extra header to use when getting a web page. You may specify any number
-of extra headers. Note that if you should add a custom header that has the
-same name as one of the internal ones curl would use, your externally set
-header will be used instead of the internal one. This allows you to make even
-trickier stuff than curl would normally do. You should not replace internally
-set headers without knowing perfectly well what you're doing. Remove an
-internal header by giving a replacement without content on the right side of
-the colon, as in: -H \&"Host:". If you send the custom header with no-value
-then its header must be terminated with a semicolon, such as \-H
-\&"X-Custom-Header;" to send "X-Custom-Header:".
+(HTTP) Extra header to include in the request when sending HTTP to a
+server. You may specify any number of extra headers. Note that if you should
+add a custom header that has the same name as one of the internal ones curl
+would use, your externally set header will be used instead of the internal
+one. This allows you to make even trickier stuff than curl would normally
+do. You should not replace internally set headers without knowing perfectly
+well what you're doing. Remove an internal header by giving a replacement
+without content on the right side of the colon, as in: -H \&"Host:". If you
+send the custom header with no-value then its header must be terminated with a
+semicolon, such as \-H \&"X-Custom-Header;" to send "X-Custom-Header:".
 
 curl will make sure that each header you add/replace is sent with the proper
 end-of-line marker, you should thus \fBnot\fP add that as a part of the header
 
 curl will make sure that each header you add/replace is sent with the proper
 end-of-line marker, you should thus \fBnot\fP add that as a part of the header
@@ -622,6 +726,13 @@ for you.
 
 See also the \fI-A, --user-agent\fP and \fI-e, --referer\fP options.
 
 
 See also the \fI-A, --user-agent\fP and \fI-e, --referer\fP options.
 
+Starting in 7.37.0, you need \fI--proxy-header\fP to send custom headers
+intended for a proxy.
+
+Example:
+
+\&# curl -H "X-First-Name: Joe" http://192.168.0.1/
+
 This option can be used multiple times to add/replace/remove multiple headers.
 .IP "--hostpubmd5 <md5>"
 (SCP/SFTP) Pass a string containing 32 hexadecimal digits. The string should
 This option can be used multiple times to add/replace/remove multiple headers.
 .IP "--hostpubmd5 <md5>"
 (SCP/SFTP) Pass a string containing 32 hexadecimal digits. The string should
@@ -657,6 +768,9 @@ cookies when they're closed down.
 (HTTP) This option tells the \fI-O, --remote-name\fP option to use the
 server-specified Content-Disposition filename instead of extracting a filename
 from the URL.
 (HTTP) This option tells the \fI-O, --remote-name\fP option to use the
 server-specified Content-Disposition filename instead of extracting a filename
 from the URL.
+
+There's no attempt to decode %-sequences (yet) in the provided file name, so
+this option may provide you with rather unexpected file names.
 .IP "-k, --insecure"
 (SSL) This option explicitly allows curl to perform "insecure" SSL connections
 and transfers. All SSL connections are attempted to be made secure by using
 .IP "-k, --insecure"
 (SSL) This option explicitly allows curl to perform "insecure" SSL connections
 and transfers. All SSL connections are attempted to be made secure by using
@@ -668,16 +782,21 @@ See this online resource for further details:
 .IP "-K, --config <config file>"
 Specify which config file to read curl arguments from. The config file is a
 text file in which command line arguments can be written which then will be
 .IP "-K, --config <config file>"
 Specify which config file to read curl arguments from. The config file is a
 text file in which command line arguments can be written which then will be
-used as if they were written on the actual command line. Options and their
-parameters must be specified on the same config file line, separated by
-whitespace, colon, the equals sign or any combination thereof (however,
-the preferred separator is the equals sign). If the parameter is to contain
-whitespace, the parameter must be enclosed within quotes. Within double
-quotes, the following escape sequences are available: \\\\, \\", \\t, \\n,
-\\r and \\v. A backslash preceding any other letter is ignored. If the
-first column of a config line is a '#' character, the rest of the line will be
-treated as a comment. Only write one option per physical line in the config
-file.
+used as if they were written on the actual command line.
+
+Options and their parameters must be specified on the same config file line,
+separated by whitespace, colon, or the equals sign. Long option names can
+optionally be given in the config file without the initial double dashes and
+if so, the colon or equals characters can be used as separators. If the option
+is specified with one or two dashes, there can be no colon or equals character
+between the option and its parameter.
+
+If the parameter is to contain whitespace, the parameter must be enclosed
+within quotes. Within double quotes, the following escape sequences are
+available: \\\\, \\", \\t, \\n, \\r and \\v. A backslash preceding any other
+letter is ignored. If the first column of a config line is a '#' character,
+the rest of the line will be treated as a comment. Only write one option per
+physical line in the config file.
 
 Specify the filename to -K, --config as '-' to make curl read the file from
 stdin.
 
 Specify the filename to -K, --config as '-' to make curl read the file from
 stdin.
@@ -688,21 +807,18 @@ line. So, it could look similar to this:
 
 url = "http://curl.haxx.se/docs/"
 
 
 url = "http://curl.haxx.se/docs/"
 
-Long option names can optionally be given in the config file without the
-initial double dashes.
-
 When curl is invoked, it always (unless \fI-q\fP is used) checks for a default
 config file and uses it if found. The default config file is checked for in
 the following places in this order:
 
 1) curl tries to find the "home dir": It first checks for the CURL_HOME and
 then the HOME environment variables. Failing that, it uses getpwuid() on
 When curl is invoked, it always (unless \fI-q\fP is used) checks for a default
 config file and uses it if found. The default config file is checked for in
 the following places in this order:
 
 1) curl tries to find the "home dir": It first checks for the CURL_HOME and
 then the HOME environment variables. Failing that, it uses getpwuid() on
-UNIX-like systems (which returns the home dir given the current user in your
+Unix-like systems (which returns the home dir given the current user in your
 system). On Windows, it then checks for the APPDATA variable, or as a last
 resort the '%USERPROFILE%\\Application Data'.
 
 2) On windows, if there is no _curlrc file in the home dir, it checks for one
 system). On Windows, it then checks for the APPDATA variable, or as a last
 resort the '%USERPROFILE%\\Application Data'.
 
 2) On windows, if there is no _curlrc file in the home dir, it checks for one
-in the same dir the curl executable is placed. On UNIX-like systems, it will
+in the same dir the curl executable is placed. On Unix-like systems, it will
 simply try to load .curlrc from the determined home dir.
 
 .nf
 simply try to load .curlrc from the determined home dir.
 
 .nf
@@ -731,7 +847,8 @@ If this option is used several times, the last one will be used. If
 unspecified, the option defaults to 60 seconds.
 .IP "--key <key>"
 (SSL/SSH) Private key file name. Allows you to provide your private key in this
 unspecified, the option defaults to 60 seconds.
 .IP "--key <key>"
 (SSL/SSH) Private key file name. Allows you to provide your private key in this
-separate file.
+separate file. For SSH, if not specified, curl tries the following candidates
+in order: '~/.ssh/id_rsa', '~/.ssh/id_dsa', './id_rsa', './id_dsa'.
 
 If this option is used several times, the last one will be used.
 .IP "--key-type <type>"
 
 If this option is used several times, the last one will be used.
 .IP "--key-type <type>"
@@ -745,22 +862,29 @@ If this option is used several times, the last one will be used.
 should be one of 'clear', 'safe', 'confidential', or 'private'. Should you use
 a level that is not one of these, 'private' will instead be used.
 
 should be one of 'clear', 'safe', 'confidential', or 'private'. Should you use
 a level that is not one of these, 'private' will instead be used.
 
-This option requires a library built with kerberos4 or GSSAPI
-(GSS-Negotiate) support. This is not very common. Use \fI-V, --version\fP to
-see if your curl supports it.
+This option requires a library built with kerberos4 support. This is not
+very common. Use \fI-V, --version\fP to see if your curl supports it.
 
 If this option is used several times, the last one will be used.
 .IP "-l, --list-only"
 (FTP)
 
 If this option is used several times, the last one will be used.
 .IP "-l, --list-only"
 (FTP)
-When listing an FTP directory, this switch forces a name-only view.
-Especially useful if you want to machine-parse the contents of an FTP
-directory since the normal directory view doesn't use a standard look
-or format.
-
-This option causes an FTP NLST command to be sent.  Some FTP servers
-list only files in their response to NLST; they do not include
-subdirectories and symbolic links.
-
+When listing an FTP directory, this switch forces a name-only view. This is
+especially useful if the user wants to machine-parse the contents of an FTP
+directory since the normal directory view doesn't use a standard look or
+format. When used like this, the option causes a NLST command to be sent to
+the server instead of LIST.
+
+Note: Some FTP servers list only files in their response to NLST; they do not
+include sub-directories and symbolic links.
+
+(POP3)
+When retrieving a specific email from POP3, this switch forces a LIST command
+to be performed instead of RETR. This is particularly useful if the user wants
+to see if a specific message id exists on the server and what size it is.
+
+Note: When combined with \fI-X, --request <command>\fP, this option can be used
+to send an UIDL command instead, so the user may use the email's unique
+identifier rather than it's message id to make the request. (Added in 7.21.5)
 .IP "-L, --location"
 (HTTP/HTTPS) If the server reports that the requested page has moved to a
 different location (indicated with a Location: header and a 3XX response code),
 .IP "-L, --location"
 (HTTP/HTTPS) If the server reports that the requested page has moved to a
 different location (indicated with a Location: header and a 3XX response code),
@@ -776,6 +900,10 @@ When curl follows a redirect and the request is not a plain GET (for example
 POST or PUT), it will do the following request with a GET if the HTTP response
 was 301, 302, or 303. If the response code was any other 3xx code, curl will
 re-send the following request using the same unmodified method.
 POST or PUT), it will do the following request with a GET if the HTTP response
 was 301, 302, or 303. If the response code was any other 3xx code, curl will
 re-send the following request using the same unmodified method.
+
+You can tell curl to not change the non-GET request method to GET after a 30x
+response by using the dedicated options for that: \fI--post301\fP,
+\fI--post302\fP and \fI-post303\fP.
 .IP "--libcurl <file>"
 Append this option to any ordinary curl command line, and you will get a
 libcurl-using C source code written to the file that does the equivalent
 .IP "--libcurl <file>"
 Append this option to any ordinary curl command line, and you will get a
 libcurl-using C source code written to the file that does the equivalent
@@ -784,9 +912,10 @@ of what your command-line operation does!
 If this option is used several times, the last given file name will be
 used. (Added in 7.16.1)
 .IP "--limit-rate <speed>"
 If this option is used several times, the last given file name will be
 used. (Added in 7.16.1)
 .IP "--limit-rate <speed>"
-Specify the maximum transfer rate you want curl to use. This feature is useful
-if you have a limited pipe and you'd like your transfer not to use your entire
-bandwidth.
+Specify the maximum transfer rate you want curl to use - for both downloads
+and uploads. This feature is useful if you have a limited pipe and you'd like
+your transfer not to use your entire bandwidth. To make it slower than it
+otherwise would be.
 
 The given speed is measured in bytes/second, unless a suffix is appended.
 Appending 'k' or 'K' will count the number as kilobytes, 'm' or M' makes it
 
 The given speed is measured in bytes/second, unless a suffix is appended.
 Appending 'k' or 'K' will count the number as kilobytes, 'm' or M' makes it
@@ -821,6 +950,16 @@ timeout increases in decimal precision.  See also the \fI--connect-timeout\fP
 option.
 
 If this option is used several times, the last one will be used.
 option.
 
 If this option is used several times, the last one will be used.
+.IP "--login-options <options>"
+Specify the login options to use during server authentication.
+
+You can use the login options to specify protocol specific options that may
+be used during authentication. At present only IMAP, POP3 and SMTP support
+login options. For more information about the login options please see
+RFC 2384, RFC 5092 and IETF draft draft-earhart-url-smtp-00.txt (Added in
+7.34.0).
+
+If this option is used several times, the last one will be used.
 .IP "--mail-auth <address>"
 (SMTP) Specify a single address. This will be used to specify the
 authentication address (identity) of a submitted message that is being relayed
 .IP "--mail-auth <address>"
 (SMTP) Specify a single address. This will be used to specify the
 authentication address (identity) of a submitted message that is being relayed
@@ -840,10 +979,18 @@ return with exit code 63.
 files this option has no effect even if the file transfer ends up being larger
 than this given limit. This concerns both FTP and HTTP transfers.
 .IP "--mail-rcpt <address>"
 files this option has no effect even if the file transfer ends up being larger
 than this given limit. This concerns both FTP and HTTP transfers.
 .IP "--mail-rcpt <address>"
-(SMTP) Specify a single address that the given mail should get sent to. This
-option can be used multiple times to specify many recipients.
+(SMTP) Specify a single address, user name or mailing list name.
 
 
-(Added in 7.20.0)
+When performing a mail transfer, the recipient should specify a valid email
+address to send the mail to. (Added in 7.20.0)
+
+When performing an address verification (VRFY command), the recipient should be
+specified as the user name or user name and domain (as per Section 3.5 of
+RFC5321). (Added in 7.34.0)
+
+When performing a mailing list expand (EXPN command), the recipient should be
+specified using the mailing list name, such as "Friends" or "London-Office".
+(Added in 7.34.0)
 .IP "--max-redirs <num>"
 Set maximum number of redirection-followings allowed. If \fI-L, --location\fP
 is used, this option can be used to prevent curl from following redirections
 .IP "--max-redirs <num>"
 Set maximum number of redirection-followings allowed. If \fI-L, --location\fP
 is used, this option can be used to prevent curl from following redirections
@@ -879,7 +1026,7 @@ in Metalink file, hash check will fail.
 .IP "-n, --netrc"
 Makes curl scan the \fI.netrc\fP (\fI_netrc\fP on Windows) file in the user's
 home directory for login name and password. This is typically used for FTP on
 .IP "-n, --netrc"
 Makes curl scan the \fI.netrc\fP (\fI_netrc\fP on Windows) file in the user's
 home directory for login name and password. This is typically used for FTP on
-UNIX. If used with HTTP, curl will enable user authentication. See
+Unix. If used with HTTP, curl will enable user authentication. See
 .BR netrc(4)
 or
 .BR ftp(1)
 .BR netrc(4)
 or
 .BR ftp(1)
@@ -916,18 +1063,13 @@ Very similar to \fI--netrc\fP, but this option makes the .netrc usage
 \fBoptional\fP and not mandatory as the \fI--netrc\fP option does.
 
 .IP "--negotiate"
 \fBoptional\fP and not mandatory as the \fI--netrc\fP option does.
 
 .IP "--negotiate"
-(HTTP) Enables GSS-Negotiate authentication. The GSS-Negotiate method was
-designed by Microsoft and is used in their web applications. It is primarily
-meant as a support for Kerberos5 authentication but may be also used along
-with another authentication method. For more information see IETF draft
-draft-brezak-spnego-http-04.txt.
+(HTTP) Enables Negotiate (SPNEGO) authentication.
 
 
-If you want to enable Negotiate for your proxy authentication, then use
+If you want to enable Negotiate (SPNEGO) for proxy authentication, then use
 \fI--proxy-negotiate\fP.
 
 \fI--proxy-negotiate\fP.
 
-This option requires a library built with GSSAPI support. This is
-not very common. Use \fI-V, --version\fP to see if your version supports
-GSS-Negotiate.
+This option requires a library built with GSS-API or SSPI support. Use \fI-V,
+--version\fP to see if your curl supports GSS-API/SSPI and SPNEGO.
 
 When using this option, you must also provide a fake \fI-u, --user\fP option to
 activate the authentication code properly. Sending a '-u :' is enough as the
 
 When using this option, you must also provide a fake \fI-u, --user\fP option to
 activate the authentication code properly. Sending a '-u :' is enough as the
@@ -999,7 +1141,37 @@ Consequentially, the file will be saved in the current working directory. If
 you want the file saved in a different directory, make sure you change current
 working directory before you invoke curl with the \fB-O, --remote-name\fP flag!
 
 you want the file saved in a different directory, make sure you change current
 working directory before you invoke curl with the \fB-O, --remote-name\fP flag!
 
+There is no URL decoding done on the file name. If it has %20 or other URL
+encoded parts of the name, they will end up as-is as file name.
+
 You may use this option as many times as the number of URLs you have.
 You may use this option as many times as the number of URLs you have.
+.IP "--oauth2-bearer"
+(IMAP, POP3, SMTP)
+Specify the Bearer Token for OAUTH 2.0 server authentication. The Bearer Token
+is used in conjunction with the user name which can be specified as part of the
+\fI--url\fP or \fI-u, --user\fP options.
+
+The Bearer Token and user name are formatted according to RFC 6750.
+
+If this option is used several times, the last one will be used.
+.IP "--proxy-header <header>"
+(HTTP) Extra header to include in the request when sending HTTP to a
+proxy. You may specify any number of extra headers. This is the equivalent
+option to \fI-H, --header\fP but is for proxy communication only like in
+CONNECT requests when you want a separate header sent to the proxy to what is
+sent to the actual remote host.
+
+curl will make sure that each header you add/replace is sent with the proper
+end-of-line marker, you should thus \fBnot\fP add that as a part of the header
+content: do not add newlines or carriage returns, they will only mess things
+up for you.
+
+Headers specified with this option will not be included in requests that curl
+knows will not be sent to a proxy.
+
+This option can be used multiple times to add/replace/remove multiple headers.
+
+(Added in 7.37.0)
 .IP "-p, --proxytunnel"
 When an HTTP proxy is used (\fI-x, --proxy\fP), this option will cause non-HTTP
 protocols to attempt to tunnel through the proxy instead of merely using it to
 .IP "-p, --proxytunnel"
 When an HTTP proxy is used (\fI-x, --proxy\fP), this option will cause non-HTTP
 protocols to attempt to tunnel through the proxy instead of merely using it to
@@ -1116,8 +1288,8 @@ the default authentication method curl uses with proxies.
 Tells curl to use HTTP Digest authentication when communicating with the given
 proxy. Use \fI--digest\fP for enabling HTTP Digest with a remote host.
 .IP "--proxy-negotiate"
 Tells curl to use HTTP Digest authentication when communicating with the given
 proxy. Use \fI--digest\fP for enabling HTTP Digest with a remote host.
 .IP "--proxy-negotiate"
-Tells curl to use HTTP Negotiate authentication when communicating
-with the given proxy. Use \fI--negotiate\fP for enabling HTTP Negotiate
+Tells curl to use HTTP Negotiate (SPNEGO) authentication when communicating
+with the given proxy. Use \fI--negotiate\fP for enabling HTTP Negotiate (SPNEGO)
 with a remote host. (Added in 7.17.1)
 .IP "--proxy-ntlm"
 Tells curl to use HTTP NTLM authentication when communicating with the given
 with a remote host. (Added in 7.17.1)
 .IP "--proxy-ntlm"
 Tells curl to use HTTP NTLM authentication when communicating with the given
@@ -1134,6 +1306,11 @@ protocol instead of the default HTTP 1.1.
 separate file.
 
 If this option is used several times, the last one will be used.
 separate file.
 
 If this option is used several times, the last one will be used.
+
+(As of 7.39.0, curl attempts to automatically extract the public key from the
+private key file, so passing this option is generally not required. Note that
+this public key extraction requires libcurl to be linked against a copy of
+libssh2 1.2.8 or higher that is itself linked against OpenSSL.)
 .IP "-q"
 If used as the first parameter on the command line, the \fIcurlrc\fP config
 file will not be read and used. See the \fI-K, --config\fP for details on the
 .IP "-q"
 If used as the first parameter on the command line, the \fIcurlrc\fP config
 file will not be read and used. See the \fI-K, --config\fP for details on the
@@ -1317,7 +1494,7 @@ option name can still be used but will be removed in a future version.
 .IP "--ssl-allow-beast"
 (SSL) This option tells curl to not work around a security flaw in the SSL3
 and TLS1.0 protocols known as BEAST.  If this option isn't used, the SSL layer
 .IP "--ssl-allow-beast"
 (SSL) This option tells curl to not work around a security flaw in the SSL3
 and TLS1.0 protocols known as BEAST.  If this option isn't used, the SSL layer
-may use work-arounds known to cause interoperability problems with some older
+may use workarounds known to cause interoperability problems with some older
 SSL implementations. WARNING: this option loosens the SSL security, and by
 using this flag you ask for exactly that.  (Added in 7.25.0)
 .IP "--socks4 <host[:port]>"
 SSL implementations. WARNING: this option loosens the SSL security, and by
 using this flag you ask for exactly that.  (Added in 7.25.0)
 .IP "--socks4 <host[:port]>"
@@ -1380,7 +1557,7 @@ sockd/proxy-name --socks5 proxy-name \fI--socks5-gssapi-service\fP
 sockd/real-name would use sockd/real-name for cases where the proxy-name does
 not match the principal name.  (Added in 7.19.4).
 .IP "--socks5-gssapi-nec"
 sockd/real-name would use sockd/real-name for cases where the proxy-name does
 not match the principal name.  (Added in 7.19.4).
 .IP "--socks5-gssapi-nec"
-As part of the gssapi negotiation a protection mode is negotiated. RFC 1961
+As part of the GSS-API negotiation a protection mode is negotiated. RFC 1961
 says in section 4.3/4.4 it should be protected, but the NEC reference
 implementation does not.  The option \fI--socks5-gssapi-nec\fP allows the
 unprotected exchange of the protection mode negotiation. (Added in 7.19.4).
 says in section 4.3/4.4 it should be protected, but the NEC reference
 implementation does not.  The option \fI--socks5-gssapi-nec\fP allows the
 unprotected exchange of the protection mode negotiation. (Added in 7.19.4).
@@ -1436,14 +1613,26 @@ Set TLS authentication type. Currently, the only supported option is "SRP",
 for TLS-SRP (RFC 5054). If \fI--tlsuser\fP and \fI--tlspassword\fP are
 specified but \fI--tlsauthtype\fP is not, then this option defaults to "SRP".
 (Added in 7.21.4)
 for TLS-SRP (RFC 5054). If \fI--tlsuser\fP and \fI--tlspassword\fP are
 specified but \fI--tlsauthtype\fP is not, then this option defaults to "SRP".
 (Added in 7.21.4)
-.IP "--tlsuser <user>"
-Set username for use with the TLS authentication method specified with
-\fI--tlsauthtype\fP. Requires that \fI--tlspassword\fP also be set.  (Added in
-7.21.4)
 .IP "--tlspassword <password>"
 Set password for use with the TLS authentication method specified with
 \fI--tlsauthtype\fP. Requires that \fI--tlsuser\fP also be set.  (Added in
 7.21.4)
 .IP "--tlspassword <password>"
 Set password for use with the TLS authentication method specified with
 \fI--tlsauthtype\fP. Requires that \fI--tlsuser\fP also be set.  (Added in
 7.21.4)
+.IP "--tlsuser <user>"
+Set username for use with the TLS authentication method specified with
+\fI--tlsauthtype\fP. Requires that \fI--tlspassword\fP also be set.  (Added in
+7.21.4)
+.IP "--tlsv1.0"
+(SSL)
+Forces curl to use TLS version 1.0 when negotiating with a remote TLS server.
+(Added in 7.34.0)
+.IP "--tlsv1.1"
+(SSL)
+Forces curl to use TLS version 1.1 when negotiating with a remote TLS server.
+(Added in 7.34.0)
+.IP "--tlsv1.2"
+(SSL)
+Forces curl to use TLS version 1.2 when negotiating with a remote TLS server.
+(Added in 7.34.0)
 .IP "--tr-encoding"
 (HTTP) Request a compressed Transfer-Encoding response using one of the
 algorithms curl supports, and uncompress the data while receiving it.
 .IP "--tr-encoding"
 (HTTP) Request a compressed Transfer-Encoding response using one of the
 algorithms curl supports, and uncompress the data while receiving it.
@@ -1473,24 +1662,44 @@ If this option is used several times, the last one will be used.
 .IP "--trace-time"
 Prepends a time stamp to each trace or verbose line that curl displays.
 (Added in 7.14.0)
 .IP "--trace-time"
 Prepends a time stamp to each trace or verbose line that curl displays.
 (Added in 7.14.0)
+.IP "--unix-socket <path>"
+(HTTP) Connect through this Unix domain socket, instead of using the
+network. (Added in 7.40.0)
 .IP "-u, --user <user:password>"
 Specify the user name and password to use for server authentication. Overrides
 \fI-n, --netrc\fP and \fI--netrc-optional\fP.
 
 .IP "-u, --user <user:password>"
 Specify the user name and password to use for server authentication. Overrides
 \fI-n, --netrc\fP and \fI--netrc-optional\fP.
 
-If you just give the user name (without entering a colon) curl will prompt for
-a password.
+If you simply specify the user name, curl will prompt for a password.
+
+The user name and passwords are split up on the first colon, which makes it
+impossible to use a colon in the user name with this option. The password can,
+still.
 
 
-If you use an SSPI-enabled curl binary and do NTLM authentication, you can
-force curl to pick up the user name and password from your environment by
-simply specifying a single colon with this option: "-u :".
+When using Kerberos V5 with a Windows based server you should include the
+Windows domain name in the user name, in order for the server to succesfully
+obtain a Kerberos Ticket. If you don't then the initial authentication
+handshake may fail.
+
+When using NTLM, the user name can be specified simply as the user name,
+without the domain, if there is a single domain and forest in your setup
+for example.
+
+To specify the domain name use either Down-Level Logon Name or UPN (User
+Principal Name) formats. For example, EXAMPLE\\user and user@example.com
+respectively.
+
+If you use a Windows SSPI-enabled curl binary and perform Kerberos V5,
+Negotiate, NTLM or Digest authentication then you can tell curl to select
+the user name and password from your environment by specifying a single colon
+with this option: "-u :".
 
 If this option is used several times, the last one will be used.
 .IP "-U, --proxy-user <user:password>"
 Specify the user name and password to use for proxy authentication.
 
 
 If this option is used several times, the last one will be used.
 .IP "-U, --proxy-user <user:password>"
 Specify the user name and password to use for proxy authentication.
 
-If you use an SSPI-enabled curl binary and do NTLM authentication, you can
-force curl to pick up the user name and password from your environment by
-simply specifying a single colon with this option: "-U :".
+If you use a Windows SSPI-enabled curl binary and do either Negotiate or NTLM
+authentication then you can tell curl to select the user name and password
+from your environment by specifying a single colon with this option: "-U :".
 
 If this option is used several times, the last one will be used.
 .IP "--url <URL>"
 
 If this option is used several times, the last one will be used.
 .IP "--url <URL>"
@@ -1500,10 +1709,11 @@ URL(s) in a config file.
 This option may be used any number of times. To control where this URL is
 written, use the \fI-o, --output\fP or the \fI-O, --remote-name\fP options.
 .IP "-v, --verbose"
 This option may be used any number of times. To control where this URL is
 written, use the \fI-o, --output\fP or the \fI-O, --remote-name\fP options.
 .IP "-v, --verbose"
-Makes the fetching more verbose/talkative. Mostly useful for debugging. A line
-starting with '>' means "header data" sent by curl, '<' means "header data"
-received by curl that is hidden in normal cases, and a line starting with '*'
-means additional info provided by curl.
+Be more verbose/talkative during the operation. Useful for debugging and
+seeing what's going on "under the hood". A line starting with '>' means
+"header data" sent by curl, '<' means "header data" received by curl that is
+hidden in normal cases, and a line starting with '*' means additional info
+provided by curl.
 
 Note that if you only want HTTP headers in the output, \fI-i, --include\fP
 might be the option you're looking for.
 
 Note that if you only want HTTP headers in the output, \fI-i, --include\fP
 might be the option you're looking for.
@@ -1515,10 +1725,10 @@ This option overrides previous uses of \fI--trace-ascii\fP or \fI--trace\fP.
 
 Use \fI-s, --silent\fP to make curl quiet.
 .IP "-w, --write-out <format>"
 
 Use \fI-s, --silent\fP to make curl quiet.
 .IP "-w, --write-out <format>"
-Defines what to display on stdout after a completed and successful
-operation. The format is a string that may contain plain text mixed with any
-number of variables. The string can be specified as "string", to get read from
-a particular file you specify it "@filename" and to tell curl to read the
+Make curl display information on stdout after a completed transfer. The format
+is a string that may contain plain text mixed with any number of
+variables. The format can be specified as a literal "string", or you can have
+curl read the format from a file with "@filename" and to tell curl to read the
 format from stdin you write "@-".
 
 The variables present in the output format will be substituted by the value or
 format from stdin you write "@-".
 
 The variables present in the output format will be substituted by the value or
@@ -1643,8 +1853,16 @@ to follow location: headers.
 
 If this option is used several times, the last one will be used.
 .IP "-x, --proxy <[protocol://][user:password@]proxyhost[:port]>"
 
 If this option is used several times, the last one will be used.
 .IP "-x, --proxy <[protocol://][user:password@]proxyhost[:port]>"
-Use the specified HTTP proxy. If the port number is not specified, it is
-assumed at port 1080.
+Use the specified proxy.
+
+The proxy string can be specified with a protocol:// prefix to specify
+alternative proxy protocols. Use socks4://, socks4a://, socks5:// or
+socks5h:// to request the specific SOCKS version to be used. No protocol
+specified, http:// and all others will be treated as HTTP proxies. (The
+protocol support was added in curl 7.21.7)
+
+If the port number is not specified in the proxy string, it is assumed to be
+1080.
 
 This option overrides existing environment variables that set the proxy to
 use. If there's an environment variable setting a proxy, you can set proxy to
 
 This option overrides existing environment variables that set the proxy to
 use. If there's an environment variable setting a proxy, you can set proxy to
@@ -1663,11 +1881,6 @@ The proxy host can be specified the exact same way as the proxy environment
 variables, including the protocol prefix (http://) and the embedded user +
 password.
 
 variables, including the protocol prefix (http://) and the embedded user +
 password.
 
-From 7.21.7, the proxy string may be specified with a protocol:// prefix to
-specify alternative proxy protocols. Use socks4://, socks4a://, socks5:// or
-socks5h:// to request the specific SOCKS version to be used. No protocol
-specified, http:// and all others will be treated as HTTP proxies.
-
 If this option is used several times, the last one will be used.
 .IP "-X, --request <command>"
 (HTTP) Specifies a custom request method to use when communicating with the
 If this option is used several times, the last one will be used.
 .IP "-X, --request <command>"
 (HTTP) Specifies a custom request method to use when communicating with the
@@ -1689,8 +1902,17 @@ option.
 Specifies a custom FTP command to use instead of LIST when doing file lists
 with FTP.
 
 Specifies a custom FTP command to use instead of LIST when doing file lists
 with FTP.
 
-If this option is used several times, the last one will be used.
+(POP3)
+Specifies a custom POP3 command to use instead of LIST or RETR. (Added in
+7.26.0)
+
+(IMAP)
+Specifies a custom IMAP command to use instead of LIST. (Added in 7.30.0)
 
 
+(SMTP)
+Specifies a custom SMTP command to use instead of HELP or VRFY. (Added in 7.34.0)
+
+If this option is used several times, the last one will be used.
 .IP "--xattr"
 When saving output to a file, this option tells curl to store certain file
 metadata in extended file attributes. Currently, the URL is stored in the
 .IP "--xattr"
 When saving output to a file, this option tells curl to store certain file
 metadata in extended file attributes. Currently, the URL is stored in the
@@ -1727,7 +1949,8 @@ than the specified date/time.
 
 If this option is used several times, the last one will be used.
 .IP "-h, --help"
 
 If this option is used several times, the last one will be used.
 .IP "-h, --help"
-Usage help.
+Usage help. This lists all current command line options with a short
+description.
 .IP "-M, --manual"
 Manual. Display the huge help text.
 .IP "-V, --version"
 .IP "-M, --manual"
 Manual. Display the huge help text.
 .IP "-V, --version"
@@ -1747,29 +1970,32 @@ You can use IPv6 with this.
 .IP "krb4"
 Krb4 for FTP is supported.
 .IP "SSL"
 .IP "krb4"
 Krb4 for FTP is supported.
 .IP "SSL"
-HTTPS and FTPS are supported.
+SSL versions of various protocols are supported, such as HTTPS, FTPS, POP3S
+and so on.
 .IP "libz"
 Automatic decompression of compressed files over HTTP is supported.
 .IP "NTLM"
 NTLM authentication is supported.
 .IP "libz"
 Automatic decompression of compressed files over HTTP is supported.
 .IP "NTLM"
 NTLM authentication is supported.
-.IP "GSS-Negotiate"
-Negotiate authentication and krb5 for FTP is supported.
 .IP "Debug"
 This curl uses a libcurl built with Debug. This enables more error-tracking
 and memory debugging etc. For curl-developers only!
 .IP "AsynchDNS"
 .IP "Debug"
 This curl uses a libcurl built with Debug. This enables more error-tracking
 and memory debugging etc. For curl-developers only!
 .IP "AsynchDNS"
-This curl uses asynchronous name resolves.
+This curl uses asynchronous name resolves. Asynchronous name resolves can be
+done using either the c-ares or the threaded resolver backends.
 .IP "SPNEGO"
 .IP "SPNEGO"
-SPNEGO Negotiate authentication is supported.
+SPNEGO authentication is supported.
 .IP "Largefile"
 This curl supports transfers of large files, files larger than 2GB.
 .IP "IDN"
 This curl supports IDN - international domain names.
 .IP "Largefile"
 This curl supports transfers of large files, files larger than 2GB.
 .IP "IDN"
 This curl supports IDN - international domain names.
+.IP "GSS-API"
+GSS-API is supported.
 .IP "SSPI"
 .IP "SSPI"
-SSPI is supported. If you use NTLM and set a blank user name, curl will
-authenticate with your current user and password.
+SSPI is supported.
 .IP "TLS-SRP"
 SRP (Secure Remote Password) authentication is supported for TLS.
 .IP "TLS-SRP"
 SRP (Secure Remote Password) authentication is supported for TLS.
+.IP "HTTP2"
+HTTP/2 support has been built-in.
 .IP "Metalink"
 This curl supports Metalink (both version 3 and 4 (RFC 5854)), which
 describes mirrors and hashes.  curl will use mirrors for failover if
 .IP "Metalink"
 This curl supports Metalink (both version 3 and 4 (RFC 5854)), which
 describes mirrors and hashes.  curl will use mirrors for failover if
@@ -1983,6 +2209,10 @@ RTSP: mismatch of Session Identifiers
 unable to parse FTP file list
 .IP 88
 FTP chunk callback reported error
 unable to parse FTP file list
 .IP 88
 FTP chunk callback reported error
+.IP 89
+No connection available, the session will be queued
+.IP 90
+SSL public key does not matched pinned public key
 .IP XX
 More error codes will appear here in future releases. The existing ones
 are meant to never change.
 .IP XX
 More error codes will appear here in future releases. The existing ones
 are meant to never change.
index 88c7e7e..2a961b7 100644 (file)
@@ -48,19 +48,25 @@ p.roffit {
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">curl - transfer a URL <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
 <p class="level0"><span Class="bold">curl [options]</span> <a class="emphasis" href="#URL">[URL...]</a> <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">curl - transfer a URL <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
 <p class="level0"><span Class="bold">curl [options]</span> <a class="emphasis" href="#URL">[URL...]</a> <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0"><span Class="bold">curl</span> is a tool to transfer data from or to a server, using one of the supported protocols (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP).  The command is designed to work without user interaction. 
+<p class="level0"><span Class="bold">curl</span> is a tool to transfer data from or to a server, using one of the supported protocols (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET and TFTP). The command is designed to work without user interaction. 
 <p class="level0">curl offers a busload of useful tricks like proxy support, user authentication, FTP upload, HTTP post, SSL connections, cookies, file transfer resume, Metalink, and more. As you will see below, the number of features will make your head spin! 
 <p class="level0">curl is powered by libcurl for all transfer-related features. See <span Class="manpage">libcurl (3)</span> for details. <a name="URL"></a><h2 class="nroffsh">URL</h2>
 <p class="level0">The URL syntax is protocol-dependent. You'll find a detailed description in <a href="http://www.ietf.org/rfc/rfc3986.txt">RFC 3986</a>. 
 <p class="level0">You can specify multiple URLs or parts of URLs by writing part sets within braces as in: 
 <p class="level0">curl offers a busload of useful tricks like proxy support, user authentication, FTP upload, HTTP post, SSL connections, cookies, file transfer resume, Metalink, and more. As you will see below, the number of features will make your head spin! 
 <p class="level0">curl is powered by libcurl for all transfer-related features. See <span Class="manpage">libcurl (3)</span> for details. <a name="URL"></a><h2 class="nroffsh">URL</h2>
 <p class="level0">The URL syntax is protocol-dependent. You'll find a detailed description in <a href="http://www.ietf.org/rfc/rfc3986.txt">RFC 3986</a>. 
 <p class="level0">You can specify multiple URLs or parts of URLs by writing part sets within braces as in: 
-<p class="level0">&nbsp;<a href="http://site">http://site</a>.{one,two,three}.com 
+<p class="level0">&nbsp; <a href="http://site">http://site</a>.{one,two,three}.com 
 <p class="level0">or you can get sequences of alphanumeric series by using [] as in: 
 <p class="level0">or you can get sequences of alphanumeric series by using [] as in: 
-<p class="level0">&nbsp;<a href="ftp://ftp.numericals.com/file">ftp://ftp.numericals.com/file</a>[1-100].txt &nbsp;<a href="ftp://ftp.numericals.com/file">ftp://ftp.numericals.com/file</a>[001-100].txt    (with leading zeros) &nbsp;<a href="ftp://ftp.letters.com/file">ftp://ftp.letters.com/file</a>[a-z].txt 
+<p class="level0">&nbsp; <a href="ftp://ftp.numericals.com/file">ftp://ftp.numericals.com/file</a>[1-100].txt 
+<p class="level0">&nbsp; <a href="ftp://ftp.numericals.com/file">ftp://ftp.numericals.com/file</a>[001-100].txt    (with leading zeros) 
+<p class="level0">&nbsp; <a href="ftp://ftp.letters.com/file">ftp://ftp.letters.com/file</a>[a-z].txt 
 <p class="level0">Nested sequences are not supported, but you can use several ones next to each other: 
 <p class="level0">Nested sequences are not supported, but you can use several ones next to each other: 
-<p class="level0">&nbsp;<a href="http://any.org/archive">http://any.org/archive</a>[1996-1999]/vol[1-4]/part{a,b,c}.html 
+<p class="level0">&nbsp; <a href="http://any.org/archive">http://any.org/archive</a>[1996-1999]/vol[1-4]/part{a,b,c}.html 
 <p class="level0">You can specify any amount of URLs on the command line. They will be fetched in a sequential manner in the specified order. 
 <p class="level0">You can specify a step counter for the ranges to get every Nth number or letter: 
 <p class="level0">You can specify any amount of URLs on the command line. They will be fetched in a sequential manner in the specified order. 
 <p class="level0">You can specify a step counter for the ranges to get every Nth number or letter: 
-<p class="level0">&nbsp;<a href="http://www.numericals.com/file">http://www.numericals.com/file</a>[1-100:10].txt &nbsp;<a href="http://www.letters.com/file">http://www.letters.com/file</a>[a-z:2].txt 
+<p class="level0">&nbsp; <a href="http://www.numericals.com/file">http://www.numericals.com/file</a>[1-100:10].txt 
+<p class="level0">&nbsp; <a href="http://www.letters.com/file">http://www.letters.com/file</a>[a-z:2].txt 
+<p class="level0">When using [] or {} sequences when invoked from a command line prompt, you probably have to put the full URL within double quotes to avoid the shell from interfering with it. This also goes for other characters treated special, like for example '&', '?' and '*'. 
+<p class="level0">Provide the IPv6 zone index in the URL with an escaped percentage sign and the interface name. Like in 
+<p class="level0">&nbsp; http://[fe80::3%25eth0]/ 
 <p class="level0">If you specify URL without protocol:// prefix, curl will attempt to guess what protocol you might want. It will then default to HTTP but try other protocols based on often-used host name prefixes. For example, for host names starting with "ftp." curl will assume you want to speak FTP. 
 <p class="level0">curl will do its best to use what you pass to it as a URL. It is not trying to validate it as a syntactically correct URL by any means but is instead <span Class="bold">very</span> liberal with what it accepts. 
 <p class="level0">curl will attempt to re-use connections for multiple file transfers, so that getting many files from the same server will not do multiple connects / handshakes. This improves speed. Of course this is only done on files specified on a single command line and cannot be used between separate curl invokes. <a name="PROGRESS"></a><h2 class="nroffsh">PROGRESS METER</h2>
 <p class="level0">If you specify URL without protocol:// prefix, curl will attempt to guess what protocol you might want. It will then default to HTTP but try other protocols based on often-used host name prefixes. For example, for host names starting with "ftp." curl will assume you want to speak FTP. 
 <p class="level0">curl will do its best to use what you pass to it as a URL. It is not trying to validate it as a syntactically correct URL by any means but is instead <span Class="bold">very</span> liberal with what it accepts. 
 <p class="level0">curl will attempt to re-use connections for multiple file transfers, so that getting many files from the same server will not do multiple connects / handshakes. This improves speed. Of course this is only done on files specified on a single command line and cannot be used between separate curl invokes. <a name="PROGRESS"></a><h2 class="nroffsh">PROGRESS METER</h2>
@@ -69,23 +75,38 @@ p.roffit {
 <p class="level0">If you want a progress meter for HTTP POST or PUT requests, you need to redirect the response output to a file, using shell redirect (&gt;), -o [file] or similar. 
 <p class="level0">It is not the same case for FTP upload as that operation does not spit out any response data to the terminal. 
 <p class="level0">If you prefer a progress "bar" instead of the regular meter, <a class="emphasis" href="#-">-#</a> is your friend. <a name="OPTIONS"></a><h2 class="nroffsh">OPTIONS</h2>
 <p class="level0">If you want a progress meter for HTTP POST or PUT requests, you need to redirect the response output to a file, using shell redirect (&gt;), -o [file] or similar. 
 <p class="level0">It is not the same case for FTP upload as that operation does not spit out any response data to the terminal. 
 <p class="level0">If you prefer a progress "bar" instead of the regular meter, <a class="emphasis" href="#-">-#</a> is your friend. <a name="OPTIONS"></a><h2 class="nroffsh">OPTIONS</h2>
+<p class="level0">Options start with one or two dashes. Many of the options require an additional value next to them. 
+<p class="level0">The short "single-dash" form of the options, -d for example, may be used with or without a space between it and its value, although a space is a recommended separator. The long "double-dash" form, --data for example, requires a space between it and its value. 
+<p class="level0">Short version options that don't need any additional values can be used immediately next to each other, like for example you can specify all the options -O, -L and -v at once as -OLv. 
 <p class="level0">In general, all boolean options are enabled with --<span Class="bold">option</span> and yet again disabled with --<span Class="bold">no-</span>option. That is, you use the exact same option name but prefix it with "no-". However, in this list we mostly only list and show the --option version of them. (This concept with --no options was added in 7.19.0. Previously most options were toggled on/off on repeated use of the same command line option.) 
 <p class="level0"><a name="-"></a><span class="nroffip">-#, --progress-bar</span> 
 <p class="level1">Make curl display progress as a simple progress bar instead of the standard, more informational, meter. 
 <p class="level0">In general, all boolean options are enabled with --<span Class="bold">option</span> and yet again disabled with --<span Class="bold">no-</span>option. That is, you use the exact same option name but prefix it with "no-". However, in this list we mostly only list and show the --option version of them. (This concept with --no options was added in 7.19.0. Previously most options were toggled on/off on repeated use of the same command line option.) 
 <p class="level0"><a name="-"></a><span class="nroffip">-#, --progress-bar</span> 
 <p class="level1">Make curl display progress as a simple progress bar instead of the standard, more informational, meter. 
+<p class="level0"><a name="-"></a><span class="nroffip">-:, --next</span> 
+<p class="level1">Tells curl to use a separate operation for the following URL and associated options. This allows you to send several URL requests, each with their own specific options, for example, such as different user names or custom requests for each. (Added in 7.36.0) 
 <p class="level0"><a name="-0"></a><span class="nroffip">-0, --http1.0</span> 
 <p class="level0"><a name="-0"></a><span class="nroffip">-0, --http1.0</span> 
-<p class="level1">(HTTP) Forces curl to issue its requests using HTTP 1.0 instead of using its internally preferred: HTTP 1.1. 
+<p class="level1">(HTTP) Tells curl to use HTTP version 1.0 instead of using its internally preferred: HTTP 1.1. 
+<p class="level0"><a name="--http11"></a><span class="nroffip">--http1.1</span> 
+<p class="level1">(HTTP) Tells curl to use HTTP version 1.1. This is the internal default version. (Added in 7.33.0) 
+<p class="level0"><a name="--http2"></a><span class="nroffip">--http2</span> 
+<p class="level1">(HTTP) Tells curl to issue its requests using HTTP 2. This requires that the underlying libcurl was built to support it. (Added in 7.33.0) 
+<p class="level0"><a name="--no-npn"></a><span class="nroffip">--no-npn</span> 
+<p class="level1">Disable the NPN TLS extension. NPN is enabled by default if libcurl was built with an SSL library that supports NPN. NPN is used by a libcurl that supports HTTP 2 to negotiate HTTP 2 support with the server during https sessions. 
+<p class="level1">(Added in 7.36.0) 
+<p class="level0"><a name="--no-alpn"></a><span class="nroffip">--no-alpn</span> 
+<p class="level1">Disable the ALPN TLS extension. ALPN is enabled by default if libcurl was built with an SSL library that supports ALPN. ALPN is used by a libcurl that supports HTTP 2 to negotiate HTTP 2 support with the server during https sessions. 
+<p class="level1">(Added in 7.36.0) 
 <p class="level0"><a name="-1"></a><span class="nroffip">-1, --tlsv1</span> 
 <p class="level0"><a name="-1"></a><span class="nroffip">-1, --tlsv1</span> 
-<p class="level1">(SSL) Forces curl to use TLS version 1 when negotiating with a remote TLS server
+<p class="level1">(SSL) Forces curl to use TLS version 1.x when negotiating with a remote TLS server. You can use options <a class="emphasis" href="#--tlsv10">--tlsv1.0</a>, <a class="emphasis" href="#--tlsv11">--tlsv1.1</a>, and <a class="emphasis" href="#--tlsv12">--tlsv1.2</a> to control the TLS version more precisely (if the SSL backend in use supports such a level of control)
 <p class="level0"><a name="-2"></a><span class="nroffip">-2, --sslv2</span> 
 <p class="level0"><a name="-2"></a><span class="nroffip">-2, --sslv2</span> 
-<p class="level1">(SSL) Forces curl to use SSL version 2 when negotiating with a remote SSL server. 
+<p class="level1">(SSL) Forces curl to use SSL version 2 when negotiating with a remote SSL server. Sometimes curl is built without SSLv2 support. SSLv2 is widely considered insecure. 
 <p class="level0"><a name="-3"></a><span class="nroffip">-3, --sslv3</span> 
 <p class="level0"><a name="-3"></a><span class="nroffip">-3, --sslv3</span> 
-<p class="level1">(SSL) Forces curl to use SSL version 3 when negotiating with a remote SSL server. 
+<p class="level1">(SSL) Forces curl to use SSL version 3 when negotiating with a remote SSL server. Sometimes curl is built without SSLv3 support. 
 <p class="level0"><a name="-4"></a><span class="nroffip">-4, --ipv4</span> 
 <p class="level0"><a name="-4"></a><span class="nroffip">-4, --ipv4</span> 
-<p class="level1">If curl is capable of resolving an address to multiple IP versions (which it is if it is IPv6-capable), this option tells curl to resolve names to IPv4 addresses only
+<p class="level1">This option tells curl to resolve names to IPv4 addresses only, and not for example try IPv6
 <p class="level0"><a name="-6"></a><span class="nroffip">-6, --ipv6</span> 
 <p class="level0"><a name="-6"></a><span class="nroffip">-6, --ipv6</span> 
-<p class="level1">If curl is capable of resolving an address to multiple IP versions (which it is if it is IPv6-capable), this option tells curl to resolve names to IPv6 addresses only
+<p class="level1">This option tells curl to resolve names to IPv6 addresses only, and not for example try IPv4
 <p class="level0"><a name="-a"></a><span class="nroffip">-a, --append</span> 
 <p class="level0"><a name="-a"></a><span class="nroffip">-a, --append</span> 
-<p class="level1">(FTP/SFTP) When used in an upload, this will tell curl to append to the target file instead of overwriting it. If the file doesn't exist, it will be created. Note that this flag is ignored by some SSH servers (including OpenSSH). 
+<p class="level1">(FTP/SFTP) When used in an upload, this makes curl append to the target file instead of overwriting it. If the remote file doesn't exist, it will be created.  Note that this flag is ignored by some SFTP servers (including OpenSSH). 
 <p class="level0"><a name="-A"></a><span class="nroffip">-A, --user-agent &lt;agent string&gt;</span> 
 <p class="level1">(HTTP) Specify the User-Agent string to send to the HTTP server. Some badly done CGIs fail if this field isn't set to "Mozilla/4.0". To encode blanks in the string, surround the string with single quote marks. This can also be set with the <a class="emphasis" href="#-H">-H, --header</a> option of course. 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="-A"></a><span class="nroffip">-A, --user-agent &lt;agent string&gt;</span> 
 <p class="level1">(HTTP) Specify the User-Agent string to send to the HTTP server. Some badly done CGIs fail if this field isn't set to "Mozilla/4.0". To encode blanks in the string, surround the string with single quote marks. This can also be set with the <a class="emphasis" href="#-H">-H, --header</a> option of course. 
 <p class="level1">If this option is used several times, the last one will be used. 
@@ -93,16 +114,18 @@ p.roffit {
 <p class="level1">(HTTP) Tells curl to figure out authentication method by itself, and use the most secure one the remote site claims to support. This is done by first doing a request and checking the response-headers, thus possibly inducing an extra network round-trip. This is used instead of setting a specific authentication method, which you can do with <a class="emphasis" href="#--basic">--basic</a>, <a class="emphasis" href="#--digest">--digest</a>, <a class="emphasis" href="#--ntlm">--ntlm</a>, and <a class="emphasis" href="#--negotiate">--negotiate</a>. 
 <p class="level1">Note that using --anyauth is not recommended if you do uploads from stdin, since it may require data to be sent twice and then the client must be able to rewind. If the need should arise when uploading from stdin, the upload operation will fail. 
 <p class="level0"><a name="-b"></a><span class="nroffip">-b, --cookie &lt;name=data&gt;</span> 
 <p class="level1">(HTTP) Tells curl to figure out authentication method by itself, and use the most secure one the remote site claims to support. This is done by first doing a request and checking the response-headers, thus possibly inducing an extra network round-trip. This is used instead of setting a specific authentication method, which you can do with <a class="emphasis" href="#--basic">--basic</a>, <a class="emphasis" href="#--digest">--digest</a>, <a class="emphasis" href="#--ntlm">--ntlm</a>, and <a class="emphasis" href="#--negotiate">--negotiate</a>. 
 <p class="level1">Note that using --anyauth is not recommended if you do uploads from stdin, since it may require data to be sent twice and then the client must be able to rewind. If the need should arise when uploading from stdin, the upload operation will fail. 
 <p class="level0"><a name="-b"></a><span class="nroffip">-b, --cookie &lt;name=data&gt;</span> 
-<p class="level1">(HTTP) Pass the data to the HTTP server as a cookie. It is supposedly the data previously received from the server in a "Set-Cookie:" line. The data should be in the format "NAME1=VALUE1; NAME2=VALUE2". 
+<p class="level1">(HTTP) Pass the data to the HTTP server as a cookie. It is supposedly the data previously received from the server in a "Set-Cookie:" line.  The data should be in the format "NAME1=VALUE1; NAME2=VALUE2". 
 <p class="level1">If no '=' symbol is used in the line, it is treated as a filename to use to read previously stored cookie lines from, which should be used in this session if they match. Using this method also activates the "cookie parser" which will make curl record incoming cookies too, which may be handy if you're using this in combination with the <a class="emphasis" href="#-L">-L, --location</a> option. The file format of the file to read cookies from should be plain HTTP headers or the Netscape/Mozilla cookie file format. 
 <p class="level1">If no '=' symbol is used in the line, it is treated as a filename to use to read previously stored cookie lines from, which should be used in this session if they match. Using this method also activates the "cookie parser" which will make curl record incoming cookies too, which may be handy if you're using this in combination with the <a class="emphasis" href="#-L">-L, --location</a> option. The file format of the file to read cookies from should be plain HTTP headers or the Netscape/Mozilla cookie file format. 
-<p class="level1"><span Class="bold">NOTE</span> that the file specified with <a class="emphasis" href="#-b">-b, --cookie</a> is only used as input. No cookies will be stored in the file. To store cookies, use the <a class="emphasis" href="#-c">-c, --cookie-jar</a> option or you could even save the HTTP headers to a file using <a class="emphasis" href="#-D">-D, --dump-header</a>! 
+<p class="level1">The file specified with <a class="emphasis" href="#-b">-b, --cookie</a> is only used as input. No cookies will be written to the file. To store cookies, use the <a class="emphasis" href="#-c">-c, --cookie-jar</a> option. 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="-B"></a><span class="nroffip">-B, --use-ascii</span> 
 <p class="level1">(FTP/LDAP) Enable ASCII transfer. For FTP, this can also be enforced by using an URL that ends with ";type=A". This option causes data sent to stdout to be in text mode for win32 systems. 
 <p class="level0"><a name="--basic"></a><span class="nroffip">--basic</span> 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="-B"></a><span class="nroffip">-B, --use-ascii</span> 
 <p class="level1">(FTP/LDAP) Enable ASCII transfer. For FTP, this can also be enforced by using an URL that ends with ";type=A". This option causes data sent to stdout to be in text mode for win32 systems. 
 <p class="level0"><a name="--basic"></a><span class="nroffip">--basic</span> 
-<p class="level1">(HTTP) Tells curl to use HTTP Basic authentication. This is the default and this option is usually pointless, unless you use it to override a previously set option that sets a different authentication method (such as <a class="emphasis" href="#--ntlm">--ntlm</a>, <a class="emphasis" href="#--digest">--digest</a>, or <a class="emphasis" href="#--negotiate">--negotiate</a>). 
+<p class="level1">(HTTP) Tells curl to use HTTP Basic authentication with the remote host. This is the default and this option is usually pointless, unless you use it to override a previously set option that sets a different authentication method (such as <a class="emphasis" href="#--ntlm">--ntlm</a>, <a class="emphasis" href="#--digest">--digest</a>, or <a class="emphasis" href="#--negotiate">--negotiate</a>). 
+<p class="level1">Used together with <a class="emphasis" href="#-u">-u, --user</a> and <a class="emphasis" href="#-x">-x, --proxy</a>. 
+<p class="level1">See also <a class="emphasis" href="#--proxy-basic">--proxy-basic</a>. 
 <p class="level0"><a name="-c"></a><span class="nroffip">-c, --cookie-jar &lt;file name&gt;</span> 
 <p class="level0"><a name="-c"></a><span class="nroffip">-c, --cookie-jar &lt;file name&gt;</span> 
-<p class="level1">(HTTP) Specify to which file you want curl to write all cookies after a completed operation. Curl writes all cookies previously read from a specified file as well as all cookies received from remote server(s). If no cookies are known, no file will be written. The file will be written using the Netscape cookie file format. If you set the file name to a single dash, "-", the cookies will be written to stdout. 
+<p class="level1">(HTTP) Specify to which file you want curl to write all cookies after a completed operation. Curl writes all cookies previously read from a specified file as well as all cookies received from remote server(s). If no cookies are known, no data will be written. The file will be written using the Netscape cookie file format. If you set the file name to a single dash, "-", the cookies will be written to stdout. 
 <p class="level1">This command line option will activate the cookie engine that makes curl record and use cookies. Another way to activate it is to use the <span class="emphasis">-b, --cookie</span> option. 
 <p class="level1">If the cookie jar can't be created or written to, the whole curl operation won't fail or even report an error clearly. Using -v will get a warning displayed, but that is the only visible feedback you get about this possibly lethal situation. 
 <p class="level1">If this option is used several times, the last specified file name will be used. 
 <p class="level1">This command line option will activate the cookie engine that makes curl record and use cookies. Another way to activate it is to use the <span class="emphasis">-b, --cookie</span> option. 
 <p class="level1">If the cookie jar can't be created or written to, the whole curl operation won't fail or even report an error clearly. Using -v will get a warning displayed, but that is the only visible feedback you get about this possibly lethal situation. 
 <p class="level1">If this option is used several times, the last specified file name will be used. 
@@ -112,18 +135,20 @@ p.roffit {
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="--ciphers"></a><span class="nroffip">--ciphers &lt;list of ciphers&gt;</span> 
 <p class="level1">(SSL) Specifies which ciphers to use in the connection. The list of ciphers must specify valid ciphers. Read up on SSL cipher list details on this URL: <span Class="emphasis"><a href="http://www.openssl.org/docs/apps/ciphers.html">http://www.openssl.org/docs/apps/ciphers.html</a></span> 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="--ciphers"></a><span class="nroffip">--ciphers &lt;list of ciphers&gt;</span> 
 <p class="level1">(SSL) Specifies which ciphers to use in the connection. The list of ciphers must specify valid ciphers. Read up on SSL cipher list details on this URL: <span Class="emphasis"><a href="http://www.openssl.org/docs/apps/ciphers.html">http://www.openssl.org/docs/apps/ciphers.html</a></span> 
-<p class="level1">NSS ciphers are done differently than OpenSSL and GnuTLS. The full list of NSS ciphers is in the NSSCipherSuite entry at this URL: <span Class="emphasis"><a href="http://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html">http://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html</a>#Directives</span> 
+<p class="level1">NSS ciphers are done differently than OpenSSL and GnuTLS. The full list of NSS ciphers is in the NSSCipherSuite entry at this URL: <span Class="emphasis"><a href="http://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html#Directives">http://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html#Directives</a></span> 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="--compressed"></a><span class="nroffip">--compressed</span> 
 <p class="level1">(HTTP) Request a compressed response using one of the algorithms curl supports, and save the uncompressed document.  If this option is used and the server sends an unsupported encoding, curl will report an error. 
 <p class="level0"><a name="--connect-timeout"></a><span class="nroffip">--connect-timeout &lt;seconds&gt;</span> 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="--compressed"></a><span class="nroffip">--compressed</span> 
 <p class="level1">(HTTP) Request a compressed response using one of the algorithms curl supports, and save the uncompressed document.  If this option is used and the server sends an unsupported encoding, curl will report an error. 
 <p class="level0"><a name="--connect-timeout"></a><span class="nroffip">--connect-timeout &lt;seconds&gt;</span> 
-<p class="level1">Maximum time in seconds that you allow the connection to the server to take. This only limits the connection phase, once curl has connected this option is of no more use.  Since 7.32.0, this option accepts decimal values, but the actual timeout will decrease in accuracy as the specified timeout increases in decimal precision. See also the <a class="emphasis" href="#-m">-m, --max-time</a> option. 
+<p class="level1">Maximum time in seconds that you allow curl's connection to take.  This only limits the connection phase, so if curl connects within the given period it will continue - if not it will exit.  Since version 7.32.0, this option accepts decimal values. 
+<p class="level1">See also the <a class="emphasis" href="#-m">-m, --max-time</a> option. 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="--create-dirs"></a><span class="nroffip">--create-dirs</span> 
 <p class="level1">When used in conjunction with the <a class="emphasis" href="#-o">-o</a> option, curl will create the necessary local directory hierarchy as needed. This option creates the dirs mentioned with the <a class="emphasis" href="#-o">-o</a> option, nothing else. If the <a class="emphasis" href="#-o">-o</a> file name uses no dir or if the dirs it mentions already exist, no dir will be created. 
 <p class="level1">To create remote directories when using FTP or SFTP, try <a class="emphasis" href="#--ftp-create-dirs">--ftp-create-dirs</a>. 
 <p class="level0"><a name="--crlf"></a><span class="nroffip">--crlf</span> 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="--create-dirs"></a><span class="nroffip">--create-dirs</span> 
 <p class="level1">When used in conjunction with the <a class="emphasis" href="#-o">-o</a> option, curl will create the necessary local directory hierarchy as needed. This option creates the dirs mentioned with the <a class="emphasis" href="#-o">-o</a> option, nothing else. If the <a class="emphasis" href="#-o">-o</a> file name uses no dir or if the dirs it mentions already exist, no dir will be created. 
 <p class="level1">To create remote directories when using FTP or SFTP, try <a class="emphasis" href="#--ftp-create-dirs">--ftp-create-dirs</a>. 
 <p class="level0"><a name="--crlf"></a><span class="nroffip">--crlf</span> 
-<p class="level1">(FTP) Convert LF to CRLF in upload. Useful for MVS (OS/390). 
+<p class="level1">Convert LF to CRLF in upload. Useful for MVS (OS/390). 
+<p class="level1">(SMTP added in 7.40.0) 
 <p class="level0"><a name="--crlfile"></a><span class="nroffip">--crlfile &lt;file&gt;</span> 
 <p class="level1">(HTTPS/FTPS) Provide a file using PEM format with a Certificate Revocation List that may specify peer certificates that are to be considered revoked. 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="--crlfile"></a><span class="nroffip">--crlfile &lt;file&gt;</span> 
 <p class="level1">(HTTPS/FTPS) Provide a file using PEM format with a Certificate Revocation List that may specify peer certificates that are to be considered revoked. 
 <p class="level1">If this option is used several times, the last one will be used. 
@@ -132,18 +157,17 @@ p.roffit {
 <p class="level1">(HTTP) Sends the specified data in a POST request to the HTTP server, in the same way that a browser does when a user has filled in an HTML form and presses the submit button. This will cause curl to pass the data to the server using the content-type application/x-www-form-urlencoded.  Compare to <a class="emphasis" href="#-F">-F, --form</a>. 
 <p class="level1"><a class="emphasis" href="#-d">-d, --data</a> is the same as <a class="emphasis" href="#--data-ascii">--data-ascii</a>. To post data purely binary, you should instead use the <a class="emphasis" href="#--data-binary">--data-binary</a> option. To URL-encode the value of a form field you may use <a class="emphasis" href="#--data-urlencode">--data-urlencode</a>. 
 <p class="level1">If any of these options is used more than once on the same command line, the data pieces specified will be merged together with a separating &-symbol. Thus, using '-d name=daniel -d skill=lousy' would generate a post chunk that looks like 'name=daniel&skill=lousy'. 
 <p class="level1">(HTTP) Sends the specified data in a POST request to the HTTP server, in the same way that a browser does when a user has filled in an HTML form and presses the submit button. This will cause curl to pass the data to the server using the content-type application/x-www-form-urlencoded.  Compare to <a class="emphasis" href="#-F">-F, --form</a>. 
 <p class="level1"><a class="emphasis" href="#-d">-d, --data</a> is the same as <a class="emphasis" href="#--data-ascii">--data-ascii</a>. To post data purely binary, you should instead use the <a class="emphasis" href="#--data-binary">--data-binary</a> option. To URL-encode the value of a form field you may use <a class="emphasis" href="#--data-urlencode">--data-urlencode</a>. 
 <p class="level1">If any of these options is used more than once on the same command line, the data pieces specified will be merged together with a separating &-symbol. Thus, using '-d name=daniel -d skill=lousy' would generate a post chunk that looks like 'name=daniel&skill=lousy'. 
-<p class="level1">If you start the data with the letter @, the rest should be a file name to read the data from, or - if you want curl to read the data from stdin.  The contents of the file must already be URL-encoded. Multiple files can also be specified. Posting data from a file named 'foobar' would thus be done with <span Class="emphasis">--data @foobar</span>
+<p class="level1">If you start the data with the letter @, the rest should be a file name to read the data from, or - if you want curl to read the data from stdin. Multiple files can also be specified. Posting data from a file named 'foobar' would thus be done with <span Class="emphasis">--data</span> @foobar. When --data is told to read from a file like that, carriage returns and newlines will be stripped out
 <p class="level0"><a name="-D"></a><span class="nroffip">-D, --dump-header &lt;file&gt;</span> 
 <p class="level1">Write the protocol headers to the specified file. 
 <p class="level0"><a name="-D"></a><span class="nroffip">-D, --dump-header &lt;file&gt;</span> 
 <p class="level1">Write the protocol headers to the specified file. 
-<p class="level1">This option is handy to use when you want to store the headers that an HTTP site sends to you. Cookies from the headers could then be read in a second curl invocation by using the <a class="emphasis" href="#-b">-b, --cookie</a> option! The <a class="emphasis" href="#-c">-c, --cookie-jar</a> option is however a better way to store cookies. 
+<p class="level1">This option is handy to use when you want to store the headers that an HTTP site sends to you. Cookies from the headers could then be read in a second curl invocation by using the <a class="emphasis" href="#-b">-b, --cookie</a> option! The <a class="emphasis" href="#-c">-c, --cookie-jar</a> option is a better way to store cookies. 
 <p class="level1">When used in FTP, the FTP server response lines are considered being "headers" and thus are saved there. 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level1">When used in FTP, the FTP server response lines are considered being "headers" and thus are saved there. 
 <p class="level1">If this option is used several times, the last one will be used. 
-<p class="level1">
 <p class="level0"><a name="--data-ascii"></a><span class="nroffip">--data-ascii &lt;data&gt;</span> 
 <p class="level1">See <a class="emphasis" href="#-d">-d, --data</a>. 
 <p class="level0"><a name="--data-binary"></a><span class="nroffip">--data-binary &lt;data&gt;</span> 
 <p class="level1">(HTTP) This posts data exactly as specified with no extra processing whatsoever. 
 <p class="level0"><a name="--data-ascii"></a><span class="nroffip">--data-ascii &lt;data&gt;</span> 
 <p class="level1">See <a class="emphasis" href="#-d">-d, --data</a>. 
 <p class="level0"><a name="--data-binary"></a><span class="nroffip">--data-binary &lt;data&gt;</span> 
 <p class="level1">(HTTP) This posts data exactly as specified with no extra processing whatsoever. 
-<p class="level1">If you start the data with the letter @, the rest should be a filename.  Data is posted in a similar manner as <a class="emphasis" href="#--data-ascii">--data-ascii</a> does, except that newlines are preserved and conversions are never done. 
+<p class="level1">If you start the data with the letter @, the rest should be a filename.  Data is posted in a similar manner as <a class="emphasis" href="#--data-ascii">--data-ascii</a> does, except that newlines and carriage returns are preserved and conversions are never done. 
 <p class="level1">If this option is used several times, the ones following the first will append data as described in <a class="emphasis" href="#-d">-d, --data</a>. 
 <p class="level0"><a name="--data-urlencode"></a><span class="nroffip">--data-urlencode &lt;data&gt;</span> 
 <p class="level1">(HTTP) This posts data, similar to the other --data options with the exception that this performs URL-encoding. (Added in 7.18.0) 
 <p class="level1">If this option is used several times, the ones following the first will append data as described in <a class="emphasis" href="#-d">-d, --data</a>. 
 <p class="level0"><a name="--data-urlencode"></a><span class="nroffip">--data-urlencode &lt;data&gt;</span> 
 <p class="level1">(HTTP) This posts data, similar to the other --data options with the exception that this performs URL-encoding. (Added in 7.18.0) 
@@ -181,13 +205,25 @@ p.roffit {
 <p class="level1">(FTP) Tell curl to disable the use of the EPSV command when doing passive FTP transfers. Curl will normally always first attempt to use EPSV before PASV, but with this option, it will not try using EPSV. 
 <p class="level1"><span Class="bold">--epsv</span> can be used to explicitly enable EPSV again and <span Class="bold">--no-epsv</span> is an alias for <a class="bold" href="#--disable-epsv">--disable-epsv</a>. 
 <p class="level1">Disabling EPSV only changes the passive behavior. If you want to switch to active mode you need to use <a class="emphasis" href="#-P">-P, --ftp-port</a>. 
 <p class="level1">(FTP) Tell curl to disable the use of the EPSV command when doing passive FTP transfers. Curl will normally always first attempt to use EPSV before PASV, but with this option, it will not try using EPSV. 
 <p class="level1"><span Class="bold">--epsv</span> can be used to explicitly enable EPSV again and <span Class="bold">--no-epsv</span> is an alias for <a class="bold" href="#--disable-epsv">--disable-epsv</a>. 
 <p class="level1">Disabling EPSV only changes the passive behavior. If you want to switch to active mode you need to use <a class="emphasis" href="#-P">-P, --ftp-port</a>. 
+<p class="level0"><a name="--dns-interface"></a><span class="nroffip">--dns-interface &lt;interface&gt;</span> 
+<p class="level1">Tell curl to send outgoing DNS requests through &lt;interface&gt;. This option is a counterpart to <a class="emphasis" href="#--interface">--interface</a> (which does not affect DNS). The supplied string must be an interface name (not an address). 
+<p class="level1">This option requires that libcurl was built with a resolver backend that supports this operation. The c-ares backend is the only such one. (Added in 7.33.0) 
+<p class="level0"><a name="--dns-ipv4-addr"></a><span class="nroffip">--dns-ipv4-addr &lt;ip-address&gt;</span> 
+<p class="level1">Tell curl to bind to &lt;ip-address&gt; when making IPv4 DNS requests, so that the DNS requests originate from this address. The argument should be a single IPv4 address. 
+<p class="level1">This option requires that libcurl was built with a resolver backend that supports this operation. The c-ares backend is the only such one.  (Added in 7.33.0) 
+<p class="level0"><a name="--dns-ipv6-addr"></a><span class="nroffip">--dns-ipv6-addr &lt;ip-address&gt;</span> 
+<p class="level1">Tell curl to bind to &lt;ip-address&gt; when making IPv6 DNS requests, so that the DNS requests originate from this address. The argument should be a single IPv6 address. 
+<p class="level1">This option requires that libcurl was built with a resolver backend that supports this operation. The c-ares backend is the only such one.  (Added in 7.33.0) 
+<p class="level0"><a name="--dns-servers"></a><span class="nroffip">--dns-servers &lt;ip-address,ip-address&gt;</span> 
+<p class="level1">Set the list of DNS servers to be used instead of the system default. The list of IP addresses should be separated with commas. Port numbers may also optionally be given as <span Class="emphasis">:&lt;port-number&gt;</span> after each IP address. 
+<p class="level1">This option requires that libcurl was built with a resolver backend that supports this operation. The c-ares backend is the only such one.  (Added in 7.33.0) 
 <p class="level0"><a name="-e"></a><span class="nroffip">-e, --referer &lt;URL&gt;</span> 
 <p class="level0"><a name="-e"></a><span class="nroffip">-e, --referer &lt;URL&gt;</span> 
-<p class="level1">(HTTP) Sends the "Referer Page" information to the HTTP server. This can also be set with the <a class="emphasis" href="#-H">-H, --header</a> flag of course.  When used with <a class="emphasis" href="#-L">-L, --location</a> you can append ";auto" to the --referer URL to make curl automatically set the previous URL when it follows a Location: header. The ";auto" string can be used alone, even if you don't set an initial --referer. 
+<p class="level1">(HTTP) Sends the "Referrer Page" information to the HTTP server. This can also be set with the <a class="emphasis" href="#-H">-H, --header</a> flag of course.  When used with <a class="emphasis" href="#-L">-L, --location</a> you can append ";auto" to the --referer URL to make curl automatically set the previous URL when it follows a Location: header. The ";auto" string can be used alone, even if you don't set an initial --referer. 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="-E"></a><span class="nroffip">-E, --cert &lt;certificate[:password]&gt;</span> 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="-E"></a><span class="nroffip">-E, --cert &lt;certificate[:password]&gt;</span> 
-<p class="level1">(SSL) Tells curl to use the specified client certificate file when getting a file with HTTPS, FTPS or another SSL-based protocol. The certificate must be in PEM format.  If the optional password isn't specified, it will be queried for on the terminal. Note that this option assumes a "certificate" file that is the private key and the private certificate concatenated! See <span Class="emphasis">--cert</span> and <a class="emphasis" href="#--key">--key</a> to specify them independently. 
+<p class="level1">(SSL) Tells curl to use the specified client certificate file when getting a file with HTTPS, FTPS or another SSL-based protocol. The certificate must be in PKCS#12 format if using Secure Transport, or PEM format if using any other engine.  If the optional password isn't specified, it will be queried for on the terminal. Note that this option assumes a "certificate" file that is the private key and the private certificate concatenated! See <span Class="emphasis">--cert</span> and <a class="emphasis" href="#--key">--key</a> to specify them independently. 
 <p class="level1">If curl is built against the NSS SSL library then this option can tell curl the nickname of the certificate to use within the NSS database defined by the environment variable SSL_DIR (or by default /etc/pki/nssdb). If the NSS PEM PKCS#11 module (libnsspem.so) is available then PEM files may be loaded. If you want to use a file from the current directory, please precede it with "./" prefix, in order to avoid confusion with a nickname.  If the nickname contains ":", it needs to be preceded by "\" so that it is not recognized as password delimiter.  If the nickname contains "\", it needs to be escaped as "\\" so that it is not recognized as an escape character. 
 <p class="level1">If curl is built against the NSS SSL library then this option can tell curl the nickname of the certificate to use within the NSS database defined by the environment variable SSL_DIR (or by default /etc/pki/nssdb). If the NSS PEM PKCS#11 module (libnsspem.so) is available then PEM files may be loaded. If you want to use a file from the current directory, please precede it with "./" prefix, in order to avoid confusion with a nickname.  If the nickname contains ":", it needs to be preceded by "\" so that it is not recognized as password delimiter.  If the nickname contains "\", it needs to be escaped as "\\" so that it is not recognized as an escape character. 
-<p class="level1">(iOS and Mac OS X only) If curl is built against Secure Transport, then the certificate string must match the name of a certificate that's in the system or user keychain. The private key corresponding to the certificate, and certificate chain (if any),  must also be present in the keychain
+<p class="level1">(iOS and Mac OS X only) If curl is built against Secure Transport, then the certificate string can either be the name of a certificate/private key in the system or user keychain, or the path to a PKCS#12-encoded certificate and private key. If you want to use a file from the current directory, please precede it with "./" prefix, in order to avoid confusion with a nickname
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="--engine"></a><span class="nroffip">--engine &lt;name&gt;</span> 
 <p class="level1">Select the OpenSSL crypto engine to use for cipher operations. Use <a class="emphasis" href="#--engine">--engine list</a> to print a list of build-time supported engines. Note that not all (or none) of the engines may be available at run-time. 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="--engine"></a><span class="nroffip">--engine &lt;name&gt;</span> 
 <p class="level1">Select the OpenSSL crypto engine to use for cipher operations. Use <a class="emphasis" href="#--engine">--engine list</a> to print a list of build-time supported engines. Note that not all (or none) of the engines may be available at run-time. 
@@ -207,6 +243,11 @@ p.roffit {
 <p class="level0"><a name="--capath"></a><span class="nroffip">--capath &lt;CA certificate directory&gt;</span> 
 <p class="level1">(SSL) Tells curl to use the specified certificate directory to verify the peer. Multiple paths can be provided by separating them with ":" (e.g. "path1:path2:path3"). The certificates must be in PEM format, and if curl is built against OpenSSL, the directory must have been processed using the c_rehash utility supplied with OpenSSL. Using <a class="emphasis" href="#--capath">--capath</a> can allow OpenSSL-powered curl to make SSL-connections much more efficiently than using <a class="emphasis" href="#--cacert">--cacert</a> if the <a class="emphasis" href="#--cacert">--cacert</a> file contains many CA certificates. 
 <p class="level1">If this option is set, the default capath value will be ignored, and if it is used several times, the last one will be used. 
 <p class="level0"><a name="--capath"></a><span class="nroffip">--capath &lt;CA certificate directory&gt;</span> 
 <p class="level1">(SSL) Tells curl to use the specified certificate directory to verify the peer. Multiple paths can be provided by separating them with ":" (e.g. "path1:path2:path3"). The certificates must be in PEM format, and if curl is built against OpenSSL, the directory must have been processed using the c_rehash utility supplied with OpenSSL. Using <a class="emphasis" href="#--capath">--capath</a> can allow OpenSSL-powered curl to make SSL-connections much more efficiently than using <a class="emphasis" href="#--cacert">--cacert</a> if the <a class="emphasis" href="#--cacert">--cacert</a> file contains many CA certificates. 
 <p class="level1">If this option is set, the default capath value will be ignored, and if it is used several times, the last one will be used. 
+<p class="level0"><a name="--pinnedpubkey"></a><span class="nroffip">--pinnedpubkey &lt;pinned public key&gt;</span> 
+<p class="level1">(SSL) Tells curl to use the specified public key file to verify the peer. The file must contain a single public key in PEM or DER format. 
+<p class="level1">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. 
+<p class="level1">This is currently only implemented in the OpenSSL, GnuTLS and GSKit backends. 
+<p class="level1">If this option is used several times, the last one will be used. (Added in 7.39.0) 
 <p class="level0"><a name="-f"></a><span class="nroffip">-f, --fail</span> 
 <p class="level1">(HTTP) Fail silently (no output at all) on server errors. This is mostly done to better enable scripts etc to better deal with failed attempts. In normal cases when an HTTP server fails to deliver a document, it returns an HTML document stating so (which often also describes why and more). This flag will prevent curl from outputting that and return error 22. 
 <p class="level1">This method is not fail-safe and there are occasions where non-successful response codes will slip through, especially when authentication is involved (response codes 401 and 407). 
 <p class="level0"><a name="-f"></a><span class="nroffip">-f, --fail</span> 
 <p class="level1">(HTTP) Fail silently (no output at all) on server errors. This is mostly done to better enable scripts etc to better deal with failed attempts. In normal cases when an HTTP server fails to deliver a document, it returns an HTML document stating so (which often also describes why and more). This flag will prevent curl from outputting that and return error 22. 
 <p class="level1">This method is not fail-safe and there are occasions where non-successful response codes will slip through, especially when authentication is involved (response codes 401 and 407). 
@@ -265,13 +306,16 @@ p.roffit {
 <p class="level0"><a name="-g"></a><span class="nroffip">-g, --globoff</span> 
 <p class="level1">This option switches off the "URL globbing parser". When you set this option, you can specify URLs that contain the letters {}[] without having them being interpreted by curl itself. Note that these letters are not normal legal URL contents but they should be encoded according to the URI standard. 
 <p class="level0"><a name="-G"></a><span class="nroffip">-G, --get</span> 
 <p class="level0"><a name="-g"></a><span class="nroffip">-g, --globoff</span> 
 <p class="level1">This option switches off the "URL globbing parser". When you set this option, you can specify URLs that contain the letters {}[] without having them being interpreted by curl itself. Note that these letters are not normal legal URL contents but they should be encoded according to the URI standard. 
 <p class="level0"><a name="-G"></a><span class="nroffip">-G, --get</span> 
-<p class="level1">When used, this option will make all data specified with <a class="emphasis" href="#-d">-d, --data</a> or <a class="emphasis" href="#--data-binary">--data-binary</a> to be used in an HTTP GET request instead of the POST request that otherwise would be used. The data will be appended to the URL with a '?' separator. 
+<p class="level1">When used, this option will make all data specified with <a class="emphasis" href="#-d">-d, --data</a>, <a class="emphasis" href="#--data-binary">--data-binary</a> or <a class="emphasis" href="#--data-urlencode">--data-urlencode</a> to be used in an HTTP GET request instead of the POST request that otherwise would be used. The data will be appended to the URL with a '?' separator. 
 <p class="level1">If used in combination with -I, the POST data will instead be appended to the URL with a HEAD request. 
 <p class="level1">If this option is used several times, only the first one is used. This is because undoing a GET doesn't make sense, but you should then instead enforce the alternative method you prefer. 
 <p class="level0"><a name="-H"></a><span class="nroffip">-H, --header &lt;header&gt;</span> 
 <p class="level1">If used in combination with -I, the POST data will instead be appended to the URL with a HEAD request. 
 <p class="level1">If this option is used several times, only the first one is used. This is because undoing a GET doesn't make sense, but you should then instead enforce the alternative method you prefer. 
 <p class="level0"><a name="-H"></a><span class="nroffip">-H, --header &lt;header&gt;</span> 
-<p class="level1">(HTTP) Extra header to use when getting a web page. You may specify any number of extra headers. Note that if you should add a custom header that has the same name as one of the internal ones curl would use, your externally set header will be used instead of the internal one. This allows you to make even trickier stuff than curl would normally do. You should not replace internally set headers without knowing perfectly well what you're doing. Remove an internal header by giving a replacement without content on the right side of the colon, as in: -H "Host:". If you send the custom header with no-value then its header must be terminated with a semicolon, such as -H "X-Custom-Header;" to send "X-Custom-Header:". 
+<p class="level1">(HTTP) Extra header to include in the request when sending HTTP to a server. You may specify any number of extra headers. Note that if you should add a custom header that has the same name as one of the internal ones curl would use, your externally set header will be used instead of the internal one. This allows you to make even trickier stuff than curl would normally do. You should not replace internally set headers without knowing perfectly well what you're doing. Remove an internal header by giving a replacement without content on the right side of the colon, as in: -H "Host:". If you send the custom header with no-value then its header must be terminated with a semicolon, such as -H "X-Custom-Header;" to send "X-Custom-Header:". 
 <p class="level1">curl will make sure that each header you add/replace is sent with the proper end-of-line marker, you should thus <span Class="bold">not</span> add that as a part of the header content: do not add newlines or carriage returns, they will only mess things up for you. 
 <p class="level1">See also the <a class="emphasis" href="#-A">-A, --user-agent</a> and <a class="emphasis" href="#-e">-e, --referer</a> options. 
 <p class="level1">curl will make sure that each header you add/replace is sent with the proper end-of-line marker, you should thus <span Class="bold">not</span> add that as a part of the header content: do not add newlines or carriage returns, they will only mess things up for you. 
 <p class="level1">See also the <a class="emphasis" href="#-A">-A, --user-agent</a> and <a class="emphasis" href="#-e">-e, --referer</a> options. 
+<p class="level1">Starting in 7.37.0, you need <a class="emphasis" href="#--proxy-header">--proxy-header</a> to send custom headers intended for a proxy. 
+<p class="level1">Example: 
+<p class="level1"># curl -H "X-First-Name: Joe" <a href="http://192.168.0.1/">http://192.168.0.1/</a> 
 <p class="level1">This option can be used multiple times to add/replace/remove multiple headers. 
 <p class="level0"><a name="--hostpubmd5"></a><span class="nroffip">--hostpubmd5 &lt;md5&gt;</span> 
 <p class="level1">(SCP/SFTP) Pass a string containing 32 hexadecimal digits. The string should be the 128 bit MD5 checksum of the remote host's public key, curl will refuse the connection with the host unless the md5sums match. (Added in 7.17.1) 
 <p class="level1">This option can be used multiple times to add/replace/remove multiple headers. 
 <p class="level0"><a name="--hostpubmd5"></a><span class="nroffip">--hostpubmd5 &lt;md5&gt;</span> 
 <p class="level1">(SCP/SFTP) Pass a string containing 32 hexadecimal digits. The string should be the 128 bit MD5 checksum of the remote host's public key, curl will refuse the connection with the host unless the md5sums match. (Added in 7.17.1) 
@@ -289,18 +333,20 @@ p.roffit {
 <p class="level1">(HTTP) When curl is told to read cookies from a given file, this option will make it discard all "session cookies". This will basically have the same effect as if a new session is started. Typical browsers always discard session cookies when they're closed down. 
 <p class="level0"><a name="-J"></a><span class="nroffip">-J, --remote-header-name</span> 
 <p class="level1">(HTTP) This option tells the <a class="emphasis" href="#-O">-O, --remote-name</a> option to use the server-specified Content-Disposition filename instead of extracting a filename from the URL. 
 <p class="level1">(HTTP) When curl is told to read cookies from a given file, this option will make it discard all "session cookies". This will basically have the same effect as if a new session is started. Typical browsers always discard session cookies when they're closed down. 
 <p class="level0"><a name="-J"></a><span class="nroffip">-J, --remote-header-name</span> 
 <p class="level1">(HTTP) This option tells the <a class="emphasis" href="#-O">-O, --remote-name</a> option to use the server-specified Content-Disposition filename instead of extracting a filename from the URL. 
+<p class="level1">There's no attempt to decode %-sequences (yet) in the provided file name, so this option may provide you with rather unexpected file names. 
 <p class="level0"><a name="-k"></a><span class="nroffip">-k, --insecure</span> 
 <p class="level1">(SSL) This option explicitly allows curl to perform "insecure" SSL connections and transfers. All SSL connections are attempted to be made secure by using the CA certificate bundle installed by default. This makes all connections considered "insecure" fail unless <a class="emphasis" href="#-k">-k, --insecure</a> is used. 
 <p class="level1">See this online resource for further details: <span Class="bold"><a href="http://curl.haxx.se/docs/sslcerts.html">http://curl.haxx.se/docs/sslcerts.html</a></span> 
 <p class="level0"><a name="-K"></a><span class="nroffip">-K, --config &lt;config file&gt;</span> 
 <p class="level0"><a name="-k"></a><span class="nroffip">-k, --insecure</span> 
 <p class="level1">(SSL) This option explicitly allows curl to perform "insecure" SSL connections and transfers. All SSL connections are attempted to be made secure by using the CA certificate bundle installed by default. This makes all connections considered "insecure" fail unless <a class="emphasis" href="#-k">-k, --insecure</a> is used. 
 <p class="level1">See this online resource for further details: <span Class="bold"><a href="http://curl.haxx.se/docs/sslcerts.html">http://curl.haxx.se/docs/sslcerts.html</a></span> 
 <p class="level0"><a name="-K"></a><span class="nroffip">-K, --config &lt;config file&gt;</span> 
-<p class="level1">Specify which config file to read curl arguments from. The config file is a text file in which command line arguments can be written which then will be used as if they were written on the actual command line. Options and their parameters must be specified on the same config file line, separated by whitespace, colon, the equals sign or any combination thereof (however, the preferred separator is the equals sign). If the parameter is to contain whitespace, the parameter must be enclosed within quotes. Within double quotes, the following escape sequences are available: \\, \", \t, \n, \r and \v. A backslash preceding any other letter is ignored. If the first column of a config line is a '#' character, the rest of the line will be treated as a comment. Only write one option per physical line in the config file. 
+<p class="level1">Specify which config file to read curl arguments from. The config file is a text file in which command line arguments can be written which then will be used as if they were written on the actual command line. 
+<p class="level1">Options and their parameters must be specified on the same config file line, separated by whitespace, colon, or the equals sign. Long option names can optionally be given in the config file without the initial double dashes and if so, the colon or equals characters can be used as separators. If the option is specified with one or two dashes, there can be no colon or equals character between the option and its parameter. 
+<p class="level1">If the parameter is to contain whitespace, the parameter must be enclosed within quotes. Within double quotes, the following escape sequences are available: \\, \", \t, \n, \r and \v. A backslash preceding any other letter is ignored. If the first column of a config line is a '#' character, the rest of the line will be treated as a comment. Only write one option per physical line in the config file. 
 <p class="level1">Specify the filename to -K, --config as '-' to make curl read the file from stdin. 
 <p class="level1">Note that to be able to specify a URL in the config file, you need to specify it using the <a class="emphasis" href="#--url">--url</a> option, and not by simply writing the URL on its own line. So, it could look similar to this: 
 <p class="level1">url = "<a href="http://curl.haxx.se/docs/">http://curl.haxx.se/docs/</a>" 
 <p class="level1">Specify the filename to -K, --config as '-' to make curl read the file from stdin. 
 <p class="level1">Note that to be able to specify a URL in the config file, you need to specify it using the <a class="emphasis" href="#--url">--url</a> option, and not by simply writing the URL on its own line. So, it could look similar to this: 
 <p class="level1">url = "<a href="http://curl.haxx.se/docs/">http://curl.haxx.se/docs/</a>" 
-<p class="level1">Long option names can optionally be given in the config file without the initial double dashes. 
 <p class="level1">When curl is invoked, it always (unless <a class="emphasis" href="#-q">-q</a> is used) checks for a default config file and uses it if found. The default config file is checked for in the following places in this order: 
 <p class="level1">When curl is invoked, it always (unless <a class="emphasis" href="#-q">-q</a> is used) checks for a default config file and uses it if found. The default config file is checked for in the following places in this order: 
-<p class="level1">1) curl tries to find the "home dir": It first checks for the CURL_HOME and then the HOME environment variables. Failing that, it uses getpwuid() on UNIX-like systems (which returns the home dir given the current user in your system). On Windows, it then checks for the APPDATA variable, or as a last resort the '%USERPROFILE%\Application Data'. 
-<p class="level1">2) On windows, if there is no _curlrc file in the home dir, it checks for one in the same dir the curl executable is placed. On UNIX-like systems, it will simply try to load .curlrc from the determined home dir. 
+<p class="level1">1) curl tries to find the "home dir": It first checks for the CURL_HOME and then the HOME environment variables. Failing that, it uses getpwuid() on Unix-like systems (which returns the home dir given the current user in your system). On Windows, it then checks for the APPDATA variable, or as a last resort the '%USERPROFILE%\Application Data'. 
+<p class="level1">2) On windows, if there is no _curlrc file in the home dir, it checks for one in the same dir the curl executable is placed. On Unix-like systems, it will simply try to load .curlrc from the determined home dir. 
 <p class="level1"><pre>
 <p class="level1"># --- Example file ---
  # this is a comment
 <p class="level1"><pre>
 <p class="level1"># --- Example file ---
  # this is a comment
@@ -320,27 +366,29 @@ p.roffit {
 <p class="level1">This option sets the time a connection needs to remain idle before sending keepalive probes and the time between individual keepalive probes. It is currently effective on operating systems offering the TCP_KEEPIDLE and TCP_KEEPINTVL socket options (meaning Linux, recent AIX, HP-UX and more). This option has no effect if <a class="emphasis" href="#--no-keepalive">--no-keepalive</a> is used. (Added in 7.18.0) 
 <p class="level1">If this option is used several times, the last one will be used. If unspecified, the option defaults to 60 seconds. 
 <p class="level0"><a name="--key"></a><span class="nroffip">--key &lt;key&gt;</span> 
 <p class="level1">This option sets the time a connection needs to remain idle before sending keepalive probes and the time between individual keepalive probes. It is currently effective on operating systems offering the TCP_KEEPIDLE and TCP_KEEPINTVL socket options (meaning Linux, recent AIX, HP-UX and more). This option has no effect if <a class="emphasis" href="#--no-keepalive">--no-keepalive</a> is used. (Added in 7.18.0) 
 <p class="level1">If this option is used several times, the last one will be used. If unspecified, the option defaults to 60 seconds. 
 <p class="level0"><a name="--key"></a><span class="nroffip">--key &lt;key&gt;</span> 
-<p class="level1">(SSL/SSH) Private key file name. Allows you to provide your private key in this separate file. 
+<p class="level1">(SSL/SSH) Private key file name. Allows you to provide your private key in this separate file. For SSH, if not specified, curl tries the following candidates in order: '~/.ssh/id_rsa', '~/.ssh/id_dsa', './id_rsa', './id_dsa'. 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="--key-type"></a><span class="nroffip">--key-type &lt;type&gt;</span> 
 <p class="level1">(SSL) Private key file type. Specify which type your <a class="emphasis" href="#--key">--key</a> provided private key is. DER, PEM, and ENG are supported. If not specified, PEM is assumed. 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="--krb"></a><span class="nroffip">--krb &lt;level&gt;</span> 
 <p class="level1">(FTP) Enable Kerberos authentication and use. The level must be entered and should be one of 'clear', 'safe', 'confidential', or 'private'. Should you use a level that is not one of these, 'private' will instead be used. 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="--key-type"></a><span class="nroffip">--key-type &lt;type&gt;</span> 
 <p class="level1">(SSL) Private key file type. Specify which type your <a class="emphasis" href="#--key">--key</a> provided private key is. DER, PEM, and ENG are supported. If not specified, PEM is assumed. 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="--krb"></a><span class="nroffip">--krb &lt;level&gt;</span> 
 <p class="level1">(FTP) Enable Kerberos authentication and use. The level must be entered and should be one of 'clear', 'safe', 'confidential', or 'private'. Should you use a level that is not one of these, 'private' will instead be used. 
-<p class="level1">This option requires a library built with kerberos4 or GSSAPI (GSS-Negotiate) support. This is not very common. Use <a class="emphasis" href="#-V">-V, --version</a> to see if your curl supports it. 
+<p class="level1">This option requires a library built with kerberos4 support. This is not very common. Use <a class="emphasis" href="#-V">-V, --version</a> to see if your curl supports it. 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="-l"></a><span class="nroffip">-l, --list-only</span> 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="-l"></a><span class="nroffip">-l, --list-only</span> 
-<p class="level1">(FTP) When listing an FTP directory, this switch forces a name-only view. Especially useful if you want to machine-parse the contents of an FTP directory since the normal directory view doesn't use a standard look or format. 
-<p class="level1">This option causes an FTP NLST command to be sent.  Some FTP servers list only files in their response to NLST; they do not include subdirectories and symbolic links. 
-<p class="level1">
+<p class="level1">(FTP) When listing an FTP directory, this switch forces a name-only view. This is especially useful if the user wants to machine-parse the contents of an FTP directory since the normal directory view doesn't use a standard look or format. When used like this, the option causes a NLST command to be sent to the server instead of LIST. 
+<p class="level1">Note: Some FTP servers list only files in their response to NLST; they do not include sub-directories and symbolic links. 
+<p class="level1">(POP3) When retrieving a specific email from POP3, this switch forces a LIST command to be performed instead of RETR. This is particularly useful if the user wants to see if a specific message id exists on the server and what size it is. 
+<p class="level1">Note: When combined with <a class="emphasis" href="#-X">-X, --request &lt;command&gt;</a>, this option can be used to send an UIDL command instead, so the user may use the email's unique identifier rather than it's message id to make the request. (Added in 7.21.5) 
 <p class="level0"><a name="-L"></a><span class="nroffip">-L, --location</span> 
 <p class="level1">(HTTP/HTTPS) If the server reports that the requested page has moved to a different location (indicated with a Location: header and a 3XX response code), this option will make curl redo the request on the new place. If used together with <a class="emphasis" href="#-i">-i, --include</a> or <a class="emphasis" href="#-I">-I, --head</a>, headers from all requested pages will be shown. When authentication is used, curl only sends its credentials to the initial host. If a redirect takes curl to a different host, it won't be able to intercept the user+password. See also <a class="emphasis" href="#--location-trusted">--location-trusted</a> on how to change this. You can limit the amount of redirects to follow by using the <a class="emphasis" href="#--max-redirs">--max-redirs</a> option. 
 <p class="level1">When curl follows a redirect and the request is not a plain GET (for example POST or PUT), it will do the following request with a GET if the HTTP response was 301, 302, or 303. If the response code was any other 3xx code, curl will re-send the following request using the same unmodified method. 
 <p class="level0"><a name="-L"></a><span class="nroffip">-L, --location</span> 
 <p class="level1">(HTTP/HTTPS) If the server reports that the requested page has moved to a different location (indicated with a Location: header and a 3XX response code), this option will make curl redo the request on the new place. If used together with <a class="emphasis" href="#-i">-i, --include</a> or <a class="emphasis" href="#-I">-I, --head</a>, headers from all requested pages will be shown. When authentication is used, curl only sends its credentials to the initial host. If a redirect takes curl to a different host, it won't be able to intercept the user+password. See also <a class="emphasis" href="#--location-trusted">--location-trusted</a> on how to change this. You can limit the amount of redirects to follow by using the <a class="emphasis" href="#--max-redirs">--max-redirs</a> option. 
 <p class="level1">When curl follows a redirect and the request is not a plain GET (for example POST or PUT), it will do the following request with a GET if the HTTP response was 301, 302, or 303. If the response code was any other 3xx code, curl will re-send the following request using the same unmodified method. 
+<p class="level1">You can tell curl to not change the non-GET request method to GET after a 30x response by using the dedicated options for that: <a class="emphasis" href="#--post301">--post301</a>, <a class="emphasis" href="#--post302">--post302</a> and <span Class="emphasis">-post303</span>. 
 <p class="level0"><a name="--libcurl"></a><span class="nroffip">--libcurl &lt;file&gt;</span> 
 <p class="level1">Append this option to any ordinary curl command line, and you will get a libcurl-using C source code written to the file that does the equivalent of what your command-line operation does! 
 <p class="level1">If this option is used several times, the last given file name will be used. (Added in 7.16.1) 
 <p class="level0"><a name="--limit-rate"></a><span class="nroffip">--limit-rate &lt;speed&gt;</span> 
 <p class="level0"><a name="--libcurl"></a><span class="nroffip">--libcurl &lt;file&gt;</span> 
 <p class="level1">Append this option to any ordinary curl command line, and you will get a libcurl-using C source code written to the file that does the equivalent of what your command-line operation does! 
 <p class="level1">If this option is used several times, the last given file name will be used. (Added in 7.16.1) 
 <p class="level0"><a name="--limit-rate"></a><span class="nroffip">--limit-rate &lt;speed&gt;</span> 
-<p class="level1">Specify the maximum transfer rate you want curl to use. This feature is useful if you have a limited pipe and you'd like your transfer not to use your entire bandwidth
+<p class="level1">Specify the maximum transfer rate you want curl to use - for both downloads and uploads. This feature is useful if you have a limited pipe and you'd like your transfer not to use your entire bandwidth. To make it slower than it otherwise would be
 <p class="level1">The given speed is measured in bytes/second, unless a suffix is appended. Appending 'k' or 'K' will count the number as kilobytes, 'm' or M' makes it megabytes, while 'g' or 'G' makes it gigabytes. Examples: 200K, 3m and 1G. 
 <p class="level1">The given rate is the average speed counted during the entire transfer. It means that curl might use higher transfer speeds in short bursts, but over time it uses no more than the given rate. 
 <p class="level1">If you also use the <a class="emphasis" href="#-Y">-Y, --speed-limit</a> option, that option will take precedence and might cripple the rate-limiting slightly, to help keeping the speed-limit logic working. 
 <p class="level1">The given speed is measured in bytes/second, unless a suffix is appended. Appending 'k' or 'K' will count the number as kilobytes, 'm' or M' makes it megabytes, while 'g' or 'G' makes it gigabytes. Examples: 200K, 3m and 1G. 
 <p class="level1">The given rate is the average speed counted during the entire transfer. It means that curl might use higher transfer speeds in short bursts, but over time it uses no more than the given rate. 
 <p class="level1">If you also use the <a class="emphasis" href="#-Y">-Y, --speed-limit</a> option, that option will take precedence and might cripple the rate-limiting slightly, to help keeping the speed-limit logic working. 
@@ -352,6 +400,10 @@ p.roffit {
 <p class="level0"><a name="-m"></a><span class="nroffip">-m, --max-time &lt;seconds&gt;</span> 
 <p class="level1">Maximum time in seconds that you allow the whole operation to take.  This is useful for preventing your batch jobs from hanging for hours due to slow networks or links going down.  Since 7.32.0, this option accepts decimal values, but the actual timeout will decrease in accuracy as the specified timeout increases in decimal precision.  See also the <a class="emphasis" href="#--connect-timeout">--connect-timeout</a> option. 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="-m"></a><span class="nroffip">-m, --max-time &lt;seconds&gt;</span> 
 <p class="level1">Maximum time in seconds that you allow the whole operation to take.  This is useful for preventing your batch jobs from hanging for hours due to slow networks or links going down.  Since 7.32.0, this option accepts decimal values, but the actual timeout will decrease in accuracy as the specified timeout increases in decimal precision.  See also the <a class="emphasis" href="#--connect-timeout">--connect-timeout</a> option. 
 <p class="level1">If this option is used several times, the last one will be used. 
+<p class="level0"><a name="--login-options"></a><span class="nroffip">--login-options &lt;options&gt;</span> 
+<p class="level1">Specify the login options to use during server authentication. 
+<p class="level1">You can use the login options to specify protocol specific options that may be used during authentication. At present only IMAP, POP3 and SMTP support login options. For more information about the login options please see <a href="http://www.ietf.org/rfc/rfc2384.txt">RFC 2384</a>, RFC 5092 and IETF draft draft-earhart-url-smtp-00.txt (Added in 7.34.0). 
+<p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="--mail-auth"></a><span class="nroffip">--mail-auth &lt;address&gt;</span> 
 <p class="level1">(SMTP) Specify a single address. This will be used to specify the authentication address (identity) of a submitted message that is being relayed to another server. 
 <p class="level1">(Added in 7.25.0) 
 <p class="level0"><a name="--mail-auth"></a><span class="nroffip">--mail-auth &lt;address&gt;</span> 
 <p class="level1">(SMTP) Specify a single address. This will be used to specify the authentication address (identity) of a submitted message that is being relayed to another server. 
 <p class="level1">(Added in 7.25.0) 
@@ -362,8 +414,10 @@ p.roffit {
 <p class="level1">Specify the maximum size (in bytes) of a file to download. If the file requested is larger than this value, the transfer will not start and curl will return with exit code 63. 
 <p class="level1"><span Class="bold">NOTE:</span> The file size is not always known prior to download, and for such files this option has no effect even if the file transfer ends up being larger than this given limit. This concerns both FTP and HTTP transfers. 
 <p class="level0"><a name="--mail-rcpt"></a><span class="nroffip">--mail-rcpt &lt;address&gt;</span> 
 <p class="level1">Specify the maximum size (in bytes) of a file to download. If the file requested is larger than this value, the transfer will not start and curl will return with exit code 63. 
 <p class="level1"><span Class="bold">NOTE:</span> The file size is not always known prior to download, and for such files this option has no effect even if the file transfer ends up being larger than this given limit. This concerns both FTP and HTTP transfers. 
 <p class="level0"><a name="--mail-rcpt"></a><span class="nroffip">--mail-rcpt &lt;address&gt;</span> 
-<p class="level1">(SMTP) Specify a single address that the given mail should get sent to. This option can be used multiple times to specify many recipients. 
-<p class="level1">(Added in 7.20.0) 
+<p class="level1">(SMTP) Specify a single address, user name or mailing list name. 
+<p class="level1">When performing a mail transfer, the recipient should specify a valid email address to send the mail to. (Added in 7.20.0) 
+<p class="level1">When performing an address verification (VRFY command), the recipient should be specified as the user name or user name and domain (as per Section 3.5 of <a href="http://www.ietf.org/rfc/rfc5321.txt">RFC 5321</a>). (Added in 7.34.0) 
+<p class="level1">When performing a mailing list expand (EXPN command), the recipient should be specified using the mailing list name, such as "Friends" or "London-Office". (Added in 7.34.0) 
 <p class="level0"><a name="--max-redirs"></a><span class="nroffip">--max-redirs &lt;num&gt;</span> 
 <p class="level1">Set maximum number of redirection-followings allowed. If <a class="emphasis" href="#-L">-L, --location</a> is used, this option can be used to prevent curl from following redirections "in absurdum". By default, the limit is set to 50 redirections. Set this option to -1 to make it limitless. 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="--max-redirs"></a><span class="nroffip">--max-redirs &lt;num&gt;</span> 
 <p class="level1">Set maximum number of redirection-followings allowed. If <a class="emphasis" href="#-L">-L, --location</a> is used, this option can be used to prevent curl from following redirections "in absurdum". By default, the limit is set to 50 redirections. Set this option to -1 to make it limitless. 
 <p class="level1">If this option is used several times, the last one will be used. 
@@ -376,7 +430,7 @@ p.roffit {
 <p class="level1">Please note that if FILE protocol is disabled, there is no way to use a local Metalink file at the time of this writing. Also note that if <a class="emphasis" href="#--metalink">--metalink</a> and <span Class="emphasis">--include</span> are used together, <span Class="emphasis">--include</span> will be ignored. This is because including headers in the response will break Metalink parser and if the headers are included in the file described in Metalink file, hash check will fail. 
 <p class="level1">(Added in 7.27.0, if built against the libmetalink library.) 
 <p class="level0"><a name="-n"></a><span class="nroffip">-n, --netrc</span> 
 <p class="level1">Please note that if FILE protocol is disabled, there is no way to use a local Metalink file at the time of this writing. Also note that if <a class="emphasis" href="#--metalink">--metalink</a> and <span Class="emphasis">--include</span> are used together, <span Class="emphasis">--include</span> will be ignored. This is because including headers in the response will break Metalink parser and if the headers are included in the file described in Metalink file, hash check will fail. 
 <p class="level1">(Added in 7.27.0, if built against the libmetalink library.) 
 <p class="level0"><a name="-n"></a><span class="nroffip">-n, --netrc</span> 
-<p class="level1">Makes curl scan the <span Class="emphasis">.netrc</span> (<span Class="emphasis">_netrc</span> on Windows) file in the user's home directory for login name and password. This is typically used for FTP on UNIX. If used with HTTP, curl will enable user authentication. See <span Class="manpage">netrc(4)</span> or <span Class="manpage">ftp(1)</span> for details on the file format. Curl will not complain if that file doesn't have the right permissions (it should not be either world- or group-readable). The environment variable "HOME" is used to find the home directory. 
+<p class="level1">Makes curl scan the <span Class="emphasis">.netrc</span> (<span Class="emphasis">_netrc</span> on Windows) file in the user's home directory for login name and password. This is typically used for FTP on Unix. If used with HTTP, curl will enable user authentication. See <span Class="manpage">netrc(4)</span> or <span Class="manpage">ftp(1)</span> for details on the file format. Curl will not complain if that file doesn't have the right permissions (it should not be either world- or group-readable). The environment variable "HOME" is used to find the home directory. 
 <p class="level1">A quick and very simple example of how to setup a <span Class="emphasis">.netrc</span> to allow curl to FTP to the machine host.domain.com with user name 'myself' and password 'secret' should look similar to: 
 <p class="level1"><span Class="bold">machine host.domain.com login myself password secret</span> 
 <p class="level0"><a name="-N"></a><span class="nroffip">-N, --no-buffer</span> 
 <p class="level1">A quick and very simple example of how to setup a <span Class="emphasis">.netrc</span> to allow curl to FTP to the machine host.domain.com with user name 'myself' and password 'secret' should look similar to: 
 <p class="level1"><span Class="bold">machine host.domain.com login myself password secret</span> 
 <p class="level0"><a name="-N"></a><span class="nroffip">-N, --no-buffer</span> 
@@ -390,9 +444,9 @@ p.roffit {
 <p class="level1">Very similar to <span Class="emphasis">--netrc</span>, but this option makes the .netrc usage <span Class="bold">optional</span> and not mandatory as the <span Class="emphasis">--netrc</span> option does. 
 <p class="level1">
 <p class="level0"><a name="--negotiate"></a><span class="nroffip">--negotiate</span> 
 <p class="level1">Very similar to <span Class="emphasis">--netrc</span>, but this option makes the .netrc usage <span Class="bold">optional</span> and not mandatory as the <span Class="emphasis">--netrc</span> option does. 
 <p class="level1">
 <p class="level0"><a name="--negotiate"></a><span class="nroffip">--negotiate</span> 
-<p class="level1">(HTTP) Enables GSS-Negotiate authentication. The GSS-Negotiate method was designed by Microsoft and is used in their web applications. It is primarily meant as a support for Kerberos5 authentication but may be also used along with another authentication method. For more information see IETF draft draft-brezak-spnego-http-04.txt
-<p class="level1">If you want to enable Negotiate for your proxy authentication, then use <a class="emphasis" href="#--proxy-negotiate">--proxy-negotiate</a>. 
-<p class="level1">This option requires a library built with GSSAPI support. This is not very common. Use <a class="emphasis" href="#-V">-V, --version</a> to see if your version supports GSS-Negotiate
+<p class="level1">(HTTP) Enables Negotiate (SPNEGO) authentication
+<p class="level1">If you want to enable Negotiate (SPNEGO) for proxy authentication, then use <a class="emphasis" href="#--proxy-negotiate">--proxy-negotiate</a>. 
+<p class="level1">This option requires a library built with GSS-API or SSPI support. Use <span class="emphasis">-V, --version</span> to see if your curl supports GSS-API/SSPI and SPNEGO
 <p class="level1">When using this option, you must also provide a fake <a class="emphasis" href="#-u">-u, --user</a> option to activate the authentication code properly. Sending a '-u :' is enough as the user name and password from the <a class="emphasis" href="#-u">-u</a> option aren't actually used. 
 <p class="level1">If this option is used several times, only the first one is used. 
 <p class="level0"><a name="--no-keepalive"></a><span class="nroffip">--no-keepalive</span> 
 <p class="level1">When using this option, you must also provide a fake <a class="emphasis" href="#-u">-u, --user</a> option to activate the authentication code properly. Sending a '-u :' is enough as the user name and password from the <a class="emphasis" href="#-u">-u</a> option aren't actually used. 
 <p class="level1">If this option is used several times, only the first one is used. 
 <p class="level0"><a name="--no-keepalive"></a><span class="nroffip">--no-keepalive</span> 
@@ -419,7 +473,18 @@ p.roffit {
 <p class="level1">Write output to a local file named like the remote file we get. (Only the file part of the remote file is used, the path is cut off.) 
 <p class="level1">The remote file name to use for saving is extracted from the given URL, nothing else. 
 <p class="level1">Consequentially, the file will be saved in the current working directory. If you want the file saved in a different directory, make sure you change current working directory before you invoke curl with the <a class="bold" href="#-O">-O, --remote-name</a> flag! 
 <p class="level1">Write output to a local file named like the remote file we get. (Only the file part of the remote file is used, the path is cut off.) 
 <p class="level1">The remote file name to use for saving is extracted from the given URL, nothing else. 
 <p class="level1">Consequentially, the file will be saved in the current working directory. If you want the file saved in a different directory, make sure you change current working directory before you invoke curl with the <a class="bold" href="#-O">-O, --remote-name</a> flag! 
+<p class="level1">There is no URL decoding done on the file name. If it has %20 or other URL encoded parts of the name, they will end up as-is as file name. 
 <p class="level1">You may use this option as many times as the number of URLs you have. 
 <p class="level1">You may use this option as many times as the number of URLs you have. 
+<p class="level0"><a name="--oauth2-bearer"></a><span class="nroffip">--oauth2-bearer</span> 
+<p class="level1">(IMAP, POP3, SMTP) Specify the Bearer Token for OAUTH 2.0 server authentication. The Bearer Token is used in conjunction with the user name which can be specified as part of the <a class="emphasis" href="#--url">--url</a> or <a class="emphasis" href="#-u">-u, --user</a> options. 
+<p class="level1">The Bearer Token and user name are formatted according to <a href="http://www.ietf.org/rfc/rfc6750.txt">RFC 6750</a>. 
+<p class="level1">If this option is used several times, the last one will be used. 
+<p class="level0"><a name="--proxy-header"></a><span class="nroffip">--proxy-header &lt;header&gt;</span> 
+<p class="level1">(HTTP) Extra header to include in the request when sending HTTP to a proxy. You may specify any number of extra headers. This is the equivalent option to <a class="emphasis" href="#-H">-H, --header</a> but is for proxy communication only like in CONNECT requests when you want a separate header sent to the proxy to what is sent to the actual remote host. 
+<p class="level1">curl will make sure that each header you add/replace is sent with the proper end-of-line marker, you should thus <span Class="bold">not</span> add that as a part of the header content: do not add newlines or carriage returns, they will only mess things up for you. 
+<p class="level1">Headers specified with this option will not be included in requests that curl knows will not be sent to a proxy. 
+<p class="level1">This option can be used multiple times to add/replace/remove multiple headers. 
+<p class="level1">(Added in 7.37.0) 
 <p class="level0"><a name="-p"></a><span class="nroffip">-p, --proxytunnel</span> 
 <p class="level1">When an HTTP proxy is used (<a class="emphasis" href="#-x">-x, --proxy</a>), this option will cause non-HTTP protocols to attempt to tunnel through the proxy instead of merely using it to do HTTP-like operations. The tunnel approach is made with the HTTP proxy CONNECT request and requires that the proxy allows direct connect to the remote port number curl wants to tunnel through to. 
 <p class="level0"><a name="-P"></a><span class="nroffip">-P, --ftp-port &lt;address&gt;</span> 
 <p class="level0"><a name="-p"></a><span class="nroffip">-p, --proxytunnel</span> 
 <p class="level1">When an HTTP proxy is used (<a class="emphasis" href="#-x">-x, --proxy</a>), this option will cause non-HTTP protocols to attempt to tunnel through the proxy instead of merely using it to do HTTP-like operations. The tunnel approach is made with the HTTP proxy CONNECT request and requires that the proxy allows direct connect to the remote port number curl wants to tunnel through to. 
 <p class="level0"><a name="-P"></a><span class="nroffip">-P, --ftp-port &lt;address&gt;</span> 
@@ -473,7 +538,7 @@ p.roffit {
 <p class="level0"><a name="--proxy-digest"></a><span class="nroffip">--proxy-digest</span> 
 <p class="level1">Tells curl to use HTTP Digest authentication when communicating with the given proxy. Use <a class="emphasis" href="#--digest">--digest</a> for enabling HTTP Digest with a remote host. 
 <p class="level0"><a name="--proxy-negotiate"></a><span class="nroffip">--proxy-negotiate</span> 
 <p class="level0"><a name="--proxy-digest"></a><span class="nroffip">--proxy-digest</span> 
 <p class="level1">Tells curl to use HTTP Digest authentication when communicating with the given proxy. Use <a class="emphasis" href="#--digest">--digest</a> for enabling HTTP Digest with a remote host. 
 <p class="level0"><a name="--proxy-negotiate"></a><span class="nroffip">--proxy-negotiate</span> 
-<p class="level1">Tells curl to use HTTP Negotiate authentication when communicating with the given proxy. Use <a class="emphasis" href="#--negotiate">--negotiate</a> for enabling HTTP Negotiate with a remote host. (Added in 7.17.1) 
+<p class="level1">Tells curl to use HTTP Negotiate (SPNEGO) authentication when communicating with the given proxy. Use <a class="emphasis" href="#--negotiate">--negotiate</a> for enabling HTTP Negotiate (SPNEGO) with a remote host. (Added in 7.17.1) 
 <p class="level0"><a name="--proxy-ntlm"></a><span class="nroffip">--proxy-ntlm</span> 
 <p class="level1">Tells curl to use HTTP NTLM authentication when communicating with the given proxy. Use <a class="emphasis" href="#--ntlm">--ntlm</a> for enabling NTLM with a remote host. 
 <p class="level0"><a name="--proxy10"></a><span class="nroffip">--proxy1.0 &lt;proxyhost[:port]&gt;</span> 
 <p class="level0"><a name="--proxy-ntlm"></a><span class="nroffip">--proxy-ntlm</span> 
 <p class="level1">Tells curl to use HTTP NTLM authentication when communicating with the given proxy. Use <a class="emphasis" href="#--ntlm">--ntlm</a> for enabling NTLM with a remote host. 
 <p class="level0"><a name="--proxy10"></a><span class="nroffip">--proxy1.0 &lt;proxyhost[:port]&gt;</span> 
@@ -482,6 +547,7 @@ p.roffit {
 <p class="level0"><a name="--pubkey"></a><span class="nroffip">--pubkey &lt;key&gt;</span> 
 <p class="level1">(SSH) Public key file name. Allows you to provide your public key in this separate file. 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="--pubkey"></a><span class="nroffip">--pubkey &lt;key&gt;</span> 
 <p class="level1">(SSH) Public key file name. Allows you to provide your public key in this separate file. 
 <p class="level1">If this option is used several times, the last one will be used. 
+<p class="level1">(As of 7.39.0, curl attempts to automatically extract the public key from the private key file, so passing this option is generally not required. Note that this public key extraction requires libcurl to be linked against a copy of libssh2 1.2.8 or higher that is itself linked against OpenSSL.) 
 <p class="level0"><a name="-q"></a><span class="nroffip">-q</span> 
 <p class="level1">If used as the first parameter on the command line, the <span Class="emphasis">curlrc</span> config file will not be read and used. See the <a class="emphasis" href="#-K">-K, --config</a> for details on the default config file search path. 
 <p class="level0"><a name="-Q"></a><span class="nroffip">-Q, --quote &lt;command&gt;</span> 
 <p class="level0"><a name="-q"></a><span class="nroffip">-q</span> 
 <p class="level1">If used as the first parameter on the command line, the <span Class="emphasis">curlrc</span> config file will not be read and used. See the <a class="emphasis" href="#-K">-K, --config</a> for details on the default config file search path. 
 <p class="level0"><a name="-Q"></a><span class="nroffip">-Q, --quote &lt;command&gt;</span> 
@@ -560,7 +626,7 @@ p.roffit {
 <p class="level1">(FTP, POP3, IMAP, SMTP) Require SSL/TLS for the connection.  Terminates the connection if the server doesn't support SSL/TLS. (Added in 7.20.0) 
 <p class="level1">This option was formerly known as <span Class="emphasis">--ftp-ssl-reqd</span> (added in 7.15.5). That option name can still be used but will be removed in a future version. 
 <p class="level0"><a name="--ssl-allow-beast"></a><span class="nroffip">--ssl-allow-beast</span> 
 <p class="level1">(FTP, POP3, IMAP, SMTP) Require SSL/TLS for the connection.  Terminates the connection if the server doesn't support SSL/TLS. (Added in 7.20.0) 
 <p class="level1">This option was formerly known as <span Class="emphasis">--ftp-ssl-reqd</span> (added in 7.15.5). That option name can still be used but will be removed in a future version. 
 <p class="level0"><a name="--ssl-allow-beast"></a><span class="nroffip">--ssl-allow-beast</span> 
-<p class="level1">(SSL) This option tells curl to not work around a security flaw in the SSL3 and TLS1.0 protocols known as BEAST.  If this option isn't used, the SSL layer may use work-arounds known to cause interoperability problems with some older SSL implementations. WARNING: this option loosens the SSL security, and by using this flag you ask for exactly that.  (Added in 7.25.0) 
+<p class="level1">(SSL) This option tells curl to not work around a security flaw in the SSL3 and TLS1.0 protocols known as BEAST.  If this option isn't used, the SSL layer may use workarounds known to cause interoperability problems with some older SSL implementations. WARNING: this option loosens the SSL security, and by using this flag you ask for exactly that.  (Added in 7.25.0) 
 <p class="level0"><a name="--socks4"></a><span class="nroffip">--socks4 &lt;host[:port]&gt;</span> 
 <p class="level1">Use the specified SOCKS4 proxy. If the port number is not specified, it is assumed at port 1080. (Added in 7.15.2) 
 <p class="level1">This option overrides any previous use of <a class="emphasis" href="#-x">-x, --proxy</a>, as they are mutually exclusive. 
 <p class="level0"><a name="--socks4"></a><span class="nroffip">--socks4 &lt;host[:port]&gt;</span> 
 <p class="level1">Use the specified SOCKS4 proxy. If the port number is not specified, it is assumed at port 1080. (Added in 7.15.2) 
 <p class="level1">This option overrides any previous use of <a class="emphasis" href="#-x">-x, --proxy</a>, as they are mutually exclusive. 
@@ -586,7 +652,7 @@ p.roffit {
 <p class="level1">The default service name for a socks server is rcmd/server-fqdn. This option allows you to change it. 
 <p class="level1">Examples: --socks5 proxy-name <a class="emphasis" href="#--socks5-gssapi-service">--socks5-gssapi-service</a> sockd would use sockd/proxy-name --socks5 proxy-name <a class="emphasis" href="#--socks5-gssapi-service">--socks5-gssapi-service</a> sockd/real-name would use sockd/real-name for cases where the proxy-name does not match the principal name.  (Added in 7.19.4). 
 <p class="level0"><a name="--socks5-gssapi-nec"></a><span class="nroffip">--socks5-gssapi-nec</span> 
 <p class="level1">The default service name for a socks server is rcmd/server-fqdn. This option allows you to change it. 
 <p class="level1">Examples: --socks5 proxy-name <a class="emphasis" href="#--socks5-gssapi-service">--socks5-gssapi-service</a> sockd would use sockd/proxy-name --socks5 proxy-name <a class="emphasis" href="#--socks5-gssapi-service">--socks5-gssapi-service</a> sockd/real-name would use sockd/real-name for cases where the proxy-name does not match the principal name.  (Added in 7.19.4). 
 <p class="level0"><a name="--socks5-gssapi-nec"></a><span class="nroffip">--socks5-gssapi-nec</span> 
-<p class="level1">As part of the gssapi negotiation a protection mode is negotiated. <a href="http://www.ietf.org/rfc/rfc1961.txt">RFC 1961</a> says in section 4.3/4.4 it should be protected, but the NEC reference implementation does not.  The option <a class="emphasis" href="#--socks5-gssapi-nec">--socks5-gssapi-nec</a> allows the unprotected exchange of the protection mode negotiation. (Added in 7.19.4). 
+<p class="level1">As part of the GSS-API negotiation a protection mode is negotiated. <a href="http://www.ietf.org/rfc/rfc1961.txt">RFC 1961</a> says in section 4.3/4.4 it should be protected, but the NEC reference implementation does not.  The option <a class="emphasis" href="#--socks5-gssapi-nec">--socks5-gssapi-nec</a> allows the unprotected exchange of the protection mode negotiation. (Added in 7.19.4). 
 <p class="level0"><a name="--stderr"></a><span class="nroffip">--stderr &lt;file&gt;</span> 
 <p class="level1">Redirect all writes to stderr to the specified file instead. If the file name is a plain '-', it is instead written to stdout. 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="--stderr"></a><span class="nroffip">--stderr &lt;file&gt;</span> 
 <p class="level1">Redirect all writes to stderr to the specified file instead. If the file name is a plain '-', it is instead written to stdout. 
 <p class="level1">If this option is used several times, the last one will be used. 
@@ -610,10 +676,16 @@ p.roffit {
 <p class="level1">(Added in 7.20.0) 
 <p class="level0"><a name="--tlsauthtype"></a><span class="nroffip">--tlsauthtype &lt;authtype&gt;</span> 
 <p class="level1">Set TLS authentication type. Currently, the only supported option is "SRP", for TLS-SRP (<a href="http://www.ietf.org/rfc/rfc5054.txt">RFC 5054</a>). If <a class="emphasis" href="#--tlsuser">--tlsuser</a> and <a class="emphasis" href="#--tlspassword">--tlspassword</a> are specified but <a class="emphasis" href="#--tlsauthtype">--tlsauthtype</a> is not, then this option defaults to "SRP". (Added in 7.21.4) 
 <p class="level1">(Added in 7.20.0) 
 <p class="level0"><a name="--tlsauthtype"></a><span class="nroffip">--tlsauthtype &lt;authtype&gt;</span> 
 <p class="level1">Set TLS authentication type. Currently, the only supported option is "SRP", for TLS-SRP (<a href="http://www.ietf.org/rfc/rfc5054.txt">RFC 5054</a>). If <a class="emphasis" href="#--tlsuser">--tlsuser</a> and <a class="emphasis" href="#--tlspassword">--tlspassword</a> are specified but <a class="emphasis" href="#--tlsauthtype">--tlsauthtype</a> is not, then this option defaults to "SRP". (Added in 7.21.4) 
-<p class="level0"><a name="--tlsuser"></a><span class="nroffip">--tlsuser &lt;user&gt;</span> 
-<p class="level1">Set username for use with the TLS authentication method specified with <a class="emphasis" href="#--tlsauthtype">--tlsauthtype</a>. Requires that <a class="emphasis" href="#--tlspassword">--tlspassword</a> also be set.  (Added in 7.21.4) 
 <p class="level0"><a name="--tlspassword"></a><span class="nroffip">--tlspassword &lt;password&gt;</span> 
 <p class="level1">Set password for use with the TLS authentication method specified with <a class="emphasis" href="#--tlsauthtype">--tlsauthtype</a>. Requires that <a class="emphasis" href="#--tlsuser">--tlsuser</a> also be set.  (Added in 7.21.4) 
 <p class="level0"><a name="--tlspassword"></a><span class="nroffip">--tlspassword &lt;password&gt;</span> 
 <p class="level1">Set password for use with the TLS authentication method specified with <a class="emphasis" href="#--tlsauthtype">--tlsauthtype</a>. Requires that <a class="emphasis" href="#--tlsuser">--tlsuser</a> also be set.  (Added in 7.21.4) 
+<p class="level0"><a name="--tlsuser"></a><span class="nroffip">--tlsuser &lt;user&gt;</span> 
+<p class="level1">Set username for use with the TLS authentication method specified with <a class="emphasis" href="#--tlsauthtype">--tlsauthtype</a>. Requires that <a class="emphasis" href="#--tlspassword">--tlspassword</a> also be set.  (Added in 7.21.4) 
+<p class="level0"><a name="--tlsv10"></a><span class="nroffip">--tlsv1.0</span> 
+<p class="level1">(SSL) Forces curl to use TLS version 1.0 when negotiating with a remote TLS server. (Added in 7.34.0) 
+<p class="level0"><a name="--tlsv11"></a><span class="nroffip">--tlsv1.1</span> 
+<p class="level1">(SSL) Forces curl to use TLS version 1.1 when negotiating with a remote TLS server. (Added in 7.34.0) 
+<p class="level0"><a name="--tlsv12"></a><span class="nroffip">--tlsv1.2</span> 
+<p class="level1">(SSL) Forces curl to use TLS version 1.2 when negotiating with a remote TLS server. (Added in 7.34.0) 
 <p class="level0"><a name="--tr-encoding"></a><span class="nroffip">--tr-encoding</span> 
 <p class="level1">(HTTP) Request a compressed Transfer-Encoding response using one of the algorithms curl supports, and uncompress the data while receiving it. 
 <p class="level1">(Added in 7.21.6) 
 <p class="level0"><a name="--tr-encoding"></a><span class="nroffip">--tr-encoding</span> 
 <p class="level1">(HTTP) Request a compressed Transfer-Encoding response using one of the algorithms curl supports, and uncompress the data while receiving it. 
 <p class="level1">(Added in 7.21.6) 
@@ -628,26 +700,32 @@ p.roffit {
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="--trace-time"></a><span class="nroffip">--trace-time</span> 
 <p class="level1">Prepends a time stamp to each trace or verbose line that curl displays. (Added in 7.14.0) 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="--trace-time"></a><span class="nroffip">--trace-time</span> 
 <p class="level1">Prepends a time stamp to each trace or verbose line that curl displays. (Added in 7.14.0) 
+<p class="level0"><a name="--unix-socket"></a><span class="nroffip">--unix-socket &lt;path&gt;</span> 
+<p class="level1">(HTTP) Connect through this Unix domain socket, instead of using the network. (Added in 7.40.0) 
 <p class="level0"><a name="-u"></a><span class="nroffip">-u, --user &lt;user:password&gt;</span> 
 <p class="level1">Specify the user name and password to use for server authentication. Overrides <a class="emphasis" href="#-n">-n, --netrc</a> and <a class="emphasis" href="#--netrc-optional">--netrc-optional</a>. 
 <p class="level0"><a name="-u"></a><span class="nroffip">-u, --user &lt;user:password&gt;</span> 
 <p class="level1">Specify the user name and password to use for server authentication. Overrides <a class="emphasis" href="#-n">-n, --netrc</a> and <a class="emphasis" href="#--netrc-optional">--netrc-optional</a>. 
-<p class="level1">If you just give the user name (without entering a colon) curl will prompt for a password. 
-<p class="level1">If you use an SSPI-enabled curl binary and do NTLM authentication, you can force curl to pick up the user name and password from your environment by simply specifying a single colon with this option: "-u :". 
+<p class="level1">If you simply specify the user name, curl will prompt for a password. 
+<p class="level1">The user name and passwords are split up on the first colon, which makes it impossible to use a colon in the user name with this option. The password can, still. 
+<p class="level1">When using Kerberos V5 with a Windows based server you should include the Windows domain name in the user name, in order for the server to succesfully obtain a Kerberos Ticket. If you don't then the initial authentication handshake may fail. 
+<p class="level1">When using NTLM, the user name can be specified simply as the user name, without the domain, if there is a single domain and forest in your setup for example. 
+<p class="level1">To specify the domain name use either Down-Level Logon Name or UPN (User Principal Name) formats. For example, EXAMPLE\user and user@example.com respectively. 
+<p class="level1">If you use a Windows SSPI-enabled curl binary and perform Kerberos V5, Negotiate, NTLM or Digest authentication then you can tell curl to select the user name and password from your environment by specifying a single colon with this option: "-u :". 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="-U"></a><span class="nroffip">-U, --proxy-user &lt;user:password&gt;</span> 
 <p class="level1">Specify the user name and password to use for proxy authentication. 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="-U"></a><span class="nroffip">-U, --proxy-user &lt;user:password&gt;</span> 
 <p class="level1">Specify the user name and password to use for proxy authentication. 
-<p class="level1">If you use an SSPI-enabled curl binary and do NTLM authentication, you can force curl to pick up the user name and password from your environment by simply specifying a single colon with this option: "-U :". 
+<p class="level1">If you use a Windows SSPI-enabled curl binary and do either Negotiate or NTLM authentication then you can tell curl to select the user name and password from your environment by specifying a single colon with this option: "-U :". 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="--url"></a><span class="nroffip">--url &lt;URL&gt;</span> 
 <p class="level1">Specify a URL to fetch. This option is mostly handy when you want to specify URL(s) in a config file. 
 <p class="level1">This option may be used any number of times. To control where this URL is written, use the <a class="emphasis" href="#-o">-o, --output</a> or the <a class="emphasis" href="#-O">-O, --remote-name</a> options. 
 <p class="level0"><a name="-v"></a><span class="nroffip">-v, --verbose</span> 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="--url"></a><span class="nroffip">--url &lt;URL&gt;</span> 
 <p class="level1">Specify a URL to fetch. This option is mostly handy when you want to specify URL(s) in a config file. 
 <p class="level1">This option may be used any number of times. To control where this URL is written, use the <a class="emphasis" href="#-o">-o, --output</a> or the <a class="emphasis" href="#-O">-O, --remote-name</a> options. 
 <p class="level0"><a name="-v"></a><span class="nroffip">-v, --verbose</span> 
-<p class="level1">Makes the fetching more verbose/talkative. Mostly useful for debugging. A line starting with '&gt;' means "header data" sent by curl, '&lt;' means "header data" received by curl that is hidden in normal cases, and a line starting with '*' means additional info provided by curl. 
+<p class="level1">Be more verbose/talkative during the operation. Useful for debugging and seeing what's going on "under the hood". A line starting with '&gt;' means "header data" sent by curl, '&lt;' means "header data" received by curl that is hidden in normal cases, and a line starting with '*' means additional info provided by curl. 
 <p class="level1">Note that if you only want HTTP headers in the output, <a class="emphasis" href="#-i">-i, --include</a> might be the option you're looking for. 
 <p class="level1">If you think this option still doesn't give you enough details, consider using <a class="emphasis" href="#--trace">--trace</a> or <a class="emphasis" href="#--trace-ascii">--trace-ascii</a> instead. 
 <p class="level1">This option overrides previous uses of <a class="emphasis" href="#--trace-ascii">--trace-ascii</a> or <a class="emphasis" href="#--trace">--trace</a>. 
 <p class="level1">Use <a class="emphasis" href="#-s">-s, --silent</a> to make curl quiet. 
 <p class="level0"><a name="-w"></a><span class="nroffip">-w, --write-out &lt;format&gt;</span> 
 <p class="level1">Note that if you only want HTTP headers in the output, <a class="emphasis" href="#-i">-i, --include</a> might be the option you're looking for. 
 <p class="level1">If you think this option still doesn't give you enough details, consider using <a class="emphasis" href="#--trace">--trace</a> or <a class="emphasis" href="#--trace-ascii">--trace-ascii</a> instead. 
 <p class="level1">This option overrides previous uses of <a class="emphasis" href="#--trace-ascii">--trace-ascii</a> or <a class="emphasis" href="#--trace">--trace</a>. 
 <p class="level1">Use <a class="emphasis" href="#-s">-s, --silent</a> to make curl quiet. 
 <p class="level0"><a name="-w"></a><span class="nroffip">-w, --write-out &lt;format&gt;</span> 
-<p class="level1">Defines what to display on stdout after a completed and successful operation. The format is a string that may contain plain text mixed with any number of variables. The string can be specified as "string", to get read from a particular file you specify it "@filename" and to tell curl to read the format from stdin you write "@-". 
+<p class="level1">Make curl display information on stdout after a completed transfer. The format is a string that may contain plain text mixed with any number of variables. The format can be specified as a literal "string", or you can have curl read the format from a file with "@filename" and to tell curl to read the format from stdin you write "@-". 
 <p class="level1">The variables present in the output format will be substituted by the value or text that curl thinks fit, as described below. All variables are specified as %{variable_name} and to output a normal % you just write them as %%. You can output a newline by using \n, a carriage return with \r and a tab space with \t. 
 <p class="level1"><span Class="bold">NOTE:</span> The %-symbol is a special symbol in the win32-environment, where all occurrences of % must be doubled when using this option. 
 <p class="level1">The variables available are: 
 <p class="level1">The variables present in the output format will be substituted by the value or text that curl thinks fit, as described below. All variables are specified as %{variable_name} and to output a normal % you just write them as %%. You can output a newline by using \n, a carriage return with \r and a tab space with \t. 
 <p class="level1"><span Class="bold">NOTE:</span> The %-symbol is a special symbol in the win32-environment, where all occurrences of % must be doubled when using this option. 
 <p class="level1">The variables available are: 
@@ -682,20 +760,23 @@ p.roffit {
 <p class="level1">
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="-x"></a><span class="nroffip">-x, --proxy &lt;[protocol://][user:password@]proxyhost[:port]&gt;</span> 
 <p class="level1">
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="-x"></a><span class="nroffip">-x, --proxy &lt;[protocol://][user:password@]proxyhost[:port]&gt;</span> 
-<p class="level1">Use the specified HTTP proxy. If the port number is not specified, it is assumed at port 1080. 
+<p class="level1">Use the specified proxy. 
+<p class="level1">The proxy string can be specified with a protocol:// prefix to specify alternative proxy protocols. Use socks4://, socks4a://, socks5:// or socks5h:// to request the specific SOCKS version to be used. No protocol specified, http:// and all others will be treated as HTTP proxies. (The protocol support was added in curl 7.21.7) 
+<p class="level1">If the port number is not specified in the proxy string, it is assumed to be 1080. 
 <p class="level1">This option overrides existing environment variables that set the proxy to use. If there's an environment variable setting a proxy, you can set proxy to "" to override it. 
 <p class="level1">All operations that are performed over an HTTP proxy will transparently be converted to HTTP. It means that certain protocol specific operations might not be available. This is not the case if you can tunnel through the proxy, as one with the <a class="emphasis" href="#-p">-p, --proxytunnel</a> option. 
 <p class="level1">User and password that might be provided in the proxy string are URL decoded by curl. This allows you to pass in special characters such as @ by using %40 or pass in a colon with %3a. 
 <p class="level1">The proxy host can be specified the exact same way as the proxy environment variables, including the protocol prefix (http://) and the embedded user + password. 
 <p class="level1">This option overrides existing environment variables that set the proxy to use. If there's an environment variable setting a proxy, you can set proxy to "" to override it. 
 <p class="level1">All operations that are performed over an HTTP proxy will transparently be converted to HTTP. It means that certain protocol specific operations might not be available. This is not the case if you can tunnel through the proxy, as one with the <a class="emphasis" href="#-p">-p, --proxytunnel</a> option. 
 <p class="level1">User and password that might be provided in the proxy string are URL decoded by curl. This allows you to pass in special characters such as @ by using %40 or pass in a colon with %3a. 
 <p class="level1">The proxy host can be specified the exact same way as the proxy environment variables, including the protocol prefix (http://) and the embedded user + password. 
-<p class="level1">From 7.21.7, the proxy string may be specified with a protocol:// prefix to specify alternative proxy protocols. Use socks4://, socks4a://, socks5:// or socks5h:// to request the specific SOCKS version to be used. No protocol specified, http:// and all others will be treated as HTTP proxies. 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="-X"></a><span class="nroffip">-X, --request &lt;command&gt;</span> 
 <p class="level1">(HTTP) Specifies a custom request method to use when communicating with the HTTP server.  The specified request will be used instead of the method otherwise used (which defaults to GET). Read the HTTP 1.1 specification for details and explanations. Common additional HTTP requests include PUT and DELETE, but related technologies like WebDAV offers PROPFIND, COPY, MOVE and more. 
 <p class="level1">Normally you don't need this option. All sorts of GET, HEAD, POST and PUT requests are rather invoked by using dedicated command line options. 
 <p class="level1">This option only changes the actual word used in the HTTP request, it does not alter the way curl behaves. So for example if you want to make a proper HEAD request, using -X HEAD will not suffice. You need to use the <a class="emphasis" href="#-I">-I, --head</a> option. 
 <p class="level1">(FTP) Specifies a custom FTP command to use instead of LIST when doing file lists with FTP. 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="-X"></a><span class="nroffip">-X, --request &lt;command&gt;</span> 
 <p class="level1">(HTTP) Specifies a custom request method to use when communicating with the HTTP server.  The specified request will be used instead of the method otherwise used (which defaults to GET). Read the HTTP 1.1 specification for details and explanations. Common additional HTTP requests include PUT and DELETE, but related technologies like WebDAV offers PROPFIND, COPY, MOVE and more. 
 <p class="level1">Normally you don't need this option. All sorts of GET, HEAD, POST and PUT requests are rather invoked by using dedicated command line options. 
 <p class="level1">This option only changes the actual word used in the HTTP request, it does not alter the way curl behaves. So for example if you want to make a proper HEAD request, using -X HEAD will not suffice. You need to use the <a class="emphasis" href="#-I">-I, --head</a> option. 
 <p class="level1">(FTP) Specifies a custom FTP command to use instead of LIST when doing file lists with FTP. 
+<p class="level1">(POP3) Specifies a custom POP3 command to use instead of LIST or RETR. (Added in 7.26.0) 
+<p class="level1">(IMAP) Specifies a custom IMAP command to use instead of LIST. (Added in 7.30.0) 
+<p class="level1">(SMTP) Specifies a custom SMTP command to use instead of HELP or VRFY. (Added in 7.34.0) 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level1">If this option is used several times, the last one will be used. 
-<p class="level1">
 <p class="level0"><a name="--xattr"></a><span class="nroffip">--xattr</span> 
 <p class="level1">When saving output to a file, this option tells curl to store certain file metadata in extended file attributes. Currently, the URL is stored in the xdg.origin.url attribute and, for HTTP, the content type is stored in the mime_type attribute. If the file system does not support extended attributes, a warning is issued. 
 <p class="level1">
 <p class="level0"><a name="--xattr"></a><span class="nroffip">--xattr</span> 
 <p class="level1">When saving output to a file, this option tells curl to store certain file metadata in extended file attributes. Currently, the URL is stored in the xdg.origin.url attribute and, for HTTP, the content type is stored in the mime_type attribute. If the file system does not support extended attributes, a warning is issued. 
 <p class="level1">
@@ -711,7 +792,7 @@ p.roffit {
 <p class="level1">Start the date expression with a dash (-) to make it request for a document that is older than the given date/time, default is a document that is newer than the specified date/time. 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="-h"></a><span class="nroffip">-h, --help</span> 
 <p class="level1">Start the date expression with a dash (-) to make it request for a document that is older than the given date/time, default is a document that is newer than the specified date/time. 
 <p class="level1">If this option is used several times, the last one will be used. 
 <p class="level0"><a name="-h"></a><span class="nroffip">-h, --help</span> 
-<p class="level1">Usage help. 
+<p class="level1">Usage help. This lists all current command line options with a short description. 
 <p class="level0"><a name="-M"></a><span class="nroffip">-M, --manual</span> 
 <p class="level1">Manual. Display the huge help text. 
 <p class="level0"><a name="-V"></a><span class="nroffip">-V, --version</span> 
 <p class="level0"><a name="-M"></a><span class="nroffip">-M, --manual</span> 
 <p class="level1">Manual. Display the huge help text. 
 <p class="level0"><a name="-V"></a><span class="nroffip">-V, --version</span> 
@@ -725,27 +806,29 @@ p.roffit {
 <p class="level1"><a name="krb4"></a><span class="nroffip">krb4</span> 
 <p class="level2">Krb4 for FTP is supported. 
 <p class="level1"><a name="SSL"></a><span class="nroffip">SSL</span> 
 <p class="level1"><a name="krb4"></a><span class="nroffip">krb4</span> 
 <p class="level2">Krb4 for FTP is supported. 
 <p class="level1"><a name="SSL"></a><span class="nroffip">SSL</span> 
-<p class="level2">HTTPS and FTPS are supported
+<p class="level2">SSL versions of various protocols are supported, such as HTTPS, FTPS, POP3S and so on
 <p class="level1"><a name="libz"></a><span class="nroffip">libz</span> 
 <p class="level2">Automatic decompression of compressed files over HTTP is supported. 
 <p class="level1"><a name="NTLM"></a><span class="nroffip">NTLM</span> 
 <p class="level2">NTLM authentication is supported. 
 <p class="level1"><a name="libz"></a><span class="nroffip">libz</span> 
 <p class="level2">Automatic decompression of compressed files over HTTP is supported. 
 <p class="level1"><a name="NTLM"></a><span class="nroffip">NTLM</span> 
 <p class="level2">NTLM authentication is supported. 
-<p class="level1"><a name="GSS-Negotiate"></a><span class="nroffip">GSS-Negotiate</span> 
-<p class="level2">Negotiate authentication and krb5 for FTP is supported. 
 <p class="level1"><a name="Debug"></a><span class="nroffip">Debug</span> 
 <p class="level2">This curl uses a libcurl built with Debug. This enables more error-tracking and memory debugging etc. For curl-developers only! 
 <p class="level1"><a name="AsynchDNS"></a><span class="nroffip">AsynchDNS</span> 
 <p class="level1"><a name="Debug"></a><span class="nroffip">Debug</span> 
 <p class="level2">This curl uses a libcurl built with Debug. This enables more error-tracking and memory debugging etc. For curl-developers only! 
 <p class="level1"><a name="AsynchDNS"></a><span class="nroffip">AsynchDNS</span> 
-<p class="level2">This curl uses asynchronous name resolves. 
+<p class="level2">This curl uses asynchronous name resolves. Asynchronous name resolves can be done using either the c-ares or the threaded resolver backends. 
 <p class="level1"><a name="SPNEGO"></a><span class="nroffip">SPNEGO</span> 
 <p class="level1"><a name="SPNEGO"></a><span class="nroffip">SPNEGO</span> 
-<p class="level2">SPNEGO Negotiate authentication is supported. 
+<p class="level2">SPNEGO authentication is supported. 
 <p class="level1"><a name="Largefile"></a><span class="nroffip">Largefile</span> 
 <p class="level2">This curl supports transfers of large files, files larger than 2GB. 
 <p class="level1"><a name="IDN"></a><span class="nroffip">IDN</span> 
 <p class="level2">This curl supports IDN - international domain names. 
 <p class="level1"><a name="Largefile"></a><span class="nroffip">Largefile</span> 
 <p class="level2">This curl supports transfers of large files, files larger than 2GB. 
 <p class="level1"><a name="IDN"></a><span class="nroffip">IDN</span> 
 <p class="level2">This curl supports IDN - international domain names. 
+<p class="level1"><a name="GSS-API"></a><span class="nroffip">GSS-API</span> 
+<p class="level2">GSS-API is supported. 
 <p class="level1"><a name="SSPI"></a><span class="nroffip">SSPI</span> 
 <p class="level1"><a name="SSPI"></a><span class="nroffip">SSPI</span> 
-<p class="level2">SSPI is supported. If you use NTLM and set a blank user name, curl will authenticate with your current user and password. 
+<p class="level2">SSPI is supported. 
 <p class="level1"><a name="TLS-SRP"></a><span class="nroffip">TLS-SRP</span> 
 <p class="level2">SRP (Secure Remote Password) authentication is supported for TLS. 
 <p class="level1"><a name="TLS-SRP"></a><span class="nroffip">TLS-SRP</span> 
 <p class="level2">SRP (Secure Remote Password) authentication is supported for TLS. 
+<p class="level1"><a name="HTTP2"></a><span class="nroffip">HTTP2</span> 
+<p class="level2">HTTP/2 support has been built-in. 
 <p class="level1"><a name="Metalink"></a><span class="nroffip">Metalink</span> 
 <p class="level2">This curl supports Metalink (both version 3 and 4 (<a href="http://www.ietf.org/rfc/rfc5854.txt">RFC 5854</a>)), which describes mirrors and hashes.  curl will use mirrors for failover if there are errors (such as the file or server not being available). 
 <p class="level1"><a name="FILES"></a><h2 class="nroffsh">FILES</h2>
 <p class="level1"><a name="Metalink"></a><span class="nroffip">Metalink</span> 
 <p class="level2">This curl supports Metalink (both version 3 and 4 (<a href="http://www.ietf.org/rfc/rfc5854.txt">RFC 5854</a>)), which describes mirrors and hashes.  curl will use mirrors for failover if there are errors (such as the file or server not being available). 
 <p class="level1"><a name="FILES"></a><h2 class="nroffsh">FILES</h2>
@@ -926,6 +1009,10 @@ p.roffit {
 <p class="level1">unable to parse FTP file list 
 <p class="level0"><a name="88"></a><span class="nroffip">88</span> 
 <p class="level1">FTP chunk callback reported error 
 <p class="level1">unable to parse FTP file list 
 <p class="level0"><a name="88"></a><span class="nroffip">88</span> 
 <p class="level1">FTP chunk callback reported error 
+<p class="level0"><a name="89"></a><span class="nroffip">89</span> 
+<p class="level1">No connection available, the session will be queued 
+<p class="level0"><a name="90"></a><span class="nroffip">90</span> 
+<p class="level1">SSL public key does not matched pinned public key 
 <p class="level0"><a name="XX"></a><span class="nroffip">XX</span> 
 <p class="level1">More error codes will appear here in future releases. The existing ones are meant to never change. <a name="AUTHORS"></a><h2 class="nroffsh">AUTHORS / CONTRIBUTORS</h2>
 <p class="level0">Daniel Stenberg is the main author, but the whole list of contributors is found in the separate THANKS file. <a name="WWW"></a><h2 class="nroffsh">WWW</h2>
 <p class="level0"><a name="XX"></a><span class="nroffip">XX</span> 
 <p class="level1">More error codes will appear here in future releases. The existing ones are meant to never change. <a name="AUTHORS"></a><h2 class="nroffsh">AUTHORS / CONTRIBUTORS</h2>
 <p class="level0">Daniel Stenberg is the main author, but the whole list of contributors is found in the separate THANKS file. <a name="WWW"></a><h2 class="nroffsh">WWW</h2>
index c81dd37..630cfdb 100644 (file)
Binary files a/docs/curl.pdf and b/docs/curl.pdf differ
index a85fff4..5d95a8a 100644 (file)
@@ -62,7 +62,6 @@ static const char *urls[] = {
   "http://www.uefa.com",
   "http://www.ieee.org",
   "http://www.apple.com",
   "http://www.uefa.com",
   "http://www.ieee.org",
   "http://www.apple.com",
-  "http://www.sony.com",
   "http://www.symantec.com",
   "http://www.zdnet.com",
   "http://www.fujitsu.com",
   "http://www.symantec.com",
   "http://www.zdnet.com",
   "http://www.fujitsu.com",
index d1deb84..554c405 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
 # KIND, either express or implied.
 #
 ###########################################################################
 # KIND, either express or implied.
 #
 ###########################################################################
+
+#***************************************************************************
+#                                  _   _ ____  _
+#  Project                     ___| | | |  _ \| |
+#                             / __| | | | |_) | |
+#                            | (__| |_| |  _ <| |___
+#                             \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at http://curl.haxx.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
 VPATH = @srcdir@
 am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
 am__make_running_with_option = \
 VPATH = @srcdir@
 am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
 am__make_running_with_option = \
@@ -115,11 +137,19 @@ check_PROGRAMS = 10-at-a-time$(EXEEXT) anyauthput$(EXEEXT) \
        simple$(EXEEXT) simplepost$(EXEEXT) simplessl$(EXEEXT) \
        sendrecv$(EXEEXT) httpcustomheader$(EXEEXT) certinfo$(EXEEXT) \
        chkspeed$(EXEEXT) ftpgetinfo$(EXEEXT) ftp-wildcard$(EXEEXT) \
        simple$(EXEEXT) simplepost$(EXEEXT) simplessl$(EXEEXT) \
        sendrecv$(EXEEXT) httpcustomheader$(EXEEXT) certinfo$(EXEEXT) \
        chkspeed$(EXEEXT) ftpgetinfo$(EXEEXT) ftp-wildcard$(EXEEXT) \
-       smtp-multi$(EXEEXT) simplesmtp$(EXEEXT) smtp-tls$(EXEEXT) \
+       smtp-mail$(EXEEXT) smtp-multi$(EXEEXT) smtp-ssl$(EXEEXT) \
+       smtp-tls$(EXEEXT) smtp-vrfy$(EXEEXT) smtp-expn$(EXEEXT) \
        rtsp$(EXEEXT) externalsocket$(EXEEXT) resolve$(EXEEXT) \
        rtsp$(EXEEXT) externalsocket$(EXEEXT) resolve$(EXEEXT) \
-       progressfunc$(EXEEXT) pop3s$(EXEEXT) pop3slist$(EXEEXT) \
-       imap$(EXEEXT) url2file$(EXEEXT) sftpget$(EXEEXT) \
-       ftpsget$(EXEEXT)
+       progressfunc$(EXEEXT) pop3-retr$(EXEEXT) pop3-list$(EXEEXT) \
+       pop3-uidl$(EXEEXT) pop3-dele$(EXEEXT) pop3-top$(EXEEXT) \
+       pop3-stat$(EXEEXT) pop3-noop$(EXEEXT) pop3-ssl$(EXEEXT) \
+       pop3-tls$(EXEEXT) pop3-multi$(EXEEXT) imap-list$(EXEEXT) \
+       imap-lsub$(EXEEXT) imap-fetch$(EXEEXT) imap-store$(EXEEXT) \
+       imap-append$(EXEEXT) imap-examine$(EXEEXT) \
+       imap-search$(EXEEXT) imap-create$(EXEEXT) imap-delete$(EXEEXT) \
+       imap-copy$(EXEEXT) imap-noop$(EXEEXT) imap-ssl$(EXEEXT) \
+       imap-tls$(EXEEXT) imap-multi$(EXEEXT) url2file$(EXEEXT) \
+       sftpget$(EXEEXT) ftpsget$(EXEEXT) postinmemory$(EXEEXT)
 subdir = docs/examples
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
 subdir = docs/examples
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
@@ -294,11 +324,104 @@ https_LDADD = $(LDADD)
 @USE_EXPLICIT_LIB_DEPS_FALSE@https_DEPENDENCIES =  \
 @USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
 @USE_EXPLICIT_LIB_DEPS_TRUE@https_DEPENDENCIES = $(LIBDIR)/libcurl.la
 @USE_EXPLICIT_LIB_DEPS_FALSE@https_DEPENDENCIES =  \
 @USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
 @USE_EXPLICIT_LIB_DEPS_TRUE@https_DEPENDENCIES = $(LIBDIR)/libcurl.la
-imap_SOURCES = imap.c
-imap_OBJECTS = imap.$(OBJEXT)
-imap_LDADD = $(LDADD)
-@USE_EXPLICIT_LIB_DEPS_FALSE@imap_DEPENDENCIES = $(LIBDIR)/libcurl.la
-@USE_EXPLICIT_LIB_DEPS_TRUE@imap_DEPENDENCIES = $(LIBDIR)/libcurl.la
+imap_append_SOURCES = imap-append.c
+imap_append_OBJECTS = imap-append.$(OBJEXT)
+imap_append_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@imap_append_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@imap_append_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
+imap_copy_SOURCES = imap-copy.c
+imap_copy_OBJECTS = imap-copy.$(OBJEXT)
+imap_copy_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@imap_copy_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@imap_copy_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
+imap_create_SOURCES = imap-create.c
+imap_create_OBJECTS = imap-create.$(OBJEXT)
+imap_create_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@imap_create_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@imap_create_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
+imap_delete_SOURCES = imap-delete.c
+imap_delete_OBJECTS = imap-delete.$(OBJEXT)
+imap_delete_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@imap_delete_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@imap_delete_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
+imap_examine_SOURCES = imap-examine.c
+imap_examine_OBJECTS = imap-examine.$(OBJEXT)
+imap_examine_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@imap_examine_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@imap_examine_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
+imap_fetch_SOURCES = imap-fetch.c
+imap_fetch_OBJECTS = imap-fetch.$(OBJEXT)
+imap_fetch_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@imap_fetch_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@imap_fetch_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
+imap_list_SOURCES = imap-list.c
+imap_list_OBJECTS = imap-list.$(OBJEXT)
+imap_list_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@imap_list_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@imap_list_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
+imap_lsub_SOURCES = imap-lsub.c
+imap_lsub_OBJECTS = imap-lsub.$(OBJEXT)
+imap_lsub_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@imap_lsub_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@imap_lsub_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
+imap_multi_SOURCES = imap-multi.c
+imap_multi_OBJECTS = imap-multi.$(OBJEXT)
+imap_multi_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@imap_multi_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@imap_multi_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
+imap_noop_SOURCES = imap-noop.c
+imap_noop_OBJECTS = imap-noop.$(OBJEXT)
+imap_noop_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@imap_noop_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@imap_noop_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
+imap_search_SOURCES = imap-search.c
+imap_search_OBJECTS = imap-search.$(OBJEXT)
+imap_search_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@imap_search_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@imap_search_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
+imap_ssl_SOURCES = imap-ssl.c
+imap_ssl_OBJECTS = imap-ssl.$(OBJEXT)
+imap_ssl_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@imap_ssl_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@imap_ssl_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
+imap_store_SOURCES = imap-store.c
+imap_store_OBJECTS = imap-store.$(OBJEXT)
+imap_store_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@imap_store_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@imap_store_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
+imap_tls_SOURCES = imap-tls.c
+imap_tls_OBJECTS = imap-tls.$(OBJEXT)
+imap_tls_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@imap_tls_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@imap_tls_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
 multi_app_SOURCES = multi-app.c
 multi_app_OBJECTS = multi-app.$(OBJEXT)
 multi_app_LDADD = $(LDADD)
 multi_app_SOURCES = multi-app.c
 multi_app_OBJECTS = multi-app.$(OBJEXT)
 multi_app_LDADD = $(LDADD)
@@ -341,18 +464,75 @@ persistant_LDADD = $(LDADD)
 @USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
 @USE_EXPLICIT_LIB_DEPS_TRUE@persistant_DEPENDENCIES =  \
 @USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
 @USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
 @USE_EXPLICIT_LIB_DEPS_TRUE@persistant_DEPENDENCIES =  \
 @USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
-pop3s_SOURCES = pop3s.c
-pop3s_OBJECTS = pop3s.$(OBJEXT)
-pop3s_LDADD = $(LDADD)
-@USE_EXPLICIT_LIB_DEPS_FALSE@pop3s_DEPENDENCIES =  \
+pop3_dele_SOURCES = pop3-dele.c
+pop3_dele_OBJECTS = pop3-dele.$(OBJEXT)
+pop3_dele_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@pop3_dele_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@pop3_dele_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
+pop3_list_SOURCES = pop3-list.c
+pop3_list_OBJECTS = pop3-list.$(OBJEXT)
+pop3_list_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@pop3_list_DEPENDENCIES =  \
 @USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
 @USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
-@USE_EXPLICIT_LIB_DEPS_TRUE@pop3s_DEPENDENCIES = $(LIBDIR)/libcurl.la
-pop3slist_SOURCES = pop3slist.c
-pop3slist_OBJECTS = pop3slist.$(OBJEXT)
-pop3slist_LDADD = $(LDADD)
-@USE_EXPLICIT_LIB_DEPS_FALSE@pop3slist_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_TRUE@pop3_list_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
+pop3_multi_SOURCES = pop3-multi.c
+pop3_multi_OBJECTS = pop3-multi.$(OBJEXT)
+pop3_multi_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@pop3_multi_DEPENDENCIES =  \
 @USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
 @USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
-@USE_EXPLICIT_LIB_DEPS_TRUE@pop3slist_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_TRUE@pop3_multi_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
+pop3_noop_SOURCES = pop3-noop.c
+pop3_noop_OBJECTS = pop3-noop.$(OBJEXT)
+pop3_noop_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@pop3_noop_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@pop3_noop_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
+pop3_retr_SOURCES = pop3-retr.c
+pop3_retr_OBJECTS = pop3-retr.$(OBJEXT)
+pop3_retr_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@pop3_retr_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@pop3_retr_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
+pop3_ssl_SOURCES = pop3-ssl.c
+pop3_ssl_OBJECTS = pop3-ssl.$(OBJEXT)
+pop3_ssl_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@pop3_ssl_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@pop3_ssl_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
+pop3_stat_SOURCES = pop3-stat.c
+pop3_stat_OBJECTS = pop3-stat.$(OBJEXT)
+pop3_stat_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@pop3_stat_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@pop3_stat_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
+pop3_tls_SOURCES = pop3-tls.c
+pop3_tls_OBJECTS = pop3-tls.$(OBJEXT)
+pop3_tls_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@pop3_tls_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@pop3_tls_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
+pop3_top_SOURCES = pop3-top.c
+pop3_top_OBJECTS = pop3-top.$(OBJEXT)
+pop3_top_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@pop3_top_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@pop3_top_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
+pop3_uidl_SOURCES = pop3-uidl.c
+pop3_uidl_OBJECTS = pop3-uidl.$(OBJEXT)
+pop3_uidl_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@pop3_uidl_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@pop3_uidl_DEPENDENCIES =  \
 @USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
 post_callback_SOURCES = post-callback.c
 post_callback_OBJECTS = post-callback.$(OBJEXT)
 @USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
 post_callback_SOURCES = post-callback.c
 post_callback_OBJECTS = post-callback.$(OBJEXT)
@@ -361,6 +541,13 @@ post_callback_LDADD = $(LDADD)
 @USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
 @USE_EXPLICIT_LIB_DEPS_TRUE@post_callback_DEPENDENCIES =  \
 @USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
 @USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
 @USE_EXPLICIT_LIB_DEPS_TRUE@post_callback_DEPENDENCIES =  \
 @USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
+postinmemory_SOURCES = postinmemory.c
+postinmemory_OBJECTS = postinmemory.$(OBJEXT)
+postinmemory_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@postinmemory_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@postinmemory_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
 postit2_SOURCES = postit2.c
 postit2_OBJECTS = postit2.$(OBJEXT)
 postit2_LDADD = $(LDADD)
 postit2_SOURCES = postit2.c
 postit2_OBJECTS = postit2.$(OBJEXT)
 postit2_LDADD = $(LDADD)
@@ -422,13 +609,6 @@ simplepost_LDADD = $(LDADD)
 @USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
 @USE_EXPLICIT_LIB_DEPS_TRUE@simplepost_DEPENDENCIES =  \
 @USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
 @USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
 @USE_EXPLICIT_LIB_DEPS_TRUE@simplepost_DEPENDENCIES =  \
 @USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
-simplesmtp_SOURCES = simplesmtp.c
-simplesmtp_OBJECTS = simplesmtp.$(OBJEXT)
-simplesmtp_LDADD = $(LDADD)
-@USE_EXPLICIT_LIB_DEPS_FALSE@simplesmtp_DEPENDENCIES =  \
-@USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
-@USE_EXPLICIT_LIB_DEPS_TRUE@simplesmtp_DEPENDENCIES =  \
-@USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
 simplessl_SOURCES = simplessl.c
 simplessl_OBJECTS = simplessl.$(OBJEXT)
 simplessl_LDADD = $(LDADD)
 simplessl_SOURCES = simplessl.c
 simplessl_OBJECTS = simplessl.$(OBJEXT)
 simplessl_LDADD = $(LDADD)
@@ -436,6 +616,20 @@ simplessl_LDADD = $(LDADD)
 @USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
 @USE_EXPLICIT_LIB_DEPS_TRUE@simplessl_DEPENDENCIES =  \
 @USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
 @USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
 @USE_EXPLICIT_LIB_DEPS_TRUE@simplessl_DEPENDENCIES =  \
 @USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
+smtp_expn_SOURCES = smtp-expn.c
+smtp_expn_OBJECTS = smtp-expn.$(OBJEXT)
+smtp_expn_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@smtp_expn_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@smtp_expn_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
+smtp_mail_SOURCES = smtp-mail.c
+smtp_mail_OBJECTS = smtp-mail.$(OBJEXT)
+smtp_mail_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@smtp_mail_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@smtp_mail_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
 smtp_multi_SOURCES = smtp-multi.c
 smtp_multi_OBJECTS = smtp-multi.$(OBJEXT)
 smtp_multi_LDADD = $(LDADD)
 smtp_multi_SOURCES = smtp-multi.c
 smtp_multi_OBJECTS = smtp-multi.$(OBJEXT)
 smtp_multi_LDADD = $(LDADD)
@@ -443,6 +637,13 @@ smtp_multi_LDADD = $(LDADD)
 @USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
 @USE_EXPLICIT_LIB_DEPS_TRUE@smtp_multi_DEPENDENCIES =  \
 @USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
 @USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
 @USE_EXPLICIT_LIB_DEPS_TRUE@smtp_multi_DEPENDENCIES =  \
 @USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
+smtp_ssl_SOURCES = smtp-ssl.c
+smtp_ssl_OBJECTS = smtp-ssl.$(OBJEXT)
+smtp_ssl_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@smtp_ssl_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@smtp_ssl_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
 smtp_tls_SOURCES = smtp-tls.c
 smtp_tls_OBJECTS = smtp-tls.$(OBJEXT)
 smtp_tls_LDADD = $(LDADD)
 smtp_tls_SOURCES = smtp-tls.c
 smtp_tls_OBJECTS = smtp-tls.$(OBJEXT)
 smtp_tls_LDADD = $(LDADD)
@@ -450,6 +651,13 @@ smtp_tls_LDADD = $(LDADD)
 @USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
 @USE_EXPLICIT_LIB_DEPS_TRUE@smtp_tls_DEPENDENCIES =  \
 @USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
 @USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
 @USE_EXPLICIT_LIB_DEPS_TRUE@smtp_tls_DEPENDENCIES =  \
 @USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
+smtp_vrfy_SOURCES = smtp-vrfy.c
+smtp_vrfy_OBJECTS = smtp-vrfy.$(OBJEXT)
+smtp_vrfy_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@smtp_vrfy_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@smtp_vrfy_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
 url2file_SOURCES = url2file.c
 url2file_OBJECTS = url2file.$(OBJEXT)
 url2file_LDADD = $(LDADD)
 url2file_SOURCES = url2file.c
 url2file_OBJECTS = url2file.$(OBJEXT)
 url2file_LDADD = $(LDADD)
@@ -495,22 +703,34 @@ SOURCES = 10-at-a-time.c anyauthput.c certinfo.c chkspeed.c \
        cookie_interface.c debug.c externalsocket.c fileupload.c \
        fopen.c ftp-wildcard.c ftpget.c ftpgetinfo.c ftpgetresp.c \
        ftpsget.c ftpupload.c getinfo.c getinmemory.c http-post.c \
        cookie_interface.c debug.c externalsocket.c fileupload.c \
        fopen.c ftp-wildcard.c ftpget.c ftpgetinfo.c ftpgetresp.c \
        ftpsget.c ftpupload.c getinfo.c getinmemory.c http-post.c \
-       httpcustomheader.c httpput.c https.c imap.c multi-app.c \
+       httpcustomheader.c httpput.c https.c imap-append.c imap-copy.c \
+       imap-create.c imap-delete.c imap-examine.c imap-fetch.c \
+       imap-list.c imap-lsub.c imap-multi.c imap-noop.c imap-search.c \
+       imap-ssl.c imap-store.c imap-tls.c multi-app.c \
        multi-debugcallback.c multi-double.c multi-post.c \
        multi-debugcallback.c multi-double.c multi-post.c \
-       multi-single.c persistant.c pop3s.c pop3slist.c \
-       post-callback.c postit2.c progressfunc.c resolve.c rtsp.c \
+       multi-single.c persistant.c pop3-dele.c pop3-list.c \
+       pop3-multi.c pop3-noop.c pop3-retr.c pop3-ssl.c pop3-stat.c \
+       pop3-tls.c pop3-top.c pop3-uidl.c post-callback.c \
+       postinmemory.c postit2.c progressfunc.c resolve.c rtsp.c \
        sendrecv.c sepheaders.c sftpget.c simple.c simplepost.c \
        sendrecv.c sepheaders.c sftpget.c simple.c simplepost.c \
-       simplesmtp.c simplessl.c smtp-multi.c smtp-tls.c url2file.c
+       simplessl.c smtp-expn.c smtp-mail.c smtp-multi.c smtp-ssl.c \
+       smtp-tls.c smtp-vrfy.c url2file.c
 DIST_SOURCES = 10-at-a-time.c anyauthput.c certinfo.c chkspeed.c \
        cookie_interface.c debug.c externalsocket.c fileupload.c \
        fopen.c ftp-wildcard.c ftpget.c ftpgetinfo.c ftpgetresp.c \
        ftpsget.c ftpupload.c getinfo.c getinmemory.c http-post.c \
 DIST_SOURCES = 10-at-a-time.c anyauthput.c certinfo.c chkspeed.c \
        cookie_interface.c debug.c externalsocket.c fileupload.c \
        fopen.c ftp-wildcard.c ftpget.c ftpgetinfo.c ftpgetresp.c \
        ftpsget.c ftpupload.c getinfo.c getinmemory.c http-post.c \
-       httpcustomheader.c httpput.c https.c imap.c multi-app.c \
+       httpcustomheader.c httpput.c https.c imap-append.c imap-copy.c \
+       imap-create.c imap-delete.c imap-examine.c imap-fetch.c \
+       imap-list.c imap-lsub.c imap-multi.c imap-noop.c imap-search.c \
+       imap-ssl.c imap-store.c imap-tls.c multi-app.c \
        multi-debugcallback.c multi-double.c multi-post.c \
        multi-debugcallback.c multi-double.c multi-post.c \
-       multi-single.c persistant.c pop3s.c pop3slist.c \
-       post-callback.c postit2.c progressfunc.c resolve.c rtsp.c \
+       multi-single.c persistant.c pop3-dele.c pop3-list.c \
+       pop3-multi.c pop3-noop.c pop3-retr.c pop3-ssl.c pop3-stat.c \
+       pop3-tls.c pop3-top.c pop3-uidl.c post-callback.c \
+       postinmemory.c postit2.c progressfunc.c resolve.c rtsp.c \
        sendrecv.c sepheaders.c sftpget.c simple.c simplepost.c \
        sendrecv.c sepheaders.c sftpget.c simple.c simplepost.c \
-       simplesmtp.c simplessl.c smtp-multi.c smtp-tls.c url2file.c
+       simplessl.c smtp-expn.c smtp-mail.c smtp-multi.c smtp-ssl.c \
+       smtp-tls.c smtp-vrfy.c url2file.c
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -568,6 +788,7 @@ CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
+CURL_DISABLE_SMB = @CURL_DISABLE_SMB@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
@@ -592,7 +813,6 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_NSS_INITCONTEXT = @HAVE_NSS_INITCONTEXT@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
@@ -601,7 +821,6 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
-KRB4_ENABLED = @KRB4_ENABLED@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
@@ -624,6 +843,7 @@ MKDIR_P = @MKDIR_P@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
+NSS_LIBS = @NSS_LIBS@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
@@ -659,11 +879,13 @@ USE_GNUTLS = @USE_GNUTLS@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
+USE_NGHTTP2 = @USE_NGHTTP2@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
+USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
@@ -747,11 +969,11 @@ LIBDIR = $(top_builddir)/lib
 
 # These examples require external dependencies that may not be commonly
 # available on POSIX systems, so don't bother attempting to compile them here.
 
 # These examples require external dependencies that may not be commonly
 # available on POSIX systems, so don't bother attempting to compile them here.
-COMPLICATED_EXAMPLES = curlgtk.c curlx.c htmltitle.cpp cacertinmem.c      \
-  ftpuploadresume.c ghiper.c hiperfifo.c htmltidy.c multithread.c         \
+COMPLICATED_EXAMPLES = curlgtk.c curlx.c htmltitle.cpp cacertinmem.c       \
+  ftpuploadresume.c ghiper.c hiperfifo.c htmltidy.c multithread.c          \
   opensslthreadlock.c sampleconv.c synctime.c threaded-ssl.c evhiperfifo.c \
   opensslthreadlock.c sampleconv.c synctime.c threaded-ssl.c evhiperfifo.c \
-  smooth-gtk-thread.c version-check.pl href_extractor.c asiohiper.cpp \
-  multi-uv.c xmlstream.c usercertinmem.c
+  smooth-gtk-thread.c version-check.pl href_extractor.c asiohiper.cpp      \
+  multi-uv.c xmlstream.c usercertinmem.c sessioninfo.c
 
 all: all-am
 
 
 all: all-am
 
@@ -882,9 +1104,61 @@ https$(EXEEXT): $(https_OBJECTS) $(https_DEPENDENCIES) $(EXTRA_https_DEPENDENCIE
        @rm -f https$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(https_OBJECTS) $(https_LDADD) $(LIBS)
 
        @rm -f https$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(https_OBJECTS) $(https_LDADD) $(LIBS)
 
-imap$(EXEEXT): $(imap_OBJECTS) $(imap_DEPENDENCIES) $(EXTRA_imap_DEPENDENCIES) 
-       @rm -f imap$(EXEEXT)
-       $(AM_V_CCLD)$(LINK) $(imap_OBJECTS) $(imap_LDADD) $(LIBS)
+imap-append$(EXEEXT): $(imap_append_OBJECTS) $(imap_append_DEPENDENCIES) $(EXTRA_imap_append_DEPENDENCIES) 
+       @rm -f imap-append$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(imap_append_OBJECTS) $(imap_append_LDADD) $(LIBS)
+
+imap-copy$(EXEEXT): $(imap_copy_OBJECTS) $(imap_copy_DEPENDENCIES) $(EXTRA_imap_copy_DEPENDENCIES) 
+       @rm -f imap-copy$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(imap_copy_OBJECTS) $(imap_copy_LDADD) $(LIBS)
+
+imap-create$(EXEEXT): $(imap_create_OBJECTS) $(imap_create_DEPENDENCIES) $(EXTRA_imap_create_DEPENDENCIES) 
+       @rm -f imap-create$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(imap_create_OBJECTS) $(imap_create_LDADD) $(LIBS)
+
+imap-delete$(EXEEXT): $(imap_delete_OBJECTS) $(imap_delete_DEPENDENCIES) $(EXTRA_imap_delete_DEPENDENCIES) 
+       @rm -f imap-delete$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(imap_delete_OBJECTS) $(imap_delete_LDADD) $(LIBS)
+
+imap-examine$(EXEEXT): $(imap_examine_OBJECTS) $(imap_examine_DEPENDENCIES) $(EXTRA_imap_examine_DEPENDENCIES) 
+       @rm -f imap-examine$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(imap_examine_OBJECTS) $(imap_examine_LDADD) $(LIBS)
+
+imap-fetch$(EXEEXT): $(imap_fetch_OBJECTS) $(imap_fetch_DEPENDENCIES) $(EXTRA_imap_fetch_DEPENDENCIES) 
+       @rm -f imap-fetch$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(imap_fetch_OBJECTS) $(imap_fetch_LDADD) $(LIBS)
+
+imap-list$(EXEEXT): $(imap_list_OBJECTS) $(imap_list_DEPENDENCIES) $(EXTRA_imap_list_DEPENDENCIES) 
+       @rm -f imap-list$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(imap_list_OBJECTS) $(imap_list_LDADD) $(LIBS)
+
+imap-lsub$(EXEEXT): $(imap_lsub_OBJECTS) $(imap_lsub_DEPENDENCIES) $(EXTRA_imap_lsub_DEPENDENCIES) 
+       @rm -f imap-lsub$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(imap_lsub_OBJECTS) $(imap_lsub_LDADD) $(LIBS)
+
+imap-multi$(EXEEXT): $(imap_multi_OBJECTS) $(imap_multi_DEPENDENCIES) $(EXTRA_imap_multi_DEPENDENCIES) 
+       @rm -f imap-multi$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(imap_multi_OBJECTS) $(imap_multi_LDADD) $(LIBS)
+
+imap-noop$(EXEEXT): $(imap_noop_OBJECTS) $(imap_noop_DEPENDENCIES) $(EXTRA_imap_noop_DEPENDENCIES) 
+       @rm -f imap-noop$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(imap_noop_OBJECTS) $(imap_noop_LDADD) $(LIBS)
+
+imap-search$(EXEEXT): $(imap_search_OBJECTS) $(imap_search_DEPENDENCIES) $(EXTRA_imap_search_DEPENDENCIES) 
+       @rm -f imap-search$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(imap_search_OBJECTS) $(imap_search_LDADD) $(LIBS)
+
+imap-ssl$(EXEEXT): $(imap_ssl_OBJECTS) $(imap_ssl_DEPENDENCIES) $(EXTRA_imap_ssl_DEPENDENCIES) 
+       @rm -f imap-ssl$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(imap_ssl_OBJECTS) $(imap_ssl_LDADD) $(LIBS)
+
+imap-store$(EXEEXT): $(imap_store_OBJECTS) $(imap_store_DEPENDENCIES) $(EXTRA_imap_store_DEPENDENCIES) 
+       @rm -f imap-store$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(imap_store_OBJECTS) $(imap_store_LDADD) $(LIBS)
+
+imap-tls$(EXEEXT): $(imap_tls_OBJECTS) $(imap_tls_DEPENDENCIES) $(EXTRA_imap_tls_DEPENDENCIES) 
+       @rm -f imap-tls$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(imap_tls_OBJECTS) $(imap_tls_LDADD) $(LIBS)
 
 multi-app$(EXEEXT): $(multi_app_OBJECTS) $(multi_app_DEPENDENCIES) $(EXTRA_multi_app_DEPENDENCIES) 
        @rm -f multi-app$(EXEEXT)
 
 multi-app$(EXEEXT): $(multi_app_OBJECTS) $(multi_app_DEPENDENCIES) $(EXTRA_multi_app_DEPENDENCIES) 
        @rm -f multi-app$(EXEEXT)
@@ -910,18 +1184,54 @@ persistant$(EXEEXT): $(persistant_OBJECTS) $(persistant_DEPENDENCIES) $(EXTRA_pe
        @rm -f persistant$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(persistant_OBJECTS) $(persistant_LDADD) $(LIBS)
 
        @rm -f persistant$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(persistant_OBJECTS) $(persistant_LDADD) $(LIBS)
 
-pop3s$(EXEEXT): $(pop3s_OBJECTS) $(pop3s_DEPENDENCIES) $(EXTRA_pop3s_DEPENDENCIES) 
-       @rm -f pop3s$(EXEEXT)
-       $(AM_V_CCLD)$(LINK) $(pop3s_OBJECTS) $(pop3s_LDADD) $(LIBS)
+pop3-dele$(EXEEXT): $(pop3_dele_OBJECTS) $(pop3_dele_DEPENDENCIES) $(EXTRA_pop3_dele_DEPENDENCIES) 
+       @rm -f pop3-dele$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pop3_dele_OBJECTS) $(pop3_dele_LDADD) $(LIBS)
+
+pop3-list$(EXEEXT): $(pop3_list_OBJECTS) $(pop3_list_DEPENDENCIES) $(EXTRA_pop3_list_DEPENDENCIES) 
+       @rm -f pop3-list$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pop3_list_OBJECTS) $(pop3_list_LDADD) $(LIBS)
 
 
-pop3slist$(EXEEXT): $(pop3slist_OBJECTS) $(pop3slist_DEPENDENCIES) $(EXTRA_pop3slist_DEPENDENCIES) 
-       @rm -f pop3slist$(EXEEXT)
-       $(AM_V_CCLD)$(LINK) $(pop3slist_OBJECTS) $(pop3slist_LDADD) $(LIBS)
+pop3-multi$(EXEEXT): $(pop3_multi_OBJECTS) $(pop3_multi_DEPENDENCIES) $(EXTRA_pop3_multi_DEPENDENCIES) 
+       @rm -f pop3-multi$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pop3_multi_OBJECTS) $(pop3_multi_LDADD) $(LIBS)
+
+pop3-noop$(EXEEXT): $(pop3_noop_OBJECTS) $(pop3_noop_DEPENDENCIES) $(EXTRA_pop3_noop_DEPENDENCIES) 
+       @rm -f pop3-noop$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pop3_noop_OBJECTS) $(pop3_noop_LDADD) $(LIBS)
+
+pop3-retr$(EXEEXT): $(pop3_retr_OBJECTS) $(pop3_retr_DEPENDENCIES) $(EXTRA_pop3_retr_DEPENDENCIES) 
+       @rm -f pop3-retr$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pop3_retr_OBJECTS) $(pop3_retr_LDADD) $(LIBS)
+
+pop3-ssl$(EXEEXT): $(pop3_ssl_OBJECTS) $(pop3_ssl_DEPENDENCIES) $(EXTRA_pop3_ssl_DEPENDENCIES) 
+       @rm -f pop3-ssl$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pop3_ssl_OBJECTS) $(pop3_ssl_LDADD) $(LIBS)
+
+pop3-stat$(EXEEXT): $(pop3_stat_OBJECTS) $(pop3_stat_DEPENDENCIES) $(EXTRA_pop3_stat_DEPENDENCIES) 
+       @rm -f pop3-stat$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pop3_stat_OBJECTS) $(pop3_stat_LDADD) $(LIBS)
+
+pop3-tls$(EXEEXT): $(pop3_tls_OBJECTS) $(pop3_tls_DEPENDENCIES) $(EXTRA_pop3_tls_DEPENDENCIES) 
+       @rm -f pop3-tls$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pop3_tls_OBJECTS) $(pop3_tls_LDADD) $(LIBS)
+
+pop3-top$(EXEEXT): $(pop3_top_OBJECTS) $(pop3_top_DEPENDENCIES) $(EXTRA_pop3_top_DEPENDENCIES) 
+       @rm -f pop3-top$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pop3_top_OBJECTS) $(pop3_top_LDADD) $(LIBS)
+
+pop3-uidl$(EXEEXT): $(pop3_uidl_OBJECTS) $(pop3_uidl_DEPENDENCIES) $(EXTRA_pop3_uidl_DEPENDENCIES) 
+       @rm -f pop3-uidl$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pop3_uidl_OBJECTS) $(pop3_uidl_LDADD) $(LIBS)
 
 post-callback$(EXEEXT): $(post_callback_OBJECTS) $(post_callback_DEPENDENCIES) $(EXTRA_post_callback_DEPENDENCIES) 
        @rm -f post-callback$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(post_callback_OBJECTS) $(post_callback_LDADD) $(LIBS)
 
 
 post-callback$(EXEEXT): $(post_callback_OBJECTS) $(post_callback_DEPENDENCIES) $(EXTRA_post_callback_DEPENDENCIES) 
        @rm -f post-callback$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(post_callback_OBJECTS) $(post_callback_LDADD) $(LIBS)
 
+postinmemory$(EXEEXT): $(postinmemory_OBJECTS) $(postinmemory_DEPENDENCIES) $(EXTRA_postinmemory_DEPENDENCIES) 
+       @rm -f postinmemory$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(postinmemory_OBJECTS) $(postinmemory_LDADD) $(LIBS)
+
 postit2$(EXEEXT): $(postit2_OBJECTS) $(postit2_DEPENDENCIES) $(EXTRA_postit2_DEPENDENCIES) 
        @rm -f postit2$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(postit2_OBJECTS) $(postit2_LDADD) $(LIBS)
 postit2$(EXEEXT): $(postit2_OBJECTS) $(postit2_DEPENDENCIES) $(EXTRA_postit2_DEPENDENCIES) 
        @rm -f postit2$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(postit2_OBJECTS) $(postit2_LDADD) $(LIBS)
@@ -958,22 +1268,34 @@ simplepost$(EXEEXT): $(simplepost_OBJECTS) $(simplepost_DEPENDENCIES) $(EXTRA_si
        @rm -f simplepost$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(simplepost_OBJECTS) $(simplepost_LDADD) $(LIBS)
 
        @rm -f simplepost$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(simplepost_OBJECTS) $(simplepost_LDADD) $(LIBS)
 
-simplesmtp$(EXEEXT): $(simplesmtp_OBJECTS) $(simplesmtp_DEPENDENCIES) $(EXTRA_simplesmtp_DEPENDENCIES) 
-       @rm -f simplesmtp$(EXEEXT)
-       $(AM_V_CCLD)$(LINK) $(simplesmtp_OBJECTS) $(simplesmtp_LDADD) $(LIBS)
-
 simplessl$(EXEEXT): $(simplessl_OBJECTS) $(simplessl_DEPENDENCIES) $(EXTRA_simplessl_DEPENDENCIES) 
        @rm -f simplessl$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(simplessl_OBJECTS) $(simplessl_LDADD) $(LIBS)
 
 simplessl$(EXEEXT): $(simplessl_OBJECTS) $(simplessl_DEPENDENCIES) $(EXTRA_simplessl_DEPENDENCIES) 
        @rm -f simplessl$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(simplessl_OBJECTS) $(simplessl_LDADD) $(LIBS)
 
+smtp-expn$(EXEEXT): $(smtp_expn_OBJECTS) $(smtp_expn_DEPENDENCIES) $(EXTRA_smtp_expn_DEPENDENCIES) 
+       @rm -f smtp-expn$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(smtp_expn_OBJECTS) $(smtp_expn_LDADD) $(LIBS)
+
+smtp-mail$(EXEEXT): $(smtp_mail_OBJECTS) $(smtp_mail_DEPENDENCIES) $(EXTRA_smtp_mail_DEPENDENCIES) 
+       @rm -f smtp-mail$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(smtp_mail_OBJECTS) $(smtp_mail_LDADD) $(LIBS)
+
 smtp-multi$(EXEEXT): $(smtp_multi_OBJECTS) $(smtp_multi_DEPENDENCIES) $(EXTRA_smtp_multi_DEPENDENCIES) 
        @rm -f smtp-multi$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(smtp_multi_OBJECTS) $(smtp_multi_LDADD) $(LIBS)
 
 smtp-multi$(EXEEXT): $(smtp_multi_OBJECTS) $(smtp_multi_DEPENDENCIES) $(EXTRA_smtp_multi_DEPENDENCIES) 
        @rm -f smtp-multi$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(smtp_multi_OBJECTS) $(smtp_multi_LDADD) $(LIBS)
 
+smtp-ssl$(EXEEXT): $(smtp_ssl_OBJECTS) $(smtp_ssl_DEPENDENCIES) $(EXTRA_smtp_ssl_DEPENDENCIES) 
+       @rm -f smtp-ssl$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(smtp_ssl_OBJECTS) $(smtp_ssl_LDADD) $(LIBS)
+
 smtp-tls$(EXEEXT): $(smtp_tls_OBJECTS) $(smtp_tls_DEPENDENCIES) $(EXTRA_smtp_tls_DEPENDENCIES) 
        @rm -f smtp-tls$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(smtp_tls_OBJECTS) $(smtp_tls_LDADD) $(LIBS)
 
 smtp-tls$(EXEEXT): $(smtp_tls_OBJECTS) $(smtp_tls_DEPENDENCIES) $(EXTRA_smtp_tls_DEPENDENCIES) 
        @rm -f smtp-tls$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(smtp_tls_OBJECTS) $(smtp_tls_LDADD) $(LIBS)
 
+smtp-vrfy$(EXEEXT): $(smtp_vrfy_OBJECTS) $(smtp_vrfy_DEPENDENCIES) $(EXTRA_smtp_vrfy_DEPENDENCIES) 
+       @rm -f smtp-vrfy$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(smtp_vrfy_OBJECTS) $(smtp_vrfy_LDADD) $(LIBS)
+
 url2file$(EXEEXT): $(url2file_OBJECTS) $(url2file_DEPENDENCIES) $(EXTRA_url2file_DEPENDENCIES) 
        @rm -f url2file$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(url2file_OBJECTS) $(url2file_LDADD) $(LIBS)
 url2file$(EXEEXT): $(url2file_OBJECTS) $(url2file_DEPENDENCIES) $(EXTRA_url2file_DEPENDENCIES) 
        @rm -f url2file$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(url2file_OBJECTS) $(url2file_LDADD) $(LIBS)
@@ -1005,16 +1327,38 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/httpcustomheader.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/httpput.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/https.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/httpcustomheader.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/httpput.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/https.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imap.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imap-append.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imap-copy.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imap-create.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imap-delete.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imap-examine.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imap-fetch.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imap-list.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imap-lsub.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imap-multi.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imap-noop.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imap-search.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imap-ssl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imap-store.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imap-tls.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-app.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-debugcallback.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-double.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-post.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-single.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/persistant.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-app.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-debugcallback.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-double.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-post.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-single.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/persistant.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pop3s.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pop3slist.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pop3-dele.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pop3-list.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pop3-multi.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pop3-noop.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pop3-retr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pop3-ssl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pop3-stat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pop3-tls.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pop3-top.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pop3-uidl.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/post-callback.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/post-callback.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/postinmemory.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/postit2.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/progressfunc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resolve.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/postit2.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/progressfunc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resolve.Po@am__quote@
@@ -1024,29 +1368,35 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sftpget.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simplepost.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sftpget.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simplepost.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simplesmtp.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simplessl.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simplessl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smtp-expn.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smtp-mail.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smtp-multi.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smtp-multi.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smtp-ssl.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smtp-tls.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smtp-tls.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smtp-vrfy.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/url2file.Po@am__quote@
 
 .c.o:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/url2file.Po@am__quote@
 
 .c.o:
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
 
 .c.obj:
 
 .c.obj:
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
 
 .c.lo:
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+@am__fastdepCC_TRUE@   $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Plo
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
index 6752db4..6c8df8e 100644 (file)
@@ -1,16 +1,42 @@
+#***************************************************************************
+#                                  _   _ ____  _
+#  Project                     ___| | | |  _ \| |
+#                             / __| | | | |_) | |
+#                            | (__| |_| |  _ <| |___
+#                             \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at http://curl.haxx.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
+
 # These are all libcurl example programs to be test compiled
 check_PROGRAMS = 10-at-a-time anyauthput cookie_interface debug fileupload \
   fopen ftpget ftpgetresp ftpupload getinfo getinmemory http-post httpput  \
   https multi-app multi-debugcallback multi-double multi-post multi-single \
   persistant post-callback postit2 sepheaders simple simplepost simplessl  \
 # These are all libcurl example programs to be test compiled
 check_PROGRAMS = 10-at-a-time anyauthput cookie_interface debug fileupload \
   fopen ftpget ftpgetresp ftpupload getinfo getinmemory http-post httpput  \
   https multi-app multi-debugcallback multi-double multi-post multi-single \
   persistant post-callback postit2 sepheaders simple simplepost simplessl  \
-  sendrecv httpcustomheader certinfo chkspeed ftpgetinfo ftp-wildcard \
-  smtp-multi simplesmtp smtp-tls rtsp externalsocket resolve \
-  progressfunc pop3s pop3slist imap url2file sftpget ftpsget
+  sendrecv httpcustomheader certinfo chkspeed ftpgetinfo ftp-wildcard      \
+  smtp-mail smtp-multi smtp-ssl smtp-tls smtp-vrfy smtp-expn rtsp          \
+  externalsocket resolve progressfunc pop3-retr pop3-list pop3-uidl        \
+  pop3-dele pop3-top pop3-stat pop3-noop pop3-ssl pop3-tls pop3-multi      \
+  imap-list imap-lsub imap-fetch imap-store imap-append imap-examine       \
+  imap-search imap-create imap-delete imap-copy imap-noop imap-ssl         \
+  imap-tls imap-multi url2file sftpget ftpsget postinmemory
 
 # These examples require external dependencies that may not be commonly
 # available on POSIX systems, so don't bother attempting to compile them here.
 
 # These examples require external dependencies that may not be commonly
 # available on POSIX systems, so don't bother attempting to compile them here.
-COMPLICATED_EXAMPLES = curlgtk.c curlx.c htmltitle.cpp cacertinmem.c      \
-  ftpuploadresume.c ghiper.c hiperfifo.c htmltidy.c multithread.c         \
+COMPLICATED_EXAMPLES = curlgtk.c curlx.c htmltitle.cpp cacertinmem.c       \
+  ftpuploadresume.c ghiper.c hiperfifo.c htmltidy.c multithread.c          \
   opensslthreadlock.c sampleconv.c synctime.c threaded-ssl.c evhiperfifo.c \
   opensslthreadlock.c sampleconv.c synctime.c threaded-ssl.c evhiperfifo.c \
-  smooth-gtk-thread.c version-check.pl href_extractor.c asiohiper.cpp \
-  multi-uv.c xmlstream.c usercertinmem.c
+  smooth-gtk-thread.c version-check.pl href_extractor.c asiohiper.cpp      \
+  multi-uv.c xmlstream.c usercertinmem.c sessioninfo.c
index 6bfb9fa..f607013 100644 (file)
@@ -38,7 +38,7 @@ ZLIB_PATH = ../../../zlib-1.2.8
 endif
 # Edit the path below to point to the base of your OpenSSL package.
 ifndef OPENSSL_PATH
 endif
 # Edit the path below to point to the base of your OpenSSL package.
 ifndef OPENSSL_PATH
-OPENSSL_PATH = ../../../openssl-0.9.8y
+OPENSSL_PATH = ../../../openssl-0.9.8zc
 endif
 # Edit the path below to point to the base of your LibSSH2 package.
 ifndef LIBSSH2_PATH
 endif
 # Edit the path below to point to the base of your LibSSH2 package.
 ifndef LIBSSH2_PATH
@@ -148,9 +148,6 @@ endif
 ifeq ($(findstring -sspi,$(CFG)),-sspi)
 SSPI = 1
 endif
 ifeq ($(findstring -sspi,$(CFG)),-sspi)
 SSPI = 1
 endif
-ifeq ($(findstring -spnego,$(CFG)),-spnego)
-SPNEGO = 1
-endif
 ifeq ($(findstring -ldaps,$(CFG)),-ldaps)
 LDAPS = 1
 endif
 ifeq ($(findstring -ldaps,$(CFG)),-ldaps)
 LDAPS = 1
 endif
@@ -230,9 +227,6 @@ ifdef SSPI
     CFLAGS += -DUSE_SCHANNEL
   endif
 endif
     CFLAGS += -DUSE_SCHANNEL
   endif
 endif
-ifdef SPNEGO
-  CFLAGS += -DHAVE_SPNEGO
-endif
 ifdef IPV6
   CFLAGS += -DENABLE_IPV6 -D_WIN32_WINNT=0x0501
 endif
 ifdef IPV6
   CFLAGS += -DENABLE_IPV6 -D_WIN32_WINNT=0x0501
 endif
index 2816cbd..3fd6b3e 100644 (file)
@@ -19,7 +19,7 @@ endif
 
 # Edit the path below to point to the base of your OpenSSL package.
 ifndef OPENSSL_PATH
 
 # Edit the path below to point to the base of your OpenSSL package.
 ifndef OPENSSL_PATH
-OPENSSL_PATH = ../../../openssl-0.9.8y
+OPENSSL_PATH = ../../../openssl-0.9.8zc
 endif
 
 # Edit the path below to point to the base of your LibSSH2 package.
 endif
 
 # Edit the path below to point to the base of your LibSSH2 package.
@@ -211,9 +211,6 @@ endif
 ifeq ($(findstring -idn,$(CFG)),-idn)
 WITH_IDN = 1
 endif
 ifeq ($(findstring -idn,$(CFG)),-idn)
 WITH_IDN = 1
 endif
-ifeq ($(findstring -spnego,$(CFG)),-spnego)
-WITH_SPNEGO = 1
-endif
 ifeq ($(findstring -ipv6,$(CFG)),-ipv6)
 ENABLE_IPV6 = 1
 endif
 ifeq ($(findstring -ipv6,$(CFG)),-ipv6)
 ENABLE_IPV6 = 1
 endif
@@ -247,10 +244,6 @@ ifdef WITH_SSL
        LDLIBS += $(OPENSSL_PATH)/out_nw_$(LIBARCH_L)/ssl.$(LIBEXT)
        LDLIBS += $(OPENSSL_PATH)/out_nw_$(LIBARCH_L)/crypto.$(LIBEXT)
        IMPORTS += GetProcessSwitchCount RunningProcess
        LDLIBS += $(OPENSSL_PATH)/out_nw_$(LIBARCH_L)/ssl.$(LIBEXT)
        LDLIBS += $(OPENSSL_PATH)/out_nw_$(LIBARCH_L)/crypto.$(LIBEXT)
        IMPORTS += GetProcessSwitchCount RunningProcess
-ifdef WITH_SPNEGO
-       # INCLUDES += -I$(FBOPENSSL_PATH)/include
-       LDLIBS += $(FBOPENSSL_PATH)/nw/fbopenssl.$(LIBEXT)
-endif
 else
 ifdef WITH_AXTLS
        INCLUDES += -I$(AXTLS_PATH)/inc
 else
 ifdef WITH_AXTLS
        INCLUDES += -I$(AXTLS_PATH)/inc
index 44836fd..eb5cd03 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -84,7 +84,7 @@ static int multi_timer_cb(CURLM *multi, long timeout_ms, GlobalInfo *g)
   /* cancel running timer */
   timer.cancel();
 
   /* cancel running timer */
   timer.cancel();
 
-  if ( timeout_ms > 0 )
+  if(timeout_ms > 0)
   {
     /* update timer */
     timer.expires_from_now(boost::posix_time::millisec(timeout_ms));
   {
     /* update timer */
     timer.expires_from_now(boost::posix_time::millisec(timeout_ms));
@@ -103,26 +103,44 @@ static int multi_timer_cb(CURLM *multi, long timeout_ms, GlobalInfo *g)
 /* Die if we get a bad CURLMcode somewhere */
 static void mcode_or_die(const char *where, CURLMcode code)
 {
 /* Die if we get a bad CURLMcode somewhere */
 static void mcode_or_die(const char *where, CURLMcode code)
 {
-  if ( CURLM_OK != code )
+  if(CURLM_OK != code)
   {
     const char *s;
   {
     const char *s;
-    switch ( code )
+    switch(code)
     {
     {
-    case CURLM_CALL_MULTI_PERFORM: s="CURLM_CALL_MULTI_PERFORM"; break;
-    case CURLM_BAD_HANDLE:         s="CURLM_BAD_HANDLE";         break;
-    case CURLM_BAD_EASY_HANDLE:    s="CURLM_BAD_EASY_HANDLE";    break;
-    case CURLM_OUT_OF_MEMORY:      s="CURLM_OUT_OF_MEMORY";      break;
-    case CURLM_INTERNAL_ERROR:     s="CURLM_INTERNAL_ERROR";     break;
-    case CURLM_UNKNOWN_OPTION:     s="CURLM_UNKNOWN_OPTION";     break;
-    case CURLM_LAST:               s="CURLM_LAST";               break;
-    default: s="CURLM_unknown";
+    case CURLM_CALL_MULTI_PERFORM:
+      s = "CURLM_CALL_MULTI_PERFORM";
       break;
       break;
-    case     CURLM_BAD_SOCKET:         s="CURLM_BAD_SOCKET";
+    case CURLM_BAD_HANDLE:
+      s = "CURLM_BAD_HANDLE";
+      break;
+    case CURLM_BAD_EASY_HANDLE:
+      s = "CURLM_BAD_EASY_HANDLE";
+      break;
+    case CURLM_OUT_OF_MEMORY:
+      s = "CURLM_OUT_OF_MEMORY";
+      break;
+    case CURLM_INTERNAL_ERROR:
+      s = "CURLM_INTERNAL_ERROR";
+      break;
+    case CURLM_UNKNOWN_OPTION:
+      s = "CURLM_UNKNOWN_OPTION";
+      break;
+    case CURLM_LAST:
+      s = "CURLM_LAST";
+      break;
+    default:
+      s = "CURLM_unknown";
+      break;
+    case CURLM_BAD_SOCKET:
+      s = "CURLM_BAD_SOCKET";
       fprintf(MSG_OUT, "\nERROR: %s returns %s", where, s);
       /* ignore this error */
       return;
     }
       fprintf(MSG_OUT, "\nERROR: %s returns %s", where, s);
       /* ignore this error */
       return;
     }
+
     fprintf(MSG_OUT, "\nERROR: %s returns %s", where, s);
     fprintf(MSG_OUT, "\nERROR: %s returns %s", where, s);
+
     exit(code);
   }
 }
     exit(code);
   }
 }
@@ -139,9 +157,9 @@ static void check_multi_info(GlobalInfo *g)
 
   fprintf(MSG_OUT, "\nREMAINING: %d", g->still_running);
 
 
   fprintf(MSG_OUT, "\nREMAINING: %d", g->still_running);
 
-  while ((msg = curl_multi_info_read(g->multi, &msgs_left)))
+  while((msg = curl_multi_info_read(g->multi, &msgs_left)))
   {
   {
-    if (msg->msg == CURLMSG_DONE)
+    if(msg->msg == CURLMSG_DONE)
     {
       easy = msg->easy_handle;
       res = msg->data.result;
     {
       easy = msg->easy_handle;
       res = msg->data.result;
@@ -157,17 +175,19 @@ static void check_multi_info(GlobalInfo *g)
 }
 
 /* Called by asio when there is an action on a socket */
 }
 
 /* Called by asio when there is an action on a socket */
-static void event_cb(GlobalInfo * g, boost::asio::ip::tcp::socket * tcp_socket, int action)
+static void event_cb(GlobalInfo *g, boost::asio::ip::tcp::socket *tcp_socket,
+                     int action)
 {
   fprintf(MSG_OUT, "\nevent_cb: action=%d", action);
 
   CURLMcode rc;
 {
   fprintf(MSG_OUT, "\nevent_cb: action=%d", action);
 
   CURLMcode rc;
-  rc = curl_multi_socket_action(g->multi, tcp_socket->native_handle(), action, &g->still_running);
+  rc = curl_multi_socket_action(g->multi, tcp_socket->native_handle(), action,
+                                &g->still_running);
 
   mcode_or_die("event_cb: curl_multi_socket_action", rc);
   check_multi_info(g);
 
 
   mcode_or_die("event_cb: curl_multi_socket_action", rc);
   check_multi_info(g);
 
-  if ( g->still_running <= 0 )
+  if(g->still_running <= 0)
   {
     fprintf(MSG_OUT, "\nlast transfer done, kill timeout");
     timer.cancel();
   {
     fprintf(MSG_OUT, "\nlast transfer done, kill timeout");
     timer.cancel();
@@ -177,7 +197,7 @@ static void event_cb(GlobalInfo * g, boost::asio::ip::tcp::socket * tcp_socket,
 /* Called by asio when our timeout expires */
 static void timer_cb(const boost::system::error_code & error, GlobalInfo *g)
 {
 /* Called by asio when our timeout expires */
 static void timer_cb(const boost::system::error_code & error, GlobalInfo *g)
 {
-  if ( !error)
+  if(!error)
   {
     fprintf(MSG_OUT, "\ntimer_cb: ");
 
   {
     fprintf(MSG_OUT, "\ntimer_cb: ");
 
@@ -194,7 +214,7 @@ static void remsock(int *f, GlobalInfo *g)
 {
   fprintf(MSG_OUT, "\nremsock: ");
 
 {
   fprintf(MSG_OUT, "\nremsock: ");
 
-  if ( f )
+  if(f)
   {
     free(f);
   }
   {
     free(f);
   }
@@ -206,9 +226,10 @@ static void setsock(int *fdp, curl_socket_t s, CURL*e, int act, GlobalInfo*g)
 
   std::map<curl_socket_t, boost::asio::ip::tcp::socket *>::iterator it = socket_map.find(s);
 
 
   std::map<curl_socket_t, boost::asio::ip::tcp::socket *>::iterator it = socket_map.find(s);
 
-  if ( it == socket_map.end() )
+  if(it == socket_map.end())
   {
     fprintf(MSG_OUT, "\nsocket %d is a c-ares socket, ignoring", s);
   {
     fprintf(MSG_OUT, "\nsocket %d is a c-ares socket, ignoring", s);
+
     return;
   }
 
     return;
   }
 
@@ -216,44 +237,36 @@ static void setsock(int *fdp, curl_socket_t s, CURL*e, int act, GlobalInfo*g)
 
   *fdp = act;
 
 
   *fdp = act;
 
-  if ( act == CURL_POLL_IN )
+  if(act == CURL_POLL_IN)
   {
     fprintf(MSG_OUT, "\nwatching for socket to become readable");
 
     tcp_socket->async_read_some(boost::asio::null_buffers(),
   {
     fprintf(MSG_OUT, "\nwatching for socket to become readable");
 
     tcp_socket->async_read_some(boost::asio::null_buffers(),
-                             boost::bind(&event_cb, g,
-                               tcp_socket,
-                               act));
+                                boost::bind(&event_cb, g, tcp_socket, act));
   }
   }
-  else if ( act == CURL_POLL_OUT )
+  else if (act == CURL_POLL_OUT)
   {
     fprintf(MSG_OUT, "\nwatching for socket to become writable");
 
     tcp_socket->async_write_some(boost::asio::null_buffers(),
   {
     fprintf(MSG_OUT, "\nwatching for socket to become writable");
 
     tcp_socket->async_write_some(boost::asio::null_buffers(),
-                              boost::bind(&event_cb, g,
-                                tcp_socket,
-                                act));
+                                 boost::bind(&event_cb, g, tcp_socket, act));
   }
   }
-  else if ( act == CURL_POLL_INOUT )
+  else if(act == CURL_POLL_INOUT)
   {
     fprintf(MSG_OUT, "\nwatching for socket to become readable & writable");
 
     tcp_socket->async_read_some(boost::asio::null_buffers(),
   {
     fprintf(MSG_OUT, "\nwatching for socket to become readable & writable");
 
     tcp_socket->async_read_some(boost::asio::null_buffers(),
-                             boost::bind(&event_cb, g,
-                               tcp_socket,
-                               act));
+                                boost::bind(&event_cb, g, tcp_socket, act));
 
     tcp_socket->async_write_some(boost::asio::null_buffers(),
 
     tcp_socket->async_write_some(boost::asio::null_buffers(),
-                              boost::bind(&event_cb, g,
-                                tcp_socket,
-                                act));
+                                 boost::bind(&event_cb, g, tcp_socket, act));
   }
 }
 
   }
 }
 
-
 static void addsock(curl_socket_t s, CURL *easy, int action, GlobalInfo *g)
 {
 static void addsock(curl_socket_t s, CURL *easy, int action, GlobalInfo *g)
 {
-  int *fdp = (int *)calloc(sizeof(int), 1); /* fdp is used to store current action */
+  /* fdp is used to store current action */
+  int *fdp = (int *) calloc(sizeof(int), 1);
 
   setsock(fdp, s, easy, action, g);
   curl_multi_assign(g->multi, s, fdp);
 
   setsock(fdp, s, easy, action, g);
   curl_multi_assign(g->multi, s, fdp);
@@ -265,20 +278,20 @@ static int sock_cb(CURL *e, curl_socket_t s, int what, void *cbp, void *sockp)
   fprintf(MSG_OUT, "\nsock_cb: socket=%d, what=%d, sockp=%p", s, what, sockp);
 
   GlobalInfo *g = (GlobalInfo*) cbp;
   fprintf(MSG_OUT, "\nsock_cb: socket=%d, what=%d, sockp=%p", s, what, sockp);
 
   GlobalInfo *g = (GlobalInfo*) cbp;
-  int *actionp = (int*) sockp;
-  const char *whatstr[]={ "none", "IN", "OUT", "INOUT", "REMOVE"};
+  int *actionp = (int *) sockp;
+  const char *whatstr[] = { "none", "IN", "OUT", "INOUT", "REMOVE"};
 
   fprintf(MSG_OUT,
           "\nsocket callback: s=%d e=%p what=%s ", s, e, whatstr[what]);
 
 
   fprintf(MSG_OUT,
           "\nsocket callback: s=%d e=%p what=%s ", s, e, whatstr[what]);
 
-  if ( what == CURL_POLL_REMOVE )
+  if(what == CURL_POLL_REMOVE)
   {
     fprintf(MSG_OUT, "\n");
     remsock(actionp, g);
   }
   else
   {
   {
     fprintf(MSG_OUT, "\n");
     remsock(actionp, g);
   }
   else
   {
-    if ( !actionp )
+    if(!actionp)
     {
       fprintf(MSG_OUT, "\nAdding data: %s", whatstr[what]);
       addsock(s, e, what, g);
     {
       fprintf(MSG_OUT, "\nAdding data: %s", whatstr[what]);
       addsock(s, e, what, g);
@@ -291,19 +304,19 @@ static int sock_cb(CURL *e, curl_socket_t s, int what, void *cbp, void *sockp)
       setsock(actionp, s, e, what, g);
     }
   }
       setsock(actionp, s, e, what, g);
     }
   }
+
   return 0;
 }
 
   return 0;
 }
 
-
 /* CURLOPT_WRITEFUNCTION */
 static size_t write_cb(void *ptr, size_t size, size_t nmemb, void *data)
 {
 
   size_t written = size * nmemb;
 /* CURLOPT_WRITEFUNCTION */
 static size_t write_cb(void *ptr, size_t size, size_t nmemb, void *data)
 {
 
   size_t written = size * nmemb;
-  char* pBuffer = (char*)malloc(written + 1);
+  char* pBuffer = (char *) malloc(written + 1);
 
   strncpy(pBuffer, (const char *)ptr, written);
 
   strncpy(pBuffer, (const char *)ptr, written);
-  pBuffer [written] = '\0';
+  pBuffer[written] = '\0';
 
   fprintf(MSG_OUT, "%s", pBuffer);
 
 
   fprintf(MSG_OUT, "%s", pBuffer);
 
@@ -312,12 +325,12 @@ static size_t write_cb(void *ptr, size_t size, size_t nmemb, void *data)
   return written;
 }
 
   return written;
 }
 
-
 /* CURLOPT_PROGRESSFUNCTION */
 /* CURLOPT_PROGRESSFUNCTION */
-static int prog_cb (void *p, double dltotal, double dlnow, double ult,
-                    double uln)
+static int prog_cb(void *p, double dltotal, double dlnow, double ult,
+                   double uln)
 {
   ConnInfo *conn = (ConnInfo *)p;
 {
   ConnInfo *conn = (ConnInfo *)p;
+
   (void)ult;
   (void)uln;
 
   (void)ult;
   (void)uln;
 
@@ -328,16 +341,15 @@ static int prog_cb (void *p, double dltotal, double dlnow, double ult,
 }
 
 /* CURLOPT_OPENSOCKETFUNCTION */
 }
 
 /* CURLOPT_OPENSOCKETFUNCTION */
-static curl_socket_t opensocket(void *clientp,
-                                curlsocktype purpose,
+static curl_socket_t opensocket(void *clientp, curlsocktype purpose,
                                 struct curl_sockaddr *address)
 {
   fprintf(MSG_OUT, "\nopensocket :");
 
   curl_socket_t sockfd = CURL_SOCKET_BAD;
 
                                 struct curl_sockaddr *address)
 {
   fprintf(MSG_OUT, "\nopensocket :");
 
   curl_socket_t sockfd = CURL_SOCKET_BAD;
 
-  /* restrict to ipv4 */
-  if (purpose == CURLSOCKTYPE_IPCXN && address->family == AF_INET)
+  /* restrict to IPv4 */
+  if(purpose == CURLSOCKTYPE_IPCXN && address->family == AF_INET)
   {
     /* create a tcp socket object */
     boost::asio::ip::tcp::socket *tcp_socket = new boost::asio::ip::tcp::socket(io_service);
   {
     /* create a tcp socket object */
     boost::asio::ip::tcp::socket *tcp_socket = new boost::asio::ip::tcp::socket(io_service);
@@ -346,9 +358,9 @@ static curl_socket_t opensocket(void *clientp,
     boost::system::error_code ec;
     tcp_socket->open(boost::asio::ip::tcp::v4(), ec);
 
     boost::system::error_code ec;
     tcp_socket->open(boost::asio::ip::tcp::v4(), ec);
 
-    if (ec)
+    if(ec)
     {
     {
-      //An error occurred
+      /* An error occurred */
       std::cout << std::endl << "Couldn't open socket [" << ec << "][" << ec.message() << "]";
       fprintf(MSG_OUT, "\nERROR: Returning CURL_SOCKET_BAD to signal error");
     }
       std::cout << std::endl << "Couldn't open socket [" << ec << "][" << ec.message() << "]";
       fprintf(MSG_OUT, "\nERROR: Returning CURL_SOCKET_BAD to signal error");
     }
@@ -372,7 +384,7 @@ static int closesocket(void *clientp, curl_socket_t item)
 
   std::map<curl_socket_t, boost::asio::ip::tcp::socket *>::iterator it = socket_map.find(item);
 
 
   std::map<curl_socket_t, boost::asio::ip::tcp::socket *>::iterator it = socket_map.find(item);
 
-  if ( it != socket_map.end() )
+  if(it != socket_map.end())
   {
     delete it->second;
     socket_map.erase(it);
   {
     delete it->second;
     socket_map.erase(it);
@@ -382,22 +394,21 @@ static int closesocket(void *clientp, curl_socket_t item)
 }
 
 /* Create a new easy handle, and add it to the global curl_multi */
 }
 
 /* Create a new easy handle, and add it to the global curl_multi */
-static void new_conn(char *url, GlobalInfo *g )
+static void new_conn(char *url, GlobalInfo *g)
 {
   ConnInfo *conn;
   CURLMcode rc;
 
 {
   ConnInfo *conn;
   CURLMcode rc;
 
-  conn = (ConnInfo *)calloc(1, sizeof(ConnInfo));
-  memset(conn, 0, sizeof(ConnInfo));
-  conn->error[0]='\0';
+  conn = (ConnInfo *) calloc(1, sizeof(ConnInfo));
 
   conn->easy = curl_easy_init();
 
   conn->easy = curl_easy_init();
-
-  if ( !conn->easy )
+  if(!conn->easy)
   {
     fprintf(MSG_OUT, "\ncurl_easy_init() failed, exiting!");
   {
     fprintf(MSG_OUT, "\ncurl_easy_init() failed, exiting!");
+
     exit(2);
   }
     exit(2);
   }
+
   conn->global = g;
   conn->url = strdup(url);
   curl_easy_setopt(conn->easy, CURLOPT_URL, conn->url);
   conn->global = g;
   conn->url = strdup(url);
   curl_easy_setopt(conn->easy, CURLOPT_URL, conn->url);
@@ -431,6 +442,7 @@ int main(int argc, char **argv)
 {
   GlobalInfo g;
   CURLMcode rc;
 {
   GlobalInfo g;
   CURLMcode rc;
+
   (void)argc;
   (void)argv;
 
   (void)argc;
   (void)argv;
 
@@ -450,5 +462,6 @@ int main(int argc, char **argv)
   curl_multi_cleanup(g.multi);
 
   fprintf(MSG_OUT, "\ndone.\n");
   curl_multi_cleanup(g.multi);
 
   fprintf(MSG_OUT, "\ndone.\n");
+
   return 0;
 }
   return 0;
 }
index 051afbc..30a5153 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -103,6 +103,10 @@ static CURLcode sslctx_function(CURL * curl, void * sslctx, void * parm)
   if (X509_STORE_add_cert(store, cert)==0)
     printf("error adding certificate\n");
 
   if (X509_STORE_add_cert(store, cert)==0)
     printf("error adding certificate\n");
 
+  /* decrease reference counts */
+  X509_free(cert);
+  BIO_free(bio);
+
   /* all set to go */
   return CURLE_OK ;
 }
   /* all set to go */
   return CURLE_OK ;
 }
@@ -121,7 +125,7 @@ int main(void)
   rv=curl_easy_setopt(ch,CURLOPT_WRITEFUNCTION, *writefunction);
   rv=curl_easy_setopt(ch,CURLOPT_WRITEDATA, stdout);
   rv=curl_easy_setopt(ch,CURLOPT_HEADERFUNCTION, *writefunction);
   rv=curl_easy_setopt(ch,CURLOPT_WRITEFUNCTION, *writefunction);
   rv=curl_easy_setopt(ch,CURLOPT_WRITEDATA, stdout);
   rv=curl_easy_setopt(ch,CURLOPT_HEADERFUNCTION, *writefunction);
-  rv=curl_easy_setopt(ch,CURLOPT_WRITEHEADER, stderr);
+  rv=curl_easy_setopt(ch,CURLOPT_HEADERDATA, stderr);
   rv=curl_easy_setopt(ch,CURLOPT_SSLCERTTYPE,"PEM");
   rv=curl_easy_setopt(ch,CURLOPT_SSL_VERIFYPEER,1L);
   rv=curl_easy_setopt(ch, CURLOPT_URL, "https://www.example.com/");
   rv=curl_easy_setopt(ch,CURLOPT_SSLCERTTYPE,"PEM");
   rv=curl_easy_setopt(ch,CURLOPT_SSL_VERIFYPEER,1L);
   rv=curl_easy_setopt(ch, CURLOPT_URL, "https://www.example.com/");
index c2e87fc..e03801d 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -133,7 +133,6 @@ static void mcode_or_die(const char *where, CURLMcode code)
     const char *s;
     switch ( code )
     {
     const char *s;
     switch ( code )
     {
-    case CURLM_CALL_MULTI_PERFORM: s="CURLM_CALL_MULTI_PERFORM"; break;
     case CURLM_BAD_HANDLE:         s="CURLM_BAD_HANDLE";         break;
     case CURLM_BAD_EASY_HANDLE:    s="CURLM_BAD_EASY_HANDLE";    break;
     case CURLM_OUT_OF_MEMORY:      s="CURLM_OUT_OF_MEMORY";      break;
     case CURLM_BAD_HANDLE:         s="CURLM_BAD_HANDLE";         break;
     case CURLM_BAD_EASY_HANDLE:    s="CURLM_BAD_EASY_HANDLE";    break;
     case CURLM_OUT_OF_MEMORY:      s="CURLM_OUT_OF_MEMORY";      break;
index 1b326c8..5486d12 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -38,7 +38,7 @@
 #include <sys/socket.h>       /*  socket definitions        */
 #include <netinet/in.h>
 #include <arpa/inet.h>        /*  inet (3) funtions         */
 #include <sys/socket.h>       /*  socket definitions        */
 #include <netinet/in.h>
 #include <arpa/inet.h>        /*  inet (3) funtions         */
-#include <unistd.h>           /*  misc. UNIX functions      */
+#include <unistd.h>           /*  misc. Unix functions      */
 #endif
 
 #include <errno.h>
 #endif
 
 #include <errno.h>
index 6fe5c0f..3d2a817 100644 (file)
@@ -128,6 +128,7 @@ static int fill_buffer(URL_FILE *file, size_t want)
   fd_set fdexcep;
   struct timeval timeout;
   int rc;
   fd_set fdexcep;
   struct timeval timeout;
   int rc;
+  CURLMcode mc; /* curl_multi_fdset() return code */
 
   /* only attempt to fill buffer if transactions still running and buffer
    * doesnt exceed required size already
 
   /* only attempt to fill buffer if transactions still running and buffer
    * doesnt exceed required size already
@@ -158,15 +159,35 @@ static int fill_buffer(URL_FILE *file, size_t want)
     }
 
     /* get file descriptors from the transfers */
     }
 
     /* get file descriptors from the transfers */
-    curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
+    mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
 
 
-    /* In a real-world program you OF COURSE check the return code of the
-       function calls.  On success, the value of maxfd is guaranteed to be
-       greater or equal than -1.  We call select(maxfd + 1, ...), specially
-       in case of (maxfd == -1), we call select(0, ...), which is basically
-       equal to sleep. */
+    if(mc != CURLM_OK)
+    {
+      fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
+      break;
+    }
 
 
-    rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
+    /* On success the value of maxfd is guaranteed to be >= -1. We call
+       select(maxfd + 1, ...); specially in case of (maxfd == -1) there are
+       no fds ready yet so we call select(0, ...) --or Sleep() on Windows--
+       to sleep 100ms, which is the minimum suggested value in the
+       curl_multi_fdset() doc. */
+
+    if(maxfd == -1) {
+#ifdef _WIN32
+      Sleep(100);
+      rc = 0;
+#else
+      /* Portable sleep for platforms other than Windows. */
+      struct timeval wait = { 0, 100 * 1000 }; /* 100ms */
+      rc = select(0, NULL, NULL, NULL, &wait);
+#endif
+    }
+    else {
+      /* Note that on some platforms 'timeout' may be modified by select().
+         If you need access to the original value save a copy beforehand. */
+      rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
+    }
 
     switch(rc) {
     case -1:
 
     switch(rc) {
     case -1:
index 5a2a103..d175ddf 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -26,9 +26,9 @@ struct callback_data {
   FILE *output;
 };
 
   FILE *output;
 };
 
-static long file_is_comming(struct curl_fileinfo *finfo,
-                            struct callback_data *data,
-                            int remains);
+static long file_is_coming(struct curl_fileinfo *finfo,
+                           struct callback_data *data,
+                           int remains);
 
 static long file_is_downloaded(struct callback_data *data);
 
 
 static long file_is_downloaded(struct callback_data *data);
 
@@ -61,7 +61,7 @@ int main(int argc, char **argv)
   curl_easy_setopt(handle, CURLOPT_WILDCARDMATCH, 1L);
 
   /* callback is called before download of concrete file started */
   curl_easy_setopt(handle, CURLOPT_WILDCARDMATCH, 1L);
 
   /* callback is called before download of concrete file started */
-  curl_easy_setopt(handle, CURLOPT_CHUNK_BGN_FUNCTION, file_is_comming);
+  curl_easy_setopt(handle, CURLOPT_CHUNK_BGN_FUNCTION, file_is_coming);
 
   /* callback is called after data from the file have been transferred */
   curl_easy_setopt(handle, CURLOPT_CHUNK_END_FUNCTION, file_is_downloaded);
 
   /* callback is called after data from the file have been transferred */
   curl_easy_setopt(handle, CURLOPT_CHUNK_END_FUNCTION, file_is_downloaded);
@@ -89,9 +89,9 @@ int main(int argc, char **argv)
   return rc;
 }
 
   return rc;
 }
 
-static long file_is_comming(struct curl_fileinfo *finfo,
-                            struct callback_data *data,
-                            int remains)
+static long file_is_coming(struct curl_fileinfo *finfo,
+                           struct callback_data *data,
+                           int remains)
 {
   printf("%3d %40s %10luB ", remains, finfo->filename,
          (unsigned long)finfo->size);
 {
   printf("%3d %40s %10luB ", remains, finfo->filename,
          (unsigned long)finfo->size);
index db96a3a..dcb296a 100644 (file)
@@ -58,7 +58,7 @@ int main(void)
     /* If you intend to use this on windows with a libcurl DLL, you must use
        CURLOPT_WRITEFUNCTION as well */
     curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, write_response);
     /* If you intend to use this on windows with a libcurl DLL, you must use
        CURLOPT_WRITEFUNCTION as well */
     curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, write_response);
-    curl_easy_setopt(curl, CURLOPT_WRITEHEADER, respfile);
+    curl_easy_setopt(curl, CURLOPT_HEADERDATA, respfile);
     res = curl_easy_perform(curl);
     /* Check for errors */
     if(res != CURLE_OK)
     res = curl_easy_perform(curl);
     /* Check for errors */
     if(res != CURLE_OK)
index 8e31e8f..1608ec5 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -98,10 +98,6 @@ int main(void)
      * bytes big and contains the remote file.
      *
      * Do something nice with it!
      * bytes big and contains the remote file.
      *
      * Do something nice with it!
-     *
-     * You should be aware of the fact that at this point we might have an
-     * allocated data block, and nothing has yet deallocated that data. So when
-     * you're done with it, you should free() it as a nice application.
      */
 
     printf("%lu bytes retrieved\n", (long)chunk.size);
      */
 
     printf("%lu bytes retrieved\n", (long)chunk.size);
index 9a3f46d..7571ffa 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -104,7 +104,6 @@ static void mcode_or_die(const char *where, CURLMcode code) {
   if ( CURLM_OK != code ) {
     const char *s;
     switch (code) {
   if ( CURLM_OK != code ) {
     const char *s;
     switch (code) {
-      case     CURLM_CALL_MULTI_PERFORM: s="CURLM_CALL_MULTI_PERFORM"; break;
       case     CURLM_BAD_HANDLE:         s="CURLM_BAD_HANDLE";         break;
       case     CURLM_BAD_EASY_HANDLE:    s="CURLM_BAD_EASY_HANDLE";    break;
       case     CURLM_OUT_OF_MEMORY:      s="CURLM_OUT_OF_MEMORY";      break;
       case     CURLM_BAD_HANDLE:         s="CURLM_BAD_HANDLE";         break;
       case     CURLM_BAD_EASY_HANDLE:    s="CURLM_BAD_EASY_HANDLE";    break;
       case     CURLM_OUT_OF_MEMORY:      s="CURLM_OUT_OF_MEMORY";      break;
index 4c4e223..84035aa 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -125,7 +125,6 @@ static void mcode_or_die(const char *where, CURLMcode code)
   if ( CURLM_OK != code ) {
     const char *s;
     switch (code) {
   if ( CURLM_OK != code ) {
     const char *s;
     switch (code) {
-      case     CURLM_CALL_MULTI_PERFORM: s="CURLM_CALL_MULTI_PERFORM"; break;
       case     CURLM_BAD_HANDLE:         s="CURLM_BAD_HANDLE";         break;
       case     CURLM_BAD_EASY_HANDLE:    s="CURLM_BAD_EASY_HANDLE";    break;
       case     CURLM_OUT_OF_MEMORY:      s="CURLM_OUT_OF_MEMORY";      break;
       case     CURLM_BAD_HANDLE:         s="CURLM_BAD_HANDLE";         break;
       case     CURLM_BAD_EASY_HANDLE:    s="CURLM_BAD_EASY_HANDLE";    break;
       case     CURLM_OUT_OF_MEMORY:      s="CURLM_OUT_OF_MEMORY";      break;
index 4b307a2..c11325d 100644 (file)
@@ -74,7 +74,7 @@ int main(int argc, char *argv[])
   curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
   curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
   curl_easy_setopt(curl, CURLOPT_WRITEDATA, hsp);
   curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
   curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
   curl_easy_setopt(curl, CURLOPT_WRITEDATA, hsp);
-  curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
+  curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
 
   curl_easy_perform(curl);
 
 
   curl_easy_perform(curl);
 
index 07ff959..8542ead 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -31,20 +31,25 @@ int main(void)
   if(curl) {
     struct curl_slist *chunk = NULL;
 
   if(curl) {
     struct curl_slist *chunk = NULL;
 
-    chunk = curl_slist_append(chunk, "Accept: moo");
+    /* Remove a header curl would otherwise add by itself */
+    chunk = curl_slist_append(chunk, "Accept:");
+
+    /* Add a custom header */
     chunk = curl_slist_append(chunk, "Another: yes");
 
     chunk = curl_slist_append(chunk, "Another: yes");
 
-    /* request with the built-in Accept: */
+    /* Modify a header curl otherwise adds differently */
+    chunk = curl_slist_append(chunk, "Host: example.com");
+
+    /* Add a header with "blank" contents to the right of the colon. Note that
+       we're then using a semicolon in the string we pass to curl! */
+    chunk = curl_slist_append(chunk, "X-silly-header;");
+
+    /* set our custom set of headers */
+    res = curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk);
+
     curl_easy_setopt(curl, CURLOPT_URL, "localhost");
     curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
     curl_easy_setopt(curl, CURLOPT_URL, "localhost");
     curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-    res = curl_easy_perform(curl);
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
 
 
-    /* redo request with our own custom Accept: */
-    res = curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk);
     res = curl_easy_perform(curl);
     /* Check for errors */
     if(res != CURLE_OK)
     res = curl_easy_perform(curl);
     /* Check for errors */
     if(res != CURLE_OK)
index fbbca94..2e9dc21 100644 (file)
@@ -22,8 +22,6 @@
 #include <stdio.h>
 #include <fcntl.h>
 #include <sys/stat.h>
 #include <stdio.h>
 #include <fcntl.h>
 #include <sys/stat.h>
-#include <unistd.h>
-
 #include <curl/curl.h>
 
 /*
 #include <curl/curl.h>
 
 /*
@@ -59,7 +57,6 @@ int main(int argc, char **argv)
   CURL *curl;
   CURLcode res;
   FILE * hd_src ;
   CURL *curl;
   CURLcode res;
   FILE * hd_src ;
-  int hd ;
   struct stat file_info;
 
   char *file;
   struct stat file_info;
 
   char *file;
@@ -72,9 +69,7 @@ int main(int argc, char **argv)
   url = argv[2];
 
   /* get the file size of the local file */
   url = argv[2];
 
   /* get the file size of the local file */
-  hd = open(file, O_RDONLY) ;
-  fstat(hd, &file_info);
-  close(hd) ;
+  stat(file, &file_info);
 
   /* get a FILE * of the same file, could also be made with
      fdopen() from the previous descriptor, but hey this is just
 
   /* get a FILE * of the same file, could also be made with
      fdopen() from the previous descriptor, but hey this is just
diff --git a/docs/examples/imap-append.c b/docs/examples/imap-append.c
new file mode 100644 (file)
index 0000000..fa531a8
--- /dev/null
@@ -0,0 +1,116 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include <stdio.h>
+#include <string.h>
+#include <curl/curl.h>
+
+/* This is a simple example showing how to send mail using libcurl's IMAP
+ * capabilities.
+ *
+ * Note that this example requires libcurl 7.30.0 or above.
+ */
+
+#define FROM    "<sender@example.org>"
+#define TO      "<addressee@example.net>"
+#define CC      "<info@example.org>"
+
+static const char *payload_text[] = {
+  "Date: Mon, 29 Nov 2010 21:54:29 +1100\r\n",
+  "To: " TO "\r\n",
+  "From: " FROM "(Example User)\r\n",
+  "Cc: " CC "(Another example User)\r\n",
+  "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@rfcpedant.example.org>\r\n",
+  "Subject: IMAP example message\r\n",
+  "\r\n", /* empty line to divide headers from body, see RFC5322 */
+  "The body of the message starts here.\r\n",
+  "\r\n",
+  "It could be a lot of lines, could be MIME encoded, whatever.\r\n",
+  "Check RFC5322.\r\n",
+  NULL
+};
+
+struct upload_status {
+  int lines_read;
+};
+
+static size_t payload_source(void *ptr, size_t size, size_t nmemb, void *userp)
+{
+  struct upload_status *upload_ctx = (struct upload_status *)userp;
+  const char *data;
+
+  if((size == 0) || (nmemb == 0) || ((size*nmemb) < 1)) {
+    return 0;
+  }
+
+  data = payload_text[upload_ctx->lines_read];
+
+  if(data) {
+    size_t len = strlen(data);
+    memcpy(ptr, data, len);
+    upload_ctx->lines_read++;
+
+    return len;
+  }
+
+  return 0;
+}
+
+int main(void)
+{
+  CURL *curl;
+  CURLcode res = CURLE_OK;
+  struct upload_status upload_ctx;
+
+  upload_ctx.lines_read = 0;
+
+  curl = curl_easy_init();
+  if(curl) {
+    /* Set username and password */
+    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
+    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
+
+    /* This will create a new message 100. Note that you should perform an
+     * EXAMINE command to obtain the UID of the next message to create and a
+     * SELECT to ensure you are creating the message in the OUTBOX. */
+    curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com/100");
+
+    /* In this case, we're using a callback function to specify the data. You
+     * could just use the CURLOPT_READDATA option to specify a FILE pointer to
+     * read from. */
+    curl_easy_setopt(curl, CURLOPT_READFUNCTION, payload_source);
+    curl_easy_setopt(curl, CURLOPT_READDATA, &upload_ctx);
+    curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
+
+    /* Perform the append */
+    res = curl_easy_perform(curl);
+
+    /* Check for errors */
+    if(res != CURLE_OK)
+      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+              curl_easy_strerror(res));
+
+    /* Always cleanup */
+    curl_easy_cleanup(curl);
+  }
+
+  return (int)res;
+}
diff --git a/docs/examples/imap-copy.c b/docs/examples/imap-copy.c
new file mode 100644 (file)
index 0000000..fe2d91c
--- /dev/null
@@ -0,0 +1,65 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include <stdio.h>
+#include <curl/curl.h>
+
+/* This is a simple example showing how to copy a mail from one mailbox folder
+ * to another using libcurl's IMAP capabilities.
+ *
+ * Note that this example requires libcurl 7.30.0 or above.
+ */
+
+int main(void)
+{
+  CURL *curl;
+  CURLcode res = CURLE_OK;
+
+  curl = curl_easy_init();
+  if(curl) {
+    /* Set username and password */
+    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
+    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
+
+    /* This is source mailbox folder to select */
+    curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com/INBOX");
+
+    /* Set the COPY command specifing the message ID and destination folder */
+    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "COPY 1 FOLDER");
+
+    /* Note that to perform a move operation you will need to perform the copy,
+     * then mark the original mail as Deleted and EXPUNGE or CLOSE. Please see
+     * imap-store.c for more information on deleting messages. */
+
+    /* Perform the custom request */
+    res = curl_easy_perform(curl);
+
+    /* Check for errors */
+    if(res != CURLE_OK)
+      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+              curl_easy_strerror(res));
+
+    /* Always cleanup */
+    curl_easy_cleanup(curl);
+  }
+
+  return (int)res;
+}
diff --git a/docs/examples/imap-create.c b/docs/examples/imap-create.c
new file mode 100644 (file)
index 0000000..65ddede
--- /dev/null
@@ -0,0 +1,61 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include <stdio.h>
+#include <curl/curl.h>
+
+/* This is a simple example showing how to create a new mailbox folder using
+ * libcurl's IMAP capabilities.
+ *
+ * Note that this example requires libcurl 7.30.0 or above.
+ */
+
+int main(void)
+{
+  CURL *curl;
+  CURLcode res = CURLE_OK;
+
+  curl = curl_easy_init();
+  if(curl) {
+    /* Set username and password */
+    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
+    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
+
+    /* This is just the server URL */
+    curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com");
+
+    /* Set the CREATE command specifing the new folder name */
+    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "CREATE FOLDER");
+
+    /* Perform the custom request */
+    res = curl_easy_perform(curl);
+
+    /* Check for errors */
+    if(res != CURLE_OK)
+      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+              curl_easy_strerror(res));
+
+    /* Always cleanup */
+    curl_easy_cleanup(curl);
+  }
+
+  return (int)res;
+}
diff --git a/docs/examples/imap-delete.c b/docs/examples/imap-delete.c
new file mode 100644 (file)
index 0000000..5113be9
--- /dev/null
@@ -0,0 +1,61 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include <stdio.h>
+#include <curl/curl.h>
+
+/* This is a simple example showing how to delete an existing mailbox folder
+ * using libcurl's IMAP capabilities.
+ *
+ * Note that this example requires libcurl 7.30.0 or above.
+ */
+
+int main(void)
+{
+  CURL *curl;
+  CURLcode res = CURLE_OK;
+
+  curl = curl_easy_init();
+  if(curl) {
+    /* Set username and password */
+    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
+    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
+
+    /* This is just the server URL */
+    curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com");
+
+    /* Set the DELETE command specifing the existing folder */
+    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "DELETE FOLDER");
+
+    /* Perform the custom request */
+    res = curl_easy_perform(curl);
+
+    /* Check for errors */
+    if(res != CURLE_OK)
+      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+              curl_easy_strerror(res));
+
+    /* Always cleanup */
+    curl_easy_cleanup(curl);
+  }
+
+  return (int)res;
+}
diff --git a/docs/examples/imap-examine.c b/docs/examples/imap-examine.c
new file mode 100644 (file)
index 0000000..a7b41c5
--- /dev/null
@@ -0,0 +1,61 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include <stdio.h>
+#include <curl/curl.h>
+
+/* This is a simple example showing how to obtain information about a mailbox
+ * folder using libcurl's IMAP capabilities via the EXAMINE command.
+ *
+ * Note that this example requires libcurl 7.30.0 or above.
+ */
+
+int main(void)
+{
+  CURL *curl;
+  CURLcode res = CURLE_OK;
+
+  curl = curl_easy_init();
+  if(curl) {
+    /* Set username and password */
+    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
+    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
+
+    /* This is just the server URL */
+    curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com");
+
+    /* Set the EXAMINE command specifing the mailbox folder */
+    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "EXAMINE OUTBOX");
+
+    /* Perform the custom request */
+    res = curl_easy_perform(curl);
+
+    /* Check for errors */
+    if(res != CURLE_OK)
+      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+              curl_easy_strerror(res));
+
+    /* Always cleanup */
+    curl_easy_cleanup(curl);
+  }
+
+  return (int)res;
+}
similarity index 67%
rename from docs/examples/imap.c
rename to docs/examples/imap-fetch.c
index ba07f02..831d0dc 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include <stdio.h>
 #include <curl/curl.h>
 
 #include <stdio.h>
 #include <curl/curl.h>
 
+/* This is a simple example showing how to fetch mail using libcurl's IMAP
+ * capabilities.
+ *
+ * Note that this example requires libcurl 7.30.0 or above.
+ */
+
 int main(void)
 {
   CURL *curl;
 int main(void)
 {
   CURL *curl;
@@ -30,15 +36,23 @@ int main(void)
   curl = curl_easy_init();
   if(curl) {
     /* Set username and password */
   curl = curl_easy_init();
   if(curl) {
     /* Set username and password */
-    curl_easy_setopt(curl, CURLOPT_USERPWD, "user:password");
+    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
+    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
 
 
-    /* This will fetch the mailbox named "foobar" */
-    curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com/foobar");
+    /* This will fetch message 1 from the user's inbox */
+    curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com/INBOX/;UID=1");
 
 
+    /* Perform the fetch */
     res = curl_easy_perform(curl);
 
     res = curl_easy_perform(curl);
 
-    /* always cleanup */
+    /* Check for errors */
+    if(res != CURLE_OK)
+      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+              curl_easy_strerror(res));
+
+    /* Always cleanup */
     curl_easy_cleanup(curl);
   }
     curl_easy_cleanup(curl);
   }
+
   return (int)res;
 }
   return (int)res;
 }
diff --git a/docs/examples/imap-list.c b/docs/examples/imap-list.c
new file mode 100644 (file)
index 0000000..4223052
--- /dev/null
@@ -0,0 +1,60 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include <stdio.h>
+#include <curl/curl.h>
+
+/* This is a simple example showing how to list the folders within an IMAP
+ * mailbox.
+ *
+ * Note that this example requires libcurl 7.30.0 or above.
+ */
+
+int main(void)
+{
+  CURL *curl;
+  CURLcode res = CURLE_OK;
+
+  curl = curl_easy_init();
+  if(curl) {
+    /* Set username and password */
+    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
+    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
+
+    /* This will list the folders within the user's mailbox. If you want to
+     * list the folders within a specific folder, for example the inbox, then
+     * specify the folder as a path in the URL such as /INBOX */
+    curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com");
+
+    /* Perform the list */
+    res = curl_easy_perform(curl);
+
+    /* Check for errors */
+    if(res != CURLE_OK)
+      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+              curl_easy_strerror(res));
+
+    /* Always cleanup */
+    curl_easy_cleanup(curl);
+  }
+
+  return (int)res;
+}
diff --git a/docs/examples/imap-lsub.c b/docs/examples/imap-lsub.c
new file mode 100644 (file)
index 0000000..8960b62
--- /dev/null
@@ -0,0 +1,62 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include <stdio.h>
+#include <curl/curl.h>
+
+/* This is a simple example showing how to list the subscribed folders within
+ * an IMAP mailbox.
+ *
+ * Note that this example requires libcurl 7.30.0 or above.
+ */
+
+int main(void)
+{
+  CURL *curl;
+  CURLcode res = CURLE_OK;
+
+  curl = curl_easy_init();
+  if(curl) {
+    /* Set username and password */
+    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
+    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
+
+    /* This is just the server URL */
+    curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com");
+
+    /* Set the LSUB command. Note the syntax is very similar to that of a LIST
+       command. */
+    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "LSUB \"\" *");
+
+    /* Perform the custom request */
+    res = curl_easy_perform(curl);
+
+    /* Check for errors */
+    if(res != CURLE_OK)
+      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+              curl_easy_strerror(res));
+
+    /* Always cleanup */
+    curl_easy_cleanup(curl);
+  }
+
+  return (int)res;
+}
diff --git a/docs/examples/imap-multi.c b/docs/examples/imap-multi.c
new file mode 100644 (file)
index 0000000..c7dc130
--- /dev/null
@@ -0,0 +1,167 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include <stdio.h>
+#include <curl/curl.h>
+
+/* This is a simple example showing how to fetch mail using libcurl's IMAP
+ * capabilities. It builds on the imap-fetch.c example to demonstrate how to
+ * use libcurl's multi interface.
+ *
+ * Note that this example requires libcurl 7.30.0 or above.
+ */
+
+#define MULTI_PERFORM_HANG_TIMEOUT 60 * 1000
+
+static struct timeval tvnow(void)
+{
+  struct timeval now;
+
+  /* time() returns the value of time in seconds since the epoch */
+  now.tv_sec = (long)time(NULL);
+  now.tv_usec = 0;
+
+  return now;
+}
+
+static long tvdiff(struct timeval newer, struct timeval older)
+{
+  return (newer.tv_sec - older.tv_sec) * 1000 +
+    (newer.tv_usec - older.tv_usec) / 1000;
+}
+
+int main(void)
+{
+  CURL *curl;
+  CURLM *mcurl;
+  int still_running = 1;
+  struct timeval mp_start;
+
+  curl_global_init(CURL_GLOBAL_DEFAULT);
+
+  curl = curl_easy_init();
+  if(!curl)
+    return 1;
+
+  mcurl = curl_multi_init();
+  if(!mcurl)
+    return 2;
+
+  /* Set username and password */
+  curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
+  curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
+
+  /* This will fetch message 1 from the user's inbox */
+  curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com/INBOX/;UID=1");
+
+  /* Tell the multi stack about our easy handle */
+  curl_multi_add_handle(mcurl, curl);
+
+  /* Record the start time which we can use later */
+  mp_start = tvnow();
+
+  /* We start some action by calling perform right away */
+  curl_multi_perform(mcurl, &still_running);
+
+  while(still_running) {
+    struct timeval timeout;
+    fd_set fdread;
+    fd_set fdwrite;
+    fd_set fdexcep;
+    int maxfd = -1;
+    int rc;
+    CURLMcode mc; /* curl_multi_fdset() return code */
+
+    long curl_timeo = -1;
+
+    /* Initialise the file descriptors */
+    FD_ZERO(&fdread);
+    FD_ZERO(&fdwrite);
+    FD_ZERO(&fdexcep);
+
+    /* Set a suitable timeout to play around with */
+    timeout.tv_sec = 1;
+    timeout.tv_usec = 0;
+
+    curl_multi_timeout(mcurl, &curl_timeo);
+    if(curl_timeo >= 0) {
+      timeout.tv_sec = curl_timeo / 1000;
+      if(timeout.tv_sec > 1)
+        timeout.tv_sec = 1;
+      else
+        timeout.tv_usec = (curl_timeo % 1000) * 1000;
+    }
+
+    /* get file descriptors from the transfers */
+    mc = curl_multi_fdset(mcurl, &fdread, &fdwrite, &fdexcep, &maxfd);
+
+    if(mc != CURLM_OK)
+    {
+      fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
+      break;
+    }
+
+    /* On success the value of maxfd is guaranteed to be >= -1. We call
+       select(maxfd + 1, ...); specially in case of (maxfd == -1) there are
+       no fds ready yet so we call select(0, ...) --or Sleep() on Windows--
+       to sleep 100ms, which is the minimum suggested value in the
+       curl_multi_fdset() doc. */
+
+    if(maxfd == -1) {
+#ifdef _WIN32
+      Sleep(100);
+      rc = 0;
+#else
+      /* Portable sleep for platforms other than Windows. */
+      struct timeval wait = { 0, 100 * 1000 }; /* 100ms */
+      rc = select(0, NULL, NULL, NULL, &wait);
+#endif
+    }
+    else {
+      /* Note that on some platforms 'timeout' may be modified by select().
+         If you need access to the original value save a copy beforehand. */
+      rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
+    }
+
+    if(tvdiff(tvnow(), mp_start) > MULTI_PERFORM_HANG_TIMEOUT) {
+      fprintf(stderr,
+              "ABORTING: Since it seems that we would have run forever.\n");
+      break;
+    }
+
+    switch(rc) {
+    case -1:  /* select error */
+      break;
+    case 0:   /* timeout */
+    default:  /* action */
+      curl_multi_perform(mcurl, &still_running);
+      break;
+    }
+  }
+
+  /* Always cleanup */
+  curl_multi_remove_handle(mcurl, curl);
+  curl_multi_cleanup(mcurl);
+  curl_easy_cleanup(curl);
+  curl_global_cleanup();
+
+  return 0;
+}
diff --git a/docs/examples/imap-noop.c b/docs/examples/imap-noop.c
new file mode 100644 (file)
index 0000000..71a5572
--- /dev/null
@@ -0,0 +1,61 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include <stdio.h>
+#include <curl/curl.h>
+
+/* This is a simple example showing how to perform a noop using libcurl's IMAP
+ * capabilities.
+ *
+ * Note that this example requires libcurl 7.30.0 or above.
+ */
+
+int main(void)
+{
+  CURL *curl;
+  CURLcode res = CURLE_OK;
+
+  curl = curl_easy_init();
+  if(curl) {
+    /* Set username and password */
+    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
+    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
+
+    /* This is just the server URL */
+    curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com");
+
+    /* Set the NOOP command */
+    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "NOOP");
+
+    /* Perform the custom request */
+    res = curl_easy_perform(curl);
+
+    /* Check for errors */
+    if(res != CURLE_OK)
+      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+              curl_easy_strerror(res));
+
+    /* Always cleanup */
+    curl_easy_cleanup(curl);
+  }
+
+  return (int)res;
+}
diff --git a/docs/examples/imap-search.c b/docs/examples/imap-search.c
new file mode 100644 (file)
index 0000000..0c1d267
--- /dev/null
@@ -0,0 +1,65 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include <stdio.h>
+#include <curl/curl.h>
+
+/* This is a simple example showing how to search for new messages using
+ * libcurl's IMAP capabilities.
+ *
+ * Note that this example requires libcurl 7.30.0 or above.
+ */
+
+int main(void)
+{
+  CURL *curl;
+  CURLcode res = CURLE_OK;
+
+  curl = curl_easy_init();
+  if(curl) {
+    /* Set username and password */
+    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
+    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
+
+    /* This is mailbox folder to select */
+    curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com/INBOX");
+
+    /* Set the SEARCH command specifing what we want to search for. Note that
+     * this can contain a message sequence set and a number of search criteria
+     * keywords including flags such as ANSWERED, DELETED, DRAFT, FLAGGED, NEW,
+     * RECENT and SEEN. For more information about the search criteria please
+     * see RFC-3501 section 6.4.4.   */
+    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "SEARCH NEW");
+
+    /* Perform the custom request */
+    res = curl_easy_perform(curl);
+
+    /* Check for errors */
+    if(res != CURLE_OK)
+      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+              curl_easy_strerror(res));
+
+    /* Always cleanup */
+    curl_easy_cleanup(curl);
+  }
+
+  return (int)res;
+}
similarity index 64%
rename from docs/examples/pop3slist.c
rename to docs/examples/imap-ssl.c
index 9d9668f..e42ff39 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include <stdio.h>
 #include <curl/curl.h>
 
 #include <stdio.h>
 #include <curl/curl.h>
 
+/* This is a simple example showing how to fetch mail using libcurl's IMAP
+ * capabilities. It builds on the imap-fetch.c example adding transport
+ * security to protect the authentication details from being snooped.
+ *
+ * Note that this example requires libcurl 7.30.0 or above.
+ */
+
 int main(void)
 {
   CURL *curl;
 int main(void)
 {
   CURL *curl;
-  CURLcode res;
+  CURLcode res = CURLE_OK;
 
   curl = curl_easy_init();
   if(curl) {
     /* Set username and password */
 
   curl = curl_easy_init();
   if(curl) {
     /* Set username and password */
-    curl_easy_setopt(curl, CURLOPT_USERPWD, "user:password");
+    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
+    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
 
 
-    /* This will list every message of the given mailbox */
-    curl_easy_setopt(curl, CURLOPT_URL, "pop3s://user@pop.example.com/");
+    /* This will fetch message 1 from the user's inbox. Note the use of
+    * imaps:// rather than imap:// to request a SSL based connection. */
+    curl_easy_setopt(curl, CURLOPT_URL, "imaps://imap.example.com/INBOX/;UID=1");
 
 
-#ifdef SKIP_PEER_VERIFICATION
-    /*
-     * If you want to connect to a site who isn't using a certificate that is
+    /* If you want to connect to a site who isn't using a certificate that is
      * signed by one of the certs in the CA bundle you have, you can skip the
      * verification of the server's certificate. This makes the connection
      * A LOT LESS SECURE.
      *
      * If you have a CA cert for the server stored someplace else than in the
      * default bundle, then the CURLOPT_CAPATH option might come handy for
      * signed by one of the certs in the CA bundle you have, you can skip the
      * verification of the server's certificate. This makes the connection
      * A LOT LESS SECURE.
      *
      * If you have a CA cert for the server stored someplace else than in the
      * default bundle, then the CURLOPT_CAPATH option might come handy for
-     * you.
-     */
+     * you. */
+#ifdef SKIP_PEER_VERIFICATION
     curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
 #endif
 
     curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
 #endif
 
-#ifdef SKIP_HOSTNAME_VERFICATION
-    /*
-     * If the site you're connecting to uses a different host name that what
+    /* If the site you're connecting to uses a different host name that what
      * they have mentioned in their server certificate's commonName (or
      * subjectAltName) fields, libcurl will refuse to connect. You can skip
      * they have mentioned in their server certificate's commonName (or
      * subjectAltName) fields, libcurl will refuse to connect. You can skip
-     * this check, but this will make the connection less secure.
-     */
+     * this check, but this will make the connection less secure. */
+#ifdef SKIP_HOSTNAME_VERFICATION
     curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
 #endif
 
     curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
 #endif
 
-    /* Perform the request, res will get the return code */
+    /* Since the traffic will be encrypted, it is very useful to turn on debug
+     * information within libcurl to see what is happening during the
+     * transfer */
+    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
+
+    /* Perform the fetch */
     res = curl_easy_perform(curl);
     res = curl_easy_perform(curl);
+
     /* Check for errors */
     if(res != CURLE_OK)
       fprintf(stderr, "curl_easy_perform() failed: %s\n",
               curl_easy_strerror(res));
 
     /* Check for errors */
     if(res != CURLE_OK)
       fprintf(stderr, "curl_easy_perform() failed: %s\n",
               curl_easy_strerror(res));
 
-    /* always cleanup */
+    /* Always cleanup */
     curl_easy_cleanup(curl);
   }
     curl_easy_cleanup(curl);
   }
-  return 0;
+
+  return (int)res;
 }
 }
diff --git a/docs/examples/imap-store.c b/docs/examples/imap-store.c
new file mode 100644 (file)
index 0000000..8f5e7d5
--- /dev/null
@@ -0,0 +1,76 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include <stdio.h>
+#include <curl/curl.h>
+
+/* This is a simple example showing how to modify an existing mail using
+ * libcurl's IMAP capabilities with the STORE command.
+ *
+ * Note that this example requires libcurl 7.30.0 or above.
+ */
+
+int main(void)
+{
+  CURL *curl;
+  CURLcode res = CURLE_OK;
+
+  curl = curl_easy_init();
+  if(curl) {
+    /* Set username and password */
+    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
+    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
+
+    /* This is the mailbox folder to select */
+    curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com/INBOX");
+
+    /* Set the STORE command with the Deleted flag for message 1. Note that
+     * you can use the STORE command to set other flags such as Seen, Answered,
+     * Flagged, Draft and Recent. */
+    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "STORE 1 +Flags \\Deleted");
+
+    /* Perform the custom request */
+    res = curl_easy_perform(curl);
+
+    /* Check for errors */
+    if(res != CURLE_OK)
+      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+              curl_easy_strerror(res));
+    else {
+      /* Set the EXPUNGE command, although you can use the CLOSE command if you
+       * don't want to know the result of the STORE */
+      curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "EXPUNGE");
+
+      /* Perform the second custom request */
+      res = curl_easy_perform(curl);
+
+      /* Check for errors */
+      if(res != CURLE_OK)
+        fprintf(stderr, "curl_easy_perform() failed: %s\n",
+                curl_easy_strerror(res));
+    }
+
+    /* Always cleanup */
+    curl_easy_cleanup(curl);
+  }
+
+  return (int)res;
+}
diff --git a/docs/examples/imap-tls.c b/docs/examples/imap-tls.c
new file mode 100644 (file)
index 0000000..c439864
--- /dev/null
@@ -0,0 +1,84 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include <stdio.h>
+#include <curl/curl.h>
+
+/* This is a simple example showing how to fetch mail using libcurl's IMAP
+ * capabilities. It builds on the imap-fetch.c example adding transport
+ * security to protect the authentication details from being snooped.
+ *
+ * Note that this example requires libcurl 7.30.0 or above.
+ */
+
+int main(void)
+{
+  CURL *curl;
+  CURLcode res = CURLE_OK;
+
+  curl = curl_easy_init();
+  if(curl) {
+    /* Set username and password */
+    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
+    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
+
+    /* This will fetch message 1 from the user's inbox */
+    curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com/INBOX/;UID=1");
+
+    /* In this example, we'll start with a plain text connection, and upgrade
+     * to Transport Layer Security (TLS) using the STARTTLS command. Be careful
+     * of using CURLUSESSL_TRY here, because if TLS upgrade fails, the transfer
+     * will continue anyway - see the security discussion in the libcurl
+     * tutorial for more details. */
+    curl_easy_setopt(curl, CURLOPT_USE_SSL, (long)CURLUSESSL_ALL);
+
+    /* If your server doesn't have a valid certificate, then you can disable
+     * part of the Transport Layer Security protection by setting the
+     * CURLOPT_SSL_VERIFYPEER and CURLOPT_SSL_VERIFYHOST options to 0 (false).
+     *   curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
+     *   curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
+     * That is, in general, a bad idea. It is still better than sending your
+     * authentication details in plain text though.
+     * Instead, you should get the issuer certificate (or the host certificate
+     * if the certificate is self-signed) and add it to the set of certificates
+     * that are known to libcurl using CURLOPT_CAINFO and/or CURLOPT_CAPATH. See
+     * docs/SSLCERTS for more information. */
+    curl_easy_setopt(curl, CURLOPT_CAINFO, "/path/to/certificate.pem");
+
+    /* Since the traffic will be encrypted, it is very useful to turn on debug
+     * information within libcurl to see what is happening during the
+     * transfer */
+    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
+
+    /* Perform the fetch */
+    res = curl_easy_perform(curl);
+
+    /* Check for errors */
+    if(res != CURLE_OK)
+      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+              curl_easy_strerror(res));
+
+    /* Always cleanup */
+    curl_easy_cleanup(curl);
+  }
+
+  return (int)res;
+}
index a5f71c5..b825897 100644 (file)
@@ -73,6 +73,7 @@ int main(void)
   do {
     struct timeval timeout;
     int rc; /* select() return code */
   do {
     struct timeval timeout;
     int rc; /* select() return code */
+    CURLMcode mc; /* curl_multi_fdset() return code */
 
     fd_set fdread;
     fd_set fdwrite;
 
     fd_set fdread;
     fd_set fdwrite;
@@ -99,15 +100,35 @@ int main(void)
     }
 
     /* get file descriptors from the transfers */
     }
 
     /* get file descriptors from the transfers */
-    curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
+    mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
 
 
-    /* In a real-world program you OF COURSE check the return code of the
-       function calls.  On success, the value of maxfd is guaranteed to be
-       greater or equal than -1.  We call select(maxfd + 1, ...), specially in
-       case of (maxfd == -1), we call select(0, ...), which is basically equal
-       to sleep. */
+    if(mc != CURLM_OK)
+    {
+      fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
+      break;
+    }
 
 
-    rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
+    /* On success the value of maxfd is guaranteed to be >= -1. We call
+       select(maxfd + 1, ...); specially in case of (maxfd == -1) there are
+       no fds ready yet so we call select(0, ...) --or Sleep() on Windows--
+       to sleep 100ms, which is the minimum suggested value in the
+       curl_multi_fdset() doc. */
+
+    if(maxfd == -1) {
+#ifdef _WIN32
+      Sleep(100);
+      rc = 0;
+#else
+      /* Portable sleep for platforms other than Windows. */
+      struct timeval wait = { 0, 100 * 1000 }; /* 100ms */
+      rc = select(0, NULL, NULL, NULL, &wait);
+#endif
+    }
+    else {
+      /* Note that on some platforms 'timeout' may be modified by select().
+         If you need access to the original value save a copy beforehand. */
+      rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
+    }
 
     switch(rc) {
     case -1:
 
     switch(rc) {
     case -1:
index 8eedcee..5fb86be 100644 (file)
@@ -147,6 +147,7 @@ int main(void)
   do {
     struct timeval timeout;
     int rc; /* select() return code */
   do {
     struct timeval timeout;
     int rc; /* select() return code */
+    CURLMcode mc; /* curl_multi_fdset() return code */
 
     fd_set fdread;
     fd_set fdwrite;
 
     fd_set fdread;
     fd_set fdwrite;
@@ -173,15 +174,35 @@ int main(void)
     }
 
     /* get file descriptors from the transfers */
     }
 
     /* get file descriptors from the transfers */
-    curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
+    mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
 
 
-    /* In a real-world program you OF COURSE check the return code of the
-       function calls.  On success, the value of maxfd is guaranteed to be
-       greater or equal than -1.  We call select(maxfd + 1, ...), specially in
-       case of (maxfd == -1), we call select(0, ...), which is basically equal
-       to sleep. */
+    if(mc != CURLM_OK)
+    {
+      fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
+      break;
+    }
 
 
-    rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
+    /* On success the value of maxfd is guaranteed to be >= -1. We call
+       select(maxfd + 1, ...); specially in case of (maxfd == -1) there are
+       no fds ready yet so we call select(0, ...) --or Sleep() on Windows--
+       to sleep 100ms, which is the minimum suggested value in the
+       curl_multi_fdset() doc. */
+
+    if(maxfd == -1) {
+#ifdef _WIN32
+      Sleep(100);
+      rc = 0;
+#else
+      /* Portable sleep for platforms other than Windows. */
+      struct timeval wait = { 0, 100 * 1000 }; /* 100ms */
+      rc = select(0, NULL, NULL, NULL, &wait);
+#endif
+    }
+    else {
+      /* Note that on some platforms 'timeout' may be modified by select().
+         If you need access to the original value save a copy beforehand. */
+      rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
+    }
 
     switch(rc) {
     case -1:
 
     switch(rc) {
     case -1:
index 91422e6..0d8d0de 100644 (file)
@@ -62,6 +62,7 @@ int main(void)
   do {
     struct timeval timeout;
     int rc; /* select() return code */
   do {
     struct timeval timeout;
     int rc; /* select() return code */
+    CURLMcode mc; /* curl_multi_fdset() return code */
 
     fd_set fdread;
     fd_set fdwrite;
 
     fd_set fdread;
     fd_set fdwrite;
@@ -88,15 +89,35 @@ int main(void)
     }
 
     /* get file descriptors from the transfers */
     }
 
     /* get file descriptors from the transfers */
-    curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
+    mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
 
 
-    /* In a real-world program you OF COURSE check the return code of the
-       function calls.  On success, the value of maxfd is guaranteed to be
-       greater or equal than -1.  We call select(maxfd + 1, ...), specially in
-       case of (maxfd == -1), we call select(0, ...), which is basically equal
-       to sleep. */
+    if(mc != CURLM_OK)
+    {
+      fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
+      break;
+    }
 
 
-    rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
+    /* On success the value of maxfd is guaranteed to be >= -1. We call
+       select(maxfd + 1, ...); specially in case of (maxfd == -1) there are
+       no fds ready yet so we call select(0, ...) --or Sleep() on Windows--
+       to sleep 100ms, which is the minimum suggested value in the
+       curl_multi_fdset() doc. */
+
+    if(maxfd == -1) {
+#ifdef _WIN32
+      Sleep(100);
+      rc = 0;
+#else
+      /* Portable sleep for platforms other than Windows. */
+      struct timeval wait = { 0, 100 * 1000 }; /* 100ms */
+      rc = select(0, NULL, NULL, NULL, &wait);
+#endif
+    }
+    else {
+      /* Note that on some platforms 'timeout' may be modified by select().
+         If you need access to the original value save a copy beforehand. */
+      rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
+    }
 
     switch(rc) {
     case -1:
 
     switch(rc) {
     case -1:
index 965a2c3..f511d66 100644 (file)
@@ -83,6 +83,7 @@ int main(void)
     do {
       struct timeval timeout;
       int rc; /* select() return code */
     do {
       struct timeval timeout;
       int rc; /* select() return code */
+      CURLMcode mc; /* curl_multi_fdset() return code */
 
       fd_set fdread;
       fd_set fdwrite;
 
       fd_set fdread;
       fd_set fdwrite;
@@ -109,15 +110,35 @@ int main(void)
       }
 
       /* get file descriptors from the transfers */
       }
 
       /* get file descriptors from the transfers */
-      curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
+      mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
 
 
-      /* In a real-world program you OF COURSE check the return code of the
-         function calls.  On success, the value of maxfd is guaranteed to be
-         greater or equal than -1.  We call select(maxfd + 1, ...), specially in
-         case of (maxfd == -1), we call select(0, ...), which is basically equal
-         to sleep. */
+      if(mc != CURLM_OK)
+      {
+        fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
+        break;
+      }
 
 
-      rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
+      /* On success the value of maxfd is guaranteed to be >= -1. We call
+         select(maxfd + 1, ...); specially in case of (maxfd == -1) there are
+         no fds ready yet so we call select(0, ...) --or Sleep() on Windows--
+         to sleep 100ms, which is the minimum suggested value in the
+         curl_multi_fdset() doc. */
+
+      if(maxfd == -1) {
+#ifdef _WIN32
+        Sleep(100);
+        rc = 0;
+#else
+        /* Portable sleep for platforms other than Windows. */
+        struct timeval wait = { 0, 100 * 1000 }; /* 100ms */
+        rc = select(0, NULL, NULL, NULL, &wait);
+#endif
+      }
+      else {
+        /* Note that on some platforms 'timeout' may be modified by select().
+           If you need access to the original value save a copy beforehand. */
+        rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
+      }
 
       switch(rc) {
       case -1:
 
       switch(rc) {
       case -1:
index 37a01cd..47e23f5 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 /* curl stuff */
 #include <curl/curl.h>
 
 /* curl stuff */
 #include <curl/curl.h>
 
+#ifdef _WIN32
+#define WAITMS(x) Sleep(x)
+#else
+/* Portable sleep for platforms other than Windows. */
+#define WAITMS(x)                               \
+  struct timeval wait = { 0, (x) * 1000 };      \
+  (void)select(0, NULL, NULL, NULL, &wait);
+#endif
+
 /*
  * Simply download a HTTP file.
  */
 /*
  * Simply download a HTTP file.
  */
@@ -40,6 +49,7 @@ int main(void)
   CURLM *multi_handle;
 
   int still_running; /* keep number of running handles */
   CURLM *multi_handle;
 
   int still_running; /* keep number of running handles */
+  int repeats = 0;
 
   curl_global_init(CURL_GLOBAL_DEFAULT);
 
 
   curl_global_init(CURL_GLOBAL_DEFAULT);
 
@@ -58,56 +68,33 @@ int main(void)
   curl_multi_perform(multi_handle, &still_running);
 
   do {
   curl_multi_perform(multi_handle, &still_running);
 
   do {
-    struct timeval timeout;
-    int rc; /* select() return code */
-
-    fd_set fdread;
-    fd_set fdwrite;
-    fd_set fdexcep;
-    int maxfd = -1;
-
-    long curl_timeo = -1;
-
-    FD_ZERO(&fdread);
-    FD_ZERO(&fdwrite);
-    FD_ZERO(&fdexcep);
-
-    /* set a suitable timeout to play around with */
-    timeout.tv_sec = 1;
-    timeout.tv_usec = 0;
-
-    curl_multi_timeout(multi_handle, &curl_timeo);
-    if(curl_timeo >= 0) {
-      timeout.tv_sec = curl_timeo / 1000;
-      if(timeout.tv_sec > 1)
-        timeout.tv_sec = 1;
-      else
-        timeout.tv_usec = (curl_timeo % 1000) * 1000;
-    }
+    CURLMcode mc; /* curl_multi_wait() return code */
+    int numfds;
 
 
-    /* get file descriptors from the transfers */
-    curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
+    /* wait for activity, timeout or "nothing" */
+    mc = curl_multi_wait(multi_handle, NULL, 0, 1000, &numfds);
 
 
-    /* In a real-world program you OF COURSE check the return code of the
-       function calls.  On success, the value of maxfd is guaranteed to be
-       greater or equal than -1.  We call select(maxfd + 1, ...), specially in
-       case of (maxfd == -1), we call select(0, ...), which is basically equal
-       to sleep. */
+    if(mc != CURLM_OK)
+    {
+      fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
+      break;
+    }
 
 
-    rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
+    /* 'numfds' being zero means either a timeout or no file descriptors to
+       wait for. Try timeout on first occurance, then assume no file
+       descriptors and no file descriptors to wait for means wait for 100
+       milliseconds. */
 
 
-    switch(rc) {
-    case -1:
-      /* select error */
-      still_running = 0;
-      printf("select() returns error, this is badness\n");
-      break;
-    case 0:
-    default:
-      /* timeout or readable/writable sockets */
-      curl_multi_perform(multi_handle, &still_running);
-      break;
+    if(!numfds) {
+      repeats++; /* count number of repeated zero numfds */
+      if(repeats > 1) {
+        WAITMS(100); /* sleep 100 milliseconds */
+      }
     }
     }
+    else
+      repeats = 0;
+
+    curl_multi_perform(multi_handle, &still_running);
   } while(still_running);
 
   curl_multi_remove_handle(multi_handle, http_handle);
   } while(still_running);
 
   curl_multi_remove_handle(multi_handle, http_handle);
index 57d712f..0c0f8a2 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -64,13 +64,13 @@ curl_context_t* create_curl_context(curl_socket_t sockfd)
 
 void curl_close_cb(uv_handle_t *handle)
 {
 
 void curl_close_cb(uv_handle_t *handle)
 {
-  curl_context_t* context = (curl_context_t*) handle->data;
+  curl_context_t *context = (curl_context_t *) handle->data;
   free(context);
 }
 
 void destroy_curl_context(curl_context_t *context)
 {
   free(context);
 }
 
 void destroy_curl_context(curl_context_t *context)
 {
-  uv_close((uv_handle_t*) &context->poll_handle, curl_close_cb);
+  uv_close((uv_handle_t *) &context->poll_handle, curl_close_cb);
 }
 
 
 }
 
 
@@ -83,67 +83,84 @@ void add_download(const char *url, int num)
   sprintf(filename, "%d.download", num);
 
   file = fopen(filename, "w");
   sprintf(filename, "%d.download", num);
 
   file = fopen(filename, "w");
-  if (file == NULL) {
+  if(!file) {
     fprintf(stderr, "Error opening %s\n", filename);
     return;
   }
 
   handle = curl_easy_init();
   curl_easy_setopt(handle, CURLOPT_WRITEDATA, file);
     fprintf(stderr, "Error opening %s\n", filename);
     return;
   }
 
   handle = curl_easy_init();
   curl_easy_setopt(handle, CURLOPT_WRITEDATA, file);
+  curl_easy_setopt(handle, CURLOPT_PRIVATE, file);
   curl_easy_setopt(handle, CURLOPT_URL, url);
   curl_multi_add_handle(curl_handle, handle);
   fprintf(stderr, "Added download %s -> %s\n", url, filename);
 }
 
   curl_easy_setopt(handle, CURLOPT_URL, url);
   curl_multi_add_handle(curl_handle, handle);
   fprintf(stderr, "Added download %s -> %s\n", url, filename);
 }
 
-void curl_perform(uv_poll_t *req, int status, int events)
+static void check_multi_info(void)
 {
   int running_handles;
 {
   int running_handles;
-  int flags = 0;
-  curl_context_t *context;
   char *done_url;
   CURLMsg *message;
   int pending;
   char *done_url;
   CURLMsg *message;
   int pending;
+  FILE *file;
 
 
-  uv_timer_stop(&timeout);
-
-  if (events & UV_READABLE)
-    flags |= CURL_CSELECT_IN;
-  if (events & UV_WRITABLE)
-    flags |= CURL_CSELECT_OUT;
-
-  context = (curl_context_t*)req;
-
-  curl_multi_socket_action(curl_handle, context->sockfd, flags,
-                           &running_handles);
-
-  while ((message = curl_multi_info_read(curl_handle, &pending))) {
-    switch (message->msg) {
+  while((message = curl_multi_info_read(curl_handle, &pending))) {
+    switch(message->msg) {
     case CURLMSG_DONE:
       curl_easy_getinfo(message->easy_handle, CURLINFO_EFFECTIVE_URL,
                         &done_url);
     case CURLMSG_DONE:
       curl_easy_getinfo(message->easy_handle, CURLINFO_EFFECTIVE_URL,
                         &done_url);
+      curl_easy_getinfo(message->easy_handle, CURLINFO_PRIVATE, &file);
       printf("%s DONE\n", done_url);
 
       curl_multi_remove_handle(curl_handle, message->easy_handle);
       curl_easy_cleanup(message->easy_handle);
       printf("%s DONE\n", done_url);
 
       curl_multi_remove_handle(curl_handle, message->easy_handle);
       curl_easy_cleanup(message->easy_handle);
-
+      if(file) {
+        fclose(file);
+      }
       break;
       break;
+
     default:
       fprintf(stderr, "CURLMSG default\n");
     default:
       fprintf(stderr, "CURLMSG default\n");
-      abort();
+      break;
     }
   }
 }
 
     }
   }
 }
 
+void curl_perform(uv_poll_t *req, int status, int events)
+{
+  int running_handles;
+  int flags = 0;
+  curl_context_t *context;
+  char *done_url;
+  CURLMsg *message;
+  int pending;
+
+  uv_timer_stop(&timeout);
+
+  if(events & UV_READABLE)
+    flags |= CURL_CSELECT_IN;
+  if(events & UV_WRITABLE)
+    flags |= CURL_CSELECT_OUT;
+
+  context = (curl_context_t *) req;
+
+  curl_multi_socket_action(curl_handle, context->sockfd, flags,
+                           &running_handles);
+
+  check_multi_info();
+}
+
 void on_timeout(uv_timer_t *req, int status)
 {
   int running_handles;
   curl_multi_socket_action(curl_handle, CURL_SOCKET_TIMEOUT, 0,
                            &running_handles);
 void on_timeout(uv_timer_t *req, int status)
 {
   int running_handles;
   curl_multi_socket_action(curl_handle, CURL_SOCKET_TIMEOUT, 0,
                            &running_handles);
+  check_multi_info();
 }
 
 void start_timeout(CURLM *multi, long timeout_ms, void *userp)
 {
 }
 
 void start_timeout(CURLM *multi, long timeout_ms, void *userp)
 {
-  if (timeout_ms <= 0)
+  if(timeout_ms <= 0)
     timeout_ms = 1; /* 0 means directly call socket_action, but we'll do it in
                        a bit */
   uv_timer_start(&timeout, on_timeout, timeout_ms, 0);
     timeout_ms = 1; /* 0 means directly call socket_action, but we'll do it in
                        a bit */
   uv_timer_start(&timeout, on_timeout, timeout_ms, 0);
@@ -153,9 +170,9 @@ int handle_socket(CURL *easy, curl_socket_t s, int action, void *userp,
                   void *socketp)
 {
   curl_context_t *curl_context;
                   void *socketp)
 {
   curl_context_t *curl_context;
-  if (action == CURL_POLL_IN || action == CURL_POLL_OUT) {
-    if (socketp) {
-      curl_context = (curl_context_t*) socketp;
+  if(action == CURL_POLL_IN || action == CURL_POLL_OUT) {
+    if(socketp) {
+      curl_context = (curl_context_t *) socketp;
     }
     else {
       curl_context = create_curl_context(s);
     }
     else {
       curl_context = create_curl_context(s);
@@ -163,7 +180,7 @@ int handle_socket(CURL *easy, curl_socket_t s, int action, void *userp,
     curl_multi_assign(curl_handle, s, (void *) curl_context);
   }
 
     curl_multi_assign(curl_handle, s, (void *) curl_context);
   }
 
-  switch (action) {
+  switch(action) {
   case CURL_POLL_IN:
     uv_poll_start(&curl_context->poll_handle, UV_READABLE, curl_perform);
     break;
   case CURL_POLL_IN:
     uv_poll_start(&curl_context->poll_handle, UV_READABLE, curl_perform);
     break;
@@ -171,7 +188,7 @@ int handle_socket(CURL *easy, curl_socket_t s, int action, void *userp,
     uv_poll_start(&curl_context->poll_handle, UV_WRITABLE, curl_perform);
     break;
   case CURL_POLL_REMOVE:
     uv_poll_start(&curl_context->poll_handle, UV_WRITABLE, curl_perform);
     break;
   case CURL_POLL_REMOVE:
-    if (socketp) {
+    if(socketp) {
       uv_poll_stop(&((curl_context_t*)socketp)->poll_handle);
       destroy_curl_context((curl_context_t*) socketp);
       curl_multi_assign(curl_handle, s, NULL);
       uv_poll_stop(&((curl_context_t*)socketp)->poll_handle);
       destroy_curl_context((curl_context_t*) socketp);
       curl_multi_assign(curl_handle, s, NULL);
@@ -188,10 +205,10 @@ int main(int argc, char **argv)
 {
   loop = uv_default_loop();
 
 {
   loop = uv_default_loop();
 
-  if (argc <= 1)
+  if(argc <= 1)
     return 0;
 
     return 0;
 
-  if (curl_global_init(CURL_GLOBAL_ALL)) {
+  if(curl_global_init(CURL_GLOBAL_ALL)) {
     fprintf(stderr, "Could not init cURL\n");
     return 1;
   }
     fprintf(stderr, "Could not init cURL\n");
     return 1;
   }
@@ -202,11 +219,12 @@ int main(int argc, char **argv)
   curl_multi_setopt(curl_handle, CURLMOPT_SOCKETFUNCTION, handle_socket);
   curl_multi_setopt(curl_handle, CURLMOPT_TIMERFUNCTION, start_timeout);
 
   curl_multi_setopt(curl_handle, CURLMOPT_SOCKETFUNCTION, handle_socket);
   curl_multi_setopt(curl_handle, CURLMOPT_TIMERFUNCTION, start_timeout);
 
-  while (argc-- > 1) {
+  while(argc-- > 1) {
     add_download(argv[argc], argc);
   }
 
   uv_run(loop, UV_RUN_DEFAULT);
   curl_multi_cleanup(curl_handle);
     add_download(argv[argc], argc);
   }
 
   uv_run(loop, UV_RUN_DEFAULT);
   curl_multi_cleanup(curl_handle);
+
   return 0;
 }
   return 0;
 }
diff --git a/docs/examples/pop3-dele.c b/docs/examples/pop3-dele.c
new file mode 100644 (file)
index 0000000..fab598f
--- /dev/null
@@ -0,0 +1,64 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include <stdio.h>
+#include <curl/curl.h>
+
+/* This is a simple example showing how to delete an existing mail using
+ * libcurl's POP3 capabilities.
+ *
+ * Note that this example requires libcurl 7.26.0 or above.
+ */
+
+int main(void)
+{
+  CURL *curl;
+  CURLcode res = CURLE_OK;
+
+  curl = curl_easy_init();
+  if(curl) {
+    /* Set username and password */
+    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
+    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
+
+    /* You can specify the message either in the URL or DELE command */
+    curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com/1");
+
+    /* Set the DELE command */
+    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "DELE");
+
+    /* Do not perform a transfer as DELE returns no data */
+    curl_easy_setopt(curl, CURLOPT_NOBODY, 1L);
+
+    /* Perform the custom request */
+    res = curl_easy_perform(curl);
+
+    /* Check for errors */
+    if(res != CURLE_OK)
+      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+              curl_easy_strerror(res));
+
+    /* Always cleanup */
+    curl_easy_cleanup(curl);
+  }
+
+  return (int)res;
+}
diff --git a/docs/examples/pop3-list.c b/docs/examples/pop3-list.c
new file mode 100644 (file)
index 0000000..aebcea6
--- /dev/null
@@ -0,0 +1,58 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include <stdio.h>
+#include <curl/curl.h>
+
+/* This is a simple example using libcurl's POP3 capabilities to list the
+ * contents of a mailbox.
+ *
+ * Note that this example requires libcurl 7.20.0 or above.
+ */
+
+int main(void)
+{
+  CURL *curl;
+  CURLcode res = CURLE_OK;
+
+  curl = curl_easy_init();
+  if(curl) {
+    /* Set username and password */
+    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
+    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
+
+    /* This will list every message of the given mailbox */
+    curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com");
+
+    /* Perform the list */
+    res = curl_easy_perform(curl);
+
+    /* Check for errors */
+    if(res != CURLE_OK)
+      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+              curl_easy_strerror(res));
+
+    /* Always cleanup */
+    curl_easy_cleanup(curl);
+  }
+
+  return (int)res;
+}
diff --git a/docs/examples/pop3-multi.c b/docs/examples/pop3-multi.c
new file mode 100644 (file)
index 0000000..4353086
--- /dev/null
@@ -0,0 +1,167 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include <stdio.h>
+#include <curl/curl.h>
+
+/* This is a simple example showing how to retrieve mail using libcurl's POP3
+ * capabilities. It builds on the pop3-retr.c example to demonstrate how to use
+ * libcurl's multi interface.
+ *
+ * Note that this example requires libcurl 7.20.0 or above.
+ */
+
+#define MULTI_PERFORM_HANG_TIMEOUT 60 * 1000
+
+static struct timeval tvnow(void)
+{
+  struct timeval now;
+
+  /* time() returns the value of time in seconds since the epoch */
+  now.tv_sec = (long)time(NULL);
+  now.tv_usec = 0;
+
+  return now;
+}
+
+static long tvdiff(struct timeval newer, struct timeval older)
+{
+  return (newer.tv_sec - older.tv_sec) * 1000 +
+    (newer.tv_usec - older.tv_usec) / 1000;
+}
+
+int main(void)
+{
+  CURL *curl;
+  CURLM *mcurl;
+  int still_running = 1;
+  struct timeval mp_start;
+
+  curl_global_init(CURL_GLOBAL_DEFAULT);
+
+  curl = curl_easy_init();
+  if(!curl)
+    return 1;
+
+  mcurl = curl_multi_init();
+  if(!mcurl)
+    return 2;
+
+  /* Set username and password */
+  curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
+  curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
+
+  /* This will retreive message 1 from the user's mailbox */
+  curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com/1");
+
+  /* Tell the multi stack about our easy handle */
+  curl_multi_add_handle(mcurl, curl);
+
+  /* Record the start time which we can use later */
+  mp_start = tvnow();
+
+  /* We start some action by calling perform right away */
+  curl_multi_perform(mcurl, &still_running);
+
+  while(still_running) {
+    struct timeval timeout;
+    fd_set fdread;
+    fd_set fdwrite;
+    fd_set fdexcep;
+    int maxfd = -1;
+    int rc;
+    CURLMcode mc; /* curl_multi_fdset() return code */
+
+    long curl_timeo = -1;
+
+    /* Initialise the file descriptors */
+    FD_ZERO(&fdread);
+    FD_ZERO(&fdwrite);
+    FD_ZERO(&fdexcep);
+
+    /* Set a suitable timeout to play around with */
+    timeout.tv_sec = 1;
+    timeout.tv_usec = 0;
+
+    curl_multi_timeout(mcurl, &curl_timeo);
+    if(curl_timeo >= 0) {
+      timeout.tv_sec = curl_timeo / 1000;
+      if(timeout.tv_sec > 1)
+        timeout.tv_sec = 1;
+      else
+        timeout.tv_usec = (curl_timeo % 1000) * 1000;
+    }
+
+    /* get file descriptors from the transfers */
+    mc = curl_multi_fdset(mcurl, &fdread, &fdwrite, &fdexcep, &maxfd);
+
+    if(mc != CURLM_OK)
+    {
+      fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
+      break;
+    }
+
+    /* On success the value of maxfd is guaranteed to be >= -1. We call
+       select(maxfd + 1, ...); specially in case of (maxfd == -1) there are
+       no fds ready yet so we call select(0, ...) --or Sleep() on Windows--
+       to sleep 100ms, which is the minimum suggested value in the
+       curl_multi_fdset() doc. */
+
+    if(maxfd == -1) {
+#ifdef _WIN32
+      Sleep(100);
+      rc = 0;
+#else
+      /* Portable sleep for platforms other than Windows. */
+      struct timeval wait = { 0, 100 * 1000 }; /* 100ms */
+      rc = select(0, NULL, NULL, NULL, &wait);
+#endif
+    }
+    else {
+      /* Note that on some platforms 'timeout' may be modified by select().
+         If you need access to the original value save a copy beforehand. */
+      rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
+    }
+
+    if(tvdiff(tvnow(), mp_start) > MULTI_PERFORM_HANG_TIMEOUT) {
+      fprintf(stderr,
+              "ABORTING: Since it seems that we would have run forever.\n");
+      break;
+    }
+
+    switch(rc) {
+    case -1:  /* select error */
+      break;
+    case 0:   /* timeout */
+    default:  /* action */
+      curl_multi_perform(mcurl, &still_running);
+      break;
+    }
+  }
+
+  /* Always cleanup */
+  curl_multi_remove_handle(mcurl, curl);
+  curl_multi_cleanup(mcurl);
+  curl_easy_cleanup(curl);
+  curl_global_cleanup();
+
+  return 0;
+}
diff --git a/docs/examples/pop3-noop.c b/docs/examples/pop3-noop.c
new file mode 100644 (file)
index 0000000..4efe671
--- /dev/null
@@ -0,0 +1,64 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include <stdio.h>
+#include <curl/curl.h>
+
+/* This is a simple example showing how to perform a noop using libcurl's POP3
+ * capabilities.
+ *
+ * Note that this example requires libcurl 7.26.0 or above.
+ */
+
+int main(void)
+{
+  CURL *curl;
+  CURLcode res = CURLE_OK;
+
+  curl = curl_easy_init();
+  if(curl) {
+    /* Set username and password */
+    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
+    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
+
+    /* This is just the server URL */
+    curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com");
+
+    /* Set the NOOP command */
+    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "NOOP");
+
+    /* Do not perform a transfer as NOOP returns no data */
+    curl_easy_setopt(curl, CURLOPT_NOBODY, 1L);
+
+    /* Perform the custom request */
+    res = curl_easy_perform(curl);
+
+    /* Check for errors */
+    if(res != CURLE_OK)
+      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+              curl_easy_strerror(res));
+
+    /* Always cleanup */
+    curl_easy_cleanup(curl);
+  }
+
+  return (int)res;
+}
diff --git a/docs/examples/pop3-retr.c b/docs/examples/pop3-retr.c
new file mode 100644 (file)
index 0000000..e5a50f2
--- /dev/null
@@ -0,0 +1,58 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include <stdio.h>
+#include <curl/curl.h>
+
+/* This is a simple example showing how to retrieve mail using libcurl's POP3
+ * capabilities.
+ *
+ * Note that this example requires libcurl 7.20.0 or above.
+ */
+
+int main(void)
+{
+  CURL *curl;
+  CURLcode res = CURLE_OK;
+
+  curl = curl_easy_init();
+  if(curl) {
+    /* Set username and password */
+    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
+    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
+
+    /* This will retreive message 1 from the user's mailbox */
+    curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com/1");
+
+    /* Perform the retr */
+    res = curl_easy_perform(curl);
+
+    /* Check for errors */
+    if(res != CURLE_OK)
+      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+              curl_easy_strerror(res));
+
+    /* Always cleanup */
+    curl_easy_cleanup(curl);
+  }
+
+  return (int)res;
+}
similarity index 64%
rename from docs/examples/pop3s.c
rename to docs/examples/pop3-ssl.c
index 44d7c80..45e0054 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include <stdio.h>
 #include <curl/curl.h>
 
 #include <stdio.h>
 #include <curl/curl.h>
 
+/* This is a simple example showing how to retrieve mail using libcurl's POP3
+ * capabilities. It builds on the pop3-retr.c example adding transport
+ * security to protect the authentication details from being snooped.
+ *
+ * Note that this example requires libcurl 7.20.0 or above.
+ */
+
 int main(void)
 {
   CURL *curl;
 int main(void)
 {
   CURL *curl;
-  CURLcode res;
+  CURLcode res = CURLE_OK;
 
   curl = curl_easy_init();
   if(curl) {
     /* Set username and password */
 
   curl = curl_easy_init();
   if(curl) {
     /* Set username and password */
-    curl_easy_setopt(curl, CURLOPT_USERPWD, "user:password");
+    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
+    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
 
 
-    /* This will only fetch the message with ID "1" of the given mailbox */
-    curl_easy_setopt(curl, CURLOPT_URL, "pop3s://user@pop.example.com/1");
+    /* This will retreive message 1 from the user's mailbox. Note the use of
+     * pop3s:// rather than pop3:// to request a SSL based connection. */
+    curl_easy_setopt(curl, CURLOPT_URL, "pop3s://pop.example.com/1");
 
 
-#ifdef SKIP_PEER_VERIFICATION
-    /*
-     * If you want to connect to a site who isn't using a certificate that is
+    /* If you want to connect to a site who isn't using a certificate that is
      * signed by one of the certs in the CA bundle you have, you can skip the
      * verification of the server's certificate. This makes the connection
      * A LOT LESS SECURE.
      *
      * If you have a CA cert for the server stored someplace else than in the
      * default bundle, then the CURLOPT_CAPATH option might come handy for
      * signed by one of the certs in the CA bundle you have, you can skip the
      * verification of the server's certificate. This makes the connection
      * A LOT LESS SECURE.
      *
      * If you have a CA cert for the server stored someplace else than in the
      * default bundle, then the CURLOPT_CAPATH option might come handy for
-     * you.
-     */
+     * you. */
+#ifdef SKIP_PEER_VERIFICATION
     curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
 #endif
 
     curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
 #endif
 
-#ifdef SKIP_HOSTNAME_VERFICATION
-    /*
-     * If the site you're connecting to uses a different host name that what
+    /* If the site you're connecting to uses a different host name that what
      * they have mentioned in their server certificate's commonName (or
      * subjectAltName) fields, libcurl will refuse to connect. You can skip
      * they have mentioned in their server certificate's commonName (or
      * subjectAltName) fields, libcurl will refuse to connect. You can skip
-     * this check, but this will make the connection less secure.
-     */
+     * this check, but this will make the connection less secure. */
+#ifdef SKIP_HOSTNAME_VERFICATION
     curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
 #endif
 
     curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
 #endif
 
-    /* Perform the request, res will get the return code */
+    /* Since the traffic will be encrypted, it is very useful to turn on debug
+     * information within libcurl to see what is happening during the
+     * transfer */
+    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
+
+    /* Perform the retr */
     res = curl_easy_perform(curl);
     res = curl_easy_perform(curl);
+
     /* Check for errors */
     if(res != CURLE_OK)
       fprintf(stderr, "curl_easy_perform() failed: %s\n",
               curl_easy_strerror(res));
 
     /* Check for errors */
     if(res != CURLE_OK)
       fprintf(stderr, "curl_easy_perform() failed: %s\n",
               curl_easy_strerror(res));
 
-    /* always cleanup */
+    /* Always cleanup */
     curl_easy_cleanup(curl);
   }
     curl_easy_cleanup(curl);
   }
-  return 0;
+
+  return (int)res;
 }
 }
diff --git a/docs/examples/pop3-stat.c b/docs/examples/pop3-stat.c
new file mode 100644 (file)
index 0000000..7b318fc
--- /dev/null
@@ -0,0 +1,64 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include <stdio.h>
+#include <curl/curl.h>
+
+/* This is a simple example showing how to obtain message statistics using
+ * libcurl's POP3 capabilities.
+ *
+ * Note that this example requires libcurl 7.26.0 or above.
+ */
+
+int main(void)
+{
+  CURL *curl;
+  CURLcode res = CURLE_OK;
+
+  curl = curl_easy_init();
+  if(curl) {
+    /* Set username and password */
+    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
+    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
+
+    /* This is just the server URL */
+    curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com");
+
+    /* Set the STAT command */
+    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "STAT");
+
+    /* Do not perform a transfer as the data is in the response */
+    curl_easy_setopt(curl, CURLOPT_NOBODY, 1L);
+
+    /* Perform the custom request */
+    res = curl_easy_perform(curl);
+
+    /* Check for errors */
+    if(res != CURLE_OK)
+      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+              curl_easy_strerror(res));
+
+    /* Always cleanup */
+    curl_easy_cleanup(curl);
+  }
+
+  return (int)res;
+}
diff --git a/docs/examples/pop3-tls.c b/docs/examples/pop3-tls.c
new file mode 100644 (file)
index 0000000..812d89b
--- /dev/null
@@ -0,0 +1,84 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include <stdio.h>
+#include <curl/curl.h>
+
+/* This is a simple example showing how to retrieve mail using libcurl's POP3
+ * capabilities. It builds on the pop3-retr.c example adding transport
+ * security to protect the authentication details from being snooped.
+ *
+ * Note that this example requires libcurl 7.20.0 or above.
+ */
+
+int main(void)
+{
+  CURL *curl;
+  CURLcode res = CURLE_OK;
+
+  curl = curl_easy_init();
+  if(curl) {
+    /* Set username and password */
+    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
+    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
+
+    /* This will retreive message 1 from the user's mailbox */
+    curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com/1");
+
+    /* In this example, we'll start with a plain text connection, and upgrade
+     * to Transport Layer Security (TLS) using the STLS command. Be careful of
+     * using CURLUSESSL_TRY here, because if TLS upgrade fails, the transfer
+     * will continue anyway - see the security discussion in the libcurl
+     * tutorial for more details. */
+    curl_easy_setopt(curl, CURLOPT_USE_SSL, (long)CURLUSESSL_ALL);
+
+    /* If your server doesn't have a valid certificate, then you can disable
+     * part of the Transport Layer Security protection by setting the
+     * CURLOPT_SSL_VERIFYPEER and CURLOPT_SSL_VERIFYHOST options to 0 (false).
+     *   curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
+     *   curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
+     * That is, in general, a bad idea. It is still better than sending your
+     * authentication details in plain text though.
+     * Instead, you should get the issuer certificate (or the host certificate
+     * if the certificate is self-signed) and add it to the set of certificates
+     * that are known to libcurl using CURLOPT_CAINFO and/or CURLOPT_CAPATH. See
+     * docs/SSLCERTS for more information. */
+    curl_easy_setopt(curl, CURLOPT_CAINFO, "/path/to/certificate.pem");
+
+    /* Since the traffic will be encrypted, it is very useful to turn on debug
+     * information within libcurl to see what is happening during the
+     * transfer */
+    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
+
+    /* Perform the retr */
+    res = curl_easy_perform(curl);
+
+    /* Check for errors */
+    if(res != CURLE_OK)
+      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+              curl_easy_strerror(res));
+
+    /* Always cleanup */
+    curl_easy_cleanup(curl);
+  }
+
+  return (int)res;
+}
diff --git a/docs/examples/pop3-top.c b/docs/examples/pop3-top.c
new file mode 100644 (file)
index 0000000..21cee88
--- /dev/null
@@ -0,0 +1,61 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include <stdio.h>
+#include <curl/curl.h>
+
+/* This is a simple example showing how to retrieve only the headers of a mail
+ * using libcurl's POP3 capabilities.
+ *
+ * Note that this example requires libcurl 7.26.0 or above.
+ */
+
+int main(void)
+{
+  CURL *curl;
+  CURLcode res = CURLE_OK;
+
+  curl = curl_easy_init();
+  if(curl) {
+    /* Set username and password */
+    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
+    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
+
+    /* This is just the server URL */
+    curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com");
+
+    /* Set the TOP command for message 1 to only include the headers */
+    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "TOP 1 0");
+
+    /* Perform the custom request */
+    res = curl_easy_perform(curl);
+
+    /* Check for errors */
+    if(res != CURLE_OK)
+      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+              curl_easy_strerror(res));
+
+    /* Always cleanup */
+    curl_easy_cleanup(curl);
+  }
+
+  return (int)res;
+}
diff --git a/docs/examples/pop3-uidl.c b/docs/examples/pop3-uidl.c
new file mode 100644 (file)
index 0000000..debb179
--- /dev/null
@@ -0,0 +1,61 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include <stdio.h>
+#include <curl/curl.h>
+
+/* This is a simple example using libcurl's POP3 capabilities to list the
+ * contents of a mailbox by unique ID.
+ *
+ * Note that this example requires libcurl 7.26.0 or above.
+ */
+
+int main(void)
+{
+  CURL *curl;
+  CURLcode res = CURLE_OK;
+
+  curl = curl_easy_init();
+  if(curl) {
+    /* Set username and password */
+    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
+    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
+
+    /* This is just the server URL */
+    curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com");
+
+    /* Set the UIDL command */
+    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "UIDL");
+
+    /* Perform the custom request */
+    res = curl_easy_perform(curl);
+
+    /* Check for errors */
+    if(res != CURLE_OK)
+      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+              curl_easy_strerror(res));
+
+    /* Always cleanup */
+    curl_easy_cleanup(curl);
+  }
+
+  return (int)res;
+}
diff --git a/docs/examples/postinmemory.c b/docs/examples/postinmemory.c
new file mode 100644 (file)
index 0000000..cd2bd13
--- /dev/null
@@ -0,0 +1,111 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <curl/curl.h>
+
+struct MemoryStruct {
+  char *memory;
+  size_t size;
+};
+
+static size_t
+WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp)
+{
+  size_t realsize = size * nmemb;
+  struct MemoryStruct *mem = (struct MemoryStruct *)userp;
+
+  mem->memory = realloc(mem->memory, mem->size + realsize + 1);
+  if(mem->memory == NULL) {
+    /* out of memory! */
+    printf("not enough memory (realloc returned NULL)\n");
+    return 0;
+  }
+
+  memcpy(&(mem->memory[mem->size]), contents, realsize);
+  mem->size += realsize;
+  mem->memory[mem->size] = 0;
+
+  return realsize;
+}
+
+int main(void)
+{
+  CURL *curl;
+  CURLcode res;
+  struct MemoryStruct chunk;
+  static const char *postthis="Field=1&Field=2&Field=3";
+
+  chunk.memory = malloc(1);  /* will be grown as needed by realloc above */
+  chunk.size = 0;    /* no data at this point */
+
+  curl_global_init(CURL_GLOBAL_ALL);
+  curl = curl_easy_init();
+  if(curl) {
+
+    curl_easy_setopt(curl, CURLOPT_URL, "http://www.example.org/");
+
+    /* send all data to this function  */
+    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
+
+    /* we pass our 'chunk' struct to the callback function */
+    curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&chunk);
+
+    /* some servers don't like requests that are made without a user-agent
+       field, so we provide one */
+    curl_easy_setopt(curl, CURLOPT_USERAGENT, "libcurl-agent/1.0");
+
+    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postthis);
+
+    /* if we don't provide POSTFIELDSIZE, libcurl will strlen() by
+       itself */
+    curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)strlen(postthis));
+
+    /* Perform the request, res will get the return code */
+    res = curl_easy_perform(curl);
+    /* Check for errors */
+    if(res != CURLE_OK) {
+      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+              curl_easy_strerror(res));
+    }
+    else {
+      /*
+       * Now, our chunk.memory points to a memory block that is chunk.size
+       * bytes big and contains the remote file.
+       *
+       * Do something nice with it!
+       */
+      printf("%s\n",chunk.memory);
+    }
+
+    /* always cleanup */
+    curl_easy_cleanup(curl);
+
+    if(chunk.memory)
+      free(chunk.memory);
+
+    /* we're done with libcurl, so clean it up */
+    curl_global_cleanup();
+  }
+  return 0;
+}
index 669780a..fed343d 100644 (file)
@@ -224,7 +224,7 @@ int main(int argc, char * const argv[])
       if (curl != NULL) {
         my_curl_easy_setopt(curl, CURLOPT_VERBOSE, 0L);
         my_curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1L);
       if (curl != NULL) {
         my_curl_easy_setopt(curl, CURLOPT_VERBOSE, 0L);
         my_curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1L);
-        my_curl_easy_setopt(curl, CURLOPT_WRITEHEADER, stdout);
+        my_curl_easy_setopt(curl, CURLOPT_HEADERDATA, stdout);
         my_curl_easy_setopt(curl, CURLOPT_URL, url);
 
         /* request server options */
         my_curl_easy_setopt(curl, CURLOPT_URL, url);
 
         /* request server options */
index d944ab9..7402e35 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -53,23 +53,26 @@ int main(void)
   /* send all data to this function  */
   curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, write_data);
 
   /* send all data to this function  */
   curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, write_data);
 
-  /* open the files */
-  headerfile = fopen(headerfilename,"wb");
-  if (headerfile == NULL) {
+  /* open the header file */
+  headerfile = fopen(headerfilename, "wb");
+  if(!headerfile) {
     curl_easy_cleanup(curl_handle);
     return -1;
   }
     curl_easy_cleanup(curl_handle);
     return -1;
   }
-  bodyfile = fopen(bodyfilename,"wb");
-  if (bodyfile == NULL) {
+
+  /* open the body file */
+  bodyfile = fopen(bodyfilename, "wb");
+  if(!bodyfile) {
     curl_easy_cleanup(curl_handle);
     curl_easy_cleanup(curl_handle);
+    fclose(headerfile);
     return -1;
   }
 
   /* we want the headers be written to this file handle */
     return -1;
   }
 
   /* we want the headers be written to this file handle */
-  curl_easy_setopt(curl_handle,   CURLOPT_WRITEHEADER, headerfile);
+  curl_easy_setopt(curl_handle, CURLOPT_HEADERDATA, headerfile);
 
   /* we want the body be written to this file handle instead of stdout */
 
   /* we want the body be written to this file handle instead of stdout */
-  curl_easy_setopt(curl_handle,   CURLOPT_WRITEDATA, bodyfile);
+  curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, bodyfile);
 
   /* get it! */
   curl_easy_perform(curl_handle);
 
   /* get it! */
   curl_easy_perform(curl_handle);
diff --git a/docs/examples/sessioninfo.c b/docs/examples/sessioninfo.c
new file mode 100644 (file)
index 0000000..2641c71
--- /dev/null
@@ -0,0 +1,105 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+
+/* Note that this example currently requires cURL to be linked against
+   GnuTLS (and this program must also be linked against -lgnutls). */
+
+#include <stdio.h>
+
+#include <curl/curl.h>
+#include <gnutls/gnutls.h>
+
+static CURL *curl;
+
+static size_t wrfu(void *ptr, size_t size, size_t nmemb, void *stream)
+{
+  const struct curl_tlssessioninfo *info;
+  unsigned int cert_list_size;
+  const gnutls_datum_t *chainp;
+  CURLcode res;
+
+  (void)stream;
+  (void)ptr;
+
+  res = curl_easy_getinfo(curl, CURLINFO_TLS_SESSION, &info);
+
+  if(!res) {
+    switch(info->backend) {
+    case CURLSSLBACKEND_GNUTLS:
+      /* info->internals is now the gnutls_session_t */
+      chainp = gnutls_certificate_get_peers(info->internals, &cert_list_size);
+      if((chainp) && (cert_list_size)) {
+        unsigned int i;
+
+        for(i = 0; i < cert_list_size; i++) {
+          gnutls_x509_crt_t cert;
+          gnutls_datum_t dn;
+
+          if(GNUTLS_E_SUCCESS == gnutls_x509_crt_init(&cert)) {
+            if(GNUTLS_E_SUCCESS ==
+               gnutls_x509_crt_import(cert, &chainp[i], GNUTLS_X509_FMT_DER)) {
+              if(GNUTLS_E_SUCCESS ==
+                 gnutls_x509_crt_print(cert, GNUTLS_CRT_PRINT_FULL, &dn)) {
+                fprintf(stderr, "Certificate #%d: %.*s", i, dn.size, dn.data);
+
+                gnutls_free(dn.data);
+              }
+            }
+
+            gnutls_x509_crt_deinit(cert);
+          }
+        }
+      }
+      break;
+    case CURLSSLBACKEND_NONE:
+    default:
+      break;
+    }
+  }
+
+  return size * nmemb;
+}
+
+int main(void)
+{
+  curl_global_init(CURL_GLOBAL_DEFAULT);
+
+  curl = curl_easy_init();
+  if(curl) {
+    curl_easy_setopt(curl, CURLOPT_URL, "https://www.example.com/");
+
+    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, wrfu);
+
+    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
+    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
+
+    curl_easy_setopt(curl, CURLOPT_VERBOSE, 0L);
+
+    (void) curl_easy_perform(curl);
+
+    curl_easy_cleanup(curl);
+  }
+
+  curl_global_cleanup();
+
+  return 0;
+}
diff --git a/docs/examples/simplesmtp.c b/docs/examples/simplesmtp.c
deleted file mode 100644 (file)
index df85162..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at http://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-#include <stdio.h>
-#include <string.h>
-#include <curl/curl.h>
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res;
-  struct curl_slist *recipients = NULL;
-
-  /* value for envelope reverse-path */
-  static const char *from = "<bradh@example.com>";
-
-  /* this becomes the envelope forward-path */
-  static const char *to = "<bradh@example.net>";
-
-  curl = curl_easy_init();
-  if(curl) {
-    /* this is the URL for your mailserver - you can also use an smtps:// URL
-     * here */
-    curl_easy_setopt(curl, CURLOPT_URL, "smtp://mail.example.net.");
-
-    /* Note that this option isn't strictly required, omitting it will result in
-     * libcurl will sent the MAIL FROM command with no sender data. All
-     * autoresponses should have an empty reverse-path, and should be directed
-     * to the address in the reverse-path which triggered them. Otherwise, they
-     * could cause an endless loop. See RFC 5321 Section 4.5.5 for more details.
-     */
-    curl_easy_setopt(curl, CURLOPT_MAIL_FROM, from);
-
-    /* Note that the CURLOPT_MAIL_RCPT takes a list, not a char array.  */
-    recipients = curl_slist_append(recipients, to);
-    curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients);
-
-    /* You provide the payload (headers and the body of the message) as the
-     * "data" element. There are two choices, either:
-     * - provide a callback function and specify the function name using the
-     * CURLOPT_READFUNCTION option; or
-     * - just provide a FILE pointer that can be used to read the data from.
-     * The easiest case is just to read from standard input, (which is available
-     * as a FILE pointer) as shown here.
-     */
-    curl_easy_setopt(curl, CURLOPT_READDATA, stdin);
-
-    /* send the message (including headers) */
-    res = curl_easy_perform(curl);
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* free the list of recipients */
-    curl_slist_free_all(recipients);
-
-    /* curl won't send the QUIT command until you call cleanup, so you should be
-     * able to re-use this connection for additional messages (setting
-     * CURLOPT_MAIL_FROM and CURLOPT_MAIL_RCPT as required, and calling
-     * curl_easy_perform() again. It may not be a good idea to keep the
-     * connection open for a very long time though (more than a few minutes may
-     * result in the server timing out the connection), and you do want to clean
-     * up in the end.
-     */
-    curl_easy_cleanup(curl);
-  }
-  return 0;
-}
index 74c5846..aefb79f 100644 (file)
@@ -75,7 +75,7 @@ int main(void)
   if(curl) {
     /* what call to write: */
     curl_easy_setopt(curl, CURLOPT_URL, "HTTPS://your.favourite.ssl.site");
   if(curl) {
     /* what call to write: */
     curl_easy_setopt(curl, CURLOPT_URL, "HTTPS://your.favourite.ssl.site");
-    curl_easy_setopt(curl, CURLOPT_WRITEHEADER, headerfile);
+    curl_easy_setopt(curl, CURLOPT_HEADERDATA, headerfile);
 
     for(i = 0; i < 1; i++) /* single-iteration loop, just to break out from */
     {
 
     for(i = 0; i < 1; i++) /* single-iteration loop, just to break out from */
     {
diff --git a/docs/examples/smtp-expn.c b/docs/examples/smtp-expn.c
new file mode 100644 (file)
index 0000000..0322d2f
--- /dev/null
@@ -0,0 +1,73 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include <stdio.h>
+#include <string.h>
+#include <curl/curl.h>
+
+/* This is a simple example showing how to expand an email mailing list.
+ *
+ * Notes:
+ *
+ * 1) This example requires libcurl 7.34.0 or above.
+ * 2) Not all email servers support this command.
+ */
+
+int main(void)
+{
+  CURL *curl;
+  CURLcode res;
+  struct curl_slist *recipients = NULL;
+
+  curl = curl_easy_init();
+  if(curl) {
+    /* This is the URL for your mailserver */
+    curl_easy_setopt(curl, CURLOPT_URL, "smtp://mail.example.com");
+
+    /* Note that the CURLOPT_MAIL_RCPT takes a list, not a char array  */
+    recipients = curl_slist_append(recipients, "Friends");
+    curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients);
+
+    /* Set the EXPN command */
+    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "EXPN");
+
+    /* Perform the custom request */
+    res = curl_easy_perform(curl);
+
+    /* Check for errors */
+    if(res != CURLE_OK)
+      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+              curl_easy_strerror(res));
+
+    /* Free the list of recipients */
+    curl_slist_free_all(recipients);
+
+    /* Curl won't send the QUIT command until you call cleanup, so you should
+     * be able to re-use this connection for additional requests. It may not be
+     * a good idea to keep the connection open for a very long time though
+     * (more than a few minutes may result in the server timing out the
+     * connection) and you do want to clean up in the end.
+     */
+    curl_easy_cleanup(curl);
+  }
+
+  return 0;
+}
diff --git a/docs/examples/smtp-mail.c b/docs/examples/smtp-mail.c
new file mode 100644 (file)
index 0000000..af4d1b6
--- /dev/null
@@ -0,0 +1,137 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include <stdio.h>
+#include <string.h>
+#include <curl/curl.h>
+
+/* This is a simple example showing how to send mail using libcurl's SMTP
+ * capabilities. For an exmaple of using the multi interface please see
+ * smtp-multi.c.
+ *
+ * Note that this example requires libcurl 7.20.0 or above.
+ */
+
+#define FROM    "<sender@example.org>"
+#define TO      "<addressee@example.net>"
+#define CC      "<info@example.org>"
+
+static const char *payload_text[] = {
+  "Date: Mon, 29 Nov 2010 21:54:29 +1100\r\n",
+  "To: " TO "\r\n",
+  "From: " FROM "(Example User)\r\n",
+  "Cc: " CC "(Another example User)\r\n",
+  "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@rfcpedant.example.org>\r\n",
+  "Subject: SMTP example message\r\n",
+  "\r\n", /* empty line to divide headers from body, see RFC5322 */
+  "The body of the message starts here.\r\n",
+  "\r\n",
+  "It could be a lot of lines, could be MIME encoded, whatever.\r\n",
+  "Check RFC5322.\r\n",
+  NULL
+};
+
+struct upload_status {
+  int lines_read;
+};
+
+static size_t payload_source(void *ptr, size_t size, size_t nmemb, void *userp)
+{
+  struct upload_status *upload_ctx = (struct upload_status *)userp;
+  const char *data;
+
+  if((size == 0) || (nmemb == 0) || ((size*nmemb) < 1)) {
+    return 0;
+  }
+
+  data = payload_text[upload_ctx->lines_read];
+
+  if(data) {
+    size_t len = strlen(data);
+    memcpy(ptr, data, len);
+    upload_ctx->lines_read++;
+
+    return len;
+  }
+
+  return 0;
+}
+
+int main(void)
+{
+  CURL *curl;
+  CURLcode res = CURLE_OK;
+  struct curl_slist *recipients = NULL;
+  struct upload_status upload_ctx;
+
+  upload_ctx.lines_read = 0;
+
+  curl = curl_easy_init();
+  if(curl) {
+    /* This is the URL for your mailserver */
+    curl_easy_setopt(curl, CURLOPT_URL, "smtp://mail.example.com");
+
+    /* Note that this option isn't strictly required, omitting it will result in
+     * libcurl sending the MAIL FROM command with empty sender data. All
+     * autoresponses should have an empty reverse-path, and should be directed
+     * to the address in the reverse-path which triggered them. Otherwise, they
+     * could cause an endless loop. See RFC 5321 Section 4.5.5 for more details.
+     */
+    curl_easy_setopt(curl, CURLOPT_MAIL_FROM, FROM);
+
+    /* Add two recipients, in this particular case they correspond to the
+     * To: and Cc: addressees in the header, but they could be any kind of
+     * recipient. */
+    recipients = curl_slist_append(recipients, TO);
+    recipients = curl_slist_append(recipients, CC);
+    curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients);
+
+    /* We're using a callback function to specify the payload (the headers and
+     * body of the message). You could just use the CURLOPT_READDATA option to
+     * specify a FILE pointer to read from. */
+    curl_easy_setopt(curl, CURLOPT_READFUNCTION, payload_source);
+    curl_easy_setopt(curl, CURLOPT_READDATA, &upload_ctx);
+    curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
+
+    /* Send the message */
+    res = curl_easy_perform(curl);
+
+    /* Check for errors */
+    if(res != CURLE_OK)
+      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+              curl_easy_strerror(res));
+
+    /* Free the list of recipients */
+    curl_slist_free_all(recipients);
+
+    /* curl won't send the QUIT command until you call cleanup, so you should be
+     * able to re-use this connection for additional messages (setting
+     * CURLOPT_MAIL_FROM and CURLOPT_MAIL_RCPT as required, and calling
+     * curl_easy_perform() again. It may not be a good idea to keep the
+     * connection open for a very long time though (more than a few minutes may
+     * result in the server timing out the connection), and you do want to clean
+     * up in the end.
+     */
+    curl_easy_cleanup(curl);
+  }
+
+  return (int)res;
+}
index 6462aff..4098c7d 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
  * KIND, either express or implied.
  *
  ***************************************************************************/
-/* This is an example application source code sending SMTP mail using the
- * multi interface.
- */
-
 #include <string.h>
 #include <curl/curl.h>
 
 #include <string.h>
 #include <curl/curl.h>
 
-/*
- * This is the list of basic details you need to tweak to get things right.
+/* This is an example showing how to send mail using libcurl's SMTP
+ * capabilities. It builds on the smtp-mail.c example to demonstrate how to use
+ * libcurl's multi interface.
+ *
+ * Note that this example requires libcurl 7.20.0 or above.
  */
  */
-#define USERNAME "user@example.com"
-#define PASSWORD "123qwerty"
-#define SMTPSERVER "smtp.example.com"
-#define SMTPPORT ":587" /* it is a colon+port string, but you can set it
-                           to "" to use the default port */
-#define RECIPIENT "<recipient@example.com>"
-#define MAILFROM "<realuser@example.com>"
+
+#define FROM     "<sender@example.com>"
+#define TO       "<recipient@example.com>"
+#define CC       "<info@example.com>"
 
 #define MULTI_PERFORM_HANG_TIMEOUT 60 * 1000
 
 
 #define MULTI_PERFORM_HANG_TIMEOUT 60 * 1000
 
-/* Note that you should include the actual meta data headers here as well if
-   you want the mail to have a Subject, another From:, show a To: or whatever
-   you think your mail should feature! */
-static const char *text[]={
-  "one\n",
-  "two\n",
-  "three\n",
-  " Hello, this is CURL email SMTP\n",
+static const char *payload_text[] = {
+  "Date: Mon, 29 Nov 2010 21:54:29 +1100\r\n",
+  "To: " TO "\r\n",
+  "From: " FROM "(Example User)\r\n",
+  "Cc: " CC "(Another example User)\r\n",
+  "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@rfcpedant.example.org>\r\n",
+  "Subject: SMTP multi example message\r\n",
+  "\r\n", /* empty line to divide headers from body, see RFC5322 */
+  "The body of the message starts here.\r\n",
+  "\r\n",
+  "It could be a lot of lines, could be MIME encoded, whatever.\r\n",
+  "Check RFC5322.\r\n",
   NULL
 };
 
   NULL
 };
 
-struct WriteThis {
-  int counter;
+struct upload_status {
+  int lines_read;
 };
 
 };
 
-static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *userp)
+static size_t payload_source(void *ptr, size_t size, size_t nmemb, void *userp)
 {
 {
-  struct WriteThis *pooh = (struct WriteThis *)userp;
+  struct upload_status *upload_ctx = (struct upload_status *)userp;
   const char *data;
 
   const char *data;
 
-  if(size*nmemb < 1)
+  if((size == 0) || (nmemb == 0) || ((size*nmemb) < 1)) {
     return 0;
     return 0;
+  }
 
 
-  data = text[pooh->counter];
+  data = payload_text[upload_ctx->lines_read];
 
   if(data) {
     size_t len = strlen(data);
     memcpy(ptr, data, len);
 
   if(data) {
     size_t len = strlen(data);
     memcpy(ptr, data, len);
-    pooh->counter++; /* advance pointer */
+    upload_ctx->lines_read++;
+
     return len;
   }
     return len;
   }
-  return 0;                         /* no more data left to deliver */
+
+  return 0;
 }
 
 static struct timeval tvnow(void)
 {
 }
 
 static struct timeval tvnow(void)
 {
-  /*
-  ** time() returns the value of time in seconds since the Epoch.
-  */
   struct timeval now;
   struct timeval now;
+
+  /* time() returns the value of time in seconds since the epoch */
   now.tv_sec = (long)time(NULL);
   now.tv_usec = 0;
   now.tv_sec = (long)time(NULL);
   now.tv_usec = 0;
+
   return now;
 }
 
 static long tvdiff(struct timeval newer, struct timeval older)
 {
   return now;
 }
 
 static long tvdiff(struct timeval newer, struct timeval older)
 {
-  return (newer.tv_sec-older.tv_sec)*1000+
-    (newer.tv_usec-older.tv_usec)/1000;
+  return (newer.tv_sec - older.tv_sec) * 1000 +
+    (newer.tv_usec - older.tv_usec) / 1000;
 }
 
 int main(void)
 {
 }
 
 int main(void)
 {
-   CURL *curl;
-   CURLM *mcurl;
-   int still_running = 1;
-   struct timeval mp_start;
-   struct WriteThis pooh;
-   struct curl_slist* rcpt_list = NULL;
+  CURL *curl;
+  CURLM *mcurl;
+  int still_running = 1;
+  struct timeval mp_start;
+  struct curl_slist *recipients = NULL;
+  struct upload_status upload_ctx;
+
+  upload_ctx.lines_read = 0;
 
 
-   pooh.counter = 0;
+  curl_global_init(CURL_GLOBAL_DEFAULT);
 
 
-   curl_global_init(CURL_GLOBAL_DEFAULT);
+  curl = curl_easy_init();
+  if(!curl)
+    return 1;
 
 
-   curl = curl_easy_init();
-   if(!curl)
-     return 1;
+  mcurl = curl_multi_init();
+  if(!mcurl)
+    return 2;
 
 
-   mcurl = curl_multi_init();
-   if(!mcurl)
-     return 2;
+  /* This is the URL for your mailserver */
+  curl_easy_setopt(curl, CURLOPT_URL, "smtp://mail.example.com");
 
 
-   rcpt_list = curl_slist_append(rcpt_list, RECIPIENT);
-   /* more addresses can be added here
-      rcpt_list = curl_slist_append(rcpt_list, "<others@example.com>");
+  /* Note that this option isn't strictly required, omitting it will result in
+   * libcurl sending the MAIL FROM command with empty sender data. All
+   * autoresponses should have an empty reverse-path, and should be directed
+   * to the address in the reverse-path which triggered them. Otherwise, they
+   * could cause an endless loop. See RFC 5321 Section 4.5.5 for more details.
    */
    */
+  curl_easy_setopt(curl, CURLOPT_MAIL_FROM, FROM);
+
+  /* Add two recipients, in this particular case they correspond to the
+   * To: and Cc: addressees in the header, but they could be any kind of
+   * recipient. */
+  recipients = curl_slist_append(recipients, TO);
+  recipients = curl_slist_append(recipients, CC);
+  curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients);
 
 
-   curl_easy_setopt(curl, CURLOPT_URL, "smtp://" SMTPSERVER SMTPPORT);
-   curl_easy_setopt(curl, CURLOPT_USERNAME, USERNAME);
-   curl_easy_setopt(curl, CURLOPT_PASSWORD, PASSWORD);
-   curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
-   curl_easy_setopt(curl, CURLOPT_MAIL_FROM, MAILFROM);
-   curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, rcpt_list);
-   curl_easy_setopt(curl, CURLOPT_USE_SSL, (long)CURLUSESSL_ALL);
-   curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
-   curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
-   curl_easy_setopt(curl, CURLOPT_READDATA, &pooh);
-   curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-   curl_easy_setopt(curl, CURLOPT_SSLVERSION, 0L);
-   curl_easy_setopt(curl, CURLOPT_SSL_SESSIONID_CACHE, 0L);
-   curl_multi_add_handle(mcurl, curl);
-
-   mp_start = tvnow();
-
-  /* we start some action by calling perform right away */
+  /* We're using a callback function to specify the payload (the headers and
+   * body of the message). You could just use the CURLOPT_READDATA option to
+   * specify a FILE pointer to read from. */
+  curl_easy_setopt(curl, CURLOPT_READFUNCTION, payload_source);
+  curl_easy_setopt(curl, CURLOPT_READDATA, &upload_ctx);
+  curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
+
+  /* Tell the multi stack about our easy handle */
+  curl_multi_add_handle(mcurl, curl);
+
+  /* Record the start time which we can use later */
+  mp_start = tvnow();
+
+  /* We start some action by calling perform right away */
   curl_multi_perform(mcurl, &still_running);
 
   while(still_running) {
     struct timeval timeout;
   curl_multi_perform(mcurl, &still_running);
 
   while(still_running) {
     struct timeval timeout;
-    int rc; /* select() return code */
-
     fd_set fdread;
     fd_set fdwrite;
     fd_set fdexcep;
     int maxfd = -1;
     fd_set fdread;
     fd_set fdwrite;
     fd_set fdexcep;
     int maxfd = -1;
+    int rc;
+    CURLMcode mc; /* curl_multi_fdset() return code */
 
     long curl_timeo = -1;
 
 
     long curl_timeo = -1;
 
+    /* Initialise the file descriptors */
     FD_ZERO(&fdread);
     FD_ZERO(&fdwrite);
     FD_ZERO(&fdexcep);
 
     FD_ZERO(&fdread);
     FD_ZERO(&fdwrite);
     FD_ZERO(&fdexcep);
 
-    /* set a suitable timeout to play around with */
+    /* Set a suitable timeout to play around with */
     timeout.tv_sec = 1;
     timeout.tv_usec = 0;
 
     timeout.tv_sec = 1;
     timeout.tv_usec = 0;
 
@@ -165,39 +178,60 @@ int main(void)
     }
 
     /* get file descriptors from the transfers */
     }
 
     /* get file descriptors from the transfers */
-    curl_multi_fdset(mcurl, &fdread, &fdwrite, &fdexcep, &maxfd);
+    mc = curl_multi_fdset(mcurl, &fdread, &fdwrite, &fdexcep, &maxfd);
 
 
-    /* In a real-world program you OF COURSE check the return code of the
-       function calls.  On success, the value of maxfd is guaranteed to be
-       greater or equal than -1.  We call select(maxfd + 1, ...), specially in
-       case of (maxfd == -1), we call select(0, ...), which is basically equal
-       to sleep. */
+    if(mc != CURLM_OK)
+    {
+      fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
+      break;
+    }
 
 
-    rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
+    /* On success the value of maxfd is guaranteed to be >= -1. We call
+       select(maxfd + 1, ...); specially in case of (maxfd == -1) there are
+       no fds ready yet so we call select(0, ...) --or Sleep() on Windows--
+       to sleep 100ms, which is the minimum suggested value in the
+       curl_multi_fdset() doc. */
+
+    if(maxfd == -1) {
+#ifdef _WIN32
+      Sleep(100);
+      rc = 0;
+#else
+      /* Portable sleep for platforms other than Windows. */
+      struct timeval wait = { 0, 100 * 1000 }; /* 100ms */
+      rc = select(0, NULL, NULL, NULL, &wait);
+#endif
+    }
+    else {
+      /* Note that on some platforms 'timeout' may be modified by select().
+         If you need access to the original value save a copy beforehand. */
+      rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
+    }
 
 
-    if (tvdiff(tvnow(), mp_start) > MULTI_PERFORM_HANG_TIMEOUT) {
-      fprintf(stderr, "ABORTING TEST, since it seems "
-              "that it would have run forever.\n");
+    if(tvdiff(tvnow(), mp_start) > MULTI_PERFORM_HANG_TIMEOUT) {
+      fprintf(stderr,
+              "ABORTING: Since it seems that we would have run forever.\n");
       break;
     }
 
     switch(rc) {
       break;
     }
 
     switch(rc) {
-    case -1:
-      /* select error */
+    case -1:  /* select error */
       break;
       break;
-    case 0: /* timeout */
-    default: /* action */
+    case 0:   /* timeout */
+    default:  /* action */
       curl_multi_perform(mcurl, &still_running);
       break;
     }
   }
 
       curl_multi_perform(mcurl, &still_running);
       break;
     }
   }
 
-  curl_slist_free_all(rcpt_list);
+  /* Free the list of recipients */
+  curl_slist_free_all(recipients);
+
+  /* Always cleanup */
   curl_multi_remove_handle(mcurl, curl);
   curl_multi_cleanup(mcurl);
   curl_easy_cleanup(curl);
   curl_global_cleanup();
   curl_multi_remove_handle(mcurl, curl);
   curl_multi_cleanup(mcurl);
   curl_easy_cleanup(curl);
   curl_global_cleanup();
+
   return 0;
 }
   return 0;
 }
-
-
diff --git a/docs/examples/smtp-ssl.c b/docs/examples/smtp-ssl.c
new file mode 100644 (file)
index 0000000..9a68a7f
--- /dev/null
@@ -0,0 +1,161 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include <stdio.h>
+#include <string.h>
+#include <curl/curl.h>
+
+/* This is a simple example showing how to send mail using libcurl's SMTP
+ * capabilities. It builds on the smtp-mail.c example to add authentication
+ * and, more importantly, transport security to protect the authentication
+ * details from being snooped.
+ *
+ * Note that this example requires libcurl 7.20.0 or above.
+ */
+
+#define FROM    "<sender@example.org>"
+#define TO      "<addressee@example.net>"
+#define CC      "<info@example.org>"
+
+static const char *payload_text[] = {
+  "Date: Mon, 29 Nov 2010 21:54:29 +1100\r\n",
+  "To: " TO "\r\n",
+  "From: " FROM "(Example User)\r\n",
+  "Cc: " CC "(Another example User)\r\n",
+  "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@rfcpedant.example.org>\r\n",
+  "Subject: SMTP SSL example message\r\n",
+  "\r\n", /* empty line to divide headers from body, see RFC5322 */
+  "The body of the message starts here.\r\n",
+  "\r\n",
+  "It could be a lot of lines, could be MIME encoded, whatever.\r\n",
+  "Check RFC5322.\r\n",
+  NULL
+};
+
+struct upload_status {
+  int lines_read;
+};
+
+static size_t payload_source(void *ptr, size_t size, size_t nmemb, void *userp)
+{
+  struct upload_status *upload_ctx = (struct upload_status *)userp;
+  const char *data;
+
+  if((size == 0) || (nmemb == 0) || ((size*nmemb) < 1)) {
+    return 0;
+  }
+
+  data = payload_text[upload_ctx->lines_read];
+
+  if(data) {
+    size_t len = strlen(data);
+    memcpy(ptr, data, len);
+    upload_ctx->lines_read++;
+
+    return len;
+  }
+
+  return 0;
+}
+
+int main(void)
+{
+  CURL *curl;
+  CURLcode res = CURLE_OK;
+  struct curl_slist *recipients = NULL;
+  struct upload_status upload_ctx;
+
+  upload_ctx.lines_read = 0;
+
+  curl = curl_easy_init();
+  if(curl) {
+    /* Set username and password */
+    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
+    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
+
+    /* This is the URL for your mailserver. Note the use of smtps:// rather
+     * than smtp:// to request a SSL based connection. */
+    curl_easy_setopt(curl, CURLOPT_URL, "smtps://mainserver.example.net");
+
+    /* If you want to connect to a site who isn't using a certificate that is
+     * signed by one of the certs in the CA bundle you have, you can skip the
+     * verification of the server's certificate. This makes the connection
+     * A LOT LESS SECURE.
+     *
+     * If you have a CA cert for the server stored someplace else than in the
+     * default bundle, then the CURLOPT_CAPATH option might come handy for
+     * you. */
+#ifdef SKIP_PEER_VERIFICATION
+    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
+#endif
+
+    /* If the site you're connecting to uses a different host name that what
+     * they have mentioned in their server certificate's commonName (or
+     * subjectAltName) fields, libcurl will refuse to connect. You can skip
+     * this check, but this will make the connection less secure. */
+#ifdef SKIP_HOSTNAME_VERFICATION
+    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
+#endif
+
+    /* Note that this option isn't strictly required, omitting it will result in
+     * libcurl sending the MAIL FROM command with empty sender data. All
+     * autoresponses should have an empty reverse-path, and should be directed
+     * to the address in the reverse-path which triggered them. Otherwise, they
+     * could cause an endless loop. See RFC 5321 Section 4.5.5 for more details.
+     */
+    curl_easy_setopt(curl, CURLOPT_MAIL_FROM, FROM);
+
+    /* Add two recipients, in this particular case they correspond to the
+     * To: and Cc: addressees in the header, but they could be any kind of
+     * recipient. */
+    recipients = curl_slist_append(recipients, TO);
+    recipients = curl_slist_append(recipients, CC);
+    curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients);
+
+    /* We're using a callback function to specify the payload (the headers and
+     * body of the message). You could just use the CURLOPT_READDATA option to
+     * specify a FILE pointer to read from. */
+    curl_easy_setopt(curl, CURLOPT_READFUNCTION, payload_source);
+    curl_easy_setopt(curl, CURLOPT_READDATA, &upload_ctx);
+    curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
+
+    /* Since the traffic will be encrypted, it is very useful to turn on debug
+     * information within libcurl to see what is happening during the
+     * transfer */
+    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
+
+    /* Send the message */
+    res = curl_easy_perform(curl);
+
+    /* Check for errors */
+    if(res != CURLE_OK)
+      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+              curl_easy_strerror(res));
+
+    /* Free the list of recipients */
+    curl_slist_free_all(recipients);
+
+    /* Always cleanup */
+    curl_easy_cleanup(curl);
+  }
+
+  return (int)res;
+}
index 3635c10..4872dbd 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include <curl/curl.h>
 
 /* This is a simple example showing how to send mail using libcurl's SMTP
 #include <curl/curl.h>
 
 /* This is a simple example showing how to send mail using libcurl's SMTP
- * capabilities. It builds on the simplesmtp.c example, adding some
- * authentication and transport security.
+ * capabilities. It builds on the smtp-mail.c example to add authentication
+ * and, more importantly, transport security to protect the authentication
+ * details from being snooped.
+ *
+ * Note that this example requires libcurl 7.20.0 or above.
  */
 
 #define FROM    "<sender@example.org>"
 #define TO      "<addressee@example.net>"
 #define CC      "<info@example.org>"
 
  */
 
 #define FROM    "<sender@example.org>"
 #define TO      "<addressee@example.net>"
 #define CC      "<info@example.org>"
 
-static const char *payload_text[]={
-  "Date: Mon, 29 Nov 2010 21:54:29 +1100\n",
-  "To: " TO "\n",
-  "From: " FROM "(Example User)\n",
-  "Cc: " CC "(Another example User)\n",
-  "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@rfcpedant.example.org>\n",
-  "Subject: SMTP TLS example message\n",
-  "\n", /* empty line to divide headers from body, see RFC5322 */
-  "The body of the message starts here.\n",
-  "\n",
-  "It could be a lot of lines, could be MIME encoded, whatever.\n",
-  "Check RFC5322.\n",
+static const char *payload_text[] = {
+  "Date: Mon, 29 Nov 2010 21:54:29 +1100\r\n",
+  "To: " TO "\r\n",
+  "From: " FROM "(Example User)\r\n",
+  "Cc: " CC "(Another example User)\r\n",
+  "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@rfcpedant.example.org>\r\n",
+  "Subject: SMTP TLS example message\r\n",
+  "\r\n", /* empty line to divide headers from body, see RFC5322 */
+  "The body of the message starts here.\r\n",
+  "\r\n",
+  "It could be a lot of lines, could be MIME encoded, whatever.\r\n",
+  "Check RFC5322.\r\n",
   NULL
 };
 
   NULL
 };
 
@@ -56,33 +59,38 @@ static size_t payload_source(void *ptr, size_t size, size_t nmemb, void *userp)
   struct upload_status *upload_ctx = (struct upload_status *)userp;
   const char *data;
 
   struct upload_status *upload_ctx = (struct upload_status *)userp;
   const char *data;
 
-  if ((size == 0) || (nmemb == 0) || ((size*nmemb) < 1)) {
+  if((size == 0) || (nmemb == 0) || ((size*nmemb) < 1)) {
     return 0;
   }
 
   data = payload_text[upload_ctx->lines_read];
 
     return 0;
   }
 
   data = payload_text[upload_ctx->lines_read];
 
-  if (data) {
+  if(data) {
     size_t len = strlen(data);
     memcpy(ptr, data, len);
     size_t len = strlen(data);
     memcpy(ptr, data, len);
-    upload_ctx->lines_read ++;
+    upload_ctx->lines_read++;
+
     return len;
   }
     return len;
   }
+
   return 0;
 }
 
   return 0;
 }
 
-
 int main(void)
 {
   CURL *curl;
 int main(void)
 {
   CURL *curl;
-  CURLcode res;
+  CURLcode res = CURLE_OK;
   struct curl_slist *recipients = NULL;
   struct upload_status upload_ctx;
 
   upload_ctx.lines_read = 0;
 
   curl = curl_easy_init();
   struct curl_slist *recipients = NULL;
   struct upload_status upload_ctx;
 
   upload_ctx.lines_read = 0;
 
   curl = curl_easy_init();
-  if (curl) {
+  if(curl) {
+    /* Set username and password */
+    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
+    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
+
     /* This is the URL for your mailserver. Note the use of port 587 here,
      * instead of the normal SMTP port (25). Port 587 is commonly used for
      * secure mail submission (see RFC4403), but you should use whatever
     /* This is the URL for your mailserver. Note the use of port 587 here,
      * instead of the normal SMTP port (25). Port 587 is commonly used for
      * secure mail submission (see RFC4403), but you should use whatever
@@ -106,18 +114,17 @@ int main(void)
      * Instead, you should get the issuer certificate (or the host certificate
      * if the certificate is self-signed) and add it to the set of certificates
      * that are known to libcurl using CURLOPT_CAINFO and/or CURLOPT_CAPATH. See
      * Instead, you should get the issuer certificate (or the host certificate
      * if the certificate is self-signed) and add it to the set of certificates
      * that are known to libcurl using CURLOPT_CAINFO and/or CURLOPT_CAPATH. See
-     * docs/SSLCERTS for more information.
-     */
+     * docs/SSLCERTS for more information. */
     curl_easy_setopt(curl, CURLOPT_CAINFO, "/path/to/certificate.pem");
 
     curl_easy_setopt(curl, CURLOPT_CAINFO, "/path/to/certificate.pem");
 
-    /* A common reason for requiring transport security is to protect
-     * authentication details (user names and passwords) from being "snooped"
-     * on the network. Here is how the user name and password are provided: */
-    curl_easy_setopt(curl, CURLOPT_USERNAME, "user@example.net");
-    curl_easy_setopt(curl, CURLOPT_PASSWORD, "P@ssw0rd");
-
-    /* value for envelope reverse-path */
+    /* Note that this option isn't strictly required, omitting it will result in
+     * libcurl sending the MAIL FROM command with empty sender data. All
+     * autoresponses should have an empty reverse-path, and should be directed
+     * to the address in the reverse-path which triggered them. Otherwise, they
+     * could cause an endless loop. See RFC 5321 Section 4.5.5 for more details.
+     */
     curl_easy_setopt(curl, CURLOPT_MAIL_FROM, FROM);
     curl_easy_setopt(curl, CURLOPT_MAIL_FROM, FROM);
+
     /* Add two recipients, in this particular case they correspond to the
      * To: and Cc: addressees in the header, but they could be any kind of
      * recipient. */
     /* Add two recipients, in this particular case they correspond to the
      * To: and Cc: addressees in the header, but they could be any kind of
      * recipient. */
@@ -125,28 +132,32 @@ int main(void)
     recipients = curl_slist_append(recipients, CC);
     curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients);
 
     recipients = curl_slist_append(recipients, CC);
     curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients);
 
-    /* In this case, we're using a callback function to specify the data. You
-     * could just use the CURLOPT_READDATA option to specify a FILE pointer to
-     * read from.
-     */
+    /* We're using a callback function to specify the payload (the headers and
+     * body of the message). You could just use the CURLOPT_READDATA option to
+     * specify a FILE pointer to read from. */
     curl_easy_setopt(curl, CURLOPT_READFUNCTION, payload_source);
     curl_easy_setopt(curl, CURLOPT_READDATA, &upload_ctx);
     curl_easy_setopt(curl, CURLOPT_READFUNCTION, payload_source);
     curl_easy_setopt(curl, CURLOPT_READDATA, &upload_ctx);
+    curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
 
     /* Since the traffic will be encrypted, it is very useful to turn on debug
      * information within libcurl to see what is happening during the transfer.
      */
     curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
 
 
     /* Since the traffic will be encrypted, it is very useful to turn on debug
      * information within libcurl to see what is happening during the transfer.
      */
     curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
 
-    /* send the message (including headers) */
+    /* Send the message */
     res = curl_easy_perform(curl);
     res = curl_easy_perform(curl);
+
     /* Check for errors */
     if(res != CURLE_OK)
       fprintf(stderr, "curl_easy_perform() failed: %s\n",
               curl_easy_strerror(res));
 
     /* Check for errors */
     if(res != CURLE_OK)
       fprintf(stderr, "curl_easy_perform() failed: %s\n",
               curl_easy_strerror(res));
 
-    /* free the list of recipients and clean up */
+    /* Free the list of recipients */
     curl_slist_free_all(recipients);
     curl_slist_free_all(recipients);
+
+    /* Always cleanup */
     curl_easy_cleanup(curl);
   }
     curl_easy_cleanup(curl);
   }
-  return 0;
+
+  return (int)res;
 }
 }
diff --git a/docs/examples/smtp-vrfy.c b/docs/examples/smtp-vrfy.c
new file mode 100644 (file)
index 0000000..4e44cea
--- /dev/null
@@ -0,0 +1,73 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include <stdio.h>
+#include <string.h>
+#include <curl/curl.h>
+
+/* This is a simple example showing how to verify an email address from an
+ * SMTP server.
+ *
+ * Notes:
+ *
+ * 1) This example requires libcurl 7.34.0 or above.
+ * 2) Not all email servers support this command and even if your email server
+ *    does support it, it may respond with a 252 response code even though the
+ *    address doesn't exist.
+ */
+
+int main(void)
+{
+  CURL *curl;
+  CURLcode res;
+  struct curl_slist *recipients = NULL;
+
+  curl = curl_easy_init();
+  if(curl) {
+    /* This is the URL for your mailserver */
+    curl_easy_setopt(curl, CURLOPT_URL, "smtp://mail.example.com");
+
+    /* Note that the CURLOPT_MAIL_RCPT takes a list, not a char array  */
+    recipients = curl_slist_append(recipients, "<recipient@example.com>");
+    curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients);
+
+    /* Perform the VRFY */
+    res = curl_easy_perform(curl);
+
+    /* Check for errors */
+    if(res != CURLE_OK)
+      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+              curl_easy_strerror(res));
+
+    /* Free the list of recipients */
+    curl_slist_free_all(recipients);
+
+    /* Curl won't send the QUIT command until you call cleanup, so you should
+     * be able to re-use this connection for additional requests. It may not be
+     * a good idea to keep the connection open for a very long time though
+     * (more than a few minutes may result in the server timing out the
+     * connection) and you do want to clean up in the end.
+     */
+    curl_easy_cleanup(curl);
+  }
+
+  return 0;
+}
index 14d77de..cd7d073 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -92,6 +92,8 @@
 #define MAX_STRING              256
 #define MAX_STRING1             MAX_STRING+1
 
 #define MAX_STRING              256
 #define MAX_STRING1             MAX_STRING+1
 
+#define SYNCTIME_UA "synctime/1.0"
+
 typedef struct
 {
   char http_proxy[MAX_STRING1];
 typedef struct
 {
   char http_proxy[MAX_STRING1];
@@ -99,12 +101,11 @@ typedef struct
   char timeserver[MAX_STRING1];
 } conf_t;
 
   char timeserver[MAX_STRING1];
 } conf_t;
 
-const char DefaultTimeServer[4][MAX_STRING1] =
+const char DefaultTimeServer[3][MAX_STRING1] =
 {
 {
-  "http://nist.time.gov/timezone.cgi?UTC/s/0",
-  "http://www.google.com/",
-  "http://www.worldtimeserver.com/current_time_in_UTC.aspx",
-  "http://www.worldtime.com/cgi-bin/wt.cgi"
+  "http://pool.ntp.org/",
+  "http://nist.time.gov/",
+  "http://www.google.com/"
 };
 
 const char *DayStr[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
 };
 
 const char *DayStr[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
@@ -186,9 +187,9 @@ void SyncTime_CURL_Init(CURL *curl, char *proxy_port,
   if (strlen(proxy_user_password) > 0)
     curl_easy_setopt(curl, CURLOPT_PROXYUSERPWD, proxy_user_password);
 
   if (strlen(proxy_user_password) > 0)
     curl_easy_setopt(curl, CURLOPT_PROXYUSERPWD, proxy_user_password);
 
-  /* Trick Webserver by claiming that you are using Microsoft WinXP SP2, IE6 */
-  curl_easy_setopt(curl, CURLOPT_USERAGENT,
-                   "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
+#ifdef SYNCTIME_UA
+  curl_easy_setopt(curl, CURLOPT_USERAGENT, SYNCTIME_UA);
+#endif
   curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, *SyncTime_CURL_WriteOutput);
   curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, *SyncTime_CURL_WriteHeader);
 }
   curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, *SyncTime_CURL_WriteOutput);
   curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, *SyncTime_CURL_WriteHeader);
 }
index 64d27c8..adf696c 100644 (file)
@@ -63,9 +63,8 @@ int main(int argc, char *argv[])
   pagefile = fopen(pagefilename, "wb");
   if (pagefile) {
 
   pagefile = fopen(pagefilename, "wb");
   if (pagefile) {
 
-    /* write the page body to this file handle. CURLOPT_FILE is also known as
-       CURLOPT_WRITEDATA*/
-    curl_easy_setopt(curl_handle, CURLOPT_FILE, pagefile);
+    /* write the page body to this file handle */
+    curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, pagefile);
 
     /* get it! */
     curl_easy_perform(curl_handle);
 
     /* get it! */
     curl_easy_perform(curl_handle);
index 99740fd..dd56c61 100644 (file)
@@ -22,8 +22,9 @@
 /* Example using an in memory PEM user certificate and RSA key to retrieve an
  * https page.
  * Written by Ishan SinghLevett, based on Theo Borm's cacertinmem.c.
 /* Example using an in memory PEM user certificate and RSA key to retrieve an
  * https page.
  * Written by Ishan SinghLevett, based on Theo Borm's cacertinmem.c.
- * Note this example does not use a CA certificate, however one should be used
- * if you want a properly secure connection
+ * Note that to maintain simplicity this example does not use a CA certificate 
+ * for peer verification.  However, some form of peer verification
+ * must be used in real circumstances when a secure connection is required.
  */
 
 #include <openssl/ssl.h>
  */
 
 #include <openssl/ssl.h>
@@ -152,6 +153,18 @@ static CURLcode sslctx_function(CURL *curl, void *sslctx, void *parm)
     printf("Use Key failed\n");
   }
 
     printf("Use Key failed\n");
   }
 
+  /* free resources that have been allocated by openssl functions */
+  if (bio)
+    BIO_free(bio);
+
+  if (kbio)
+    BIO_free(kbio);
+
+  if (rsa)
+    RSA_free(rsa);
+
+  if (cert)
+    X509_free(cert);
 
   /* all set to go */
   return CURLE_OK ;
 
   /* all set to go */
   return CURLE_OK ;
@@ -171,7 +184,7 @@ int main(void)
   rv = curl_easy_setopt(ch,CURLOPT_WRITEFUNCTION, *writefunction);
   rv = curl_easy_setopt(ch,CURLOPT_WRITEDATA, stdout);
   rv = curl_easy_setopt(ch,CURLOPT_HEADERFUNCTION, *writefunction);
   rv = curl_easy_setopt(ch,CURLOPT_WRITEFUNCTION, *writefunction);
   rv = curl_easy_setopt(ch,CURLOPT_WRITEDATA, stdout);
   rv = curl_easy_setopt(ch,CURLOPT_HEADERFUNCTION, *writefunction);
-  rv = curl_easy_setopt(ch,CURLOPT_WRITEHEADER, stderr);
+  rv = curl_easy_setopt(ch,CURLOPT_HEADERDATA, stderr);
   rv = curl_easy_setopt(ch,CURLOPT_SSLCERTTYPE,"PEM");
 
   /* both VERIFYPEER and VERIFYHOST are set to 0 in this case because there is
   rv = curl_easy_setopt(ch,CURLOPT_SSLCERTTYPE,"PEM");
 
   /* both VERIFYPEER and VERIFYHOST are set to 0 in this case because there is
index 3ec0e04..ef0caa6 100644 (file)
@@ -7,16 +7,16 @@
                           libcurl's binary interface
 
 ABI - Application Binary Interface
                           libcurl's binary interface
 
 ABI - Application Binary Interface
+----------------------------------
 
 
-  First, allow me to define the word for this context: ABI describes the
-  low-level interface between an application program and a library. Calling
-  conventions, function arguments, return values, struct sizes/defines and
-  more.
+  "ABI" describes the low-level interface between an application program and a
+  library. Calling conventions, function arguments, return values, struct
+  sizes/defines and more.
 
 
-  For a longer description, see
-  http://en.wikipedia.org/wiki/Application_binary_interface
+  [Wikipedia has a longer description](http://en.wikipedia.org/wiki/Application_binary_interface)
 
 Upgrades
 
 Upgrades
+--------
 
   In the vast majority of all cases, a typical libcurl upgrade does not break
   the ABI at all. Your application can remain using libcurl just as before,
 
   In the vast majority of all cases, a typical libcurl upgrade does not break
   the ABI at all. Your application can remain using libcurl just as before,
@@ -26,11 +26,13 @@ Upgrades
   it now is defined to work.
 
 Version Numbers
   it now is defined to work.
 
 Version Numbers
+---------------
 
   In libcurl land, you really can't tell by the libcurl version number if that
   libcurl is binary compatible or not with another libcurl version.
 
 Soname Bumps
 
   In libcurl land, you really can't tell by the libcurl version number if that
   libcurl is binary compatible or not with another libcurl version.
 
 Soname Bumps
+------------
 
   Whenever there are changes done to the library that will cause an ABI
   breakage, that may require your application to get attention or possibly be
 
   Whenever there are changes done to the library that will cause an ABI
   breakage, that may require your application to get attention or possibly be
@@ -43,7 +45,11 @@ Soname Bumps
   During the first seven years of libcurl releases, there have only been four
   ABI breakages.
 
   During the first seven years of libcurl releases, there have only been four
   ABI breakages.
 
+  We are determined to bump the SONAME as rarely as possible.  Ideally, we
+  never do it again.
+
 Downgrades
 Downgrades
+----------
 
   Going to an older libcurl version from one you're currently using can be a
   tricky thing. Mostly we add features and options to newer libcurls as that
 
   Going to an older libcurl version from one you're currently using can be a
   tricky thing. Mostly we add features and options to newer libcurls as that
@@ -54,6 +60,7 @@ Downgrades
   soname, and then your application may need to adapt to the modified ABI.
 
 History
   soname, and then your application may need to adapt to the modified ABI.
 
 History
+-------
 
   The previous major library soname number bumps (breaking backwards
   compatibility) have happened the following times:
 
   The previous major library soname number bumps (breaking backwards
   compatibility) have happened the following times:
index 3114e2b..c47678b 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -22,6 +22,8 @@
 
 AUTOMAKE_OPTIONS = foreign no-dependencies
 
 
 AUTOMAKE_OPTIONS = foreign no-dependencies
 
+SUBDIRS = opts
+
 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            \
 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            \
@@ -79,20 +81,25 @@ PDFPAGES = curl_easy_cleanup.pdf curl_easy_getinfo.pdf                       \
  curl_multi_assign.pdf curl_easy_pause.pdf curl_easy_recv.pdf           \
  curl_easy_send.pdf curl_multi_socket_action.pdf curl_multi_wait.pdf
 
  curl_multi_assign.pdf curl_easy_pause.pdf curl_easy_recv.pdf           \
  curl_easy_send.pdf curl_multi_socket_action.pdf curl_multi_wait.pdf
 
+m4macrodir = $(datadir)/aclocal
+dist_m4macro_DATA = libcurl.m4
+
 CLEANFILES = $(HTMLPAGES) $(PDFPAGES)
 
 CLEANFILES = $(HTMLPAGES) $(PDFPAGES)
 
-EXTRA_DIST = $(man_MANS) $(HTMLPAGES) index.html $(PDFPAGES) libcurl.m4 ABI \
+EXTRA_DIST = $(man_MANS) $(HTMLPAGES) index.html $(PDFPAGES) ABI \
   symbols-in-versions symbols.pl
 MAN2HTML= roffit --mandir=. < $< >$@
 
 SUFFIXES = .3 .html
 
 html: $(HTMLPAGES)
   symbols-in-versions symbols.pl
 MAN2HTML= roffit --mandir=. < $< >$@
 
 SUFFIXES = .3 .html
 
 html: $(HTMLPAGES)
+       cd opts; make html
 
 .3.html:
        $(MAN2HTML)
 
 pdf: $(PDFPAGES)
 
 .3.html:
        $(MAN2HTML)
 
 pdf: $(PDFPAGES)
+       cd opts; make pdf
 
 .3.pdf:
        @(foo=`echo $@ | sed -e 's/\.[0-9]$$//g'`; \
 
 .3.pdf:
        @(foo=`echo $@ | sed -e 's/\.[0-9]$$//g'`; \
index fa1939d..7430e81 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -21,7 +21,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -35,6 +35,7 @@
 # KIND, either express or implied.
 #
 ###########################################################################
 # KIND, either express or implied.
 #
 ###########################################################################
+
 VPATH = @srcdir@
 am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
 am__make_running_with_option = \
 VPATH = @srcdir@
 am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
 am__make_running_with_option = \
@@ -101,7 +102,7 @@ build_triplet = @build@
 host_triplet = @host@
 subdir = docs/libcurl
 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
 host_triplet = @host@
 subdir = docs/libcurl
 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-       $(top_srcdir)/mkinstalldirs
+       $(top_srcdir)/mkinstalldirs $(dist_m4macro_DATA)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
@@ -143,6 +144,14 @@ depcomp =
 am__depfiles_maybe =
 SOURCES =
 DIST_SOURCES =
 am__depfiles_maybe =
 SOURCES =
 DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+       ctags-recursive dvi-recursive html-recursive info-recursive \
+       install-data-recursive install-dvi-recursive \
+       install-exec-recursive install-html-recursive \
+       install-info-recursive install-pdf-recursive \
+       install-ps-recursive install-recursive installcheck-recursive \
+       installdirs-recursive pdf-recursive ps-recursive \
+       tags-recursive uninstall-recursive
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -176,10 +185,63 @@ am__uninstall_files_from_dir = { \
          $(am__cd) "$$dir" && rm -f $$files; }; \
   }
 man3dir = $(mandir)/man3
          $(am__cd) "$$dir" && rm -f $$files; }; \
   }
 man3dir = $(mandir)/man3
-am__installdirs = "$(DESTDIR)$(man3dir)"
+am__installdirs = "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(m4macrodir)"
 MANS = $(man_MANS)
 MANS = $(man_MANS)
+DATA = $(dist_m4macro_DATA)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+       distdir
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
@@ -212,6 +274,7 @@ CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
+CURL_DISABLE_SMB = @CURL_DISABLE_SMB@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
@@ -236,7 +299,6 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_NSS_INITCONTEXT = @HAVE_NSS_INITCONTEXT@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
@@ -245,7 +307,6 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
-KRB4_ENABLED = @KRB4_ENABLED@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
@@ -266,6 +327,7 @@ MKDIR_P = @MKDIR_P@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
+NSS_LIBS = @NSS_LIBS@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
@@ -301,11 +363,13 @@ USE_GNUTLS = @USE_GNUTLS@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
+USE_NGHTTP2 = @USE_NGHTTP2@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
+USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
@@ -365,6 +429,7 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 AUTOMAKE_OPTIONS = foreign no-dependencies
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 AUTOMAKE_OPTIONS = foreign no-dependencies
+SUBDIRS = opts
 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            \
 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            \
@@ -422,13 +487,15 @@ PDFPAGES = curl_easy_cleanup.pdf curl_easy_getinfo.pdf                     \
  curl_multi_assign.pdf curl_easy_pause.pdf curl_easy_recv.pdf           \
  curl_easy_send.pdf curl_multi_socket_action.pdf curl_multi_wait.pdf
 
  curl_multi_assign.pdf curl_easy_pause.pdf curl_easy_recv.pdf           \
  curl_easy_send.pdf curl_multi_socket_action.pdf curl_multi_wait.pdf
 
+m4macrodir = $(datadir)/aclocal
+dist_m4macro_DATA = libcurl.m4
 CLEANFILES = $(HTMLPAGES) $(PDFPAGES)
 CLEANFILES = $(HTMLPAGES) $(PDFPAGES)
-EXTRA_DIST = $(man_MANS) $(HTMLPAGES) index.html $(PDFPAGES) libcurl.m4 ABI \
+EXTRA_DIST = $(man_MANS) $(HTMLPAGES) index.html $(PDFPAGES) ABI \
   symbols-in-versions symbols.pl
 
 MAN2HTML = roffit --mandir=. < $< >$@
 SUFFIXES = .3 .html
   symbols-in-versions symbols.pl
 
 MAN2HTML = roffit --mandir=. < $< >$@
 SUFFIXES = .3 .html
-all: all-am
+all: all-recursive
 
 .SUFFIXES:
 .SUFFIXES: .3 .html .pdf
 
 .SUFFIXES:
 .SUFFIXES: .3 .html .pdf
@@ -511,12 +578,126 @@ uninstall-man3:
        } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \
              -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
        dir='$(DESTDIR)$(man3dir)'; $(am__uninstall_files_from_dir)
        } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \
              -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
        dir='$(DESTDIR)$(man3dir)'; $(am__uninstall_files_from_dir)
-tags TAGS:
-
-ctags CTAGS:
+install-dist_m4macroDATA: $(dist_m4macro_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(dist_m4macro_DATA)'; test -n "$(m4macrodir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(m4macrodir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(m4macrodir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(m4macrodir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(m4macrodir)" || exit $$?; \
+       done
 
 
-cscope cscopelist:
+uninstall-dist_m4macroDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_m4macro_DATA)'; test -n "$(m4macrodir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(m4macrodir)'; $(am__uninstall_files_from_dir)
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+       @fail=; \
+       if $(am__make_keepgoing); then \
+         failcom='fail=yes'; \
+       else \
+         failcom='exit 1'; \
+       fi; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+       $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+       set x; \
+       here=`pwd`; \
+       if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+         empty_fix=.; \
+       else \
+         include_option=--include; \
+         empty_fix=; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test ! -f $$subdir/TAGS || \
+             set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       $(am__define_uniq_tagged_files); \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+       $(am__define_uniq_tagged_files); \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+       list='$(am__tagged_files)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
 
 
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
 distdir: $(DISTFILES)
        @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 
 distdir: $(DISTFILES)
        @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -548,22 +729,48 @@ distdir: $(DISTFILES)
            || exit 1; \
          fi; \
        done
            || exit 1; \
          fi; \
        done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           $(am__make_dryrun) \
+             || test -d "$(distdir)/$$subdir" \
+             || $(MKDIR_P) "$(distdir)/$$subdir" \
+             || exit 1; \
+           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+           $(am__relativize); \
+           new_distdir=$$reldir; \
+           dir1=$$subdir; dir2="$(top_distdir)"; \
+           $(am__relativize); \
+           new_top_distdir=$$reldir; \
+           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+           echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+           ($(am__cd) $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$$new_top_distdir" \
+               distdir="$$new_distdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               am__skip_mode_fix=: \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
 check-am: all-am
 check-am: all-am
-check: check-am
-all-am: Makefile $(MANS)
-installdirs:
-       for dir in "$(DESTDIR)$(man3dir)"; do \
+check: check-recursive
+all-am: Makefile $(MANS) $(DATA)
+installdirs: installdirs-recursive
+installdirs-am:
+       for dir in "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(m4macrodir)"; do \
          test -z "$$dir" || $(MKDIR_P) "$$dir"; \
        done
          test -z "$$dir" || $(MKDIR_P) "$$dir"; \
        done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
 
 install-am: all-am
        @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
 
 
 install-am: all-am
        @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
 
-installcheck: installcheck-am
+installcheck: installcheck-recursive
 install-strip:
        if test -z '$(STRIP)'; then \
          $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
 install-strip:
        if test -z '$(STRIP)'; then \
          $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
@@ -586,92 +793,96 @@ distclean-generic:
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
        @echo "it deletes files that may require special tools to rebuild."
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
        @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
+clean: clean-recursive
 
 clean-am: clean-generic clean-libtool mostlyclean-am
 
 
 clean-am: clean-generic clean-libtool mostlyclean-am
 
-distclean: distclean-am
+distclean: distclean-recursive
        -rm -f Makefile
        -rm -f Makefile
-distclean-am: clean-am distclean-generic
+distclean-am: clean-am distclean-generic distclean-tags
 
 
-dvi: dvi-am
+dvi: dvi-recursive
 
 dvi-am:
 
 html-am:
 
 
 dvi-am:
 
 html-am:
 
-info: info-am
+info: info-recursive
 
 info-am:
 
 
 info-am:
 
-install-data-am: install-man
+install-data-am: install-dist_m4macroDATA install-man
 
 
-install-dvi: install-dvi-am
+install-dvi: install-dvi-recursive
 
 install-dvi-am:
 
 install-exec-am:
 
 
 install-dvi-am:
 
 install-exec-am:
 
-install-html: install-html-am
+install-html: install-html-recursive
 
 install-html-am:
 
 
 install-html-am:
 
-install-info: install-info-am
+install-info: install-info-recursive
 
 install-info-am:
 
 install-man: install-man3
 
 
 install-info-am:
 
 install-man: install-man3
 
-install-pdf: install-pdf-am
+install-pdf: install-pdf-recursive
 
 install-pdf-am:
 
 
 install-pdf-am:
 
-install-ps: install-ps-am
+install-ps: install-ps-recursive
 
 install-ps-am:
 
 installcheck-am:
 
 
 install-ps-am:
 
 installcheck-am:
 
-maintainer-clean: maintainer-clean-am
+maintainer-clean: maintainer-clean-recursive
        -rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
        -rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
-mostlyclean: mostlyclean-am
+mostlyclean: mostlyclean-recursive
 
 mostlyclean-am: mostlyclean-generic mostlyclean-libtool
 
 pdf-am:
 
 
 mostlyclean-am: mostlyclean-generic mostlyclean-libtool
 
 pdf-am:
 
-ps: ps-am
+ps: ps-recursive
 
 ps-am:
 
 
 ps-am:
 
-uninstall-am: uninstall-man
+uninstall-am: uninstall-dist_m4macroDATA uninstall-man
 
 uninstall-man: uninstall-man3
 
 
 uninstall-man: uninstall-man3
 
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-       cscopelist-am ctags-am distclean distclean-generic \
-       distclean-libtool distdir dvi dvi-am html html-am info info-am \
-       install install-am install-data install-data-am install-dvi \
-       install-dvi-am install-exec install-exec-am install-html \
-       install-html-am install-info install-info-am install-man \
-       install-man3 install-pdf install-pdf-am install-ps \
-       install-ps-am install-strip installcheck installcheck-am \
-       installdirs maintainer-clean maintainer-clean-generic \
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+       check-am clean clean-generic clean-libtool cscopelist-am ctags \
+       ctags-am distclean distclean-generic distclean-libtool \
+       distclean-tags distdir dvi dvi-am html html-am info info-am \
+       install install-am install-data install-data-am \
+       install-dist_m4macroDATA install-dvi install-dvi-am \
+       install-exec install-exec-am install-html install-html-am \
+       install-info install-info-am install-man install-man3 \
+       install-pdf install-pdf-am install-ps install-ps-am \
+       install-strip installcheck installcheck-am installdirs \
+       installdirs-am maintainer-clean maintainer-clean-generic \
        mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
        mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
-       ps ps-am tags-am uninstall uninstall-am uninstall-man \
-       uninstall-man3
+       ps ps-am tags tags-am uninstall uninstall-am \
+       uninstall-dist_m4macroDATA uninstall-man uninstall-man3
 
 
 html: $(HTMLPAGES)
 
 
 html: $(HTMLPAGES)
+       cd opts; make html
 
 .3.html:
        $(MAN2HTML)
 
 pdf: $(PDFPAGES)
 
 .3.html:
        $(MAN2HTML)
 
 pdf: $(PDFPAGES)
+       cd opts; make pdf
 
 .3.pdf:
        @(foo=`echo $@ | sed -e 's/\.[0-9]$$//g'`; \
 
 .3.pdf:
        @(foo=`echo $@ | sed -e 's/\.[0-9]$$//g'`; \
index d8a3f9f..403bfd3 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\"
 .TH curl_easy_cleanup 3 "22 aug 2007" "libcurl 7.17.0" "libcurl Manual"
 .SH NAME
 .\"
 .TH curl_easy_cleanup 3 "22 aug 2007" "libcurl 7.17.0" "libcurl Manual"
 .SH NAME
-curl_easy_cleanup - End a libcurl easy session
+curl_easy_cleanup - End a libcurl easy handle
 .SH SYNOPSIS
 .B #include <curl/curl.h>
 
 .BI "void curl_easy_cleanup(CURL *" handle ");"
 .SH SYNOPSIS
 .B #include <curl/curl.h>
 
 .BI "void curl_easy_cleanup(CURL *" handle ");"
-
 .SH DESCRIPTION
 This function must be the last function to call for an easy session. It is the
 opposite of the \fIcurl_easy_init(3)\fP function and must be called with the
 .SH DESCRIPTION
 This function must be the last function to call for an easy session. It is the
 opposite of the \fIcurl_easy_init(3)\fP function and must be called with the
-same \fIhandle\fP as input that the curl_easy_init call returned.
+same \fIhandle\fP as input that a \fIcurl_easy_init(3)\fP call returned.
 
 
-This will effectively close all connections this handle has used and possibly
-has kept open until now. Don't call this function if you intend to transfer
-more files.
+This might close all connections this handle has used and possibly has kept
+open until now - unless it was attached to a multi handle while doing the
+transfers. Don't call this function if you intend to transfer more files,
+re-using handles is a key to good performance with libcurl.
 
 Occasionally you may get your progress callback or header callback called from
 within \fIcurl_easy_cleanup(3)\fP (if previously set for the handle using
 
 Occasionally you may get your progress callback or header callback called from
 within \fIcurl_easy_cleanup(3)\fP (if previously set for the handle using
@@ -43,15 +43,25 @@ within \fIcurl_easy_cleanup(3)\fP (if previously set for the handle using
 connection and the protocol is of a kind that requires a command/response
 sequence before disconnect. Examples of such protocols are FTP, POP3 and IMAP.
 
 connection and the protocol is of a kind that requires a command/response
 sequence before disconnect. Examples of such protocols are FTP, POP3 and IMAP.
 
-Any uses of the \fBhandle\fP after this function has been called and have
-returned, are illegal. This kills the handle and all memory associated with
-it!
+Any use of the \fBhandle\fP after this function has been called and have
+returned, is illegal. \fIcurl_easy_cleanup(3)\fP kills the handle and all
+memory associated with it!
 
 
-With libcurl versions prior to 7.17.: when you've called this, you can safely
-remove all the strings you've previously told libcurl to use, as it won't use
-them anymore now.
+For libcurl versions before 7.17,: after you've called this function, you can
+safely remove all the strings you've previously told libcurl to use, as it
+won't use them anymore now.
 .SH RETURN VALUE
 None
 .SH RETURN VALUE
 None
+.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), "
 
 .SH "SEE ALSO"
 .BR curl_easy_init "(3), "
 
index 2ea921d..752461e 100644 (file)
@@ -46,17 +46,27 @@ p.roffit {
 </head><body>
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 </head><body>
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
-<p class="level0">curl_easy_cleanup - End a libcurl easy session <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">curl_easy_cleanup - End a libcurl easy handle <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
 <p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
 <p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
-<p class="level0"><span Class="bold">void curl_easy_cleanup(CURL * handle );</span> 
-<p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">This function must be the last function to call for an easy session. It is the opposite of the <a class="emphasis" href="./curl_easy_init.html">curl_easy_init(3)</a> function and must be called with the same <span Class="emphasis">handle</span> as input that the curl_easy_init call returned. 
-<p class="level0">This will effectively close all connections this handle has used and possibly has kept open until now. Don't call this function if you intend to transfer more files. 
-<p class="level0">Occasionally you may get your progress callback or header callback called from within <a class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup(3)</a> (if previously set for the handle using <a class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt(3)</a>). Like if libcurl decides to shut down the connection and the protocol is of a kind that requires a command/response sequence before disconnect. Examples of such protocols are FTP, POP3 and IMAP. 
-<p class="level0">Any uses of the <span Class="bold">handle</span> after this function has been called and have returned, are illegal. This kills the handle and all memory associated with it! 
-<p class="level0">With libcurl versions prior to 7.17.: when you've called this, you can safely remove all the strings you've previously told libcurl to use, as it won't use them anymore now. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
-<p class="level0">None <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_easy_init.html">curl_easy_init (3)</a> <span Class="manpage"> </span> 
+<p class="level0"><span Class="bold">void curl_easy_cleanup(CURL * handle );</span> <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">This function must be the last function to call for an easy session. It is the opposite of the <a Class="emphasis" href="./curl_easy_init.html">curl_easy_init</a> function and must be called with the same <span Class="emphasis">handle</span> as input that a <a Class="emphasis" href="./curl_easy_init.html">curl_easy_init</a> call returned. 
+<p class="level0">This might close all connections this handle has used and possibly has kept open until now - unless it was attached to a multi handle while doing the transfers. Don't call this function if you intend to transfer more files, re-using handles is a key to good performance with libcurl. 
+<p class="level0">Occasionally you may get your progress callback or header callback called from within <a Class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup</a> (if previously set for the handle using <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a>). Like if libcurl decides to shut down the connection and the protocol is of a kind that requires a command/response sequence before disconnect. Examples of such protocols are FTP, POP3 and IMAP. 
+<p class="level0">Any use of the <span Class="bold">handle</span> after this function has been called and have returned, is illegal. <a Class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup</a> kills the handle and all memory associated with it! 
+<p class="level0">For libcurl versions before 7.17,: after you've called this function, you can safely remove all the strings you've previously told libcurl to use, as it won't use them anymore now. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">None <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre>
+<p class="level0">CURL *curl = curl_easy_init();
+ if(curl) {
+ &nbsp; CURLcode res;
+ &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+ &nbsp; res = curl_easy_perform(curl);
+ &nbsp; curl_easy_cleanup(curl);
+ }
+ </pre>
+
+<p class="level0"><a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./curl_easy_init.html">curl_easy_init</a>, <span Class="manpage"> </span> 
 <p class="level0"><p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
 <p class="level0"><p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index cf588e5..7e22eed 100644 (file)
Binary files a/docs/libcurl/curl_easy_cleanup.pdf and b/docs/libcurl/curl_easy_cleanup.pdf differ
index e53ced4..080723a 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_easy_duphandle 3 "18 September 2001" "libcurl 7.9" "libcurl Manual"
+.TH curl_easy_duphandle 3 "19 Sep 2014" "libcurl" "libcurl Manual"
 .SH NAME
 curl_easy_duphandle - Clone a libcurl session handle
 .SH SYNOPSIS
 .SH NAME
 curl_easy_duphandle - Clone a libcurl session handle
 .SH SYNOPSIS
@@ -47,5 +47,4 @@ in a synchronous way, the input handle may not be in use when cloned.
 If this function returns NULL, something went wrong and no valid handle was
 returned.
 .SH "SEE ALSO"
 If this function returns NULL, something went wrong and no valid handle was
 returned.
 .SH "SEE ALSO"
-.BR curl_easy_init "(3)," curl_easy_cleanup "(3)," curl_global_init "(3)
-
+.BR curl_easy_init "(3)," curl_easy_cleanup "(3)," curl_global_init "(3)"
index f84f0d3..19b1f6f 100644 (file)
@@ -50,12 +50,11 @@ p.roffit {
 <p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
 <p class="level0"><span Class="bold">CURL *curl_easy_duphandle(CURL *handle );</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
 <p class="level0"><span Class="bold">CURL *curl_easy_duphandle(CURL *handle );</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">This function will return a new curl handle, a duplicate, using all the options previously set in the input curl <span Class="emphasis">handle</span>. Both handles can subsequently be used independently and they must both be freed with <a class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup(3)</a>. 
-<p class="level0">All strings that the input handle has been told to point to (as opposed to copy) with previous calls to <a class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt(3)</a> using char * inputs, will be pointed to by the new handle as well. You must therefore make sure to keep the data around until both handles have been cleaned up. 
+<p class="level0">This function will return a new curl handle, a duplicate, using all the options previously set in the input curl <span Class="emphasis">handle</span>. Both handles can subsequently be used independently and they must both be freed with <a Class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup</a>. 
+<p class="level0">All strings that the input handle has been told to point to (as opposed to copy) with previous calls to <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a> using char * inputs, will be pointed to by the new handle as well. You must therefore make sure to keep the data around until both handles have been cleaned up. 
 <p class="level0">The new handle will <span Class="bold">not</span> inherit any state information, no connections, no SSL sessions and no cookies. 
 <p class="level0"><span Class="bold">Note</span> that even in multi-threaded programs, this function must be called in a synchronous way, the input handle may not be in use when cloned. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">If this function returns NULL, something went wrong and no valid handle was returned. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0">The new handle will <span Class="bold">not</span> inherit any state information, no connections, no SSL sessions and no cookies. 
 <p class="level0"><span Class="bold">Note</span> that even in multi-threaded programs, this function must be called in a synchronous way, the input handle may not be in use when cloned. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">If this function returns NULL, something went wrong and no valid handle was returned. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_easy_init.html">curl_easy_init (3)</a> <a class="manpage" href="./curl_easy_cleanup.html"> curl_easy_cleanup (3)</a> <a class="manpage" href="./curl_global_init.html"> curl_global_init (3)</a> 
-<p class="level0"><p class="roffit">
+<p class="level0"><a Class="manpage" href="./curl_easy_init.html">curl_easy_init</a>, <a Class="manpage" href="./curl_easy_cleanup.html">curl_easy_cleanup</a>, <a Class="manpage" href="./curl_global_init.html">curl_global_init</a>, <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 864fedf..b0fadf1 100644 (file)
Binary files a/docs/libcurl/curl_easy_duphandle.pdf and b/docs/libcurl/curl_easy_duphandle.pdf differ
index 3a98e6f..7c8c658 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -26,13 +26,13 @@ curl_easy_escape - URL encodes the given string
 .SH SYNOPSIS
 .B #include <curl/curl.h>
 .sp
 .SH SYNOPSIS
 .B #include <curl/curl.h>
 .sp
-.BI "char *curl_easy_escape( CURL *" curl ", char *" url ", int "length " );"
+.BI "char *curl_easy_escape( CURL *" curl ", char *" string ", int "length " );"
 .ad
 .SH DESCRIPTION
 .ad
 .SH DESCRIPTION
-This function converts the given input string to an URL encoded string and
-returns that as a new allocated string. All input characters that are not a-z,
-A-Z, 0-9, '-', '.', '_' or '~' are converted to their "URL escaped" version
-(%NN where NN is a two-digit hexadecimal number).
+This function converts the given input \fBstring\fP to an URL encoded string
+and returns that as a new allocated string. All input characters that are not
+a-z, A-Z, 0-9, '-', '.', '_' or '~' are converted to their "URL escaped"
+version (%NN where NN is a two-digit hexadecimal number).
 
 If the \fBlength\fP argument is set to 0 (zero), \fIcurl_easy_escape(3)\fP
 uses strlen() on the input \fBurl\fP to find out the size.
 
 If the \fBlength\fP argument is set to 0 (zero), \fIcurl_easy_escape(3)\fP
 uses strlen() on the input \fBurl\fP to find out the size.
@@ -42,5 +42,16 @@ You must \fIcurl_free(3)\fP the returned string when you're done with it.
 Added in 7.15.4 and replaces the old \fIcurl_escape(3)\fP function.
 .SH RETURN VALUE
 A pointer to a zero terminated string or NULL if it failed.
 Added in 7.15.4 and replaces the old \fIcurl_escape(3)\fP function.
 .SH RETURN VALUE
 A pointer to a zero terminated string or NULL if it failed.
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  char *output = curl_easy_escape(curl, "data to convert", 15);
+  if(output) {
+    printf("Encoded: %s\n", output);
+    curl_free(output);
+  }
+}}
+.fi
 .SH "SEE ALSO"
 .SH "SEE ALSO"
-.BR curl_easy_unescape "(3), " curl_free "(3), " RFC 2396
+.BR curl_easy_unescape "(3), " curl_free "(3), " RFC 3986
index 64b65dc..1852342 100644 (file)
@@ -48,13 +48,25 @@ p.roffit {
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">curl_easy_escape - URL encodes the given string <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
 <p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">curl_easy_escape - URL encodes the given string <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
 <p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
-<p class="level0"><span Class="bold">char *curl_easy_escape( CURL * curl , char * url , int length  );</span> 
+<p class="level0"><span Class="bold">char *curl_easy_escape( CURL * curl , char * string , int length  );</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">This function converts the given input string to an URL encoded string and returns that as a new allocated string. All input characters that are not a-z, A-Z, 0-9, '-', '.', '_' or '~' are converted to their "URL escaped" version (%NN where NN is a two-digit hexadecimal number). 
-<p class="level0">If the <span Class="bold">length</span> argument is set to 0 (zero), <a class="emphasis" href="./curl_easy_escape.html">curl_easy_escape(3)</a> uses strlen() on the input <span Class="bold">url</span> to find out the size. 
-<p class="level0">You must <a class="emphasis" href="./curl_free.html">curl_free(3)</a> the returned string when you're done with it. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
-<p class="level0">Added in 7.15.4 and replaces the old <a class="emphasis" href="./curl_escape.html">curl_escape(3)</a> function. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
-<p class="level0">A pointer to a zero terminated string or NULL if it failed. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_easy_unescape.html">curl_easy_unescape (3)</a> <a class="manpage" href="./curl_free.html">  curl_free (3)</a> <span Class="manpage">  <a href="http://www.ietf.org/rfc/rfc2396.txt">RFC 2396</a></span> <p class="roffit">
+<p class="level0">This function converts the given input <span Class="bold">string</span> to an URL encoded string and returns that as a new allocated string. All input characters that are not a-z, A-Z, 0-9, '-', '.', '_' or '~' are converted to their "URL escaped" version (%NN where NN is a two-digit hexadecimal number). 
+<p class="level0">If the <span Class="bold">length</span> argument is set to 0 (zero), <a Class="emphasis" href="./curl_easy_escape.html">curl_easy_escape</a> uses strlen() on the input <span Class="bold">url</span> to find out the size. 
+<p class="level0">You must <a Class="emphasis" href="./curl_free.html">curl_free</a> the returned string when you're done with it. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.15.4 and replaces the old <a Class="emphasis" href="./curl_escape.html">curl_escape</a> function. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">A pointer to a zero terminated string or NULL if it failed. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre>
+<p class="level0">CURL *curl = curl_easy_init();
+ if(curl) {
+ &nbsp; char *output = curl_easy_escape(curl, "data to convert", 15);
+ &nbsp; if(output) {
+ &nbsp;   printf("Encoded: %sn", output);
+ &nbsp;   curl_free(output);
+ &nbsp; }
+ }}
+ </pre>
+
+<p class="level0"><a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./curl_easy_unescape.html">curl_easy_unescape</a>, <a Class="manpage" href="./curl_free.html">curl_free</a>, <span Class="manpage">  <a href="http://www.ietf.org/rfc/rfc3986.txt">RFC 3986</a></span> <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index cf281c8..d6ca4c2 100644 (file)
Binary files a/docs/libcurl/curl_easy_escape.pdf and b/docs/libcurl/curl_easy_escape.pdf differ
index 62d8ae4..0f0fd2e 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -60,9 +60,9 @@ Pass a pointer to a long to receive the remote time of the retrieved document
 -1, it can be because of many reasons (unknown, the server hides 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
 -1, it can be because of many reasons (unknown, the server hides 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 CURLOPT_FILETIME option
-to \fIcurl_easy_setopt(3)\fP or you will unconditionally get a -1 back. (Added
-in 7.5)
+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. (Added in 7.5)
 .IP CURLINFO_TOTAL_TIME
 Pass a pointer to a double to receive the total time in seconds for the
 previous transfer, including name resolving, TCP connect etc.
 .IP CURLINFO_TOTAL_TIME
 Pass a pointer to a double to receive the total time in seconds for the
 previous transfer, including name resolving, TCP connect etc.
@@ -76,8 +76,8 @@ start until the connect to the remote host (or proxy) was completed.
 Pass a pointer to a double to receive the time, in seconds, it took from the
 start until the SSL/SSH connect/handshake to the remote host was completed.
 This time is most often very near to the PRETRANSFER time, except for cases
 Pass a pointer to a double to receive the time, in seconds, it took from the
 start until the SSL/SSH connect/handshake to the remote host was completed.
 This time is most often very near to the PRETRANSFER time, except for cases
-such as HTTP pippelining where the pretransfer time can be delayed due to
-waits in line for the pipeline and more. (Added in 7.19.0)
+such as HTTP pipelining where the pretransfer time can be delayed due to waits
+in line for the pipeline and more. (Added in 7.19.0)
 .IP CURLINFO_PRETRANSFER_TIME
 Pass a pointer to a double to receive the time, in seconds, it took from the
 start until the file transfer is just about to begin. This includes all
 .IP CURLINFO_PRETRANSFER_TIME
 Pass a pointer to a double to receive the time, in seconds, it took from the
 start until the file transfer is just about to begin. This includes all
@@ -99,17 +99,19 @@ Pass a pointer to a long to receive the total number of redirections that were
 actually followed.  (Added in 7.9.7)
 .IP CURLINFO_REDIRECT_URL
 Pass a pointer to a char pointer to receive the URL a redirect \fIwould\fP
 actually followed.  (Added in 7.9.7)
 .IP CURLINFO_REDIRECT_URL
 Pass a pointer to a char pointer to receive the URL a redirect \fIwould\fP
-take you to if you would enable CURLOPT_FOLLOWLOCATION. This can come very
-handy if you think using the built-in libcurl redirect logic isn't good enough
-for you but you would still prefer to avoid implementing all the magic of
-figuring out the new URL. (Added in 7.18.2)
+take you to if you would enable \fICURLOPT_FOLLOWLOCATION(3)\fP. This can come
+very handy if you think using the built-in libcurl redirect logic isn't good
+enough for you but you would still prefer to avoid implementing all the magic
+of figuring out the new URL. (Added in 7.18.2)
 .IP CURLINFO_SIZE_UPLOAD
 Pass a pointer to a double to receive the total amount of bytes that were
 uploaded.
 .IP CURLINFO_SIZE_DOWNLOAD
 Pass a pointer to a double to receive the total amount of bytes that were
 downloaded. The amount is only for the latest transfer and will be reset again
 .IP CURLINFO_SIZE_UPLOAD
 Pass a pointer to a double to receive the total amount of bytes that were
 uploaded.
 .IP CURLINFO_SIZE_DOWNLOAD
 Pass a pointer to a double to receive the total amount of bytes that were
 downloaded. The amount is only for the latest transfer and will be reset again
-for each new transfer.
+for each new transfer. This counts actual payload data, what's also commonly
+called body. All meta and header data are excluded and will not be counted in
+this number.
 .IP CURLINFO_SPEED_DOWNLOAD
 Pass a pointer to a double to receive the average download speed that curl
 measured for the complete download. Measured in bytes/second.
 .IP CURLINFO_SPEED_DOWNLOAD
 Pass a pointer to a double to receive the average download speed that curl
 measured for the complete download. Measured in bytes/second.
@@ -125,8 +127,8 @@ requests. This is so far only for HTTP requests. Note that this may be more
 than one request if FOLLOWLOCATION is true.
 .IP CURLINFO_SSL_VERIFYRESULT
 Pass a pointer to a long to receive the result of the certification
 than one request if FOLLOWLOCATION is true.
 .IP CURLINFO_SSL_VERIFYRESULT
 Pass a pointer to a long to receive the result of the certification
-verification that was requested (using the CURLOPT_SSL_VERIFYPEER option to
-\fIcurl_easy_setopt(3)\fP).
+verification that was requested (using the \fICURLOPT_SSL_VERIFYPEER(3)\fP
+option to \fIcurl_easy_setopt(3)\fP).
 .IP CURLINFO_SSL_ENGINES
 Pass the address of a 'struct curl_slist *' to receive a linked-list of
 OpenSSL crypto-engines supported. Note that engines are normally implemented
 .IP CURLINFO_SSL_ENGINES
 Pass the address of a 'struct curl_slist *' to receive a linked-list of
 OpenSSL crypto-engines supported. Note that engines are normally implemented
@@ -148,14 +150,15 @@ it means that the server didn't send a valid Content-Type header or that the
 protocol used doesn't support this.
 .IP CURLINFO_PRIVATE
 Pass a pointer to a char pointer to receive the pointer to the private data
 protocol used doesn't support this.
 .IP CURLINFO_PRIVATE
 Pass a pointer to a char pointer to receive the pointer to the private data
-associated with the curl handle (set with the CURLOPT_PRIVATE option to
-\fIcurl_easy_setopt(3)\fP). Please note that for internal reasons, the
+associated with the curl handle (set with the \fICURLOPT_PRIVATE(3)\fP option
+to \fIcurl_easy_setopt(3)\fP). Please note that for internal reasons, the
 value is returned as a char pointer, although effectively being a 'void *'.
 (Added in 7.10.3)
 .IP CURLINFO_HTTPAUTH_AVAIL
 Pass a pointer to a long to receive a bitmask indicating the authentication
 method(s) available. The meaning of the bits is explained in the
 value is returned as a char pointer, although effectively being a 'void *'.
 (Added in 7.10.3)
 .IP CURLINFO_HTTPAUTH_AVAIL
 Pass a pointer to a long to receive a bitmask indicating the authentication
 method(s) available. The meaning of the bits is explained in the
-CURLOPT_HTTPAUTH option for \fIcurl_easy_setopt(3)\fP.  (Added in 7.10.8)
+\fICURLOPT_HTTPAUTH(3)\fP option for \fIcurl_easy_setopt(3)\fP.  (Added in
+7.10.8)
 .IP CURLINFO_PROXYAUTH_AVAIL
 Pass a pointer to a long to receive a bitmask indicating the authentication
 method(s) available for your proxy authentication.  (Added in 7.10.8)
 .IP CURLINFO_PROXYAUTH_AVAIL
 Pass a pointer to a long to receive a bitmask indicating the authentication
 method(s) available for your proxy authentication.  (Added in 7.10.8)
@@ -199,8 +202,8 @@ Pass a pointer to a long to receive the last socket used by this curl
 session. If the socket is no longer valid, -1 is returned. When you finish
 working with the socket, you must call curl_easy_cleanup() as usual and let
 libcurl close the socket and cleanup other resources associated with the
 session. If the socket is no longer valid, -1 is returned. When you finish
 working with the socket, you must call curl_easy_cleanup() as usual and let
 libcurl close the socket and cleanup other resources associated with the
-handle. This is typically used in combination with \fICURLOPT_CONNECT_ONLY\fP.
-(Added in 7.15.2)
+handle. This is typically used in combination with
+\fICURLOPT_CONNECT_ONLY(3)\fP.  (Added in 7.15.2)
 
 NOTE: this API is not really working on win64, since the SOCKET type on win64
 is 64 bit large while its 'long' is only 32 bits.
 
 NOTE: this API is not really working on win64, since the SOCKET type on win64
 is 64 bit large while its 'long' is only 32 bits.
@@ -214,17 +217,29 @@ Also works for SFTP since 7.21.4
 .IP CURLINFO_CERTINFO
 Pass a pointer to a 'struct curl_certinfo *' and you'll get it set to point to
 struct that holds a number of linked lists with info about the certificate
 .IP CURLINFO_CERTINFO
 Pass a pointer to a 'struct curl_certinfo *' and you'll get it set to point to
 struct that holds a number of linked lists with info about the certificate
-chain, assuming you had CURLOPT_CERTINFO enabled when the previous request was
-done. The struct reports how many certs it found and then you can extract info
-for each of those certs by following the linked lists. The info chain is
-provided in a series of data in the format "name:content" where the content is
-for the specific named data. See also the certinfo.c example. NOTE: this
-option is only available in libcurl built with OpenSSL support. (Added in
-7.19.1)
+chain, assuming you had \fICURLOPT_CERTINFO(3)\fP enabled when the previous
+request was done. The struct reports how many certs it found and then you can
+extract info for each of those certs by following the linked lists. The info
+chain is provided in a series of data in the format "name:content" where the
+content is for the specific named data. See also the certinfo.c example. NOTE:
+this option is only available in libcurl built with OpenSSL, NSS or GSKit
+support. (Added in 7.19.1)
+.IP CURLINFO_TLS_SESSION
+Pass a pointer to a 'struct curl_tlssessioninfo *'.  The pointer will be
+initialized to refer to a 'struct curl_tlssessioninfo *' that will contain an
+enum indicating the SSL library used for the handshake and the respective
+internal TLS session structure of this underlying SSL library.
+
+This may then be used to extract certificate information in a format
+convenient for further processing, such as manual validation. NOTE: this
+option may not be available for all SSL backends; unsupported SSL backends
+will return 'CURLSSLBACKEND_NONE' to indicate that they are not supported;
+this does not mean that no SSL backend was used. (Added in 7.34.0)
+
 .IP CURLINFO_CONDITION_UNMET
 Pass a pointer to a long to receive the number 1 if the condition provided in
 .IP CURLINFO_CONDITION_UNMET
 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\fP). Alas, if
-this returns a 1 you know that the reason you didn't get data in return is
+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
 get a zero stored if the condition instead was met. (Added in 7.19.4)
 .IP CURLINFO_RTSP_SESSION_ID
 because it didn't fulfill the condition. The long ths argument points to will
 get a zero stored if the condition instead was met. (Added in 7.19.4)
 .IP CURLINFO_RTSP_SESSION_ID
index 6a9967d..af26a2f 100644 (file)
@@ -61,7 +61,7 @@ p.roffit {
 <p class="level0"><a name="CURLINFOHTTPCONNECTCODE"></a><span class="nroffip">CURLINFO_HTTP_CONNECTCODE</span> 
 <p class="level1">Pass a pointer to a long to receive the last received proxy response code to a CONNECT request. 
 <p class="level0"><a name="CURLINFOFILETIME"></a><span class="nroffip">CURLINFO_FILETIME</span> 
 <p class="level0"><a name="CURLINFOHTTPCONNECTCODE"></a><span class="nroffip">CURLINFO_HTTP_CONNECTCODE</span> 
 <p class="level1">Pass a pointer to a long to receive the last received proxy response code to a CONNECT request. 
 <p class="level0"><a name="CURLINFOFILETIME"></a><span class="nroffip">CURLINFO_FILETIME</span> 
-<p class="level1">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 (unknown, the server hides 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 CURLOPT_FILETIME option to <a class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt(3)</a> or you will unconditionally get a -1 back. (Added in 7.5) 
+<p class="level1">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 (unknown, the server hides 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 <span Class="emphasis">CURLOPT_FILETIME(3)</span> option to <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a> or you will unconditionally get a -1 back. (Added in 7.5) 
 <p class="level0"><a name="CURLINFOTOTALTIME"></a><span class="nroffip">CURLINFO_TOTAL_TIME</span> 
 <p class="level1">Pass a pointer to a double to receive the total time in seconds for the previous transfer, including name resolving, TCP connect etc. 
 <p class="level0"><a name="CURLINFONAMELOOKUPTIME"></a><span class="nroffip">CURLINFO_NAMELOOKUP_TIME</span> 
 <p class="level0"><a name="CURLINFOTOTALTIME"></a><span class="nroffip">CURLINFO_TOTAL_TIME</span> 
 <p class="level1">Pass a pointer to a double to receive the total time in seconds for the previous transfer, including name resolving, TCP connect etc. 
 <p class="level0"><a name="CURLINFONAMELOOKUPTIME"></a><span class="nroffip">CURLINFO_NAMELOOKUP_TIME</span> 
@@ -69,7 +69,7 @@ p.roffit {
 <p class="level0"><a name="CURLINFOCONNECTTIME"></a><span class="nroffip">CURLINFO_CONNECT_TIME</span> 
 <p class="level1">Pass a pointer to a double to receive the time, in seconds, it took from the start until the connect to the remote host (or proxy) was completed. 
 <p class="level0"><a name="CURLINFOAPPCONNECTTIME"></a><span class="nroffip">CURLINFO_APPCONNECT_TIME</span> 
 <p class="level0"><a name="CURLINFOCONNECTTIME"></a><span class="nroffip">CURLINFO_CONNECT_TIME</span> 
 <p class="level1">Pass a pointer to a double to receive the time, in seconds, it took from the start until the connect to the remote host (or proxy) was completed. 
 <p class="level0"><a name="CURLINFOAPPCONNECTTIME"></a><span class="nroffip">CURLINFO_APPCONNECT_TIME</span> 
-<p class="level1">Pass a pointer to a double to receive the time, in seconds, it took from the start until the SSL/SSH connect/handshake to the remote host was completed. This time is most often very near to the PRETRANSFER time, except for cases such as HTTP pippelining where the pretransfer time can be delayed due to waits in line for the pipeline and more. (Added in 7.19.0) 
+<p class="level1">Pass a pointer to a double to receive the time, in seconds, it took from the start until the SSL/SSH connect/handshake to the remote host was completed. This time is most often very near to the PRETRANSFER time, except for cases such as HTTP pipelining where the pretransfer time can be delayed due to waits in line for the pipeline and more. (Added in 7.19.0) 
 <p class="level0"><a name="CURLINFOPRETRANSFERTIME"></a><span class="nroffip">CURLINFO_PRETRANSFER_TIME</span> 
 <p class="level1">Pass a pointer to a double to receive the time, in seconds, 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. It does <span Class="emphasis">not</span> involve the sending of the protocol- specific request that triggers a transfer. 
 <p class="level0"><a name="CURLINFOSTARTTRANSFERTIME"></a><span class="nroffip">CURLINFO_STARTTRANSFER_TIME</span> 
 <p class="level0"><a name="CURLINFOPRETRANSFERTIME"></a><span class="nroffip">CURLINFO_PRETRANSFER_TIME</span> 
 <p class="level1">Pass a pointer to a double to receive the time, in seconds, 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. It does <span Class="emphasis">not</span> involve the sending of the protocol- specific request that triggers a transfer. 
 <p class="level0"><a name="CURLINFOSTARTTRANSFERTIME"></a><span class="nroffip">CURLINFO_STARTTRANSFER_TIME</span> 
@@ -79,11 +79,11 @@ p.roffit {
 <p class="level0"><a name="CURLINFOREDIRECTCOUNT"></a><span class="nroffip">CURLINFO_REDIRECT_COUNT</span> 
 <p class="level1">Pass a pointer to a long to receive the total number of redirections that were actually followed.  (Added in 7.9.7) 
 <p class="level0"><a name="CURLINFOREDIRECTURL"></a><span class="nroffip">CURLINFO_REDIRECT_URL</span> 
 <p class="level0"><a name="CURLINFOREDIRECTCOUNT"></a><span class="nroffip">CURLINFO_REDIRECT_COUNT</span> 
 <p class="level1">Pass a pointer to a long to receive the total number of redirections that were actually followed.  (Added in 7.9.7) 
 <p class="level0"><a name="CURLINFOREDIRECTURL"></a><span class="nroffip">CURLINFO_REDIRECT_URL</span> 
-<p class="level1">Pass a pointer to a char pointer to receive the URL a redirect <span Class="emphasis">would</span> take you to if you would enable CURLOPT_FOLLOWLOCATION. This can come very handy if you think using the built-in libcurl redirect logic isn't good enough for you but you would still prefer to avoid implementing all the magic of figuring out the new URL. (Added in 7.18.2) 
+<p class="level1">Pass a pointer to a char pointer to receive the URL a redirect <span Class="emphasis">would</span> take you to if you would enable <span Class="emphasis">CURLOPT_FOLLOWLOCATION(3)</span>. This can come very handy if you think using the built-in libcurl redirect logic isn't good enough for you but you would still prefer to avoid implementing all the magic of figuring out the new URL. (Added in 7.18.2) 
 <p class="level0"><a name="CURLINFOSIZEUPLOAD"></a><span class="nroffip">CURLINFO_SIZE_UPLOAD</span> 
 <p class="level1">Pass a pointer to a double to receive the total amount of bytes that were uploaded. 
 <p class="level0"><a name="CURLINFOSIZEDOWNLOAD"></a><span class="nroffip">CURLINFO_SIZE_DOWNLOAD</span> 
 <p class="level0"><a name="CURLINFOSIZEUPLOAD"></a><span class="nroffip">CURLINFO_SIZE_UPLOAD</span> 
 <p class="level1">Pass a pointer to a double to receive the total amount of bytes that were uploaded. 
 <p class="level0"><a name="CURLINFOSIZEDOWNLOAD"></a><span class="nroffip">CURLINFO_SIZE_DOWNLOAD</span> 
-<p class="level1">Pass a pointer to a double to receive the total amount of bytes that were downloaded. The amount is only for the latest transfer and will be reset again for each new transfer. 
+<p class="level1">Pass a pointer to a double to receive the total amount of bytes that were downloaded. The amount is only for the latest transfer and will be reset again for each new transfer. This counts actual payload data, what's also commonly called body. All meta and header data are excluded and will not be counted in this number. 
 <p class="level0"><a name="CURLINFOSPEEDDOWNLOAD"></a><span class="nroffip">CURLINFO_SPEED_DOWNLOAD</span> 
 <p class="level1">Pass a pointer to a double to receive the average download speed that curl measured for the complete download. Measured in bytes/second. 
 <p class="level0"><a name="CURLINFOSPEEDUPLOAD"></a><span class="nroffip">CURLINFO_SPEED_UPLOAD</span> 
 <p class="level0"><a name="CURLINFOSPEEDDOWNLOAD"></a><span class="nroffip">CURLINFO_SPEED_DOWNLOAD</span> 
 <p class="level1">Pass a pointer to a double to receive the average download speed that curl measured for the complete download. Measured in bytes/second. 
 <p class="level0"><a name="CURLINFOSPEEDUPLOAD"></a><span class="nroffip">CURLINFO_SPEED_UPLOAD</span> 
@@ -93,9 +93,9 @@ p.roffit {
 <p class="level0"><a name="CURLINFOREQUESTSIZE"></a><span class="nroffip">CURLINFO_REQUEST_SIZE</span> 
 <p class="level1">Pass a pointer to a long to receive the total size of the issued requests. This is so far only for HTTP requests. Note that this may be more than one request if FOLLOWLOCATION is true. 
 <p class="level0"><a name="CURLINFOSSLVERIFYRESULT"></a><span class="nroffip">CURLINFO_SSL_VERIFYRESULT</span> 
 <p class="level0"><a name="CURLINFOREQUESTSIZE"></a><span class="nroffip">CURLINFO_REQUEST_SIZE</span> 
 <p class="level1">Pass a pointer to a long to receive the total size of the issued requests. This is so far only for HTTP requests. Note that this may be more than one request if FOLLOWLOCATION is true. 
 <p class="level0"><a name="CURLINFOSSLVERIFYRESULT"></a><span class="nroffip">CURLINFO_SSL_VERIFYRESULT</span> 
-<p class="level1">Pass a pointer to a long to receive the result of the certification verification that was requested (using the CURLOPT_SSL_VERIFYPEER option to <a class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt(3)</a>). 
+<p class="level1">Pass a pointer to a long to receive the result of the certification verification that was requested (using the <span Class="emphasis">CURLOPT_SSL_VERIFYPEER(3)</span> option to <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a>). 
 <p class="level0"><a name="CURLINFOSSLENGINES"></a><span class="nroffip">CURLINFO_SSL_ENGINES</span> 
 <p class="level0"><a name="CURLINFOSSLENGINES"></a><span class="nroffip">CURLINFO_SSL_ENGINES</span> 
-<p class="level1">Pass the address of a 'struct curl_slist *' to receive a linked-list of OpenSSL crypto-engines supported. Note that engines are normally implemented in separate dynamic libraries. Hence not all the returned engines may be available at run-time. <span Class="bold">NOTE:</span> you must call <a class="emphasis" href="./curl_slist_free_all.html">curl_slist_free_all(3)</a> on the list pointer once you're done with it, as libcurl will not free the data for you. (Added in 7.12.3) 
+<p class="level1">Pass the address of a 'struct curl_slist *' to receive a linked-list of OpenSSL crypto-engines supported. Note that engines are normally implemented in separate dynamic libraries. Hence not all the returned engines may be available at run-time. <span Class="bold">NOTE:</span> you must call <a Class="emphasis" href="./curl_slist_free_all.html">curl_slist_free_all</a> on the list pointer once you're done with it, as libcurl will not free the data for you. (Added in 7.12.3) 
 <p class="level0"><a name="CURLINFOCONTENTLENGTHDOWNLOAD"></a><span class="nroffip">CURLINFO_CONTENT_LENGTH_DOWNLOAD</span> 
 <p class="level1">Pass a pointer to a double to receive the content-length of the download. This is the value read from the Content-Length: field. Since 7.19.4, this returns -1 if the size isn't known. 
 <p class="level0"><a name="CURLINFOCONTENTLENGTHUPLOAD"></a><span class="nroffip">CURLINFO_CONTENT_LENGTH_UPLOAD</span> 
 <p class="level0"><a name="CURLINFOCONTENTLENGTHDOWNLOAD"></a><span class="nroffip">CURLINFO_CONTENT_LENGTH_DOWNLOAD</span> 
 <p class="level1">Pass a pointer to a double to receive the content-length of the download. This is the value read from the Content-Length: field. Since 7.19.4, this returns -1 if the size isn't known. 
 <p class="level0"><a name="CURLINFOCONTENTLENGTHUPLOAD"></a><span class="nroffip">CURLINFO_CONTENT_LENGTH_UPLOAD</span> 
@@ -103,15 +103,15 @@ p.roffit {
 <p class="level0"><a name="CURLINFOCONTENTTYPE"></a><span class="nroffip">CURLINFO_CONTENT_TYPE</span> 
 <p class="level1">Pass a pointer to a char pointer to receive the content-type of the downloaded object. This is the value read from the Content-Type: field. If you get NULL, it means that the server didn't send a valid Content-Type header or that the protocol used doesn't support this. 
 <p class="level0"><a name="CURLINFOPRIVATE"></a><span class="nroffip">CURLINFO_PRIVATE</span> 
 <p class="level0"><a name="CURLINFOCONTENTTYPE"></a><span class="nroffip">CURLINFO_CONTENT_TYPE</span> 
 <p class="level1">Pass a pointer to a char pointer to receive the content-type of the downloaded object. This is the value read from the Content-Type: field. If you get NULL, it means that the server didn't send a valid Content-Type header or that the protocol used doesn't support this. 
 <p class="level0"><a name="CURLINFOPRIVATE"></a><span class="nroffip">CURLINFO_PRIVATE</span> 
-<p class="level1">Pass a pointer to a char pointer to receive the pointer to the private data associated with the curl handle (set with the CURLOPT_PRIVATE option to <a class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt(3)</a>). Please note that for internal reasons, the value is returned as a char pointer, although effectively being a 'void *'. (Added in 7.10.3) 
+<p class="level1">Pass a pointer to a char pointer to receive the pointer to the private data associated with the curl handle (set with the <span Class="emphasis">CURLOPT_PRIVATE(3)</span> option to <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a>). Please note that for internal reasons, the value is returned as a char pointer, although effectively being a 'void *'. (Added in 7.10.3) 
 <p class="level0"><a name="CURLINFOHTTPAUTHAVAIL"></a><span class="nroffip">CURLINFO_HTTPAUTH_AVAIL</span> 
 <p class="level0"><a name="CURLINFOHTTPAUTHAVAIL"></a><span class="nroffip">CURLINFO_HTTPAUTH_AVAIL</span> 
-<p class="level1">Pass a pointer to a long to receive a bitmask indicating the authentication method(s) available. The meaning of the bits is explained in the CURLOPT_HTTPAUTH option for <a class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt(3)</a>.  (Added in 7.10.8) 
+<p class="level1">Pass a pointer to a long to receive a bitmask indicating the authentication method(s) available. The meaning of the bits is explained in the <span Class="emphasis">CURLOPT_HTTPAUTH(3)</span> option for <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a>.  (Added in 7.10.8) 
 <p class="level0"><a name="CURLINFOPROXYAUTHAVAIL"></a><span class="nroffip">CURLINFO_PROXYAUTH_AVAIL</span> 
 <p class="level1">Pass a pointer to a long to receive a bitmask indicating the authentication method(s) available for your proxy authentication.  (Added in 7.10.8) 
 <p class="level0"><a name="CURLINFOOSERRNO"></a><span class="nroffip">CURLINFO_OS_ERRNO</span> 
 <p class="level1">Pass a pointer to a long to receive the errno variable from a connect failure. Note that the value is only set on failure, it is not reset upon a successful operation.  (Added in 7.12.2) 
 <p class="level0"><a name="CURLINFONUMCONNECTS"></a><span class="nroffip">CURLINFO_NUM_CONNECTS</span> 
 <p class="level0"><a name="CURLINFOPROXYAUTHAVAIL"></a><span class="nroffip">CURLINFO_PROXYAUTH_AVAIL</span> 
 <p class="level1">Pass a pointer to a long to receive a bitmask indicating the authentication method(s) available for your proxy authentication.  (Added in 7.10.8) 
 <p class="level0"><a name="CURLINFOOSERRNO"></a><span class="nroffip">CURLINFO_OS_ERRNO</span> 
 <p class="level1">Pass a pointer to a long to receive the errno variable from a connect failure. Note that the value is only set on failure, it is not reset upon a successful operation.  (Added in 7.12.2) 
 <p class="level0"><a name="CURLINFONUMCONNECTS"></a><span class="nroffip">CURLINFO_NUM_CONNECTS</span> 
-<p class="level1">Pass a pointer to a long to receive how many new connections libcurl had to create to achieve the previous transfer (only the successful connects are counted).  Combined with <a class="emphasis" href="#CURLINFOREDIRECTCOUNT">CURLINFO_REDIRECT_COUNT</a> you are able to know how many times libcurl successfully reused existing connection(s) or not.  See the Connection Options of <a class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt(3)</a> to see how libcurl tries to make persistent connections to save time.  (Added in 7.12.3) 
+<p class="level1">Pass a pointer to a long to receive how many new connections libcurl had to create to achieve the previous transfer (only the successful connects are counted).  Combined with <a class="emphasis" href="#CURLINFOREDIRECTCOUNT">CURLINFO_REDIRECT_COUNT</a> you are able to know how many times libcurl successfully reused existing connection(s) or not.  See the Connection Options of <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a> to see how libcurl tries to make persistent connections to save time.  (Added in 7.12.3) 
 <p class="level0"><a name="CURLINFOPRIMARYIP"></a><span class="nroffip">CURLINFO_PRIMARY_IP</span> 
 <p class="level1">Pass a pointer to a char pointer to receive the pointer to a zero-terminated string holding the IP address of the most recent connection done with this <span Class="bold">curl</span> handle. This string may be IPv6 if that's enabled. Note that you get a pointer to a memory area that will be re-used at next request so you need to copy the string if you want to keep the information. (Added in 7.19.0) 
 <p class="level0"><a name="CURLINFOPRIMARYPORT"></a><span class="nroffip">CURLINFO_PRIMARY_PORT</span> 
 <p class="level0"><a name="CURLINFOPRIMARYIP"></a><span class="nroffip">CURLINFO_PRIMARY_IP</span> 
 <p class="level1">Pass a pointer to a char pointer to receive the pointer to a zero-terminated string holding the IP address of the most recent connection done with this <span Class="bold">curl</span> handle. This string may be IPv6 if that's enabled. Note that you get a pointer to a memory area that will be re-used at next request so you need to copy the string if you want to keep the information. (Added in 7.19.0) 
 <p class="level0"><a name="CURLINFOPRIMARYPORT"></a><span class="nroffip">CURLINFO_PRIMARY_PORT</span> 
@@ -121,17 +121,21 @@ p.roffit {
 <p class="level0"><a name="CURLINFOLOCALPORT"></a><span class="nroffip">CURLINFO_LOCAL_PORT</span> 
 <p class="level1">Pass a pointer to a long to receive the local (source) port of the most recent connection done with this <span Class="bold">curl</span> handle. (Added in 7.21.0) 
 <p class="level0"><a name="CURLINFOCOOKIELIST"></a><span class="nroffip">CURLINFO_COOKIELIST</span> 
 <p class="level0"><a name="CURLINFOLOCALPORT"></a><span class="nroffip">CURLINFO_LOCAL_PORT</span> 
 <p class="level1">Pass a pointer to a long to receive the local (source) port of the most recent connection done with this <span Class="bold">curl</span> handle. (Added in 7.21.0) 
 <p class="level0"><a name="CURLINFOCOOKIELIST"></a><span class="nroffip">CURLINFO_COOKIELIST</span> 
-<p class="level1">Pass a pointer to a 'struct curl_slist *' to receive a linked-list of all cookies cURL knows (expired ones, too). Don't forget to <a class="emphasis" href="./curl_slist_free_all.html">curl_slist_free_all(3)</a> the list after it has been used.  If there are no cookies (cookies for the handle have not been enabled or simply none have been received) 'struct curl_slist *' will be set to point to NULL. (Added in 7.14.1) 
+<p class="level1">Pass a pointer to a 'struct curl_slist *' to receive a linked-list of all cookies cURL knows (expired ones, too). Don't forget to <a Class="emphasis" href="./curl_slist_free_all.html">curl_slist_free_all</a> the list after it has been used.  If there are no cookies (cookies for the handle have not been enabled or simply none have been received) 'struct curl_slist *' will be set to point to NULL. (Added in 7.14.1) 
 <p class="level0"><a name="CURLINFOLASTSOCKET"></a><span class="nroffip">CURLINFO_LASTSOCKET</span> 
 <p class="level0"><a name="CURLINFOLASTSOCKET"></a><span class="nroffip">CURLINFO_LASTSOCKET</span> 
-<p class="level1">Pass a pointer to a long to receive the last socket used by this curl session. If the socket is no longer valid, -1 is returned. When you finish working with the socket, you must call curl_easy_cleanup() as usual and let libcurl close the socket and cleanup other resources associated with the handle. This is typically used in combination with <span Class="emphasis">CURLOPT_CONNECT_ONLY</span>. (Added in 7.15.2) 
+<p class="level1">Pass a pointer to a long to receive the last socket used by this curl session. If the socket is no longer valid, -1 is returned. When you finish working with the socket, you must call curl_easy_cleanup() as usual and let libcurl close the socket and cleanup other resources associated with the handle. This is typically used in combination with <span Class="emphasis">CURLOPT_CONNECT_ONLY(3)</span>.  (Added in 7.15.2) 
 <p class="level1">NOTE: this API is not really working on win64, since the SOCKET type on win64 is 64 bit large while its 'long' is only 32 bits. 
 <p class="level0"><a name="CURLINFOFTPENTRYPATH"></a><span class="nroffip">CURLINFO_FTP_ENTRY_PATH</span> 
 <p class="level1">Pass a pointer to a char pointer to receive a pointer to a string holding the path of the entry path. That is the initial path libcurl ended up in when logging on to the remote FTP server. This stores a NULL as pointer if something is wrong. (Added in 7.15.4) 
 <p class="level1">Also works for SFTP since 7.21.4 
 <p class="level0"><a name="CURLINFOCERTINFO"></a><span class="nroffip">CURLINFO_CERTINFO</span> 
 <p class="level1">NOTE: this API is not really working on win64, since the SOCKET type on win64 is 64 bit large while its 'long' is only 32 bits. 
 <p class="level0"><a name="CURLINFOFTPENTRYPATH"></a><span class="nroffip">CURLINFO_FTP_ENTRY_PATH</span> 
 <p class="level1">Pass a pointer to a char pointer to receive a pointer to a string holding the path of the entry path. That is the initial path libcurl ended up in when logging on to the remote FTP server. This stores a NULL as pointer if something is wrong. (Added in 7.15.4) 
 <p class="level1">Also works for SFTP since 7.21.4 
 <p class="level0"><a name="CURLINFOCERTINFO"></a><span class="nroffip">CURLINFO_CERTINFO</span> 
-<p class="level1">Pass a pointer to a 'struct curl_certinfo *' and you'll get it set to point to struct that holds a number of linked lists with info about the certificate chain, assuming you had CURLOPT_CERTINFO enabled when the previous request was done. The struct reports how many certs it found and then you can extract info for each of those certs by following the linked lists. The info chain is provided in a series of data in the format "name:content" where the content is for the specific named data. See also the certinfo.c example. NOTE: this option is only available in libcurl built with OpenSSL support. (Added in 7.19.1) 
+<p class="level1">Pass a pointer to a 'struct curl_certinfo *' and you'll get it set to point to struct that holds a number of linked lists with info about the certificate chain, assuming you had <span Class="emphasis">CURLOPT_CERTINFO(3)</span> enabled when the previous request was done. The struct reports how many certs it found and then you can extract info for each of those certs by following the linked lists. The info chain is provided in a series of data in the format "name:content" where the content is for the specific named data. See also the certinfo.c example. NOTE: this option is only available in libcurl built with OpenSSL, NSS or GSKit support. (Added in 7.19.1) 
+<p class="level0"><a name="CURLINFOTLSSESSION"></a><span class="nroffip">CURLINFO_TLS_SESSION</span> 
+<p class="level1">Pass a pointer to a 'struct curl_tlssessioninfo *'.  The pointer will be initialized to refer to a 'struct curl_tlssessioninfo *' that will contain an enum indicating the SSL library used for the handshake and the respective internal TLS session structure of this underlying SSL library. 
+<p class="level1">This may then be used to extract certificate information in a format convenient for further processing, such as manual validation. NOTE: this option may not be available for all SSL backends; unsupported SSL backends will return 'CURLSSLBACKEND_NONE' to indicate that they are not supported; this does not mean that no SSL backend was used. (Added in 7.34.0) 
+<p class="level1">
 <p class="level0"><a name="CURLINFOCONDITIONUNMET"></a><span class="nroffip">CURLINFO_CONDITION_UNMET</span> 
 <p class="level0"><a name="CURLINFOCONDITIONUNMET"></a><span class="nroffip">CURLINFO_CONDITION_UNMET</span> 
-<p class="level1">Pass a pointer to a long to receive the number 1 if the condition provided in the previous request didn't match (see <span Class="emphasis">CURLOPT_TIMECONDITION</span>). 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 get a zero stored if the condition instead was met. (Added in 7.19.4) 
+<p class="level1">Pass a pointer to a long to receive the number 1 if the condition provided in the previous request didn't match (see <span Class="emphasis">CURLOPT_TIMECONDITION(3)</span>). 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 get a zero stored if the condition instead was met. (Added in 7.19.4) 
 <p class="level0"><a name="CURLINFORTSPSESSIONID"></a><span class="nroffip">CURLINFO_RTSP_SESSION_ID</span> 
 <p class="level1">Pass a pointer to a char pointer to receive a pointer to a string holding the most recent RTSP Session ID. 
 <p class="level1">Applications wishing to resume an RTSP session on another connection should retrieve this info before closing the active connection. 
 <p class="level0"><a name="CURLINFORTSPSESSIONID"></a><span class="nroffip">CURLINFO_RTSP_SESSION_ID</span> 
 <p class="level1">Pass a pointer to a char pointer to receive a pointer to a string holding the most recent RTSP Session ID. 
 <p class="level1">Applications wishing to resume an RTSP session on another connection should retrieve this info before closing the active connection. 
@@ -172,6 +176,6 @@ p.roffit {
 <p class="level0"><a name="REDIRECT"></a><span class="nroffip">REDIRECT</span> 
 <p class="level1"><a class="emphasis" href="#CURLINFOREDIRECTTIME">CURLINFO_REDIRECT_TIME</a>. 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. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">If the operation was successful, CURLE_OK is returned. Otherwise an appropriate error code will be returned. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a name="REDIRECT"></a><span class="nroffip">REDIRECT</span> 
 <p class="level1"><a class="emphasis" href="#CURLINFOREDIRECTTIME">CURLINFO_REDIRECT_TIME</a>. 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. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">If the operation was successful, CURLE_OK is returned. Otherwise an appropriate error code will be returned. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_easy_setopt.html">curl_easy_setopt (3)</a> <p class="roffit">
+<p class="level0"><a Class="manpage" href="./curl_easy_setopt.html">curl_easy_setopt</a>, <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index d5d43b6..9801b97 100644 (file)
Binary files a/docs/libcurl/curl_easy_getinfo.pdf and b/docs/libcurl/curl_easy_getinfo.pdf differ
index 837ba32..4f7f004 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -26,26 +26,34 @@ curl_easy_init - Start a libcurl easy session
 .B #include <curl/curl.h>
 
 .BI "CURL *curl_easy_init( );"
 .B #include <curl/curl.h>
 
 .BI "CURL *curl_easy_init( );"
-
 .SH DESCRIPTION
 This function must be the first function to call, and it returns a CURL easy
 .SH DESCRIPTION
 This function must be the first function to call, and it returns a CURL easy
-handle that you must use as input to other easy-functions. curl_easy_init
-initializes curl and this call \fBMUST\fP have a corresponding call to
+handle that you must use as input to other functions in the easy
+interface. This call \fBMUST\fP have a corresponding call to
 \fIcurl_easy_cleanup(3)\fP when the operation is complete.
 
 \fIcurl_easy_cleanup(3)\fP when the operation is complete.
 
-If you did not already call \fIcurl_global_init(3)\fP,
-\fIcurl_easy_init(3)\fP does it automatically.
-This may be lethal in multi-threaded cases, since \fIcurl_global_init(3)\fP is
-not thread-safe, and it may result in resource problems because there is
-no corresponding cleanup.
-
-You are strongly advised to not allow this automatic behaviour, by
-calling \fIcurl_global_init(3)\fP yourself properly.
-See the description in \fBlibcurl\fP(3) of global environment
-requirements for details of how to use this function.
+If you did not already call \fIcurl_global_init(3)\fP, \fIcurl_easy_init(3)\fP
+does it automatically.  This may be lethal in multi-threaded cases, since
+\fIcurl_global_init(3)\fP is not thread-safe, and it may result in resource
+problems because there is no corresponding cleanup.
 
 
+You are strongly advised to not allow this automatic behaviour, by calling
+\fIcurl_global_init(3)\fP yourself properly.  See the description in
+\fBlibcurl\fP(3) of global environment requirements for details of how to use
+this function.
 .SH RETURN VALUE
 If this function returns NULL, something went wrong and you cannot use the
 other curl functions.
 .SH RETURN VALUE
 If this function returns NULL, something went wrong and you cannot use the
 other curl functions.
+.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"
 .SH "SEE ALSO"
-.BR curl_easy_cleanup "(3), " curl_global_init "(3), " curl_easy_reset "(3)"
+.BR curl_easy_cleanup "(3), " curl_global_init "(3), " curl_easy_reset "(3), "
+.BR curl_easy_perform "(3) "
index 2f547dc..28ec035 100644 (file)
@@ -48,13 +48,22 @@ p.roffit {
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">curl_easy_init - Start a libcurl easy session <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
 <p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">curl_easy_init - Start a libcurl easy session <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
 <p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
-<p class="level0"><span Class="bold">CURL *curl_easy_init( );</span> 
-<p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">This function must be the first function to call, and it returns a CURL easy handle that you must use as input to other easy-functions. curl_easy_init initializes curl and this call <span Class="bold">MUST</span> have a corresponding call to <a class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup(3)</a> when the operation is complete. 
-<p class="level0">If you did not already call <a class="emphasis" href="./curl_global_init.html">curl_global_init(3)</a>, <a class="emphasis" href="./curl_easy_init.html">curl_easy_init(3)</a> does it automatically. This may be lethal in multi-threaded cases, since <a class="emphasis" href="./curl_global_init.html">curl_global_init(3)</a> is not thread-safe, and it may result in resource problems because there is no corresponding cleanup. 
-<p class="level0">You are strongly advised to not allow this automatic behaviour, by calling <a class="emphasis" href="./curl_global_init.html">curl_global_init(3)</a> yourself properly. See the description in <span Class="bold">libcurl</span>(3) of global environment requirements for details of how to use this function. 
-<p class="level0"><a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
-<p class="level0">If this function returns NULL, something went wrong and you cannot use the other curl functions. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_easy_cleanup.html">curl_easy_cleanup (3)</a> <a class="manpage" href="./curl_global_init.html">  curl_global_init (3)</a> <a class="manpage" href="./curl_easy_reset.html">  curl_easy_reset (3)</a> <p class="roffit">
+<p class="level0"><span Class="bold">CURL *curl_easy_init( );</span> <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">This function must be the first function to call, and it returns a CURL easy handle that you must use as input to other functions in the easy interface. This call <span Class="bold">MUST</span> have a corresponding call to <a Class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup</a> when the operation is complete. 
+<p class="level0">If you did not already call <a Class="emphasis" href="./curl_global_init.html">curl_global_init</a>, <a Class="emphasis" href="./curl_easy_init.html">curl_easy_init</a> does it automatically.  This may be lethal in multi-threaded cases, since <a Class="emphasis" href="./curl_global_init.html">curl_global_init</a> is not thread-safe, and it may result in resource problems because there is no corresponding cleanup. 
+<p class="level0">You are strongly advised to not allow this automatic behaviour, by calling <a Class="emphasis" href="./curl_global_init.html">curl_global_init</a> yourself properly.  See the description in <span Class="bold">libcurl</span>(3) of global environment requirements for details of how to use this function. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">If this function returns NULL, something went wrong and you cannot use the other curl functions. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre>
+<p class="level0">CURL *curl = curl_easy_init();
+ if(curl) {
+ &nbsp; CURLcode res;
+ &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+ &nbsp; res = curl_easy_perform(curl);
+ &nbsp; curl_easy_cleanup(curl);
+ }
+ </pre>
+
+<p class="level0"><a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./curl_easy_cleanup.html">curl_easy_cleanup</a>, <a Class="manpage" href="./curl_global_init.html">curl_global_init</a>, <a Class="manpage" href="./curl_easy_reset.html">curl_easy_reset</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_easy_perform.html">curl_easy_perform</a>, <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 18cdc7c..faa85c1 100644 (file)
Binary files a/docs/libcurl/curl_easy_init.pdf and b/docs/libcurl/curl_easy_init.pdf differ
index 7debfd8..0f6ad5a 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -31,15 +31,17 @@ curl_easy_pause - pause and unpause a connection
 Using this function, you can explicitly mark a running connection to get
 paused, and you can unpause a connection that was previously paused.
 
 Using this function, you can explicitly mark a running connection to get
 paused, and you can unpause a connection that was previously paused.
 
-A connection can be paused by using this function or by letting the read
-or the write callbacks return the proper magic return code
+A connection can be paused by using this function or by letting the read or
+the write callbacks return the proper magic return code
 (\fICURL_READFUNC_PAUSE\fP and \fICURL_WRITEFUNC_PAUSE\fP). A write callback
 that returns pause signals to the library that it couldn't take care of any
 data at all, and that data will then be delivered again to the callback when
 the writing is later unpaused.
 
 (\fICURL_READFUNC_PAUSE\fP and \fICURL_WRITEFUNC_PAUSE\fP). A write callback
 that returns pause signals to the library that it couldn't take care of any
 data at all, and that data will then be delivered again to the callback when
 the writing is later unpaused.
 
-NOTE: while it may feel tempting, take care and notice that you cannot call
-this function from another thread.
+While it may feel tempting, take care and notice that you cannot call this
+function from another thread. To unpause, you may for example call it from the
+progress callback (\fICURLOPT_PROGRESSFUNCTION(3)\fP), which gets called at
+least once per second, even if the connection is paused.
 
 When this function is called to unpause reading, the chance is high that you
 will get your write callback called before this function returns.
 
 When this function is called to unpause reading, the chance is high that you
 will get your write callback called before this function returns.
@@ -52,11 +54,11 @@ connection. The following bits can be used:
 .IP CURLPAUSE_RECV
 Pause receiving data. There will be no data received on this connection until
 this function is called again without this bit set. Thus, the write callback
 .IP CURLPAUSE_RECV
 Pause receiving data. There will be no data received on this connection until
 this function is called again without this bit set. Thus, the write callback
-(\fICURLOPT_WRITEFUNCTION\fP) won't be called.
+(\fICURLOPT_WRITEFUNCTION(3)\fP) won't be called.
 .IP CURLPAUSE_SEND
 Pause sending data. There will be no data sent on this connection until this
 function is called again without this bit set. Thus, the read callback
 .IP CURLPAUSE_SEND
 Pause sending data. There will be no data sent on this connection until this
 function is called again without this bit set. Thus, the read callback
-(\fICURLOPT_READFUNCTION\fP) won't be called.
+(\fICURLOPT_READFUNCTION(3)\fP) won't be called.
 .IP CURLPAUSE_ALL
 Convenience define that pauses both directions.
 .IP CURLPAUSE_CONT
 .IP CURLPAUSE_ALL
 Convenience define that pauses both directions.
 .IP CURLPAUSE_CONT
@@ -65,6 +67,10 @@ Convenience define that unpauses both directions
 CURLE_OK (zero) means that the option was set properly, and a non-zero return
 code means something wrong occurred after the new state was set.  See the
 \fIlibcurl-errors(3)\fP man page for the full list with descriptions.
 CURLE_OK (zero) means that the option was set properly, and a non-zero return
 code means something wrong occurred after the new state was set.  See the
 \fIlibcurl-errors(3)\fP man page for the full list with descriptions.
+.SH LIMITATIONS
+The pausing of transfers does not work with protocols that work without
+network connectivity, like FILE://. Trying to pause such a transfer, in any
+direction, will cause problems in the worst case or an error in the best case.
 .SH AVAILABILITY
 This function was added in libcurl 7.18.0. Before this version, there was no
 explicit support for pausing transfers.
 .SH AVAILABILITY
 This function was added in libcurl 7.18.0. Before this version, there was no
 explicit support for pausing transfers.
index 866a848..bb646e5 100644 (file)
@@ -52,24 +52,25 @@ p.roffit {
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Using this function, you can explicitly mark a running connection to get paused, and you can unpause a connection that was previously paused. 
 <p class="level0">A connection can be paused by using this function or by letting the read or the write callbacks return the proper magic return code (<span Class="emphasis">CURL_READFUNC_PAUSE</span> and <span Class="emphasis">CURL_WRITEFUNC_PAUSE</span>). A write callback that returns pause signals to the library that it couldn't take care of any data at all, and that data will then be delivered again to the callback when the writing is later unpaused. 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">Using this function, you can explicitly mark a running connection to get paused, and you can unpause a connection that was previously paused. 
 <p class="level0">A connection can be paused by using this function or by letting the read or the write callbacks return the proper magic return code (<span Class="emphasis">CURL_READFUNC_PAUSE</span> and <span Class="emphasis">CURL_WRITEFUNC_PAUSE</span>). A write callback that returns pause signals to the library that it couldn't take care of any data at all, and that data will then be delivered again to the callback when the writing is later unpaused. 
-<p class="level0">NOTE: while it may feel tempting, take care and notice that you cannot call this function from another thread. 
+<p class="level0">While it may feel tempting, take care and notice that you cannot call this function from another thread. To unpause, you may for example call it from the progress callback (<span Class="emphasis">CURLOPT_PROGRESSFUNCTION(3)</span>), which gets called at least once per second, even if the connection is paused. 
 <p class="level0">When this function is called to unpause reading, the chance is high that you will get your write callback called before this function returns. 
 <p class="level0">The <span Class="bold">handle</span> argument is of course identifying the handle that operates on the connection you want to pause or unpause. 
 <p class="level0">The <span Class="bold">bitmask</span> argument is a set of bits that sets the new state of the connection. The following bits can be used: 
 <p class="level0"><a name="CURLPAUSERECV"></a><span class="nroffip">CURLPAUSE_RECV</span> 
 <p class="level0">When this function is called to unpause reading, the chance is high that you will get your write callback called before this function returns. 
 <p class="level0">The <span Class="bold">handle</span> argument is of course identifying the handle that operates on the connection you want to pause or unpause. 
 <p class="level0">The <span Class="bold">bitmask</span> argument is a set of bits that sets the new state of the connection. The following bits can be used: 
 <p class="level0"><a name="CURLPAUSERECV"></a><span class="nroffip">CURLPAUSE_RECV</span> 
-<p class="level1">Pause receiving data. There will be no data received on this connection until this function is called again without this bit set. Thus, the write callback (<span Class="emphasis">CURLOPT_WRITEFUNCTION</span>) won't be called. 
+<p class="level1">Pause receiving data. There will be no data received on this connection until this function is called again without this bit set. Thus, the write callback (<span Class="emphasis">CURLOPT_WRITEFUNCTION(3)</span>) won't be called. 
 <p class="level0"><a name="CURLPAUSESEND"></a><span class="nroffip">CURLPAUSE_SEND</span> 
 <p class="level0"><a name="CURLPAUSESEND"></a><span class="nroffip">CURLPAUSE_SEND</span> 
-<p class="level1">Pause sending data. There will be no data sent on this connection until this function is called again without this bit set. Thus, the read callback (<span Class="emphasis">CURLOPT_READFUNCTION</span>) won't be called. 
+<p class="level1">Pause sending data. There will be no data sent on this connection until this function is called again without this bit set. Thus, the read callback (<span Class="emphasis">CURLOPT_READFUNCTION(3)</span>) won't be called. 
 <p class="level0"><a name="CURLPAUSEALL"></a><span class="nroffip">CURLPAUSE_ALL</span> 
 <p class="level1">Convenience define that pauses both directions. 
 <p class="level0"><a name="CURLPAUSECONT"></a><span class="nroffip">CURLPAUSE_CONT</span> 
 <p class="level1">Convenience define that unpauses both directions <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0"><a name="CURLPAUSEALL"></a><span class="nroffip">CURLPAUSE_ALL</span> 
 <p class="level1">Convenience define that pauses both directions. 
 <p class="level0"><a name="CURLPAUSECONT"></a><span class="nroffip">CURLPAUSE_CONT</span> 
 <p class="level1">Convenience define that unpauses both directions <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
-<p class="level0">CURLE_OK (zero) means that the option was set properly, and a non-zero return code means something wrong occurred after the new state was set.  See the <span Class="emphasis">libcurl-errors(3)</span> man page for the full list with descriptions. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">CURLE_OK (zero) means that the option was set properly, and a non-zero return code means something wrong occurred after the new state was set.  See the <a Class="emphasis" href="./libcurl-errors.html">libcurl-errors</a> man page for the full list with descriptions. <a name="LIMITATIONS"></a><h2 class="nroffsh">LIMITATIONS</h2>
+<p class="level0">The pausing of transfers does not work with protocols that work without network connectivity, like FILE://. Trying to pause such a transfer, in any direction, will cause problems in the worst case or an error in the best case. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">This function was added in libcurl 7.18.0. Before this version, there was no explicit support for pausing transfers. <a name="USAGE"></a><h2 class="nroffsh">USAGE WITH THE MULTI-SOCKET INTERFACE</h2>
 <p class="level0">Before libcurl 7.32.0, when a specific handle was unpaused with this function, there was no particular forced rechecking or similar of the socket's state, which made the continuation of the transfer get delayed until next multi-socket call invoke or even longer. Alternatively, the user could forcibly call for example curl_multi_socket_all(3) - with a rather hefty performance penalty. 
 <p class="level0">Starting in libcurl 7.32.0, unpausing a transfer will schedule a timeout trigger for that handle 1 millisecond into the future, so that a curl_multi_socket_action( ... CURL_SOCKET_TIMEOUT) can be used immediately afterwards to get the transfer going again as desired. <a name="MEMORY"></a><h2 class="nroffsh">MEMORY USE</h2>
 <p class="level0">When pausing a read by returning the magic return code from a write callback, the read data is already in libcurl's internal buffers so it'll have to keep it in an allocated buffer until the reading is again unpaused using this function. 
 <p class="level0">If the downloaded data is compressed and is asked to get uncompressed automatically on download, libcurl will continue to uncompress the entire downloaded chunk and it will cache the data uncompressed. This has the side- effect that if you download something that is compressed a lot, it can result in a very large data amount needing to be allocated to save the data during the pause. This said, you should probably consider not using paused reading if you allow libcurl to uncompress data automatically. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0">This function was added in libcurl 7.18.0. Before this version, there was no explicit support for pausing transfers. <a name="USAGE"></a><h2 class="nroffsh">USAGE WITH THE MULTI-SOCKET INTERFACE</h2>
 <p class="level0">Before libcurl 7.32.0, when a specific handle was unpaused with this function, there was no particular forced rechecking or similar of the socket's state, which made the continuation of the transfer get delayed until next multi-socket call invoke or even longer. Alternatively, the user could forcibly call for example curl_multi_socket_all(3) - with a rather hefty performance penalty. 
 <p class="level0">Starting in libcurl 7.32.0, unpausing a transfer will schedule a timeout trigger for that handle 1 millisecond into the future, so that a curl_multi_socket_action( ... CURL_SOCKET_TIMEOUT) can be used immediately afterwards to get the transfer going again as desired. <a name="MEMORY"></a><h2 class="nroffsh">MEMORY USE</h2>
 <p class="level0">When pausing a read by returning the magic return code from a write callback, the read data is already in libcurl's internal buffers so it'll have to keep it in an allocated buffer until the reading is again unpaused using this function. 
 <p class="level0">If the downloaded data is compressed and is asked to get uncompressed automatically on download, libcurl will continue to uncompress the entire downloaded chunk and it will cache the data uncompressed. This has the side- effect that if you download something that is compressed a lot, it can result in a very large data amount needing to be allocated to save the data during the pause. This said, you should probably consider not using paused reading if you allow libcurl to uncompress data automatically. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_easy_cleanup.html">curl_easy_cleanup (3)</a> <a class="manpage" href="./curl_easy_reset.html">  curl_easy_reset (3)</a> <p class="roffit">
+<p class="level0"><a Class="manpage" href="./curl_easy_cleanup.html">curl_easy_cleanup</a>, <a Class="manpage" href="./curl_easy_reset.html">curl_easy_reset</a>, <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 86196a3..1ce558f 100644 (file)
Binary files a/docs/libcurl/curl_easy_pause.pdf and b/docs/libcurl/curl_easy_pause.pdf differ
index 8f8517f..e40c1e4 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" **************************************************************************
 .TH curl_easy_perform 3 "5 Mar 2001" "libcurl 7.7" "libcurl Manual"
 .SH NAME
 .\" **************************************************************************
 .TH curl_easy_perform 3 "5 Mar 2001" "libcurl 7.7" "libcurl Manual"
 .SH NAME
-curl_easy_perform - Perform a file transfer
+curl_easy_perform - perform a blocking file transfer
 .SH SYNOPSIS
 .B #include <curl/curl.h>
 .sp
 .SH SYNOPSIS
 .B #include <curl/curl.h>
 .sp
-.BI "CURLcode curl_easy_perform(CURL *" handle ");"
+.BI "CURLcode curl_easy_perform(CURL *" easy_handle ");"
 .ad
 .SH DESCRIPTION
 .ad
 .SH DESCRIPTION
-This function is called after the init and all the \fIcurl_easy_setopt(3)\fP
-calls are made, and will perform the transfer as described in the options.  It
-must be called with the same
-.I handle
-as input as the curl_easy_init call returned.
+Invoke this function after \fIcurl_easy_init(3)\fP and all the
+\fIcurl_easy_setopt(3)\fP calls are made, and will perform the transfer as
+described in the options. It must be called with the same \fBeasy_handle\fP as
+input as the \fIcurl_easy_init(3)\fP call returned.
+
+\fIcurl_easy_perform(3)\fP performs the entire request in a blocking manner
+and returns when done, or if it failed. For non-blocking behavior, see
+\fIcurl_multi_perform(3)\fP.
 
 You can do any amount of calls to \fIcurl_easy_perform(3)\fP while using the
 
 You can do any amount of calls to \fIcurl_easy_perform(3)\fP while using the
-same handle. If you intend to transfer more than one file, you are even
-encouraged to do so. libcurl will then attempt to re-use the same connection
-for the following transfers, thus making the operations faster, less CPU
-intense and using less network resources. Just note that you will have to use
-\fIcurl_easy_setopt(3)\fP between the invokes to set options for the following
-curl_easy_perform.
+same \fBeasy_handle\fP. If you intend to transfer more than one file, you are
+even encouraged to do so. libcurl will then attempt to re-use the same
+connection for the following transfers, thus making the operations faster,
+less CPU intense and using less network resources. Just note that you will
+have to use \fIcurl_easy_setopt(3)\fP between the invokes to set options for
+the following curl_easy_perform.
 
 You must never call this function simultaneously from two places using the
 
 You must never call this function simultaneously from two places using the
-same handle. Let the function return first before invoking it another time. If
-you want parallel transfers, you must use several curl handles.
+same \fBeasy_handle\fP. Let the function return first before invoking it
+another time. If you want parallel transfers, you must use several curl
+easy_handles.
+
+While the \fBeasy_handle\fP is added to a multi handle, it cannot be used by
+\fIcurl_easy_perform(3)\fP.
 .SH RETURN VALUE
 .SH RETURN VALUE
-0 means everything was ok, non-zero means an error occurred as
+CURLE_OK (0) means everything was ok, non-zero means an error occurred as
 .I <curl/curl.h>
 .I <curl/curl.h>
-defines. If the CURLOPT_ERRORBUFFER was set with
-.I curl_easy_setopt
-there will be a readable error message in the error buffer when non-zero is
-returned.
+defines - see \fIlibcurl-errors(3)\fP. If the \fBCURLOPT_ERRORBUFFER(3)\fP was
+set with \fIcurl_easy_setopt(3)\fP there will be a readable error message in
+the error buffer when non-zero is returned.
+.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_setopt "(3), "
 .SH "SEE ALSO"
 .BR curl_easy_init "(3), " curl_easy_setopt "(3), "
+.BR curl_multi_add_handle "(3), " curl_multi_perform "(3), "
+.BR libcurl-errors "(3), "
 
 
index f50024b..c5b90b2 100644 (file)
@@ -46,15 +46,28 @@ p.roffit {
 </head><body>
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 </head><body>
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
-<p class="level0">curl_easy_perform - Perform a file transfer <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">curl_easy_perform - perform a blocking file transfer <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
 <p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
 <p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
-<p class="level0"><span Class="bold">CURLcode curl_easy_perform(CURL * handle );</span> 
+<p class="level0"><span Class="bold">CURLcode curl_easy_perform(CURL * easy_handle );</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">This function is called after the init and all the <a class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt(3)</a> calls are made, and will perform the transfer as described in the options.  It must be called with the same <span Class="emphasis">handle</span> as input as the curl_easy_init call returned. 
-<p class="level0">You can do any amount of calls to <a class="emphasis" href="./curl_easy_perform.html">curl_easy_perform(3)</a> while using the same handle. If you intend to transfer more than one file, you are even encouraged to do so. libcurl will then attempt to re-use the same connection for the following transfers, thus making the operations faster, less CPU intense and using less network resources. Just note that you will have to use <a class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt(3)</a> between the invokes to set options for the following curl_easy_perform. 
-<p class="level0">You must never call this function simultaneously from two places using the same handle. Let the function return first before invoking it another time. If you want parallel transfers, you must use several curl handles. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
-<p class="level0">0 means everything was ok, non-zero means an error occurred as <span Class="emphasis">&lt;curl/curl.h&gt;</span> defines. If the CURLOPT_ERRORBUFFER was set with <span Class="emphasis">curl_easy_setopt</span> there will be a readable error message in the error buffer when non-zero is returned. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_easy_init.html">curl_easy_init (3)</a> <a class="manpage" href="./curl_easy_setopt.html">  curl_easy_setopt (3)</a> <span Class="manpage"> </span> 
+<p class="level0">Invoke this function after <a Class="emphasis" href="./curl_easy_init.html">curl_easy_init</a> and all the <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a> calls are made, and will perform the transfer as described in the options. It must be called with the same <span Class="bold">easy_handle</span> as input as the <a Class="emphasis" href="./curl_easy_init.html">curl_easy_init</a> call returned. 
+<p class="level0"><a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> performs the entire request in a blocking manner and returns when done, or if it failed. For non-blocking behavior, see <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a>. 
+<p class="level0">You can do any amount of calls to <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> while using the same <span Class="bold">easy_handle</span>. If you intend to transfer more than one file, you are even encouraged to do so. libcurl will then attempt to re-use the same connection for the following transfers, thus making the operations faster, less CPU intense and using less network resources. Just note that you will have to use <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a> between the invokes to set options for the following curl_easy_perform. 
+<p class="level0">You must never call this function simultaneously from two places using the same <span Class="bold">easy_handle</span>. Let the function return first before invoking it another time. If you want parallel transfers, you must use several curl easy_handles. 
+<p class="level0">While the <span Class="bold">easy_handle</span> is added to a multi handle, it cannot be used by <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a>. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">CURLE_OK (0) means everything was ok, non-zero means an error occurred as <span Class="emphasis">&lt;curl/curl.h&gt;</span> defines - see <a Class="emphasis" href="./libcurl-errors.html">libcurl-errors</a>. If the <span Class="bold">CURLOPT_ERRORBUFFER(3)</span> was set with <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a> there will be a readable error message in the error buffer when non-zero is returned. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre>
+<p class="level0">CURL *curl = curl_easy_init();
+ if(curl) {
+ &nbsp; CURLcode res;
+ &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+ &nbsp; res = curl_easy_perform(curl);
+ &nbsp; curl_easy_cleanup(curl);
+ }}
+ </pre>
+
+<p class="level0"><a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./curl_easy_init.html">curl_easy_init</a>, <a Class="manpage" href="./curl_easy_setopt.html">curl_easy_setopt</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_multi_add_handle.html">curl_multi_add_handle</a>, <a Class="manpage" href="./curl_multi_perform.html">curl_multi_perform</a>, <span Class="manpage"> </span> <a Class="manpage" href="./libcurl-errors.html">libcurl-errors</a>, <span Class="manpage"> </span> 
 <p class="level0"><p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
 <p class="level0"><p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 72e34cb..2f47acb 100644 (file)
Binary files a/docs/libcurl/curl_easy_perform.pdf and b/docs/libcurl/curl_easy_perform.pdf differ
index 0de6037..c661f4b 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -41,7 +41,7 @@ data. \fBbuflen\fP is the maximum amount of data you can get in that
 buffer. The variable \fBn\fP points to will receive the number of received
 bytes.
 
 buffer. The variable \fBn\fP points to will receive the number of received
 bytes.
 
-To establish the connection, set \fBCURLOPT_CONNECT_ONLY\fP option before
+To establish the connection, set \fBCURLOPT_CONNECT_ONLY(3)\fP option before
 calling \fIcurl_easy_perform(3)\fP. Note that \fIcurl_easy_recv(3)\fP does not
 work on connections that were created without this option.
 
 calling \fIcurl_easy_perform(3)\fP. Note that \fIcurl_easy_recv(3)\fP does not
 work on connections that were created without this option.
 
index 48ba906..1eb2534 100644 (file)
@@ -50,10 +50,10 @@ p.roffit {
 <p class="level0"><span Class="bold">#include &lt;curl/easy.h&gt;</span> 
 <p class="level0"><span Class="bold">CURLcode curl_easy_recv( CURL * curl , void * buffer ,</span> <span Class="bold">size_t  buflen , size_t * n );</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0"><span Class="bold">#include &lt;curl/easy.h&gt;</span> 
 <p class="level0"><span Class="bold">CURLcode curl_easy_recv( CURL * curl , void * buffer ,</span> <span Class="bold">size_t  buflen , size_t * n );</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">This function receives raw data from the established connection. You may use it together with <a class="emphasis" href="./curl_easy_send.html">curl_easy_send(3)</a> to implement custom protocols using libcurl. This functionality can be particularly useful if you use proxies and/or SSL encryption: libcurl will take care of proxy negotiation and connection set-up. 
+<p class="level0">This function receives raw data from the established connection. You may use it together with <a Class="emphasis" href="./curl_easy_send.html">curl_easy_send</a> to implement custom protocols using libcurl. This functionality can be particularly useful if you use proxies and/or SSL encryption: libcurl will take care of proxy negotiation and connection set-up. 
 <p class="level0"><span Class="bold">buffer</span> is a pointer to your buffer that will get the received data. <span Class="bold">buflen</span> is the maximum amount of data you can get in that buffer. The variable <span Class="bold">n</span> points to will receive the number of received bytes. 
 <p class="level0"><span Class="bold">buffer</span> is a pointer to your buffer that will get the received data. <span Class="bold">buflen</span> is the maximum amount of data you can get in that buffer. The variable <span Class="bold">n</span> points to will receive the number of received bytes. 
-<p class="level0">To establish the connection, set <span Class="bold">CURLOPT_CONNECT_ONLY</span> option before calling <a class="emphasis" href="./curl_easy_perform.html">curl_easy_perform(3)</a>. Note that <a class="emphasis" href="./curl_easy_recv.html">curl_easy_recv(3)</a> does not work on connections that were created without this option. 
-<p class="level0">You must ensure that the socket has data to read before calling <a class="emphasis" href="./curl_easy_recv.html">curl_easy_recv(3)</a>, otherwise the call will return <span Class="bold">CURLE_AGAIN</span> - the socket is used in non-blocking mode internally. Use <a class="emphasis" href="./curl_easy_getinfo.html">curl_easy_getinfo(3)</a> with <span Class="bold">CURLINFO_LASTSOCKET</span> to obtain the socket; use your operating system facilities like <span Class="emphasis">select(2)</span> to check if it has any data you can read. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">To establish the connection, set <span Class="bold">CURLOPT_CONNECT_ONLY(3)</span> option before calling <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a>. Note that <a Class="emphasis" href="./curl_easy_recv.html">curl_easy_recv</a> does not work on connections that were created without this option. 
+<p class="level0">You must ensure that the socket has data to read before calling <a Class="emphasis" href="./curl_easy_recv.html">curl_easy_recv</a>, otherwise the call will return <span Class="bold">CURLE_AGAIN</span> - the socket is used in non-blocking mode internally. Use <a Class="emphasis" href="./curl_easy_getinfo.html">curl_easy_getinfo</a> with <span Class="bold">CURLINFO_LASTSOCKET</span> to obtain the socket; use your operating system facilities like <span Class="emphasis">select(2)</span> to check if it has any data you can read. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Added in 7.18.2. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">On success, returns <span Class="bold">CURLE_OK</span>, stores the received data into <span Class="bold">buffer</span>, and the number of bytes it actually read into <span Class="bold">*n</span>. 
 <p class="level0">On failure, returns the appropriate error code. 
 <p class="level0">Added in 7.18.2. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">On success, returns <span Class="bold">CURLE_OK</span>, stores the received data into <span Class="bold">buffer</span>, and the number of bytes it actually read into <span Class="bold">*n</span>. 
 <p class="level0">On failure, returns the appropriate error code. 
@@ -61,6 +61,6 @@ p.roffit {
 <p class="level0">Reading exactly 0 bytes would indicate a closed connection. 
 <p class="level0">If there's no socket available to use from the previous transfer, this function returns CURLE_UNSUPPORTED_PROTOCOL. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
 <p class="level0">See <span Class="bold">sendrecv.c</span> in <span Class="bold">docs/examples</span> directory for usage example. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0">Reading exactly 0 bytes would indicate a closed connection. 
 <p class="level0">If there's no socket available to use from the previous transfer, this function returns CURLE_UNSUPPORTED_PROTOCOL. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
 <p class="level0">See <span Class="bold">sendrecv.c</span> in <span Class="bold">docs/examples</span> directory for usage example. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_easy_setopt.html">curl_easy_setopt (3)</a> <a class="manpage" href="./curl_easy_perform.html">  curl_easy_perform (3)</a> <span Class="manpage"> </span> <a class="manpage" href="./curl_easy_getinfo.html">curl_easy_getinfo (3)</a> <span Class="manpage"> </span> <a class="manpage" href="./curl_easy_send.html">curl_easy_send (3) </a> <p class="roffit">
+<p class="level0"><a Class="manpage" href="./curl_easy_setopt.html">curl_easy_setopt</a>, <a Class="manpage" href="./curl_easy_perform.html">curl_easy_perform</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_easy_getinfo.html">curl_easy_getinfo</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_easy_send.html">curl_easy_send</a>, <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 521cd2a..afdd743 100644 (file)
Binary files a/docs/libcurl/curl_easy_recv.pdf and b/docs/libcurl/curl_easy_recv.pdf differ
index 592d3ed..cb69bdd 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -39,5 +39,6 @@ This function was added in libcurl 7.12.1
 .SH RETURN VALUE
 Nothing
 .SH "SEE ALSO"
 .SH RETURN VALUE
 Nothing
 .SH "SEE ALSO"
-.BR curl_easy_init "(3)," curl_easy_cleanup "(3)," curl_easy_setopt "(3)
+.BR curl_easy_init "(3)," curl_easy_cleanup "(3)," curl_easy_setopt "(3),"
+.BR curl_easy_duphandle "(3)"
 
 
index a7dc70c..6a290fb 100644 (file)
@@ -50,11 +50,11 @@ p.roffit {
 <p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
 <p class="level0"><span Class="bold">void curl_easy_reset(CURL *handle );</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
 <p class="level0"><span Class="bold">void curl_easy_reset(CURL *handle );</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">Re-initializes all options previously set on a specified CURL handle to the default values. This puts back the handle to the same state as it was in when it was just created with <a class="emphasis" href="./curl_easy_init.html">curl_easy_init(3)</a>. 
+<p class="level0">Re-initializes all options previously set on a specified CURL handle to the default values. This puts back the handle to the same state as it was in when it was just created with <a Class="emphasis" href="./curl_easy_init.html">curl_easy_init</a>. 
 <p class="level0">It does not change the following information kept in the handle: live connections, the Session ID cache, the DNS cache, the cookies and shares. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">This function was added in libcurl 7.12.1 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">Nothing <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0">It does not change the following information kept in the handle: live connections, the Session ID cache, the DNS cache, the cookies and shares. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">This function was added in libcurl 7.12.1 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">Nothing <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_easy_init.html">curl_easy_init (3)</a> <a class="manpage" href="./curl_easy_cleanup.html"> curl_easy_cleanup (3)</a> <a class="manpage" href="./curl_easy_setopt.html"> curl_easy_setopt (3)</a> 
+<p class="level0"><a Class="manpage" href="./curl_easy_init.html">curl_easy_init</a>, <a Class="manpage" href="./curl_easy_cleanup.html">curl_easy_cleanup</a>, <a Class="manpage" href="./curl_easy_setopt.html">curl_easy_setopt</a>, <a Class="manpage" href="./curl_easy_duphandle.html">curl_easy_duphandle</a>, 
 <p class="level0"><p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
 <p class="level0"><p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index ba8e171..58ce522 100644 (file)
Binary files a/docs/libcurl/curl_easy_reset.pdf and b/docs/libcurl/curl_easy_reset.pdf differ
index 777735f..28e8866 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -39,7 +39,7 @@ connection set-up.
 \fBbuffer\fP is a pointer to the data of length \fBbuflen\fP that you want sent.
 The variable \fBn\fP points to will receive the number of sent bytes.
 
 \fBbuffer\fP is a pointer to the data of length \fBbuflen\fP that you want sent.
 The variable \fBn\fP points to will receive the number of sent bytes.
 
-To establish the connection, set \fBCURLOPT_CONNECT_ONLY\fP option before
+To establish the connection, set \fBCURLOPT_CONNECT_ONLY(3)\fP option before
 calling \fIcurl_easy_perform(3)\fP. Note that \fIcurl_easy_send(3)\fP will not
 work on connections that were created without this option.
 
 calling \fIcurl_easy_perform(3)\fP. Note that \fIcurl_easy_send(3)\fP will not
 work on connections that were created without this option.
 
index 4a85a27..4d52db5 100644 (file)
@@ -50,15 +50,15 @@ p.roffit {
 <p class="level0"><span Class="bold">#include &lt;curl/easy.h&gt;</span> 
 <p class="level0"><span Class="bold">CURLcode curl_easy_send( CURL * curl , const void * buffer ,</span> <span Class="bold"> size_t  buflen , size_t * n );</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0"><span Class="bold">#include &lt;curl/easy.h&gt;</span> 
 <p class="level0"><span Class="bold">CURLcode curl_easy_send( CURL * curl , const void * buffer ,</span> <span Class="bold"> size_t  buflen , size_t * n );</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">This function sends arbitrary data over the established connection. You may use it together with <a class="emphasis" href="./curl_easy_recv.html">curl_easy_recv(3)</a> to implement custom protocols using libcurl. This functionality can be particularly useful if you use proxies and/or SSL encryption: libcurl will take care of proxy negotiation and connection set-up. 
+<p class="level0">This function sends arbitrary data over the established connection. You may use it together with <a Class="emphasis" href="./curl_easy_recv.html">curl_easy_recv</a> to implement custom protocols using libcurl. This functionality can be particularly useful if you use proxies and/or SSL encryption: libcurl will take care of proxy negotiation and connection set-up. 
 <p class="level0"><span Class="bold">buffer</span> is a pointer to the data of length <span Class="bold">buflen</span> that you want sent. The variable <span Class="bold">n</span> points to will receive the number of sent bytes. 
 <p class="level0"><span Class="bold">buffer</span> is a pointer to the data of length <span Class="bold">buflen</span> that you want sent. The variable <span Class="bold">n</span> points to will receive the number of sent bytes. 
-<p class="level0">To establish the connection, set <span Class="bold">CURLOPT_CONNECT_ONLY</span> option before calling <a class="emphasis" href="./curl_easy_perform.html">curl_easy_perform(3)</a>. Note that <a class="emphasis" href="./curl_easy_send.html">curl_easy_send(3)</a> will not work on connections that were created without this option. 
-<p class="level0">You must ensure that the socket is writable before calling <a class="emphasis" href="./curl_easy_send.html">curl_easy_send(3)</a>, otherwise the call will return <span Class="bold">CURLE_AGAIN</span> - the socket is used in non-blocking mode internally. Use <a class="emphasis" href="./curl_easy_getinfo.html">curl_easy_getinfo(3)</a> with <span Class="bold">CURLINFO_LASTSOCKET</span> to obtain the socket; use your operating system facilities like <span Class="emphasis">select(2)</span> to check if it can be written to. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">To establish the connection, set <span Class="bold">CURLOPT_CONNECT_ONLY(3)</span> option before calling <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a>. Note that <a Class="emphasis" href="./curl_easy_send.html">curl_easy_send</a> will not work on connections that were created without this option. 
+<p class="level0">You must ensure that the socket is writable before calling <a Class="emphasis" href="./curl_easy_send.html">curl_easy_send</a>, otherwise the call will return <span Class="bold">CURLE_AGAIN</span> - the socket is used in non-blocking mode internally. Use <a Class="emphasis" href="./curl_easy_getinfo.html">curl_easy_getinfo</a> with <span Class="bold">CURLINFO_LASTSOCKET</span> to obtain the socket; use your operating system facilities like <span Class="emphasis">select(2)</span> to check if it can be written to. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">Added in 7.18.2. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">On success, returns <span Class="bold">CURLE_OK</span> and stores the number of bytes actually sent into <span Class="bold">*n</span>. Note that this may very well be less than the amount you wanted to send. 
 <p class="level0">On failure, returns the appropriate error code. 
 <p class="level0">If there's no socket available to use from the previous transfer, this function returns CURLE_UNSUPPORTED_PROTOCOL. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
 <p class="level0">See <span Class="bold">sendrecv.c</span> in <span Class="bold">docs/examples</span> directory for usage example. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0">Added in 7.18.2. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">On success, returns <span Class="bold">CURLE_OK</span> and stores the number of bytes actually sent into <span Class="bold">*n</span>. Note that this may very well be less than the amount you wanted to send. 
 <p class="level0">On failure, returns the appropriate error code. 
 <p class="level0">If there's no socket available to use from the previous transfer, this function returns CURLE_UNSUPPORTED_PROTOCOL. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
 <p class="level0">See <span Class="bold">sendrecv.c</span> in <span Class="bold">docs/examples</span> directory for usage example. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_easy_setopt.html">curl_easy_setopt (3)</a> <a class="manpage" href="./curl_easy_perform.html">  curl_easy_perform (3)</a> <a class="manpage" href="./curl_easy_getinfo.html">  curl_easy_getinfo (3)</a> <span Class="manpage"> </span> <a class="manpage" href="./curl_easy_recv.html">curl_easy_recv (3) </a> <p class="roffit">
+<p class="level0"><a Class="manpage" href="./curl_easy_setopt.html">curl_easy_setopt</a>, <a Class="manpage" href="./curl_easy_perform.html">curl_easy_perform</a>, <a Class="manpage" href="./curl_easy_getinfo.html">curl_easy_getinfo</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_easy_recv.html">curl_easy_recv</a>, <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index bb73bfc..32e30a1 100644 (file)
Binary files a/docs/libcurl/curl_easy_send.pdf and b/docs/libcurl/curl_easy_send.pdf differ
index bebf8c0..ecfa38f 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
 .\" *
 .\" **************************************************************************
 .\"
-.TH curl_easy_setopt 3 "1 Jan 2010" "libcurl 7.20.0" "libcurl Manual"
+.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
 .SH NAME
 curl_easy_setopt \- set options for a curl easy handle
 .SH SYNOPSIS
@@ -28,14 +28,14 @@ curl_easy_setopt \- set options for a curl easy handle
 
 CURLcode curl_easy_setopt(CURL *handle, CURLoption option, parameter);
 .SH DESCRIPTION
 
 CURLcode curl_easy_setopt(CURL *handle, CURLoption option, parameter);
 .SH DESCRIPTION
-curl_easy_setopt() is used to tell libcurl how to behave. By using the
-appropriate options to \fIcurl_easy_setopt\fP, you can change libcurl's
-behavior.  All options are set with the \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 curl_easy_setopt() calls in the setup phase.
+\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
 
 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
@@ -45,8 +45,10 @@ 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
 
 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 curl_easy_setopt() returns. Exceptions to this rule are described in
-the option details below.
+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.
 
 Before version 7.17.0, strings were not copied. Instead the user was forced
 keep them available until libcurl no longer needed them.
 
 Before version 7.17.0, strings were not copied. Instead the user was forced
 keep them available until libcurl no longer needed them.
@@ -55,2619 +57,460 @@ 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
 \fIcurl_easy_duphandle(3)\fP call.
 .SH BEHAVIOR OPTIONS
 .IP CURLOPT_VERBOSE
-Set the parameter to 1 to get the library to display a lot of verbose
-information about its operations. Very useful for libcurl and/or protocol
-debugging and understanding. The verbose information will be sent to stderr,
-or the stream set with \fICURLOPT_STDERR\fP. The default value for this
-parameter is 0.
-
-You hardly ever want this set in production use, you will almost always want
-this when you debug/report problems. Another neat option for debugging is the
-\fICURLOPT_DEBUGFUNCTION\fP.
+Display verbose information. See \fICURLOPT_VERBOSE(3)\fP
 .IP CURLOPT_HEADER
 .IP CURLOPT_HEADER
-A parameter set to 1 tells the library to include the header in the body
-output. This is only relevant for protocols that actually have headers
-preceding the data (like HTTP). The default value for this parameter is 0.
+Include the header in the body output. See \fICURLOPT_HEADER(3)\fP
 .IP CURLOPT_NOPROGRESS
 .IP CURLOPT_NOPROGRESS
-Pass a long. If set to 1, it tells the library to shut off the progress meter
-completely. It will also prevent the \fICURLOPT_PROGRESSFUNCTION\fP from
-getting called. The default value for this parameter is 1.
-
-Future versions of libcurl are likely to not have any built-in progress meter
-at all.
+Shut off the progress meter. See \fICURLOPT_NOPROGRESS(3)\fP
 .IP CURLOPT_NOSIGNAL
 .IP CURLOPT_NOSIGNAL
-Pass a long. If it is 1, libcurl will not use any functions that
-install signal handlers or any functions that cause signals to be sent to the
-process. This option is mainly here to allow multi-threaded unix applications
-to still set/use all timeout options etc, without risking getting signals.
-The default value for this parameter is 0.
-(Added in 7.10)
-
-If this option is set and libcurl has been built with the standard name
-resolver, timeouts will not occur while the name resolve takes place.
-Consider building libcurl with c-ares support to enable asynchronous DNS
-lookups, which enables nice timeouts for name resolves without signals.
-
-Setting \fICURLOPT_NOSIGNAL\fP to 1 makes libcurl NOT ask the system to ignore
-SIGPIPE signals, which otherwise are sent by the system when trying to send
-data to a socket which is closed in the other end. libcurl makes an effort to
-never cause such SIGPIPEs to trigger, but some operating systems have no way
-to avoid them and even on those that have there are some corner cases when
-they may still happen, contrary to our desire. In addition, using
-\fICURLAUTH_NTLM_WB\fP authentication could cause a SIGCHLD signal to be
-raised.
+Do not install signal handlers. See \fICURLOPT_NOSIGNAL(3)\fP
 .IP CURLOPT_WILDCARDMATCH
 .IP CURLOPT_WILDCARDMATCH
-Set this option to 1 if you want to transfer multiple files according to a
-file name pattern. The pattern can be specified as part of the
-\fICURLOPT_URL\fP option, using an fnmatch-like pattern (Shell Pattern
-Matching) in the last part of URL (file name).
-
-By default, libcurl uses its internal wildcard matching implementation. You
-can provide your own matching function by the \fICURLOPT_FNMATCH_FUNCTION\fP
-option.
-
-This feature is only supported by the FTP download for now.
-
-A brief introduction of its syntax follows:
-.RS
-.IP "* - ASTERISK"
-\&ftp://example.com/some/path/\fB*.txt\fP (for all txt's from the root
-directory)
-.RE
-.RS
-.IP "? - QUESTION MARK"
-Question mark matches any (exactly one) character.
-
-\&ftp://example.com/some/path/\fBphoto?.jpeg\fP
-.RE
-.RS
-.IP "[ - BRACKET EXPRESSION"
-The left bracket opens a bracket expression. The question mark and asterisk have
-no special meaning in a bracket expression. Each bracket expression ends by the
-right bracket and matches exactly one character. Some examples follow:
-
-\fB[a-zA-Z0\-9]\fP or \fB[f\-gF\-G]\fP \- character interval
-
-\fB[abc]\fP - character enumeration
-
-\fB[^abc]\fP or \fB[!abc]\fP - negation
-
-\fB[[:\fP\fIname\fP\fB:]]\fP class expression. Supported classes are
-\fBalnum\fP,\fBlower\fP, \fBspace\fP, \fBalpha\fP, \fBdigit\fP, \fBprint\fP,
-\fBupper\fP, \fBblank\fP, \fBgraph\fP, \fBxdigit\fP.
-
-\fB[][-!^]\fP - special case \- matches only '\-', ']', '[', '!' or '^'. These
-characters have no special purpose.
-
-\fB[\\[\\]\\\\]\fP - escape syntax. Matches '[', ']' or '\\'.
-
-Using the rules above, a file name pattern can be constructed:
-
-\&ftp://example.com/some/path/\fB[a-z[:upper:]\\\\].jpeg\fP
-.RE
-.PP
-(This was added in 7.21.0)
+Transfer multiple files according to a file name pattern. See \fICURLOPT_WILDCARDMATCH(3)\fP
 .SH CALLBACK OPTIONS
 .IP CURLOPT_WRITEFUNCTION
 .SH CALLBACK OPTIONS
 .IP CURLOPT_WRITEFUNCTION
-Pass a pointer to a function that matches the following prototype:
-\fBsize_t function( char *ptr, size_t size, size_t nmemb, void *userdata);\fP
-This function gets called by libcurl as soon as there is data received that
-needs to be saved. The size of the data pointed to by \fIptr\fP is \fIsize\fP
-multiplied with \fInmemb\fP, it will not be zero terminated. Return the number
-of bytes actually taken care of. If that amount differs from the amount passed
-to your function, it'll signal an error to the library. This will abort the
-transfer and return \fICURLE_WRITE_ERROR\fP.
-
-From 7.18.0, the function can return CURL_WRITEFUNC_PAUSE which then will
-cause writing to this connection to become paused. See
-\fIcurl_easy_pause(3)\fP for further details.
-
-This function may be called with zero bytes data if the transferred file is
-empty.
-
-Set this option to NULL to get the internal default function. The internal
-default function will write the data to the FILE * given with
-\fICURLOPT_WRITEDATA\fP.
-
-Set the \fIuserdata\fP argument with the \fICURLOPT_WRITEDATA\fP option.
-
-The callback function will be passed as much data as possible in all invokes,
-but you cannot possibly make any assumptions. It may be one byte, it may be
-thousands. The maximum amount of body data that can be passed to the write
-callback is defined in the curl.h header file: CURL_MAX_WRITE_SIZE (the usual
-default is 16K). If you however have \fICURLOPT_HEADER\fP set, which sends
-header data to the write callback, you can get up to
-\fICURL_MAX_HTTP_HEADER\fP bytes of header data passed into it. This usually
-means 100K.
+Callback for writing data. See \fICURLOPT_WRITEFUNCTION(3)\fP
 .IP CURLOPT_WRITEDATA
 .IP CURLOPT_WRITEDATA
-Data pointer to pass to the file write function. If you use the
-\fICURLOPT_WRITEFUNCTION\fP option, this is the pointer you'll get as
-input. If you don't use a callback, you must pass a 'FILE *' (cast
-to 'void *') as libcurl will pass this to fwrite() when writing data.
-By default, the value of this parameter is unspecified.
-
-The internal \fICURLOPT_WRITEFUNCTION\fP will write the data to the FILE *
-given with this option, or to stdout if this option hasn't been set.
-
-If you're using libcurl as a win32 DLL, you \fBMUST\fP use the
-\fICURLOPT_WRITEFUNCTION\fP if you set this option or you will experience
-crashes.
-
-This option is also known with the older name \fICURLOPT_FILE\fP, the name
-\fICURLOPT_WRITEDATA\fP was introduced in 7.9.7.
+Data pointer to pass to the write callback. See \fICURLOPT_WRITEDATA(3)\fP
 .IP CURLOPT_READFUNCTION
 .IP CURLOPT_READFUNCTION
-Pass a pointer to a function that matches the following prototype:
-\fBsize_t function( void *ptr, size_t size, size_t nmemb, void *userdata);\fP
-This function gets called by libcurl as soon as it needs to read data in order
-to send it to the peer. The data area pointed at by the pointer \fIptr\fP may
-be filled with at most \fIsize\fP multiplied with \fInmemb\fP number of
-bytes. Your function must return the actual number of bytes that you stored in
-that memory area. Returning 0 will signal end-of-file to the library and cause
-it to stop the current transfer.
-
-If you stop the current transfer by returning 0 "pre-maturely" (i.e before the
-server expected it, like when you've said you will upload N bytes and you
-upload less than N bytes), you may experience that the server "hangs" waiting
-for the rest of the data that won't come.
-
-The read callback may return \fICURL_READFUNC_ABORT\fP to stop the current
-operation immediately, resulting in a \fICURLE_ABORTED_BY_CALLBACK\fP error
-code from the transfer (Added in 7.12.1)
-
-From 7.18.0, the function can return CURL_READFUNC_PAUSE which then will cause
-reading from this connection to become paused. See \fIcurl_easy_pause(3)\fP
-for further details.
-
-\fBBugs\fP: when doing TFTP uploads, you must return the exact amount of data
-that the callback wants, or it will be considered the final packet by the
-server end and the transfer will end there.
-
-If you set this callback pointer to NULL, or don't set it at all, the default
-internal read function will be used. It is doing an fread() on the FILE *
-userdata set with \fICURLOPT_READDATA\fP.
+Callback for reading data. See \fICURLOPT_READFUNCTION(3)\fP
 .IP CURLOPT_READDATA
 .IP CURLOPT_READDATA
-Data pointer to pass to the file read function. If you use the
-\fICURLOPT_READFUNCTION\fP option, this is the pointer you'll get as input. If
-you don't specify a read callback but instead rely on the default internal
-read function, this data must be a valid readable FILE * (cast to 'void *').
-
-If you're using libcurl as a win32 DLL, you MUST use a
-\fICURLOPT_READFUNCTION\fP if you set this option.
-
-This option was also known by the older name \fICURLOPT_INFILE\fP, the name
-\fICURLOPT_READDATA\fP was introduced in 7.9.7.
+Data pointer to pass to the read callback. See \fICURLOPT_READDATA(3)\fP
 .IP CURLOPT_IOCTLFUNCTION
 .IP CURLOPT_IOCTLFUNCTION
-Pass a pointer to a function that matches the following prototype:
-\fBcurlioerr function(CURL *handle, int cmd, void *clientp);\fP. This function
-gets called by libcurl when something special I/O-related needs to be done
-that the library can't do by itself. For now, rewinding the read data stream
-is the only action it can request. The rewinding of the read data stream may
-be necessary when doing a HTTP PUT or POST with a multi-pass authentication
-method. By default, this parameter is set to NULL.  (Option added in 7.12.3).
-
-Use \fICURLOPT_SEEKFUNCTION\fP instead to provide seeking! If
-\fICURLOPT_SEEKFUNCTION\fP is set, this parameter will be ignored when seeking.
+Callback for I/O operations. See \fICURLOPT_IOCTLFUNCTION(3)\fP
 .IP CURLOPT_IOCTLDATA
 .IP CURLOPT_IOCTLDATA
-Pass a pointer that will be untouched by libcurl and passed as the 3rd
-argument in the ioctl callback set with \fICURLOPT_IOCTLFUNCTION\fP.
-By default, the value of this parameter is unspecified.  (Option added in
-7.12.3)
+Data pointer to pass to the I/O callback. See \fICURLOPT_IOCTLDATA(3)\fP
 .IP CURLOPT_SEEKFUNCTION
 .IP CURLOPT_SEEKFUNCTION
-Pass a pointer to a function that matches the following prototype: \fBint
-function(void *instream, curl_off_t offset, int origin);\fP This function gets
-called by libcurl to seek to a certain position in the input stream and can be
-used to fast forward a file in a resumed upload (instead of reading all
-uploaded bytes with the normal read function/callback). It is also called to
-rewind a stream when doing a HTTP PUT or POST with a multi-pass authentication
-method. The function shall work like "fseek" or "lseek" and accepted SEEK_SET,
-SEEK_CUR and SEEK_END as argument for origin, although (in 7.18.0) libcurl
-only passes SEEK_SET. The callback must return 0 (CURL_SEEKFUNC_OK) on
-success, 1 (CURL_SEEKFUNC_FAIL) to cause the upload operation to fail or 2
-(CURL_SEEKFUNC_CANTSEEK) to indicate that while the seek failed, libcurl is
-free to work around the problem if possible. The latter can sometimes be done
-by instead reading from the input or similar.
-
-By default, this parameter is unset.
-
-If you forward the input arguments directly to "fseek" or "lseek", note that
-the data type for \fIoffset\fP is not the same as defined for curl_off_t on
-many systems! (Option added in 7.18.0)
+Callback for seek operations. See \fICURLOPT_SEEKFUNCTION(3)\fP
 .IP CURLOPT_SEEKDATA
 .IP CURLOPT_SEEKDATA
-Data pointer to pass to the file seek function. If you use the
-\fICURLOPT_SEEKFUNCTION\fP option, this is the pointer you'll get as input. If
-you don't specify a seek callback, NULL is passed. (Option added in 7.18.0)
+Data pointer to pass to the seek callback. See \fICURLOPT_SEEKDATA(3)\fP
 .IP CURLOPT_SOCKOPTFUNCTION
 .IP CURLOPT_SOCKOPTFUNCTION
-Pass a pointer to a function that matches the following prototype: \fBint
-function(void *clientp, curl_socket_t curlfd, curlsocktype purpose);\fP. By
-default, this parameter is unset. If set, this
-function gets called by libcurl after the socket() call but before the
-connect() call. The callback's \fIpurpose\fP argument identifies the exact
-purpose for this particular socket:
-
-\fICURLSOCKTYPE_IPCXN\fP for actively created connections or since 7.28.0
-\fICURLSOCKTYPE_ACCEPT\fP for FTP when the connection was setup with PORT/EPSV
-(in earlier versions these sockets weren't passed to this callback).
-
-Future versions of libcurl may support more purposes. It passes the newly
-created socket descriptor so additional setsockopt() calls can be done at the
-user's discretion.  Return 0 (zero) from the callback on success. Return 1
-from the callback function to signal an unrecoverable error to the library and
-it will close the socket and return \fICURLE_COULDNT_CONNECT\fP.  (Option
-added in 7.16.0)
-
-Added in 7.21.5, the callback function may return
-\fICURL_SOCKOPT_ALREADY_CONNECTED\fP, which tells libcurl that the socket is
-in fact already connected and then libcurl will not attempt to connect it.
+Callback for sockopt operations. See \fICURLOPT_SOCKOPTFUNCTION(3)\fP
 .IP CURLOPT_SOCKOPTDATA
 .IP CURLOPT_SOCKOPTDATA
-Pass a pointer that will be untouched by libcurl and passed as the first
-argument in the sockopt callback set with \fICURLOPT_SOCKOPTFUNCTION\fP.
-The default value of this parameter is unspecified.
-(Option added in 7.16.0)
+Data pointer to pass to the sockopt callback. See \fICURLOPT_SOCKOPTDATA(3)\fP
 .IP CURLOPT_OPENSOCKETFUNCTION
 .IP CURLOPT_OPENSOCKETFUNCTION
-Pass a pointer to a function that matches the following prototype:
-\fBcurl_socket_t function(void *clientp, curlsocktype purpose, struct
-curl_sockaddr *address);\fP. This function gets called by libcurl instead of
-the \fIsocket(2)\fP call. The callback's \fIpurpose\fP argument identifies the
-exact purpose for this particular socket: \fICURLSOCKTYPE_IPCXN\fP is for IP
-based connections. Future versions of libcurl may support more purposes. It
-passes the resolved peer address as a \fIaddress\fP argument so the callback
-can modify the address or refuse to connect at all. The callback function
-should return the socket or \fICURL_SOCKET_BAD\fP in case no connection could
-be established or another error was detected. Any additional
-\fIsetsockopt(2)\fP calls can be done on the socket at the user's discretion.
-\fICURL_SOCKET_BAD\fP return value from the callback function will signal an
-unrecoverable error to the library and it will return
-\fICURLE_COULDNT_CONNECT\fP.  This return code can be used for IP address
-blacklisting.  The default behavior is:
-.nf
-   return socket(addr->family, addr->socktype, addr->protocol);
-.fi
-(Option added in 7.17.1.)
+Callback for socket creation. See \fICURLOPT_OPENSOCKETFUNCTION(3)\fP
 .IP CURLOPT_OPENSOCKETDATA
 .IP CURLOPT_OPENSOCKETDATA
-Pass a pointer that will be untouched by libcurl and passed as the first
-argument in the opensocket callback set with \fICURLOPT_OPENSOCKETFUNCTION\fP.
-The default value of this parameter is unspecified.
-(Option added in 7.17.1.)
+Data pointer to pass to the open socket callback. See \fICURLOPT_OPENSOCKETDATA(3)\fP
 .IP CURLOPT_CLOSESOCKETFUNCTION
 .IP CURLOPT_CLOSESOCKETFUNCTION
-Pass a pointer to a function that matches the following prototype: \fBint
-function(void *clientp, curl_socket_t item);\fP. This function gets called by
-libcurl instead of the \fIclose(3)\fP or \fIclosesocket(3)\fP call when
-sockets are closed (not for any other file descriptors). This is pretty much
-the reverse to the \fICURLOPT_OPENSOCKETFUNCTION\fP option. Return 0 to signal
-success and 1 if there was an error.  (Option added in 7.21.7)
+Callback for closing socket. See \fICURLOPT_CLOSESOCKETFUNCTION(3)\fP
 .IP CURLOPT_CLOSESOCKETDATA
 .IP CURLOPT_CLOSESOCKETDATA
-Pass a pointer that will be untouched by libcurl and passed as the first
-argument in the closesocket callback set with
-\fICURLOPT_CLOSESOCKETFUNCTION\fP.
-The default value of this parameter is unspecified.
-(Option added in 7.21.7)
+Data pointer to pass to the close socket callback. See \fICURLOPT_CLOSESOCKETDATA(3)\fP
 .IP CURLOPT_PROGRESSFUNCTION
 .IP CURLOPT_PROGRESSFUNCTION
-Pass a pointer to a function that matches the following prototype:
-
-\fBint function(void *clientp, double dltotal, double dlnow, double ultotal,
-double ulnow);\fP
-
-This function gets called by libcurl instead of its internal equivalent with a
-frequent interval. While data is being transferred it will be called very
-frequently, and during slow periods like when nothing is being transferred it
-can slow down to about one call per second.
-
-\fIclientp\fP is the pointer set with \fICURLOPT_PROGRESSDATA\fP, it is not
-actually used by libcurl but is only passed along from the application to the
-callback.
-
-The callback gets told how much data libcurl will transfer and has
-transferred, in number of bytes. \fIdltotal\fP is the total number of bytes
-libcurl expects to download in this transfer. \fIdlnow\fP is the number of
-bytes downloaded so far. \fIultotal\fP is the total number of bytes libcurl
-expects to upload in this transfer. \fIulnow\fP is the number of bytes
-uploaded so far.
-
-Unknown/unused argument values passed to the callback will be set to zero
-(like if you only download data, the upload size will remain 0). Many times
-the callback will be called one or more times first, before it knows the data
-sizes so a program must be made to handle that.
-
-Returning a non-zero value from this callback will cause libcurl to abort the
-transfer and return \fICURLE_ABORTED_BY_CALLBACK\fP.
-
-If you transfer data with the multi interface, this function will not be
-called during periods of idleness unless you call the appropriate libcurl
-function that performs transfers.
-
-\fICURLOPT_NOPROGRESS\fP must be set to 0 to make this function actually
-get called.
-.IP CURLOPT_XFERINFOFUNCTION
-Pass a pointer to a function that matches the following prototype:
-
-.nf
-\fBint function(void *clientp, curl_off_t dltotal, curl_off_t dlnow,
-                curl_off_t ultotal, curl_off_t ulnow);\fP
-.fi
-
-This function gets called by libcurl instead of its internal equivalent with a
-frequent interval. While data is being transferred it will be called very
-frequently, and during slow periods like when nothing is being transferred it
-can slow down to about one call per second.
-
-\fIclientp\fP is the pointer set with \fICURLOPT_XFERINFODATA\fP, it is only
-passed along from the application to the callback.
-
-The callback gets told how much data libcurl will transfer and has
-transferred, in number of bytes. \fIdltotal\fP is the total number of bytes
-libcurl expects to download in this transfer. \fIdlnow\fP is the number of
-bytes downloaded so far. \fIultotal\fP is the total number of bytes libcurl
-expects to upload in this transfer. \fIulnow\fP is the number of bytes
-uploaded so far.
-
-Unknown/unused argument values passed to the callback will be set to zero
-(like if you only download data, the upload size will remain 0). Many times
-the callback will be called one or more times first, before it knows the data
-sizes so a program must be made to handle that.
-
-Returning a non-zero value from this callback will cause libcurl to abort the
-transfer and return \fICURLE_ABORTED_BY_CALLBACK\fP.
-
-If you transfer data with the multi interface, this function will not be
-called during periods of idleness unless you call the appropriate libcurl
-function that performs transfers.
-
-\fICURLOPT_NOPROGRESS\fP must be set to 0 to make this function actually
-get called.
-
-(Added in 7.32.0)
+OBSOLETE callback for progress meter. See \fICURLOPT_PROGRESSFUNCTION(3)\fP
 .IP CURLOPT_PROGRESSDATA
 .IP CURLOPT_PROGRESSDATA
-Pass a pointer that will be untouched by libcurl and passed as the first
-argument in the progress callback set with \fICURLOPT_PROGRESSFUNCTION\fP.
-The default value of this parameter is unspecified.
+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
 .IP CURLOPT_XFERINFODATA
-Pass a pointer that will be untouched by libcurl and passed as the first
-argument in the progress callback set with \fICURLOPT_XFERINFOFUNCTION\fP.
-The default value of this parameter is unspecified. This option is an alias
-for CURLOPT_PROGRESSDATA. (Added in 7.32.0)
+Data pointer to pass to the progress meter callback. See \fICURLOPT_XFERINFODATA(3)\fP
 .IP CURLOPT_HEADERFUNCTION
 .IP CURLOPT_HEADERFUNCTION
-Pass a pointer to a function that matches the following prototype:
-\fBsize_t function( void *ptr, size_t size, size_t nmemb, void
-*userdata);\fP. 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 \fIptr\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_WRITEHEADER\fP option. The callback function must return the number
-of bytes actually taken care of. If that amount differs from the amount passed
-to your function, it'll signal an error to the library. This will abort the
-transfer and return \fICURL_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\fP (\fICURLOPT_WRITEHEADER\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\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.
-.IP CURLOPT_WRITEHEADER
-(This option is also known as \fBCURLOPT_HEADERDATA\fP) Pass a pointer to be
-used to write the header part of the received data to. If you don't use
-\fICURLOPT_WRITEFUNCTION\fP or \fICURLOPT_HEADERFUNCTION\fP to take care of
-the writing, this must be a valid FILE * as the internal default will then be
-a plain fwrite(). See also the \fICURLOPT_HEADERFUNCTION\fP option above on
-how to set a custom get-all-headers callback.
+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
 .IP CURLOPT_DEBUGFUNCTION
-Pass a pointer to a function that matches the following prototype: \fBint
-curl_debug_callback (CURL *, curl_infotype, char *, size_t, void *);\fP
-\fICURLOPT_DEBUGFUNCTION\fP replaces the standard debug function used when
-\fICURLOPT_VERBOSE \fP is in effect. This callback receives debug information,
-as specified with the \fBcurl_infotype\fP argument. This function must return
-0.  The data pointed to by the char * passed to this function WILL NOT be zero
-terminated, but will be exactly of the size as told by the size_t argument.
-
-Available curl_infotype values:
-.RS
-.IP CURLINFO_TEXT
-The data is informational text.
-.IP CURLINFO_HEADER_IN
-The data is header (or header-like) data received from the peer.
-.IP CURLINFO_HEADER_OUT
-The data is header (or header-like) data sent to the peer.
-.IP CURLINFO_DATA_IN
-The data is protocol data received from the peer.
-.IP CURLINFO_DATA_OUT
-The data is protocol data sent to the peer.
-.RE
+Callback for debug information. See \fICURLOPT_DEBUGFUNCTION(3)\fP
 .IP CURLOPT_DEBUGDATA
 .IP CURLOPT_DEBUGDATA
-Pass a pointer to whatever you want passed in to your
-\fICURLOPT_DEBUGFUNCTION\fP in the last void * argument. This pointer is not
-used by libcurl, it is only passed to the callback.
+Data pointer to pass to the debug callback. See \fICURLOPT_DEBUGDATA(3)\fP
 .IP CURLOPT_SSL_CTX_FUNCTION
 .IP CURLOPT_SSL_CTX_FUNCTION
-This option does only function for libcurl powered by OpenSSL. If libcurl was
-built against another SSL library, this functionality is absent.
-
-Pass a pointer to a function that matches the following prototype:
-\fBCURLcode sslctxfun(CURL *curl, void *sslctx, void *parm);\fP This function
-gets called by libcurl just before the initialization of a SSL connection
-after having processed all other SSL related options to give a last chance to
-an application to modify the behaviour of openssl's ssl initialization. The
-\fIsslctx\fP parameter is actually a pointer to an openssl \fISSL_CTX\fP. If
-an error is returned no attempt to establish a connection is made and the
-perform operation will return the error code from this callback function.  Set
-the \fIparm\fP argument with the \fICURLOPT_SSL_CTX_DATA\fP option. This
-option was introduced in 7.11.0.
-
-This function will get called on all new connections made to a server, during
-the SSL negotiation. The SSL_CTX pointer will be a new one every time.
-
-To use this properly, a non-trivial amount of knowledge of the openssl
-libraries is necessary. For example, using this function allows you to use
-openssl callbacks to add additional validation code for certificates, and even
-to change the actual URI of a HTTPS request (example used in the lib509 test
-case).  See also the example section for a replacement of the key, certificate
-and trust file settings.
+Callback for SSL context logic. See \fICURLOPT_SSL_CTX_FUNCTION(3)\fP
 .IP CURLOPT_SSL_CTX_DATA
 .IP CURLOPT_SSL_CTX_DATA
-Data pointer to pass to the ssl context callback set by the option
-\fICURLOPT_SSL_CTX_FUNCTION\fP, this is the pointer you'll get as third
-parameter, otherwise \fBNULL\fP. (Added in 7.11.0)
+Data pointer to pass to the SSL context callback. See \fICURLOPT_SSL_CTX_DATA(3)\fP
 .IP CURLOPT_CONV_TO_NETWORK_FUNCTION
 .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
 .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
 .IP CURLOPT_CONV_FROM_UTF8_FUNCTION
-Pass a pointer to a function that matches the following prototype:
-\fBCURLcode function(char *ptr, size_t length);\fP
-
-These three options apply to non-ASCII platforms only.  They are available
-only if \fBCURL_DOES_CONVERSIONS\fP was defined when libcurl was built. When
-this is the case, \fIcurl_version_info(3)\fP will return the CURL_VERSION_CONV
-feature bit set.
-
-The data to be converted is in a buffer pointed to by the ptr parameter.  The
-amount of data to convert is indicated by the length parameter.  The converted
-data overlays the input data in the buffer pointed to by the ptr parameter.
-CURLE_OK should be returned upon successful conversion.  A CURLcode return
-value defined by curl.h, such as CURLE_CONV_FAILED, should be returned if an
-error was encountered.
-
-\fBCURLOPT_CONV_TO_NETWORK_FUNCTION\fP and
-\fBCURLOPT_CONV_FROM_NETWORK_FUNCTION\fP convert between the host encoding and
-the network encoding.  They are used when commands or ASCII data are
-sent/received over the network.
-
-\fBCURLOPT_CONV_FROM_UTF8_FUNCTION\fP is called to convert from UTF8 into the
-host encoding.  It is required only for SSL processing.
-
-If you set a callback pointer to NULL, or don't set it at all, the built-in
-libcurl iconv functions will be used.  If HAVE_ICONV was not defined when
-libcurl was built, and no callback has been established, conversion will
-return the CURLE_CONV_REQD error code.
-
-If HAVE_ICONV is defined, CURL_ICONV_CODESET_OF_HOST must also be defined.
-For example:
-
- \&#define CURL_ICONV_CODESET_OF_HOST "IBM-1047"
-
-The iconv code in libcurl will default the network and UTF8 codeset names as
-follows:
-
- \&#define CURL_ICONV_CODESET_OF_NETWORK "ISO8859-1"
-
- \&#define CURL_ICONV_CODESET_FOR_UTF8   "UTF-8"
-
-You will need to override these definitions if they are different on your
-system.
+Callback for code base conversion. See \fICURLOPT_CONV_FROM_UTF8_FUNCTION(3)\fP
 .IP CURLOPT_INTERLEAVEFUNCTION
 .IP CURLOPT_INTERLEAVEFUNCTION
-Pass a pointer to a function that matches the following prototype:
-\fBsize_t function( void *ptr, size_t size, size_t nmemb, void
-*userdata)\fP. This function gets called by libcurl as soon as it has received
-interleaved RTP data. This function gets called for each $ block and therefore
-contains exactly one upper-layer protocol unit (e.g.  one RTP packet). Curl
-writes the interleaved header as well as the included data for each call. The
-first byte is always an ASCII dollar sign. The dollar sign is followed by a
-one byte channel identifier and then a 2 byte integer length in network byte
-order. See \fIRFC2326 Section 10.12\fP for more information on how RTP
-interleaving behaves. If unset or set to NULL, curl will use the default write
-function.
-
-Interleaved RTP poses some challenges for the client application. Since the
-stream data is sharing the RTSP control connection, it is critical to service
-the RTP in a timely fashion. If the RTP data is not handled quickly,
-subsequent response processing may become unreasonably delayed and the
-connection may close. The application may use \fICURL_RTSPREQ_RECEIVE\fP to
-service RTP data when no requests are desired. If the application makes a
-request, (e.g.  \fICURL_RTSPREQ_PAUSE\fP) then the response handler will
-process any pending RTP data before marking the request as finished.  (Added
-in 7.20.0)
+Callback for RTSP interleaved data. See \fICURLOPT_INTERLEAVEFUNCTION(3)\fP
 .IP CURLOPT_INTERLEAVEDATA
 .IP CURLOPT_INTERLEAVEDATA
-This is the userdata pointer that will be passed to
-\fICURLOPT_INTERLEAVEFUNCTION\fP when interleaved RTP data is received. (Added
-in 7.20.0)
+Data pointer to pass to the RTSP interleave callback. See \fICURLOPT_INTERLEAVEDATA(3)\fP
 .IP CURLOPT_CHUNK_BGN_FUNCTION
 .IP CURLOPT_CHUNK_BGN_FUNCTION
-Pass a pointer to a function that matches the following prototype:
-\fBlong function (const void *transfer_info, void *ptr, int remains)\fP. This
-function gets called by libcurl before a part of the stream is going to be
-transferred (if the transfer supports chunks).
-
-This callback makes sense only when using the \fICURLOPT_WILDCARDMATCH\fP
-option for now.
-
-The target of transfer_info parameter is a "feature depended" structure. For
-the FTP wildcard download, the target is curl_fileinfo structure (see
-\fIcurl/curl.h\fP).  The parameter ptr is a pointer given by
-\fICURLOPT_CHUNK_DATA\fP. The parameter remains contains number of chunks
-remaining per the transfer. If the feature is not available, the parameter has
-zero value.
-
-Return \fICURL_CHUNK_BGN_FUNC_OK\fP if everything is fine,
-\fICURL_CHUNK_BGN_FUNC_SKIP\fP if you want to skip the concrete chunk or
-\fICURL_CHUNK_BGN_FUNC_FAIL\fP to tell libcurl to stop if some error occurred.
-(This was added in 7.21.0)
+Callback for wildcard download start of chunk. See \fICURLOPT_CHUNK_BGN_FUNCTION(3)\fP
 .IP CURLOPT_CHUNK_END_FUNCTION
 .IP CURLOPT_CHUNK_END_FUNCTION
-Pass a pointer to a function that matches the following prototype:
-\fBlong function(void *ptr)\fP. This function gets called by libcurl as soon
-as a part of the stream has been transferred (or skipped).
-
-Return \fICURL_CHUNK_END_FUNC_OK\fP if everything is fine or
-\fBCURL_CHUNK_END_FUNC_FAIL\fP to tell the lib to stop if some error occurred.
-(This was added in 7.21.0)
+Callback for wildcard download end of chunk. See \fICURLOPT_CHUNK_END_FUNCTION(3)\fP
 .IP CURLOPT_CHUNK_DATA
 .IP CURLOPT_CHUNK_DATA
-Pass a pointer that will be untouched by libcurl and passed as the ptr
-argument to the \fICURL_CHUNK_BGN_FUNTION\fP and \fICURL_CHUNK_END_FUNTION\fP.
-(This was added in 7.21.0)
+Data pointer to pass to the chunk callbacks. See \fICURLOPT_CHUNK_DATA(3)\fP
 .IP CURLOPT_FNMATCH_FUNCTION
 .IP CURLOPT_FNMATCH_FUNCTION
-Pass a pointer to a function that matches the following prototype: \fBint
-function(void *ptr, const char *pattern, const char *string)\fP prototype (see
-\fIcurl/curl.h\fP). It is used internally for the wildcard matching feature.
-
-Return \fICURL_FNMATCHFUNC_MATCH\fP if pattern matches the string,
-\fICURL_FNMATCHFUNC_NOMATCH\fP if not or \fICURL_FNMATCHFUNC_FAIL\fP if an
-error occurred.  (This was added in 7.21.0)
+Callback for wildcard matching. See \fICURLOPT_FNMATCH_FUNCTION(3)\fP
 .IP CURLOPT_FNMATCH_DATA
 .IP CURLOPT_FNMATCH_DATA
-Pass a pointer that will be untouched by libcurl and passed as the ptr argument
-to the \fICURL_FNMATCH_FUNCTION\fP. (This was added in 7.21.0)
+Data pointer to pass to the wildcard matching callback. See \fICURLOPT_FNMATCH_DATA(3)\fP
 .SH ERROR OPTIONS
 .IP CURLOPT_ERRORBUFFER
 .SH ERROR OPTIONS
 .IP CURLOPT_ERRORBUFFER
-Pass a char * to a buffer that the libcurl may store human readable error
-messages in. This may be more helpful than just the return code from
-\fIcurl_easy_perform\fP. The buffer must be at least CURL_ERROR_SIZE big.
-Although this argument is a 'char *', it does not describe an input string.
-Therefore the (probably undefined) contents of the buffer is NOT copied by the
-library. You must keep the associated storage available until libcurl no
-longer needs it. Failing to do so will cause very odd behavior or even
-crashes. libcurl will need it until you call \fIcurl_easy_cleanup(3)\fP or you
-set the same option again to use a different pointer.
-
-Use \fICURLOPT_VERBOSE\fP and \fICURLOPT_DEBUGFUNCTION\fP to better
-debug/trace why errors happen.
-
-If the library does not return an error, the buffer may not have been
-touched. Do not rely on the contents in those cases.
-
+Error message buffer. See \fICURLOPT_ERRORBUFFER(3)\fP
 .IP CURLOPT_STDERR
 .IP CURLOPT_STDERR
-Pass a FILE * as parameter. Tell libcurl to use this stream instead of stderr
-when showing the progress meter and displaying \fICURLOPT_VERBOSE\fP data.
+stderr replacement stream. See \fICURLOPT_STDERR(3)\fP
 .IP CURLOPT_FAILONERROR
 .IP CURLOPT_FAILONERROR
-A parameter set to 1 tells the library to fail silently if the HTTP code
-returned is equal to or larger than 400. The default action would be to return
-the page normally, ignoring that code.
-
-This method is not fail-safe and there are occasions where non-successful
-response codes will slip through, especially when authentication is involved
-(response codes 401 and 407).
-
-You might get some amounts of headers transferred before this situation is
-detected, like when a "100-continue" is received as a response to a
-POST/PUT and a 401 or 407 is received immediately afterwards.
+Fail on HTTP 4xx errors. \fICURLOPT_FAILONERROR(3)\fP
 .SH NETWORK OPTIONS
 .IP CURLOPT_URL
 .SH NETWORK OPTIONS
 .IP CURLOPT_URL
-Pass in a pointer to the actual URL to deal with. The parameter should be a
-char * to a zero terminated string which must be URL-encoded in the following
-format:
-
-scheme://host:port/path
-
-For a greater explanation of the format please see RFC3986.
-
-If the given URL lacks the scheme (such as "http://" or "ftp://" etc) then
-libcurl will attempt to resolve the protocol based on one of the following
-given host names:
-
-HTTP, FTP, DICT, LDAP, IMAP, POP3 or SMTP
-
-(POP3 and SMTP added in 7.31.0)
-
-Should the protocol, either that specified by the scheme or deduced by libcurl
-from the host name, not be supported by libcurl then
-(\fICURLE_UNSUPPORTED_PROTOCOL\fP) will be returned from either the
-\fIcurl_easy_perform(3)\fP or \fIcurl_multi_perform(3)\fP functions when you
-call them. Use \fIcurl_version_info(3)\fP for detailed information of which
-protocols are supported by the build of libcurl you are using.
-
-The host part of the URL contains the address of the server that you want to
-connect to. This can be the fully qualified domain name of the server, the
-local network name of the machine on your network or the IP address of the
-server or machine represented by either an IPv4 or IPv6 address. For example:
-
-http://www.example.com/
-
-http://hostname/
-
-http://192.168.0.1/
-
-http://[2001:1890:1112:1::20]/
-
-It is also possible to specify the user name, password and any supported login
-options as part of the host, for the following protocols, when connecting to
-servers that require authentication:
-
-http://user:password@www.example.com
-
-ftp://user:password@ftp.example.com
-
-imap://user:password;options@mail.example.com
-
-pop3://user:password;options@mail.example.com
-
-smtp://user:password;options@mail.example.com
-
-At present only IMAP, POP3 and SMTP support login options as part of the host.
-For more information about the login options in URL syntax please see RFC2384,
-RFC5092 and IETF draft draft-earhart-url-smtp-00.txt (Added in 7.31.0).
-
-The port is optional and when not specified libcurl will use the default port
-based on the determined or specified protocol: 80 for HTTP, 21 for FTP and 25
-for SMTP, etc. The following examples show how to specify the port:
-
-http://www.example.com:8080/ - This will connect to a web server using port
-8080 rather than 80.
-
-smtp://mail.example.com:587/ - This will connect to a SMTP server on the
-alternative mail port.
-
-The path part of the URL is protocol specific and whilst some examples are
-given below this list is not conclusive:
-
-.B HTTP
-
-The path part of a HTTP request specifies the file to retrieve and from what
-directory. If the directory is not specified then the web server's root
-directory is used. If the file is omitted then the default document will be
-retrieved for either the directory specified or the root directory. The
-exact resource returned for each URL is entirely dependent on the server's
-configuration.
-
-http://www.example.com - This gets the main page from the web server.
-
-http://www.example.com/index.html - This returns the main page by explicitly
-requesting it.
-
-http://www.example.com/contactus/ - This returns the default document from
-the contactus directory.
-
-.B FTP
-
-The path part of an FTP request specifies the file to retrieve and from what
-directory. If the file part is omitted then libcurl downloads the directory
-listing for the directory specified. If the directory is omitted then
-the directory listing for the root / home directory will be returned.
-
-ftp://ftp.example.com - This retrieves the directory listing for the root
-directory.
-
-ftp://ftp.example.com/readme.txt - This downloads the file readme.txt from the
-root directory.
-
-ftp://ftp.example.com/libcurl/readme.txt - This downloads readme.txt from the
-libcurl directory.
-
-ftp://user:password@ftp.example.com/readme.txt - This retrieves the readme.txt
-file from the user's home directory. When a username and password is
-specified, everything that is specified in the path part is relative to the
-user's home directory. To retrieve files from the root directory or a
-directory underneath the root directory then the absolute path must be
-specified by prepending an additional forward slash to the beginning of the
-path.
-
-ftp://user:password@ftp.example.com//readme.txt - This retrieves the readme.txt
-from the root directory when logging in as a specified user.
-
-.B SMTP
-
-The path part of a SMTP request specifies the host name to present during
-communication with the mail server. If the path is omitted then libcurl will
-attempt to resolve the local computer's host name. However, this may not
-return the fully qualified domain name that is required by some mail servers
-and specifying this path allows you to set an alternative name, such as
-your machine's fully qualified domain name, which you might have obtained
-from an external function such as gethostname or getaddrinfo.
-
-smtp://mail.example.com - This connects to the mail server at example.com and
-sends your local computer's host name in the HELO / EHLO command.
-
-smtp://mail.example.com/client.example.com - This will send client.example.com in
-the HELO / EHLO command to the mail server at example.com.
-
-.B POP3
-
-The path part of a POP3 request specifies the message ID to retrieve. If the
-ID is not specified then a list of waiting messages is returned instead.
-
-pop3://user:password@mail.example.com - This lists the available messages for
-the user
-
-pop3://user:password@mail.example.com/1 - This retrieves the first message for
-the user
-
-.B IMAP
-
-The path part of an IMAP request not only specifies the mailbox to list (Added
-in 7.30.0) or select, but can also be used to check the UIDVALIDITY of the
-mailbox and to specify the UID and SECTION of the message to fetch (Added in
-7.30.0).
-
-imap://user:password@mail.example.com - Performs a top level folder list
-
-imap://user:password@mail.example.com/INBOX - Performs a folder list on the
-user's inbox
-
-imap://user:password@mail.example.com/INBOX/;UID=1 - Selects the user's inbox
-and fetches message 1
-
-imap://user:password@mail.example.com/INBOX;UIDVALIDITY=50/;UID=2 - Selects
-the user's inbox, checks the UIDVALIDITY of the mailbox is 50 and fetches
-message 2 if it is
-
-imap://user:password@mail.example.com/INBOX/;UID=3/;SECTION=TEXT - Selects the
-user's inbox and fetches message 3 with only the text portion of the message
-
-For more information about the individual components of an IMAP URL please
-see RFC5092.
-
-.B SCP
-
-The path part of a SCP request specifies the file to retrieve and from what
-directory. The file part may not be omitted. The file is taken as an absolute
-path from the root directory on the server. To specify a path relative to
-the user's home directory on the server, prepend ~/ to the path portion.
-If the user name is not embedded in the URL, it can be set with the
-\fICURLOPT_USERPWD\fP or \fBCURLOPT_USERNAME\fP option.
-
-scp://user@example.com/etc/issue - This specifies the file /etc/issue
-
-scp://example.com/~/my-file - This specifies the file my-file in the
-user's home directory on the server
-
-.B SFTP
-
-The path part of a SFTP request specifies the file to retrieve and from what
-directory. If the file part is omitted then libcurl downloads the directory
-listing for the directory specified.  If the path ends in a / then a directory
-listing is returned instead of a file.  If the path is omitted entirely then
-the directory listing for the root / home directory will be returned.
-If the user name is not embedded in the URL, it can be set with the
-\fICURLOPT_USERPWD\fP or \fBCURLOPT_USERNAME\fP option.
-
-sftp://user:password@example.com/etc/issue - This specifies the file
-/etc/issue
-
-sftp://user@example.com/~/my-file - This specifies the file my-file in the
-user's home directory
-
-sftp://ssh.example.com/~/Documents/ - This requests a directory listing
-of the Documents directory under the user's home directory
-
-.B LDAP
-
-The path part of a LDAP request can be used to specify the: Distinguished
-Name, Attributes, Scope, Filter and Extension for a LDAP search. Each field
-is separated by a question mark and when that field is not required an empty
-string with the question mark separator should be included.
-
-ldap://ldap.example.com/o=My%20Organisation - This will perform a LDAP search
-with the DN as My Organisation.
-
-ldap://ldap.example.com/o=My%20Organisation?postalAddress - This will perform
-the same search but will only return postalAddress attributes.
-
-ldap://ldap.example.com/?rootDomainNamingContext - This specifies an empty DN
-and requests information about the rootDomainNamingContext attribute for an
-Active Directory server.
-
-For more information about the individual components of a LDAP URL please
-see RFC4516.
-
-.B NOTES
-
-Starting with version 7.20.0, the fragment part of the URI will not be sent as
-part of the path, which was previously the case.
-
-\fICURLOPT_URL\fP is the only option that \fBmust\fP be set before
-\fIcurl_easy_perform(3)\fP is called.
-
-\fICURLOPT_PROTOCOLS\fP can be used to limit what protocols libcurl will use
-for this transfer, independent of what libcurl has been compiled to
-support. That may be useful if you accept the URL from an external source and
-want to limit the accessibility.
+URL to work on. See \fICURLOPT_URL(3)\fP
 .IP CURLOPT_PROTOCOLS
 .IP CURLOPT_PROTOCOLS
-Pass a long that holds a bitmask of CURLPROTO_* defines. If used, this bitmask
-limits what protocols libcurl may use in the transfer. This allows you to have
-a libcurl built to support a wide range of protocols but still limit specific
-transfers to only be allowed to use a subset of them. By default libcurl will
-accept all protocols it supports. See also
-\fICURLOPT_REDIR_PROTOCOLS\fP. (Added in 7.19.4)
+Allowed protocols. See \fICURLOPT_PROTOCOLS(3)\fP
 .IP CURLOPT_REDIR_PROTOCOLS
 .IP CURLOPT_REDIR_PROTOCOLS
-Pass a long that holds a bitmask of CURLPROTO_* defines. If used, this bitmask
-limits what protocols libcurl may use in a transfer that it follows to in a
-redirect when \fICURLOPT_FOLLOWLOCATION\fP is enabled. This allows you to
-limit specific transfers to only be allowed to use a subset of protocols in
-redirections. By default libcurl will allow all protocols except for FILE and
-SCP. This is a difference compared to pre-7.19.4 versions which
-unconditionally would follow to all protocols supported. (Added in 7.19.4)
+Protocols to allow redirects to. See \fICURLOPT_REDIR_PROTOCOLS(3)\fP
 .IP CURLOPT_PROXY
 .IP CURLOPT_PROXY
-Set HTTP proxy to use. The parameter should be a char * to a zero terminated
-string holding the host name or dotted IP address. To specify port number in
-this string, append :[port] to the end of the host name. The proxy string may
-be prefixed with [protocol]:// since any such prefix will be ignored. The
-proxy's port number may optionally be specified with the separate option. If
-not specified, libcurl will default to using port 1080 for proxies.
-\fICURLOPT_PROXYPORT\fP.
-
-When you tell the library to use a HTTP proxy, libcurl will transparently
-convert operations to HTTP even if you specify an FTP URL etc. This may have
-an impact on what other features of the library you can use, such as
-\fICURLOPT_QUOTE\fP and similar FTP specifics that don't work unless you
-tunnel through the HTTP proxy. Such tunneling is activated with
-\fICURLOPT_HTTPPROXYTUNNEL\fP.
-
-libcurl respects the environment variables \fBhttp_proxy\fP, \fBftp_proxy\fP,
-\fBall_proxy\fP etc, if any of those are set. The \fICURLOPT_PROXY\fP option
-does however override any possibly set environment variables.
-
-Setting the proxy string to "" (an empty string) will explicitly disable the
-use of a proxy, even if there is an environment variable set for it.
-
-Since 7.14.1, the proxy host string given in environment variables can be
-specified the exact same way as the proxy can be set with \fICURLOPT_PROXY\fP,
-include protocol prefix (http://) and embedded user + password.
-
-Since 7.21.7, the proxy string may be specified with a protocol:// prefix to
-specify alternative proxy protocols. Use socks4://, socks4a://, socks5:// or
-socks5h:// (the last one to enable socks5 and asking the proxy to do the
-resolving, also known as CURLPROXY_SOCKS5_HOSTNAME type) to request the
-specific SOCKS version to be used. No protocol specified, http:// and all
-others will be treated as HTTP proxies.
+Proxy to use. See \fICURLOPT_PROXY(3)\fP
 .IP CURLOPT_PROXYPORT
 .IP CURLOPT_PROXYPORT
-Pass a long with this option to set the proxy port to connect to unless it is
-specified in the proxy string \fICURLOPT_PROXY\fP.
+Proxy port to use. See \fICURLOPT_PROXYPORT(3)\fP
 .IP CURLOPT_PROXYTYPE
 .IP CURLOPT_PROXYTYPE
-Pass a long with this option to set type of the proxy. Available options for
-this are \fICURLPROXY_HTTP\fP, \fICURLPROXY_HTTP_1_0\fP (added in 7.19.4),
-\fICURLPROXY_SOCKS4\fP (added in 7.10), \fICURLPROXY_SOCKS5\fP,
-\fICURLPROXY_SOCKS4A\fP (added in 7.18.0) and \fICURLPROXY_SOCKS5_HOSTNAME\fP
-(added in 7.18.0). The HTTP type is default. (Added in 7.10)
-
-If you set \fBCURLOPT_PROXYTYPE\fP to \fICURLPROXY_HTTP_1_0\fP, it will only
-affect how libcurl speaks to a proxy when CONNECT is used. The HTTP version
-used for "regular" HTTP requests is instead controlled with
-\fICURLOPT_HTTP_VERSION\fP.
+Proxy type. See \fICURLOPT_PROXYTYPE(3)\fP
 .IP CURLOPT_NOPROXY
 .IP CURLOPT_NOPROXY
-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.  (Added in
-7.19.4)
+Filter out hosts from proxy use. \fICURLOPT_NOPROXY(3)\fP
 .IP CURLOPT_HTTPPROXYTUNNEL
 .IP CURLOPT_HTTPPROXYTUNNEL
-Set the parameter to 1 to make the library tunnel all operations through a
-given HTTP proxy. There is a big difference between using a proxy and to
-tunnel through it. If you don't know what this means, you probably don't want
-this tunneling option.
+Tunnel through the HTTP proxy. \fICURLOPT_HTTPPROXYTUNNEL(3)\fP
 .IP CURLOPT_SOCKS5_GSSAPI_SERVICE
 .IP CURLOPT_SOCKS5_GSSAPI_SERVICE
-Pass a char * as parameter to a string holding the name of the service. The
-default service name for a SOCKS5 server is rcmd/server-fqdn. This option
-allows you to change it. (Added in 7.19.4)
+Socks5 GSSAPI service name. \fICURLOPT_SOCKS5_GSSAPI_SERVICE(3)\fP
 .IP CURLOPT_SOCKS5_GSSAPI_NEC
 .IP CURLOPT_SOCKS5_GSSAPI_NEC
-Pass a long set to 1 to enable or 0 to disable. As part of the gssapi
-negotiation a protection mode is negotiated. The RFC1961 says in section
-4.3/4.4 it should be protected, but the NEC reference implementation does not.
-If enabled, this option allows the unprotected exchange of the protection mode
-negotiation. (Added in 7.19.4).
+Socks5 GSSAPI NEC mode. See \fICURLOPT_SOCKS5_GSSAPI_NEC(3)\fP
 .IP CURLOPT_INTERFACE
 .IP CURLOPT_INTERFACE
-Pass a char * as parameter. This sets the interface name to use as outgoing
-network interface. The name can be an interface name, an IP address, or a host
-name.
-
-Starting with 7.24.0: If the parameter starts with "if!" then it is treated as
-only as interface name and no attempt will ever be named to do treat it as an
-IP address or to do name resolution on it.  If the parameter starts with
-\&"host!" it is treated as either an IP address or a hostname.  Hostnames are
-resolved synchronously.  Using the if! format is highly recommended when using
-the multi interfaces to avoid allowing the code to block.  If "if!" is
-specified but the parameter does not match an existing interface,
-CURLE_INTERFACE_FAILED is returned.
+Bind connection locally to this. See \fICURLOPT_INTERFACE(3)\fP
 .IP CURLOPT_LOCALPORT
 .IP CURLOPT_LOCALPORT
-Pass a long. This sets the local port number of the socket used for
-connection. This can be used in combination with \fICURLOPT_INTERFACE\fP and
-you are recommended to use \fICURLOPT_LOCALPORTRANGE\fP as well when this is
-set. Valid port numbers are 1 - 65535. (Added in 7.15.2)
+Bind connection locally to this port. See \fICURLOPT_LOCALPORT(3)\fP
 .IP CURLOPT_LOCALPORTRANGE
 .IP CURLOPT_LOCALPORTRANGE
-Pass a long. This is the number of attempts libcurl will make to find a
-working local port number. It starts with the given \fICURLOPT_LOCALPORT\fP
-and adds one to the number for each retry. Setting this to 1 or below will
-make libcurl do only one try for the exact port number. Port numbers by nature
-are scarce resources that will be busy at times so setting this value to
-something too low might cause unnecessary connection setup failures. (Added in
-7.15.2)
+Bind connection locally to port range. See \fICURLOPT_LOCALPORTRANGE(3)\fP
 .IP CURLOPT_DNS_CACHE_TIMEOUT
 .IP CURLOPT_DNS_CACHE_TIMEOUT
-Pass a long, this sets the timeout in seconds. Name resolves will be kept in
-memory for this number of seconds. Set to zero to completely disable
-caching, or set to -1 to make the cached entries remain forever. By default,
-libcurl caches this info for 60 seconds.
-
-The name resolve functions of various libc implementations don't re-read name
-server information unless explicitly told so (for example, by calling
-\fIres_init(3)\fP). This may cause libcurl to keep using the older server even
-if DHCP has updated the server info, and this may look like a DNS cache issue
-to the casual libcurl-app user.
+Timeout for DNS cache. See \fICURLOPT_DNS_CACHE_TIMEOUT(3)\fP
 .IP CURLOPT_DNS_USE_GLOBAL_CACHE
 .IP CURLOPT_DNS_USE_GLOBAL_CACHE
-Pass a long. If the value is 1, it tells curl to use a global DNS cache
-that will survive between easy handle creations and deletions. This is not
-thread-safe and this will use a global variable.
-
-\fBWARNING:\fP this option is considered obsolete. Stop using it. Switch over
-to using the share interface instead! See \fICURLOPT_SHARE\fP and
-\fIcurl_share_init(3)\fP.
+OBSOLETE Enable global DNS cache. See \fICURLOPT_DNS_USE_GLOBAL_CACHE(3)\fP
 .IP CURLOPT_BUFFERSIZE
 .IP CURLOPT_BUFFERSIZE
-Pass a long specifying your preferred size (in bytes) for the receive buffer
-in libcurl.  The main point of this would be that the write callback gets
-called more often and with smaller chunks. This is just treated as a request,
-not an order. You cannot be guaranteed to actually get the given size. (Added
-in 7.10)
-
-This size is by default set as big as possible (CURL_MAX_WRITE_SIZE), so it
-only makes sense to use this option if you want it smaller.
+Ask for smaller buffer size. See \fICURLOPT_BUFFERSIZE(3)\fP
 .IP CURLOPT_PORT
 .IP CURLOPT_PORT
-Pass a long specifying what remote port number to connect to, instead of the
-one specified in the URL or the default port for the used protocol.
+Port number to connect to. See \fICURLOPT_PORT(3)\fP
 .IP CURLOPT_TCP_NODELAY
 .IP CURLOPT_TCP_NODELAY
-Pass a long specifying whether the TCP_NODELAY option is to be set or cleared
-(1 = set, 0 = clear). The option is cleared by default. This will have no
-effect after the connection has been established.
-
-Setting this option will disable TCP's Nagle algorithm. The purpose of this
-algorithm is to try to minimize the number of small packets on the network
-(where "small packets" means TCP segments less than the Maximum Segment Size
-(MSS) for the network).
-
-Maximizing the amount of data sent per TCP segment is good because it
-amortizes the overhead of the send. However, in some cases (most notably
-telnet or rlogin) small segments may need to be sent without delay. This is
-less efficient than sending larger amounts of data at a time, and can
-contribute to congestion on the network if overdone.
+Disable the Nagle algorithm. See \fICURLOPT_TCP_NODELAY(3)\fP
 .IP CURLOPT_ADDRESS_SCOPE
 .IP CURLOPT_ADDRESS_SCOPE
-Pass a long specifying the scope_id value to use when connecting to IPv6
-link-local or site-local addresses. (Added in 7.19.0)
+IPv6 scope for local addresses. See \fICURLOPT_ADDRESS_SCOPE(3)\fP
 .IP CURLOPT_TCP_KEEPALIVE
 .IP CURLOPT_TCP_KEEPALIVE
-Pass a long. If set to 1, TCP keepalive probes will be sent. The delay and
-frequency of these probes can be controlled by the \fICURLOPT_TCP_KEEPIDLE\fP
-and \fICURLOPT_TCP_KEEPINTVL\fP options, provided the operating system supports
-them. Set to 0 (default behavior) to disable keepalive probes (Added in
-7.25.0).
+Enable TCP keep-alive. See \fICURLOPT_TCP_KEEPALIVE(3)\fP
 .IP CURLOPT_TCP_KEEPIDLE
 .IP CURLOPT_TCP_KEEPIDLE
-Pass a long. Sets the delay, in seconds, that the operating system will wait
-while the connection is idle before sending keepalive probes. Not all operating
-systems support this option. (Added in 7.25.0)
+Idle time before sending keep-alive. See \fICURLOPT_TCP_KEEPIDLE(3)\fP
 .IP CURLOPT_TCP_KEEPINTVL
 .IP CURLOPT_TCP_KEEPINTVL
-Pass a long. Sets the interval, in seconds, that the operating system will wait
-between sending keepalive probes. Not all operating systems support this
-option. (Added in 7.25.0)
+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
 .SH NAMES and PASSWORDS OPTIONS (Authentication)
 .IP CURLOPT_NETRC
 .SH NAMES and PASSWORDS OPTIONS (Authentication)
 .IP CURLOPT_NETRC
-This parameter controls the preference of libcurl between using user names and
-passwords from your \fI~/.netrc\fP file, relative to user names and passwords
-in the URL supplied with \fICURLOPT_URL\fP.
-
-libcurl uses a user name (and supplied or prompted password) supplied with
-\fICURLOPT_USERPWD\fP in preference to any of the options controlled by this
-parameter.
-
-Pass a long, set to one of the values described below.
-.RS
-.IP CURL_NETRC_OPTIONAL
-The use of your \fI~/.netrc\fP file is optional, and information in the URL is
-to be preferred.  The file will be scanned for the host and user name (to
-find the password only) or for the host only, to find the first user name and
-password after that \fImachine\fP, which ever information is not specified in
-the URL.
-
-Undefined values of the option will have this effect.
-.IP CURL_NETRC_IGNORED
-The library will ignore the file and use only the information in the URL.
-
-This is the default.
-.IP CURL_NETRC_REQUIRED
-This value tells the library that use of the file is required, to ignore the
-information in the URL, and to search the file for the host only.
-.RE
-Only machine name, user name and password are taken into account
-(init macros and similar things aren't supported).
-
-libcurl does not verify that the file has the correct properties set (as the
-standard Unix ftp client does). It should only be readable by user.
+Enable .netrc parsing. See \fICURLOPT_NETRC(3)\fP
 .IP CURLOPT_NETRC_FILE
 .IP CURLOPT_NETRC_FILE
-Pass a char * as parameter, pointing to a zero terminated string containing
-the full path name to the file you want libcurl to use as .netrc file. If this
-option is omitted, and \fICURLOPT_NETRC\fP is set, libcurl will attempt to
-find a .netrc file in the current user's home directory. (Added in 7.10.9)
+\&.netrc file name. See \fICURLOPT_NETRC_FILE(3)\fP
 .IP CURLOPT_USERPWD
 .IP CURLOPT_USERPWD
-Pass a char * as parameter, pointing to a zero terminated login details string
-for the connection. The format of which is: [user name]:[password];[options].
-
-When using NTLM, you can set the domain by prepending it to the user name and
-separating the domain and name with a forward (/) or backward slash (\\). Like
-this: "domain/user:password" or "domain\\user:password". Some HTTP servers (on
-Windows) support this style even for Basic authentication.
-
-When using HTTP and \fICURLOPT_FOLLOWLOCATION\fP, libcurl might perform
-several requests to possibly different hosts. libcurl will only send this user
-and password information to hosts using the initial host name (unless
-\fICURLOPT_UNRESTRICTED_AUTH\fP is set), so if libcurl follows locations to
-other hosts it will not send the user and password to those. This is enforced
-to prevent accidental information leakage.
-
-At present only IMAP, POP3 and SMTP support login options as part of the
-details string. For more information about the login options please see
-RFC2384, RFC5092 and IETF draft draft-earhart-url-smtp-00.txt (Added in 7.31.0).
-
-Use \fICURLOPT_HTTPAUTH\fP to specify the authentication method for HTTP based
-connections.
+User name and password. See \fICURLOPT_USERPWD(3)\fP
 .IP CURLOPT_PROXYUSERPWD
 .IP CURLOPT_PROXYUSERPWD
-Pass a char * as parameter, which should be [user name]:[password] to use for
-the connection to the HTTP proxy.
-
-Use \fICURLOPT_PROXYAUTH\fP to specify the authentication method.
+Proxy user name and password. See \fICURLOPT_PROXYUSERPWD(3)\fP
 .IP CURLOPT_USERNAME
 .IP CURLOPT_USERNAME
-Pass a char * as parameter, which should be pointing to the zero terminated
-user name to use for the transfer.
-
-\fBCURLOPT_USERNAME\fP sets the user name to be used in protocol
-authentication. You should not use this option together with the (older)
-CURLOPT_USERPWD option.
-
-In order to specify the password to be used in conjunction with the user name
-use the \fICURLOPT_PASSWORD\fP option.  (Added in 7.19.1)
+User name. See \fICURLOPT_USERNAME(3)\fP
 .IP CURLOPT_PASSWORD
 .IP CURLOPT_PASSWORD
-Pass a char * as parameter, which should be pointing to the zero terminated
-password to use for the transfer.
-
-The CURLOPT_PASSWORD option should be used in conjunction with
-the \fICURLOPT_USERNAME\fP option. (Added in 7.19.1)
+Password. See \fICURLOPT_PASSWORD(3)\fP
+.IP CURLOPT_LOGIN_OPTIONS
+Login options. See \fICURLOPT_LOGIN_OPTIONS(3)\fP
 .IP CURLOPT_PROXYUSERNAME
 .IP CURLOPT_PROXYUSERNAME
-Pass a char * as parameter, which should be pointing to the zero terminated
-user name to use for the transfer while connecting to Proxy.
-
-The CURLOPT_PROXYUSERNAME option should be used in same way as the
-\fICURLOPT_PROXYUSERPWD\fP is used.  In comparison to
-\fICURLOPT_PROXYUSERPWD\fP the CURLOPT_PROXYUSERNAME allows the username to
-contain a colon, like in the following example: "sip:user@example.com". The
-CURLOPT_PROXYUSERNAME option is an alternative way to set the user name while
-connecting to Proxy.  There is no meaning to use it together with the
-\fICURLOPT_PROXYUSERPWD\fP option.
-
-In order to specify the password to be used in conjunction with the user name
-use the \fICURLOPT_PROXYPASSWORD\fP option.  (Added in 7.19.1)
+Proxy user name. See \fICURLOPT_PROXYUSERNAME(3)\fP
 .IP CURLOPT_PROXYPASSWORD
 .IP CURLOPT_PROXYPASSWORD
-Pass a char * as parameter, which should be pointing to the zero terminated
-password to use for the transfer while connecting to Proxy.
-
-The CURLOPT_PROXYPASSWORD option should be used in conjunction with
-the \fICURLOPT_PROXYUSERNAME\fP option. (Added in 7.19.1)
+Proxy password. See \fICURLOPT_PROXYPASSWORD(3)\fP
 .IP CURLOPT_HTTPAUTH
 .IP CURLOPT_HTTPAUTH
-Pass a long as parameter, which is set to a bitmask, to tell libcurl which
-authentication method(s) you want it to use. The available bits are listed
-below. If more than one bit is set, libcurl will first query the site to see
-which authentication methods it supports and then pick the best one you allow
-it to use. For some methods, this will induce an extra network round-trip. Set
-the actual name and password with the \fICURLOPT_USERPWD\fP option or
-with the \fICURLOPT_USERNAME\fP and the \fICURLOPT_PASSWORD\fP options.
-(Added in 7.10.6)
-.RS
-.IP CURLAUTH_BASIC
-HTTP Basic authentication. This is the default choice, and the only method
-that is in wide-spread use and supported virtually everywhere. This sends
-the user name and password over the network in plain text, easily captured by
-others.
-.IP CURLAUTH_DIGEST
-HTTP Digest authentication.  Digest authentication is defined in RFC2617 and
-is a more secure way to do authentication over public networks than the
-regular old-fashioned Basic method.
-.IP CURLAUTH_DIGEST_IE
-HTTP Digest authentication with an IE flavor.  Digest authentication is
-defined in RFC2617 and is a more secure way to do authentication over public
-networks than the regular old-fashioned Basic method. The IE flavor is simply
-that libcurl will use a special "quirk" that IE is known to have used before
-version 7 and that some servers require the client to use. (This define was
-added in 7.19.3)
-.IP CURLAUTH_GSSNEGOTIATE
-HTTP GSS-Negotiate authentication. The GSS-Negotiate (also known as plain
-\&"Negotiate") method was designed by Microsoft and is used in their web
-applications. It is primarily meant as a support for Kerberos5 authentication
-but may also be used along with other authentication methods. For more
-information see IETF draft draft-brezak-spnego-http-04.txt.
-
-You need to build libcurl with a suitable GSS-API library for this to work.
-.IP CURLAUTH_NTLM
-HTTP NTLM authentication. A proprietary protocol invented and used by
-Microsoft. It uses a challenge-response and hash concept similar to Digest, to
-prevent the password from being eavesdropped.
-
-You need to build libcurl with either OpenSSL, GnuTLS or NSS support for this
-option to work, or build libcurl on Windows with SSPI support.
-.IP CURLAUTH_NTLM_WB
-NTLM delegating to winbind helper. Authentication is performed by a separate
-binary application that is executed when needed. The name of the application
-is specified at compile time but is typically /usr/bin/ntlm_auth
-(Added in 7.22.0)
-
-Note that libcurl will fork when necessary to run the winbind application and
-kill it when complete, calling waitpid() to await its exit when done. On POSIX
-operating systems, killing the process will cause a SIGCHLD signal to be
-raised (regardless of whether \fICURLOPT_NOSIGNAL\fP is set), which must be
-handled intelligently by the application. In particular, the application must
-not unconditionally call wait() in its SIGCHLD signal handler to avoid being
-subject to a race condition.  This behavior is subject to change in future
-versions of libcurl.
-.IP CURLAUTH_ANY
-This is a convenience macro that sets all bits and thus makes libcurl pick any
-it finds suitable. libcurl will automatically select the one it finds most
-secure.
-.IP CURLAUTH_ANYSAFE
-This is a convenience macro that sets all bits except Basic and thus makes
-libcurl pick any it finds suitable. libcurl will automatically select the one
-it finds most secure.
-.IP CURLAUTH_ONLY
-This is a meta symbol. Or this value together with a single specific auth
-value to force libcurl to probe for un-restricted auth and if not, only that
-single auth algorithm is acceptable. (Added in 7.21.3)
-.RE
-.IP CURLOPT_TLSAUTH_TYPE
-Pass a long as parameter, which is set to a bitmask, to tell libcurl which
-authentication method(s) you want it to use for TLS authentication.
-.RS
-.IP CURLOPT_TLSAUTH_SRP
-TLS-SRP authentication. Secure Remote Password authentication for TLS is
-defined in RFC5054 and provides mutual authentication if both sides have a
-shared secret. To use TLS-SRP, you must also set the
-\fICURLOPT_TLSAUTH_USERNAME\fP and \fICURLOPT_TLSAUTH_PASSWORD\fP options.
-
-You need to build libcurl with GnuTLS or OpenSSL with TLS-SRP support for this
-to work. (Added in 7.21.4)
-.RE
+HTTP server authentication methods. See \fICURLOPT_HTTPAUTH(3)\fP
 .IP CURLOPT_TLSAUTH_USERNAME
 .IP CURLOPT_TLSAUTH_USERNAME
-Pass a char * as parameter, which should point to the zero terminated username
-to use for the TLS authentication method specified with the
-\fICURLOPT_TLSAUTH_TYPE\fP option. Requires that the
-\fICURLOPT_TLS_PASSWORD\fP option also be set. (Added in 7.21.4)
+TLS authentication user name. See \fICURLOPT_TLSAUTH_USERNAME(3)\fP
 .IP CURLOPT_TLSAUTH_PASSWORD
 .IP CURLOPT_TLSAUTH_PASSWORD
-Pass a char * as parameter, which should point to the zero terminated password
-to use for the TLS authentication method specified with the
-\fICURLOPT_TLSAUTH_TYPE\fP option. Requires that the
-\fICURLOPT_TLS_USERNAME\fP option also be set. (Added in 7.21.4)
+TLS authentication password. See \fICURLOPT_TLSAUTH_PASSWORD(3)\fP
 .IP CURLOPT_PROXYAUTH
 .IP CURLOPT_PROXYAUTH
-Pass a long as parameter, which is set to a bitmask, to tell libcurl which
-authentication method(s) you want it to use for your proxy authentication.  If
-more than one bit is set, libcurl will first query the site to see what
-authentication methods it supports and then pick the best one you allow it to
-use. For some methods, this will induce an extra network round-trip. Set the
-actual name and password with the \fICURLOPT_PROXYUSERPWD\fP option. The
-bitmask can be constructed by or'ing together the bits listed above for the
-\fICURLOPT_HTTPAUTH\fP option. As of this writing, only Basic, Digest and NTLM
-work. (Added in 7.10.7)
+HTTP proxy authentication methods. See \fICURLOPT_PROXYAUTH(3)\fP
 .IP CURLOPT_SASL_IR
 .IP CURLOPT_SASL_IR
-Pass a long. If the value is 1, curl will send the initial response to the
-server in the first authentication packet in order to reduce the number of
-ping pong requests. Only applicable to supporting SASL authentication
-mechanisms and to the IMAP, POP3 and SMTP protocols. (Added in 7.31.0)
-
-Note: Whilst IMAP supports this option there is no need to explicitly set it,
-as libcurl can determine the feature itself when the server supports the
-SASL-IR CAPABILITY.
+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
 .SH HTTP OPTIONS
 .IP CURLOPT_AUTOREFERER
-Pass a parameter set to 1 to enable this. When enabled, libcurl will
-automatically set the Referer: field in requests where it follows a Location:
-redirect.
+Automatically set Referer: header. See \fICURLOPT_AUTOREFERER(3)\fP
 .IP CURLOPT_ACCEPT_ENCODING
 .IP CURLOPT_ACCEPT_ENCODING
-Sets the contents of the Accept-Encoding: header sent in a HTTP request, and
-enables decoding of a response when a Content-Encoding: header is received.
-Three encodings are supported: \fIidentity\fP, which does nothing,
-\fIdeflate\fP which requests the server to compress its response using the
-zlib algorithm, and \fIgzip\fP which requests the gzip algorithm.  If a
-zero-length string is set, then an Accept-Encoding: header containing all
-supported encodings is sent.
-
-This is a request, not an order; the server may or may not do it.  This option
-must be set (to any non-NULL value) or else any unsolicited encoding done by
-the server is ignored. See the special file lib/README.encoding for details.
-
-(This option was called CURLOPT_ENCODING before 7.21.6)
+Accept-Encoding and automatic decompressing data. See \fICURLOPT_ACCEPT_ENCODING(3)\fP
 .IP CURLOPT_TRANSFER_ENCODING
 .IP CURLOPT_TRANSFER_ENCODING
-Adds a request for compressed Transfer Encoding in the outgoing HTTP
-request. If the server supports this and so desires, it can respond with the
-HTTP response sent using a compressed Transfer-Encoding that will be
-automatically uncompressed by libcurl on reception.
-
-Transfer-Encoding differs slightly from the Content-Encoding you ask for with
-\fBCURLOPT_ACCEPT_ENCODING\fP in that a Transfer-Encoding is strictly meant to
-be for the transfer and thus MUST be decoded before the data arrives in the
-client. Traditionally, Transfer-Encoding has been much less used and supported
-by both HTTP clients and HTTP servers.
-
-(Added in 7.21.6)
+Request Transfer-Encoding. See \fICURLOPT_TRANSFER_ENCODING(3)\fP
 .IP CURLOPT_FOLLOWLOCATION
 .IP CURLOPT_FOLLOWLOCATION
-A parameter set to 1 tells the library to follow any Location: header that the
-server sends as part of a HTTP header.
-
-This means that the library will re-send the same request on the new location
-and follow new Location: headers all the way until no more such headers are
-returned. \fICURLOPT_MAXREDIRS\fP can be used to limit the number of redirects
-libcurl will follow.
-
-Since 7.19.4, libcurl can limit what protocols it will automatically
-follow. The accepted protocols are set with \fICURLOPT_REDIR_PROTOCOLS\fP and
-it excludes the FILE protocol by default.
+Follow HTTP redirects. See \fICURLOPT_FOLLOWLOCATION(3)\fP
 .IP CURLOPT_UNRESTRICTED_AUTH
 .IP CURLOPT_UNRESTRICTED_AUTH
-A parameter set to 1 tells the library it can continue to send authentication
-(user+password) when following locations, even when hostname changed. This
-option is meaningful only when setting \fICURLOPT_FOLLOWLOCATION\fP.
+Do not restrict authentication to original host. \fICURLOPT_UNRESTRICTED_AUTH(3)\fP
 .IP CURLOPT_MAXREDIRS
 .IP CURLOPT_MAXREDIRS
-Pass a long. The set number will be the redirection limit. If that many
-redirections have been followed, the next redirect will cause an error
-(\fICURLE_TOO_MANY_REDIRECTS\fP). This option only makes sense if the
-\fICURLOPT_FOLLOWLOCATION\fP is used at the same time. Added in 7.15.1:
-Setting the limit to 0 will make libcurl refuse any redirect. Set it to -1 for
-an infinite number of redirects (which is the default)
+Maximum number of redirects to follow. See \fICURLOPT_MAXREDIRS(3)\fP
 .IP CURLOPT_POSTREDIR
 .IP CURLOPT_POSTREDIR
-Pass a bitmask to control how libcurl acts on redirects after POSTs that get a
-301, 302 or 303 response back.  A parameter with bit 0 set (value
-\fBCURL_REDIR_POST_301\fP) tells the library to respect RFC2616/10.3.2 and not
-convert POST requests into GET requests when following a 301 redirection.
-Setting bit 1 (value \fBCURL_REDIR_POST_302\fP) makes libcurl maintain the
-request method after a 302 redirect whilst setting bit 2 (value
-\fBCURL_REDIR_POST_303\fP) makes libcurl maintain the request method after a
-303 redirect. The value \fBCURL_REDIR_POST_ALL\fP is a convenience define that
-sets all three bits.
-
-The non-RFC behaviour is ubiquitous in web browsers, so the library does the
-conversion by default to maintain consistency. However, a server may require a
-POST to remain a POST after such a redirection. This option is meaningful only
-when setting \fICURLOPT_FOLLOWLOCATION\fP.  (Added in 7.17.1) (This option was
-known as CURLOPT_POST301 up to 7.19.0 as it only supported the 301 then)
+How to act on redirects after POST. See \fICURLOPT_POSTREDIR(3)\fP
 .IP CURLOPT_PUT
 .IP CURLOPT_PUT
-A parameter set to 1 tells the library to use HTTP PUT to transfer data. The
-data should be set with \fICURLOPT_READDATA\fP and \fICURLOPT_INFILESIZE\fP.
-
-This option is deprecated and starting with version 7.12.1 you should instead
-use \fICURLOPT_UPLOAD\fP.
+Issue a HTTP PUT request. See \fICURLOPT_PUT(3)\fP
 .IP CURLOPT_POST
 .IP CURLOPT_POST
-A parameter set to 1 tells the library to do a regular HTTP post. This will
-also make the library use a "Content-Type:
-application/x-www-form-urlencoded" header. (This is by far the most commonly
-used POST method).
-
-Use one of \fICURLOPT_POSTFIELDS\fP or \fICURLOPT_COPYPOSTFIELDS\fP options to
-specify what data to post and \fICURLOPT_POSTFIELDSIZE\fP or
-\fICURLOPT_POSTFIELDSIZE_LARGE\fP to set the data size.
-
-Optionally, you can provide data to POST using the \fICURLOPT_READFUNCTION\fP
-and \fICURLOPT_READDATA\fP options but then you must make sure to not set
-\fICURLOPT_POSTFIELDS\fP to anything but NULL. When providing data with a
-callback, you must transmit it using chunked transfer-encoding or you must set
-the size of the data with the \fICURLOPT_POSTFIELDSIZE\fP or
-\fICURLOPT_POSTFIELDSIZE_LARGE\fP option. To enable chunked encoding, you
-simply pass in the appropriate Transfer-Encoding header, see the
-post-callback.c example.
-
-You can override the default POST Content-Type: header by setting your own
-with \fICURLOPT_HTTPHEADER\fP.
-
-Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header.
-You can disable this header with \fICURLOPT_HTTPHEADER\fP as usual.
-
-If you use POST to a HTTP 1.1 server, you can send data without knowing the
-size before starting the POST if you use chunked encoding. You enable this by
-adding a header like "Transfer-Encoding: chunked" with
-\fICURLOPT_HTTPHEADER\fP. With HTTP 1.0 or without chunked transfer, you must
-specify the size in the request.
-
-When setting \fICURLOPT_POST\fP to 1, it will automatically set
-\fICURLOPT_NOBODY\fP to 0 (since 7.14.1).
-
-If you issue a POST request and then want to make a HEAD or GET using the same
-re-used handle, you must explicitly set the new request type using
-\fICURLOPT_NOBODY\fP or \fICURLOPT_HTTPGET\fP or similar.
+Issue a HTTP POST request. See \fICURLOPT_POST(3)\fP
 .IP CURLOPT_POSTFIELDS
 .IP CURLOPT_POSTFIELDS
-Pass a void * as parameter, which should be the full data to post in a HTTP
-POST operation. You must make sure that the data is formatted the way you want
-the server to receive it. libcurl will not convert or encode it for you. Most
-web servers will assume this data to be url-encoded.
-
-The pointed data are NOT copied by the library: as a consequence, they must
-be preserved by the calling application until the transfer finishes.
-
-This POST is a normal application/x-www-form-urlencoded kind (and libcurl will
-set that Content-Type by default when this option is used), which is the most
-commonly used one by HTML forms. See also the \fICURLOPT_POST\fP. Using
-\fICURLOPT_POSTFIELDS\fP implies \fICURLOPT_POST\fP.
-
-If you want to do a zero-byte POST, you need to set
-\fICURLOPT_POSTFIELDSIZE\fP explicitly to zero, as simply setting
-\fICURLOPT_POSTFIELDS\fP to NULL or "" just effectively disables the sending
-of the specified string. libcurl will instead assume that you'll send the POST
-data using the read callback!
-
-Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header.
-You can disable this header with \fICURLOPT_HTTPHEADER\fP as usual.
-
-To make multipart/formdata posts (aka RFC2388-posts), check out the
-\fICURLOPT_HTTPPOST\fP option.
+Send a POST with this data. See \fICURLOPT_POSTFIELDS(3)\fP
 .IP CURLOPT_POSTFIELDSIZE
 .IP CURLOPT_POSTFIELDSIZE
-If you want to post data to the server without letting libcurl do a strlen()
-to measure the data size, this option must be used. When this option is used
-you can post fully binary data, which otherwise is likely to fail. If this
-size is set to -1, the library will use strlen() to get the size.
+The POST data is this big. See \fICURLOPT_POSTFIELDSIZE(3)\fP
 .IP CURLOPT_POSTFIELDSIZE_LARGE
 .IP CURLOPT_POSTFIELDSIZE_LARGE
-Pass a curl_off_t as parameter. Use this to set the size of the
-\fICURLOPT_POSTFIELDS\fP data to prevent libcurl from doing strlen() on the
-data to figure out the size. This is the large file version of the
-\fICURLOPT_POSTFIELDSIZE\fP option. (Added in 7.11.1)
+The POST data is this big. See \fICURLOPT_POSTFIELDSIZE_LARGE(3)\fP
 .IP CURLOPT_COPYPOSTFIELDS
 .IP CURLOPT_COPYPOSTFIELDS
-Pass a char * as parameter, which should be the full data to post in a HTTP
-POST operation. It behaves as the \fICURLOPT_POSTFIELDS\fP option, but the
-original data are copied by the library, allowing the application to overwrite
-the original data after setting this option.
-
-Because data are copied, care must be taken when using this option in
-conjunction with \fICURLOPT_POSTFIELDSIZE\fP or
-\fICURLOPT_POSTFIELDSIZE_LARGE\fP: If the size has not been set prior to
-\fICURLOPT_COPYPOSTFIELDS\fP, the data are assumed to be a NUL-terminated
-string; else the stored size informs the library about the data byte count to
-copy. In any case, the size must not be changed after
-\fICURLOPT_COPYPOSTFIELDS\fP, unless another \fICURLOPT_POSTFIELDS\fP or
-\fICURLOPT_COPYPOSTFIELDS\fP option is issued.
-(Added in 7.17.1)
+Send a POST with this data - and copy it. See \fICURLOPT_COPYPOSTFIELDS(3)\fP
 .IP CURLOPT_HTTPPOST
 .IP CURLOPT_HTTPPOST
-Tells libcurl you want a multipart/formdata HTTP POST to be made and you
-instruct what data to pass on to the server.  Pass a pointer to a linked list
-of curl_httppost structs as parameter.  The easiest way to create such a
-list, is to use \fIcurl_formadd(3)\fP as documented. The data in this list
-must remain intact until you close this curl handle again with
-\fIcurl_easy_cleanup(3)\fP.
-
-Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header.
-You can disable this header with \fICURLOPT_HTTPHEADER\fP as usual.
-
-When setting \fICURLOPT_HTTPPOST\fP, it will automatically set
-\fICURLOPT_NOBODY\fP to 0 (since 7.14.1).
+Multipart formpost HTTP POST. See \fICURLOPT_HTTPPOST(3)\fP
 .IP CURLOPT_REFERER
 .IP CURLOPT_REFERER
-Pass a pointer to a zero terminated string as parameter. It will be used to
-set the Referer: header in the http request sent to the remote server. This
-can be used to fool servers or scripts. You can also set any custom header
-with \fICURLOPT_HTTPHEADER\fP.
+Referer: header. See \fICURLOPT_REFERER(3)\fP
 .IP CURLOPT_USERAGENT
 .IP CURLOPT_USERAGENT
-Pass a pointer to a zero terminated string as parameter. It will be used to
-set the User-Agent: header in the http request sent to the remote server. This
-can be used to fool servers or scripts. You can also set any custom header
-with \fICURLOPT_HTTPHEADER\fP.
+User-Agent: header. See \fICURLOPT_USERAGENT(3)\fP
 .IP CURLOPT_HTTPHEADER
 .IP CURLOPT_HTTPHEADER
-Pass a pointer to a linked list of HTTP headers to pass to the server in your
-HTTP request. 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. If you add a header that is otherwise generated and used by libcurl
-internally, your added one will be used instead. If you add a header with no
-content as in 'Accept:' (no data on the right side of the colon), the
-internally used header will get disabled. Thus, using this option you can add
-new headers, replace internal headers and remove internal headers. To add a
-header with no content (nothing to the right side of the colon), use the
-form 'MyHeader;' (note the ending semicolon).
-
-The headers included in the linked list must not be CRLF-terminated, because
-curl adds CRLF after each header item. Failure to comply with this will result
-in strange bugs because the server will most likely ignore part of the headers
-you specified.
-
-The first line in a request (containing the method, usually a GET or POST) is
-not a header and cannot be replaced using this option. Only the lines
-following the request-line are headers. Adding this method line in this list
-of headers will only cause your request to send an invalid header.
-
-Pass a NULL to this to reset back to no custom headers.
-
-The most commonly replaced headers have "shortcuts" in the options
-\fICURLOPT_COOKIE\fP, \fICURLOPT_USERAGENT\fP and \fICURLOPT_REFERER\fP.
+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
 .IP CURLOPT_HTTP200ALIASES
-Pass a pointer to a linked list of aliases to be treated as valid HTTP 200
-responses.  Some servers respond with a custom header response line.  For
-example, IceCast servers respond with "ICY 200 OK".  By including this string
-in your list of aliases, the response will be treated as a valid HTTP header
-line such as "HTTP/1.0 200 OK". (Added in 7.10.3)
-
-The linked list should be a fully valid list of struct curl_slist structs, and
-be 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.
-
-The alias itself is not parsed for any version strings. Before libcurl 7.16.3,
-Libcurl used the value set by option \fICURLOPT_HTTP_VERSION\fP, but starting
-with 7.16.3 the protocol is assumed to match HTTP 1.0 when an alias matched.
+Alternative versions of 200 OK. See \fICURLOPT_HTTP200ALIASES(3)\fP
 .IP CURLOPT_COOKIE
 .IP CURLOPT_COOKIE
-Pass a pointer to a zero terminated string as parameter. It will be used to
-set a cookie in the http request. The format of the string should be
-NAME=CONTENTS, where NAME is the cookie name and CONTENTS is what the cookie
-should contain.
-
-If you need to set multiple cookies, you need to set them all using a single
-option and thus you need to concatenate them all in one single string. Set
-multiple cookies in one string like this: "name1=content1; name2=content2;"
-etc.
-
-This option sets the cookie header explicitly in the outgoing request(s). If
-multiple requests are done due to authentication, followed redirections or
-similar, they will all get this cookie passed on.
-
-Using this option multiple times will only make the latest string override the
-previous ones.
+Cookie(s) to send. See \fICURLOPT_COOKIE(3)\fP
 .IP CURLOPT_COOKIEFILE
 .IP CURLOPT_COOKIEFILE
-Pass a pointer to a zero terminated string as parameter. It should contain the
-name of your file holding cookie data to read. The cookie data may be in
-Netscape / Mozilla cookie data format or just regular HTTP-style headers
-dumped to a file.
-
-Given an empty or non-existing file or by passing the empty string (""), this
-option will enable cookies for this curl handle, making it understand and
-parse received cookies and then use matching cookies in future requests.
-
-If you use this option multiple times, you just add more files to read.
-Subsequent files will add more cookies.
+File to read cookies from. See \fICURLOPT_COOKIEFILE(3)\fP
 .IP CURLOPT_COOKIEJAR
 .IP CURLOPT_COOKIEJAR
-Pass a file name as char *, zero terminated. This will make libcurl write all
-internally known cookies to the specified file when \fIcurl_easy_cleanup(3)\fP
-is called. If no cookies are known, no file will be created. Specify "-" to
-instead have the cookies written to stdout. Using this option also enables
-cookies for this session, so if you for example follow a location it will make
-matching cookies get sent accordingly.
-
-If the cookie jar file can't be created or written to (when the
-\fIcurl_easy_cleanup(3)\fP is called), libcurl will not and cannot report an
-error for this. Using \fICURLOPT_VERBOSE\fP or \fICURLOPT_DEBUGFUNCTION\fP
-will get a warning to display, but that is the only visible feedback you get
-about this possibly lethal situation.
+File to write cookies to. See \fICURLOPT_COOKIEJAR(3)\fP
 .IP CURLOPT_COOKIESESSION
 .IP CURLOPT_COOKIESESSION
-Pass a long set to 1 to mark this as a new cookie "session". It will force
-libcurl to ignore all cookies it is about to load that are "session cookies"
-from the previous session. By default, libcurl always stores and loads all
-cookies, independent if they are session cookies or not. Session cookies are
-cookies without expiry date and they are meant to be alive and existing for
-this "session" only.
+Start a new cookie session. See \fICURLOPT_COOKIESESSION(3)\fP
 .IP CURLOPT_COOKIELIST
 .IP CURLOPT_COOKIELIST
-Pass a char * to a cookie string. Cookie can be either in Netscape / Mozilla
-format or just regular HTTP-style header (Set-Cookie: ...) format. If cURL
-cookie engine was not enabled it will enable its cookie engine.  Passing a
-magic string \&"ALL" will erase all cookies known by cURL. (Added in 7.14.1)
-Passing the special string \&"SESS" will only erase all session cookies known
-by cURL. (Added in 7.15.4) Passing the special string \&"FLUSH" will write
-all cookies known by cURL to the file specified by \fICURLOPT_COOKIEJAR\fP.
-(Added in 7.17.1)
+Add or control cookies. See \fICURLOPT_COOKIELIST(3)\fP
 .IP CURLOPT_HTTPGET
 .IP CURLOPT_HTTPGET
-Pass a long. If the long is 1, this forces the HTTP request to get back
-to GET. Usable if a POST, HEAD, PUT, or a custom request has been used
-previously using the same curl handle.
-
-When setting \fICURLOPT_HTTPGET\fP to 1, it will automatically set
-\fICURLOPT_NOBODY\fP to 0 and \fICURLOPT_UPLOAD\fP to 0.
+Do a HTTP GET request. See \fICURLOPT_HTTPGET(3)\fP
 .IP CURLOPT_HTTP_VERSION
 .IP CURLOPT_HTTP_VERSION
-Pass a long, set to one of the values described below. They force libcurl to
-use the specific HTTP versions. This is not sensible to do unless you have a
-good reason.
-.RS
-.IP CURL_HTTP_VERSION_NONE
-We don't care about what version the library uses. libcurl will use whatever
-it thinks fit.
-.IP CURL_HTTP_VERSION_1_0
-Enforce HTTP 1.0 requests.
-.IP CURL_HTTP_VERSION_1_1
-Enforce HTTP 1.1 requests.
-.RE
+HTTP version to use. \fICURLOPT_HTTP_VERSION(3)\fP
 .IP CURLOPT_IGNORE_CONTENT_LENGTH
 .IP CURLOPT_IGNORE_CONTENT_LENGTH
-Ignore the Content-Length header. This is useful for Apache 1.x (and similar
-servers) which will report incorrect content length for files over 2
-gigabytes. If this option is used, curl will not be able to accurately report
-progress, and will simply stop the download when the server ends the
-connection. (added in 7.14.1)
+Ignore Content-Length. See \fICURLOPT_IGNORE_CONTENT_LENGTH(3)\fP
 .IP CURLOPT_HTTP_CONTENT_DECODING
 .IP CURLOPT_HTTP_CONTENT_DECODING
-Pass a long to tell libcurl how to act on content decoding. If set to zero,
-content decoding will be disabled. If set to 1 it is enabled. Libcurl has no
-default content decoding but requires you to use \fICURLOPT_ACCEPT_ENCODING\fP
-for that. (added in 7.16.2)
+Disable Content decoding. See \fICURLOPT_HTTP_CONTENT_DECODING(3)\fP
 .IP CURLOPT_HTTP_TRANSFER_DECODING
 .IP CURLOPT_HTTP_TRANSFER_DECODING
-Pass a long to tell libcurl how to act on transfer decoding. If set to zero,
-transfer decoding will be disabled, if set to 1 it is enabled
-(default). libcurl does chunked transfer decoding by default unless this
-option is set to zero. (added in 7.16.2)
+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
 .SH SMTP OPTIONS
 .IP CURLOPT_MAIL_FROM
 .SH SMTP OPTIONS
 .IP CURLOPT_MAIL_FROM
-Pass a pointer to a zero terminated string as parameter. This should be used
-to specify the sender's email address when sending SMTP mail with libcurl.
-
-An originator email address should be specified with angled brackets (<>)
-around it, which if not specified, will be added by libcurl from version
-7.21.4 onwards. Failing to provide such brackets may cause the server to
-reject the email.
-
-If this parameter is not specified then an empty address will be sent to the
-mail server which may or may not cause the email to be rejected.
-
-(Added in 7.20.0)
+Address of the sender. See \fICURLOPT_MAIL_FROM(3)\fP
 .IP CURLOPT_MAIL_RCPT
 .IP CURLOPT_MAIL_RCPT
-Pass a pointer to a linked list of recipients to pass to the server in your
-SMTP mail request. 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 recipient should be specified within a pair of angled brackets (<>),
-however, should you not use an angled bracket as the first character libcurl
-will assume you provided a single email address and enclose that address
-within brackets for you.
-
-(Added in 7.20.0)
+Address of the recipients. See \fICURLOPT_MAIL_RCPT(3)\fP
 .IP CURLOPT_MAIL_AUTH
 .IP CURLOPT_MAIL_AUTH
-Pass a pointer to a zero terminated string as parameter. This will be used
-to specify the authentication address (identity) of a submitted message that
-is being relayed to another server.
-
-This optional parameter allows co-operating agents in a trusted environment to
-communicate the authentication of individual messages and should only be used
-by the application program, using libcurl, if the application is itself a
-mail server acting in such an environment. If the application is operating as
-such and the AUTH address is not known or is invalid, then an empty string
-should be used for this parameter.
-
-Unlike CURLOPT_MAIL_FROM and CURLOPT_MAIL_RCPT, the address should not be
-specified within a pair of angled brackets (<>). However, if an empty string
-is used then a pair of brackets will be sent by libcurl as required by
-RFC2554.
-
-(Added in 7.25.0)
+Authentication address. See \fICURLOPT_MAIL_AUTH(3)\fP
 .SH TFTP OPTIONS
 .IP CURLOPT_TFTP_BLKSIZE
 .SH TFTP OPTIONS
 .IP CURLOPT_TFTP_BLKSIZE
-Specify block size to use for TFTP data transmission. Valid range as per
-RFC2348 is 8-65464 bytes. The default of 512 bytes will be used if this option
-is not specified. The specified block size will only be used pending support
-by the remote server. If the server does not return an option acknowledgement
-or returns an option acknowledgement with no blksize, the default of 512 bytes
-will be used. (added in 7.19.4)
+TFTP block size. See \fICURLOPT_TFTP_BLKSIZE(3)\fP
 .SH FTP OPTIONS
 .IP CURLOPT_FTPPORT
 .SH FTP OPTIONS
 .IP CURLOPT_FTPPORT
-Pass a pointer to a zero terminated string as parameter. It will be used to
-get the IP address to use for the FTP PORT instruction. The PORT instruction
-tells the remote server to connect to our specified IP address. The string may
-be a plain IP address, a host name, a network interface name (under Unix) or
-just a '-' symbol to let the library use your system's default IP
-address. Default FTP operations are passive, and thus won't use PORT.
-
-The address can be followed by a ':' to specify a port, optionally followed by
-a '-' to specify a port range.  If the port specified is 0, the operating
-system will pick a free port.  If a range is provided and all ports in the
-range are not available, libcurl will report CURLE_FTP_PORT_FAILED for the
-handle.  Invalid port/range settings are ignored.  IPv6 addresses followed by
-a port or portrange have to be in brackets.  IPv6 addresses without port/range
-specifier can be in brackets.  (added in 7.19.5)
-
-Examples with specified ports:
-
-.nf
-  eth0:0
-  192.168.1.2:32000-33000
-  curl.se:32123
-  [::1]:1234-4567
-.fi
-
-You disable PORT again and go back to using the passive version by setting
-this option to NULL.
+Use active FTP. See \fICURLOPT_FTPPORT(3)\fP
 .IP CURLOPT_QUOTE
 .IP CURLOPT_QUOTE
-Pass a pointer to a linked list of FTP or SFTP commands to pass to the server
-prior to your FTP request. This will be done before any other commands are
-issued (even before the CWD command for FTP). The linked list should be a
-fully valid list of 'struct curl_slist' structs properly filled in with text
-strings. Use \fIcurl_slist_append(3)\fP to append strings (commands) to the
-list, and clear the entire list afterwards with
-\fIcurl_slist_free_all(3)\fP. Disable this operation again by setting a NULL
-to this option. When speaking to a FTP (or SFTP since 7.24.0) server, prefix
-the command with an asterisk (*) to make libcurl continue even if the command
-fails as by default libcurl will stop at first failure.
-
-The set of valid FTP commands depends on the server (see RFC959 for a list of
-mandatory commands).
-
-The valid SFTP commands are: chgrp, chmod, chown, ln, mkdir, pwd, rename, rm,
-rmdir, symlink (see
-.BR curl (1))
-(SFTP support added in 7.16.3)
+Commands to run before transfer. See \fICURLOPT_QUOTE(3)\fP
 .IP CURLOPT_POSTQUOTE
 .IP CURLOPT_POSTQUOTE
-Pass a pointer to a linked list of FTP or SFTP commands to pass to the server
-after your FTP transfer request. The commands will only be run if no error
-occurred. The linked list should be a fully valid list of struct curl_slist
-structs properly filled in as described for \fICURLOPT_QUOTE\fP. Disable this
-operation again by setting a NULL to this option.
+Commands to run after transfer. See \fICURLOPT_POSTQUOTE(3)\fP
 .IP CURLOPT_PREQUOTE
 .IP CURLOPT_PREQUOTE
-Pass a pointer to a linked list of FTP commands to pass to the server after
-the transfer type is set. The linked list should be a fully valid list of
-struct curl_slist structs properly filled in as described for
-\fICURLOPT_QUOTE\fP. Disable this operation again by setting a NULL to this
-option. Before version 7.16.0, if you also set \fICURLOPT_NOBODY\fP to 1, this
-option didn't work.
-.IP CURLOPT_DIRLISTONLY
-A parameter set to 1 tells the library to just list the names of files in a
-directory, instead of doing a full directory listing that would include file
-sizes, dates etc. This works for FTP and SFTP URLs.
-
-This causes an FTP NLST command to be sent on an FTP server.  Beware that some
-FTP servers list only files in their response to NLST; they might not include
-subdirectories and symbolic links.
-
-Setting this option to 1 also implies a directory listing even if the URL
-doesn't end with a slash, which otherwise is necessary.
-
-Do NOT use this option if you also use \fICURLOPT_WILDCARDMATCH\fP as it will
-effectively break that feature then.
-
-(This option was known as CURLOPT_FTPLISTONLY up to 7.16.4)
+Commands to run just before transfer. See \fICURLOPT_PREQUOTE(3)\fP
 .IP CURLOPT_APPEND
 .IP CURLOPT_APPEND
-A parameter set to 1 tells the library to append to the remote file instead of
-overwrite it. This is only useful when uploading to an FTP site.
-
-(This option was known as CURLOPT_FTPAPPEND up to 7.16.4)
+Append to remote file. See \fICURLOPT_APPEND(3)\fP
 .IP CURLOPT_FTP_USE_EPRT
 .IP CURLOPT_FTP_USE_EPRT
-Pass a long. If the value is 1, it tells curl to use the EPRT (and
-LPRT) command when doing active FTP downloads (which is enabled by
-\fICURLOPT_FTPPORT\fP). Using EPRT means that it will first attempt to use
-EPRT and then LPRT before using PORT, but if you pass zero to this
-option, it will not try using EPRT or LPRT, only plain PORT. (Added in 7.10.5)
-
-If the server is an IPv6 host, this option will have no effect as of 7.12.3.
+Use EPTR. See \fICURLOPT_FTP_USE_EPRT(3)\fP
 .IP CURLOPT_FTP_USE_EPSV
 .IP CURLOPT_FTP_USE_EPSV
-Pass a long. If the value is 1, it tells curl to use the EPSV command
-when doing passive FTP downloads (which it always does by default). Using EPSV
-means that it will first attempt to use EPSV before using PASV, but if you
-pass zero to this option, it will not try using EPSV, only plain PASV.
-
-If the server is an IPv6 host, this option will have no effect as of 7.12.3.
+Use EPSV. See \fICURLOPT_FTP_USE_EPSV(3)\fP
 .IP CURLOPT_FTP_USE_PRET
 .IP CURLOPT_FTP_USE_PRET
-Pass a long. If the value is 1, it tells curl to send a PRET command before
-PASV (and EPSV). Certain FTP servers, mainly drftpd, require this non-standard
-command for directory listings as well as up and downloads in PASV mode. Has
-no effect when using the active FTP transfers mode.  (Added in 7.20.0)
+Use PRET. See \fICURLOPT_FTP_USE_PRET(3)\fP
 .IP CURLOPT_FTP_CREATE_MISSING_DIRS
 .IP CURLOPT_FTP_CREATE_MISSING_DIRS
-Pass a long. If the value is 1, curl will attempt to create any remote
-directory that it fails to CWD into. CWD is the command that changes working
-directory. (Added in 7.10.7)
-
-This setting also applies to SFTP-connections. curl will attempt to create
-the remote directory if it can't obtain a handle to the target-location. The
-creation will fail if a file of the same name as the directory to create
-already exists or lack of permissions prevents creation. (Added in 7.16.3)
-
-Starting with 7.19.4, you can also set this value to 2, which will make
-libcurl retry the CWD command again if the subsequent MKD command fails. This
-is especially useful if you're doing many simultaneous connections against the
-same server and they all have this option enabled, as then CWD may first fail
-but then another connection does MKD before this connection and thus MKD fails
-but trying CWD works! 7.19.4 also introduced the \fICURLFTP_CREATE_DIR\fP and
-\fICURLFTP_CREATE_DIR_RETRY\fP enum names for these arguments.
-
-Before version 7.19.4, libcurl will simply ignore arguments set to 2 and act
-as if 1 was selected.
+Create missing directories on the remote server. See \fICURLOPT_FTP_CREATE_MISSING_DIRS(3)\fP
 .IP CURLOPT_FTP_RESPONSE_TIMEOUT
 .IP CURLOPT_FTP_RESPONSE_TIMEOUT
-Pass a long.  Causes curl to set a timeout period (in seconds) on the amount
-of time that the server is allowed to take in order to generate a response
-message for a command before the session is considered hung.  While curl is
-waiting for a response, this value overrides \fICURLOPT_TIMEOUT\fP. It is
-recommended that if used in conjunction with \fICURLOPT_TIMEOUT\fP, you set
-\fICURLOPT_FTP_RESPONSE_TIMEOUT\fP to a value smaller than
-\fICURLOPT_TIMEOUT\fP.  (Added in 7.10.8)
+Timeout for FTP responses. See \fICURLOPT_FTP_RESPONSE_TIMEOUT(3)\fP
 .IP CURLOPT_FTP_ALTERNATIVE_TO_USER
 .IP CURLOPT_FTP_ALTERNATIVE_TO_USER
-Pass a char * as parameter, pointing to a string which will be used to
-authenticate if the usual FTP "USER user" and "PASS password" negotiation
-fails. This is currently only known to be required when connecting to
-Tumbleweed's Secure Transport FTPS server using client certificates for
-authentication. (Added in 7.15.5)
+Alternative to USER. See \fICURLOPT_FTP_ALTERNATIVE_TO_USER(3)\fP
 .IP CURLOPT_FTP_SKIP_PASV_IP
 .IP CURLOPT_FTP_SKIP_PASV_IP
-Pass a long. If set to 1, it instructs libcurl to not use the IP address the
-server suggests in its 227-response to libcurl's PASV command when libcurl
-connects the data connection. Instead libcurl will re-use the same IP address
-it already uses for the control connection. But it will use the port number
-from the 227-response. (Added in 7.14.2)
-
-This option has no effect if PORT, EPRT or EPSV is used instead of PASV.
+Ignore the IP address in the PASV response. See \fICURLOPT_FTP_SKIP_PASV_IP(3)\fP
 .IP CURLOPT_FTPSSLAUTH
 .IP CURLOPT_FTPSSLAUTH
-Pass a long using one of the values from below, to alter how libcurl issues
-\&"AUTH TLS" or "AUTH SSL" when FTP over SSL is activated (see
-\fICURLOPT_USE_SSL\fP). (Added in 7.12.2)
-.RS
-.IP CURLFTPAUTH_DEFAULT
-Allow libcurl to decide.
-.IP CURLFTPAUTH_SSL
-Try "AUTH SSL" first, and only if that fails try "AUTH TLS".
-.IP CURLFTPAUTH_TLS
-Try "AUTH TLS" first, and only if that fails try "AUTH SSL".
-.RE
+Control how to do TLS. See \fICURLOPT_FTPSSLAUTH(3)\fP
 .IP CURLOPT_FTP_SSL_CCC
 .IP CURLOPT_FTP_SSL_CCC
-If enabled, this option makes libcurl use CCC (Clear Command Channel). It
-shuts down the SSL/TLS layer after authenticating. The rest of the
-control channel communication will be unencrypted. This allows NAT routers
-to follow the FTP transaction. Pass a long using one of the values below.
-(Added in 7.16.1)
-.RS
-.IP CURLFTPSSL_CCC_NONE
-Don't attempt to use CCC.
-.IP CURLFTPSSL_CCC_PASSIVE
-Do not initiate the shutdown, but wait for the server to do it. Do not send
-a reply.
-.IP CURLFTPSSL_CCC_ACTIVE
-Initiate the shutdown and wait for a reply.
-.RE
+Back to non-TLS again after authentication. See \fICURLOPT_FTP_SSL_CCC(3)\fP
 .IP CURLOPT_FTP_ACCOUNT
 .IP CURLOPT_FTP_ACCOUNT
-Pass a pointer to a zero terminated string (or NULL to disable). When an FTP
-server asks for "account data" after user name and password has been provided,
-this data is sent off using the ACCT command. (Added in 7.13.0)
+Send ACCT command. See \fICURLOPT_FTP_ACCOUNT(3)\fP
 .IP CURLOPT_FTP_FILEMETHOD
 .IP CURLOPT_FTP_FILEMETHOD
-Pass a long that should have one of the following values. This option controls
-what method libcurl should use to reach a file on a FTP(S) server. The
-argument should be one of the following alternatives:
-.RS
-.IP CURLFTPMETHOD_MULTICWD
-libcurl does a single CWD operation for each path part in the given URL. For
-deep hierarchies this means many commands. This is how RFC1738 says it
-should be done. This is the default but the slowest behavior.
-.IP CURLFTPMETHOD_NOCWD
-libcurl does no CWD at all. libcurl will do SIZE, RETR, STOR etc and give a
-full path to the server for all these commands. This is the fastest behavior.
-.IP CURLFTPMETHOD_SINGLECWD
-libcurl does one CWD with the full target directory and then operates on the
-file \&"normally" (like in the multicwd case). This is somewhat more standards
-compliant than 'nocwd' but without the full penalty of 'multicwd'.
-.RE
-(Added in 7.15.1)
+Specify how to reach files. See \fICURLOPT_FTP_FILEMETHOD(3)\fP
 .SH RTSP OPTIONS
 .IP CURLOPT_RTSP_REQUEST
 .SH RTSP OPTIONS
 .IP CURLOPT_RTSP_REQUEST
-Tell libcurl what kind of RTSP request to make. Pass one of the following RTSP
-enum values. Unless noted otherwise, commands require the Session ID to be
-initialized. (Added in 7.20.0)
-.RS
-.IP CURL_RTSPREQ_OPTIONS
-Used to retrieve the available methods of the server. The application is
-responsible for parsing and obeying the response. \fB(The session ID is not
-needed for this method.)\fP  (Added in 7.20.0)
-.IP CURL_RTSPREQ_DESCRIBE
-Used to get the low level description of a stream. The application should note
-what formats it understands in the \fI'Accept:'\fP header. Unless set
-manually, libcurl will automatically fill in \fI'Accept:
-application/sdp'\fP. Time-condition headers will be added to Describe requests
-if the \fICURLOPT_TIMECONDITION\fP option is active. \fB(The session ID is not
-needed for this method)\fP  (Added in 7.20.0)
-.IP CURL_RTSPREQ_ANNOUNCE
-When sent by a client, this method changes the description of the session. For
-example, if a client is using the server to record a meeting, the client can
-use Announce to inform the server of all the meta-information about the
-session.  ANNOUNCE acts like a HTTP PUT or POST just like
-\fICURL_RTSPREQ_SET_PARAMETER\fP (Added in 7.20.0)
-.IP CURL_RTSPREQ_SETUP
-Setup is used to initialize the transport layer for the session. The
-application must set the desired Transport options for a session by using the
-\fICURLOPT_RTSP_TRANSPORT\fP option prior to calling setup. If no session ID
-is currently set with \fICURLOPT_RTSP_SESSION_ID\fP, libcurl will extract and
-use the session ID in the response to this request. \fB(The session ID is not
-needed for this method).\fP  (Added in 7.20.0)
-.IP CURL_RTSPREQ_PLAY
-Send a Play command to the server. Use the \fICURLOPT_RANGE\fP option to
-modify the playback time (e.g. 'npt=10-15').  (Added in 7.20.0)
-.IP CURL_RTSPREQ_PAUSE
-Send a Pause command to the server. Use the \fICURLOPT_RANGE\fP option with a
-single value to indicate when the stream should be halted. (e.g. npt='25')
-(Added in 7.20.0)
-.IP CURL_RTSPREQ_TEARDOWN
-This command terminates an RTSP session. Simply closing a connection does not
-terminate the RTSP session since it is valid to control an RTSP session over
-different connections.  (Added in 7.20.0)
-.IP CURL_RTSPREQ_GET_PARAMETER
-Retrieve a parameter from the server. By default, libcurl will automatically
-include a \fIContent-Type: text/parameters\fP header on all non-empty requests
-unless a custom one is set. GET_PARAMETER acts just like a HTTP PUT or POST
-(see \fICURL_RTSPREQ_SET_PARAMETER\fP).
-Applications wishing to send a heartbeat message (e.g. in the presence of a
-server-specified timeout) should send use an empty GET_PARAMETER request.
-(Added in 7.20.0)
-.IP CURL_RTSPREQ_SET_PARAMETER
-Set a parameter on the server. By default, libcurl will automatically include
-a \fIContent-Type: text/parameters\fP header unless a custom one is set. The
-interaction with SET_PARAMTER is much like a HTTP PUT or POST. An application
-may either use \fICURLOPT_UPLOAD\fP with \fICURLOPT_READDATA\fP like a HTTP
-PUT, or it may use \fICURLOPT_POSTFIELDS\fP like a HTTP POST. No chunked
-transfers are allowed, so the application must set the
-\fICURLOPT_INFILESIZE\fP in the former and \fICURLOPT_POSTFIELDSIZE\fP in the
-latter. Also, there is no use of multi-part POSTs within RTSP. (Added in
-7.20.0)
-.IP CURL_RTSPREQ_RECORD
-Used to tell the server to record a session. Use the \fICURLOPT_RANGE\fP
-option to modify the record time. (Added in 7.20.0)
-.IP CURL_RTSPREQ_RECEIVE
-This is a special request because it does not send any data to the server. The
-application may call this function in order to receive interleaved RTP
-data. It will return after processing one read buffer of data in order to give
-the application a chance to run. (Added in 7.20.0)
-.RE
+RTSP request. See \fICURLOPT_RTSP_REQUEST(3)\fP
 .IP CURLOPT_RTSP_SESSION_ID
 .IP CURLOPT_RTSP_SESSION_ID
-Pass a char * as a parameter to set the value of the current RTSP Session ID
-for the handle. Useful for resuming an in-progress session. Once this value is
-set to any non-NULL value, libcurl will return \fICURLE_RTSP_SESSION_ERROR\fP
-if ID received from the server does not match. If unset (or set to NULL),
-libcurl will automatically set the ID the first time the server sets it in a
-response. (Added in 7.20.0)
+RTSP session-id. See \fICURLOPT_RTSP_SESSION_ID(3)\fP
 .IP CURLOPT_RTSP_STREAM_URI
 .IP CURLOPT_RTSP_STREAM_URI
-Set the stream URI to operate on by passing a char * . For example, a single
-session may be controlling \fIrtsp://foo/twister/audio\fP and
-\fIrtsp://foo/twister/video\fP and the application can switch to the
-appropriate stream using this option. If unset, libcurl will default to
-operating on generic server options by passing '*' in the place of the RTSP
-Stream URI. This option is distinct from \fICURLOPT_URL\fP. When working with
-RTSP, the \fICURLOPT_STREAM_URI\fP indicates what URL to send to the server in
-the request header while the \fICURLOPT_URL\fP indicates where to make the
-connection to.  (e.g. the \fICURLOPT_URL\fP for the above examples might be
-set to \fIrtsp://foo/twister\fP (Added in 7.20.0)
+RTSP stream URI. See \fICURLOPT_RTSP_STREAM_URI(3)\fP
 .IP CURLOPT_RTSP_TRANSPORT
 .IP CURLOPT_RTSP_TRANSPORT
-Pass a char * to tell libcurl what to pass for the Transport: header for this
-RTSP session. This is mainly a convenience method to avoid needing to set a
-custom Transport: header for every SETUP request. The application must set a
-Transport: header before issuing a SETUP request. (Added in 7.20.0)
-.IP CURLOPT_RTSP_HEADER
-This option is simply an alias for \fICURLOPT_HTTP_HEADER\fP. Use this to
-replace the standard headers that RTSP and HTTP share. It is also valid to use
-the shortcuts such as \fICURLOPT_USERAGENT\fP. (Added in 7.20.0)
+RTSP Transport: header. See \fICURLOPT_RTSP_TRANSPORT(3)\fP
 .IP CURLOPT_RTSP_CLIENT_CSEQ
 .IP CURLOPT_RTSP_CLIENT_CSEQ
-Manually set the the CSEQ number to issue for the next RTSP request. Useful if
-the application is resuming a previously broken connection. The CSEQ will
-increment from this new number henceforth. (Added in 7.20.0)
+Client CSEQ number. See \fICURLOPT_RTSP_CLIENT_CSEQ(3)\fP
 .IP CURLOPT_RTSP_SERVER_CSEQ
 .IP CURLOPT_RTSP_SERVER_CSEQ
-Manually set the CSEQ number to expect for the next RTSP Server->Client
-request.  At the moment, this feature (listening for Server requests) is
-unimplemented. (Added in 7.20.0)
+CSEQ number for RTSP Server->Client request. See \fICURLOPT_RTSP_SERVER_CSEQ(3)\fP
 .SH PROTOCOL OPTIONS
 .IP CURLOPT_TRANSFERTEXT
 .SH PROTOCOL OPTIONS
 .IP CURLOPT_TRANSFERTEXT
-A parameter set to 1 tells the library to use ASCII mode for FTP transfers,
-instead of the default binary transfer. For win32 systems it does not set the
-stdout to binary mode. This option can be usable when transferring text data
-between systems with different views on certain characters, such as newlines
-or similar.
-
-libcurl does not do a complete ASCII conversion when doing ASCII transfers
-over FTP. This is a known limitation/flaw that nobody has rectified. libcurl
-simply sets the mode to ASCII and performs a standard transfer.
+Use text transfer. See \fICURLOPT_TRANSFERTEXT(3)\fP
 .IP CURLOPT_PROXY_TRANSFER_MODE
 .IP CURLOPT_PROXY_TRANSFER_MODE
-Pass a long. If the value is set to 1 (one), it tells libcurl to set the
-transfer mode (binary or ASCII) for FTP transfers done via a HTTP proxy, by
-appending ;type=a or ;type=i to the URL. Without this setting, or it being set
-to 0 (zero, the default), \fICURLOPT_TRANSFERTEXT\fP has no effect when doing
-FTP via a proxy. Beware that not all proxies support this feature.  (Added in
-7.18.0)
+Add transfer mode to URL over proxy. See \fICURLOPT_PROXY_TRANSFER_MODE(3)\fP
 .IP CURLOPT_CRLF
 .IP CURLOPT_CRLF
-Pass a long. If the value is set to 1 (one), libcurl converts Unix newlines to
-CRLF newlines on transfers. Disable this option again by setting the value to
-0 (zero).
+Convert newlines. See \fICURLOPT_CRLF(3)\fP
 .IP CURLOPT_RANGE
 .IP CURLOPT_RANGE
-Pass a char * as parameter, which should contain the specified range you
-want. It should be in the format "X-Y", where X or Y may be left out. HTTP
-transfers also support several intervals, separated with commas as in
-\fI"X-Y,N-M"\fP. Using this kind of multiple intervals will cause the HTTP
-server to send the response document in pieces (using standard MIME separation
-techniques). For RTSP, the formatting of a range should follow RFC2326
-Section 12.29. For RTSP, byte ranges are \fBnot\fP permitted. Instead, ranges
-should be given in npt, utc, or smpte formats.
-
-Pass a NULL to this option to disable the use of ranges.
-
-Ranges work on HTTP, FTP, FILE (since 7.18.0), and RTSP (since 7.20.0)
-transfers only.
+Range requests. See \fICURLOPT_RANGE(3)\fP
 .IP CURLOPT_RESUME_FROM
 .IP CURLOPT_RESUME_FROM
-Pass a long as parameter. It contains the offset in number of bytes that you
-want the transfer to start from. Set this option to 0 to make the transfer
-start from the beginning (effectively disabling resume). For FTP, set this
-option to -1 to make the transfer start from the end of the target file
-(useful to continue an interrupted upload).
-
-When doing uploads with FTP, the resume position is where in the local/source
-file libcurl should try to resume the upload from and it will then append the
-source file to the remote target file.
+Resume a transfer. See \fICURLOPT_RESUME_FROM(3)\fP
 .IP CURLOPT_RESUME_FROM_LARGE
 .IP CURLOPT_RESUME_FROM_LARGE
-Pass a curl_off_t as parameter. It contains the offset in number of bytes that
-you want the transfer to start from. (Added in 7.11.0)
+Resume a transfer. See \fICURLOPT_RESUME_FROM_LARGE(3)\fP
 .IP CURLOPT_CUSTOMREQUEST
 .IP CURLOPT_CUSTOMREQUEST
-Pass a pointer to a zero terminated string as parameter. It can be used to
-specify the request instead of GET or HEAD when performing HTTP based
-requests, instead of LIST and NLST when performing FTP directory listings and
-instead of LIST and RETR when issuing POP3 based commands. This is
-particularly useful, for example, for performing a HTTP DELETE request or a
-POP3 DELE command.
-
-Please don't perform this at will, on HTTP based requests, by making sure
-your server supports the command you are sending first.
-When you change the request method by setting \fBCURLOPT_CUSTOMREQUEST\fP to
-something, you don't actually change how libcurl behaves or acts in regards
-to the particular request method, it will only change the actual string sent
-in the request.
-
-For example:
-
-With the HTTP protocol when you tell libcurl to do a HEAD request, but then
-specify a GET though a custom request libcurl will still act as if it sent a
-HEAD. To switch to a proper HEAD use \fICURLOPT_NOBODY\fP, to switch to a
-proper POST use \fICURLOPT_POST\fP or \fICURLOPT_POSTFIELDS\fP and to switch
-to a proper GET use CURLOPT_HTTPGET.
-
-With the POP3 protocol when you tell libcurl to use a custom request it will
-behave like a LIST or RETR command was sent where it expects data to be
-returned by the server. As such \fICURLOPT_NOBODY\fP should be used when
-specifying commands such as DELE and NOOP for example.
-
-Restore to the internal default by setting this to NULL.
-
-Many people have wrongly used this option to replace the entire request with
-their own, including multiple headers and POST contents. While that might
-work in many cases, it will cause libcurl to send invalid requests and it
-could possibly confuse the remote server badly. Use \fICURLOPT_POST\fP and
-\fICURLOPT_POSTFIELDS\fP to set POST data. Use \fICURLOPT_HTTPHEADER\fP to
-replace or extend the set of headers sent by libcurl. Use
-\fICURLOPT_HTTP_VERSION\fP to change HTTP version.
-
-(Support for POP3 added in 7.26.0)
+Custom request/method. See \fICURLOPT_CUSTOMREQUEST(3)\fP
 .IP CURLOPT_FILETIME
 .IP CURLOPT_FILETIME
-Pass a long. If it is 1, libcurl will attempt to get the modification date of
-the remote document in this operation. This requires that the remote server
-sends the time or replies to a time querying command. The
-\fIcurl_easy_getinfo(3)\fP function with the \fICURLINFO_FILETIME\fP argument
-can be used after a transfer to extract the received time (if any).
+Request file modification date and time. See \fICURLOPT_FILETIME(3)\fP
+.IP CURLOPT_DIRLISTONLY
+List only. See \fICURLOPT_DIRLISTONLY(3)\fP
 .IP CURLOPT_NOBODY
 .IP CURLOPT_NOBODY
-A parameter set to 1 tells the library to not include the body-part in the
-output. This is only relevant for protocols that have separate header and
-body parts. On HTTP(S) servers, this will make libcurl do a HEAD request.
-
-To change request to GET, you should use \fICURLOPT_HTTPGET\fP. Change
-request to POST with \fICURLOPT_POST\fP etc.
+Do not get the body contents. See \fICURLOPT_NOBODY(3)\fP
 .IP CURLOPT_INFILESIZE
 .IP CURLOPT_INFILESIZE
-When uploading a file to a remote site, this option should be used to tell
-libcurl what the expected size of the infile is. This value should be passed
-as a long. See also \fICURLOPT_INFILESIZE_LARGE\fP.
-
-For uploading using SCP, this option or \fICURLOPT_INFILESIZE_LARGE\fP is
-mandatory.
-
-When sending emails using SMTP, this command can be used to specify the
-optional SIZE parameter for the MAIL FROM command. (Added in 7.23.0)
-
-This option does not limit how much data libcurl will actually send, as that
-is controlled entirely by what the read callback returns.
+Size of file to send. \fICURLOPT_INFILESIZE(3)\fP
 .IP CURLOPT_INFILESIZE_LARGE
 .IP CURLOPT_INFILESIZE_LARGE
-When uploading a file to a remote site, this option should be used to tell
-libcurl what the expected size of the infile is.  This value should be passed
-as a curl_off_t. (Added in 7.11.0)
-
-For uploading using SCP, this option or \fICURLOPT_INFILESIZE\fP is mandatory.
-
-This option does not limit how much data libcurl will actually send, as that
-is controlled entirely by what the read callback returns.
+Size of file to send. \fICURLOPT_INFILESIZE_LARGE(3)\fP
 .IP CURLOPT_UPLOAD
 .IP CURLOPT_UPLOAD
-A parameter set to 1 tells the library to prepare for an upload. The
-\fICURLOPT_READDATA\fP and \fICURLOPT_INFILESIZE\fP or
-\fICURLOPT_INFILESIZE_LARGE\fP options are also interesting for uploads. If
-the protocol is HTTP, uploading means using the PUT request unless you tell
-libcurl otherwise.
-
-Using PUT with HTTP 1.1 implies the use of a "Expect: 100-continue" header.
-You can disable this header with \fICURLOPT_HTTPHEADER\fP as usual.
-
-If you use PUT to a HTTP 1.1 server, you can upload data without knowing the
-size before starting the transfer if you use chunked encoding. You enable this
-by adding a header like "Transfer-Encoding: chunked" with
-\fICURLOPT_HTTPHEADER\fP. With HTTP 1.0 or without chunked transfer, you must
-specify the size.
+Upload data. See \fICURLOPT_UPLOAD(3)\fP
 .IP CURLOPT_MAXFILESIZE
 .IP CURLOPT_MAXFILESIZE
-Pass a long as parameter. This allows you to specify the maximum size (in
-bytes) of a file to download. If the file requested is larger than this value,
-the transfer will not start and CURLE_FILESIZE_EXCEEDED will be returned.
-
-The file size is not always known prior to download, and for such files this
-option has no effect even if the file transfer ends up being larger than this
-given limit. This concerns both FTP and HTTP transfers.
+Maximum file size to get. See \fICURLOPT_MAXFILESIZE(3)\fP
 .IP CURLOPT_MAXFILESIZE_LARGE
 .IP CURLOPT_MAXFILESIZE_LARGE
-Pass a curl_off_t as parameter. This allows you to specify the maximum size
-(in bytes) of a file to download. If the file requested is larger than this
-value, the transfer will not start and \fICURLE_FILESIZE_EXCEEDED\fP will be
-returned. (Added in 7.11.0)
-
-The file size is not always known prior to download, and for such files this
-option has no effect even if the file transfer ends up being larger than this
-given limit. This concerns both FTP and HTTP transfers.
+Maximum file size to get. See \fICURLOPT_MAXFILESIZE_LARGE(3)\fP
 .IP CURLOPT_TIMECONDITION
 .IP CURLOPT_TIMECONDITION
-Pass a long as parameter. This defines how the \fICURLOPT_TIMEVALUE\fP time
-value is treated. You can set this parameter to \fICURL_TIMECOND_IFMODSINCE\fP
-or \fICURL_TIMECOND_IFUNMODSINCE\fP. This feature applies to HTTP, FTP, RTSP,
-and FILE.
-
-The last modification time of a file is not always known and in such instances
-this feature will have no effect even if the given time condition would not
-have been met. \fIcurl_easy_getinfo(3)\fP with the
-\fICURLINFO_CONDITION_UNMET\fP option can be used after a transfer to learn if
-a zero-byte successful "transfer" was due to this condition not matching.
+Make a time conditional request. See \fICURLOPT_TIMECONDITION(3)\fP
 .IP CURLOPT_TIMEVALUE
 .IP CURLOPT_TIMEVALUE
-Pass a long as parameter. This should be the time in seconds since 1 Jan 1970,
-and the time will be used in a condition as specified with
-\fICURLOPT_TIMECONDITION\fP.
+Time value for the time conditional request. See \fICURLOPT_TIMEVALUE(3)\fP
 .SH CONNECTION OPTIONS
 .IP CURLOPT_TIMEOUT
 .SH CONNECTION OPTIONS
 .IP CURLOPT_TIMEOUT
-Pass a long as parameter containing the maximum time in seconds that you allow
-the libcurl transfer operation to take. Normally, name lookups can take a
-considerable time and limiting operations to less than a few minutes risk
-aborting perfectly normal operations. This option will cause curl to use the
-SIGALRM to enable time-outing system calls.
-
-In unix-like systems, this might cause signals to be used unless
-\fICURLOPT_NOSIGNAL\fP is set.
-
-Default timeout is 0 (zero) which means it never times out.
+Timeout for the entire request. See \fICURLOPT_TIMEOUT(3)\fP
 .IP CURLOPT_TIMEOUT_MS
 .IP CURLOPT_TIMEOUT_MS
-Like \fICURLOPT_TIMEOUT\fP but takes number of milliseconds instead. If
-libcurl is built to use the standard system name resolver, that portion
-of the transfer will still use full-second resolution for timeouts with
-a minimum timeout allowed of one second.
-(Added in 7.16.2)
+Millisecond timeout for the entire request. See \fICURLOPT_TIMEOUT_MS(3)\fP
 .IP CURLOPT_LOW_SPEED_LIMIT
 .IP CURLOPT_LOW_SPEED_LIMIT
-Pass a long as parameter. It contains the transfer speed in bytes per second
-that the transfer should be below during \fICURLOPT_LOW_SPEED_TIME\fP seconds
-for the library to consider it too slow and abort.
+Low speed limit to abort transfer. See \fICURLOPT_LOW_SPEED_LIMIT(3)\fP
 .IP CURLOPT_LOW_SPEED_TIME
 .IP CURLOPT_LOW_SPEED_TIME
-Pass a long as parameter. It contains the time in seconds that the transfer
-should be below the \fICURLOPT_LOW_SPEED_LIMIT\fP for the library to consider
-it too slow and abort.
+Time to be below the speed to trigger low speed abort. See \fICURLOPT_LOW_SPEED_TIME(3)\fP
 .IP CURLOPT_MAX_SEND_SPEED_LARGE
 .IP CURLOPT_MAX_SEND_SPEED_LARGE
-Pass a curl_off_t as parameter.  If an upload exceeds this speed (counted in
-bytes per second) on cumulative average during the transfer, the transfer will
-pause to keep the average rate less than or equal to the parameter value.
-Defaults to unlimited speed. (Added in 7.15.5)
+Cap the upload speed to this. See \fICURLOPT_MAX_SEND_SPEED_LARGE(3)\fP
 .IP CURLOPT_MAX_RECV_SPEED_LARGE
 .IP CURLOPT_MAX_RECV_SPEED_LARGE
-Pass a curl_off_t as parameter.  If a download exceeds this speed (counted in
-bytes per second) on cumulative average during the transfer, the transfer will
-pause to keep the average rate less than or equal to the parameter
-value. Defaults to unlimited speed. (Added in 7.15.5)
+Cap the download speed to this. See \fICURLOPT_MAX_RECV_SPEED_LARGE(3)\fP
 .IP CURLOPT_MAXCONNECTS
 .IP CURLOPT_MAXCONNECTS
-Pass a long. The set number will be the persistent connection cache size. The
-set amount will be the maximum amount of simultaneously open connections that
-libcurl may cache in this easy handle. Default is 5, and there isn't much
-point in changing this value unless you are perfectly aware of how this works
-and changes libcurl's behaviour. This concerns connections using any of the
-protocols that support persistent connections.
-
-When reaching the maximum limit, curl closes the oldest one in the cache to
-prevent increasing the number of open connections.
-
-If you already have performed transfers with this curl handle, setting a
-smaller MAXCONNECTS than before may cause open connections to get closed
-unnecessarily.
-
-If you add this easy handle to a multi handle, this setting is not
-acknowledged, and you must instead use \fIcurl_multi_setopt(3)\fP and the
-\fICURLMOPT_MAXCONNECTS\fP option.
-.IP CURLOPT_CLOSEPOLICY
-(Obsolete) This option does nothing.
+Maximum number of connections in the connection pool. See \fICURLOPT_MAXCONNECTS(3)\fP
 .IP CURLOPT_FRESH_CONNECT
 .IP CURLOPT_FRESH_CONNECT
-Pass a long. Set to 1 to make the next transfer use a new (fresh) connection
-by force. If the connection cache is full before this connection, one of the
-existing connections will be closed as according to the selected or default
-policy. This option should be used with caution and only if you understand
-what it does. Set this to 0 to have libcurl attempt re-using an existing
-connection (default behavior).
+Use a new connection. \fICURLOPT_FRESH_CONNECT(3)\fP
 .IP CURLOPT_FORBID_REUSE
 .IP CURLOPT_FORBID_REUSE
-Pass a long. Set to 1 to make the next transfer explicitly close the
-connection when done. Normally, libcurl keeps all connections alive when done
-with one transfer in case a succeeding one follows that can re-use them.
-This option should be used with caution and only if you understand what it
-does. Set to 0 to have libcurl keep the connection open for possible later
-re-use (default behavior).
+Prevent subsequent connections from re-using this. See \fICURLOPT_FORBID_REUSE(3)\fP
 .IP CURLOPT_CONNECTTIMEOUT
 .IP CURLOPT_CONNECTTIMEOUT
-Pass a long. It should contain the maximum time in seconds that you allow the
-connection to the server to take.  This only limits the connection phase, once
-it has connected, this option is of no more use. Set to zero to switch to the
-default built-in connection timeout - 300 seconds. See also the
-\fICURLOPT_TIMEOUT\fP option.
-
-In unix-like systems, this might cause signals to be used unless
-\fICURLOPT_NOSIGNAL\fP is set.
+Timeout for the connection phase. See \fICURLOPT_CONNECTTIMEOUT(3)\fP
 .IP CURLOPT_CONNECTTIMEOUT_MS
 .IP CURLOPT_CONNECTTIMEOUT_MS
-Like \fICURLOPT_CONNECTTIMEOUT\fP but takes the number of milliseconds
-instead. If libcurl is built to use the standard system name resolver,
-that portion of the connect will still use full-second resolution for
-timeouts with a minimum timeout allowed of one second.
-(Added in 7.16.2)
+Millisecond timeout for the connection phase. See \fICURLOPT_CONNECTTIMEOUT_MS(3)\fP
 .IP CURLOPT_IPRESOLVE
 .IP CURLOPT_IPRESOLVE
-Allows an application to select what kind of IP addresses to use when
-resolving host names. This is only interesting when using host names that
-resolve addresses using more than one version of IP. The allowed values are:
-.RS
-.IP CURL_IPRESOLVE_WHATEVER
-Default, resolves addresses to all IP versions that your system allows.
-.IP CURL_IPRESOLVE_V4
-Resolve to IPv4 addresses.
-.IP CURL_IPRESOLVE_V6
-Resolve to IPv6 addresses.
-.RE
+IP version to resolve to. See \fICURLOPT_IPRESOLVE(3)\fP
 .IP CURLOPT_CONNECT_ONLY
 .IP CURLOPT_CONNECT_ONLY
-Pass a long. If the parameter equals 1, it tells the library to perform all
-the required proxy authentication and connection setup, but no data transfer.
-This option is implemented for HTTP, SMTP and POP3.
-
-The option can be used to simply test a connection to a server, but is more
-useful when used with the \fICURLINFO_LASTSOCKET\fP option to
-\fIcurl_easy_getinfo(3)\fP as the library can set up the connection and then
-the application can obtain the most recently used socket for special data
-transfers. (Added in 7.15.2)
+Only connect, nothing else. See \fICURLOPT_CONNECT_ONLY(3)\fP
 .IP CURLOPT_USE_SSL
 .IP CURLOPT_USE_SSL
-Pass a long using one of the values from below, to make libcurl use your
-desired level of SSL for the transfer. (Added in 7.11.0)
-
-This is for enabling SSL/TLS when you use FTP, SMTP, POP3, IMAP etc.
-
-(This option was known as CURLOPT_FTP_SSL up to 7.16.4, and the constants
-were known as CURLFTPSSL_*)
-.RS
-.IP CURLUSESSL_NONE
-Don't attempt to use SSL.
-.IP CURLUSESSL_TRY
-Try using SSL, proceed as normal otherwise.
-.IP CURLUSESSL_CONTROL
-Require SSL for the control connection or fail with \fICURLE_USE_SSL_FAILED\fP.
-.IP CURLUSESSL_ALL
-Require SSL for all communication or fail with \fICURLE_USE_SSL_FAILED\fP.
-.RE
+Use TLS/SSL. See \fICURLOPT_USE_SSL(3)\fP
 .IP CURLOPT_RESOLVE
 .IP CURLOPT_RESOLVE
-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.
-
-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.
-
-You can 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.
-
-(Added in 7.21.3)
-.IP CURLOPT_DNS_SERVERS
-Set the list of DNS servers to be used instead of the system default.
-The format of the dns servers option is:
-
-host[:port][,host[:port]]...
-
-For example:
-
-192.168.1.100,192.168.1.101,3.4.5.6
-
-This option requires that libcurl was built with a resolver backend that
-supports this operation. The c-ares backend is the only such one.
-
-(Added in 7.24.0)
+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_ACCEPTTIMEOUT_MS
 .IP CURLOPT_ACCEPTTIMEOUT_MS
-Pass a long telling libcurl the maximum number of milliseconds to wait for a
-server to connect back to libcurl when an active FTP connection is used. If no
-timeout is set, the internal default of 60000 will be used. (Added in 7.24.0)
+Timeout for waiting for the server's connect back to be accepted. See \fICURLOPT_ACCEPTTIMEOUT_MS(3)\fP
 .SH SSL and SECURITY OPTIONS
 .IP CURLOPT_SSLCERT
 .SH SSL and SECURITY OPTIONS
 .IP CURLOPT_SSLCERT
-Pass a pointer to a zero terminated string as parameter. The string should be
-the file name of your certificate. The default format is "PEM" and can be
-changed with \fICURLOPT_SSLCERTTYPE\fP.
-
-With NSS this can also be the nickname of the certificate you wish to
-authenticate with. If you want to use a file from the current directory, please
-precede it with "./" prefix, in order to avoid confusion with a nickname.
-
-(iOS and Mac OS X only) With Secure Transport, this string must match the name
-of a certificate that's in the system or user keychain. You should encode this
-string in UTF-8 format in case it contains non-ASCII characters. The private
-key corresponding to the certificate, and certificate chain (if any),  must
-also be present in the keychain. (Added in 7.31.0)
+Client cert. See \fICURLOPT_SSLCERT(3)\fP
 .IP CURLOPT_SSLCERTTYPE
 .IP CURLOPT_SSLCERTTYPE
-Pass a pointer to a zero terminated string as parameter. The string should be
-the format of your certificate. Supported formats are "PEM" and "DER".  (Added
-in 7.9.3)
+Client cert type.  See \fICURLOPT_SSLCERTTYPE(3)\fP
 .IP CURLOPT_SSLKEY
 .IP CURLOPT_SSLKEY
-Pass a pointer to a zero terminated string as parameter. The string should be
-the file name of your private key. The default format is "PEM" and can be
-changed with \fICURLOPT_SSLKEYTYPE\fP.
-
-(iOS and Mac OS X only) This option is ignored if curl was built against Secure
-Transport. Secure Transport expects the private key to be already present in
-the keychain containing the certificate.
+Client key. See \fICURLOPT_SSLKEY(3)\fP
 .IP CURLOPT_SSLKEYTYPE
 .IP CURLOPT_SSLKEYTYPE
-Pass a pointer to a zero terminated string as parameter. The string should be
-the format of your private key. Supported formats are "PEM", "DER" and "ENG".
-
-The format "ENG" enables you to load the private key from a crypto engine. In
-this case \fICURLOPT_SSLKEY\fP is used as an identifier passed to the
-engine. You have to set the crypto engine with \fICURLOPT_SSLENGINE\fP.
-\&"DER" format key file currently does not work because of a bug in OpenSSL.
+Client key type. See \fICURLOPT_SSLKEYTYPE(3)\fP
 .IP CURLOPT_KEYPASSWD
 .IP CURLOPT_KEYPASSWD
-Pass a pointer to a zero terminated string as parameter. It will be used as
-the password required to use the \fICURLOPT_SSLKEY\fP or
-\fICURLOPT_SSH_PRIVATE_KEYFILE\fP private key.
-You never needed a pass phrase to load a certificate but you need one to
-load your private key.
-
-(This option was known as CURLOPT_SSLKEYPASSWD up to 7.16.4 and
-CURLOPT_SSLCERTPASSWD up to 7.9.2)
+Client key password. See \fICURLOPT_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
 .IP CURLOPT_SSLENGINE
-Pass a pointer to a zero terminated string as parameter. It will be used as
-the identifier for the crypto engine you want to use for your private
-key.
-
-If the crypto device cannot be loaded, \fICURLE_SSL_ENGINE_NOTFOUND\fP is
-returned.
+Use identifier with SSL engine. See \fICURLOPT_SSLENGINE(3)\fP
 .IP CURLOPT_SSLENGINE_DEFAULT
 .IP CURLOPT_SSLENGINE_DEFAULT
-Sets the actual crypto engine as the default for (asymmetric) crypto
-operations.
-
-If the crypto device cannot be set, \fICURLE_SSL_ENGINE_SETFAILED\fP is
-returned.
-
-Even though this option doesn't need any parameter, in some configurations
-\fIcurl_easy_setopt\fP might be defined as a macro taking exactly three
-arguments. Therefore, it's recommended to pass 1 as parameter to this option.
+Default SSL engine. See \fICURLOPT_SSLENGINE_DEFAULT(3)\fP
 .IP CURLOPT_SSLVERSION
 .IP CURLOPT_SSLVERSION
-Pass a long as parameter to control what version of SSL/TLS to attempt to use.
-The available options are:
-.RS
-.IP CURL_SSLVERSION_DEFAULT
-The default action. This will attempt to figure out the remote SSL protocol
-version, i.e. either SSLv3 or TLSv1 (but not SSLv2, which became disabled
-by default with 7.18.1).
-.IP CURL_SSLVERSION_TLSv1
-Force TLSv1
-.IP CURL_SSLVERSION_SSLv2
-Force SSLv2
-.IP CURL_SSLVERSION_SSLv3
-Force SSLv3
-.RE
+SSL version to use. See \fICURLOPT_SSLVERSION(3)\fP
 .IP CURLOPT_SSL_VERIFYPEER
 .IP CURLOPT_SSL_VERIFYPEER
-Pass a long as parameter. By default, curl assumes a value of 1.
-
-This option determines whether curl verifies the authenticity of the peer's
-certificate. A value of 1 means curl verifies; 0 (zero) means it doesn't.
-
-When negotiating a SSL connection, the server sends a certificate indicating
-its identity.  Curl verifies whether the certificate is authentic, i.e. that
-you can trust that the server is who the certificate says it is.  This trust
-is based on a chain of digital signatures, rooted in certification authority
-(CA) certificates you supply.  curl uses a default bundle of CA certificates
-(the path for that is determined at build time) and you can specify alternate
-certificates with the \fICURLOPT_CAINFO\fP option or the \fICURLOPT_CAPATH\fP
-option.
-
-When \fICURLOPT_SSL_VERIFYPEER\fP is nonzero, and the verification fails to
-prove that the certificate is authentic, the connection fails.  When the
-option is zero, the peer certificate verification succeeds regardless.
-
-Authenticating the certificate is not by itself very useful.  You typically
-want to ensure that the server, as authentically identified by its
-certificate, is the server you mean to be talking to.  Use
-\fICURLOPT_SSL_VERIFYHOST\fP to control that. The check that the host name in
-the certificate is valid for the host name you're connecting to is done
-independently of the \fICURLOPT_SSL_VERIFYPEER\fP option.
+Verify the SSL certificate. See \fICURLOPT_SSL_VERIFYPEER(3)\fP
 .IP CURLOPT_CAINFO
 .IP CURLOPT_CAINFO
-Pass a char * to a zero terminated string naming a file holding one or more
-certificates to verify the peer with.  This makes sense only when used in
-combination with the \fICURLOPT_SSL_VERIFYPEER\fP option.  If
-\fICURLOPT_SSL_VERIFYPEER\fP is zero, \fICURLOPT_CAINFO\fP need not
-even indicate an accessible file.
-
-This option is by default set to the system path where libcurl's cacert bundle
-is assumed to be stored, as established at build time.
-
-If curl is built against the NSS SSL library, the NSS PEM PKCS#11 module
-(libnsspem.so) needs to be available for this option to work properly.
+CA cert bundle. See \fICURLOPT_CAINFO(3)\fP
 .IP CURLOPT_ISSUERCERT
 .IP CURLOPT_ISSUERCERT
-Pass a char * to a zero terminated string naming a file holding a CA
-certificate in PEM format. If the option is set, an additional check against
-the peer certificate is performed to verify the issuer is indeed the one
-associated with the certificate provided by the option. This additional check
-is useful in multi-level PKI where one needs to enforce that the peer
-certificate is from a specific branch of the tree.
-
-This option makes sense only when used in combination with the
-\fICURLOPT_SSL_VERIFYPEER\fP option. Otherwise, the result of the check is not
-considered as failure.
-
-A specific error code (CURLE_SSL_ISSUER_ERROR) is defined with the option,
-which is returned if the setup of the SSL/TLS session has failed due to a
-mismatch with the issuer of peer certificate (\fICURLOPT_SSL_VERIFYPEER\fP has
-to be set too for the check to fail). (Added in 7.19.0)
+Issuer certificate. See \fICURLOPT_ISSUERCERT(3)\fP
 .IP CURLOPT_CAPATH
 .IP CURLOPT_CAPATH
-Pass a char * to a zero terminated string naming a directory holding multiple
-CA certificates to verify the peer with. If libcurl is built against OpenSSL,
-the certificate directory must be prepared using the openssl c_rehash utility.
-This makes sense only when used in combination with the
-\fICURLOPT_SSL_VERIFYPEER\fP option.  If \fICURLOPT_SSL_VERIFYPEER\fP is zero,
-\fICURLOPT_CAPATH\fP need not even indicate an accessible path.  The
-\fICURLOPT_CAPATH\fP function apparently does not work in Windows due to some
-limitation in openssl. This option is OpenSSL-specific and does nothing if
-libcurl is built to use GnuTLS. NSS-powered libcurl provides the option only
-for backward compatibility.
+Path to CA cert bundle. See \fICURLOPT_CAPATH(3)\fP
 .IP CURLOPT_CRLFILE
 .IP CURLOPT_CRLFILE
-Pass a char * to a zero terminated string naming a file with the concatenation
-of CRL (in PEM format) to use in the certificate validation that occurs during
-the SSL exchange.
-
-When curl is built to use NSS or GnuTLS, there is no way to influence the use
-of CRL passed to help in the verification process. When libcurl is built with
-OpenSSL support, X509_V_FLAG_CRL_CHECK and X509_V_FLAG_CRL_CHECK_ALL are both
-set, requiring CRL check against all the elements of the certificate chain if
-a CRL file is passed.
-
-This option makes sense only when used in combination with the
-\fICURLOPT_SSL_VERIFYPEER\fP option.
-
-A specific error code (CURLE_SSL_CRL_BADFILE) is defined with the option. It
-is returned when the SSL exchange fails because the CRL file cannot be loaded.
-A failure in certificate verification due to a revocation information found in
-the CRL does not trigger this specific error. (Added in 7.19.0)
+Certificate Revocation List. See \fICURLOPT_CRLFILE(3)\fP
 .IP CURLOPT_SSL_VERIFYHOST
 .IP CURLOPT_SSL_VERIFYHOST
-Pass a long as parameter.
-
-This option determines whether libcurl verifies that the server cert is for
-the server it is known as.
-
-When negotiating a SSL connection, the server sends a certificate indicating
-its identity.
-
-When \fICURLOPT_SSL_VERIFYHOST\fP is 2, that certificate must indicate that
-the server is the server to which you meant to connect, or the connection
-fails.
-
-Curl considers the server the intended one when the Common Name field or a
-Subject Alternate Name field in the certificate matches the host name in the
-URL to which you told Curl to connect.
-
-When the value is 1, libcurl will return a failure. It was previously (in
-7.28.0 and earlier) a debug option of some sorts, but it is no longer
-supported due to frequently leading to programmer mistakes.
-
-When the value is 0, the connection succeeds regardless of the names in the
-certificate.
-
-The default value for this option is 2.
-
-This option controls checking the server's certificate's claimed identity.
-The server could be lying.  To control lying, see
-\fICURLOPT_SSL_VERIFYPEER\fP.  If libcurl is built against NSS and
-\fICURLOPT_SSL_VERIFYPEER\fP is zero, \fICURLOPT_SSL_VERIFYHOST\fP
-is ignored.
-
+Verify the host name in the SSL certificate. See \fICURLOPT_SSL_VERIFYHOST(3)\fP
 .IP CURLOPT_CERTINFO
 .IP CURLOPT_CERTINFO
-Pass a long set to 1 to enable libcurl's certificate chain info gatherer. With
-this enabled, libcurl (if built with OpenSSL) will extract lots of information
-and data about the certificates in the certificate chain used in the SSL
-connection. This data is then possible to extract after a transfer using
-\fIcurl_easy_getinfo(3)\fP and its option \fICURLINFO_CERTINFO\fP. (Added in
-7.19.1)
+Extract certificate info. See \fICURLOPT_CERTINFO(3)\fP
+.IP CURLOPT_PINNEDPUBLICKEY
+Set pinned SSL public key . See \fICURLOPT_PINNEDPUBLICKEY(3)\fP
 .IP CURLOPT_RANDOM_FILE
 .IP CURLOPT_RANDOM_FILE
-Pass a char * to a zero terminated file name. The file will be used to read
-from to seed the random engine for SSL. The more random the specified file is,
-the more secure the SSL connection will become.
+Provide source for entropy random data. See \fICURLOPT_RANDOM_FILE(3)\fP
 .IP CURLOPT_EGDSOCKET
 .IP CURLOPT_EGDSOCKET
-Pass a char * to the zero terminated path name to the Entropy Gathering Daemon
-socket. It will be used to seed the random engine for SSL.
+Identify EGD socket for entropy. See \fICURLOPT_EGDSOCKET(3)\fP
 .IP CURLOPT_SSL_CIPHER_LIST
 .IP CURLOPT_SSL_CIPHER_LIST
-Pass a char *, pointing to a zero terminated string holding the list of
-ciphers to use for the SSL connection. The list must be syntactically correct,
-it consists of one or more cipher strings separated by colons. Commas or
-spaces are also acceptable separators but colons are normally used, \&!, \&-
-and \&+ can be used as operators.
-
-For OpenSSL and GnuTLS valid examples of cipher lists include 'RC4-SHA',
-\'SHA1+DES\', 'TLSv1' and 'DEFAULT'. The default list is normally set when you
-compile OpenSSL.
-
-You'll find more details about cipher lists on this URL:
-\fIhttp://www.openssl.org/docs/apps/ciphers.html\fP
-
-For NSS, valid examples of cipher lists include 'rsa_rc4_128_md5',
-\'rsa_aes_128_sha\', etc. With NSS you don't add/remove ciphers. If one uses
-this option then all known ciphers are disabled and only those passed in
-are enabled.
-
-You'll find more details about the NSS cipher lists on this URL:
-\fIhttp://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html#Directives\fP
-
+Ciphers to use. See \fICURLOPT_SSL_CIPHER_LIST(3)\fP
 .IP CURLOPT_SSL_SESSIONID_CACHE
 .IP CURLOPT_SSL_SESSIONID_CACHE
-Pass a long set to 0 to disable libcurl's use of SSL session-ID caching. Set
-this to 1 to enable it. By default all transfers are done using the
-cache. While nothing ever should get hurt by attempting to reuse SSL
-session-IDs, there seem to be broken SSL implementations in the wild that may
-require you to disable this in order for you to succeed. (Added in 7.16.0)
+Disable SSL session-id cache. See \fICURLOPT_SSL_SESSIONID_CACHE(3)\fP
 .IP CURLOPT_SSL_OPTIONS
 .IP CURLOPT_SSL_OPTIONS
-Pass a long with a bitmask to tell libcurl about specific SSL behaviors.
-
-CURLSSLOPT_ALLOW_BEAST is the only supported bit and by setting this the user
-will tell libcurl to not attempt to use any workarounds for a security flaw
-in the SSL3 and TLS1.0 protocols.  If this option isn't used or this bit is
-set to 0, the SSL layer libcurl uses may use a work-around for this flaw
-although it might cause interoperability problems with some (older) SSL
-implementations. WARNING: avoiding this work-around loosens the security, and
-by setting this option to 1 you ask for exactly that. (Added in 7.25.0)
+Control SSL behavior. See \fICURLOPT_SSL_OPTIONS(3)\fP
 .IP CURLOPT_KRBLEVEL
 .IP CURLOPT_KRBLEVEL
-Pass a char * as parameter. Set the kerberos security level for FTP; this also
-enables kerberos awareness.  This is a string, \&'clear', \&'safe',
-\&'confidential' or \&'private'.  If the string is set but doesn't match one
-of these, 'private' will be used. Set the string to NULL to disable kerberos
-support for FTP.
-
-(This option was known as CURLOPT_KRB4LEVEL up to 7.16.3)
+Kerberos security level. See \fICURLOPT_KRBLEVEL(3)\fP
 .IP CURLOPT_GSSAPI_DELEGATION
 .IP CURLOPT_GSSAPI_DELEGATION
-Set the parameter to CURLGSSAPI_DELEGATION_FLAG to allow unconditional GSSAPI
-credential delegation.  The delegation is disabled by default since 7.21.7.
-Set the parameter to CURLGSSAPI_DELEGATION_POLICY_FLAG to delegate only if
-the OK-AS-DELEGATE flag is set in the service ticket in case this feature is
-supported by the GSSAPI implementation and the definition of
-GSS_C_DELEG_POLICY_FLAG was available at compile-time.
-(Added in 7.22.0)
+Disable GSS-API delegation. See \fICURLOPT_GSSAPI_DELEGATION(3)\fP
 .SH SSH OPTIONS
 .IP CURLOPT_SSH_AUTH_TYPES
 .SH SSH OPTIONS
 .IP CURLOPT_SSH_AUTH_TYPES
-Pass a long set to a bitmask consisting of one or more of
-CURLSSH_AUTH_PUBLICKEY, CURLSSH_AUTH_PASSWORD, CURLSSH_AUTH_HOST,
-CURLSSH_AUTH_KEYBOARD and CURLSSH_AUTH_AGENT. Set CURLSSH_AUTH_ANY to let
-libcurl pick a suitable one. Currently CURLSSH_AUTH_HOST has no effect. (Added
-in 7.16.1) If CURLSSH_AUTH_AGENT is used, libcurl attempts to connect to
-ssh-agent or pageant and let the agent attempt the authentication. (Added in
-7.28.0)
+SSH authentication types. See \fICURLOPT_SSH_AUTH_TYPES(3)\fP
 .IP CURLOPT_SSH_HOST_PUBLIC_KEY_MD5
 .IP CURLOPT_SSH_HOST_PUBLIC_KEY_MD5
-Pass a char * pointing to a string containing 32 hexadecimal digits. The
-string should be the 128 bit MD5 checksum of the remote host's public key, and
-libcurl will reject the connection to the host unless the md5sums match. This
-option is only for SCP and SFTP transfers. (Added in 7.17.1)
+MD5 of host's public key. See \fICURLOPT_SSH_HOST_PUBLIC_KEY_MD5(3)\fP
 .IP CURLOPT_SSH_PUBLIC_KEYFILE
 .IP CURLOPT_SSH_PUBLIC_KEYFILE
-Pass a char * pointing to a file name for your public key. If not used,
-libcurl defaults to \fB$HOME/.ssh/id_dsa.pub\fP if the HOME environment
-variable is set, and just "id_dsa.pub" in the current directory if HOME is not
-set.  (Added in 7.16.1)
-If an empty string is passed, libcurl will pass no public key to libssh2
-which then tries to compute it from the private key, this is known to work
-when libssh2 1.4.0+ is linked against OpenSSL. (Added in 7.26.0)
+File name of public key. See \fICURLOPT_SSH_PUBLIC_KEYFILE(3)\fP
 .IP CURLOPT_SSH_PRIVATE_KEYFILE
 .IP CURLOPT_SSH_PRIVATE_KEYFILE
-Pass a char * pointing to a file name for your private key. If not used,
-libcurl defaults to \fB$HOME/.ssh/id_dsa\fP if the HOME environment variable
-is set, and just "id_dsa" in the current directory if HOME is not set.  If the
-file is password-protected, set the password with
-\fICURLOPT_KEYPASSWD\fP. (Added in 7.16.1)
+File name of private key. See \fICURLOPT_SSH_PRIVATE_KEYFILE(3)\fP
 .IP CURLOPT_SSH_KNOWNHOSTS
 .IP CURLOPT_SSH_KNOWNHOSTS
-Pass a pointer to a zero terminated string holding the file name of the
-known_host file to use.  The known_hosts file should use the OpenSSH file
-format as supported by libssh2. If this file is specified, libcurl will only
-accept connections with hosts that are known and present in that file, with a
-matching public key. Use \fICURLOPT_SSH_KEYFUNCTION\fP to alter the default
-behavior on host and key (mis)matching. (Added in 7.19.6)
+File name with known hosts. See \fICURLOPT_SSH_KNOWNHOSTS(3)\fP
 .IP CURLOPT_SSH_KEYFUNCTION
 .IP CURLOPT_SSH_KEYFUNCTION
-Pass a pointer to a curl_sshkeycallback function. It gets called when the
-known_host matching has been done, to allow the application to act and decide
-for libcurl how to proceed. The callback will only be called if
-\fICURLOPT_SSH_KNOWNHOSTS\fP is also set.
-
-The curl_sshkeycallback function gets passed the CURL handle, the key from the
-known_hosts file, the key from the remote site, info from libcurl on the
-matching status and a custom pointer (set with \fICURLOPT_SSH_KEYDATA\fP). It
-MUST return one of the following return codes to tell libcurl how to act:
-.RS
-.IP CURLKHSTAT_FINE_ADD_TO_FILE
-The host+key is accepted and libcurl will append it to the known_hosts file
-before continuing with the connection. This will also add the host+key combo
-to the known_host pool kept in memory if it wasn't already present there. The
-adding of data to the file is done by completely replacing the file with a new
-copy, so the permissions of the file must allow this.
-.IP CURLKHSTAT_FINE
-The host+key is accepted libcurl will continue with the connection. This will
-also add the host+key combo to the known_host pool kept in memory if it wasn't
-already present there.
-.IP CURLKHSTAT_REJECT
-The host+key is rejected. libcurl will deny the connection to continue and it
-will be closed.
-.IP CURLKHSTAT_DEFER
-The host+key is rejected, but the SSH connection is asked to be kept alive.
-This feature could be used when the app wants to somehow return back and act
-on the host+key situation and then retry without needing the overhead of
-setting it up from scratch again.
-.RE
- (Added in 7.19.6)
+Callback for known hosts handling. See \fICURLOPT_SSH_KEYFUNCTION(3)\fP
 .IP CURLOPT_SSH_KEYDATA
 .IP CURLOPT_SSH_KEYDATA
-Pass a void * as parameter. This pointer will be passed along verbatim to the
-callback set with \fICURLOPT_SSH_KEYFUNCTION\fP. (Added in 7.19.6)
+Custom pointer to pass to ssh key callback. See \fICURLOPT_SSH_KEYDATA(3)\fP
 .SH OTHER OPTIONS
 .IP CURLOPT_PRIVATE
 .SH OTHER OPTIONS
 .IP CURLOPT_PRIVATE
-Pass a void * as parameter, pointing to data that should be associated with
-this curl handle.  The pointer can subsequently be retrieved using
-\fIcurl_easy_getinfo(3)\fP with the CURLINFO_PRIVATE option. libcurl itself
-does nothing with this data. (Added in 7.10.3)
+Private pointer to store. See \fICURLOPT_PRIVATE(3)\fP
 .IP CURLOPT_SHARE
 .IP CURLOPT_SHARE
-Pass a share handle as a parameter. The share handle must have been created by
-a previous call to \fIcurl_share_init(3)\fP. Setting this option, will make
-this curl handle use the data from the shared handle instead of keeping the
-data to itself. This enables several curl handles to share data. If the curl
-handles are used simultaneously in multiple threads, you \fBMUST\fP use the
-locking methods in the share handle. See \fIcurl_share_setopt(3)\fP for
-details.
-
-If you add a share that is set to share cookies, your easy handle will use
-that cookie cache and get the cookie engine enabled. If you unshare an object
-that was using cookies (or change to another object that doesn't share
-cookies), the easy handle will get its cookie engine disabled.
-
-Data that the share object is not set to share will be dealt with the usual
-way, as if no share was used.
+Share object to use. See \fICURLOPT_SHARE(3)\fP
 .IP CURLOPT_NEW_FILE_PERMS
 .IP CURLOPT_NEW_FILE_PERMS
-Pass a long as a parameter, containing the value of the permissions that will
-be assigned to newly created files on the remote server.  The default value is
-\fI0644\fP, but any valid value can be used.  The only protocols that can use
-this are \fIsftp://\fP, \fIscp://\fP, and \fIfile://\fP. (Added in 7.16.4)
+Mode for creating new remote files. See \fICURLOPT_NEW_FILE_PERMS(3)\fP
 .IP CURLOPT_NEW_DIRECTORY_PERMS
 .IP CURLOPT_NEW_DIRECTORY_PERMS
-Pass a long as a parameter, containing the value of the permissions that will
-be assigned to newly created directories on the remote server.  The default
-value is \fI0755\fP, but any valid value can be used.  The only protocols that
-can use this are \fIsftp://\fP, \fIscp://\fP, and \fIfile://\fP.
-(Added in 7.16.4)
+Mode for creating new remote directories. See \fICURLOPT_NEW_DIRECTORY_PERMS(3)\fP
 .SH TELNET OPTIONS
 .IP CURLOPT_TELNETOPTIONS
 .SH TELNET OPTIONS
 .IP CURLOPT_TELNETOPTIONS
-Provide a pointer to a curl_slist with variables to pass to the telnet
-negotiations. The variables should be in the format <option=value>. libcurl
-supports the options 'TTYPE', 'XDISPLOC' and 'NEW_ENV'. See the TELNET
-standard for details.
+TELNET options. See \fICURLOPT_TELNETOPTIONS(3)\fP
 .SH RETURN VALUE
 .SH RETURN VALUE
-CURLE_OK (zero) means that the option was set properly, non-zero means an
+\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
 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_FAILED_INIT\fP.
+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"
 .SH "SEE ALSO"
-.BR curl_easy_init "(3), " curl_easy_cleanup "(3), " curl_easy_reset "(3)"
+.BR curl_easy_init "(3), " curl_easy_cleanup "(3), " curl_easy_reset "(3), "
+.BR curl_multi_setopt "(3), "
index f39674f..43e0b43 100644 (file)
@@ -49,927 +49,460 @@ p.roffit {
 <p class="level0">curl_easy_setopt - set options for a curl easy handle <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
 <p class="level0">#include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLoption option, parameter); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">curl_easy_setopt - set options for a curl easy handle <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
 <p class="level0">#include &lt;curl/curl.h&gt; 
 <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLoption option, parameter); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">curl_easy_setopt() is used to tell libcurl how to behave. By using the appropriate options to <span Class="emphasis">curl_easy_setopt</span>, you can change libcurl's behavior.  All options are set with the <span Class="emphasis">option</span> followed by a <span Class="emphasis">parameter</span>. That parameter can be a <span Class="bold">long</span>, a <span Class="bold">function pointer</span>, an <span Class="bold">object pointer</span> or a <span Class="bold">curl_off_t</span>, 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 curl_easy_setopt() calls in the setup phase. 
-<p class="level0">Options set with this function call are valid for all forthcoming transfers performed using this <span Class="emphasis">handle</span>.  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 <a class="emphasis" href="./curl_easy_reset.html">curl_easy_reset(3)</a>. 
-<p class="level0">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 curl_easy_setopt() returns. Exceptions to this rule are described in the option details below
+<p class="level0"><a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a> 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 <span Class="emphasis">option</span> followed by a <span Class="emphasis">parameter</span>. That parameter can be a <span Class="bold">long</span>, a <span Class="bold">function pointer</span>, an <span class="bold">object pointer</span> or a <span Class="bold">curl_off_t</span>, 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 <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a> calls in the setup phase. 
+<p class="level0">Options set with this function call are valid for all forthcoming transfers performed using this <span Class="emphasis">handle</span>.  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 <a Class="emphasis" href="./curl_easy_reset.html">curl_easy_reset</a>. 
+<p class="level0">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 <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a> returns. The only exception to this rule is really <span Class="emphasis">CURLOPT_POSTFIELDS(3)</span>, but the alternative that copies the string <span Class="emphasis">CURLOPT_COPYPOSTFIELDS(3)</span> has some usage characteristics you need to read up on
 <p class="level0">Before version 7.17.0, strings were not copied. Instead the user was forced keep them available until libcurl no longer needed them. 
 <p class="level0">Before version 7.17.0, strings were not copied. Instead the user was forced keep them available until libcurl no longer needed them. 
-<p class="level0">The <span Class="emphasis">handle</span> is the return code from a <a class="emphasis" href="./curl_easy_init.html">curl_easy_init(3)</a> or <a class="emphasis" href="./curl_easy_duphandle.html">curl_easy_duphandle(3)</a> call. <a name="BEHAVIOR"></a><h2 class="nroffsh">BEHAVIOR OPTIONS</h2>
+<p class="level0">The <span Class="emphasis">handle</span> is the return code from a <a Class="emphasis" href="./curl_easy_init.html">curl_easy_init</a> or <a Class="emphasis" href="./curl_easy_duphandle.html">curl_easy_duphandle</a> call. <a name="BEHAVIOR"></a><h2 class="nroffsh">BEHAVIOR OPTIONS</h2>
 <p class="level0">
 <p class="level0"><a name="CURLOPTVERBOSE"></a><span class="nroffip">CURLOPT_VERBOSE</span> 
 <p class="level0">
 <p class="level0"><a name="CURLOPTVERBOSE"></a><span class="nroffip">CURLOPT_VERBOSE</span> 
-<p class="level1">Set the parameter to 1 to get the library to display a lot of verbose information about its operations. Very useful for libcurl and/or protocol debugging and understanding. The verbose information will be sent to stderr, or the stream set with <a class="emphasis" href="#CURLOPTSTDERR">CURLOPT_STDERR</a>. The default value for this parameter is 0. 
-<p class="level1">You hardly ever want this set in production use, you will almost always want this when you debug/report problems. Another neat option for debugging is the <a class="emphasis" href="#CURLOPTDEBUGFUNCTION">CURLOPT_DEBUGFUNCTION</a>. 
+<p class="level1">Display verbose information. See <span Class="emphasis">CURLOPT_VERBOSE(3)</span> 
 <p class="level0"><a name="CURLOPTHEADER"></a><span class="nroffip">CURLOPT_HEADER</span> 
 <p class="level0"><a name="CURLOPTHEADER"></a><span class="nroffip">CURLOPT_HEADER</span> 
-<p class="level1">A parameter set to 1 tells the library to include the header in the body output. This is only relevant for protocols that actually have headers preceding the data (like HTTP). The default value for this parameter is 0. 
+<p class="level1">Include the header in the body output. See <span Class="emphasis">CURLOPT_HEADER(3)</span> 
 <p class="level0"><a name="CURLOPTNOPROGRESS"></a><span class="nroffip">CURLOPT_NOPROGRESS</span> 
 <p class="level0"><a name="CURLOPTNOPROGRESS"></a><span class="nroffip">CURLOPT_NOPROGRESS</span> 
-<p class="level1">Pass a long. If set to 1, it tells the library to shut off the progress meter completely. It will also prevent the <a class="emphasis" href="#CURLOPTPROGRESSFUNCTION">CURLOPT_PROGRESSFUNCTION</a> from getting called. The default value for this parameter is 1. 
-<p class="level1">Future versions of libcurl are likely to not have any built-in progress meter at all. 
+<p class="level1">Shut off the progress meter. See <span Class="emphasis">CURLOPT_NOPROGRESS(3)</span> 
 <p class="level0"><a name="CURLOPTNOSIGNAL"></a><span class="nroffip">CURLOPT_NOSIGNAL</span> 
 <p class="level0"><a name="CURLOPTNOSIGNAL"></a><span class="nroffip">CURLOPT_NOSIGNAL</span> 
-<p class="level1">Pass a long. If it is 1, libcurl will not use any functions that install signal handlers or any functions that cause signals to be sent to the process. This option is mainly here to allow multi-threaded unix applications to still set/use all timeout options etc, without risking getting signals. The default value for this parameter is 0. (Added in 7.10) 
-<p class="level1">If this option is set and libcurl has been built with the standard name resolver, timeouts will not occur while the name resolve takes place. Consider building libcurl with c-ares support to enable asynchronous DNS lookups, which enables nice timeouts for name resolves without signals. 
-<p class="level1">Setting <a class="emphasis" href="#CURLOPTNOSIGNAL">CURLOPT_NOSIGNAL</a> to 1 makes libcurl NOT ask the system to ignore SIGPIPE signals, which otherwise are sent by the system when trying to send data to a socket which is closed in the other end. libcurl makes an effort to never cause such SIGPIPEs to trigger, but some operating systems have no way to avoid them and even on those that have there are some corner cases when they may still happen, contrary to our desire. In addition, using <a class="emphasis" href="#CURLAUTHNTLMWB">CURLAUTH_NTLM_WB</a> authentication could cause a SIGCHLD signal to be raised. 
+<p class="level1">Do not install signal handlers. See <span Class="emphasis">CURLOPT_NOSIGNAL(3)</span> 
 <p class="level0"><a name="CURLOPTWILDCARDMATCH"></a><span class="nroffip">CURLOPT_WILDCARDMATCH</span> 
 <p class="level0"><a name="CURLOPTWILDCARDMATCH"></a><span class="nroffip">CURLOPT_WILDCARDMATCH</span> 
-<p class="level1">Set this option to 1 if you want to transfer multiple files according to a file name pattern. The pattern can be specified as part of the <a class="emphasis" href="#CURLOPTURL">CURLOPT_URL</a> option, using an fnmatch-like pattern (Shell Pattern Matching) in the last part of URL (file name). 
-<p class="level1">By default, libcurl uses its internal wildcard matching implementation. You can provide your own matching function by the <a class="emphasis" href="#CURLOPTFNMATCHFUNCTION">CURLOPT_FNMATCH_FUNCTION</a> option. 
-<p class="level1">This feature is only supported by the FTP download for now. 
-<p class="level1">A brief introduction of its syntax follows: 
-<p class="level2">
-<p class="level1"><a name=""></a><span class="nroffip">* - ASTERISK</span> 
-<p class="level2"><a href="ftp://example.com/some/path/">ftp://example.com/some/path/</a><span Class="bold">*.txt</span> (for all txt's from the root directory) 
-<p class="level1">
-<p class="level2">
-<p class="level1"><a name=""></a><span class="nroffip">? - QUESTION MARK</span> 
-<p class="level2">Question mark matches any (exactly one) character. 
-<p class="level2"><a href="ftp://example.com/some/path/">ftp://example.com/some/path/</a><span Class="bold">photo?.jpeg</span> 
-<p class="level1">
-<p class="level2">
-<p class="level1"><a name=""></a><span class="nroffip">[ - BRACKET EXPRESSION</span> 
-<p class="level2">The left bracket opens a bracket expression. The question mark and asterisk have no special meaning in a bracket expression. Each bracket expression ends by the right bracket and matches exactly one character. Some examples follow: 
-<p class="level2"><span Class="bold">[a-zA-Z0-9]</span> or <span Class="bold">[f-gF-G]</span> - character interval 
-<p class="level2"><span Class="bold">[abc]</span> - character enumeration 
-<p class="level2"><span Class="bold">[^abc]</span> or <span Class="bold">[!abc]</span> - negation 
-<p class="level2"><a class="bold" href="#">[[:</a><span Class="emphasis">name</span><a class="bold" href="#">:]]</a> class expression. Supported classes are <span Class="bold">alnum</span>,<span Class="bold">lower</span>, <span Class="bold">space</span>, <span Class="bold">alpha</span>, <span Class="bold">digit</span>, <span Class="bold">print</span>, <span Class="bold">upper</span>, <span Class="bold">blank</span>, <span Class="bold">graph</span>, <span Class="bold">xdigit</span>. 
-<p class="level2"><span Class="bold">[][-!^]</span> - special case - matches only '-', ']', '[', '!' or '^'. These characters have no special purpose. 
-<p class="level2"><a class="bold" href="#">[\[\]\\]</a> - escape syntax. Matches '[', ']' or '&acute;. 
-<p class="level2">Using the rules above, a file name pattern can be constructed: 
-<p class="level2"><a href="ftp://example.com/some/path/">ftp://example.com/some/path/</a><span Class="bold">[a-z[:upper:]\\].jpeg</span> 
-<p class="level1">
-<p class="level1">(This was added in 7.21.0) <a name="CALLBACK"></a><h2 class="nroffsh">CALLBACK OPTIONS</h2>
+<p class="level1">Transfer multiple files according to a file name pattern. See <span Class="emphasis">CURLOPT_WILDCARDMATCH(3)</span> <a name="CALLBACK"></a><h2 class="nroffsh">CALLBACK OPTIONS</h2>
 <p class="level0">
 <p class="level0"><a name="CURLOPTWRITEFUNCTION"></a><span class="nroffip">CURLOPT_WRITEFUNCTION</span> 
 <p class="level0">
 <p class="level0"><a name="CURLOPTWRITEFUNCTION"></a><span class="nroffip">CURLOPT_WRITEFUNCTION</span> 
-<p class="level1">Pass a pointer to a function that matches the following prototype: <span Class="bold">size_t function( char *ptr, size_t size, size_t nmemb, void *userdata);</span> This function gets called by libcurl as soon as there is data received that needs to be saved. The size of the data pointed to by <span Class="emphasis">ptr</span> is <span Class="emphasis">size</span> multiplied with <span Class="emphasis">nmemb</span>, it will not be zero terminated. Return the number of bytes actually taken care of. If that amount differs from the amount passed to your function, it'll signal an error to the library. This will abort the transfer and return <span Class="emphasis">CURLE_WRITE_ERROR</span>. 
-<p class="level1">From 7.18.0, the function can return CURL_WRITEFUNC_PAUSE which then will cause writing to this connection to become paused. See <a class="emphasis" href="./curl_easy_pause.html">curl_easy_pause(3)</a> for further details. 
-<p class="level1">This function may be called with zero bytes data if the transferred file is empty. 
-<p class="level1">Set this option to NULL to get the internal default function. The internal default function will write the data to the FILE * given with <a class="emphasis" href="#CURLOPTWRITEDATA">CURLOPT_WRITEDATA</a>. 
-<p class="level1">Set the <span Class="emphasis">userdata</span> argument with the <a class="emphasis" href="#CURLOPTWRITEDATA">CURLOPT_WRITEDATA</a> option. 
-<p class="level1">The callback function will be passed as much data as possible in all invokes, but you cannot possibly make any assumptions. It may be one byte, it may be thousands. The maximum amount of body data that can be passed to the write callback is defined in the curl.h header file: CURL_MAX_WRITE_SIZE (the usual default is 16K). If you however have <a class="emphasis" href="#CURLOPTHEADER">CURLOPT_HEADER</a> set, which sends header data to the write callback, you can get up to <span Class="emphasis">CURL_MAX_HTTP_HEADER</span> bytes of header data passed into it. This usually means 100K. 
+<p class="level1">Callback for writing data. See <span Class="emphasis">CURLOPT_WRITEFUNCTION(3)</span> 
 <p class="level0"><a name="CURLOPTWRITEDATA"></a><span class="nroffip">CURLOPT_WRITEDATA</span> 
 <p class="level0"><a name="CURLOPTWRITEDATA"></a><span class="nroffip">CURLOPT_WRITEDATA</span> 
-<p class="level1">Data pointer to pass to the file write function. If you use the <a class="emphasis" href="#CURLOPTWRITEFUNCTION">CURLOPT_WRITEFUNCTION</a> option, this is the pointer you'll get as input. If you don't use a callback, you must pass a 'FILE *' (cast to 'void *') as libcurl will pass this to fwrite() when writing data. By default, the value of this parameter is unspecified. 
-<p class="level1">The internal <a class="emphasis" href="#CURLOPTWRITEFUNCTION">CURLOPT_WRITEFUNCTION</a> will write the data to the FILE * given with this option, or to stdout if this option hasn't been set. 
-<p class="level1">If you're using libcurl as a win32 DLL, you <span Class="bold">MUST</span> use the <a class="emphasis" href="#CURLOPTWRITEFUNCTION">CURLOPT_WRITEFUNCTION</a> if you set this option or you will experience crashes. 
-<p class="level1">This option is also known with the older name <span Class="emphasis">CURLOPT_FILE</span>, the name <a class="emphasis" href="#CURLOPTWRITEDATA">CURLOPT_WRITEDATA</a> was introduced in 7.9.7. 
+<p class="level1">Data pointer to pass to the write callback. See <span Class="emphasis">CURLOPT_WRITEDATA(3)</span> 
 <p class="level0"><a name="CURLOPTREADFUNCTION"></a><span class="nroffip">CURLOPT_READFUNCTION</span> 
 <p class="level0"><a name="CURLOPTREADFUNCTION"></a><span class="nroffip">CURLOPT_READFUNCTION</span> 
-<p class="level1">Pass a pointer to a function that matches the following prototype: <span Class="bold">size_t function( void *ptr, size_t size, size_t nmemb, void *userdata);</span> This function gets called by libcurl as soon as it needs to read data in order to send it to the peer. The data area pointed at by the pointer <span Class="emphasis">ptr</span> may be filled with at most <span Class="emphasis">size</span> multiplied with <span Class="emphasis">nmemb</span> number of bytes. Your function must return the actual number of bytes that you stored in that memory area. Returning 0 will signal end-of-file to the library and cause it to stop the current transfer. 
-<p class="level1">If you stop the current transfer by returning 0 "pre-maturely" (i.e before the server expected it, like when you've said you will upload N bytes and you upload less than N bytes), you may experience that the server "hangs" waiting for the rest of the data that won't come. 
-<p class="level1">The read callback may return <span Class="emphasis">CURL_READFUNC_ABORT</span> to stop the current operation immediately, resulting in a <span Class="emphasis">CURLE_ABORTED_BY_CALLBACK</span> error code from the transfer (Added in 7.12.1) 
-<p class="level1">From 7.18.0, the function can return CURL_READFUNC_PAUSE which then will cause reading from this connection to become paused. See <a class="emphasis" href="./curl_easy_pause.html">curl_easy_pause(3)</a> for further details. 
-<p class="level1"><span Class="bold">Bugs</span>: when doing TFTP uploads, you must return the exact amount of data that the callback wants, or it will be considered the final packet by the server end and the transfer will end there. 
-<p class="level1">If you set this callback pointer to NULL, or don't set it at all, the default internal read function will be used. It is doing an fread() on the FILE * userdata set with <a class="emphasis" href="#CURLOPTREADDATA">CURLOPT_READDATA</a>. 
+<p class="level1">Callback for reading data. See <span Class="emphasis">CURLOPT_READFUNCTION(3)</span> 
 <p class="level0"><a name="CURLOPTREADDATA"></a><span class="nroffip">CURLOPT_READDATA</span> 
 <p class="level0"><a name="CURLOPTREADDATA"></a><span class="nroffip">CURLOPT_READDATA</span> 
-<p class="level1">Data pointer to pass to the file read function. If you use the <a class="emphasis" href="#CURLOPTREADFUNCTION">CURLOPT_READFUNCTION</a> option, this is the pointer you'll get as input. If you don't specify a read callback but instead rely on the default internal read function, this data must be a valid readable FILE * (cast to 'void *'). 
-<p class="level1">If you're using libcurl as a win32 DLL, you MUST use a <a class="emphasis" href="#CURLOPTREADFUNCTION">CURLOPT_READFUNCTION</a> if you set this option. 
-<p class="level1">This option was also known by the older name <span Class="emphasis">CURLOPT_INFILE</span>, the name <a class="emphasis" href="#CURLOPTREADDATA">CURLOPT_READDATA</a> was introduced in 7.9.7. 
+<p class="level1">Data pointer to pass to the read callback. See <span Class="emphasis">CURLOPT_READDATA(3)</span> 
 <p class="level0"><a name="CURLOPTIOCTLFUNCTION"></a><span class="nroffip">CURLOPT_IOCTLFUNCTION</span> 
 <p class="level0"><a name="CURLOPTIOCTLFUNCTION"></a><span class="nroffip">CURLOPT_IOCTLFUNCTION</span> 
-<p class="level1">Pass a pointer to a function that matches the following prototype: <span Class="bold">curlioerr function(CURL *handle, int cmd, void *clientp);</span>. This function gets called by libcurl when something special I/O-related needs to be done that the library can't do by itself. For now, rewinding the read data stream is the only action it can request. The rewinding of the read data stream may be necessary when doing a HTTP PUT or POST with a multi-pass authentication method. By default, this parameter is set to NULL.  (Option added in 7.12.3). 
-<p class="level1">Use <a class="emphasis" href="#CURLOPTSEEKFUNCTION">CURLOPT_SEEKFUNCTION</a> instead to provide seeking! If <a class="emphasis" href="#CURLOPTSEEKFUNCTION">CURLOPT_SEEKFUNCTION</a> is set, this parameter will be ignored when seeking. 
+<p class="level1">Callback for I/O operations. See <span Class="emphasis">CURLOPT_IOCTLFUNCTION(3)</span> 
 <p class="level0"><a name="CURLOPTIOCTLDATA"></a><span class="nroffip">CURLOPT_IOCTLDATA</span> 
 <p class="level0"><a name="CURLOPTIOCTLDATA"></a><span class="nroffip">CURLOPT_IOCTLDATA</span> 
-<p class="level1">Pass a pointer that will be untouched by libcurl and passed as the 3rd argument in the ioctl callback set with <a class="emphasis" href="#CURLOPTIOCTLFUNCTION">CURLOPT_IOCTLFUNCTION</a>. By default, the value of this parameter is unspecified.  (Option added in 7.12.3) 
+<p class="level1">Data pointer to pass to the I/O callback. See <span Class="emphasis">CURLOPT_IOCTLDATA(3)</span> 
 <p class="level0"><a name="CURLOPTSEEKFUNCTION"></a><span class="nroffip">CURLOPT_SEEKFUNCTION</span> 
 <p class="level0"><a name="CURLOPTSEEKFUNCTION"></a><span class="nroffip">CURLOPT_SEEKFUNCTION</span> 
-<p class="level1">Pass a pointer to a function that matches the following prototype: <span class="bold">int function(void *instream, curl_off_t offset, int origin);</span> This function gets called by libcurl to seek to a certain position in the input stream and can be used to fast forward a file in a resumed upload (instead of reading all uploaded bytes with the normal read function/callback). It is also called to rewind a stream when doing a HTTP PUT or POST with a multi-pass authentication method. The function shall work like "fseek" or "lseek" and accepted SEEK_SET, SEEK_CUR and SEEK_END as argument for origin, although (in 7.18.0) libcurl only passes SEEK_SET. The callback must return 0 (CURL_SEEKFUNC_OK) on success, 1 (CURL_SEEKFUNC_FAIL) to cause the upload operation to fail or 2 (CURL_SEEKFUNC_CANTSEEK) to indicate that while the seek failed, libcurl is free to work around the problem if possible. The latter can sometimes be done by instead reading from the input or similar. 
-<p class="level1">By default, this parameter is unset. 
-<p class="level1">If you forward the input arguments directly to "fseek" or "lseek", note that the data type for <span Class="emphasis">offset</span> is not the same as defined for curl_off_t on many systems! (Option added in 7.18.0) 
+<p class="level1">Callback for seek operations. See <span Class="emphasis">CURLOPT_SEEKFUNCTION(3)</span> 
 <p class="level0"><a name="CURLOPTSEEKDATA"></a><span class="nroffip">CURLOPT_SEEKDATA</span> 
 <p class="level0"><a name="CURLOPTSEEKDATA"></a><span class="nroffip">CURLOPT_SEEKDATA</span> 
-<p class="level1">Data pointer to pass to the file seek function. If you use the <a class="emphasis" href="#CURLOPTSEEKFUNCTION">CURLOPT_SEEKFUNCTION</a> option, this is the pointer you'll get as input. If you don't specify a seek callback, NULL is passed. (Option added in 7.18.0) 
+<p class="level1">Data pointer to pass to the seek callback. See <span Class="emphasis">CURLOPT_SEEKDATA(3)</span> 
 <p class="level0"><a name="CURLOPTSOCKOPTFUNCTION"></a><span class="nroffip">CURLOPT_SOCKOPTFUNCTION</span> 
 <p class="level0"><a name="CURLOPTSOCKOPTFUNCTION"></a><span class="nroffip">CURLOPT_SOCKOPTFUNCTION</span> 
-<p class="level1">Pass a pointer to a function that matches the following prototype: <span class="bold">int function(void *clientp, curl_socket_t curlfd, curlsocktype purpose);</span>. By default, this parameter is unset. If set, this function gets called by libcurl after the socket() call but before the connect() call. The callback's <span Class="emphasis">purpose</span> argument identifies the exact purpose for this particular socket: 
-<p class="level1"><span Class="emphasis">CURLSOCKTYPE_IPCXN</span> for actively created connections or since 7.28.0 <span Class="emphasis">CURLSOCKTYPE_ACCEPT</span> for FTP when the connection was setup with PORT/EPSV (in earlier versions these sockets weren't passed to this callback). 
-<p class="level1">Future versions of libcurl may support more purposes. It passes the newly created socket descriptor so additional setsockopt() calls can be done at the user's discretion.  Return 0 (zero) from the callback on success. Return 1 from the callback function to signal an unrecoverable error to the library and it will close the socket and return <span Class="emphasis">CURLE_COULDNT_CONNECT</span>.  (Option added in 7.16.0) 
-<p class="level1">Added in 7.21.5, the callback function may return <span Class="emphasis">CURL_SOCKOPT_ALREADY_CONNECTED</span>, which tells libcurl that the socket is in fact already connected and then libcurl will not attempt to connect it. 
+<p class="level1">Callback for sockopt operations. See <span Class="emphasis">CURLOPT_SOCKOPTFUNCTION(3)</span> 
 <p class="level0"><a name="CURLOPTSOCKOPTDATA"></a><span class="nroffip">CURLOPT_SOCKOPTDATA</span> 
 <p class="level0"><a name="CURLOPTSOCKOPTDATA"></a><span class="nroffip">CURLOPT_SOCKOPTDATA</span> 
-<p class="level1">Pass a pointer that will be untouched by libcurl and passed as the first argument in the sockopt callback set with <a class="emphasis" href="#CURLOPTSOCKOPTFUNCTION">CURLOPT_SOCKOPTFUNCTION</a>. The default value of this parameter is unspecified. (Option added in 7.16.0) 
+<p class="level1">Data pointer to pass to the sockopt callback. See <span Class="emphasis">CURLOPT_SOCKOPTDATA(3)</span> 
 <p class="level0"><a name="CURLOPTOPENSOCKETFUNCTION"></a><span class="nroffip">CURLOPT_OPENSOCKETFUNCTION</span> 
 <p class="level0"><a name="CURLOPTOPENSOCKETFUNCTION"></a><span class="nroffip">CURLOPT_OPENSOCKETFUNCTION</span> 
-<p class="level1">Pass a pointer to a function that matches the following prototype: <span class="bold">curl_socket_t function(void *clientp, curlsocktype purpose, struct curl_sockaddr *address);</span>. This function gets called by libcurl instead of the <span Class="emphasis">socket(2)</span> call. The callback's <span Class="emphasis">purpose</span> argument identifies the exact purpose for this particular socket: <span Class="emphasis">CURLSOCKTYPE_IPCXN</span> is for IP based connections. Future versions of libcurl may support more purposes. It passes the resolved peer address as a <span Class="emphasis">address</span> argument so the callback can modify the address or refuse to connect at all. The callback function should return the socket or <span Class="emphasis">CURL_SOCKET_BAD</span> in case no connection could be established or another error was detected. Any additional <span Class="emphasis">setsockopt(2)</span> calls can be done on the socket at the user's discretion. <span Class="emphasis">CURL_SOCKET_BAD</span> return value from the callback function will signal an unrecoverable error to the library and it will return <span Class="emphasis">CURLE_COULDNT_CONNECT</span>.  This return code can be used for IP address blacklisting.  The default behavior is: <pre>
-<p class="level1">&nbsp;  return socket(addr-&gt;family, addr-&gt;socktype, addr-&gt;protocol);
- </pre>
-
-<p class="level1">(Option added in 7.17.1.) 
+<p class="level1">Callback for socket creation. See <span Class="emphasis">CURLOPT_OPENSOCKETFUNCTION(3)</span> 
 <p class="level0"><a name="CURLOPTOPENSOCKETDATA"></a><span class="nroffip">CURLOPT_OPENSOCKETDATA</span> 
 <p class="level0"><a name="CURLOPTOPENSOCKETDATA"></a><span class="nroffip">CURLOPT_OPENSOCKETDATA</span> 
-<p class="level1">Pass a pointer that will be untouched by libcurl and passed as the first argument in the opensocket callback set with <a class="emphasis" href="#CURLOPTOPENSOCKETFUNCTION">CURLOPT_OPENSOCKETFUNCTION</a>. The default value of this parameter is unspecified. (Option added in 7.17.1.) 
+<p class="level1">Data pointer to pass to the open socket callback. See <span Class="emphasis">CURLOPT_OPENSOCKETDATA(3)</span> 
 <p class="level0"><a name="CURLOPTCLOSESOCKETFUNCTION"></a><span class="nroffip">CURLOPT_CLOSESOCKETFUNCTION</span> 
 <p class="level0"><a name="CURLOPTCLOSESOCKETFUNCTION"></a><span class="nroffip">CURLOPT_CLOSESOCKETFUNCTION</span> 
-<p class="level1">Pass a pointer to a function that matches the following prototype: <span class="bold">int function(void *clientp, curl_socket_t item);</span>. This function gets called by libcurl instead of the <span Class="emphasis">close(3)</span> or <span Class="emphasis">closesocket(3)</span> call when sockets are closed (not for any other file descriptors). This is pretty much the reverse to the <a class="emphasis" href="#CURLOPTOPENSOCKETFUNCTION">CURLOPT_OPENSOCKETFUNCTION</a> option. Return 0 to signal success and 1 if there was an error.  (Option added in 7.21.7) 
+<p class="level1">Callback for closing socket. See <span Class="emphasis">CURLOPT_CLOSESOCKETFUNCTION(3)</span> 
 <p class="level0"><a name="CURLOPTCLOSESOCKETDATA"></a><span class="nroffip">CURLOPT_CLOSESOCKETDATA</span> 
 <p class="level0"><a name="CURLOPTCLOSESOCKETDATA"></a><span class="nroffip">CURLOPT_CLOSESOCKETDATA</span> 
-<p class="level1">Pass a pointer that will be untouched by libcurl and passed as the first argument in the closesocket callback set with <a class="emphasis" href="#CURLOPTCLOSESOCKETFUNCTION">CURLOPT_CLOSESOCKETFUNCTION</a>. The default value of this parameter is unspecified. (Option added in 7.21.7) 
+<p class="level1">Data pointer to pass to the close socket callback. See <span Class="emphasis">CURLOPT_CLOSESOCKETDATA(3)</span> 
 <p class="level0"><a name="CURLOPTPROGRESSFUNCTION"></a><span class="nroffip">CURLOPT_PROGRESSFUNCTION</span> 
 <p class="level0"><a name="CURLOPTPROGRESSFUNCTION"></a><span class="nroffip">CURLOPT_PROGRESSFUNCTION</span> 
-<p class="level1">Pass a pointer to a function that matches the following prototype: 
-<p class="level1"><span class="bold">int function(void *clientp, double dltotal, double dlnow, double ultotal, double ulnow);</span> 
-<p class="level1">This function gets called by libcurl instead of its internal equivalent with a frequent interval. While data is being transferred it will be called very frequently, and during slow periods like when nothing is being transferred it can slow down to about one call per second. 
-<p class="level1"><span Class="emphasis">clientp</span> is the pointer set with <a class="emphasis" href="#CURLOPTPROGRESSDATA">CURLOPT_PROGRESSDATA</a>, it is not actually used by libcurl but is only passed along from the application to the callback. 
-<p class="level1">The callback gets told how much data libcurl will transfer and has transferred, in number of bytes. <span Class="emphasis">dltotal</span> is the total number of bytes libcurl expects to download in this transfer. <span Class="emphasis">dlnow</span> is the number of bytes downloaded so far. <span Class="emphasis">ultotal</span> is the total number of bytes libcurl expects to upload in this transfer. <span Class="emphasis">ulnow</span> is the number of bytes uploaded so far. 
-<p class="level1">Unknown/unused argument values passed to the callback will be set to zero (like if you only download data, the upload size will remain 0). Many times the callback will be called one or more times first, before it knows the data sizes so a program must be made to handle that. 
-<p class="level1">Returning a non-zero value from this callback will cause libcurl to abort the transfer and return <span Class="emphasis">CURLE_ABORTED_BY_CALLBACK</span>. 
-<p class="level1">If you transfer data with the multi interface, this function will not be called during periods of idleness unless you call the appropriate libcurl function that performs transfers. 
-<p class="level1"><a class="emphasis" href="#CURLOPTNOPROGRESS">CURLOPT_NOPROGRESS</a> must be set to 0 to make this function actually get called. 
-<p class="level0"><a name="CURLOPTXFERINFOFUNCTION"></a><span class="nroffip">CURLOPT_XFERINFOFUNCTION</span> 
-<p class="level1">Pass a pointer to a function that matches the following prototype: 
-<p class="level1"><pre>
-<p class="level1"><span class="bold">int function(void *clientp, curl_off_t dltotal, curl_off_t dlnow,
- &nbsp;               curl_off_t ultotal, curl_off_t ulnow);</span>
- </pre>
-
-<p class="level1">
-<p class="level1">This function gets called by libcurl instead of its internal equivalent with a frequent interval. While data is being transferred it will be called very frequently, and during slow periods like when nothing is being transferred it can slow down to about one call per second. 
-<p class="level1"><span Class="emphasis">clientp</span> is the pointer set with <a class="emphasis" href="#CURLOPTXFERINFODATA">CURLOPT_XFERINFODATA</a>, it is only passed along from the application to the callback. 
-<p class="level1">The callback gets told how much data libcurl will transfer and has transferred, in number of bytes. <span Class="emphasis">dltotal</span> is the total number of bytes libcurl expects to download in this transfer. <span Class="emphasis">dlnow</span> is the number of bytes downloaded so far. <span Class="emphasis">ultotal</span> is the total number of bytes libcurl expects to upload in this transfer. <span Class="emphasis">ulnow</span> is the number of bytes uploaded so far. 
-<p class="level1">Unknown/unused argument values passed to the callback will be set to zero (like if you only download data, the upload size will remain 0). Many times the callback will be called one or more times first, before it knows the data sizes so a program must be made to handle that. 
-<p class="level1">Returning a non-zero value from this callback will cause libcurl to abort the transfer and return <span Class="emphasis">CURLE_ABORTED_BY_CALLBACK</span>. 
-<p class="level1">If you transfer data with the multi interface, this function will not be called during periods of idleness unless you call the appropriate libcurl function that performs transfers. 
-<p class="level1"><a class="emphasis" href="#CURLOPTNOPROGRESS">CURLOPT_NOPROGRESS</a> must be set to 0 to make this function actually get called. 
-<p class="level1">(Added in 7.32.0) 
+<p class="level1">OBSOLETE callback for progress meter. See <span Class="emphasis">CURLOPT_PROGRESSFUNCTION(3)</span> 
 <p class="level0"><a name="CURLOPTPROGRESSDATA"></a><span class="nroffip">CURLOPT_PROGRESSDATA</span> 
 <p class="level0"><a name="CURLOPTPROGRESSDATA"></a><span class="nroffip">CURLOPT_PROGRESSDATA</span> 
-<p class="level1">Pass a pointer that will be untouched by libcurl and passed as the first argument in the progress callback set with <a class="emphasis" href="#CURLOPTPROGRESSFUNCTION">CURLOPT_PROGRESSFUNCTION</a>. The default value of this parameter is unspecified. 
+<p class="level1">Data pointer to pass to the progress meter callback. See <span Class="emphasis">CURLOPT_PROGRESSDATA(3)</span> 
+<p class="level0"><a name="CURLOPTXFERINFOFUNCTION"></a><span class="nroffip">CURLOPT_XFERINFOFUNCTION</span> 
+<p class="level1">Callback for progress meter. See <span Class="emphasis">CURLOPT_XFERINFOFUNCTION(3)</span> 
 <p class="level0"><a name="CURLOPTXFERINFODATA"></a><span class="nroffip">CURLOPT_XFERINFODATA</span> 
 <p class="level0"><a name="CURLOPTXFERINFODATA"></a><span class="nroffip">CURLOPT_XFERINFODATA</span> 
-<p class="level1">Pass a pointer that will be untouched by libcurl and passed as the first argument in the progress callback set with <a class="emphasis" href="#CURLOPTXFERINFOFUNCTION">CURLOPT_XFERINFOFUNCTION</a>. The default value of this parameter is unspecified. This option is an alias for CURLOPT_PROGRESSDATA. (Added in 7.32.0) 
+<p class="level1">Data pointer to pass to the progress meter callback. See <span Class="emphasis">CURLOPT_XFERINFODATA(3)</span> 
 <p class="level0"><a name="CURLOPTHEADERFUNCTION"></a><span class="nroffip">CURLOPT_HEADERFUNCTION</span> 
 <p class="level0"><a name="CURLOPTHEADERFUNCTION"></a><span class="nroffip">CURLOPT_HEADERFUNCTION</span> 
-<p class="level1">Pass a pointer to a function that matches the following prototype: <span class="bold">size_t function( void *ptr, size_t size, size_t nmemb, void *userdata);</span>. 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 <span Class="emphasis">ptr</span> is <span Class="emphasis">size</span> multiplied with <span Class="emphasis">nmemb</span>. Do not assume that the header line is zero terminated! The pointer named <span Class="emphasis">userdata</span> is the one you set with the <a class="emphasis" href="#CURLOPTWRITEHEADER">CURLOPT_WRITEHEADER</a> option. The callback function must return the number of bytes actually taken care of. If that amount differs from the amount passed to your function, it'll signal an error to the library. This will abort the transfer and return <span Class="emphasis">CURL_WRITE_ERROR</span>. 
-<p class="level1">A complete HTTP header that is passed to this function can be up to <span Class="emphasis">CURL_MAX_HTTP_HEADER</span> (100K) bytes. 
-<p class="level1">If this option is not set, or if it is set to NULL, but <span Class="emphasis">CURLOPT_HEADERDATA</span> (<a class="emphasis" href="#CURLOPTWRITEHEADER">CURLOPT_WRITEHEADER</a>) 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 <a class="emphasis" href="#CURLOPTWRITEFUNCTION">CURLOPT_WRITEFUNCTION</a>, or if it is not specified or NULL - the default, stream-writing function. 
-<p class="level1">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. 
-<p class="level1">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. 
-<p class="level1">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. 
-<p class="level0"><a name="CURLOPTWRITEHEADER"></a><span class="nroffip">CURLOPT_WRITEHEADER</span> 
-<p class="level1">(This option is also known as <span Class="bold">CURLOPT_HEADERDATA</span>) Pass a pointer to be used to write the header part of the received data to. If you don't use <a class="emphasis" href="#CURLOPTWRITEFUNCTION">CURLOPT_WRITEFUNCTION</a> or <a class="emphasis" href="#CURLOPTHEADERFUNCTION">CURLOPT_HEADERFUNCTION</a> to take care of the writing, this must be a valid FILE * as the internal default will then be a plain fwrite(). See also the <a class="emphasis" href="#CURLOPTHEADERFUNCTION">CURLOPT_HEADERFUNCTION</a> option above on how to set a custom get-all-headers callback. 
+<p class="level1">Callback for writing received headers. See <span Class="emphasis">CURLOPT_HEADERFUNCTION(3)</span> 
+<p class="level0"><a name="CURLOPTHEADERDATA"></a><span class="nroffip">CURLOPT_HEADERDATA</span> 
+<p class="level1">Data pointer to pass to the header callback. See <span Class="emphasis">CURLOPT_HEADERDATA(3)</span> 
 <p class="level0"><a name="CURLOPTDEBUGFUNCTION"></a><span class="nroffip">CURLOPT_DEBUGFUNCTION</span> 
 <p class="level0"><a name="CURLOPTDEBUGFUNCTION"></a><span class="nroffip">CURLOPT_DEBUGFUNCTION</span> 
-<p class="level1">Pass a pointer to a function that matches the following prototype: <span class="bold">int curl_debug_callback (CURL *, curl_infotype, char *, size_t, void *);</span> <a class="emphasis" href="#CURLOPTDEBUGFUNCTION">CURLOPT_DEBUGFUNCTION</a> replaces the standard debug function used when <a class="emphasis" href="#CURLOPTVERBOSE">CURLOPT_VERBOSE </a> is in effect. This callback receives debug information, as specified with the <span Class="bold">curl_infotype</span> argument. This function must return 0.  The data pointed to by the char * passed to this function WILL NOT be zero terminated, but will be exactly of the size as told by the size_t argument. 
-<p class="level1">Available curl_infotype values: 
-<p class="level2">
-<p class="level1"><a name="CURLINFOTEXT"></a><span class="nroffip">CURLINFO_TEXT</span> 
-<p class="level2">The data is informational text. 
-<p class="level1"><a name="CURLINFOHEADERIN"></a><span class="nroffip">CURLINFO_HEADER_IN</span> 
-<p class="level2">The data is header (or header-like) data received from the peer. 
-<p class="level1"><a name="CURLINFOHEADEROUT"></a><span class="nroffip">CURLINFO_HEADER_OUT</span> 
-<p class="level2">The data is header (or header-like) data sent to the peer. 
-<p class="level1"><a name="CURLINFODATAIN"></a><span class="nroffip">CURLINFO_DATA_IN</span> 
-<p class="level2">The data is protocol data received from the peer. 
-<p class="level1"><a name="CURLINFODATAOUT"></a><span class="nroffip">CURLINFO_DATA_OUT</span> 
-<p class="level2">The data is protocol data sent to the peer. 
-<p class="level1">
+<p class="level1">Callback for debug information. See <span Class="emphasis">CURLOPT_DEBUGFUNCTION(3)</span> 
 <p class="level0"><a name="CURLOPTDEBUGDATA"></a><span class="nroffip">CURLOPT_DEBUGDATA</span> 
 <p class="level0"><a name="CURLOPTDEBUGDATA"></a><span class="nroffip">CURLOPT_DEBUGDATA</span> 
-<p class="level1">Pass a pointer to whatever you want passed in to your <a class="emphasis" href="#CURLOPTDEBUGFUNCTION">CURLOPT_DEBUGFUNCTION</a> in the last void * argument. This pointer is not used by libcurl, it is only passed to the callback. 
+<p class="level1">Data pointer to pass to the debug callback. See <span Class="emphasis">CURLOPT_DEBUGDATA(3)</span> 
 <p class="level0"><a name="CURLOPTSSLCTXFUNCTION"></a><span class="nroffip">CURLOPT_SSL_CTX_FUNCTION</span> 
 <p class="level0"><a name="CURLOPTSSLCTXFUNCTION"></a><span class="nroffip">CURLOPT_SSL_CTX_FUNCTION</span> 
-<p class="level1">This option does only function for libcurl powered by OpenSSL. If libcurl was built against another SSL library, this functionality is absent. 
-<p class="level1">Pass a pointer to a function that matches the following prototype: <span Class="bold">CURLcode sslctxfun(CURL *curl, void *sslctx, void *parm);</span> This function gets called by libcurl just before the initialization of a SSL connection after having processed all other SSL related options to give a last chance to an application to modify the behaviour of openssl's ssl initialization. The <span Class="emphasis">sslctx</span> parameter is actually a pointer to an openssl <span Class="emphasis">SSL_CTX</span>. If an error is returned no attempt to establish a connection is made and the perform operation will return the error code from this callback function.  Set the <span Class="emphasis">parm</span> argument with the <a class="emphasis" href="#CURLOPTSSLCTXDATA">CURLOPT_SSL_CTX_DATA</a> option. This option was introduced in 7.11.0. 
-<p class="level1">This function will get called on all new connections made to a server, during the SSL negotiation. The SSL_CTX pointer will be a new one every time. 
-<p class="level1">To use this properly, a non-trivial amount of knowledge of the openssl libraries is necessary. For example, using this function allows you to use openssl callbacks to add additional validation code for certificates, and even to change the actual URI of a HTTPS request (example used in the lib509 test case).  See also the example section for a replacement of the key, certificate and trust file settings. 
+<p class="level1">Callback for SSL context logic. See <span Class="emphasis">CURLOPT_SSL_CTX_FUNCTION(3)</span> 
 <p class="level0"><a name="CURLOPTSSLCTXDATA"></a><span class="nroffip">CURLOPT_SSL_CTX_DATA</span> 
 <p class="level0"><a name="CURLOPTSSLCTXDATA"></a><span class="nroffip">CURLOPT_SSL_CTX_DATA</span> 
-<p class="level1">Data pointer to pass to the ssl context callback set by the option <a class="emphasis" href="#CURLOPTSSLCTXFUNCTION">CURLOPT_SSL_CTX_FUNCTION</a>, this is the pointer you'll get as third parameter, otherwise <span Class="bold">NULL</span>. (Added in 7.11.0) 
+<p class="level1">Data pointer to pass to the SSL context callback. See <span Class="emphasis">CURLOPT_SSL_CTX_DATA(3)</span> 
 <p class="level0"><a name="CURLOPTCONVTONETWORKFUNCTION"></a><span class="nroffip">CURLOPT_CONV_TO_NETWORK_FUNCTION</span> 
 <p class="level0"><a name="CURLOPTCONVTONETWORKFUNCTION"></a><span class="nroffip">CURLOPT_CONV_TO_NETWORK_FUNCTION</span> 
-<p class="level1">
+<p class="level1">Callback for code base conversion. See <span Class="emphasis">CURLOPT_CONV_TO_NETWORK_FUNCTION(3)</span> 
 <p class="level0"><a name="CURLOPTCONVFROMNETWORKFUNCTION"></a><span class="nroffip">CURLOPT_CONV_FROM_NETWORK_FUNCTION</span> 
 <p class="level0"><a name="CURLOPTCONVFROMNETWORKFUNCTION"></a><span class="nroffip">CURLOPT_CONV_FROM_NETWORK_FUNCTION</span> 
-<p class="level1">
+<p class="level1">Callback for code base conversion. See <span Class="emphasis">CURLOPT_CONV_FROM_NETWORK_FUNCTION(3)</span> 
 <p class="level0"><a name="CURLOPTCONVFROMUTF8FUNCTION"></a><span class="nroffip">CURLOPT_CONV_FROM_UTF8_FUNCTION</span> 
 <p class="level0"><a name="CURLOPTCONVFROMUTF8FUNCTION"></a><span class="nroffip">CURLOPT_CONV_FROM_UTF8_FUNCTION</span> 
-<p class="level1">Pass a pointer to a function that matches the following prototype: <span Class="bold">CURLcode function(char *ptr, size_t length);</span> 
-<p class="level1">These three options apply to non-ASCII platforms only.  They are available only if <span Class="bold">CURL_DOES_CONVERSIONS</span> was defined when libcurl was built. When this is the case, <a class="emphasis" href="./curl_version_info.html">curl_version_info(3)</a> will return the CURL_VERSION_CONV feature bit set. 
-<p class="level1">The data to be converted is in a buffer pointed to by the ptr parameter.  The amount of data to convert is indicated by the length parameter.  The converted data overlays the input data in the buffer pointed to by the ptr parameter. CURLE_OK should be returned upon successful conversion.  A CURLcode return value defined by curl.h, such as CURLE_CONV_FAILED, should be returned if an error was encountered. 
-<p class="level1"><a class="bold" href="#CURLOPTCONVTONETWORKFUNCTION">CURLOPT_CONV_TO_NETWORK_FUNCTION</a> and <a class="bold" href="#CURLOPTCONVFROMNETWORKFUNCTION">CURLOPT_CONV_FROM_NETWORK_FUNCTION</a> convert between the host encoding and the network encoding.  They are used when commands or ASCII data are sent/received over the network. 
-<p class="level1"><a class="bold" href="#CURLOPTCONVFROMUTF8FUNCTION">CURLOPT_CONV_FROM_UTF8_FUNCTION</a> is called to convert from UTF8 into the host encoding.  It is required only for SSL processing. 
-<p class="level1">If you set a callback pointer to NULL, or don't set it at all, the built-in libcurl iconv functions will be used.  If HAVE_ICONV was not defined when libcurl was built, and no callback has been established, conversion will return the CURLE_CONV_REQD error code. 
-<p class="level1">If HAVE_ICONV is defined, CURL_ICONV_CODESET_OF_HOST must also be defined. For example: 
-<p class="level1">&nbsp;#define CURL_ICONV_CODESET_OF_HOST "IBM-1047" 
-<p class="level1">The iconv code in libcurl will default the network and UTF8 codeset names as follows: 
-<p class="level1">&nbsp;#define CURL_ICONV_CODESET_OF_NETWORK "ISO8859-1" 
-<p class="level1">&nbsp;#define CURL_ICONV_CODESET_FOR_UTF8   "UTF-8" 
-<p class="level1">You will need to override these definitions if they are different on your system. 
+<p class="level1">Callback for code base conversion. See <span Class="emphasis">CURLOPT_CONV_FROM_UTF8_FUNCTION(3)</span> 
 <p class="level0"><a name="CURLOPTINTERLEAVEFUNCTION"></a><span class="nroffip">CURLOPT_INTERLEAVEFUNCTION</span> 
 <p class="level0"><a name="CURLOPTINTERLEAVEFUNCTION"></a><span class="nroffip">CURLOPT_INTERLEAVEFUNCTION</span> 
-<p class="level1">Pass a pointer to a function that matches the following prototype: <span class="bold">size_t function( void *ptr, size_t size, size_t nmemb, void *userdata)</span>. This function gets called by libcurl as soon as it has received interleaved RTP data. This function gets called for each $ block and therefore contains exactly one upper-layer protocol unit (e.g.  one RTP packet). Curl writes the interleaved header as well as the included data for each call. The first byte is always an ASCII dollar sign. The dollar sign is followed by a one byte channel identifier and then a 2 byte integer length in network byte order. See <span Class="emphasis"><a href="http://www.ietf.org/rfc/rfc2326.txt">RFC 2326</a> Section 10.12</span> for more information on how RTP interleaving behaves. If unset or set to NULL, curl will use the default write function. 
-<p class="level1">Interleaved RTP poses some challenges for the client application. Since the stream data is sharing the RTSP control connection, it is critical to service the RTP in a timely fashion. If the RTP data is not handled quickly, subsequent response processing may become unreasonably delayed and the connection may close. The application may use <a class="emphasis" href="#CURLRTSPREQRECEIVE">CURL_RTSPREQ_RECEIVE</a> to service RTP data when no requests are desired. If the application makes a request, (e.g.  <a class="emphasis" href="#CURLRTSPREQPAUSE">CURL_RTSPREQ_PAUSE</a>) then the response handler will process any pending RTP data before marking the request as finished.  (Added in 7.20.0) 
+<p class="level1">Callback for RTSP interleaved data. See <span Class="emphasis">CURLOPT_INTERLEAVEFUNCTION(3)</span> 
 <p class="level0"><a name="CURLOPTINTERLEAVEDATA"></a><span class="nroffip">CURLOPT_INTERLEAVEDATA</span> 
 <p class="level0"><a name="CURLOPTINTERLEAVEDATA"></a><span class="nroffip">CURLOPT_INTERLEAVEDATA</span> 
-<p class="level1">This is the userdata pointer that will be passed to <a class="emphasis" href="#CURLOPTINTERLEAVEFUNCTION">CURLOPT_INTERLEAVEFUNCTION</a> when interleaved RTP data is received. (Added in 7.20.0) 
+<p class="level1">Data pointer to pass to the RTSP interleave callback. See <span Class="emphasis">CURLOPT_INTERLEAVEDATA(3)</span> 
 <p class="level0"><a name="CURLOPTCHUNKBGNFUNCTION"></a><span class="nroffip">CURLOPT_CHUNK_BGN_FUNCTION</span> 
 <p class="level0"><a name="CURLOPTCHUNKBGNFUNCTION"></a><span class="nroffip">CURLOPT_CHUNK_BGN_FUNCTION</span> 
-<p class="level1">Pass a pointer to a function that matches the following prototype: <span Class="bold">long function (const void *transfer_info, void *ptr, int remains)</span>. This function gets called by libcurl before a part of the stream is going to be transferred (if the transfer supports chunks). 
-<p class="level1">This callback makes sense only when using the <a class="emphasis" href="#CURLOPTWILDCARDMATCH">CURLOPT_WILDCARDMATCH</a> option for now. 
-<p class="level1">The target of transfer_info parameter is a "feature depended" structure. For the FTP wildcard download, the target is curl_fileinfo structure (see <span Class="emphasis">curl/curl.h</span>).  The parameter ptr is a pointer given by <a class="emphasis" href="#CURLOPTCHUNKDATA">CURLOPT_CHUNK_DATA</a>. The parameter remains contains number of chunks remaining per the transfer. If the feature is not available, the parameter has zero value. 
-<p class="level1">Return <span Class="emphasis">CURL_CHUNK_BGN_FUNC_OK</span> if everything is fine, <span Class="emphasis">CURL_CHUNK_BGN_FUNC_SKIP</span> if you want to skip the concrete chunk or <span Class="emphasis">CURL_CHUNK_BGN_FUNC_FAIL</span> to tell libcurl to stop if some error occurred. (This was added in 7.21.0) 
+<p class="level1">Callback for wildcard download start of chunk. See <span Class="emphasis">CURLOPT_CHUNK_BGN_FUNCTION(3)</span> 
 <p class="level0"><a name="CURLOPTCHUNKENDFUNCTION"></a><span class="nroffip">CURLOPT_CHUNK_END_FUNCTION</span> 
 <p class="level0"><a name="CURLOPTCHUNKENDFUNCTION"></a><span class="nroffip">CURLOPT_CHUNK_END_FUNCTION</span> 
-<p class="level1">Pass a pointer to a function that matches the following prototype: <span Class="bold">long function(void *ptr)</span>. This function gets called by libcurl as soon as a part of the stream has been transferred (or skipped). 
-<p class="level1">Return <span Class="emphasis">CURL_CHUNK_END_FUNC_OK</span> if everything is fine or <span Class="bold">CURL_CHUNK_END_FUNC_FAIL</span> to tell the lib to stop if some error occurred. (This was added in 7.21.0) 
+<p class="level1">Callback for wildcard download end of chunk. See <span Class="emphasis">CURLOPT_CHUNK_END_FUNCTION(3)</span> 
 <p class="level0"><a name="CURLOPTCHUNKDATA"></a><span class="nroffip">CURLOPT_CHUNK_DATA</span> 
 <p class="level0"><a name="CURLOPTCHUNKDATA"></a><span class="nroffip">CURLOPT_CHUNK_DATA</span> 
-<p class="level1">Pass a pointer that will be untouched by libcurl and passed as the ptr argument to the <span Class="emphasis">CURL_CHUNK_BGN_FUNTION</span> and <span Class="emphasis">CURL_CHUNK_END_FUNTION</span>. (This was added in 7.21.0) 
+<p class="level1">Data pointer to pass to the chunk callbacks. See <span Class="emphasis">CURLOPT_CHUNK_DATA(3)</span> 
 <p class="level0"><a name="CURLOPTFNMATCHFUNCTION"></a><span class="nroffip">CURLOPT_FNMATCH_FUNCTION</span> 
 <p class="level0"><a name="CURLOPTFNMATCHFUNCTION"></a><span class="nroffip">CURLOPT_FNMATCH_FUNCTION</span> 
-<p class="level1">Pass a pointer to a function that matches the following prototype: <span class="bold">int function(void *ptr, const char *pattern, const char *string)</span> prototype (see <span Class="emphasis">curl/curl.h</span>). It is used internally for the wildcard matching feature. 
-<p class="level1">Return <span Class="emphasis">CURL_FNMATCHFUNC_MATCH</span> if pattern matches the string, <span Class="emphasis">CURL_FNMATCHFUNC_NOMATCH</span> if not or <span Class="emphasis">CURL_FNMATCHFUNC_FAIL</span> if an error occurred.  (This was added in 7.21.0) 
+<p class="level1">Callback for wildcard matching. See <span Class="emphasis">CURLOPT_FNMATCH_FUNCTION(3)</span> 
 <p class="level0"><a name="CURLOPTFNMATCHDATA"></a><span class="nroffip">CURLOPT_FNMATCH_DATA</span> 
 <p class="level0"><a name="CURLOPTFNMATCHDATA"></a><span class="nroffip">CURLOPT_FNMATCH_DATA</span> 
-<p class="level1">Pass a pointer that will be untouched by libcurl and passed as the ptr argument to the <span Class="emphasis">CURL_FNMATCH_FUNCTION</span>. (This was added in 7.21.0) <a name="ERROR"></a><h2 class="nroffsh">ERROR OPTIONS</h2>
+<p class="level1">Data pointer to pass to the wildcard matching callback. See <span Class="emphasis">CURLOPT_FNMATCH_DATA(3)</span> <a name="ERROR"></a><h2 class="nroffsh">ERROR OPTIONS</h2>
 <p class="level0">
 <p class="level0"><a name="CURLOPTERRORBUFFER"></a><span class="nroffip">CURLOPT_ERRORBUFFER</span> 
 <p class="level0">
 <p class="level0"><a name="CURLOPTERRORBUFFER"></a><span class="nroffip">CURLOPT_ERRORBUFFER</span> 
-<p class="level1">Pass a char * to a buffer that the libcurl may store human readable error messages in. This may be more helpful than just the return code from <span Class="emphasis">curl_easy_perform</span>. The buffer must be at least CURL_ERROR_SIZE big. Although this argument is a 'char *', it does not describe an input string. Therefore the (probably undefined) contents of the buffer is NOT copied by the library. You must keep the associated storage available until libcurl no longer needs it. Failing to do so will cause very odd behavior or even crashes. libcurl will need it until you call <a class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup(3)</a> or you set the same option again to use a different pointer. 
-<p class="level1">Use <a class="emphasis" href="#CURLOPTVERBOSE">CURLOPT_VERBOSE</a> and <a class="emphasis" href="#CURLOPTDEBUGFUNCTION">CURLOPT_DEBUGFUNCTION</a> to better debug/trace why errors happen. 
-<p class="level1">If the library does not return an error, the buffer may not have been touched. Do not rely on the contents in those cases. 
-<p class="level1">
+<p class="level1">Error message buffer. See <span Class="emphasis">CURLOPT_ERRORBUFFER(3)</span> 
 <p class="level0"><a name="CURLOPTSTDERR"></a><span class="nroffip">CURLOPT_STDERR</span> 
 <p class="level0"><a name="CURLOPTSTDERR"></a><span class="nroffip">CURLOPT_STDERR</span> 
-<p class="level1">Pass a FILE * as parameter. Tell libcurl to use this stream instead of stderr when showing the progress meter and displaying <a class="emphasis" href="#CURLOPTVERBOSE">CURLOPT_VERBOSE</a> data. 
+<p class="level1">stderr replacement stream. See <span Class="emphasis">CURLOPT_STDERR(3)</span> 
 <p class="level0"><a name="CURLOPTFAILONERROR"></a><span class="nroffip">CURLOPT_FAILONERROR</span> 
 <p class="level0"><a name="CURLOPTFAILONERROR"></a><span class="nroffip">CURLOPT_FAILONERROR</span> 
-<p class="level1">A parameter set to 1 tells the library to fail silently if the HTTP code returned is equal to or larger than 400. The default action would be to return the page normally, ignoring that code. 
-<p class="level1">This method is not fail-safe and there are occasions where non-successful response codes will slip through, especially when authentication is involved (response codes 401 and 407). 
-<p class="level1">You might get some amounts of headers transferred before this situation is detected, like when a "100-continue" is received as a response to a POST/PUT and a 401 or 407 is received immediately afterwards. <a name="NETWORK"></a><h2 class="nroffsh">NETWORK OPTIONS</h2>
+<p class="level1">Fail on HTTP 4xx errors. <span Class="emphasis">CURLOPT_FAILONERROR(3)</span> <a name="NETWORK"></a><h2 class="nroffsh">NETWORK OPTIONS</h2>
 <p class="level0">
 <p class="level0"><a name="CURLOPTURL"></a><span class="nroffip">CURLOPT_URL</span> 
 <p class="level0">
 <p class="level0"><a name="CURLOPTURL"></a><span class="nroffip">CURLOPT_URL</span> 
-<p class="level1">Pass in a pointer to the actual URL to deal with. The parameter should be a char * to a zero terminated string which must be URL-encoded in the following format: 
-<p class="level1">scheme://host:port/path 
-<p class="level1">For a greater explanation of the format please see <a href="http://www.ietf.org/rfc/rfc3986.txt">RFC 3986</a>. 
-<p class="level1">If the given URL lacks the scheme (such as "http://" or "ftp://" etc) then libcurl will attempt to resolve the protocol based on one of the following given host names: 
-<p class="level1">HTTP, FTP, DICT, LDAP, IMAP, POP3 or SMTP 
-<p class="level1">(POP3 and SMTP added in 7.31.0) 
-<p class="level1">Should the protocol, either that specified by the scheme or deduced by libcurl from the host name, not be supported by libcurl then (<span Class="emphasis">CURLE_UNSUPPORTED_PROTOCOL</span>) will be returned from either the <a class="emphasis" href="./curl_easy_perform.html">curl_easy_perform(3)</a> or <a class="emphasis" href="./curl_multi_perform.html">curl_multi_perform(3)</a> functions when you call them. Use <a class="emphasis" href="./curl_version_info.html">curl_version_info(3)</a> for detailed information of which protocols are supported by the build of libcurl you are using. 
-<p class="level1">The host part of the URL contains the address of the server that you want to connect to. This can be the fully qualified domain name of the server, the local network name of the machine on your network or the IP address of the server or machine represented by either an IPv4 or IPv6 address. For example: 
-<p class="level1"><a href="http://www.example.com/">http://www.example.com/</a> 
-<p class="level1"><a href="http://hostname/">http://hostname/</a> 
-<p class="level1"><a href="http://192.168.0.1/">http://192.168.0.1/</a> 
-<p class="level1">http://[2001:1890:1112:1::20]/ 
-<p class="level1">It is also possible to specify the user name, password and any supported login options as part of the host, for the following protocols, when connecting to servers that require authentication: 
-<p class="level1"><a href="http://user">http://user</a>:password@www.example.com 
-<p class="level1"><a href="ftp://user">ftp://user</a>:password@ftp.example.com 
-<p class="level1">imap://user:password;options@mail.example.com 
-<p class="level1">pop3://user:password;options@mail.example.com 
-<p class="level1">smtp://user:password;options@mail.example.com 
-<p class="level1">At present only IMAP, POP3 and SMTP support login options as part of the host. For more information about the login options in URL syntax please see <a href="http://www.ietf.org/rfc/rfc2384.txt">RFC 2384</a>, <a href="http://www.ietf.org/rfc/rfc5092.txt">RFC 5092</a> and IETF draft draft-earhart-url-smtp-00.txt (Added in 7.31.0). 
-<p class="level1">The port is optional and when not specified libcurl will use the default port based on the determined or specified protocol: 80 for HTTP, 21 for FTP and 25 for SMTP, etc. The following examples show how to specify the port: 
-<p class="level1"><a href="http://www.example.com">http://www.example.com</a>:8080/ - This will connect to a web server using port 8080 rather than 80. 
-<p class="level1">smtp://mail.example.com:587/ - This will connect to a SMTP server on the alternative mail port. 
-<p class="level1">The path part of the URL is protocol specific and whilst some examples are given below this list is not conclusive: 
-<p class="level1"><a class="bold" href="#HTTP">HTTP</a> 
-<p class="level1">The path part of a HTTP request specifies the file to retrieve and from what directory. If the directory is not specified then the web server's root directory is used. If the file is omitted then the default document will be retrieved for either the directory specified or the root directory. The exact resource returned for each URL is entirely dependent on the server's configuration. 
-<p class="level1"><a href="http://www.example.com">http://www.example.com</a> - This gets the main page from the web server. 
-<p class="level1"><a href="http://www.example.com/index.html">http://www.example.com/index.html</a> - This returns the main page by explicitly requesting it. 
-<p class="level1"><a href="http://www.example.com/contactus/">http://www.example.com/contactus/</a> - This returns the default document from the contactus directory. 
-<p class="level1"><a class="bold" href="#FTP">FTP</a> 
-<p class="level1">The path part of an FTP request specifies the file to retrieve and from what directory. If the file part is omitted then libcurl downloads the directory listing for the directory specified. If the directory is omitted then the directory listing for the root / home directory will be returned. 
-<p class="level1"><a href="ftp://ftp.example.com">ftp://ftp.example.com</a> - This retrieves the directory listing for the root directory. 
-<p class="level1"><a href="ftp://ftp.example.com/readme.txt">ftp://ftp.example.com/readme.txt</a> - This downloads the file readme.txt from the root directory. 
-<p class="level1"><a href="ftp://ftp.example.com/libcurl/readme.txt">ftp://ftp.example.com/libcurl/readme.txt</a> - This downloads readme.txt from the libcurl directory. 
-<p class="level1"><a href="ftp://user">ftp://user</a>:password@ftp.example.com/readme.txt - This retrieves the readme.txt file from the user's home directory. When a username and password is specified, everything that is specified in the path part is relative to the user's home directory. To retrieve files from the root directory or a directory underneath the root directory then the absolute path must be specified by prepending an additional forward slash to the beginning of the path. 
-<p class="level1"><a href="ftp://user">ftp://user</a>:password@ftp.example.com//readme.txt - This retrieves the readme.txt from the root directory when logging in as a specified user. 
-<p class="level1"><a class="bold" href="#SMTP">SMTP</a> 
-<p class="level1">The path part of a SMTP request specifies the host name to present during communication with the mail server. If the path is omitted then libcurl will attempt to resolve the local computer's host name. However, this may not return the fully qualified domain name that is required by some mail servers and specifying this path allows you to set an alternative name, such as your machine's fully qualified domain name, which you might have obtained from an external function such as gethostname or getaddrinfo. 
-<p class="level1">smtp://mail.example.com - This connects to the mail server at example.com and sends your local computer's host name in the HELO / EHLO command. 
-<p class="level1">smtp://mail.example.com/client.example.com - This will send client.example.com in the HELO / EHLO command to the mail server at example.com. 
-<p class="level1"><span Class="bold">POP3</span> 
-<p class="level1">The path part of a POP3 request specifies the message ID to retrieve. If the ID is not specified then a list of waiting messages is returned instead. 
-<p class="level1">pop3://user:password@mail.example.com - This lists the available messages for the user 
-<p class="level1">pop3://user:password@mail.example.com/1 - This retrieves the first message for the user 
-<p class="level1"><span Class="bold">IMAP</span> 
-<p class="level1">The path part of an IMAP request not only specifies the mailbox to list (Added in 7.30.0) or select, but can also be used to check the UIDVALIDITY of the mailbox and to specify the UID and SECTION of the message to fetch (Added in 7.30.0). 
-<p class="level1">imap://user:password@mail.example.com - Performs a top level folder list 
-<p class="level1">imap://user:password@mail.example.com/INBOX - Performs a folder list on the user's inbox 
-<p class="level1">imap://user:password@mail.example.com/INBOX/;UID=1 - Selects the user's inbox and fetches message 1 
-<p class="level1">imap://user:password@mail.example.com/INBOX;UIDVALIDITY=50/;UID=2 - Selects the user's inbox, checks the UIDVALIDITY of the mailbox is 50 and fetches message 2 if it is 
-<p class="level1">imap://user:password@mail.example.com/INBOX/;UID=3/;SECTION=TEXT - Selects the user's inbox and fetches message 3 with only the text portion of the message 
-<p class="level1">For more information about the individual components of an IMAP URL please see <a href="http://www.ietf.org/rfc/rfc5092.txt">RFC 5092</a>. 
-<p class="level1"><span Class="bold">SCP</span> 
-<p class="level1">The path part of a SCP request specifies the file to retrieve and from what directory. The file part may not be omitted. The file is taken as an absolute path from the root directory on the server. To specify a path relative to the user's home directory on the server, prepend ~/ to the path portion. If the user name is not embedded in the URL, it can be set with the <a class="emphasis" href="#CURLOPTUSERPWD">CURLOPT_USERPWD</a> or <a class="bold" href="#CURLOPTUSERNAME">CURLOPT_USERNAME</a> option. 
-<p class="level1">scp://user@example.com/etc/issue - This specifies the file /etc/issue 
-<p class="level1">scp://example.com/~/my-file - This specifies the file my-file in the user's home directory on the server 
-<p class="level1"><span Class="bold">SFTP</span> 
-<p class="level1">The path part of a SFTP request specifies the file to retrieve and from what directory. If the file part is omitted then libcurl downloads the directory listing for the directory specified.  If the path ends in a / then a directory listing is returned instead of a file.  If the path is omitted entirely then the directory listing for the root / home directory will be returned. If the user name is not embedded in the URL, it can be set with the <a class="emphasis" href="#CURLOPTUSERPWD">CURLOPT_USERPWD</a> or <a class="bold" href="#CURLOPTUSERNAME">CURLOPT_USERNAME</a> option. 
-<p class="level1">s<a href="ftp://user">ftp://user</a>:password@example.com/etc/issue - This specifies the file /etc/issue 
-<p class="level1">s<a href="ftp://user">ftp://user</a>@example.com/~/my-file - This specifies the file my-file in the user's home directory 
-<p class="level1">s<a href="ftp://ssh.example.com/">ftp://ssh.example.com/</a>~/Documents/ - This requests a directory listing of the Documents directory under the user's home directory 
-<p class="level1"><span Class="bold">LDAP</span> 
-<p class="level1">The path part of a LDAP request can be used to specify the: Distinguished Name, Attributes, Scope, Filter and Extension for a LDAP search. Each field is separated by a question mark and when that field is not required an empty string with the question mark separator should be included. 
-<p class="level1">ldap://ldap.example.com/o=My%20Organisation - This will perform a LDAP search with the DN as My Organisation. 
-<p class="level1">ldap://ldap.example.com/o=My%20Organisation?postalAddress - This will perform the same search but will only return postalAddress attributes. 
-<p class="level1">ldap://ldap.example.com/?rootDomainNamingContext - This specifies an empty DN and requests information about the rootDomainNamingContext attribute for an Active Directory server. 
-<p class="level1">For more information about the individual components of a LDAP URL please see <a href="http://www.ietf.org/rfc/rfc4516.txt">RFC 4516</a>. 
-<p class="level1"><span Class="bold">NOTES</span> 
-<p class="level1">Starting with version 7.20.0, the fragment part of the URI will not be sent as part of the path, which was previously the case. 
-<p class="level1"><a class="emphasis" href="#CURLOPTURL">CURLOPT_URL</a> is the only option that <span Class="bold">must</span> be set before <a class="emphasis" href="./curl_easy_perform.html">curl_easy_perform(3)</a> is called. 
-<p class="level1"><a class="emphasis" href="#CURLOPTPROTOCOLS">CURLOPT_PROTOCOLS</a> can be used to limit what protocols libcurl will use for this transfer, independent of what libcurl has been compiled to support. That may be useful if you accept the URL from an external source and want to limit the accessibility. 
+<p class="level1">URL to work on. See <span Class="emphasis">CURLOPT_URL(3)</span> 
 <p class="level0"><a name="CURLOPTPROTOCOLS"></a><span class="nroffip">CURLOPT_PROTOCOLS</span> 
 <p class="level0"><a name="CURLOPTPROTOCOLS"></a><span class="nroffip">CURLOPT_PROTOCOLS</span> 
-<p class="level1">Pass a long that holds a bitmask of CURLPROTO_* defines. If used, this bitmask limits what protocols libcurl may use in the transfer. This allows you to have a libcurl built to support a wide range of protocols but still limit specific transfers to only be allowed to use a subset of them. By default libcurl will accept all protocols it supports. See also <a class="emphasis" href="#CURLOPTREDIRPROTOCOLS">CURLOPT_REDIR_PROTOCOLS</a>. (Added in 7.19.4) 
+<p class="level1">Allowed protocols. See <span Class="emphasis">CURLOPT_PROTOCOLS(3)</span> 
 <p class="level0"><a name="CURLOPTREDIRPROTOCOLS"></a><span class="nroffip">CURLOPT_REDIR_PROTOCOLS</span> 
 <p class="level0"><a name="CURLOPTREDIRPROTOCOLS"></a><span class="nroffip">CURLOPT_REDIR_PROTOCOLS</span> 
-<p class="level1">Pass a long that holds a bitmask of CURLPROTO_* defines. If used, this bitmask limits what protocols libcurl may use in a transfer that it follows to in a redirect when <a class="emphasis" href="#CURLOPTFOLLOWLOCATION">CURLOPT_FOLLOWLOCATION</a> is enabled. This allows you to limit specific transfers to only be allowed to use a subset of protocols in redirections. By default libcurl will allow all protocols except for FILE and SCP. This is a difference compared to pre-7.19.4 versions which unconditionally would follow to all protocols supported. (Added in 7.19.4) 
+<p class="level1">Protocols to allow redirects to. See <span Class="emphasis">CURLOPT_REDIR_PROTOCOLS(3)</span> 
 <p class="level0"><a name="CURLOPTPROXY"></a><span class="nroffip">CURLOPT_PROXY</span> 
 <p class="level0"><a name="CURLOPTPROXY"></a><span class="nroffip">CURLOPT_PROXY</span> 
-<p class="level1">Set HTTP proxy to use. The parameter should be a char * to a zero terminated string holding the host name or dotted IP address. To specify port number in this string, append :[port] to the end of the host name. The proxy string may be prefixed with [protocol]:// since any such prefix will be ignored. The proxy's port number may optionally be specified with the separate option. If not specified, libcurl will default to using port 1080 for proxies. <a class="emphasis" href="#CURLOPTPROXYPORT">CURLOPT_PROXYPORT</a>. 
-<p class="level1">When you tell the library to use a HTTP proxy, libcurl will transparently convert operations to HTTP even if you specify an FTP URL etc. This may have an impact on what other features of the library you can use, such as <a class="emphasis" href="#CURLOPTQUOTE">CURLOPT_QUOTE</a> and similar FTP specifics that don't work unless you tunnel through the HTTP proxy. Such tunneling is activated with <a class="emphasis" href="#CURLOPTHTTPPROXYTUNNEL">CURLOPT_HTTPPROXYTUNNEL</a>. 
-<p class="level1">libcurl respects the environment variables <span Class="bold">http_proxy</span>, <span Class="bold">ftp_proxy</span>, <span Class="bold">all_proxy</span> etc, if any of those are set. The <a class="emphasis" href="#CURLOPTPROXY">CURLOPT_PROXY</a> option does however override any possibly set environment variables. 
-<p class="level1">Setting the proxy string to "" (an empty string) will explicitly disable the use of a proxy, even if there is an environment variable set for it. 
-<p class="level1">Since 7.14.1, the proxy host string given in environment variables can be specified the exact same way as the proxy can be set with <a class="emphasis" href="#CURLOPTPROXY">CURLOPT_PROXY</a>, include protocol prefix (http://) and embedded user + password. 
-<p class="level1">Since 7.21.7, the proxy string may be specified with a protocol:// prefix to specify alternative proxy protocols. Use socks4://, socks4a://, socks5:// or socks5h:// (the last one to enable socks5 and asking the proxy to do the resolving, also known as CURLPROXY_SOCKS5_HOSTNAME type) to request the specific SOCKS version to be used. No protocol specified, http:// and all others will be treated as HTTP proxies. 
+<p class="level1">Proxy to use. See <span Class="emphasis">CURLOPT_PROXY(3)</span> 
 <p class="level0"><a name="CURLOPTPROXYPORT"></a><span class="nroffip">CURLOPT_PROXYPORT</span> 
 <p class="level0"><a name="CURLOPTPROXYPORT"></a><span class="nroffip">CURLOPT_PROXYPORT</span> 
-<p class="level1">Pass a long with this option to set the proxy port to connect to unless it is specified in the proxy string <a class="emphasis" href="#CURLOPTPROXY">CURLOPT_PROXY</a>. 
+<p class="level1">Proxy port to use. See <span Class="emphasis">CURLOPT_PROXYPORT(3)</span> 
 <p class="level0"><a name="CURLOPTPROXYTYPE"></a><span class="nroffip">CURLOPT_PROXYTYPE</span> 
 <p class="level0"><a name="CURLOPTPROXYTYPE"></a><span class="nroffip">CURLOPT_PROXYTYPE</span> 
-<p class="level1">Pass a long with this option to set type of the proxy. Available options for this are <span Class="emphasis">CURLPROXY_HTTP</span>, <span Class="emphasis">CURLPROXY_HTTP_1_0</span> (added in 7.19.4), <span Class="emphasis">CURLPROXY_SOCKS4</span> (added in 7.10), <span Class="emphasis">CURLPROXY_SOCKS5</span>, <span Class="emphasis">CURLPROXY_SOCKS4A</span> (added in 7.18.0) and <span Class="emphasis">CURLPROXY_SOCKS5_HOSTNAME</span> (added in 7.18.0). The HTTP type is default. (Added in 7.10) 
-<p class="level1">If you set <a class="bold" href="#CURLOPTPROXYTYPE">CURLOPT_PROXYTYPE</a> to <span Class="emphasis">CURLPROXY_HTTP_1_0</span>, it will only affect how libcurl speaks to a proxy when CONNECT is used. The HTTP version used for "regular" HTTP requests is instead controlled with <a class="emphasis" href="#CURLOPTHTTPVERSION">CURLOPT_HTTP_VERSION</a>. 
+<p class="level1">Proxy type. See <span Class="emphasis">CURLOPT_PROXYTYPE(3)</span> 
 <p class="level0"><a name="CURLOPTNOPROXY"></a><span class="nroffip">CURLOPT_NOPROXY</span> 
 <p class="level0"><a name="CURLOPTNOPROXY"></a><span class="nroffip">CURLOPT_NOPROXY</span> 
-<p class="level1">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.  (Added in 7.19.4) 
+<p class="level1">Filter out hosts from proxy use. <span Class="emphasis">CURLOPT_NOPROXY(3)</span> 
 <p class="level0"><a name="CURLOPTHTTPPROXYTUNNEL"></a><span class="nroffip">CURLOPT_HTTPPROXYTUNNEL</span> 
 <p class="level0"><a name="CURLOPTHTTPPROXYTUNNEL"></a><span class="nroffip">CURLOPT_HTTPPROXYTUNNEL</span> 
-<p class="level1">Set the parameter to 1 to make the library tunnel all operations through a given HTTP proxy. There is a big difference between using a proxy and to tunnel through it. If you don't know what this means, you probably don't want this tunneling option. 
+<p class="level1">Tunnel through the HTTP proxy. <span Class="emphasis">CURLOPT_HTTPPROXYTUNNEL(3)</span> 
 <p class="level0"><a name="CURLOPTSOCKS5GSSAPISERVICE"></a><span class="nroffip">CURLOPT_SOCKS5_GSSAPI_SERVICE</span> 
 <p class="level0"><a name="CURLOPTSOCKS5GSSAPISERVICE"></a><span class="nroffip">CURLOPT_SOCKS5_GSSAPI_SERVICE</span> 
-<p class="level1">Pass a char * as parameter to a string holding the name of the service. The default service name for a SOCKS5 server is rcmd/server-fqdn. This option allows you to change it. (Added in 7.19.4) 
+<p class="level1">Socks5 GSSAPI service name. <span Class="emphasis">CURLOPT_SOCKS5_GSSAPI_SERVICE(3)</span> 
 <p class="level0"><a name="CURLOPTSOCKS5GSSAPINEC"></a><span class="nroffip">CURLOPT_SOCKS5_GSSAPI_NEC</span> 
 <p class="level0"><a name="CURLOPTSOCKS5GSSAPINEC"></a><span class="nroffip">CURLOPT_SOCKS5_GSSAPI_NEC</span> 
-<p class="level1">Pass a long set to 1 to enable or 0 to disable. As part of the gssapi negotiation a protection mode is negotiated. The <a href="http://www.ietf.org/rfc/rfc1961.txt">RFC 1961</a> says in section 4.3/4.4 it should be protected, but the NEC reference implementation does not. If enabled, this option allows the unprotected exchange of the protection mode negotiation. (Added in 7.19.4). 
+<p class="level1">Socks5 GSSAPI NEC mode. See <span Class="emphasis">CURLOPT_SOCKS5_GSSAPI_NEC(3)</span> 
 <p class="level0"><a name="CURLOPTINTERFACE"></a><span class="nroffip">CURLOPT_INTERFACE</span> 
 <p class="level0"><a name="CURLOPTINTERFACE"></a><span class="nroffip">CURLOPT_INTERFACE</span> 
-<p class="level1">Pass a char * as parameter. This sets the interface name to use as outgoing network interface. The name can be an interface name, an IP address, or a host name. 
-<p class="level1">Starting with 7.24.0: If the parameter starts with "if!" then it is treated as only as interface name and no attempt will ever be named to do treat it as an IP address or to do name resolution on it.  If the parameter starts with "host!" it is treated as either an IP address or a hostname.  Hostnames are resolved synchronously.  Using the if! format is highly recommended when using the multi interfaces to avoid allowing the code to block.  If "if!" is specified but the parameter does not match an existing interface, CURLE_INTERFACE_FAILED is returned. 
+<p class="level1">Bind connection locally to this. See <span Class="emphasis">CURLOPT_INTERFACE(3)</span> 
 <p class="level0"><a name="CURLOPTLOCALPORT"></a><span class="nroffip">CURLOPT_LOCALPORT</span> 
 <p class="level0"><a name="CURLOPTLOCALPORT"></a><span class="nroffip">CURLOPT_LOCALPORT</span> 
-<p class="level1">Pass a long. This sets the local port number of the socket used for connection. This can be used in combination with <a class="emphasis" href="#CURLOPTINTERFACE">CURLOPT_INTERFACE</a> and you are recommended to use <a class="emphasis" href="#CURLOPTLOCALPORTRANGE">CURLOPT_LOCALPORTRANGE</a> as well when this is set. Valid port numbers are 1 - 65535. (Added in 7.15.2) 
+<p class="level1">Bind connection locally to this port. See <span Class="emphasis">CURLOPT_LOCALPORT(3)</span> 
 <p class="level0"><a name="CURLOPTLOCALPORTRANGE"></a><span class="nroffip">CURLOPT_LOCALPORTRANGE</span> 
 <p class="level0"><a name="CURLOPTLOCALPORTRANGE"></a><span class="nroffip">CURLOPT_LOCALPORTRANGE</span> 
-<p class="level1">Pass a long. This is the number of attempts libcurl will make to find a working local port number. It starts with the given <a class="emphasis" href="#CURLOPTLOCALPORT">CURLOPT_LOCALPORT</a> and adds one to the number for each retry. Setting this to 1 or below will make libcurl do only one try for the exact port number. Port numbers by nature are scarce resources that will be busy at times so setting this value to something too low might cause unnecessary connection setup failures. (Added in 7.15.2) 
+<p class="level1">Bind connection locally to port range. See <span Class="emphasis">CURLOPT_LOCALPORTRANGE(3)</span> 
 <p class="level0"><a name="CURLOPTDNSCACHETIMEOUT"></a><span class="nroffip">CURLOPT_DNS_CACHE_TIMEOUT</span> 
 <p class="level0"><a name="CURLOPTDNSCACHETIMEOUT"></a><span class="nroffip">CURLOPT_DNS_CACHE_TIMEOUT</span> 
-<p class="level1">Pass a long, this sets the timeout in seconds. Name resolves will be kept in memory for this number of seconds. Set to zero to completely disable caching, or set to -1 to make the cached entries remain forever. By default, libcurl caches this info for 60 seconds. 
-<p class="level1">The name resolve functions of various libc implementations don't re-read name server information unless explicitly told so (for example, by calling <span Class="emphasis">res_init(3)</span>). This may cause libcurl to keep using the older server even if DHCP has updated the server info, and this may look like a DNS cache issue to the casual libcurl-app user. 
+<p class="level1">Timeout for DNS cache. See <span Class="emphasis">CURLOPT_DNS_CACHE_TIMEOUT(3)</span> 
 <p class="level0"><a name="CURLOPTDNSUSEGLOBALCACHE"></a><span class="nroffip">CURLOPT_DNS_USE_GLOBAL_CACHE</span> 
 <p class="level0"><a name="CURLOPTDNSUSEGLOBALCACHE"></a><span class="nroffip">CURLOPT_DNS_USE_GLOBAL_CACHE</span> 
-<p class="level1">Pass a long. If the value is 1, it tells curl to use a global DNS cache that will survive between easy handle creations and deletions. This is not thread-safe and this will use a global variable. 
-<p class="level1"><span Class="bold">WARNING:</span> this option is considered obsolete. Stop using it. Switch over to using the share interface instead! See <a class="emphasis" href="#CURLOPTSHARE">CURLOPT_SHARE</a> and <a class="emphasis" href="./curl_share_init.html">curl_share_init(3)</a>. 
+<p class="level1">OBSOLETE Enable global DNS cache. See <span Class="emphasis">CURLOPT_DNS_USE_GLOBAL_CACHE(3)</span> 
 <p class="level0"><a name="CURLOPTBUFFERSIZE"></a><span class="nroffip">CURLOPT_BUFFERSIZE</span> 
 <p class="level0"><a name="CURLOPTBUFFERSIZE"></a><span class="nroffip">CURLOPT_BUFFERSIZE</span> 
-<p class="level1">Pass a long specifying your preferred size (in bytes) for the receive buffer in libcurl.  The main point of this would be that the write callback gets called more often and with smaller chunks. This is just treated as a request, not an order. You cannot be guaranteed to actually get the given size. (Added in 7.10) 
-<p class="level1">This size is by default set as big as possible (CURL_MAX_WRITE_SIZE), so it only makes sense to use this option if you want it smaller. 
+<p class="level1">Ask for smaller buffer size. See <span Class="emphasis">CURLOPT_BUFFERSIZE(3)</span> 
 <p class="level0"><a name="CURLOPTPORT"></a><span class="nroffip">CURLOPT_PORT</span> 
 <p class="level0"><a name="CURLOPTPORT"></a><span class="nroffip">CURLOPT_PORT</span> 
-<p class="level1">Pass a long specifying what remote port number to connect to, instead of the one specified in the URL or the default port for the used protocol. 
+<p class="level1">Port number to connect to. See <span Class="emphasis">CURLOPT_PORT(3)</span> 
 <p class="level0"><a name="CURLOPTTCPNODELAY"></a><span class="nroffip">CURLOPT_TCP_NODELAY</span> 
 <p class="level0"><a name="CURLOPTTCPNODELAY"></a><span class="nroffip">CURLOPT_TCP_NODELAY</span> 
-<p class="level1">Pass a long specifying whether the TCP_NODELAY option is to be set or cleared (1 = set, 0 = clear). The option is cleared by default. This will have no effect after the connection has been established. 
-<p class="level1">Setting this option will disable TCP's Nagle algorithm. The purpose of this algorithm is to try to minimize the number of small packets on the network (where "small packets" means TCP segments less than the Maximum Segment Size (MSS) for the network). 
-<p class="level1">Maximizing the amount of data sent per TCP segment is good because it amortizes the overhead of the send. However, in some cases (most notably telnet or rlogin) small segments may need to be sent without delay. This is less efficient than sending larger amounts of data at a time, and can contribute to congestion on the network if overdone. 
+<p class="level1">Disable the Nagle algorithm. See <span Class="emphasis">CURLOPT_TCP_NODELAY(3)</span> 
 <p class="level0"><a name="CURLOPTADDRESSSCOPE"></a><span class="nroffip">CURLOPT_ADDRESS_SCOPE</span> 
 <p class="level0"><a name="CURLOPTADDRESSSCOPE"></a><span class="nroffip">CURLOPT_ADDRESS_SCOPE</span> 
-<p class="level1">Pass a long specifying the scope_id value to use when connecting to IPv6 link-local or site-local addresses. (Added in 7.19.0) 
+<p class="level1">IPv6 scope for local addresses. See <span Class="emphasis">CURLOPT_ADDRESS_SCOPE(3)</span> 
 <p class="level0"><a name="CURLOPTTCPKEEPALIVE"></a><span class="nroffip">CURLOPT_TCP_KEEPALIVE</span> 
 <p class="level0"><a name="CURLOPTTCPKEEPALIVE"></a><span class="nroffip">CURLOPT_TCP_KEEPALIVE</span> 
-<p class="level1">Pass a long. If set to 1, TCP keepalive probes will be sent. The delay and frequency of these probes can be controlled by the <a class="emphasis" href="#CURLOPTTCPKEEPIDLE">CURLOPT_TCP_KEEPIDLE</a> and <a class="emphasis" href="#CURLOPTTCPKEEPINTVL">CURLOPT_TCP_KEEPINTVL</a> options, provided the operating system supports them. Set to 0 (default behavior) to disable keepalive probes (Added in 7.25.0). 
+<p class="level1">Enable TCP keep-alive. See <span Class="emphasis">CURLOPT_TCP_KEEPALIVE(3)</span> 
 <p class="level0"><a name="CURLOPTTCPKEEPIDLE"></a><span class="nroffip">CURLOPT_TCP_KEEPIDLE</span> 
 <p class="level0"><a name="CURLOPTTCPKEEPIDLE"></a><span class="nroffip">CURLOPT_TCP_KEEPIDLE</span> 
-<p class="level1">Pass a long. Sets the delay, in seconds, that the operating system will wait while the connection is idle before sending keepalive probes. Not all operating systems support this option. (Added in 7.25.0) 
+<p class="level1">Idle time before sending keep-alive. See <span Class="emphasis">CURLOPT_TCP_KEEPIDLE(3)</span> 
 <p class="level0"><a name="CURLOPTTCPKEEPINTVL"></a><span class="nroffip">CURLOPT_TCP_KEEPINTVL</span> 
 <p class="level0"><a name="CURLOPTTCPKEEPINTVL"></a><span class="nroffip">CURLOPT_TCP_KEEPINTVL</span> 
-<p class="level1">Pass a long. Sets the interval, in seconds, that the operating system will wait between sending keepalive probes. Not all operating systems support this option. (Added in 7.25.0) <a name="NAMES"></a><h2 class="nroffsh">NAMES and PASSWORDS OPTIONS (Authentication)</h2>
+<p class="level1">Interval between keep-alive probes. See <span Class="emphasis">CURLOPT_TCP_KEEPINTVL(3)</span> 
+<p class="level0"><a name="CURLOPTUNIXSOCKETPATH"></a><span class="nroffip">CURLOPT_UNIX_SOCKET_PATH</span> 
+<p class="level1">Path to a Unix domain socket. See <span Class="emphasis">CURLOPT_UNIX_SOCKET_PATH(3)</span> <a name="NAMES"></a><h2 class="nroffsh">NAMES and PASSWORDS OPTIONS (Authentication)</h2>
 <p class="level0">
 <p class="level0"><a name="CURLOPTNETRC"></a><span class="nroffip">CURLOPT_NETRC</span> 
 <p class="level0">
 <p class="level0"><a name="CURLOPTNETRC"></a><span class="nroffip">CURLOPT_NETRC</span> 
-<p class="level1">This parameter controls the preference of libcurl between using user names and passwords from your <span Class="emphasis">~/.netrc</span> file, relative to user names and passwords in the URL supplied with <a class="emphasis" href="#CURLOPTURL">CURLOPT_URL</a>. 
-<p class="level1">libcurl uses a user name (and supplied or prompted password) supplied with <a class="emphasis" href="#CURLOPTUSERPWD">CURLOPT_USERPWD</a> in preference to any of the options controlled by this parameter. 
-<p class="level1">Pass a long, set to one of the values described below. 
-<p class="level2">
-<p class="level1"><a name="CURLNETRCOPTIONAL"></a><span class="nroffip">CURL_NETRC_OPTIONAL</span> 
-<p class="level2">The use of your <span Class="emphasis">~/.netrc</span> file is optional, and information in the URL is to be preferred.  The file will be scanned for the host and user name (to find the password only) or for the host only, to find the first user name and password after that <span Class="emphasis">machine</span>, which ever information is not specified in the URL. 
-<p class="level2">Undefined values of the option will have this effect. 
-<p class="level1"><a name="CURLNETRCIGNORED"></a><span class="nroffip">CURL_NETRC_IGNORED</span> 
-<p class="level2">The library will ignore the file and use only the information in the URL. 
-<p class="level2">This is the default. 
-<p class="level1"><a name="CURLNETRCREQUIRED"></a><span class="nroffip">CURL_NETRC_REQUIRED</span> 
-<p class="level2">This value tells the library that use of the file is required, to ignore the information in the URL, and to search the file for the host only. 
-<p class="level1">Only machine name, user name and password are taken into account (init macros and similar things aren't supported). 
-<p class="level1">libcurl does not verify that the file has the correct properties set (as the standard Unix ftp client does). It should only be readable by user. 
+<p class="level1">Enable .netrc parsing. See <span Class="emphasis">CURLOPT_NETRC(3)</span> 
 <p class="level0"><a name="CURLOPTNETRCFILE"></a><span class="nroffip">CURLOPT_NETRC_FILE</span> 
 <p class="level0"><a name="CURLOPTNETRCFILE"></a><span class="nroffip">CURLOPT_NETRC_FILE</span> 
-<p class="level1">Pass a char * as parameter, pointing to a zero terminated string containing the full path name to the file you want libcurl to use as .netrc file. If this option is omitted, and <a class="emphasis" href="#CURLOPTNETRC">CURLOPT_NETRC</a> is set, libcurl will attempt to find a .netrc file in the current user's home directory. (Added in 7.10.9) 
+<p class="level1">.netrc file name. See <span Class="emphasis">CURLOPT_NETRC_FILE(3)</span> 
 <p class="level0"><a name="CURLOPTUSERPWD"></a><span class="nroffip">CURLOPT_USERPWD</span> 
 <p class="level0"><a name="CURLOPTUSERPWD"></a><span class="nroffip">CURLOPT_USERPWD</span> 
-<p class="level1">Pass a char * as parameter, pointing to a zero terminated login details string for the connection. The format of which is: [user name]:[password];[options]. 
-<p class="level1">When using NTLM, you can set the domain by prepending it to the user name and separating the domain and name with a forward (/) or backward slash (\). Like this: "domain/user:password" or "domain\user:password". Some HTTP servers (on Windows) support this style even for Basic authentication. 
-<p class="level1">When using HTTP and <a class="emphasis" href="#CURLOPTFOLLOWLOCATION">CURLOPT_FOLLOWLOCATION</a>, libcurl might perform several requests to possibly different hosts. libcurl will only send this user and password information to hosts using the initial host name (unless <a class="emphasis" href="#CURLOPTUNRESTRICTEDAUTH">CURLOPT_UNRESTRICTED_AUTH</a> is set), so if libcurl follows locations to other hosts it will not send the user and password to those. This is enforced to prevent accidental information leakage. 
-<p class="level1">At present only IMAP, POP3 and SMTP support login options as part of the details string. For more information about the login options please see <a href="http://www.ietf.org/rfc/rfc2384.txt">RFC 2384</a>, RFC5092 and IETF draft draft-earhart-url-smtp-00.txt (Added in 7.31.0). 
-<p class="level1">Use <a class="emphasis" href="#CURLOPTHTTPAUTH">CURLOPT_HTTPAUTH</a> to specify the authentication method for HTTP based connections. 
+<p class="level1">User name and password. See <span Class="emphasis">CURLOPT_USERPWD(3)</span> 
 <p class="level0"><a name="CURLOPTPROXYUSERPWD"></a><span class="nroffip">CURLOPT_PROXYUSERPWD</span> 
 <p class="level0"><a name="CURLOPTPROXYUSERPWD"></a><span class="nroffip">CURLOPT_PROXYUSERPWD</span> 
-<p class="level1">Pass a char * as parameter, which should be [user name]:[password] to use for the connection to the HTTP proxy. 
-<p class="level1">Use <a class="emphasis" href="#CURLOPTPROXYAUTH">CURLOPT_PROXYAUTH</a> to specify the authentication method. 
+<p class="level1">Proxy user name and password. See <span Class="emphasis">CURLOPT_PROXYUSERPWD(3)</span> 
 <p class="level0"><a name="CURLOPTUSERNAME"></a><span class="nroffip">CURLOPT_USERNAME</span> 
 <p class="level0"><a name="CURLOPTUSERNAME"></a><span class="nroffip">CURLOPT_USERNAME</span> 
-<p class="level1">Pass a char * as parameter, which should be pointing to the zero terminated user name to use for the transfer. 
-<p class="level1"><a class="bold" href="#CURLOPTUSERNAME">CURLOPT_USERNAME</a> sets the user name to be used in protocol authentication. You should not use this option together with the (older) CURLOPT_USERPWD option. 
-<p class="level1">In order to specify the password to be used in conjunction with the user name use the <a class="emphasis" href="#CURLOPTPASSWORD">CURLOPT_PASSWORD</a> option.  (Added in 7.19.1) 
+<p class="level1">User name. See <span Class="emphasis">CURLOPT_USERNAME(3)</span> 
 <p class="level0"><a name="CURLOPTPASSWORD"></a><span class="nroffip">CURLOPT_PASSWORD</span> 
 <p class="level0"><a name="CURLOPTPASSWORD"></a><span class="nroffip">CURLOPT_PASSWORD</span> 
-<p class="level1">Pass a char * as parameter, which should be pointing to the zero terminated password to use for the transfer. 
-<p class="level1">The CURLOPT_PASSWORD option should be used in conjunction with the <a class="emphasis" href="#CURLOPTUSERNAME">CURLOPT_USERNAME</a> option. (Added in 7.19.1) 
+<p class="level1">Password. See <span Class="emphasis">CURLOPT_PASSWORD(3)</span> 
+<p class="level0"><a name="CURLOPTLOGINOPTIONS"></a><span class="nroffip">CURLOPT_LOGIN_OPTIONS</span> 
+<p class="level1">Login options. See <span Class="emphasis">CURLOPT_LOGIN_OPTIONS(3)</span> 
 <p class="level0"><a name="CURLOPTPROXYUSERNAME"></a><span class="nroffip">CURLOPT_PROXYUSERNAME</span> 
 <p class="level0"><a name="CURLOPTPROXYUSERNAME"></a><span class="nroffip">CURLOPT_PROXYUSERNAME</span> 
-<p class="level1">Pass a char * as parameter, which should be pointing to the zero terminated user name to use for the transfer while connecting to Proxy. 
-<p class="level1">The CURLOPT_PROXYUSERNAME option should be used in same way as the <a class="emphasis" href="#CURLOPTPROXYUSERPWD">CURLOPT_PROXYUSERPWD</a> is used.  In comparison to <a class="emphasis" href="#CURLOPTPROXYUSERPWD">CURLOPT_PROXYUSERPWD</a> the CURLOPT_PROXYUSERNAME allows the username to contain a colon, like in the following example: "sip:user@example.com". The CURLOPT_PROXYUSERNAME option is an alternative way to set the user name while connecting to Proxy.  There is no meaning to use it together with the <a class="emphasis" href="#CURLOPTPROXYUSERPWD">CURLOPT_PROXYUSERPWD</a> option. 
-<p class="level1">In order to specify the password to be used in conjunction with the user name use the <a class="emphasis" href="#CURLOPTPROXYPASSWORD">CURLOPT_PROXYPASSWORD</a> option.  (Added in 7.19.1) 
+<p class="level1">Proxy user name. See <span Class="emphasis">CURLOPT_PROXYUSERNAME(3)</span> 
 <p class="level0"><a name="CURLOPTPROXYPASSWORD"></a><span class="nroffip">CURLOPT_PROXYPASSWORD</span> 
 <p class="level0"><a name="CURLOPTPROXYPASSWORD"></a><span class="nroffip">CURLOPT_PROXYPASSWORD</span> 
-<p class="level1">Pass a char * as parameter, which should be pointing to the zero terminated password to use for the transfer while connecting to Proxy. 
-<p class="level1">The CURLOPT_PROXYPASSWORD option should be used in conjunction with the <a class="emphasis" href="#CURLOPTPROXYUSERNAME">CURLOPT_PROXYUSERNAME</a> option. (Added in 7.19.1) 
+<p class="level1">Proxy password. See <span Class="emphasis">CURLOPT_PROXYPASSWORD(3)</span> 
 <p class="level0"><a name="CURLOPTHTTPAUTH"></a><span class="nroffip">CURLOPT_HTTPAUTH</span> 
 <p class="level0"><a name="CURLOPTHTTPAUTH"></a><span class="nroffip">CURLOPT_HTTPAUTH</span> 
-<p class="level1">Pass a long as parameter, which is set to a bitmask, to tell libcurl which authentication method(s) you want it to use. The available bits are listed below. If more than one bit is set, libcurl will first query the site to see which authentication methods it supports and then pick the best one you allow it to use. For some methods, this will induce an extra network round-trip. Set the actual name and password with the <a class="emphasis" href="#CURLOPTUSERPWD">CURLOPT_USERPWD</a> option or with the <a class="emphasis" href="#CURLOPTUSERNAME">CURLOPT_USERNAME</a> and the <a class="emphasis" href="#CURLOPTPASSWORD">CURLOPT_PASSWORD</a> options. (Added in 7.10.6) 
-<p class="level2">
-<p class="level1"><a name="CURLAUTHBASIC"></a><span class="nroffip">CURLAUTH_BASIC</span> 
-<p class="level2">HTTP Basic authentication. This is the default choice, and the only method that is in wide-spread use and supported virtually everywhere. This sends the user name and password over the network in plain text, easily captured by others. 
-<p class="level1"><a name="CURLAUTHDIGEST"></a><span class="nroffip">CURLAUTH_DIGEST</span> 
-<p class="level2">HTTP Digest authentication.  Digest authentication is defined in <a href="http://www.ietf.org/rfc/rfc2617.txt">RFC 2617</a> and is a more secure way to do authentication over public networks than the regular old-fashioned Basic method. 
-<p class="level1"><a name="CURLAUTHDIGESTIE"></a><span class="nroffip">CURLAUTH_DIGEST_IE</span> 
-<p class="level2">HTTP Digest authentication with an IE flavor.  Digest authentication is defined in <a href="http://www.ietf.org/rfc/rfc2617.txt">RFC 2617</a> and is a more secure way to do authentication over public networks than the regular old-fashioned Basic method. The IE flavor is simply that libcurl will use a special "quirk" that IE is known to have used before version 7 and that some servers require the client to use. (This define was added in 7.19.3) 
-<p class="level1"><a name="CURLAUTHGSSNEGOTIATE"></a><span class="nroffip">CURLAUTH_GSSNEGOTIATE</span> 
-<p class="level2">HTTP GSS-Negotiate authentication. The GSS-Negotiate (also known as plain "Negotiate") method was designed by Microsoft and is used in their web applications. It is primarily meant as a support for Kerberos5 authentication but may also be used along with other authentication methods. For more information see IETF draft draft-brezak-spnego-http-04.txt. 
-<p class="level2">You need to build libcurl with a suitable GSS-API library for this to work. 
-<p class="level1"><a name="CURLAUTHNTLM"></a><span class="nroffip">CURLAUTH_NTLM</span> 
-<p class="level2">HTTP NTLM authentication. A proprietary protocol invented and used by Microsoft. It uses a challenge-response and hash concept similar to Digest, to prevent the password from being eavesdropped. 
-<p class="level2">You need to build libcurl with either OpenSSL, GnuTLS or NSS support for this option to work, or build libcurl on Windows with SSPI support. 
-<p class="level1"><a name="CURLAUTHNTLMWB"></a><span class="nroffip">CURLAUTH_NTLM_WB</span> 
-<p class="level2">NTLM delegating to winbind helper. Authentication is performed by a separate binary application that is executed when needed. The name of the application is specified at compile time but is typically /usr/bin/ntlm_auth (Added in 7.22.0) 
-<p class="level2">Note that libcurl will fork when necessary to run the winbind application and kill it when complete, calling waitpid() to await its exit when done. On POSIX operating systems, killing the process will cause a SIGCHLD signal to be raised (regardless of whether <a class="emphasis" href="#CURLOPTNOSIGNAL">CURLOPT_NOSIGNAL</a> is set), which must be handled intelligently by the application. In particular, the application must not unconditionally call wait() in its SIGCHLD signal handler to avoid being subject to a race condition.  This behavior is subject to change in future versions of libcurl. 
-<p class="level1"><a name="CURLAUTHANY"></a><span class="nroffip">CURLAUTH_ANY</span> 
-<p class="level2">This is a convenience macro that sets all bits and thus makes libcurl pick any it finds suitable. libcurl will automatically select the one it finds most secure. 
-<p class="level1"><a name="CURLAUTHANYSAFE"></a><span class="nroffip">CURLAUTH_ANYSAFE</span> 
-<p class="level2">This is a convenience macro that sets all bits except Basic and thus makes libcurl pick any it finds suitable. libcurl will automatically select the one it finds most secure. 
-<p class="level1"><a name="CURLAUTHONLY"></a><span class="nroffip">CURLAUTH_ONLY</span> 
-<p class="level2">This is a meta symbol. Or this value together with a single specific auth value to force libcurl to probe for un-restricted auth and if not, only that single auth algorithm is acceptable. (Added in 7.21.3) 
-<p class="level1">
-<p class="level0"><a name="CURLOPTTLSAUTHTYPE"></a><span class="nroffip">CURLOPT_TLSAUTH_TYPE</span> 
-<p class="level1">Pass a long as parameter, which is set to a bitmask, to tell libcurl which authentication method(s) you want it to use for TLS authentication. 
-<p class="level2">
-<p class="level1"><a name="CURLOPTTLSAUTHSRP"></a><span class="nroffip">CURLOPT_TLSAUTH_SRP</span> 
-<p class="level2">TLS-SRP authentication. Secure Remote Password authentication for TLS is defined in <a href="http://www.ietf.org/rfc/rfc5054.txt">RFC 5054</a> and provides mutual authentication if both sides have a shared secret. To use TLS-SRP, you must also set the <a class="emphasis" href="#CURLOPTTLSAUTHUSERNAME">CURLOPT_TLSAUTH_USERNAME</a> and <a class="emphasis" href="#CURLOPTTLSAUTHPASSWORD">CURLOPT_TLSAUTH_PASSWORD</a> options. 
-<p class="level2">You need to build libcurl with GnuTLS or OpenSSL with TLS-SRP support for this to work. (Added in 7.21.4) 
-<p class="level1">
+<p class="level1">HTTP server authentication methods. See <span Class="emphasis">CURLOPT_HTTPAUTH(3)</span> 
 <p class="level0"><a name="CURLOPTTLSAUTHUSERNAME"></a><span class="nroffip">CURLOPT_TLSAUTH_USERNAME</span> 
 <p class="level0"><a name="CURLOPTTLSAUTHUSERNAME"></a><span class="nroffip">CURLOPT_TLSAUTH_USERNAME</span> 
-<p class="level1">Pass a char * as parameter, which should point to the zero terminated username to use for the TLS authentication method specified with the <a class="emphasis" href="#CURLOPTTLSAUTHTYPE">CURLOPT_TLSAUTH_TYPE</a> option. Requires that the <span Class="emphasis">CURLOPT_TLS_PASSWORD</span> option also be set. (Added in 7.21.4) 
+<p class="level1">TLS authentication user name. See <span Class="emphasis">CURLOPT_TLSAUTH_USERNAME(3)</span> 
 <p class="level0"><a name="CURLOPTTLSAUTHPASSWORD"></a><span class="nroffip">CURLOPT_TLSAUTH_PASSWORD</span> 
 <p class="level0"><a name="CURLOPTTLSAUTHPASSWORD"></a><span class="nroffip">CURLOPT_TLSAUTH_PASSWORD</span> 
-<p class="level1">Pass a char * as parameter, which should point to the zero terminated password to use for the TLS authentication method specified with the <a class="emphasis" href="#CURLOPTTLSAUTHTYPE">CURLOPT_TLSAUTH_TYPE</a> option. Requires that the <span Class="emphasis">CURLOPT_TLS_USERNAME</span> option also be set. (Added in 7.21.4) 
+<p class="level1">TLS authentication password. See <span Class="emphasis">CURLOPT_TLSAUTH_PASSWORD(3)</span> 
 <p class="level0"><a name="CURLOPTPROXYAUTH"></a><span class="nroffip">CURLOPT_PROXYAUTH</span> 
 <p class="level0"><a name="CURLOPTPROXYAUTH"></a><span class="nroffip">CURLOPT_PROXYAUTH</span> 
-<p class="level1">Pass a long as parameter, which is set to a bitmask, to tell libcurl which authentication method(s) you want it to use for your proxy authentication.  If more than one bit is set, libcurl will first query the site to see what authentication methods it supports and then pick the best one you allow it to use. For some methods, this will induce an extra network round-trip. Set the actual name and password with the <a class="emphasis" href="#CURLOPTPROXYUSERPWD">CURLOPT_PROXYUSERPWD</a> option. The bitmask can be constructed by or'ing together the bits listed above for the <a class="emphasis" href="#CURLOPTHTTPAUTH">CURLOPT_HTTPAUTH</a> option. As of this writing, only Basic, Digest and NTLM work. (Added in 7.10.7) 
+<p class="level1">HTTP proxy authentication methods. See <span Class="emphasis">CURLOPT_PROXYAUTH(3)</span> 
 <p class="level0"><a name="CURLOPTSASLIR"></a><span class="nroffip">CURLOPT_SASL_IR</span> 
 <p class="level0"><a name="CURLOPTSASLIR"></a><span class="nroffip">CURLOPT_SASL_IR</span> 
-<p class="level1">Pass a long. If the value is 1, curl will send the initial response to the server in the first authentication packet in order to reduce the number of ping pong requests. Only applicable to supporting SASL authentication mechanisms and to the IMAP, POP3 and SMTP protocols. (Added in 7.31.0) 
-<p class="level1">Note: Whilst IMAP supports this option there is no need to explicitly set it, as libcurl can determine the feature itself when the server supports the SASL-IR CAPABILITY. <a name="HTTP"></a><h2 class="nroffsh">HTTP OPTIONS</h2>
+<p class="level1">Enable SASL initial response. See <span Class="emphasis">CURLOPT_SASL_IR(3)</span> 
+<p class="level0"><a name="CURLOPTXOAUTH2BEARER"></a><span class="nroffip">CURLOPT_XOAUTH2_BEARER</span> 
+<p class="level1">OAuth2 bearer token. See <span Class="emphasis">CURLOPT_XOAUTH2_BEARER(3)</span> <a name="HTTP"></a><h2 class="nroffsh">HTTP OPTIONS</h2>
 <p class="level0">
 <p class="level0"><a name="CURLOPTAUTOREFERER"></a><span class="nroffip">CURLOPT_AUTOREFERER</span> 
 <p class="level0">
 <p class="level0"><a name="CURLOPTAUTOREFERER"></a><span class="nroffip">CURLOPT_AUTOREFERER</span> 
-<p class="level1">Pass a parameter set to 1 to enable this. When enabled, libcurl will automatically set the Referer: field in requests where it follows a Location: redirect. 
+<p class="level1">Automatically set Referer: header. See <span Class="emphasis">CURLOPT_AUTOREFERER(3)</span> 
 <p class="level0"><a name="CURLOPTACCEPTENCODING"></a><span class="nroffip">CURLOPT_ACCEPT_ENCODING</span> 
 <p class="level0"><a name="CURLOPTACCEPTENCODING"></a><span class="nroffip">CURLOPT_ACCEPT_ENCODING</span> 
-<p class="level1">Sets the contents of the Accept-Encoding: header sent in a HTTP request, and enables decoding of a response when a Content-Encoding: header is received. Three encodings are supported: <span Class="emphasis">identity</span>, which does nothing, <span Class="emphasis">deflate</span> which requests the server to compress its response using the zlib algorithm, and <span Class="emphasis">gzip</span> which requests the gzip algorithm.  If a zero-length string is set, then an Accept-Encoding: header containing all supported encodings is sent. 
-<p class="level1">This is a request, not an order; the server may or may not do it.  This option must be set (to any non-NULL value) or else any unsolicited encoding done by the server is ignored. See the special file lib/README.encoding for details. 
-<p class="level1">(This option was called CURLOPT_ENCODING before 7.21.6) 
+<p class="level1">Accept-Encoding and automatic decompressing data. See <span Class="emphasis">CURLOPT_ACCEPT_ENCODING(3)</span> 
 <p class="level0"><a name="CURLOPTTRANSFERENCODING"></a><span class="nroffip">CURLOPT_TRANSFER_ENCODING</span> 
 <p class="level0"><a name="CURLOPTTRANSFERENCODING"></a><span class="nroffip">CURLOPT_TRANSFER_ENCODING</span> 
-<p class="level1">Adds a request for compressed Transfer Encoding in the outgoing HTTP request. If the server supports this and so desires, it can respond with the HTTP response sent using a compressed Transfer-Encoding that will be automatically uncompressed by libcurl on reception. 
-<p class="level1">Transfer-Encoding differs slightly from the Content-Encoding you ask for with <a class="bold" href="#CURLOPTACCEPTENCODING">CURLOPT_ACCEPT_ENCODING</a> in that a Transfer-Encoding is strictly meant to be for the transfer and thus MUST be decoded before the data arrives in the client. Traditionally, Transfer-Encoding has been much less used and supported by both HTTP clients and HTTP servers. 
-<p class="level1">(Added in 7.21.6) 
+<p class="level1">Request Transfer-Encoding. See <span Class="emphasis">CURLOPT_TRANSFER_ENCODING(3)</span> 
 <p class="level0"><a name="CURLOPTFOLLOWLOCATION"></a><span class="nroffip">CURLOPT_FOLLOWLOCATION</span> 
 <p class="level0"><a name="CURLOPTFOLLOWLOCATION"></a><span class="nroffip">CURLOPT_FOLLOWLOCATION</span> 
-<p class="level1">A parameter set to 1 tells the library to follow any Location: header that the server sends as part of a HTTP header. 
-<p class="level1">This means that the library will re-send the same request on the new location and follow new Location: headers all the way until no more such headers are returned. <a class="emphasis" href="#CURLOPTMAXREDIRS">CURLOPT_MAXREDIRS</a> can be used to limit the number of redirects libcurl will follow. 
-<p class="level1">Since 7.19.4, libcurl can limit what protocols it will automatically follow. The accepted protocols are set with <a class="emphasis" href="#CURLOPTREDIRPROTOCOLS">CURLOPT_REDIR_PROTOCOLS</a> and it excludes the FILE protocol by default. 
+<p class="level1">Follow HTTP redirects. See <span Class="emphasis">CURLOPT_FOLLOWLOCATION(3)</span> 
 <p class="level0"><a name="CURLOPTUNRESTRICTEDAUTH"></a><span class="nroffip">CURLOPT_UNRESTRICTED_AUTH</span> 
 <p class="level0"><a name="CURLOPTUNRESTRICTEDAUTH"></a><span class="nroffip">CURLOPT_UNRESTRICTED_AUTH</span> 
-<p class="level1">A parameter set to 1 tells the library it can continue to send authentication (user+password) when following locations, even when hostname changed. This option is meaningful only when setting <a class="emphasis" href="#CURLOPTFOLLOWLOCATION">CURLOPT_FOLLOWLOCATION</a>. 
+<p class="level1">Do not restrict authentication to original host. <span Class="emphasis">CURLOPT_UNRESTRICTED_AUTH(3)</span> 
 <p class="level0"><a name="CURLOPTMAXREDIRS"></a><span class="nroffip">CURLOPT_MAXREDIRS</span> 
 <p class="level0"><a name="CURLOPTMAXREDIRS"></a><span class="nroffip">CURLOPT_MAXREDIRS</span> 
-<p class="level1">Pass a long. The set number will be the redirection limit. If that many redirections have been followed, the next redirect will cause an error (<span Class="emphasis">CURLE_TOO_MANY_REDIRECTS</span>). This option only makes sense if the <a class="emphasis" href="#CURLOPTFOLLOWLOCATION">CURLOPT_FOLLOWLOCATION</a> is used at the same time. Added in 7.15.1: Setting the limit to 0 will make libcurl refuse any redirect. Set it to -1 for an infinite number of redirects (which is the default) 
+<p class="level1">Maximum number of redirects to follow. See <span Class="emphasis">CURLOPT_MAXREDIRS(3)</span> 
 <p class="level0"><a name="CURLOPTPOSTREDIR"></a><span class="nroffip">CURLOPT_POSTREDIR</span> 
 <p class="level0"><a name="CURLOPTPOSTREDIR"></a><span class="nroffip">CURLOPT_POSTREDIR</span> 
-<p class="level1">Pass a bitmask to control how libcurl acts on redirects after POSTs that get a 301, 302 or 303 response back.  A parameter with bit 0 set (value <span Class="bold">CURL_REDIR_POST_301</span>) tells the library to respect <a href="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616</a>/10.3.2 and not convert POST requests into GET requests when following a 301 redirection. Setting bit 1 (value <span Class="bold">CURL_REDIR_POST_302</span>) makes libcurl maintain the request method after a 302 redirect whilst setting bit 2 (value <span Class="bold">CURL_REDIR_POST_303</span>) makes libcurl maintain the request method after a 303 redirect. The value <span Class="bold">CURL_REDIR_POST_ALL</span> is a convenience define that sets all three bits. 
-<p class="level1">The non-RFC behaviour is ubiquitous in web browsers, so the library does the conversion by default to maintain consistency. However, a server may require a POST to remain a POST after such a redirection. This option is meaningful only when setting <a class="emphasis" href="#CURLOPTFOLLOWLOCATION">CURLOPT_FOLLOWLOCATION</a>.  (Added in 7.17.1) (This option was known as CURLOPT_POST301 up to 7.19.0 as it only supported the 301 then) 
+<p class="level1">How to act on redirects after POST. See <span Class="emphasis">CURLOPT_POSTREDIR(3)</span> 
 <p class="level0"><a name="CURLOPTPUT"></a><span class="nroffip">CURLOPT_PUT</span> 
 <p class="level0"><a name="CURLOPTPUT"></a><span class="nroffip">CURLOPT_PUT</span> 
-<p class="level1">A parameter set to 1 tells the library to use HTTP PUT to transfer data. The data should be set with <a class="emphasis" href="#CURLOPTREADDATA">CURLOPT_READDATA</a> and <a class="emphasis" href="#CURLOPTINFILESIZE">CURLOPT_INFILESIZE</a>. 
-<p class="level1">This option is deprecated and starting with version 7.12.1 you should instead use <a class="emphasis" href="#CURLOPTUPLOAD">CURLOPT_UPLOAD</a>. 
+<p class="level1">Issue a HTTP PUT request. See <span Class="emphasis">CURLOPT_PUT(3)</span> 
 <p class="level0"><a name="CURLOPTPOST"></a><span class="nroffip">CURLOPT_POST</span> 
 <p class="level0"><a name="CURLOPTPOST"></a><span class="nroffip">CURLOPT_POST</span> 
-<p class="level1">A parameter set to 1 tells the library to do a regular HTTP post. This will also make the library use a "Content-Type: application/x-www-form-urlencoded" header. (This is by far the most commonly used POST method). 
-<p class="level1">Use one of <a class="emphasis" href="#CURLOPTPOSTFIELDS">CURLOPT_POSTFIELDS</a> or <a class="emphasis" href="#CURLOPTCOPYPOSTFIELDS">CURLOPT_COPYPOSTFIELDS</a> options to specify what data to post and <a class="emphasis" href="#CURLOPTPOSTFIELDSIZE">CURLOPT_POSTFIELDSIZE</a> or <a class="emphasis" href="#CURLOPTPOSTFIELDSIZELARGE">CURLOPT_POSTFIELDSIZE_LARGE</a> to set the data size. 
-<p class="level1">Optionally, you can provide data to POST using the <a class="emphasis" href="#CURLOPTREADFUNCTION">CURLOPT_READFUNCTION</a> and <a class="emphasis" href="#CURLOPTREADDATA">CURLOPT_READDATA</a> options but then you must make sure to not set <a class="emphasis" href="#CURLOPTPOSTFIELDS">CURLOPT_POSTFIELDS</a> to anything but NULL. When providing data with a callback, you must transmit it using chunked transfer-encoding or you must set the size of the data with the <a class="emphasis" href="#CURLOPTPOSTFIELDSIZE">CURLOPT_POSTFIELDSIZE</a> or <a class="emphasis" href="#CURLOPTPOSTFIELDSIZELARGE">CURLOPT_POSTFIELDSIZE_LARGE</a> option. To enable chunked encoding, you simply pass in the appropriate Transfer-Encoding header, see the post-callback.c example. 
-<p class="level1">You can override the default POST Content-Type: header by setting your own with <a class="emphasis" href="#CURLOPTHTTPHEADER">CURLOPT_HTTPHEADER</a>. 
-<p class="level1">Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header. You can disable this header with <a class="emphasis" href="#CURLOPTHTTPHEADER">CURLOPT_HTTPHEADER</a> as usual. 
-<p class="level1">If you use POST to a HTTP 1.1 server, you can send data without knowing the size before starting the POST if you use chunked encoding. You enable this by adding a header like "Transfer-Encoding: chunked" with <a class="emphasis" href="#CURLOPTHTTPHEADER">CURLOPT_HTTPHEADER</a>. With HTTP 1.0 or without chunked transfer, you must specify the size in the request. 
-<p class="level1">When setting <a class="emphasis" href="#CURLOPTPOST">CURLOPT_POST</a> to 1, it will automatically set <a class="emphasis" href="#CURLOPTNOBODY">CURLOPT_NOBODY</a> to 0 (since 7.14.1). 
-<p class="level1">If you issue a POST request and then want to make a HEAD or GET using the same re-used handle, you must explicitly set the new request type using <a class="emphasis" href="#CURLOPTNOBODY">CURLOPT_NOBODY</a> or <a class="emphasis" href="#CURLOPTHTTPGET">CURLOPT_HTTPGET</a> or similar. 
+<p class="level1">Issue a HTTP POST request. See <span Class="emphasis">CURLOPT_POST(3)</span> 
 <p class="level0"><a name="CURLOPTPOSTFIELDS"></a><span class="nroffip">CURLOPT_POSTFIELDS</span> 
 <p class="level0"><a name="CURLOPTPOSTFIELDS"></a><span class="nroffip">CURLOPT_POSTFIELDS</span> 
-<p class="level1">Pass a void * as parameter, which should be the full data to post in a HTTP POST operation. You must make sure that the data is formatted the way you want the server to receive it. libcurl will not convert or encode it for you. Most web servers will assume this data to be url-encoded. 
-<p class="level1">The pointed data are NOT copied by the library: as a consequence, they must be preserved by the calling application until the transfer finishes. 
-<p class="level1">This POST is a normal application/x-www-form-urlencoded kind (and libcurl will set that Content-Type by default when this option is used), which is the most commonly used one by HTML forms. See also the <a class="emphasis" href="#CURLOPTPOST">CURLOPT_POST</a>. Using <a class="emphasis" href="#CURLOPTPOSTFIELDS">CURLOPT_POSTFIELDS</a> implies <a class="emphasis" href="#CURLOPTPOST">CURLOPT_POST</a>. 
-<p class="level1">If you want to do a zero-byte POST, you need to set <a class="emphasis" href="#CURLOPTPOSTFIELDSIZE">CURLOPT_POSTFIELDSIZE</a> explicitly to zero, as simply setting <a class="emphasis" href="#CURLOPTPOSTFIELDS">CURLOPT_POSTFIELDS</a> to NULL or "" just effectively disables the sending of the specified string. libcurl will instead assume that you'll send the POST data using the read callback! 
-<p class="level1">Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header. You can disable this header with <a class="emphasis" href="#CURLOPTHTTPHEADER">CURLOPT_HTTPHEADER</a> as usual. 
-<p class="level1">To make multipart/formdata posts (aka <a href="http://www.ietf.org/rfc/rfc2388.txt">RFC 2388</a>-posts), check out the <a class="emphasis" href="#CURLOPTHTTPPOST">CURLOPT_HTTPPOST</a> option. 
+<p class="level1">Send a POST with this data. See <span Class="emphasis">CURLOPT_POSTFIELDS(3)</span> 
 <p class="level0"><a name="CURLOPTPOSTFIELDSIZE"></a><span class="nroffip">CURLOPT_POSTFIELDSIZE</span> 
 <p class="level0"><a name="CURLOPTPOSTFIELDSIZE"></a><span class="nroffip">CURLOPT_POSTFIELDSIZE</span> 
-<p class="level1">If you want to post data to the server without letting libcurl do a strlen() to measure the data size, this option must be used. When this option is used you can post fully binary data, which otherwise is likely to fail. If this size is set to -1, the library will use strlen() to get the size. 
+<p class="level1">The POST data is this big. See <span Class="emphasis">CURLOPT_POSTFIELDSIZE(3)</span> 
 <p class="level0"><a name="CURLOPTPOSTFIELDSIZELARGE"></a><span class="nroffip">CURLOPT_POSTFIELDSIZE_LARGE</span> 
 <p class="level0"><a name="CURLOPTPOSTFIELDSIZELARGE"></a><span class="nroffip">CURLOPT_POSTFIELDSIZE_LARGE</span> 
-<p class="level1">Pass a curl_off_t as parameter. Use this to set the size of the <a class="emphasis" href="#CURLOPTPOSTFIELDS">CURLOPT_POSTFIELDS</a> data to prevent libcurl from doing strlen() on the data to figure out the size. This is the large file version of the <a class="emphasis" href="#CURLOPTPOSTFIELDSIZE">CURLOPT_POSTFIELDSIZE</a> option. (Added in 7.11.1) 
+<p class="level1">The POST data is this big. See <span Class="emphasis">CURLOPT_POSTFIELDSIZE_LARGE(3)</span> 
 <p class="level0"><a name="CURLOPTCOPYPOSTFIELDS"></a><span class="nroffip">CURLOPT_COPYPOSTFIELDS</span> 
 <p class="level0"><a name="CURLOPTCOPYPOSTFIELDS"></a><span class="nroffip">CURLOPT_COPYPOSTFIELDS</span> 
-<p class="level1">Pass a char * as parameter, which should be the full data to post in a HTTP POST operation. It behaves as the <a class="emphasis" href="#CURLOPTPOSTFIELDS">CURLOPT_POSTFIELDS</a> option, but the original data are copied by the library, allowing the application to overwrite the original data after setting this option. 
-<p class="level1">Because data are copied, care must be taken when using this option in conjunction with <a class="emphasis" href="#CURLOPTPOSTFIELDSIZE">CURLOPT_POSTFIELDSIZE</a> or <a class="emphasis" href="#CURLOPTPOSTFIELDSIZELARGE">CURLOPT_POSTFIELDSIZE_LARGE</a>: If the size has not been set prior to <a class="emphasis" href="#CURLOPTCOPYPOSTFIELDS">CURLOPT_COPYPOSTFIELDS</a>, the data are assumed to be a NUL-terminated string; else the stored size informs the library about the data byte count to copy. In any case, the size must not be changed after <a class="emphasis" href="#CURLOPTCOPYPOSTFIELDS">CURLOPT_COPYPOSTFIELDS</a>, unless another <a class="emphasis" href="#CURLOPTPOSTFIELDS">CURLOPT_POSTFIELDS</a> or <a class="emphasis" href="#CURLOPTCOPYPOSTFIELDS">CURLOPT_COPYPOSTFIELDS</a> option is issued. (Added in 7.17.1) 
+<p class="level1">Send a POST with this data - and copy it. See <span Class="emphasis">CURLOPT_COPYPOSTFIELDS(3)</span> 
 <p class="level0"><a name="CURLOPTHTTPPOST"></a><span class="nroffip">CURLOPT_HTTPPOST</span> 
 <p class="level0"><a name="CURLOPTHTTPPOST"></a><span class="nroffip">CURLOPT_HTTPPOST</span> 
-<p class="level1">Tells libcurl you want a multipart/formdata HTTP POST to be made and you instruct what data to pass on to the server.  Pass a pointer to a linked list of curl_httppost structs as parameter.  The easiest way to create such a list, is to use <a class="emphasis" href="./curl_formadd.html">curl_formadd(3)</a> as documented. The data in this list must remain intact until you close this curl handle again with <a class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup(3)</a>. 
-<p class="level1">Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header. You can disable this header with <a class="emphasis" href="#CURLOPTHTTPHEADER">CURLOPT_HTTPHEADER</a> as usual. 
-<p class="level1">When setting <a class="emphasis" href="#CURLOPTHTTPPOST">CURLOPT_HTTPPOST</a>, it will automatically set <a class="emphasis" href="#CURLOPTNOBODY">CURLOPT_NOBODY</a> to 0 (since 7.14.1). 
+<p class="level1">Multipart formpost HTTP POST. See <span Class="emphasis">CURLOPT_HTTPPOST(3)</span> 
 <p class="level0"><a name="CURLOPTREFERER"></a><span class="nroffip">CURLOPT_REFERER</span> 
 <p class="level0"><a name="CURLOPTREFERER"></a><span class="nroffip">CURLOPT_REFERER</span> 
-<p class="level1">Pass a pointer to a zero terminated string as parameter. It will be used to set the Referer: header in the http request sent to the remote server. This can be used to fool servers or scripts. You can also set any custom header with <a class="emphasis" href="#CURLOPTHTTPHEADER">CURLOPT_HTTPHEADER</a>. 
+<p class="level1">Referer: header. See <span Class="emphasis">CURLOPT_REFERER(3)</span> 
 <p class="level0"><a name="CURLOPTUSERAGENT"></a><span class="nroffip">CURLOPT_USERAGENT</span> 
 <p class="level0"><a name="CURLOPTUSERAGENT"></a><span class="nroffip">CURLOPT_USERAGENT</span> 
-<p class="level1">Pass a pointer to a zero terminated string as parameter. It will be used to set the User-Agent: header in the http request sent to the remote server. This can be used to fool servers or scripts. You can also set any custom header with <a class="emphasis" href="#CURLOPTHTTPHEADER">CURLOPT_HTTPHEADER</a>. 
+<p class="level1">User-Agent: header. See <span Class="emphasis">CURLOPT_USERAGENT(3)</span> 
 <p class="level0"><a name="CURLOPTHTTPHEADER"></a><span class="nroffip">CURLOPT_HTTPHEADER</span> 
 <p class="level0"><a name="CURLOPTHTTPHEADER"></a><span class="nroffip">CURLOPT_HTTPHEADER</span> 
-<p class="level1">Pass a pointer to a linked list of HTTP headers to pass to the server in your HTTP request. The linked list should be a fully valid list of <span class="bold">struct curl_slist</span> structs properly filled in. Use <a class="emphasis" href="./curl_slist_append.html">curl_slist_append(3)</a> to create the list and <a class="emphasis" href="./curl_slist_free_all.html">curl_slist_free_all(3)</a> to clean up an entire list. If you add a header that is otherwise generated and used by libcurl internally, your added one will be used instead. If you add a header with no content as in 'Accept:' (no data on the right side of the colon), the internally used header will get disabled. Thus, using this option you can add new headers, replace internal headers and remove internal headers. To add a header with no content (nothing to the right side of the colon), use the form 'MyHeader;' (note the ending semicolon). 
-<p class="level1">The headers included in the linked list must not be CRLF-terminated, because curl adds CRLF after each header item. Failure to comply with this will result in strange bugs because the server will most likely ignore part of the headers you specified. 
-<p class="level1">The first line in a request (containing the method, usually a GET or POST) is not a header and cannot be replaced using this option. Only the lines following the request-line are headers. Adding this method line in this list of headers will only cause your request to send an invalid header. 
-<p class="level1">Pass a NULL to this to reset back to no custom headers. 
-<p class="level1">The most commonly replaced headers have "shortcuts" in the options <a class="emphasis" href="#CURLOPTCOOKIE">CURLOPT_COOKIE</a>, <a class="emphasis" href="#CURLOPTUSERAGENT">CURLOPT_USERAGENT</a> and <a class="emphasis" href="#CURLOPTREFERER">CURLOPT_REFERER</a>. 
+<p class="level1">Custom HTTP headers. See <span Class="emphasis">CURLOPT_HTTPHEADER(3)</span> 
+<p class="level0"><a name="CURLOPTHEADEROPT"></a><span class="nroffip">CURLOPT_HEADEROPT</span> 
+<p class="level1">Control custom headers. See <span Class="emphasis">CURLOPT_HEADEROPT(3)</span> 
+<p class="level0"><a name="CURLOPTPROXYHEADER"></a><span class="nroffip">CURLOPT_PROXYHEADER</span> 
+<p class="level1">Custom HTTP headers sent to proxy. See <span Class="emphasis">CURLOPT_PROXYHEADER(3)</span> 
 <p class="level0"><a name="CURLOPTHTTP200ALIASES"></a><span class="nroffip">CURLOPT_HTTP200ALIASES</span> 
 <p class="level0"><a name="CURLOPTHTTP200ALIASES"></a><span class="nroffip">CURLOPT_HTTP200ALIASES</span> 
-<p class="level1">Pass a pointer to a linked list of aliases to be treated as valid HTTP 200 responses.  Some servers respond with a custom header response line.  For example, IceCast servers respond with "ICY 200 OK".  By including this string in your list of aliases, the response will be treated as a valid HTTP header line such as "HTTP/1.0 200 OK". (Added in 7.10.3) 
-<p class="level1">The linked list should be a fully valid list of struct curl_slist structs, and be properly filled in.  Use <a class="emphasis" href="./curl_slist_append.html">curl_slist_append(3)</a> to create the list and <a class="emphasis" href="./curl_slist_free_all.html">curl_slist_free_all(3)</a> to clean up an entire list. 
-<p class="level1">The alias itself is not parsed for any version strings. Before libcurl 7.16.3, Libcurl used the value set by option <a class="emphasis" href="#CURLOPTHTTPVERSION">CURLOPT_HTTP_VERSION</a>, but starting with 7.16.3 the protocol is assumed to match HTTP 1.0 when an alias matched. 
+<p class="level1">Alternative versions of 200 OK. See <span Class="emphasis">CURLOPT_HTTP200ALIASES(3)</span> 
 <p class="level0"><a name="CURLOPTCOOKIE"></a><span class="nroffip">CURLOPT_COOKIE</span> 
 <p class="level0"><a name="CURLOPTCOOKIE"></a><span class="nroffip">CURLOPT_COOKIE</span> 
-<p class="level1">Pass a pointer to a zero terminated string as parameter. It will be used to set a cookie in the http request. The format of the string should be NAME=CONTENTS, where NAME is the cookie name and CONTENTS is what the cookie should contain. 
-<p class="level1">If you need to set multiple cookies, you need to set them all using a single option and thus you need to concatenate them all in one single string. Set multiple cookies in one string like this: "name1=content1; name2=content2;" etc. 
-<p class="level1">This option sets the cookie header explicitly in the outgoing request(s). If multiple requests are done due to authentication, followed redirections or similar, they will all get this cookie passed on. 
-<p class="level1">Using this option multiple times will only make the latest string override the previous ones. 
+<p class="level1">Cookie(s) to send. See <span Class="emphasis">CURLOPT_COOKIE(3)</span> 
 <p class="level0"><a name="CURLOPTCOOKIEFILE"></a><span class="nroffip">CURLOPT_COOKIEFILE</span> 
 <p class="level0"><a name="CURLOPTCOOKIEFILE"></a><span class="nroffip">CURLOPT_COOKIEFILE</span> 
-<p class="level1">Pass a pointer to a zero terminated string as parameter. It should contain the name of your file holding cookie data to read. The cookie data may be in Netscape / Mozilla cookie data format or just regular HTTP-style headers dumped to a file. 
-<p class="level1">Given an empty or non-existing file or by passing the empty string (""), this option will enable cookies for this curl handle, making it understand and parse received cookies and then use matching cookies in future requests. 
-<p class="level1">If you use this option multiple times, you just add more files to read. Subsequent files will add more cookies. 
+<p class="level1">File to read cookies from. See <span Class="emphasis">CURLOPT_COOKIEFILE(3)</span> 
 <p class="level0"><a name="CURLOPTCOOKIEJAR"></a><span class="nroffip">CURLOPT_COOKIEJAR</span> 
 <p class="level0"><a name="CURLOPTCOOKIEJAR"></a><span class="nroffip">CURLOPT_COOKIEJAR</span> 
-<p class="level1">Pass a file name as char *, zero terminated. This will make libcurl write all internally known cookies to the specified file when <a class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup(3)</a> is called. If no cookies are known, no file will be created. Specify "-" to instead have the cookies written to stdout. Using this option also enables cookies for this session, so if you for example follow a location it will make matching cookies get sent accordingly. 
-<p class="level1">If the cookie jar file can't be created or written to (when the <a class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup(3)</a> is called), libcurl will not and cannot report an error for this. Using <a class="emphasis" href="#CURLOPTVERBOSE">CURLOPT_VERBOSE</a> or <a class="emphasis" href="#CURLOPTDEBUGFUNCTION">CURLOPT_DEBUGFUNCTION</a> will get a warning to display, but that is the only visible feedback you get about this possibly lethal situation. 
+<p class="level1">File to write cookies to. See <span Class="emphasis">CURLOPT_COOKIEJAR(3)</span> 
 <p class="level0"><a name="CURLOPTCOOKIESESSION"></a><span class="nroffip">CURLOPT_COOKIESESSION</span> 
 <p class="level0"><a name="CURLOPTCOOKIESESSION"></a><span class="nroffip">CURLOPT_COOKIESESSION</span> 
-<p class="level1">Pass a long set to 1 to mark this as a new cookie "session". It will force libcurl to ignore all cookies it is about to load that are "session cookies" from the previous session. By default, libcurl always stores and loads all cookies, independent if they are session cookies or not. Session cookies are cookies without expiry date and they are meant to be alive and existing for this "session" only. 
+<p class="level1">Start a new cookie session. See <span Class="emphasis">CURLOPT_COOKIESESSION(3)</span> 
 <p class="level0"><a name="CURLOPTCOOKIELIST"></a><span class="nroffip">CURLOPT_COOKIELIST</span> 
 <p class="level0"><a name="CURLOPTCOOKIELIST"></a><span class="nroffip">CURLOPT_COOKIELIST</span> 
-<p class="level1">Pass a char * to a cookie string. Cookie can be either in Netscape / Mozilla format or just regular HTTP-style header (Set-Cookie: ...) format. If cURL cookie engine was not enabled it will enable its cookie engine.  Passing a magic string "ALL" will erase all cookies known by cURL. (Added in 7.14.1) Passing the special string "SESS" will only erase all session cookies known by cURL. (Added in 7.15.4) Passing the special string "FLUSH" will write all cookies known by cURL to the file specified by <a class="emphasis" href="#CURLOPTCOOKIEJAR">CURLOPT_COOKIEJAR</a>. (Added in 7.17.1) 
+<p class="level1">Add or control cookies. See <span Class="emphasis">CURLOPT_COOKIELIST(3)</span> 
 <p class="level0"><a name="CURLOPTHTTPGET"></a><span class="nroffip">CURLOPT_HTTPGET</span> 
 <p class="level0"><a name="CURLOPTHTTPGET"></a><span class="nroffip">CURLOPT_HTTPGET</span> 
-<p class="level1">Pass a long. If the long is 1, this forces the HTTP request to get back to GET. Usable if a POST, HEAD, PUT, or a custom request has been used previously using the same curl handle. 
-<p class="level1">When setting <a class="emphasis" href="#CURLOPTHTTPGET">CURLOPT_HTTPGET</a> to 1, it will automatically set <a class="emphasis" href="#CURLOPTNOBODY">CURLOPT_NOBODY</a> to 0 and <a class="emphasis" href="#CURLOPTUPLOAD">CURLOPT_UPLOAD</a> to 0. 
+<p class="level1">Do a HTTP GET request. See <span Class="emphasis">CURLOPT_HTTPGET(3)</span> 
 <p class="level0"><a name="CURLOPTHTTPVERSION"></a><span class="nroffip">CURLOPT_HTTP_VERSION</span> 
 <p class="level0"><a name="CURLOPTHTTPVERSION"></a><span class="nroffip">CURLOPT_HTTP_VERSION</span> 
-<p class="level1">Pass a long, set to one of the values described below. They force libcurl to use the specific HTTP versions. This is not sensible to do unless you have a good reason. 
-<p class="level2">
-<p class="level1"><a name="CURLHTTPVERSIONNONE"></a><span class="nroffip">CURL_HTTP_VERSION_NONE</span> 
-<p class="level2">We don't care about what version the library uses. libcurl will use whatever it thinks fit. 
-<p class="level1"><a name="CURLHTTPVERSION10"></a><span class="nroffip">CURL_HTTP_VERSION_1_0</span> 
-<p class="level2">Enforce HTTP 1.0 requests. 
-<p class="level1"><a name="CURLHTTPVERSION11"></a><span class="nroffip">CURL_HTTP_VERSION_1_1</span> 
-<p class="level2">Enforce HTTP 1.1 requests. 
-<p class="level1">
+<p class="level1">HTTP version to use. <span Class="emphasis">CURLOPT_HTTP_VERSION(3)</span> 
 <p class="level0"><a name="CURLOPTIGNORECONTENTLENGTH"></a><span class="nroffip">CURLOPT_IGNORE_CONTENT_LENGTH</span> 
 <p class="level0"><a name="CURLOPTIGNORECONTENTLENGTH"></a><span class="nroffip">CURLOPT_IGNORE_CONTENT_LENGTH</span> 
-<p class="level1">Ignore the Content-Length header. This is useful for Apache 1.x (and similar servers) which will report incorrect content length for files over 2 gigabytes. If this option is used, curl will not be able to accurately report progress, and will simply stop the download when the server ends the connection. (added in 7.14.1) 
+<p class="level1">Ignore Content-Length. See <span Class="emphasis">CURLOPT_IGNORE_CONTENT_LENGTH(3)</span> 
 <p class="level0"><a name="CURLOPTHTTPCONTENTDECODING"></a><span class="nroffip">CURLOPT_HTTP_CONTENT_DECODING</span> 
 <p class="level0"><a name="CURLOPTHTTPCONTENTDECODING"></a><span class="nroffip">CURLOPT_HTTP_CONTENT_DECODING</span> 
-<p class="level1">Pass a long to tell libcurl how to act on content decoding. If set to zero, content decoding will be disabled. If set to 1 it is enabled. Libcurl has no default content decoding but requires you to use <a class="emphasis" href="#CURLOPTACCEPTENCODING">CURLOPT_ACCEPT_ENCODING</a> for that. (added in 7.16.2) 
+<p class="level1">Disable Content decoding. See <span Class="emphasis">CURLOPT_HTTP_CONTENT_DECODING(3)</span> 
 <p class="level0"><a name="CURLOPTHTTPTRANSFERDECODING"></a><span class="nroffip">CURLOPT_HTTP_TRANSFER_DECODING</span> 
 <p class="level0"><a name="CURLOPTHTTPTRANSFERDECODING"></a><span class="nroffip">CURLOPT_HTTP_TRANSFER_DECODING</span> 
-<p class="level1">Pass a long to tell libcurl how to act on transfer decoding. If set to zero, transfer decoding will be disabled, if set to 1 it is enabled (default). libcurl does chunked transfer decoding by default unless this option is set to zero. (added in 7.16.2) <a name="SMTP"></a><h2 class="nroffsh">SMTP OPTIONS</h2>
+<p class="level1">Disable Transfer decoding. See <span Class="emphasis">CURLOPT_HTTP_TRANSFER_DECODING(3)</span> 
+<p class="level0"><a name="CURLOPTEXPECT100TIMEOUTMS"></a><span class="nroffip">CURLOPT_EXPECT_100_TIMEOUT_MS</span> 
+<p class="level1">100-continue timeout. See <span Class="emphasis">CURLOPT_EXPECT_100_TIMEOUT_MS(3)</span> <a name="SMTP"></a><h2 class="nroffsh">SMTP OPTIONS</h2>
 <p class="level0">
 <p class="level0"><a name="CURLOPTMAILFROM"></a><span class="nroffip">CURLOPT_MAIL_FROM</span> 
 <p class="level0">
 <p class="level0"><a name="CURLOPTMAILFROM"></a><span class="nroffip">CURLOPT_MAIL_FROM</span> 
-<p class="level1">Pass a pointer to a zero terminated string as parameter. This should be used to specify the sender's email address when sending SMTP mail with libcurl. 
-<p class="level1">An originator email address should be specified with angled brackets (&lt;&gt;) around it, which if not specified, will be added by libcurl from version 7.21.4 onwards. Failing to provide such brackets may cause the server to reject the email. 
-<p class="level1">If this parameter is not specified then an empty address will be sent to the mail server which may or may not cause the email to be rejected. 
-<p class="level1">(Added in 7.20.0) 
+<p class="level1">Address of the sender. See <span Class="emphasis">CURLOPT_MAIL_FROM(3)</span> 
 <p class="level0"><a name="CURLOPTMAILRCPT"></a><span class="nroffip">CURLOPT_MAIL_RCPT</span> 
 <p class="level0"><a name="CURLOPTMAILRCPT"></a><span class="nroffip">CURLOPT_MAIL_RCPT</span> 
-<p class="level1">Pass a pointer to a linked list of recipients to pass to the server in your SMTP mail request. The linked list should be a fully valid list of <span class="bold">struct curl_slist</span> structs properly filled in. Use <a class="emphasis" href="./curl_slist_append.html">curl_slist_append(3)</a> to create the list and <a class="emphasis" href="./curl_slist_free_all.html">curl_slist_free_all(3)</a> to clean up an entire list. 
-<p class="level1">Each recipient should be specified within a pair of angled brackets (&lt;&gt;), however, should you not use an angled bracket as the first character libcurl will assume you provided a single email address and enclose that address within brackets for you. 
-<p class="level1">(Added in 7.20.0) 
+<p class="level1">Address of the recipients. See <span Class="emphasis">CURLOPT_MAIL_RCPT(3)</span> 
 <p class="level0"><a name="CURLOPTMAILAUTH"></a><span class="nroffip">CURLOPT_MAIL_AUTH</span> 
 <p class="level0"><a name="CURLOPTMAILAUTH"></a><span class="nroffip">CURLOPT_MAIL_AUTH</span> 
-<p class="level1">Pass a pointer to a zero terminated string as parameter. This will be used to specify the authentication address (identity) of a submitted message that is being relayed to another server. 
-<p class="level1">This optional parameter allows co-operating agents in a trusted environment to communicate the authentication of individual messages and should only be used by the application program, using libcurl, if the application is itself a mail server acting in such an environment. If the application is operating as such and the AUTH address is not known or is invalid, then an empty string should be used for this parameter. 
-<p class="level1">Unlike CURLOPT_MAIL_FROM and CURLOPT_MAIL_RCPT, the address should not be specified within a pair of angled brackets (&lt;&gt;). However, if an empty string is used then a pair of brackets will be sent by libcurl as required by <a href="http://www.ietf.org/rfc/rfc2554.txt">RFC 2554</a>. 
-<p class="level1">(Added in 7.25.0) <a name="TFTP"></a><h2 class="nroffsh">TFTP OPTIONS</h2>
+<p class="level1">Authentication address. See <span Class="emphasis">CURLOPT_MAIL_AUTH(3)</span> <a name="TFTP"></a><h2 class="nroffsh">TFTP OPTIONS</h2>
 <p class="level0">
 <p class="level0"><a name="CURLOPTTFTPBLKSIZE"></a><span class="nroffip">CURLOPT_TFTP_BLKSIZE</span> 
 <p class="level0">
 <p class="level0"><a name="CURLOPTTFTPBLKSIZE"></a><span class="nroffip">CURLOPT_TFTP_BLKSIZE</span> 
-<p class="level1">Specify block size to use for TFTP data transmission. Valid range as per <a href="http://www.ietf.org/rfc/rfc2348.txt">RFC 2348</a> is 8-65464 bytes. The default of 512 bytes will be used if this option is not specified. The specified block size will only be used pending support by the remote server. If the server does not return an option acknowledgement or returns an option acknowledgement with no blksize, the default of 512 bytes will be used. (added in 7.19.4) <a name="FTP"></a><h2 class="nroffsh">FTP OPTIONS</h2>
+<p class="level1">TFTP block size. See <span Class="emphasis">CURLOPT_TFTP_BLKSIZE(3)</span> <a name="FTP"></a><h2 class="nroffsh">FTP OPTIONS</h2>
 <p class="level0">
 <p class="level0"><a name="CURLOPTFTPPORT"></a><span class="nroffip">CURLOPT_FTPPORT</span> 
 <p class="level0">
 <p class="level0"><a name="CURLOPTFTPPORT"></a><span class="nroffip">CURLOPT_FTPPORT</span> 
-<p class="level1">Pass a pointer to a zero terminated string as parameter. It will be used to get the IP address to use for the FTP PORT instruction. The PORT instruction tells the remote server to connect to our specified IP address. The string may be a plain IP address, a host name, a network interface name (under Unix) or just a '-' symbol to let the library use your system's default IP address. Default FTP operations are passive, and thus won't use PORT. 
-<p class="level1">The address can be followed by a ':' to specify a port, optionally followed by a '-' to specify a port range.  If the port specified is 0, the operating system will pick a free port.  If a range is provided and all ports in the range are not available, libcurl will report CURLE_FTP_PORT_FAILED for the handle.  Invalid port/range settings are ignored.  IPv6 addresses followed by a port or portrange have to be in brackets.  IPv6 addresses without port/range specifier can be in brackets.  (added in 7.19.5) 
-<p class="level1">Examples with specified ports: 
-<p class="level1"><pre>
-<p class="level1">&nbsp; eth0:0
- &nbsp; 192.168.1.2:32000-33000
- &nbsp; curl.se:32123
- &nbsp; [::1]:1234-4567
- </pre>
-
-<p class="level1">
-<p class="level1">You disable PORT again and go back to using the passive version by setting this option to NULL. 
+<p class="level1">Use active FTP. See <span Class="emphasis">CURLOPT_FTPPORT(3)</span> 
 <p class="level0"><a name="CURLOPTQUOTE"></a><span class="nroffip">CURLOPT_QUOTE</span> 
 <p class="level0"><a name="CURLOPTQUOTE"></a><span class="nroffip">CURLOPT_QUOTE</span> 
-<p class="level1">Pass a pointer to a linked list of FTP or SFTP commands to pass to the server prior to your FTP request. This will be done before any other commands are issued (even before the CWD command for FTP). The linked list should be a fully valid list of 'struct curl_slist' structs properly filled in with text strings. Use <a class="emphasis" href="./curl_slist_append.html">curl_slist_append(3)</a> to append strings (commands) to the list, and clear the entire list afterwards with <a class="emphasis" href="./curl_slist_free_all.html">curl_slist_free_all(3)</a>. Disable this operation again by setting a NULL to this option. When speaking to a FTP (or SFTP since 7.24.0) server, prefix the command with an asterisk (*) to make libcurl continue even if the command fails as by default libcurl will stop at first failure. 
-<p class="level1">The set of valid FTP commands depends on the server (see <a href="http://www.ietf.org/rfc/rfc959.txt">RFC 959</a> for a list of mandatory commands). 
-<p class="level1">The valid SFTP commands are: chgrp, chmod, chown, ln, mkdir, pwd, rename, rm, rmdir, symlink (see <span Class="manpage">curl (1))</span> (SFTP support added in 7.16.3) 
+<p class="level1">Commands to run before transfer. See <span Class="emphasis">CURLOPT_QUOTE(3)</span> 
 <p class="level0"><a name="CURLOPTPOSTQUOTE"></a><span class="nroffip">CURLOPT_POSTQUOTE</span> 
 <p class="level0"><a name="CURLOPTPOSTQUOTE"></a><span class="nroffip">CURLOPT_POSTQUOTE</span> 
-<p class="level1">Pass a pointer to a linked list of FTP or SFTP commands to pass to the server after your FTP transfer request. The commands will only be run if no error occurred. The linked list should be a fully valid list of struct curl_slist structs properly filled in as described for <a class="emphasis" href="#CURLOPTQUOTE">CURLOPT_QUOTE</a>. Disable this operation again by setting a NULL to this option. 
+<p class="level1">Commands to run after transfer. See <span Class="emphasis">CURLOPT_POSTQUOTE(3)</span> 
 <p class="level0"><a name="CURLOPTPREQUOTE"></a><span class="nroffip">CURLOPT_PREQUOTE</span> 
 <p class="level0"><a name="CURLOPTPREQUOTE"></a><span class="nroffip">CURLOPT_PREQUOTE</span> 
-<p class="level1">Pass a pointer to a linked list of FTP commands to pass to the server after the transfer type is set. The linked list should be a fully valid list of struct curl_slist structs properly filled in as described for <a class="emphasis" href="#CURLOPTQUOTE">CURLOPT_QUOTE</a>. Disable this operation again by setting a NULL to this option. Before version 7.16.0, if you also set <a class="emphasis" href="#CURLOPTNOBODY">CURLOPT_NOBODY</a> to 1, this option didn't work. 
-<p class="level0"><a name="CURLOPTDIRLISTONLY"></a><span class="nroffip">CURLOPT_DIRLISTONLY</span> 
-<p class="level1">A parameter set to 1 tells the library to just list the names of files in a directory, instead of doing a full directory listing that would include file sizes, dates etc. This works for FTP and SFTP URLs. 
-<p class="level1">This causes an FTP NLST command to be sent on an FTP server.  Beware that some FTP servers list only files in their response to NLST; they might not include subdirectories and symbolic links. 
-<p class="level1">Setting this option to 1 also implies a directory listing even if the URL doesn't end with a slash, which otherwise is necessary. 
-<p class="level1">Do NOT use this option if you also use <a class="emphasis" href="#CURLOPTWILDCARDMATCH">CURLOPT_WILDCARDMATCH</a> as it will effectively break that feature then. 
-<p class="level1">(This option was known as CURLOPT_FTPLISTONLY up to 7.16.4) 
+<p class="level1">Commands to run just before transfer. See <span Class="emphasis">CURLOPT_PREQUOTE(3)</span> 
 <p class="level0"><a name="CURLOPTAPPEND"></a><span class="nroffip">CURLOPT_APPEND</span> 
 <p class="level0"><a name="CURLOPTAPPEND"></a><span class="nroffip">CURLOPT_APPEND</span> 
-<p class="level1">A parameter set to 1 tells the library to append to the remote file instead of overwrite it. This is only useful when uploading to an FTP site. 
-<p class="level1">(This option was known as CURLOPT_FTPAPPEND up to 7.16.4) 
+<p class="level1">Append to remote file. See <span Class="emphasis">CURLOPT_APPEND(3)</span> 
 <p class="level0"><a name="CURLOPTFTPUSEEPRT"></a><span class="nroffip">CURLOPT_FTP_USE_EPRT</span> 
 <p class="level0"><a name="CURLOPTFTPUSEEPRT"></a><span class="nroffip">CURLOPT_FTP_USE_EPRT</span> 
-<p class="level1">Pass a long. If the value is 1, it tells curl to use the EPRT (and LPRT) command when doing active FTP downloads (which is enabled by <a class="emphasis" href="#CURLOPTFTPPORT">CURLOPT_FTPPORT</a>). Using EPRT means that it will first attempt to use EPRT and then LPRT before using PORT, but if you pass zero to this option, it will not try using EPRT or LPRT, only plain PORT. (Added in 7.10.5) 
-<p class="level1">If the server is an IPv6 host, this option will have no effect as of 7.12.3. 
+<p class="level1">Use EPTR. See <span Class="emphasis">CURLOPT_FTP_USE_EPRT(3)</span> 
 <p class="level0"><a name="CURLOPTFTPUSEEPSV"></a><span class="nroffip">CURLOPT_FTP_USE_EPSV</span> 
 <p class="level0"><a name="CURLOPTFTPUSEEPSV"></a><span class="nroffip">CURLOPT_FTP_USE_EPSV</span> 
-<p class="level1">Pass a long. If the value is 1, it tells curl to use the EPSV command when doing passive FTP downloads (which it always does by default). Using EPSV means that it will first attempt to use EPSV before using PASV, but if you pass zero to this option, it will not try using EPSV, only plain PASV. 
-<p class="level1">If the server is an IPv6 host, this option will have no effect as of 7.12.3. 
+<p class="level1">Use EPSV. See <span Class="emphasis">CURLOPT_FTP_USE_EPSV(3)</span> 
 <p class="level0"><a name="CURLOPTFTPUSEPRET"></a><span class="nroffip">CURLOPT_FTP_USE_PRET</span> 
 <p class="level0"><a name="CURLOPTFTPUSEPRET"></a><span class="nroffip">CURLOPT_FTP_USE_PRET</span> 
-<p class="level1">Pass a long. If the value is 1, it tells curl to send a PRET command before PASV (and EPSV). Certain FTP servers, mainly drftpd, require this non-standard command for directory listings as well as up and downloads in PASV mode. Has no effect when using the active FTP transfers mode.  (Added in 7.20.0) 
+<p class="level1">Use PRET. See <span Class="emphasis">CURLOPT_FTP_USE_PRET(3)</span> 
 <p class="level0"><a name="CURLOPTFTPCREATEMISSINGDIRS"></a><span class="nroffip">CURLOPT_FTP_CREATE_MISSING_DIRS</span> 
 <p class="level0"><a name="CURLOPTFTPCREATEMISSINGDIRS"></a><span class="nroffip">CURLOPT_FTP_CREATE_MISSING_DIRS</span> 
-<p class="level1">Pass a long. If the value is 1, curl will attempt to create any remote directory that it fails to CWD into. CWD is the command that changes working directory. (Added in 7.10.7) 
-<p class="level1">This setting also applies to SFTP-connections. curl will attempt to create the remote directory if it can't obtain a handle to the target-location. The creation will fail if a file of the same name as the directory to create already exists or lack of permissions prevents creation. (Added in 7.16.3) 
-<p class="level1">Starting with 7.19.4, you can also set this value to 2, which will make libcurl retry the CWD command again if the subsequent MKD command fails. This is especially useful if you're doing many simultaneous connections against the same server and they all have this option enabled, as then CWD may first fail but then another connection does MKD before this connection and thus MKD fails but trying CWD works! 7.19.4 also introduced the <span Class="emphasis">CURLFTP_CREATE_DIR</span> and <span Class="emphasis">CURLFTP_CREATE_DIR_RETRY</span> enum names for these arguments. 
-<p class="level1">Before version 7.19.4, libcurl will simply ignore arguments set to 2 and act as if 1 was selected. 
+<p class="level1">Create missing directories on the remote server. See <span Class="emphasis">CURLOPT_FTP_CREATE_MISSING_DIRS(3)</span> 
 <p class="level0"><a name="CURLOPTFTPRESPONSETIMEOUT"></a><span class="nroffip">CURLOPT_FTP_RESPONSE_TIMEOUT</span> 
 <p class="level0"><a name="CURLOPTFTPRESPONSETIMEOUT"></a><span class="nroffip">CURLOPT_FTP_RESPONSE_TIMEOUT</span> 
-<p class="level1">Pass a long.  Causes curl to set a timeout period (in seconds) on the amount of time that the server is allowed to take in order to generate a response message for a command before the session is considered hung.  While curl is waiting for a response, this value overrides <a class="emphasis" href="#CURLOPTTIMEOUT">CURLOPT_TIMEOUT</a>. It is recommended that if used in conjunction with <a class="emphasis" href="#CURLOPTTIMEOUT">CURLOPT_TIMEOUT</a>, you set <a class="emphasis" href="#CURLOPTFTPRESPONSETIMEOUT">CURLOPT_FTP_RESPONSE_TIMEOUT</a> to a value smaller than <a class="emphasis" href="#CURLOPTTIMEOUT">CURLOPT_TIMEOUT</a>.  (Added in 7.10.8) 
+<p class="level1">Timeout for FTP responses. See <span Class="emphasis">CURLOPT_FTP_RESPONSE_TIMEOUT(3)</span> 
 <p class="level0"><a name="CURLOPTFTPALTERNATIVETOUSER"></a><span class="nroffip">CURLOPT_FTP_ALTERNATIVE_TO_USER</span> 
 <p class="level0"><a name="CURLOPTFTPALTERNATIVETOUSER"></a><span class="nroffip">CURLOPT_FTP_ALTERNATIVE_TO_USER</span> 
-<p class="level1">Pass a char * as parameter, pointing to a string which will be used to authenticate if the usual FTP "USER user" and "PASS password" negotiation fails. This is currently only known to be required when connecting to Tumbleweed's Secure Transport FTPS server using client certificates for authentication. (Added in 7.15.5) 
+<p class="level1">Alternative to USER. See <span Class="emphasis">CURLOPT_FTP_ALTERNATIVE_TO_USER(3)</span> 
 <p class="level0"><a name="CURLOPTFTPSKIPPASVIP"></a><span class="nroffip">CURLOPT_FTP_SKIP_PASV_IP</span> 
 <p class="level0"><a name="CURLOPTFTPSKIPPASVIP"></a><span class="nroffip">CURLOPT_FTP_SKIP_PASV_IP</span> 
-<p class="level1">Pass a long. If set to 1, it instructs libcurl to not use the IP address the server suggests in its 227-response to libcurl's PASV command when libcurl connects the data connection. Instead libcurl will re-use the same IP address it already uses for the control connection. But it will use the port number from the 227-response. (Added in 7.14.2) 
-<p class="level1">This option has no effect if PORT, EPRT or EPSV is used instead of PASV. 
+<p class="level1">Ignore the IP address in the PASV response. See <span Class="emphasis">CURLOPT_FTP_SKIP_PASV_IP(3)</span> 
 <p class="level0"><a name="CURLOPTFTPSSLAUTH"></a><span class="nroffip">CURLOPT_FTPSSLAUTH</span> 
 <p class="level0"><a name="CURLOPTFTPSSLAUTH"></a><span class="nroffip">CURLOPT_FTPSSLAUTH</span> 
-<p class="level1">Pass a long using one of the values from below, to alter how libcurl issues "AUTH TLS" or "AUTH SSL" when FTP over SSL is activated (see <a class="emphasis" href="#CURLOPTUSESSL">CURLOPT_USE_SSL</a>). (Added in 7.12.2) 
-<p class="level2">
-<p class="level1"><a name="CURLFTPAUTHDEFAULT"></a><span class="nroffip">CURLFTPAUTH_DEFAULT</span> 
-<p class="level2">Allow libcurl to decide. 
-<p class="level1"><a name="CURLFTPAUTHSSL"></a><span class="nroffip">CURLFTPAUTH_SSL</span> 
-<p class="level2">Try "AUTH SSL" first, and only if that fails try "AUTH TLS". 
-<p class="level1"><a name="CURLFTPAUTHTLS"></a><span class="nroffip">CURLFTPAUTH_TLS</span> 
-<p class="level2">Try "AUTH TLS" first, and only if that fails try "AUTH SSL". 
-<p class="level1">
+<p class="level1">Control how to do TLS. See <span Class="emphasis">CURLOPT_FTPSSLAUTH(3)</span> 
 <p class="level0"><a name="CURLOPTFTPSSLCCC"></a><span class="nroffip">CURLOPT_FTP_SSL_CCC</span> 
 <p class="level0"><a name="CURLOPTFTPSSLCCC"></a><span class="nroffip">CURLOPT_FTP_SSL_CCC</span> 
-<p class="level1">If enabled, this option makes libcurl use CCC (Clear Command Channel). It shuts down the SSL/TLS layer after authenticating. The rest of the control channel communication will be unencrypted. This allows NAT routers to follow the FTP transaction. Pass a long using one of the values below. (Added in 7.16.1) 
-<p class="level2">
-<p class="level1"><a name="CURLFTPSSLCCCNONE"></a><span class="nroffip">CURLFTPSSL_CCC_NONE</span> 
-<p class="level2">Don't attempt to use CCC. 
-<p class="level1"><a name="CURLFTPSSLCCCPASSIVE"></a><span class="nroffip">CURLFTPSSL_CCC_PASSIVE</span> 
-<p class="level2">Do not initiate the shutdown, but wait for the server to do it. Do not send a reply. 
-<p class="level1"><a name="CURLFTPSSLCCCACTIVE"></a><span class="nroffip">CURLFTPSSL_CCC_ACTIVE</span> 
-<p class="level2">Initiate the shutdown and wait for a reply. 
-<p class="level1">
+<p class="level1">Back to non-TLS again after authentication. See <span Class="emphasis">CURLOPT_FTP_SSL_CCC(3)</span> 
 <p class="level0"><a name="CURLOPTFTPACCOUNT"></a><span class="nroffip">CURLOPT_FTP_ACCOUNT</span> 
 <p class="level0"><a name="CURLOPTFTPACCOUNT"></a><span class="nroffip">CURLOPT_FTP_ACCOUNT</span> 
-<p class="level1">Pass a pointer to a zero terminated string (or NULL to disable). When an FTP server asks for "account data" after user name and password has been provided, this data is sent off using the ACCT command. (Added in 7.13.0) 
+<p class="level1">Send ACCT command. See <span Class="emphasis">CURLOPT_FTP_ACCOUNT(3)</span> 
 <p class="level0"><a name="CURLOPTFTPFILEMETHOD"></a><span class="nroffip">CURLOPT_FTP_FILEMETHOD</span> 
 <p class="level0"><a name="CURLOPTFTPFILEMETHOD"></a><span class="nroffip">CURLOPT_FTP_FILEMETHOD</span> 
-<p class="level1">Pass a long that should have one of the following values. This option controls what method libcurl should use to reach a file on a FTP(S) server. The argument should be one of the following alternatives: 
-<p class="level2">
-<p class="level1"><a name="CURLFTPMETHODMULTICWD"></a><span class="nroffip">CURLFTPMETHOD_MULTICWD</span> 
-<p class="level2">libcurl does a single CWD operation for each path part in the given URL. For deep hierarchies this means many commands. This is how <a href="http://www.ietf.org/rfc/rfc1738.txt">RFC 1738</a> says it should be done. This is the default but the slowest behavior. 
-<p class="level1"><a name="CURLFTPMETHODNOCWD"></a><span class="nroffip">CURLFTPMETHOD_NOCWD</span> 
-<p class="level2">libcurl does no CWD at all. libcurl will do SIZE, RETR, STOR etc and give a full path to the server for all these commands. This is the fastest behavior. 
-<p class="level1"><a name="CURLFTPMETHODSINGLECWD"></a><span class="nroffip">CURLFTPMETHOD_SINGLECWD</span> 
-<p class="level2">libcurl does one CWD with the full target directory and then operates on the file "normally" (like in the multicwd case). This is somewhat more standards compliant than 'nocwd' but without the full penalty of 'multicwd'. 
-<p class="level1">(Added in 7.15.1) <a name="RTSP"></a><h2 class="nroffsh">RTSP OPTIONS</h2>
+<p class="level1">Specify how to reach files. See <span Class="emphasis">CURLOPT_FTP_FILEMETHOD(3)</span> <a name="RTSP"></a><h2 class="nroffsh">RTSP OPTIONS</h2>
 <p class="level0">
 <p class="level0"><a name="CURLOPTRTSPREQUEST"></a><span class="nroffip">CURLOPT_RTSP_REQUEST</span> 
 <p class="level0">
 <p class="level0"><a name="CURLOPTRTSPREQUEST"></a><span class="nroffip">CURLOPT_RTSP_REQUEST</span> 
-<p class="level1">Tell libcurl what kind of RTSP request to make. Pass one of the following RTSP enum values. Unless noted otherwise, commands require the Session ID to be initialized. (Added in 7.20.0) 
-<p class="level2">
-<p class="level1"><a name="CURLRTSPREQOPTIONS"></a><span class="nroffip">CURL_RTSPREQ_OPTIONS</span> 
-<p class="level2">Used to retrieve the available methods of the server. The application is responsible for parsing and obeying the response. <span class="bold">(The session ID is not needed for this method.)</span>  (Added in 7.20.0) 
-<p class="level1"><a name="CURLRTSPREQDESCRIBE"></a><span class="nroffip">CURL_RTSPREQ_DESCRIBE</span> 
-<p class="level2">Used to get the low level description of a stream. The application should note what formats it understands in the <span Class="emphasis">'Accept:'</span> header. Unless set manually, libcurl will automatically fill in <span class="emphasis">'Accept: application/sdp'</span>. Time-condition headers will be added to Describe requests if the <a class="emphasis" href="#CURLOPTTIMECONDITION">CURLOPT_TIMECONDITION</a> option is active. <span class="bold">(The session ID is not needed for this method)</span>  (Added in 7.20.0) 
-<p class="level1"><a name="CURLRTSPREQANNOUNCE"></a><span class="nroffip">CURL_RTSPREQ_ANNOUNCE</span> 
-<p class="level2">When sent by a client, this method changes the description of the session. For example, if a client is using the server to record a meeting, the client can use Announce to inform the server of all the meta-information about the session.  ANNOUNCE acts like a HTTP PUT or POST just like <a class="emphasis" href="#CURLRTSPREQSETPARAMETER">CURL_RTSPREQ_SET_PARAMETER</a> (Added in 7.20.0) 
-<p class="level1"><a name="CURLRTSPREQSETUP"></a><span class="nroffip">CURL_RTSPREQ_SETUP</span> 
-<p class="level2">Setup is used to initialize the transport layer for the session. The application must set the desired Transport options for a session by using the <a class="emphasis" href="#CURLOPTRTSPTRANSPORT">CURLOPT_RTSP_TRANSPORT</a> option prior to calling setup. If no session ID is currently set with <a class="emphasis" href="#CURLOPTRTSPSESSIONID">CURLOPT_RTSP_SESSION_ID</a>, libcurl will extract and use the session ID in the response to this request. <span class="bold">(The session ID is not needed for this method).</span>  (Added in 7.20.0) 
-<p class="level1"><a name="CURLRTSPREQPLAY"></a><span class="nroffip">CURL_RTSPREQ_PLAY</span> 
-<p class="level2">Send a Play command to the server. Use the <a class="emphasis" href="#CURLOPTRANGE">CURLOPT_RANGE</a> option to modify the playback time (e.g. 'npt=10-15').  (Added in 7.20.0) 
-<p class="level1"><a name="CURLRTSPREQPAUSE"></a><span class="nroffip">CURL_RTSPREQ_PAUSE</span> 
-<p class="level2">Send a Pause command to the server. Use the <a class="emphasis" href="#CURLOPTRANGE">CURLOPT_RANGE</a> option with a single value to indicate when the stream should be halted. (e.g. npt='25') (Added in 7.20.0) 
-<p class="level1"><a name="CURLRTSPREQTEARDOWN"></a><span class="nroffip">CURL_RTSPREQ_TEARDOWN</span> 
-<p class="level2">This command terminates an RTSP session. Simply closing a connection does not terminate the RTSP session since it is valid to control an RTSP session over different connections.  (Added in 7.20.0) 
-<p class="level1"><a name="CURLRTSPREQGETPARAMETER"></a><span class="nroffip">CURL_RTSPREQ_GET_PARAMETER</span> 
-<p class="level2">Retrieve a parameter from the server. By default, libcurl will automatically include a <span Class="emphasis">Content-Type: text/parameters</span> header on all non-empty requests unless a custom one is set. GET_PARAMETER acts just like a HTTP PUT or POST (see <a class="emphasis" href="#CURLRTSPREQSETPARAMETER">CURL_RTSPREQ_SET_PARAMETER</a>). Applications wishing to send a heartbeat message (e.g. in the presence of a server-specified timeout) should send use an empty GET_PARAMETER request. (Added in 7.20.0) 
-<p class="level1"><a name="CURLRTSPREQSETPARAMETER"></a><span class="nroffip">CURL_RTSPREQ_SET_PARAMETER</span> 
-<p class="level2">Set a parameter on the server. By default, libcurl will automatically include a <span Class="emphasis">Content-Type: text/parameters</span> header unless a custom one is set. The interaction with SET_PARAMTER is much like a HTTP PUT or POST. An application may either use <a class="emphasis" href="#CURLOPTUPLOAD">CURLOPT_UPLOAD</a> with <a class="emphasis" href="#CURLOPTREADDATA">CURLOPT_READDATA</a> like a HTTP PUT, or it may use <a class="emphasis" href="#CURLOPTPOSTFIELDS">CURLOPT_POSTFIELDS</a> like a HTTP POST. No chunked transfers are allowed, so the application must set the <a class="emphasis" href="#CURLOPTINFILESIZE">CURLOPT_INFILESIZE</a> in the former and <a class="emphasis" href="#CURLOPTPOSTFIELDSIZE">CURLOPT_POSTFIELDSIZE</a> in the latter. Also, there is no use of multi-part POSTs within RTSP. (Added in 7.20.0) 
-<p class="level1"><a name="CURLRTSPREQRECORD"></a><span class="nroffip">CURL_RTSPREQ_RECORD</span> 
-<p class="level2">Used to tell the server to record a session. Use the <a class="emphasis" href="#CURLOPTRANGE">CURLOPT_RANGE</a> option to modify the record time. (Added in 7.20.0) 
-<p class="level1"><a name="CURLRTSPREQRECEIVE"></a><span class="nroffip">CURL_RTSPREQ_RECEIVE</span> 
-<p class="level2">This is a special request because it does not send any data to the server. The application may call this function in order to receive interleaved RTP data. It will return after processing one read buffer of data in order to give the application a chance to run. (Added in 7.20.0) 
-<p class="level1">
+<p class="level1">RTSP request. See <span Class="emphasis">CURLOPT_RTSP_REQUEST(3)</span> 
 <p class="level0"><a name="CURLOPTRTSPSESSIONID"></a><span class="nroffip">CURLOPT_RTSP_SESSION_ID</span> 
 <p class="level0"><a name="CURLOPTRTSPSESSIONID"></a><span class="nroffip">CURLOPT_RTSP_SESSION_ID</span> 
-<p class="level1">Pass a char * as a parameter to set the value of the current RTSP Session ID for the handle. Useful for resuming an in-progress session. Once this value is set to any non-NULL value, libcurl will return <span Class="emphasis">CURLE_RTSP_SESSION_ERROR</span> if ID received from the server does not match. If unset (or set to NULL), libcurl will automatically set the ID the first time the server sets it in a response. (Added in 7.20.0) 
+<p class="level1">RTSP session-id. See <span Class="emphasis">CURLOPT_RTSP_SESSION_ID(3)</span> 
 <p class="level0"><a name="CURLOPTRTSPSTREAMURI"></a><span class="nroffip">CURLOPT_RTSP_STREAM_URI</span> 
 <p class="level0"><a name="CURLOPTRTSPSTREAMURI"></a><span class="nroffip">CURLOPT_RTSP_STREAM_URI</span> 
-<p class="level1">Set the stream URI to operate on by passing a char * . For example, a single session may be controlling <span Class="emphasis">rtsp://foo/twister/audio</span> and <span Class="emphasis">rtsp://foo/twister/video</span> and the application can switch to the appropriate stream using this option. If unset, libcurl will default to operating on generic server options by passing '*' in the place of the RTSP Stream URI. This option is distinct from <a class="emphasis" href="#CURLOPTURL">CURLOPT_URL</a>. When working with RTSP, the <span Class="emphasis">CURLOPT_STREAM_URI</span> indicates what URL to send to the server in the request header while the <a class="emphasis" href="#CURLOPTURL">CURLOPT_URL</a> indicates where to make the connection to.  (e.g. the <a class="emphasis" href="#CURLOPTURL">CURLOPT_URL</a> for the above examples might be set to <span Class="emphasis">rtsp://foo/twister</span> (Added in 7.20.0) 
+<p class="level1">RTSP stream URI. See <span Class="emphasis">CURLOPT_RTSP_STREAM_URI(3)</span> 
 <p class="level0"><a name="CURLOPTRTSPTRANSPORT"></a><span class="nroffip">CURLOPT_RTSP_TRANSPORT</span> 
 <p class="level0"><a name="CURLOPTRTSPTRANSPORT"></a><span class="nroffip">CURLOPT_RTSP_TRANSPORT</span> 
-<p class="level1">Pass a char * to tell libcurl what to pass for the Transport: header for this RTSP session. This is mainly a convenience method to avoid needing to set a custom Transport: header for every SETUP request. The application must set a Transport: header before issuing a SETUP request. (Added in 7.20.0) 
-<p class="level0"><a name="CURLOPTRTSPHEADER"></a><span class="nroffip">CURLOPT_RTSP_HEADER</span> 
-<p class="level1">This option is simply an alias for <a class="emphasis" href="#CURLOPTHTTPHEADER">CURLOPT_HTTP_HEADER</a>. Use this to replace the standard headers that RTSP and HTTP share. It is also valid to use the shortcuts such as <a class="emphasis" href="#CURLOPTUSERAGENT">CURLOPT_USERAGENT</a>. (Added in 7.20.0) 
+<p class="level1">RTSP Transport: header. See <span Class="emphasis">CURLOPT_RTSP_TRANSPORT(3)</span> 
 <p class="level0"><a name="CURLOPTRTSPCLIENTCSEQ"></a><span class="nroffip">CURLOPT_RTSP_CLIENT_CSEQ</span> 
 <p class="level0"><a name="CURLOPTRTSPCLIENTCSEQ"></a><span class="nroffip">CURLOPT_RTSP_CLIENT_CSEQ</span> 
-<p class="level1">Manually set the the CSEQ number to issue for the next RTSP request. Useful if the application is resuming a previously broken connection. The CSEQ will increment from this new number henceforth. (Added in 7.20.0) 
+<p class="level1">Client CSEQ number. See <span Class="emphasis">CURLOPT_RTSP_CLIENT_CSEQ(3)</span> 
 <p class="level0"><a name="CURLOPTRTSPSERVERCSEQ"></a><span class="nroffip">CURLOPT_RTSP_SERVER_CSEQ</span> 
 <p class="level0"><a name="CURLOPTRTSPSERVERCSEQ"></a><span class="nroffip">CURLOPT_RTSP_SERVER_CSEQ</span> 
-<p class="level1">Manually set the CSEQ number to expect for the next RTSP Server-&gt;Client request.  At the moment, this feature (listening for Server requests) is unimplemented. (Added in 7.20.0) <a name="PROTOCOL"></a><h2 class="nroffsh">PROTOCOL OPTIONS</h2>
+<p class="level1">CSEQ number for RTSP Server-&gt;Client request. See <span Class="emphasis">CURLOPT_RTSP_SERVER_CSEQ(3)</span> <a name="PROTOCOL"></a><h2 class="nroffsh">PROTOCOL OPTIONS</h2>
 <p class="level0">
 <p class="level0"><a name="CURLOPTTRANSFERTEXT"></a><span class="nroffip">CURLOPT_TRANSFERTEXT</span> 
 <p class="level0">
 <p class="level0"><a name="CURLOPTTRANSFERTEXT"></a><span class="nroffip">CURLOPT_TRANSFERTEXT</span> 
-<p class="level1">A parameter set to 1 tells the library to use ASCII mode for FTP transfers, instead of the default binary transfer. For win32 systems it does not set the stdout to binary mode. This option can be usable when transferring text data between systems with different views on certain characters, such as newlines or similar. 
-<p class="level1">libcurl does not do a complete ASCII conversion when doing ASCII transfers over FTP. This is a known limitation/flaw that nobody has rectified. libcurl simply sets the mode to ASCII and performs a standard transfer. 
+<p class="level1">Use text transfer. See <span Class="emphasis">CURLOPT_TRANSFERTEXT(3)</span> 
 <p class="level0"><a name="CURLOPTPROXYTRANSFERMODE"></a><span class="nroffip">CURLOPT_PROXY_TRANSFER_MODE</span> 
 <p class="level0"><a name="CURLOPTPROXYTRANSFERMODE"></a><span class="nroffip">CURLOPT_PROXY_TRANSFER_MODE</span> 
-<p class="level1">Pass a long. If the value is set to 1 (one), it tells libcurl to set the transfer mode (binary or ASCII) for FTP transfers done via a HTTP proxy, by appending ;type=a or ;type=i to the URL. Without this setting, or it being set to 0 (zero, the default), <a class="emphasis" href="#CURLOPTTRANSFERTEXT">CURLOPT_TRANSFERTEXT</a> has no effect when doing FTP via a proxy. Beware that not all proxies support this feature.  (Added in 7.18.0) 
+<p class="level1">Add transfer mode to URL over proxy. See <span Class="emphasis">CURLOPT_PROXY_TRANSFER_MODE(3)</span> 
 <p class="level0"><a name="CURLOPTCRLF"></a><span class="nroffip">CURLOPT_CRLF</span> 
 <p class="level0"><a name="CURLOPTCRLF"></a><span class="nroffip">CURLOPT_CRLF</span> 
-<p class="level1">Pass a long. If the value is set to 1 (one), libcurl converts Unix newlines to CRLF newlines on transfers. Disable this option again by setting the value to 0 (zero). 
+<p class="level1">Convert newlines. See <span Class="emphasis">CURLOPT_CRLF(3)</span> 
 <p class="level0"><a name="CURLOPTRANGE"></a><span class="nroffip">CURLOPT_RANGE</span> 
 <p class="level0"><a name="CURLOPTRANGE"></a><span class="nroffip">CURLOPT_RANGE</span> 
-<p class="level1">Pass a char * as parameter, which should contain the specified range you want. It should be in the format "X-Y", where X or Y may be left out. HTTP transfers also support several intervals, separated with commas as in <span Class="emphasis">"X-Y,N-M"</span>. Using this kind of multiple intervals will cause the HTTP server to send the response document in pieces (using standard MIME separation techniques). For RTSP, the formatting of a range should follow <a href="http://www.ietf.org/rfc/rfc2326.txt">RFC 2326</a> Section 12.29. For RTSP, byte ranges are <span Class="bold">not</span> permitted. Instead, ranges should be given in npt, utc, or smpte formats. 
-<p class="level1">Pass a NULL to this option to disable the use of ranges. 
-<p class="level1">Ranges work on HTTP, FTP, FILE (since 7.18.0), and RTSP (since 7.20.0) transfers only. 
+<p class="level1">Range requests. See <span Class="emphasis">CURLOPT_RANGE(3)</span> 
 <p class="level0"><a name="CURLOPTRESUMEFROM"></a><span class="nroffip">CURLOPT_RESUME_FROM</span> 
 <p class="level0"><a name="CURLOPTRESUMEFROM"></a><span class="nroffip">CURLOPT_RESUME_FROM</span> 
-<p class="level1">Pass a long as parameter. It contains the offset in number of bytes that you want the transfer to start from. Set this option to 0 to make the transfer start from the beginning (effectively disabling resume). For FTP, set this option to -1 to make the transfer start from the end of the target file (useful to continue an interrupted upload). 
-<p class="level1">When doing uploads with FTP, the resume position is where in the local/source file libcurl should try to resume the upload from and it will then append the source file to the remote target file. 
+<p class="level1">Resume a transfer. See <span Class="emphasis">CURLOPT_RESUME_FROM(3)</span> 
 <p class="level0"><a name="CURLOPTRESUMEFROMLARGE"></a><span class="nroffip">CURLOPT_RESUME_FROM_LARGE</span> 
 <p class="level0"><a name="CURLOPTRESUMEFROMLARGE"></a><span class="nroffip">CURLOPT_RESUME_FROM_LARGE</span> 
-<p class="level1">Pass a curl_off_t as parameter. It contains the offset in number of bytes that you want the transfer to start from. (Added in 7.11.0) 
+<p class="level1">Resume a transfer. See <span Class="emphasis">CURLOPT_RESUME_FROM_LARGE(3)</span> 
 <p class="level0"><a name="CURLOPTCUSTOMREQUEST"></a><span class="nroffip">CURLOPT_CUSTOMREQUEST</span> 
 <p class="level0"><a name="CURLOPTCUSTOMREQUEST"></a><span class="nroffip">CURLOPT_CUSTOMREQUEST</span> 
-<p class="level1">Pass a pointer to a zero terminated string as parameter. It can be used to specify the request instead of GET or HEAD when performing HTTP based requests, instead of LIST and NLST when performing FTP directory listings and instead of LIST and RETR when issuing POP3 based commands. This is particularly useful, for example, for performing a HTTP DELETE request or a POP3 DELE command. 
-<p class="level1">Please don't perform this at will, on HTTP based requests, by making sure your server supports the command you are sending first. 
-<p class="level1">When you change the request method by setting <a class="bold" href="#CURLOPTCUSTOMREQUEST">CURLOPT_CUSTOMREQUEST</a> to something, you don't actually change how libcurl behaves or acts in regards to the particular request method, it will only change the actual string sent in the request. 
-<p class="level1">For example: 
-<p class="level1">With the HTTP protocol when you tell libcurl to do a HEAD request, but then specify a GET though a custom request libcurl will still act as if it sent a HEAD. To switch to a proper HEAD use <a class="emphasis" href="#CURLOPTNOBODY">CURLOPT_NOBODY</a>, to switch to a proper POST use <a class="emphasis" href="#CURLOPTPOST">CURLOPT_POST</a> or <a class="emphasis" href="#CURLOPTPOSTFIELDS">CURLOPT_POSTFIELDS</a> and to switch to a proper GET use CURLOPT_HTTPGET. 
-<p class="level1">With the POP3 protocol when you tell libcurl to use a custom request it will behave like a LIST or RETR command was sent where it expects data to be returned by the server. As such <a class="emphasis" href="#CURLOPTNOBODY">CURLOPT_NOBODY</a> should be used when specifying commands such as DELE and NOOP for example. 
-<p class="level1">Restore to the internal default by setting this to NULL. 
-<p class="level1">Many people have wrongly used this option to replace the entire request with their own, including multiple headers and POST contents. While that might work in many cases, it will cause libcurl to send invalid requests and it could possibly confuse the remote server badly. Use <a class="emphasis" href="#CURLOPTPOST">CURLOPT_POST</a> and <a class="emphasis" href="#CURLOPTPOSTFIELDS">CURLOPT_POSTFIELDS</a> to set POST data. Use <a class="emphasis" href="#CURLOPTHTTPHEADER">CURLOPT_HTTPHEADER</a> to replace or extend the set of headers sent by libcurl. Use <a class="emphasis" href="#CURLOPTHTTPVERSION">CURLOPT_HTTP_VERSION</a> to change HTTP version. 
-<p class="level1">(Support for POP3 added in 7.26.0) 
+<p class="level1">Custom request/method. See <span Class="emphasis">CURLOPT_CUSTOMREQUEST(3)</span> 
 <p class="level0"><a name="CURLOPTFILETIME"></a><span class="nroffip">CURLOPT_FILETIME</span> 
 <p class="level0"><a name="CURLOPTFILETIME"></a><span class="nroffip">CURLOPT_FILETIME</span> 
-<p class="level1">Pass a long. If it is 1, libcurl will attempt to get the modification date of the remote document in this operation. This requires that the remote server sends the time or replies to a time querying command. The <a class="emphasis" href="./curl_easy_getinfo.html">curl_easy_getinfo(3)</a> function with the <span Class="emphasis">CURLINFO_FILETIME</span> argument can be used after a transfer to extract the received time (if any). 
+<p class="level1">Request file modification date and time. See <span Class="emphasis">CURLOPT_FILETIME(3)</span> 
+<p class="level0"><a name="CURLOPTDIRLISTONLY"></a><span class="nroffip">CURLOPT_DIRLISTONLY</span> 
+<p class="level1">List only. See <span Class="emphasis">CURLOPT_DIRLISTONLY(3)</span> 
 <p class="level0"><a name="CURLOPTNOBODY"></a><span class="nroffip">CURLOPT_NOBODY</span> 
 <p class="level0"><a name="CURLOPTNOBODY"></a><span class="nroffip">CURLOPT_NOBODY</span> 
-<p class="level1">A parameter set to 1 tells the library to not include the body-part in the output. This is only relevant for protocols that have separate header and body parts. On HTTP(S) servers, this will make libcurl do a HEAD request. 
-<p class="level1">To change request to GET, you should use <a class="emphasis" href="#CURLOPTHTTPGET">CURLOPT_HTTPGET</a>. Change request to POST with <a class="emphasis" href="#CURLOPTPOST">CURLOPT_POST</a> etc. 
+<p class="level1">Do not get the body contents. See <span Class="emphasis">CURLOPT_NOBODY(3)</span> 
 <p class="level0"><a name="CURLOPTINFILESIZE"></a><span class="nroffip">CURLOPT_INFILESIZE</span> 
 <p class="level0"><a name="CURLOPTINFILESIZE"></a><span class="nroffip">CURLOPT_INFILESIZE</span> 
-<p class="level1">When uploading a file to a remote site, this option should be used to tell libcurl what the expected size of the infile is. This value should be passed as a long. See also <a class="emphasis" href="#CURLOPTINFILESIZELARGE">CURLOPT_INFILESIZE_LARGE</a>. 
-<p class="level1">For uploading using SCP, this option or <a class="emphasis" href="#CURLOPTINFILESIZELARGE">CURLOPT_INFILESIZE_LARGE</a> is mandatory. 
-<p class="level1">When sending emails using SMTP, this command can be used to specify the optional SIZE parameter for the MAIL FROM command. (Added in 7.23.0) 
-<p class="level1">This option does not limit how much data libcurl will actually send, as that is controlled entirely by what the read callback returns. 
+<p class="level1">Size of file to send. <span Class="emphasis">CURLOPT_INFILESIZE(3)</span> 
 <p class="level0"><a name="CURLOPTINFILESIZELARGE"></a><span class="nroffip">CURLOPT_INFILESIZE_LARGE</span> 
 <p class="level0"><a name="CURLOPTINFILESIZELARGE"></a><span class="nroffip">CURLOPT_INFILESIZE_LARGE</span> 
-<p class="level1">When uploading a file to a remote site, this option should be used to tell libcurl what the expected size of the infile is.  This value should be passed as a curl_off_t. (Added in 7.11.0) 
-<p class="level1">For uploading using SCP, this option or <a class="emphasis" href="#CURLOPTINFILESIZE">CURLOPT_INFILESIZE</a> is mandatory. 
-<p class="level1">This option does not limit how much data libcurl will actually send, as that is controlled entirely by what the read callback returns. 
+<p class="level1">Size of file to send. <span Class="emphasis">CURLOPT_INFILESIZE_LARGE(3)</span> 
 <p class="level0"><a name="CURLOPTUPLOAD"></a><span class="nroffip">CURLOPT_UPLOAD</span> 
 <p class="level0"><a name="CURLOPTUPLOAD"></a><span class="nroffip">CURLOPT_UPLOAD</span> 
-<p class="level1">A parameter set to 1 tells the library to prepare for an upload. The <a class="emphasis" href="#CURLOPTREADDATA">CURLOPT_READDATA</a> and <a class="emphasis" href="#CURLOPTINFILESIZE">CURLOPT_INFILESIZE</a> or <a class="emphasis" href="#CURLOPTINFILESIZELARGE">CURLOPT_INFILESIZE_LARGE</a> options are also interesting for uploads. If the protocol is HTTP, uploading means using the PUT request unless you tell libcurl otherwise. 
-<p class="level1">Using PUT with HTTP 1.1 implies the use of a "Expect: 100-continue" header. You can disable this header with <a class="emphasis" href="#CURLOPTHTTPHEADER">CURLOPT_HTTPHEADER</a> as usual. 
-<p class="level1">If you use PUT to a HTTP 1.1 server, you can upload data without knowing the size before starting the transfer if you use chunked encoding. You enable this by adding a header like "Transfer-Encoding: chunked" with <a class="emphasis" href="#CURLOPTHTTPHEADER">CURLOPT_HTTPHEADER</a>. With HTTP 1.0 or without chunked transfer, you must specify the size. 
+<p class="level1">Upload data. See <span Class="emphasis">CURLOPT_UPLOAD(3)</span> 
 <p class="level0"><a name="CURLOPTMAXFILESIZE"></a><span class="nroffip">CURLOPT_MAXFILESIZE</span> 
 <p class="level0"><a name="CURLOPTMAXFILESIZE"></a><span class="nroffip">CURLOPT_MAXFILESIZE</span> 
-<p class="level1">Pass a long as parameter. This allows you to specify the maximum size (in bytes) of a file to download. If the file requested is larger than this value, the transfer will not start and CURLE_FILESIZE_EXCEEDED will be returned. 
-<p class="level1">The file size is not always known prior to download, and for such files this option has no effect even if the file transfer ends up being larger than this given limit. This concerns both FTP and HTTP transfers. 
+<p class="level1">Maximum file size to get. See <span Class="emphasis">CURLOPT_MAXFILESIZE(3)</span> 
 <p class="level0"><a name="CURLOPTMAXFILESIZELARGE"></a><span class="nroffip">CURLOPT_MAXFILESIZE_LARGE</span> 
 <p class="level0"><a name="CURLOPTMAXFILESIZELARGE"></a><span class="nroffip">CURLOPT_MAXFILESIZE_LARGE</span> 
-<p class="level1">Pass a curl_off_t as parameter. This allows you to specify the maximum size (in bytes) of a file to download. If the file requested is larger than this value, the transfer will not start and <span Class="emphasis">CURLE_FILESIZE_EXCEEDED</span> will be returned. (Added in 7.11.0) 
-<p class="level1">The file size is not always known prior to download, and for such files this option has no effect even if the file transfer ends up being larger than this given limit. This concerns both FTP and HTTP transfers. 
+<p class="level1">Maximum file size to get. See <span Class="emphasis">CURLOPT_MAXFILESIZE_LARGE(3)</span> 
 <p class="level0"><a name="CURLOPTTIMECONDITION"></a><span class="nroffip">CURLOPT_TIMECONDITION</span> 
 <p class="level0"><a name="CURLOPTTIMECONDITION"></a><span class="nroffip">CURLOPT_TIMECONDITION</span> 
-<p class="level1">Pass a long as parameter. This defines how the <a class="emphasis" href="#CURLOPTTIMEVALUE">CURLOPT_TIMEVALUE</a> time value is treated. You can set this parameter to <span Class="emphasis">CURL_TIMECOND_IFMODSINCE</span> or <span Class="emphasis">CURL_TIMECOND_IFUNMODSINCE</span>. This feature applies to HTTP, FTP, RTSP, and FILE. 
-<p class="level1">The last modification time of a file is not always known and in such instances this feature will have no effect even if the given time condition would not have been met. <a class="emphasis" href="./curl_easy_getinfo.html">curl_easy_getinfo(3)</a> with the <span Class="emphasis">CURLINFO_CONDITION_UNMET</span> option can be used after a transfer to learn if a zero-byte successful "transfer" was due to this condition not matching. 
+<p class="level1">Make a time conditional request. See <span Class="emphasis">CURLOPT_TIMECONDITION(3)</span> 
 <p class="level0"><a name="CURLOPTTIMEVALUE"></a><span class="nroffip">CURLOPT_TIMEVALUE</span> 
 <p class="level0"><a name="CURLOPTTIMEVALUE"></a><span class="nroffip">CURLOPT_TIMEVALUE</span> 
-<p class="level1">Pass a long as parameter. This should be the time in seconds since 1 Jan 1970, and the time will be used in a condition as specified with <a class="emphasis" href="#CURLOPTTIMECONDITION">CURLOPT_TIMECONDITION</a>. <a name="CONNECTION"></a><h2 class="nroffsh">CONNECTION OPTIONS</h2>
+<p class="level1">Time value for the time conditional request. See <span Class="emphasis">CURLOPT_TIMEVALUE(3)</span> <a name="CONNECTION"></a><h2 class="nroffsh">CONNECTION OPTIONS</h2>
 <p class="level0">
 <p class="level0"><a name="CURLOPTTIMEOUT"></a><span class="nroffip">CURLOPT_TIMEOUT</span> 
 <p class="level0">
 <p class="level0"><a name="CURLOPTTIMEOUT"></a><span class="nroffip">CURLOPT_TIMEOUT</span> 
-<p class="level1">Pass a long as parameter containing the maximum time in seconds that you allow the libcurl transfer operation to take. Normally, name lookups can take a considerable time and limiting operations to less than a few minutes risk aborting perfectly normal operations. This option will cause curl to use the SIGALRM to enable time-outing system calls. 
-<p class="level1">In unix-like systems, this might cause signals to be used unless <a class="emphasis" href="#CURLOPTNOSIGNAL">CURLOPT_NOSIGNAL</a> is set. 
-<p class="level1">Default timeout is 0 (zero) which means it never times out. 
+<p class="level1">Timeout for the entire request. See <span Class="emphasis">CURLOPT_TIMEOUT(3)</span> 
 <p class="level0"><a name="CURLOPTTIMEOUTMS"></a><span class="nroffip">CURLOPT_TIMEOUT_MS</span> 
 <p class="level0"><a name="CURLOPTTIMEOUTMS"></a><span class="nroffip">CURLOPT_TIMEOUT_MS</span> 
-<p class="level1">Like <a class="emphasis" href="#CURLOPTTIMEOUT">CURLOPT_TIMEOUT</a> but takes number of milliseconds instead. If libcurl is built to use the standard system name resolver, that portion of the transfer will still use full-second resolution for timeouts with a minimum timeout allowed of one second. (Added in 7.16.2) 
+<p class="level1">Millisecond timeout for the entire request. See <span Class="emphasis">CURLOPT_TIMEOUT_MS(3)</span> 
 <p class="level0"><a name="CURLOPTLOWSPEEDLIMIT"></a><span class="nroffip">CURLOPT_LOW_SPEED_LIMIT</span> 
 <p class="level0"><a name="CURLOPTLOWSPEEDLIMIT"></a><span class="nroffip">CURLOPT_LOW_SPEED_LIMIT</span> 
-<p class="level1">Pass a long as parameter. It contains the transfer speed in bytes per second that the transfer should be below during <a class="emphasis" href="#CURLOPTLOWSPEEDTIME">CURLOPT_LOW_SPEED_TIME</a> seconds for the library to consider it too slow and abort. 
+<p class="level1">Low speed limit to abort transfer. See <span Class="emphasis">CURLOPT_LOW_SPEED_LIMIT(3)</span> 
 <p class="level0"><a name="CURLOPTLOWSPEEDTIME"></a><span class="nroffip">CURLOPT_LOW_SPEED_TIME</span> 
 <p class="level0"><a name="CURLOPTLOWSPEEDTIME"></a><span class="nroffip">CURLOPT_LOW_SPEED_TIME</span> 
-<p class="level1">Pass a long as parameter. It contains the time in seconds that the transfer should be below the <a class="emphasis" href="#CURLOPTLOWSPEEDLIMIT">CURLOPT_LOW_SPEED_LIMIT</a> for the library to consider it too slow and abort. 
+<p class="level1">Time to be below the speed to trigger low speed abort. See <span Class="emphasis">CURLOPT_LOW_SPEED_TIME(3)</span> 
 <p class="level0"><a name="CURLOPTMAXSENDSPEEDLARGE"></a><span class="nroffip">CURLOPT_MAX_SEND_SPEED_LARGE</span> 
 <p class="level0"><a name="CURLOPTMAXSENDSPEEDLARGE"></a><span class="nroffip">CURLOPT_MAX_SEND_SPEED_LARGE</span> 
-<p class="level1">Pass a curl_off_t as parameter.  If an upload exceeds this speed (counted in bytes per second) on cumulative average during the transfer, the transfer will pause to keep the average rate less than or equal to the parameter value. Defaults to unlimited speed. (Added in 7.15.5) 
+<p class="level1">Cap the upload speed to this. See <span Class="emphasis">CURLOPT_MAX_SEND_SPEED_LARGE(3)</span> 
 <p class="level0"><a name="CURLOPTMAXRECVSPEEDLARGE"></a><span class="nroffip">CURLOPT_MAX_RECV_SPEED_LARGE</span> 
 <p class="level0"><a name="CURLOPTMAXRECVSPEEDLARGE"></a><span class="nroffip">CURLOPT_MAX_RECV_SPEED_LARGE</span> 
-<p class="level1">Pass a curl_off_t as parameter.  If a download exceeds this speed (counted in bytes per second) on cumulative average during the transfer, the transfer will pause to keep the average rate less than or equal to the parameter value. Defaults to unlimited speed. (Added in 7.15.5) 
+<p class="level1">Cap the download speed to this. See <span Class="emphasis">CURLOPT_MAX_RECV_SPEED_LARGE(3)</span> 
 <p class="level0"><a name="CURLOPTMAXCONNECTS"></a><span class="nroffip">CURLOPT_MAXCONNECTS</span> 
 <p class="level0"><a name="CURLOPTMAXCONNECTS"></a><span class="nroffip">CURLOPT_MAXCONNECTS</span> 
-<p class="level1">Pass a long. The set number will be the persistent connection cache size. The set amount will be the maximum amount of simultaneously open connections that libcurl may cache in this easy handle. Default is 5, and there isn't much point in changing this value unless you are perfectly aware of how this works and changes libcurl's behaviour. This concerns connections using any of the protocols that support persistent connections. 
-<p class="level1">When reaching the maximum limit, curl closes the oldest one in the cache to prevent increasing the number of open connections. 
-<p class="level1">If you already have performed transfers with this curl handle, setting a smaller MAXCONNECTS than before may cause open connections to get closed unnecessarily. 
-<p class="level1">If you add this easy handle to a multi handle, this setting is not acknowledged, and you must instead use <a class="emphasis" href="./curl_multi_setopt.html">curl_multi_setopt(3)</a> and the <span Class="emphasis">CURLMOPT_MAXCONNECTS</span> option. 
-<p class="level0"><a name="CURLOPTCLOSEPOLICY"></a><span class="nroffip">CURLOPT_CLOSEPOLICY</span> 
-<p class="level1">(Obsolete) This option does nothing. 
+<p class="level1">Maximum number of connections in the connection pool. See <span Class="emphasis">CURLOPT_MAXCONNECTS(3)</span> 
 <p class="level0"><a name="CURLOPTFRESHCONNECT"></a><span class="nroffip">CURLOPT_FRESH_CONNECT</span> 
 <p class="level0"><a name="CURLOPTFRESHCONNECT"></a><span class="nroffip">CURLOPT_FRESH_CONNECT</span> 
-<p class="level1">Pass a long. Set to 1 to make the next transfer use a new (fresh) connection by force. If the connection cache is full before this connection, one of the existing connections will be closed as according to the selected or default policy. This option should be used with caution and only if you understand what it does. Set this to 0 to have libcurl attempt re-using an existing connection (default behavior). 
+<p class="level1">Use a new connection. <span Class="emphasis">CURLOPT_FRESH_CONNECT(3)</span> 
 <p class="level0"><a name="CURLOPTFORBIDREUSE"></a><span class="nroffip">CURLOPT_FORBID_REUSE</span> 
 <p class="level0"><a name="CURLOPTFORBIDREUSE"></a><span class="nroffip">CURLOPT_FORBID_REUSE</span> 
-<p class="level1">Pass a long. Set to 1 to make the next transfer explicitly close the connection when done. Normally, libcurl keeps all connections alive when done with one transfer in case a succeeding one follows that can re-use them. This option should be used with caution and only if you understand what it does. Set to 0 to have libcurl keep the connection open for possible later re-use (default behavior). 
+<p class="level1">Prevent subsequent connections from re-using this. See <span Class="emphasis">CURLOPT_FORBID_REUSE(3)</span> 
 <p class="level0"><a name="CURLOPTCONNECTTIMEOUT"></a><span class="nroffip">CURLOPT_CONNECTTIMEOUT</span> 
 <p class="level0"><a name="CURLOPTCONNECTTIMEOUT"></a><span class="nroffip">CURLOPT_CONNECTTIMEOUT</span> 
-<p class="level1">Pass a long. It should contain the maximum time in seconds that you allow the connection to the server to take.  This only limits the connection phase, once it has connected, this option is of no more use. Set to zero to switch to the default built-in connection timeout - 300 seconds. See also the <a class="emphasis" href="#CURLOPTTIMEOUT">CURLOPT_TIMEOUT</a> option. 
-<p class="level1">In unix-like systems, this might cause signals to be used unless <a class="emphasis" href="#CURLOPTNOSIGNAL">CURLOPT_NOSIGNAL</a> is set. 
+<p class="level1">Timeout for the connection phase. See <span Class="emphasis">CURLOPT_CONNECTTIMEOUT(3)</span> 
 <p class="level0"><a name="CURLOPTCONNECTTIMEOUTMS"></a><span class="nroffip">CURLOPT_CONNECTTIMEOUT_MS</span> 
 <p class="level0"><a name="CURLOPTCONNECTTIMEOUTMS"></a><span class="nroffip">CURLOPT_CONNECTTIMEOUT_MS</span> 
-<p class="level1">Like <a class="emphasis" href="#CURLOPTCONNECTTIMEOUT">CURLOPT_CONNECTTIMEOUT</a> but takes the number of milliseconds instead. If libcurl is built to use the standard system name resolver, that portion of the connect will still use full-second resolution for timeouts with a minimum timeout allowed of one second. (Added in 7.16.2) 
+<p class="level1">Millisecond timeout for the connection phase. See <span Class="emphasis">CURLOPT_CONNECTTIMEOUT_MS(3)</span> 
 <p class="level0"><a name="CURLOPTIPRESOLVE"></a><span class="nroffip">CURLOPT_IPRESOLVE</span> 
 <p class="level0"><a name="CURLOPTIPRESOLVE"></a><span class="nroffip">CURLOPT_IPRESOLVE</span> 
-<p class="level1">Allows an application to select what kind of IP addresses to use when resolving host names. This is only interesting when using host names that resolve addresses using more than one version of IP. The allowed values are: 
-<p class="level2">
-<p class="level1"><a name="CURLIPRESOLVEWHATEVER"></a><span class="nroffip">CURL_IPRESOLVE_WHATEVER</span> 
-<p class="level2">Default, resolves addresses to all IP versions that your system allows. 
-<p class="level1"><a name="CURLIPRESOLVEV4"></a><span class="nroffip">CURL_IPRESOLVE_V4</span> 
-<p class="level2">Resolve to IPv4 addresses. 
-<p class="level1"><a name="CURLIPRESOLVEV6"></a><span class="nroffip">CURL_IPRESOLVE_V6</span> 
-<p class="level2">Resolve to IPv6 addresses. 
-<p class="level1">
+<p class="level1">IP version to resolve to. See <span Class="emphasis">CURLOPT_IPRESOLVE(3)</span> 
 <p class="level0"><a name="CURLOPTCONNECTONLY"></a><span class="nroffip">CURLOPT_CONNECT_ONLY</span> 
 <p class="level0"><a name="CURLOPTCONNECTONLY"></a><span class="nroffip">CURLOPT_CONNECT_ONLY</span> 
-<p class="level1">Pass a long. If the parameter equals 1, it tells the library to perform all the required proxy authentication and connection setup, but no data transfer. This option is implemented for HTTP, SMTP and POP3. 
-<p class="level1">The option can be used to simply test a connection to a server, but is more useful when used with the <span Class="emphasis">CURLINFO_LASTSOCKET</span> option to <a class="emphasis" href="./curl_easy_getinfo.html">curl_easy_getinfo(3)</a> as the library can set up the connection and then the application can obtain the most recently used socket for special data transfers. (Added in 7.15.2) 
+<p class="level1">Only connect, nothing else. See <span Class="emphasis">CURLOPT_CONNECT_ONLY(3)</span> 
 <p class="level0"><a name="CURLOPTUSESSL"></a><span class="nroffip">CURLOPT_USE_SSL</span> 
 <p class="level0"><a name="CURLOPTUSESSL"></a><span class="nroffip">CURLOPT_USE_SSL</span> 
-<p class="level1">Pass a long using one of the values from below, to make libcurl use your desired level of SSL for the transfer. (Added in 7.11.0) 
-<p class="level1">This is for enabling SSL/TLS when you use FTP, SMTP, POP3, IMAP etc. 
-<p class="level1">(This option was known as CURLOPT_FTP_SSL up to 7.16.4, and the constants were known as CURLFTPSSL_*) 
-<p class="level2">
-<p class="level1"><a name="CURLUSESSLNONE"></a><span class="nroffip">CURLUSESSL_NONE</span> 
-<p class="level2">Don't attempt to use SSL. 
-<p class="level1"><a name="CURLUSESSLTRY"></a><span class="nroffip">CURLUSESSL_TRY</span> 
-<p class="level2">Try using SSL, proceed as normal otherwise. 
-<p class="level1"><a name="CURLUSESSLCONTROL"></a><span class="nroffip">CURLUSESSL_CONTROL</span> 
-<p class="level2">Require SSL for the control connection or fail with <span Class="emphasis">CURLE_USE_SSL_FAILED</span>. 
-<p class="level1"><a name="CURLUSESSLALL"></a><span class="nroffip">CURLUSESSL_ALL</span> 
-<p class="level2">Require SSL for all communication or fail with <span Class="emphasis">CURLE_USE_SSL_FAILED</span>. 
-<p class="level1">
+<p class="level1">Use TLS/SSL. See <span Class="emphasis">CURLOPT_USE_SSL(3)</span> 
 <p class="level0"><a name="CURLOPTRESOLVE"></a><span class="nroffip">CURLOPT_RESOLVE</span> 
 <p class="level0"><a name="CURLOPTRESOLVE"></a><span class="nroffip">CURLOPT_RESOLVE</span> 
-<p class="level1">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 <span Class="bold">struct curl_slist</span> structs properly filled in. Use <a class="emphasis" href="./curl_slist_append.html">curl_slist_append(3)</a> to create the list and <a class="emphasis" href="./curl_slist_free_all.html">curl_slist_free_all(3)</a> to clean up an entire list. 
-<p class="level1">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. 
-<p class="level1">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. 
-<p class="level1">You can 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. 
-<p class="level1">(Added in 7.21.3) 
-<p class="level0"><a name="CURLOPTDNSSERVERS"></a><span class="nroffip">CURLOPT_DNS_SERVERS</span> 
-<p class="level1">Set the list of DNS servers to be used instead of the system default. The format of the dns servers option is: 
-<p class="level1">host[:port][,host[:port]]... 
-<p class="level1">For example: 
-<p class="level1">192.168.1.100,192.168.1.101,3.4.5.6 
-<p class="level1">This option requires that libcurl was built with a resolver backend that supports this operation. The c-ares backend is the only such one. 
-<p class="level1">(Added in 7.24.0) 
+<p class="level1">Provide fixed/fake name resolves. See <span Class="emphasis">CURLOPT_RESOLVE(3)</span> 
+<p class="level0"><a name="CURLOPTDNSINTERFACE"></a><span class="nroffip">CURLOPT_DNS_INTERFACE</span> 
+<p class="level1">Bind name resolves to this interface. See <span Class="emphasis">CURLOPT_DNS_INTERFACE(3)</span> 
+<p class="level0"><a name="CURLOPTDNSLOCALIP4"></a><span class="nroffip">CURLOPT_DNS_LOCAL_IP4</span> 
+<p class="level1">Bind name resolves to this IP4 address. See <span Class="emphasis">CURLOPT_DNS_LOCAL_IP4(3)</span> 
+<p class="level0"><a name="CURLOPTDNSLOCALIP6"></a><span class="nroffip">CURLOPT_DNS_LOCAL_IP6</span> 
+<p class="level1">Bind name resolves to this IP6 address. See <span Class="emphasis">CURLOPT_DNS_LOCAL_IP6(3)</span> 
 <p class="level0"><a name="CURLOPTACCEPTTIMEOUTMS"></a><span class="nroffip">CURLOPT_ACCEPTTIMEOUT_MS</span> 
 <p class="level0"><a name="CURLOPTACCEPTTIMEOUTMS"></a><span class="nroffip">CURLOPT_ACCEPTTIMEOUT_MS</span> 
-<p class="level1">Pass a long telling libcurl the maximum number of milliseconds to wait for a server to connect back to libcurl when an active FTP connection is used. If no timeout is set, the internal default of 60000 will be used. (Added in 7.24.0) <a name="SSL"></a><h2 class="nroffsh">SSL and SECURITY OPTIONS</h2>
+<p class="level1">Timeout for waiting for the server's connect back to be accepted. See <span Class="emphasis">CURLOPT_ACCEPTTIMEOUT_MS(3)</span> <a name="SSL"></a><h2 class="nroffsh">SSL and SECURITY OPTIONS</h2>
 <p class="level0">
 <p class="level0"><a name="CURLOPTSSLCERT"></a><span class="nroffip">CURLOPT_SSLCERT</span> 
 <p class="level0">
 <p class="level0"><a name="CURLOPTSSLCERT"></a><span class="nroffip">CURLOPT_SSLCERT</span> 
-<p class="level1">Pass a pointer to a zero terminated string as parameter. The string should be the file name of your certificate. The default format is "PEM" and can be changed with <a class="emphasis" href="#CURLOPTSSLCERTTYPE">CURLOPT_SSLCERTTYPE</a>. 
-<p class="level1">With NSS this can also be the nickname of the certificate you wish to authenticate with. If you want to use a file from the current directory, please precede it with "./" prefix, in order to avoid confusion with a nickname. 
-<p class="level1">(iOS and Mac OS X only) With Secure Transport, this string must match the name of a certificate that's in the system or user keychain. You should encode this string in UTF-8 format in case it contains non-ASCII characters. The private key corresponding to the certificate, and certificate chain (if any),  must also be present in the keychain. (Added in 7.31.0) 
+<p class="level1">Client cert. See <span Class="emphasis">CURLOPT_SSLCERT(3)</span> 
 <p class="level0"><a name="CURLOPTSSLCERTTYPE"></a><span class="nroffip">CURLOPT_SSLCERTTYPE</span> 
 <p class="level0"><a name="CURLOPTSSLCERTTYPE"></a><span class="nroffip">CURLOPT_SSLCERTTYPE</span> 
-<p class="level1">Pass a pointer to a zero terminated string as parameter. The string should be the format of your certificate. Supported formats are "PEM" and "DER".  (Added in 7.9.3) 
+<p class="level1">Client cert type.  See <span Class="emphasis">CURLOPT_SSLCERTTYPE(3)</span> 
 <p class="level0"><a name="CURLOPTSSLKEY"></a><span class="nroffip">CURLOPT_SSLKEY</span> 
 <p class="level0"><a name="CURLOPTSSLKEY"></a><span class="nroffip">CURLOPT_SSLKEY</span> 
-<p class="level1">Pass a pointer to a zero terminated string as parameter. The string should be the file name of your private key. The default format is "PEM" and can be changed with <a class="emphasis" href="#CURLOPTSSLKEYTYPE">CURLOPT_SSLKEYTYPE</a>. 
-<p class="level1">(iOS and Mac OS X only) This option is ignored if curl was built against Secure Transport. Secure Transport expects the private key to be already present in the keychain containing the certificate. 
+<p class="level1">Client key. See <span Class="emphasis">CURLOPT_SSLKEY(3)</span> 
 <p class="level0"><a name="CURLOPTSSLKEYTYPE"></a><span class="nroffip">CURLOPT_SSLKEYTYPE</span> 
 <p class="level0"><a name="CURLOPTSSLKEYTYPE"></a><span class="nroffip">CURLOPT_SSLKEYTYPE</span> 
-<p class="level1">Pass a pointer to a zero terminated string as parameter. The string should be the format of your private key. Supported formats are "PEM", "DER" and "ENG". 
-<p class="level1">The format "ENG" enables you to load the private key from a crypto engine. In this case <a class="emphasis" href="#CURLOPTSSLKEY">CURLOPT_SSLKEY</a> is used as an identifier passed to the engine. You have to set the crypto engine with <a class="emphasis" href="#CURLOPTSSLENGINE">CURLOPT_SSLENGINE</a>. "DER" format key file currently does not work because of a bug in OpenSSL. 
+<p class="level1">Client key type. See <span Class="emphasis">CURLOPT_SSLKEYTYPE(3)</span> 
 <p class="level0"><a name="CURLOPTKEYPASSWD"></a><span class="nroffip">CURLOPT_KEYPASSWD</span> 
 <p class="level0"><a name="CURLOPTKEYPASSWD"></a><span class="nroffip">CURLOPT_KEYPASSWD</span> 
-<p class="level1">Pass a pointer to a zero terminated string as parameter. It will be used as the password required to use the <a class="emphasis" href="#CURLOPTSSLKEY">CURLOPT_SSLKEY</a> or <a class="emphasis" href="#CURLOPTSSHPRIVATEKEYFILE">CURLOPT_SSH_PRIVATE_KEYFILE</a> private key. You never needed a pass phrase to load a certificate but you need one to load your private key. 
-<p class="level1">(This option was known as CURLOPT_SSLKEYPASSWD up to 7.16.4 and CURLOPT_SSLCERTPASSWD up to 7.9.2) 
+<p class="level1">Client key password. See <span Class="emphasis">CURLOPT_KEYPASSWD(3)</span> 
+<p class="level0"><a name="CURLOPTSSLENABLEALPN"></a><span class="nroffip">CURLOPT_SSL_ENABLE_ALPN</span> 
+<p class="level1">Enable use of ALPN. See <span Class="emphasis">CURLOPT_SSL_ENABLE_ALPN(3)</span> 
+<p class="level0"><a name="CURLOPTSSLENABLENPN"></a><span class="nroffip">CURLOPT_SSL_ENABLE_NPN</span> 
+<p class="level1">Enable use of NPN. See <span Class="emphasis">CURLOPT_SSL_ENABLE_NPN(3)</span> 
 <p class="level0"><a name="CURLOPTSSLENGINE"></a><span class="nroffip">CURLOPT_SSLENGINE</span> 
 <p class="level0"><a name="CURLOPTSSLENGINE"></a><span class="nroffip">CURLOPT_SSLENGINE</span> 
-<p class="level1">Pass a pointer to a zero terminated string as parameter. It will be used as the identifier for the crypto engine you want to use for your private key. 
-<p class="level1">If the crypto device cannot be loaded, <span Class="emphasis">CURLE_SSL_ENGINE_NOTFOUND</span> is returned. 
+<p class="level1">Use identifier with SSL engine. See <span Class="emphasis">CURLOPT_SSLENGINE(3)</span> 
 <p class="level0"><a name="CURLOPTSSLENGINEDEFAULT"></a><span class="nroffip">CURLOPT_SSLENGINE_DEFAULT</span> 
 <p class="level0"><a name="CURLOPTSSLENGINEDEFAULT"></a><span class="nroffip">CURLOPT_SSLENGINE_DEFAULT</span> 
-<p class="level1">Sets the actual crypto engine as the default for (asymmetric) crypto operations. 
-<p class="level1">If the crypto device cannot be set, <span Class="emphasis">CURLE_SSL_ENGINE_SETFAILED</span> is returned. 
-<p class="level1">Even though this option doesn't need any parameter, in some configurations <span Class="emphasis">curl_easy_setopt</span> might be defined as a macro taking exactly three arguments. Therefore, it's recommended to pass 1 as parameter to this option. 
+<p class="level1">Default SSL engine. See <span Class="emphasis">CURLOPT_SSLENGINE_DEFAULT(3)</span> 
 <p class="level0"><a name="CURLOPTSSLVERSION"></a><span class="nroffip">CURLOPT_SSLVERSION</span> 
 <p class="level0"><a name="CURLOPTSSLVERSION"></a><span class="nroffip">CURLOPT_SSLVERSION</span> 
-<p class="level1">Pass a long as parameter to control what version of SSL/TLS to attempt to use. The available options are: 
-<p class="level2">
-<p class="level1"><a name="CURLSSLVERSIONDEFAULT"></a><span class="nroffip">CURL_SSLVERSION_DEFAULT</span> 
-<p class="level2">The default action. This will attempt to figure out the remote SSL protocol version, i.e. either SSLv3 or TLSv1 (but not SSLv2, which became disabled by default with 7.18.1). 
-<p class="level1"><a name="CURLSSLVERSIONTLSv1"></a><span class="nroffip">CURL_SSLVERSION_TLSv1</span> 
-<p class="level2">Force TLSv1 
-<p class="level1"><a name="CURLSSLVERSIONSSLv2"></a><span class="nroffip">CURL_SSLVERSION_SSLv2</span> 
-<p class="level2">Force SSLv2 
-<p class="level1"><a name="CURLSSLVERSIONSSLv3"></a><span class="nroffip">CURL_SSLVERSION_SSLv3</span> 
-<p class="level2">Force SSLv3 
-<p class="level1">
+<p class="level1">SSL version to use. See <span Class="emphasis">CURLOPT_SSLVERSION(3)</span> 
 <p class="level0"><a name="CURLOPTSSLVERIFYPEER"></a><span class="nroffip">CURLOPT_SSL_VERIFYPEER</span> 
 <p class="level0"><a name="CURLOPTSSLVERIFYPEER"></a><span class="nroffip">CURLOPT_SSL_VERIFYPEER</span> 
-<p class="level1">Pass a long as parameter. By default, curl assumes a value of 1. 
-<p class="level1">This option determines whether curl verifies the authenticity of the peer's certificate. A value of 1 means curl verifies; 0 (zero) means it doesn't. 
-<p class="level1">When negotiating a SSL connection, the server sends a certificate indicating its identity.  Curl verifies whether the certificate is authentic, i.e. that you can trust that the server is who the certificate says it is.  This trust is based on a chain of digital signatures, rooted in certification authority (CA) certificates you supply.  curl uses a default bundle of CA certificates (the path for that is determined at build time) and you can specify alternate certificates with the <a class="emphasis" href="#CURLOPTCAINFO">CURLOPT_CAINFO</a> option or the <a class="emphasis" href="#CURLOPTCAPATH">CURLOPT_CAPATH</a> option. 
-<p class="level1">When <a class="emphasis" href="#CURLOPTSSLVERIFYPEER">CURLOPT_SSL_VERIFYPEER</a> is nonzero, and the verification fails to prove that the certificate is authentic, the connection fails.  When the option is zero, the peer certificate verification succeeds regardless. 
-<p class="level1">Authenticating the certificate is not by itself very useful.  You typically want to ensure that the server, as authentically identified by its certificate, is the server you mean to be talking to.  Use <a class="emphasis" href="#CURLOPTSSLVERIFYHOST">CURLOPT_SSL_VERIFYHOST</a> to control that. The check that the host name in the certificate is valid for the host name you're connecting to is done independently of the <a class="emphasis" href="#CURLOPTSSLVERIFYPEER">CURLOPT_SSL_VERIFYPEER</a> option. 
+<p class="level1">Verify the SSL certificate. See <span Class="emphasis">CURLOPT_SSL_VERIFYPEER(3)</span> 
 <p class="level0"><a name="CURLOPTCAINFO"></a><span class="nroffip">CURLOPT_CAINFO</span> 
 <p class="level0"><a name="CURLOPTCAINFO"></a><span class="nroffip">CURLOPT_CAINFO</span> 
-<p class="level1">Pass a char * to a zero terminated string naming a file holding one or more certificates to verify the peer with.  This makes sense only when used in combination with the <a class="emphasis" href="#CURLOPTSSLVERIFYPEER">CURLOPT_SSL_VERIFYPEER</a> option.  If <a class="emphasis" href="#CURLOPTSSLVERIFYPEER">CURLOPT_SSL_VERIFYPEER</a> is zero, <a class="emphasis" href="#CURLOPTCAINFO">CURLOPT_CAINFO</a> need not even indicate an accessible file. 
-<p class="level1">This option is by default set to the system path where libcurl's cacert bundle is assumed to be stored, as established at build time. 
-<p class="level1">If curl is built against the NSS SSL library, the NSS PEM PKCS#11 module (libnsspem.so) needs to be available for this option to work properly. 
+<p class="level1">CA cert bundle. See <span Class="emphasis">CURLOPT_CAINFO(3)</span> 
 <p class="level0"><a name="CURLOPTISSUERCERT"></a><span class="nroffip">CURLOPT_ISSUERCERT</span> 
 <p class="level0"><a name="CURLOPTISSUERCERT"></a><span class="nroffip">CURLOPT_ISSUERCERT</span> 
-<p class="level1">Pass a char * to a zero terminated string naming a file holding a CA certificate in PEM format. If the option is set, an additional check against the peer certificate is performed to verify the issuer is indeed the one associated with the certificate provided by the option. This additional check is useful in multi-level PKI where one needs to enforce that the peer certificate is from a specific branch of the tree. 
-<p class="level1">This option makes sense only when used in combination with the <a class="emphasis" href="#CURLOPTSSLVERIFYPEER">CURLOPT_SSL_VERIFYPEER</a> option. Otherwise, the result of the check is not considered as failure. 
-<p class="level1">A specific error code (CURLE_SSL_ISSUER_ERROR) is defined with the option, which is returned if the setup of the SSL/TLS session has failed due to a mismatch with the issuer of peer certificate (<a class="emphasis" href="#CURLOPTSSLVERIFYPEER">CURLOPT_SSL_VERIFYPEER</a> has to be set too for the check to fail). (Added in 7.19.0) 
+<p class="level1">Issuer certificate. See <span Class="emphasis">CURLOPT_ISSUERCERT(3)</span> 
 <p class="level0"><a name="CURLOPTCAPATH"></a><span class="nroffip">CURLOPT_CAPATH</span> 
 <p class="level0"><a name="CURLOPTCAPATH"></a><span class="nroffip">CURLOPT_CAPATH</span> 
-<p class="level1">Pass a char * to a zero terminated string naming a directory holding multiple CA certificates to verify the peer with. If libcurl is built against OpenSSL, the certificate directory must be prepared using the openssl c_rehash utility. This makes sense only when used in combination with the <a class="emphasis" href="#CURLOPTSSLVERIFYPEER">CURLOPT_SSL_VERIFYPEER</a> option.  If <a class="emphasis" href="#CURLOPTSSLVERIFYPEER">CURLOPT_SSL_VERIFYPEER</a> is zero, <a class="emphasis" href="#CURLOPTCAPATH">CURLOPT_CAPATH</a> need not even indicate an accessible path.  The <a class="emphasis" href="#CURLOPTCAPATH">CURLOPT_CAPATH</a> function apparently does not work in Windows due to some limitation in openssl. This option is OpenSSL-specific and does nothing if libcurl is built to use GnuTLS. NSS-powered libcurl provides the option only for backward compatibility. 
+<p class="level1">Path to CA cert bundle. See <span Class="emphasis">CURLOPT_CAPATH(3)</span> 
 <p class="level0"><a name="CURLOPTCRLFILE"></a><span class="nroffip">CURLOPT_CRLFILE</span> 
 <p class="level0"><a name="CURLOPTCRLFILE"></a><span class="nroffip">CURLOPT_CRLFILE</span> 
-<p class="level1">Pass a char * to a zero terminated string naming a file with the concatenation of CRL (in PEM format) to use in the certificate validation that occurs during the SSL exchange. 
-<p class="level1">When curl is built to use NSS or GnuTLS, there is no way to influence the use of CRL passed to help in the verification process. When libcurl is built with OpenSSL support, X509_V_FLAG_CRL_CHECK and X509_V_FLAG_CRL_CHECK_ALL are both set, requiring CRL check against all the elements of the certificate chain if a CRL file is passed. 
-<p class="level1">This option makes sense only when used in combination with the <a class="emphasis" href="#CURLOPTSSLVERIFYPEER">CURLOPT_SSL_VERIFYPEER</a> option. 
-<p class="level1">A specific error code (CURLE_SSL_CRL_BADFILE) is defined with the option. It is returned when the SSL exchange fails because the CRL file cannot be loaded. A failure in certificate verification due to a revocation information found in the CRL does not trigger this specific error. (Added in 7.19.0) 
+<p class="level1">Certificate Revocation List. See <span Class="emphasis">CURLOPT_CRLFILE(3)</span> 
 <p class="level0"><a name="CURLOPTSSLVERIFYHOST"></a><span class="nroffip">CURLOPT_SSL_VERIFYHOST</span> 
 <p class="level0"><a name="CURLOPTSSLVERIFYHOST"></a><span class="nroffip">CURLOPT_SSL_VERIFYHOST</span> 
-<p class="level1">Pass a long as parameter. 
-<p class="level1">This option determines whether libcurl verifies that the server cert is for the server it is known as. 
-<p class="level1">When negotiating a SSL connection, the server sends a certificate indicating its identity. 
-<p class="level1">When <a class="emphasis" href="#CURLOPTSSLVERIFYHOST">CURLOPT_SSL_VERIFYHOST</a> is 2, that certificate must indicate that the server is the server to which you meant to connect, or the connection fails. 
-<p class="level1">Curl considers the server the intended one when the Common Name field or a Subject Alternate Name field in the certificate matches the host name in the URL to which you told Curl to connect. 
-<p class="level1">When the value is 1, libcurl will return a failure. It was previously (in 7.28.0 and earlier) a debug option of some sorts, but it is no longer supported due to frequently leading to programmer mistakes. 
-<p class="level1">When the value is 0, the connection succeeds regardless of the names in the certificate. 
-<p class="level1">The default value for this option is 2. 
-<p class="level1">This option controls checking the server's certificate's claimed identity. The server could be lying.  To control lying, see <a class="emphasis" href="#CURLOPTSSLVERIFYPEER">CURLOPT_SSL_VERIFYPEER</a>.  If libcurl is built against NSS and <a class="emphasis" href="#CURLOPTSSLVERIFYPEER">CURLOPT_SSL_VERIFYPEER</a> is zero, <a class="emphasis" href="#CURLOPTSSLVERIFYHOST">CURLOPT_SSL_VERIFYHOST</a> is ignored. 
-<p class="level1">
+<p class="level1">Verify the host name in the SSL certificate. See <span Class="emphasis">CURLOPT_SSL_VERIFYHOST(3)</span> 
 <p class="level0"><a name="CURLOPTCERTINFO"></a><span class="nroffip">CURLOPT_CERTINFO</span> 
 <p class="level0"><a name="CURLOPTCERTINFO"></a><span class="nroffip">CURLOPT_CERTINFO</span> 
-<p class="level1">Pass a long set to 1 to enable libcurl's certificate chain info gatherer. With this enabled, libcurl (if built with OpenSSL) will extract lots of information and data about the certificates in the certificate chain used in the SSL connection. This data is then possible to extract after a transfer using <a class="emphasis" href="./curl_easy_getinfo.html">curl_easy_getinfo(3)</a> and its option <span Class="emphasis">CURLINFO_CERTINFO</span>. (Added in 7.19.1) 
+<p class="level1">Extract certificate info. See <span Class="emphasis">CURLOPT_CERTINFO(3)</span> 
+<p class="level0"><a name="CURLOPTPINNEDPUBLICKEY"></a><span class="nroffip">CURLOPT_PINNEDPUBLICKEY</span> 
+<p class="level1">Set pinned SSL public key . See <span Class="emphasis">CURLOPT_PINNEDPUBLICKEY(3)</span> 
 <p class="level0"><a name="CURLOPTRANDOMFILE"></a><span class="nroffip">CURLOPT_RANDOM_FILE</span> 
 <p class="level0"><a name="CURLOPTRANDOMFILE"></a><span class="nroffip">CURLOPT_RANDOM_FILE</span> 
-<p class="level1">Pass a char * to a zero terminated file name. The file will be used to read from to seed the random engine for SSL. The more random the specified file is, the more secure the SSL connection will become. 
+<p class="level1">Provide source for entropy random data. See <span Class="emphasis">CURLOPT_RANDOM_FILE(3)</span> 
 <p class="level0"><a name="CURLOPTEGDSOCKET"></a><span class="nroffip">CURLOPT_EGDSOCKET</span> 
 <p class="level0"><a name="CURLOPTEGDSOCKET"></a><span class="nroffip">CURLOPT_EGDSOCKET</span> 
-<p class="level1">Pass a char * to the zero terminated path name to the Entropy Gathering Daemon socket. It will be used to seed the random engine for SSL. 
+<p class="level1">Identify EGD socket for entropy. See <span Class="emphasis">CURLOPT_EGDSOCKET(3)</span> 
 <p class="level0"><a name="CURLOPTSSLCIPHERLIST"></a><span class="nroffip">CURLOPT_SSL_CIPHER_LIST</span> 
 <p class="level0"><a name="CURLOPTSSLCIPHERLIST"></a><span class="nroffip">CURLOPT_SSL_CIPHER_LIST</span> 
-<p class="level1">Pass a char *, pointing to a zero terminated string holding the list of ciphers to use for the SSL connection. The list must be syntactically correct, it consists of one or more cipher strings separated by colons. Commas or spaces are also acceptable separators but colons are normally used, !, - and + can be used as operators. 
-<p class="level1">For OpenSSL and GnuTLS valid examples of cipher lists include 'RC4-SHA', &acute;SHA1+DES&acute;, 'TLSv1' and 'DEFAULT'. The default list is normally set when you compile OpenSSL. 
-<p class="level1">You'll find more details about cipher lists on this URL: <span Class="emphasis"><a href="http://www.openssl.org/docs/apps/ciphers.html">http://www.openssl.org/docs/apps/ciphers.html</a></span> 
-<p class="level1">For NSS, valid examples of cipher lists include 'rsa_rc4_128_md5', &acute;rsa_aes_128_sha&acute;, etc. With NSS you don't add/remove ciphers. If one uses this option then all known ciphers are disabled and only those passed in are enabled. 
-<p class="level1">You'll find more details about the NSS cipher lists on this URL: <span Class="emphasis"><a href="http://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html">http://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html</a>#Directives</span> 
-<p class="level1">
+<p class="level1">Ciphers to use. See <span Class="emphasis">CURLOPT_SSL_CIPHER_LIST(3)</span> 
 <p class="level0"><a name="CURLOPTSSLSESSIONIDCACHE"></a><span class="nroffip">CURLOPT_SSL_SESSIONID_CACHE</span> 
 <p class="level0"><a name="CURLOPTSSLSESSIONIDCACHE"></a><span class="nroffip">CURLOPT_SSL_SESSIONID_CACHE</span> 
-<p class="level1">Pass a long set to 0 to disable libcurl's use of SSL session-ID caching. Set this to 1 to enable it. By default all transfers are done using the cache. While nothing ever should get hurt by attempting to reuse SSL session-IDs, there seem to be broken SSL implementations in the wild that may require you to disable this in order for you to succeed. (Added in 7.16.0) 
+<p class="level1">Disable SSL session-id cache. See <span Class="emphasis">CURLOPT_SSL_SESSIONID_CACHE(3)</span> 
 <p class="level0"><a name="CURLOPTSSLOPTIONS"></a><span class="nroffip">CURLOPT_SSL_OPTIONS</span> 
 <p class="level0"><a name="CURLOPTSSLOPTIONS"></a><span class="nroffip">CURLOPT_SSL_OPTIONS</span> 
-<p class="level1">Pass a long with a bitmask to tell libcurl about specific SSL behaviors. 
-<p class="level1">CURLSSLOPT_ALLOW_BEAST is the only supported bit and by setting this the user will tell libcurl to not attempt to use any workarounds for a security flaw in the SSL3 and TLS1.0 protocols.  If this option isn't used or this bit is set to 0, the SSL layer libcurl uses may use a work-around for this flaw although it might cause interoperability problems with some (older) SSL implementations. WARNING: avoiding this work-around loosens the security, and by setting this option to 1 you ask for exactly that. (Added in 7.25.0) 
+<p class="level1">Control SSL behavior. See <span Class="emphasis">CURLOPT_SSL_OPTIONS(3)</span> 
 <p class="level0"><a name="CURLOPTKRBLEVEL"></a><span class="nroffip">CURLOPT_KRBLEVEL</span> 
 <p class="level0"><a name="CURLOPTKRBLEVEL"></a><span class="nroffip">CURLOPT_KRBLEVEL</span> 
-<p class="level1">Pass a char * as parameter. Set the kerberos security level for FTP; this also enables kerberos awareness.  This is a string, 'clear', 'safe', 'confidential' or 'private'.  If the string is set but doesn't match one of these, 'private' will be used. Set the string to NULL to disable kerberos support for FTP. 
-<p class="level1">(This option was known as CURLOPT_KRB4LEVEL up to 7.16.3) 
+<p class="level1">Kerberos security level. See <span Class="emphasis">CURLOPT_KRBLEVEL(3)</span> 
 <p class="level0"><a name="CURLOPTGSSAPIDELEGATION"></a><span class="nroffip">CURLOPT_GSSAPI_DELEGATION</span> 
 <p class="level0"><a name="CURLOPTGSSAPIDELEGATION"></a><span class="nroffip">CURLOPT_GSSAPI_DELEGATION</span> 
-<p class="level1">Set the parameter to CURLGSSAPI_DELEGATION_FLAG to allow unconditional GSSAPI credential delegation.  The delegation is disabled by default since 7.21.7. Set the parameter to CURLGSSAPI_DELEGATION_POLICY_FLAG to delegate only if the OK-AS-DELEGATE flag is set in the service ticket in case this feature is supported by the GSSAPI implementation and the definition of GSS_C_DELEG_POLICY_FLAG was available at compile-time. (Added in 7.22.0) <a name="SSH"></a><h2 class="nroffsh">SSH OPTIONS</h2>
+<p class="level1">Disable GSS-API delegation. See <span Class="emphasis">CURLOPT_GSSAPI_DELEGATION(3)</span> <a name="SSH"></a><h2 class="nroffsh">SSH OPTIONS</h2>
 <p class="level0">
 <p class="level0"><a name="CURLOPTSSHAUTHTYPES"></a><span class="nroffip">CURLOPT_SSH_AUTH_TYPES</span> 
 <p class="level0">
 <p class="level0"><a name="CURLOPTSSHAUTHTYPES"></a><span class="nroffip">CURLOPT_SSH_AUTH_TYPES</span> 
-<p class="level1">Pass a long set to a bitmask consisting of one or more of CURLSSH_AUTH_PUBLICKEY, CURLSSH_AUTH_PASSWORD, CURLSSH_AUTH_HOST, CURLSSH_AUTH_KEYBOARD and CURLSSH_AUTH_AGENT. Set CURLSSH_AUTH_ANY to let libcurl pick a suitable one. Currently CURLSSH_AUTH_HOST has no effect. (Added in 7.16.1) If CURLSSH_AUTH_AGENT is used, libcurl attempts to connect to ssh-agent or pageant and let the agent attempt the authentication. (Added in 7.28.0) 
+<p class="level1">SSH authentication types. See <span Class="emphasis">CURLOPT_SSH_AUTH_TYPES(3)</span> 
 <p class="level0"><a name="CURLOPTSSHHOSTPUBLICKEYMD5"></a><span class="nroffip">CURLOPT_SSH_HOST_PUBLIC_KEY_MD5</span> 
 <p class="level0"><a name="CURLOPTSSHHOSTPUBLICKEYMD5"></a><span class="nroffip">CURLOPT_SSH_HOST_PUBLIC_KEY_MD5</span> 
-<p class="level1">Pass a char * pointing to a string containing 32 hexadecimal digits. The string should be the 128 bit MD5 checksum of the remote host's public key, and libcurl will reject the connection to the host unless the md5sums match. This option is only for SCP and SFTP transfers. (Added in 7.17.1) 
+<p class="level1">MD5 of host's public key. See <span Class="emphasis">CURLOPT_SSH_HOST_PUBLIC_KEY_MD5(3)</span> 
 <p class="level0"><a name="CURLOPTSSHPUBLICKEYFILE"></a><span class="nroffip">CURLOPT_SSH_PUBLIC_KEYFILE</span> 
 <p class="level0"><a name="CURLOPTSSHPUBLICKEYFILE"></a><span class="nroffip">CURLOPT_SSH_PUBLIC_KEYFILE</span> 
-<p class="level1">Pass a char * pointing to a file name for your public key. If not used, libcurl defaults to <span Class="bold">$HOME/.ssh/id_dsa.pub</span> if the HOME environment variable is set, and just "id_dsa.pub" in the current directory if HOME is not set.  (Added in 7.16.1) If an empty string is passed, libcurl will pass no public key to libssh2 which then tries to compute it from the private key, this is known to work when libssh2 1.4.0+ is linked against OpenSSL. (Added in 7.26.0) 
+<p class="level1">File name of public key. See <span Class="emphasis">CURLOPT_SSH_PUBLIC_KEYFILE(3)</span> 
 <p class="level0"><a name="CURLOPTSSHPRIVATEKEYFILE"></a><span class="nroffip">CURLOPT_SSH_PRIVATE_KEYFILE</span> 
 <p class="level0"><a name="CURLOPTSSHPRIVATEKEYFILE"></a><span class="nroffip">CURLOPT_SSH_PRIVATE_KEYFILE</span> 
-<p class="level1">Pass a char * pointing to a file name for your private key. If not used, libcurl defaults to <span Class="bold">$HOME/.ssh/id_dsa</span> if the HOME environment variable is set, and just "id_dsa" in the current directory if HOME is not set.  If the file is password-protected, set the password with <a class="emphasis" href="#CURLOPTKEYPASSWD">CURLOPT_KEYPASSWD</a>. (Added in 7.16.1) 
+<p class="level1">File name of private key. See <span Class="emphasis">CURLOPT_SSH_PRIVATE_KEYFILE(3)</span> 
 <p class="level0"><a name="CURLOPTSSHKNOWNHOSTS"></a><span class="nroffip">CURLOPT_SSH_KNOWNHOSTS</span> 
 <p class="level0"><a name="CURLOPTSSHKNOWNHOSTS"></a><span class="nroffip">CURLOPT_SSH_KNOWNHOSTS</span> 
-<p class="level1">Pass a pointer to a zero terminated string holding the file name of the known_host file to use.  The known_hosts file should use the OpenSSH file format as supported by libssh2. If this file is specified, libcurl will only accept connections with hosts that are known and present in that file, with a matching public key. Use <a class="emphasis" href="#CURLOPTSSHKEYFUNCTION">CURLOPT_SSH_KEYFUNCTION</a> to alter the default behavior on host and key (mis)matching. (Added in 7.19.6) 
+<p class="level1">File name with known hosts. See <span Class="emphasis">CURLOPT_SSH_KNOWNHOSTS(3)</span> 
 <p class="level0"><a name="CURLOPTSSHKEYFUNCTION"></a><span class="nroffip">CURLOPT_SSH_KEYFUNCTION</span> 
 <p class="level0"><a name="CURLOPTSSHKEYFUNCTION"></a><span class="nroffip">CURLOPT_SSH_KEYFUNCTION</span> 
-<p class="level1">Pass a pointer to a curl_sshkeycallback function. It gets called when the known_host matching has been done, to allow the application to act and decide for libcurl how to proceed. The callback will only be called if <a class="emphasis" href="#CURLOPTSSHKNOWNHOSTS">CURLOPT_SSH_KNOWNHOSTS</a> is also set. 
-<p class="level1">The curl_sshkeycallback function gets passed the CURL handle, the key from the known_hosts file, the key from the remote site, info from libcurl on the matching status and a custom pointer (set with <a class="emphasis" href="#CURLOPTSSHKEYDATA">CURLOPT_SSH_KEYDATA</a>). It MUST return one of the following return codes to tell libcurl how to act: 
-<p class="level2">
-<p class="level1"><a name="CURLKHSTATFINEADDTOFILE"></a><span class="nroffip">CURLKHSTAT_FINE_ADD_TO_FILE</span> 
-<p class="level2">The host+key is accepted and libcurl will append it to the known_hosts file before continuing with the connection. This will also add the host+key combo to the known_host pool kept in memory if it wasn't already present there. The adding of data to the file is done by completely replacing the file with a new copy, so the permissions of the file must allow this. 
-<p class="level1"><a name="CURLKHSTATFINE"></a><span class="nroffip">CURLKHSTAT_FINE</span> 
-<p class="level2">The host+key is accepted libcurl will continue with the connection. This will also add the host+key combo to the known_host pool kept in memory if it wasn't already present there. 
-<p class="level1"><a name="CURLKHSTATREJECT"></a><span class="nroffip">CURLKHSTAT_REJECT</span> 
-<p class="level2">The host+key is rejected. libcurl will deny the connection to continue and it will be closed. 
-<p class="level1"><a name="CURLKHSTATDEFER"></a><span class="nroffip">CURLKHSTAT_DEFER</span> 
-<p class="level2">The host+key is rejected, but the SSH connection is asked to be kept alive. This feature could be used when the app wants to somehow return back and act on the host+key situation and then retry without needing the overhead of setting it up from scratch again. 
-<p class="level1">&nbsp;(Added in 7.19.6) 
+<p class="level1">Callback for known hosts handling. See <span Class="emphasis">CURLOPT_SSH_KEYFUNCTION(3)</span> 
 <p class="level0"><a name="CURLOPTSSHKEYDATA"></a><span class="nroffip">CURLOPT_SSH_KEYDATA</span> 
 <p class="level0"><a name="CURLOPTSSHKEYDATA"></a><span class="nroffip">CURLOPT_SSH_KEYDATA</span> 
-<p class="level1">Pass a void * as parameter. This pointer will be passed along verbatim to the callback set with <a class="emphasis" href="#CURLOPTSSHKEYFUNCTION">CURLOPT_SSH_KEYFUNCTION</a>. (Added in 7.19.6) <a name="OTHER"></a><h2 class="nroffsh">OTHER OPTIONS</h2>
+<p class="level1">Custom pointer to pass to ssh key callback. See <span Class="emphasis">CURLOPT_SSH_KEYDATA(3)</span> <a name="OTHER"></a><h2 class="nroffsh">OTHER OPTIONS</h2>
 <p class="level0">
 <p class="level0"><a name="CURLOPTPRIVATE"></a><span class="nroffip">CURLOPT_PRIVATE</span> 
 <p class="level0">
 <p class="level0"><a name="CURLOPTPRIVATE"></a><span class="nroffip">CURLOPT_PRIVATE</span> 
-<p class="level1">Pass a void * as parameter, pointing to data that should be associated with this curl handle.  The pointer can subsequently be retrieved using <a class="emphasis" href="./curl_easy_getinfo.html">curl_easy_getinfo(3)</a> with the CURLINFO_PRIVATE option. libcurl itself does nothing with this data. (Added in 7.10.3) 
+<p class="level1">Private pointer to store. See <span Class="emphasis">CURLOPT_PRIVATE(3)</span> 
 <p class="level0"><a name="CURLOPTSHARE"></a><span class="nroffip">CURLOPT_SHARE</span> 
 <p class="level0"><a name="CURLOPTSHARE"></a><span class="nroffip">CURLOPT_SHARE</span> 
-<p class="level1">Pass a share handle as a parameter. The share handle must have been created by a previous call to <a class="emphasis" href="./curl_share_init.html">curl_share_init(3)</a>. Setting this option, will make this curl handle use the data from the shared handle instead of keeping the data to itself. This enables several curl handles to share data. If the curl handles are used simultaneously in multiple threads, you <span Class="bold">MUST</span> use the locking methods in the share handle. See <a class="emphasis" href="./curl_share_setopt.html">curl_share_setopt(3)</a> for details. 
-<p class="level1">If you add a share that is set to share cookies, your easy handle will use that cookie cache and get the cookie engine enabled. If you unshare an object that was using cookies (or change to another object that doesn't share cookies), the easy handle will get its cookie engine disabled. 
-<p class="level1">Data that the share object is not set to share will be dealt with the usual way, as if no share was used. 
+<p class="level1">Share object to use. See <span Class="emphasis">CURLOPT_SHARE(3)</span> 
 <p class="level0"><a name="CURLOPTNEWFILEPERMS"></a><span class="nroffip">CURLOPT_NEW_FILE_PERMS</span> 
 <p class="level0"><a name="CURLOPTNEWFILEPERMS"></a><span class="nroffip">CURLOPT_NEW_FILE_PERMS</span> 
-<p class="level1">Pass a long as a parameter, containing the value of the permissions that will be assigned to newly created files on the remote server.  The default value is <span Class="emphasis">0644</span>, but any valid value can be used.  The only protocols that can use this are <span Class="emphasis">sftp://</span>, <span Class="emphasis">scp://</span>, and <span Class="emphasis">file://</span>. (Added in 7.16.4) 
+<p class="level1">Mode for creating new remote files. See <span Class="emphasis">CURLOPT_NEW_FILE_PERMS(3)</span> 
 <p class="level0"><a name="CURLOPTNEWDIRECTORYPERMS"></a><span class="nroffip">CURLOPT_NEW_DIRECTORY_PERMS</span> 
 <p class="level0"><a name="CURLOPTNEWDIRECTORYPERMS"></a><span class="nroffip">CURLOPT_NEW_DIRECTORY_PERMS</span> 
-<p class="level1">Pass a long as a parameter, containing the value of the permissions that will be assigned to newly created directories on the remote server.  The default value is <span Class="emphasis">0755</span>, but any valid value can be used.  The only protocols that can use this are <span Class="emphasis">sftp://</span>, <span Class="emphasis">scp://</span>, and <span Class="emphasis">file://</span>. (Added in 7.16.4) <a name="TELNET"></a><h2 class="nroffsh">TELNET OPTIONS</h2>
+<p class="level1">Mode for creating new remote directories. See <span Class="emphasis">CURLOPT_NEW_DIRECTORY_PERMS(3)</span> <a name="TELNET"></a><h2 class="nroffsh">TELNET OPTIONS</h2>
 <p class="level0">
 <p class="level0"><a name="CURLOPTTELNETOPTIONS"></a><span class="nroffip">CURLOPT_TELNETOPTIONS</span> 
 <p class="level0">
 <p class="level0"><a name="CURLOPTTELNETOPTIONS"></a><span class="nroffip">CURLOPT_TELNETOPTIONS</span> 
-<p class="level1">Provide a pointer to a curl_slist with variables to pass to the telnet negotiations. The variables should be in the format &lt;option=value&gt;. libcurl supports the options 'TTYPE', 'XDISPLOC' and 'NEW_ENV'. See the TELNET standard for details. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
-<p class="level0">CURLE_OK (zero) means that the option was set properly, non-zero means an error occurred as <span Class="emphasis">&lt;curl/curl.h&gt;</span> defines. See the <span Class="emphasis">libcurl-errors(3)</span> man page for the full list with descriptions. 
-<p class="level0">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 <span Class="emphasis">CURLE_FAILED_INIT</span>. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_easy_init.html">curl_easy_init (3)</a> <a class="manpage" href="./curl_easy_cleanup.html">  curl_easy_cleanup (3)</a> <a class="manpage" href="./curl_easy_reset.html">  curl_easy_reset (3)</a> <p class="roffit">
+<p class="level1">TELNET options. See <span Class="emphasis">CURLOPT_TELNETOPTIONS(3)</span> <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0"><span Class="emphasis">CURLE_OK</span> (zero) means that the option was set properly, non-zero means an error occurred as <span Class="emphasis">&lt;curl/curl.h&gt;</span> defines. See the <a Class="emphasis" href="./libcurl-errors.html">libcurl-errors</a> man page for the full list with descriptions. 
+<p class="level0">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 <span Class="emphasis">CURLE_UNKNOWN_OPTION</span>. If support for the option was disabled at compile-time, it will return <span Class="emphasis">CURLE_NOT_BUILT_IN</span>. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre>
+<p class="level0">CURL *curl = curl_easy_init();
+ if(curl) {
+ &nbsp; CURLcode res;
+ &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+ &nbsp; res = curl_easy_perform(curl);
+ &nbsp; curl_easy_cleanup(curl);
+ }}
+ </pre>
+
+<p class="level0"><a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./curl_easy_init.html">curl_easy_init</a>, <a Class="manpage" href="./curl_easy_cleanup.html">curl_easy_cleanup</a>, <a Class="manpage" href="./curl_easy_reset.html">curl_easy_reset</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_multi_setopt.html">curl_multi_setopt</a>, <span Class="manpage"> </span> <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index e6d675c..4f2c948 100644 (file)
Binary files a/docs/libcurl/curl_easy_setopt.pdf and b/docs/libcurl/curl_easy_setopt.pdf differ
index a26c9c5..557d467 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -27,8 +27,11 @@ curl_easy_strerror - return string describing error code
 
 const char *curl_easy_strerror(CURLcode errornum);
 .SH DESCRIPTION
 
 const char *curl_easy_strerror(CURLcode errornum);
 .SH DESCRIPTION
-The curl_easy_strerror() function returns a string describing the CURLcode
-error code passed in the argument \fIerrornum\fP.
+The \fIcurl_easy_strerror(3)\fP function returns a string describing the
+CURLcode error code passed in the argument \fIerrornum\fP.
+
+Typically applications also appreciate \fICURLOPT_ERRORBUFFER(3)\fP for more
+specific error descriptions generated at run-time.
 .SH AVAILABILITY
 This function was added in libcurl 7.12.0
 .SH RETURN VALUE
 .SH AVAILABILITY
 This function was added in libcurl 7.12.0
 .SH RETURN VALUE
index d8cb379..e279cb6 100644 (file)
@@ -49,9 +49,10 @@ p.roffit {
 <p class="level0">curl_easy_strerror - return string describing error code <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
 <p class="level0">#include &lt;curl/curl.h&gt; 
 <p class="level0">const char *curl_easy_strerror(CURLcode errornum); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">curl_easy_strerror - return string describing error code <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
 <p class="level0">#include &lt;curl/curl.h&gt; 
 <p class="level0">const char *curl_easy_strerror(CURLcode errornum); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">The curl_easy_strerror() function returns a string describing the CURLcode error code passed in the argument <span Class="emphasis">errornum</span>. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">The <a Class="emphasis" href="./curl_easy_strerror.html">curl_easy_strerror</a> function returns a string describing the CURLcode error code passed in the argument <span Class="emphasis">errornum</span>. 
+<p class="level0">Typically applications also appreciate <span Class="emphasis">CURLOPT_ERRORBUFFER(3)</span> for more specific error descriptions generated at run-time. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">This function was added in libcurl 7.12.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">A pointer to a zero terminated string. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0">This function was added in libcurl 7.12.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">A pointer to a zero terminated string. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><span Class="manpage">libcurl-errors (3)</span> <a class="manpage" href="./curl_multi_strerror.html">  curl_multi_strerror (3)</a> <a class="manpage" href="./curl_share_strerror.html">  curl_share_strerror (3)</a> <p class="roffit">
+<p class="level0"><a Class="manpage" href="./libcurl-errors.html">libcurl-errors</a>, <a Class="manpage" href="./curl_multi_strerror.html">curl_multi_strerror</a>, <a Class="manpage" href="./curl_share_strerror.html">curl_share_strerror</a>, <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 889e197..5997beb 100644 (file)
Binary files a/docs/libcurl/curl_easy_strerror.pdf and b/docs/libcurl/curl_easy_strerror.pdf differ
index 9b03fd0..357ad23 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -48,4 +48,4 @@ Added in 7.15.4 and replaces the old \fIcurl_unescape(3)\fP function.
 .SH RETURN VALUE
 A pointer to a zero terminated string or NULL if it failed.
 .SH "SEE ALSO"
 .SH RETURN VALUE
 A pointer to a zero terminated string or NULL if it failed.
 .SH "SEE ALSO"
-.I curl_easy_escape(3), curl_free(3), RFC 2396
+.BR curl_easy_escape "(3), " curl_free "(3)," RFC 2396
index 5d1f018..a2538ad 100644 (file)
@@ -51,11 +51,11 @@ p.roffit {
 <p class="level0"><span Class="bold">char *curl_easy_unescape( CURL * curl , char * url , int inlength</span> <span Class="bold">, int * outlength  );</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">This function converts the given URL encoded input string to a "plain string" and returns that in an allocated memory area. All input characters that are URL encoded (%XX where XX is a two-digit hexadecimal number) are converted to their binary versions. 
 <p class="level0"><span Class="bold">char *curl_easy_unescape( CURL * curl , char * url , int inlength</span> <span Class="bold">, int * outlength  );</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">This function converts the given URL encoded input string to a "plain string" and returns that in an allocated memory area. All input characters that are URL encoded (%XX where XX is a two-digit hexadecimal number) are converted to their binary versions. 
-<p class="level0">If the <span Class="bold">length</span> argument is set to 0 (zero), <a class="emphasis" href="./curl_easy_unescape.html">curl_easy_unescape(3)</a> will use strlen() on the input <span Class="emphasis">url</span> string to find out the size. 
+<p class="level0">If the <span Class="bold">length</span> argument is set to 0 (zero), <a Class="emphasis" href="./curl_easy_unescape.html">curl_easy_unescape</a> will use strlen() on the input <span Class="emphasis">url</span> string to find out the size. 
 <p class="level0">If <span Class="bold">outlength</span> is non-NULL, the function will write the length of the returned string in the integer it points to. This allows an escaped string containing %00 to still get used properly after unescaping. 
 <p class="level0">If <span Class="bold">outlength</span> is non-NULL, the function will write the length of the returned string in the integer it points to. This allows an escaped string containing %00 to still get used properly after unescaping. 
-<p class="level0">You must <a class="emphasis" href="./curl_free.html">curl_free(3)</a> the returned string when you're done with it. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
-<p class="level0">Added in 7.15.4 and replaces the old <a class="emphasis" href="./curl_unescape.html">curl_unescape(3)</a> function. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">You must <a Class="emphasis" href="./curl_free.html">curl_free</a> the returned string when you're done with it. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.15.4 and replaces the old <a Class="emphasis" href="./curl_unescape.html">curl_unescape</a> function. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">A pointer to a zero terminated string or NULL if it failed. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0">A pointer to a zero terminated string or NULL if it failed. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><span Class="emphasis">curl_easy_escape(3), curl_free(3), <a href="http://www.ietf.org/rfc/rfc2396.txt">RFC 2396</a></span> <p class="roffit">
+<p class="level0"><a Class="manpage" href="./curl_easy_escape.html">curl_easy_escape</a>, <a Class="manpage" href="./curl_free.html">curl_free</a>, <span Class="manpage"> <a href="http://www.ietf.org/rfc/rfc2396.txt">RFC 2396</a></span> <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 6c334d1..e7880c2 100644 (file)
Binary files a/docs/libcurl/curl_easy_unescape.pdf and b/docs/libcurl/curl_easy_unescape.pdf differ
index 6212096..2178839 100644 (file)
@@ -50,12 +50,12 @@ p.roffit {
 <p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
 <p class="level0"><span Class="bold">char *curl_escape( char * url , int length  );</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
 <p class="level0"><span Class="bold">char *curl_escape( char * url , int length  );</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">Obsolete function. Use <a class="emphasis" href="./curl_easy_escape.html">curl_easy_escape(3)</a> instead! 
+<p class="level0">Obsolete function. Use <a Class="emphasis" href="./curl_easy_escape.html">curl_easy_escape</a> instead! 
 <p class="level0">This function will convert the given input string to an URL encoded string and return that as a new allocated string. All input characters that are not a-z, A-Z or 0-9 will be converted to their "URL escaped" version (%NN where NN is a two-digit hexadecimal number). 
 <p class="level0">If the 'length' argument is set to 0, curl_escape() will use strlen() on the input 'url' string to find out the size. 
 <p class="level0">You must curl_free() the returned string when you're done with it. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">This function will convert the given input string to an URL encoded string and return that as a new allocated string. All input characters that are not a-z, A-Z or 0-9 will be converted to their "URL escaped" version (%NN where NN is a two-digit hexadecimal number). 
 <p class="level0">If the 'length' argument is set to 0, curl_escape() will use strlen() on the input 'url' string to find out the size. 
 <p class="level0">You must curl_free() the returned string when you're done with it. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
-<p class="level0">Since 7.15.4, <a class="emphasis" href="./curl_easy_escape.html">curl_easy_escape(3)</a> should be used. This function will be removed in a future release. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Since 7.15.4, <a Class="emphasis" href="./curl_easy_escape.html">curl_easy_escape</a> should be used. This function will be removed in a future release. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">A pointer to a zero terminated string or NULL if it failed. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0">A pointer to a zero terminated string or NULL if it failed. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_unescape.html">curl_unescape (3)</a> <a class="manpage" href="./curl_free.html">  curl_free (3)</a> <span Class="manpage">  <a href="http://www.ietf.org/rfc/rfc2396.txt">RFC 2396</a></span> <p class="roffit">
+<p class="level0"><a Class="manpage" href="./curl_unescape.html">curl_unescape</a>, <a Class="manpage" href="./curl_free.html">curl_free</a>, <span Class="manpage">  <a href="http://www.ietf.org/rfc/rfc2396.txt">RFC 2396</a></span> <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 888e53e..3c9fea2 100644 (file)
Binary files a/docs/libcurl/curl_escape.pdf and b/docs/libcurl/curl_escape.pdf differ
index f03fe06..3e48149 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -32,7 +32,7 @@ curl_formadd - add a section to a multipart/formdata HTTP POST
 curl_formadd() is used to append sections when building a multipart/formdata
 HTTP POST (sometimes referred to as RFC2388-style posts). Append one section
 at a time until you've added all the sections you want included and then you
 curl_formadd() is used to append sections when building a multipart/formdata
 HTTP POST (sometimes referred to as RFC2388-style posts). Append one section
 at a time until you've added all the sections you want included and then you
-pass the \fIfirstitem\fP pointer as parameter to \fBCURLOPT_HTTPPOST\fP.
+pass the \fIfirstitem\fP pointer as parameter to \fBCURLOPT_HTTPPOST(3)\fP.
 \fIlastitem\fP is set after each \fIcurl_formadd(3)\fP call and on repeated
 invokes it should be left as set to allow repeated invokes to find the end of
 the list faster.
 \fIlastitem\fP is set after each \fIcurl_formadd(3)\fP call and on repeated
 invokes it should be left as set to allow repeated invokes to find the end of
 the list faster.
@@ -45,7 +45,7 @@ the function itself. You must call \fIcurl_formfree(3)\fP on the
 \fIfirstitem\fP after the form post has been done to free the resources.
 
 Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header.
 \fIfirstitem\fP after the form post has been done to free the resources.
 
 Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header.
-You can disable this header with \fICURLOPT_HTTPHEADER\fP as usual.
+You can disable this header with \fICURLOPT_HTTPHEADER(3)\fP as usual.
 
 First, there are some basics you need to understand about multipart/formdata
 posts. Each part consists of at least a NAME and a CONTENTS part. If the part
 
 First, there are some basics you need to understand about multipart/formdata
 posts. Each part consists of at least a NAME and a CONTENTS part. If the part
@@ -86,6 +86,10 @@ you must set its length  with \fBCURLFORM_CONTENTSLENGTH\fP.
 .IP CURLFORM_CONTENTSLENGTH
 followed by a long giving the length of the contents. Note that for
 \fICURLFORM_STREAM\fP contents, this option is mandatory.
 .IP CURLFORM_CONTENTSLENGTH
 followed by a long giving the length of the contents. Note that for
 \fICURLFORM_STREAM\fP contents, this option is mandatory.
+
+If you pass a 0 (zero) for this option, libcurl will instead do a strlen() on
+the contents to figure out the size. If you really want to send a zero byte
+content then you must make sure strlen() on the data pointer returns zero.
 .IP CURLFORM_FILECONTENT
 followed by a filename, causes that file to be read and its contents used
 as data in this part. This part does \fInot\fP automatically become a file
 .IP CURLFORM_FILECONTENT
 followed by a filename, causes that file to be read and its contents used
 as data in this part. This part does \fInot\fP automatically become a file
@@ -121,12 +125,13 @@ to the buffer to be uploaded. This buffer must not be freed until after
 is used in combination with \fICURLFORM_BUFFER\fP. The parameter is a
 long which gives the length of the buffer.
 .IP CURLFORM_STREAM
 is used in combination with \fICURLFORM_BUFFER\fP. The parameter is a
 long which gives the length of the buffer.
 .IP CURLFORM_STREAM
-Tells libcurl to use the \fICURLOPT_READFUNCTION\fP callback to get data. The
-parameter you pass to \fICURLFORM_STREAM\fP is the pointer passed on to the
-read callback's fourth argument. If you want the part to look like a file
-upload one, set the \fICURLFORM_FILENAME\fP parameter as well. Note that when
-using \fICURLFORM_STREAM\fP, \fICURLFORM_CONTENTSLENGTH\fP must also be set
-with the total expected length of the part. (Option added in libcurl 7.18.2)
+Tells libcurl to use the \fICURLOPT_READFUNCTION(3)\fP callback to get
+data. The parameter you pass to \fICURLFORM_STREAM\fP is the pointer passed on
+to the read callback's fourth argument. If you want the part to look like a
+file upload one, set the \fICURLFORM_FILENAME\fP parameter as well. Note that
+when using \fICURLFORM_STREAM\fP, \fICURLFORM_CONTENTSLENGTH\fP must also be
+set with the total expected length of the part. (Option added in libcurl
+7.18.2)
 .IP CURLFORM_ARRAY
 Another possibility to send options to curl_formadd() is the
 \fBCURLFORM_ARRAY\fP option, that passes a struct curl_forms array pointer as
 .IP CURLFORM_ARRAY
 Another possibility to send options to curl_formadd() is the
 \fBCURLFORM_ARRAY\fP option, that passes a struct curl_forms array pointer as
@@ -142,7 +147,7 @@ the POST occurs, if you free it before the post completes you may experience
 problems.
 
 When you've passed the HttpPost pointer to \fIcurl_easy_setopt(3)\fP (using
 problems.
 
 When you've passed the HttpPost pointer to \fIcurl_easy_setopt(3)\fP (using
-the \fICURLOPT_HTTPPOST\fP option), you must not free the list until after
+the \fICURLOPT_HTTPPOST(3)\fP option), you must not free the list until after
 you've called \fIcurl_easy_cleanup(3)\fP for the curl handle.
 
 See example below.
 you've called \fIcurl_easy_cleanup(3)\fP for the curl handle.
 
 See example below.
index 8cdfe6d..dbf8a80 100644 (file)
@@ -50,23 +50,24 @@ p.roffit {
 <p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
 <p class="level0"><span Class="bold">CURLFORMcode curl_formadd(struct curl_httppost **  firstitem,</span> <span Class="bold">struct curl_httppost **  lastitem,  ...);</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
 <p class="level0"><span Class="bold">CURLFORMcode curl_formadd(struct curl_httppost **  firstitem,</span> <span Class="bold">struct curl_httppost **  lastitem,  ...);</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">curl_formadd() is used to append sections when building a multipart/formdata HTTP POST (sometimes referred to as <a href="http://www.ietf.org/rfc/rfc2388.txt">RFC 2388</a>-style posts). Append one section at a time until you've added all the sections you want included and then you pass the <span Class="emphasis">firstitem</span> pointer as parameter to <span Class="bold">CURLOPT_HTTPPOST</span>. <span Class="emphasis">lastitem</span> is set after each <a class="emphasis" href="./curl_formadd.html">curl_formadd(3)</a> call and on repeated invokes it should be left as set to allow repeated invokes to find the end of the list faster. 
+<p class="level0">curl_formadd() is used to append sections when building a multipart/formdata HTTP POST (sometimes referred to as <a href="http://www.ietf.org/rfc/rfc2388.txt">RFC 2388</a>-style posts). Append one section at a time until you've added all the sections you want included and then you pass the <span Class="emphasis">firstitem</span> pointer as parameter to <span Class="bold">CURLOPT_HTTPPOST(3)</span>. <span Class="emphasis">lastitem</span> is set after each <a Class="emphasis" href="./curl_formadd.html">curl_formadd</a> call and on repeated invokes it should be left as set to allow repeated invokes to find the end of the list faster. 
 <p class="level0">After the <span Class="emphasis">lastitem</span> pointer follow the real arguments. 
 <p class="level0">After the <span Class="emphasis">lastitem</span> pointer follow the real arguments. 
-<p class="level0">The pointers <span Class="emphasis">firstitem</span> and <span Class="emphasis">lastitem</span> should both be pointing to NULL in the first call to this function. All list-data will be allocated by the function itself. You must call <a class="emphasis" href="./curl_formfree.html">curl_formfree(3)</a> on the <span Class="emphasis">firstitem</span> after the form post has been done to free the resources. 
-<p class="level0">Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header. You can disable this header with <span Class="emphasis">CURLOPT_HTTPHEADER</span> as usual. 
+<p class="level0">The pointers <span Class="emphasis">firstitem</span> and <span Class="emphasis">lastitem</span> should both be pointing to NULL in the first call to this function. All list-data will be allocated by the function itself. You must call <a Class="emphasis" href="./curl_formfree.html">curl_formfree</a> on the <span Class="emphasis">firstitem</span> after the form post has been done to free the resources. 
+<p class="level0">Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header. You can disable this header with <span Class="emphasis">CURLOPT_HTTPHEADER(3)</span> as usual. 
 <p class="level0">First, there are some basics you need to understand about multipart/formdata posts. Each part consists of at least a NAME and a CONTENTS part. If the part is made for file upload, there are also a stored CONTENT-TYPE and a FILENAME. Below, we'll discuss what options you use to set these properties in the parts you want to add to your post. 
 <p class="level0">The options listed first are for making normal parts. The options from <a class="emphasis" href="#CURLFORMFILE">CURLFORM_FILE</a> through <a class="emphasis" href="#CURLFORMBUFFERLENGTH">CURLFORM_BUFFERLENGTH</a> are for file upload parts. <a name="OPTIONS"></a><h2 class="nroffsh">OPTIONS</h2>
 <p class="level0">
 <p class="level0"><a name="CURLFORMCOPYNAME"></a><span class="nroffip">CURLFORM_COPYNAME</span> 
 <p class="level0">First, there are some basics you need to understand about multipart/formdata posts. Each part consists of at least a NAME and a CONTENTS part. If the part is made for file upload, there are also a stored CONTENT-TYPE and a FILENAME. Below, we'll discuss what options you use to set these properties in the parts you want to add to your post. 
 <p class="level0">The options listed first are for making normal parts. The options from <a class="emphasis" href="#CURLFORMFILE">CURLFORM_FILE</a> through <a class="emphasis" href="#CURLFORMBUFFERLENGTH">CURLFORM_BUFFERLENGTH</a> are for file upload parts. <a name="OPTIONS"></a><h2 class="nroffsh">OPTIONS</h2>
 <p class="level0">
 <p class="level0"><a name="CURLFORMCOPYNAME"></a><span class="nroffip">CURLFORM_COPYNAME</span> 
-<p class="level1">followed by a string which provides the <span Class="emphasis">name</span> of this part. libcurl copies the string so your application doesn't need to keep it around after this function call. If the name isn't NUL-terminated, or if you'd like it to contain zero bytes, you must set its length with <span Class="bold">CURLFORM_NAMELENGTH</span>. The copied data will be freed by <a class="emphasis" href="./curl_formfree.html">curl_formfree(3)</a>. 
+<p class="level1">followed by a string which provides the <span Class="emphasis">name</span> of this part. libcurl copies the string so your application doesn't need to keep it around after this function call. If the name isn't NUL-terminated, or if you'd like it to contain zero bytes, you must set its length with <span Class="bold">CURLFORM_NAMELENGTH</span>. The copied data will be freed by <a Class="emphasis" href="./curl_formfree.html">curl_formfree</a>. 
 <p class="level0"><a name="CURLFORMPTRNAME"></a><span class="nroffip">CURLFORM_PTRNAME</span> 
 <p class="level1">followed by a string which provides the <span Class="emphasis">name</span> of this part. libcurl will use the pointer and refer to the data in your application, so you must make sure it remains until curl no longer needs it. If the name isn't NUL-terminated, or if you'd like it to contain zero bytes, you must set its length with <span Class="bold">CURLFORM_NAMELENGTH</span>. 
 <p class="level0"><a name="CURLFORMCOPYCONTENTS"></a><span class="nroffip">CURLFORM_COPYCONTENTS</span> 
 <p class="level0"><a name="CURLFORMPTRNAME"></a><span class="nroffip">CURLFORM_PTRNAME</span> 
 <p class="level1">followed by a string which provides the <span Class="emphasis">name</span> of this part. libcurl will use the pointer and refer to the data in your application, so you must make sure it remains until curl no longer needs it. If the name isn't NUL-terminated, or if you'd like it to contain zero bytes, you must set its length with <span Class="bold">CURLFORM_NAMELENGTH</span>. 
 <p class="level0"><a name="CURLFORMCOPYCONTENTS"></a><span class="nroffip">CURLFORM_COPYCONTENTS</span> 
-<p class="level1">followed by a pointer to the contents of this part, the actual data to send away. libcurl copies the provided data, so your application doesn't need to keep it around after this function call. If the data isn't null terminated, or if you'd like it to contain zero bytes, you must set the length of the name with <a class="bold" href="#CURLFORMCONTENTSLENGTH">CURLFORM_CONTENTSLENGTH</a>. The copied data will be freed by <a class="emphasis" href="./curl_formfree.html">curl_formfree(3)</a>. 
+<p class="level1">followed by a pointer to the contents of this part, the actual data to send away. libcurl copies the provided data, so your application doesn't need to keep it around after this function call. If the data isn't null terminated, or if you'd like it to contain zero bytes, you must set the length of the name with <a class="bold" href="#CURLFORMCONTENTSLENGTH">CURLFORM_CONTENTSLENGTH</a>. The copied data will be freed by <a Class="emphasis" href="./curl_formfree.html">curl_formfree</a>. 
 <p class="level0"><a name="CURLFORMPTRCONTENTS"></a><span class="nroffip">CURLFORM_PTRCONTENTS</span> 
 <p class="level1">followed by a pointer to the contents of this part, the actual data to send away. libcurl will use the pointer and refer to the data in your application, so you must make sure it remains until curl no longer needs it. If the data isn't NUL-terminated, or if you'd like it to contain zero bytes, you must set its length  with <a class="bold" href="#CURLFORMCONTENTSLENGTH">CURLFORM_CONTENTSLENGTH</a>. 
 <p class="level0"><a name="CURLFORMCONTENTSLENGTH"></a><span class="nroffip">CURLFORM_CONTENTSLENGTH</span> 
 <p class="level1">followed by a long giving the length of the contents. Note that for <a class="emphasis" href="#CURLFORMSTREAM">CURLFORM_STREAM</a> contents, this option is mandatory. 
 <p class="level0"><a name="CURLFORMPTRCONTENTS"></a><span class="nroffip">CURLFORM_PTRCONTENTS</span> 
 <p class="level1">followed by a pointer to the contents of this part, the actual data to send away. libcurl will use the pointer and refer to the data in your application, so you must make sure it remains until curl no longer needs it. If the data isn't NUL-terminated, or if you'd like it to contain zero bytes, you must set its length  with <a class="bold" href="#CURLFORMCONTENTSLENGTH">CURLFORM_CONTENTSLENGTH</a>. 
 <p class="level0"><a name="CURLFORMCONTENTSLENGTH"></a><span class="nroffip">CURLFORM_CONTENTSLENGTH</span> 
 <p class="level1">followed by a long giving the length of the contents. Note that for <a class="emphasis" href="#CURLFORMSTREAM">CURLFORM_STREAM</a> contents, this option is mandatory. 
+<p class="level1">If you pass a 0 (zero) for this option, libcurl will instead do a strlen() on the contents to figure out the size. If you really want to send a zero byte content then you must make sure strlen() on the data pointer returns zero. 
 <p class="level0"><a name="CURLFORMFILECONTENT"></a><span class="nroffip">CURLFORM_FILECONTENT</span> 
 <p class="level1">followed by a filename, causes that file to be read and its contents used as data in this part. This part does <span Class="emphasis">not</span> automatically become a file upload part simply because its data was read from a file. 
 <p class="level0"><a name="CURLFORMFILE"></a><span class="nroffip">CURLFORM_FILE</span> 
 <p class="level0"><a name="CURLFORMFILECONTENT"></a><span class="nroffip">CURLFORM_FILECONTENT</span> 
 <p class="level1">followed by a filename, causes that file to be read and its contents used as data in this part. This part does <span Class="emphasis">not</span> automatically become a file upload part simply because its data was read from a file. 
 <p class="level0"><a name="CURLFORMFILE"></a><span class="nroffip">CURLFORM_FILE</span> 
@@ -78,16 +79,16 @@ p.roffit {
 <p class="level0"><a name="CURLFORMBUFFER"></a><span class="nroffip">CURLFORM_BUFFER</span> 
 <p class="level1">is used for custom file upload parts without use of <a class="emphasis" href="#CURLFORMFILE">CURLFORM_FILE</a>.  It tells libcurl that the file contents are already present in a buffer.  The parameter is a string which provides the <span Class="emphasis">filename</span> field in the content header. 
 <p class="level0"><a name="CURLFORMBUFFERPTR"></a><span class="nroffip">CURLFORM_BUFFERPTR</span> 
 <p class="level0"><a name="CURLFORMBUFFER"></a><span class="nroffip">CURLFORM_BUFFER</span> 
 <p class="level1">is used for custom file upload parts without use of <a class="emphasis" href="#CURLFORMFILE">CURLFORM_FILE</a>.  It tells libcurl that the file contents are already present in a buffer.  The parameter is a string which provides the <span Class="emphasis">filename</span> field in the content header. 
 <p class="level0"><a name="CURLFORMBUFFERPTR"></a><span class="nroffip">CURLFORM_BUFFERPTR</span> 
-<p class="level1">is used in combination with <a class="emphasis" href="#CURLFORMBUFFER">CURLFORM_BUFFER</a>. The parameter is a pointer to the buffer to be uploaded. This buffer must not be freed until after <a class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup(3)</a> is called. You must also use <a class="emphasis" href="#CURLFORMBUFFERLENGTH">CURLFORM_BUFFERLENGTH</a> to set the number of bytes in the buffer. 
+<p class="level1">is used in combination with <a class="emphasis" href="#CURLFORMBUFFER">CURLFORM_BUFFER</a>. The parameter is a pointer to the buffer to be uploaded. This buffer must not be freed until after <a Class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup</a> is called. You must also use <a class="emphasis" href="#CURLFORMBUFFERLENGTH">CURLFORM_BUFFERLENGTH</a> to set the number of bytes in the buffer. 
 <p class="level0"><a name="CURLFORMBUFFERLENGTH"></a><span class="nroffip">CURLFORM_BUFFERLENGTH</span> 
 <p class="level1">is used in combination with <a class="emphasis" href="#CURLFORMBUFFER">CURLFORM_BUFFER</a>. The parameter is a long which gives the length of the buffer. 
 <p class="level0"><a name="CURLFORMSTREAM"></a><span class="nroffip">CURLFORM_STREAM</span> 
 <p class="level0"><a name="CURLFORMBUFFERLENGTH"></a><span class="nroffip">CURLFORM_BUFFERLENGTH</span> 
 <p class="level1">is used in combination with <a class="emphasis" href="#CURLFORMBUFFER">CURLFORM_BUFFER</a>. The parameter is a long which gives the length of the buffer. 
 <p class="level0"><a name="CURLFORMSTREAM"></a><span class="nroffip">CURLFORM_STREAM</span> 
-<p class="level1">Tells libcurl to use the <span Class="emphasis">CURLOPT_READFUNCTION</span> callback to get data. The parameter you pass to <a class="emphasis" href="#CURLFORMSTREAM">CURLFORM_STREAM</a> is the pointer passed on to the read callback's fourth argument. If you want the part to look like a file upload one, set the <a class="emphasis" href="#CURLFORMFILENAME">CURLFORM_FILENAME</a> parameter as well. Note that when using <a class="emphasis" href="#CURLFORMSTREAM">CURLFORM_STREAM</a>, <a class="emphasis" href="#CURLFORMCONTENTSLENGTH">CURLFORM_CONTENTSLENGTH</a> must also be set with the total expected length of the part. (Option added in libcurl 7.18.2) 
+<p class="level1">Tells libcurl to use the <span Class="emphasis">CURLOPT_READFUNCTION(3)</span> callback to get data. The parameter you pass to <a class="emphasis" href="#CURLFORMSTREAM">CURLFORM_STREAM</a> is the pointer passed on to the read callback's fourth argument. If you want the part to look like a file upload one, set the <a class="emphasis" href="#CURLFORMFILENAME">CURLFORM_FILENAME</a> parameter as well. Note that when using <a class="emphasis" href="#CURLFORMSTREAM">CURLFORM_STREAM</a>, <a class="emphasis" href="#CURLFORMCONTENTSLENGTH">CURLFORM_CONTENTSLENGTH</a> must also be set with the total expected length of the part. (Option added in libcurl 7.18.2) 
 <p class="level0"><a name="CURLFORMARRAY"></a><span class="nroffip">CURLFORM_ARRAY</span> 
 <p class="level1">Another possibility to send options to curl_formadd() is the <a class="bold" href="#CURLFORMARRAY">CURLFORM_ARRAY</a> option, that passes a struct curl_forms array pointer as its value. Each curl_forms structure element has a CURLformoption and a char pointer. The final element in the array must be a CURLFORM_END. All available options can be used in an array, except the CURLFORM_ARRAY option itself!  The last argument in such an array must always be <span Class="bold">CURLFORM_END</span>. 
 <p class="level0"><a name="CURLFORMCONTENTHEADER"></a><span class="nroffip">CURLFORM_CONTENTHEADER</span> 
 <p class="level1">specifies extra headers for the form POST section.  This takes a curl_slist prepared in the usual way using <span Class="bold">curl_slist_append</span> and appends the list of headers to those libcurl automatically generates. The list must exist while the POST occurs, if you free it before the post completes you may experience problems. 
 <p class="level0"><a name="CURLFORMARRAY"></a><span class="nroffip">CURLFORM_ARRAY</span> 
 <p class="level1">Another possibility to send options to curl_formadd() is the <a class="bold" href="#CURLFORMARRAY">CURLFORM_ARRAY</a> option, that passes a struct curl_forms array pointer as its value. Each curl_forms structure element has a CURLformoption and a char pointer. The final element in the array must be a CURLFORM_END. All available options can be used in an array, except the CURLFORM_ARRAY option itself!  The last argument in such an array must always be <span Class="bold">CURLFORM_END</span>. 
 <p class="level0"><a name="CURLFORMCONTENTHEADER"></a><span class="nroffip">CURLFORM_CONTENTHEADER</span> 
 <p class="level1">specifies extra headers for the form POST section.  This takes a curl_slist prepared in the usual way using <span Class="bold">curl_slist_append</span> and appends the list of headers to those libcurl automatically generates. The list must exist while the POST occurs, if you free it before the post completes you may experience problems. 
-<p class="level1">When you've passed the HttpPost pointer to <a class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt(3)</a> (using the <span Class="emphasis">CURLOPT_HTTPPOST</span> option), you must not free the list until after you've called <a class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup(3)</a> for the curl handle. 
+<p class="level1">When you've passed the HttpPost pointer to <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a> (using the <span Class="emphasis">CURLOPT_HTTPPOST(3)</span> option), you must not free the list until after you've called <a Class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup</a> for the curl handle. 
 <p class="level1">See example below. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">0 means everything was ok, non-zero means an error occurred corresponding to a CURL_FORMADD_* constant defined in <span Class="emphasis">&lt;curl/curl.h&gt;</span> <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
 <p class="level0"><pre>
 <p class="level1">See example below. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">0 means everything was ok, non-zero means an error occurred corresponding to a CURL_FORMADD_* constant defined in <span Class="emphasis">&lt;curl/curl.h&gt;</span> <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
 <p class="level0"><pre>
@@ -158,6 +159,6 @@ p.roffit {
  &nbsp;curl_easy_setopt(curl, CURLOPT_HTTPPOST, post);
  <p class="level0"></pre>
 <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
  &nbsp;curl_easy_setopt(curl, CURLOPT_HTTPPOST, post);
  <p class="level0"></pre>
 <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_easy_setopt.html">curl_easy_setopt (3)</a> <span Class="manpage"> </span> <a class="manpage" href="./curl_formfree.html">curl_formfree (3)</a> <p class="roffit">
+<p class="level0"><a Class="manpage" href="./curl_easy_setopt.html">curl_easy_setopt</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_formfree.html">curl_formfree</a>, <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 3e7ac97..50f2a7c 100644 (file)
Binary files a/docs/libcurl/curl_formadd.pdf and b/docs/libcurl/curl_formadd.pdf differ
index 7438a16..fd19491 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -33,8 +33,8 @@ curl_formfree() is used to clean up data previously built/appended with
 typically means after \fIcurl_easy_perform(3)\fP has been called.
 
 The pointer to free is the same pointer you passed to the
 typically means after \fIcurl_easy_perform(3)\fP has been called.
 
 The pointer to free is the same pointer you passed to the
-\fBCURLOPT_HTTPPOST\fP option, which is the \fIfirstitem\fP pointer from the
-\fIcurl_formadd(3)\fP invoke(s).
+\fBCURLOPT_HTTPPOST(3)\fP option, which is the \fIfirstitem\fP pointer from
+the \fIcurl_formadd(3)\fP invoke(s).
 
 \fBform\fP is the pointer as returned from a previous call to
 \fIcurl_formadd(3)\fP and may be NULL.
 
 \fBform\fP is the pointer as returned from a previous call to
 \fIcurl_formadd(3)\fP and may be NULL.
index 9ea2c74..620220e 100644 (file)
@@ -50,10 +50,10 @@ p.roffit {
 <p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
 <p class="level0"><span Class="bold">void curl_formfree(struct curl_httppost * form);</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
 <p class="level0"><span Class="bold">void curl_formfree(struct curl_httppost * form);</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">curl_formfree() is used to clean up data previously built/appended with <a class="emphasis" href="./curl_formadd.html">curl_formadd(3)</a>. This must be called when the data has been used, which typically means after <a class="emphasis" href="./curl_easy_perform.html">curl_easy_perform(3)</a> has been called. 
-<p class="level0">The pointer to free is the same pointer you passed to the <span Class="bold">CURLOPT_HTTPPOST</span> option, which is the <span Class="emphasis">firstitem</span> pointer from the <a class="emphasis" href="./curl_formadd.html">curl_formadd(3)</a> invoke(s). 
-<p class="level0"><span Class="bold">form</span> is the pointer as returned from a previous call to <a class="emphasis" href="./curl_formadd.html">curl_formadd(3)</a> and may be NULL. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">curl_formfree() is used to clean up data previously built/appended with <a Class="emphasis" href="./curl_formadd.html">curl_formadd</a>. This must be called when the data has been used, which typically means after <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> has been called. 
+<p class="level0">The pointer to free is the same pointer you passed to the <span Class="bold">CURLOPT_HTTPPOST(3)</span> option, which is the <span Class="emphasis">firstitem</span> pointer from the <a Class="emphasis" href="./curl_formadd.html">curl_formadd</a> invoke(s). 
+<p class="level0"><span Class="bold">form</span> is the pointer as returned from a previous call to <a Class="emphasis" href="./curl_formadd.html">curl_formadd</a> and may be NULL. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">None <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0">None <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_formadd.html">curl_formadd (3) </a> <p class="roffit">
+<p class="level0"><a Class="manpage" href="./curl_formadd.html">curl_formadd</a>, <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 8ad71fe..3182daa 100644 (file)
Binary files a/docs/libcurl/curl_formfree.pdf and b/docs/libcurl/curl_formfree.pdf differ
index e5b4b29..29c0868 100644 (file)
@@ -53,10 +53,10 @@ p.roffit {
  &nbsp;                 curl_formget_callback append );
  </pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
  &nbsp;                 curl_formget_callback append );
  </pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">curl_formget() is used to serialize data previously built/appended with <a class="emphasis" href="./curl_formadd.html">curl_formadd(3)</a>. Accepts a void pointer as second argument named <span Class="emphasis">userp</span> which will be passed as the first argument to the curl_formget_callback function. 
+<p class="level0">curl_formget() is used to serialize data previously built/appended with <a Class="emphasis" href="./curl_formadd.html">curl_formadd</a>. Accepts a void pointer as second argument named <span Class="emphasis">userp</span> which will be passed as the first argument to the curl_formget_callback function. 
 <p class="level0"><span Class="bold">typedef size_t (*curl_formget_callback)(void * userp,  const char * buf,</span> <span Class="bold"> size_t  len );</span> 
 <p class="level0">The curl_formget_callback will be executed for each part of the HTTP POST chain. The character buffer passed to the callback must not be freed. The callback should return the buffer length passed to it on success. 
 <p class="level0"><span Class="bold">typedef size_t (*curl_formget_callback)(void * userp,  const char * buf,</span> <span Class="bold"> size_t  len );</span> 
 <p class="level0">The curl_formget_callback will be executed for each part of the HTTP POST chain. The character buffer passed to the callback must not be freed. The callback should return the buffer length passed to it on success. 
-<p class="level0">If the <span Class="bold">CURLFORM_STREAM</span> option is used in the formpost, it will prevent <a class="emphasis" href="./curl_formget.html">curl_formget(3)</a> from working until you've performed the actual HTTP request as only then will libcurl get the actual read callback to use! <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">If the <span Class="bold">CURLFORM_STREAM</span> option is used in the formpost, it will prevent <a Class="emphasis" href="./curl_formget.html">curl_formget</a> from working until you've performed the actual HTTP request as only then will libcurl get the actual read callback to use! <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">0 means everything was ok, non-zero means an error occurred <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
 <p class="level0"><pre>
 <p class="level0"><p class="level0">&nbsp;size_t print_httppost_callback(void *arg, const char *buf, size_t len)
 <p class="level0">0 means everything was ok, non-zero means an error occurred <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
 <p class="level0"><pre>
 <p class="level0"><p class="level0">&nbsp;size_t print_httppost_callback(void *arg, const char *buf, size_t len)
@@ -76,6 +76,6 @@ p.roffit {
  </pre>
 <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">This function was added in libcurl 7.15.5 <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
  </pre>
 <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">This function was added in libcurl 7.15.5 <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_formadd.html">curl_formadd (3) </a> <p class="roffit">
+<p class="level0"><a Class="manpage" href="./curl_formadd.html">curl_formadd</a>, <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index ccf6e8e..6b50dc5 100644 (file)
Binary files a/docs/libcurl/curl_formget.pdf and b/docs/libcurl/curl_formget.pdf differ
index 08ec9b6..9e5570f 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -29,7 +29,7 @@ curl_free - reclaim memory that has been obtained through a libcurl call
 .ad
 .SH DESCRIPTION
 curl_free reclaims memory that has been obtained through a libcurl call.  Use
 .ad
 .SH DESCRIPTION
 curl_free reclaims memory that has been obtained through a libcurl call.  Use
-curl_free() instead of free() to avoid anomalies that can result from
+\fIcurl_free(3)\fP instead of free() to avoid anomalies that can result from
 differences in memory management between your application and libcurl.
 .SH "SEE ALSO"
 differences in memory management between your application and libcurl.
 .SH "SEE ALSO"
-.I curl_unescape(3)
+.BR curl_easy_unescape "(3), " curl_easy_escape "(3) "
index 7d75c24..87fd071 100644 (file)
@@ -50,7 +50,7 @@ p.roffit {
 <p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
 <p class="level0"><span Class="bold">void curl_free( char * ptr  );</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
 <p class="level0"><span Class="bold">void curl_free( char * ptr  );</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">curl_free reclaims memory that has been obtained through a libcurl call.  Use curl_free() instead of free() to avoid anomalies that can result from differences in memory management between your application and libcurl. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="emphasis" href="./curl_unescape.html">curl_unescape(3)</a> <p class="roffit">
+<p class="level0">curl_free reclaims memory that has been obtained through a libcurl call.  Use <a Class="emphasis" href="./curl_free.html">curl_free</a> instead of free() to avoid anomalies that can result from differences in memory management between your application and libcurl. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./curl_easy_unescape.html">curl_easy_unescape</a>, <a Class="manpage" href="./curl_easy_escape.html">curl_easy_escape</a>, <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 041e759..20e226c 100644 (file)
Binary files a/docs/libcurl/curl_free.pdf and b/docs/libcurl/curl_free.pdf differ
index 65eed9c..ff31ac7 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" **************************************************************************
 .TH curl_getdate 3 "12 Aug 2005" "libcurl 7.0" "libcurl Manual"
 .SH NAME
 .\" **************************************************************************
 .TH curl_getdate 3 "12 Aug 2005" "libcurl 7.0" "libcurl Manual"
 .SH NAME
-curl_getdate - Convert a date string to number of seconds since January 1,
-1970
+curl_getdate - Convert a date string to number of seconds
 .SH SYNOPSIS
 .B #include <curl/curl.h>
 .sp
 .BI "time_t curl_getdate(char *" datestring ", time_t *"now " );"
 .ad
 .SH DESCRIPTION
 .SH SYNOPSIS
 .B #include <curl/curl.h>
 .sp
 .BI "time_t curl_getdate(char *" datestring ", time_t *"now " );"
 .ad
 .SH DESCRIPTION
-This function returns the number of seconds since January 1st 1970 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.
-
-\fBNOTE:\fP This function was rewritten for the 7.12.2 release and this
-documentation covers the functionality of the new one. The new one is not
-feature-complete with the old one, but most of the formats supported by the
-new one was supported by the old too.
+\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
 .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
@@ -107,11 +102,7 @@ number).
 
 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
 
 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\fP will return -1 in this case.
-.SH REWRITE
-The former version of this function was built with yacc and was not only very
-large, it was also never quite understood and it wasn't possible to build with
-non-GNU tools since only GNU Bison could make it thread-safe!
-
-The rewrite was done for 7.12.2. The new one is much smaller and uses simpler
-code.
+crippled mktime(), \fIcurl_getdate(3)\fP will return -1 in this case.
+.SH "SEE ALSO"
+.BR curl_easy_escape "(3), " curl_easy_unescape "(3), "
+.BR CURLOPT_TIMECONDITION "(3), " CURLOPT_TIMEVALUE "(3) "
index f2ece23..53cd9bb 100644 (file)
@@ -46,12 +46,11 @@ p.roffit {
 </head><body>
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 </head><body>
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
-<p class="level0">curl_getdate - Convert a date string to number of seconds since January 1, 1970 <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">curl_getdate - Convert a date string to number of seconds <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
 <p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
 <p class="level0"><span Class="bold">time_t curl_getdate(char * datestring , time_t *now  );</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
 <p class="level0"><span Class="bold">time_t curl_getdate(char * datestring , time_t *now  );</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">This function returns the number of seconds since January 1st 1970 in the UTC time zone, for the date and time that the <span Class="emphasis">datestring</span> parameter specifies. The <span Class="emphasis">now</span> parameter is not used, pass a NULL there. 
-<p class="level0"><span Class="bold">NOTE:</span> This function was rewritten for the 7.12.2 release and this documentation covers the functionality of the new one. The new one is not feature-complete with the old one, but most of the formats supported by the new one was supported by the old too. <a name="PARSING"></a><h2 class="nroffsh">PARSING DATES AND TIMES</h2>
+<p class="level0"><a Class="emphasis" href="./curl_getdate.html">curl_getdate</a> 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 <span Class="emphasis">datestring</span> parameter specifies. The <span Class="emphasis">now</span> parameter is not used, pass a NULL there. <a name="PARSING"></a><h2 class="nroffsh">PARSING DATES AND TIMES</h2>
 <p class="level0">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: 
 <p class="level0"><span Class="bold">calendar date items</span> 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. 
 <p class="level0"><span Class="bold">time of the day items</span> 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. 
 <p class="level0">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: 
 <p class="level0"><span Class="bold">calendar date items</span> 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. 
 <p class="level0"><span Class="bold">time of the day items</span> 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. 
@@ -88,8 +87,7 @@ p.roffit {
 <p class="level0">This parser was written to handle date formats specified in <a href="http://www.ietf.org/rfc/rfc822.txt">RFC 822</a> (including the update in <a href="http://www.ietf.org/rfc/rfc1123.txt">RFC 1123</a>) using time zone name or time zone delta and RFC 850 (obsoleted by <a href="http://www.ietf.org/rfc/rfc1036.txt">RFC 1036</a>) and ANSI C's asctime() format. These formats are the only ones <a href="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616</a> says HTTP applications may use. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">This function returns -1 when it fails to parse the date string. Otherwise it returns the number of seconds as described. 
 <p class="level0">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). 
 <p class="level0">This parser was written to handle date formats specified in <a href="http://www.ietf.org/rfc/rfc822.txt">RFC 822</a> (including the update in <a href="http://www.ietf.org/rfc/rfc1123.txt">RFC 1123</a>) using time zone name or time zone delta and RFC 850 (obsoleted by <a href="http://www.ietf.org/rfc/rfc1036.txt">RFC 1036</a>) and ANSI C's asctime() format. These formats are the only ones <a href="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616</a> says HTTP applications may use. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">This function returns -1 when it fails to parse the date string. Otherwise it returns the number of seconds as described. 
 <p class="level0">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). 
-<p class="level0">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(), <span Class="emphasis">curl_getdate</span> will return -1 in this case. <a name="REWRITE"></a><h2 class="nroffsh">REWRITE</h2>
-<p class="level0">The former version of this function was built with yacc and was not only very large, it was also never quite understood and it wasn't possible to build with non-GNU tools since only GNU Bison could make it thread-safe! 
-<p class="level0">The rewrite was done for 7.12.2. The new one is much smaller and uses simpler code. <p class="roffit">
+<p class="level0">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(), <a Class="emphasis" href="./curl_getdate.html">curl_getdate</a> will return -1 in this case. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./curl_easy_escape.html">curl_easy_escape</a>, <a Class="manpage" href="./curl_easy_unescape.html">curl_easy_unescape</a>, <span Class="manpage"> </span> <span Class="manpage">CURLOPT_TIMECONDITION (3)</span> <span Class="manpage">  CURLOPT_TIMEVALUE (3) </span> <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index c683cc0..c004c5a 100644 (file)
Binary files a/docs/libcurl/curl_getdate.pdf and b/docs/libcurl/curl_getdate.pdf differ
index fcab4e0..0cb0c38 100644 (file)
@@ -52,7 +52,7 @@ p.roffit {
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">curl_getenv() is a portable wrapper for the getenv() function, meant to emulate its behaviour and provide an identical interface for all operating systems libcurl builds on (including win32). <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">This function will be removed from the public libcurl API in a near future. It will instead be made "available" by source code access only, and then as curlx_getenv(). <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">curl_getenv() is a portable wrapper for the getenv() function, meant to emulate its behaviour and provide an identical interface for all operating systems libcurl builds on (including win32). <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">This function will be removed from the public libcurl API in a near future. It will instead be made "available" by source code access only, and then as curlx_getenv(). <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
-<p class="level0">If successful, curl_getenv() returns a pointer to the value of the specified environment. The memory it refers to is malloc()ed so the application must free() this when the data is no longer needed. When <a class="emphasis" href="./curl_getenv.html">curl_getenv(3)</a> fails to find the specified name, it returns a null pointer. <a name="NOTE"></a><h2 class="nroffsh">NOTE</h2>
+<p class="level0">If successful, curl_getenv() returns a pointer to the value of the specified environment. The memory it refers to is malloc()ed so the application must free() this when the data is no longer needed. When <a Class="emphasis" href="./curl_getenv.html">curl_getenv</a> fails to find the specified name, it returns a null pointer. <a name="NOTE"></a><h2 class="nroffsh">NOTE</h2>
 <p class="level0">Under unix operating systems, there isn't any point in returning an allocated memory, although other systems won't work properly if this isn't done. The unix implementation thus has to suffer slightly from the drawbacks of other systems. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><span Class="manpage">getenv (3C)</span> <span Class="manpage"> </span> <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 <p class="level0">Under unix operating systems, there isn't any point in returning an allocated memory, although other systems won't work properly if this isn't done. The unix implementation thus has to suffer slightly from the drawbacks of other systems. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><span Class="manpage">getenv (3C)</span> <span Class="manpage"> </span> <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
index e1f5fb6..fe807fa 100644 (file)
Binary files a/docs/libcurl/curl_getenv.pdf and b/docs/libcurl/curl_getenv.pdf differ
index afee7bc..f46b009 100644 (file)
@@ -50,12 +50,12 @@ p.roffit {
 <p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
 <p class="level0"><span Class="bold">void curl_global_cleanup(void);</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
 <p class="level0"><span Class="bold">void curl_global_cleanup(void);</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">This function releases resources acquired by <a class="bold" href="./curl_global_init.html">curl_global_init(3)</a>. 
-<p class="level0">You should call <a class="emphasis" href="./curl_global_cleanup.html">curl_global_cleanup(3)</a> once for each call you make to <a class="emphasis" href="./curl_global_init.html">curl_global_init(3)</a>, after you are done using libcurl. 
-<p class="level0"><span Class="bold">This function is not thread safe.</span> 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 <a class="bold" href="./curl_global_cleanup.html">curl_global_cleanup(3)</a> calls functions of other libraries that are similarly thread unsafe, it could conflict with any other thread that uses these other libraries. 
-<p class="level0">See the description in <a class="bold" href="./libcurl.html">libcurl(3)</a> of global environment requirements for details of how to use this function. 
+<p class="level0">This function releases resources acquired by <a Class="bold" href="./curl_global_init.html">curl_global_init</a>. 
+<p class="level0">You should call <a Class="emphasis" href="./curl_global_cleanup.html">curl_global_cleanup</a> once for each call you make to <a Class="emphasis" href="./curl_global_init.html">curl_global_init</a>, after you are done using libcurl. 
+<p class="level0"><span Class="bold">This function is not thread safe.</span> 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 <a Class="bold" href="./curl_global_cleanup.html">curl_global_cleanup</a> calls functions of other libraries that are similarly thread unsafe, it could conflict with any other thread that uses these other libraries. 
+<p class="level0">See the description in <a Class="bold" href="./libcurl.html">libcurl</a> of global environment requirements for details of how to use this function. 
 <p class="level0"><a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_global_init.html">curl_global_init (3)</a> <span Class="manpage"> </span> <a class="manpage" href="./libcurl.html">libcurl (3)</a> <span Class="manpage"> </span> 
+<p class="level0"><a Class="manpage" href="./curl_global_init.html">curl_global_init</a>, <span Class="manpage"> </span> <a Class="manpage" href="./libcurl.html">libcurl</a>, <span Class="manpage"> </span> 
 <p class="level0"><p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
 <p class="level0"><p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 9a73cf6..2fcac63 100644 (file)
Binary files a/docs/libcurl/curl_global_cleanup.pdf and b/docs/libcurl/curl_global_cleanup.pdf differ
index 8e1cc18..77172be 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -46,11 +46,11 @@ 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
 \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()\fP calls functions of other libraries that are similarly
-thread unsafe, it could conflict with any other thread that uses these other
-libraries.
+\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.
 
 
-See the description in \fBlibcurl\fP(3) of global environment requirements for
+See the description in \fBlibcurl(3)\fP of global environment requirements for
 details of how to use this function.
 
 .SH FLAGS
 details of how to use this function.
 
 .SH FLAGS
@@ -74,7 +74,8 @@ the functionality of the \fBCURL_GLOBAL_ALL\fP mask.
 .TP
 .B CURL_GLOBAL_ACK_EINTR
 When this flag is set, curl will acknowledge EINTR condition when connecting
 .TP
 .B 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.
+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 RETURN VALUE
 If this function returns non-zero, something went wrong and you cannot use the
 other curl functions.
index 26a1200..1552321 100644 (file)
@@ -53,8 +53,8 @@ p.roffit {
 <p class="level0">This function sets up the program environment that libcurl needs.  Think of it as an extension of the library loader. 
 <p class="level0">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. 
 <p class="level0">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. 
 <p class="level0">This function sets up the program environment that libcurl needs.  Think of it as an extension of the library loader. 
 <p class="level0">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. 
 <p class="level0">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. 
-<p class="level0"><span Class="bold">This function is not thread safe.</span> 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 <span Class="emphasis">curl_global_init()</span> calls functions of other libraries that are similarly thread unsafe, it could conflict with any other thread that uses these other libraries. 
-<p class="level0">See the description in <span Class="bold">libcurl</span>(3) of global environment requirements for details of how to use this function. 
+<p class="level0"><span Class="bold">This function is not thread safe.</span> 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 <a Class="emphasis" href="./curl_global_init.html">curl_global_init</a> calls functions of other libraries that are similarly thread unsafe, it could conflict with any other thread that uses these other libraries. 
+<p class="level0">See the description in <a Class="bold" href="./libcurl.html">libcurl</a> of global environment requirements for details of how to use this function. 
 <p class="level0"><a name="FLAGS"></a><h2 class="nroffsh">FLAGS</h2>
 <p class="level0">
 <p class="level0"><span Class="bold">CURL_GLOBAL_ALL</span> Initialize everything possible. This sets all known bits except <span Class="bold">CURL_GLOBAL_ACK_EINTR</span>. 
 <p class="level0"><a name="FLAGS"></a><h2 class="nroffsh">FLAGS</h2>
 <p class="level0">
 <p class="level0"><span Class="bold">CURL_GLOBAL_ALL</span> Initialize everything possible. This sets all known bits except <span Class="bold">CURL_GLOBAL_ACK_EINTR</span>. 
@@ -62,8 +62,8 @@ p.roffit {
 <p class="level0"><span Class="bold">CURL_GLOBAL_WIN32</span> Initialize the Win32 socket libraries. 
 <p class="level0"><span Class="bold">CURL_GLOBAL_NOTHING</span> Initialise nothing extra. This sets no bit. 
 <p class="level0"><span Class="bold">CURL_GLOBAL_DEFAULT</span> A sensible default. It will init both SSL and Win32. Right now, this equals the functionality of the <span Class="bold">CURL_GLOBAL_ALL</span> mask. 
 <p class="level0"><span Class="bold">CURL_GLOBAL_WIN32</span> Initialize the Win32 socket libraries. 
 <p class="level0"><span Class="bold">CURL_GLOBAL_NOTHING</span> Initialise nothing extra. This sets no bit. 
 <p class="level0"><span Class="bold">CURL_GLOBAL_DEFAULT</span> A sensible default. It will init both SSL and Win32. Right now, this equals the functionality of the <span Class="bold">CURL_GLOBAL_ALL</span> mask. 
-<p class="level0"><span Class="bold">CURL_GLOBAL_ACK_EINTR</span> When this flag is set, curl will acknowledge EINTR condition when connecting or when waiting for data.  Otherwise, curl waits until full timeout elapses. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0"><span Class="bold">CURL_GLOBAL_ACK_EINTR</span> 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) <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">If this function returns non-zero, something went wrong and you cannot use the other curl functions. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0">If this function returns non-zero, something went wrong and you cannot use the other curl functions. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_global_init_mem.html">curl_global_init_mem (3)</a> <span Class="manpage"> </span> <a class="manpage" href="./curl_global_cleanup.html">curl_global_cleanup (3)</a> <span Class="manpage"> </span> <a class="manpage" href="./curl_easy_init.html">curl_easy_init (3) </a> <a class="manpage" href="./libcurl.html">libcurl (3) </a> <p class="roffit">
+<p class="level0"><a Class="manpage" href="./curl_global_init_mem.html">curl_global_init_mem</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_global_cleanup.html">curl_global_cleanup</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_easy_init.html">curl_easy_init</a>, <a Class="manpage" href="./libcurl.html">libcurl</a>, <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 989774a..f10df0d 100644 (file)
Binary files a/docs/libcurl/curl_global_init.pdf and b/docs/libcurl/curl_global_init.pdf differ
index eed8fad..883277c 100644 (file)
@@ -56,8 +56,8 @@ p.roffit {
 <span Class="bold"> curl_calloc_callback c );</span> 
 </pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <span Class="bold"> curl_calloc_callback c );</span> 
 </pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">This function works exactly as <a class="emphasis" href="./curl_global_init.html">curl_global_init(3)</a> with one addition: it allows the application to set callbacks to replace the otherwise used internal memory functions. 
-<p class="level0">This man page only adds documentation for the callbacks, see the <a class="emphasis" href="./curl_global_init.html">curl_global_init(3)</a> man page for all the rest. When you use this function, all callback arguments must be set to valid function pointers. 
+<p class="level0">This function works exactly as <a Class="emphasis" href="./curl_global_init.html">curl_global_init</a> with one addition: it allows the application to set callbacks to replace the otherwise used internal memory functions. 
+<p class="level0">This man page only adds documentation for the callbacks, see the <a Class="emphasis" href="./curl_global_init.html">curl_global_init</a> man page for all the rest. When you use this function, all callback arguments must be set to valid function pointers. 
 <p class="level0">The prototypes for the given callbacks should match these: 
 <p class="level0"><a name="void"></a><span class="nroffip">void *malloc_callback(size_t size);</span> 
 <p class="level1">To replace malloc() 
 <p class="level0">The prototypes for the given callbacks should match these: 
 <p class="level0"><a name="void"></a><span class="nroffip">void *malloc_callback(size_t size);</span> 
 <p class="level1">To replace malloc() 
@@ -70,7 +70,7 @@ p.roffit {
 <p class="level0"><a name="void"></a><span class="nroffip">void *calloc_callback(size_t nmemb, size_t size);</span> 
 <p class="level1">To replace calloc() <a name="CAUTION"></a><h2 class="nroffsh">CAUTION</h2>
 <p class="level0">Manipulating these gives considerable powers to the application to severely screw things up for libcurl. Take care! <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a name="void"></a><span class="nroffip">void *calloc_callback(size_t nmemb, size_t size);</span> 
 <p class="level1">To replace calloc() <a name="CAUTION"></a><h2 class="nroffsh">CAUTION</h2>
 <p class="level0">Manipulating these gives considerable powers to the application to severely screw things up for libcurl. Take care! <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_global_init.html">curl_global_init (3)</a> <span Class="manpage"> </span> <a class="manpage" href="./curl_global_cleanup.html">curl_global_cleanup (3)</a> <span Class="manpage"> </span> 
+<p class="level0"><a Class="manpage" href="./curl_global_init.html">curl_global_init</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_global_cleanup.html">curl_global_cleanup</a>, <span Class="manpage"> </span> 
 <p class="level0"><p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
 <p class="level0"><p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index a9ea24b..fb9b164 100644 (file)
Binary files a/docs/libcurl/curl_global_init_mem.pdf and b/docs/libcurl/curl_global_init_mem.pdf differ
index 35713e0..37c754a 100644 (file)
Binary files a/docs/libcurl/curl_mprintf.pdf and b/docs/libcurl/curl_mprintf.pdf differ
index 506ea41..253b864 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -29,17 +29,22 @@ CURLMcode curl_multi_add_handle(CURLM *multi_handle, CURL *easy_handle);
 .ad
 .SH DESCRIPTION
 Adds a standard easy handle to the multi stack. This function call will make
 .ad
 .SH DESCRIPTION
 Adds a standard easy handle to the multi stack. This function call will make
-this \fImulti_handle\fP control the specified \fIeasy_handle\fP.  Furthermore,
-libcurl now initiates the connection associated with the specified
-\fIeasy_handle\fP.
+this \fImulti_handle\fP control the specified \fIeasy_handle\fP.
 
 
-When an easy handle has been added to a multi stack, you can not and you must
-not use \fIcurl_easy_perform(3)\fP on that handle!
+While an easy handle is added to a multi stack, you can not and you must not
+use \fIcurl_easy_perform(3)\fP on that handle. After having removed the easy
+handle from the multi stack again, it is perfectly fine to use it with the
+easy interface again.
 
 
-If the easy handle is not set to use a shared (CURLOPT_SHARE) or global DNS
-cache (CURLOPT_DNS_USE_GLOBAL_CACHE), it will be made to use the DNS cache
-that is shared between all easy handles within the multi handle when
-\fIcurl_multi_add_handle(3)\fP is called.
+If the easy handle is not set to use a shared (\fICURLOPT_SHARE(3)\fP) or
+global DNS cache (\fICURLOPT_DNS_USE_GLOBAL_CACHE(3)\fP), it will be made to
+use the DNS cache that is shared between all easy handles within the multi
+handle when \fIcurl_multi_add_handle(3)\fP is called.
+
+When an easy interface is added to a multi handle, it will use a shared
+connection cache owned by the multi handle. Removing and adding new easy
+handles will not affect the pool of connections or the ability to do
+connection re-use.
 
 If you have CURLMOPT_TIMERFUNCTION set in the multi handle (and you really
 should if you're working event-based with \fIcurl_multi_socket_action(3)\fP
 
 If you have CURLMOPT_TIMERFUNCTION set in the multi handle (and you really
 should if you're working event-based with \fIcurl_multi_socket_action(3)\fP
@@ -47,10 +52,12 @@ and friends), that callback will be called from within this function to ask
 for an updated timer so that your main event loop will get the activity on
 this handle to get started.
 
 for an updated timer so that your main event loop will get the activity on
 this handle to get started.
 
-The easy handle will remain added until you remove it again with
-\fIcurl_multi_remove_handle(3)\fP. You should remove the easy handle from the
-multi stack before you terminate first the easy handle and then the multi
-handle:
+The easy handle will remain added to the multi handle until you remove it
+again with \fIcurl_multi_remove_handle(3)\fP - even when a transfer with that
+specific easy handle is completed.
+
+You should remove the easy handle from the multi stack before you terminate
+first the easy handle and then the multi handle:
 
 1 - \fIcurl_multi_remove_handle(3)\fP
 
 
 1 - \fIcurl_multi_remove_handle(3)\fP
 
@@ -60,4 +67,5 @@ handle:
 .SH RETURN VALUE
 CURLMcode type, general libcurl multi interface error code.
 .SH "SEE ALSO"
 .SH RETURN VALUE
 CURLMcode type, general libcurl multi interface error code.
 .SH "SEE ALSO"
-.BR curl_multi_cleanup "(3)," curl_multi_init "(3)"
+.BR curl_multi_cleanup "(3)," curl_multi_init "(3), "
+.BR curl_multi_setopt "(3), " curl_multi_socket_action "(3) "
index 7652494..a0f2ae2 100644 (file)
@@ -50,15 +50,17 @@ p.roffit {
 <p class="level0">#include &lt;curl/curl.h&gt; 
 <p class="level0">CURLMcode curl_multi_add_handle(CURLM *multi_handle, CURL *easy_handle); 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">#include &lt;curl/curl.h&gt; 
 <p class="level0">CURLMcode curl_multi_add_handle(CURLM *multi_handle, CURL *easy_handle); 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">Adds a standard easy handle to the multi stack. This function call will make this <span Class="emphasis">multi_handle</span> control the specified <span Class="emphasis">easy_handle</span>.  Furthermore, libcurl now initiates the connection associated with the specified <span Class="emphasis">easy_handle</span>. 
-<p class="level0">When an easy handle has been added to a multi stack, you can not and you must not use <a class="emphasis" href="./curl_easy_perform.html">curl_easy_perform(3)</a> on that handle! 
-<p class="level0">If the easy handle is not set to use a shared (CURLOPT_SHARE) or global DNS cache (CURLOPT_DNS_USE_GLOBAL_CACHE), it will be made to use the DNS cache that is shared between all easy handles within the multi handle when <a class="emphasis" href="./curl_multi_add_handle.html">curl_multi_add_handle(3)</a> is called. 
-<p class="level0">If you have CURLMOPT_TIMERFUNCTION set in the multi handle (and you really should if you're working event-based with <a class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action(3)</a> and friends), that callback will be called from within this function to ask for an updated timer so that your main event loop will get the activity on this handle to get started. 
-<p class="level0">The easy handle will remain added until you remove it again with <a class="emphasis" href="./curl_multi_remove_handle.html">curl_multi_remove_handle(3)</a>. You should remove the easy handle from the multi stack before you terminate first the easy handle and then the multi handle: 
-<p class="level0">1 - <a class="emphasis" href="./curl_multi_remove_handle.html">curl_multi_remove_handle(3)</a> 
-<p class="level0">2 - <a class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup(3)</a> 
-<p class="level0">3 - <a class="emphasis" href="./curl_multi_cleanup.html">curl_multi_cleanup(3)</a> <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Adds a standard easy handle to the multi stack. This function call will make this <span Class="emphasis">multi_handle</span> control the specified <span Class="emphasis">easy_handle</span>. 
+<p class="level0">While an easy handle is added to a multi stack, you can not and you must not use <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> on that handle. After having removed the easy handle from the multi stack again, it is perfectly fine to use it with the easy interface again. 
+<p class="level0">If the easy handle is not set to use a shared (<span Class="emphasis">CURLOPT_SHARE(3)</span>) or global DNS cache (<span Class="emphasis">CURLOPT_DNS_USE_GLOBAL_CACHE(3)</span>), it will be made to use the DNS cache that is shared between all easy handles within the multi handle when <a Class="emphasis" href="./curl_multi_add_handle.html">curl_multi_add_handle</a> is called. 
+<p class="level0">When an easy interface is added to a multi handle, it will use a shared connection cache owned by the multi handle. Removing and adding new easy handles will not affect the pool of connections or the ability to do connection re-use. 
+<p class="level0">If you have CURLMOPT_TIMERFUNCTION set in the multi handle (and you really should if you're working event-based with <a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> and friends), that callback will be called from within this function to ask for an updated timer so that your main event loop will get the activity on this handle to get started. 
+<p class="level0">The easy handle will remain added to the multi handle until you remove it again with <a Class="emphasis" href="./curl_multi_remove_handle.html">curl_multi_remove_handle</a> - even when a transfer with that specific easy handle is completed. 
+<p class="level0">You should remove the easy handle from the multi stack before you terminate first the easy handle and then the multi handle: 
+<p class="level0">1 - <a Class="emphasis" href="./curl_multi_remove_handle.html">curl_multi_remove_handle</a> 
+<p class="level0">2 - <a Class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup</a> 
+<p class="level0">3 - <a Class="emphasis" href="./curl_multi_cleanup.html">curl_multi_cleanup</a> <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">CURLMcode type, general libcurl multi interface error code. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0">CURLMcode type, general libcurl multi interface error code. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_multi_cleanup.html">curl_multi_cleanup (3)</a> <a class="manpage" href="./curl_multi_init.html"> curl_multi_init (3)</a> <p class="roffit">
+<p class="level0"><a Class="manpage" href="./curl_multi_cleanup.html">curl_multi_cleanup</a>, <a Class="manpage" href="./curl_multi_init.html">curl_multi_init</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_multi_setopt.html">curl_multi_setopt</a>, <a Class="manpage" href="./curl_multi_socket_action.html">curl_multi_socket_action</a>, <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 46a1d17..c5fa51b 100644 (file)
Binary files a/docs/libcurl/curl_multi_add_handle.pdf and b/docs/libcurl/curl_multi_add_handle.pdf differ
index 0b580fe..0a2378d 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" **************************************************************************
 .TH curl_multi_assign 3 "9 Jul 2006" "libcurl 7.16.0" "libcurl Manual"
 .SH NAME
 .\" **************************************************************************
 .TH curl_multi_assign 3 "9 Jul 2006" "libcurl 7.16.0" "libcurl Manual"
 .SH NAME
-curl_multi_assign \- set data to association with an internal socket
+curl_multi_assign \- set data to associate with an internal socket
 .SH SYNOPSIS
 #include <curl/curl.h>
 
 CURLMcode curl_multi_assign(CURLM *multi_handle, curl_socket_t sockfd,
                             void *sockptr);
 .SH DESCRIPTION
 .SH SYNOPSIS
 #include <curl/curl.h>
 
 CURLMcode curl_multi_assign(CURLM *multi_handle, curl_socket_t sockfd,
                             void *sockptr);
 .SH DESCRIPTION
-This function assigns an association in the multi handle between the given
-socket and a private pointer of the application. This is (only) useful for
-\fIcurl_multi_socket(3)\fP uses.
+This function creates an association in the multi handle between the given
+socket and a private pointer of the application. This is designed for
+\fIcurl_multi_socket_action(3)\fP uses.
 
 When set, the \fIsockptr\fP pointer will be passed to all future socket
 callbacks for the specific \fIsockfd\fP socket.
 
 When set, the \fIsockptr\fP pointer will be passed to all future socket
 callbacks for the specific \fIsockfd\fP socket.
@@ -51,13 +51,13 @@ The standard CURLMcode for multi interface error codes.
 .SH "TYPICAL USAGE"
 In a typical application you allocate a struct or at least use some kind of
 semi-dynamic data for each socket that we must wait for action on when using
 .SH "TYPICAL USAGE"
 In a typical application you allocate a struct or at least use some kind of
 semi-dynamic data for each socket that we must wait for action on when using
-the \fIcurl_multi_socket(3)\fP approach.
+the \fIcurl_multi_socket_action(3)\fP approach.
 
 When our socket-callback gets called by libcurl and we get to know about yet
 another socket to wait for, we can use \fIcurl_multi_assign(3)\fP to point out
 the particular data so that when we get updates about this same socket again,
 we don't have to find the struct associated with this socket by ourselves.
 .SH AVAILABILITY
 
 When our socket-callback gets called by libcurl and we get to know about yet
 another socket to wait for, we can use \fIcurl_multi_assign(3)\fP to point out
 the particular data so that when we get updates about this same socket again,
 we don't have to find the struct associated with this socket by ourselves.
 .SH AVAILABILITY
-This function was added in libcurl 7.15.5, although not deemed stable yet.
+This function was added in libcurl 7.15.5.
 .SH "SEE ALSO"
 .SH "SEE ALSO"
-.BR curl_multi_setopt "(3), " curl_multi_socket "(3) "
+.BR curl_multi_setopt "(3), " curl_multi_socket_action "(3) "
index fc46807..64a7da4 100644 (file)
@@ -46,18 +46,18 @@ p.roffit {
 </head><body>
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 </head><body>
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
-<p class="level0">curl_multi_assign - set data to association with an internal socket <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">curl_multi_assign - set data to associate with an internal socket <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
 <p class="level0">#include &lt;curl/curl.h&gt; 
 <p class="level0">CURLMcode curl_multi_assign(CURLM *multi_handle, curl_socket_t sockfd, &nbsp;                           void *sockptr); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">#include &lt;curl/curl.h&gt; 
 <p class="level0">CURLMcode curl_multi_assign(CURLM *multi_handle, curl_socket_t sockfd, &nbsp;                           void *sockptr); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">This function assigns an association in the multi handle between the given socket and a private pointer of the application. This is (only) useful for <a class="emphasis" href="./curl_multi_socket.html">curl_multi_socket(3)</a> uses. 
+<p class="level0">This function creates an association in the multi handle between the given socket and a private pointer of the application. This is designed for <a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> uses. 
 <p class="level0">When set, the <span Class="emphasis">sockptr</span> pointer will be passed to all future socket callbacks for the specific <span Class="emphasis">sockfd</span> socket. 
 <p class="level0">If the given <span Class="emphasis">sockfd</span> isn't already in use by libcurl, this function will return an error. 
 <p class="level0">libcurl only keeps one single pointer associated with a socket, so calling this function several times for the same socket will make the last set pointer get used. 
 <p class="level0">The idea here being that this association (socket to private pointer) is something that just about every application that uses this API will need and then libcurl can just as well do it since it already has an internal hash table lookup for this. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">The standard CURLMcode for multi interface error codes. <a name="TYPICAL"></a><h2 class="nroffsh">TYPICAL USAGE</h2>
 <p class="level0">When set, the <span Class="emphasis">sockptr</span> pointer will be passed to all future socket callbacks for the specific <span Class="emphasis">sockfd</span> socket. 
 <p class="level0">If the given <span Class="emphasis">sockfd</span> isn't already in use by libcurl, this function will return an error. 
 <p class="level0">libcurl only keeps one single pointer associated with a socket, so calling this function several times for the same socket will make the last set pointer get used. 
 <p class="level0">The idea here being that this association (socket to private pointer) is something that just about every application that uses this API will need and then libcurl can just as well do it since it already has an internal hash table lookup for this. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">The standard CURLMcode for multi interface error codes. <a name="TYPICAL"></a><h2 class="nroffsh">TYPICAL USAGE</h2>
-<p class="level0">In a typical application you allocate a struct or at least use some kind of semi-dynamic data for each socket that we must wait for action on when using the <a class="emphasis" href="./curl_multi_socket.html">curl_multi_socket(3)</a> approach. 
-<p class="level0">When our socket-callback gets called by libcurl and we get to know about yet another socket to wait for, we can use <a class="emphasis" href="./curl_multi_assign.html">curl_multi_assign(3)</a> to point out the particular data so that when we get updates about this same socket again, we don't have to find the struct associated with this socket by ourselves. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
-<p class="level0">This function was added in libcurl 7.15.5, although not deemed stable yet. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_multi_setopt.html">curl_multi_setopt (3)</a> <a class="manpage" href="./curl_multi_socket.html">  curl_multi_socket (3) </a> <p class="roffit">
+<p class="level0">In a typical application you allocate a struct or at least use some kind of semi-dynamic data for each socket that we must wait for action on when using the <a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> approach. 
+<p class="level0">When our socket-callback gets called by libcurl and we get to know about yet another socket to wait for, we can use <a Class="emphasis" href="./curl_multi_assign.html">curl_multi_assign</a> to point out the particular data so that when we get updates about this same socket again, we don't have to find the struct associated with this socket by ourselves. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">This function was added in libcurl 7.15.5. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./curl_multi_setopt.html">curl_multi_setopt</a>, <a Class="manpage" href="./curl_multi_socket_action.html">curl_multi_socket_action</a>, <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index a1b05a4..4ec8b3e 100644 (file)
Binary files a/docs/libcurl/curl_multi_assign.pdf and b/docs/libcurl/curl_multi_assign.pdf differ
index f6b9a1c..b0a52bf 100644 (file)
@@ -50,11 +50,11 @@ p.roffit {
 <p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
 <p class="level0"><span Class="bold">CURLMcode curl_multi_cleanup( CURLM *multi_handle );</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
 <p class="level0"><span Class="bold">CURLMcode curl_multi_cleanup( CURLM *multi_handle );</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">Cleans up and removes a whole multi stack. It does not free or touch any individual easy handles in any way - they still need to be closed individually, using the usual <a class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup(3)</a> way. The order of cleaning up should be: 
-<p class="level0">1 - <a class="emphasis" href="./curl_multi_remove_handle.html">curl_multi_remove_handle(3)</a> before any easy handles are cleaned up 
-<p class="level0">2 - <a class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup(3)</a> can now be called independently since the easy handle is no longer connected to the multi handle 
-<p class="level0">3 - <a class="emphasis" href="./curl_multi_cleanup.html">curl_multi_cleanup(3)</a> should be called when all easy handles are removed <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Cleans up and removes a whole multi stack. It does not free or touch any individual easy handles in any way - they still need to be closed individually, using the usual <a Class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup</a> way. The order of cleaning up should be: 
+<p class="level0">1 - <a Class="emphasis" href="./curl_multi_remove_handle.html">curl_multi_remove_handle</a> before any easy handles are cleaned up 
+<p class="level0">2 - <a Class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup</a> can now be called independently since the easy handle is no longer connected to the multi handle 
+<p class="level0">3 - <a Class="emphasis" href="./curl_multi_cleanup.html">curl_multi_cleanup</a> should be called when all easy handles are removed <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">CURLMcode type, general libcurl multi interface error code. On success, CURLM_OK is returned. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0">CURLMcode type, general libcurl multi interface error code. On success, CURLM_OK is returned. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_multi_init.html">curl_multi_init (3)</a> <a class="manpage" href="./curl_easy_cleanup.html"> curl_easy_cleanup (3)</a> <a class="manpage" href="./curl_easy_init.html"> curl_easy_init (3)</a> <p class="roffit">
+<p class="level0"><a Class="manpage" href="./curl_multi_init.html">curl_multi_init</a>, <a Class="manpage" href="./curl_easy_cleanup.html">curl_easy_cleanup</a>, <a Class="manpage" href="./curl_easy_init.html">curl_easy_init</a>, <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 0dc13c2..6db40f0 100644 (file)
Binary files a/docs/libcurl/curl_multi_cleanup.pdf and b/docs/libcurl/curl_multi_cleanup.pdf differ
index 3dbdc45..908ef55 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -37,23 +37,35 @@ This function extracts file descriptor information from a given multi_handle.
 libcurl returns its fd_set sets. The application can use these to select() on,
 but be sure to FD_ZERO them before calling this function as
 \fIcurl_multi_fdset(3)\fP only adds its own descriptors, it doesn't zero or
 libcurl returns its fd_set sets. The application can use these to select() on,
 but be sure to FD_ZERO them before calling this function as
 \fIcurl_multi_fdset(3)\fP only adds its own descriptors, it doesn't zero or
-otherwise remove any others. The \fIcurl_multi_perform(3)\fP function should be
-called as soon as one of them is ready to be read from or written to.
+otherwise remove any others. The \fIcurl_multi_perform(3)\fP function should
+be called as soon as one of them is ready to be read from or written to.
+
+If the \fIread_fd_set\fP argument is not a null pointer, it points to an
+object of type fd_set that on returns specifies the file descriptors to be
+checked for being ready to read.
+
+If the \fIwrite_fd_set\fP argument is not a null pointer, it points to an
+object of type fd_set that on return specifies the file descriptors to be
+checked for being ready to write.
+
+If the \fIexc_fd_set\fP argument is not a null pointer, it points to an object
+of type fd_set that on return specifies the file descriptors to be checked for
+error conditions pending.
 
 If no file descriptors are set by libcurl, \fImax_fd\fP will contain -1 when
 
 If no file descriptors are set by libcurl, \fImax_fd\fP will contain -1 when
-this function returns. Otherwise it will contain the higher descriptor number
+this function returns. Otherwise it will contain the highest descriptor number
 libcurl set. When libcurl returns -1 in \fImax_fd\fP, it is because libcurl
 currently does something that isn't possible for your application to monitor
 with a socket and unfortunately you can then not know exactly when the current
 libcurl set. When libcurl returns -1 in \fImax_fd\fP, it is because libcurl
 currently does something that isn't possible for your application to monitor
 with a socket and unfortunately you can then not know exactly when the current
-action is completed using select(). When max_fd returns with -1, you need to
-wait a while and then proceed and call \fIcurl_multi_perform\fP anyway. How
-long to wait? I would suggest 100 milliseconds at least, but you may want to
-test it out in your own particular conditions to find a suitable value.
+action is completed using select(). You then need to wait a while before you
+proceed and call \fIcurl_multi_perform(3)\fP anyway. How long to wait? We
+suggest 100 milliseconds at least, but you may want to test it out in your own
+particular conditions to find a suitable value.
 
 
-When doing select(), you should use \fBcurl_multi_timeout\fP to figure out how
-long to wait for action. Call \fIcurl_multi_perform\fP even if no activity has
-been seen on the fd_sets after the timeout expires as otherwise internal
-retries and timeouts may not work as you'd think and want.
+When doing select(), you should use \fIcurl_multi_timeout(3)\fP to figure out
+how long to wait for action. Call \fIcurl_multi_perform(3)\fP even if no
+activity has been seen on the fd_sets after the timeout expires as otherwise
+internal retries and timeouts may not work as you'd think and want.
 
 If one of the sockets used by libcurl happens to be larger than what can be
 set in an fd_set, which on POSIX systems means that the file descriptor is
 
 If one of the sockets used by libcurl happens to be larger than what can be
 set in an fd_set, which on POSIX systems means that the file descriptor is
@@ -67,4 +79,5 @@ CURLMcode type, general libcurl multi interface error code. See
 \fIlibcurl-errors(3)\fP
 .SH "SEE ALSO"
 .BR curl_multi_cleanup "(3), " curl_multi_init "(3), "
 \fIlibcurl-errors(3)\fP
 .SH "SEE ALSO"
 .BR curl_multi_cleanup "(3), " curl_multi_init "(3), "
-.BR curl_multi_timeout "(3), " curl_multi_perform "(3) "
+.BR curl_multi_wait "(3), "
+.BR curl_multi_timeout "(3), " curl_multi_perform "(3), " select "(2) "
index 2f0e169..64678bd 100644 (file)
@@ -56,11 +56,14 @@ p.roffit {
  &nbsp;                          int *max_fd);
  <p class="level0"></pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
  &nbsp;                          int *max_fd);
  <p class="level0"></pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">This function extracts file descriptor information from a given multi_handle. libcurl returns its fd_set sets. The application can use these to select() on, but be sure to FD_ZERO them before calling this function as <a class="emphasis" href="./curl_multi_fdset.html">curl_multi_fdset(3)</a> only adds its own descriptors, it doesn't zero or otherwise remove any others. The <a class="emphasis" href="./curl_multi_perform.html">curl_multi_perform(3)</a> function should be called as soon as one of them is ready to be read from or written to. 
-<p class="level0">If no file descriptors are set by libcurl, <span Class="emphasis">max_fd</span> will contain -1 when this function returns. Otherwise it will contain the higher descriptor number libcurl set. When libcurl returns -1 in <span Class="emphasis">max_fd</span>, it is because libcurl currently does something that isn't possible for your application to monitor with a socket and unfortunately you can then not know exactly when the current action is completed using select(). When max_fd returns with -1, you need to wait a while and then proceed and call <span Class="emphasis">curl_multi_perform</span> anyway. How long to wait? I would suggest 100 milliseconds at least, but you may want to test it out in your own particular conditions to find a suitable value. 
-<p class="level0">When doing select(), you should use <span Class="bold">curl_multi_timeout</span> to figure out how long to wait for action. Call <span Class="emphasis">curl_multi_perform</span> even if no activity has been seen on the fd_sets after the timeout expires as otherwise internal retries and timeouts may not work as you'd think and want. 
+<p class="level0">This function extracts file descriptor information from a given multi_handle. libcurl returns its fd_set sets. The application can use these to select() on, but be sure to FD_ZERO them before calling this function as <a Class="emphasis" href="./curl_multi_fdset.html">curl_multi_fdset</a> only adds its own descriptors, it doesn't zero or otherwise remove any others. The <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a> function should be called as soon as one of them is ready to be read from or written to. 
+<p class="level0">If the <span Class="emphasis">read_fd_set</span> argument is not a null pointer, it points to an object of type fd_set that on returns specifies the file descriptors to be checked for being ready to read. 
+<p class="level0">If the <span Class="emphasis">write_fd_set</span> argument is not a null pointer, it points to an object of type fd_set that on return specifies the file descriptors to be checked for being ready to write. 
+<p class="level0">If the <span Class="emphasis">exc_fd_set</span> argument is not a null pointer, it points to an object of type fd_set that on return specifies the file descriptors to be checked for error conditions pending. 
+<p class="level0">If no file descriptors are set by libcurl, <span Class="emphasis">max_fd</span> will contain -1 when this function returns. Otherwise it will contain the highest descriptor number libcurl set. When libcurl returns -1 in <span Class="emphasis">max_fd</span>, it is because libcurl currently does something that isn't possible for your application to monitor with a socket and unfortunately you can then not know exactly when the current action is completed using select(). You then need to wait a while before you proceed and call <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a> anyway. How long to wait? We suggest 100 milliseconds at least, but you may want to test it out in your own particular conditions to find a suitable value. 
+<p class="level0">When doing select(), you should use <a Class="emphasis" href="./curl_multi_timeout.html">curl_multi_timeout</a> to figure out how long to wait for action. Call <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a> even if no activity has been seen on the fd_sets after the timeout expires as otherwise internal retries and timeouts may not work as you'd think and want. 
 <p class="level0">If one of the sockets used by libcurl happens to be larger than what can be set in an fd_set, which on POSIX systems means that the file descriptor is larger than FD_SETSIZE, then libcurl will try to not set it. Setting a too large file descriptor in an fd_set implies an out of bounds write which can cause crashes, or worse. The effect of NOT storing it will possibly save you from the crash, but will make your program NOT wait for sockets it should wait for... <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">If one of the sockets used by libcurl happens to be larger than what can be set in an fd_set, which on POSIX systems means that the file descriptor is larger than FD_SETSIZE, then libcurl will try to not set it. Setting a too large file descriptor in an fd_set implies an out of bounds write which can cause crashes, or worse. The effect of NOT storing it will possibly save you from the crash, but will make your program NOT wait for sockets it should wait for... <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
-<p class="level0">CURLMcode type, general libcurl multi interface error code. See <span Class="emphasis">libcurl-errors(3)</span> <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_multi_cleanup.html">curl_multi_cleanup (3)</a> <a class="manpage" href="./curl_multi_init.html">  curl_multi_init (3)</a> <span Class="manpage"> </span> <a class="manpage" href="./curl_multi_timeout.html">curl_multi_timeout (3)</a> <a class="manpage" href="./curl_multi_perform.html">  curl_multi_perform (3) </a> <p class="roffit">
+<p class="level0">CURLMcode type, general libcurl multi interface error code. See <a Class="emphasis" href="./libcurl-errors.html">libcurl-errors</a> <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./curl_multi_cleanup.html">curl_multi_cleanup</a>, <a Class="manpage" href="./curl_multi_init.html">curl_multi_init</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_multi_wait.html">curl_multi_wait</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_multi_timeout.html">curl_multi_timeout</a>, <a Class="manpage" href="./curl_multi_perform.html">curl_multi_perform</a>, <span Class="manpage">  select (2) </span> <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index c9e63f3..9333266 100644 (file)
Binary files a/docs/libcurl/curl_multi_fdset.pdf and b/docs/libcurl/curl_multi_fdset.pdf differ
index 2e91fae..816f55b 100644 (file)
@@ -53,8 +53,8 @@ p.roffit {
 <p class="level0">Ask the multi handle if there are any messages/informationals from the individual transfers. Messages may include informationals such as an error code from the transfer or just the fact that a transfer is completed. More details on these should be written down as well. 
 <p class="level0">Repeated calls to this function will return a new struct each time, until a NULL is returned as a signal that there is no more to get at this point. The integer pointed to with <span Class="emphasis">msgs_in_queue</span> will contain the number of remaining messages after this function was called. 
 <p class="level0">When you fetch a message using this function, it is removed from the internal queue so calling this function again will not return the same message again. It will instead return new messages at each new invoke until the queue is emptied. 
 <p class="level0">Ask the multi handle if there are any messages/informationals from the individual transfers. Messages may include informationals such as an error code from the transfer or just the fact that a transfer is completed. More details on these should be written down as well. 
 <p class="level0">Repeated calls to this function will return a new struct each time, until a NULL is returned as a signal that there is no more to get at this point. The integer pointed to with <span Class="emphasis">msgs_in_queue</span> will contain the number of remaining messages after this function was called. 
 <p class="level0">When you fetch a message using this function, it is removed from the internal queue so calling this function again will not return the same message again. It will instead return new messages at each new invoke until the queue is emptied. 
-<p class="level0"><span Class="bold">WARNING:</span> The data the returned pointer points to will not survive calling <a class="emphasis" href="./curl_multi_cleanup.html">curl_multi_cleanup(3)</a>, <a class="emphasis" href="./curl_multi_remove_handle.html">curl_multi_remove_handle(3)</a> or <a class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup(3)</a>. 
-<p class="level0">The 'CURLMsg' struct is very simple and only contains very basic information. If more involved information is wanted, the particular "easy handle" in present in that struct and can thus be used in subsequent regular <a class="emphasis" href="./curl_easy_getinfo.html">curl_easy_getinfo(3)</a> calls (or similar): 
+<p class="level0"><span Class="bold">WARNING:</span> The data the returned pointer points to will not survive calling <a Class="emphasis" href="./curl_multi_cleanup.html">curl_multi_cleanup</a>, <a Class="emphasis" href="./curl_multi_remove_handle.html">curl_multi_remove_handle</a> or <a Class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup</a>. 
+<p class="level0">The 'CURLMsg' struct is very simple and only contains very basic information. If more involved information is wanted, the particular "easy handle" in present in that struct and can thus be used in subsequent regular <a Class="emphasis" href="./curl_easy_getinfo.html">curl_easy_getinfo</a> calls (or similar): 
 <p class="level0"><pre>
 <p class="level0">&nbsp;struct CURLMsg {
  &nbsp;  CURLMSG msg;       /* what this message means */
 <p class="level0"><pre>
 <p class="level0">&nbsp;struct CURLMsg {
  &nbsp;  CURLMSG msg;       /* what this message means */
@@ -69,6 +69,6 @@ p.roffit {
 <p class="level0">When <span Class="bold">msg</span> is <span Class="emphasis">CURLMSG_DONE</span>, the message identifies a transfer that is done, and then <span Class="bold">result</span> contains the return code for the easy handle that just completed. 
 <p class="level0">At this point, there are no other <span Class="bold">msg</span> types defined. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">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. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0">When <span Class="bold">msg</span> is <span Class="emphasis">CURLMSG_DONE</span>, the message identifies a transfer that is done, and then <span Class="bold">result</span> contains the return code for the easy handle that just completed. 
 <p class="level0">At this point, there are no other <span Class="bold">msg</span> types defined. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">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. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_multi_cleanup.html">curl_multi_cleanup (3)</a> <a class="manpage" href="./curl_multi_init.html">  curl_multi_init (3)</a> <a class="manpage" href="./curl_multi_perform.html">  curl_multi_perform (3)</a> <p class="roffit">
+<p class="level0"><a Class="manpage" href="./curl_multi_cleanup.html">curl_multi_cleanup</a>, <a Class="manpage" href="./curl_multi_init.html">curl_multi_init</a>, <a Class="manpage" href="./curl_multi_perform.html">curl_multi_perform</a>, <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 1156c7c..569c045 100644 (file)
Binary files a/docs/libcurl/curl_multi_info_read.pdf and b/docs/libcurl/curl_multi_info_read.pdf differ
index f1c7086..9fe752d 100644 (file)
@@ -50,9 +50,9 @@ p.roffit {
 <p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
 <p class="level0"><span Class="bold">CURLM *curl_multi_init( );</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
 <p class="level0"><span Class="bold">CURLM *curl_multi_init( );</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">This function returns a CURLM handle to be used as input to all the other multi-functions, sometimes referred to as a multi handle in some places in the documentation. This init call MUST have a corresponding call to <a class="emphasis" href="./curl_multi_cleanup.html">curl_multi_cleanup(3)</a> when the operation is complete. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">This function returns a CURLM handle to be used as input to all the other multi-functions, sometimes referred to as a multi handle in some places in the documentation. This init call MUST have a corresponding call to <a Class="emphasis" href="./curl_multi_cleanup.html">curl_multi_cleanup</a> when the operation is complete. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">If this function returns NULL, something went wrong and you cannot use the other curl functions. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0">If this function returns NULL, something went wrong and you cannot use the other curl functions. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_multi_cleanup.html">curl_multi_cleanup (3)</a> <a class="manpage" href="./curl_global_init.html"> curl_global_init (3)</a> <a class="manpage" href="./curl_easy_init.html"> curl_easy_init (3)</a> 
+<p class="level0"><a Class="manpage" href="./curl_multi_cleanup.html">curl_multi_cleanup</a>, <a Class="manpage" href="./curl_global_init.html">curl_global_init</a>, <a Class="manpage" href="./curl_easy_init.html">curl_easy_init</a>, 
 <p class="level0"><p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
 <p class="level0"><p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 780c16c..68ed873 100644 (file)
Binary files a/docs/libcurl/curl_multi_init.pdf and b/docs/libcurl/curl_multi_init.pdf differ
index 304197b..e0e5b02 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -34,7 +34,7 @@ in an non-blocking fashion.
 When an application has found out there's data available for the multi_handle
 or a timeout has elapsed, the application should call this function to
 read/write whatever there is to read or write right now etc.
 When an application has found out there's data available for the multi_handle
 or a timeout has elapsed, the application should call this function to
 read/write whatever there is to read or write right now etc.
-curl_multi_perform() returns as soon as the reads/writes are done. This
+\fIcurl_multi_perform(3)\fP returns as soon as the reads/writes are done. This
 function does not require that there actually is any data available for
 reading or that data can be written, it can be called just in case. It will
 write the number of handles that still transfer data in the second argument's
 function does not require that there actually is any data available for
 reading or that data can be written, it can be called just in case. It will
 write the number of handles that still transfer data in the second argument's
@@ -53,7 +53,7 @@ there is no longer any transfers in progress.
 CURLMcode type, general libcurl multi interface error code.
 
 Before version 7.20.0: If you receive \fICURLM_CALL_MULTI_PERFORM\fP, this
 CURLMcode type, general libcurl multi interface error code.
 
 Before version 7.20.0: If you receive \fICURLM_CALL_MULTI_PERFORM\fP, this
-basically means that you should call \fIcurl_multi_perform\fP again, before
+basically means that you should call \fIcurl_multi_perform(3)\fP again, before
 you select() on more actions. You don't have to do it immediately, but the
 return code means that libcurl may have more data available to return or that
 there may be more data to send off before it is "satisfied". Do note that
 you select() on more actions. You don't have to do it immediately, but the
 return code means that libcurl may have more data available to return or that
 there may be more data to send off before it is "satisfied". Do note that
@@ -74,5 +74,6 @@ period, then it'll wait for action on the file descriptors using
 \fIcurl_multi_perform(3)\fP gets called.
 .SH "SEE ALSO"
 .BR curl_multi_cleanup "(3), " curl_multi_init "(3), "
 \fIcurl_multi_perform(3)\fP gets called.
 .SH "SEE ALSO"
 .BR curl_multi_cleanup "(3), " curl_multi_init "(3), "
+.BR curl_multi_wait "(3), "
 .BR curl_multi_fdset "(3), " curl_multi_info_read "(3), "
 .BR libcurl-errors "(3)"
 .BR curl_multi_fdset "(3), " curl_multi_info_read "(3), "
 .BR libcurl-errors "(3)"
index 832d928..27c3cbb 100644 (file)
@@ -51,13 +51,13 @@ p.roffit {
 <p class="level0">CURLMcode curl_multi_perform(CURLM *multi_handle, int *running_handles); 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">This function handles transfers on all the added handles that need attention in an non-blocking fashion. 
 <p class="level0">CURLMcode curl_multi_perform(CURLM *multi_handle, int *running_handles); 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">This function handles transfers on all the added handles that need attention in an non-blocking fashion. 
-<p class="level0">When an application has found out there's data available for the multi_handle or a timeout has elapsed, the application should call this function to read/write whatever there is to read or write right now etc. curl_multi_perform() returns as soon as the reads/writes are done. This function does not require that there actually is any data available for reading or that data can be written, it can be called just in case. It will write the number of handles that still transfer data in the second argument's integer-pointer. 
-<p class="level0">If the amount of <span Class="emphasis">running_handles</span> is changed from the previous call (or is less than the amount of easy handles you've added to the multi handle), you know that there is one or more transfers less "running". You can then call <a class="emphasis" href="./curl_multi_info_read.html">curl_multi_info_read(3)</a> to get information about each individual completed transfer, and that returned info includes CURLcode and more. If an added handle fails very quickly, it may never be counted as a running_handle. 
+<p class="level0">When an application has found out there's data available for the multi_handle or a timeout has elapsed, the application should call this function to read/write whatever there is to read or write right now etc. <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a> returns as soon as the reads/writes are done. This function does not require that there actually is any data available for reading or that data can be written, it can be called just in case. It will write the number of handles that still transfer data in the second argument's integer-pointer. 
+<p class="level0">If the amount of <span Class="emphasis">running_handles</span> is changed from the previous call (or is less than the amount of easy handles you've added to the multi handle), you know that there is one or more transfers less "running". You can then call <a Class="emphasis" href="./curl_multi_info_read.html">curl_multi_info_read</a> to get information about each individual completed transfer, and that returned info includes CURLcode and more. If an added handle fails very quickly, it may never be counted as a running_handle. 
 <p class="level0">When <span Class="emphasis">running_handles</span> is set to zero (0) on the return of this function, there is no longer any transfers in progress. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">CURLMcode type, general libcurl multi interface error code. 
 <p class="level0">When <span Class="emphasis">running_handles</span> is set to zero (0) on the return of this function, there is no longer any transfers in progress. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">CURLMcode type, general libcurl multi interface error code. 
-<p class="level0">Before version 7.20.0: If you receive <span Class="emphasis">CURLM_CALL_MULTI_PERFORM</span>, this basically means that you should call <span Class="emphasis">curl_multi_perform</span> again, before you select() on more actions. You don't have to do it immediately, but the return code means that libcurl may have more data available to return or that there may be more data to send off before it is "satisfied". Do note that <a class="emphasis" href="./curl_multi_perform.html">curl_multi_perform(3)</a> will return <span Class="emphasis">CURLM_CALL_MULTI_PERFORM</span> only when it wants to be called again <span Class="bold">immediately</span>. When things are fine and there is nothing immediate it wants done, it'll return <span Class="emphasis">CURLM_OK</span> and you need to wait for "action" and then call this function again. 
-<p class="level0">This function only returns errors etc regarding the whole multi stack. Problems still might have occurred on individual transfers even when this function returns <span Class="emphasis">CURLM_OK</span>. Use <a class="emphasis" href="./curl_multi_info_read.html">curl_multi_info_read(3)</a> to figure out how individual transfers did. <a name="TYPICAL"></a><h2 class="nroffsh">TYPICAL USAGE</h2>
-<p class="level0">Most applications will use <a class="emphasis" href="./curl_multi_fdset.html">curl_multi_fdset(3)</a> to get the multi_handle's file descriptors, and <a class="emphasis" href="./curl_multi_timeout.html">curl_multi_timeout(3)</a> to get a suitable timeout period, then it'll wait for action on the file descriptors using <span Class="bold">select(3)</span>. As soon as one or more file descriptor is ready, <a class="emphasis" href="./curl_multi_perform.html">curl_multi_perform(3)</a> gets called. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_multi_cleanup.html">curl_multi_cleanup (3)</a> <a class="manpage" href="./curl_multi_init.html">  curl_multi_init (3)</a> <span Class="manpage"> </span> <a class="manpage" href="./curl_multi_fdset.html">curl_multi_fdset (3)</a> <a class="manpage" href="./curl_multi_info_read.html">  curl_multi_info_read (3)</a> <span Class="manpage"> </span> <span Class="manpage">libcurl-errors (3)</span> <p class="roffit">
+<p class="level0">Before version 7.20.0: If you receive <span Class="emphasis">CURLM_CALL_MULTI_PERFORM</span>, this basically means that you should call <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a> again, before you select() on more actions. You don't have to do it immediately, but the return code means that libcurl may have more data available to return or that there may be more data to send off before it is "satisfied". Do note that <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a> will return <span Class="emphasis">CURLM_CALL_MULTI_PERFORM</span> only when it wants to be called again <span Class="bold">immediately</span>. When things are fine and there is nothing immediate it wants done, it'll return <span Class="emphasis">CURLM_OK</span> and you need to wait for "action" and then call this function again. 
+<p class="level0">This function only returns errors etc regarding the whole multi stack. Problems still might have occurred on individual transfers even when this function returns <span Class="emphasis">CURLM_OK</span>. Use <a Class="emphasis" href="./curl_multi_info_read.html">curl_multi_info_read</a> to figure out how individual transfers did. <a name="TYPICAL"></a><h2 class="nroffsh">TYPICAL USAGE</h2>
+<p class="level0">Most applications will use <a Class="emphasis" href="./curl_multi_fdset.html">curl_multi_fdset</a> to get the multi_handle's file descriptors, and <a Class="emphasis" href="./curl_multi_timeout.html">curl_multi_timeout</a> to get a suitable timeout period, then it'll wait for action on the file descriptors using <span Class="bold">select(3)</span>. As soon as one or more file descriptor is ready, <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a> gets called. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./curl_multi_cleanup.html">curl_multi_cleanup</a>, <a Class="manpage" href="./curl_multi_init.html">curl_multi_init</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_multi_wait.html">curl_multi_wait</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_multi_fdset.html">curl_multi_fdset</a>, <a Class="manpage" href="./curl_multi_info_read.html">curl_multi_info_read</a>, <span Class="manpage"> </span> <a Class="manpage" href="./libcurl-errors.html">libcurl-errors</a>, <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 6257e39..eeb7ea3 100644 (file)
Binary files a/docs/libcurl/curl_multi_perform.pdf and b/docs/libcurl/curl_multi_perform.pdf differ
index ad6d2ba..1c2165b 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -28,16 +28,17 @@ curl_multi_remove_handle - remove an easy handle from a multi session
 CURLMcode curl_multi_remove_handle(CURLM *multi_handle, CURL *easy_handle);
 .ad
 .SH DESCRIPTION
 CURLMcode curl_multi_remove_handle(CURLM *multi_handle, CURL *easy_handle);
 .ad
 .SH DESCRIPTION
-Removes a given easy_handle from the multi_handle. This will make the
-specified easy handle be removed from this multi handle's control.
+Removes a given \fIeasy_handle\fI from the \fImulti_handle\fI. This will make
+the specified easy handle be removed from this multi handle's control.
 
 When the easy handle has been removed from a multi stack, it is again
 
 When the easy handle has been removed from a multi stack, it is again
-perfectly legal to invoke \fIcurl_easy_perform()\fP on this easy handle.
+perfectly legal to invoke \fIcurl_easy_perform(3)\fP on this easy handle.
 
 
-Removing an easy handle while being used, will effectively halt the transfer
-in progress involving that easy handle. All other easy handles and transfers
-will remain unaffected.
+Removing an easy handle while being used is perfectly legal and will
+effectively halt the transfer in progress involving that easy handle. All
+other easy handles and transfers will remain unaffected.
 .SH RETURN VALUE
 CURLMcode type, general libcurl multi interface error code.
 .SH "SEE ALSO"
 .SH RETURN VALUE
 CURLMcode type, general libcurl multi interface error code.
 .SH "SEE ALSO"
-.BR curl_multi_cleanup "(3)," curl_multi_init "(3)"
+.BR curl_multi_cleanup "(3)," curl_multi_init "(3), "
+.BR curl_multi_add_handle "(3) "
index fb4c499..aff0d60 100644 (file)
@@ -50,10 +50,10 @@ p.roffit {
 <p class="level0">#include &lt;curl/curl.h&gt; 
 <p class="level0">CURLMcode curl_multi_remove_handle(CURLM *multi_handle, CURL *easy_handle); 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">#include &lt;curl/curl.h&gt; 
 <p class="level0">CURLMcode curl_multi_remove_handle(CURLM *multi_handle, CURL *easy_handle); 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">Removes a given easy_handle from the multi_handle. This will make the specified easy handle be removed from this multi handle's control. 
-<p class="level0">When the easy handle has been removed from a multi stack, it is again perfectly legal to invoke <span Class="emphasis">curl_easy_perform()</span> on this easy handle. 
-<p class="level0">Removing an easy handle while being used, will effectively halt the transfer in progress involving that easy handle. All other easy handles and transfers will remain unaffected. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Removes a given <span class="emphasis">easy_handle<span class="emphasis"> from the <span class="emphasis">multi_handle<span class="emphasis">. This will make the specified easy handle be removed from this multi handle's control. 
+<p class="level0">When the easy handle has been removed from a multi stack, it is again perfectly legal to invoke <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> on this easy handle. 
+<p class="level0">Removing an easy handle while being used is perfectly legal and will effectively halt the transfer in progress involving that easy handle. All other easy handles and transfers will remain unaffected. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">CURLMcode type, general libcurl multi interface error code. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0">CURLMcode type, general libcurl multi interface error code. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_multi_cleanup.html">curl_multi_cleanup (3)</a> <a class="manpage" href="./curl_multi_init.html"> curl_multi_init (3)</a> <p class="roffit">
+<p class="level0"><a Class="manpage" href="./curl_multi_cleanup.html">curl_multi_cleanup</a>, <a Class="manpage" href="./curl_multi_init.html">curl_multi_init</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_multi_add_handle.html">curl_multi_add_handle</a>, <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 6d84a5b..8aeff5f 100644 (file)
Binary files a/docs/libcurl/curl_multi_remove_handle.pdf and b/docs/libcurl/curl_multi_remove_handle.pdf differ
index 99984cf..4cd4075 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_multi_setopt 3 "10 Oct 2006" "libcurl 7.16.0" "libcurl Manual"
+.TH curl_multi_setopt 3 "4 Nov 2014" "libcurl 7.39.0" "libcurl Manual"
 .SH NAME
 curl_multi_setopt \- set options for a curl multi handle
 .SH SYNOPSIS
 .SH NAME
 curl_multi_setopt \- set options for a curl multi handle
 .SH SYNOPSIS
@@ -27,180 +27,40 @@ curl_multi_setopt \- set options for a curl multi handle
 
 CURLMcode curl_multi_setopt(CURLM * multi_handle, CURLMoption option, param);
 .SH DESCRIPTION
 
 CURLMcode curl_multi_setopt(CURLM * multi_handle, CURLMoption option, param);
 .SH DESCRIPTION
-curl_multi_setopt() is used to tell a libcurl multi handle how to behave. By
-using the appropriate options to \fIcurl_multi_setopt(3)\fP, you can change
-libcurl's behaviour when using that multi handle.  All options are set with
-the \fIoption\fP followed by the parameter \fIparam\fP. That parameter can be
-a \fBlong\fP, a \fBfunction pointer\fP, an \fBobject pointer\fP or a
-\fBcurl_off_t\fP type, 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.
+\fIcurl_multi_setopt(3)\fP is used to tell a libcurl multi handle how to
+behave. By using the appropriate options to \fIcurl_multi_setopt(3)\fP, you
+can change libcurl's behaviour when using that multi handle.  All options are
+set with the \fIoption\fP followed by the parameter \fIparam\fP. That
+parameter can be a \fBlong\fP, a \fBfunction pointer\fP, an \fBobject
+pointer\fP or a \fBcurl_off_t\fP type, 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.
 
 .SH OPTIONS
 .IP CURLMOPT_SOCKETFUNCTION
 
 .SH OPTIONS
 .IP CURLMOPT_SOCKETFUNCTION
-Pass a pointer to a function matching the \fBcurl_socket_callback\fP
-prototype. The \fIcurl_multi_socket_action(3)\fP function informs the
-application about updates in the socket (file descriptor) status by doing
-none, one, or multiple calls to the curl_socket_callback given in the
-\fBparam\fP argument. They update the status with changes since the previous
-time a \fIcurl_multi_socket(3)\fP function was called. If the given callback
-pointer is NULL, no callback will be called. Set the callback's \fBuserp\fP
-argument with \fICURLMOPT_SOCKETDATA\fP.  See \fIcurl_multi_socket(3)\fP for
-more callback details.
+See \fICURLMOPT_SOCKETFUNCTION(3)\fP
 .IP CURLMOPT_SOCKETDATA
 .IP CURLMOPT_SOCKETDATA
-Pass a pointer to whatever you want passed to the \fBcurl_socket_callback\fP's
-fourth argument, the userp pointer. This is not used by libcurl but only
-passed-thru as-is. Set the callback pointer with
-\fICURLMOPT_SOCKETFUNCTION\fP.
+See \fICURLMOPT_SOCKETDATA(3)\fP
 .IP CURLMOPT_PIPELINING
 .IP CURLMOPT_PIPELINING
-Pass a long set to 1 to enable or 0 to disable. Enabling pipelining on a multi
-handle will make it attempt to perform HTTP Pipelining as far as possible for
-transfers using this handle. This means that if you add a second request that
-can use an already existing connection, the second request will be \&"piped"
-on the same connection rather than being executed in parallel. (Added in
-7.16.0)
+See \fICURLMOPT_PIPELINING(3)\fP
 .IP CURLMOPT_TIMERFUNCTION
 .IP CURLMOPT_TIMERFUNCTION
-Pass a pointer to a function matching the \fBcurl_multi_timer_callback\fP
-prototype: int curl_multi_timer_callback(CURLM *multi /* multi handle */,
-long timeout_ms /* timeout in milliseconds */, void *userp /* TIMERDATA */).
-This function will then be called when the timeout value
-changes. The timeout value is at what latest time the application should call
-one of the \&"performing" functions of the multi interface
-(\fIcurl_multi_socket_action(3)\fP and \fIcurl_multi_perform(3)\fP) - to allow
-libcurl to keep timeouts and retries etc to work. A timeout value of -1 means
-that there is no timeout at all, and 0 means that the timeout is already
-reached. Libcurl attempts to limit calling this only when the fixed future
-timeout time actually changes. See also \fICURLMOPT_TIMERDATA\fP. The callback
-should return 0 on success, and -1 on error. This
-callback can be used instead of, or in addition to,
-\fIcurl_multi_timeout(3)\fP. (Added in 7.16.0)
+See \fICURLMOPT_TIMERFUNCTION(3)\fP
 .IP CURLMOPT_TIMERDATA
 .IP CURLMOPT_TIMERDATA
-Pass a pointer to whatever you want passed to the
-\fBcurl_multi_timer_callback\fP's third argument, the userp pointer.  This is
-not used by libcurl but only passed-thru as-is. Set the callback pointer with
-\fICURLMOPT_TIMERFUNCTION\fP. (Added in 7.16.0)
-.IP CURLMOPT_MAXCONNECTS
-Pass a long. The set number will be used as the maximum amount of
-simultaneously open connections that libcurl may cache. Default is 10, and
-libcurl will enlarge the size for each added easy handle to make it fit 4
-times the number of added easy handles.
-
-By setting this option, you can prevent the cache size from growing beyond the
-limit set by you.
-
-When the cache is full, curl closes the oldest one in the cache to prevent the
-number of open connections from increasing.
-
-This option is for the multi handle's use only, when using the easy interface
-you should instead use the \fICURLOPT_MAXCONNECTS\fP option.
-
-(Added in 7.16.3)
+See \fICURLMOPT_TIMERDATA(3)\fP
 .IP CURLMOPT_MAX_HOST_CONNECTIONS
 .IP CURLMOPT_MAX_HOST_CONNECTIONS
-Pass a long. The set number will be used as the maximum amount of
-simultaneously open connections to a single host. For each new session to
-a host, libcurl will open a new connection up to the limit set by
-CURLMOPT_MAX_HOST_CONNECTIONS. When the limit is reached, the sessions will
-be pending until there are available connections. If CURLMOPT_PIPELINING is
-1, libcurl will try to pipeline if the host is capable of it.
-
-The default value is 0, which means that there is no limit.
-However, for backwards compatibility, setting it to 0 when CURLMOPT_PIPELINING
-is 1 will not be treated as unlimited. Instead it will open only 1 connection
-and try to pipeline on it.
-
-(Added in 7.30.0)
+See \fICURLMOPT_MAX_HOST_CONNECTIONS(3)\fP
 .IP CURLMOPT_MAX_PIPELINE_LENGTH
 .IP CURLMOPT_MAX_PIPELINE_LENGTH
-Pass a long. The set number will be used as the maximum amount of requests
-in a pipelined connection. When this limit is reached, libcurl will use another
-connection to the same host (see CURLMOPT_MAX_HOST_CONNECTIONS), or queue the
-requests until one of the pipelines to the host is ready to accept a request.
-Thus, the total number of requests in-flight is CURLMOPT_MAX_HOST_CONNECTIONS *
-CURLMOPT_MAX_PIPELINE_LENGTH.
-The default value is 5.
-
-(Added in 7.30.0)
+See \fICURLMOPT_MAX_PIPELINE_LENGTH(3)\fP
 .IP CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE
 .IP CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE
-Pass a long. If a pipelined connection is currently processing a request
-with a Content-Length larger than CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE, that
-connection will not be considered for additional requests, even if it is
-shorter than CURLMOPT_MAX_PIPELINE_LENGTH.
-The default value is 0, which means that the penalization is inactive.
-
-(Added in 7.30.0)
+See \fICURLMOPT_CONTENT_LENGTH_PENALTY_SIZE(3)\fP
 .IP CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE
 .IP CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE
-Pass a long. If a pipelined connection is currently processing a
-chunked (Transfer-encoding: chunked) request with a current chunk length
-larger than CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE, that connection will not be
-considered for additional requests, even if it is shorter than
-CURLMOPT_MAX_PIPELINE_LENGTH.
-The default value is 0, which means that the penalization is inactive.
-
-(Added in 7.30.0)
+See \fICURLMOPT_CHUNK_LENGTH_PENALTY_SIZE(3)\fP
 .IP CURLMOPT_PIPELINING_SITE_BL
 .IP CURLMOPT_PIPELINING_SITE_BL
-Pass an array of char *, ending with NULL. This is a list of sites that are
-blacklisted from pipelining, i.e sites that are known to not support HTTP
-pipelining. The array is copied by libcurl.
-
-The default value is NULL, which means that there is no blacklist.
-
-Pass a NULL pointer to clear the blacklist.
-
-Example:
-
-.nf
-  site_blacklist[] =
-  {
-    "www.haxx.se",
-    "www.example.com:1234",
-    NULL
-  };
-
-  curl_multi_setopt(m, CURLMOPT_PIPELINE_SITE_BL, site_blacklist);
-.fi
-
-(Added in 7.30.0)
+See \fICURLMOPT_PIPELINING_SITE_BL(3)\fP
 .IP CURLMOPT_PIPELINING_SERVER_BL
 .IP CURLMOPT_PIPELINING_SERVER_BL
-Pass an array of char *, ending with NULL. This is a list of server types
-prefixes (in the Server: HTTP header) that are blacklisted from pipelining,
-i.e server types that are known to not support HTTP pipelining. The array is
-copied by libcurl.
-
-Note that the comparison matches if the Server: header begins with the string
-in the blacklist, i.e "Server: Ninja 1.2.3" and "Server: Ninja 1.4.0" can 
-both be blacklisted by having "Ninja" in the backlist.
-
-The default value is NULL, which means that there is no blacklist.
-
-Pass a NULL pointer to clear the blacklist.
-
-Example:
-
-.nf
-  server_blacklist[] =
-  {
-    "Microsoft-IIS/6.0",
-    "nginx/0.8.54",
-    NULL
-  };
-
-  curl_multi_setopt(m, CURLMOPT_PIPELINE_SERVER_BL, server_blacklist);
-.fi
-
-(Added in 7.30.0)
+See \fICURLMOPT_PIPELINING_SERVER_BL(3)\fP
 .IP CURLMOPT_MAX_TOTAL_CONNECTIONS
 .IP CURLMOPT_MAX_TOTAL_CONNECTIONS
-Pass a long. The set number will be used as the maximum amount of
-simultaneously open connections in total. For each new session, libcurl
-will open a new connection up to the limit set by
-CURLMOPT_MAX_TOTAL_CONNECTIONS. When the limit is reached, the sessions will
-be pending until there are available connections. If CURLMOPT_PIPELINING is
-1, libcurl will try to pipeline if the host is capable of it.
-
-The default value is 0, which means that there is no limit.
-However, for backwards compatibility, setting it to 0 when CURLMOPT_PIPELINING
-is 1 will not be treated as unlimited. Instead it will open only 1 connection
-and try to pipeline on it.
-
-(Added in 7.30.0)
+See \fICURLMOPT_MAX_TOTAL_CONNECTIONS(3)\fP
 .SH RETURNS
 The standard CURLMcode for multi interface error codes. Note that it returns a
 CURLM_UNKNOWN_OPTION if you try setting an option that this version of libcurl
 .SH RETURNS
 The standard CURLMcode for multi interface error codes. Note that it returns a
 CURLM_UNKNOWN_OPTION if you try setting an option that this version of libcurl
index b95192b..55d4208 100644 (file)
@@ -49,79 +49,35 @@ p.roffit {
 <p class="level0">curl_multi_setopt - set options for a curl multi handle <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
 <p class="level0">#include &lt;curl/curl.h&gt; 
 <p class="level0">CURLMcode curl_multi_setopt(CURLM * multi_handle, CURLMoption option, param); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">curl_multi_setopt - set options for a curl multi handle <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
 <p class="level0">#include &lt;curl/curl.h&gt; 
 <p class="level0">CURLMcode curl_multi_setopt(CURLM * multi_handle, CURLMoption option, param); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">curl_multi_setopt() is used to tell a libcurl multi handle how to behave. By using the appropriate options to <a class="emphasis" href="./curl_multi_setopt.html">curl_multi_setopt(3)</a>, you can change libcurl's behaviour when using that multi handle.  All options are set with the <span Class="emphasis">option</span> followed by the parameter <span Class="emphasis">param</span>. That parameter can be a <span Class="bold">long</span>, a <span Class="bold">function pointer</span>, an <span Class="bold">object pointer</span> or a <span Class="bold">curl_off_t</span> type, 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. 
+<p class="level0"><a Class="emphasis" href="./curl_multi_setopt.html">curl_multi_setopt</a> is used to tell a libcurl multi handle how to behave. By using the appropriate options to <a Class="emphasis" href="./curl_multi_setopt.html">curl_multi_setopt</a>, you can change libcurl's behaviour when using that multi handle.  All options are set with the <span Class="emphasis">option</span> followed by the parameter <span Class="emphasis">param</span>. That parameter can be a <span Class="bold">long</span>, a <span Class="bold">function pointer</span>, an <span class="bold">object pointer</span> or a <span Class="bold">curl_off_t</span> type, 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. 
 <p class="level0"><a name="OPTIONS"></a><h2 class="nroffsh">OPTIONS</h2>
 <p class="level0">
 <p class="level0"><a name="CURLMOPTSOCKETFUNCTION"></a><span class="nroffip">CURLMOPT_SOCKETFUNCTION</span> 
 <p class="level0"><a name="OPTIONS"></a><h2 class="nroffsh">OPTIONS</h2>
 <p class="level0">
 <p class="level0"><a name="CURLMOPTSOCKETFUNCTION"></a><span class="nroffip">CURLMOPT_SOCKETFUNCTION</span> 
-<p class="level1">Pass a pointer to a function matching the <span Class="bold">curl_socket_callback</span> prototype. The <a class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action(3)</a> function informs the application about updates in the socket (file descriptor) status by doing none, one, or multiple calls to the curl_socket_callback given in the <span Class="bold">param</span> argument. They update the status with changes since the previous time a <a class="emphasis" href="./curl_multi_socket.html">curl_multi_socket(3)</a> function was called. If the given callback pointer is NULL, no callback will be called. Set the callback's <span Class="bold">userp</span> argument with <a class="emphasis" href="#CURLMOPTSOCKETDATA">CURLMOPT_SOCKETDATA</a>.  See <a class="emphasis" href="./curl_multi_socket.html">curl_multi_socket(3)</a> for more callback details. 
+<p class="level1">See <span Class="emphasis">CURLMOPT_SOCKETFUNCTION(3)</span> 
 <p class="level0"><a name="CURLMOPTSOCKETDATA"></a><span class="nroffip">CURLMOPT_SOCKETDATA</span> 
 <p class="level0"><a name="CURLMOPTSOCKETDATA"></a><span class="nroffip">CURLMOPT_SOCKETDATA</span> 
-<p class="level1">Pass a pointer to whatever you want passed to the <span Class="bold">curl_socket_callback</span>'s fourth argument, the userp pointer. This is not used by libcurl but only passed-thru as-is. Set the callback pointer with <a class="emphasis" href="#CURLMOPTSOCKETFUNCTION">CURLMOPT_SOCKETFUNCTION</a>. 
+<p class="level1">See <span Class="emphasis">CURLMOPT_SOCKETDATA(3)</span> 
 <p class="level0"><a name="CURLMOPTPIPELINING"></a><span class="nroffip">CURLMOPT_PIPELINING</span> 
 <p class="level0"><a name="CURLMOPTPIPELINING"></a><span class="nroffip">CURLMOPT_PIPELINING</span> 
-<p class="level1">Pass a long set to 1 to enable or 0 to disable. Enabling pipelining on a multi handle will make it attempt to perform HTTP Pipelining as far as possible for transfers using this handle. This means that if you add a second request that can use an already existing connection, the second request will be "piped" on the same connection rather than being executed in parallel. (Added in 7.16.0) 
+<p class="level1">See <span Class="emphasis">CURLMOPT_PIPELINING(3)</span> 
 <p class="level0"><a name="CURLMOPTTIMERFUNCTION"></a><span class="nroffip">CURLMOPT_TIMERFUNCTION</span> 
 <p class="level0"><a name="CURLMOPTTIMERFUNCTION"></a><span class="nroffip">CURLMOPT_TIMERFUNCTION</span> 
-<p class="level1">Pass a pointer to a function matching the <span Class="bold">curl_multi_timer_callback</span> prototype: int curl_multi_timer_callback(CURLM *multi /* multi handle */, long timeout_ms /* timeout in milliseconds */, void *userp /* TIMERDATA */). This function will then be called when the timeout value changes. The timeout value is at what latest time the application should call one of the "performing" functions of the multi interface (<a class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action(3)</a> and <a class="emphasis" href="./curl_multi_perform.html">curl_multi_perform(3)</a>) - to allow libcurl to keep timeouts and retries etc to work. A timeout value of -1 means that there is no timeout at all, and 0 means that the timeout is already reached. Libcurl attempts to limit calling this only when the fixed future timeout time actually changes. See also <a class="emphasis" href="#CURLMOPTTIMERDATA">CURLMOPT_TIMERDATA</a>. The callback should return 0 on success, and -1 on error. This callback can be used instead of, or in addition to, <a class="emphasis" href="./curl_multi_timeout.html">curl_multi_timeout(3)</a>. (Added in 7.16.0) 
+<p class="level1">See <span Class="emphasis">CURLMOPT_TIMERFUNCTION(3)</span> 
 <p class="level0"><a name="CURLMOPTTIMERDATA"></a><span class="nroffip">CURLMOPT_TIMERDATA</span> 
 <p class="level0"><a name="CURLMOPTTIMERDATA"></a><span class="nroffip">CURLMOPT_TIMERDATA</span> 
-<p class="level1">Pass a pointer to whatever you want passed to the <span Class="bold">curl_multi_timer_callback</span>'s third argument, the userp pointer.  This is not used by libcurl but only passed-thru as-is. Set the callback pointer with <a class="emphasis" href="#CURLMOPTTIMERFUNCTION">CURLMOPT_TIMERFUNCTION</a>. (Added in 7.16.0) 
-<p class="level0"><a name="CURLMOPTMAXCONNECTS"></a><span class="nroffip">CURLMOPT_MAXCONNECTS</span> 
-<p class="level1">Pass a long. The set number will be used as the maximum amount of simultaneously open connections that libcurl may cache. Default is 10, and libcurl will enlarge the size for each added easy handle to make it fit 4 times the number of added easy handles. 
-<p class="level1">By setting this option, you can prevent the cache size from growing beyond the limit set by you. 
-<p class="level1">When the cache is full, curl closes the oldest one in the cache to prevent the number of open connections from increasing. 
-<p class="level1">This option is for the multi handle's use only, when using the easy interface you should instead use the <span Class="emphasis">CURLOPT_MAXCONNECTS</span> option. 
-<p class="level1">(Added in 7.16.3) 
+<p class="level1">See <span Class="emphasis">CURLMOPT_TIMERDATA(3)</span> 
 <p class="level0"><a name="CURLMOPTMAXHOSTCONNECTIONS"></a><span class="nroffip">CURLMOPT_MAX_HOST_CONNECTIONS</span> 
 <p class="level0"><a name="CURLMOPTMAXHOSTCONNECTIONS"></a><span class="nroffip">CURLMOPT_MAX_HOST_CONNECTIONS</span> 
-<p class="level1">Pass a long. The set number will be used as the maximum amount of simultaneously open connections to a single host. For each new session to a host, libcurl will open a new connection up to the limit set by CURLMOPT_MAX_HOST_CONNECTIONS. When the limit is reached, the sessions will be pending until there are available connections. If CURLMOPT_PIPELINING is 1, libcurl will try to pipeline if the host is capable of it. 
-<p class="level1">The default value is 0, which means that there is no limit. However, for backwards compatibility, setting it to 0 when CURLMOPT_PIPELINING is 1 will not be treated as unlimited. Instead it will open only 1 connection and try to pipeline on it. 
-<p class="level1">(Added in 7.30.0) 
+<p class="level1">See <span Class="emphasis">CURLMOPT_MAX_HOST_CONNECTIONS(3)</span> 
 <p class="level0"><a name="CURLMOPTMAXPIPELINELENGTH"></a><span class="nroffip">CURLMOPT_MAX_PIPELINE_LENGTH</span> 
 <p class="level0"><a name="CURLMOPTMAXPIPELINELENGTH"></a><span class="nroffip">CURLMOPT_MAX_PIPELINE_LENGTH</span> 
-<p class="level1">Pass a long. The set number will be used as the maximum amount of requests in a pipelined connection. When this limit is reached, libcurl will use another connection to the same host (see CURLMOPT_MAX_HOST_CONNECTIONS), or queue the requests until one of the pipelines to the host is ready to accept a request. Thus, the total number of requests in-flight is CURLMOPT_MAX_HOST_CONNECTIONS * CURLMOPT_MAX_PIPELINE_LENGTH. The default value is 5. 
-<p class="level1">(Added in 7.30.0) 
+<p class="level1">See <span Class="emphasis">CURLMOPT_MAX_PIPELINE_LENGTH(3)</span> 
 <p class="level0"><a name="CURLMOPTCONTENTLENGTHPENALTYSIZE"></a><span class="nroffip">CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE</span> 
 <p class="level0"><a name="CURLMOPTCONTENTLENGTHPENALTYSIZE"></a><span class="nroffip">CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE</span> 
-<p class="level1">Pass a long. If a pipelined connection is currently processing a request with a Content-Length larger than CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE, that connection will not be considered for additional requests, even if it is shorter than CURLMOPT_MAX_PIPELINE_LENGTH. The default value is 0, which means that the penalization is inactive. 
-<p class="level1">(Added in 7.30.0) 
+<p class="level1">See <span Class="emphasis">CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE(3)</span> 
 <p class="level0"><a name="CURLMOPTCHUNKLENGTHPENALTYSIZE"></a><span class="nroffip">CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE</span> 
 <p class="level0"><a name="CURLMOPTCHUNKLENGTHPENALTYSIZE"></a><span class="nroffip">CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE</span> 
-<p class="level1">Pass a long. If a pipelined connection is currently processing a chunked (Transfer-encoding: chunked) request with a current chunk length larger than CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE, that connection will not be considered for additional requests, even if it is shorter than CURLMOPT_MAX_PIPELINE_LENGTH. The default value is 0, which means that the penalization is inactive. 
-<p class="level1">(Added in 7.30.0) 
+<p class="level1">See <span Class="emphasis">CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE(3)</span> 
 <p class="level0"><a name="CURLMOPTPIPELININGSITEBL"></a><span class="nroffip">CURLMOPT_PIPELINING_SITE_BL</span> 
 <p class="level0"><a name="CURLMOPTPIPELININGSITEBL"></a><span class="nroffip">CURLMOPT_PIPELINING_SITE_BL</span> 
-<p class="level1">Pass an array of char *, ending with NULL. This is a list of sites that are blacklisted from pipelining, i.e sites that are known to not support HTTP pipelining. The array is copied by libcurl. 
-<p class="level1">The default value is NULL, which means that there is no blacklist. 
-<p class="level1">Pass a NULL pointer to clear the blacklist. 
-<p class="level1">Example: 
-<p class="level1"><pre>
-<p class="level1">&nbsp; site_blacklist[] =
- &nbsp; {
- &nbsp;   "www.haxx.se",
- &nbsp;   "www.example.com:1234",
- &nbsp;   NULL
- &nbsp; };
- <p class="level1">&nbsp; curl_multi_setopt(m, CURLMOPT_PIPELINE_SITE_BL, site_blacklist);
- </pre>
-
-<p class="level1">
-<p class="level1">(Added in 7.30.0) 
+<p class="level1">See <span Class="emphasis">CURLMOPT_PIPELINING_SITE_BL(3)</span> 
 <p class="level0"><a name="CURLMOPTPIPELININGSERVERBL"></a><span class="nroffip">CURLMOPT_PIPELINING_SERVER_BL</span> 
 <p class="level0"><a name="CURLMOPTPIPELININGSERVERBL"></a><span class="nroffip">CURLMOPT_PIPELINING_SERVER_BL</span> 
-<p class="level1">Pass an array of char *, ending with NULL. This is a list of server types prefixes (in the Server: HTTP header) that are blacklisted from pipelining, i.e server types that are known to not support HTTP pipelining. The array is copied by libcurl. 
-<p class="level1">Note that the comparison matches if the Server: header begins with the string in the blacklist, i.e "Server: Ninja 1.2.3" and "Server: Ninja 1.4.0" can  both be blacklisted by having "Ninja" in the backlist. 
-<p class="level1">The default value is NULL, which means that there is no blacklist. 
-<p class="level1">Pass a NULL pointer to clear the blacklist. 
-<p class="level1">Example: 
-<p class="level1"><pre>
-<p class="level1">&nbsp; server_blacklist[] =
- &nbsp; {
- &nbsp;   "Microsoft-IIS/6.0",
- &nbsp;   "nginx/0.8.54",
- &nbsp;   NULL
- &nbsp; };
- <p class="level1">&nbsp; curl_multi_setopt(m, CURLMOPT_PIPELINE_SERVER_BL, server_blacklist);
- </pre>
-
-<p class="level1">
-<p class="level1">(Added in 7.30.0) 
+<p class="level1">See <span Class="emphasis">CURLMOPT_PIPELINING_SERVER_BL(3)</span> 
 <p class="level0"><a name="CURLMOPTMAXTOTALCONNECTIONS"></a><span class="nroffip">CURLMOPT_MAX_TOTAL_CONNECTIONS</span> 
 <p class="level0"><a name="CURLMOPTMAXTOTALCONNECTIONS"></a><span class="nroffip">CURLMOPT_MAX_TOTAL_CONNECTIONS</span> 
-<p class="level1">Pass a long. The set number will be used as the maximum amount of simultaneously open connections in total. For each new session, libcurl will open a new connection up to the limit set by CURLMOPT_MAX_TOTAL_CONNECTIONS. When the limit is reached, the sessions will be pending until there are available connections. If CURLMOPT_PIPELINING is 1, libcurl will try to pipeline if the host is capable of it. 
-<p class="level1">The default value is 0, which means that there is no limit. However, for backwards compatibility, setting it to 0 when CURLMOPT_PIPELINING is 1 will not be treated as unlimited. Instead it will open only 1 connection and try to pipeline on it. 
-<p class="level1">(Added in 7.30.0) <a name="RETURNS"></a><h2 class="nroffsh">RETURNS</h2>
+<p class="level1">See <span Class="emphasis">CURLMOPT_MAX_TOTAL_CONNECTIONS(3)</span> <a name="RETURNS"></a><h2 class="nroffsh">RETURNS</h2>
 <p class="level0">The standard CURLMcode for multi interface error codes. Note that it returns a CURLM_UNKNOWN_OPTION if you try setting an option that this version of libcurl doesn't know of. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">This function was added in libcurl 7.15.4. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0">The standard CURLMcode for multi interface error codes. Note that it returns a CURLM_UNKNOWN_OPTION if you try setting an option that this version of libcurl doesn't know of. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">This function was added in libcurl 7.15.4. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_multi_cleanup.html">curl_multi_cleanup (3)</a> <a class="manpage" href="./curl_multi_init.html">  curl_multi_init (3)</a> <span Class="manpage"> </span> <a class="manpage" href="./curl_multi_socket.html">curl_multi_socket (3)</a> <a class="manpage" href="./curl_multi_info_read.html">  curl_multi_info_read (3)</a> <p class="roffit">
+<p class="level0"><a Class="manpage" href="./curl_multi_cleanup.html">curl_multi_cleanup</a>, <a Class="manpage" href="./curl_multi_init.html">curl_multi_init</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_multi_socket.html">curl_multi_socket</a>, <a Class="manpage" href="./curl_multi_info_read.html">curl_multi_info_read</a>, <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 37e3279..3f45250 100644 (file)
Binary files a/docs/libcurl/curl_multi_setopt.pdf and b/docs/libcurl/curl_multi_setopt.pdf differ
index 2e92236..3cc80c7 100644 (file)
@@ -56,12 +56,12 @@ p.roffit {
  </pre>
 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
  </pre>
 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">These functions are deprecated. Do not use! See <a class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action(3)</a> instead! 
-<p class="level0">At return, the integer <span Class="bold">running_handles</span> points to will contain the number of still running easy handles within the multi handle. When this number reaches zero, all transfers are complete/done. Note that when you call <a class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action(3)</a> on a specific socket and the counter decreases by one, it DOES NOT necessarily mean that this exact socket/transfer is the one that completed. Use <a class="emphasis" href="./curl_multi_info_read.html">curl_multi_info_read(3)</a> to figure out which easy handle that completed. 
-<p class="level0">The <a class="bold" href="./curl_multi_socket_action.html">curl_multi_socket_action(3)</a> functions inform the application about updates in the socket (file descriptor) status by doing none, one, or multiple calls to the socket callback function set with the CURLMOPT_SOCKETFUNCTION option to <a class="emphasis" href="./curl_multi_setopt.html">curl_multi_setopt(3)</a>. They update the status with changes since the previous time the callback was called. 
-<p class="level0">Get the timeout time by setting the <span Class="emphasis">CURLMOPT_TIMERFUNCTION</span> option with <a class="emphasis" href="./curl_multi_setopt.html">curl_multi_setopt(3)</a>. Your application will then get called with information on how long to wait for socket actions at most before doing the timeout action: call the <a class="bold" href="./curl_multi_socket_action.html">curl_multi_socket_action(3)</a> function with the <span Class="bold">sockfd</span> argument set to CURL_SOCKET_TIMEOUT. You can also use the <a class="emphasis" href="./curl_multi_timeout.html">curl_multi_timeout(3)</a> function to poll the value at any given time, but for an event-based system using the callback is far better than relying on polling the timeout value. 
-<p class="level0">Usage of <a class="emphasis" href="./curl_multi_socket.html">curl_multi_socket(3)</a> is deprecated, whereas the function is equivalent to <a class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action(3)</a> with <span Class="bold">ev_bitmask</span> set to 0. 
-<p class="level0">Force libcurl to (re-)check all its internal sockets and transfers instead of just a single one by calling <a class="bold" href="./curl_multi_socket_all.html">curl_multi_socket_all(3)</a>. Note that there should not be any reason to use this function! <a name="CALLBACK"></a><h2 class="nroffsh">CALLBACK DETAILS</h2>
+<p class="level0">These functions are deprecated. Do not use! See <a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> instead! 
+<p class="level0">At return, the integer <span Class="bold">running_handles</span> points to will contain the number of still running easy handles within the multi handle. When this number reaches zero, all transfers are complete/done. Note that when you call <a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> on a specific socket and the counter decreases by one, it DOES NOT necessarily mean that this exact socket/transfer is the one that completed. Use <a Class="emphasis" href="./curl_multi_info_read.html">curl_multi_info_read</a> to figure out which easy handle that completed. 
+<p class="level0">The <a Class="bold" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> functions inform the application about updates in the socket (file descriptor) status by doing none, one, or multiple calls to the socket callback function set with the CURLMOPT_SOCKETFUNCTION option to <a Class="emphasis" href="./curl_multi_setopt.html">curl_multi_setopt</a>. They update the status with changes since the previous time the callback was called. 
+<p class="level0">Get the timeout time by setting the <span Class="emphasis">CURLMOPT_TIMERFUNCTION</span> option with <a Class="emphasis" href="./curl_multi_setopt.html">curl_multi_setopt</a>. Your application will then get called with information on how long to wait for socket actions at most before doing the timeout action: call the <a Class="bold" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> function with the <span Class="bold">sockfd</span> argument set to CURL_SOCKET_TIMEOUT. You can also use the <a Class="emphasis" href="./curl_multi_timeout.html">curl_multi_timeout</a> function to poll the value at any given time, but for an event-based system using the callback is far better than relying on polling the timeout value. 
+<p class="level0">Usage of <a Class="emphasis" href="./curl_multi_socket.html">curl_multi_socket</a> is deprecated, whereas the function is equivalent to <a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> with <span Class="bold">ev_bitmask</span> set to 0. 
+<p class="level0">Force libcurl to (re-)check all its internal sockets and transfers instead of just a single one by calling <a Class="bold" href="./curl_multi_socket_all.html">curl_multi_socket_all</a>. Note that there should not be any reason to use this function! <a name="CALLBACK"></a><h2 class="nroffsh">CALLBACK DETAILS</h2>
 <p class="level0">
 <p class="level0">The socket <span Class="bold">callback</span> function uses a prototype like this <pre>
 <p class="level0"><p class="level0">&nbsp; int curl_socket_callback(CURL *easy,      /* easy handle */
 <p class="level0">
 <p class="level0">The socket <span Class="bold">callback</span> function uses a prototype like this <pre>
 <p class="level0"><p class="level0">&nbsp; int curl_socket_callback(CURL *easy,      /* easy handle */
@@ -87,10 +87,10 @@ p.roffit {
 <p class="level0"><a name="CURLPOLLREMOVE"></a><span class="nroffip">CURL_POLL_REMOVE (4)</span> 
 <p class="level1">unregister 
 <p class="level0">
 <p class="level0"><a name="CURLPOLLREMOVE"></a><span class="nroffip">CURL_POLL_REMOVE (4)</span> 
 <p class="level1">unregister 
 <p class="level0">
-<p class="level0">The <span Class="emphasis">socketp</span> argument is a private pointer you have previously set with <a class="emphasis" href="./curl_multi_assign.html">curl_multi_assign(3)</a> to be associated with the <span Class="emphasis">s</span> socket. If no pointer has been set, socketp will be NULL. This argument is of course a service to applications that want to keep certain data or structs that are strictly associated to the given socket. 
-<p class="level0">The <span Class="emphasis">userp</span> argument is a private pointer you have previously set with <a class="emphasis" href="./curl_multi_setopt.html">curl_multi_setopt(3)</a> and the CURLMOPT_SOCKETDATA option. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">The <span Class="emphasis">socketp</span> argument is a private pointer you have previously set with <a Class="emphasis" href="./curl_multi_assign.html">curl_multi_assign</a> to be associated with the <span Class="emphasis">s</span> socket. If no pointer has been set, socketp will be NULL. This argument is of course a service to applications that want to keep certain data or structs that are strictly associated to the given socket. 
+<p class="level0">The <span Class="emphasis">userp</span> argument is a private pointer you have previously set with <a Class="emphasis" href="./curl_multi_setopt.html">curl_multi_setopt</a> and the CURLMOPT_SOCKETDATA option. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">CURLMcode type, general libcurl multi interface error code. 
 <p class="level0">CURLMcode type, general libcurl multi interface error code. 
-<p class="level0">Legacy: If you receive <span Class="emphasis">CURLM_CALL_MULTI_PERFORM</span>, this basically means that you should call <a class="emphasis" href="./curl_multi_socket.html">curl_multi_socket(3)</a> again, before you wait for more actions on libcurl's sockets. You don't have to do it immediately, but the return code means that libcurl may have more data available to return or that there may be more data to send off before it is "satisfied". 
+<p class="level0">Legacy: If you receive <span Class="emphasis">CURLM_CALL_MULTI_PERFORM</span>, this basically means that you should call <a Class="emphasis" href="./curl_multi_socket.html">curl_multi_socket</a> again, before you wait for more actions on libcurl's sockets. You don't have to do it immediately, but the return code means that libcurl may have more data available to return or that there may be more data to send off before it is "satisfied". 
 <p class="level0">In modern libcurls, <span Class="emphasis">CURLM_CALL_MULTI_PERFORM</span> or <span Class="emphasis">CURLM_CALL_MULTI_SOKCET</span> should not be returned and no application needs to care about them. 
 <p class="level0">NOTE that the return code is for the whole multi stack. Problems still might have occurred on individual transfers even when one of these functions return OK. <a name="TYPICAL"></a><h2 class="nroffsh">TYPICAL USAGE</h2>
 <p class="level0">1. Create a multi handle 
 <p class="level0">In modern libcurls, <span Class="emphasis">CURLM_CALL_MULTI_PERFORM</span> or <span Class="emphasis">CURLM_CALL_MULTI_SOKCET</span> should not be returned and no application needs to care about them. 
 <p class="level0">NOTE that the return code is for the whole multi stack. Problems still might have occurred on individual transfers even when one of these functions return OK. <a name="TYPICAL"></a><h2 class="nroffsh">TYPICAL USAGE</h2>
 <p class="level0">1. Create a multi handle 
@@ -99,10 +99,10 @@ p.roffit {
 <p class="level0">4. Add easy handles with curl_multi_add_handle() 
 <p class="level0">5. Provide some means to manage the sockets libcurl is using, so you can check them for activity. This can be done through your application code, or by way of an external library such as libevent or glib. 
 <p class="level0">6. Wait for activity on any of libcurl's sockets, use the timeout value your callback has been told 
 <p class="level0">4. Add easy handles with curl_multi_add_handle() 
 <p class="level0">5. Provide some means to manage the sockets libcurl is using, so you can check them for activity. This can be done through your application code, or by way of an external library such as libevent or glib. 
 <p class="level0">6. Wait for activity on any of libcurl's sockets, use the timeout value your callback has been told 
-<p class="level0">7, When activity is detected, call curl_multi_socket_action() for the socket(s) that got action. If no activity is detected and the timeout expires, call <a class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action(3)</a> with <span Class="emphasis">CURL_SOCKET_TIMEOUT</span> 
+<p class="level0">7, When activity is detected, call curl_multi_socket_action() for the socket(s) that got action. If no activity is detected and the timeout expires, call <a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> with <span Class="emphasis">CURL_SOCKET_TIMEOUT</span> 
 <p class="level0">8. Go back to step 6. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">This function was added in libcurl 7.15.4, and is deemed stable since 7.16.0. 
 <p class="level0">8. Go back to step 6. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">This function was added in libcurl 7.15.4, and is deemed stable since 7.16.0. 
-<p class="level0"><a class="emphasis" href="./curl_multi_socket.html">curl_multi_socket(3)</a> is deprecated, use <a class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action(3)</a> instead! <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_multi_cleanup.html">curl_multi_cleanup (3)</a> <a class="manpage" href="./curl_multi_init.html">  curl_multi_init (3)</a> <span Class="manpage"> </span> <a class="manpage" href="./curl_multi_fdset.html">curl_multi_fdset (3)</a> <a class="manpage" href="./curl_multi_info_read.html">  curl_multi_info_read (3)</a> <span Class="manpage"> </span> <span Class="manpage">the hiperfifo.c example</span> <p class="roffit">
+<p class="level0"><a Class="emphasis" href="./curl_multi_socket.html">curl_multi_socket</a> is deprecated, use <a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> instead! <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./curl_multi_cleanup.html">curl_multi_cleanup</a>, <a Class="manpage" href="./curl_multi_init.html">curl_multi_init</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_multi_fdset.html">curl_multi_fdset</a>, <a Class="manpage" href="./curl_multi_info_read.html">curl_multi_info_read</a>, <span Class="manpage"> </span> <span Class="manpage">the hiperfifo.c example</span> <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 277295d..a40cb23 100644 (file)
Binary files a/docs/libcurl/curl_multi_socket.pdf and b/docs/libcurl/curl_multi_socket.pdf differ
index 626f6f1..319754b 100644 (file)
@@ -55,10 +55,10 @@ p.roffit {
  </pre>
 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
  </pre>
 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">When the application has detected action on a socket handled by libcurl, it should call <a class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action(3)</a> with the <span Class="bold">sockfd</span> argument set to the socket with the action. When the events on a socket are known, they can be passed as an events bitmask <span Class="bold">ev_bitmask</span> by first setting <span Class="bold">ev_bitmask</span> to 0, and then adding using bitwise OR (|) any combination of events to be chosen from CURL_CSELECT_IN, CURL_CSELECT_OUT or CURL_CSELECT_ERR. When the events on a socket are unknown, pass 0 instead, and libcurl will test the descriptor internally. It is also permissible to pass CURL_SOCKET_TIMEOUT to the <span Class="bold">sockfd</span> parameter in order to initiate the whole process or when a timeout occurs. 
-<p class="level0">At return, the integer <span Class="bold">running_handles</span> points to will contain the number of running easy handles within the multi handle. When this number reaches zero, all transfers are complete/done. When you call <a class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action(3)</a> on a specific socket and the counter decreases by one, it DOES NOT necessarily mean that this exact socket/transfer is the one that completed. Use <a class="emphasis" href="./curl_multi_info_read.html">curl_multi_info_read(3)</a> to figure out which easy handle that completed. 
-<p class="level0">The <a class="bold" href="./curl_multi_socket_action.html">curl_multi_socket_action(3)</a> functions inform the application about updates in the socket (file descriptor) status by doing none, one, or multiple calls to the socket callback function set with the CURLMOPT_SOCKETFUNCTION option to <a class="emphasis" href="./curl_multi_setopt.html">curl_multi_setopt(3)</a>. They update the status with changes since the previous time the callback was called. 
-<p class="level0">Get the timeout time by setting the <span Class="emphasis">CURLMOPT_TIMERFUNCTION</span> option with <a class="emphasis" href="./curl_multi_setopt.html">curl_multi_setopt(3)</a>. Your application will then get called with information on how long to wait for socket actions at most before doing the timeout action: call the <a class="bold" href="./curl_multi_socket_action.html">curl_multi_socket_action(3)</a> function with the <span Class="bold">sockfd</span> argument set to CURL_SOCKET_TIMEOUT. You can also use the <a class="emphasis" href="./curl_multi_timeout.html">curl_multi_timeout(3)</a> function to poll the value at any given time, but for an event-based system using the callback is far better than relying on polling the timeout value. <a name="CALLBACK"></a><h2 class="nroffsh">CALLBACK DETAILS</h2>
+<p class="level0">When the application has detected action on a socket handled by libcurl, it should call <a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> with the <span Class="bold">sockfd</span> argument set to the socket with the action. When the events on a socket are known, they can be passed as an events bitmask <span Class="bold">ev_bitmask</span> by first setting <span Class="bold">ev_bitmask</span> to 0, and then adding using bitwise OR (|) any combination of events to be chosen from CURL_CSELECT_IN, CURL_CSELECT_OUT or CURL_CSELECT_ERR. When the events on a socket are unknown, pass 0 instead, and libcurl will test the descriptor internally. It is also permissible to pass CURL_SOCKET_TIMEOUT to the <span Class="bold">sockfd</span> parameter in order to initiate the whole process or when a timeout occurs. 
+<p class="level0">At return, the integer <span Class="bold">running_handles</span> points to will contain the number of running easy handles within the multi handle. When this number reaches zero, all transfers are complete/done. When you call <a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> on a specific socket and the counter decreases by one, it DOES NOT necessarily mean that this exact socket/transfer is the one that completed. Use <a Class="emphasis" href="./curl_multi_info_read.html">curl_multi_info_read</a> to figure out which easy handle that completed. 
+<p class="level0">The <a Class="bold" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> functions inform the application about updates in the socket (file descriptor) status by doing none, one, or multiple calls to the socket callback function set with the CURLMOPT_SOCKETFUNCTION option to <a Class="emphasis" href="./curl_multi_setopt.html">curl_multi_setopt</a>. They update the status with changes since the previous time the callback was called. 
+<p class="level0">Get the timeout time by setting the <span Class="emphasis">CURLMOPT_TIMERFUNCTION</span> option with <a Class="emphasis" href="./curl_multi_setopt.html">curl_multi_setopt</a>. Your application will then get called with information on how long to wait for socket actions at most before doing the timeout action: call the <a Class="bold" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> function with the <span Class="bold">sockfd</span> argument set to CURL_SOCKET_TIMEOUT. You can also use the <a Class="emphasis" href="./curl_multi_timeout.html">curl_multi_timeout</a> function to poll the value at any given time, but for an event-based system using the callback is far better than relying on polling the timeout value. <a name="CALLBACK"></a><h2 class="nroffsh">CALLBACK DETAILS</h2>
 <p class="level0">
 <p class="level0">The socket <span Class="bold">callback</span> function uses a prototype like this <pre>
 <p class="level0"><p class="level0">&nbsp; int curl_socket_callback(CURL *easy,      /* easy handle */
 <p class="level0">
 <p class="level0">The socket <span Class="bold">callback</span> function uses a prototype like this <pre>
 <p class="level0"><p class="level0">&nbsp; int curl_socket_callback(CURL *easy,      /* easy handle */
@@ -68,7 +68,7 @@ p.roffit {
  &nbsp;                          void *socketp); /* private socket pointer,
  &nbsp;                                             <span Class="bold">NULL</span> if not
  &nbsp;                                             previously assigned with
  &nbsp;                          void *socketp); /* private socket pointer,
  &nbsp;                                             <span Class="bold">NULL</span> if not
  &nbsp;                                             previously assigned with
- &nbsp;                                             <a class="bold" href="./curl_multi_assign.html">curl_multi_assign(3)</a> */
+ &nbsp;                                             <a Class="bold" href="./curl_multi_assign.html">curl_multi_assign</a> */
  <p class="level0"></pre>
 
 <p class="level0">The callback MUST return 0. 
  <p class="level0"></pre>
 
 <p class="level0">The callback MUST return 0. 
@@ -87,10 +87,10 @@ p.roffit {
 <p class="level0"><a name="CURLPOLLREMOVE"></a><span class="nroffip">CURL_POLL_REMOVE (4)</span> 
 <p class="level1">unregister 
 <p class="level0">
 <p class="level0"><a name="CURLPOLLREMOVE"></a><span class="nroffip">CURL_POLL_REMOVE (4)</span> 
 <p class="level1">unregister 
 <p class="level0">
-<p class="level0">The <span Class="emphasis">socketp</span> argument is a private pointer you have previously set with <a class="emphasis" href="./curl_multi_assign.html">curl_multi_assign(3)</a> to be associated with the <span Class="emphasis">s</span> socket. If no pointer has been set, socketp will be NULL. This argument is of course a service to applications that want to keep certain data or structs that are strictly associated to the given socket. 
-<p class="level0">The <span Class="emphasis">userp</span> argument is a private pointer you have previously set with <a class="emphasis" href="./curl_multi_setopt.html">curl_multi_setopt(3)</a> and the CURLMOPT_SOCKETDATA option. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">The <span Class="emphasis">socketp</span> argument is a private pointer you have previously set with <a Class="emphasis" href="./curl_multi_assign.html">curl_multi_assign</a> to be associated with the <span Class="emphasis">s</span> socket. If no pointer has been set, socketp will be NULL. This argument is of course a service to applications that want to keep certain data or structs that are strictly associated to the given socket. 
+<p class="level0">The <span Class="emphasis">userp</span> argument is a private pointer you have previously set with <a Class="emphasis" href="./curl_multi_setopt.html">curl_multi_setopt</a> and the CURLMOPT_SOCKETDATA option. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">CURLMcode type, general libcurl multi interface error code. 
 <p class="level0">CURLMcode type, general libcurl multi interface error code. 
-<p class="level0">Before version 7.20.0: If you receive <span Class="emphasis">CURLM_CALL_MULTI_PERFORM</span>, this basically means that you should call <a class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action(3)</a> again before you wait for more actions on libcurl's sockets. You don't have to do it immediately, but the return code means that libcurl may have more data available to return or that there may be more data to send off before it is "satisfied". 
+<p class="level0">Before version 7.20.0: If you receive <span Class="emphasis">CURLM_CALL_MULTI_PERFORM</span>, this basically means that you should call <a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> again before you wait for more actions on libcurl's sockets. You don't have to do it immediately, but the return code means that libcurl may have more data available to return or that there may be more data to send off before it is "satisfied". 
 <p class="level0">The return code from this function is for the whole multi stack.  Problems still might have occurred on individual transfers even when one of these functions return OK. <a name="TYPICAL"></a><h2 class="nroffsh">TYPICAL USAGE</h2>
 <p class="level0">1. Create a multi handle 
 <p class="level0">2. Set the socket callback with CURLMOPT_SOCKETFUNCTION 
 <p class="level0">The return code from this function is for the whole multi stack.  Problems still might have occurred on individual transfers even when one of these functions return OK. <a name="TYPICAL"></a><h2 class="nroffsh">TYPICAL USAGE</h2>
 <p class="level0">1. Create a multi handle 
 <p class="level0">2. Set the socket callback with CURLMOPT_SOCKETFUNCTION 
@@ -99,8 +99,8 @@ p.roffit {
 <p class="level0">5. Provide some means to manage the sockets libcurl is using, so you can check them for activity. This can be done through your application code, or by way of an external library such as libevent or glib. 
 <p class="level0">6. Call curl_multi_socket_action(..., CURL_SOCKET_TIMEOUT, 0, ...) to kickstart everything. To get one or more callbacks called. 
 <p class="level0">7. Wait for activity on any of libcurl's sockets, use the timeout value your callback has been told. 
 <p class="level0">5. Provide some means to manage the sockets libcurl is using, so you can check them for activity. This can be done through your application code, or by way of an external library such as libevent or glib. 
 <p class="level0">6. Call curl_multi_socket_action(..., CURL_SOCKET_TIMEOUT, 0, ...) to kickstart everything. To get one or more callbacks called. 
 <p class="level0">7. Wait for activity on any of libcurl's sockets, use the timeout value your callback has been told. 
-<p class="level0">8, When activity is detected, call curl_multi_socket_action() for the socket(s) that got action. If no activity is detected and the timeout expires, call <a class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action(3)</a> with <span Class="emphasis">CURL_SOCKET_TIMEOUT</span>. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">8, When activity is detected, call curl_multi_socket_action() for the socket(s) that got action. If no activity is detected and the timeout expires, call <a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> with <span Class="emphasis">CURL_SOCKET_TIMEOUT</span>. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">This function was added in libcurl 7.15.4, and is deemed stable since 7.16.0. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0">This function was added in libcurl 7.15.4, and is deemed stable since 7.16.0. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_multi_cleanup.html">curl_multi_cleanup (3)</a> <a class="manpage" href="./curl_multi_init.html">  curl_multi_init (3)</a> <span Class="manpage"> </span> <a class="manpage" href="./curl_multi_fdset.html">curl_multi_fdset (3)</a> <a class="manpage" href="./curl_multi_info_read.html">  curl_multi_info_read (3)</a> <span Class="manpage"> </span> <span Class="manpage">the hiperfifo.c example</span> <p class="roffit">
+<p class="level0"><a Class="manpage" href="./curl_multi_cleanup.html">curl_multi_cleanup</a>, <a Class="manpage" href="./curl_multi_init.html">curl_multi_init</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_multi_fdset.html">curl_multi_fdset</a>, <a Class="manpage" href="./curl_multi_info_read.html">curl_multi_info_read</a>, <span Class="manpage"> </span> <span Class="manpage">the hiperfifo.c example</span> <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 6a8187b..a492238 100644 (file)
Binary files a/docs/libcurl/curl_multi_socket_action.pdf and b/docs/libcurl/curl_multi_socket_action.pdf differ
index 198a1a5..34b20a9 100644 (file)
@@ -55,6 +55,6 @@ p.roffit {
 <p class="level0">The curl_multi_strerror() function returns a string describing the CURLMcode error code passed in the argument <span Class="emphasis">errornum</span>. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">This function was added in libcurl 7.12.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">A pointer to a zero terminated string. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0">The curl_multi_strerror() function returns a string describing the CURLMcode error code passed in the argument <span Class="emphasis">errornum</span>. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">This function was added in libcurl 7.12.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">A pointer to a zero terminated string. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><span Class="manpage">libcurl-errors (3)</span> <a class="manpage" href="./curl_easy_strerror.html">  curl_easy_strerror (3)</a> <a class="manpage" href="./curl_share_strerror.html">  curl_share_strerror (3)</a> <p class="roffit">
+<p class="level0"><a Class="manpage" href="./libcurl-errors.html">libcurl-errors</a>, <a Class="manpage" href="./curl_easy_strerror.html">curl_easy_strerror</a>, <a Class="manpage" href="./curl_share_strerror.html">curl_share_strerror</a>, <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 3d848cf..a9c4d89 100644 (file)
Binary files a/docs/libcurl/curl_multi_strerror.pdf and b/docs/libcurl/curl_multi_strerror.pdf differ
index 676d776..952a6ff 100644 (file)
@@ -50,15 +50,15 @@ p.roffit {
 <p class="level0">#include &lt;curl/curl.h&gt; 
 <p class="level0">CURLMcode curl_multi_timeout(CURLM *multi_handle, long *timeout); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">
 <p class="level0">#include &lt;curl/curl.h&gt; 
 <p class="level0">CURLMcode curl_multi_timeout(CURLM *multi_handle, long *timeout); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">
-<p class="level0">An application using the libcurl multi interface should call <a class="bold" href="./curl_multi_timeout.html">curl_multi_timeout(3)</a> to figure out how long it should wait for socket actions - at most - before proceeding. 
-<p class="level0">Proceeding means either doing the socket-style timeout action: call the <a class="bold" href="./curl_multi_socket_action.html">curl_multi_socket_action(3)</a> function with the <span Class="bold">sockfd</span> argument set to CURL_SOCKET_TIMEOUT, or call <a class="bold" href="./curl_multi_perform.html">curl_multi_perform(3)</a> if you're using the simpler and older multi interface approach. 
+<p class="level0">An application using the libcurl multi interface should call <a Class="bold" href="./curl_multi_timeout.html">curl_multi_timeout</a> to figure out how long it should wait for socket actions - at most - before proceeding. 
+<p class="level0">Proceeding means either doing the socket-style timeout action: call the <a Class="bold" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> function with the <span Class="bold">sockfd</span> argument set to CURL_SOCKET_TIMEOUT, or call <a Class="bold" href="./curl_multi_perform.html">curl_multi_perform</a> if you're using the simpler and older multi interface approach. 
 <p class="level0">The timeout value returned in the long <span Class="bold">timeout</span> points to, is in number of milliseconds at this very moment. If 0, it means you should proceed immediately without waiting for anything. If it returns -1, there's no timeout at all set. 
 <p class="level0">The timeout value returned in the long <span Class="bold">timeout</span> points to, is in number of milliseconds at this very moment. If 0, it means you should proceed immediately without waiting for anything. If it returns -1, there's no timeout at all set. 
-<p class="level0">An application that uses the multi_socket API SHOULD NOT use this function, but SHOULD instead use <a class="emphasis" href="./curl_multi_setopt.html">curl_multi_setopt(3)</a> and its </span>CURLMOPT_TIMERFUNCTION</span> option for proper and desired behavior. 
+<p class="level0">An application that uses the multi_socket API SHOULD NOT use this function, but SHOULD instead use <a Class="emphasis" href="./curl_multi_setopt.html">curl_multi_setopt</a> and its </span>CURLMOPT_TIMERFUNCTION</span> option for proper and desired behavior. 
 <p class="level0">Note: if libcurl returns a -1 timeout here, it just means that libcurl currently has no stored timeout value. You must not wait too long (more than a few seconds perhaps) before you call curl_multi_perform() again. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">The standard CURLMcode for multi interface error codes. <a name="TYPICAL"></a><h2 class="nroffsh">TYPICAL USAGE</h2>
 <p class="level0">Note: if libcurl returns a -1 timeout here, it just means that libcurl currently has no stored timeout value. You must not wait too long (more than a few seconds perhaps) before you call curl_multi_perform() again. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">The standard CURLMcode for multi interface error codes. <a name="TYPICAL"></a><h2 class="nroffsh">TYPICAL USAGE</h2>
-<p class="level0">Call <a class="bold" href="./curl_multi_timeout.html">curl_multi_timeout(3)</a>, then wait for action on the sockets. You figure out which sockets to wait for by calling <a class="bold" href="./curl_multi_fdset.html">curl_multi_fdset(3)</a> or by a previous call to <a class="bold" href="./curl_multi_socket.html">curl_multi_socket(3)</a>. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Call <a Class="bold" href="./curl_multi_timeout.html">curl_multi_timeout</a>, then wait for action on the sockets. You figure out which sockets to wait for by calling <a Class="bold" href="./curl_multi_fdset.html">curl_multi_fdset</a> or by a previous call to <a Class="bold" href="./curl_multi_socket.html">curl_multi_socket</a>. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">This function was added in libcurl 7.15.4. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0">This function was added in libcurl 7.15.4. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_multi_fdset.html">curl_multi_fdset (3)</a> <a class="manpage" href="./curl_multi_info_read.html">  curl_multi_info_read (3)</a> <span Class="manpage"> </span> <a class="manpage" href="./curl_multi_socket.html">curl_multi_socket (3)</a> <a class="manpage" href="./curl_multi_setopt.html">  curl_multi_setopt (3) </a> 
+<p class="level0"><a Class="manpage" href="./curl_multi_fdset.html">curl_multi_fdset</a>, <a Class="manpage" href="./curl_multi_info_read.html">curl_multi_info_read</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_multi_socket.html">curl_multi_socket</a>, <a Class="manpage" href="./curl_multi_setopt.html">curl_multi_setopt</a>, 
 <p class="level0"><p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
 <p class="level0"><p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 9a542c1..b5d5501 100644 (file)
Binary files a/docs/libcurl/curl_multi_timeout.pdf and b/docs/libcurl/curl_multi_timeout.pdf differ
index 21ade93..a76fba3 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -33,9 +33,9 @@ CURLMcode curl_multi_wait(CURLM *multi_handle,
                           int *numfds);
 .ad
 .SH DESCRIPTION
                           int *numfds);
 .ad
 .SH DESCRIPTION
-This function polls on all file descriptors used by the curl easy handles
-contained in the given multi handle set.  It will block until activity is
-detected on at least one of the handles or \fItimeout_ms\fP has passed.
+\fIcurl_multi_wait(3)\fP polls all file descriptors used by the curl easy
+handles contained in the given multi handle set.  It will block until activity
+is detected on at least one of the handles or \fItimeout_ms\fP has passed.
 Alternatively, if the multi handle has a pending internal timeout that has a
 shorter expiry time than \fItimeout_ms\fP, that shorter time will be used
 instead to make sure timeout accuracy is reasonably kept.
 Alternatively, if the multi handle has a pending internal timeout that has a
 shorter expiry time than \fItimeout_ms\fP, that shorter time will be used
 instead to make sure timeout accuracy is reasonably kept.
@@ -43,7 +43,7 @@ instead to make sure timeout accuracy is reasonably kept.
 The calling application may pass additional curl_waitfd structures which are
 similar to \fIpoll(2)\fP's pollfd structure to be waited on in the same call.
 
 The calling application may pass additional curl_waitfd structures which are
 similar to \fIpoll(2)\fP's pollfd structure to be waited on in the same call.
 
-On completion, if \fInumfds\fP is supplied, it will be populated with the
+On completion, if \fInumfds\fP is non-NULL, it will be populated with the
 total number of file descriptors on which interesting events occured. This
 number can include both libcurl internal descriptors as well as descriptors
 provided in \fIextra_fds\fP.
 total number of file descriptors on which interesting events occured. This
 number can include both libcurl internal descriptors as well as descriptors
 provided in \fIextra_fds\fP.
index 7d43abd..fa10dee 100644 (file)
@@ -56,9 +56,9 @@ p.roffit {
  &nbsp;                         int *numfds);
  <p class="level0"></pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
  &nbsp;                         int *numfds);
  <p class="level0"></pre>
 <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">This function polls on all file descriptors used by the curl easy handles contained in the given multi handle set.  It will block until activity is detected on at least one of the handles or <span Class="emphasis">timeout_ms</span> has passed. Alternatively, if the multi handle has a pending internal timeout that has a shorter expiry time than <span Class="emphasis">timeout_ms</span>, that shorter time will be used instead to make sure timeout accuracy is reasonably kept. 
+<p class="level0"><a Class="emphasis" href="./curl_multi_wait.html">curl_multi_wait</a> polls all file descriptors used by the curl easy handles contained in the given multi handle set.  It will block until activity is detected on at least one of the handles or <span Class="emphasis">timeout_ms</span> has passed. Alternatively, if the multi handle has a pending internal timeout that has a shorter expiry time than <span Class="emphasis">timeout_ms</span>, that shorter time will be used instead to make sure timeout accuracy is reasonably kept. 
 <p class="level0">The calling application may pass additional curl_waitfd structures which are similar to <span Class="emphasis">poll(2)</span>'s pollfd structure to be waited on in the same call. 
 <p class="level0">The calling application may pass additional curl_waitfd structures which are similar to <span Class="emphasis">poll(2)</span>'s pollfd structure to be waited on in the same call. 
-<p class="level0">On completion, if <span Class="emphasis">numfds</span> is supplied, it will be populated with the total number of file descriptors on which interesting events occured. This number can include both libcurl internal descriptors as well as descriptors provided in <span Class="emphasis">extra_fds</span>. 
+<p class="level0">On completion, if <span Class="emphasis">numfds</span> is non-NULL, it will be populated with the total number of file descriptors on which interesting events occured. This number can include both libcurl internal descriptors as well as descriptors provided in <span Class="emphasis">extra_fds</span>. 
 <p class="level0">If no extra file descriptors are provided and libcurl has no file descriptor to offer to wait for, this function will return immediately. 
 <p class="level0">This function is encouraged to be used instead of select(3) when using the multi interface to allow applications to easier circumvent the common problem with 1024 maximum file descriptors. <a name="curlwaitfd"></a><h2 class="nroffsh">curl_waitfd</h2>
 <p class="level0"><pre>
 <p class="level0">If no extra file descriptors are provided and libcurl has no file descriptor to offer to wait for, this function will return immediately. 
 <p class="level0">This function is encouraged to be used instead of select(3) when using the multi interface to allow applications to easier circumvent the common problem with 1024 maximum file descriptors. <a name="curlwaitfd"></a><h2 class="nroffsh">curl_waitfd</h2>
 <p class="level0"><pre>
@@ -76,8 +76,8 @@ p.roffit {
 <p class="level1">Bit flag to curl_waitfd.events indicating the socket should poll on high priority read events such as out of band data. 
 <p class="level0"><a name="CURLWAITPOLLOUT"></a><span class="nroffip">CURL_WAIT_POLLOUT</span> 
 <p class="level1">Bit flag to curl_waitfd.events indicating the socket should poll on write events such as the socket being clear to write without blocking. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level1">Bit flag to curl_waitfd.events indicating the socket should poll on high priority read events such as out of band data. 
 <p class="level0"><a name="CURLWAITPOLLOUT"></a><span class="nroffip">CURL_WAIT_POLLOUT</span> 
 <p class="level1">Bit flag to curl_waitfd.events indicating the socket should poll on write events such as the socket being clear to write without blocking. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
-<p class="level0">CURLMcode type, general libcurl multi interface error code. See <span Class="emphasis">libcurl-errors(3)</span> <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">CURLMcode type, general libcurl multi interface error code. See <a Class="emphasis" href="./libcurl-errors.html">libcurl-errors</a> <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">This function was added in libcurl 7.28.0. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0">This function was added in libcurl 7.28.0. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_multi_fdset.html">curl_multi_fdset (3)</a> <a class="manpage" href="./curl_multi_perform.html">  curl_multi_perform (3)</a> <p class="roffit">
+<p class="level0"><a Class="manpage" href="./curl_multi_fdset.html">curl_multi_fdset</a>, <a Class="manpage" href="./curl_multi_perform.html">curl_multi_perform</a>, <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index cb23594..1c65e52 100644 (file)
Binary files a/docs/libcurl/curl_multi_wait.pdf and b/docs/libcurl/curl_multi_wait.pdf differ
index 3e1e637..55d7174 100644 (file)
@@ -53,6 +53,6 @@ p.roffit {
 <p class="level0">This function deletes a shared object. The share handle cannot be used anymore when this function has been called. 
 <p class="level0"><a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">CURLSHE_OK (zero) means that the option was set properly, non-zero means an error occurred as <span Class="emphasis">&lt;curl/curl.h&gt;</span> defines. See the <span Class="emphasis">libcurl-errors.3</span> man page for the full list with descriptions. If an error occurs, then the share object will not be deleted. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0">This function deletes a shared object. The share handle cannot be used anymore when this function has been called. 
 <p class="level0"><a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">CURLSHE_OK (zero) means that the option was set properly, non-zero means an error occurred as <span Class="emphasis">&lt;curl/curl.h&gt;</span> defines. See the <span Class="emphasis">libcurl-errors.3</span> man page for the full list with descriptions. If an error occurs, then the share object will not be deleted. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_share_init.html">curl_share_init (3)</a> <a class="manpage" href="./curl_share_setopt.html">  curl_share_setopt (3)</a> <p class="roffit">
+<p class="level0"><a Class="manpage" href="./curl_share_init.html">curl_share_init</a>, <a Class="manpage" href="./curl_share_setopt.html">curl_share_setopt</a>, <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 3b1f5c9..8aa8433 100644 (file)
Binary files a/docs/libcurl/curl_share_cleanup.pdf and b/docs/libcurl/curl_share_cleanup.pdf differ
index ce00d95..4833a8a 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -33,9 +33,9 @@ share-functions, sometimes referred to as a share handle in some places in the
 documentation. This init call MUST have a corresponding call to
 \fIcurl_share_cleanup\fP when all operations using the share are complete.
 
 documentation. This init call MUST have a corresponding call to
 \fIcurl_share_cleanup\fP when all operations using the share are complete.
 
-This \fIshare handle\fP is what you pass to curl using the \fICURLOPT_SHARE\fP
-option with \fIcurl_easy_setopt(3)\fP, to make that specific curl handle use
-the data in this share.
+This \fIshare handle\fP is what you pass to curl using the
+\fICURLOPT_SHARE(3)\fP option with \fIcurl_easy_setopt(3)\fP, to make that
+specific curl handle use the data in this share.
 .SH RETURN VALUE
 If this function returns NULL, something went wrong (out of memory, etc.)
 and therefore the share object was not created.
 .SH RETURN VALUE
 If this function returns NULL, something went wrong (out of memory, etc.)
 and therefore the share object was not created.
index ebf555b..aa7f54c 100644 (file)
@@ -51,9 +51,9 @@ p.roffit {
 <p class="level0"><span Class="bold">CURLSH *curl_share_init( );</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">This function returns a CURLSH handle to be used as input to all the other share-functions, sometimes referred to as a share handle in some places in the documentation. This init call MUST have a corresponding call to <span Class="emphasis">curl_share_cleanup</span> when all operations using the share are complete. 
 <p class="level0"><span Class="bold">CURLSH *curl_share_init( );</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">This function returns a CURLSH handle to be used as input to all the other share-functions, sometimes referred to as a share handle in some places in the documentation. This init call MUST have a corresponding call to <span Class="emphasis">curl_share_cleanup</span> when all operations using the share are complete. 
-<p class="level0">This <span Class="emphasis">share handle</span> is what you pass to curl using the <span Class="emphasis">CURLOPT_SHARE</span> option with <a class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt(3)</a>, to make that specific curl handle use the data in this share. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">This <span Class="emphasis">share handle</span> is what you pass to curl using the <span Class="emphasis">CURLOPT_SHARE(3)</span> option with <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a>, to make that specific curl handle use the data in this share. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">If this function returns NULL, something went wrong (out of memory, etc.) and therefore the share object was not created. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0">If this function returns NULL, something went wrong (out of memory, etc.) and therefore the share object was not created. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_share_cleanup.html">curl_share_cleanup (3)</a> <a class="manpage" href="./curl_share_setopt.html">  curl_share_setopt (3)</a> 
+<p class="level0"><a Class="manpage" href="./curl_share_cleanup.html">curl_share_cleanup</a>, <a Class="manpage" href="./curl_share_setopt.html">curl_share_setopt</a>, 
 <p class="level0"><p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
 <p class="level0"><p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 0427da6..026cc71 100644 (file)
Binary files a/docs/libcurl/curl_share_init.pdf and b/docs/libcurl/curl_share_init.pdf differ
index 14b3677..9b36241 100644 (file)
@@ -78,6 +78,6 @@ p.roffit {
 <p class="level0"><a name="CURLSHOPTUSERDATA"></a><span class="nroffip">CURLSHOPT_USERDATA</span> 
 <p class="level1">The <span Class="emphasis">parameter</span> allows you to specify a pointer to data that will be passed to the lock_function and unlock_function each time it is called. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">CURLSHE_OK (zero) means that the option was set properly, non-zero means an error occurred as <span Class="emphasis">&lt;curl/curl.h&gt;</span> defines. See the <span Class="emphasis">libcurl-errors.3</span> man page for the full list with descriptions. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a name="CURLSHOPTUSERDATA"></a><span class="nroffip">CURLSHOPT_USERDATA</span> 
 <p class="level1">The <span Class="emphasis">parameter</span> allows you to specify a pointer to data that will be passed to the lock_function and unlock_function each time it is called. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">CURLSHE_OK (zero) means that the option was set properly, non-zero means an error occurred as <span Class="emphasis">&lt;curl/curl.h&gt;</span> defines. See the <span Class="emphasis">libcurl-errors.3</span> man page for the full list with descriptions. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_share_cleanup.html">curl_share_cleanup (3)</a> <a class="manpage" href="./curl_share_init.html">  curl_share_init (3)</a> <p class="roffit">
+<p class="level0"><a Class="manpage" href="./curl_share_cleanup.html">curl_share_cleanup</a>, <a Class="manpage" href="./curl_share_init.html">curl_share_init</a>, <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 0c4f432..dfa711b 100644 (file)
Binary files a/docs/libcurl/curl_share_setopt.pdf and b/docs/libcurl/curl_share_setopt.pdf differ
index f09b0e0..7dc5423 100644 (file)
@@ -55,6 +55,6 @@ p.roffit {
 <p class="level0">The curl_share_strerror() function returns a string describing the CURLSHcode error code passed in the argument <span Class="emphasis">errornum</span>. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">This function was added in libcurl 7.12.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">A pointer to a zero terminated string. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0">The curl_share_strerror() function returns a string describing the CURLSHcode error code passed in the argument <span Class="emphasis">errornum</span>. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
 <p class="level0">This function was added in libcurl 7.12.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">A pointer to a zero terminated string. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><span Class="manpage">libcurl-errors (3)</span> <a class="manpage" href="./curl_multi_strerror.html">  curl_multi_strerror (3)</a> <a class="manpage" href="./curl_easy_strerror.html">  curl_easy_strerror (3)</a> <p class="roffit">
+<p class="level0"><a Class="manpage" href="./libcurl-errors.html">libcurl-errors</a>, <a Class="manpage" href="./curl_multi_strerror.html">curl_multi_strerror</a>, <a Class="manpage" href="./curl_easy_strerror.html">curl_easy_strerror</a>, <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index d301a6e..99d3c2e 100644 (file)
Binary files a/docs/libcurl/curl_share_strerror.pdf and b/docs/libcurl/curl_share_strerror.pdf differ
index 0b77859..4134777 100644 (file)
@@ -51,7 +51,7 @@ p.roffit {
 <p class="level0"><span Class="bold">struct curl_slist *curl_slist_append(struct curl_slist * list,</span> <span Class="bold">const char * string );</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">curl_slist_append() appends a specified string to a linked list of strings. The existing <span Class="emphasis">list</span> should be passed as the first argument while the new list is returned from this function. The specified <span Class="emphasis">string</span> has been appended when this function returns. curl_slist_append() copies the string. 
 <p class="level0"><span Class="bold">struct curl_slist *curl_slist_append(struct curl_slist * list,</span> <span Class="bold">const char * string );</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">curl_slist_append() appends a specified string to a linked list of strings. The existing <span Class="emphasis">list</span> should be passed as the first argument while the new list is returned from this function. The specified <span Class="emphasis">string</span> has been appended when this function returns. curl_slist_append() copies the string. 
-<p class="level0">The list should be freed again (after usage) with <a class="bold" href="./curl_slist_free_all.html">curl_slist_free_all(3)</a>. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">The list should be freed again (after usage) with <a Class="bold" href="./curl_slist_free_all.html">curl_slist_free_all</a>. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">A null pointer is returned if anything went wrong, otherwise the new list pointer is returned. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
 <p class="level0"><pre>
 <p class="level0">&nbsp;CURL handle;
 <p class="level0">A null pointer is returned if anything went wrong, otherwise the new list pointer is returned. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
 <p class="level0"><pre>
 <p class="level0">&nbsp;CURL handle;
@@ -63,6 +63,6 @@ p.roffit {
  </pre>
 
 <p class="level0"><a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
  </pre>
 
 <p class="level0"><a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_slist_free_all.html">curl_slist_free_all (3)</a> <span Class="manpage"> </span> <p class="roffit">
+<p class="level0"><a Class="manpage" href="./curl_slist_free_all.html">curl_slist_free_all</a>, <span Class="manpage"> </span> <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 3025e43..740f9a2 100644 (file)
@@ -72,12 +72,12 @@ endobj
 <?adobe-xap-filters esc="CRLF"?>
 <x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
 <rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
 <?adobe-xap-filters esc="CRLF"?>
 <x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
 <rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
-<rdf:Description rdf:about='uuid:075b48f7-381b-11ee-0000-b52b3dcd9ad6' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.05'/>
-<rdf:Description rdf:about='uuid:075b48f7-381b-11ee-0000-b52b3dcd9ad6' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2013-08-08T09:45:22+02:00</xmp:ModifyDate>
-<xmp:CreateDate>2013-08-08T09:45:22+02:00</xmp:CreateDate>
-<xmp:CreatorTool>groff version 1.22.2</xmp:CreatorTool></rdf:Description>
-<rdf:Description rdf:about='uuid:075b48f7-381b-11ee-0000-b52b3dcd9ad6' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:075b48f7-381b-11ee-0000-b52b3dcd9ad6'/>
-<rdf:Description rdf:about='uuid:075b48f7-381b-11ee-0000-b52b3dcd9ad6' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+<rdf:Description rdf:about='uuid:6013794a-cf2b-11ef-0000-b52b3dcd9ad6' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.06'/>
+<rdf:Description rdf:about='uuid:6013794a-cf2b-11ef-0000-b52b3dcd9ad6' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-01-08T09:17:46+01:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-01-08T09:17:46+01:00</xmp:CreateDate>
+<xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
+<rdf:Description rdf:about='uuid:6013794a-cf2b-11ef-0000-b52b3dcd9ad6' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:6013794a-cf2b-11ef-0000-b52b3dcd9ad6'/>
+<rdf:Description rdf:about='uuid:6013794a-cf2b-11ef-0000-b52b3dcd9ad6' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
 </rdf:RDF>
 </x:xmpmeta>
                                                                         
 </rdf:RDF>
 </x:xmpmeta>
                                                                         
@@ -86,10 +86,10 @@ endobj
 endstream
 endobj
 2 0 obj
 endstream
 endobj
 2 0 obj
-<</Producer(GPL Ghostscript 9.05)
-/CreationDate(D:20130808094522+02'00')
-/ModDate(D:20130808094522+02'00')
-/Creator(groff version 1.22.2)>>endobj
+<</Producer(GPL Ghostscript 9.06)
+/CreationDate(D:20150108091746+01'00')
+/ModDate(D:20150108091746+01'00')
+/Creator(groff version 1.22.3)>>endobj
 xref
 0 15
 0000000000 65535 f 
 xref
 0 15
 0000000000 65535 f 
@@ -109,7 +109,7 @@ xref
 0000001787 00000 n 
 trailer
 << /Size 15 /Root 1 0 R /Info 2 0 R
 0000001787 00000 n 
 trailer
 << /Size 15 /Root 1 0 R /Info 2 0 R
-/ID [<901B37E731777385534E234E0A30AECE><901B37E731777385534E234E0A30AECE>]
+/ID [<DFD18D75CAAF4168277C35FFBDE11165><DFD18D75CAAF4168277C35FFBDE11165>]
 >>
 startxref
 3364
 >>
 startxref
 3364
index 0bd7418..f2f4084 100644 (file)
@@ -52,7 +52,7 @@ p.roffit {
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">curl_slist_free_all() removes all traces of a previously built curl_slist linked list. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">Nothing. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">curl_slist_free_all() removes all traces of a previously built curl_slist linked list. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">Nothing. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_slist_append.html">curl_slist_append (3)</a> <span Class="manpage"> </span> 
+<p class="level0"><a Class="manpage" href="./curl_slist_append.html">curl_slist_append</a>, <span Class="manpage"> </span> 
 <p class="level0"><p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
 <p class="level0"><p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index f233108..f7cf88b 100644 (file)
@@ -62,12 +62,12 @@ endobj
 <?adobe-xap-filters esc="CRLF"?>
 <x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
 <rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
 <?adobe-xap-filters esc="CRLF"?>
 <x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
 <rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
-<rdf:Description rdf:about='uuid:075b48f7-381b-11ee-0000-224f381b10d2' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.05'/>
-<rdf:Description rdf:about='uuid:075b48f7-381b-11ee-0000-224f381b10d2' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2013-08-08T09:45:22+02:00</xmp:ModifyDate>
-<xmp:CreateDate>2013-08-08T09:45:22+02:00</xmp:CreateDate>
-<xmp:CreatorTool>groff version 1.22.2</xmp:CreatorTool></rdf:Description>
-<rdf:Description rdf:about='uuid:075b48f7-381b-11ee-0000-224f381b10d2' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:075b48f7-381b-11ee-0000-224f381b10d2'/>
-<rdf:Description rdf:about='uuid:075b48f7-381b-11ee-0000-224f381b10d2' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+<rdf:Description rdf:about='uuid:6013794a-cf2b-11ef-0000-224f381b10d2' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.06'/>
+<rdf:Description rdf:about='uuid:6013794a-cf2b-11ef-0000-224f381b10d2' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-01-08T09:17:46+01:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-01-08T09:17:46+01:00</xmp:CreateDate>
+<xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
+<rdf:Description rdf:about='uuid:6013794a-cf2b-11ef-0000-224f381b10d2' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:6013794a-cf2b-11ef-0000-224f381b10d2'/>
+<rdf:Description rdf:about='uuid:6013794a-cf2b-11ef-0000-224f381b10d2' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
 </rdf:RDF>
 </x:xmpmeta>
                                                                         
 </rdf:RDF>
 </x:xmpmeta>
                                                                         
@@ -76,10 +76,10 @@ endobj
 endstream
 endobj
 2 0 obj
 endstream
 endobj
 2 0 obj
-<</Producer(GPL Ghostscript 9.05)
-/CreationDate(D:20130808094522+02'00')
-/ModDate(D:20130808094522+02'00')
-/Creator(groff version 1.22.2)>>endobj
+<</Producer(GPL Ghostscript 9.06)
+/CreationDate(D:20150108091746+01'00')
+/ModDate(D:20150108091746+01'00')
+/Creator(groff version 1.22.3)>>endobj
 xref
 0 14
 0000000000 65535 f 
 xref
 0 14
 0000000000 65535 f 
@@ -98,7 +98,7 @@ xref
 0000001254 00000 n 
 trailer
 << /Size 14 /Root 1 0 R /Info 2 0 R
 0000001254 00000 n 
 trailer
 << /Size 14 /Root 1 0 R /Info 2 0 R
-/ID [(\n>Bte\216\016U%\t=b.w\370\357)(\n>Bte\216\016U%\t=b.w\370\357)]
+/ID [<DB6875C734A7401EEB3BB1ED327E3A46><DB6875C734A7401EEB3BB1ED327E3A46>]
 >>
 startxref
 2831
 >>
 startxref
 2831
index e9ed9eb..9618b8e 100644 (file)
Binary files a/docs/libcurl/curl_strequal.pdf and b/docs/libcurl/curl_strequal.pdf differ
index 2a24866..8d16852 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -38,11 +38,11 @@ converted to their plain text versions.
 If the 'length' argument is set to 0, curl_unescape() will use strlen() on the
 input 'url' string to find out the size.
 
 If the 'length' argument is set to 0, curl_unescape() will use strlen() on the
 input 'url' string to find out the size.
 
-You must curl_free() the returned string when you're done with it.
+You must \fIcurl_free(3)\fP the returned string when you're done with it.
 .SH AVAILABILITY
 Since 7.15.4, \fIcurl_easy_unescape(3)\fP should be used. This function will
 be removed in a future release.
 .SH RETURN VALUE
 A pointer to a zero terminated string or NULL if it failed.
 .SH "SEE ALSO"
 .SH AVAILABILITY
 Since 7.15.4, \fIcurl_easy_unescape(3)\fP should be used. This function will
 be removed in a future release.
 .SH RETURN VALUE
 A pointer to a zero terminated string or NULL if it failed.
 .SH "SEE ALSO"
-.I curl_easy_escape(3), curl_easy_unescape(3), curl_free(3), RFC 2396
+.br curl_easy_escape "(3)," curl_easy_unescape "(3)," curl_free "(3)," RFC 2396
index b8e434c..e8180b2 100644 (file)
@@ -50,12 +50,12 @@ p.roffit {
 <p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
 <p class="level0"><span Class="bold">char *curl_unescape( char * url , int length  );</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
 <p class="level0"><span Class="bold">char *curl_unescape( char * url , int length  );</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">Obsolete function. Use <a class="emphasis" href="./curl_easy_unescape.html">curl_easy_unescape(3)</a> instead! 
+<p class="level0">Obsolete function. Use <a Class="emphasis" href="./curl_easy_unescape.html">curl_easy_unescape</a> instead! 
 <p class="level0">This function will convert the given URL encoded input string to a "plain string" and return that as a new allocated string. All input characters that are URL encoded (%XX where XX is a two-digit hexadecimal number) will be converted to their plain text versions. 
 <p class="level0">If the 'length' argument is set to 0, curl_unescape() will use strlen() on the input 'url' string to find out the size. 
 <p class="level0">This function will convert the given URL encoded input string to a "plain string" and return that as a new allocated string. All input characters that are URL encoded (%XX where XX is a two-digit hexadecimal number) will be converted to their plain text versions. 
 <p class="level0">If the 'length' argument is set to 0, curl_unescape() will use strlen() on the input 'url' string to find out the size. 
-<p class="level0">You must curl_free() the returned string when you're done with it. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
-<p class="level0">Since 7.15.4, <a class="emphasis" href="./curl_easy_unescape.html">curl_easy_unescape(3)</a> should be used. This function will be removed in a future release. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">You must <a Class="emphasis" href="./curl_free.html">curl_free</a> the returned string when you're done with it. <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Since 7.15.4, <a Class="emphasis" href="./curl_easy_unescape.html">curl_easy_unescape</a> should be used. This function will be removed in a future release. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">A pointer to a zero terminated string or NULL if it failed. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0">A pointer to a zero terminated string or NULL if it failed. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><span Class="emphasis">curl_easy_escape(3), curl_easy_unescape(3), curl_free(3), <a href="http://www.ietf.org/rfc/rfc2396.txt">RFC 2396</a></span> <p class="roffit">
+<p class="level0"><a Class="manpage" href="./curl_easy_escape.html">curl_easy_escape</a>, <a Class="manpage" href="./curl_easy_unescape.html">curl_easy_unescape</a>, <a Class="manpage" href="./curl_free.html">curl_free</a>, <span Class="manpage"> <a href="http://www.ietf.org/rfc/rfc2396.txt">RFC 2396</a></span> <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index cbadf5e..d3f74c1 100644 (file)
Binary files a/docs/libcurl/curl_unescape.pdf and b/docs/libcurl/curl_unescape.pdf differ
index f66e38d..03922c9 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -30,6 +30,8 @@ curl_version - returns the libcurl version string
 .SH DESCRIPTION
 Returns a human readable string with the version number of libcurl and some of
 its important components (like OpenSSL version).
 .SH DESCRIPTION
 Returns a human readable string with the version number of libcurl and some of
 its important components (like OpenSSL version).
+
+We recommend using \fIcurl_version_info(3)\fP instead!
 .SH RETURN VALUE
 A pointer to a zero terminated string. The string resides in a statically
 allocated buffer and must not be freed by the caller.
 .SH RETURN VALUE
 A pointer to a zero terminated string. The string resides in a statically
 allocated buffer and must not be freed by the caller.
index aca7ecc..ab308d0 100644 (file)
@@ -50,8 +50,9 @@ p.roffit {
 <p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
 <p class="level0"><span Class="bold">char *curl_version( );</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
 <p class="level0"><span Class="bold">char *curl_version( );</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">Returns a human readable string with the version number of libcurl and some of its important components (like OpenSSL version). <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns a human readable string with the version number of libcurl and some of its important components (like OpenSSL version). 
+<p class="level0">We recommend using <a Class="emphasis" href="./curl_version_info.html">curl_version_info</a> instead! <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">A pointer to a zero terminated string. The string resides in a statically allocated buffer and must not be freed by the caller. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0">A pointer to a zero terminated string. The string resides in a statically allocated buffer and must not be freed by the caller. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_version_info.html">curl_version_info (3)</a> <p class="roffit">
+<p class="level0"><a Class="manpage" href="./curl_version_info.html">curl_version_info</a>, <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index d54b3d7..81f0d9c 100644 (file)
Binary files a/docs/libcurl/curl_version.pdf and b/docs/libcurl/curl_version.pdf differ
index ccb2028..1b8f9c1 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
 .\" *
 .\" **************************************************************************
 .\"
-.TH curl_version_info 3 "10 June 2009" "libcurl 7.19.6" "libcurl Manual"
+.TH curl_version_info 3 "2 Nov 2014" "libcurl 7.40.0" "libcurl Manual"
 .SH NAME
 curl_version_info - returns run-time libcurl version info
 .SH SYNOPSIS
 .SH NAME
 curl_version_info - returns run-time libcurl version info
 .SH SYNOPSIS
@@ -29,12 +29,13 @@ curl_version_info - returns run-time libcurl version info
 .BI "curl_version_info_data *curl_version_info( CURLversion "type ");"
 .ad
 .SH DESCRIPTION
 .BI "curl_version_info_data *curl_version_info( CURLversion "type ");"
 .ad
 .SH DESCRIPTION
-Returns a pointer to a filled in struct with information about various
-run-time features in libcurl. \fItype\fP should be set to the version of this
-functionality by the time you write your program. This way, libcurl will
-always return a proper struct that your program understands, while programs in
-the future might get a different struct. CURLVERSION_NOW will be the most
-recent one for the library you have installed:
+Returns a pointer to a filled in static struct with information about various
+features in the running version of libcurl. \fItype\fP should be set to the
+version of this functionality by the time you write your program. This way,
+libcurl will always return a proper struct that your program understands,
+while programs in the future might get a different
+struct. \fBCURLVERSION_NOW\fP will be the most recent one for the library you
+have installed:
 
         data = curl_version_info(CURLVERSION_NOW);
 
 
         data = curl_version_info(CURLVERSION_NOW);
 
@@ -65,7 +66,8 @@ typedef struct {
   /* when 'age' is 2 or higher, the member below also exists: */
   const char *libidn;       /* human readable string */
 
   /* when 'age' is 2 or higher, the member below also exists: */
   const char *libidn;       /* human readable string */
 
-  /* when 'age' is 3 or higher, the members below also exist: */
+  /* when 'age' is 3 or higher (7.16.1 or later), the members below also
+     exist  */
   int iconv_ver_num;       /* '_libiconv_version' if iconv support enabled */
 
   const char *libssh_version; /* human readable string */
   int iconv_ver_num;       /* '_libiconv_version' if iconv support enabled */
 
   const char *libssh_version; /* human readable string */
@@ -94,7 +96,10 @@ bits are:
 .IP CURL_VERSION_IPV6
 supports IPv6
 .IP CURL_VERSION_KERBEROS4
 .IP CURL_VERSION_IPV6
 supports IPv6
 .IP CURL_VERSION_KERBEROS4
-supports kerberos4 (when using FTP)
+supports Kerberos V4 (when using FTP)
+.IP CURL_VERSION_KERBEROS5
+supports Kerberos V5 authentication for FTP, IMAP, POP3, SMTP and SOCKSv5 proxy
+(Added in 7.40.0)
 .IP CURL_VERSION_SSL
 supports SSL (HTTPS/FTPS) (Added in 7.10)
 .IP CURL_VERSION_LIBZ
 .IP CURL_VERSION_SSL
 supports SSL (HTTPS/FTPS) (Added in 7.10)
 .IP CURL_VERSION_LIBZ
@@ -122,9 +127,14 @@ libcurl was built with support for IDNA, domain names with international
 letters. (Added in 7.12.0)
 .IP CURL_VERSION_SSPI
 libcurl was built with support for SSPI. This is only available on Windows and
 letters. (Added in 7.12.0)
 .IP CURL_VERSION_SSPI
 libcurl was built with support for SSPI. This is only available on Windows and
-makes libcurl use Windows-provided functions for NTLM authentication. It also
-allows libcurl to use the current user and the current user's password without
-the app having to pass them on. (Added in 7.13.2)
+makes libcurl use Windows-provided functions for Kerberos, NTLM, SPNEGO and
+Digest authentication. It also allows libcurl to use the current user
+credentials without the app having to pass them on. (Added in 7.13.2)
+.IP CURL_VERSION_GSSAPI
+libcurl was built with support for GSS-API. This makes libcurl use provided
+functions for Kerberos and SPNEGO authentication. It also allows libcurl
+to use the current user credentials without the app having to pass them on.
+(Added in 7.38.0)
 .IP CURL_VERSION_CONV
 libcurl was built with support for character conversions, as provided by the
 CURLOPT_CONV_* callbacks. (Added in 7.15.4)
 .IP CURL_VERSION_CONV
 libcurl was built with support for character conversions, as provided by the
 CURLOPT_CONV_* callbacks. (Added in 7.15.4)
@@ -133,12 +143,17 @@ libcurl was built with support for TLS-SRP. (Added in 7.21.4)
 .IP CURL_VERSION_NTLM_WB
 libcurl was built with support for NTLM delegation to a winbind helper.
 (Added in 7.22.0)
 .IP CURL_VERSION_NTLM_WB
 libcurl was built with support for NTLM delegation to a winbind helper.
 (Added in 7.22.0)
+.IP CURL_VERSION_HTTP2
+libcurl was built with support for HTTP2.
+(Added in 7.33.0)
+.IP CURL_VERSION_UNIX_SOCKETS
+libcurl was built with support for Unix domain sockets.
+(Added in 7.40.0)
 .RE
 \fIssl_version\fP is an ASCII string for the OpenSSL version used. If libcurl
 has no SSL support, this is NULL.
 
 .RE
 \fIssl_version\fP is an ASCII string for the OpenSSL version used. If libcurl
 has no SSL support, this is NULL.
 
-\fIssl_version_num\fP is the numerical OpenSSL version value as defined by the
-OpenSSL project. If libcurl has no SSL support, this is 0.
+\fIssl_version_num\fP is always 0.
 
 \fIlibz_version\fP is an ASCII string (there is no numerical version). If
 libcurl has no libz support, this is NULL.
 
 \fIlibz_version\fP is an ASCII string (there is no numerical version). If
 libcurl has no libz support, this is NULL.
index 6da3aaa..793fc2a 100644 (file)
@@ -50,7 +50,7 @@ p.roffit {
 <p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
 <p class="level0"><span Class="bold">curl_version_info_data *curl_version_info( CURLversion type );</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0"><span Class="bold">#include &lt;curl/curl.h&gt;</span> 
 <p class="level0"><span Class="bold">curl_version_info_data *curl_version_info( CURLversion type );</span> 
 <p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">Returns a pointer to a filled in struct with information about various run-time features in libcurl. <span Class="emphasis">type</span> should be set to the version of this functionality by the time you write your program. This way, libcurl will always return a proper struct that your program understands, while programs in the future might get a different struct. CURLVERSION_NOW will be the most recent one for the library you have installed: 
+<p class="level0">Returns a pointer to a filled in static struct with information about various features in the running version of libcurl. <span Class="emphasis">type</span> should be set to the version of this functionality by the time you write your program. This way, libcurl will always return a proper struct that your program understands, while programs in the future might get a different struct. <span Class="bold">CURLVERSION_NOW</span> will be the most recent one for the library you have installed: 
 <p class="level0">&nbsp;       data = curl_version_info(CURLVERSION_NOW); 
 <p class="level0">Applications should use this information to judge if things are possible to do or not, instead of using compile-time checks, as dynamic/DLL libraries can be changed independent of applications. 
 <p class="level0">The curl_version_info_data struct looks like this 
 <p class="level0">&nbsp;       data = curl_version_info(CURLVERSION_NOW); 
 <p class="level0">Applications should use this information to judge if things are possible to do or not, instead of using compile-time checks, as dynamic/DLL libraries can be changed independent of applications. 
 <p class="level0">The curl_version_info_data struct looks like this 
@@ -71,7 +71,8 @@ p.roffit {
  &nbsp; int ares_num;             /* number */
  <p class="level0">&nbsp; /* when 'age' is 2 or higher, the member below also exists: */
  &nbsp; const char *libidn;       /* human readable string */
  &nbsp; int ares_num;             /* number */
  <p class="level0">&nbsp; /* when 'age' is 2 or higher, the member below also exists: */
  &nbsp; const char *libidn;       /* human readable string */
- <p class="level0">&nbsp; /* when 'age' is 3 or higher, the members below also exist: */
+ <p class="level0">&nbsp; /* when 'age' is 3 or higher (7.16.1 or later), the members below also
+ &nbsp;    exist  */
  &nbsp; int iconv_ver_num;       /* '_libiconv_version' if iconv support enabled */
  <p class="level0">&nbsp; const char *libssh_version; /* human readable string */
  <p class="level0">} curl_version_info_data;
  &nbsp; int iconv_ver_num;       /* '_libiconv_version' if iconv support enabled */
  <p class="level0">&nbsp; const char *libssh_version; /* human readable string */
  <p class="level0">} curl_version_info_data;
@@ -87,7 +88,9 @@ p.roffit {
 <p class="level0"><a name="CURLVERSIONIPV6"></a><span class="nroffip">CURL_VERSION_IPV6</span> 
 <p class="level1">supports IPv6 
 <p class="level0"><a name="CURLVERSIONKERBEROS4"></a><span class="nroffip">CURL_VERSION_KERBEROS4</span> 
 <p class="level0"><a name="CURLVERSIONIPV6"></a><span class="nroffip">CURL_VERSION_IPV6</span> 
 <p class="level1">supports IPv6 
 <p class="level0"><a name="CURLVERSIONKERBEROS4"></a><span class="nroffip">CURL_VERSION_KERBEROS4</span> 
-<p class="level1">supports kerberos4 (when using FTP) 
+<p class="level1">supports Kerberos V4 (when using FTP) 
+<p class="level0"><a name="CURLVERSIONKERBEROS5"></a><span class="nroffip">CURL_VERSION_KERBEROS5</span> 
+<p class="level1">supports Kerberos V5 authentication for FTP, IMAP, POP3, SMTP and SOCKSv5 proxy (Added in 7.40.0) 
 <p class="level0"><a name="CURLVERSIONSSL"></a><span class="nroffip">CURL_VERSION_SSL</span> 
 <p class="level1">supports SSL (HTTPS/FTPS) (Added in 7.10) 
 <p class="level0"><a name="CURLVERSIONLIBZ"></a><span class="nroffip">CURL_VERSION_LIBZ</span> 
 <p class="level0"><a name="CURLVERSIONSSL"></a><span class="nroffip">CURL_VERSION_SSL</span> 
 <p class="level1">supports SSL (HTTPS/FTPS) (Added in 7.10) 
 <p class="level0"><a name="CURLVERSIONLIBZ"></a><span class="nroffip">CURL_VERSION_LIBZ</span> 
@@ -109,19 +112,25 @@ p.roffit {
 <p class="level0"><a name="CURLVERSIONIDN"></a><span class="nroffip">CURL_VERSION_IDN</span> 
 <p class="level1">libcurl was built with support for IDNA, domain names with international letters. (Added in 7.12.0) 
 <p class="level0"><a name="CURLVERSIONSSPI"></a><span class="nroffip">CURL_VERSION_SSPI</span> 
 <p class="level0"><a name="CURLVERSIONIDN"></a><span class="nroffip">CURL_VERSION_IDN</span> 
 <p class="level1">libcurl was built with support for IDNA, domain names with international letters. (Added in 7.12.0) 
 <p class="level0"><a name="CURLVERSIONSSPI"></a><span class="nroffip">CURL_VERSION_SSPI</span> 
-<p class="level1">libcurl was built with support for SSPI. This is only available on Windows and makes libcurl use Windows-provided functions for NTLM authentication. It also allows libcurl to use the current user and the current user's password without the app having to pass them on. (Added in 7.13.2) 
+<p class="level1">libcurl was built with support for SSPI. This is only available on Windows and makes libcurl use Windows-provided functions for Kerberos, NTLM, SPNEGO and Digest authentication. It also allows libcurl to use the current user credentials without the app having to pass them on. (Added in 7.13.2) 
+<p class="level0"><a name="CURLVERSIONGSSAPI"></a><span class="nroffip">CURL_VERSION_GSSAPI</span> 
+<p class="level1">libcurl was built with support for GSS-API. This makes libcurl use provided functions for Kerberos and SPNEGO authentication. It also allows libcurl to use the current user credentials without the app having to pass them on. (Added in 7.38.0) 
 <p class="level0"><a name="CURLVERSIONCONV"></a><span class="nroffip">CURL_VERSION_CONV</span> 
 <p class="level1">libcurl was built with support for character conversions, as provided by the CURLOPT_CONV_* callbacks. (Added in 7.15.4) 
 <p class="level0"><a name="CURLVERSIONTLSAUTHSRP"></a><span class="nroffip">CURL_VERSION_TLSAUTH_SRP</span> 
 <p class="level1">libcurl was built with support for TLS-SRP. (Added in 7.21.4) 
 <p class="level0"><a name="CURLVERSIONNTLMWB"></a><span class="nroffip">CURL_VERSION_NTLM_WB</span> 
 <p class="level1">libcurl was built with support for NTLM delegation to a winbind helper. (Added in 7.22.0) 
 <p class="level0"><a name="CURLVERSIONCONV"></a><span class="nroffip">CURL_VERSION_CONV</span> 
 <p class="level1">libcurl was built with support for character conversions, as provided by the CURLOPT_CONV_* callbacks. (Added in 7.15.4) 
 <p class="level0"><a name="CURLVERSIONTLSAUTHSRP"></a><span class="nroffip">CURL_VERSION_TLSAUTH_SRP</span> 
 <p class="level1">libcurl was built with support for TLS-SRP. (Added in 7.21.4) 
 <p class="level0"><a name="CURLVERSIONNTLMWB"></a><span class="nroffip">CURL_VERSION_NTLM_WB</span> 
 <p class="level1">libcurl was built with support for NTLM delegation to a winbind helper. (Added in 7.22.0) 
+<p class="level0"><a name="CURLVERSIONHTTP2"></a><span class="nroffip">CURL_VERSION_HTTP2</span> 
+<p class="level1">libcurl was built with support for HTTP2. (Added in 7.33.0) 
+<p class="level0"><a name="CURLVERSIONUNIXSOCKETS"></a><span class="nroffip">CURL_VERSION_UNIX_SOCKETS</span> 
+<p class="level1">libcurl was built with support for Unix domain sockets. (Added in 7.40.0) 
 <p class="level0"><span Class="emphasis">ssl_version</span> is an ASCII string for the OpenSSL version used. If libcurl has no SSL support, this is NULL. 
 <p class="level0"><span Class="emphasis">ssl_version</span> is an ASCII string for the OpenSSL version used. If libcurl has no SSL support, this is NULL. 
-<p class="level0"><span Class="emphasis">ssl_version_num</span> is the numerical OpenSSL version value as defined by the OpenSSL project. If libcurl has no SSL support, this is 0. 
+<p class="level0"><span Class="emphasis">ssl_version_num</span> is always 0. 
 <p class="level0"><span Class="emphasis">libz_version</span> is an ASCII string (there is no numerical version). If libcurl has no libz support, this is NULL. 
 <p class="level0"><span Class="emphasis">protocols</span> is a pointer to an array of char * pointers, containing the names protocols that libcurl supports (using lowercase letters). The protocol names are the same as would be used in URLs. The array is terminated by a NULL entry. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">A pointer to a curl_version_info_data struct. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
 <p class="level0"><span Class="emphasis">libz_version</span> is an ASCII string (there is no numerical version). If libcurl has no libz support, this is NULL. 
 <p class="level0"><span Class="emphasis">protocols</span> is a pointer to an array of char * pointers, containing the names protocols that libcurl supports (using lowercase letters). The protocol names are the same as would be used in URLs. The array is terminated by a NULL entry. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
 <p class="level0">A pointer to a curl_version_info_data struct. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="emphasis" href="./curl_version.html">curl_version(3)</a> 
+<p class="level0"><a Class="emphasis" href="./curl_version.html">curl_version</a> 
 <p class="level0"><p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
 <p class="level0"><p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 3ca916b..2f9b24f 100644 (file)
Binary files a/docs/libcurl/curl_version_info.pdf and b/docs/libcurl/curl_version_info.pdf differ
index 698a4ce..f8506a2 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH libcurl 3 "12 Aug 2003" "libcurl 7.10.7" "libcurl easy interface"
+.TH libcurl 3 "19 Sep 2014" "libcurl" "libcurl easy interface"
 .SH NAME
 libcurl-easy \- easy interface overview
 .SH DESCRIPTION
 .SH NAME
 libcurl-easy \- easy interface overview
 .SH DESCRIPTION
@@ -33,6 +33,17 @@ without a specified URL as you may have figured out yourself). You might want
 to set some callbacks as well that will be called from the library when data
 is available etc. \fIcurl_easy_setopt(3)\fP is used for all this.
 
 to set some callbacks as well that will be called from the library when data
 is available etc. \fIcurl_easy_setopt(3)\fP is used for all this.
 
+\fICURLOPT_URL(3)\fP is only option you really must set, as otherwise there
+can be no transfer. Another commonly used option is \fICURLOPT_VERBOSE(3)\fP
+that will help you see what libcurl is doing under the hood, very useful when
+debugging for example. The \fIcurl_easy_setopt(3)\fP man page has a full index
+of the over 200 available options.
+
+If you at any point would like to blank all previously set options for a
+single easy handle, you can call \fIcurl_easy_reset(3)\fP and you can also
+make a clone of an easy handle (with all its set options) using
+\fIcurl_easy_duphandle(3)\fP.
+
 When all is setup, you tell libcurl to perform the transfer using
 \fIcurl_easy_perform(3)\fP.  It will then do the entire operation and won't
 return until it is done (successfully or not).
 When all is setup, you tell libcurl to perform the transfer using
 \fIcurl_easy_perform(3)\fP.  It will then do the entire operation and won't
 return until it is done (successfully or not).
@@ -42,4 +53,6 @@ transfer, or if you're done, cleanup the session by calling
 \fIcurl_easy_cleanup(3)\fP. If you want persistent connections, you don't
 cleanup immediately, but instead run ahead and perform other transfers using
 the same easy handle.
 \fIcurl_easy_cleanup(3)\fP. If you want persistent connections, you don't
 cleanup immediately, but instead run ahead and perform other transfers using
 the same easy handle.
-
+.SH "SEE ALSO"
+.BR curl_easy_init "(3)," curl_easy_cleanup "(3)," curl_easy_setopt "(3), "
+.BR libcurl-errors "(3), " libcurl-multi "(3), " libcurl "(3) "
index e10411f..fb1de25 100644 (file)
@@ -47,10 +47,12 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">libcurl-easy - easy interface overview <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">libcurl-easy - easy interface overview <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">When using libcurl's "easy" interface you init your session and get a handle (often referred to as an "easy handle"), which you use as input to the easy interface functions you use. Use <a class="emphasis" href="./curl_easy_init.html">curl_easy_init(3)</a> to get the handle. 
-<p class="level0">You continue by setting all the options you want in the upcoming transfer, the most important among them is the URL itself (you can't transfer anything without a specified URL as you may have figured out yourself). You might want to set some callbacks as well that will be called from the library when data is available etc. <a class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt(3)</a> is used for all this. 
-<p class="level0">When all is setup, you tell libcurl to perform the transfer using <a class="emphasis" href="./curl_easy_perform.html">curl_easy_perform(3)</a>.  It will then do the entire operation and won't return until it is done (successfully or not). 
-<p class="level0">After the transfer has been made, you can set new options and make another transfer, or if you're done, cleanup the session by calling <a class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup(3)</a>. If you want persistent connections, you don't cleanup immediately, but instead run ahead and perform other transfers using the same easy handle. 
-<p class="level0"><p class="roffit">
+<p class="level0">When using libcurl's "easy" interface you init your session and get a handle (often referred to as an "easy handle"), which you use as input to the easy interface functions you use. Use <a Class="emphasis" href="./curl_easy_init.html">curl_easy_init</a> to get the handle. 
+<p class="level0">You continue by setting all the options you want in the upcoming transfer, the most important among them is the URL itself (you can't transfer anything without a specified URL as you may have figured out yourself). You might want to set some callbacks as well that will be called from the library when data is available etc. <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a> is used for all this. 
+<p class="level0"><span Class="emphasis">CURLOPT_URL(3)</span> is only option you really must set, as otherwise there can be no transfer. Another commonly used option is <span Class="emphasis">CURLOPT_VERBOSE(3)</span> that will help you see what libcurl is doing under the hood, very useful when debugging for example. The <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a> man page has a full index of the over 200 available options. 
+<p class="level0">If you at any point would like to blank all previously set options for a single easy handle, you can call <a Class="emphasis" href="./curl_easy_reset.html">curl_easy_reset</a> and you can also make a clone of an easy handle (with all its set options) using <a Class="emphasis" href="./curl_easy_duphandle.html">curl_easy_duphandle</a>. 
+<p class="level0">When all is setup, you tell libcurl to perform the transfer using <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a>.  It will then do the entire operation and won't return until it is done (successfully or not). 
+<p class="level0">After the transfer has been made, you can set new options and make another transfer, or if you're done, cleanup the session by calling <a Class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup</a>. If you want persistent connections, you don't cleanup immediately, but instead run ahead and perform other transfers using the same easy handle. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./curl_easy_init.html">curl_easy_init</a>, <a Class="manpage" href="./curl_easy_cleanup.html">curl_easy_cleanup</a>, <a Class="manpage" href="./curl_easy_setopt.html">curl_easy_setopt</a>, <span Class="manpage"> </span> <a Class="manpage" href="./libcurl-errors.html">libcurl-errors</a>, <a Class="manpage" href="./libcurl-multi.html">libcurl-multi</a>, <a Class="manpage" href="./libcurl.html">libcurl</a>, <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 01bf41d..1539974 100644 (file)
Binary files a/docs/libcurl/libcurl-easy.pdf and b/docs/libcurl/libcurl-easy.pdf differ
index 7b68237..07091b5 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -28,11 +28,11 @@ This man page includes most, if not all, available error codes in libcurl.
 Why they occur and possibly what you can do to fix the problem are also included.
 .SH "CURLcode"
 Almost all "easy" interface functions return a CURLcode error code. No matter
 Why they occur and possibly what you can do to fix the problem are also included.
 .SH "CURLcode"
 Almost all "easy" interface functions return a CURLcode error code. No matter
-what, using the \fIcurl_easy_setopt(3)\fP option \fICURLOPT_ERRORBUFFER\fP is
-a good idea as it will give you a human readable error string that may offer
-more details about the cause of the error than just the error code.
-\fIcurl_easy_strerror(3)\fP can be called to get an error string from a
-given CURLcode number.
+what, using the \fIcurl_easy_setopt(3)\fP option \fICURLOPT_ERRORBUFFER(3)\fP
+is a good idea as it will give you a human readable error string that may
+offer more details about the cause of the error than just the error code.
+\fIcurl_easy_strerror(3)\fP can be called to get an error string from a given
+CURLcode number.
 
 CURLcode is one of the following:
 .IP "CURLE_OK (0)"
 
 CURLcode is one of the following:
 .IP "CURLE_OK (0)"
@@ -74,7 +74,7 @@ After having sent the FTP password to the server, libcurl expects a proper
 reply. This error code indicates that an unexpected code was returned.
 .IP "CURLE_FTP_ACCEPT_TIMEOUT (12)"
 During an active FTP session while waiting for the server to connect, the
 reply. This error code indicates that an unexpected code was returned.
 .IP "CURLE_FTP_ACCEPT_TIMEOUT (12)"
 During an active FTP session while waiting for the server to connect, the
-\fICURLOPT_ACCEPTTIMOUT_MS\fP (or the internal default) timeout expired.
+\fICURLOPT_ACCEPTTIMOUT_MS(3)\fP (or the internal default) timeout expired.
 .IP "CURLE_FTP_WEIRD_PASV_REPLY (13)"
 libcurl failed to get a sensible result back from the server as a response to
 either a PASV or a EPSV command. The server is flawed.
 .IP "CURLE_FTP_WEIRD_PASV_REPLY (13)"
 libcurl failed to get a sensible result back from the server as a response to
 either a PASV or a EPSV command. The server is flawed.
@@ -83,6 +83,9 @@ FTP servers return a 227-line as a response to a PASV command. If libcurl
 fails to parse that line, this return code is passed back.
 .IP "CURLE_FTP_CANT_GET_HOST (15)"
 An internal failure to lookup the host used for the new connection.
 fails to parse that line, this return code is passed back.
 .IP "CURLE_FTP_CANT_GET_HOST (15)"
 An internal failure to lookup the host used for the new connection.
+.IP "CURLE_HTTP2 (16)"
+A problem was detected in the HTTP2 framing layer. This is somewhat generic
+and can be one out of several problems, see the error buffer for details.
 .IP "CURLE_FTP_COULDNT_SET_TYPE (17)"
 Received an error when trying to set the transfer mode to binary or ASCII.
 .IP "CURLE_PARTIAL_FILE (18)"
 .IP "CURLE_FTP_COULDNT_SET_TYPE (17)"
 Received an error when trying to set the transfer mode to binary or ASCII.
 .IP "CURLE_PARTIAL_FILE (18)"
@@ -97,8 +100,8 @@ When sending custom "QUOTE" commands to the remote server, one of the commands
 returned an error code that was 400 or higher (for FTP) or otherwise
 indicated unsuccessful completion of the command.
 .IP "CURLE_HTTP_RETURNED_ERROR (22)"
 returned an error code that was 400 or higher (for FTP) or otherwise
 indicated unsuccessful completion of the command.
 .IP "CURLE_HTTP_RETURNED_ERROR (22)"
-This is returned if CURLOPT_FAILONERROR is set TRUE and the HTTP server
-returns an error code that is >= 400.
+This is returned if \fICURLOPT_FAILONERROR(3)\fP is set TRUE and the HTTP
+server returns an error code that is >= 400.
 .IP "CURLE_WRITE_ERROR (23)"
 An error occurred when writing received data to a local file, or an error was
 returned to libcurl from a write callback.
 .IP "CURLE_WRITE_ERROR (23)"
 An error occurred when writing received data to a local file, or an error was
 returned to libcurl from a write callback.
@@ -116,7 +119,8 @@ Operation timeout. The specified time-out period was reached according to the
 conditions.
 .IP "CURLE_FTP_PORT_FAILED (30)"
 The FTP PORT command returned error. This mostly happens when you haven't
 conditions.
 .IP "CURLE_FTP_PORT_FAILED (30)"
 The FTP PORT command returned error. This mostly happens when you haven't
-specified a good enough address for libcurl to use. See \fICURLOPT_FTPPORT\fP.
+specified a good enough address for libcurl to use. See
+\fICURLOPT_FTPPORT(3)\fP.
 .IP "CURLE_FTP_COULDNT_USE_REST (31)"
 The FTP REST command returned error. This should never happen if the server is
 sane.
 .IP "CURLE_FTP_COULDNT_USE_REST (31)"
 The FTP REST command returned error. This should never happen if the server is
 sane.
@@ -148,10 +152,10 @@ Internal error. A function was called with a bad parameter.
 .IP "CURLE_INTERFACE_FAILED (45)"
 Interface error. A specified outgoing interface could not be used. Set which
 interface to use for outgoing connections' source IP address with
 .IP "CURLE_INTERFACE_FAILED (45)"
 Interface error. A specified outgoing interface could not be used. Set which
 interface to use for outgoing connections' source IP address with
-CURLOPT_INTERFACE.
+\fICURLOPT_INTERFACE(3)\fP.
 .IP "CURLE_TOO_MANY_REDIRECTS (47)"
 Too many redirects. When following redirects, libcurl hit the maximum amount.
 .IP "CURLE_TOO_MANY_REDIRECTS (47)"
 Too many redirects. When following redirects, libcurl hit the maximum amount.
-Set your limit with CURLOPT_MAXREDIRS.
+Set your limit with \fICURLOPT_MAXREDIRS(3)\fP.
 .IP "CURLE_UNKNOWN_OPTION (48)"
 An option passed to libcurl is not recognized/known. Refer to the appropriate
 documentation. This is most likely a problem in the program that uses
 .IP "CURLE_UNKNOWN_OPTION (48)"
 An option passed to libcurl is not recognized/known. Refer to the appropriate
 documentation. This is most likely a problem in the program that uses
@@ -229,7 +233,7 @@ Failed to load CRL file (Added in 7.19.0)
 Issuer check failed (Added in 7.19.0)
 .IP "CURLE_FTP_PRET_FAILED (84)"
 The FTP server does not understand the PRET command at all or does not support
 Issuer check failed (Added in 7.19.0)
 .IP "CURLE_FTP_PRET_FAILED (84)"
 The FTP server does not understand the PRET command at all or does not support
-the given argument. Be careful when using \fICURLOPT_CUSTOMREQUEST\fP, a
+the given argument. Be careful when using \fICURLOPT_CUSTOMREQUEST(3)\fP, a
 custom LIST command will be sent with PRET CMD before PASV as well. (Added in
 7.20.0)
 .IP "CURLE_RTSP_CSEQ_ERROR (85)"
 custom LIST command will be sent with PRET CMD before PASV as well. (Added in
 7.20.0)
 .IP "CURLE_RTSP_CSEQ_ERROR (85)"
@@ -273,6 +277,9 @@ The passed-in socket is not a valid one that libcurl already knows about.
 .IP "CURLM_UNKNOWN_OPTION (6)"
 curl_multi_setopt() with unsupported option
 (Added in 7.15.4)
 .IP "CURLM_UNKNOWN_OPTION (6)"
 curl_multi_setopt() with unsupported option
 (Added in 7.15.4)
+.IP "CURLM_ADDED_ALREADY (7)"
+An easy handle already added to a multi handle was attempted to get added a
+second time. (Added in 7.32.1)
 .SH "CURLSHcode"
 The "share" interface will return a CURLSHcode to indicate when an error has
 occurred.  Also consider \fIcurl_share_strerror(3)\fP.
 .SH "CURLSHcode"
 The "share" interface will return a CURLSHcode to indicate when an error has
 occurred.  Also consider \fIcurl_share_strerror(3)\fP.
@@ -290,3 +297,7 @@ Not enough memory was available.
 .IP "CURLSHE_NOT_BUILT_IN (5)"
 The requested sharing could not be done because the library you use don't have
 that particular feature enabled. (Added in 7.23.0)
 .IP "CURLSHE_NOT_BUILT_IN (5)"
 The requested sharing could not be done because the library you use don't have
 that particular feature enabled. (Added in 7.23.0)
+.SH "SEE ALSO"
+.BR curl_easy_strerror "(3), " curl_multi_strerror "(3), "
+.BR curl_share_strerror "(3), " CURLOPT_ERRORBUFFER "(3), "
+.BR CURLOPT_VERBOSE "(3), " CURLOPT_DEBUGFUNCTION "(3) "
index 194b150..8c9f47b 100644 (file)
@@ -48,7 +48,7 @@ p.roffit {
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">libcurl-errors - error codes in libcurl <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">This man page includes most, if not all, available error codes in libcurl. Why they occur and possibly what you can do to fix the problem are also included. <a name="CURLcode"></a><h2 class="nroffsh">CURLcode</h2>
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">libcurl-errors - error codes in libcurl <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 <p class="level0">This man page includes most, if not all, available error codes in libcurl. Why they occur and possibly what you can do to fix the problem are also included. <a name="CURLcode"></a><h2 class="nroffsh">CURLcode</h2>
-<p class="level0">Almost all "easy" interface functions return a CURLcode error code. No matter what, using the <a class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt(3)</a> option <span Class="emphasis">CURLOPT_ERRORBUFFER</span> is a good idea as it will give you a human readable error string that may offer more details about the cause of the error than just the error code. <a class="emphasis" href="./curl_easy_strerror.html">curl_easy_strerror(3)</a> can be called to get an error string from a given CURLcode number. 
+<p class="level0">Almost all "easy" interface functions return a CURLcode error code. No matter what, using the <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a> option <span Class="emphasis">CURLOPT_ERRORBUFFER(3)</span> is a good idea as it will give you a human readable error string that may offer more details about the cause of the error than just the error code. <a Class="emphasis" href="./curl_easy_strerror.html">curl_easy_strerror</a> can be called to get an error string from a given CURLcode number. 
 <p class="level0">CURLcode is one of the following: 
 <p class="level0"><a name="CURLEOK"></a><span class="nroffip">CURLE_OK (0)</span> 
 <p class="level1">All fine. Proceed as usual. 
 <p class="level0">CURLcode is one of the following: 
 <p class="level0"><a name="CURLEOK"></a><span class="nroffip">CURLE_OK (0)</span> 
 <p class="level1">All fine. Proceed as usual. 
@@ -75,13 +75,15 @@ p.roffit {
 <p class="level0"><a name="CURLEFTPWEIRDPASSREPLY"></a><span class="nroffip">CURLE_FTP_WEIRD_PASS_REPLY (11)</span> 
 <p class="level1">After having sent the FTP password to the server, libcurl expects a proper reply. This error code indicates that an unexpected code was returned. 
 <p class="level0"><a name="CURLEFTPACCEPTTIMEOUT"></a><span class="nroffip">CURLE_FTP_ACCEPT_TIMEOUT (12)</span> 
 <p class="level0"><a name="CURLEFTPWEIRDPASSREPLY"></a><span class="nroffip">CURLE_FTP_WEIRD_PASS_REPLY (11)</span> 
 <p class="level1">After having sent the FTP password to the server, libcurl expects a proper reply. This error code indicates that an unexpected code was returned. 
 <p class="level0"><a name="CURLEFTPACCEPTTIMEOUT"></a><span class="nroffip">CURLE_FTP_ACCEPT_TIMEOUT (12)</span> 
-<p class="level1">During an active FTP session while waiting for the server to connect, the <span Class="emphasis">CURLOPT_ACCEPTTIMOUT_MS</span> (or the internal default) timeout expired. 
+<p class="level1">During an active FTP session while waiting for the server to connect, the <span Class="emphasis">CURLOPT_ACCEPTTIMOUT_MS(3)</span> (or the internal default) timeout expired. 
 <p class="level0"><a name="CURLEFTPWEIRDPASVREPLY"></a><span class="nroffip">CURLE_FTP_WEIRD_PASV_REPLY (13)</span> 
 <p class="level1">libcurl failed to get a sensible result back from the server as a response to either a PASV or a EPSV command. The server is flawed. 
 <p class="level0"><a name="CURLEFTPWEIRD227FORMAT"></a><span class="nroffip">CURLE_FTP_WEIRD_227_FORMAT (14)</span> 
 <p class="level1">FTP servers return a 227-line as a response to a PASV command. If libcurl fails to parse that line, this return code is passed back. 
 <p class="level0"><a name="CURLEFTPCANTGETHOST"></a><span class="nroffip">CURLE_FTP_CANT_GET_HOST (15)</span> 
 <p class="level1">An internal failure to lookup the host used for the new connection. 
 <p class="level0"><a name="CURLEFTPWEIRDPASVREPLY"></a><span class="nroffip">CURLE_FTP_WEIRD_PASV_REPLY (13)</span> 
 <p class="level1">libcurl failed to get a sensible result back from the server as a response to either a PASV or a EPSV command. The server is flawed. 
 <p class="level0"><a name="CURLEFTPWEIRD227FORMAT"></a><span class="nroffip">CURLE_FTP_WEIRD_227_FORMAT (14)</span> 
 <p class="level1">FTP servers return a 227-line as a response to a PASV command. If libcurl fails to parse that line, this return code is passed back. 
 <p class="level0"><a name="CURLEFTPCANTGETHOST"></a><span class="nroffip">CURLE_FTP_CANT_GET_HOST (15)</span> 
 <p class="level1">An internal failure to lookup the host used for the new connection. 
+<p class="level0"><a name="CURLEHTTP2"></a><span class="nroffip">CURLE_HTTP2 (16)</span> 
+<p class="level1">A problem was detected in the HTTP2 framing layer. This is somewhat generic and can be one out of several problems, see the error buffer for details. 
 <p class="level0"><a name="CURLEFTPCOULDNTSETTYPE"></a><span class="nroffip">CURLE_FTP_COULDNT_SET_TYPE (17)</span> 
 <p class="level1">Received an error when trying to set the transfer mode to binary or ASCII. 
 <p class="level0"><a name="CURLEPARTIALFILE"></a><span class="nroffip">CURLE_PARTIAL_FILE (18)</span> 
 <p class="level0"><a name="CURLEFTPCOULDNTSETTYPE"></a><span class="nroffip">CURLE_FTP_COULDNT_SET_TYPE (17)</span> 
 <p class="level1">Received an error when trying to set the transfer mode to binary or ASCII. 
 <p class="level0"><a name="CURLEPARTIALFILE"></a><span class="nroffip">CURLE_PARTIAL_FILE (18)</span> 
@@ -91,7 +93,7 @@ p.roffit {
 <p class="level0"><a name="CURLEQUOTEERROR"></a><span class="nroffip">CURLE_QUOTE_ERROR (21)</span> 
 <p class="level1">When sending custom "QUOTE" commands to the remote server, one of the commands returned an error code that was 400 or higher (for FTP) or otherwise indicated unsuccessful completion of the command. 
 <p class="level0"><a name="CURLEHTTPRETURNEDERROR"></a><span class="nroffip">CURLE_HTTP_RETURNED_ERROR (22)</span> 
 <p class="level0"><a name="CURLEQUOTEERROR"></a><span class="nroffip">CURLE_QUOTE_ERROR (21)</span> 
 <p class="level1">When sending custom "QUOTE" commands to the remote server, one of the commands returned an error code that was 400 or higher (for FTP) or otherwise indicated unsuccessful completion of the command. 
 <p class="level0"><a name="CURLEHTTPRETURNEDERROR"></a><span class="nroffip">CURLE_HTTP_RETURNED_ERROR (22)</span> 
-<p class="level1">This is returned if CURLOPT_FAILONERROR is set TRUE and the HTTP server returns an error code that is &gt;= 400. 
+<p class="level1">This is returned if <span Class="emphasis">CURLOPT_FAILONERROR(3)</span> is set TRUE and the HTTP server returns an error code that is &gt;= 400. 
 <p class="level0"><a name="CURLEWRITEERROR"></a><span class="nroffip">CURLE_WRITE_ERROR (23)</span> 
 <p class="level1">An error occurred when writing received data to a local file, or an error was returned to libcurl from a write callback. 
 <p class="level0"><a name="CURLEUPLOADFAILED"></a><span class="nroffip">CURLE_UPLOAD_FAILED (25)</span> 
 <p class="level0"><a name="CURLEWRITEERROR"></a><span class="nroffip">CURLE_WRITE_ERROR (23)</span> 
 <p class="level1">An error occurred when writing received data to a local file, or an error was returned to libcurl from a write callback. 
 <p class="level0"><a name="CURLEUPLOADFAILED"></a><span class="nroffip">CURLE_UPLOAD_FAILED (25)</span> 
@@ -103,7 +105,7 @@ p.roffit {
 <p class="level0"><a name="CURLEOPERATIONTIMEDOUT"></a><span class="nroffip">CURLE_OPERATION_TIMEDOUT (28)</span> 
 <p class="level1">Operation timeout. The specified time-out period was reached according to the conditions. 
 <p class="level0"><a name="CURLEFTPPORTFAILED"></a><span class="nroffip">CURLE_FTP_PORT_FAILED (30)</span> 
 <p class="level0"><a name="CURLEOPERATIONTIMEDOUT"></a><span class="nroffip">CURLE_OPERATION_TIMEDOUT (28)</span> 
 <p class="level1">Operation timeout. The specified time-out period was reached according to the conditions. 
 <p class="level0"><a name="CURLEFTPPORTFAILED"></a><span class="nroffip">CURLE_FTP_PORT_FAILED (30)</span> 
-<p class="level1">The FTP PORT command returned error. This mostly happens when you haven't specified a good enough address for libcurl to use. See <span Class="emphasis">CURLOPT_FTPPORT</span>. 
+<p class="level1">The FTP PORT command returned error. This mostly happens when you haven't specified a good enough address for libcurl to use. See <span Class="emphasis">CURLOPT_FTPPORT(3)</span>. 
 <p class="level0"><a name="CURLEFTPCOULDNTUSEREST"></a><span class="nroffip">CURLE_FTP_COULDNT_USE_REST (31)</span> 
 <p class="level1">The FTP REST command returned error. This should never happen if the server is sane. 
 <p class="level0"><a name="CURLERANGEERROR"></a><span class="nroffip">CURLE_RANGE_ERROR (33)</span> 
 <p class="level0"><a name="CURLEFTPCOULDNTUSEREST"></a><span class="nroffip">CURLE_FTP_COULDNT_USE_REST (31)</span> 
 <p class="level1">The FTP REST command returned error. This should never happen if the server is sane. 
 <p class="level0"><a name="CURLERANGEERROR"></a><span class="nroffip">CURLE_RANGE_ERROR (33)</span> 
@@ -127,9 +129,9 @@ p.roffit {
 <p class="level0"><a name="CURLEBADFUNCTIONARGUMENT"></a><span class="nroffip">CURLE_BAD_FUNCTION_ARGUMENT (43)</span> 
 <p class="level1">Internal error. A function was called with a bad parameter. 
 <p class="level0"><a name="CURLEINTERFACEFAILED"></a><span class="nroffip">CURLE_INTERFACE_FAILED (45)</span> 
 <p class="level0"><a name="CURLEBADFUNCTIONARGUMENT"></a><span class="nroffip">CURLE_BAD_FUNCTION_ARGUMENT (43)</span> 
 <p class="level1">Internal error. A function was called with a bad parameter. 
 <p class="level0"><a name="CURLEINTERFACEFAILED"></a><span class="nroffip">CURLE_INTERFACE_FAILED (45)</span> 
-<p class="level1">Interface error. A specified outgoing interface could not be used. Set which interface to use for outgoing connections' source IP address with CURLOPT_INTERFACE
+<p class="level1">Interface error. A specified outgoing interface could not be used. Set which interface to use for outgoing connections' source IP address with <span Class="emphasis">CURLOPT_INTERFACE(3)</span>
 <p class="level0"><a name="CURLETOOMANYREDIRECTS"></a><span class="nroffip">CURLE_TOO_MANY_REDIRECTS (47)</span> 
 <p class="level0"><a name="CURLETOOMANYREDIRECTS"></a><span class="nroffip">CURLE_TOO_MANY_REDIRECTS (47)</span> 
-<p class="level1">Too many redirects. When following redirects, libcurl hit the maximum amount. Set your limit with CURLOPT_MAXREDIRS
+<p class="level1">Too many redirects. When following redirects, libcurl hit the maximum amount. Set your limit with <span Class="emphasis">CURLOPT_MAXREDIRS(3)</span>
 <p class="level0"><a name="CURLEUNKNOWNOPTION"></a><span class="nroffip">CURLE_UNKNOWN_OPTION (48)</span> 
 <p class="level1">An option passed to libcurl is not recognized/known. Refer to the appropriate documentation. This is most likely a problem in the program that uses libcurl. The error buffer might contain more specific information about which exact option it concerns. 
 <p class="level0"><a name="CURLETELNETOPTIONSYNTAX"></a><span class="nroffip">CURLE_TELNET_OPTION_SYNTAX (49)</span> 
 <p class="level0"><a name="CURLEUNKNOWNOPTION"></a><span class="nroffip">CURLE_UNKNOWN_OPTION (48)</span> 
 <p class="level1">An option passed to libcurl is not recognized/known. Refer to the appropriate documentation. This is most likely a problem in the program that uses libcurl. The error buffer might contain more specific information about which exact option it concerns. 
 <p class="level0"><a name="CURLETELNETOPTIONSYNTAX"></a><span class="nroffip">CURLE_TELNET_OPTION_SYNTAX (49)</span> 
@@ -193,13 +195,13 @@ p.roffit {
 <p class="level0"><a name="CURLESSLSHUTDOWNFAILED"></a><span class="nroffip">CURLE_SSL_SHUTDOWN_FAILED (80)</span> 
 <p class="level1">Failed to shut down the SSL connection. 
 <p class="level0"><a name="CURLEAGAIN"></a><span class="nroffip">CURLE_AGAIN (81)</span> 
 <p class="level0"><a name="CURLESSLSHUTDOWNFAILED"></a><span class="nroffip">CURLE_SSL_SHUTDOWN_FAILED (80)</span> 
 <p class="level1">Failed to shut down the SSL connection. 
 <p class="level0"><a name="CURLEAGAIN"></a><span class="nroffip">CURLE_AGAIN (81)</span> 
-<p class="level1">Socket is not ready for send/recv wait till it's ready and try again. This return code is only returned from <a class="emphasis" href="./curl_easy_recv.html">curl_easy_recv(3)</a> and <a class="emphasis" href="./curl_easy_send.html">curl_easy_send(3)</a> (Added in 7.18.2) 
+<p class="level1">Socket is not ready for send/recv wait till it's ready and try again. This return code is only returned from <a Class="emphasis" href="./curl_easy_recv.html">curl_easy_recv</a> and <a Class="emphasis" href="./curl_easy_send.html">curl_easy_send</a> (Added in 7.18.2) 
 <p class="level0"><a name="CURLESSLCRLBADFILE"></a><span class="nroffip">CURLE_SSL_CRL_BADFILE (82)</span> 
 <p class="level1">Failed to load CRL file (Added in 7.19.0) 
 <p class="level0"><a name="CURLESSLISSUERERROR"></a><span class="nroffip">CURLE_SSL_ISSUER_ERROR (83)</span> 
 <p class="level1">Issuer check failed (Added in 7.19.0) 
 <p class="level0"><a name="CURLEFTPPRETFAILED"></a><span class="nroffip">CURLE_FTP_PRET_FAILED (84)</span> 
 <p class="level0"><a name="CURLESSLCRLBADFILE"></a><span class="nroffip">CURLE_SSL_CRL_BADFILE (82)</span> 
 <p class="level1">Failed to load CRL file (Added in 7.19.0) 
 <p class="level0"><a name="CURLESSLISSUERERROR"></a><span class="nroffip">CURLE_SSL_ISSUER_ERROR (83)</span> 
 <p class="level1">Issuer check failed (Added in 7.19.0) 
 <p class="level0"><a name="CURLEFTPPRETFAILED"></a><span class="nroffip">CURLE_FTP_PRET_FAILED (84)</span> 
-<p class="level1">The FTP server does not understand the PRET command at all or does not support the given argument. Be careful when using <span Class="emphasis">CURLOPT_CUSTOMREQUEST</span>, a custom LIST command will be sent with PRET CMD before PASV as well. (Added in 7.20.0) 
+<p class="level1">The FTP server does not understand the PRET command at all or does not support the given argument. Be careful when using <span Class="emphasis">CURLOPT_CUSTOMREQUEST(3)</span>, a custom LIST command will be sent with PRET CMD before PASV as well. (Added in 7.20.0) 
 <p class="level0"><a name="CURLERTSPCSEQERROR"></a><span class="nroffip">CURLE_RTSP_CSEQ_ERROR (85)</span> 
 <p class="level1">Mismatch of RTSP CSeq numbers. 
 <p class="level0"><a name="CURLERTSPSESSIONERROR"></a><span class="nroffip">CURLE_RTSP_SESSION_ERROR (86)</span> 
 <p class="level0"><a name="CURLERTSPCSEQERROR"></a><span class="nroffip">CURLE_RTSP_CSEQ_ERROR (85)</span> 
 <p class="level1">Mismatch of RTSP CSeq numbers. 
 <p class="level0"><a name="CURLERTSPSESSIONERROR"></a><span class="nroffip">CURLE_RTSP_SESSION_ERROR (86)</span> 
@@ -212,9 +214,9 @@ p.roffit {
 <p class="level1">(For internal use only, will never be returned by libcurl) No connection available, the session will be queued. (added in 7.30.0) 
 <p class="level0"><a name="CURLEOBSOLETE"></a><span class="nroffip">CURLE_OBSOLETE*</span> 
 <p class="level1">These error codes will never be returned. They were used in an old libcurl version and are currently unused. <a name="CURLMcode"></a><h2 class="nroffsh">CURLMcode</h2>
 <p class="level1">(For internal use only, will never be returned by libcurl) No connection available, the session will be queued. (added in 7.30.0) 
 <p class="level0"><a name="CURLEOBSOLETE"></a><span class="nroffip">CURLE_OBSOLETE*</span> 
 <p class="level1">These error codes will never be returned. They were used in an old libcurl version and are currently unused. <a name="CURLMcode"></a><h2 class="nroffsh">CURLMcode</h2>
-<p class="level0">This is the generic return code used by functions in the libcurl multi interface. Also consider <a class="emphasis" href="./curl_multi_strerror.html">curl_multi_strerror(3)</a>. 
+<p class="level0">This is the generic return code used by functions in the libcurl multi interface. Also consider <a Class="emphasis" href="./curl_multi_strerror.html">curl_multi_strerror</a>. 
 <p class="level0"><a name="CURLMCALLMULTIPERFORM"></a><span class="nroffip">CURLM_CALL_MULTI_PERFORM (-1)</span> 
 <p class="level0"><a name="CURLMCALLMULTIPERFORM"></a><span class="nroffip">CURLM_CALL_MULTI_PERFORM (-1)</span> 
-<p class="level1">This is not really an error. It means you should call <a class="emphasis" href="./curl_multi_perform.html">curl_multi_perform(3)</a> again without doing select() or similar in between. Before version 7.20.0 this could be returned by <a class="emphasis" href="./curl_multi_perform.html">curl_multi_perform(3)</a>, but in later versions this return code is never used. 
+<p class="level1">This is not really an error. It means you should call <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a> again without doing select() or similar in between. Before version 7.20.0 this could be returned by <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a>, but in later versions this return code is never used. 
 <p class="level0"><a name="CURLMOK"></a><span class="nroffip">CURLM_OK (0)</span> 
 <p class="level1">Things are fine. 
 <p class="level0"><a name="CURLMBADHANDLE"></a><span class="nroffip">CURLM_BAD_HANDLE (1)</span> 
 <p class="level0"><a name="CURLMOK"></a><span class="nroffip">CURLM_OK (0)</span> 
 <p class="level1">Things are fine. 
 <p class="level0"><a name="CURLMBADHANDLE"></a><span class="nroffip">CURLM_BAD_HANDLE (1)</span> 
@@ -228,8 +230,10 @@ p.roffit {
 <p class="level0"><a name="CURLMBADSOCKET"></a><span class="nroffip">CURLM_BAD_SOCKET (5)</span> 
 <p class="level1">The passed-in socket is not a valid one that libcurl already knows about. (Added in 7.15.4) 
 <p class="level0"><a name="CURLMUNKNOWNOPTION"></a><span class="nroffip">CURLM_UNKNOWN_OPTION (6)</span> 
 <p class="level0"><a name="CURLMBADSOCKET"></a><span class="nroffip">CURLM_BAD_SOCKET (5)</span> 
 <p class="level1">The passed-in socket is not a valid one that libcurl already knows about. (Added in 7.15.4) 
 <p class="level0"><a name="CURLMUNKNOWNOPTION"></a><span class="nroffip">CURLM_UNKNOWN_OPTION (6)</span> 
-<p class="level1">curl_multi_setopt() with unsupported option (Added in 7.15.4) <a name="CURLSHcode"></a><h2 class="nroffsh">CURLSHcode</h2>
-<p class="level0">The "share" interface will return a CURLSHcode to indicate when an error has occurred.  Also consider <a class="emphasis" href="./curl_share_strerror.html">curl_share_strerror(3)</a>. 
+<p class="level1">curl_multi_setopt() with unsupported option (Added in 7.15.4) 
+<p class="level0"><a name="CURLMADDEDALREADY"></a><span class="nroffip">CURLM_ADDED_ALREADY (7)</span> 
+<p class="level1">An easy handle already added to a multi handle was attempted to get added a second time. (Added in 7.32.1) <a name="CURLSHcode"></a><h2 class="nroffsh">CURLSHcode</h2>
+<p class="level0">The "share" interface will return a CURLSHcode to indicate when an error has occurred.  Also consider <a Class="emphasis" href="./curl_share_strerror.html">curl_share_strerror</a>. 
 <p class="level0"><a name="CURLSHEOK"></a><span class="nroffip">CURLSHE_OK (0)</span> 
 <p class="level1">All fine. Proceed as usual. 
 <p class="level0"><a name="CURLSHEBADOPTION"></a><span class="nroffip">CURLSHE_BAD_OPTION (1)</span> 
 <p class="level0"><a name="CURLSHEOK"></a><span class="nroffip">CURLSHE_OK (0)</span> 
 <p class="level1">All fine. Proceed as usual. 
 <p class="level0"><a name="CURLSHEBADOPTION"></a><span class="nroffip">CURLSHE_BAD_OPTION (1)</span> 
@@ -241,6 +245,7 @@ p.roffit {
 <p class="level0"><a name="CURLSHENOMEM"></a><span class="nroffip">CURLSHE_NOMEM (4)</span> 
 <p class="level1">Not enough memory was available. (Added in 7.12.0) 
 <p class="level0"><a name="CURLSHENOTBUILTIN"></a><span class="nroffip">CURLSHE_NOT_BUILT_IN (5)</span> 
 <p class="level0"><a name="CURLSHENOMEM"></a><span class="nroffip">CURLSHE_NOMEM (4)</span> 
 <p class="level1">Not enough memory was available. (Added in 7.12.0) 
 <p class="level0"><a name="CURLSHENOTBUILTIN"></a><span class="nroffip">CURLSHE_NOT_BUILT_IN (5)</span> 
-<p class="level1">The requested sharing could not be done because the library you use don't have that particular feature enabled. (Added in 7.23.0) <p class="roffit">
+<p class="level1">The requested sharing could not be done because the library you use don't have that particular feature enabled. (Added in 7.23.0) <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./curl_easy_strerror.html">curl_easy_strerror</a>, <a Class="manpage" href="./curl_multi_strerror.html">curl_multi_strerror</a>, <span Class="manpage"> </span> <a Class="manpage" href="./curl_share_strerror.html">curl_share_strerror</a>, <span Class="manpage">  CURLOPT_ERRORBUFFER (3)</span> <span Class="manpage"> </span> <span Class="manpage">CURLOPT_VERBOSE (3)</span> <span Class="manpage">  CURLOPT_DEBUGFUNCTION (3) </span> <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 42c1162..351c1b8 100644 (file)
Binary files a/docs/libcurl/libcurl-errors.pdf and b/docs/libcurl/libcurl-errors.pdf differ
index 2af0299..770d4a5 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
 .\" *
 .\" **************************************************************************
 .\"
-.TH libcurl-multi 3 "3 Feb 2007" "libcurl 7.16.0" "libcurl multi interface"
+.TH libcurl-multi 3 "19 Sep 2014" "libcurl" "libcurl multi interface"
 .SH NAME
 libcurl-multi \- how to use the multi interface
 .SH DESCRIPTION
 .SH NAME
 libcurl-multi \- how to use the multi interface
 .SH DESCRIPTION
@@ -43,18 +43,28 @@ complicated for the application.
 
 3. Enable the application to wait for action on its own file descriptors and
 curl's file descriptors simultaneous easily.
 
 3. Enable the application to wait for action on its own file descriptors and
 curl's file descriptors simultaneous easily.
+
+4. Enable event-based handling and scaling transfers up to and beyond
+thousands of parallel connections.
 .SH "ONE MULTI HANDLE MANY EASY HANDLES"
 To use the multi interface, you must first create a 'multi handle' with
 \fIcurl_multi_init(3)\fP. This handle is then used as input to all further
 curl_multi_* functions.
 
 .SH "ONE MULTI HANDLE MANY EASY HANDLES"
 To use the multi interface, you must first create a 'multi handle' with
 \fIcurl_multi_init(3)\fP. This handle is then used as input to all further
 curl_multi_* functions.
 
-Each single transfer is built up with an easy handle. You must create them,
-and setup the appropriate options for each easy handle, as outlined in the
-\fIlibcurl(3)\fP man page, using \fIcurl_easy_setopt(3)\fP.
+With a multi handle and the multi interface you can do any amount of
+simultaneous transfers in parallel. Each single transfer is built up around an
+easy handle. You must create the easy handles you need, and setup the
+appropriate options for each easy handle, as outlined in the \fIlibcurl(3)\fP
+man page, using \fIcurl_easy_setopt(3)\fP.
+
+There are two flavours of the multi interface, the select() oriented one and
+the event based one we called multi_socket. You will benefit from reading
+through the description of both versions to full understand how they work and
+differentiate. We start out with the select() oriented version.
 
 
-When the easy handle is setup for a transfer, then instead of using
-\fIcurl_easy_perform(3)\fP (as when using the easy interface for transfers),
-you should instead add the easy handle to the multi handle using
+When an easy handle is setup for a transfer, then instead of using
+\fIcurl_easy_perform(3)\fP like when using the easy interface for transfers,
+you should add the easy handle to the multi handle with
 \fIcurl_multi_add_handle(3)\fP. The multi handle is sometimes referred to as a
 \'multi stack\' because of the fact that it may hold a large amount of easy
 handles.
 \fIcurl_multi_add_handle(3)\fP. The multi handle is sometimes referred to as a
 \'multi stack\' because of the fact that it may hold a large amount of easy
 handles.
@@ -71,7 +81,8 @@ application drive. You drive the transfers by invoking
 anything available to transfer. It'll use the callbacks and everything else
 you have setup in the individual easy handles. It'll transfer data on all
 current transfers in the multi stack that are ready to transfer anything. It
 anything available to transfer. It'll use the callbacks and everything else
 you have setup in the individual easy handles. It'll transfer data on all
 current transfers in the multi stack that are ready to transfer anything. It
-may be all, it may be none.
+may be all, it may be none. When there's nothing more to do for now, it
+returns back to the calling application.
 
 Your application can acquire knowledge from libcurl when it would like to get
 invoked to transfer data, so that you don't have to busy-loop and call that
 
 Your application can acquire knowledge from libcurl when it would like to get
 invoked to transfer data, so that you don't have to busy-loop and call that
@@ -80,7 +91,9 @@ interface using which you can extract fd_sets from libcurl to use in select()
 or poll() calls in order to get to know when the transfers in the multi stack
 might need attention. This also makes it very easy for your program to wait
 for input on your own private file descriptors at the same time or perhaps
 or poll() calls in order to get to know when the transfers in the multi stack
 might need attention. This also makes it very easy for your program to wait
 for input on your own private file descriptors at the same time or perhaps
-timeout every now and then, should you want that.
+timeout every now and then, should you want that. \fIcurl_multi_timeout(3)\fP
+also helps you with providing a suitable timeout period for your select()
+call.
 
 \fIcurl_multi_perform(3)\fP stores the number of still running transfers in
 one of its input arguments, and by reading that you can figure out when all
 
 \fIcurl_multi_perform(3)\fP stores the number of still running transfers in
 one of its input arguments, and by reading that you can figure out when all
@@ -121,21 +134,39 @@ using large numbers of simultaneous connections.
 When using this API, you add easy handles to the multi handle just as with the
 normal multi interface. Then you also set two callbacks with the
 CURLMOPT_SOCKETFUNCTION and CURLMOPT_TIMERFUNCTION options to
 When using this API, you add easy handles to the multi handle just as with the
 normal multi interface. Then you also set two callbacks with the
 CURLMOPT_SOCKETFUNCTION and CURLMOPT_TIMERFUNCTION options to
-\fIcurl_multi_setopt(3)\fP.
-
-The API is then designed to inform your application about which sockets
-libcurl is currently using and for what activities (read and/or write) on
-those sockets your application is expected to wait for.
-
-Your application must then make sure to receive all sockets informed about in
-the CURLMOPT_SOCKETFUNCTION callback and make sure it reacts on the given
-activity on them. When a socket has the given activity, you call
+\fIcurl_multi_setopt(3)\fP. They are two callback functions that libcurl will
+call with information about what sockets to wait for, and for what activity,
+and what the curret timeout time is - if that expires libcurl should be
+notified.
+
+The multi_socket API is designed to inform your application about which
+sockets libcurl is currently using and for what activities (read and/or write)
+on those sockets your application is expected to wait for.
+
+Your application must make sure to receive all sockets informed about in the
+CURLMOPT_SOCKETFUNCTION callback and make sure it reacts on the given activity
+on them. When a socket has the given activity, you call
 \fIcurl_multi_socket_action(3)\fP specifying which socket and action there
 are.
 
 The CURLMOPT_TIMERFUNCTION callback is called to set a timeout. When that
 timeout expires, your application should call the
 \fIcurl_multi_socket_action(3)\fP function saying it was due to a timeout.
 \fIcurl_multi_socket_action(3)\fP specifying which socket and action there
 are.
 
 The CURLMOPT_TIMERFUNCTION callback is called to set a timeout. When that
 timeout expires, your application should call the
 \fIcurl_multi_socket_action(3)\fP function saying it was due to a timeout.
+
+This API is typically used with an event-driven underlying functionality (like
+libevent, libev, kqueue, epoll or similar) which which the application
+"subscribes" on socket changes. This allows applications and libcurl to much
+better scale upward and beyond thousands of simultaneous transfers without
+losing performance.
+
+When you've added your initial set of handles, you call
+\fIcurl_multi_socket_action(3)\fP with CURL_SOCKET_TIMEOUT set in the sockfd
+argument, and you'll get callbacks call that sets you up and you then continue
+to call \fIcurl_multi_socket_action(3)\fP accordingly when you get activity on
+the sockets you've been asked to wait on, or if the timeout timer expires.
+
+You can poll \fIcurl_multi_info_read(3)\fP to see if any transfer has
+completed, as it then has a message saying so.
 .SH "BLOCKING"
 A few areas in the code are still using blocking code, even when used from the
 multi interface. While we certainly want and intend for these to get fixed in
 .SH "BLOCKING"
 A few areas in the code are still using blocking code, even when used from the
 multi interface. While we certainly want and intend for these to get fixed in
@@ -149,3 +180,5 @@ the future, you should be aware of the following current restrictions:
  - file:// transfers
  - TELNET transfers
 .fi
  - file:// transfers
  - TELNET transfers
 .fi
+.SH "SEE ALSO"
+.BR libcurl-errors "(3), " libcurl-easy "(3), " libcurl "(3) "
index c430616..a16f3e6 100644 (file)
@@ -47,29 +47,34 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">libcurl-multi - how to use the multi interface <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">libcurl-multi - how to use the multi interface <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">This is an overview on how to use the libcurl multi interface in your C programs. There are specific man pages for each function mentioned in here. There's also the <span Class="emphasis">libcurl-tutorial(3)</span> man page for a complete tutorial to programming with libcurl and the <span Class="emphasis">libcurl-easy(3)</span> man page for an overview of the libcurl easy interface. 
+<p class="level0">This is an overview on how to use the libcurl multi interface in your C programs. There are specific man pages for each function mentioned in here. There's also the <a Class="emphasis" href="./libcurl-tutorial.html">libcurl-tutorial</a> man page for a complete tutorial to programming with libcurl and the <a Class="emphasis" href="./libcurl-easy.html">libcurl-easy</a> man page for an overview of the libcurl easy interface. 
 <p class="level0">All functions in the multi interface are prefixed with curl_multi. <a name="OBJECTIVES"></a><h2 class="nroffsh">OBJECTIVES</h2>
 <p class="level0">The multi interface offers several abilities that the easy interface doesn't. They are mainly: 
 <p class="level0">1. Enable a "pull" interface. The application that uses libcurl decides where and when to ask libcurl to get/send data. 
 <p class="level0">2. Enable multiple simultaneous transfers in the same thread without making it complicated for the application. 
 <p class="level0">All functions in the multi interface are prefixed with curl_multi. <a name="OBJECTIVES"></a><h2 class="nroffsh">OBJECTIVES</h2>
 <p class="level0">The multi interface offers several abilities that the easy interface doesn't. They are mainly: 
 <p class="level0">1. Enable a "pull" interface. The application that uses libcurl decides where and when to ask libcurl to get/send data. 
 <p class="level0">2. Enable multiple simultaneous transfers in the same thread without making it complicated for the application. 
-<p class="level0">3. Enable the application to wait for action on its own file descriptors and curl's file descriptors simultaneous easily. <a name="ONE"></a><h2 class="nroffsh">ONE MULTI HANDLE MANY EASY HANDLES</h2>
-<p class="level0">To use the multi interface, you must first create a 'multi handle' with <a class="emphasis" href="./curl_multi_init.html">curl_multi_init(3)</a>. This handle is then used as input to all further curl_multi_* functions. 
-<p class="level0">Each single transfer is built up with an easy handle. You must create them, and setup the appropriate options for each easy handle, as outlined in the <a class="emphasis" href="./libcurl.html">libcurl(3)</a> man page, using <a class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt(3)</a>. 
-<p class="level0">When the easy handle is setup for a transfer, then instead of using <a class="emphasis" href="./curl_easy_perform.html">curl_easy_perform(3)</a> (as when using the easy interface for transfers), you should instead add the easy handle to the multi handle using <a class="emphasis" href="./curl_multi_add_handle.html">curl_multi_add_handle(3)</a>. The multi handle is sometimes referred to as a &acute;multi stack&acute; because of the fact that it may hold a large amount of easy handles. 
-<p class="level0">Should you change your mind, the easy handle is again removed from the multi stack using <a class="emphasis" href="./curl_multi_remove_handle.html">curl_multi_remove_handle(3)</a>. Once removed from the multi handle, you can again use other easy interface functions like <a class="emphasis" href="./curl_easy_perform.html">curl_easy_perform(3)</a> on the handle or whatever you think is necessary. 
-<p class="level0">Adding the easy handle to the multi handle does not start the transfer. Remember that one of the main ideas with this interface is to let your application drive. You drive the transfers by invoking <a class="emphasis" href="./curl_multi_perform.html">curl_multi_perform(3)</a>. libcurl will then transfer data if there is anything available to transfer. It'll use the callbacks and everything else you have setup in the individual easy handles. It'll transfer data on all current transfers in the multi stack that are ready to transfer anything. It may be all, it may be none. 
-<p class="level0">Your application can acquire knowledge from libcurl when it would like to get invoked to transfer data, so that you don't have to busy-loop and call that <a class="emphasis" href="./curl_multi_perform.html">curl_multi_perform(3)</a> like crazy. <a class="emphasis" href="./curl_multi_fdset.html">curl_multi_fdset(3)</a> offers an interface using which you can extract fd_sets from libcurl to use in select() or poll() calls in order to get to know when the transfers in the multi stack might need attention. This also makes it very easy for your program to wait for input on your own private file descriptors at the same time or perhaps timeout every now and then, should you want that. 
-<p class="level0"><a class="emphasis" href="./curl_multi_perform.html">curl_multi_perform(3)</a> stores the number of still running transfers in one of its input arguments, and by reading that you can figure out when all the transfers in the multi handles are done. 'done' does not mean successful. One or more of the transfers may have failed. Tracking when this number changes, you know when one or more transfers are done. 
-<p class="level0">To get information about completed transfers, to figure out success or not and similar, <a class="emphasis" href="./curl_multi_info_read.html">curl_multi_info_read(3)</a> should be called. It can return a message about a current or previous transfer. Repeated invokes of the function get more messages until the message queue is empty. The information you receive there includes an easy handle pointer which you may use to identify which easy handle the information regards. 
-<p class="level0">When a single transfer is completed, the easy handle is still left added to the multi stack. You need to first remove the easy handle with <a class="emphasis" href="./curl_multi_remove_handle.html">curl_multi_remove_handle(3)</a> and then close it with <a class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup(3)</a>, or possibly set new options to it and add it again with <a class="emphasis" href="./curl_multi_add_handle.html">curl_multi_add_handle(3)</a> to start another transfer. 
-<p class="level0">When all transfers in the multi stack are done, cleanup the multi handle with <a class="emphasis" href="./curl_multi_cleanup.html">curl_multi_cleanup(3)</a>. Be careful and please note that you <span Class="bold">MUST</span> invoke separate <a class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup(3)</a> calls on every single easy handle to clean them up properly. 
+<p class="level0">3. Enable the application to wait for action on its own file descriptors and curl's file descriptors simultaneous easily. 
+<p class="level0">4. Enable event-based handling and scaling transfers up to and beyond thousands of parallel connections. <a name="ONE"></a><h2 class="nroffsh">ONE MULTI HANDLE MANY EASY HANDLES</h2>
+<p class="level0">To use the multi interface, you must first create a 'multi handle' with <a Class="emphasis" href="./curl_multi_init.html">curl_multi_init</a>. This handle is then used as input to all further curl_multi_* functions. 
+<p class="level0">With a multi handle and the multi interface you can do any amount of simultaneous transfers in parallel. Each single transfer is built up around an easy handle. You must create the easy handles you need, and setup the appropriate options for each easy handle, as outlined in the <a Class="emphasis" href="./libcurl.html">libcurl</a> man page, using <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a>. 
+<p class="level0">There are two flavours of the multi interface, the select() oriented one and the event based one we called multi_socket. You will benefit from reading through the description of both versions to full understand how they work and differentiate. We start out with the select() oriented version. 
+<p class="level0">When an easy handle is setup for a transfer, then instead of using <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> like when using the easy interface for transfers, you should add the easy handle to the multi handle with <a Class="emphasis" href="./curl_multi_add_handle.html">curl_multi_add_handle</a>. The multi handle is sometimes referred to as a &acute;multi stack&acute; because of the fact that it may hold a large amount of easy handles. 
+<p class="level0">Should you change your mind, the easy handle is again removed from the multi stack using <a Class="emphasis" href="./curl_multi_remove_handle.html">curl_multi_remove_handle</a>. Once removed from the multi handle, you can again use other easy interface functions like <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> on the handle or whatever you think is necessary. 
+<p class="level0">Adding the easy handle to the multi handle does not start the transfer. Remember that one of the main ideas with this interface is to let your application drive. You drive the transfers by invoking <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a>. libcurl will then transfer data if there is anything available to transfer. It'll use the callbacks and everything else you have setup in the individual easy handles. It'll transfer data on all current transfers in the multi stack that are ready to transfer anything. It may be all, it may be none. When there's nothing more to do for now, it returns back to the calling application. 
+<p class="level0">Your application can acquire knowledge from libcurl when it would like to get invoked to transfer data, so that you don't have to busy-loop and call that <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a> like crazy. <a Class="emphasis" href="./curl_multi_fdset.html">curl_multi_fdset</a> offers an interface using which you can extract fd_sets from libcurl to use in select() or poll() calls in order to get to know when the transfers in the multi stack might need attention. This also makes it very easy for your program to wait for input on your own private file descriptors at the same time or perhaps timeout every now and then, should you want that. <a Class="emphasis" href="./curl_multi_timeout.html">curl_multi_timeout</a> also helps you with providing a suitable timeout period for your select() call. 
+<p class="level0"><a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a> stores the number of still running transfers in one of its input arguments, and by reading that you can figure out when all the transfers in the multi handles are done. 'done' does not mean successful. One or more of the transfers may have failed. Tracking when this number changes, you know when one or more transfers are done. 
+<p class="level0">To get information about completed transfers, to figure out success or not and similar, <a Class="emphasis" href="./curl_multi_info_read.html">curl_multi_info_read</a> should be called. It can return a message about a current or previous transfer. Repeated invokes of the function get more messages until the message queue is empty. The information you receive there includes an easy handle pointer which you may use to identify which easy handle the information regards. 
+<p class="level0">When a single transfer is completed, the easy handle is still left added to the multi stack. You need to first remove the easy handle with <a Class="emphasis" href="./curl_multi_remove_handle.html">curl_multi_remove_handle</a> and then close it with <a Class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup</a>, or possibly set new options to it and add it again with <a Class="emphasis" href="./curl_multi_add_handle.html">curl_multi_add_handle</a> to start another transfer. 
+<p class="level0">When all transfers in the multi stack are done, cleanup the multi handle with <a Class="emphasis" href="./curl_multi_cleanup.html">curl_multi_cleanup</a>. Be careful and please note that you <span Class="bold">MUST</span> invoke separate <a Class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup</a> calls on every single easy handle to clean them up properly. 
 <p class="level0">If you want to re-use an easy handle that was added to the multi handle for transfer, you must first remove it from the multi stack and then re-add it again (possibly after having altered some options at your own choice). <a name="MULTISOCKET"></a><h2 class="nroffsh">MULTI_SOCKET</h2>
 <p class="level0">If you want to re-use an easy handle that was added to the multi handle for transfer, you must first remove it from the multi stack and then re-add it again (possibly after having altered some options at your own choice). <a name="MULTISOCKET"></a><h2 class="nroffsh">MULTI_SOCKET</h2>
-<p class="level0"><a class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action(3)</a> function offers a way for applications to not only avoid being forced to use select(), but it also offers a much more high-performance API that will make a significant difference for applications using large numbers of simultaneous connections. 
-<p class="level0"><a class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action(3)</a> is then used instead of <a class="emphasis" href="./curl_multi_perform.html">curl_multi_perform(3)</a>. 
-<p class="level0">When using this API, you add easy handles to the multi handle just as with the normal multi interface. Then you also set two callbacks with the CURLMOPT_SOCKETFUNCTION and CURLMOPT_TIMERFUNCTION options to <a class="emphasis" href="./curl_multi_setopt.html">curl_multi_setopt(3)</a>. 
-<p class="level0">The API is then designed to inform your application about which sockets libcurl is currently using and for what activities (read and/or write) on those sockets your application is expected to wait for. 
-<p class="level0">Your application must then make sure to receive all sockets informed about in the CURLMOPT_SOCKETFUNCTION callback and make sure it reacts on the given activity on them. When a socket has the given activity, you call <a class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action(3)</a> specifying which socket and action there are. 
-<p class="level0">The CURLMOPT_TIMERFUNCTION callback is called to set a timeout. When that timeout expires, your application should call the <a class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action(3)</a> function saying it was due to a timeout. <a name="BLOCKING"></a><h2 class="nroffsh">BLOCKING</h2>
+<p class="level0"><a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> function offers a way for applications to not only avoid being forced to use select(), but it also offers a much more high-performance API that will make a significant difference for applications using large numbers of simultaneous connections. 
+<p class="level0"><a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> is then used instead of <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a>. 
+<p class="level0">When using this API, you add easy handles to the multi handle just as with the normal multi interface. Then you also set two callbacks with the CURLMOPT_SOCKETFUNCTION and CURLMOPT_TIMERFUNCTION options to <a Class="emphasis" href="./curl_multi_setopt.html">curl_multi_setopt</a>. They are two callback functions that libcurl will call with information about what sockets to wait for, and for what activity, and what the curret timeout time is - if that expires libcurl should be notified. 
+<p class="level0">The multi_socket API is designed to inform your application about which sockets libcurl is currently using and for what activities (read and/or write) on those sockets your application is expected to wait for. 
+<p class="level0">Your application must make sure to receive all sockets informed about in the CURLMOPT_SOCKETFUNCTION callback and make sure it reacts on the given activity on them. When a socket has the given activity, you call <a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> specifying which socket and action there are. 
+<p class="level0">The CURLMOPT_TIMERFUNCTION callback is called to set a timeout. When that timeout expires, your application should call the <a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> function saying it was due to a timeout. 
+<p class="level0">This API is typically used with an event-driven underlying functionality (like libevent, libev, kqueue, epoll or similar) which which the application "subscribes" on socket changes. This allows applications and libcurl to much better scale upward and beyond thousands of simultaneous transfers without losing performance. 
+<p class="level0">When you've added your initial set of handles, you call <a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> with CURL_SOCKET_TIMEOUT set in the sockfd argument, and you'll get callbacks call that sets you up and you then continue to call <a Class="emphasis" href="./curl_multi_socket_action.html">curl_multi_socket_action</a> accordingly when you get activity on the sockets you've been asked to wait on, or if the timeout timer expires. 
+<p class="level0">You can poll <a Class="emphasis" href="./curl_multi_info_read.html">curl_multi_info_read</a> to see if any transfer has completed, as it then has a message saying so. <a name="BLOCKING"></a><h2 class="nroffsh">BLOCKING</h2>
 <p class="level0">A few areas in the code are still using blocking code, even when used from the multi interface. While we certainly want and intend for these to get fixed in the future, you should be aware of the following current restrictions: 
 <p class="level0"><pre>
 <p class="level0">&nbsp;- Name resolves unless the c-ares or threaded-resolver backends are used
 <p class="level0">A few areas in the code are still using blocking code, even when used from the multi interface. While we certainly want and intend for these to get fixed in the future, you should be aware of the following current restrictions: 
 <p class="level0"><pre>
 <p class="level0">&nbsp;- Name resolves unless the c-ares or threaded-resolver backends are used
@@ -80,6 +85,7 @@ p.roffit {
  &nbsp;- TELNET transfers
  </pre>
 
  &nbsp;- TELNET transfers
  </pre>
 
-<p class="level0"><p class="roffit">
+<p class="level0"><a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./libcurl-errors.html">libcurl-errors</a>, <a Class="manpage" href="./libcurl-easy.html">libcurl-easy</a>, <a Class="manpage" href="./libcurl.html">libcurl</a>, <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 1ae9527..ac6bb1f 100644 (file)
Binary files a/docs/libcurl/libcurl-multi.pdf and b/docs/libcurl/libcurl-multi.pdf differ
index 1e6c139..b46eeda 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -51,14 +51,16 @@ using this multi-threaded. You set lock and unlock functions with
 \fIcurl_share_setopt(3)\fP too.
 
 Then, you make an easy handle to use this share, you set the
 \fIcurl_share_setopt(3)\fP too.
 
 Then, you make an easy handle to use this share, you set the
-\fICURLOPT_SHARE\fP option with \fIcurl_easy_setopt(3)\fP, and pass in share
-handle. You can make any number of easy handles share the same share handle.
+\fICURLOPT_SHARE(3)\fP option with \fIcurl_easy_setopt(3)\fP, and pass in
+share handle. You can make any number of easy handles share the same share
+handle.
 
 To make an easy handle stop using that particular share, you set
 
 To make an easy handle stop using that particular share, you set
-\fICURLOPT_SHARE\fP to NULL for that easy handle. To make a handle stop
+\fICURLOPT_SHARE(3)\fP to NULL for that easy handle. To make a handle stop
 sharing a particular data, you can \fICURLSHOPT_UNSHARE\fP it.
 
 When you're done using the share, make sure that no easy handle is still using
 it, and call \fIcurl_share_cleanup(3)\fP on the handle.
 .SH "SEE ALSO"
 .BR curl_share_init "(3), " curl_share_setopt "(3), " curl_share_cleanup "(3)"
 sharing a particular data, you can \fICURLSHOPT_UNSHARE\fP it.
 
 When you're done using the share, make sure that no easy handle is still using
 it, and call \fIcurl_share_cleanup(3)\fP on the handle.
 .SH "SEE ALSO"
 .BR curl_share_init "(3), " curl_share_setopt "(3), " curl_share_cleanup "(3)"
+.BR libcurl-errors "(3), " libcurl-easy "(3), " libcurl-multi "(3) "
index 196853e..6aa66c8 100644 (file)
@@ -52,12 +52,12 @@ p.roffit {
 <p class="level0"><a name="OBJECTIVES"></a><h2 class="nroffsh">OBJECTIVES</h2>
 <p class="level0">The share interface was added to enable sharing of data between curl "handles". <a name="ONE"></a><h2 class="nroffsh">ONE SET OF DATA - MANY TRANSFERS</h2>
 <p class="level0">You can have multiple easy handles share data between them. Have them update and use the <span Class="bold">same</span> cookie database, DNS cache, TLS session cache! This way, each single transfer will take advantage from data updates made by the other transfer(s). The sharing interface, however, does not share active or persistent connections between different easy handles. <a name="SHARE"></a><h2 class="nroffsh">SHARE OBJECT</h2>
 <p class="level0"><a name="OBJECTIVES"></a><h2 class="nroffsh">OBJECTIVES</h2>
 <p class="level0">The share interface was added to enable sharing of data between curl "handles". <a name="ONE"></a><h2 class="nroffsh">ONE SET OF DATA - MANY TRANSFERS</h2>
 <p class="level0">You can have multiple easy handles share data between them. Have them update and use the <span Class="bold">same</span> cookie database, DNS cache, TLS session cache! This way, each single transfer will take advantage from data updates made by the other transfer(s). The sharing interface, however, does not share active or persistent connections between different easy handles. <a name="SHARE"></a><h2 class="nroffsh">SHARE OBJECT</h2>
-<p class="level0">You create a shared object with <a class="emphasis" href="./curl_share_init.html">curl_share_init(3)</a>. It returns a handle for a newly created one. 
-<p class="level0">You tell the shared object what data you want it to share by using <a class="emphasis" href="./curl_share_setopt.html">curl_share_setopt(3)</a>. 
-<p class="level0">Since you can use this share from multiple threads, and libcurl has no internal thread synchronization, you must provide mutex callbacks if you're using this multi-threaded. You set lock and unlock functions with <a class="emphasis" href="./curl_share_setopt.html">curl_share_setopt(3)</a> too. 
-<p class="level0">Then, you make an easy handle to use this share, you set the <span Class="emphasis">CURLOPT_SHARE</span> option with <a class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt(3)</a>, and pass in share handle. You can make any number of easy handles share the same share handle. 
-<p class="level0">To make an easy handle stop using that particular share, you set <span Class="emphasis">CURLOPT_SHARE</span> to NULL for that easy handle. To make a handle stop sharing a particular data, you can <span Class="emphasis">CURLSHOPT_UNSHARE</span> it. 
-<p class="level0">When you're done using the share, make sure that no easy handle is still using it, and call <a class="emphasis" href="./curl_share_cleanup.html">curl_share_cleanup(3)</a> on the handle. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
-<p class="level0"><a class="manpage" href="./curl_share_init.html">curl_share_init (3)</a> <a class="manpage" href="./curl_share_setopt.html">  curl_share_setopt (3)</a> <a class="manpage" href="./curl_share_cleanup.html">  curl_share_cleanup (3)</a> <p class="roffit">
+<p class="level0">You create a shared object with <a Class="emphasis" href="./curl_share_init.html">curl_share_init</a>. It returns a handle for a newly created one. 
+<p class="level0">You tell the shared object what data you want it to share by using <a Class="emphasis" href="./curl_share_setopt.html">curl_share_setopt</a>. 
+<p class="level0">Since you can use this share from multiple threads, and libcurl has no internal thread synchronization, you must provide mutex callbacks if you're using this multi-threaded. You set lock and unlock functions with <a Class="emphasis" href="./curl_share_setopt.html">curl_share_setopt</a> too. 
+<p class="level0">Then, you make an easy handle to use this share, you set the <span Class="emphasis">CURLOPT_SHARE(3)</span> option with <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a>, and pass in share handle. You can make any number of easy handles share the same share handle. 
+<p class="level0">To make an easy handle stop using that particular share, you set <span Class="emphasis">CURLOPT_SHARE(3)</span> to NULL for that easy handle. To make a handle stop sharing a particular data, you can <span Class="emphasis">CURLSHOPT_UNSHARE</span> it. 
+<p class="level0">When you're done using the share, make sure that no easy handle is still using it, and call <a Class="emphasis" href="./curl_share_cleanup.html">curl_share_cleanup</a> on the handle. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./curl_share_init.html">curl_share_init</a>, <a Class="manpage" href="./curl_share_setopt.html">curl_share_setopt</a>, <a Class="manpage" href="./curl_share_cleanup.html">curl_share_cleanup</a>, <a Class="manpage" href="./libcurl-errors.html">libcurl-errors</a>, <a Class="manpage" href="./libcurl-easy.html">libcurl-easy</a>, <a Class="manpage" href="./libcurl-multi.html">libcurl-multi</a>, <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index 0b8ebb9..f7bde54 100644 (file)
Binary files a/docs/libcurl/libcurl-share.pdf and b/docs/libcurl/libcurl-share.pdf differ
index eb44502..11b0190 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
 .\" *
 .\" **************************************************************************
 .\"
-.TH libcurl-tutorial 3 "4 Mar 2009" "libcurl" "libcurl programming"
+.TH libcurl-tutorial 3 "19 Sep 2014" "libcurl" "libcurl programming"
 .SH NAME
 libcurl-tutorial \- libcurl programming tutorial
 .SH "Objective"
 .SH NAME
 libcurl-tutorial \- libcurl programming tutorial
 .SH "Objective"
@@ -40,7 +40,7 @@ refer to their respective man pages.
 
 .SH "Building"
 There are many different ways to build C programs. This chapter will assume a
 
 .SH "Building"
 There are many different ways to build C programs. This chapter will assume a
-UNIX-style build process. If you use a different build system, you can still
+Unix style build process. If you use a different build system, you can still
 read this to get general information that may apply to your environment as
 well.
 .IP "Compiling the Program"
 read this to get general information that may apply to your environment as
 well.
 .IP "Compiling the Program"
@@ -137,15 +137,17 @@ rather than at build-time (if possible of course). By calling
 struct, your program can figure out exactly what the currently running libcurl
 supports.
 
 struct, your program can figure out exactly what the currently running libcurl
 supports.
 
-.SH "Handle the Easy libcurl"
+.SH "Two Interfaces"
 libcurl first introduced the so called easy interface. All operations in the
 libcurl first introduced the so called easy interface. All operations in the
-easy interface are prefixed with 'curl_easy'.
-
-Recent libcurl versions also offer the multi interface. More about that
-interface, what it is targeted for and how to use it is detailed in a separate
-chapter further down. You still need to understand the easy interface first,
-so please continue reading for better understanding.
-
+easy interface are prefixed with 'curl_easy'. The easy interface lets you do
+single transfers with a synchronous and blocking function call.
+
+libcurl also offers another interface that allows multiple simultaneous
+transfers in a single thread, the so called multi interface. More about that
+interface is detailed in a separate chapter further down. You still need to
+understand the easy interface first, so please continue reading for better
+understanding.
+.SH "Handle the Easy libcurl"
 To use the easy interface, you must first create yourself an easy handle. You
 need one handle for each easy session you want to perform. Basically, you
 should use one handle for every thread you plan to use for transferring. You
 To use the easy interface, you must first create yourself an easy handle. You
 need one handle for each easy session you want to perform. Basically, you
 should use one handle for every thread you plan to use for transferring. You
@@ -162,16 +164,21 @@ transfer or series of transfers.
 You set properties and options for this handle using
 \fIcurl_easy_setopt(3)\fP. They control how the subsequent transfer or
 transfers will be made. Options remain set in the handle until set again to
 You set properties and options for this handle using
 \fIcurl_easy_setopt(3)\fP. They control how the subsequent transfer or
 transfers will be made. Options remain set in the handle until set again to
-something different. Alas, multiple requests using the same handle will use
-the same options.
+something different. They are sticky. Multiple requests using the same handle
+will use the same options.
+
+If you at any point would like to blank all previously set options for a
+single easy handle, you can call \fIcurl_easy_reset(3)\fP and you can also
+make a clone of an easy handle (with all its set options) using
+\fIcurl_easy_duphandle(3)\fP.
 
 Many of the options you set in libcurl are "strings", pointers to data
 terminated with a zero byte. When you set strings with
 
 Many of the options you set in libcurl are "strings", pointers to data
 terminated with a zero byte. When you set strings with
-\fIcurl_easy_setopt(3)\fP, libcurl makes its own copy so that they don't
-need to be kept around in your application after being set[4].
+\fIcurl_easy_setopt(3)\fP, libcurl makes its own copy so that they don't need
+to be kept around in your application after being set[4].
 
 
-One of the most basic properties to set in the handle is the URL. You set
-your preferred URL to transfer with CURLOPT_URL in a manner similar to:
+One of the most basic properties to set in the handle is the URL. You set your
+preferred URL to transfer with \fICURLOPT_URL(3)\fP in a manner similar to:
 
 .nf
  curl_easy_setopt(handle, CURLOPT_URL, "http://domain.com/");
 
 .nf
  curl_easy_setopt(handle, CURLOPT_URL, "http://domain.com/");
@@ -197,27 +204,27 @@ by setting another property:
 
 Using that property, you can easily pass local data between your application
 and the function that gets invoked by libcurl. libcurl itself won't touch the
 
 Using that property, you can easily pass local data between your application
 and the function that gets invoked by libcurl. libcurl itself won't touch the
-data you pass with \fICURLOPT_WRITEDATA\fP.
+data you pass with \fICURLOPT_WRITEDATA(3)\fP.
 
 
-libcurl offers its own default internal callback that will take care of the data
-if you don't set the callback with \fICURLOPT_WRITEFUNCTION\fP. It will then
-simply output the received data to stdout. You can have the default callback
-write the data to a different file handle by passing a 'FILE *' to a file
-opened for writing with the \fICURLOPT_WRITEDATA\fP option.
+libcurl offers its own default internal callback that will take care of the
+data if you don't set the callback with \fICURLOPT_WRITEFUNCTION(3)\fP. It
+will then simply output the received data to stdout. You can have the default
+callback write the data to a different file handle by passing a 'FILE *' to a
+file opened for writing with the \fICURLOPT_WRITEDATA(3)\fP option.
 
 Now, we need to take a step back and have a deep breath. Here's one of those
 rare platform-dependent nitpicks. Did you spot it? On some platforms[2],
 libcurl won't be able to operate on files opened by the program. Thus, if you
 use the default callback and pass in an open file with
 
 Now, we need to take a step back and have a deep breath. Here's one of those
 rare platform-dependent nitpicks. Did you spot it? On some platforms[2],
 libcurl won't be able to operate on files opened by the program. Thus, if you
 use the default callback and pass in an open file with
-\fICURLOPT_WRITEDATA\fP, it will crash. You should therefore avoid this to
+\fICURLOPT_WRITEDATA(3)\fP, it will crash. You should therefore avoid this to
 make your program run fine virtually everywhere.
 
 make your program run fine virtually everywhere.
 
-(\fICURLOPT_WRITEDATA\fP was formerly known as \fICURLOPT_FILE\fP. Both names
-still work and do the same thing).
+(\fICURLOPT_WRITEDATA(3)\fP was formerly known as \fICURLOPT_FILE\fP. Both
+names still work and do the same thing).
 
 If you're using libcurl as a win32 DLL, you MUST use the
 
 If you're using libcurl as a win32 DLL, you MUST use the
-\fICURLOPT_WRITEFUNCTION\fP if you set \fICURLOPT_WRITEDATA\fP - or you will
-experience crashes.
+\fICURLOPT_WRITEFUNCTION(3)\fP if you set \fICURLOPT_WRITEDATA(3)\fP - or you
+will experience crashes.
 
 There are of course many more options you can set, and we'll get back to a few
 of them later. Let's instead continue to the actual transfer:
 
 There are of course many more options you can set, and we'll get back to a few
 of them later. Let's instead continue to the actual transfer:
@@ -234,8 +241,8 @@ passed to it, libcurl will abort the operation and return with an error code.
 
 When the transfer is complete, the function returns a return code that informs
 you if it succeeded in its mission or not. If a return code isn't enough for
 
 When the transfer is complete, the function returns a return code that informs
 you if it succeeded in its mission or not. If a return code isn't enough for
-you, you can use the CURLOPT_ERRORBUFFER to point libcurl to a buffer of yours
-where it'll store a human readable error message as well.
+you, you can use the \fICURLOPT_ERRORBUFFER(3)\fP to point libcurl to a buffer
+of yours where it'll store a human readable error message as well.
 
 If you then want to transfer another file, the handle is ready to be used
 again. Mind you, it is even preferred that you re-use an existing handle if
 
 If you then want to transfer another file, the handle is ready to be used
 again. Mind you, it is even preferred that you re-use an existing handle if
@@ -257,7 +264,7 @@ than one thread at any given time.
 
 libcurl is completely thread safe, except for two issues: signals and SSL/TLS
 handlers. Signals are used for timing out name resolves (during DNS lookup) -
 
 libcurl is completely thread safe, except for two issues: signals and SSL/TLS
 handlers. Signals are used for timing out name resolves (during DNS lookup) -
-when built without c-ares support and not on Windows.
+when built without using either the c-ares or threaded resolver backends.
 
 If you are accessing HTTPS or FTPS URLs in a multi-threaded manner, you are
 then of course using the underlying SSL library multi-threaded and those libs
 
 If you are accessing HTTPS or FTPS URLs in a multi-threaded manner, you are
 then of course using the underlying SSL library multi-threaded and those libs
@@ -271,7 +278,7 @@ OpenSSL
 
 GnuTLS
 
 
 GnuTLS
 
- http://www.gnu.org/software/gnutls/manual/html_node/Multi_002dthreaded-applications.html
+ http://gnutls.org/manual/html_node/Thread-safety.html
 
 NSS
 
 
 NSS
 
@@ -293,14 +300,14 @@ Secure Transport
 
  The engine is fully thread-safe, and no additional steps are required.
 
 
  The engine is fully thread-safe, and no additional steps are required.
 
-When using multiple threads you should set the CURLOPT_NOSIGNAL option to 1
-for all handles. Everything will or might work fine except that timeouts are
-not honored during the DNS lookup - which you can work around by building
-libcurl with c-ares support. c-ares is a library that provides asynchronous
-name resolves. On some platforms, libcurl simply will not function properly
-multi-threaded unless this option is set.
+When using multiple threads you should set the \fICURLOPT_NOSIGNAL(3)\fP
+option to 1 for all handles. Everything will or might work fine except that
+timeouts are not honored during the DNS lookup - which you can work around by
+building libcurl with c-ares support. c-ares is a library that provides
+asynchronous name resolves. On some platforms, libcurl simply will not
+function properly multi-threaded unless this option is set.
 
 
-Also, note that CURLOPT_DNS_USE_GLOBAL_CACHE is not thread-safe.
+Also, note that \fICURLOPT_DNS_USE_GLOBAL_CACHE(3)\fP is not thread-safe.
 
 .SH "When It Doesn't Work"
 There will always be times when the transfer fails for some reason. You might
 
 .SH "When It Doesn't Work"
 There will always be times when the transfer fails for some reason. You might
@@ -308,23 +315,23 @@ have set the wrong libcurl option or misunderstood what the libcurl option
 actually does, or the remote server might return non-standard replies that
 confuse the library which then confuses your program.
 
 actually does, or the remote server might return non-standard replies that
 confuse the library which then confuses your program.
 
-There's one golden rule when these things occur: set the CURLOPT_VERBOSE
-option to 1. It'll cause the library to spew out the entire protocol
-details it sends, some internal info and some received protocol data as well
-(especially when using FTP). If you're using HTTP, adding the headers in the
-received output to study is also a clever way to get a better understanding
-why the server behaves the way it does. Include headers in the normal body
-output with CURLOPT_HEADER set 1.
+There's one golden rule when these things occur: set the
+\fICURLOPT_VERBOSE(3)\fP option to 1. It'll cause the library to spew out the
+entire protocol details it sends, some internal info and some received
+protocol data as well (especially when using FTP). If you're using HTTP,
+adding the headers in the received output to study is also a clever way to get
+a better understanding why the server behaves the way it does. Include headers
+in the normal body output with \fICURLOPT_HEADER(3)\fP set 1.
 
 
-Of course, there are bugs left. We need to know about them to be able
-to fix them, so we're quite dependent on your bug reports! When you do report
-suspected bugs in libcurl, please include as many details as you possibly can: a
-protocol dump that CURLOPT_VERBOSE produces, library version, as much as
-possible of your code that uses libcurl, operating system name and version,
-compiler name and version etc.
+Of course, there are bugs left. We need to know about them to be able to fix
+them, so we're quite dependent on your bug reports! When you do report
+suspected bugs in libcurl, please include as many details as you possibly can:
+a protocol dump that \fICURLOPT_VERBOSE(3)\fP produces, library version, as
+much as possible of your code that uses libcurl, operating system name and
+version, compiler name and version etc.
 
 
-If CURLOPT_VERBOSE is not enough, you increase the level of debug data your
-application receive by using the CURLOPT_DEBUGFUNCTION.
+If \fICURLOPT_VERBOSE(3)\fP is not enough, you increase the level of debug
+data your application receive by using the \fICURLOPT_DEBUGFUNCTION(3)\fP.
 
 Getting some in-depth knowledge about the protocols involved is never wrong,
 and if you're trying to do funny things, you might very well understand
 
 Getting some in-depth knowledge about the protocols involved is never wrong,
 and if you're trying to do funny things, you might very well understand
@@ -363,7 +370,7 @@ Tell libcurl that we want to upload:
 
 A few protocols won't behave properly when uploads are done without any prior
 knowledge of the expected file size. So, set the upload file size using the
 
 A few protocols won't behave properly when uploads are done without any prior
 knowledge of the expected file size. So, set the upload file size using the
-CURLOPT_INFILESIZE_LARGE for all known file sizes like this[1]:
+\fICURLOPT_INFILESIZE_LARGE(3)\fP for all known file sizes like this[1]:
 
 .nf
  /* in this example, file_size must be an curl_off_t variable */
 
 .nf
  /* in this example, file_size must be an curl_off_t variable */
@@ -393,26 +400,26 @@ them URL encoded, as %XX where XX is a two-digit hexadecimal number.
 
 libcurl also provides options to set various passwords. The user name and
 password as shown embedded in the URL can instead get set with the
 
 libcurl also provides options to set various passwords. The user name and
 password as shown embedded in the URL can instead get set with the
-CURLOPT_USERPWD option. The argument passed to libcurl should be a char * to
-a string in the format "user:password". In a manner like this:
+\fICURLOPT_USERPWD(3)\fP option. The argument passed to libcurl should be a
+char * to a string in the format "user:password". In a manner like this:
 
  curl_easy_setopt(easyhandle, CURLOPT_USERPWD, "myname:thesecret");
 
 Another case where name and password might be needed at times, is for those
 users who need to authenticate themselves to a proxy they use. libcurl offers
 
  curl_easy_setopt(easyhandle, CURLOPT_USERPWD, "myname:thesecret");
 
 Another case where name and password might be needed at times, is for those
 users who need to authenticate themselves to a proxy they use. libcurl offers
-another option for this, the CURLOPT_PROXYUSERPWD. It is used quite similar
-to the CURLOPT_USERPWD option like this:
+another option for this, the \fICURLOPT_PROXYUSERPWD(3)\fP. It is used quite
+similar to the \fICURLOPT_USERPWD(3)\fP option like this:
 
  curl_easy_setopt(easyhandle, CURLOPT_PROXYUSERPWD, "myname:thesecret");
 
 
  curl_easy_setopt(easyhandle, CURLOPT_PROXYUSERPWD, "myname:thesecret");
 
-There's a long time UNIX "standard" way of storing ftp user names and
+There's a long time Unix "standard" way of storing FTP user names and
 passwords, namely in the $HOME/.netrc file. The file should be made private
 so that only the user may read it (see also the "Security Considerations"
 chapter), as it might contain the password in plain text. libcurl has the
 ability to use this file to figure out what set of user name and password to
 use for a particular host. As an extension to the normal functionality,
 libcurl also supports this file for non-FTP protocols such as HTTP. To make
 passwords, namely in the $HOME/.netrc file. The file should be made private
 so that only the user may read it (see also the "Security Considerations"
 chapter), as it might contain the password in plain text. libcurl has the
 ability to use this file to figure out what set of user name and password to
 use for a particular host. As an extension to the normal functionality,
 libcurl also supports this file for non-FTP protocols such as HTTP. To make
-curl use this file, use the CURLOPT_NETRC option:
+curl use this file, use the \fICURLOPT_NETRC(3)\fP option:
 
  curl_easy_setopt(easyhandle, CURLOPT_NETRC, 1L);
 
 
  curl_easy_setopt(easyhandle, CURLOPT_NETRC, 1L);
 
@@ -442,13 +449,13 @@ authentication method is called 'Basic', which is sending the name and
 password in clear-text in the HTTP request, base64-encoded. This is insecure.
 
 At the time of this writing, libcurl can be built to use: Basic, Digest, NTLM,
 password in clear-text in the HTTP request, base64-encoded. This is insecure.
 
 At the time of this writing, libcurl can be built to use: Basic, Digest, NTLM,
-Negotiate, GSS-Negotiate and SPNEGO. You can tell libcurl which one to use
-with CURLOPT_HTTPAUTH as in:
+Negotiate (SPNEGO). You can tell libcurl which one to use
+with \fICURLOPT_HTTPAUTH(3)\fP as in:
 
  curl_easy_setopt(easyhandle, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
 
 And when you send authentication to a proxy, you can also set authentication
 
  curl_easy_setopt(easyhandle, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
 
 And when you send authentication to a proxy, you can also set authentication
-type the same way but instead with CURLOPT_PROXYAUTH:
+type the same way but instead with \fICURLOPT_PROXYAUTH(3)\fP:
 
  curl_easy_setopt(easyhandle, CURLOPT_PROXYAUTH, CURLAUTH_NTLM);
 
 
  curl_easy_setopt(easyhandle, CURLOPT_PROXYAUTH, CURLAUTH_NTLM);
 
@@ -484,8 +491,8 @@ libcurl to post it all to the remote site:
 .fi
 
 Simple enough, huh? Since you set the POST options with the
 .fi
 
 Simple enough, huh? Since you set the POST options with the
-CURLOPT_POSTFIELDS, this automatically switches the handle to use POST in the
-upcoming request.
+\fICURLOPT_POSTFIELDS(3)\fP, this automatically switches the handle to use
+POST in the upcoming request.
 
 Ok, so what if you want to post binary data that also requires you to set the
 Content-Type: header of the post? Well, binary posts prevent libcurl from
 
 Ok, so what if you want to post binary data that also requires you to set the
 Content-Type: header of the post? Well, binary posts prevent libcurl from
@@ -576,14 +583,14 @@ post handle:
 
 Since all options on an easyhandle are "sticky", they remain the same until
 changed even if you do call \fIcurl_easy_perform(3)\fP, you may need to tell
 
 Since all options on an easyhandle are "sticky", they remain the same until
 changed even if you do call \fIcurl_easy_perform(3)\fP, you may need to tell
-curl to go back to a plain GET request if you intend to do one as your
-next request. You force an easyhandle to go back to GET by using the
-CURLOPT_HTTPGET option:
+curl to go back to a plain GET request if you intend to do one as your next
+request. You force an easyhandle to go back to GET by using the
+\fICURLOPT_HTTPGET(3)\fP option:
 
  curl_easy_setopt(easyhandle, CURLOPT_HTTPGET, 1L);
 
 
  curl_easy_setopt(easyhandle, CURLOPT_HTTPGET, 1L);
 
-Just setting CURLOPT_POSTFIELDS to "" or NULL will *not* stop libcurl from
-doing a POST. It will just make it POST without any data to send!
+Just setting \fICURLOPT_POSTFIELDS(3)\fP to "" or NULL will *not* stop libcurl
+from doing a POST. It will just make it POST without any data to send!
 
 .SH "Showing Progress"
 
 
 .SH "Showing Progress"
 
@@ -591,16 +598,16 @@ For historical and traditional reasons, libcurl has a built-in progress meter
 that can be switched on and then makes it present a progress meter in your
 terminal.
 
 that can be switched on and then makes it present a progress meter in your
 terminal.
 
-Switch on the progress meter by, oddly enough, setting CURLOPT_NOPROGRESS to
-zero. This option is set to 1 by default.
+Switch on the progress meter by, oddly enough, setting
+\fICURLOPT_NOPROGRESS(3)\fP to zero. This option is set to 1 by default.
 
 For most applications however, the built-in progress meter is useless and
 what instead is interesting is the ability to specify a progress
 callback. The function pointer you pass to libcurl will then be called on
 irregular intervals with information about the current transfer.
 
 
 For most applications however, the built-in progress meter is useless and
 what instead is interesting is the ability to specify a progress
 callback. The function pointer you pass to libcurl will then be called on
 irregular intervals with information about the current transfer.
 
-Set the progress callback by using CURLOPT_PROGRESSFUNCTION. And pass a
-pointer to a function that matches this prototype:
+Set the progress callback by using \fICURLOPT_PROGRESSFUNCTION(3)\fP. And pass
+pointer to a function that matches this prototype:
 
 .nf
  int progress_callback(void *clientp,
 
 .nf
  int progress_callback(void *clientp,
@@ -612,7 +619,7 @@ pointer to a function that matches this prototype:
 
 If any of the input arguments is unknown, a 0 will be passed. The first
 argument, the 'clientp' is the pointer you pass to libcurl with
 
 If any of the input arguments is unknown, a 0 will be passed. The first
 argument, the 'clientp' is the pointer you pass to libcurl with
-CURLOPT_PROGRESSDATA. libcurl won't touch it.
+\fICURLOPT_PROGRESSDATA(3)\fP. libcurl won't touch it.
 
 .SH "libcurl with C++"
 
 
 .SH "libcurl with C++"
 
@@ -671,11 +678,12 @@ pass that information similar to this:
 
  curl_easy_setopt(easyhandle, CURLOPT_PROXYUSERPWD, "user:password");
 
 
  curl_easy_setopt(easyhandle, CURLOPT_PROXYUSERPWD, "user:password");
 
-If you want to, you can specify the host name only in the CURLOPT_PROXY
-option, and set the port number separately with CURLOPT_PROXYPORT.
+If you want to, you can specify the host name only in the
+\fICURLOPT_PROXY(3)\fP option, and set the port number separately with
+\fICURLOPT_PROXYPORT(3)\fP.
 
 
-Tell libcurl what kind of proxy it is with CURLOPT_PROXYTYPE (if not, it will
-default to assume a HTTP proxy):
+Tell libcurl what kind of proxy it is with \fICURLOPT_PROXYTYPE(3)\fP (if not,
+it will default to assume a HTTP proxy):
 
  curl_easy_setopt(easyhandle, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4);
 
 
  curl_easy_setopt(easyhandle, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4);
 
@@ -704,7 +712,8 @@ variable may say so. If 'no_proxy' is a plain asterisk ("*") it matches all
 hosts.
 
 To explicitly disable libcurl's checking for and using the proxy environment
 hosts.
 
 To explicitly disable libcurl's checking for and using the proxy environment
-variables, set the proxy name to "" - an empty string - with CURLOPT_PROXY.
+variables, set the proxy name to "" - an empty string - with
+\fICURLOPT_PROXY(3)\fP.
 .IP "SSL and Proxies"
 
 SSL is for secure point-to-point connections. This involves strong encryption
 .IP "SSL and Proxies"
 
 SSL is for secure point-to-point connections. This involves strong encryption
@@ -800,21 +809,21 @@ may also be added in the future.
 
 Each easy handle will attempt to keep the last few connections alive for a
 while in case they are to be used again. You can set the size of this "cache"
 
 Each easy handle will attempt to keep the last few connections alive for a
 while in case they are to be used again. You can set the size of this "cache"
-with the CURLOPT_MAXCONNECTS option. Default is 5. There is very seldom any
-point in changing this value, and if you think of changing this it is often
-just a matter of thinking again.
+with the \fICURLOPT_MAXCONNECTS(3)\fP option. Default is 5. There is very
+seldom any point in changing this value, and if you think of changing this it
+is often just a matter of thinking again.
 
 To force your upcoming request to not use an already existing connection (it
 will even close one first if there happens to be one alive to the same host
 
 To force your upcoming request to not use an already existing connection (it
 will even close one first if there happens to be one alive to the same host
-you're about to operate on), you can do that by setting CURLOPT_FRESH_CONNECT
-to 1. In a similar spirit, you can also forbid the upcoming request to be
-"lying" around and possibly get re-used after the request by setting
-CURLOPT_FORBID_REUSE to 1.
+you're about to operate on), you can do that by setting
+\fICURLOPT_FRESH_CONNECT(3)\fP to 1. In a similar spirit, you can also forbid
+the upcoming request to be "lying" around and possibly get re-used after the
+request by setting \fICURLOPT_FORBID_REUSE(3)\fP to 1.
 
 .SH "HTTP Headers Used by libcurl"
 When you use libcurl to do HTTP requests, it'll pass along a series of headers
 automatically. It might be good for you to know and understand these. You
 
 .SH "HTTP Headers Used by libcurl"
 When you use libcurl to do HTTP requests, it'll pass along a series of headers
 automatically. It might be good for you to know and understand these. You
-can replace or remove them by using the CURLOPT_HTTPHEADER option.
+can replace or remove them by using the \fICURLOPT_HTTPHEADER(3)\fP option.
 
 .IP "Host"
 This header is required by HTTP 1.1 and even many 1.0 servers and should be
 
 .IP "Host"
 This header is required by HTTP 1.1 and even many 1.0 servers and should be
@@ -843,8 +852,8 @@ libcurl is your friend here too.
 
 .IP CUSTOMREQUEST
 If just changing the actual HTTP request keyword is what you want, like when
 
 .IP CUSTOMREQUEST
 If just changing the actual HTTP request keyword is what you want, like when
-GET, HEAD or POST is not good enough for you, CURLOPT_CUSTOMREQUEST is there
-for you. It is very simple to use:
+GET, HEAD or POST is not good enough for you, \fICURLOPT_CUSTOMREQUEST(3)\fP
+is there for you. It is very simple to use:
 
  curl_easy_setopt(easyhandle, CURLOPT_CUSTOMREQUEST, "MYOWNREQUEST");
 
 
  curl_easy_setopt(easyhandle, CURLOPT_CUSTOMREQUEST, "MYOWNREQUEST");
 
@@ -939,28 +948,29 @@ A little example that deletes a given file before an operation:
 
 If you would instead want this operation (or chain of operations) to happen
 _after_ the data transfer took place the option to \fIcurl_easy_setopt(3)\fP
 
 If you would instead want this operation (or chain of operations) to happen
 _after_ the data transfer took place the option to \fIcurl_easy_setopt(3)\fP
-would instead be called CURLOPT_POSTQUOTE and used the exact same way.
+would instead be called \fICURLOPT_POSTQUOTE(3)\fP and used the exact same
+way.
 
 The custom FTP command will be issued to the server in the same order they are
 added to the list, and if a command gets an error code returned back from the
 server, no more commands will be issued and libcurl will bail out with an
 
 The custom FTP command will be issued to the server in the same order they are
 added to the list, and if a command gets an error code returned back from the
 server, no more commands will be issued and libcurl will bail out with an
-error code (CURLE_QUOTE_ERROR). Note that if you use CURLOPT_QUOTE to send
-commands before a transfer, no transfer will actually take place when a quote
-command has failed.
+error code (CURLE_QUOTE_ERROR). Note that if you use \fICURLOPT_QUOTE(3)\fP to
+send commands before a transfer, no transfer will actually take place when a
+quote command has failed.
 
 
-If you set the CURLOPT_HEADER to 1, you will tell libcurl to get
+If you set the \fICURLOPT_HEADER(3)\fP to 1, you will tell libcurl to get
 information about the target file and output "headers" about it. The headers
 will be in "HTTP-style", looking like they do in HTTP.
 
 The option to enable headers or to run custom FTP commands may be useful to
 information about the target file and output "headers" about it. The headers
 will be in "HTTP-style", looking like they do in HTTP.
 
 The option to enable headers or to run custom FTP commands may be useful to
-combine with CURLOPT_NOBODY. If this option is set, no actual file content
-transfer will be performed.
+combine with \fICURLOPT_NOBODY(3)\fP. If this option is set, no actual file
+content transfer will be performed.
 
 .IP "FTP Custom CUSTOMREQUEST"
 
 .IP "FTP Custom CUSTOMREQUEST"
-If you do want to list the contents of a FTP directory using your own defined FTP
-command, CURLOPT_CUSTOMREQUEST will do just that. "NLST" is the default one
-for listing directories but you're free to pass in your idea of a good
-alternative.
+If you do want to list the contents of a FTP directory using your own defined
+FTP command, \fICURLOPT_CUSTOMREQUEST(3)\fP will do just that. "NLST" is the
+default one for listing directories but you're free to pass in your idea of a
+good alternative.
 
 .SH "Cookies Without Chocolate Chips"
 In the HTTP sense, a cookie is a name with an associated value. A server sends
 
 .SH "Cookies Without Chocolate Chips"
 In the HTTP sense, a cookie is a name with an associated value. A server sends
@@ -975,8 +985,8 @@ update them. Server use cookies to "track" users and to keep "sessions".
 Cookies are sent from server to clients with the header Set-Cookie: and
 they're sent from clients to servers with the Cookie: header.
 
 Cookies are sent from server to clients with the header Set-Cookie: and
 they're sent from clients to servers with the Cookie: header.
 
-To just send whatever cookie you want to a server, you can use CURLOPT_COOKIE
-to set a cookie string like this:
+To just send whatever cookie you want to a server, you can use
+\fICURLOPT_COOKIE(3)\fP to set a cookie string like this:
 
  curl_easy_setopt(easyhandle, CURLOPT_COOKIE, "name1=var1; name2=var2;");
 
 
  curl_easy_setopt(easyhandle, CURLOPT_COOKIE, "name1=var1; name2=var2;");
 
@@ -987,29 +997,30 @@ are then used accordingly on later requests.
 One way to do this, is to save all headers you receive in a plain file and
 when you make a request, you tell libcurl to read the previous headers to
 figure out which cookies to use. Set the header file to read cookies from with
 One way to do this, is to save all headers you receive in a plain file and
 when you make a request, you tell libcurl to read the previous headers to
 figure out which cookies to use. Set the header file to read cookies from with
-CURLOPT_COOKIEFILE.
-
-The CURLOPT_COOKIEFILE option also automatically enables the cookie parser in
-libcurl. Until the cookie parser is enabled, libcurl will not parse or
-understand incoming cookies and they will just be ignored. However, when the
-parser is enabled the cookies will be understood and the cookies will be kept
-in memory and used properly in subsequent requests when the same handle is
-used. Many times this is enough, and you may not have to save the cookies to
-disk at all. Note that the file you specify to CURLOPT_COOKIEFILE doesn't have
-to exist to enable the parser, so a common way to just enable the parser and
-not read any cookies is to use the name of a file you know doesn't exist.
+\fICURLOPT_COOKIEFILE(3)\fP.
+
+The \fICURLOPT_COOKIEFILE(3)\fP option also automatically enables the cookie
+parser in libcurl. Until the cookie parser is enabled, libcurl will not parse
+or understand incoming cookies and they will just be ignored. However, when
+the parser is enabled the cookies will be understood and the cookies will be
+kept in memory and used properly in subsequent requests when the same handle
+is used. Many times this is enough, and you may not have to save the cookies
+to disk at all. Note that the file you specify to \ICURLOPT_COOKIEFILE(3)\fP
+doesn't have to exist to enable the parser, so a common way to just enable the
+parser and not read any cookies is to use the name of a file you know doesn't
+exist.
 
 If you would rather use existing cookies that you've previously received with
 your Netscape or Mozilla browsers, you can make libcurl use that cookie file
 
 If you would rather use existing cookies that you've previously received with
 your Netscape or Mozilla browsers, you can make libcurl use that cookie file
-as input. The CURLOPT_COOKIEFILE is used for that too, as libcurl will
-automatically find out what kind of file it is and act accordingly.
+as input. The \fICURLOPT_COOKIEFILE(3)\fP is used for that too, as libcurl
+will automatically find out what kind of file it is and act accordingly.
 
 Perhaps the most advanced cookie operation libcurl offers, is saving the
 entire internal cookie state back into a Netscape/Mozilla formatted cookie
 file. We call that the cookie-jar. When you set a file name with
 
 Perhaps the most advanced cookie operation libcurl offers, is saving the
 entire internal cookie state back into a Netscape/Mozilla formatted cookie
 file. We call that the cookie-jar. When you set a file name with
-CURLOPT_COOKIEJAR, that file name will be created and all received cookies
-will be stored in it when \fIcurl_easy_cleanup(3)\fP is called. This enables
-cookies to get passed on properly between multiple handles without any
+\fICURLOPT_COOKIEJAR(3)\fP, that file name will be created and all received
+cookies will be stored in it when \fIcurl_easy_cleanup(3)\fP is called. This
+enables cookies to get passed on properly between multiple handles without any
 information getting lost.
 
 .SH "FTP Peculiarities We Need"
 information getting lost.
 
 .SH "FTP Peculiarities We Need"
@@ -1028,36 +1039,36 @@ work it tries PASV instead. (EPSV is an extension to the original FTP spec
 and does not exist nor work on all FTP servers.)
 
 You can prevent libcurl from first trying the EPSV command by setting
 and does not exist nor work on all FTP servers.)
 
 You can prevent libcurl from first trying the EPSV command by setting
-CURLOPT_FTP_USE_EPSV to zero.
+\fICURLOPT_FTP_USE_EPSV(3)\fP to zero.
 
 In some cases, you will prefer to have the server connect back to you for the
 second connection. This might be when the server is perhaps behind a firewall
 or something and only allows connections on a single port. libcurl then
 informs the remote server which IP address and port number to connect to.
 
 In some cases, you will prefer to have the server connect back to you for the
 second connection. This might be when the server is perhaps behind a firewall
 or something and only allows connections on a single port. libcurl then
 informs the remote server which IP address and port number to connect to.
-This is made with the CURLOPT_FTPPORT option. If you set it to "-", libcurl
-will use your system's "default IP address". If you want to use a particular
-IP, you can set the full IP address, a host name to resolve to an IP address
-or even a local network interface name that libcurl will get the IP address
-from.
+This is made with the \fICURLOPT_FTPPORT(3)\fP option. If you set it to "-",
+libcurl will use your system's "default IP address". If you want to use a
+particular IP, you can set the full IP address, a host name to resolve to an
+IP address or even a local network interface name that libcurl will get the IP
+address from.
 
 When doing the "PORT" approach, libcurl will attempt to use the EPRT and the
 LPRT before trying PORT, as they work with more protocols. You can disable
 
 When doing the "PORT" approach, libcurl will attempt to use the EPRT and the
 LPRT before trying PORT, as they work with more protocols. You can disable
-this behavior by setting CURLOPT_FTP_USE_EPRT to zero.
+this behavior by setting \fICURLOPT_FTP_USE_EPRT(3)\fP to zero.
 
 .SH "Headers Equal Fun"
 
 Some protocols provide "headers", meta-data separated from the normal
 
 .SH "Headers Equal Fun"
 
 Some protocols provide "headers", meta-data separated from the normal
-data. These headers are by default not included in the normal data stream,
-but you can make them appear in the data stream by setting CURLOPT_HEADER to
-1.
+data. These headers are by default not included in the normal data stream, but
+you can make them appear in the data stream by setting \fICURLOPT_HEADER(3)\fP
+to 1.
 
 What might be even more useful, is libcurl's ability to separate the headers
 from the data and thus make the callbacks differ. You can for example set a
 different pointer to pass to the ordinary write callback by setting
 
 What might be even more useful, is libcurl's ability to separate the headers
 from the data and thus make the callbacks differ. You can for example set a
 different pointer to pass to the ordinary write callback by setting
-CURLOPT_WRITEHEADER.
+\fICURLOPT_HEADERDATA(3)\fP.
 
 
-Or, you can set an entirely separate function to receive the headers, by
-using CURLOPT_HEADERFUNCTION.
+Or, you can set an entirely separate function to receive the headers, by using
+\fICURLOPT_HEADERFUNCTION(3)\fP.
 
 The headers are passed to the callback function one by one, and you can
 depend on that fact. It makes it easier for you to add custom header parsers
 
 The headers are passed to the callback function one by one, and you can
 depend on that fact. It makes it easier for you to add custom header parsers
@@ -1118,18 +1129,18 @@ analyzer tool and eavesdrop on your passwords. Don't let the fact that HTTP
 Basic uses base64 encoded passwords fool you. They may not look readable at a
 first glance, but they very easily "deciphered" by anyone within seconds.
 
 Basic uses base64 encoded passwords fool you. They may not look readable at a
 first glance, but they very easily "deciphered" by anyone within seconds.
 
-To avoid this problem, use HTTP authentication methods or other protocols that
-don't let snoopers see your password: HTTP with Digest, NTLM or GSS
-authentication, HTTPS, FTPS, SCP, SFTP and FTP-Kerberos are a few examples.
+To avoid this problem, use an authentication mechanism or other protocol that
+doesn't let snoopers see your password: Digest, CRAM-MD5, Kerberos, SPNEGO or
+NTLM authentication, HTTPS, FTPS, SCP and SFTP are a few examples.
 
 .IP "Redirects"
 
 .IP "Redirects"
-The CURLOPT_FOLLOWLOCATION option automatically follows HTTP redirects sent
-by a remote server.  These redirects can refer to any kind of URL, not just
-HTTP.  A redirect to a file: URL would cause the libcurl to read (or write)
-arbitrary files from the local filesystem.  If the application returns
-the data back to the user (as would happen in some kinds of CGI scripts),
-an attacker could leverage this to read otherwise forbidden data (e.g.
-file://localhost/etc/passwd).
+The \fICURLOPT_FOLLOWLOCATION(3)\fP option automatically follows HTTP
+redirects sent by a remote server.  These redirects can refer to any kind of
+URL, not just HTTP.  A redirect to a file: URL would cause the libcurl to read
+(or write) arbitrary files from the local filesystem.  If the application
+returns the data back to the user (as would happen in some kinds of CGI
+scripts), an attacker could leverage this to read otherwise forbidden data
+(e.g.  file://localhost/etc/passwd).
 
 If authentication credentials are stored in the ~/.netrc file, or Kerberos
 is in use, any other URL type (not just file:) that requires
 
 If authentication credentials are stored in the ~/.netrc file, or Kerberos
 is in use, any other URL type (not just file:) that requires
@@ -1142,19 +1153,20 @@ the user running the libcurl application, SCP: or SFTP: URLs could access
 password or private-key protected resources,
 e.g. sftp://user@some-internal-server/etc/passwd
 
 password or private-key protected resources,
 e.g. sftp://user@some-internal-server/etc/passwd
 
-The CURLOPT_REDIR_PROTOCOLS and CURLOPT_NETRC options can be used to
-mitigate against this kind of attack.
+The \fICURLOPT_REDIR_PROTOCOLS(3)\fP and \fICURLOPT_NETRC(3)\fP options can be
+used to mitigate against this kind of attack.
 
 A redirect can also specify a location available only on the machine running
 libcurl, including servers hidden behind a firewall from the attacker.
 e.g. http://127.0.0.1/ or http://intranet/delete-stuff.cgi?delete=all or
 tftp://bootp-server/pc-config-data
 
 
 A redirect can also specify a location available only on the machine running
 libcurl, including servers hidden behind a firewall from the attacker.
 e.g. http://127.0.0.1/ or http://intranet/delete-stuff.cgi?delete=all or
 tftp://bootp-server/pc-config-data
 
-Apps can mitigate against this by disabling CURLOPT_FOLLOWLOCATION and
-handling redirects itself, sanitizing URLs as necessary. Alternately, an
-app could leave CURLOPT_FOLLOWLOCATION enabled but set CURLOPT_REDIR_PROTOCOLS
-and install a CURLOPT_OPENSOCKETFUNCTION callback function in which addresses
-are sanitized before use.
+Apps can mitigate against this by disabling \fICURLOPT_FOLLOWLOCATION(3)\fP
+and handling redirects itself, sanitizing URLs as necessary. Alternately, an
+app could leave \fICURLOPT_FOLLOWLOCATION(3)\fP enabled but set
+\fICURLOPT_REDIR_PROTOCOLS(3)\fP and install a
+\fICURLOPT_OPENSOCKETFUNCTION(3)\fP callback function in which addresses are
+sanitized before use.
 
 .IP "Private Resources"
 A user who can control the DNS server of a domain being passed in within a URL
 
 .IP "Private Resources"
 A user who can control the DNS server of a domain being passed in within a URL
@@ -1162,21 +1174,21 @@ can change the address of the host to a local, private address which a
 server-side libcurl-using application could then use. e.g. the innocuous URL
 http://fuzzybunnies.example.com/ could actually resolve to the IP address of a
 server behind a firewall, such as 127.0.0.1 or 10.1.2.3.  Apps can mitigate
 server-side libcurl-using application could then use. e.g. the innocuous URL
 http://fuzzybunnies.example.com/ could actually resolve to the IP address of a
 server behind a firewall, such as 127.0.0.1 or 10.1.2.3.  Apps can mitigate
-against this by setting a CURLOPT_OPENSOCKETFUNCTION and checking the address
-before a connection.
-
-All the malicious scenarios regarding redirected URLs apply just as well
-to non-redirected URLs, if the user is allowed to specify an arbitrary URL
-that could point to a private resource. For example, a web app providing
-a translation service might happily translate file://localhost/etc/passwd
-and display the result.  Apps can mitigate against this with the
-CURLOPT_PROTOCOLS option as well as by similar mitigation techniques for
-redirections.
-
-A malicious FTP server could in response to the PASV command return an
-IP address and port number for a server local to the app running libcurl
-but behind a firewall.  Apps can mitigate against this by using the
-CURLOPT_FTP_SKIP_PASV_IP option or CURLOPT_FTPPORT.
+against this by setting a \fICURLOPT_OPENSOCKETFUNCTION(3)\fP and checking the
+address before a connection.
+
+All the malicious scenarios regarding redirected URLs apply just as well to
+non-redirected URLs, if the user is allowed to specify an arbitrary URL that
+could point to a private resource. For example, a web app providing a
+translation service might happily translate file://localhost/etc/passwd and
+display the result.  Apps can mitigate against this with the
+\fICURLOPT_PROTOCOLS(3)\fP option as well as by similar mitigation techniques
+for redirections.
+
+A malicious FTP server could in response to the PASV command return an IP
+address and port number for a server local to the app running libcurl but
+behind a firewall.  Apps can mitigate against this by using the
+\fICURLOPT_FTP_SKIP_PASV_IP(3)\fP option or \fICURLOPT_FTPPORT(3)\fP.
 
 .IP "IPv6 Addresses"
 libcurl will normally handle IPv6 addresses transparently and just as easily
 
 .IP "IPv6 Addresses"
 libcurl will normally handle IPv6 addresses transparently and just as easily
@@ -1193,25 +1205,25 @@ can be used to limit resolved addresses to IPv4 only and bypass these issues.
 
 .IP Uploads
 When uploading, a redirect can cause a local (or remote) file to be
 
 .IP Uploads
 When uploading, a redirect can cause a local (or remote) file to be
-overwritten.  Apps must not allow any unsanitized URL to be passed in
-for uploads.  Also, CURLOPT_FOLLOWLOCATION should not be used on uploads.
+overwritten.  Apps must not allow any unsanitized URL to be passed in for
+uploads.  Also, \fICURLOPT_FOLLOWLOCATION(3)\fP should not be used on uploads.
 Instead, the app should handle redirects itself, sanitizing each URL first.
 
 .IP Authentication
 Instead, the app should handle redirects itself, sanitizing each URL first.
 
 .IP Authentication
-Use of CURLOPT_UNRESTRICTED_AUTH could cause authentication information to
-be sent to an unknown second server.  Apps can mitigate against this
-by disabling CURLOPT_FOLLOWLOCATION and handling redirects itself,
-sanitizing where necessary.
+Use of \fICURLOPT_UNRESTRICTED_AUTH(3)\fP could cause authentication
+information to be sent to an unknown second server.  Apps can mitigate against
+this by disabling \fICURLOPT_FOLLOWLOCATION(3)\fP and handling redirects
+itself, sanitizing where necessary.
 
 
-Use of the CURLAUTH_ANY option to CURLOPT_HTTPAUTH could result in user
-name and password being sent in clear text to an HTTP server.  Instead,
-use CURLAUTH_ANYSAFE which ensures that the password is encrypted over
-the network, or else fail the request.
+Use of the CURLAUTH_ANY option to \fICURLOPT_HTTPAUTH(3)\fP could result in
+user name and password being sent in clear text to an HTTP server.  Instead,
+use CURLAUTH_ANYSAFE which ensures that the password is encrypted over the
+network, or else fail the request.
 
 
-Use of the CURLUSESSL_TRY option to CURLOPT_USE_SSL could result in user
-name and password being sent in clear text to an FTP server.  Instead,
-use CURLUSESSL_CONTROL to ensure that an encrypted connection is used or
-else fail the request.
+Use of the CURLUSESSL_TRY option to \fICURLOPT_USE_SSL(3)\fP could result in
+user name and password being sent in clear text to an FTP server.  Instead,
+use CURLUSESSL_CONTROL to ensure that an encrypted connection is used or else
+fail the request.
 
 .IP Cookies
 If cookies are enabled and cached, then a user could craft a URL which
 
 .IP Cookies
 If cookies are enabled and cached, then a user could craft a URL which
@@ -1227,34 +1239,35 @@ scp://user:pass@host/a;date >/tmp/test;
 Apps must not allow unsanitized SCP: URLs to be passed in for downloads.
 
 .IP "Denial of Service"
 Apps must not allow unsanitized SCP: URLs to be passed in for downloads.
 
 .IP "Denial of Service"
-A malicious server could cause libcurl to effectively hang by sending
-trickle of data through, or even no data at all but just keeping the TCP
+A malicious server could cause libcurl to effectively hang by sending a
+trickle of data through, or even no data at all but just keeping the TCP
 connection open.  This could result in a denial-of-service attack. The
 connection open.  This could result in a denial-of-service attack. The
-CURLOPT_TIMEOUT and/or CURLOPT_LOW_SPEED_LIMIT options can be used to
-mitigate against this.
-
-A malicious server could cause libcurl to effectively hang by starting to
-send data, then severing the connection without cleanly closing the
-TCP connection.  The app could install a CURLOPT_SOCKOPTFUNCTION callback
-function and set the TCP SO_KEEPALIVE option to mitigate against this.
-Setting one of the timeout options would also work against this attack.
-
-A malicious server could cause libcurl to download an infinite amount of
-data, potentially causing all of memory or disk to be filled. Setting
-the CURLOPT_MAXFILESIZE_LARGE option is not sufficient to guard against this.
-Instead, the app should monitor the amount of data received within the
+\fICURLOPT_TIMEOUT(3)\fP and/or \fICURLOPT_LOW_SPEED_LIMIT(3)\fP options can
+be used to mitigate against this.
+
+A malicious server could cause libcurl to effectively hang by starting to send
+data, then severing the connection without cleanly closing the TCP connection.
+The app could install a \fICURLOPT_SOCKOPTFUNCTION(3)\fP callback function and
+set the TCP SO_KEEPALIVE option to mitigate against this.  Setting one of the
+timeout options would also work against this attack.
+
+A malicious server could cause libcurl to download an infinite amount of data,
+potentially causing all of memory or disk to be filled. Setting the
+\fICURLOPT_MAXFILESIZE_LARGE(3)\fP option is not sufficient to guard against
+this.  Instead, the app should monitor the amount of data received within the
 write or progress callback and abort once the limit is reached.
 
 A malicious HTTP server could cause an infinite redirection loop, causing a
 write or progress callback and abort once the limit is reached.
 
 A malicious HTTP server could cause an infinite redirection loop, causing a
-denial-of-service. This can be mitigated by using the CURLOPT_MAXREDIRS
-option.
+denial-of-service. This can be mitigated by using the
+\fICURLOPT_MAXREDIRS(3)\fP option.
 
 .IP "Arbitrary Headers"
 User-supplied data must be sanitized when used in options like
 
 .IP "Arbitrary Headers"
 User-supplied data must be sanitized when used in options like
-CURLOPT_USERAGENT, CURLOPT_HTTPHEADER, CURLOPT_POSTFIELDS and others that
-are used to generate structured data. Characters like embedded carriage
-returns or ampersands could allow the user to create additional headers or
-fields that could cause malicious transactions.
+\fICURLOPT_USERAGENT(3)\fP, \fICURLOPT_HTTPHEADER(3)\fP,
+\fICURLOPT_POSTFIELDS(3)\fP and others that are used to generate structured
+data. Characters like embedded carriage returns or ampersands could allow the
+user to create additional headers or fields that could cause malicious
+transactions.
 
 .IP "Server-supplied Names"
 A server can supply data which the application may, in some cases, use as
 
 .IP "Server-supplied Names"
 A server can supply data which the application may, in some cases, use as
@@ -1266,9 +1279,9 @@ names to avoid the possibility of a malicious server supplying one like
 "/etc/passwd", "\\autoexec.bat", "prn:" or even ".bashrc".
 
 .IP "Server Certificates"
 "/etc/passwd", "\\autoexec.bat", "prn:" or even ".bashrc".
 
 .IP "Server Certificates"
-A secure application should never use the CURLOPT_SSL_VERIFYPEER option to
-disable certificate validation. There are numerous attacks that are enabled
-by apps that fail to properly validate server TLS/SSL certificates,
+A secure application should never use the \fICURLOPT_SSL_VERIFYPEER(3)\fP
+option to disable certificate validation. There are numerous attacks that are
+enabled by apps that fail to properly validate server TLS/SSL certificates,
 thus enabling a malicious server to spoof a legitimate one. HTTPS without
 validated certificates is potentially as insecure as a plain HTTP connection.
 
 thus enabling a malicious server to spoof a legitimate one. HTTPS without
 validated certificates is potentially as insecure as a plain HTTP connection.
 
@@ -1289,39 +1302,44 @@ To avoid this problem, you must of course use your common sense. Often, you
 can just edit out the sensitive data or just search/replace your true
 information with faked data.
 
 can just edit out the sensitive data or just search/replace your true
 information with faked data.
 
-.SH "Multiple Transfers Using the multi Interface"
-
+.SH "The multi Interface"
 The easy interface as described in detail in this document is a synchronous
 interface that transfers one file at a time and doesn't return until it is
 done.
 
 The multi interface, on the other hand, allows your program to transfer
 The easy interface as described in detail in this document is a synchronous
 interface that transfers one file at a time and doesn't return until it is
 done.
 
 The multi interface, on the other hand, allows your program to transfer
-multiple files in both directions at the same time, without forcing you
-to use multiple threads.  The name might make it seem that the multi
-interface is for multi-threaded programs, but the truth is almost the
-reverse.  The multi interface can allow a single-threaded application
-to perform the same kinds of multiple, simultaneous transfers that
-multi-threaded programs can perform.  It allows many of the benefits
-of multi-threaded transfers without the complexity of managing and
-synchronizing many threads.
+multiple files in both directions at the same time, without forcing you to use
+multiple threads.  The name might make it seem that the multi interface is for
+multi-threaded programs, but the truth is almost the reverse.  The multi
+interface allows a single-threaded application to perform the same kinds of
+multiple, simultaneous transfers that multi-threaded programs can perform.  It
+allows many of the benefits of multi-threaded transfers without the complexity
+of managing and synchronizing many threads.
+
+To complicate matters somewhat more, there are even two versions of the multi
+interface. The event based one, also called multi_socket and the "normal one"
+designed for using with select(). See the libcurl-multi.3 man page for details
+on the multi_socket event based API, this description here is for the select()
+oriented one.
 
 To use this interface, you are better off if you first understand the basics
 of how to use the easy interface. The multi interface is simply a way to make
 multiple transfers at the same time by adding up multiple easy handles into
 a "multi stack".
 
 
 To use this interface, you are better off if you first understand the basics
 of how to use the easy interface. The multi interface is simply a way to make
 multiple transfers at the same time by adding up multiple easy handles into
 a "multi stack".
 
-You create the easy handles you want and you set all the options just like you
-have been told above, and then you create a multi handle with
-\fIcurl_multi_init(3)\fP and add all those easy handles to that multi handle
-with \fIcurl_multi_add_handle(3)\fP.
+You create the easy handles you want, one for each concurrent transfer, and
+you set all the options just like you learned above, and then you create a
+multi handle with \fIcurl_multi_init(3)\fP and add all those easy handles to
+that multi handle with \fIcurl_multi_add_handle(3)\fP.
 
 When you've added the handles you have for the moment (you can still add new
 ones at any time), you start the transfers by calling
 \fIcurl_multi_perform(3)\fP.
 
 
 When you've added the handles you have for the moment (you can still add new
 ones at any time), you start the transfers by calling
 \fIcurl_multi_perform(3)\fP.
 
-\fIcurl_multi_perform(3)\fP is asynchronous. It will only execute as little as
-possible and then return back control to your program. It is designed to never
-block.
+\fIcurl_multi_perform(3)\fP is asynchronous. It will only perform what can be
+done now and then return back control to your program. It is designed to never
+block. You need to keep calling the function until all transfers are
+completed.
 
 The best usage of this interface is when you do a select() on all possible
 file descriptors or sockets to know when to call libcurl again. This also
 
 The best usage of this interface is when you do a select() on all possible
 file descriptors or sockets to know when to call libcurl again. This also
@@ -1334,11 +1352,12 @@ When you then call select(), it'll return when one of the file handles signal
 action and you then call \fIcurl_multi_perform(3)\fP to allow libcurl to do
 what it wants to do. Take note that libcurl does also feature some time-out
 code so we advise you to never use very long timeouts on select() before you
 action and you then call \fIcurl_multi_perform(3)\fP to allow libcurl to do
 what it wants to do. Take note that libcurl does also feature some time-out
 code so we advise you to never use very long timeouts on select() before you
-call \fIcurl_multi_perform(3)\fP, which thus should be called unconditionally
-every now and then even if none of its file descriptors have signaled
-ready. Another precaution you should use: always call
-\fIcurl_multi_fdset(3)\fP immediately before the select() call since the
-current set of file descriptors may change when calling a curl function.
+call \fIcurl_multi_perform(3)\fP again. \fIcurl_multi_timeout(3)\fP is
+provided to help you get a suitable timeout period.
+
+Another precaution you should use: always call \fIcurl_multi_fdset(3)\fP
+immediately before the select() call since the current set of file descriptors
+may change in any curl function invoke.
 
 If you want to stop the transfer of one of the easy handles in the stack, you
 can use \fIcurl_multi_remove_handle(3)\fP to remove individual easy
 
 If you want to stop the transfer of one of the easy handles in the stack, you
 can use \fIcurl_multi_remove_handle(3)\fP to remove individual easy
@@ -1383,9 +1402,11 @@ This happens on Windows machines when libcurl is built and used as a
 DLL. However, you can still do this on Windows if you link with a static
 library.
 .IP "[3]"
 DLL. However, you can still do this on Windows if you link with a static
 library.
 .IP "[3]"
-The curl-config tool is generated at build-time (on UNIX-like systems) and
+The curl-config tool is generated at build-time (on Unix-like systems) and
 should be installed with the 'make install' or similar instruction that
 installs the library, header files, man pages etc.
 .IP "[4]"
 This behavior was different in versions before 7.17.0, where strings had to
 remain valid past the end of the \fIcurl_easy_setopt(3)\fP call.
 should be installed with the 'make install' or similar instruction that
 installs the library, header files, man pages etc.
 .IP "[4]"
 This behavior was different in versions before 7.17.0, where strings had to
 remain valid past the end of the \fIcurl_easy_setopt(3)\fP call.
+.SH "SEE ALSO"
+.BR libcurl-errors "(3), " libcurl-multi "(3), " libcurl-easy "(3) "
index 56a0205..43bfc24 100644 (file)
@@ -51,7 +51,7 @@ p.roffit {
 <p class="level0">This document will refer to 'the user' as the person writing the source code that uses libcurl. That would probably be you or someone in your position. What will be generally referred to as 'the program' will be the collected source code that you write that is using libcurl for transfers. The program is outside libcurl and libcurl is outside of the program. 
 <p class="level0">To get more details on all options and functions described herein, please refer to their respective man pages. 
 <p class="level0"><a name="Building"></a><h2 class="nroffsh">Building</h2>
 <p class="level0">This document will refer to 'the user' as the person writing the source code that uses libcurl. That would probably be you or someone in your position. What will be generally referred to as 'the program' will be the collected source code that you write that is using libcurl for transfers. The program is outside libcurl and libcurl is outside of the program. 
 <p class="level0">To get more details on all options and functions described herein, please refer to their respective man pages. 
 <p class="level0"><a name="Building"></a><h2 class="nroffsh">Building</h2>
-<p class="level0">There are many different ways to build C programs. This chapter will assume a UNIX-style build process. If you use a different build system, you can still read this to get general information that may apply to your environment as well. 
+<p class="level0">There are many different ways to build C programs. This chapter will assume a Unix style build process. If you use a different build system, you can still read this to get general information that may apply to your environment as well. 
 <p class="level0"><a name="Compiling"></a><span class="nroffip">Compiling the Program</span> 
 <p class="level1">Your compiler needs to know where the libcurl headers are located. Therefore you must set your compiler's include path to point to the directory where you installed them. The 'curl-config'[3] tool can be used to get this information: 
 <p class="level1">$ curl-config --cflags 
 <p class="level0"><a name="Compiling"></a><span class="nroffip">Compiling the Program</span> 
 <p class="level1">Your compiler needs to know where the libcurl headers are located. Therefore you must set your compiler's include path to point to the directory where you installed them. The 'curl-config'[3] tool can be used to get this information: 
 <p class="level1">$ curl-config --cflags 
@@ -80,21 +80,22 @@ p.roffit {
 <p class="level0"><a name="CURLGLOBALSSL"></a><span class="nroffip">CURL_GLOBAL_SSL</span> 
 <p class="level1">which only does anything on libcurls compiled and built SSL-enabled. On these systems, this will make libcurl initialize the SSL library properly for this application. This only needs to be done once for each application so if your program or another library already does this, this bit should not be needed. 
 <p class="level0">
 <p class="level0"><a name="CURLGLOBALSSL"></a><span class="nroffip">CURL_GLOBAL_SSL</span> 
 <p class="level1">which only does anything on libcurls compiled and built SSL-enabled. On these systems, this will make libcurl initialize the SSL library properly for this application. This only needs to be done once for each application so if your program or another library already does this, this bit should not be needed. 
 <p class="level0">
-<p class="level0">libcurl has a default protection mechanism that detects if <a class="emphasis" href="./curl_global_init.html">curl_global_init(3)</a> hasn't been called by the time <a class="emphasis" href="./curl_easy_perform.html">curl_easy_perform(3)</a> is called and if that is the case, libcurl runs the function itself with a guessed bit pattern. Please note that depending solely on this is not considered nice nor very good. 
-<p class="level0">When the program no longer uses libcurl, it should call <a class="emphasis" href="./curl_global_cleanup.html">curl_global_cleanup(3)</a>, which is the opposite of the init call. It will then do the reversed operations to cleanup the resources the <a class="emphasis" href="./curl_global_init.html">curl_global_init(3)</a> call initialized. 
-<p class="level0">Repeated calls to <a class="emphasis" href="./curl_global_init.html">curl_global_init(3)</a> and <a class="emphasis" href="./curl_global_cleanup.html">curl_global_cleanup(3)</a> should be avoided. They should only be called once each. 
+<p class="level0">libcurl has a default protection mechanism that detects if <a Class="emphasis" href="./curl_global_init.html">curl_global_init</a> hasn't been called by the time <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> is called and if that is the case, libcurl runs the function itself with a guessed bit pattern. Please note that depending solely on this is not considered nice nor very good. 
+<p class="level0">When the program no longer uses libcurl, it should call <a Class="emphasis" href="./curl_global_cleanup.html">curl_global_cleanup</a>, which is the opposite of the init call. It will then do the reversed operations to cleanup the resources the <a Class="emphasis" href="./curl_global_init.html">curl_global_init</a> call initialized. 
+<p class="level0">Repeated calls to <a Class="emphasis" href="./curl_global_init.html">curl_global_init</a> and <a Class="emphasis" href="./curl_global_cleanup.html">curl_global_cleanup</a> should be avoided. They should only be called once each. 
 <p class="level0"><a name="Features"></a><h2 class="nroffsh">Features libcurl Provides</h2>
 <p class="level0"><a name="Features"></a><h2 class="nroffsh">Features libcurl Provides</h2>
-<p class="level0">It is considered best-practice to determine libcurl features at run-time rather than at build-time (if possible of course). By calling <a class="emphasis" href="./curl_version_info.html">curl_version_info(3)</a> and checking out the details of the returned struct, your program can figure out exactly what the currently running libcurl supports. 
-<p class="level0"><a name="Handle"></a><h2 class="nroffsh">Handle the Easy libcurl</h2>
-<p class="level0">libcurl first introduced the so called easy interface. All operations in the easy interface are prefixed with 'curl_easy'. 
-<p class="level0">Recent libcurl versions also offer the multi interface. More about that interface, what it is targeted for and how to use it is detailed in a separate chapter further down. You still need to understand the easy interface first, so please continue reading for better understanding. 
+<p class="level0">It is considered best-practice to determine libcurl features at run-time rather than at build-time (if possible of course). By calling <a Class="emphasis" href="./curl_version_info.html">curl_version_info</a> and checking out the details of the returned struct, your program can figure out exactly what the currently running libcurl supports. 
+<p class="level0"><a name="Two"></a><h2 class="nroffsh">Two Interfaces</h2>
+<p class="level0">libcurl first introduced the so called easy interface. All operations in the easy interface are prefixed with 'curl_easy'. The easy interface lets you do single transfers with a synchronous and blocking function call. 
+<p class="level0">libcurl also offers another interface that allows multiple simultaneous transfers in a single thread, the so called multi interface. More about that interface is detailed in a separate chapter further down. You still need to understand the easy interface first, so please continue reading for better understanding. <a name="Handle"></a><h2 class="nroffsh">Handle the Easy libcurl</h2>
 <p class="level0">To use the easy interface, you must first create yourself an easy handle. You need one handle for each easy session you want to perform. Basically, you should use one handle for every thread you plan to use for transferring. You must never share the same handle in multiple threads. 
 <p class="level0">Get an easy handle with 
 <p class="level0">&nbsp;easyhandle = curl_easy_init(); 
 <p class="level0">It returns an easy handle. Using that you proceed to the next step: setting up your preferred actions. A handle is just a logic entity for the upcoming transfer or series of transfers. 
 <p class="level0">To use the easy interface, you must first create yourself an easy handle. You need one handle for each easy session you want to perform. Basically, you should use one handle for every thread you plan to use for transferring. You must never share the same handle in multiple threads. 
 <p class="level0">Get an easy handle with 
 <p class="level0">&nbsp;easyhandle = curl_easy_init(); 
 <p class="level0">It returns an easy handle. Using that you proceed to the next step: setting up your preferred actions. A handle is just a logic entity for the upcoming transfer or series of transfers. 
-<p class="level0">You set properties and options for this handle using <a class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt(3)</a>. They control how the subsequent transfer or transfers will be made. Options remain set in the handle until set again to something different. Alas, multiple requests using the same handle will use the same options. 
-<p class="level0">Many of the options you set in libcurl are "strings", pointers to data terminated with a zero byte. When you set strings with <a class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt(3)</a>, libcurl makes its own copy so that they don't need to be kept around in your application after being set[4]. 
-<p class="level0">One of the most basic properties to set in the handle is the URL. You set your preferred URL to transfer with CURLOPT_URL in a manner similar to: 
+<p class="level0">You set properties and options for this handle using <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a>. They control how the subsequent transfer or transfers will be made. Options remain set in the handle until set again to something different. They are sticky. Multiple requests using the same handle will use the same options. 
+<p class="level0">If you at any point would like to blank all previously set options for a single easy handle, you can call <a Class="emphasis" href="./curl_easy_reset.html">curl_easy_reset</a> and you can also make a clone of an easy handle (with all its set options) using <a Class="emphasis" href="./curl_easy_duphandle.html">curl_easy_duphandle</a>. 
+<p class="level0">Many of the options you set in libcurl are "strings", pointers to data terminated with a zero byte. When you set strings with <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a>, libcurl makes its own copy so that they don't need to be kept around in your application after being set[4]. 
+<p class="level0">One of the most basic properties to set in the handle is the URL. You set your preferred URL to transfer with <span Class="emphasis">CURLOPT_URL(3)</span> in a manner similar to: 
 <p class="level0"><pre>
 <p class="level0">&nbsp;curl_easy_setopt(handle, CURLOPT_URL, "<a href="http://domain.com/">http://domain.com/</a>");
  </pre>
 <p class="level0"><pre>
 <p class="level0">&nbsp;curl_easy_setopt(handle, CURLOPT_URL, "<a href="http://domain.com/">http://domain.com/</a>");
  </pre>
@@ -106,25 +107,25 @@ p.roffit {
 <p class="level0">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_WRITEFUNCTION, write_data); 
 <p class="level0">You can control what data your callback function gets in the fourth argument by setting another property: 
 <p class="level0">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_WRITEDATA, &internal_struct); 
 <p class="level0">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_WRITEFUNCTION, write_data); 
 <p class="level0">You can control what data your callback function gets in the fourth argument by setting another property: 
 <p class="level0">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_WRITEDATA, &internal_struct); 
-<p class="level0">Using that property, you can easily pass local data between your application and the function that gets invoked by libcurl. libcurl itself won't touch the data you pass with <span Class="emphasis">CURLOPT_WRITEDATA</span>. 
-<p class="level0">libcurl offers its own default internal callback that will take care of the data if you don't set the callback with <span Class="emphasis">CURLOPT_WRITEFUNCTION</span>. It will then simply output the received data to stdout. You can have the default callback write the data to a different file handle by passing a 'FILE *' to a file opened for writing with the <span Class="emphasis">CURLOPT_WRITEDATA</span> option. 
-<p class="level0">Now, we need to take a step back and have a deep breath. Here's one of those rare platform-dependent nitpicks. Did you spot it? On some platforms[2], libcurl won't be able to operate on files opened by the program. Thus, if you use the default callback and pass in an open file with <span Class="emphasis">CURLOPT_WRITEDATA</span>, it will crash. You should therefore avoid this to make your program run fine virtually everywhere. 
-<p class="level0">(<span Class="emphasis">CURLOPT_WRITEDATA</span> was formerly known as <span Class="emphasis">CURLOPT_FILE</span>. Both names still work and do the same thing). 
-<p class="level0">If you're using libcurl as a win32 DLL, you MUST use the <span Class="emphasis">CURLOPT_WRITEFUNCTION</span> if you set <span Class="emphasis">CURLOPT_WRITEDATA</span> - or you will experience crashes. 
+<p class="level0">Using that property, you can easily pass local data between your application and the function that gets invoked by libcurl. libcurl itself won't touch the data you pass with <span Class="emphasis">CURLOPT_WRITEDATA(3)</span>. 
+<p class="level0">libcurl offers its own default internal callback that will take care of the data if you don't set the callback with <span Class="emphasis">CURLOPT_WRITEFUNCTION(3)</span>. It will then simply output the received data to stdout. You can have the default callback write the data to a different file handle by passing a 'FILE *' to a file opened for writing with the <span Class="emphasis">CURLOPT_WRITEDATA(3)</span> option. 
+<p class="level0">Now, we need to take a step back and have a deep breath. Here's one of those rare platform-dependent nitpicks. Did you spot it? On some platforms[2], libcurl won't be able to operate on files opened by the program. Thus, if you use the default callback and pass in an open file with <span Class="emphasis">CURLOPT_WRITEDATA(3)</span>, it will crash. You should therefore avoid this to make your program run fine virtually everywhere. 
+<p class="level0">(<span Class="emphasis">CURLOPT_WRITEDATA(3)</span> was formerly known as <span Class="emphasis">CURLOPT_FILE</span>. Both names still work and do the same thing). 
+<p class="level0">If you're using libcurl as a win32 DLL, you MUST use the <span Class="emphasis">CURLOPT_WRITEFUNCTION(3)</span> if you set <span Class="emphasis">CURLOPT_WRITEDATA(3)</span> - or you will experience crashes. 
 <p class="level0">There are of course many more options you can set, and we'll get back to a few of them later. Let's instead continue to the actual transfer: 
 <p class="level0">&nbsp;success = curl_easy_perform(easyhandle); 
 <p class="level0">There are of course many more options you can set, and we'll get back to a few of them later. Let's instead continue to the actual transfer: 
 <p class="level0">&nbsp;success = curl_easy_perform(easyhandle); 
-<p class="level0"><a class="emphasis" href="./curl_easy_perform.html">curl_easy_perform(3)</a> will connect to the remote site, do the necessary commands and receive the transfer. Whenever it receives data, it calls the callback function we previously set. The function may get one byte at a time, or it may get many kilobytes at once. libcurl delivers as much as possible as often as possible. Your callback function should return the number of bytes it "took care of". If that is not the exact same amount of bytes that was passed to it, libcurl will abort the operation and return with an error code. 
-<p class="level0">When the transfer is complete, the function returns a return code that informs you if it succeeded in its mission or not. If a return code isn't enough for you, you can use the CURLOPT_ERRORBUFFER to point libcurl to a buffer of yours where it'll store a human readable error message as well. 
+<p class="level0"><a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> will connect to the remote site, do the necessary commands and receive the transfer. Whenever it receives data, it calls the callback function we previously set. The function may get one byte at a time, or it may get many kilobytes at once. libcurl delivers as much as possible as often as possible. Your callback function should return the number of bytes it "took care of". If that is not the exact same amount of bytes that was passed to it, libcurl will abort the operation and return with an error code. 
+<p class="level0">When the transfer is complete, the function returns a return code that informs you if it succeeded in its mission or not. If a return code isn't enough for you, you can use the <span Class="emphasis">CURLOPT_ERRORBUFFER(3)</span> to point libcurl to a buffer of yours where it'll store a human readable error message as well. 
 <p class="level0">If you then want to transfer another file, the handle is ready to be used again. Mind you, it is even preferred that you re-use an existing handle if you intend to make another transfer. libcurl will then attempt to re-use the previous connection. 
 <p class="level0">For some protocols, downloading a file can involve a complicated process of logging in, setting the transfer mode, changing the current directory and finally transferring the file data. libcurl takes care of all that complication for you. Given simply the URL to a file, libcurl will take care of all the details needed to get the file moved from one machine to another. 
 <p class="level0"><a name="Multi-threading"></a><h2 class="nroffsh">Multi-threading Issues</h2>
 <p class="level0">The first basic rule is that you must <span Class="bold">never</span> simultaneously share a libcurl handle (be it easy or multi or whatever) between multiple threads. Only use one handle in one thread at any time. You can pass the handles around among threads, but you must never use a single handle from more than one thread at any given time. 
 <p class="level0">If you then want to transfer another file, the handle is ready to be used again. Mind you, it is even preferred that you re-use an existing handle if you intend to make another transfer. libcurl will then attempt to re-use the previous connection. 
 <p class="level0">For some protocols, downloading a file can involve a complicated process of logging in, setting the transfer mode, changing the current directory and finally transferring the file data. libcurl takes care of all that complication for you. Given simply the URL to a file, libcurl will take care of all the details needed to get the file moved from one machine to another. 
 <p class="level0"><a name="Multi-threading"></a><h2 class="nroffsh">Multi-threading Issues</h2>
 <p class="level0">The first basic rule is that you must <span Class="bold">never</span> simultaneously share a libcurl handle (be it easy or multi or whatever) between multiple threads. Only use one handle in one thread at any time. You can pass the handles around among threads, but you must never use a single handle from more than one thread at any given time. 
-<p class="level0">libcurl is completely thread safe, except for two issues: signals and SSL/TLS handlers. Signals are used for timing out name resolves (during DNS lookup) - when built without c-ares support and not on Windows. 
+<p class="level0">libcurl is completely thread safe, except for two issues: signals and SSL/TLS handlers. Signals are used for timing out name resolves (during DNS lookup) - when built without using either the c-ares or threaded resolver backends. 
 <p class="level0">If you are accessing HTTPS or FTPS URLs in a multi-threaded manner, you are then of course using the underlying SSL library multi-threaded and those libs might have their own requirements on this issue. Basically, you need to provide one or two functions to allow it to function properly. For all details, see this: 
 <p class="level0">OpenSSL 
 <p class="level0">If you are accessing HTTPS or FTPS URLs in a multi-threaded manner, you are then of course using the underlying SSL library multi-threaded and those libs might have their own requirements on this issue. Basically, you need to provide one or two functions to allow it to function properly. For all details, see this: 
 <p class="level0">OpenSSL 
-<p class="level0">&nbsp;<a href="http://www.openssl.org/docs/crypto/threads.html">http://www.openssl.org/docs/crypto/threads.html</a>#DESCRIPTION 
+<p class="level0">&nbsp;<a href="http://www.openssl.org/docs/crypto/threads.html#DESCRIPTION">http://www.openssl.org/docs/crypto/threads.html#DESCRIPTION</a> 
 <p class="level0">GnuTLS 
 <p class="level0">GnuTLS 
-<p class="level0">&nbsp;<a href="http://www.gnu.org/software/gnutls/manual/html_node/">http://www.gnu.org/software/gnutls/manual/html_node/</a>Multi_002dthreaded-applications.html 
+<p class="level0">&nbsp;<a href="http://gnutls.org/manual/html_node/Thread-safety.html">http://gnutls.org/manual/html_node/Thread-safety.html</a> 
 <p class="level0">NSS 
 <p class="level0">&nbsp;is claimed to be thread-safe already without anything required. 
 <p class="level0">PolarSSL 
 <p class="level0">NSS 
 <p class="level0">&nbsp;is claimed to be thread-safe already without anything required. 
 <p class="level0">PolarSSL 
@@ -135,13 +136,13 @@ p.roffit {
 <p class="level0">&nbsp;Required actions unknown. 
 <p class="level0">Secure Transport 
 <p class="level0">&nbsp;The engine is fully thread-safe, and no additional steps are required. 
 <p class="level0">&nbsp;Required actions unknown. 
 <p class="level0">Secure Transport 
 <p class="level0">&nbsp;The engine is fully thread-safe, and no additional steps are required. 
-<p class="level0">When using multiple threads you should set the CURLOPT_NOSIGNAL option to 1 for all handles. Everything will or might work fine except that timeouts are not honored during the DNS lookup - which you can work around by building libcurl with c-ares support. c-ares is a library that provides asynchronous name resolves. On some platforms, libcurl simply will not function properly multi-threaded unless this option is set. 
-<p class="level0">Also, note that CURLOPT_DNS_USE_GLOBAL_CACHE is not thread-safe. 
+<p class="level0">When using multiple threads you should set the <span Class="emphasis">CURLOPT_NOSIGNAL(3)</span> option to 1 for all handles. Everything will or might work fine except that timeouts are not honored during the DNS lookup - which you can work around by building libcurl with c-ares support. c-ares is a library that provides asynchronous name resolves. On some platforms, libcurl simply will not function properly multi-threaded unless this option is set. 
+<p class="level0">Also, note that <span Class="emphasis">CURLOPT_DNS_USE_GLOBAL_CACHE(3)</span> is not thread-safe. 
 <p class="level0"><a name="When"></a><h2 class="nroffsh">When It Doesn't Work</h2>
 <p class="level0">There will always be times when the transfer fails for some reason. You might have set the wrong libcurl option or misunderstood what the libcurl option actually does, or the remote server might return non-standard replies that confuse the library which then confuses your program. 
 <p class="level0"><a name="When"></a><h2 class="nroffsh">When It Doesn't Work</h2>
 <p class="level0">There will always be times when the transfer fails for some reason. You might have set the wrong libcurl option or misunderstood what the libcurl option actually does, or the remote server might return non-standard replies that confuse the library which then confuses your program. 
-<p class="level0">There's one golden rule when these things occur: set the CURLOPT_VERBOSE option to 1. It'll cause the library to spew out the entire protocol details it sends, some internal info and some received protocol data as well (especially when using FTP). If you're using HTTP, adding the headers in the received output to study is also a clever way to get a better understanding why the server behaves the way it does. Include headers in the normal body output with CURLOPT_HEADER set 1. 
-<p class="level0">Of course, there are bugs left. We need to know about them to be able to fix them, so we're quite dependent on your bug reports! When you do report suspected bugs in libcurl, please include as many details as you possibly can: a protocol dump that CURLOPT_VERBOSE produces, library version, as much as possible of your code that uses libcurl, operating system name and version, compiler name and version etc. 
-<p class="level0">If CURLOPT_VERBOSE is not enough, you increase the level of debug data your application receive by using the CURLOPT_DEBUGFUNCTION
+<p class="level0">There's one golden rule when these things occur: set the <span Class="emphasis">CURLOPT_VERBOSE(3)</span> option to 1. It'll cause the library to spew out the entire protocol details it sends, some internal info and some received protocol data as well (especially when using FTP). If you're using HTTP, adding the headers in the received output to study is also a clever way to get a better understanding why the server behaves the way it does. Include headers in the normal body output with <span Class="emphasis">CURLOPT_HEADER(3)</span> set 1. 
+<p class="level0">Of course, there are bugs left. We need to know about them to be able to fix them, so we're quite dependent on your bug reports! When you do report suspected bugs in libcurl, please include as many details as you possibly can: a protocol dump that <span Class="emphasis">CURLOPT_VERBOSE(3)</span> produces, library version, as much as possible of your code that uses libcurl, operating system name and version, compiler name and version etc. 
+<p class="level0">If <span Class="emphasis">CURLOPT_VERBOSE(3)</span> is not enough, you increase the level of debug data your application receive by using the <span Class="emphasis">CURLOPT_DEBUGFUNCTION(3)</span>
 <p class="level0">Getting some in-depth knowledge about the protocols involved is never wrong, and if you're trying to do funny things, you might very well understand libcurl and how to use it better if you study the appropriate RFC documents at least briefly. 
 <p class="level0"><a name="Upload"></a><h2 class="nroffsh">Upload Data to a Remote Site</h2>
 <p class="level0">libcurl tries to keep a protocol independent approach to most transfers, thus uploading to a remote FTP site is very similar to uploading data to a HTTP server with a PUT request. 
 <p class="level0">Getting some in-depth knowledge about the protocols involved is never wrong, and if you're trying to do funny things, you might very well understand libcurl and how to use it better if you study the appropriate RFC documents at least briefly. 
 <p class="level0"><a name="Upload"></a><h2 class="nroffsh">Upload Data to a Remote Site</h2>
 <p class="level0">libcurl tries to keep a protocol independent approach to most transfers, thus uploading to a remote FTP site is very similar to uploading data to a HTTP server with a PUT request. 
@@ -153,24 +154,24 @@ p.roffit {
 <p class="level0">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_READDATA, &filedata); 
 <p class="level0">Tell libcurl that we want to upload: 
 <p class="level0">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_UPLOAD, 1L); 
 <p class="level0">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_READDATA, &filedata); 
 <p class="level0">Tell libcurl that we want to upload: 
 <p class="level0">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_UPLOAD, 1L); 
-<p class="level0">A few protocols won't behave properly when uploads are done without any prior knowledge of the expected file size. So, set the upload file size using the CURLOPT_INFILESIZE_LARGE for all known file sizes like this[1]: 
+<p class="level0">A few protocols won't behave properly when uploads are done without any prior knowledge of the expected file size. So, set the upload file size using the <span Class="emphasis">CURLOPT_INFILESIZE_LARGE(3)</span> for all known file sizes like this[1]: 
 <p class="level0"><pre>
 <p class="level0">&nbsp;/* in this example, file_size must be an curl_off_t variable */
  &nbsp;curl_easy_setopt(easyhandle, CURLOPT_INFILESIZE_LARGE, file_size);
  </pre>
 
 <p class="level0">
 <p class="level0"><pre>
 <p class="level0">&nbsp;/* in this example, file_size must be an curl_off_t variable */
  &nbsp;curl_easy_setopt(easyhandle, CURLOPT_INFILESIZE_LARGE, file_size);
  </pre>
 
 <p class="level0">
-<p class="level0">When you call <a class="emphasis" href="./curl_easy_perform.html">curl_easy_perform(3)</a> this time, it'll perform all the necessary operations and when it has invoked the upload it'll call your supplied callback to get the data to upload. The program should return as much data as possible in every invoke, as that is likely to make the upload perform as fast as possible. The callback should return the number of bytes it wrote in the buffer. Returning 0 will signal the end of the upload. 
+<p class="level0">When you call <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> this time, it'll perform all the necessary operations and when it has invoked the upload it'll call your supplied callback to get the data to upload. The program should return as much data as possible in every invoke, as that is likely to make the upload perform as fast as possible. The callback should return the number of bytes it wrote in the buffer. Returning 0 will signal the end of the upload. 
 <p class="level0"><a name="Passwords"></a><h2 class="nroffsh">Passwords</h2>
 <p class="level0">Many protocols use or even require that user name and password are provided to be able to download or upload the data of your choice. libcurl offers several ways to specify them. 
 <p class="level0">Most protocols support that you specify the name and password in the URL itself. libcurl will detect this and use them accordingly. This is written like this: 
 <p class="level0">&nbsp;protocol://user:password@example.com/path/ 
 <p class="level0">If you need any odd letters in your user name or password, you should enter them URL encoded, as %XX where XX is a two-digit hexadecimal number. 
 <p class="level0"><a name="Passwords"></a><h2 class="nroffsh">Passwords</h2>
 <p class="level0">Many protocols use or even require that user name and password are provided to be able to download or upload the data of your choice. libcurl offers several ways to specify them. 
 <p class="level0">Most protocols support that you specify the name and password in the URL itself. libcurl will detect this and use them accordingly. This is written like this: 
 <p class="level0">&nbsp;protocol://user:password@example.com/path/ 
 <p class="level0">If you need any odd letters in your user name or password, you should enter them URL encoded, as %XX where XX is a two-digit hexadecimal number. 
-<p class="level0">libcurl also provides options to set various passwords. The user name and password as shown embedded in the URL can instead get set with the CURLOPT_USERPWD option. The argument passed to libcurl should be a char * to a string in the format "user:password". In a manner like this: 
+<p class="level0">libcurl also provides options to set various passwords. The user name and password as shown embedded in the URL can instead get set with the <span Class="emphasis">CURLOPT_USERPWD(3)</span> option. The argument passed to libcurl should be a char * to a string in the format "user:password". In a manner like this: 
 <p class="level0">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_USERPWD, "myname:thesecret"); 
 <p class="level0">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_USERPWD, "myname:thesecret"); 
-<p class="level0">Another case where name and password might be needed at times, is for those users who need to authenticate themselves to a proxy they use. libcurl offers another option for this, the CURLOPT_PROXYUSERPWD. It is used quite similar to the CURLOPT_USERPWD option like this: 
+<p class="level0">Another case where name and password might be needed at times, is for those users who need to authenticate themselves to a proxy they use. libcurl offers another option for this, the <span Class="emphasis">CURLOPT_PROXYUSERPWD(3)</span>. It is used quite similar to the <span Class="emphasis">CURLOPT_USERPWD(3)</span> option like this: 
 <p class="level0">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_PROXYUSERPWD, "myname:thesecret"); 
 <p class="level0">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_PROXYUSERPWD, "myname:thesecret"); 
-<p class="level0">There's a long time UNIX "standard" way of storing ftp user names and passwords, namely in the $HOME/.netrc file. The file should be made private so that only the user may read it (see also the "Security Considerations" chapter), as it might contain the password in plain text. libcurl has the ability to use this file to figure out what set of user name and password to use for a particular host. As an extension to the normal functionality, libcurl also supports this file for non-FTP protocols such as HTTP. To make curl use this file, use the CURLOPT_NETRC option: 
+<p class="level0">There's a long time Unix "standard" way of storing FTP user names and passwords, namely in the $HOME/.netrc file. The file should be made private so that only the user may read it (see also the "Security Considerations" chapter), as it might contain the password in plain text. libcurl has the ability to use this file to figure out what set of user name and password to use for a particular host. As an extension to the normal functionality, libcurl also supports this file for non-FTP protocols such as HTTP. To make curl use this file, use the <span Class="emphasis">CURLOPT_NETRC(3)</span> option: 
 <p class="level0">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_NETRC, 1L); 
 <p class="level0">And a very basic example of how such a .netrc file may look like: 
 <p class="level0"><pre>
 <p class="level0">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_NETRC, 1L); 
 <p class="level0">And a very basic example of how such a .netrc file may look like: 
 <p class="level0"><pre>
@@ -185,9 +186,9 @@ p.roffit {
 <p class="level0">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_KEYPASSWD, "keypassword"); 
 <p class="level0"><a name="HTTP"></a><h2 class="nroffsh">HTTP Authentication</h2>
 <p class="level0">The previous chapter showed how to set user name and password for getting URLs that require authentication. When using the HTTP protocol, there are many different ways a client can provide those credentials to the server and you can control which way libcurl will (attempt to) use them. The default HTTP authentication method is called 'Basic', which is sending the name and password in clear-text in the HTTP request, base64-encoded. This is insecure. 
 <p class="level0">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_KEYPASSWD, "keypassword"); 
 <p class="level0"><a name="HTTP"></a><h2 class="nroffsh">HTTP Authentication</h2>
 <p class="level0">The previous chapter showed how to set user name and password for getting URLs that require authentication. When using the HTTP protocol, there are many different ways a client can provide those credentials to the server and you can control which way libcurl will (attempt to) use them. The default HTTP authentication method is called 'Basic', which is sending the name and password in clear-text in the HTTP request, base64-encoded. This is insecure. 
-<p class="level0">At the time of this writing, libcurl can be built to use: Basic, Digest, NTLM, Negotiate, GSS-Negotiate and SPNEGO. You can tell libcurl which one to use with CURLOPT_HTTPAUTH as in: 
+<p class="level0">At the time of this writing, libcurl can be built to use: Basic, Digest, NTLM, Negotiate (SPNEGO). You can tell libcurl which one to use with <span Class="emphasis">CURLOPT_HTTPAUTH(3)</span> as in: 
 <p class="level0">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST); 
 <p class="level0">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST); 
-<p class="level0">And when you send authentication to a proxy, you can also set authentication type the same way but instead with CURLOPT_PROXYAUTH
+<p class="level0">And when you send authentication to a proxy, you can also set authentication type the same way but instead with <span Class="emphasis">CURLOPT_PROXYAUTH(3)</span>
 <p class="level0">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_PROXYAUTH, CURLAUTH_NTLM); 
 <p class="level0">Both these options allow you to set multiple types (by ORing them together), to make libcurl pick the most secure one out of the types the server/proxy claims to support. This method does however add a round-trip since libcurl must first ask the server what it supports: 
 <p class="level0">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_HTTPAUTH, &nbsp;CURLAUTH_DIGEST|CURLAUTH_BASIC); 
 <p class="level0">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_PROXYAUTH, CURLAUTH_NTLM); 
 <p class="level0">Both these options allow you to set multiple types (by ORing them together), to make libcurl pick the most secure one out of the types the server/proxy claims to support. This method does however add a round-trip since libcurl must first ask the server what it supports: 
 <p class="level0">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_HTTPAUTH, &nbsp;CURLAUTH_DIGEST|CURLAUTH_BASIC); 
@@ -204,7 +205,7 @@ p.roffit {
  </pre>
 
 <p class="level0">
  </pre>
 
 <p class="level0">
-<p class="level0">Simple enough, huh? Since you set the POST options with the CURLOPT_POSTFIELDS, this automatically switches the handle to use POST in the upcoming request. 
+<p class="level0">Simple enough, huh? Since you set the POST options with the <span Class="emphasis">CURLOPT_POSTFIELDS(3)</span>, this automatically switches the handle to use POST in the upcoming request. 
 <p class="level0">Ok, so what if you want to post binary data that also requires you to set the Content-Type: header of the post? Well, binary posts prevent libcurl from being able to do strlen() on the data to figure out the size, so therefore we must tell libcurl the size of the post data. Setting headers in libcurl requests are done in a generic way, by building a list of our own headers and then passing that list to libcurl. 
 <p class="level0"><pre>
 <p class="level0">&nbsp;struct curl_slist *headers=NULL;
 <p class="level0">Ok, so what if you want to post binary data that also requires you to set the Content-Type: header of the post? Well, binary posts prevent libcurl from being able to do strlen() on the data to figure out the size, so therefore we must tell libcurl the size of the post data. Setting headers in libcurl requests are done in a generic way, by building a list of our own headers and then passing that list to libcurl. 
 <p class="level0"><pre>
 <p class="level0">&nbsp;struct curl_slist *headers=NULL;
@@ -220,7 +221,7 @@ p.roffit {
  </pre>
 
 <p class="level0">
  </pre>
 
 <p class="level0">
-<p class="level0">While the simple examples above cover the majority of all cases where HTTP POST operations are required, they don't do multi-part formposts. Multi-part formposts were introduced as a better way to post (possibly large) binary data and were first documented in the <a href="http://www.ietf.org/rfc/rfc1867.txt">RFC 1867</a> (updated in RFC2388). They're called multi-part because they're built by a chain of parts, each part being a single unit of data. Each part has its own name and contents. You can in fact create and post a multi-part formpost with the regular libcurl POST support described above, but that would require that you build a formpost yourself and provide to libcurl. To make that easier, libcurl provides <a class="emphasis" href="./curl_formadd.html">curl_formadd(3)</a>. Using this function, you add parts to the form. When you're done adding parts, you post the whole form. 
+<p class="level0">While the simple examples above cover the majority of all cases where HTTP POST operations are required, they don't do multi-part formposts. Multi-part formposts were introduced as a better way to post (possibly large) binary data and were first documented in the <a href="http://www.ietf.org/rfc/rfc1867.txt">RFC 1867</a> (updated in RFC2388). They're called multi-part because they're built by a chain of parts, each part being a single unit of data. Each part has its own name and contents. You can in fact create and post a multi-part formpost with the regular libcurl POST support described above, but that would require that you build a formpost yourself and provide to libcurl. To make that easier, libcurl provides <a Class="emphasis" href="./curl_formadd.html">curl_formadd</a>. Using this function, you add parts to the form. When you're done adding parts, you post the whole form. 
 <p class="level0">The following example sets two simple text parts with plain textual contents, and then a file with binary contents and uploads the whole thing. 
 <p class="level0"><pre>
 <p class="level0">&nbsp;struct curl_httppost *post=NULL;
 <p class="level0">The following example sets two simple text parts with plain textual contents, and then a file with binary contents and uploads the whole thing. 
 <p class="level0"><pre>
 <p class="level0">&nbsp;struct curl_httppost *post=NULL;
@@ -257,15 +258,15 @@ p.roffit {
  </pre>
 
 <p class="level0">
  </pre>
 
 <p class="level0">
-<p class="level0">Since all options on an easyhandle are "sticky", they remain the same until changed even if you do call <a class="emphasis" href="./curl_easy_perform.html">curl_easy_perform(3)</a>, you may need to tell curl to go back to a plain GET request if you intend to do one as your next request. You force an easyhandle to go back to GET by using the CURLOPT_HTTPGET option: 
+<p class="level0">Since all options on an easyhandle are "sticky", they remain the same until changed even if you do call <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a>, you may need to tell curl to go back to a plain GET request if you intend to do one as your next request. You force an easyhandle to go back to GET by using the <span Class="emphasis">CURLOPT_HTTPGET(3)</span> option: 
 <p class="level0">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_HTTPGET, 1L); 
 <p class="level0">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_HTTPGET, 1L); 
-<p class="level0">Just setting CURLOPT_POSTFIELDS to "" or NULL will *not* stop libcurl from doing a POST. It will just make it POST without any data to send! 
+<p class="level0">Just setting <span Class="emphasis">CURLOPT_POSTFIELDS(3)</span> to "" or NULL will *not* stop libcurl from doing a POST. It will just make it POST without any data to send! 
 <p class="level0"><a name="Showing"></a><h2 class="nroffsh">Showing Progress</h2>
 <p class="level0">
 <p class="level0">For historical and traditional reasons, libcurl has a built-in progress meter that can be switched on and then makes it present a progress meter in your terminal. 
 <p class="level0"><a name="Showing"></a><h2 class="nroffsh">Showing Progress</h2>
 <p class="level0">
 <p class="level0">For historical and traditional reasons, libcurl has a built-in progress meter that can be switched on and then makes it present a progress meter in your terminal. 
-<p class="level0">Switch on the progress meter by, oddly enough, setting CURLOPT_NOPROGRESS to zero. This option is set to 1 by default. 
+<p class="level0">Switch on the progress meter by, oddly enough, setting <span Class="emphasis">CURLOPT_NOPROGRESS(3)</span> to zero. This option is set to 1 by default. 
 <p class="level0">For most applications however, the built-in progress meter is useless and what instead is interesting is the ability to specify a progress callback. The function pointer you pass to libcurl will then be called on irregular intervals with information about the current transfer. 
 <p class="level0">For most applications however, the built-in progress meter is useless and what instead is interesting is the ability to specify a progress callback. The function pointer you pass to libcurl will then be called on irregular intervals with information about the current transfer. 
-<p class="level0">Set the progress callback by using CURLOPT_PROGRESSFUNCTION. And pass a pointer to a function that matches this prototype: 
+<p class="level0">Set the progress callback by using <span Class="emphasis">CURLOPT_PROGRESSFUNCTION(3)</span>. And pass a pointer to a function that matches this prototype: 
 <p class="level0"><pre>
 <p class="level0">&nbsp;int progress_callback(void *clientp,
  &nbsp;                      double dltotal,
 <p class="level0"><pre>
 <p class="level0">&nbsp;int progress_callback(void *clientp,
  &nbsp;                      double dltotal,
@@ -275,7 +276,7 @@ p.roffit {
  </pre>
 
 <p class="level0">
  </pre>
 
 <p class="level0">
-<p class="level0">If any of the input arguments is unknown, a 0 will be passed. The first argument, the 'clientp' is the pointer you pass to libcurl with CURLOPT_PROGRESSDATA. libcurl won't touch it. 
+<p class="level0">If any of the input arguments is unknown, a 0 will be passed. The first argument, the 'clientp' is the pointer you pass to libcurl with <span Class="emphasis">CURLOPT_PROGRESSDATA(3)</span>. libcurl won't touch it. 
 <p class="level0"><a name="libcurl"></a><h2 class="nroffsh">libcurl with C++</h2>
 <p class="level0">
 <p class="level0">There's basically only one thing to keep in mind when using C++ instead of C when interfacing libcurl: 
 <p class="level0"><a name="libcurl"></a><h2 class="nroffsh">libcurl with C++</h2>
 <p class="level0">
 <p class="level0">There's basically only one thing to keep in mind when using C++ instead of C when interfacing libcurl: 
@@ -306,8 +307,8 @@ p.roffit {
 <p class="level1">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_PROXY, "proxy-host.com:8080"); 
 <p class="level1">Some proxies require user authentication before allowing a request, and you pass that information similar to this: 
 <p class="level1">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_PROXYUSERPWD, "user:password"); 
 <p class="level1">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_PROXY, "proxy-host.com:8080"); 
 <p class="level1">Some proxies require user authentication before allowing a request, and you pass that information similar to this: 
 <p class="level1">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_PROXYUSERPWD, "user:password"); 
-<p class="level1">If you want to, you can specify the host name only in the CURLOPT_PROXY option, and set the port number separately with CURLOPT_PROXYPORT
-<p class="level1">Tell libcurl what kind of proxy it is with CURLOPT_PROXYTYPE (if not, it will default to assume a HTTP proxy): 
+<p class="level1">If you want to, you can specify the host name only in the <span Class="emphasis">CURLOPT_PROXY(3)</span> option, and set the port number separately with <span Class="emphasis">CURLOPT_PROXYPORT(3)</span>
+<p class="level1">Tell libcurl what kind of proxy it is with <span Class="emphasis">CURLOPT_PROXYTYPE(3)</span> (if not, it will default to assume a HTTP proxy): 
 <p class="level1">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4); 
 <p class="level1">
 <p class="level0"><a name="Environment"></a><span class="nroffip">Environment Variables</span> 
 <p class="level1">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4); 
 <p class="level1">
 <p class="level0"><a name="Environment"></a><span class="nroffip">Environment Variables</span> 
@@ -315,7 +316,7 @@ p.roffit {
 <p class="level1">libcurl automatically checks and uses a set of environment variables to know what proxies to use for certain protocols. The names of the variables are following an ancient de facto standard and are built up as "[protocol]_proxy" (note the lower casing). Which makes the variable 'http_proxy' checked for a name of a proxy to use when the input URL is HTTP. Following the same rule, the variable named 'ftp_proxy' is checked for FTP URLs. Again, the proxies are always HTTP proxies, the different names of the variables simply allows different HTTP proxies to be used. 
 <p class="level1">The proxy environment variable contents should be in the format "[protocol://][user:password@]machine[:port]". Where the protocol:// part is simply ignored if present (so <a href="http://proxy">http://proxy</a> and bluerk://proxy will do the same) and the optional port number specifies on which port the proxy operates on the host. If not specified, the internal default port number will be used and that is most likely *not* the one you would like it to be. 
 <p class="level1">There are two special environment variables. 'all_proxy' is what sets proxy for any URL in case the protocol specific variable wasn't set, and 'no_proxy' defines a list of hosts that should not use a proxy even though a variable may say so. If 'no_proxy' is a plain asterisk ("*") it matches all hosts. 
 <p class="level1">libcurl automatically checks and uses a set of environment variables to know what proxies to use for certain protocols. The names of the variables are following an ancient de facto standard and are built up as "[protocol]_proxy" (note the lower casing). Which makes the variable 'http_proxy' checked for a name of a proxy to use when the input URL is HTTP. Following the same rule, the variable named 'ftp_proxy' is checked for FTP URLs. Again, the proxies are always HTTP proxies, the different names of the variables simply allows different HTTP proxies to be used. 
 <p class="level1">The proxy environment variable contents should be in the format "[protocol://][user:password@]machine[:port]". Where the protocol:// part is simply ignored if present (so <a href="http://proxy">http://proxy</a> and bluerk://proxy will do the same) and the optional port number specifies on which port the proxy operates on the host. If not specified, the internal default port number will be used and that is most likely *not* the one you would like it to be. 
 <p class="level1">There are two special environment variables. 'all_proxy' is what sets proxy for any URL in case the protocol specific variable wasn't set, and 'no_proxy' defines a list of hosts that should not use a proxy even though a variable may say so. If 'no_proxy' is a plain asterisk ("*") it matches all hosts. 
-<p class="level1">To explicitly disable libcurl's checking for and using the proxy environment variables, set the proxy name to "" - an empty string - with CURLOPT_PROXY
+<p class="level1">To explicitly disable libcurl's checking for and using the proxy environment variables, set the proxy name to "" - an empty string - with <span Class="emphasis">CURLOPT_PROXY(3)</span>
 <p class="level0"><a name="SSL"></a><span class="nroffip">SSL and Proxies</span> 
 <p class="level1">
 <p class="level1">SSL is for secure point-to-point connections. This involves strong encryption and similar things, which effectively makes it impossible for a proxy to operate as a "man in between" which the proxy's task is, as previously discussed. Instead, the only way to have SSL work over a HTTP proxy is to ask the proxy to tunnel trough everything without being able to check or fiddle with the traffic. 
 <p class="level0"><a name="SSL"></a><span class="nroffip">SSL and Proxies</span> 
 <p class="level1">
 <p class="level1">SSL is for secure point-to-point connections. This involves strong encryption and similar things, which effectively makes it impossible for a proxy to operate as a "man in between" which the proxy's task is, as previously discussed. Instead, the only way to have SSL work over a HTTP proxy is to ask the proxy to tunnel trough everything without being able to check or fiddle with the traffic. 
@@ -342,15 +343,15 @@ p.roffit {
 <p class="level1"><a name="Persistence"></a><h2 class="nroffsh">Persistence Is The Way to Happiness</h2>
 <p class="level0">
 <p class="level0">Re-cycling the same easy handle several times when doing multiple requests is the way to go. 
 <p class="level1"><a name="Persistence"></a><h2 class="nroffsh">Persistence Is The Way to Happiness</h2>
 <p class="level0">
 <p class="level0">Re-cycling the same easy handle several times when doing multiple requests is the way to go. 
-<p class="level0">After each single <a class="emphasis" href="./curl_easy_perform.html">curl_easy_perform(3)</a> operation, libcurl will keep the connection alive and open. A subsequent request using the same easy handle to the same host might just be able to use the already open connection! This reduces network impact a lot. 
+<p class="level0">After each single <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> operation, libcurl will keep the connection alive and open. A subsequent request using the same easy handle to the same host might just be able to use the already open connection! This reduces network impact a lot. 
 <p class="level0">Even if the connection is dropped, all connections involving SSL to the same host again, will benefit from libcurl's session ID cache that drastically reduces re-connection time. 
 <p class="level0">FTP connections that are kept alive save a lot of time, as the command- response round-trips are skipped, and also you don't risk getting blocked without permission to login again like on many FTP servers only allowing N persons to be logged in at the same time. 
 <p class="level0">libcurl caches DNS name resolving results, to make lookups of a previously looked up name a lot faster. 
 <p class="level0">Other interesting details that improve performance for subsequent requests may also be added in the future. 
 <p class="level0">Even if the connection is dropped, all connections involving SSL to the same host again, will benefit from libcurl's session ID cache that drastically reduces re-connection time. 
 <p class="level0">FTP connections that are kept alive save a lot of time, as the command- response round-trips are skipped, and also you don't risk getting blocked without permission to login again like on many FTP servers only allowing N persons to be logged in at the same time. 
 <p class="level0">libcurl caches DNS name resolving results, to make lookups of a previously looked up name a lot faster. 
 <p class="level0">Other interesting details that improve performance for subsequent requests may also be added in the future. 
-<p class="level0">Each easy handle will attempt to keep the last few connections alive for a while in case they are to be used again. You can set the size of this "cache" with the CURLOPT_MAXCONNECTS option. Default is 5. There is very seldom any point in changing this value, and if you think of changing this it is often just a matter of thinking again. 
-<p class="level0">To force your upcoming request to not use an already existing connection (it will even close one first if there happens to be one alive to the same host you're about to operate on), you can do that by setting CURLOPT_FRESH_CONNECT to 1. In a similar spirit, you can also forbid the upcoming request to be "lying" around and possibly get re-used after the request by setting CURLOPT_FORBID_REUSE to 1. 
+<p class="level0">Each easy handle will attempt to keep the last few connections alive for a while in case they are to be used again. You can set the size of this "cache" with the <span Class="emphasis">CURLOPT_MAXCONNECTS(3)</span> option. Default is 5. There is very seldom any point in changing this value, and if you think of changing this it is often just a matter of thinking again. 
+<p class="level0">To force your upcoming request to not use an already existing connection (it will even close one first if there happens to be one alive to the same host you're about to operate on), you can do that by setting <span Class="emphasis">CURLOPT_FRESH_CONNECT(3)</span> to 1. In a similar spirit, you can also forbid the upcoming request to be "lying" around and possibly get re-used after the request by setting <span Class="emphasis">CURLOPT_FORBID_REUSE(3)</span> to 1. 
 <p class="level0"><a name="HTTP"></a><h2 class="nroffsh">HTTP Headers Used by libcurl</h2>
 <p class="level0"><a name="HTTP"></a><h2 class="nroffsh">HTTP Headers Used by libcurl</h2>
-<p class="level0">When you use libcurl to do HTTP requests, it'll pass along a series of headers automatically. It might be good for you to know and understand these. You can replace or remove them by using the CURLOPT_HTTPHEADER option. 
+<p class="level0">When you use libcurl to do HTTP requests, it'll pass along a series of headers automatically. It might be good for you to know and understand these. You can replace or remove them by using the <span Class="emphasis">CURLOPT_HTTPHEADER(3)</span> option. 
 <p class="level0">
 <p class="level0"><a name="Host"></a><span class="nroffip">Host</span> 
 <p class="level1">This header is required by HTTP 1.1 and even many 1.0 servers and should be the name of the server we want to talk to. This includes the port number if anything but default. 
 <p class="level0">
 <p class="level0"><a name="Host"></a><span class="nroffip">Host</span> 
 <p class="level1">This header is required by HTTP 1.1 and even many 1.0 servers and should be the name of the server we want to talk to. This includes the port number if anything but default. 
@@ -366,7 +367,7 @@ p.roffit {
 <p class="level0">libcurl is your friend here too. 
 <p class="level0">
 <p class="level0"><a name="CUSTOMREQUEST"></a><span class="nroffip">CUSTOMREQUEST</span> 
 <p class="level0">libcurl is your friend here too. 
 <p class="level0">
 <p class="level0"><a name="CUSTOMREQUEST"></a><span class="nroffip">CUSTOMREQUEST</span> 
-<p class="level1">If just changing the actual HTTP request keyword is what you want, like when GET, HEAD or POST is not good enough for you, CURLOPT_CUSTOMREQUEST is there for you. It is very simple to use: 
+<p class="level1">If just changing the actual HTTP request keyword is what you want, like when GET, HEAD or POST is not good enough for you, <span Class="emphasis">CURLOPT_CUSTOMREQUEST(3)</span> is there for you. It is very simple to use: 
 <p class="level1">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_CUSTOMREQUEST, "MYOWNREQUEST"); 
 <p class="level1">When using the custom request, you change the request keyword of the actual request you are performing. Thus, by default you make a GET request but you can also make a POST operation (as described before) and then replace the POST keyword if you want to. You're the boss. 
 <p class="level1">
 <p class="level1">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_CUSTOMREQUEST, "MYOWNREQUEST"); 
 <p class="level1">When using the custom request, you change the request keyword of the actual request you are performing. Thus, by default you make a GET request but you can also make a POST operation (as described before) and then replace the POST keyword if you want to. You're the boss. 
 <p class="level1">
@@ -419,36 +420,36 @@ p.roffit {
  </pre>
 
 <p class="level1">
  </pre>
 
 <p class="level1">
-<p class="level1">If you would instead want this operation (or chain of operations) to happen _after_ the data transfer took place the option to <a class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt(3)</a> would instead be called CURLOPT_POSTQUOTE and used the exact same way. 
-<p class="level1">The custom FTP command will be issued to the server in the same order they are added to the list, and if a command gets an error code returned back from the server, no more commands will be issued and libcurl will bail out with an error code (CURLE_QUOTE_ERROR). Note that if you use CURLOPT_QUOTE to send commands before a transfer, no transfer will actually take place when a quote command has failed. 
-<p class="level1">If you set the CURLOPT_HEADER to 1, you will tell libcurl to get information about the target file and output "headers" about it. The headers will be in "HTTP-style", looking like they do in HTTP. 
-<p class="level1">The option to enable headers or to run custom FTP commands may be useful to combine with CURLOPT_NOBODY. If this option is set, no actual file content transfer will be performed. 
+<p class="level1">If you would instead want this operation (or chain of operations) to happen _after_ the data transfer took place the option to <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a> would instead be called <span Class="emphasis">CURLOPT_POSTQUOTE(3)</span> and used the exact same way. 
+<p class="level1">The custom FTP command will be issued to the server in the same order they are added to the list, and if a command gets an error code returned back from the server, no more commands will be issued and libcurl will bail out with an error code (CURLE_QUOTE_ERROR). Note that if you use <span Class="emphasis">CURLOPT_QUOTE(3)</span> to send commands before a transfer, no transfer will actually take place when a quote command has failed. 
+<p class="level1">If you set the <span Class="emphasis">CURLOPT_HEADER(3)</span> to 1, you will tell libcurl to get information about the target file and output "headers" about it. The headers will be in "HTTP-style", looking like they do in HTTP. 
+<p class="level1">The option to enable headers or to run custom FTP commands may be useful to combine with <span Class="emphasis">CURLOPT_NOBODY(3)</span>. If this option is set, no actual file content transfer will be performed. 
 <p class="level1">
 <p class="level0"><a name="FTP"></a><span class="nroffip">FTP Custom CUSTOMREQUEST</span> 
 <p class="level1">
 <p class="level0"><a name="FTP"></a><span class="nroffip">FTP Custom CUSTOMREQUEST</span> 
-<p class="level1">If you do want to list the contents of a FTP directory using your own defined FTP command, CURLOPT_CUSTOMREQUEST will do just that. "NLST" is the default one for listing directories but you're free to pass in your idea of a good alternative. 
+<p class="level1">If you do want to list the contents of a FTP directory using your own defined FTP command, <span Class="emphasis">CURLOPT_CUSTOMREQUEST(3)</span> will do just that. "NLST" is the default one for listing directories but you're free to pass in your idea of a good alternative. 
 <p class="level1"><a name="Cookies"></a><h2 class="nroffsh">Cookies Without Chocolate Chips</h2>
 <p class="level0">In the HTTP sense, a cookie is a name with an associated value. A server sends the name and value to the client, and expects it to get sent back on every subsequent request to the server that matches the particular conditions set. The conditions include that the domain name and path match and that the cookie hasn't become too old. 
 <p class="level0">In real-world cases, servers send new cookies to replace existing ones to update them. Server use cookies to "track" users and to keep "sessions". 
 <p class="level0">Cookies are sent from server to clients with the header Set-Cookie: and they're sent from clients to servers with the Cookie: header. 
 <p class="level1"><a name="Cookies"></a><h2 class="nroffsh">Cookies Without Chocolate Chips</h2>
 <p class="level0">In the HTTP sense, a cookie is a name with an associated value. A server sends the name and value to the client, and expects it to get sent back on every subsequent request to the server that matches the particular conditions set. The conditions include that the domain name and path match and that the cookie hasn't become too old. 
 <p class="level0">In real-world cases, servers send new cookies to replace existing ones to update them. Server use cookies to "track" users and to keep "sessions". 
 <p class="level0">Cookies are sent from server to clients with the header Set-Cookie: and they're sent from clients to servers with the Cookie: header. 
-<p class="level0">To just send whatever cookie you want to a server, you can use CURLOPT_COOKIE to set a cookie string like this: 
+<p class="level0">To just send whatever cookie you want to a server, you can use <span Class="emphasis">CURLOPT_COOKIE(3)</span> to set a cookie string like this: 
 <p class="level0">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_COOKIE, "name1=var1; name2=var2;"); 
 <p class="level0">In many cases, that is not enough. You might want to dynamically save whatever cookies the remote server passes to you, and make sure those cookies are then used accordingly on later requests. 
 <p class="level0">&nbsp;curl_easy_setopt(easyhandle, CURLOPT_COOKIE, "name1=var1; name2=var2;"); 
 <p class="level0">In many cases, that is not enough. You might want to dynamically save whatever cookies the remote server passes to you, and make sure those cookies are then used accordingly on later requests. 
-<p class="level0">One way to do this, is to save all headers you receive in a plain file and when you make a request, you tell libcurl to read the previous headers to figure out which cookies to use. Set the header file to read cookies from with CURLOPT_COOKIEFILE
-<p class="level0">The CURLOPT_COOKIEFILE option also automatically enables the cookie parser in libcurl. Until the cookie parser is enabled, libcurl will not parse or understand incoming cookies and they will just be ignored. However, when the parser is enabled the cookies will be understood and the cookies will be kept in memory and used properly in subsequent requests when the same handle is used. Many times this is enough, and you may not have to save the cookies to disk at all. Note that the file you specify to CURLOPT_COOKIEFILE doesn't have to exist to enable the parser, so a common way to just enable the parser and not read any cookies is to use the name of a file you know doesn't exist. 
-<p class="level0">If you would rather use existing cookies that you've previously received with your Netscape or Mozilla browsers, you can make libcurl use that cookie file as input. The CURLOPT_COOKIEFILE is used for that too, as libcurl will automatically find out what kind of file it is and act accordingly. 
-<p class="level0">Perhaps the most advanced cookie operation libcurl offers, is saving the entire internal cookie state back into a Netscape/Mozilla formatted cookie file. We call that the cookie-jar. When you set a file name with CURLOPT_COOKIEJAR, that file name will be created and all received cookies will be stored in it when <a class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup(3)</a> is called. This enables cookies to get passed on properly between multiple handles without any information getting lost. 
+<p class="level0">One way to do this, is to save all headers you receive in a plain file and when you make a request, you tell libcurl to read the previous headers to figure out which cookies to use. Set the header file to read cookies from with <span Class="emphasis">CURLOPT_COOKIEFILE(3)</span>
+<p class="level0">The <span Class="emphasis">CURLOPT_COOKIEFILE(3)</span> option also automatically enables the cookie parser in libcurl. Until the cookie parser is enabled, libcurl will not parse or understand incoming cookies and they will just be ignored. However, when the parser is enabled the cookies will be understood and the cookies will be kept in memory and used properly in subsequent requests when the same handle is used. Many times this is enough, and you may not have to save the cookies to disk at all. Note that the file you specify to ICURLOPT_COOKIEFILE(3)</span> doesn't have to exist to enable the parser, so a common way to just enable the parser and not read any cookies is to use the name of a file you know doesn't exist. 
+<p class="level0">If you would rather use existing cookies that you've previously received with your Netscape or Mozilla browsers, you can make libcurl use that cookie file as input. The <span Class="emphasis">CURLOPT_COOKIEFILE(3)</span> is used for that too, as libcurl will automatically find out what kind of file it is and act accordingly. 
+<p class="level0">Perhaps the most advanced cookie operation libcurl offers, is saving the entire internal cookie state back into a Netscape/Mozilla formatted cookie file. We call that the cookie-jar. When you set a file name with <span Class="emphasis">CURLOPT_COOKIEJAR(3)</span>, that file name will be created and all received cookies will be stored in it when <a Class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup</a> is called. This enables cookies to get passed on properly between multiple handles without any information getting lost. 
 <p class="level0"><a name="FTP"></a><h2 class="nroffsh">FTP Peculiarities We Need</h2>
 <p class="level0">
 <p class="level0">FTP transfers use a second TCP/IP connection for the data transfer. This is usually a fact you can forget and ignore but at times this fact will come back to haunt you. libcurl offers several different ways to customize how the second connection is being made. 
 <p class="level0">libcurl can either connect to the server a second time or tell the server to connect back to it. The first option is the default and it is also what works best for all the people behind firewalls, NATs or IP-masquerading setups. libcurl then tells the server to open up a new port and wait for a second connection. This is by default attempted with EPSV first, and if that doesn't work it tries PASV instead. (EPSV is an extension to the original FTP spec and does not exist nor work on all FTP servers.) 
 <p class="level0"><a name="FTP"></a><h2 class="nroffsh">FTP Peculiarities We Need</h2>
 <p class="level0">
 <p class="level0">FTP transfers use a second TCP/IP connection for the data transfer. This is usually a fact you can forget and ignore but at times this fact will come back to haunt you. libcurl offers several different ways to customize how the second connection is being made. 
 <p class="level0">libcurl can either connect to the server a second time or tell the server to connect back to it. The first option is the default and it is also what works best for all the people behind firewalls, NATs or IP-masquerading setups. libcurl then tells the server to open up a new port and wait for a second connection. This is by default attempted with EPSV first, and if that doesn't work it tries PASV instead. (EPSV is an extension to the original FTP spec and does not exist nor work on all FTP servers.) 
-<p class="level0">You can prevent libcurl from first trying the EPSV command by setting CURLOPT_FTP_USE_EPSV to zero. 
-<p class="level0">In some cases, you will prefer to have the server connect back to you for the second connection. This might be when the server is perhaps behind a firewall or something and only allows connections on a single port. libcurl then informs the remote server which IP address and port number to connect to. This is made with the CURLOPT_FTPPORT option. If you set it to "-", libcurl will use your system's "default IP address". If you want to use a particular IP, you can set the full IP address, a host name to resolve to an IP address or even a local network interface name that libcurl will get the IP address from. 
-<p class="level0">When doing the "PORT" approach, libcurl will attempt to use the EPRT and the LPRT before trying PORT, as they work with more protocols. You can disable this behavior by setting CURLOPT_FTP_USE_EPRT to zero. 
+<p class="level0">You can prevent libcurl from first trying the EPSV command by setting <span Class="emphasis">CURLOPT_FTP_USE_EPSV(3)</span> to zero. 
+<p class="level0">In some cases, you will prefer to have the server connect back to you for the second connection. This might be when the server is perhaps behind a firewall or something and only allows connections on a single port. libcurl then informs the remote server which IP address and port number to connect to. This is made with the <span Class="emphasis">CURLOPT_FTPPORT(3)</span> option. If you set it to "-", libcurl will use your system's "default IP address". If you want to use a particular IP, you can set the full IP address, a host name to resolve to an IP address or even a local network interface name that libcurl will get the IP address from. 
+<p class="level0">When doing the "PORT" approach, libcurl will attempt to use the EPRT and the LPRT before trying PORT, as they work with more protocols. You can disable this behavior by setting <span Class="emphasis">CURLOPT_FTP_USE_EPRT(3)</span> to zero. 
 <p class="level0"><a name="Headers"></a><h2 class="nroffsh">Headers Equal Fun</h2>
 <p class="level0">
 <p class="level0"><a name="Headers"></a><h2 class="nroffsh">Headers Equal Fun</h2>
 <p class="level0">
-<p class="level0">Some protocols provide "headers", meta-data separated from the normal data. These headers are by default not included in the normal data stream, but you can make them appear in the data stream by setting CURLOPT_HEADER to 1. 
-<p class="level0">What might be even more useful, is libcurl's ability to separate the headers from the data and thus make the callbacks differ. You can for example set a different pointer to pass to the ordinary write callback by setting CURLOPT_WRITEHEADER
-<p class="level0">Or, you can set an entirely separate function to receive the headers, by using CURLOPT_HEADERFUNCTION
+<p class="level0">Some protocols provide "headers", meta-data separated from the normal data. These headers are by default not included in the normal data stream, but you can make them appear in the data stream by setting <span Class="emphasis">CURLOPT_HEADER(3)</span> to 1. 
+<p class="level0">What might be even more useful, is libcurl's ability to separate the headers from the data and thus make the callbacks differ. You can for example set a different pointer to pass to the ordinary write callback by setting <span Class="emphasis">CURLOPT_HEADERDATA(3)</span>
+<p class="level0">Or, you can set an entirely separate function to receive the headers, by using <span Class="emphasis">CURLOPT_HEADERFUNCTION(3)</span>
 <p class="level0">The headers are passed to the callback function one by one, and you can depend on that fact. It makes it easier for you to add custom header parsers etc. 
 <p class="level0">"Headers" for FTP transfers equal all the FTP server responses. They aren't actually true headers, but in this case we pretend they are! ;-) 
 <p class="level0"><a name="Post"></a><h2 class="nroffsh">Post Transfer Information</h2>
 <p class="level0">The headers are passed to the callback function one by one, and you can depend on that fact. It makes it easier for you to add custom header parsers etc. 
 <p class="level0">"Headers" for FTP transfers equal all the FTP server responses. They aren't actually true headers, but in this case we pretend they are! ;-) 
 <p class="level0"><a name="Post"></a><h2 class="nroffsh">Post Transfer Information</h2>
@@ -469,31 +470,31 @@ p.roffit {
 <p class="level1">
 <p class="level0"><a name="Clear"></a><span class="nroffip">Clear Text Passwords</span> 
 <p class="level1">Many of the protocols libcurl supports send name and password unencrypted as clear text (HTTP Basic authentication, FTP, TELNET etc). It is very easy for anyone on your network or a network nearby yours to just fire up a network analyzer tool and eavesdrop on your passwords. Don't let the fact that HTTP Basic uses base64 encoded passwords fool you. They may not look readable at a first glance, but they very easily "deciphered" by anyone within seconds. 
 <p class="level1">
 <p class="level0"><a name="Clear"></a><span class="nroffip">Clear Text Passwords</span> 
 <p class="level1">Many of the protocols libcurl supports send name and password unencrypted as clear text (HTTP Basic authentication, FTP, TELNET etc). It is very easy for anyone on your network or a network nearby yours to just fire up a network analyzer tool and eavesdrop on your passwords. Don't let the fact that HTTP Basic uses base64 encoded passwords fool you. They may not look readable at a first glance, but they very easily "deciphered" by anyone within seconds. 
-<p class="level1">To avoid this problem, use HTTP authentication methods or other protocols that don't let snoopers see your password: HTTP with Digest, NTLM or GSS authentication, HTTPS, FTPS, SCP, SFTP and FTP-Kerberos are a few examples. 
+<p class="level1">To avoid this problem, use an authentication mechanism or other protocol that doesn't let snoopers see your password: Digest, CRAM-MD5, Kerberos, SPNEGO or NTLM authentication, HTTPS, FTPS, SCP and SFTP are a few examples. 
 <p class="level1">
 <p class="level0"><a name="Redirects"></a><span class="nroffip">Redirects</span> 
 <p class="level1">
 <p class="level0"><a name="Redirects"></a><span class="nroffip">Redirects</span> 
-<p class="level1">The CURLOPT_FOLLOWLOCATION option automatically follows HTTP redirects sent by a remote server.  These redirects can refer to any kind of URL, not just HTTP.  A redirect to a file: URL would cause the libcurl to read (or write) arbitrary files from the local filesystem.  If the application returns the data back to the user (as would happen in some kinds of CGI scripts), an attacker could leverage this to read otherwise forbidden data (e.g. file://localhost/etc/passwd). 
+<p class="level1">The <span Class="emphasis">CURLOPT_FOLLOWLOCATION(3)</span> option automatically follows HTTP redirects sent by a remote server.  These redirects can refer to any kind of URL, not just HTTP.  A redirect to a file: URL would cause the libcurl to read (or write) arbitrary files from the local filesystem.  If the application returns the data back to the user (as would happen in some kinds of CGI scripts), an attacker could leverage this to read otherwise forbidden data (e.g.  file://localhost/etc/passwd). 
 <p class="level1">If authentication credentials are stored in the ~/.netrc file, or Kerberos is in use, any other URL type (not just file:) that requires authentication is also at risk.  A redirect such as <a href="ftp://some-internal-server/private-file">ftp://some-internal-server/private-file</a> would then return data even when the server is password protected. 
 <p class="level1">In the same way, if an unencrypted SSH private key has been configured for the user running the libcurl application, SCP: or SFTP: URLs could access password or private-key protected resources, e.g. s<a href="ftp://user">ftp://user</a>@some-internal-server/etc/passwd 
 <p class="level1">If authentication credentials are stored in the ~/.netrc file, or Kerberos is in use, any other URL type (not just file:) that requires authentication is also at risk.  A redirect such as <a href="ftp://some-internal-server/private-file">ftp://some-internal-server/private-file</a> would then return data even when the server is password protected. 
 <p class="level1">In the same way, if an unencrypted SSH private key has been configured for the user running the libcurl application, SCP: or SFTP: URLs could access password or private-key protected resources, e.g. s<a href="ftp://user">ftp://user</a>@some-internal-server/etc/passwd 
-<p class="level1">The CURLOPT_REDIR_PROTOCOLS and CURLOPT_NETRC options can be used to mitigate against this kind of attack. 
+<p class="level1">The <span Class="emphasis">CURLOPT_REDIR_PROTOCOLS(3)</span> and <span Class="emphasis">CURLOPT_NETRC(3)</span> options can be used to mitigate against this kind of attack. 
 <p class="level1">A redirect can also specify a location available only on the machine running libcurl, including servers hidden behind a firewall from the attacker. e.g. <a href="http://127.0.0.1/">http://127.0.0.1/</a> or <a href="http://intranet/delete-stuff.cgi">http://intranet/delete-stuff.cgi</a>?delete=all or t<a href="ftp://bootp-server/pc-config-data">ftp://bootp-server/pc-config-data</a> 
 <p class="level1">A redirect can also specify a location available only on the machine running libcurl, including servers hidden behind a firewall from the attacker. e.g. <a href="http://127.0.0.1/">http://127.0.0.1/</a> or <a href="http://intranet/delete-stuff.cgi">http://intranet/delete-stuff.cgi</a>?delete=all or t<a href="ftp://bootp-server/pc-config-data">ftp://bootp-server/pc-config-data</a> 
-<p class="level1">Apps can mitigate against this by disabling CURLOPT_FOLLOWLOCATION and handling redirects itself, sanitizing URLs as necessary. Alternately, an app could leave CURLOPT_FOLLOWLOCATION enabled but set CURLOPT_REDIR_PROTOCOLS and install a CURLOPT_OPENSOCKETFUNCTION callback function in which addresses are sanitized before use. 
+<p class="level1">Apps can mitigate against this by disabling <span Class="emphasis">CURLOPT_FOLLOWLOCATION(3)</span> and handling redirects itself, sanitizing URLs as necessary. Alternately, an app could leave <span Class="emphasis">CURLOPT_FOLLOWLOCATION(3)</span> enabled but set <span Class="emphasis">CURLOPT_REDIR_PROTOCOLS(3)</span> and install a <span Class="emphasis">CURLOPT_OPENSOCKETFUNCTION(3)</span> callback function in which addresses are sanitized before use. 
 <p class="level1">
 <p class="level0"><a name="Private"></a><span class="nroffip">Private Resources</span> 
 <p class="level1">
 <p class="level0"><a name="Private"></a><span class="nroffip">Private Resources</span> 
-<p class="level1">A user who can control the DNS server of a domain being passed in within a URL can change the address of the host to a local, private address which a server-side libcurl-using application could then use. e.g. the innocuous URL <a href="http://fuzzybunnies.example.com/">http://fuzzybunnies.example.com/</a> could actually resolve to the IP address of a server behind a firewall, such as 127.0.0.1 or 10.1.2.3.  Apps can mitigate against this by setting a CURLOPT_OPENSOCKETFUNCTION and checking the address before a connection. 
-<p class="level1">All the malicious scenarios regarding redirected URLs apply just as well to non-redirected URLs, if the user is allowed to specify an arbitrary URL that could point to a private resource. For example, a web app providing a translation service might happily translate file://localhost/etc/passwd and display the result.  Apps can mitigate against this with the CURLOPT_PROTOCOLS option as well as by similar mitigation techniques for redirections. 
-<p class="level1">A malicious FTP server could in response to the PASV command return an IP address and port number for a server local to the app running libcurl but behind a firewall.  Apps can mitigate against this by using the CURLOPT_FTP_SKIP_PASV_IP option or CURLOPT_FTPPORT
+<p class="level1">A user who can control the DNS server of a domain being passed in within a URL can change the address of the host to a local, private address which a server-side libcurl-using application could then use. e.g. the innocuous URL <a href="http://fuzzybunnies.example.com/">http://fuzzybunnies.example.com/</a> could actually resolve to the IP address of a server behind a firewall, such as 127.0.0.1 or 10.1.2.3.  Apps can mitigate against this by setting a <span Class="emphasis">CURLOPT_OPENSOCKETFUNCTION(3)</span> and checking the address before a connection. 
+<p class="level1">All the malicious scenarios regarding redirected URLs apply just as well to non-redirected URLs, if the user is allowed to specify an arbitrary URL that could point to a private resource. For example, a web app providing a translation service might happily translate file://localhost/etc/passwd and display the result.  Apps can mitigate against this with the <span Class="emphasis">CURLOPT_PROTOCOLS(3)</span> option as well as by similar mitigation techniques for redirections. 
+<p class="level1">A malicious FTP server could in response to the PASV command return an IP address and port number for a server local to the app running libcurl but behind a firewall.  Apps can mitigate against this by using the <span Class="emphasis">CURLOPT_FTP_SKIP_PASV_IP(3)</span> option or <span Class="emphasis">CURLOPT_FTPPORT(3)</span>
 <p class="level1">
 <p class="level0"><a name="IPv6"></a><span class="nroffip">IPv6 Addresses</span> 
 <p class="level1">libcurl will normally handle IPv6 addresses transparently and just as easily as IPv4 addresses. That means that a sanitizing function that filters out addressses like 127.0.0.1 isn't sufficient--the equivalent IPv6 addresses ::1, ::, 0:00::0:1, ::127.0.0.1 and ::ffff:7f00:1 supplied somehow by an attacker would all bypass a naive filter and could allow access to undesired local resources.  IPv6 also has special address blocks like link-local and site-local that generally shouldn't be accessed by a server-side libcurl-using application.  A poorly-configured firewall installed in a data center, organization or server may also be configured to limit IPv4 connections but leave IPv6 connections wide open.  In some cases, the CURL_IPRESOLVE_V4 option can be used to limit resolved addresses to IPv4 only and bypass these issues. 
 <p class="level1">
 <p class="level0"><a name="Uploads"></a><span class="nroffip">Uploads</span> 
 <p class="level1">
 <p class="level0"><a name="IPv6"></a><span class="nroffip">IPv6 Addresses</span> 
 <p class="level1">libcurl will normally handle IPv6 addresses transparently and just as easily as IPv4 addresses. That means that a sanitizing function that filters out addressses like 127.0.0.1 isn't sufficient--the equivalent IPv6 addresses ::1, ::, 0:00::0:1, ::127.0.0.1 and ::ffff:7f00:1 supplied somehow by an attacker would all bypass a naive filter and could allow access to undesired local resources.  IPv6 also has special address blocks like link-local and site-local that generally shouldn't be accessed by a server-side libcurl-using application.  A poorly-configured firewall installed in a data center, organization or server may also be configured to limit IPv4 connections but leave IPv6 connections wide open.  In some cases, the CURL_IPRESOLVE_V4 option can be used to limit resolved addresses to IPv4 only and bypass these issues. 
 <p class="level1">
 <p class="level0"><a name="Uploads"></a><span class="nroffip">Uploads</span> 
-<p class="level1">When uploading, a redirect can cause a local (or remote) file to be overwritten.  Apps must not allow any unsanitized URL to be passed in for uploads.  Also, CURLOPT_FOLLOWLOCATION should not be used on uploads. Instead, the app should handle redirects itself, sanitizing each URL first. 
+<p class="level1">When uploading, a redirect can cause a local (or remote) file to be overwritten.  Apps must not allow any unsanitized URL to be passed in for uploads.  Also, <span Class="emphasis">CURLOPT_FOLLOWLOCATION(3)</span> should not be used on uploads. Instead, the app should handle redirects itself, sanitizing each URL first. 
 <p class="level1">
 <p class="level0"><a name="Authentication"></a><span class="nroffip">Authentication</span> 
 <p class="level1">
 <p class="level0"><a name="Authentication"></a><span class="nroffip">Authentication</span> 
-<p class="level1">Use of CURLOPT_UNRESTRICTED_AUTH could cause authentication information to be sent to an unknown second server.  Apps can mitigate against this by disabling CURLOPT_FOLLOWLOCATION and handling redirects itself, sanitizing where necessary. 
-<p class="level1">Use of the CURLAUTH_ANY option to CURLOPT_HTTPAUTH could result in user name and password being sent in clear text to an HTTP server.  Instead, use CURLAUTH_ANYSAFE which ensures that the password is encrypted over the network, or else fail the request. 
-<p class="level1">Use of the CURLUSESSL_TRY option to CURLOPT_USE_SSL could result in user name and password being sent in clear text to an FTP server.  Instead, use CURLUSESSL_CONTROL to ensure that an encrypted connection is used or else fail the request. 
+<p class="level1">Use of <span Class="emphasis">CURLOPT_UNRESTRICTED_AUTH(3)</span> could cause authentication information to be sent to an unknown second server.  Apps can mitigate against this by disabling <span Class="emphasis">CURLOPT_FOLLOWLOCATION(3)</span> and handling redirects itself, sanitizing where necessary. 
+<p class="level1">Use of the CURLAUTH_ANY option to <span Class="emphasis">CURLOPT_HTTPAUTH(3)</span> could result in user name and password being sent in clear text to an HTTP server.  Instead, use CURLAUTH_ANYSAFE which ensures that the password is encrypted over the network, or else fail the request. 
+<p class="level1">Use of the CURLUSESSL_TRY option to <span Class="emphasis">CURLOPT_USE_SSL(3)</span> could result in user name and password being sent in clear text to an FTP server.  Instead, use CURLUSESSL_CONTROL to ensure that an encrypted connection is used or else fail the request. 
 <p class="level1">
 <p class="level0"><a name="Cookies"></a><span class="nroffip">Cookies</span> 
 <p class="level1">If cookies are enabled and cached, then a user could craft a URL which performs some malicious action to a site whose authentication is already stored in a cookie. e.g. <a href="http://mail.example.com/delete-stuff.cgi">http://mail.example.com/delete-stuff.cgi</a>?delete=all Apps can mitigate against this by disabling cookies or clearing them between requests. 
 <p class="level1">
 <p class="level0"><a name="Cookies"></a><span class="nroffip">Cookies</span> 
 <p class="level1">If cookies are enabled and cached, then a user could craft a URL which performs some malicious action to a site whose authentication is already stored in a cookie. e.g. <a href="http://mail.example.com/delete-stuff.cgi">http://mail.example.com/delete-stuff.cgi</a>?delete=all Apps can mitigate against this by disabling cookies or clearing them between requests. 
@@ -502,44 +503,45 @@ p.roffit {
 <p class="level1">SCP URLs can contain raw commands within the scp: URL, which is a side effect of how the SCP protocol is designed. e.g. scp://user:pass@host/a;date &gt;/tmp/test; Apps must not allow unsanitized SCP: URLs to be passed in for downloads. 
 <p class="level1">
 <p class="level0"><a name="Denial"></a><span class="nroffip">Denial of Service</span> 
 <p class="level1">SCP URLs can contain raw commands within the scp: URL, which is a side effect of how the SCP protocol is designed. e.g. scp://user:pass@host/a;date &gt;/tmp/test; Apps must not allow unsanitized SCP: URLs to be passed in for downloads. 
 <p class="level1">
 <p class="level0"><a name="Denial"></a><span class="nroffip">Denial of Service</span> 
-<p class="level1">A malicious server could cause libcurl to effectively hang by sending a trickle of data through, or even no data at all but just keeping the TCP connection open.  This could result in a denial-of-service attack. The CURLOPT_TIMEOUT and/or CURLOPT_LOW_SPEED_LIMIT options can be used to mitigate against this. 
-<p class="level1">A malicious server could cause libcurl to effectively hang by starting to send data, then severing the connection without cleanly closing the TCP connection.  The app could install a CURLOPT_SOCKOPTFUNCTION callback function and set the TCP SO_KEEPALIVE option to mitigate against this. Setting one of the timeout options would also work against this attack. 
-<p class="level1">A malicious server could cause libcurl to download an infinite amount of data, potentially causing all of memory or disk to be filled. Setting the CURLOPT_MAXFILESIZE_LARGE option is not sufficient to guard against this. Instead, the app should monitor the amount of data received within the write or progress callback and abort once the limit is reached. 
-<p class="level1">A malicious HTTP server could cause an infinite redirection loop, causing a denial-of-service. This can be mitigated by using the CURLOPT_MAXREDIRS option. 
+<p class="level1">A malicious server could cause libcurl to effectively hang by sending a trickle of data through, or even no data at all but just keeping the TCP connection open.  This could result in a denial-of-service attack. The <span Class="emphasis">CURLOPT_TIMEOUT(3)</span> and/or <span Class="emphasis">CURLOPT_LOW_SPEED_LIMIT(3)</span> options can be used to mitigate against this. 
+<p class="level1">A malicious server could cause libcurl to effectively hang by starting to send data, then severing the connection without cleanly closing the TCP connection. The app could install a <span Class="emphasis">CURLOPT_SOCKOPTFUNCTION(3)</span> callback function and set the TCP SO_KEEPALIVE option to mitigate against this.  Setting one of the timeout options would also work against this attack. 
+<p class="level1">A malicious server could cause libcurl to download an infinite amount of data, potentially causing all of memory or disk to be filled. Setting the <span Class="emphasis">CURLOPT_MAXFILESIZE_LARGE(3)</span> option is not sufficient to guard against this.  Instead, the app should monitor the amount of data received within the write or progress callback and abort once the limit is reached. 
+<p class="level1">A malicious HTTP server could cause an infinite redirection loop, causing a denial-of-service. This can be mitigated by using the <span Class="emphasis">CURLOPT_MAXREDIRS(3)</span> option. 
 <p class="level1">
 <p class="level0"><a name="Arbitrary"></a><span class="nroffip">Arbitrary Headers</span> 
 <p class="level1">
 <p class="level0"><a name="Arbitrary"></a><span class="nroffip">Arbitrary Headers</span> 
-<p class="level1">User-supplied data must be sanitized when used in options like CURLOPT_USERAGENT, CURLOPT_HTTPHEADER, CURLOPT_POSTFIELDS and others that are used to generate structured data. Characters like embedded carriage returns or ampersands could allow the user to create additional headers or fields that could cause malicious transactions. 
+<p class="level1">User-supplied data must be sanitized when used in options like <span Class="emphasis">CURLOPT_USERAGENT(3)</span>, <span Class="emphasis">CURLOPT_HTTPHEADER(3)</span>, <span Class="emphasis">CURLOPT_POSTFIELDS(3)</span> and others that are used to generate structured data. Characters like embedded carriage returns or ampersands could allow the user to create additional headers or fields that could cause malicious transactions. 
 <p class="level1">
 <p class="level0"><a name="Server-supplied"></a><span class="nroffip">Server-supplied Names</span> 
 <p class="level1">A server can supply data which the application may, in some cases, use as a file name. The curl command-line tool does this with --remote-header-name, using the Content-disposition: header to generate a file name.  An application could also use CURLINFO_EFFECTIVE_URL to generate a file name from a server-supplied redirect URL. Special care must be taken to sanitize such names to avoid the possibility of a malicious server supplying one like "/etc/passwd", "\autoexec.bat", "prn:" or even ".bashrc". 
 <p class="level1">
 <p class="level0"><a name="Server"></a><span class="nroffip">Server Certificates</span> 
 <p class="level1">
 <p class="level0"><a name="Server-supplied"></a><span class="nroffip">Server-supplied Names</span> 
 <p class="level1">A server can supply data which the application may, in some cases, use as a file name. The curl command-line tool does this with --remote-header-name, using the Content-disposition: header to generate a file name.  An application could also use CURLINFO_EFFECTIVE_URL to generate a file name from a server-supplied redirect URL. Special care must be taken to sanitize such names to avoid the possibility of a malicious server supplying one like "/etc/passwd", "\autoexec.bat", "prn:" or even ".bashrc". 
 <p class="level1">
 <p class="level0"><a name="Server"></a><span class="nroffip">Server Certificates</span> 
-<p class="level1">A secure application should never use the CURLOPT_SSL_VERIFYPEER option to disable certificate validation. There are numerous attacks that are enabled by apps that fail to properly validate server TLS/SSL certificates, thus enabling a malicious server to spoof a legitimate one. HTTPS without validated certificates is potentially as insecure as a plain HTTP connection. 
+<p class="level1">A secure application should never use the <span Class="emphasis">CURLOPT_SSL_VERIFYPEER(3)</span> option to disable certificate validation. There are numerous attacks that are enabled by apps that fail to properly validate server TLS/SSL certificates, thus enabling a malicious server to spoof a legitimate one. HTTPS without validated certificates is potentially as insecure as a plain HTTP connection. 
 <p class="level1">
 <p class="level0"><a name="Showing"></a><span class="nroffip">Showing What You Do</span> 
 <p class="level1">On a related issue, be aware that even in situations like when you have problems with libcurl and ask someone for help, everything you reveal in order to get best possible help might also impose certain security related risks. Host names, user names, paths, operating system specifics, etc. (not to mention passwords of course) may in fact be used by intruders to gain additional information of a potential target. 
 <p class="level1">Be sure to limit access to application logs if they could hold private or security-related data.  Besides the obvious candidates like user names and passwords, things like URLs, cookies or even file names could also hold sensitive data. 
 <p class="level1">To avoid this problem, you must of course use your common sense. Often, you can just edit out the sensitive data or just search/replace your true information with faked data. 
 <p class="level1">
 <p class="level0"><a name="Showing"></a><span class="nroffip">Showing What You Do</span> 
 <p class="level1">On a related issue, be aware that even in situations like when you have problems with libcurl and ask someone for help, everything you reveal in order to get best possible help might also impose certain security related risks. Host names, user names, paths, operating system specifics, etc. (not to mention passwords of course) may in fact be used by intruders to gain additional information of a potential target. 
 <p class="level1">Be sure to limit access to application logs if they could hold private or security-related data.  Besides the obvious candidates like user names and passwords, things like URLs, cookies or even file names could also hold sensitive data. 
 <p class="level1">To avoid this problem, you must of course use your common sense. Often, you can just edit out the sensitive data or just search/replace your true information with faked data. 
-<p class="level1"><a name="Multiple"></a><h2 class="nroffsh">Multiple Transfers Using the multi Interface</h2>
-<p class="level0">
+<p class="level1"><a name="The"></a><h2 class="nroffsh">The multi Interface</h2>
 <p class="level0">The easy interface as described in detail in this document is a synchronous interface that transfers one file at a time and doesn't return until it is done. 
 <p class="level0">The easy interface as described in detail in this document is a synchronous interface that transfers one file at a time and doesn't return until it is done. 
-<p class="level0">The multi interface, on the other hand, allows your program to transfer multiple files in both directions at the same time, without forcing you to use multiple threads.  The name might make it seem that the multi interface is for multi-threaded programs, but the truth is almost the reverse.  The multi interface can allow a single-threaded application to perform the same kinds of multiple, simultaneous transfers that multi-threaded programs can perform.  It allows many of the benefits of multi-threaded transfers without the complexity of managing and synchronizing many threads. 
+<p class="level0">The multi interface, on the other hand, allows your program to transfer multiple files in both directions at the same time, without forcing you to use multiple threads.  The name might make it seem that the multi interface is for multi-threaded programs, but the truth is almost the reverse.  The multi interface allows a single-threaded application to perform the same kinds of multiple, simultaneous transfers that multi-threaded programs can perform.  It allows many of the benefits of multi-threaded transfers without the complexity of managing and synchronizing many threads. 
+<p class="level0">To complicate matters somewhat more, there are even two versions of the multi interface. The event based one, also called multi_socket and the "normal one" designed for using with select(). See the libcurl-multi.3 man page for details on the multi_socket event based API, this description here is for the select() oriented one. 
 <p class="level0">To use this interface, you are better off if you first understand the basics of how to use the easy interface. The multi interface is simply a way to make multiple transfers at the same time by adding up multiple easy handles into a "multi stack". 
 <p class="level0">To use this interface, you are better off if you first understand the basics of how to use the easy interface. The multi interface is simply a way to make multiple transfers at the same time by adding up multiple easy handles into a "multi stack". 
-<p class="level0">You create the easy handles you want and you set all the options just like you have been told above, and then you create a multi handle with <a class="emphasis" href="./curl_multi_init.html">curl_multi_init(3)</a> and add all those easy handles to that multi handle with <a class="emphasis" href="./curl_multi_add_handle.html">curl_multi_add_handle(3)</a>. 
-<p class="level0">When you've added the handles you have for the moment (you can still add new ones at any time), you start the transfers by calling <a class="emphasis" href="./curl_multi_perform.html">curl_multi_perform(3)</a>. 
-<p class="level0"><a class="emphasis" href="./curl_multi_perform.html">curl_multi_perform(3)</a> is asynchronous. It will only execute as little as possible and then return back control to your program. It is designed to never block. 
-<p class="level0">The best usage of this interface is when you do a select() on all possible file descriptors or sockets to know when to call libcurl again. This also makes it easy for you to wait and respond to actions on your own application's sockets/handles. You figure out what to select() for by using <a class="emphasis" href="./curl_multi_fdset.html">curl_multi_fdset(3)</a>, that fills in a set of fd_set variables for you with the particular file descriptors libcurl uses for the moment. 
-<p class="level0">When you then call select(), it'll return when one of the file handles signal action and you then call <a class="emphasis" href="./curl_multi_perform.html">curl_multi_perform(3)</a> to allow libcurl to do what it wants to do. Take note that libcurl does also feature some time-out code so we advise you to never use very long timeouts on select() before you call <a class="emphasis" href="./curl_multi_perform.html">curl_multi_perform(3)</a>, which thus should be called unconditionally every now and then even if none of its file descriptors have signaled ready. Another precaution you should use: always call <a class="emphasis" href="./curl_multi_fdset.html">curl_multi_fdset(3)</a> immediately before the select() call since the current set of file descriptors may change when calling a curl function. 
-<p class="level0">If you want to stop the transfer of one of the easy handles in the stack, you can use <a class="emphasis" href="./curl_multi_remove_handle.html">curl_multi_remove_handle(3)</a> to remove individual easy handles. Remember that easy handles should be <a class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup(3)</a>ed. 
-<p class="level0">When a transfer within the multi stack has finished, the counter of running transfers (as filled in by <a class="emphasis" href="./curl_multi_perform.html">curl_multi_perform(3)</a>) will decrease. When the number reaches zero, all transfers are done. 
-<p class="level0"><a class="emphasis" href="./curl_multi_info_read.html">curl_multi_info_read(3)</a> can be used to get information about completed transfers. It then returns the CURLcode for each easy transfer, to allow you to figure out success on each individual transfer. 
+<p class="level0">You create the easy handles you want, one for each concurrent transfer, and you set all the options just like you learned above, and then you create a multi handle with <a Class="emphasis" href="./curl_multi_init.html">curl_multi_init</a> and add all those easy handles to that multi handle with <a Class="emphasis" href="./curl_multi_add_handle.html">curl_multi_add_handle</a>. 
+<p class="level0">When you've added the handles you have for the moment (you can still add new ones at any time), you start the transfers by calling <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a>. 
+<p class="level0"><a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a> is asynchronous. It will only perform what can be done now and then return back control to your program. It is designed to never block. You need to keep calling the function until all transfers are completed. 
+<p class="level0">The best usage of this interface is when you do a select() on all possible file descriptors or sockets to know when to call libcurl again. This also makes it easy for you to wait and respond to actions on your own application's sockets/handles. You figure out what to select() for by using <a Class="emphasis" href="./curl_multi_fdset.html">curl_multi_fdset</a>, that fills in a set of fd_set variables for you with the particular file descriptors libcurl uses for the moment. 
+<p class="level0">When you then call select(), it'll return when one of the file handles signal action and you then call <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a> to allow libcurl to do what it wants to do. Take note that libcurl does also feature some time-out code so we advise you to never use very long timeouts on select() before you call <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a> again. <a Class="emphasis" href="./curl_multi_timeout.html">curl_multi_timeout</a> is provided to help you get a suitable timeout period. 
+<p class="level0">Another precaution you should use: always call <a Class="emphasis" href="./curl_multi_fdset.html">curl_multi_fdset</a> immediately before the select() call since the current set of file descriptors may change in any curl function invoke. 
+<p class="level0">If you want to stop the transfer of one of the easy handles in the stack, you can use <a Class="emphasis" href="./curl_multi_remove_handle.html">curl_multi_remove_handle</a> to remove individual easy handles. Remember that easy handles should be <a Class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup</a>ed. 
+<p class="level0">When a transfer within the multi stack has finished, the counter of running transfers (as filled in by <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a>) will decrease. When the number reaches zero, all transfers are done. 
+<p class="level0"><a Class="emphasis" href="./curl_multi_info_read.html">curl_multi_info_read</a> can be used to get information about completed transfers. It then returns the CURLcode for each easy transfer, to allow you to figure out success on each individual transfer. 
 <p class="level0"><a name="SSL"></a><h2 class="nroffsh">SSL, Certificates and Other Tricks</h2>
 <p class="level0">
 <p class="level0">&nbsp;[ seeding, passwords, keys, certificates, ENGINE, ca certs ] 
 <p class="level0"><a name="Sharing"></a><h2 class="nroffsh">Sharing Data Between Easy Handles</h2>
 <p class="level0">You can share some data between easy handles when the easy interface is used, and some data is share automatically when you use the multi interface. 
 <p class="level0">When you add easy handles to a multi handle, these easy handles will automatically share a lot of the data that otherwise would be kept on a per-easy handle basis when the easy interface is used. 
 <p class="level0"><a name="SSL"></a><h2 class="nroffsh">SSL, Certificates and Other Tricks</h2>
 <p class="level0">
 <p class="level0">&nbsp;[ seeding, passwords, keys, certificates, ENGINE, ca certs ] 
 <p class="level0"><a name="Sharing"></a><h2 class="nroffsh">Sharing Data Between Easy Handles</h2>
 <p class="level0">You can share some data between easy handles when the easy interface is used, and some data is share automatically when you use the multi interface. 
 <p class="level0">When you add easy handles to a multi handle, these easy handles will automatically share a lot of the data that otherwise would be kept on a per-easy handle basis when the easy interface is used. 
-<p class="level0">The DNS cache is shared between handles within a multi handle, making subsequent name resolving faster, and the connection pool that is kept to better allow persistent connections and connection re-use is also shared. If you're using the easy interface, you can still share these between specific easy handles by using the share interface, see <span Class="emphasis">libcurl-share(3)</span>. 
+<p class="level0">The DNS cache is shared between handles within a multi handle, making subsequent name resolving faster, and the connection pool that is kept to better allow persistent connections and connection re-use is also shared. If you're using the easy interface, you can still share these between specific easy handles by using the share interface, see <a Class="emphasis" href="./libcurl-share.html">libcurl-share</a>. 
 <p class="level0">Some things are never shared automatically, not within multi handles, like for example cookies so the only way to share that is with the share interface. <a name="Footnotes"></a><h2 class="nroffsh">Footnotes</h2>
 <p class="level0">
 <p class="level0">
 <p class="level0">Some things are never shared automatically, not within multi handles, like for example cookies so the only way to share that is with the share interface. <a name="Footnotes"></a><h2 class="nroffsh">Footnotes</h2>
 <p class="level0">
 <p class="level0">
@@ -548,8 +550,9 @@ p.roffit {
 <p class="level0"><a name="2"></a><span class="nroffip">[2]</span> 
 <p class="level1">This happens on Windows machines when libcurl is built and used as a DLL. However, you can still do this on Windows if you link with a static library. 
 <p class="level0"><a name="3"></a><span class="nroffip">[3]</span> 
 <p class="level0"><a name="2"></a><span class="nroffip">[2]</span> 
 <p class="level1">This happens on Windows machines when libcurl is built and used as a DLL. However, you can still do this on Windows if you link with a static library. 
 <p class="level0"><a name="3"></a><span class="nroffip">[3]</span> 
-<p class="level1">The curl-config tool is generated at build-time (on UNIX-like systems) and should be installed with the 'make install' or similar instruction that installs the library, header files, man pages etc. 
+<p class="level1">The curl-config tool is generated at build-time (on Unix-like systems) and should be installed with the 'make install' or similar instruction that installs the library, header files, man pages etc. 
 <p class="level0"><a name="4"></a><span class="nroffip">[4]</span> 
 <p class="level0"><a name="4"></a><span class="nroffip">[4]</span> 
-<p class="level1">This behavior was different in versions before 7.17.0, where strings had to remain valid past the end of the <a class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt(3)</a> call. <p class="roffit">
+<p class="level1">This behavior was different in versions before 7.17.0, where strings had to remain valid past the end of the <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a> call. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./libcurl-errors.html">libcurl-errors</a>, <a Class="manpage" href="./libcurl-multi.html">libcurl-multi</a>, <a Class="manpage" href="./libcurl-easy.html">libcurl-easy</a>, <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index ab87af1..564b139 100644 (file)
Binary files a/docs/libcurl/libcurl-tutorial.pdf and b/docs/libcurl/libcurl-tutorial.pdf differ
index d2dcd78..39bcccd 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -29,18 +29,24 @@ specific man pages for each function mentioned in here. There are also the
 \fIlibcurl-share(3)\fP man page and the \fIlibcurl-tutorial(3)\fP man page for
 in-depth understanding on how to program with libcurl.
 
 \fIlibcurl-share(3)\fP man page and the \fIlibcurl-tutorial(3)\fP man page for
 in-depth understanding on how to program with libcurl.
 
-There are more than thirty custom bindings available that bring libcurl access
-to your favourite language. Look elsewhere for documentation on those.
+There are many bindings available that bring libcurl access to your favourite
+language. Look elsewhere for documentation on those.
 
 
-libcurl has a global constant environment that you must set up and
-maintain while using libcurl.  This essentially means you call
+libcurl has a global constant environment that you must set up and maintain
+while using libcurl.  This essentially means you call
 \fIcurl_global_init(3)\fP at the start of your program and
 \fIcurl_global_init(3)\fP at the start of your program and
-\fIcurl_global_cleanup(3)\fP at the end.  See GLOBAL CONSTANTS below
-for details.
+\fIcurl_global_cleanup(3)\fP at the end.  See \fBGLOBAL CONSTANTS\fP below for
+details.
 
 
-To transfer files, you always set up an "easy handle" using
-\fIcurl_easy_init(3)\fP, but when you want the file(s) transferred you have
-the option of using the "easy" interface, or the "multi" interface.
+To transfer files, you create an "easy handle" using \fIcurl_easy_init(3)\fP
+for a single individual transfer (in either direction). You then set your
+desired set of options in that handle with \fIcurl_easy_setopt(3)\fP. Options
+you set with \fIcurl_easy_setopt(3)\fP stick. They will be used on every
+repeated use of this handle until you either change the option, or you reset
+them all with \fIcurl_easy_reset(3)\fP.
+
+To actually transfer data you have the option of using the "easy" interface,
+or the "multi" interface.
 
 The easy interface is a synchronous interface with which you call
 \fIcurl_easy_perform(3)\fP and let it perform the transfer. When it is
 
 The easy interface is a synchronous interface with which you call
 \fIcurl_easy_perform(3)\fP and let it perform the transfer. When it is
@@ -51,7 +57,8 @@ The multi interface on the other hand is an asynchronous interface, that you
 call and that performs only a little piece of the transfer on each invoke. It
 is perfect if you want to do things while the transfer is in progress, or
 similar. The multi interface allows you to select() on libcurl action, and
 call and that performs only a little piece of the transfer on each invoke. It
 is perfect if you want to do things while the transfer is in progress, or
 similar. The multi interface allows you to select() on libcurl action, and
-even to easily download multiple files simultaneously using a single thread. See further details in the \fIlibcurl-multi(3)\fP man page.
+even to easily download multiple files simultaneously using a single
+thread. See further details in the \fIlibcurl-multi(3)\fP man page.
 
 You can have multiple easy handles share certain data, even if they are used
 in different threads. This magic is setup using the share interface, as
 
 You can have multiple easy handles share certain data, even if they are used
 in different threads. This magic is setup using the share interface, as
@@ -90,6 +97,8 @@ Unix-like operating system that ship libcurl as part of their distributions
 often don't provide the curl-config tool, but simply install the library and
 headers in the common path for this purpose.
 
 often don't provide the curl-config tool, but simply install the library and
 headers in the common path for this purpose.
 
+Many Linux and similar sytems use pkg-config to provide build and link options
+about libraries and libcurl supports that as well.
 .SH "LIBCURL SYMBOL NAMES"
 All public functions in the libcurl interface are prefixed with 'curl_' (with
 a lowercase c). You can find other functions in the library source code, but
 .SH "LIBCURL SYMBOL NAMES"
 All public functions in the libcurl interface are prefixed with 'curl_' (with
 a lowercase c). You can find other functions in the library source code, but
@@ -107,27 +116,29 @@ several threads. libcurl is thread-safe and can be used in any number of
 threads, but you must use separate curl handles if you want to use libcurl in
 more than one thread simultaneously.
 
 threads, but you must use separate curl handles if you want to use libcurl in
 more than one thread simultaneously.
 
-The global environment functions are not thread-safe.  See GLOBAL CONSTANTS
-below for details.
+The global environment functions are not thread-safe.  See \fBGLOBAL
+CONSTANTS\fP below for details.
 
 .SH "PERSISTENT CONNECTIONS"
 Persistent connections means that libcurl can re-use the same connection for
 several transfers, if the conditions are right.
 
 libcurl will \fBalways\fP attempt to use persistent connections. Whenever you
 
 .SH "PERSISTENT CONNECTIONS"
 Persistent connections means that libcurl can re-use the same connection for
 several transfers, if the conditions are right.
 
 libcurl will \fBalways\fP attempt to use persistent connections. Whenever you
-use \fIcurl_easy_perform(3)\fP or \fIcurl_multi_perform(3)\fP, libcurl will
-attempt to use an existing connection to do the transfer, and if none exists
-it'll open a new one that will be subject for re-use on a possible following
-call to \fIcurl_easy_perform(3)\fP or \fIcurl_multi_perform(3)\fP.
+use \fIcurl_easy_perform(3)\fP or \fIcurl_multi_perform(3)\fP etc, libcurl
+will attempt to use an existing connection to do the transfer, and if none
+exists it'll open a new one that will be subject for re-use on a possible
+following call to \fIcurl_easy_perform(3)\fP or \fIcurl_multi_perform(3)\fP.
 
 To allow libcurl to take full advantage of persistent connections, you should
 
 To allow libcurl to take full advantage of persistent connections, you should
-do as many of your file transfers as possible using the same curl handle. When
-you call \fIcurl_easy_cleanup(3)\fP, all the possibly open connections held by
-libcurl will be closed and forgotten.
+do as many of your file transfers as possible using the same handle.
 
 
-Note that the options set with \fIcurl_easy_setopt(3)\fP will be used on
-every repeated \fIcurl_easy_perform(3)\fP call.
+If you use the easy interface, and you call \fIcurl_easy_cleanup(3)\fP, all
+the possibly open connections held by libcurl will be closed and forgotten.
 
 
+When you've created a multi handle and are using the multi interface, the
+connection pool is instead kept in the multi handle so closing and creating
+new easy handles to do transfers will not affect them. Instead all added easy
+handles can take advantage of the single shared pool.
 .SH "GLOBAL CONSTANTS"
 There are a variety of constants that libcurl uses, mainly through its
 internal use of other libraries, which are too complicated for the
 .SH "GLOBAL CONSTANTS"
 There are a variety of constants that libcurl uses, mainly through its
 internal use of other libraries, which are too complicated for the
@@ -137,18 +148,16 @@ the library code.  For example, when libcurl is built for SSL
 capability via the GNU TLS library, there is an elaborate tree inside
 that library that describes the SSL protocol.
 
 capability via the GNU TLS library, there is an elaborate tree inside
 that library that describes the SSL protocol.
 
-\fIcurl_global_init()\fP is the function that you must call.  This may
-allocate resources (e.g. the memory for the GNU TLS tree mentioned
-above), so the companion function \fIcurl_global_cleanup()\fP releases
-them.
+\fIcurl_global_init(3)\fP is the function that you must call.  This may
+allocate resources (e.g. the memory for the GNU TLS tree mentioned above), so
+the companion function \fIcurl_global_cleanup(3)\fP releases them.
 
 
-The basic rule for constructing a program that uses libcurl is this:
-Call \fIcurl_global_init()\fP, with a \fICURL_GLOBAL_ALL\fP argument,
-immediately after the program starts, while it is still only one
-thread and before it uses libcurl at all.  Call
-\fIcurl_global_cleanup()\fP immediately before the program exits, when
-the program is again only one thread and after its last use of
-libcurl.
+The basic rule for constructing a program that uses libcurl is this: Call
+\fIcurl_global_init(3)\fP, with a \fICURL_GLOBAL_ALL\fP argument, immediately
+after the program starts, while it is still only one thread and before it uses
+libcurl at all.  Call \fIcurl_global_cleanup(3)\fP immediately before the
+program exits, when the program is again only one thread and after its last
+use of libcurl.
 
 You can call both of these multiple times, as long as all calls meet
 these requirements and the number of calls to each is the same.
 
 You can call both of these multiple times, as long as all calls meet
 these requirements and the number of calls to each is the same.
@@ -173,48 +182,42 @@ your code doesn't know about other parts of the program -- it doesn't
 know whether they use libcurl or not.  And its code doesn't necessarily
 run at the start and end of the whole program.
 
 know whether they use libcurl or not.  And its code doesn't necessarily
 run at the start and end of the whole program.
 
-A module like this must have global constant functions of its own,
-just like \fIcurl_global_init()\fP and \fIcurl_global_cleanup()\fP.
-The module thus has control at the beginning and end of the program
-and has a place to call the libcurl functions.  Note that if multiple
-modules in the program use libcurl, they all will separately call the
-libcurl functions, and that's OK because only the first
-\fIcurl_global_init()\fP and the last \fIcurl_global_cleanup()\fP in a
-program change anything.  (libcurl uses a reference count in static
-memory).
-
-In a C++ module, it is common to deal with the global constant
-situation by defining a special class that represents the global
-constant environment of the module.  A program always has exactly one
-object of the class, in static storage.  That way, the program
-automatically calls the constructor of the object as the program
-starts up and the destructor as it terminates.  As the author of this
-libcurl-using module, you can make the constructor call
-\fIcurl_global_init()\fP and the destructor call
-\fIcurl_global_cleanup()\fP and satisfy libcurl's requirements without
-your user having to think about it.
-
-\fIcurl_global_init()\fP has an argument that tells what particular
-parts of the global constant environment to set up.  In order to
-successfully use any value except \fICURL_GLOBAL_ALL\fP (which says to
-set up the whole thing), you must have specific knowledge of internal
-workings of libcurl and all other parts of the program of which it is
-part.
-
-A special part of the global constant environment is the identity of
-the memory allocator.  \fIcurl_global_init()\fP selects the system
-default memory allocator, but you can use \fIcurl_global_init_mem()\fP
-to supply one of your own.  However, there is no way to use
-\fIcurl_global_init_mem()\fP in a modular program -- all modules in
-the program that might use libcurl would have to agree on one
-allocator.
-
-There is a failsafe in libcurl that makes it usable in simple
-situations without you having to worry about the global constant
-environment at all: \fIcurl_easy_init()\fP sets up the environment
-itself if it hasn't been done yet.  The resources it acquires to do so
-get released by the operating system automatically when the program
-exits.
+A module like this must have global constant functions of its own, just like
+\fIcurl_global_init(3)\fP and \fIcurl_global_cleanup(3)\fP.  The module thus
+has control at the beginning and end of the program and has a place to call
+the libcurl functions.  Note that if multiple modules in the program use
+libcurl, they all will separately call the libcurl functions, and that's OK
+because only the first \fIcurl_global_init(3)\fP and the last
+\fIcurl_global_cleanup(3)\fP in a program change anything.  (libcurl uses a
+reference count in static memory).
+
+In a C++ module, it is common to deal with the global constant situation by
+defining a special class that represents the global constant environment of
+the module.  A program always has exactly one object of the class, in static
+storage.  That way, the program automatically calls the constructor of the
+object as the program starts up and the destructor as it terminates.  As the
+author of this libcurl-using module, you can make the constructor call
+\fIcurl_global_init(3)\fP and the destructor call \fIcurl_global_cleanup(3)\fP
+and satisfy libcurl's requirements without your user having to think about it.
+
+\fIcurl_global_init(3)\fP has an argument that tells what particular parts of
+the global constant environment to set up.  In order to successfully use any
+value except \fICURL_GLOBAL_ALL\fP (which says to set up the whole thing), you
+must have specific knowledge of internal workings of libcurl and all other
+parts of the program of which it is part.
+
+A special part of the global constant environment is the identity of the
+memory allocator.  \fIcurl_global_init(3)\fP selects the system default memory
+allocator, but you can use \fIcurl_global_init_mem(3)\fP to supply one of your
+own.  However, there is no way to use \fIcurl_global_init_mem(3)\fP in a
+modular program -- all modules in the program that might use libcurl would
+have to agree on one allocator.
+
+There is a failsafe in libcurl that makes it usable in simple situations
+without you having to worry about the global constant environment at all:
+\fIcurl_easy_init(3)\fP sets up the environment itself if it hasn't been done
+yet.  The resources it acquires to do so get released by the operating system
+automatically when the program exits.
 
 This failsafe feature exists mainly for backward compatibility because
 there was a time when the global functions didn't exist.  Because it
 
 This failsafe feature exists mainly for backward compatibility because
 there was a time when the global functions didn't exist.  Because it
index e1c00f0..c836e8a 100644 (file)
@@ -47,13 +47,14 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">libcurl - client-side URL transfers <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">libcurl - client-side URL transfers <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">This is a short overview on how to use libcurl in your C programs. There are specific man pages for each function mentioned in here. There are also the <span Class="emphasis">libcurl-easy(3)</span> man page, the <span Class="emphasis">libcurl-multi(3)</span> man page, the <span Class="emphasis">libcurl-share(3)</span> man page and the <span Class="emphasis">libcurl-tutorial(3)</span> man page for in-depth understanding on how to program with libcurl. 
-<p class="level0">There are more than thirty custom bindings available that bring libcurl access to your favourite language. Look elsewhere for documentation on those. 
-<p class="level0">libcurl has a global constant environment that you must set up and maintain while using libcurl.  This essentially means you call <a class="emphasis" href="./curl_global_init.html">curl_global_init(3)</a> at the start of your program and <a class="emphasis" href="./curl_global_cleanup.html">curl_global_cleanup(3)</a> at the end.  See GLOBAL CONSTANTS below for details. 
-<p class="level0">To transfer files, you always set up an "easy handle" using <a class="emphasis" href="./curl_easy_init.html">curl_easy_init(3)</a>, but when you want the file(s) transferred you have the option of using the "easy" interface, or the "multi" interface. 
-<p class="level0">The easy interface is a synchronous interface with which you call <a class="emphasis" href="./curl_easy_perform.html">curl_easy_perform(3)</a> and let it perform the transfer. When it is completed, the function returns and you can continue. More details are found in the <span Class="emphasis">libcurl-easy(3)</span> man page. 
-<p class="level0">The multi interface on the other hand is an asynchronous interface, that you call and that performs only a little piece of the transfer on each invoke. It is perfect if you want to do things while the transfer is in progress, or similar. The multi interface allows you to select() on libcurl action, and even to easily download multiple files simultaneously using a single thread. See further details in the <span Class="emphasis">libcurl-multi(3)</span> man page. 
-<p class="level0">You can have multiple easy handles share certain data, even if they are used in different threads. This magic is setup using the share interface, as described in the <span Class="emphasis">libcurl-share(3)</span> man page. 
+<p class="level0">This is a short overview on how to use libcurl in your C programs. There are specific man pages for each function mentioned in here. There are also the <a Class="emphasis" href="./libcurl-easy.html">libcurl-easy</a> man page, the <a Class="emphasis" href="./libcurl-multi.html">libcurl-multi</a> man page, the <a Class="emphasis" href="./libcurl-share.html">libcurl-share</a> man page and the <a Class="emphasis" href="./libcurl-tutorial.html">libcurl-tutorial</a> man page for in-depth understanding on how to program with libcurl. 
+<p class="level0">There are many bindings available that bring libcurl access to your favourite language. Look elsewhere for documentation on those. 
+<p class="level0">libcurl has a global constant environment that you must set up and maintain while using libcurl.  This essentially means you call <a Class="emphasis" href="./curl_global_init.html">curl_global_init</a> at the start of your program and <a Class="emphasis" href="./curl_global_cleanup.html">curl_global_cleanup</a> at the end.  See <a class="bold" href="#GLOBAL">GLOBAL CONSTANTS</a> below for details. 
+<p class="level0">To transfer files, you create an "easy handle" using <a Class="emphasis" href="./curl_easy_init.html">curl_easy_init</a> for a single individual transfer (in either direction). You then set your desired set of options in that handle with <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a>. Options you set with <a Class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt</a> stick. They will be used on every repeated use of this handle until you either change the option, or you reset them all with <a Class="emphasis" href="./curl_easy_reset.html">curl_easy_reset</a>. 
+<p class="level0">To actually transfer data you have the option of using the "easy" interface, or the "multi" interface. 
+<p class="level0">The easy interface is a synchronous interface with which you call <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> and let it perform the transfer. When it is completed, the function returns and you can continue. More details are found in the <a Class="emphasis" href="./libcurl-easy.html">libcurl-easy</a> man page. 
+<p class="level0">The multi interface on the other hand is an asynchronous interface, that you call and that performs only a little piece of the transfer on each invoke. It is perfect if you want to do things while the transfer is in progress, or similar. The multi interface allows you to select() on libcurl action, and even to easily download multiple files simultaneously using a single thread. See further details in the <a Class="emphasis" href="./libcurl-multi.html">libcurl-multi</a> man page. 
+<p class="level0">You can have multiple easy handles share certain data, even if they are used in different threads. This magic is setup using the share interface, as described in the <a Class="emphasis" href="./libcurl-share.html">libcurl-share</a> man page. 
 <p class="level0">There is also a series of other helpful functions to use, including these: 
 <p class="level1">
 <p class="level0"><a name="curlversioninfo"></a><span class="nroffip">curl_version_info()</span> 
 <p class="level0">There is also a series of other helpful functions to use, including these: 
 <p class="level1">
 <p class="level0"><a name="curlversioninfo"></a><span class="nroffip">curl_version_info()</span> 
@@ -65,7 +66,7 @@ p.roffit {
 <p class="level0"><a name="curlformadd"></a><span class="nroffip">curl_formadd()</span> 
 <p class="level1">helps building an HTTP form POST 
 <p class="level0"><a name="curlformfree"></a><span class="nroffip">curl_formfree()</span> 
 <p class="level0"><a name="curlformadd"></a><span class="nroffip">curl_formadd()</span> 
 <p class="level1">helps building an HTTP form POST 
 <p class="level0"><a name="curlformfree"></a><span class="nroffip">curl_formfree()</span> 
-<p class="level1">free a list built with <a class="emphasis" href="./curl_formadd.html">curl_formadd(3)</a> 
+<p class="level1">free a list built with <a Class="emphasis" href="./curl_formadd.html">curl_formadd</a> 
 <p class="level0"><a name="curlslistappend"></a><span class="nroffip">curl_slist_append()</span> 
 <p class="level1">builds a linked list 
 <p class="level0"><a name="curlslistfreeall"></a><span class="nroffip">curl_slist_free_all()</span> 
 <p class="level0"><a name="curlslistappend"></a><span class="nroffip">curl_slist_append()</span> 
 <p class="level1">builds a linked list 
 <p class="level0"><a name="curlslistfreeall"></a><span class="nroffip">curl_slist_free_all()</span> 
@@ -76,30 +77,30 @@ p.roffit {
 <p class="level0">curl-config is added to make it easier for applications to link with libcurl and developers to learn about libcurl and how to use it. 
 <p class="level0">Run 'curl-config --libs' to get the (additional) linker options you need to link with the particular version of libcurl you've installed. See the <span Class="emphasis">curl-config(1)</span> man page for further details. 
 <p class="level0">Unix-like operating system that ship libcurl as part of their distributions often don't provide the curl-config tool, but simply install the library and headers in the common path for this purpose. 
 <p class="level0">curl-config is added to make it easier for applications to link with libcurl and developers to learn about libcurl and how to use it. 
 <p class="level0">Run 'curl-config --libs' to get the (additional) linker options you need to link with the particular version of libcurl you've installed. See the <span Class="emphasis">curl-config(1)</span> man page for further details. 
 <p class="level0">Unix-like operating system that ship libcurl as part of their distributions often don't provide the curl-config tool, but simply install the library and headers in the common path for this purpose. 
-<p class="level0"><a name="LIBCURL"></a><h2 class="nroffsh">LIBCURL SYMBOL NAMES</h2>
+<p class="level0">Many Linux and similar sytems use pkg-config to provide build and link options about libraries and libcurl supports that as well. <a name="LIBCURL"></a><h2 class="nroffsh">LIBCURL SYMBOL NAMES</h2>
 <p class="level0">All public functions in the libcurl interface are prefixed with 'curl_' (with a lowercase c). You can find other functions in the library source code, but other prefixes indicate that the functions are private and may change without further notice in the next release. 
 <p class="level0">Only use documented functions and functionality! <a name="PORTABILITY"></a><h2 class="nroffsh">PORTABILITY</h2>
 <p class="level0">libcurl works <span Class="bold">exactly</span> the same, on any of the platforms it compiles and builds on. <a name="THREADS"></a><h2 class="nroffsh">THREADS</h2>
 <p class="level0">Never ever call curl-functions simultaneously using the same handle from several threads. libcurl is thread-safe and can be used in any number of threads, but you must use separate curl handles if you want to use libcurl in more than one thread simultaneously. 
 <p class="level0">All public functions in the libcurl interface are prefixed with 'curl_' (with a lowercase c). You can find other functions in the library source code, but other prefixes indicate that the functions are private and may change without further notice in the next release. 
 <p class="level0">Only use documented functions and functionality! <a name="PORTABILITY"></a><h2 class="nroffsh">PORTABILITY</h2>
 <p class="level0">libcurl works <span Class="bold">exactly</span> the same, on any of the platforms it compiles and builds on. <a name="THREADS"></a><h2 class="nroffsh">THREADS</h2>
 <p class="level0">Never ever call curl-functions simultaneously using the same handle from several threads. libcurl is thread-safe and can be used in any number of threads, but you must use separate curl handles if you want to use libcurl in more than one thread simultaneously. 
-<p class="level0">The global environment functions are not thread-safe.  See GLOBAL CONSTANTS below for details. 
+<p class="level0">The global environment functions are not thread-safe.  See <span class="bold">GLOBAL CONSTANTS</span> below for details. 
 <p class="level0"><a name="PERSISTENT"></a><h2 class="nroffsh">PERSISTENT CONNECTIONS</h2>
 <p class="level0">Persistent connections means that libcurl can re-use the same connection for several transfers, if the conditions are right. 
 <p class="level0"><a name="PERSISTENT"></a><h2 class="nroffsh">PERSISTENT CONNECTIONS</h2>
 <p class="level0">Persistent connections means that libcurl can re-use the same connection for several transfers, if the conditions are right. 
-<p class="level0">libcurl will <span Class="bold">always</span> attempt to use persistent connections. Whenever you use <a class="emphasis" href="./curl_easy_perform.html">curl_easy_perform(3)</a> or <a class="emphasis" href="./curl_multi_perform.html">curl_multi_perform(3)</a>, libcurl will attempt to use an existing connection to do the transfer, and if none exists it'll open a new one that will be subject for re-use on a possible following call to <a class="emphasis" href="./curl_easy_perform.html">curl_easy_perform(3)</a> or <a class="emphasis" href="./curl_multi_perform.html">curl_multi_perform(3)</a>. 
-<p class="level0">To allow libcurl to take full advantage of persistent connections, you should do as many of your file transfers as possible using the same curl handle. When you call <a class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup(3)</a>, all the possibly open connections held by libcurl will be closed and forgotten
-<p class="level0">Note that the options set with <a class="emphasis" href="./curl_easy_setopt.html">curl_easy_setopt(3)</a> will be used on every repeated <a class="emphasis" href="./curl_easy_perform.html">curl_easy_perform(3)</a> call
-<p class="level0"><a name="GLOBAL"></a><h2 class="nroffsh">GLOBAL CONSTANTS</h2>
+<p class="level0">libcurl will <span Class="bold">always</span> attempt to use persistent connections. Whenever you use <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> or <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a> etc, libcurl will attempt to use an existing connection to do the transfer, and if none exists it'll open a new one that will be subject for re-use on a possible following call to <a Class="emphasis" href="./curl_easy_perform.html">curl_easy_perform</a> or <a Class="emphasis" href="./curl_multi_perform.html">curl_multi_perform</a>. 
+<p class="level0">To allow libcurl to take full advantage of persistent connections, you should do as many of your file transfers as possible using the same handle
+<p class="level0">If you use the easy interface, and you call <a Class="emphasis" href="./curl_easy_cleanup.html">curl_easy_cleanup</a>, all the possibly open connections held by libcurl will be closed and forgotten
+<p class="level0">When you've created a multi handle and are using the multi interface, the connection pool is instead kept in the multi handle so closing and creating new easy handles to do transfers will not affect them. Instead all added easy handles can take advantage of the single shared pool. <a name="GLOBAL"></a><h2 class="nroffsh">GLOBAL CONSTANTS</h2>
 <p class="level0">There are a variety of constants that libcurl uses, mainly through its internal use of other libraries, which are too complicated for the library loader to set up.  Therefore, a program must call a library function after the program is loaded and running to finish setting up the library code.  For example, when libcurl is built for SSL capability via the GNU TLS library, there is an elaborate tree inside that library that describes the SSL protocol. 
 <p class="level0">There are a variety of constants that libcurl uses, mainly through its internal use of other libraries, which are too complicated for the library loader to set up.  Therefore, a program must call a library function after the program is loaded and running to finish setting up the library code.  For example, when libcurl is built for SSL capability via the GNU TLS library, there is an elaborate tree inside that library that describes the SSL protocol. 
-<p class="level0"><span Class="emphasis">curl_global_init()</span> is the function that you must call.  This may allocate resources (e.g. the memory for the GNU TLS tree mentioned above), so the companion function <span Class="emphasis">curl_global_cleanup()</span> releases them. 
-<p class="level0">The basic rule for constructing a program that uses libcurl is this: Call <span Class="emphasis">curl_global_init()</span>, with a <span Class="emphasis">CURL_GLOBAL_ALL</span> argument, immediately after the program starts, while it is still only one thread and before it uses libcurl at all.  Call <span Class="emphasis">curl_global_cleanup()</span> immediately before the program exits, when the program is again only one thread and after its last use of libcurl. 
+<p class="level0"><a Class="emphasis" href="./curl_global_init.html">curl_global_init</a> is the function that you must call.  This may allocate resources (e.g. the memory for the GNU TLS tree mentioned above), so the companion function <a Class="emphasis" href="./curl_global_cleanup.html">curl_global_cleanup</a> releases them. 
+<p class="level0">The basic rule for constructing a program that uses libcurl is this: Call <a Class="emphasis" href="./curl_global_init.html">curl_global_init</a>, with a <span Class="emphasis">CURL_GLOBAL_ALL</span> argument, immediately after the program starts, while it is still only one thread and before it uses libcurl at all.  Call <a Class="emphasis" href="./curl_global_cleanup.html">curl_global_cleanup</a> immediately before the program exits, when the program is again only one thread and after its last use of libcurl. 
 <p class="level0">You can call both of these multiple times, as long as all calls meet these requirements and the number of calls to each is the same. 
 <p class="level0">It isn't actually required that the functions be called at the beginning and end of the program -- that's just usually the easiest way to do it. It <span Class="emphasis">is</span> required that the functions be called when no other thread in the program is running. 
 <p class="level0">These global constant functions are <span Class="emphasis">not thread safe</span>, so you must not call them when any other thread in the program is running.  It isn't good enough that no other thread is using libcurl at the time, because these functions internally call similar functions of other libraries, and those functions are similarly thread-unsafe.  You can't generally know what these libraries are, or whether other threads are using them. 
 <p class="level0">The global constant situation merits special consideration when the code you are writing to use libcurl is not the main program, but rather a modular piece of a program, e.g. another library.  As a module, your code doesn't know about other parts of the program -- it doesn't know whether they use libcurl or not.  And its code doesn't necessarily run at the start and end of the whole program. 
 <p class="level0">You can call both of these multiple times, as long as all calls meet these requirements and the number of calls to each is the same. 
 <p class="level0">It isn't actually required that the functions be called at the beginning and end of the program -- that's just usually the easiest way to do it. It <span Class="emphasis">is</span> required that the functions be called when no other thread in the program is running. 
 <p class="level0">These global constant functions are <span Class="emphasis">not thread safe</span>, so you must not call them when any other thread in the program is running.  It isn't good enough that no other thread is using libcurl at the time, because these functions internally call similar functions of other libraries, and those functions are similarly thread-unsafe.  You can't generally know what these libraries are, or whether other threads are using them. 
 <p class="level0">The global constant situation merits special consideration when the code you are writing to use libcurl is not the main program, but rather a modular piece of a program, e.g. another library.  As a module, your code doesn't know about other parts of the program -- it doesn't know whether they use libcurl or not.  And its code doesn't necessarily run at the start and end of the whole program. 
-<p class="level0">A module like this must have global constant functions of its own, just like <span Class="emphasis">curl_global_init()</span> and <span Class="emphasis">curl_global_cleanup()</span>. The module thus has control at the beginning and end of the program and has a place to call the libcurl functions.  Note that if multiple modules in the program use libcurl, they all will separately call the libcurl functions, and that's OK because only the first <span Class="emphasis">curl_global_init()</span> and the last <span Class="emphasis">curl_global_cleanup()</span> in a program change anything.  (libcurl uses a reference count in static memory). 
-<p class="level0">In a C++ module, it is common to deal with the global constant situation by defining a special class that represents the global constant environment of the module.  A program always has exactly one object of the class, in static storage.  That way, the program automatically calls the constructor of the object as the program starts up and the destructor as it terminates.  As the author of this libcurl-using module, you can make the constructor call <span Class="emphasis">curl_global_init()</span> and the destructor call <span Class="emphasis">curl_global_cleanup()</span> and satisfy libcurl's requirements without your user having to think about it. 
-<p class="level0"><span Class="emphasis">curl_global_init()</span> has an argument that tells what particular parts of the global constant environment to set up.  In order to successfully use any value except <span Class="emphasis">CURL_GLOBAL_ALL</span> (which says to set up the whole thing), you must have specific knowledge of internal workings of libcurl and all other parts of the program of which it is part. 
-<p class="level0">A special part of the global constant environment is the identity of the memory allocator.  <span Class="emphasis">curl_global_init()</span> selects the system default memory allocator, but you can use <span Class="emphasis">curl_global_init_mem()</span> to supply one of your own.  However, there is no way to use <span Class="emphasis">curl_global_init_mem()</span> in a modular program -- all modules in the program that might use libcurl would have to agree on one allocator. 
-<p class="level0">There is a failsafe in libcurl that makes it usable in simple situations without you having to worry about the global constant environment at all: <span Class="emphasis">curl_easy_init()</span> sets up the environment itself if it hasn't been done yet.  The resources it acquires to do so get released by the operating system automatically when the program exits. 
+<p class="level0">A module like this must have global constant functions of its own, just like <a Class="emphasis" href="./curl_global_init.html">curl_global_init</a> and <a Class="emphasis" href="./curl_global_cleanup.html">curl_global_cleanup</a>.  The module thus has control at the beginning and end of the program and has a place to call the libcurl functions.  Note that if multiple modules in the program use libcurl, they all will separately call the libcurl functions, and that's OK because only the first <a Class="emphasis" href="./curl_global_init.html">curl_global_init</a> and the last <a Class="emphasis" href="./curl_global_cleanup.html">curl_global_cleanup</a> in a program change anything.  (libcurl uses a reference count in static memory). 
+<p class="level0">In a C++ module, it is common to deal with the global constant situation by defining a special class that represents the global constant environment of the module.  A program always has exactly one object of the class, in static storage.  That way, the program automatically calls the constructor of the object as the program starts up and the destructor as it terminates.  As the author of this libcurl-using module, you can make the constructor call <a Class="emphasis" href="./curl_global_init.html">curl_global_init</a> and the destructor call <a Class="emphasis" href="./curl_global_cleanup.html">curl_global_cleanup</a> and satisfy libcurl's requirements without your user having to think about it. 
+<p class="level0"><a Class="emphasis" href="./curl_global_init.html">curl_global_init</a> has an argument that tells what particular parts of the global constant environment to set up.  In order to successfully use any value except <span Class="emphasis">CURL_GLOBAL_ALL</span> (which says to set up the whole thing), you must have specific knowledge of internal workings of libcurl and all other parts of the program of which it is part. 
+<p class="level0">A special part of the global constant environment is the identity of the memory allocator.  <a Class="emphasis" href="./curl_global_init.html">curl_global_init</a> selects the system default memory allocator, but you can use <a Class="emphasis" href="./curl_global_init_mem.html">curl_global_init_mem</a> to supply one of your own.  However, there is no way to use <a Class="emphasis" href="./curl_global_init_mem.html">curl_global_init_mem</a> in a modular program -- all modules in the program that might use libcurl would have to agree on one allocator. 
+<p class="level0">There is a failsafe in libcurl that makes it usable in simple situations without you having to worry about the global constant environment at all: <a Class="emphasis" href="./curl_easy_init.html">curl_easy_init</a> sets up the environment itself if it hasn't been done yet.  The resources it acquires to do so get released by the operating system automatically when the program exits. 
 <p class="level0">This failsafe feature exists mainly for backward compatibility because there was a time when the global functions didn't exist.  Because it is sufficient only in the simplest of programs, it is not recommended for any program to rely on it. <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
 <p class="level0">This failsafe feature exists mainly for backward compatibility because there was a time when the global functions didn't exist.  Because it is sufficient only in the simplest of programs, it is not recommended for any program to rely on it. <p class="roffit">
  This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
 </body></html>
index d7d5a52..2cf3edd 100644 (file)
@@ -1,3 +1,24 @@
+#***************************************************************************
+#                                  _   _ ____  _
+#  Project                     ___| | | |  _ \| |
+#                             / __| | | | |_) | |
+#                            | (__| |_| |  _ <| |___
+#                             \___|\___/|_| \_\_____|
+#
+# Copyright (C) 2006, David Shaw <dshaw@jabberwocky.com>
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at http://curl.haxx.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
 # LIBCURL_CHECK_CONFIG ([DEFAULT-ACTION], [MINIMUM-VERSION],
 #                       [ACTION-IF-YES], [ACTION-IF-NO])
 # ----------------------------------------------------------
 # LIBCURL_CHECK_CONFIG ([DEFAULT-ACTION], [MINIMUM-VERSION],
 #                       [ACTION-IF-YES], [ACTION-IF-NO])
 # ----------------------------------------------------------
@@ -153,7 +174,7 @@ int x;
 curl_easy_setopt(NULL,CURLOPT_URL,NULL);
 x=CURL_ERROR_SIZE;
 x=CURLOPT_WRITEFUNCTION;
 curl_easy_setopt(NULL,CURLOPT_URL,NULL);
 x=CURL_ERROR_SIZE;
 x=CURLOPT_WRITEFUNCTION;
-x=CURLOPT_FILE;
+x=CURLOPT_WRITEDATA;
 x=CURLOPT_ERRORBUFFER;
 x=CURLOPT_STDERR;
 x=CURLOPT_VERBOSE;
 x=CURLOPT_ERRORBUFFER;
 x=CURLOPT_STDERR;
 x=CURLOPT_VERBOSE;
index 4099137..3875098 100644 (file)
Binary files a/docs/libcurl/libcurl.pdf and b/docs/libcurl/libcurl.pdf differ
diff --git a/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3 b/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3
new file mode 100644 (file)
index 0000000..66ceab8
--- /dev/null
@@ -0,0 +1,48 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE 3 "4 Nov 2014" "libcurl 7.39.0" "curl_multi_setopt options"
+.SH NAME
+CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE \- chunk length threshold for pipelining
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE, long size);
+.SH DESCRIPTION
+Pass a long with a \fBsize\fP in bytes. If a pipelined connection is currently
+processing a chunked (Transfer-encoding: chunked) request with a current chunk
+length larger than \fICURLMOPT_CHUNK_LENGTH_PENALTY_SIZE(3)\fP, that pipeline
+will not be considered for additional requests, even if it is shorter than
+\fICURLMOPT_MAX_PIPELINE_LENGTH(3)\fP.
+.SH DEFAULT
+The default value is 0, which means that the penalization is inactive.
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.30.0
+.SH RETURN VALUE
+Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLMOPT_PIPELINING "(3), " CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE "(3), "
+.BR CURLMOPT_MAX_PIPELINE_LENGTH "(3), "
diff --git a/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.html b/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.html
new file mode 100644 (file)
index 0000000..7650c00
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE - chunk length threshold for pipelining <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE, long size); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long with a <span Class="bold">size</span> in bytes. If a pipelined connection is currently processing a chunked (Transfer-encoding: chunked) request with a current chunk length larger than <a Class="emphasis" href="./CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.html">CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE</a>, that pipeline will not be considered for additional requests, even if it is shorter than <a Class="emphasis" href="./CURLMOPT_MAX_PIPELINE_LENGTH.html">CURLMOPT_MAX_PIPELINE_LENGTH</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">The default value is 0, which means that the penalization is inactive. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP(S) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.30.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLMOPT_PIPELINING.html">CURLMOPT_PIPELINING</a>, <a Class="manpage" href="./CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.html">CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLMOPT_MAX_PIPELINE_LENGTH.html">CURLMOPT_MAX_PIPELINE_LENGTH</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.pdf b/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.pdf
new file mode 100644 (file)
index 0000000..8584f68
Binary files /dev/null and b/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.pdf differ
diff --git a/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3 b/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3
new file mode 100644 (file)
index 0000000..203b6ac
--- /dev/null
@@ -0,0 +1,47 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 3 "4 Nov 2014" "libcurl 7.39.0" "curl_multi_setopt options"
+.SH NAME
+CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE \- size threshold for pipelining penalty
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE, long size);
+.SH DESCRIPTION
+Pass a long with a \fBsize\fP in bytes. If a pipelined connection is currently
+processing a request with a Content-Length larger than this
+\fICURLMOPT_CONTENT_LENGTH_PENALTY_SIZE(3)\fP, that pipeline will then not be
+considered for additional requests, even if it is shorter than
+\fICURLMOPT_MAX_PIPELINE_LENGTH(3)\fP.
+.SH DEFAULT
+The default value is 0, which means that the size penalization is inactive.
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.30.0
+.SH RETURN VALUE
+Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLMOPT_PIPELINING "(3), " CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE "(3), "
diff --git a/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.html b/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.html
new file mode 100644 (file)
index 0000000..b488190
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE - size threshold for pipelining penalty <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE, long size); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long with a <span Class="bold">size</span> in bytes. If a pipelined connection is currently processing a request with a Content-Length larger than this <a Class="emphasis" href="./CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.html">CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE</a>, that pipeline will then not be considered for additional requests, even if it is shorter than <a Class="emphasis" href="./CURLMOPT_MAX_PIPELINE_LENGTH.html">CURLMOPT_MAX_PIPELINE_LENGTH</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">The default value is 0, which means that the size penalization is inactive. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP(S) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.30.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLMOPT_PIPELINING.html">CURLMOPT_PIPELINING</a>, <a Class="manpage" href="./CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.html">CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.pdf b/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.pdf
new file mode 100644 (file)
index 0000000..3740c06
Binary files /dev/null and b/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.pdf differ
diff --git a/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3 b/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3
new file mode 100644 (file)
index 0000000..759ce08
--- /dev/null
@@ -0,0 +1,62 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLMOPT_MAXCONNECTS 3 "17 Jun 2014" "libcurl 7.37.0" "curl_multi_setopt options"
+.SH NAME
+CURLMOPT_MAXCONNECTS \- set size of connection cache
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAXCONNECTS, long max);
+.SH DESCRIPTION
+Pass a long indicating the \fBmax\fP. The set number will be used as the
+maximum amount of simultaneously open connections that libcurl may keep in its
+connection cache after completed use. By default libcurl will enlarge the size
+for each added easy handle to make it fit 4 times the number of added easy
+handles.
+
+By setting this option, you can prevent the cache size from growing beyond the
+limit set by you.
+
+When the cache is full, curl closes the oldest one in the cache to prevent the
+number of open connections from increasing.
+
+This option is for the multi handle's use only, when using the easy interface
+you should instead use the \fICURLOPT_MAXCONNECTS(3)\fP option.
+
+See \fICURLMOPT_MAX_TOTAL_CONNECTIONS(3)\fP for limiting the number of active
+connections.
+
+.SH DEFAULT
+See DESCRIPTION
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.16.3
+.SH RETURN VALUE
+Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLMOPT_MAX_HOST_CONNECTIONS "(3), "
+.BR CURLOPT_MAXCONNECTS "(3), "
+
diff --git a/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.html b/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.html
new file mode 100644 (file)
index 0000000..aa7bfba
--- /dev/null
@@ -0,0 +1,66 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLMOPT_MAXCONNECTS man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLMOPT_MAXCONNECTS - set size of connection cache <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAXCONNECTS, long max); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long indicating the <span Class="bold">max</span>. The set number will be used as the maximum amount of simultaneously open connections that libcurl may keep in its connection cache after completed use. By default libcurl will enlarge the size for each added easy handle to make it fit 4 times the number of added easy handles. 
+<p class="level0">By setting this option, you can prevent the cache size from growing beyond the limit set by you. 
+<p class="level0">When the cache is full, curl closes the oldest one in the cache to prevent the number of open connections from increasing. 
+<p class="level0">This option is for the multi handle's use only, when using the easy interface you should instead use the <a Class="emphasis" href="./CURLOPT_MAXCONNECTS.html">CURLOPT_MAXCONNECTS</a> option. 
+<p class="level0">See <a Class="emphasis" href="./CURLMOPT_MAX_TOTAL_CONNECTIONS.html">CURLMOPT_MAX_TOTAL_CONNECTIONS</a> for limiting the number of active connections. 
+<p class="level0"><a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">See DESCRIPTION <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.16.3 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLMOPT_MAX_HOST_CONNECTIONS.html">CURLMOPT_MAX_HOST_CONNECTIONS</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_MAXCONNECTS.html">CURLOPT_MAXCONNECTS</a>, <span Class="manpage"> </span> 
+<p class="level0"><p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.pdf b/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.pdf
new file mode 100644 (file)
index 0000000..75fab1e
Binary files /dev/null and b/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.pdf differ
diff --git a/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3 b/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3
new file mode 100644 (file)
index 0000000..7789347
--- /dev/null
@@ -0,0 +1,54 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLMOPT_MAX_HOST_CONNECTIONS 3 "17 Jun 2014" "libcurl 7.37.0" "curl_multi_setopt options"
+.SH NAME
+CURLMOPT_MAX_HOST_CONNECTIONS \- set max number of connections to a single host
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_HOST_CONNECTIONS, long max);
+.SH DESCRIPTION
+Pass a long to indicate \fBmax\fP. The set number will be used as the maximum
+amount of simultaneously open connections to a single host. For each new
+session to a host, libcurl will open a new connection up to the limit set by
+\fICURLMOPT_MAX_HOST_CONNECTIONS(3)\fP. When the limit is reached, the
+sessions will be pending until a connection becomes available. If
+\fICURLMOPT_PIPELINING(3)\fP is enabled, libcurl will try to pipeline if the
+host is capable of it.
+
+The default \fBmax\fP value is 0, unlimited.  However, for backwards
+compatibility, setting it to 0 when \fICURLMOPT_PIPELINING(3)\fP is 1 will not
+be treated as unlimited. Instead it will open only 1 connection and try to
+pipeline on it.
+.SH DEFAULT
+0
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.30.0
+.SH RETURN VALUE
+Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLMOPT_MAXCONNECTS "(3), " CURLMOPT_MAX_TOTAL_CONNECTIONS "(3), "
diff --git a/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.html b/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.html
new file mode 100644 (file)
index 0000000..ddcb77e
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLMOPT_MAX_HOST_CONNECTIONS man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLMOPT_MAX_HOST_CONNECTIONS - set max number of connections to a single host <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_HOST_CONNECTIONS, long max); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long to indicate <span Class="bold">max</span>. The set number will be used as the maximum amount of simultaneously open connections to a single host. For each new session to a host, libcurl will open a new connection up to the limit set by <a Class="emphasis" href="./CURLMOPT_MAX_HOST_CONNECTIONS.html">CURLMOPT_MAX_HOST_CONNECTIONS</a>. When the limit is reached, the sessions will be pending until a connection becomes available. If <a Class="emphasis" href="./CURLMOPT_PIPELINING.html">CURLMOPT_PIPELINING</a> is enabled, libcurl will try to pipeline if the host is capable of it. 
+<p class="level0">The default <span Class="bold">max</span> value is 0, unlimited.  However, for backwards compatibility, setting it to 0 when <a Class="emphasis" href="./CURLMOPT_PIPELINING.html">CURLMOPT_PIPELINING</a> is 1 will not be treated as unlimited. Instead it will open only 1 connection and try to pipeline on it. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP(S) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.30.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLMOPT_MAXCONNECTS.html">CURLMOPT_MAXCONNECTS</a>, <a Class="manpage" href="./CURLMOPT_MAX_TOTAL_CONNECTIONS.html">CURLMOPT_MAX_TOTAL_CONNECTIONS</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.pdf b/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.pdf
new file mode 100644 (file)
index 0000000..1b1dbd3
Binary files /dev/null and b/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.pdf differ
diff --git a/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3 b/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3
new file mode 100644 (file)
index 0000000..c2adb45
--- /dev/null
@@ -0,0 +1,51 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLMOPT_MAX_PIPELINE_LENGTH 3 "4 Nov 2014" "libcurl 7.39.0" "curl_multi_setopt options"
+.SH NAME
+CURLMOPT_MAX_PIPELINE_LENGTH \- maximum number of requests in a pipeline
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_PIPELINE_LENGTH, long max);
+.SH DESCRIPTION
+Pass a long. The set \fBmax\fP number will be used as the maximum amount of
+outstanding requests in a pipelined connection. Only used if pipelining is
+enabled.
+
+When this limit is reached, libcurl will use another connection to the same
+host (see \fICURLMOPT_MAX_HOST_CONNECTIONS(3)\fP), or queue the request until
+one of the pipelines to the host is ready to accept a request.  Thus, the
+total number of requests in-flight is \fICURLMOPT_MAX_HOST_CONNECTIONS(3)\fP *
+\fICURLMOPT_MAX_PIPELINE_LENGTH(3)\fP.
+.SH DEFAULT
+5
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.30.0
+.SH RETURN VALUE
+Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLMOPT_PIPELINING "(3), " CURLMOPT_MAX_HOST_CONNECTIONS "(3), "
diff --git a/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.html b/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.html
new file mode 100644 (file)
index 0000000..f543112
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLMOPT_MAX_PIPELINE_LENGTH man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLMOPT_MAX_PIPELINE_LENGTH - maximum number of requests in a pipeline <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_PIPELINE_LENGTH, long max); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long. The set <span Class="bold">max</span> number will be used as the maximum amount of outstanding requests in a pipelined connection. Only used if pipelining is enabled. 
+<p class="level0">When this limit is reached, libcurl will use another connection to the same host (see <a Class="emphasis" href="./CURLMOPT_MAX_HOST_CONNECTIONS.html">CURLMOPT_MAX_HOST_CONNECTIONS</a>), or queue the request until one of the pipelines to the host is ready to accept a request.  Thus, the total number of requests in-flight is <a Class="emphasis" href="./CURLMOPT_MAX_HOST_CONNECTIONS.html">CURLMOPT_MAX_HOST_CONNECTIONS</a> * <a Class="emphasis" href="./CURLMOPT_MAX_PIPELINE_LENGTH.html">CURLMOPT_MAX_PIPELINE_LENGTH</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">5 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP(S) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.30.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLMOPT_PIPELINING.html">CURLMOPT_PIPELINING</a>, <a Class="manpage" href="./CURLMOPT_MAX_HOST_CONNECTIONS.html">CURLMOPT_MAX_HOST_CONNECTIONS</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.pdf b/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.pdf
new file mode 100644 (file)
index 0000000..08373e2
--- /dev/null
@@ -0,0 +1,111 @@
+%PDF-1.4
+%Çì\8f¢
+5 0 obj
+<</Length 6 0 R/Filter /FlateDecode>>
+stream
+x\9c\85VÛnÛF\10}çW\fÐ\87R\81µÙå\9dhQ@qØX    Mª\12\9d\v¢B ©µÅ\82\17[$\9bæ#ú)ýÇÎ.¹ºÙV`Ø\ 2´³3gÎÙ9ãG \84\ 1\15?ÃgVj¯ç.Ü7\1a\85{íQcò\10\86\8f¬\847     \ 6\8bäNëï0p\rp}\93x>$¥öU¿¼\99\87×ñ,Y]O>¯fÓY\10N£`\15\ 6Ñ»äj©\9bËÑȦ\8cØÔ׳n[¬Ê®hóUÃÛú¡\ 5üÍëªÙEü8×\9fÉ{mL\89Á°z\86à|\ 4G|[à3\1dHBM\8f\9f±\1f<e6±}\131'kM¿\ eFÉ_\aÝ\18\94\8513äñ¹Êð\1f\94é?yÙ\95Puå-ßB}\a[þØñ¦m ¯ \85\87ü\81\17yÅû\1a\a Æ\88\1câÉ*\8b/Q<[L\17ÇPdH\ f㧼Ê\8anÍáWAÖkñ\87l~\13á\86\93\1a#\9e°¹ì\ fáÕ&­Ö\ 5¿\80s=]@QW÷¢¯åè\17\fè·Áâr>\9d%Ó8\12@\90}f÷ä?ÓÀ,\151\92~\9fxvO>#¾áBòMÓ\9b\ 6É\12\95  $\e\ e\b\98Èä1bø\96?h\86èND3\88k»Ãé Å·¼(à\96C×ð5¤\r´\98\95\96uWµB®ºk\9b\16yɱé#édK\8c\99ħ\86ê\82J¬JÓ5duUñL<U\ 2qU|ïkåwJv\914o\80WémÁ×D¤´\88)¸Ä4\9f6¼BPx^äeÞ\8aÀ-O³\r\ 6ù­\90±ï\ 1\93BZÕ\88\7f{P\11ÚZ¶Ô¤%\87MÝ´°Ô\eÎ¥d\8c\ e¼XÔ$\8c:\ 31B÷±ìK}¯ÔÙ½\86«x\91¬.ã(
+.\85®\8b\8e¸f\8eK\fC  h;\8eìf9º\80z\vH`Ç%®\81L@\9eó\ 2ê\8a\v¶Å\81¢¯Q\1dHðyÓ\13Þ'W|\13\8b\992=2³þ..¤YÆÑ R\95_\92ʨ\87\91C\9bâ\92%/%\9b®¹\90%ÚºM\8bç\87tüo~¿Qõ\ f¨c\9eCLÇ8 î      I=\97ø.\89ëz;.ÏPç0bz¾7ä|uRÑ%ösÕ\9eµ»cEp:\1c%2yj5\ 6¶bÛG\93ûû0±¶å\89\91DÓó\99Å\86\14\93\9b^\v\b{¿4\1cS\8dW\98ì&y\ fA\f¿ëº¦µ£Áþ\81åÍæ\ 3\ 4Ë\94\10\98\85\81ï±A¨íK\11ã\ 4â]AÃ$.u\94u_Æá\89c"f\1fAìQ\%Él©/\14c/¢ >O®ga |Ì{ÑÇ\92=\18ô\ 6¦\14{\e\ f\94Ù\9e÷d\ 1\8d-_D      fû\17\b\93}s\9486S/n\1aNÞLÃiòåDk\9b\98\96ç\1d;Òd½\16¾S\81KLJèù^¿êó ¹\99GðqÄL\8bø\ eÓ'áM 7ès-c<o»mÕô{c\15\7f\10\ e'¦ªßÒ¸\9aîá¡Þ¶ÂºÐK\87À\9bèC\14\8fD       Ï¶ôOÑ*\96»BÜF7#CÁ\97wb\10À$\ÄÇ\8bà@\8aÝ\94\f\132\8dÞ\9dp%Ö\82\9a697\17ÇÉ°\96ãг3®¦ù$³ï\13Ë~\92ylº\96øÿglZ6qä¡rrTÆï\951\88Ü\92\ 6¶m9*\87u¼Bq\18\¬¡\f­÷Àúo0ö\8f\ f\13\ e\97\r\8aýR¡h}L\ 4\ 5\89ö\aþü\ f\89Æendstream
+endobj
+6 0 obj
+1101
+endobj
+4 0 obj
+<</Type/Page/MediaBox [0 0 595 842]
+/Rotate 0/Parent 3 0 R
+/Resources<</ProcSet[/PDF /Text]
+/ExtGState 11 0 R
+/Font 12 0 R
+>>
+/Contents 5 0 R
+>>
+endobj
+3 0 obj
+<< /Type /Pages /Kids [
+4 0 R
+] /Count 1
+>>
+endobj
+1 0 obj
+<</Type /Catalog /Pages 3 0 R
+/Metadata 14 0 R
+>>
+endobj
+7 0 obj
+<</Type/ExtGState
+/OPM 1>>endobj
+11 0 obj
+<</R7
+7 0 R>>
+endobj
+12 0 obj
+<</R10
+10 0 R/R9
+9 0 R/R8
+8 0 R>>
+endobj
+10 0 obj
+<</BaseFont/Times-Italic/Type/Font
+/Subtype/Type1>>
+endobj
+9 0 obj
+<</BaseFont/Times-Bold/Type/Font
+/Subtype/Type1>>
+endobj
+8 0 obj
+<</BaseFont/Times-Roman/Type/Font
+/Encoding 13 0 R/Subtype/Type1>>
+endobj
+13 0 obj
+<</Type/Encoding/Differences[
+141/fl
+173/minus]>>
+endobj
+14 0 obj
+<</Type/Metadata
+/Subtype/XML/Length 1346>>stream
+<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
+<?adobe-xap-filters esc="CRLF"?>
+<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
+<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
+<rdf:Description rdf:about='uuid:702b58ca-cf2b-11ef-0000-e44c0fe5a109' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.06'/>
+<rdf:Description rdf:about='uuid:702b58ca-cf2b-11ef-0000-e44c0fe5a109' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-01-08T09:18:13+01:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-01-08T09:18:13+01:00</xmp:CreateDate>
+<xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
+<rdf:Description rdf:about='uuid:702b58ca-cf2b-11ef-0000-e44c0fe5a109' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:702b58ca-cf2b-11ef-0000-e44c0fe5a109'/>
+<rdf:Description rdf:about='uuid:702b58ca-cf2b-11ef-0000-e44c0fe5a109' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+</rdf:RDF>
+</x:xmpmeta>
+                                                                        
+                                                                        
+<?xpacket end='w'?>
+endstream
+endobj
+2 0 obj
+<</Producer(GPL Ghostscript 9.06)
+/CreationDate(D:20150108091813+01'00')
+/ModDate(D:20150108091813+01'00')
+/Creator(groff version 1.22.3)>>endobj
+xref
+0 15
+0000000000 65535 f 
+0000001425 00000 n 
+0000003315 00000 n 
+0000001366 00000 n 
+0000001206 00000 n 
+0000000015 00000 n 
+0000001186 00000 n 
+0000001490 00000 n 
+0000001744 00000 n 
+0000001679 00000 n 
+0000001611 00000 n 
+0000001531 00000 n 
+0000001561 00000 n 
+0000001826 00000 n 
+0000001892 00000 n 
+trailer
+<< /Size 15 /Root 1 0 R /Info 2 0 R
+/ID [<4EDD1116ACCC9D1C522F25B0E47AB18F><4EDD1116ACCC9D1C522F25B0E47AB18F>]
+>>
+startxref
+3469
+%%EOF
diff --git a/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3 b/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3
new file mode 100644 (file)
index 0000000..2783a7d
--- /dev/null
@@ -0,0 +1,50 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLMOPT_MAX_TOTAL_CONNECTIONS 3 "4 Nov 2014" "libcurl 7.39.0" "curl_multi_setopt options"
+.SH NAME
+CURLMOPT_MAX_TOTAL_CONNECTIONS \- max simultaneously open connections
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_TOTAL_CONNECTIONS, long amount);
+.SH DESCRIPTION
+Pass a long for the \fBamount\fP. The set number will be used as the maximum
+number of simultaneously open connections in total using this multi
+handle. For each new session, libcurl will open a new connection up to the
+limit set by \fICURLMOPT_MAX_TOTAL_CONNECTIONS(3)\fP. When the limit is
+reached, the sessions will be pending until there are available
+connections. If \fICURLMOPT_PIPELINING(3)\fP is enabled, libcurl will try to
+pipeline if the host is capable of it.
+.SH DEFAULT
+The default value is 0, which means that there is no limit. It is then simply
+controlled by the number of easy handles added.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.30.0
+.SH RETURN VALUE
+Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLMOPT_MAXCONNECTS "(3), " CURLMOPT_MAX_HOST_CONNECTIONS "(3), "
diff --git a/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.html b/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.html
new file mode 100644 (file)
index 0000000..317a962
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLMOPT_MAX_TOTAL_CONNECTIONS man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLMOPT_MAX_TOTAL_CONNECTIONS - max simultaneously open connections <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_TOTAL_CONNECTIONS, long amount); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long for the <span Class="bold">amount</span>. The set number will be used as the maximum number of simultaneously open connections in total using this multi handle. For each new session, libcurl will open a new connection up to the limit set by <a Class="emphasis" href="./CURLMOPT_MAX_TOTAL_CONNECTIONS.html">CURLMOPT_MAX_TOTAL_CONNECTIONS</a>. When the limit is reached, the sessions will be pending until there are available connections. If <a Class="emphasis" href="./CURLMOPT_PIPELINING.html">CURLMOPT_PIPELINING</a> is enabled, libcurl will try to pipeline if the host is capable of it. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">The default value is 0, which means that there is no limit. It is then simply controlled by the number of easy handles added. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.30.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLMOPT_MAXCONNECTS.html">CURLMOPT_MAXCONNECTS</a>, <a Class="manpage" href="./CURLMOPT_MAX_HOST_CONNECTIONS.html">CURLMOPT_MAX_HOST_CONNECTIONS</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.pdf b/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.pdf
new file mode 100644 (file)
index 0000000..56dfdf4
Binary files /dev/null and b/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.pdf differ
diff --git a/docs/libcurl/opts/CURLMOPT_PIPELINING.3 b/docs/libcurl/opts/CURLMOPT_PIPELINING.3
new file mode 100644 (file)
index 0000000..c1df1d5
--- /dev/null
@@ -0,0 +1,57 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLMOPT_PIPELINING 3 "17 Jun 2014" "libcurl 7.37.0" "curl_multi_setopt options"
+.SH NAME
+CURLMOPT_PIPELINING \- enable/disable HTTP pipelining
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING, bool onoff);
+.SH DESCRIPTION
+Set the \fBonoff\fP parameter to 1 to make libcurl use HTTP pipelining for
+HTTP transfers done using this multi handle, as far as possible. This means
+that if you add a second request that can use an already existing connection,
+the second request will be \&"piped" on the same connection rather than being
+executed in parallel.
+
+When using pipelining, there are also several other related options that are
+interesting to tweak and adjust to alter how libcurl spreads out requests on
+different connections or not etc.
+.SH DEFAULT
+0 (off)
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.16.0
+.SH RETURN VALUE
+Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLMOPT_MAX_PIPELINE_LENGTH "(3), "
+.BR CURLMOPT_PIPELINING_SITE_BL "(3), "
+.BR CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE "(3), "
+.BR CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE "(3), "
+.BR CURLMOPT_MAX_HOST_CONNECTIONS "(3), "
+.BR CURLMOPT_MAXCONNECTS "(3), "
+.BR CURLMOPT_MAX_HOST_CONNECTIONS "(3), "
diff --git a/docs/libcurl/opts/CURLMOPT_PIPELINING.html b/docs/libcurl/opts/CURLMOPT_PIPELINING.html
new file mode 100644 (file)
index 0000000..c56205c
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLMOPT_PIPELINING man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLMOPT_PIPELINING - enable/disable HTTP pipelining <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING, bool onoff); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Set the <span Class="bold">onoff</span> parameter to 1 to make libcurl use HTTP pipelining for HTTP transfers done using this multi handle, as far as possible. This means that if you add a second request that can use an already existing connection, the second request will be "piped" on the same connection rather than being executed in parallel. 
+<p class="level0">When using pipelining, there are also several other related options that are interesting to tweak and adjust to alter how libcurl spreads out requests on different connections or not etc. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 (off) <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP(S) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.16.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLMOPT_MAX_PIPELINE_LENGTH.html">CURLMOPT_MAX_PIPELINE_LENGTH</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLMOPT_PIPELINING_SITE_BL.html">CURLMOPT_PIPELINING_SITE_BL</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.html">CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.html">CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLMOPT_MAX_HOST_CONNECTIONS.html">CURLMOPT_MAX_HOST_CONNECTIONS</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLMOPT_MAXCONNECTS.html">CURLMOPT_MAXCONNECTS</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLMOPT_MAX_HOST_CONNECTIONS.html">CURLMOPT_MAX_HOST_CONNECTIONS</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLMOPT_PIPELINING.pdf b/docs/libcurl/opts/CURLMOPT_PIPELINING.pdf
new file mode 100644 (file)
index 0000000..2166f2d
Binary files /dev/null and b/docs/libcurl/opts/CURLMOPT_PIPELINING.pdf differ
diff --git a/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3 b/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3
new file mode 100644 (file)
index 0000000..ae39312
--- /dev/null
@@ -0,0 +1,60 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLMOPT_PIPELINING_SERVER_BL 3 "4 Nov 2014" "libcurl 7.39.0" "curl_multi_setopt options"
+.SH NAME
+CURLMOPT_PIPELINING_SERVER_BL \- pipelining server blacklist
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING_SERVER_BL, char **servers);
+.SH DESCRIPTION
+Pass a \fBservers\fP array of char *, ending with a NULL entry. This is a list
+of server types prefixes (in the Server: HTTP header) that are blacklisted
+from pipelining, i.e server types that are known to not support HTTP
+pipelining. The array is copied by libcurl.
+
+Note that the comparison matches if the Server: header begins with the string
+in the blacklist, i.e "Server: Ninja 1.2.3" and "Server: Ninja 1.4.0" can 
+both be blacklisted by having "Ninja" in the backlist.
+
+Pass a NULL pointer to clear the blacklist.
+.SH DEFAULT
+The default value is NULL, which means that there is no blacklist.
+.SH PROTOCOLS
+.SH EXAMPLE
+.nf
+  server_blacklist[] =
+  {
+    "Microsoft-IIS/6.0",
+    "nginx/0.8.54",
+    NULL
+  };
+
+  curl_multi_setopt(m, CURLMOPT_PIPELINE_SERVER_BL, server_blacklist);
+.fi
+.SH AVAILABILITY
+Added in 7.30.0
+.SH RETURN VALUE
+Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLMOPT_PIPELINING "(3), " CURLMOPT_PIPELINING_SITE_BL "(3), "
diff --git a/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.html b/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.html
new file mode 100644 (file)
index 0000000..2193b7d
--- /dev/null
@@ -0,0 +1,72 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLMOPT_PIPELINING_SERVER_BL man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLMOPT_PIPELINING_SERVER_BL - pipelining server blacklist <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING_SERVER_BL, char **servers); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a <span Class="bold">servers</span> array of char *, ending with a NULL entry. This is a list of server types prefixes (in the Server: HTTP header) that are blacklisted from pipelining, i.e server types that are known to not support HTTP pipelining. The array is copied by libcurl. 
+<p class="level0">Note that the comparison matches if the Server: header begins with the string in the blacklist, i.e "Server: Ninja 1.2.3" and "Server: Ninja 1.4.0" can  both be blacklisted by having "Ninja" in the backlist. 
+<p class="level0">Pass a NULL pointer to clear the blacklist. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">The default value is NULL, which means that there is no blacklist. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0"><a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre>
+<p class="level0">&nbsp; server_blacklist[] =
+ &nbsp; {
+ &nbsp;   "Microsoft-IIS/6.0",
+ &nbsp;   "nginx/0.8.54",
+ &nbsp;   NULL
+ &nbsp; };
+ <p class="level0">&nbsp; curl_multi_setopt(m, CURLMOPT_PIPELINE_SERVER_BL, server_blacklist);
+ </pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.30.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLMOPT_PIPELINING.html">CURLMOPT_PIPELINING</a>, <a Class="manpage" href="./CURLMOPT_PIPELINING_SITE_BL.html">CURLMOPT_PIPELINING_SITE_BL</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.pdf b/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.pdf
new file mode 100644 (file)
index 0000000..d12a2e0
Binary files /dev/null and b/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.pdf differ
diff --git a/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3 b/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3
new file mode 100644 (file)
index 0000000..6356d02
--- /dev/null
@@ -0,0 +1,56 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLMOPT_PIPELINING_SITE_BL 3 "4 Nov 2014" "libcurl 7.39.0" "curl_multi_setopt options"
+.SH NAME
+CURLMOPT_PIPELINING_SITE_BL \- pipelining host blacklist
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING_SITE_BL, char **hosts);
+.SH DESCRIPTION
+Pass a \fBhosts\fP array of char *, ending with a NULL entry. This is a list
+of sites that are blacklisted from pipelining, i.e sites that are known to not
+support HTTP pipelining. The array is copied by libcurl.
+
+Pass a NULL pointer to clear the blacklist.
+.SH DEFAULT
+The default value is NULL, which means that there is no blacklist.
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+.nf
+  site_blacklist[] =
+  {
+    "www.haxx.se",
+    "www.example.com:1234",
+    NULL
+  };
+
+  curl_multi_setopt(m, CURLMOPT_PIPELINE_SITE_BL, site_blacklist);
+.fi
+.SH AVAILABILITY
+Added in 7.30.0
+.SH RETURN VALUE
+Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLMOPT_PIPELINING "(3), " CURLMOPT_PIPELINING_SERVER_BL "(3), "
diff --git a/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.html b/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.html
new file mode 100644 (file)
index 0000000..ab579d1
--- /dev/null
@@ -0,0 +1,71 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLMOPT_PIPELINING_SITE_BL man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLMOPT_PIPELINING_SITE_BL - pipelining host blacklist <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING_SITE_BL, char **hosts); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a <span Class="bold">hosts</span> array of char *, ending with a NULL entry. This is a list of sites that are blacklisted from pipelining, i.e sites that are known to not support HTTP pipelining. The array is copied by libcurl. 
+<p class="level0">Pass a NULL pointer to clear the blacklist. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">The default value is NULL, which means that there is no blacklist. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP(S) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre>
+<p class="level0">&nbsp; site_blacklist[] =
+ &nbsp; {
+ &nbsp;   "www.haxx.se",
+ &nbsp;   "www.example.com:1234",
+ &nbsp;   NULL
+ &nbsp; };
+ <p class="level0">&nbsp; curl_multi_setopt(m, CURLMOPT_PIPELINE_SITE_BL, site_blacklist);
+ </pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.30.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLMOPT_PIPELINING.html">CURLMOPT_PIPELINING</a>, <a Class="manpage" href="./CURLMOPT_PIPELINING_SERVER_BL.html">CURLMOPT_PIPELINING_SERVER_BL</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.pdf b/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.pdf
new file mode 100644 (file)
index 0000000..fc712c0
Binary files /dev/null and b/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.pdf differ
diff --git a/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3 b/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3
new file mode 100644 (file)
index 0000000..bf7e6a7
--- /dev/null
@@ -0,0 +1,49 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLMOPT_SOCKETDATA 3 "3 Nov 2014" "libcurl 7.39.0" "curl_multi_setopt options"
+.SH NAME
+CURLMOPT_SOCKETDATA \- custom pointer passed to the socket callback
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_SOCKETDATA, void *pointer);
+.SH DESCRIPTION
+A data \fIpointer\fP to pass to the socket callback set with the
+\fICURLMOPT_SOCKETFUNCTION(3)\fP option.
+
+This pointer will not be touched by libcurl but will only be passed in to the
+socket callbacks's \fBuserp\fP argument.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.15.4
+.SH RETURN VALUE
+Returns CURLM_OK.
+.SH "SEE ALSO"
+.BR CURLMOPT_SOCKETFUNCTION "(3), " curl_multi_socket_action "(3), "
+.BR CURLMOPT_TIMERFUNCTION "(3) "
diff --git a/docs/libcurl/opts/CURLMOPT_SOCKETDATA.html b/docs/libcurl/opts/CURLMOPT_SOCKETDATA.html
new file mode 100644 (file)
index 0000000..dd2da96
--- /dev/null
@@ -0,0 +1,64 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLMOPT_SOCKETDATA man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLMOPT_SOCKETDATA - custom pointer passed to the socket callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_SOCKETDATA, void *pointer);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">A data <span Class="emphasis">pointer</span> to pass to the socket callback set with the <a Class="emphasis" href="./CURLMOPT_SOCKETFUNCTION.html">CURLMOPT_SOCKETFUNCTION</a> option. 
+<p class="level0">This pointer will not be touched by libcurl but will only be passed in to the socket callbacks's <span Class="bold">userp</span> argument. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.15.4 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLM_OK. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLMOPT_SOCKETFUNCTION.html">CURLMOPT_SOCKETFUNCTION</a>, <span Class="manpage">  curl_multi_socket_action (3)</span> <span Class="manpage"> </span> <a Class="manpage" href="./CURLMOPT_TIMERFUNCTION.html">CURLMOPT_TIMERFUNCTION</a>, <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLMOPT_SOCKETDATA.pdf b/docs/libcurl/opts/CURLMOPT_SOCKETDATA.pdf
new file mode 100644 (file)
index 0000000..4beb93f
Binary files /dev/null and b/docs/libcurl/opts/CURLMOPT_SOCKETDATA.pdf differ
diff --git a/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3 b/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3
new file mode 100644 (file)
index 0000000..d64fe11
--- /dev/null
@@ -0,0 +1,62 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLMOPT_SOCKETFUNCTION 3 "3 Nov 2014" "libcurl 7.39.0" "curl_multi_setopt options"
+.SH NAME
+CURLMOPT_SOCKETFUNCTION \- callback informed about what to wait for
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+int 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 */
+
+CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_SOCKETFUNCTION, socket_callback);
+.SH DESCRIPTION
+Pass a pointer to your callback function, which should match the prototype
+shown above.
+
+When the \fIcurl_multi_socket_action(3)\fP function runs, it informs the
+application about updates in the socket (file descriptor) status by doing
+none, one, or multiple calls to the \fBsocket_callback\fP. The callback gets
+status updates with changes since the previous time the callback was called.
+If the given callback pointer is NULL, no callback will be called. Set the
+callback's \fBuserp\fP argument with \fICURLMOPT_SOCKETDATA(3)\fP.  See
+\fIcurl_multi_socket_action(3)\fP for more details on how the callback is used
+and should work.
+.SH DEFAULT
+NULL (no callback)
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.15.4
+.SH RETURN VALUE
+Returns CURLM_OK.
+.SH "SEE ALSO"
+.BR CURLMOPT_SOCKETDATA "(3), " curl_multi_socket_action "(3), "
+.BR CURLMOPT_TIMERFUNCTION "(3) "
+
diff --git a/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.html b/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.html
new file mode 100644 (file)
index 0000000..1106738
--- /dev/null
@@ -0,0 +1,70 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLMOPT_SOCKETFUNCTION man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLMOPT_SOCKETFUNCTION - callback informed about what to wait for <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">int socket_callback(CURL *easy,      /* easy handle */
+ &nbsp;                   curl_socket_t s, /* socket */
+ &nbsp;                   int what,        /* see above */
+ &nbsp;                   void *userp,     /* private callback pointer */
+ &nbsp;                   void *socketp);  /* private socket pointer */
+ <p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_SOCKETFUNCTION, socket_callback);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
+<p class="level0">When the <span Class="emphasis">curl_multi_socket_action(3)</span> function runs, it informs the application about updates in the socket (file descriptor) status by doing none, one, or multiple calls to the <span Class="bold">socket_callback</span>. The callback gets status updates with changes since the previous time the callback was called. If the given callback pointer is NULL, no callback will be called. Set the callback's <span Class="bold">userp</span> argument with <a Class="emphasis" href="./CURLMOPT_SOCKETDATA.html">CURLMOPT_SOCKETDATA</a>.  See <span Class="emphasis">curl_multi_socket_action(3)</span> for more details on how the callback is used and should work. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL (no callback) <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.15.4 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLM_OK. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLMOPT_SOCKETDATA.html">CURLMOPT_SOCKETDATA</a>, <span Class="manpage">  curl_multi_socket_action (3)</span> <span Class="manpage"> </span> <a Class="manpage" href="./CURLMOPT_TIMERFUNCTION.html">CURLMOPT_TIMERFUNCTION</a>, 
+<p class="level0"><p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.pdf b/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.pdf
new file mode 100644 (file)
index 0000000..ba60f53
Binary files /dev/null and b/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.pdf differ
diff --git a/docs/libcurl/opts/CURLMOPT_TIMERDATA.3 b/docs/libcurl/opts/CURLMOPT_TIMERDATA.3
new file mode 100644 (file)
index 0000000..41627da
--- /dev/null
@@ -0,0 +1,48 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLMOPT_TIMERDATA 3 "17 Jun 2014" "libcurl 7.37.0" "curl_multi_setopt options"
+.SH NAME
+CURLMOPT_TIMERDATA \- custom pointer to pass to timer callback
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_TIMERDATA, void *pointer);
+.SH DESCRIPTION
+A data \fBpointer\fP to pass to the timer callback set with the
+\fICURLMOPT_TIMERFUNCTION(3)\fP option.
+
+This pointer will not be touched by libcurl but will only be passed in to the
+timer callbacks's \fBuserp\fP argument.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.16.0
+.SH RETURN VALUE
+Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLMOPT_TIMERFUNCTION "(3), " CURLMOPT_SOCKETFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLMOPT_TIMERDATA.html b/docs/libcurl/opts/CURLMOPT_TIMERDATA.html
new file mode 100644 (file)
index 0000000..020e5b0
--- /dev/null
@@ -0,0 +1,64 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLMOPT_TIMERDATA man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLMOPT_TIMERDATA - custom pointer to pass to timer callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_TIMERDATA, void *pointer);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">A data <span Class="bold">pointer</span> to pass to the timer callback set with the <a Class="emphasis" href="./CURLMOPT_TIMERFUNCTION.html">CURLMOPT_TIMERFUNCTION</a> option. 
+<p class="level0">This pointer will not be touched by libcurl but will only be passed in to the timer callbacks's <span Class="bold">userp</span> argument. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.16.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLMOPT_TIMERFUNCTION.html">CURLMOPT_TIMERFUNCTION</a>, <a Class="manpage" href="./CURLMOPT_SOCKETFUNCTION.html">CURLMOPT_SOCKETFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLMOPT_TIMERDATA.pdf b/docs/libcurl/opts/CURLMOPT_TIMERDATA.pdf
new file mode 100644 (file)
index 0000000..a93b74d
Binary files /dev/null and b/docs/libcurl/opts/CURLMOPT_TIMERDATA.pdf differ
diff --git a/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3 b/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3
new file mode 100644 (file)
index 0000000..809c3ef
--- /dev/null
@@ -0,0 +1,63 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLMOPT_TIMERFUNCTION 3 "17 Jun 2014" "libcurl 7.37.0" "curl_multi_setopt options"
+.SH NAME
+CURLMOPT_TIMERFUNCTION \- set callback to receive timeout values
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+int timer_callback(CURLM *multi,    /* multi handle */
+                   long timeout_ms, /* see above */
+                   void *userp);    /* private callback pointer */
+
+CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_TIMERFUNCTION, timer_callback);
+.SH DESCRIPTION
+Pass a pointer to your callback function, which should match the prototype
+shown above.
+
+This callback function will be called when the timeout value changes. The
+\fBtimeout_ms\fP value is at what latest time the application should call one
+of the \&"performing" functions of the multi interface
+(\fIcurl_multi_socket_action(3)\fP and \fIcurl_multi_perform(3)\fP) - to allow
+libcurl to keep timeouts and retries etc to work. A \fBtimeout_ms\fP value of
+-1 means that there is no timeout at all, and 0 means that the timeout is
+already expired. libcurl attempts to limit calling this only when the fixed
+future timeout time actually changes.
+
+The \fBuserp\fP pointer is set with \fICURLMOPT_TIMERDATA(3)\fP.
+
+The timer callback should return 0 on success, and -1 on error. This callback
+can be used instead of, or in addition to, \fIcurl_multi_timeout(3)\fP.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.16.0
+.SH RETURN VALUE
+Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLMOPT_TIMERDATA "(3), " CURLMOPT_SOCKETFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.html b/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.html
new file mode 100644 (file)
index 0000000..800bb8f
--- /dev/null
@@ -0,0 +1,69 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLMOPT_TIMERFUNCTION man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLMOPT_TIMERFUNCTION - set callback to receive timeout values <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">int timer_callback(CURLM *multi,    /* multi handle */
+ &nbsp;                  long timeout_ms, /* see above */
+ &nbsp;                  void *userp);    /* private callback pointer */
+ <p class="level0">CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_TIMERFUNCTION, timer_callback);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
+<p class="level0">This callback function will be called when the timeout value changes. The <span Class="bold">timeout_ms</span> value is at what latest time the application should call one of the "performing" functions of the multi interface (<span Class="emphasis">curl_multi_socket_action(3)</span> and <span Class="emphasis">curl_multi_perform(3)</span>) - to allow libcurl to keep timeouts and retries etc to work. A <span Class="bold">timeout_ms</span> value of -1 means that there is no timeout at all, and 0 means that the timeout is already expired. libcurl attempts to limit calling this only when the fixed future timeout time actually changes. 
+<p class="level0">The <span Class="bold">userp</span> pointer is set with <a Class="emphasis" href="./CURLMOPT_TIMERDATA.html">CURLMOPT_TIMERDATA</a>. 
+<p class="level0">The timer callback should return 0 on success, and -1 on error. This callback can be used instead of, or in addition to, <span Class="emphasis">curl_multi_timeout(3)</span>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.16.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLMOPT_TIMERDATA.html">CURLMOPT_TIMERDATA</a>, <a Class="manpage" href="./CURLMOPT_SOCKETFUNCTION.html">CURLMOPT_SOCKETFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.pdf b/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.pdf
new file mode 100644 (file)
index 0000000..3db1c3e
Binary files /dev/null and b/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3 b/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3
new file mode 100644 (file)
index 0000000..a51c86a
--- /dev/null
@@ -0,0 +1,44 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_ACCEPTTIMEOUT_MS 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_ACCEPTTIMEOUT_MS \- timeout waiting for FTP server to connect back
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ACCEPTTIMEOUT_MS, long ms);
+.SH DESCRIPTION
+Pass a long telling libcurl the maximum number of milliseconds to wait for a
+server to connect back to libcurl when an active FTP connection is used.
+.SH DEFAULT
+If no timeout is set, the internal default of 60000 (one minute) will be used.
+.SH PROTOCOLS
+FTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.24.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_STDERR "(3), " CURLOPT_DEBUGFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.html b/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.html
new file mode 100644 (file)
index 0000000..3b84a4d
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_ACCEPTTIMEOUT_MS man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_ACCEPTTIMEOUT_MS - timeout waiting for FTP server to connect back <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ACCEPTTIMEOUT_MS, long ms); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long telling libcurl the maximum number of milliseconds to wait for a server to connect back to libcurl when an active FTP connection is used. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">If no timeout is set, the internal default of 60000 (one minute) will be used. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">FTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.24.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_STDERR.html">CURLOPT_STDERR</a>, <a Class="manpage" href="./CURLOPT_DEBUGFUNCTION.html">CURLOPT_DEBUGFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.pdf b/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.pdf
new file mode 100644 (file)
index 0000000..4a5af84
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3 b/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3
new file mode 100644 (file)
index 0000000..376799a
--- /dev/null
@@ -0,0 +1,63 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_ACCEPT_ENCODING 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_ACCEPT_ENCODING \- enables automatic decompression of HTTP downloads
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ACCEPT_ENCODING, char *enc);
+.SH DESCRIPTION
+Pass a char * argument specifying what encoding you'd like.
+
+Sets the contents of the Accept-Encoding: header sent in a HTTP request, and
+enables decoding of a response when a Content-Encoding: header is received.
+Three encodings are supported: \fIidentity\fP, which does nothing,
+\fIdeflate\fP which requests the server to compress its response using the
+zlib algorithm, and \fIgzip\fP which requests the gzip algorithm.
+
+If a zero-length string is set like "", then an Accept-Encoding: header
+containing all built-in supported encodings is sent.
+
+You can also opt to just include the Accept-Encoding: header in your request
+with \fICURLOPT_HTTPHEADER(3)\fP but then there will be no automatic
+decompressing when receiving data.
+
+This is a request, not an order; the server may or may not do it.  This option
+must be set (to any non-NULL value) or else any unsolicited encoding done by
+the server is ignored. See the special file lib/README.encoding for further
+details.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+HTTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+This option was called CURLOPT_ENCODING before 7.21.6
+.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 CURLOPT_TRANSFER_ENCODING "(3), " CURLOPT_HTTPHEADER "(3), "
+.BR CURLOPT_HTTP_CONTENT_DECODING "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.html b/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.html
new file mode 100644 (file)
index 0000000..0f4aab4
--- /dev/null
@@ -0,0 +1,64 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_ACCEPT_ENCODING man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_ACCEPT_ENCODING - enables automatic decompression of HTTP downloads <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ACCEPT_ENCODING, char *enc); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * argument specifying what encoding you'd like. 
+<p class="level0">Sets the contents of the Accept-Encoding: header sent in a HTTP request, and enables decoding of a response when a Content-Encoding: header is received. Three encodings are supported: <span Class="emphasis">identity</span>, which does nothing, <span Class="emphasis">deflate</span> which requests the server to compress its response using the zlib algorithm, and <span Class="emphasis">gzip</span> which requests the gzip algorithm. 
+<p class="level0">If a zero-length string is set like "", then an Accept-Encoding: header containing all built-in supported encodings is sent. 
+<p class="level0">You can also opt to just include the Accept-Encoding: header in your request with <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a> but then there will be no automatic decompressing when receiving data. 
+<p class="level0">This is a request, not an order; the server may or may not do it.  This option must be set (to any non-NULL value) or else any unsolicited encoding done by the server is ignored. See the special file lib/README.encoding for further details. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">This option was called CURLOPT_ENCODING before 7.21.6 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_TRANSFER_ENCODING.html">CURLOPT_TRANSFER_ENCODING</a>, <a Class="manpage" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_HTTP_CONTENT_DECODING.html">CURLOPT_HTTP_CONTENT_DECODING</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.pdf b/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.pdf
new file mode 100644 (file)
index 0000000..33acf13
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3 b/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3
new file mode 100644 (file)
index 0000000..510e3b3
--- /dev/null
@@ -0,0 +1,44 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_ADDRESS_SCOPE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_ADDRESS_SCOPE \- set scope for local IPv6 addresses
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ADDRESS_SCOPE, long scope);
+.SH DESCRIPTION
+Pass a long specifying the scope_id value to use when connecting to IPv6
+link-local or site-local addresses.
+.SH DEFAULT
+0
+.SH PROTOCOLS
+All, when using IPv6
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.19.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_STDERR "(3), " CURLOPT_DEBUGFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.html b/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.html
new file mode 100644 (file)
index 0000000..d79833c
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_ADDRESS_SCOPE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_ADDRESS_SCOPE - set scope for local IPv6 addresses <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ADDRESS_SCOPE, long scope); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long specifying the scope_id value to use when connecting to IPv6 link-local or site-local addresses. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All, when using IPv6 <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.19.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_STDERR.html">CURLOPT_STDERR</a>, <a Class="manpage" href="./CURLOPT_DEBUGFUNCTION.html">CURLOPT_DEBUGFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.pdf b/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.pdf
new file mode 100644 (file)
index 0000000..883842c
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_APPEND.3 b/docs/libcurl/opts/CURLOPT_APPEND.3
new file mode 100644 (file)
index 0000000..0352296
--- /dev/null
@@ -0,0 +1,44 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_APPEND 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_APPEND \- enable appending to the remote file
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_APPEND, long append);
+.SH DESCRIPTION
+A parameter set to 1 tells the library to append to the remote file instead of
+overwrite it. This is only useful when uploading to an FTP site.
+.SH DEFAULT
+0
+.SH PROTOCOLS
+FTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+This option was known as CURLOPT_FTPAPPEND up to 7.16.4
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_DIRLISTONLY "(3), " CURLOPT_RESUME_FROM "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_APPEND.html b/docs/libcurl/opts/CURLOPT_APPEND.html
new file mode 100644 (file)
index 0000000..32cef5a
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_APPEND man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_APPEND - enable appending to the remote file <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_APPEND, long append); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">A parameter set to 1 tells the library to append to the remote file instead of overwrite it. This is only useful when uploading to an FTP site. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">FTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">This option was known as CURLOPT_FTPAPPEND up to 7.16.4 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_DIRLISTONLY.html">CURLOPT_DIRLISTONLY</a>, <a Class="manpage" href="./CURLOPT_RESUME_FROM.html">CURLOPT_RESUME_FROM</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_APPEND.pdf b/docs/libcurl/opts/CURLOPT_APPEND.pdf
new file mode 100644 (file)
index 0000000..698e1f4
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_APPEND.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_AUTOREFERER.3 b/docs/libcurl/opts/CURLOPT_AUTOREFERER.3
new file mode 100644 (file)
index 0000000..f8d5668
--- /dev/null
@@ -0,0 +1,45 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_AUTOREFERER 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_AUTOREFERER \- automatically update the referer header
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_AUTOREFERER, long autorefer);
+.SH DESCRIPTION
+Pass a parameter set to 1 to enable this. When enabled, libcurl will
+automatically set the Referer: header field in HTTP requests where it follows
+a Location: redirect.
+.SH DEFAULT
+0, disabled
+.SH PROTOCOLS
+HTTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Along with HTTP
+.SH RETURN VALUE
+Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_REFERER "(3), " CURLOPT_FOLLOWLOCATION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_AUTOREFERER.html b/docs/libcurl/opts/CURLOPT_AUTOREFERER.html
new file mode 100644 (file)
index 0000000..f7cf20c
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_AUTOREFERER man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_AUTOREFERER - automatically update the referer header <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_AUTOREFERER, long autorefer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a parameter set to 1 to enable this. When enabled, libcurl will automatically set the Referer: header field in HTTP requests where it follows a Location: redirect. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0, disabled <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Along with HTTP <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_REFERER.html">CURLOPT_REFERER</a>, <a Class="manpage" href="./CURLOPT_FOLLOWLOCATION.html">CURLOPT_FOLLOWLOCATION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_AUTOREFERER.pdf b/docs/libcurl/opts/CURLOPT_AUTOREFERER.pdf
new file mode 100644 (file)
index 0000000..5cf16c0
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_AUTOREFERER.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3 b/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3
new file mode 100644 (file)
index 0000000..9e31ae9
--- /dev/null
@@ -0,0 +1,50 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_BUFFERSIZE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_BUFFERSIZE \- set preferred receive buffer size
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_BUFFERSIZE, long size);
+.SH DESCRIPTION
+Pass a long specifying your preferred \fIsize\fP (in bytes) for the receive
+buffer in libcurl.  The main point of this would be that the write callback
+gets called more often and with smaller chunks. This is just treated as a
+request, not an order. You cannot be guaranteed to actually get the given
+size.
+
+This size is by default set as big as possible (\fICURL_MAX_WRITE_SIZE\fP), so
+it only makes sense to use this option if you want it smaller.
+.SH DEFAULT
+CURL_MAX_WRITE_SIZE
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.10
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_MAX_RECV_SPEED "(3), " CURLOPT_WRITEFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_BUFFERSIZE.html b/docs/libcurl/opts/CURLOPT_BUFFERSIZE.html
new file mode 100644 (file)
index 0000000..265f841
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_BUFFERSIZE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_BUFFERSIZE - set preferred receive buffer size <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_BUFFERSIZE, long size); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long specifying your preferred <span Class="emphasis">size</span> (in bytes) for the receive buffer in libcurl.  The main point of this would be that the write callback gets called more often and with smaller chunks. This is just treated as a request, not an order. You cannot be guaranteed to actually get the given size. 
+<p class="level0">This size is by default set as big as possible (<span Class="emphasis">CURL_MAX_WRITE_SIZE</span>), so it only makes sense to use this option if you want it smaller. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">CURL_MAX_WRITE_SIZE <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.10 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><span Class="manpage">CURLOPT_MAX_RECV_SPEED (3)</span> <a Class="manpage" href="./CURLOPT_WRITEFUNCTION.html">CURLOPT_WRITEFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_BUFFERSIZE.pdf b/docs/libcurl/opts/CURLOPT_BUFFERSIZE.pdf
new file mode 100644 (file)
index 0000000..b63d18f
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_BUFFERSIZE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_CAINFO.3 b/docs/libcurl/opts/CURLOPT_CAINFO.3
new file mode 100644 (file)
index 0000000..cb7f47b
--- /dev/null
@@ -0,0 +1,56 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_CAINFO 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_CAINFO \- path to Certificate Authority (CA) bundle
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CAINFO, char *path);
+.SH DESCRIPTION
+Pass a char * to a zero terminated string naming a file holding one or more
+certificates to verify the peer with.
+
+If \fICURLOPT_SSL_VERIFYPEER(3)\fP is zero and you avoid verifying the
+server's certificate, \fICURLOPT_CAINFO(3)\fP need not even indicate an
+accessible file.
+
+This option is by default set to the system path where libcurl's cacert bundle
+is assumed to be stored, as established at build time.
+
+If curl is built against the NSS SSL library, the NSS PEM PKCS#11 module
+(libnsspem.so) needs to be available for this option to work properly.
+.SH DEFAULT
+Built-in system specific
+.SH PROTOCOLS
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+If built TLS enabled
+.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 CURLOPT_CAPATH "(3), "
+.BR CURLOPT_SSL_VERIFYPEER "(3), " CURLOPT_SSL_VERIFYHOST "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_CAINFO.html b/docs/libcurl/opts/CURLOPT_CAINFO.html
new file mode 100644 (file)
index 0000000..528da91
--- /dev/null
@@ -0,0 +1,63 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_CAINFO man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_CAINFO - path to Certificate Authority (CA) bundle <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CAINFO, char *path); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * to a zero terminated string naming a file holding one or more certificates to verify the peer with. 
+<p class="level0">If <a Class="emphasis" href="./CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a> is zero and you avoid verifying the server's certificate, <a Class="emphasis" href="./CURLOPT_CAINFO.html">CURLOPT_CAINFO</a> need not even indicate an accessible file. 
+<p class="level0">This option is by default set to the system path where libcurl's cacert bundle is assumed to be stored, as established at build time. 
+<p class="level0">If curl is built against the NSS SSL library, the NSS PEM PKCS#11 module (libnsspem.so) needs to be available for this option to work properly. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">Built-in system specific <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">If built TLS enabled <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_CAPATH.html">CURLOPT_CAPATH</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a>, <a Class="manpage" href="./CURLOPT_SSL_VERIFYHOST.html">CURLOPT_SSL_VERIFYHOST</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_CAINFO.pdf b/docs/libcurl/opts/CURLOPT_CAINFO.pdf
new file mode 100644 (file)
index 0000000..572a5d4
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_CAINFO.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_CAPATH.3 b/docs/libcurl/opts/CURLOPT_CAPATH.3
new file mode 100644 (file)
index 0000000..642953d
--- /dev/null
@@ -0,0 +1,54 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_CAPATH 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_CAPATH \- specify directory holding CA certificates
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CAPATH, char *capath);
+.SH DESCRIPTION
+Pass a char * to a zero terminated string naming a directory holding multiple
+CA certificates to verify the peer with. If libcurl is built against OpenSSL,
+the certificate directory must be prepared using the openssl c_rehash utility.
+This makes sense only when used in combination with the
+\fICURLOPT_SSL_VERIFYPEER(3)\fP option.
+
+The \fICURLOPT_CAPATH(3)\fP function apparently does not work in Windows due
+to some limitation in openssl.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+This option is OpenSSL-specific and does nothing if libcurl is built to use
+GnuTLS. NSS-powered libcurl provides the option only for backward
+compatibility.
+.SH RETURN VALUE
+Returns CURLE_OK if TLS enabled, and CURLE_UNKNOWN_OPTION if not, or
+CURLE_OUT_OF_MEMORY if there was insufficient heap space.
+.SH "SEE ALSO"
+.BR CURLOPT_CAINFO "(3), "
+.BR CURLOPT_STDERR "(3), " CURLOPT_DEBUGFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_CAPATH.html b/docs/libcurl/opts/CURLOPT_CAPATH.html
new file mode 100644 (file)
index 0000000..a9cdb27
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_CAPATH man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_CAPATH - specify directory holding CA certificates <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CAPATH, char *capath); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * to a zero terminated string naming a directory holding multiple CA certificates to verify the peer with. If libcurl is built against OpenSSL, the certificate directory must be prepared using the openssl c_rehash utility. This makes sense only when used in combination with the <a Class="emphasis" href="./CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a> option. 
+<p class="level0">The <a Class="emphasis" href="./CURLOPT_CAPATH.html">CURLOPT_CAPATH</a> function apparently does not work in Windows due to some limitation in openssl. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">This option is OpenSSL-specific and does nothing if libcurl is built to use GnuTLS. NSS-powered libcurl provides the option only for backward compatibility. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if TLS enabled, and CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_CAINFO.html">CURLOPT_CAINFO</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_STDERR.html">CURLOPT_STDERR</a>, <a Class="manpage" href="./CURLOPT_DEBUGFUNCTION.html">CURLOPT_DEBUGFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_CAPATH.pdf b/docs/libcurl/opts/CURLOPT_CAPATH.pdf
new file mode 100644 (file)
index 0000000..5dbdc97
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_CAPATH.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_CERTINFO.3 b/docs/libcurl/opts/CURLOPT_CERTINFO.3
new file mode 100644 (file)
index 0000000..8c01711
--- /dev/null
@@ -0,0 +1,48 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_CERTINFO 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_CERTINFO \- request SSL certificate information
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CERTINFO, long certinfo);
+.SH DESCRIPTION
+Pass a long set to 1 to enable libcurl's certificate chain info gatherer. With
+this enabled, libcurl (if built with OpenSSL, NSS or GSKit) will
+extract lots of information and data about the certificates in the certificate
+chain used in the SSL connection. This data may then be retrieved after a
+transfer using \fIcurl_easy_getinfo(3)\fP and its option
+\fICURLINFO_CERTINFO\fP.
+.SH DEFAULT
+0
+.SH PROTOCOLS
+All TLS-based
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.19.1
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_CAINFO "(3), " CURLOPT_SSL_VERIFYPEER "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_CERTINFO.html b/docs/libcurl/opts/CURLOPT_CERTINFO.html
new file mode 100644 (file)
index 0000000..ae19dd6
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_CERTINFO man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_CERTINFO - request SSL certificate information <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CERTINFO, long certinfo); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long set to 1 to enable libcurl's certificate chain info gatherer. With this enabled, libcurl (if built with OpenSSL, NSS or GSKit) will extract lots of information and data about the certificates in the certificate chain used in the SSL connection. This data may then be retrieved after a transfer using <span Class="emphasis">curl_easy_getinfo(3)</span> and its option <span Class="emphasis">CURLINFO_CERTINFO</span>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All TLS-based <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.19.1 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_CAINFO.html">CURLOPT_CAINFO</a>, <a Class="manpage" href="./CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_CERTINFO.pdf b/docs/libcurl/opts/CURLOPT_CERTINFO.pdf
new file mode 100644 (file)
index 0000000..9e7273e
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_CERTINFO.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3
new file mode 100644 (file)
index 0000000..4dd7907
--- /dev/null
@@ -0,0 +1,69 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_CHUNK_BGN_FUNCTION 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_CHUNK_BGN_FUNCTION \- callback before a transfer with FTP wildcardmatch
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+long chunk_bgn_callback(const void *transfer_info, void *ptr,
+                        int remains);
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CHUNK_BGN_FUNCTION,
+                          chunk_bgn_callback);
+.SH DESCRIPTION
+Pass a pointer to your callback function, which should match the prototype
+shown above.
+
+This callback function gets called by libcurl before a part of the stream is
+going to be transferred (if the transfer supports chunks).
+
+The \fItransfer_info\fP pointer will point to a struct curl_fileinfo with
+details about the file that is about to get transferred.
+
+This callback makes sense only when using the \fICURLOPT_WILDCARDMATCH(3)\fP
+option for now.
+
+The target of transfer_info parameter is a "feature depended" structure. For
+the FTP wildcard download, the target is curl_fileinfo structure (see
+\fIcurl/curl.h\fP).  The parameter \fIptr\fP is a pointer given by
+\fICURLOPT_CHUNK_DATA(3)\fP. The parameter remains contains number of chunks
+remaining per the transfer. If the feature is not available, the parameter has
+zero value.
+
+Return \fICURL_CHUNK_BGN_FUNC_OK\fP if everything is fine,
+\fICURL_CHUNK_BGN_FUNC_SKIP\fP if you want to skip the concrete chunk or
+\fICURL_CHUNK_BGN_FUNC_FAIL\fP to tell libcurl to stop if some error occurred.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+FTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+This was added in 7.21.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_CHUNK_END_FUNCTION "(3), " CURLOPT_WILDCARDMATCH "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.html b/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.html
new file mode 100644 (file)
index 0000000..2721d5b
--- /dev/null
@@ -0,0 +1,71 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_CHUNK_BGN_FUNCTION man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_CHUNK_BGN_FUNCTION - callback before a transfer with FTP wildcardmatch <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">long chunk_bgn_callback(const void *transfer_info, void *ptr,
+ &nbsp;                       int remains);
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CHUNK_BGN_FUNCTION,
+ &nbsp;                         chunk_bgn_callback);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
+<p class="level0">This callback function gets called by libcurl before a part of the stream is going to be transferred (if the transfer supports chunks). 
+<p class="level0">The <span Class="emphasis">transfer_info</span> pointer will point to a struct curl_fileinfo with details about the file that is about to get transferred. 
+<p class="level0">This callback makes sense only when using the <a Class="emphasis" href="./CURLOPT_WILDCARDMATCH.html">CURLOPT_WILDCARDMATCH</a> option for now. 
+<p class="level0">The target of transfer_info parameter is a "feature depended" structure. For the FTP wildcard download, the target is curl_fileinfo structure (see <span Class="emphasis">curl/curl.h</span>).  The parameter <span Class="emphasis">ptr</span> is a pointer given by <a Class="emphasis" href="./CURLOPT_CHUNK_DATA.html">CURLOPT_CHUNK_DATA</a>. The parameter remains contains number of chunks remaining per the transfer. If the feature is not available, the parameter has zero value. 
+<p class="level0">Return <span Class="emphasis">CURL_CHUNK_BGN_FUNC_OK</span> if everything is fine, <span Class="emphasis">CURL_CHUNK_BGN_FUNC_SKIP</span> if you want to skip the concrete chunk or <span Class="emphasis">CURL_CHUNK_BGN_FUNC_FAIL</span> to tell libcurl to stop if some error occurred. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">FTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">This was added in 7.21.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_CHUNK_END_FUNCTION.html">CURLOPT_CHUNK_END_FUNCTION</a>, <a Class="manpage" href="./CURLOPT_WILDCARDMATCH.html">CURLOPT_WILDCARDMATCH</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.pdf b/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.pdf
new file mode 100644 (file)
index 0000000..9a97a66
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3 b/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3
new file mode 100644 (file)
index 0000000..abdbc3a
--- /dev/null
@@ -0,0 +1,45 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_CHUNK_DATA 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_CHUNK_DATA \- custom pointer to the FTP chunk callbacks
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CHUNK_DATA, void *pointer);
+.SH DESCRIPTION
+Pass a \fIpointer\fP that will be untouched by libcurl and passed as the ptr
+argument to the \fICURL_CHUNK_BGN_FUNTION(3)\fP and
+\fICURL_CHUNK_END_FUNTION(3)\fP.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+FTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.21.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_CHUNK_BGN_FUNCTION "(3), " CURLOPT_WILDCARDMATCH "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_CHUNK_DATA.html b/docs/libcurl/opts/CURLOPT_CHUNK_DATA.html
new file mode 100644 (file)
index 0000000..701d1a4
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_CHUNK_DATA man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_CHUNK_DATA - custom pointer to the FTP chunk callbacks <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CHUNK_DATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a <span Class="emphasis">pointer</span> that will be untouched by libcurl and passed as the ptr argument to the <span Class="emphasis">CURL_CHUNK_BGN_FUNTION(3)</span> and <span Class="emphasis">CURL_CHUNK_END_FUNTION(3)</span>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">FTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.21.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_CHUNK_BGN_FUNCTION.html">CURLOPT_CHUNK_BGN_FUNCTION</a>, <a Class="manpage" href="./CURLOPT_WILDCARDMATCH.html">CURLOPT_WILDCARDMATCH</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_CHUNK_DATA.pdf b/docs/libcurl/opts/CURLOPT_CHUNK_DATA.pdf
new file mode 100644 (file)
index 0000000..11e8735
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_CHUNK_DATA.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3
new file mode 100644 (file)
index 0000000..64f829c
--- /dev/null
@@ -0,0 +1,54 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_CHUNK_END_FUNCTION 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_CHUNK_END_FUNCTION \- callback after a transfer with FTP wildcardmatch
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+long chunk_end_callback(void *ptr);
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CHUNK_END_FUNCTION,
+                          chunk_end_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 a part of the stream has been
+transferred (or skipped).
+
+Return \fICURL_CHUNK_END_FUNC_OK\fP if everything is fine or
+\fBCURL_CHUNK_END_FUNC_FAIL\fP to tell the lib to stop if some error occurred.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+FTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.21.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_WILDCARDMATCH "(3), " CURLOPT_CHUNK_BGN_FUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.html b/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.html
new file mode 100644 (file)
index 0000000..6322c73
--- /dev/null
@@ -0,0 +1,67 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_CHUNK_END_FUNCTION man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_CHUNK_END_FUNCTION - callback after a transfer with FTP wildcardmatch <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">long chunk_end_callback(void *ptr);
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CHUNK_END_FUNCTION,
+ &nbsp;                         chunk_end_callback);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
+<p class="level0">This function gets called by libcurl as soon as a part of the stream has been transferred (or skipped). 
+<p class="level0">Return <span Class="emphasis">CURL_CHUNK_END_FUNC_OK</span> if everything is fine or <span Class="bold">CURL_CHUNK_END_FUNC_FAIL</span> to tell the lib to stop if some error occurred. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">FTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.21.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_WILDCARDMATCH.html">CURLOPT_WILDCARDMATCH</a>, <a Class="manpage" href="./CURLOPT_CHUNK_BGN_FUNCTION.html">CURLOPT_CHUNK_BGN_FUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.pdf b/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.pdf
new file mode 100644 (file)
index 0000000..f9dfde6
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3 b/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3
new file mode 100644 (file)
index 0000000..b8af353
--- /dev/null
@@ -0,0 +1,45 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_CLOSESOCKETDATA 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_CLOSESOCKETDATA \- pointer passed to the socket close callback
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CLOSESOCKETDATA, void *pointer);
+.SH DESCRIPTION
+Pass a \fIpointer\fP that will be untouched by libcurl and passed as the first
+argument in the closesocket callback set with
+\fICURLOPT_CLOSESOCKETFUNCTION(3)\fP.
+.SH DEFAULT
+The default value of this parameter is NULL.
+.SH PROTOCOLS
+All except file:
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.21.7
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_CLOSESOCKETFUNCTION "(3), " CURLOPT_OPENSOCKETFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.html b/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.html
new file mode 100644 (file)
index 0000000..44fa4ff
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_CLOSESOCKETDATA man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_CLOSESOCKETDATA - pointer passed to the socket close callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CLOSESOCKETDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a <span Class="emphasis">pointer</span> that will be untouched by libcurl and passed as the first argument in the closesocket callback set with <a Class="emphasis" href="./CURLOPT_CLOSESOCKETFUNCTION.html">CURLOPT_CLOSESOCKETFUNCTION</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">The default value of this parameter is NULL. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All except file: <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.21.7 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_CLOSESOCKETFUNCTION.html">CURLOPT_CLOSESOCKETFUNCTION</a>, <a Class="manpage" href="./CURLOPT_OPENSOCKETFUNCTION.html">CURLOPT_OPENSOCKETFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.pdf b/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.pdf
new file mode 100644 (file)
index 0000000..7d78bda
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3 b/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3
new file mode 100644 (file)
index 0000000..2594b16
--- /dev/null
@@ -0,0 +1,56 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_CLOSESOCKETFUNCTION 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_CLOSESOCKETFUNCTION \- callback to socket close replacement function
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+int closesocket_callback(void *clientp, curl_socket_t item);
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CLOSESOCKETFUNCTION, closesocket_callback);
+.SH DESCRIPTION
+Pass a pointer to your callback function, which should match the prototype
+shown above.
+
+This callback function gets called by libcurl instead of the \fIclose(3)\fP or
+\fIclosesocket(3)\fP call when sockets are closed (not for any other file
+descriptors). This is pretty much the reverse to the
+\fICURLOPT_OPENSOCKETFUNCTION(3)\fP option. Return 0 to signal success and 1
+if there was an error.
+
+The \fIclientp\fP pointer is set with
+\fICURLOPT_CLOSESOCKETDATA(3)\fP. \fIitem\fP is the socket libcurl wants to be
+closed.
+.SH DEFAULT
+By default libcurl uses the standard socket close function.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.21.7
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_CLOSESOCKETDATA "(3), " CURLOPT_OPENSOCKETFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.html b/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.html
new file mode 100644 (file)
index 0000000..1b004a1
--- /dev/null
@@ -0,0 +1,63 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_CLOSESOCKETFUNCTION man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_CLOSESOCKETFUNCTION - callback to socket close replacement function <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">int closesocket_callback(void *clientp, curl_socket_t item); 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CLOSESOCKETFUNCTION, closesocket_callback); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
+<p class="level0">This callback function gets called by libcurl instead of the <span Class="emphasis">close(3)</span> or <span Class="emphasis">closesocket(3)</span> call when sockets are closed (not for any other file descriptors). This is pretty much the reverse to the <a Class="emphasis" href="./CURLOPT_OPENSOCKETFUNCTION.html">CURLOPT_OPENSOCKETFUNCTION</a> option. Return 0 to signal success and 1 if there was an error. 
+<p class="level0">The <span Class="emphasis">clientp</span> pointer is set with <a Class="emphasis" href="./CURLOPT_CLOSESOCKETDATA.html">CURLOPT_CLOSESOCKETDATA</a>. <span Class="emphasis">item</span> is the socket libcurl wants to be closed. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">By default libcurl uses the standard socket close function. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.21.7 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_CLOSESOCKETDATA.html">CURLOPT_CLOSESOCKETDATA</a>, <a Class="manpage" href="./CURLOPT_OPENSOCKETFUNCTION.html">CURLOPT_OPENSOCKETFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.pdf b/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.pdf
new file mode 100644 (file)
index 0000000..19edee5
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3 b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3
new file mode 100644 (file)
index 0000000..5005b59
--- /dev/null
@@ -0,0 +1,50 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_CONNECTTIMEOUT 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_CONNECTTIMEOUT \- timeout for the connect phase
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECTTIMEOUT, long timeout);
+.SH DESCRIPTION
+Pass a long. It should contain the maximum time in seconds that you allow the
+connection phase to the server to take.  This only limits the connection
+phase, it has no impact once it has connected. Set to zero to switch to the
+default built-in connection timeout - 300 seconds. See also the
+\fICURLOPT_TIMEOUT(3)\fP option.
+
+In unix-like systems, this might cause signals to be used unless
+\fICURLOPT_NOSIGNAL(3)\fP is set.
+.SH DEFAULT
+300
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_TIMEOUT "(3), " CURLOPT_LOW_SPEED_LIMIT "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.html b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.html
new file mode 100644 (file)
index 0000000..97ca35b
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_CONNECTTIMEOUT man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_CONNECTTIMEOUT - timeout for the connect phase <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECTTIMEOUT, long timeout); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long. It should contain the maximum time in seconds that you allow the connection phase to the server to take.  This only limits the connection phase, it has no impact once it has connected. Set to zero to switch to the default built-in connection timeout - 300 seconds. See also the <a Class="emphasis" href="./CURLOPT_TIMEOUT.html">CURLOPT_TIMEOUT</a> option. 
+<p class="level0">In unix-like systems, this might cause signals to be used unless <a Class="emphasis" href="./CURLOPT_NOSIGNAL.html">CURLOPT_NOSIGNAL</a> is set. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">300 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_TIMEOUT.html">CURLOPT_TIMEOUT</a>, <a Class="manpage" href="./CURLOPT_LOW_SPEED_LIMIT.html">CURLOPT_LOW_SPEED_LIMIT</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.pdf b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.pdf
new file mode 100644 (file)
index 0000000..cdf8c4f
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3 b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3
new file mode 100644 (file)
index 0000000..dd5ef58
--- /dev/null
@@ -0,0 +1,50 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_CONNECTTIMEOUT_MS 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_CONNECTTIMEOUT_MS \- timeout for the connect phase
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECTTIMEOUT_MS, long timeout);
+.SH DESCRIPTION
+Pass a long. It should contain the maximum time in milliseconds that you allow
+the connection phase to the server to take.  This only limits the connection
+phase, it has no impact once it has connected. Set to zero to switch to the
+default built-in connection timeout - 300 seconds. See also the
+\fICURLOPT_TIMEOUT_MS(3)\fP option.
+
+In unix-like systems, this might cause signals to be used unless
+\fICURLOPT_NOSIGNAL(3)\fP is set.
+.SH DEFAULT
+300000
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_TIMEOUT "(3), " CURLOPT_LOW_SPEED_LIMIT "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.html b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.html
new file mode 100644 (file)
index 0000000..91b2c9a
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_CONNECTTIMEOUT_MS man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_CONNECTTIMEOUT_MS - timeout for the connect phase <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECTTIMEOUT_MS, long timeout); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long. It should contain the maximum time in milliseconds that you allow the connection phase to the server to take.  This only limits the connection phase, it has no impact once it has connected. Set to zero to switch to the default built-in connection timeout - 300 seconds. See also the <a Class="emphasis" href="./CURLOPT_TIMEOUT_MS.html">CURLOPT_TIMEOUT_MS</a> option. 
+<p class="level0">In unix-like systems, this might cause signals to be used unless <a Class="emphasis" href="./CURLOPT_NOSIGNAL.html">CURLOPT_NOSIGNAL</a> is set. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">300000 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_TIMEOUT.html">CURLOPT_TIMEOUT</a>, <a Class="manpage" href="./CURLOPT_LOW_SPEED_LIMIT.html">CURLOPT_LOW_SPEED_LIMIT</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.pdf b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.pdf
new file mode 100644 (file)
index 0000000..0a001f5
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3 b/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3
new file mode 100644 (file)
index 0000000..afb3cfd
--- /dev/null
@@ -0,0 +1,51 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_CONNECT_ONLY 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_CONNECT_ONLY \- stop when connected to target server
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECT_ONLY, long only);
+.SH DESCRIPTION
+Pass a long. If the parameter equals 1, it tells the library to perform all
+the required proxy authentication and connection setup, but no data transfer,
+and then return.
+
+The option can be used to simply test a connection to a server, but is more
+useful when used with the \fICURLINFO_LASTSOCKET\fP option to
+\fIcurl_easy_getinfo(3)\fP as the library can set up the connection and then
+the application can obtain the most recently used socket for special data
+transfers.
+.SH DEFAULT
+0
+.SH PROTOCOLS
+HTTP, SMTP, POP3 and IMAP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.15.2
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_VERBOSE "(3), " CURLOPT_HTTPPROXYTUNNEL  "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.html b/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.html
new file mode 100644 (file)
index 0000000..a0fda31
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_CONNECT_ONLY man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_CONNECT_ONLY - stop when connected to target server <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECT_ONLY, long only); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long. If the parameter equals 1, it tells the library to perform all the required proxy authentication and connection setup, but no data transfer, and then return. 
+<p class="level0">The option can be used to simply test a connection to a server, but is more useful when used with the <span Class="emphasis">CURLINFO_LASTSOCKET</span> option to <span Class="emphasis">curl_easy_getinfo(3)</span> as the library can set up the connection and then the application can obtain the most recently used socket for special data transfers. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP, SMTP, POP3 and IMAP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.15.2 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_VERBOSE.html">CURLOPT_VERBOSE</a>, <a Class="manpage" href="./CURLOPT_HTTPPROXYTUNNEL.html">CURLOPT_HTTPPROXYTUNNEL</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.pdf b/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.pdf
new file mode 100644 (file)
index 0000000..969689b
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3
new file mode 100644 (file)
index 0000000..ebc4d77
--- /dev/null
@@ -0,0 +1,82 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_CONV_FROM_NETWORK_FUNCTION 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_CONV_FROM_NETWORK_FUNCTION \- convert data from network to host encoding
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode conv_callback(char *ptr, size_t length);
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONV_FROM_NETWORK_FUNCTION,
+                          conv_callback);
+.SH DESCRIPTION
+Pass a pointer to your callback function, which should match the prototype
+shown above.
+
+Applies to non-ASCII platforms. \fIcurl_version_info(3)\fP will return the
+CURL_VERSION_CONV feature bit set if this option is provided.
+
+The data to be converted is in a buffer pointed to by the \fIptr\fP parameter.
+The amount of data to convert is indicated by the \fIlength\fP parameter.  The
+converted data overlays the input data in the buffer pointed to by the ptr
+parameter. \fICURLE_OK\fP must be returned upon successful conversion.  A
+CURLcode return value defined by curl.h, such as \fICURLE_CONV_FAILED\fP,
+should be returned if an error was encountered.
+
+\fBCURLOPT_CONV_FROM_NETWORK_FUNCTION\fP converts to host encoding from the
+network encoding.  It is used when commands or ASCII data are received over
+the network.
+
+If you set a callback pointer to NULL, or don't set it at all, the built-in
+libcurl iconv functions will be used.  If HAVE_ICONV was not defined when
+libcurl was built, and no callback has been established, conversion will
+return the CURLE_CONV_REQD error code.
+
+If HAVE_ICONV is defined, CURL_ICONV_CODESET_OF_HOST must also be defined.
+For example:
+
+ \&#define CURL_ICONV_CODESET_OF_HOST "IBM-1047"
+
+The iconv code in libcurl will default the network and UTF8 codeset names as
+follows:
+
+ \&#define CURL_ICONV_CODESET_OF_NETWORK "ISO8859-1"
+
+ \&#define CURL_ICONV_CODESET_FOR_UTF8   "UTF-8"
+
+You will need to override these definitions if they are different on your
+system.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+FTP, SMTP, IMAP, POP3
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Available only if \fBCURL_DOES_CONVERSIONS\fP was defined when libcurl was built.
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_CONV_TO_NETWORK_FUNCTION "(3), " CURLOPT_CONV_FROM_UTF8_FUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.html b/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.html
new file mode 100644 (file)
index 0000000..dea2c03
--- /dev/null
@@ -0,0 +1,75 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_CONV_FROM_NETWORK_FUNCTION man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_CONV_FROM_NETWORK_FUNCTION - convert data from network to host encoding <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLcode conv_callback(char *ptr, size_t length);
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONV_FROM_NETWORK_FUNCTION,
+ &nbsp;                         conv_callback);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
+<p class="level0">Applies to non-ASCII platforms. <span Class="emphasis">curl_version_info(3)</span> will return the CURL_VERSION_CONV feature bit set if this option is provided. 
+<p class="level0">The data to be converted is in a buffer pointed to by the <span Class="emphasis">ptr</span> parameter. The amount of data to convert is indicated by the <span Class="emphasis">length</span> parameter.  The converted data overlays the input data in the buffer pointed to by the ptr parameter. <span Class="emphasis">CURLE_OK</span> must be returned upon successful conversion.  A CURLcode return value defined by curl.h, such as <span Class="emphasis">CURLE_CONV_FAILED</span>, should be returned if an error was encountered. 
+<p class="level0"><span Class="bold">CURLOPT_CONV_FROM_NETWORK_FUNCTION</span> converts to host encoding from the network encoding.  It is used when commands or ASCII data are received over the network. 
+<p class="level0">If you set a callback pointer to NULL, or don't set it at all, the built-in libcurl iconv functions will be used.  If HAVE_ICONV was not defined when libcurl was built, and no callback has been established, conversion will return the CURLE_CONV_REQD error code. 
+<p class="level0">If HAVE_ICONV is defined, CURL_ICONV_CODESET_OF_HOST must also be defined. For example: 
+<p class="level0">&nbsp;#define CURL_ICONV_CODESET_OF_HOST "IBM-1047" 
+<p class="level0">The iconv code in libcurl will default the network and UTF8 codeset names as follows: 
+<p class="level0">&nbsp;#define CURL_ICONV_CODESET_OF_NETWORK "ISO8859-1" 
+<p class="level0">&nbsp;#define CURL_ICONV_CODESET_FOR_UTF8   "UTF-8" 
+<p class="level0">You will need to override these definitions if they are different on your system. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">FTP, SMTP, IMAP, POP3 <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Available only if <span Class="bold">CURL_DOES_CONVERSIONS</span> was defined when libcurl was built. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_CONV_TO_NETWORK_FUNCTION.html">CURLOPT_CONV_TO_NETWORK_FUNCTION</a>, <a Class="manpage" href="./CURLOPT_CONV_FROM_UTF8_FUNCTION.html">CURLOPT_CONV_FROM_UTF8_FUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.pdf b/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.pdf
new file mode 100644 (file)
index 0000000..2b9d62c
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3
new file mode 100644 (file)
index 0000000..682e1c5
--- /dev/null
@@ -0,0 +1,81 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_CONV_FROM_UTF8_FUNCTION 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_CONV_FROM_UTF8_FUNCTION \- convert data from UTF8 to host encoding
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode conv_callback(char *ptr, size_t length);
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONV_FROM_UTF8_FUNCTION,
+                          conv_callback);
+.SH DESCRIPTION
+Pass a pointer to your callback function, which should match the prototype
+shown above.
+
+Applies to non-ASCII platforms. \fIcurl_version_info(3)\fP will return the
+CURL_VERSION_CONV feature bit set if this option is provided.
+
+The data to be converted is in a buffer pointed to by the \fIptr\fP parameter.
+The amount of data to convert is indicated by the \fIlength\fP parameter.  The
+converted data overlays the input data in the buffer pointed to by the ptr
+parameter. \fICURLE_OK\fP must be returned upon successful conversion.  A
+CURLcode return value defined by curl.h, such as \fICURLE_CONV_FAILED\fP,
+should be returned if an error was encountered.
+
+\fBCURLOPT_CONV_FROM_UTF8_FUNCTION\fP converts to host encoding from UTF8
+encoding. It is required only for SSL processing.
+
+If you set a callback pointer to NULL, or don't set it at all, the built-in
+libcurl iconv functions will be used.  If HAVE_ICONV was not defined when
+libcurl was built, and no callback has been established, conversion will
+return the CURLE_CONV_REQD error code.
+
+If HAVE_ICONV is defined, CURL_ICONV_CODESET_OF_HOST must also be defined.
+For example:
+
+ \&#define CURL_ICONV_CODESET_OF_HOST "IBM-1047"
+
+The iconv code in libcurl will default the network and UTF8 codeset names as
+follows:
+
+ \&#define CURL_ICONV_CODESET_OF_NETWORK "ISO8859-1"
+
+ \&#define CURL_ICONV_CODESET_FOR_UTF8   "UTF-8"
+
+You will need to override these definitions if they are different on your
+system.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+TLS-based protocols.
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Available only if \fBCURL_DOES_CONVERSIONS\fP was defined when libcurl was built.
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_CONV_TO_NETWORK_FUNCTION "(3), " CURLOPT_CONV_FROM_NETWORK_FUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.html b/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.html
new file mode 100644 (file)
index 0000000..2ed2c13
--- /dev/null
@@ -0,0 +1,75 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_CONV_FROM_UTF8_FUNCTION man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_CONV_FROM_UTF8_FUNCTION - convert data from UTF8 to host encoding <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLcode conv_callback(char *ptr, size_t length);
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONV_FROM_UTF8_FUNCTION,
+ &nbsp;                         conv_callback);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
+<p class="level0">Applies to non-ASCII platforms. <span Class="emphasis">curl_version_info(3)</span> will return the CURL_VERSION_CONV feature bit set if this option is provided. 
+<p class="level0">The data to be converted is in a buffer pointed to by the <span Class="emphasis">ptr</span> parameter. The amount of data to convert is indicated by the <span Class="emphasis">length</span> parameter.  The converted data overlays the input data in the buffer pointed to by the ptr parameter. <span Class="emphasis">CURLE_OK</span> must be returned upon successful conversion.  A CURLcode return value defined by curl.h, such as <span Class="emphasis">CURLE_CONV_FAILED</span>, should be returned if an error was encountered. 
+<p class="level0"><span Class="bold">CURLOPT_CONV_FROM_UTF8_FUNCTION</span> converts to host encoding from UTF8 encoding. It is required only for SSL processing. 
+<p class="level0">If you set a callback pointer to NULL, or don't set it at all, the built-in libcurl iconv functions will be used.  If HAVE_ICONV was not defined when libcurl was built, and no callback has been established, conversion will return the CURLE_CONV_REQD error code. 
+<p class="level0">If HAVE_ICONV is defined, CURL_ICONV_CODESET_OF_HOST must also be defined. For example: 
+<p class="level0">&nbsp;#define CURL_ICONV_CODESET_OF_HOST "IBM-1047" 
+<p class="level0">The iconv code in libcurl will default the network and UTF8 codeset names as follows: 
+<p class="level0">&nbsp;#define CURL_ICONV_CODESET_OF_NETWORK "ISO8859-1" 
+<p class="level0">&nbsp;#define CURL_ICONV_CODESET_FOR_UTF8   "UTF-8" 
+<p class="level0">You will need to override these definitions if they are different on your system. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">TLS-based protocols. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Available only if <span Class="bold">CURL_DOES_CONVERSIONS</span> was defined when libcurl was built. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_CONV_TO_NETWORK_FUNCTION.html">CURLOPT_CONV_TO_NETWORK_FUNCTION</a>, <a Class="manpage" href="./CURLOPT_CONV_FROM_NETWORK_FUNCTION.html">CURLOPT_CONV_FROM_NETWORK_FUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.pdf b/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.pdf
new file mode 100644 (file)
index 0000000..dfa30c3
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3
new file mode 100644 (file)
index 0000000..e8817f8
--- /dev/null
@@ -0,0 +1,82 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_CONV_TO_NETWORK_FUNCTION 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_CONV_TO_NETWORK_FUNCTION \- convert data to network from host encoding
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode conv_callback(char *ptr, size_t length);
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONV_TO_NETWORK_FUNCTION,
+                          conv_callback);
+.SH DESCRIPTION
+Pass a pointer to your callback function, which should match the prototype
+shown above.
+
+Applies to non-ASCII platforms. \fIcurl_version_info(3)\fP will return the
+CURL_VERSION_CONV feature bit set if this option is provided.
+
+The data to be converted is in a buffer pointed to by the \fIptr\fP parameter.
+The amount of data to convert is indicated by the \fIlength\fP parameter.  The
+converted data overlays the input data in the buffer pointed to by the ptr
+parameter. \fICURLE_OK\fP must be returned upon successful conversion.  A
+CURLcode return value defined by curl.h, such as \fICURLE_CONV_FAILED\fP,
+should be returned if an error was encountered.
+
+\fBCURLOPT_CONV_TO_NETWORK_FUNCTION\fP converts from host encoding to the
+network encoding.  It is used when commands or ASCII data are sent over the
+network.
+
+If you set a callback pointer to NULL, or don't set it at all, the built-in
+libcurl iconv functions will be used.  If HAVE_ICONV was not defined when
+libcurl was built, and no callback has been established, conversion will
+return the CURLE_CONV_REQD error code.
+
+If HAVE_ICONV is defined, CURL_ICONV_CODESET_OF_HOST must also be defined.
+For example:
+
+ \&#define CURL_ICONV_CODESET_OF_HOST "IBM-1047"
+
+The iconv code in libcurl will default the network and UTF8 codeset names as
+follows:
+
+ \&#define CURL_ICONV_CODESET_OF_NETWORK "ISO8859-1"
+
+ \&#define CURL_ICONV_CODESET_FOR_UTF8   "UTF-8"
+
+You will need to override these definitions if they are different on your
+system.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+FTP, SMTP, IMAP, POP3
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Available only if \fBCURL_DOES_CONVERSIONS\fP was defined when libcurl was built.
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_CONV_FROM_NETWORK_FUNCTION "(3), " CURLOPT_CONV_TO_UTF8_FUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.html b/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.html
new file mode 100644 (file)
index 0000000..40f8c2d
--- /dev/null
@@ -0,0 +1,75 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_CONV_TO_NETWORK_FUNCTION man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_CONV_TO_NETWORK_FUNCTION - convert data to network from host encoding <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLcode conv_callback(char *ptr, size_t length);
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONV_TO_NETWORK_FUNCTION,
+ &nbsp;                         conv_callback);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
+<p class="level0">Applies to non-ASCII platforms. <span Class="emphasis">curl_version_info(3)</span> will return the CURL_VERSION_CONV feature bit set if this option is provided. 
+<p class="level0">The data to be converted is in a buffer pointed to by the <span Class="emphasis">ptr</span> parameter. The amount of data to convert is indicated by the <span Class="emphasis">length</span> parameter.  The converted data overlays the input data in the buffer pointed to by the ptr parameter. <span Class="emphasis">CURLE_OK</span> must be returned upon successful conversion.  A CURLcode return value defined by curl.h, such as <span Class="emphasis">CURLE_CONV_FAILED</span>, should be returned if an error was encountered. 
+<p class="level0"><span Class="bold">CURLOPT_CONV_TO_NETWORK_FUNCTION</span> converts from host encoding to the network encoding.  It is used when commands or ASCII data are sent over the network. 
+<p class="level0">If you set a callback pointer to NULL, or don't set it at all, the built-in libcurl iconv functions will be used.  If HAVE_ICONV was not defined when libcurl was built, and no callback has been established, conversion will return the CURLE_CONV_REQD error code. 
+<p class="level0">If HAVE_ICONV is defined, CURL_ICONV_CODESET_OF_HOST must also be defined. For example: 
+<p class="level0">&nbsp;#define CURL_ICONV_CODESET_OF_HOST "IBM-1047" 
+<p class="level0">The iconv code in libcurl will default the network and UTF8 codeset names as follows: 
+<p class="level0">&nbsp;#define CURL_ICONV_CODESET_OF_NETWORK "ISO8859-1" 
+<p class="level0">&nbsp;#define CURL_ICONV_CODESET_FOR_UTF8   "UTF-8" 
+<p class="level0">You will need to override these definitions if they are different on your system. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">FTP, SMTP, IMAP, POP3 <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Available only if <span Class="bold">CURL_DOES_CONVERSIONS</span> was defined when libcurl was built. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_CONV_FROM_NETWORK_FUNCTION.html">CURLOPT_CONV_FROM_NETWORK_FUNCTION</a>, <span Class="manpage">  CURLOPT_CONV_TO_UTF8_FUNCTION (3)</span> <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.pdf b/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.pdf
new file mode 100644 (file)
index 0000000..18cf2d5
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_COOKIE.3 b/docs/libcurl/opts/CURLOPT_COOKIE.3
new file mode 100644 (file)
index 0000000..379296a
--- /dev/null
@@ -0,0 +1,62 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_COOKIE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_COOKIE \- set contents of HTTP Cookie header
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIE, char *cookie);
+.SH DESCRIPTION
+Pass a pointer to a zero terminated string as parameter. It will be used to
+set a cookie in the HTTP request. The format of the string should be
+NAME=CONTENTS, where NAME is the cookie name and CONTENTS is what the cookie
+should contain.
+
+If you need to set multiple cookies, set them all using a single option
+concatenated like this: "name1=content1; name2=content2;" etc.
+
+This option sets the cookie header explicitly in the outgoing request(s). If
+multiple requests are done due to authentication, followed redirections or
+similar, they will all get this cookie passed on.
+
+Using this option multiple times will only make the latest string override the
+previous ones.
+
+This option will not enable the cookie engine. Use \fICURLOPT_COOKIEFILE(3)\fP
+or \fICURLOPT_COOKIEJAR(3)\fP to enable parsing and sending cookies
+automatically.
+.SH DEFAULT
+NULL, no cookies
+.SH PROTOCOLS
+HTTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+If HTTP is enabled
+.SH RETURN VALUE
+Returns CURLE_OK if HTTP is enabled, CURLE_UNKNOWN_OPTION if not, or
+CURLE_OUT_OF_MEMORY if there was insufficient heap space.
+.SH "SEE ALSO"
+.BR CURLOPT_COOKIEFILE "(3), " CURLOPT_COOKIEJAR "(3), "  CURLOPT_COOKIELIST "(3), "
+.BR CURLOPT_HTTPHEADER "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_COOKIE.html b/docs/libcurl/opts/CURLOPT_COOKIE.html
new file mode 100644 (file)
index 0000000..df42e64
--- /dev/null
@@ -0,0 +1,64 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_COOKIE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_COOKIE - set contents of HTTP Cookie header <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIE, char *cookie); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to a zero terminated string as parameter. It will be used to set a cookie in the HTTP request. The format of the string should be NAME=CONTENTS, where NAME is the cookie name and CONTENTS is what the cookie should contain. 
+<p class="level0">If you need to set multiple cookies, set them all using a single option concatenated like this: "name1=content1; name2=content2;" etc. 
+<p class="level0">This option sets the cookie header explicitly in the outgoing request(s). If multiple requests are done due to authentication, followed redirections or similar, they will all get this cookie passed on. 
+<p class="level0">Using this option multiple times will only make the latest string override the previous ones. 
+<p class="level0">This option will not enable the cookie engine. Use <a Class="emphasis" href="./CURLOPT_COOKIEFILE.html">CURLOPT_COOKIEFILE</a> or <a Class="emphasis" href="./CURLOPT_COOKIEJAR.html">CURLOPT_COOKIEJAR</a> to enable parsing and sending cookies automatically. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL, no cookies <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">If HTTP is enabled <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if HTTP is enabled, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_COOKIEFILE.html">CURLOPT_COOKIEFILE</a>, <a Class="manpage" href="./CURLOPT_COOKIEJAR.html">CURLOPT_COOKIEJAR</a>, <a Class="manpage" href="./CURLOPT_COOKIELIST.html">CURLOPT_COOKIELIST</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_COOKIE.pdf b/docs/libcurl/opts/CURLOPT_COOKIE.pdf
new file mode 100644 (file)
index 0000000..3a7edbc
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_COOKIE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_COOKIEFILE.3 b/docs/libcurl/opts/CURLOPT_COOKIEFILE.3
new file mode 100644 (file)
index 0000000..a4c3b02
--- /dev/null
@@ -0,0 +1,59 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.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 <curl/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-style headers 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.
+
+This option only \fBreads\fP cookies. To make libcurl write cookies to file,
+see \fICURLOPT_COOKIEJAR(3)\fP.
+
+If you use this option multiple times, you just add more files to read.
+Subsequent files will add more cookies.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+HTTP
+.SH EXAMPLE
+TODO
+.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 --git a/docs/libcurl/opts/CURLOPT_COOKIEFILE.html b/docs/libcurl/opts/CURLOPT_COOKIEFILE.html
new file mode 100644 (file)
index 0000000..10539bc
--- /dev/null
@@ -0,0 +1,64 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_COOKIEFILE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_COOKIEFILE - file name to read cookies from <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIEFILE, char *filename); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">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-style headers dumped to a file. 
+<p class="level0">It also enables the cookie engine, making libcurl parse and send cookies on subsequent requests with this handle. 
+<p class="level0">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. 
+<p class="level0">This option only <span Class="bold">reads</span> cookies. To make libcurl write cookies to file, see <a Class="emphasis" href="./CURLOPT_COOKIEJAR.html">CURLOPT_COOKIEJAR</a>. 
+<p class="level0">If you use this option multiple times, you just add more files to read. Subsequent files will add more cookies. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">As long as HTTP is supported <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_COOKIE.html">CURLOPT_COOKIE</a>, <a Class="manpage" href="./CURLOPT_COOKIEJAR.html">CURLOPT_COOKIEJAR</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_COOKIEFILE.pdf b/docs/libcurl/opts/CURLOPT_COOKIEFILE.pdf
new file mode 100644 (file)
index 0000000..9e0064c
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_COOKIEFILE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_COOKIEJAR.3 b/docs/libcurl/opts/CURLOPT_COOKIEJAR.3
new file mode 100644 (file)
index 0000000..936d4d8
--- /dev/null
@@ -0,0 +1,58 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_COOKIEJAR 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_COOKIEJAR \- file name to store cookies to
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIEJAR, char *filename);
+.SH DESCRIPTION
+Pass a \fIfilename\fP as char *, zero terminated. This will make libcurl write
+all internally known cookies to the specified file when
+\fIcurl_easy_cleanup(3)\fP is called. If no cookies are known, no file will be
+created. Specify "-" as filename to instead have the cookies written to
+stdout. Using this option also enables cookies for this session, so if you for
+example follow a location it will make matching cookies get sent accordingly.
+
+Note that libcurl doesn't read any cookies from the cookie jar. If you want to
+read cookies from a file, use \fICURLOPT_COOKIEFILE(3)\fP.
+
+If the cookie jar file can't be created or written to (when the
+\fIcurl_easy_cleanup(3)\fP is called), libcurl will not and cannot report an
+error for this. Using \fICURLOPT_VERBOSE(3)\fP or
+\fICURLOPT_DEBUGFUNCTION(3)\fP will get a warning to display, but that is the
+only visible feedback you get about this possibly lethal situation.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+HTTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Along with HTTP
+.SH RETURN VALUE
+Returns CURLE_OK if HTTP is supported, CURLE_UNKNOWN_OPTION if not, or
+CURLE_OUT_OF_MEMORY if there was insufficient heap space.
+.SH "SEE ALSO"
+.BR CURLOPT_COOKIEFILE "(3), " CURLOPT_COOKIE "(3), " CURLOPT_COOKIELIST "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_COOKIEJAR.html b/docs/libcurl/opts/CURLOPT_COOKIEJAR.html
new file mode 100644 (file)
index 0000000..a4f45bf
--- /dev/null
@@ -0,0 +1,62 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_COOKIEJAR man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_COOKIEJAR - file name to store cookies to <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIEJAR, char *filename); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a <span Class="emphasis">filename</span> as char *, zero terminated. This will make libcurl write all internally known cookies to the specified file when <span Class="emphasis">curl_easy_cleanup(3)</span> is called. If no cookies are known, no file will be created. Specify "-" as filename to instead have the cookies written to stdout. Using this option also enables cookies for this session, so if you for example follow a location it will make matching cookies get sent accordingly. 
+<p class="level0">Note that libcurl doesn't read any cookies from the cookie jar. If you want to read cookies from a file, use <a Class="emphasis" href="./CURLOPT_COOKIEFILE.html">CURLOPT_COOKIEFILE</a>. 
+<p class="level0">If the cookie jar file can't be created or written to (when the <span Class="emphasis">curl_easy_cleanup(3)</span> is called), libcurl will not and cannot report an error for this. Using <a Class="emphasis" href="./CURLOPT_VERBOSE.html">CURLOPT_VERBOSE</a> or <a Class="emphasis" href="./CURLOPT_DEBUGFUNCTION.html">CURLOPT_DEBUGFUNCTION</a> will get a warning to display, but that is the only visible feedback you get about this possibly lethal situation. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Along with HTTP <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if HTTP is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_COOKIEFILE.html">CURLOPT_COOKIEFILE</a>, <a Class="manpage" href="./CURLOPT_COOKIE.html">CURLOPT_COOKIE</a>, <a Class="manpage" href="./CURLOPT_COOKIELIST.html">CURLOPT_COOKIELIST</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_COOKIEJAR.pdf b/docs/libcurl/opts/CURLOPT_COOKIEJAR.pdf
new file mode 100644 (file)
index 0000000..c0626bd
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_COOKIEJAR.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_COOKIELIST.3 b/docs/libcurl/opts/CURLOPT_COOKIELIST.3
new file mode 100644 (file)
index 0000000..815def1
--- /dev/null
@@ -0,0 +1,71 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_COOKIELIST 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_COOKIELIST \- add to or manipulate cookies held in memory
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIELIST,
+                          char *cookie);
+.SH DESCRIPTION
+Pass a char * to a \fIcookie\fP string.
+
+Such a cookie can be either a single line in Netscape / Mozilla format or just
+regular HTTP-style header (Set-Cookie: ...) format. This will also enable the
+cookie engine. This adds that single cookie to the internal cookie store.
+
+Additionally, there are commands available that perform actions if you pass in
+these exact strings:
+.IP ALL
+erases all cookies held in memory
+
+.IP SESS
+erases all session cookies held in memory
+
+.IP FLUSH
+writes all known cookies to the file specified by \fICURLOPT_COOKIEJAR(3)\fP
+
+.IP RELOAD
+loads all cookies from the files specified by \fICURLOPT_COOKIEFILE(3)\fP
+
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+HTTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+ALL was added in 7.14.1
+
+SESS was added in 7.15.4
+
+FLUSH was added in 7.17.1
+
+RELOAD was added in 7.39.0
+.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 CURLOPT_COOKIEFILE "(3), " CURLOPT_COOKIEJAR "(3), "  CURLOPT_COOKIE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_COOKIELIST.html b/docs/libcurl/opts/CURLOPT_COOKIELIST.html
new file mode 100644 (file)
index 0000000..382eb60
--- /dev/null
@@ -0,0 +1,81 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_COOKIELIST man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_COOKIELIST - add to or manipulate cookies held in memory <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIELIST,
+ &nbsp;                         char *cookie);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * to a <span Class="emphasis">cookie</span> string. 
+<p class="level0">Such a cookie can be either a single line in Netscape / Mozilla format or just regular HTTP-style header (Set-Cookie: ...) format. This will also enable the cookie engine. This adds that single cookie to the internal cookie store. 
+<p class="level0">Additionally, there are commands available that perform actions if you pass in these exact strings: 
+<p class="level0"><a name="ALL"></a><span class="nroffip">ALL</span> 
+<p class="level1">erases all cookies held in memory 
+<p class="level1">
+<p class="level0"><a name="SESS"></a><span class="nroffip">SESS</span> 
+<p class="level1">erases all session cookies held in memory 
+<p class="level1">
+<p class="level0"><a name="FLUSH"></a><span class="nroffip">FLUSH</span> 
+<p class="level1">writes all known cookies to the file specified by <a Class="emphasis" href="./CURLOPT_COOKIEJAR.html">CURLOPT_COOKIEJAR</a> 
+<p class="level1">
+<p class="level0"><a name="RELOAD"></a><span class="nroffip">RELOAD</span> 
+<p class="level1">loads all cookies from the files specified by <a Class="emphasis" href="./CURLOPT_COOKIEFILE.html">CURLOPT_COOKIEFILE</a> 
+<p class="level1"><a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">ALL was added in 7.14.1 
+<p class="level0">SESS was added in 7.15.4 
+<p class="level0">FLUSH was added in 7.17.1 
+<p class="level0">RELOAD was added in 7.39.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_COOKIEFILE.html">CURLOPT_COOKIEFILE</a>, <a Class="manpage" href="./CURLOPT_COOKIEJAR.html">CURLOPT_COOKIEJAR</a>, <a Class="manpage" href="./CURLOPT_COOKIE.html">CURLOPT_COOKIE</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_COOKIELIST.pdf b/docs/libcurl/opts/CURLOPT_COOKIELIST.pdf
new file mode 100644 (file)
index 0000000..896acd6
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_COOKIELIST.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_COOKIESESSION.3 b/docs/libcurl/opts/CURLOPT_COOKIESESSION.3
new file mode 100644 (file)
index 0000000..0d56076
--- /dev/null
@@ -0,0 +1,51 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_COOKIESESSION 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_COOKIESESSION \- start a new cookie session
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIESESSION, long init);
+.SH DESCRIPTION
+Pass a long set to 1 to mark this as a new cookie "session". It will force
+libcurl to ignore all cookies it is about to load that are "session cookies"
+from the previous session. By default, libcurl always stores and loads all
+cookies, independent if they are session cookies or not. Session cookies are
+cookies without expiry date and they are meant to be alive and existing for
+this "session" only.
+
+A "session" is usually defined in browser land for as long as you have your
+browser up, more or less.
+.SH DEFAULT
+0
+.SH PROTOCOLS
+HTTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Along with HTTP
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_COOKIEFILE "(3), " CURLOPT_COOKIE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_COOKIESESSION.html b/docs/libcurl/opts/CURLOPT_COOKIESESSION.html
new file mode 100644 (file)
index 0000000..4231e9d
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_COOKIESESSION man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_COOKIESESSION - start a new cookie session <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIESESSION, long init); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long set to 1 to mark this as a new cookie "session". It will force libcurl to ignore all cookies it is about to load that are "session cookies" from the previous session. By default, libcurl always stores and loads all cookies, independent if they are session cookies or not. Session cookies are cookies without expiry date and they are meant to be alive and existing for this "session" only. 
+<p class="level0">A "session" is usually defined in browser land for as long as you have your browser up, more or less. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Along with HTTP <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_COOKIEFILE.html">CURLOPT_COOKIEFILE</a>, <a Class="manpage" href="./CURLOPT_COOKIE.html">CURLOPT_COOKIE</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_COOKIESESSION.pdf b/docs/libcurl/opts/CURLOPT_COOKIESESSION.pdf
new file mode 100644 (file)
index 0000000..92a3c9f
--- /dev/null
@@ -0,0 +1,106 @@
+%PDF-1.4
+%Çì\8f¢
+5 0 obj
+<</Length 6 0 R/Filter /FlateDecode>>
+stream
+x\9c\85VÛnÛF\10}çW\fÜ\87\92\85´á.o»hQ@v\18T\89\12\1d\v\83\96h\9b\rE:¼ÄÑ?ôWú\8f\9d]ÞDY\81!\80´¹»3ç\9c93äW0 \ 5SþÚûf§½YyðPj&<h_5ª\16¡½mvp\1eâ\ 6.\1f\84÷Zs\86\82ÇÀ\13\16á\ 2Â\9dfSby\10>k×úÅÕj\11,ÃÛ\8b ø0÷×þz=\ f.otëÆ\80M]¤·qTîo˸Ê\9f*cÊ\1c\93\98¦§ã?I\9e\95ðãÃÆßá{mj\12F1á\ 6ñ\bÄC\84#!Y.\84\vM¿\9c\19?#\ 5\ eq\84\850í¦\7fô\8dð\9f\ 3\ 2Ì$¶éÁ\942¹lJÔ§AÃ\7fPVQQA\ 4Y,c0â¨è\9eC,ÞF\7fÞÈ\95&«M¨k²v!Ï¿$1\94qY"³\ 6Á\ 1ä)c\88ÑF\14.ájÿúóe°\Ï×c°H­\ 5ªÿ\94d\9b´ÞÆð\9bÔñ\8d¼\90Çß\15.[ñ\97$69n8ÖùF-Á/\8fQ¶MãÉi\95'\90æÙ\ 3$YRÝ\18¿¢\92
+H\87õ­¿¾XÍ\97!\1e\93ù±,Ôiªr\ 2÷2ê\15\12\84;\8d<&ñ\84R¾,Q^\95\19±B\95£³ð²\8b\8a/P=&¸Xöò[\84\89¦º6áì¤þb\bÏ\9bøM\19ÎÚ:\9c\11\98\9c¤)ÜçÅ&\86\93\9cÉC\96\171D¸¶Q§JH*HJÅ\90z\82¸¬ãDÑ\86Nc÷è.¯\15î4\8f\b9B»\14CÂ.Ô\19Ü\17ù\ e×cx*b\ 3\8b\8f¶·ôoI^\97\9dI\b\9cïa\eß\eT6\85àzT§Õ¤\87\18¥]\ fPÉÖr]b9\9d
+\83Æ\94\12gpá\1e£WH\vU̶\8a\89åyDÐÞþÄ´-%\94Ä_\1e²\9f \17¶ñS\8c\97\f\97àÛ.\90G¤Þ\16\11=\84ý\b\82à¬ë\90¢ï\82^×¼\80\b¬\8f\9eK庿\9f\93êQJÛäÄ\92\v¯\røý))ö\8a\8b\8dJqÎǽ¼\8dªX²=À+AÙ\1c»S\88Óh-q\80v\17G\99\9dtC2r¸+\bå&í\ÖH÷\r÷\rá\¬~Gc\12\ 4\13\e8\94Lj»ú÷¤¬\12ô;\1a°±xoNȳto¸­7\88*w\8b~Jm\9c\17h@Ùë\bsv6$Ä!Üd»ÖûH\18¶.k¬¦tÔ¿Y¼ÅbÂ]\91\e\f\85\14ÌÓ\9f˸\80TÊ$q`\97©\1eÄû>¯á1ê­¦²3Ç!Ì{Az\7fH\1a\e\8e\8fHçuÑgä\8eÝd¬\9f\93m\86IS\ 4Û\90<\1a5\8c\12>\1e7ïÚ"86Wxp/µ[\8dõÙUÓ¢R¶vú3×êܲ\b{\94Ãx\92Ì<ϳì~J\99/Gôhä-W-\ 4Ûâí°a®×¶Ù\94\11ÓiæM\10BÐ'd\16ñL·{\11]\ 4\8b£é\8e\98\ 5\82\18\11\86ËW\80ø\7fÍ>.\17~çJþù\e\ 6\87\16¡]\9f¾\r\1cÎ_¼I§¶\90;ûlRT[ñ\9a}\82ÙÀË$®C»\193_ÌÎç\8byøyL\ eË`ÙÇÍ9S6\93½\r¯s½ÖW~xµº\84O\ 6µÐE.Õg\8b+¿µÌ      Ê«¸ª\8bö3¿\r>¼"åÚ÷a¶X\aö£xã\17å»ùâèS\82R>Ì`õ\992\19ÇÂTî0\8cÇáÆ¡\84\9c\ eýÎ!Ö\94á\9cÇçSËñ\88Û¨Ò½\11<üè"¦1¥\8e#lâèÔ\83÷u\ 6\fÇ\8cÒÈî­Ge(?ÔþÄßÿ4\b\8b=endstream
+endobj
+6 0 obj
+1141
+endobj
+4 0 obj
+<</Type/Page/MediaBox [0 0 595 842]
+/Rotate 0/Parent 3 0 R
+/Resources<</ProcSet[/PDF /Text]
+/ExtGState 10 0 R
+/Font 11 0 R
+>>
+/Contents 5 0 R
+>>
+endobj
+3 0 obj
+<< /Type /Pages /Kids [
+4 0 R
+] /Count 1
+>>
+endobj
+1 0 obj
+<</Type /Catalog /Pages 3 0 R
+/Metadata 13 0 R
+>>
+endobj
+7 0 obj
+<</Type/ExtGState
+/OPM 1>>endobj
+10 0 obj
+<</R7
+7 0 R>>
+endobj
+11 0 obj
+<</R9
+9 0 R/R8
+8 0 R>>
+endobj
+9 0 obj
+<</BaseFont/Times-Bold/Type/Font
+/Subtype/Type1>>
+endobj
+8 0 obj
+<</BaseFont/Times-Roman/Type/Font
+/Encoding 12 0 R/Subtype/Type1>>
+endobj
+12 0 obj
+<</Type/Encoding/Differences[
+140/fi
+173/minus]>>
+endobj
+13 0 obj
+<</Type/Metadata
+/Subtype/XML/Length 1346>>stream
+<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
+<?adobe-xap-filters esc="CRLF"?>
+<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
+<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
+<rdf:Description rdf:about='uuid:643f96ca-cf2b-11ef-0000-734885418920' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.06'/>
+<rdf:Description rdf:about='uuid:643f96ca-cf2b-11ef-0000-734885418920' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-01-08T09:17:53+01:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-01-08T09:17:53+01:00</xmp:CreateDate>
+<xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
+<rdf:Description rdf:about='uuid:643f96ca-cf2b-11ef-0000-734885418920' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:643f96ca-cf2b-11ef-0000-734885418920'/>
+<rdf:Description rdf:about='uuid:643f96ca-cf2b-11ef-0000-734885418920' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+</rdf:RDF>
+</x:xmpmeta>
+                                                                        
+                                                                        
+<?xpacket end='w'?>
+endstream
+endobj
+2 0 obj
+<</Producer(GPL Ghostscript 9.06)
+/CreationDate(D:20150108091753+01'00')
+/ModDate(D:20150108091753+01'00')
+/Creator(groff version 1.22.3)>>endobj
+xref
+0 14
+0000000000 65535 f 
+0000001465 00000 n 
+0000003276 00000 n 
+0000001406 00000 n 
+0000001246 00000 n 
+0000000015 00000 n 
+0000001226 00000 n 
+0000001530 00000 n 
+0000001705 00000 n 
+0000001640 00000 n 
+0000001571 00000 n 
+0000001601 00000 n 
+0000001787 00000 n 
+0000001853 00000 n 
+trailer
+<< /Size 14 /Root 1 0 R /Info 2 0 R
+/ID [<92DA738D7286633AF0F76D4DE60DE35D><92DA738D7286633AF0F76D4DE60DE35D>]
+>>
+startxref
+3430
+%%EOF
diff --git a/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3 b/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3
new file mode 100644 (file)
index 0000000..d35aebd
--- /dev/null
@@ -0,0 +1,70 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_COPYPOSTFIELDS 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_COPYPOSTFIELDS \- have libcurl copy data to POST
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COPYPOSTFIELDS, char *data);
+.SH DESCRIPTION
+Pass a char * as parameter, which should be the full \fIdata\fP to post in a
+HTTP POST operation. It behaves as the \fICURLOPT_POSTFIELDS(3)\fP option, but
+the original data is instead copied by the library, allowing the application
+to overwrite the original data after setting this option.
+
+Because data are copied, care must be taken when using this option in
+conjunction with \fICURLOPT_POSTFIELDSIZE(3)\fP or
+\fICURLOPT_POSTFIELDSIZE_LARGE(3)\fP: If the size has not been set prior to
+\fICURLOPT_COPYPOSTFIELDS(3)\fP, the data is assumed to be a zero terminated
+string; else the stored size informs the library about the byte count to
+copy. In any case, the size must not be changed after
+\fICURLOPT_COPYPOSTFIELDS(3)\fP, unless another \fICURLOPT_POSTFIELDS(3)\fP or
+\fICURLOPT_COPYPOSTFIELDS(3)\fP option is issued.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  char local_buffer[1024]="data to send";
+  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+  /* size of the data to copy from the buffer and send in the request */
+  curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 12L);
+
+  /* send data from the local stack */
+  curl_easy_setopt(curl, CURLOPT_COPYPOSTFIELDS, local_buffer);
+
+  curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.17.1
+.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 CURLOPT_POSTFIELDS "(3), " CURLOPT_POSTFIELDSIZE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.html b/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.html
new file mode 100644 (file)
index 0000000..f2b7a0a
--- /dev/null
@@ -0,0 +1,74 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_COPYPOSTFIELDS man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_COPYPOSTFIELDS - have libcurl copy data to POST <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COPYPOSTFIELDS, char *data); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * as parameter, which should be the full <span Class="emphasis">data</span> to post in a HTTP POST operation. It behaves as the <a Class="emphasis" href="./CURLOPT_POSTFIELDS.html">CURLOPT_POSTFIELDS</a> option, but the original data is instead copied by the library, allowing the application to overwrite the original data after setting this option. 
+<p class="level0">Because data are copied, care must be taken when using this option in conjunction with <a Class="emphasis" href="./CURLOPT_POSTFIELDSIZE.html">CURLOPT_POSTFIELDSIZE</a> or <a Class="emphasis" href="./CURLOPT_POSTFIELDSIZE_LARGE.html">CURLOPT_POSTFIELDSIZE_LARGE</a>: If the size has not been set prior to <a Class="emphasis" href="./CURLOPT_COPYPOSTFIELDS.html">CURLOPT_COPYPOSTFIELDS</a>, the data is assumed to be a zero terminated string; else the stored size informs the library about the byte count to copy. In any case, the size must not be changed after <a Class="emphasis" href="./CURLOPT_COPYPOSTFIELDS.html">CURLOPT_COPYPOSTFIELDS</a>, unless another <a Class="emphasis" href="./CURLOPT_POSTFIELDS.html">CURLOPT_POSTFIELDS</a> or <a Class="emphasis" href="./CURLOPT_COPYPOSTFIELDS.html">CURLOPT_COPYPOSTFIELDS</a> option is issued. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP(S) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre>
+<p class="level0">CURL *curl = curl_easy_init();
+ if(curl) {
+ &nbsp; char local_buffer[1024]="data to send";
+ &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+ <p class="level0">&nbsp; /* size of the data to copy from the buffer and send in the request */
+ &nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 12L);
+ <p class="level0">&nbsp; /* send data from the local stack */
+ &nbsp; curl_easy_setopt(curl, CURLOPT_COPYPOSTFIELDS, local_buffer);
+ <p class="level0">&nbsp; curl_easy_perform(curl);
+ }
+ </pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.17.1 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_POSTFIELDS.html">CURLOPT_POSTFIELDS</a>, <a Class="manpage" href="./CURLOPT_POSTFIELDSIZE.html">CURLOPT_POSTFIELDSIZE</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.pdf b/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.pdf
new file mode 100644 (file)
index 0000000..f376e17
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_CRLF.3 b/docs/libcurl/opts/CURLOPT_CRLF.3
new file mode 100644 (file)
index 0000000..32d8b79
--- /dev/null
@@ -0,0 +1,47 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_CRLF 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_CRLF \- enable/disable CRLF conversion
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CRLF, long conv);
+.SH DESCRIPTION
+Pass a long. If the value is set to 1 (one), libcurl converts Unix newlines to
+CRLF newlines on transfers. Disable this option again by setting the value to
+0 (zero).
+
+This is a legacy option of questionable use.
+.SH DEFAULT
+0
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+SMTP since 7.40.0, other protocols since they were introduced
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_CONV_FROM_NETWORK_FUNCTION "(3), " CURLOPT_CONV_TO_NETWORK_FUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_CRLF.html b/docs/libcurl/opts/CURLOPT_CRLF.html
new file mode 100644 (file)
index 0000000..c3f7e9b
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_CRLF man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_CRLF - enable/disable CRLF conversion <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CRLF, long conv); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long. If the value is set to 1 (one), libcurl converts Unix newlines to CRLF newlines on transfers. Disable this option again by setting the value to 0 (zero). 
+<p class="level0">This is a legacy option of questionable use. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">SMTP since 7.40.0, other protocols since they were introduced <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_CONV_FROM_NETWORK_FUNCTION.html">CURLOPT_CONV_FROM_NETWORK_FUNCTION</a>, <a Class="manpage" href="./CURLOPT_CONV_TO_NETWORK_FUNCTION.html">CURLOPT_CONV_TO_NETWORK_FUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_CRLF.pdf b/docs/libcurl/opts/CURLOPT_CRLF.pdf
new file mode 100644 (file)
index 0000000..767bc09
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_CRLF.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_CRLFILE.3 b/docs/libcurl/opts/CURLOPT_CRLFILE.3
new file mode 100644 (file)
index 0000000..adc0e99
--- /dev/null
@@ -0,0 +1,60 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_CRLFILE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_CRLFILE \- specify a Certificate Revocation List file
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CRLFILE, char *file);
+.SH DESCRIPTION
+Pass a char * to a zero terminated string naming a \fIfile\fP with the
+concatenation of CRL (in PEM format) to use in the certificate validation that
+occurs during the SSL exchange.
+
+When curl is built to use NSS or GnuTLS, there is no way to influence the use
+of CRL passed to help in the verification process. When libcurl is built with
+OpenSSL support, X509_V_FLAG_CRL_CHECK and X509_V_FLAG_CRL_CHECK_ALL are both
+set, requiring CRL check against all the elements of the certificate chain if
+a CRL file is passed.
+
+This option makes sense only when used in combination with the
+\fICURLOPT_SSL_VERIFYPEER(3)\fP option.
+
+A specific error code (\fICURLE_SSL_CRL_BADFILE\fP) is defined with the
+option. It is returned when the SSL exchange fails because the CRL file cannot
+be loaded.  A failure in certificate verification due to a revocation
+information found in the CRL does not trigger this specific error.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+All TLS-based protocols
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.19.0
+.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 CURLOPT_SSL_VERIFYPEER "(3), " CURLOPT_SSL_VERIFYHOST "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_CRLFILE.html b/docs/libcurl/opts/CURLOPT_CRLFILE.html
new file mode 100644 (file)
index 0000000..a92de84
--- /dev/null
@@ -0,0 +1,63 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_CRLFILE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_CRLFILE - specify a Certificate Revocation List file <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CRLFILE, char *file); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * to a zero terminated string naming a <span Class="emphasis">file</span> with the concatenation of CRL (in PEM format) to use in the certificate validation that occurs during the SSL exchange. 
+<p class="level0">When curl is built to use NSS or GnuTLS, there is no way to influence the use of CRL passed to help in the verification process. When libcurl is built with OpenSSL support, X509_V_FLAG_CRL_CHECK and X509_V_FLAG_CRL_CHECK_ALL are both set, requiring CRL check against all the elements of the certificate chain if a CRL file is passed. 
+<p class="level0">This option makes sense only when used in combination with the <a Class="emphasis" href="./CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a> option. 
+<p class="level0">A specific error code (<span Class="emphasis">CURLE_SSL_CRL_BADFILE</span>) is defined with the option. It is returned when the SSL exchange fails because the CRL file cannot be loaded.  A failure in certificate verification due to a revocation information found in the CRL does not trigger this specific error. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All TLS-based protocols <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.19.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a>, <a Class="manpage" href="./CURLOPT_SSL_VERIFYHOST.html">CURLOPT_SSL_VERIFYHOST</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_CRLFILE.pdf b/docs/libcurl/opts/CURLOPT_CRLFILE.pdf
new file mode 100644 (file)
index 0000000..6ecefbc
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_CRLFILE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3 b/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3
new file mode 100644 (file)
index 0000000..fd33118
--- /dev/null
@@ -0,0 +1,95 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_CUSTOMREQUEST 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_CUSTOMREQUEST \- custom string for request
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CUSTOMREQUEST, char *request);
+.SH DESCRIPTION
+Pass a pointer to a zero terminated string as parameter.
+
+When you change the request method by setting \fBCURLOPT_CUSTOMREQUEST(3)\fP
+to something, you don't actually change how libcurl behaves or acts in regards
+to the particular request method, it will only change the actual string sent
+in the request.
+
+Restore to the internal default by setting this to NULL.
+
+This option can be used to specify the request:
+.IP HTTP
+Instead of GET or HEAD when performing HTTP based requests. This is
+particularly useful, for example, for performing a HTTP DELETE request.
+
+For example:
+
+When you tell libcurl to do a HEAD request, but then specify a GET though a
+custom request libcurl will still act as if it sent a HEAD. To switch to a
+proper HEAD use \fICURLOPT_NOBODY(3)\fP, to switch to a proper POST use
+\fICURLOPT_POST(3)\fP or \fICURLOPT_POSTFIELDS(3)\fP and to switch to a proper
+GET use \fICURLOPT_HTTPGET(3)\fP.
+
+Many people have wrongly used this option to replace the entire request with
+their own, including multiple headers and POST contents. While that might work
+in many cases, it will cause libcurl to send invalid requests and it could
+possibly confuse the remote server badly. Use \fICURLOPT_POST(3)\fP and
+\fICURLOPT_POSTFIELDS(3)\fP to set POST data. Use \fICURLOPT_HTTPHEADER(3)\fP
+to replace or extend the set of headers sent by libcurl. Use
+\fICURLOPT_HTTP_VERSION(3)\fP to change HTTP version.
+
+.IP FTP
+Instead of LIST and NLST when performing FTP directory listings.
+.IP IMAP
+Instead of LIST when issuing IMAP based requests.
+.IP POP3
+Instead of LIST and RETR when issuing POP3 based requests.
+
+For example:
+
+When you tell libcurl to use a custom request it will behave like a LIST or
+RETR command was sent where it expects data to be returned by the server. As
+such \fICURLOPT_NOBODY(3)\fP should be used when specifying commands such as
+DELE and NOOP for example.
+.IP SMTP
+Instead of a HELP or VRFY when issuing SMTP based requests.
+
+For example:
+
+Normally a multiline response is returned which can be used, in conjunction
+with \fICURLOPT_MAIL_RCPT(3)\fP, to specify an EXPN request. If the
+\fICURLOPT_NOBODY(3)\fP option is specified then the request can be used to
+issue NOOP and RSET commands.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+HTTP, FTP, IMAP, POP3 and SMTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+IMAP is supported since 7.30.0, POP3 since 7.26.0 and SMTP since 7.34.0.
+.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 CURLOPT_HTTPHEADER "(3), " CURLOPT_NOBODY "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.html b/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.html
new file mode 100644 (file)
index 0000000..c6e5124
--- /dev/null
@@ -0,0 +1,81 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_CUSTOMREQUEST man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_CUSTOMREQUEST - custom string for request <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CUSTOMREQUEST, char *request); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to a zero terminated string as parameter. 
+<p class="level0">When you change the request method by setting <a Class="bold" href="./CURLOPT_CUSTOMREQUEST.html">CURLOPT_CUSTOMREQUEST</a> to something, you don't actually change how libcurl behaves or acts in regards to the particular request method, it will only change the actual string sent in the request. 
+<p class="level0">Restore to the internal default by setting this to NULL. 
+<p class="level0">This option can be used to specify the request: 
+<p class="level0"><a name="HTTP"></a><span class="nroffip">HTTP</span> 
+<p class="level1">Instead of GET or HEAD when performing HTTP based requests. This is particularly useful, for example, for performing a HTTP DELETE request. 
+<p class="level1">For example: 
+<p class="level1">When you tell libcurl to do a HEAD request, but then specify a GET though a custom request libcurl will still act as if it sent a HEAD. To switch to a proper HEAD use <a Class="emphasis" href="./CURLOPT_NOBODY.html">CURLOPT_NOBODY</a>, to switch to a proper POST use <a Class="emphasis" href="./CURLOPT_POST.html">CURLOPT_POST</a> or <a Class="emphasis" href="./CURLOPT_POSTFIELDS.html">CURLOPT_POSTFIELDS</a> and to switch to a proper GET use <a Class="emphasis" href="./CURLOPT_HTTPGET.html">CURLOPT_HTTPGET</a>. 
+<p class="level1">Many people have wrongly used this option to replace the entire request with their own, including multiple headers and POST contents. While that might work in many cases, it will cause libcurl to send invalid requests and it could possibly confuse the remote server badly. Use <a Class="emphasis" href="./CURLOPT_POST.html">CURLOPT_POST</a> and <a Class="emphasis" href="./CURLOPT_POSTFIELDS.html">CURLOPT_POSTFIELDS</a> to set POST data. Use <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a> to replace or extend the set of headers sent by libcurl. Use <a Class="emphasis" href="./CURLOPT_HTTP_VERSION.html">CURLOPT_HTTP_VERSION</a> to change HTTP version. 
+<p class="level1">
+<p class="level0"><a name="FTP"></a><span class="nroffip">FTP</span> 
+<p class="level1">Instead of LIST and NLST when performing FTP directory listings. 
+<p class="level0"><a name="IMAP"></a><span class="nroffip">IMAP</span> 
+<p class="level1">Instead of LIST when issuing IMAP based requests. 
+<p class="level0"><a name="POP3"></a><span class="nroffip">POP3</span> 
+<p class="level1">Instead of LIST and RETR when issuing POP3 based requests. 
+<p class="level1">For example: 
+<p class="level1">When you tell libcurl to use a custom request it will behave like a LIST or RETR command was sent where it expects data to be returned by the server. As such <a Class="emphasis" href="./CURLOPT_NOBODY.html">CURLOPT_NOBODY</a> should be used when specifying commands such as DELE and NOOP for example. 
+<p class="level0"><a name="SMTP"></a><span class="nroffip">SMTP</span> 
+<p class="level1">Instead of a HELP or VRFY when issuing SMTP based requests. 
+<p class="level1">For example: 
+<p class="level1">Normally a multiline response is returned which can be used, in conjunction with <a Class="emphasis" href="./CURLOPT_MAIL_RCPT.html">CURLOPT_MAIL_RCPT</a>, to specify an EXPN request. If the <a Class="emphasis" href="./CURLOPT_NOBODY.html">CURLOPT_NOBODY</a> option is specified then the request can be used to issue NOOP and RSET commands. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP, FTP, IMAP, POP3 and SMTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">IMAP is supported since 7.30.0, POP3 since 7.26.0 and SMTP since 7.34.0. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a>, <a Class="manpage" href="./CURLOPT_NOBODY.html">CURLOPT_NOBODY</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.pdf b/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.pdf
new file mode 100644 (file)
index 0000000..f93faa3
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_DEBUGDATA.3 b/docs/libcurl/opts/CURLOPT_DEBUGDATA.3
new file mode 100644 (file)
index 0000000..ebdb0c5
--- /dev/null
@@ -0,0 +1,45 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_DEBUGDATA 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_DEBUGDATA \- custom pointer for debug callback
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DEBUGDATA, void *pointer);
+.SH DESCRIPTION
+Pass a \fIpointer\fP to whatever you want passed in to your
+\fICURLOPT_DEBUGFUNCTION(3)\fP in the last void * argument. This pointer is
+not used by libcurl, it is only passed to the callback.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+http://curl.haxx.se/libcurl/c/debug.html
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_STDERR "(3), " CURLOPT_DEBUGFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_DEBUGDATA.html b/docs/libcurl/opts/CURLOPT_DEBUGDATA.html
new file mode 100644 (file)
index 0000000..d5a09e7
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_DEBUGDATA man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_DEBUGDATA - custom pointer for debug callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DEBUGDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a <span Class="emphasis">pointer</span> to whatever you want passed in to your <a Class="emphasis" href="./CURLOPT_DEBUGFUNCTION.html">CURLOPT_DEBUGFUNCTION</a> in the last void * argument. This pointer is not used by libcurl, it is only passed to the callback. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><a href="http://curl.haxx.se/libcurl/c/debug.html">http://curl.haxx.se/libcurl/c/debug.html</a> <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_STDERR.html">CURLOPT_STDERR</a>, <a Class="manpage" href="./CURLOPT_DEBUGFUNCTION.html">CURLOPT_DEBUGFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_DEBUGDATA.pdf b/docs/libcurl/opts/CURLOPT_DEBUGDATA.pdf
new file mode 100644 (file)
index 0000000..80247b7
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_DEBUGDATA.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3 b/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3
new file mode 100644 (file)
index 0000000..6c4721b
--- /dev/null
@@ -0,0 +1,184 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_DEBUGFUNCTION 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_DEBUGFUNCTION \- debug callback
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+typedef enum {
+  CURLINFO_TEXT = 0,
+  CURLINFO_HEADER_IN,    /* 1 */
+  CURLINFO_HEADER_OUT,   /* 2 */
+  CURLINFO_DATA_IN,      /* 3 */
+  CURLINFO_DATA_OUT,     /* 4 */
+  CURLINFO_SSL_DATA_IN,  /* 5 */
+  CURLINFO_SSL_DATA_OUT, /* 6 */
+  CURLINFO_END
+} curl_infotype;
+
+int debug_callback(CURL *handle,
+                   curl_infotype type,
+                   char *data,
+                   size_t size,
+                   void *userptr);
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DEBUGFUNCTION,
+                          debug_callback);
+.SH DESCRIPTION
+Pass a pointer to your callback function, which should match the prototype
+shown above.
+
+\fICURLOPT_DEBUGFUNCTION(3)\fP replaces the standard debug function used when
+\fICURLOPT_VERBOSE(3)\fP is in effect. This callback receives debug
+information, as specified in the \fItype\fP argument. This function must
+return 0. The \fIdata\fP pointed to by the char * passed to this function WILL
+NOT be zero terminated, but will be exactly of the \fIsize\fP as told by the
+\fIsize\fP argument.
+
+The \fIuserptr\fP argument is the pointer set with \fICURLOPT_DEBUGDATA(3)\fP.
+
+Available curl_infotype values:
+.IP CURLINFO_TEXT
+The data is informational text.
+.IP CURLINFO_HEADER_IN
+The data is header (or header-like) data received from the peer.
+.IP CURLINFO_HEADER_OUT
+The data is header (or header-like) data sent to the peer.
+.IP CURLINFO_DATA_IN
+The data is protocol data received from the peer.
+.IP CURLINFO_DATA_OUT
+The data is protocol data sent to the peer.
+.IP CURLINFO_SSL_DATA_OUT
+The data is SSL/TLS (binary) data sent to the peer.
+.IP CURLINFO_SSL_DATA_IN
+The data is SSL/TLS (binary) data received from the peer.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+.nf
+static
+void dump(const char *text,
+          FILE *stream, unsigned char *ptr, size_t size)
+{
+  size_t i;
+  size_t c;
+  unsigned int width=0x10;
+
+  fprintf(stream, "%s, %10.10ld bytes (0x%8.8lx)\n",
+          text, (long)size, (long)size);
+
+  for(i=0; i<size; i+= width) {
+    fprintf(stream, "%4.4lx: ", (long)i);
+
+    /* show hex to the left */
+    for(c = 0; c < width; c++) {
+      if(i+c < size)
+        fprintf(stream, "%02x ", ptr[i+c]);
+      else
+        fputs("   ", stream);
+    }
+
+    /* show data on the right */
+    for(c = 0; (c < width) && (i+c < size); c++)
+      fputc(ptr[i+c]>=0x20) && (ptr[i+c]<0x80)?ptr[i+c]:'.', stream);
+
+    fputc('\n', stream); /* newline */
+  }
+}
+
+static
+int my_trace(CURL *handle, curl_infotype type,
+             char *data, size_t size,
+             void *userp)
+{
+  const char *text;
+  (void)handle; /* prevent compiler warning */
+
+  switch (type) {
+  case CURLINFO_TEXT:
+    fprintf(stderr, "== Info: %s", data);
+  default: /* in case a new one is introduced to shock us */
+    return 0;
+
+  case CURLINFO_HEADER_OUT:
+    text = "=> Send header";
+    break;
+  case CURLINFO_DATA_OUT:
+    text = "=> Send data";
+    break;
+  case CURLINFO_SSL_DATA_OUT:
+    text = "=> Send SSL data";
+    break;
+  case CURLINFO_HEADER_IN:
+    text = "<= Recv header";
+    break;
+  case CURLINFO_DATA_IN:
+    text = "<= Recv data";
+    break;
+  case CURLINFO_SSL_DATA_IN:
+    text = "<= Recv SSL data";
+    break;
+  }
+
+  dump(text, stderr, (unsigned char *)data, size);
+  return 0;
+}
+
+int main(void)
+{
+  CURL *curl;
+  CURLcode res;
+
+  curl = curl_easy_init();
+  if(curl) {
+    curl_easy_setopt(curl, CURLOPT_DEBUGFUNCTION, my_trace);
+
+    /* the DEBUGFUNCTION has no effect until we enable VERBOSE */
+    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
+
+    /* example.com is redirected, so we tell libcurl to follow redirection */
+    curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
+
+    curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/");
+    res = curl_easy_perform(curl);
+    /* Check for errors */
+    if(res != CURLE_OK)
+      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+              curl_easy_strerror(res));
+
+    /* always cleanup */
+    curl_easy_cleanup(curl);
+  }
+  return 0;
+}
+.fi
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_VERBOSE "(3), " CURLOPT_DEBUGDATA "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.html b/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.html
new file mode 100644 (file)
index 0000000..ab3950b
--- /dev/null
@@ -0,0 +1,179 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_DEBUGFUNCTION man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_DEBUGFUNCTION - debug callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">typedef enum {
+ &nbsp; CURLINFO_TEXT = 0,
+ &nbsp; CURLINFO_HEADER_IN,    /* 1 */
+ &nbsp; CURLINFO_HEADER_OUT,   /* 2 */
+ &nbsp; CURLINFO_DATA_IN,      /* 3 */
+ &nbsp; CURLINFO_DATA_OUT,     /* 4 */
+ &nbsp; CURLINFO_SSL_DATA_IN,  /* 5 */
+ &nbsp; CURLINFO_SSL_DATA_OUT, /* 6 */
+ &nbsp; CURLINFO_END
+ } curl_infotype;
+ <p class="level0">int debug_callback(CURL *handle,
+ &nbsp;                  curl_infotype type,
+ &nbsp;                  char *data,
+ &nbsp;                  size_t size,
+ &nbsp;                  void *userptr);
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DEBUGFUNCTION,
+ &nbsp;                         debug_callback);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
+<p class="level0"><a Class="emphasis" href="./CURLOPT_DEBUGFUNCTION.html">CURLOPT_DEBUGFUNCTION</a> replaces the standard debug function used when <a Class="emphasis" href="./CURLOPT_VERBOSE.html">CURLOPT_VERBOSE</a> is in effect. This callback receives debug information, as specified in the <span Class="emphasis">type</span> argument. This function must return 0. The <span Class="emphasis">data</span> pointed to by the char * passed to this function WILL NOT be zero terminated, but will be exactly of the <span Class="emphasis">size</span> as told by the <span Class="emphasis">size</span> argument. 
+<p class="level0">The <span Class="emphasis">userptr</span> argument is the pointer set with <a Class="emphasis" href="./CURLOPT_DEBUGDATA.html">CURLOPT_DEBUGDATA</a>. 
+<p class="level0">Available curl_infotype values: 
+<p class="level0"><a name="CURLINFOTEXT"></a><span class="nroffip">CURLINFO_TEXT</span> 
+<p class="level1">The data is informational text. 
+<p class="level0"><a name="CURLINFOHEADERIN"></a><span class="nroffip">CURLINFO_HEADER_IN</span> 
+<p class="level1">The data is header (or header-like) data received from the peer. 
+<p class="level0"><a name="CURLINFOHEADEROUT"></a><span class="nroffip">CURLINFO_HEADER_OUT</span> 
+<p class="level1">The data is header (or header-like) data sent to the peer. 
+<p class="level0"><a name="CURLINFODATAIN"></a><span class="nroffip">CURLINFO_DATA_IN</span> 
+<p class="level1">The data is protocol data received from the peer. 
+<p class="level0"><a name="CURLINFODATAOUT"></a><span class="nroffip">CURLINFO_DATA_OUT</span> 
+<p class="level1">The data is protocol data sent to the peer. 
+<p class="level0"><a name="CURLINFOSSLDATAOUT"></a><span class="nroffip">CURLINFO_SSL_DATA_OUT</span> 
+<p class="level1">The data is SSL/TLS (binary) data sent to the peer. 
+<p class="level0"><a name="CURLINFOSSLDATAIN"></a><span class="nroffip">CURLINFO_SSL_DATA_IN</span> 
+<p class="level1">The data is SSL/TLS (binary) data received from the peer. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre>
+<p class="level0">static
+ void dump(const char *text,
+ &nbsp;         FILE *stream, unsigned char *ptr, size_t size)
+ {
+ &nbsp; size_t i;
+ &nbsp; size_t c;
+ &nbsp; unsigned int width=0x10;
+ <p class="level0">&nbsp; fprintf(stream, "%s, %10.10ld bytes (0x%8.8lx)n",
+ &nbsp;         text, (long)size, (long)size);
+ <p class="level0">&nbsp; for(i=0; i&lt;size; i+= width) {
+ &nbsp;   fprintf(stream, "%4.4lx: ", (long)i);
+ <p class="level0">&nbsp;   /* show hex to the left */
+ &nbsp;   for(c = 0; c &lt; width; c++) {
+ &nbsp;     if(i+c &lt; size)
+ &nbsp;       fprintf(stream, "%02x ", ptr[i+c]);
+ &nbsp;     else
+ &nbsp;       fputs("   ", stream);
+ &nbsp;   }
+ <p class="level0">&nbsp;   /* show data on the right */
+ &nbsp;   for(c = 0; (c &lt; width) && (i+c &lt; size); c++)
+ &nbsp;     fputc(ptr[i+c]&gt;=0x20) && (ptr[i+c]&lt;0x80)?ptr[i+c]:'.', stream);
+ <p class="level0">&nbsp;   fputc('n', stream); /* newline */
+ &nbsp; }
+ }
+ <p class="level0">static
+ int my_trace(CURL *handle, curl_infotype type,
+ &nbsp;            char *data, size_t size,
+ &nbsp;            void *userp)
+ {
+ &nbsp; const char *text;
+ &nbsp; (void)handle; /* prevent compiler warning */
+ <p class="level0">&nbsp; switch (type) {
+ &nbsp; case CURLINFO_TEXT:
+ &nbsp;   fprintf(stderr, "== Info: %s", data);
+ &nbsp; default: /* in case a new one is introduced to shock us */
+ &nbsp;   return 0;
+ <p class="level0">&nbsp; case CURLINFO_HEADER_OUT:
+ &nbsp;   text = "=&gt; Send header";
+ &nbsp;   break;
+ &nbsp; case CURLINFO_DATA_OUT:
+ &nbsp;   text = "=&gt; Send data";
+ &nbsp;   break;
+ &nbsp; case CURLINFO_SSL_DATA_OUT:
+ &nbsp;   text = "=&gt; Send SSL data";
+ &nbsp;   break;
+ &nbsp; case CURLINFO_HEADER_IN:
+ &nbsp;   text = "&lt;= Recv header";
+ &nbsp;   break;
+ &nbsp; case CURLINFO_DATA_IN:
+ &nbsp;   text = "&lt;= Recv data";
+ &nbsp;   break;
+ &nbsp; case CURLINFO_SSL_DATA_IN:
+ &nbsp;   text = "&lt;= Recv SSL data";
+ &nbsp;   break;
+ &nbsp; }
+ <p class="level0">&nbsp; dump(text, stderr, (unsigned char *)data, size);
+ &nbsp; return 0;
+ }
+ <p class="level0">int main(void)
+ {
+ &nbsp; CURL *curl;
+ &nbsp; CURLcode res;
+ <p class="level0">&nbsp; curl = curl_easy_init();
+ &nbsp; if(curl) {
+ &nbsp;   curl_easy_setopt(curl, CURLOPT_DEBUGFUNCTION, my_trace);
+ <p class="level0">&nbsp;   /* the DEBUGFUNCTION has no effect until we enable VERBOSE */
+ &nbsp;   curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
+ <p class="level0">&nbsp;   /* example.com is redirected, so we tell libcurl to follow redirection */
+ &nbsp;   curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
+ <p class="level0">&nbsp;   curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com/">http://example.com/</a>");
+ &nbsp;   res = curl_easy_perform(curl);
+ &nbsp;   /* Check for errors */
+ &nbsp;   if(res != CURLE_OK)
+ &nbsp;     fprintf(stderr, "curl_easy_perform() failed: %sn",
+ &nbsp;             curl_easy_strerror(res));
+ <p class="level0">&nbsp;   /* always cleanup */
+ &nbsp;   curl_easy_cleanup(curl);
+ &nbsp; }
+ &nbsp; return 0;
+ }
+ </pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_VERBOSE.html">CURLOPT_VERBOSE</a>, <a Class="manpage" href="./CURLOPT_DEBUGDATA.html">CURLOPT_DEBUGDATA</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.pdf b/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.pdf
new file mode 100644 (file)
index 0000000..a9dae92
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3 b/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3
new file mode 100644 (file)
index 0000000..a81f907
--- /dev/null
@@ -0,0 +1,61 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_DIRLISTONLY 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_DIRLISTONLY \- ask for names only in a directory listing
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DIRLISTONLY, long listonly);
+.SH DESCRIPTION
+For FTP and SFTP based URLs a parameter set to 1 tells the library to list the
+names of files in a directory, rather than performing a full directory listing
+that would normally include file sizes, dates etc.
+
+For POP3 a parameter of 1 tells the library to list the email message or
+messages on the POP3 server. This can be used to change the default behaviour
+of libcurl, when combined with a URL that contains a message ID, to perform a
+"scan listing" which can then be used to determine the size of an email.
+
+Note: For FTP this causes a NLST command to be sent to the FTP server.  Beware
+that some FTP servers list only files in their response to NLST; they might not
+include subdirectories and symbolic links.
+
+Setting this option to 1 also implies a directory listing even if the URL
+doesn't end with a slash, which otherwise is necessary.
+
+Do NOT use this option if you also use \fICURLOPT_WILDCARDMATCH(3)\fP as it
+will effectively break that feature then.
+.SH DEFAULT
+0, disabled
+.SH PROTOCOLS
+FTP, SFTP and POP3
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+This option was known as CURLOPT_FTPLISTONLY up to 7.16.4. POP3 is supported
+since 7.21.5.
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_CUSTOMREQUEST "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_DIRLISTONLY.html b/docs/libcurl/opts/CURLOPT_DIRLISTONLY.html
new file mode 100644 (file)
index 0000000..63d094c
--- /dev/null
@@ -0,0 +1,64 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_DIRLISTONLY man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_DIRLISTONLY - ask for names only in a directory listing <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DIRLISTONLY, long listonly); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">For FTP and SFTP based URLs a parameter set to 1 tells the library to list the names of files in a directory, rather than performing a full directory listing that would normally include file sizes, dates etc. 
+<p class="level0">For POP3 a parameter of 1 tells the library to list the email message or messages on the POP3 server. This can be used to change the default behaviour of libcurl, when combined with a URL that contains a message ID, to perform a "scan listing" which can then be used to determine the size of an email. 
+<p class="level0">Note: For FTP this causes a NLST command to be sent to the FTP server.  Beware that some FTP servers list only files in their response to NLST; they might not include subdirectories and symbolic links. 
+<p class="level0">Setting this option to 1 also implies a directory listing even if the URL doesn't end with a slash, which otherwise is necessary. 
+<p class="level0">Do NOT use this option if you also use <a Class="emphasis" href="./CURLOPT_WILDCARDMATCH.html">CURLOPT_WILDCARDMATCH</a> as it will effectively break that feature then. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0, disabled <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">FTP, SFTP and POP3 <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">This option was known as CURLOPT_FTPLISTONLY up to 7.16.4. POP3 is supported since 7.21.5. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_CUSTOMREQUEST.html">CURLOPT_CUSTOMREQUEST</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_DIRLISTONLY.pdf b/docs/libcurl/opts/CURLOPT_DIRLISTONLY.pdf
new file mode 100644 (file)
index 0000000..3da3d2f
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_DIRLISTONLY.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3 b/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3
new file mode 100644 (file)
index 0000000..9332780
--- /dev/null
@@ -0,0 +1,56 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_DNS_CACHE_TIMEOUT 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_DNS_CACHE_TIMEOUT \- set life-time for DNS cache entries
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_CACHE_TIMEOUT, long age);
+.SH DESCRIPTION
+Pass a long, this sets the timeout in seconds. Name resolves will be kept in
+memory and used for this number of seconds. Set to zero to completely disable
+caching, or set to -1 to make the cached entries remain forever. By default,
+libcurl caches this info for 60 seconds.
+
+The name resolve functions of various libc implementations don't re-read name
+server information unless explicitly told so (for example, by calling
+\fIres_init(3)\fP). This may cause libcurl to keep using the older server even
+if DHCP has updated the server info, and this may look like a DNS cache issue
+to the casual libcurl-app user.
+
+Note that DNS entries have a "TTL" property but libcurl doesn't use that. This
+DNS cache timeout is entirely speculative that a name will resolve to the same
+address for a certain small amount of time into the future.
+.SH DEFAULT
+60
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_DNS_USE_GLOBAL_CACHE "(3), " CURLOPT_DNS_SERVERS "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.html b/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.html
new file mode 100644 (file)
index 0000000..1076303
--- /dev/null
@@ -0,0 +1,62 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_DNS_CACHE_TIMEOUT man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_DNS_CACHE_TIMEOUT - set life-time for DNS cache entries <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_CACHE_TIMEOUT, long age); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long, this sets the timeout in seconds. Name resolves will be kept in memory and used for this number of seconds. Set to zero to completely disable caching, or set to -1 to make the cached entries remain forever. By default, libcurl caches this info for 60 seconds. 
+<p class="level0">The name resolve functions of various libc implementations don't re-read name server information unless explicitly told so (for example, by calling <span Class="emphasis">res_init(3)</span>). This may cause libcurl to keep using the older server even if DHCP has updated the server info, and this may look like a DNS cache issue to the casual libcurl-app user. 
+<p class="level0">Note that DNS entries have a "TTL" property but libcurl doesn't use that. This DNS cache timeout is entirely speculative that a name will resolve to the same address for a certain small amount of time into the future. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">60 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_DNS_USE_GLOBAL_CACHE.html">CURLOPT_DNS_USE_GLOBAL_CACHE</a>, <a Class="manpage" href="./CURLOPT_DNS_SERVERS.html">CURLOPT_DNS_SERVERS</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.pdf b/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.pdf
new file mode 100644 (file)
index 0000000..bceefc3
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3 b/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3
new file mode 100644 (file)
index 0000000..c33d791
--- /dev/null
@@ -0,0 +1,48 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_DNS_INTERFACE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_DNS_INTERFACE \- set interface to speak DNS over
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_INTERFACE, char *ifname);
+.SH DESCRIPTION
+Pass a char * as parameter. Set the name of the network interface that the DNS
+resolver should bind to. This must be an interface name (not an address). Set
+this option to NULL to use the default setting (don't bind to a specific
+interface).
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.33.0. This option also requires that libcurl was built with a
+resolver backend that supports this operation. The c-ares backend is the only
+such one.
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not,
+or CURLE_NOT_BUILT_IN if support was disabled at compile-time.
+.SH "SEE ALSO"
+.BR CURLOPT_DNS_SERVERS "(3), " CURLOPT_DNS_LOCAL_IP4 "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.html b/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.html
new file mode 100644 (file)
index 0000000..11dac38
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_DNS_INTERFACE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_DNS_INTERFACE - set interface to speak DNS over <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_INTERFACE, char *ifname); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * as parameter. Set the name of the network interface that the DNS resolver should bind to. This must be an interface name (not an address). Set this option to NULL to use the default setting (don't bind to a specific interface). <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0"><a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.33.0. This option also requires that libcurl was built with a resolver backend that supports this operation. The c-ares backend is the only such one. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_NOT_BUILT_IN if support was disabled at compile-time. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_DNS_SERVERS.html">CURLOPT_DNS_SERVERS</a>, <a Class="manpage" href="./CURLOPT_DNS_LOCAL_IP4.html">CURLOPT_DNS_LOCAL_IP4</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.pdf b/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.pdf
new file mode 100644 (file)
index 0000000..3b07969
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3 b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3
new file mode 100644 (file)
index 0000000..f5db645
--- /dev/null
@@ -0,0 +1,51 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_DNS_LOCAL_IP4 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_DNS_LOCAL_IP4 \- IPv4 address to bind DNS resolves to
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_LOCAL_IP4, char *address);
+.SH DESCRIPTION
+Set the local IPv4 \fIaddress\fP that the resolver should bind to. The
+argument should be of type char * and contain a single numerical IPv4 address
+as a string.  Set this option to NULL to use the default setting (don't bind
+to a specific IP address).
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+This option requires that libcurl was built with a resolver backend that
+supports this operation. The c-ares backend is the only such one.
+
+Added in 7.33.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not,
+CURLE_NOT_BUILT_IN if support was disabled at compile-time, or
+CURLE_BAD_FUNCTION_ARGUMENT when given a bad address.
+.SH "SEE ALSO"
+.BR CURLOPT_DNS_INTERFACE "(3), " CURLOPT_DNS_LOCAL_IP4 "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.html b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.html
new file mode 100644 (file)
index 0000000..efd1a57
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_DNS_LOCAL_IP4 man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_DNS_LOCAL_IP4 - IPv4 address to bind DNS resolves to <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_LOCAL_IP4, char *address); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Set the local IPv4 <span Class="emphasis">address</span> that the resolver should bind to. The argument should be of type char * and contain a single numerical IPv4 address as a string.  Set this option to NULL to use the default setting (don't bind to a specific IP address). <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">This option requires that libcurl was built with a resolver backend that supports this operation. The c-ares backend is the only such one. 
+<p class="level0">Added in 7.33.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, CURLE_NOT_BUILT_IN if support was disabled at compile-time, or CURLE_BAD_FUNCTION_ARGUMENT when given a bad address. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_DNS_INTERFACE.html">CURLOPT_DNS_INTERFACE</a>, <a Class="manpage" href="./CURLOPT_DNS_LOCAL_IP4.html">CURLOPT_DNS_LOCAL_IP4</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.pdf b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.pdf
new file mode 100644 (file)
index 0000000..49fc03d
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3 b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3
new file mode 100644 (file)
index 0000000..56865bb
--- /dev/null
@@ -0,0 +1,51 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_DNS_LOCAL_IP6 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_DNS_LOCAL_IP6 \- IPv6 address to bind DNS resolves to
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_LOCAL_IP6, char *address);
+.SH DESCRIPTION
+Set the local IPv6 \fIaddress\fP that the resolver should bind to. The
+argument should be of type char * and contain a single IPv6 address as a
+string.  Set this option to NULL to use the default setting (don't bind to a
+specific IP address).
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+This option requires that libcurl was built with a resolver backend that
+supports this operation. The c-ares backend is the only such one.
+
+Added in 7.33.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not,
+CURLE_NOT_BUILT_IN if support was disabled at compile-time, or
+CURLE_BAD_FUNCTION_ARGUMENT when given a bad address.
+.SH "SEE ALSO"
+.BR CURLOPT_DNS_INTERFACE "(3), " CURLOPT_DNS_LOCAL_IP4 "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.html b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.html
new file mode 100644 (file)
index 0000000..67d3af9
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_DNS_LOCAL_IP6 man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_DNS_LOCAL_IP6 - IPv6 address to bind DNS resolves to <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_LOCAL_IP6, char *address); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Set the local IPv6 <span Class="emphasis">address</span> that the resolver should bind to. The argument should be of type char * and contain a single IPv6 address as a string.  Set this option to NULL to use the default setting (don't bind to a specific IP address). <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">This option requires that libcurl was built with a resolver backend that supports this operation. The c-ares backend is the only such one. 
+<p class="level0">Added in 7.33.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, CURLE_NOT_BUILT_IN if support was disabled at compile-time, or CURLE_BAD_FUNCTION_ARGUMENT when given a bad address. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_DNS_INTERFACE.html">CURLOPT_DNS_INTERFACE</a>, <a Class="manpage" href="./CURLOPT_DNS_LOCAL_IP4.html">CURLOPT_DNS_LOCAL_IP4</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.pdf b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.pdf
new file mode 100644 (file)
index 0000000..0aba0cf
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3 b/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3
new file mode 100644 (file)
index 0000000..9f51788
--- /dev/null
@@ -0,0 +1,56 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_DNS_SERVERS 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_DNS_SERVERS \- set preferred DNS servers
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_SERVERS, char *servers);
+.SH DESCRIPTION
+Pass a char * that is the list of DNS servers to be used instead of the system
+default.  The format of the dns servers option is:
+
+host[:port][,host[:port]]...
+
+For example:
+
+192.168.1.100,192.168.1.101,3.4.5.6
+.SH DEFAULT
+NULL - use system default
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+This option requires that libcurl was built with a resolver backend that
+supports this operation. The c-ares backend is the only such one.
+
+Added in 7.24.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not,
+CURLE_NOT_BUILT_IN if support was disabled at compile-time,
+CURLE_BAD_FUNCTION_ARGUMENT when given an invalid server list, or
+CURLE_OUT_OF_MEMORY if there was insufficient heap space.
+.SH "SEE ALSO"
+.BR CURLOPT_DNS_LOCAL_IP4 "(3), " CURLOPT_DNS_CACHE_TIMEOUT "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_DNS_SERVERS.html b/docs/libcurl/opts/CURLOPT_DNS_SERVERS.html
new file mode 100644 (file)
index 0000000..ba803d0
--- /dev/null
@@ -0,0 +1,64 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_DNS_SERVERS man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_DNS_SERVERS - set preferred DNS servers <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_SERVERS, char *servers); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * that is the list of DNS servers to be used instead of the system default.  The format of the dns servers option is: 
+<p class="level0">host[:port][,host[:port]]... 
+<p class="level0">For example: 
+<p class="level0">192.168.1.100,192.168.1.101,3.4.5.6 <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL - use system default <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">This option requires that libcurl was built with a resolver backend that supports this operation. The c-ares backend is the only such one. 
+<p class="level0">Added in 7.24.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, CURLE_NOT_BUILT_IN if support was disabled at compile-time, CURLE_BAD_FUNCTION_ARGUMENT when given an invalid server list, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_DNS_LOCAL_IP4.html">CURLOPT_DNS_LOCAL_IP4</a>, <a Class="manpage" href="./CURLOPT_DNS_CACHE_TIMEOUT.html">CURLOPT_DNS_CACHE_TIMEOUT</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_DNS_SERVERS.pdf b/docs/libcurl/opts/CURLOPT_DNS_SERVERS.pdf
new file mode 100644 (file)
index 0000000..a15db8d
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_DNS_SERVERS.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3 b/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3
new file mode 100644 (file)
index 0000000..db53c0b
--- /dev/null
@@ -0,0 +1,50 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_DNS_USE_GLOBAL_CACHE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_DNS_USE_GLOBAL_CACHE \- enable/disable global DNS cache
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_USE_GLOBAL_CACHE,
+                          long enable);
+.SH DESCRIPTION
+Pass a long. If the \fIenable\fP value is 1, it tells curl to use a global DNS
+cache that will survive between easy handle creations and deletions. This is
+not thread-safe and this will use a global variable.
+
+\fBWARNING:\fP this option is considered obsolete. Stop using it. Switch over
+to using the share interface instead! See \fICURLOPT_SHARE(3)\fP and
+\fIcurl_share_init(3)\fP.
+.SH DEFAULT
+0
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Subject for removal in the future. Do not use!
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_SHARE "(3), " CURLOPT_DNS_CACHE_TIMEOUT "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.html b/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.html
new file mode 100644 (file)
index 0000000..8fb0da9
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_DNS_USE_GLOBAL_CACHE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_DNS_USE_GLOBAL_CACHE - enable/disable global DNS cache <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_USE_GLOBAL_CACHE, &nbsp;                         long enable); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long. If the <span Class="emphasis">enable</span> value is 1, it tells curl to use a global DNS cache that will survive between easy handle creations and deletions. This is not thread-safe and this will use a global variable. 
+<p class="level0"><span Class="bold">WARNING:</span> this option is considered obsolete. Stop using it. Switch over to using the share interface instead! See <a Class="emphasis" href="./CURLOPT_SHARE.html">CURLOPT_SHARE</a> and <span Class="emphasis">curl_share_init(3)</span>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Subject for removal in the future. Do not use! <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SHARE.html">CURLOPT_SHARE</a>, <a Class="manpage" href="./CURLOPT_DNS_CACHE_TIMEOUT.html">CURLOPT_DNS_CACHE_TIMEOUT</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.pdf b/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.pdf
new file mode 100644 (file)
index 0000000..e9f19ac
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_EGDSOCKET.3 b/docs/libcurl/opts/CURLOPT_EGDSOCKET.3
new file mode 100644 (file)
index 0000000..2e72ecc
--- /dev/null
@@ -0,0 +1,45 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_EGDSOCKET 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_EGDSOCKET \- set EGD socket path
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_EGDSOCKET, char *path);
+.SH DESCRIPTION
+Pass a char * to the zero terminated path name to the Entropy Gathering Daemon
+socket. It will be used to seed the random engine for SSL.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+If built TLS enabled. Only the OpenSSL and GnuTLS backends will use this.
+.SH RETURN VALUE
+Returns CURLE_OK if TLS is supported, CURLE_UNKNOWN_OPTION if not, or
+CURLE_OUT_OF_MEMORY if there was insufficient heap space.
+.SH "SEE ALSO"
+.BR CURLOPT_RANDOM_FILE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_EGDSOCKET.html b/docs/libcurl/opts/CURLOPT_EGDSOCKET.html
new file mode 100644 (file)
index 0000000..18a11ee
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_EGDSOCKET man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_EGDSOCKET - set EGD socket path <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_EGDSOCKET, char *path); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * to the zero terminated path name to the Entropy Gathering Daemon socket. It will be used to seed the random engine for SSL. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">If built TLS enabled. Only the OpenSSL and GnuTLS backends will use this. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if TLS is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_RANDOM_FILE.html">CURLOPT_RANDOM_FILE</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_EGDSOCKET.pdf b/docs/libcurl/opts/CURLOPT_EGDSOCKET.pdf
new file mode 100644 (file)
index 0000000..31c65b9
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_EGDSOCKET.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3 b/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3
new file mode 100644 (file)
index 0000000..577202c
--- /dev/null
@@ -0,0 +1,72 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_ERRORBUFFER 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_ERRORBUFFER \- set error buffer for error messages
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ERRORBUFFER, char *buf);
+.SH DESCRIPTION
+Pass a char * to a buffer that the libcurl may store human readable error
+messages in on failures or problems. This may be more helpful than just the
+return code from \fIcurl_easy_perform(3)\fP and related functions. The buffer
+\fBmust be at least CURL_ERROR_SIZE bytes big\fP.
+
+You must keep the associated buffer available until libcurl no longer needs
+it. Failing to do so will cause very odd behavior or even crashes. libcurl
+will need it until you call \fIcurl_easy_cleanup(3)\fP or you set the same
+option again to use a different pointer.
+
+Consider \fICURLOPT_VERBOSE(3)\fP and \fICURLOPT_DEBUGFUNCTION(3)\fP to better
+debug and trace why errors happen.
+
+If the library does not return an error, the buffer may not have been
+touched. Do not rely on the contents in those cases.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+.nf
+curl = curl_easy_init();
+if(curl) {
+  char error[CURL_ERROR_SIZE]
+
+  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+  /* provide a buffer to store errors in */
+  curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, error);
+
+  /* Perform the request */
+  curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_DEBUGFUNCTION "(3), " CURLOPT_VERBOSE "(3), "
+.BR curl_easy_strerror "(3), " curl_multi_strerror "(3), "
+.BR curl_share_strerror "(3) "
diff --git a/docs/libcurl/opts/CURLOPT_ERRORBUFFER.html b/docs/libcurl/opts/CURLOPT_ERRORBUFFER.html
new file mode 100644 (file)
index 0000000..40d29b1
--- /dev/null
@@ -0,0 +1,75 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_ERRORBUFFER man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_ERRORBUFFER - set error buffer for error messages <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ERRORBUFFER, char *buf); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * to a buffer that the libcurl may store human readable error messages in on failures or problems. This may be more helpful than just the return code from <span Class="emphasis">curl_easy_perform(3)</span> and related functions. The buffer <span Class="bold">must be at least CURL_ERROR_SIZE bytes big</span>. 
+<p class="level0">You must keep the associated buffer available until libcurl no longer needs it. Failing to do so will cause very odd behavior or even crashes. libcurl will need it until you call <span Class="emphasis">curl_easy_cleanup(3)</span> or you set the same option again to use a different pointer. 
+<p class="level0">Consider <a Class="emphasis" href="./CURLOPT_VERBOSE.html">CURLOPT_VERBOSE</a> and <a Class="emphasis" href="./CURLOPT_DEBUGFUNCTION.html">CURLOPT_DEBUGFUNCTION</a> to better debug and trace why errors happen. 
+<p class="level0">If the library does not return an error, the buffer may not have been touched. Do not rely on the contents in those cases. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre>
+<p class="level0">curl = curl_easy_init();
+ if(curl) {
+ &nbsp; char error[CURL_ERROR_SIZE]
+ <p class="level0">&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+ <p class="level0">&nbsp; /* provide a buffer to store errors in */
+ &nbsp; curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, error);
+ <p class="level0">&nbsp; /* Perform the request */
+ &nbsp; curl_easy_perform(curl);
+ }
+ </pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_DEBUGFUNCTION.html">CURLOPT_DEBUGFUNCTION</a>, <a Class="manpage" href="./CURLOPT_VERBOSE.html">CURLOPT_VERBOSE</a>, <span Class="manpage"> </span> <span Class="manpage">curl_easy_strerror (3)</span> <span Class="manpage">  curl_multi_strerror (3)</span> <span Class="manpage"> </span> <span Class="manpage">curl_share_strerror (3) </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_ERRORBUFFER.pdf b/docs/libcurl/opts/CURLOPT_ERRORBUFFER.pdf
new file mode 100644 (file)
index 0000000..5a0ddd4
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_ERRORBUFFER.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3 b/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3
new file mode 100644 (file)
index 0000000..81f4571
--- /dev/null
@@ -0,0 +1,49 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_EXPECT_100_TIMEOUT_MS 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_EXPECT_100_TIMEOUT_MS \- timeout for Expect: 100-continue response
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_EXPECT_100_TIMEOUT_MS,
+                          long milliseconds);
+.SH DESCRIPTION
+Pass a long to tell libcurl the number of \fImilliseconds\fP to wait for a
+server response with the HTTP status 100 (Continue), 417 (Expectation Failed)
+or similar after sending a HTTP request containing an Expect: 100-continue
+header. If this times out before a response is received, the request body is
+sent anyway.
+.SH DEFAULT
+1000 milliseconds
+.SH PROTOCOLS
+HTTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.36.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_POST "(3), " CURLOPT_HTTPPOST "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.html b/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.html
new file mode 100644 (file)
index 0000000..b5cf9c6
--- /dev/null
@@ -0,0 +1,64 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_EXPECT_100_TIMEOUT_MS man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_EXPECT_100_TIMEOUT_MS - timeout for Expect: 100-continue response <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_EXPECT_100_TIMEOUT_MS,
+ &nbsp;                         long milliseconds);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long to tell libcurl the number of <span Class="emphasis">milliseconds</span> to wait for a server response with the HTTP status 100 (Continue), 417 (Expectation Failed) or similar after sending a HTTP request containing an Expect: 100-continue header. If this times out before a response is received, the request body is sent anyway. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">1000 milliseconds <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.36.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_POST.html">CURLOPT_POST</a>, <a Class="manpage" href="./CURLOPT_HTTPPOST.html">CURLOPT_HTTPPOST</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.pdf b/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.pdf
new file mode 100644 (file)
index 0000000..4184fe5
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_FAILONERROR.3 b/docs/libcurl/opts/CURLOPT_FAILONERROR.3
new file mode 100644 (file)
index 0000000..a8267fd
--- /dev/null
@@ -0,0 +1,53 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_FAILONERROR 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_FAILONERROR \- request failure on HTTP response >= 400
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FAILONERROR, long fail);
+.SH DESCRIPTION
+A long parameter set to 1 tells the library to fail the request if the HTTP
+code returned is equal to or larger than 400. The default action would be to
+return the page normally, ignoring that code.
+
+This method is not fail-safe and there are occasions where non-successful
+response codes will slip through, especially when authentication is involved
+(response codes 401 and 407).
+
+You might get some amounts of headers transferred before this situation is
+detected, like when a "100-continue" is received as a response to a POST/PUT
+and a 401 or 407 is received immediately afterwards.
+.SH DEFAULT
+0, do not fail on error
+.SH PROTOCOLS
+HTTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Along with HTTP 
+.SH RETURN VALUE
+Returns CURLE_OK if HTTP is enabled, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_HTTP200ALIASES "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_FAILONERROR.html b/docs/libcurl/opts/CURLOPT_FAILONERROR.html
new file mode 100644 (file)
index 0000000..931f763
--- /dev/null
@@ -0,0 +1,62 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_FAILONERROR man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_FAILONERROR - request failure on HTTP response &gt;= 400 <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FAILONERROR, long fail); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">A long parameter set to 1 tells the library to fail the request if the HTTP code returned is equal to or larger than 400. The default action would be to return the page normally, ignoring that code. 
+<p class="level0">This method is not fail-safe and there are occasions where non-successful response codes will slip through, especially when authentication is involved (response codes 401 and 407). 
+<p class="level0">You might get some amounts of headers transferred before this situation is detected, like when a "100-continue" is received as a response to a POST/PUT and a 401 or 407 is received immediately afterwards. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0, do not fail on error <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Along with HTTP  <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if HTTP is enabled, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_HTTP200ALIASES.html">CURLOPT_HTTP200ALIASES</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_FAILONERROR.pdf b/docs/libcurl/opts/CURLOPT_FAILONERROR.pdf
new file mode 100644 (file)
index 0000000..d4044af
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_FAILONERROR.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_FILETIME.3 b/docs/libcurl/opts/CURLOPT_FILETIME.3
new file mode 100644 (file)
index 0000000..7c57aff
--- /dev/null
@@ -0,0 +1,47 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_FILETIME 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_FILETIME \- get the modification time of the remote resource
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FILETIME, long gettime);
+.SH DESCRIPTION
+Pass a long. If it is 1, libcurl will attempt to get the modification time of
+the remote document in this operation. This requires that the remote server
+sends the time or replies to a time querying command. The
+\fIcurl_easy_getinfo(3)\fP function with the \fICURLINFO_FILETIME\fP argument
+can be used after a transfer to extract the received time (if any).
+.SH DEFAULT
+0
+.SH PROTOCOLS
+HTTP, FTP, SFTP, FILE
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_FILETIME.html b/docs/libcurl/opts/CURLOPT_FILETIME.html
new file mode 100644 (file)
index 0000000..904d68d
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_FILETIME man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_FILETIME - get the modification time of the remote resource <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FILETIME, long gettime); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long. If it is 1, libcurl will attempt to get the modification time of the remote document in this operation. This requires that the remote server sends the time or replies to a time querying command. The <span Class="emphasis">curl_easy_getinfo(3)</span> function with the <span Class="emphasis">CURLINFO_FILETIME</span> argument can be used after a transfer to extract the received time (if any). <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP, FTP, SFTP, FILE <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><span Class="manpage">curl_easy_getinfo (3)</span> <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_FILETIME.pdf b/docs/libcurl/opts/CURLOPT_FILETIME.pdf
new file mode 100644 (file)
index 0000000..33728be
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_FILETIME.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3 b/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3
new file mode 100644 (file)
index 0000000..a0466fe
--- /dev/null
@@ -0,0 +1,46 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_FNMATCH_DATA 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_FNMATCH_DATA \- custom pointer to fnmatch callback
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FNMATCH_DATA,
+                          void *pointer);
+.SH DESCRIPTION
+Pass a pointer that will be untouched by libcurl and passed as the ptr
+argument to the \fICURL_FNMATCH_FUNCTION(3)\fP.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+FTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.21.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_FNMATCH_FUNCTION "(3), " CURLOPT_WILDCARDMATCH "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.html b/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.html
new file mode 100644 (file)
index 0000000..6745382
--- /dev/null
@@ -0,0 +1,64 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_FNMATCH_DATA man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_FNMATCH_DATA - custom pointer to fnmatch callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FNMATCH_DATA,
+ &nbsp;                         void *pointer);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer that will be untouched by libcurl and passed as the ptr argument to the <span Class="emphasis">CURL_FNMATCH_FUNCTION(3)</span>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">FTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.21.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_FNMATCH_FUNCTION.html">CURLOPT_FNMATCH_FUNCTION</a>, <a Class="manpage" href="./CURLOPT_WILDCARDMATCH.html">CURLOPT_WILDCARDMATCH</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.pdf b/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.pdf
new file mode 100644 (file)
index 0000000..297371c
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3
new file mode 100644 (file)
index 0000000..fc119a9
--- /dev/null
@@ -0,0 +1,56 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_FNMATCH_FUNCTION 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_FNMATCH_FUNCTION \- wildcard matching function callback
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+int fnmatch_callback(void *ptr,
+                     const char *pattern,
+                     const char *string);
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FNMATCH_FUNCTION,
+                          fnmatch_callback);
+.SH DESCRIPTION
+Pass a pointer to your callback function, which should match the prototype
+shown above.
+
+This callback s used for wildcard matching.
+
+Return \fICURL_FNMATCHFUNC_MATCH\fP if pattern matches the string,
+\fICURL_FNMATCHFUNC_NOMATCH\fP if not or \fICURL_FNMATCHFUNC_FAIL\fP if an
+error occurred.
+.SH DEFAULT
+NULL == an internal function for wildcard matching.
+.SH PROTOCOLS
+FTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.21.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_FNMATCH_DATA "(3), " CURLOPT_DEBUGFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.html b/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.html
new file mode 100644 (file)
index 0000000..34e595d
--- /dev/null
@@ -0,0 +1,69 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_FNMATCH_FUNCTION man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_FNMATCH_FUNCTION - wildcard matching function callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">int fnmatch_callback(void *ptr,
+ &nbsp;                    const char *pattern,
+ &nbsp;                    const char *string);
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FNMATCH_FUNCTION,
+ &nbsp;                         fnmatch_callback);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
+<p class="level0">This callback s used for wildcard matching. 
+<p class="level0">Return <span Class="emphasis">CURL_FNMATCHFUNC_MATCH</span> if pattern matches the string, <span Class="emphasis">CURL_FNMATCHFUNC_NOMATCH</span> if not or <span Class="emphasis">CURL_FNMATCHFUNC_FAIL</span> if an error occurred. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL == an internal function for wildcard matching. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">FTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.21.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_FNMATCH_DATA.html">CURLOPT_FNMATCH_DATA</a>, <a Class="manpage" href="./CURLOPT_DEBUGFUNCTION.html">CURLOPT_DEBUGFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.pdf b/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.pdf
new file mode 100644 (file)
index 0000000..5386b57
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3 b/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3
new file mode 100644 (file)
index 0000000..3a32cae
--- /dev/null
@@ -0,0 +1,70 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_FOLLOWLOCATION 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_FOLLOWLOCATION \- follow HTTP 3xx redirects
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FOLLOWLOCATION, long enable);
+.SH DESCRIPTION
+A parameter set to 1 tells the library to follow any Location: header that the
+server sends as part of a HTTP header in a 3xx response.
+
+This means that libcurl will re-send the same request on the new location and
+follow new Location: headers all the way until no more such headers are
+returned. \fICURLOPT_MAXREDIRS(3)\fP can be used to limit the number of
+redirects libcurl will follow.
+
+libcurl can limit to what protocols it will automatically follow. The accepted
+protocols are set with \fICURLOPT_REDIR_PROTOCOLS(3)\fP and it excludes the
+FILE protocol by default.
+
+For users who think the existing location following is too naive, too simple
+or just lacks features, it is very easy to instead implement your own redirect
+follow logic with the use of \fIcurl_easy_getinfo(3)\fP's
+\fICURLINFO_REDIRECT_URL\fP option instead of using
+\fICURLOPT_FOLLOWLOCATION(3)\fP.
+.SH DEFAULT
+0, disabled
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+  /* example.com is redirected, so we tell libcurl to follow redirection */
+  curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
+
+  curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+Along with HTTP
+.SH RETURN VALUE
+Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_REDIR_PROTOCOLS "(3), " CURLOPT_PROTOCOLS "(3), "
+.BR CURLOPT_POSTREDIR "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.html b/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.html
new file mode 100644 (file)
index 0000000..36c40c9
--- /dev/null
@@ -0,0 +1,73 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_FOLLOWLOCATION man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_FOLLOWLOCATION - follow HTTP 3xx redirects <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FOLLOWLOCATION, long enable); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">A parameter set to 1 tells the library to follow any Location: header that the server sends as part of a HTTP header in a 3xx response. 
+<p class="level0">This means that libcurl will re-send the same request on the new location and follow new Location: headers all the way until no more such headers are returned. <a Class="emphasis" href="./CURLOPT_MAXREDIRS.html">CURLOPT_MAXREDIRS</a> can be used to limit the number of redirects libcurl will follow. 
+<p class="level0">libcurl can limit to what protocols it will automatically follow. The accepted protocols are set with <a Class="emphasis" href="./CURLOPT_REDIR_PROTOCOLS.html">CURLOPT_REDIR_PROTOCOLS</a> and it excludes the FILE protocol by default. 
+<p class="level0">For users who think the existing location following is too naive, too simple or just lacks features, it is very easy to instead implement your own redirect follow logic with the use of <span Class="emphasis">curl_easy_getinfo(3)</span>'s <span Class="emphasis">CURLINFO_REDIRECT_URL</span> option instead of using <a Class="emphasis" href="./CURLOPT_FOLLOWLOCATION.html">CURLOPT_FOLLOWLOCATION</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0, disabled <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP(S) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre>
+<p class="level0">CURL *curl = curl_easy_init();
+ if(curl) {
+ &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+ <p class="level0">&nbsp; /* example.com is redirected, so we tell libcurl to follow redirection */
+ &nbsp; curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
+ <p class="level0">&nbsp; curl_easy_perform(curl);
+ }
+ </pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Along with HTTP <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_REDIR_PROTOCOLS.html">CURLOPT_REDIR_PROTOCOLS</a>, <a Class="manpage" href="./CURLOPT_PROTOCOLS.html">CURLOPT_PROTOCOLS</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_POSTREDIR.html">CURLOPT_POSTREDIR</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.pdf b/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.pdf
new file mode 100644 (file)
index 0000000..8c986ea
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3 b/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3
new file mode 100644 (file)
index 0000000..c588ca5
--- /dev/null
@@ -0,0 +1,50 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_FORBID_REUSE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_FORBID_REUSE \- make connection get closed at once after use
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FORBID_REUSE, long close);
+.SH DESCRIPTION
+Pass a long. Set \fIclose\fP to 1 to make libcurl explicitly close the
+connection when done with the transfer. Normally, libcurl keeps all
+connections alive when done with one transfer in case a succeeding one follows
+that can re-use them.  This option should be used with caution and only if you
+understand what it does as it can seriously impact performance.
+
+Set to 0 to have libcurl keep the connection open for possible later re-use
+(default behavior).
+.SH DEFAULT
+0
+.SH PROTOCOLS
+Most
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_FRESH_CONNECT "(3), " CURLOPT_MAXCONNECTS "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_FORBID_REUSE.html b/docs/libcurl/opts/CURLOPT_FORBID_REUSE.html
new file mode 100644 (file)
index 0000000..6a968ea
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_FORBID_REUSE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_FORBID_REUSE - make connection get closed at once after use <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FORBID_REUSE, long close); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long. Set <span Class="emphasis">close</span> to 1 to make libcurl explicitly close the connection when done with the transfer. Normally, libcurl keeps all connections alive when done with one transfer in case a succeeding one follows that can re-use them.  This option should be used with caution and only if you understand what it does as it can seriously impact performance. 
+<p class="level0">Set to 0 to have libcurl keep the connection open for possible later re-use (default behavior). <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">Most <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_FRESH_CONNECT.html">CURLOPT_FRESH_CONNECT</a>, <a Class="manpage" href="./CURLOPT_MAXCONNECTS.html">CURLOPT_MAXCONNECTS</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_FORBID_REUSE.pdf b/docs/libcurl/opts/CURLOPT_FORBID_REUSE.pdf
new file mode 100644 (file)
index 0000000..7c534b6
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_FORBID_REUSE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3 b/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3
new file mode 100644 (file)
index 0000000..1caaf61
--- /dev/null
@@ -0,0 +1,52 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_FRESH_CONNECT 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_FRESH_CONNECT \- force a new connection to be used
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FRESH_CONNECT, long fresh);
+.SH DESCRIPTION
+Pass a long. Set to 1 to make the next transfer use a new (fresh) connection
+by force instead of trying to re-use an existing one.  This option should be
+used with caution and only if you understand what it does as it may seriously
+impact performance.
+
+Related functionality is \fICURLOPT_FORBID_REUSE(3)\fP which makes sure the
+connection is closed after use so that it won't be re-used.
+
+Set \fIfresh\fP to 0 to have libcurl attempt re-using an existing connection
+(default behavior).
+.SH DEFAULT
+0
+.SH PROTOCOLS
+Most
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_FORBID_REUSE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.html b/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.html
new file mode 100644 (file)
index 0000000..062da52
--- /dev/null
@@ -0,0 +1,62 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_FRESH_CONNECT man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_FRESH_CONNECT - force a new connection to be used <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FRESH_CONNECT, long fresh); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long. Set to 1 to make the next transfer use a new (fresh) connection by force instead of trying to re-use an existing one.  This option should be used with caution and only if you understand what it does as it may seriously impact performance. 
+<p class="level0">Related functionality is <a Class="emphasis" href="./CURLOPT_FORBID_REUSE.html">CURLOPT_FORBID_REUSE</a> which makes sure the connection is closed after use so that it won't be re-used. 
+<p class="level0">Set <span Class="emphasis">fresh</span> to 0 to have libcurl attempt re-using an existing connection (default behavior). <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">Most <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_FORBID_REUSE.html">CURLOPT_FORBID_REUSE</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.pdf b/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.pdf
new file mode 100644 (file)
index 0000000..326ec75
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_FTPPORT.3 b/docs/libcurl/opts/CURLOPT_FTPPORT.3
new file mode 100644 (file)
index 0000000..fd87bb2
--- /dev/null
@@ -0,0 +1,72 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_FTPPORT 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_FTPPORT \- make FTP transfer active
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTPPORT, char *spec);
+.SH DESCRIPTION
+Pass a pointer to a zero terminated string as parameter. It specifies that the
+FTP transfer will be made actively and the given string will be used to get
+the IP address to use for the FTP PORT instruction.
+
+The PORT instruction tells the remote server to connect to our specified IP
+address. The string may be a plain IP address, a host name, a network
+interface name (under Unix) or just a '-' symbol to let the library use your
+system's default IP address. Default FTP operations are passive, and thus
+won't use PORT.
+
+The address can be followed by a ':' to specify a port, optionally followed by
+a '-' to specify a port range.  If the port specified is 0, the operating
+system will pick a free port.  If a range is provided and all ports in the
+range are not available, libcurl will report CURLE_FTP_PORT_FAILED for the
+handle.  Invalid port/range settings are ignored.  IPv6 addresses followed by
+a port or portrange have to be in brackets.  IPv6 addresses without port/range
+specifier can be in brackets.
+
+Examples with specified ports:
+
+.nf
+  eth0:0
+  192.168.1.2:32000-33000
+  curl.se:32123
+  [::1]:1234-4567
+.fi
+
+You disable PORT again and go back to using the passive version by setting
+this option to NULL.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+FTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Port range support was added in 7.19.5
+.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 CURLOPT_FTP_USE_EPRT "(3), " CURLOPT_FTP_USE_EPSV "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_FTPPORT.html b/docs/libcurl/opts/CURLOPT_FTPPORT.html
new file mode 100644 (file)
index 0000000..2ef4187
--- /dev/null
@@ -0,0 +1,72 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_FTPPORT man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_FTPPORT - make FTP transfer active <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTPPORT, char *spec); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to a zero terminated string as parameter. It specifies that the FTP transfer will be made actively and the given string will be used to get the IP address to use for the FTP PORT instruction. 
+<p class="level0">The PORT instruction tells the remote server to connect to our specified IP address. The string may be a plain IP address, a host name, a network interface name (under Unix) or just a '-' symbol to let the library use your system's default IP address. Default FTP operations are passive, and thus won't use PORT. 
+<p class="level0">The address can be followed by a ':' to specify a port, optionally followed by a '-' to specify a port range.  If the port specified is 0, the operating system will pick a free port.  If a range is provided and all ports in the range are not available, libcurl will report CURLE_FTP_PORT_FAILED for the handle.  Invalid port/range settings are ignored.  IPv6 addresses followed by a port or portrange have to be in brackets.  IPv6 addresses without port/range specifier can be in brackets. 
+<p class="level0">Examples with specified ports: 
+<p class="level0"><pre>
+<p class="level0">&nbsp; eth0:0
+ &nbsp; 192.168.1.2:32000-33000
+ &nbsp; curl.se:32123
+ &nbsp; [::1]:1234-4567
+ </pre>
+
+<p class="level0">
+<p class="level0">You disable PORT again and go back to using the passive version by setting this option to NULL. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">FTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Port range support was added in 7.19.5 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_FTP_USE_EPRT.html">CURLOPT_FTP_USE_EPRT</a>, <a Class="manpage" href="./CURLOPT_FTP_USE_EPSV.html">CURLOPT_FTP_USE_EPSV</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_FTPPORT.pdf b/docs/libcurl/opts/CURLOPT_FTPPORT.pdf
new file mode 100644 (file)
index 0000000..4bd409a
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_FTPPORT.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3 b/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3
new file mode 100644 (file)
index 0000000..bfbea9c
--- /dev/null
@@ -0,0 +1,53 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_FTPSSLAUTH 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_FTPSSLAUTH \- set order in which to attempt TLS vs SSL when using FTP
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTPSSLAUTH, long order);
+.SH DESCRIPTION
+Pass a long using one of the values from below, to alter how libcurl issues
+\&"AUTH TLS" or "AUTH SSL" when FTP over SSL is activated. This is only
+interesting if \fICURLOPT_USE_SSL(3)\fP is also set.
+
+Possible \fIorder\fP values:
+.IP CURLFTPAUTH_DEFAULT
+Allow libcurl to decide.
+.IP CURLFTPAUTH_SSL
+Try "AUTH SSL" first, and only if that fails try "AUTH TLS".
+.IP CURLFTPAUTH_TLS
+Try "AUTH TLS" first, and only if that fails try "AUTH SSL".
+.SH DEFAULT
+CURLFTPAUTH_DEFAULT
+.SH PROTOCOLS
+FTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.12.2
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_USE_SSL "(3), " CURLOPT_FTP_SSL_CCC "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.html b/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.html
new file mode 100644 (file)
index 0000000..5e688a5
--- /dev/null
@@ -0,0 +1,67 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_FTPSSLAUTH man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_FTPSSLAUTH - set order in which to attempt TLS vs SSL when using FTP <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTPSSLAUTH, long order); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long using one of the values from below, to alter how libcurl issues "AUTH TLS" or "AUTH SSL" when FTP over SSL is activated. This is only interesting if <a Class="emphasis" href="./CURLOPT_USE_SSL.html">CURLOPT_USE_SSL</a> is also set. 
+<p class="level0">Possible <span Class="emphasis">order</span> values: 
+<p class="level0"><a name="CURLFTPAUTHDEFAULT"></a><span class="nroffip">CURLFTPAUTH_DEFAULT</span> 
+<p class="level1">Allow libcurl to decide. 
+<p class="level0"><a name="CURLFTPAUTHSSL"></a><span class="nroffip">CURLFTPAUTH_SSL</span> 
+<p class="level1">Try "AUTH SSL" first, and only if that fails try "AUTH TLS". 
+<p class="level0"><a name="CURLFTPAUTHTLS"></a><span class="nroffip">CURLFTPAUTH_TLS</span> 
+<p class="level1">Try "AUTH TLS" first, and only if that fails try "AUTH SSL". <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">CURLFTPAUTH_DEFAULT <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">FTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.12.2 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_USE_SSL.html">CURLOPT_USE_SSL</a>, <a Class="manpage" href="./CURLOPT_FTP_SSL_CCC.html">CURLOPT_FTP_SSL_CCC</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.pdf b/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.pdf
new file mode 100644 (file)
index 0000000..710d984
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3 b/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3
new file mode 100644 (file)
index 0000000..3c34247
--- /dev/null
@@ -0,0 +1,46 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_FTP_ACCOUNT 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_FTP_ACCOUNT \- set account info for FTP
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_ACCOUNT, char *account);
+.SH DESCRIPTION
+Pass a pointer to a zero terminated string (or NULL to disable). When an FTP
+server asks for "account data" after user name and password has been provided,
+this data is sent off using the ACCT command.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+FTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.13.0
+.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 CURLOPT_USERNAME "(3), " CURLOPT_PASSWORD "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.html b/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.html
new file mode 100644 (file)
index 0000000..20db542
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_FTP_ACCOUNT man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_FTP_ACCOUNT - set account info for FTP <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_ACCOUNT, char *account); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to a zero terminated string (or NULL to disable). When an FTP server asks for "account data" after user name and password has been provided, this data is sent off using the ACCT command. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">FTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.13.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_USERNAME.html">CURLOPT_USERNAME</a>, <a Class="manpage" href="./CURLOPT_PASSWORD.html">CURLOPT_PASSWORD</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.pdf b/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.pdf
new file mode 100644 (file)
index 0000000..def965a
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3 b/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3
new file mode 100644 (file)
index 0000000..b51e4dd
--- /dev/null
@@ -0,0 +1,50 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_FTP_ALTERNATIVE_TO_USER 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_FTP_ALTERNATIVE_TO_USER \- command to use instead of USER with FTP
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_ALTERNATIVE_TO_USER,
+                          char *cmd);
+.SH DESCRIPTION
+Pass a char * as parameter, pointing to a string which will be used to
+authenticate if the usual FTP "USER user" and "PASS password" negotiation
+fails. This is currently only known to be required when connecting to
+Tumbleweed's Secure Transport FTPS server using client certificates for
+authentication.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+FTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.15.5
+.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 CURLOPT_FTP_SKIP_PASV_IP "(3), " CURLOPT_FTP_RESPONSE_TIMEOUT "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.html b/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.html
new file mode 100644 (file)
index 0000000..f681034
--- /dev/null
@@ -0,0 +1,64 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_FTP_ALTERNATIVE_TO_USER man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_FTP_ALTERNATIVE_TO_USER - command to use instead of USER with FTP <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_ALTERNATIVE_TO_USER,
+ &nbsp;                         char *cmd);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * as parameter, pointing to a string which will be used to authenticate if the usual FTP "USER user" and "PASS password" negotiation fails. This is currently only known to be required when connecting to Tumbleweed's Secure Transport FTPS server using client certificates for authentication. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">FTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.15.5 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_FTP_SKIP_PASV_IP.html">CURLOPT_FTP_SKIP_PASV_IP</a>, <a Class="manpage" href="./CURLOPT_FTP_RESPONSE_TIMEOUT.html">CURLOPT_FTP_RESPONSE_TIMEOUT</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.pdf b/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.pdf
new file mode 100644 (file)
index 0000000..56fcd49
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3 b/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3
new file mode 100644 (file)
index 0000000..a52863e
--- /dev/null
@@ -0,0 +1,70 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_FTP_CREATE_MISSING_DIRS 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_FTP_CREATE_MISSING_DIRS \- create missing dirs for FTP and SFTP
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+typedef enum {
+  CURLFTP_CREATE_DIR_NONE,
+  CURLFTP_CREATE_DIR,
+  CURLFTP_CREATE_DIR_RETRY
+} curl_ftpcreatedir;
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_CREATE_MISSING_DIRS,
+                          long create);
+.SH DESCRIPTION
+Pass a long telling libcurl to \fIcreate\fP the dir. If the value is
+\fICURLFTP_CREATE_DIR\fP (1), libcurl will attempt to create any remote
+directory that it fails to "move" into.
+
+For FTP requests, that means a CWD command fails. CWD being the command that
+changes working directory.
+
+For SFTP requests, libcurl will attempt to create the remote directory if it
+can't obtain a handle to the target-location. The creation will fail if a file
+of the same name as the directory to create already exists or lack of
+permissions prevents creation.
+
+Setting \fIcreate\fP to \fICURLFTP_CREATE_DIR_RETRY\fP (2), tells libcurl to
+retry the CWD command again if the subsequent MKD command fails. This is
+especially useful if you're doing many simultaneous connections against the
+same server and they all have this option enabled, as then CWD may first fail
+but then another connection does MKD before this connection and thus MKD fails
+but trying CWD works!
+.SH DEFAULT
+CURLFTP_CREATE_DIR_NONE (0)
+.SH PROTOCOLS
+FTP and SFTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.10.7. SFTP support added in 7.16.3. The retry option was added in
+7.19.4.
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if the
+create value is not.
+.SH "SEE ALSO"
+.BR CURLOPT_FTP_FILEMETHOD "(3), " CURLOPT_FTP_USE_EPSV "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.html b/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.html
new file mode 100644 (file)
index 0000000..04f8c61
--- /dev/null
@@ -0,0 +1,72 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_FTP_CREATE_MISSING_DIRS man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_FTP_CREATE_MISSING_DIRS - create missing dirs for FTP and SFTP <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">typedef enum {
+ &nbsp; CURLFTP_CREATE_DIR_NONE,
+ &nbsp; CURLFTP_CREATE_DIR,
+ &nbsp; CURLFTP_CREATE_DIR_RETRY
+ } curl_ftpcreatedir;
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_CREATE_MISSING_DIRS,
+ &nbsp;                         long create);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long telling libcurl to <span Class="emphasis">create</span> the dir. If the value is <span Class="emphasis">CURLFTP_CREATE_DIR</span> (1), libcurl will attempt to create any remote directory that it fails to "move" into. 
+<p class="level0">For FTP requests, that means a CWD command fails. CWD being the command that changes working directory. 
+<p class="level0">For SFTP requests, libcurl will attempt to create the remote directory if it can't obtain a handle to the target-location. The creation will fail if a file of the same name as the directory to create already exists or lack of permissions prevents creation. 
+<p class="level0">Setting <span Class="emphasis">create</span> to <span Class="emphasis">CURLFTP_CREATE_DIR_RETRY</span> (2), tells libcurl to retry the CWD command again if the subsequent MKD command fails. This is especially useful if you're doing many simultaneous connections against the same server and they all have this option enabled, as then CWD may first fail but then another connection does MKD before this connection and thus MKD fails but trying CWD works! <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">CURLFTP_CREATE_DIR_NONE (0) <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">FTP and SFTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.10.7. SFTP support added in 7.16.3. The retry option was added in 7.19.4. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if the create value is not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_FTP_FILEMETHOD.html">CURLOPT_FTP_FILEMETHOD</a>, <a Class="manpage" href="./CURLOPT_FTP_USE_EPSV.html">CURLOPT_FTP_USE_EPSV</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.pdf b/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.pdf
new file mode 100644 (file)
index 0000000..adb73af
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3 b/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3
new file mode 100644 (file)
index 0000000..62396b9
--- /dev/null
@@ -0,0 +1,62 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_FTP_FILEMETHOD 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_FTP_FILEMETHOD \- select directory traversing method for FTP
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_FILEMETHOD,
+                          long method);
+.SH DESCRIPTION
+Pass a long telling libcurl which \fImethod\fP to use to reach a file on a
+FTP(S) server.
+
+This option exists because some server implementations aren't compliant to
+what the standards say should work.
+
+The argument should be one of the following alternatives:
+.IP CURLFTPMETHOD_MULTICWD
+libcurl does a single CWD operation for each path part in the given URL. For
+deep hierarchies this means many commands. This is how RFC1738 says it should
+be done. This is the default but the slowest behavior.
+.IP CURLFTPMETHOD_NOCWD
+libcurl does no CWD at all. libcurl will do SIZE, RETR, STOR etc and give a
+full path to the server for all these commands. This is the fastest behavior.
+.IP CURLFTPMETHOD_SINGLECWD
+libcurl does one CWD with the full target directory and then operates on the
+file \&"normally" (like in the multicwd case). This is somewhat more standards
+compliant than 'nocwd' but without the full penalty of 'multicwd'.
+.SH DEFAULT
+CURLFTPMETHOD_MULTICWD
+.SH PROTOCOLS
+FTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.15.1
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_FTPLISTONLY "(3), " CURLOPT_FTP_SKIP_PASV_IP "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.html b/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.html
new file mode 100644 (file)
index 0000000..1ffba47
--- /dev/null
@@ -0,0 +1,72 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_FTP_FILEMETHOD man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_FTP_FILEMETHOD - select directory traversing method for FTP <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_FILEMETHOD,
+ &nbsp;                         long method);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long telling libcurl which <span Class="emphasis">method</span> to use to reach a file on a FTP(S) server. 
+<p class="level0">This option exists because some server implementations aren't compliant to what the standards say should work. 
+<p class="level0">The argument should be one of the following alternatives: 
+<p class="level0"><a name="CURLFTPMETHODMULTICWD"></a><span class="nroffip">CURLFTPMETHOD_MULTICWD</span> 
+<p class="level1">libcurl does a single CWD operation for each path part in the given URL. For deep hierarchies this means many commands. This is how <a href="http://www.ietf.org/rfc/rfc1738.txt">RFC 1738</a> says it should be done. This is the default but the slowest behavior. 
+<p class="level0"><a name="CURLFTPMETHODNOCWD"></a><span class="nroffip">CURLFTPMETHOD_NOCWD</span> 
+<p class="level1">libcurl does no CWD at all. libcurl will do SIZE, RETR, STOR etc and give a full path to the server for all these commands. This is the fastest behavior. 
+<p class="level0"><a name="CURLFTPMETHODSINGLECWD"></a><span class="nroffip">CURLFTPMETHOD_SINGLECWD</span> 
+<p class="level1">libcurl does one CWD with the full target directory and then operates on the file "normally" (like in the multicwd case). This is somewhat more standards compliant than 'nocwd' but without the full penalty of 'multicwd'. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">CURLFTPMETHOD_MULTICWD <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">FTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.15.1 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><span Class="manpage">CURLOPT_FTPLISTONLY (3)</span> <a Class="manpage" href="./CURLOPT_FTP_SKIP_PASV_IP.html">CURLOPT_FTP_SKIP_PASV_IP</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.pdf b/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.pdf
new file mode 100644 (file)
index 0000000..1b0e2e4
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3 b/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3
new file mode 100644 (file)
index 0000000..18dbc2f
--- /dev/null
@@ -0,0 +1,50 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_FTP_RESPONSE_TIMEOUT 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_FTP_RESPONSE_TIMEOUT \- time allowed to wait for FTP response
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_RESPONSE_TIMEOUT, long timeout);
+.SH DESCRIPTION
+Pass a long.  Causes libcurl to set a \fItimeout\fP period (in seconds) on the
+amount of time that the server is allowed to take in order to send a response
+message for a command before the session is considered dead.  While libcurl is
+waiting for a response, this value overrides \fICURLOPT_TIMEOUT(3)\fP. It is
+recommended that if used in conjunction with \fICURLOPT_TIMEOUT(3)\fP, you set
+\fICURLOPT_FTP_RESPONSE_TIMEOUT(3)\fP to a value smaller than
+\fICURLOPT_TIMEOUT(3)\fP.
+.SH DEFAULT
+None
+.SH PROTOCOLS
+FTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.10.8
+.SH RETURN VALUE
+Returns CURLE_OK if FTP is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_TIMEOUT "(3), " CURLOPT_CONNECTTIMEOUT "(3), "
+.BR CURLOPT_LOW_SPEED_LIMIT "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.html b/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.html
new file mode 100644 (file)
index 0000000..98a833c
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_FTP_RESPONSE_TIMEOUT man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_FTP_RESPONSE_TIMEOUT - time allowed to wait for FTP response <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_RESPONSE_TIMEOUT, long timeout); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long.  Causes libcurl to set a <span Class="emphasis">timeout</span> period (in seconds) on the amount of time that the server is allowed to take in order to send a response message for a command before the session is considered dead.  While libcurl is waiting for a response, this value overrides <a Class="emphasis" href="./CURLOPT_TIMEOUT.html">CURLOPT_TIMEOUT</a>. It is recommended that if used in conjunction with <a Class="emphasis" href="./CURLOPT_TIMEOUT.html">CURLOPT_TIMEOUT</a>, you set <a Class="emphasis" href="./CURLOPT_FTP_RESPONSE_TIMEOUT.html">CURLOPT_FTP_RESPONSE_TIMEOUT</a> to a value smaller than <a Class="emphasis" href="./CURLOPT_TIMEOUT.html">CURLOPT_TIMEOUT</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">None <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">FTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.10.8 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if FTP is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_TIMEOUT.html">CURLOPT_TIMEOUT</a>, <a Class="manpage" href="./CURLOPT_CONNECTTIMEOUT.html">CURLOPT_CONNECTTIMEOUT</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_LOW_SPEED_LIMIT.html">CURLOPT_LOW_SPEED_LIMIT</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.pdf b/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.pdf
new file mode 100644 (file)
index 0000000..f52ae68
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3 b/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3
new file mode 100644 (file)
index 0000000..b1803fd
--- /dev/null
@@ -0,0 +1,52 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_FTP_SKIP_PASV_IP 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_FTP_SKIP_PASV_IP \- ignore the IP address in the PASV response
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_SKIP_PASV_IP, long skip);
+.SH DESCRIPTION
+Pass a long. If \fIskip\fP is set to 1, it instructs libcurl to not use the IP
+address the server suggests in its 227-response to libcurl's PASV command when
+libcurl connects the data connection. Instead libcurl will re-use the same IP
+address it already uses for the control connection. But it will use the port
+number from the 227-response.
+
+This option thus allows libcurl to work around broken server installations
+that due to NATs, firewalls or incompetence report the wrong IP address back.
+
+This option has no effect if PORT, EPRT or EPSV is used instead of PASV.
+.SH DEFAULT
+0
+.SH PROTOCOLS
+FTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.14.2
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_FTPPORT "(3), " CURLOPT_FTP_USE_EPRT "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.html b/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.html
new file mode 100644 (file)
index 0000000..35b781e
--- /dev/null
@@ -0,0 +1,62 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_FTP_SKIP_PASV_IP man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_FTP_SKIP_PASV_IP - ignore the IP address in the PASV response <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_SKIP_PASV_IP, long skip); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long. If <span Class="emphasis">skip</span> is set to 1, it instructs libcurl to not use the IP address the server suggests in its 227-response to libcurl's PASV command when libcurl connects the data connection. Instead libcurl will re-use the same IP address it already uses for the control connection. But it will use the port number from the 227-response. 
+<p class="level0">This option thus allows libcurl to work around broken server installations that due to NATs, firewalls or incompetence report the wrong IP address back. 
+<p class="level0">This option has no effect if PORT, EPRT or EPSV is used instead of PASV. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">FTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.14.2 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_FTPPORT.html">CURLOPT_FTPPORT</a>, <a Class="manpage" href="./CURLOPT_FTP_USE_EPRT.html">CURLOPT_FTP_USE_EPRT</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.pdf b/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.pdf
new file mode 100644 (file)
index 0000000..b9ae302
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3 b/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3
new file mode 100644 (file)
index 0000000..5391285
--- /dev/null
@@ -0,0 +1,54 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_FTP_SSL_CCC 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_FTP_SSL_CCC \- switch off SSL again with FTP after auth
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_SSL_CCC,
+                          long how);
+.SH DESCRIPTION
+If enabled, this option makes libcurl use CCC (Clear Command Channel). It
+shuts down the SSL/TLS layer after authenticating. The rest of the control
+channel communication will be unencrypted. This allows NAT routers to follow
+the FTP transaction. Pass a long using one of the values below
+.IP CURLFTPSSL_CCC_NONE
+Don't attempt to use CCC.
+.IP CURLFTPSSL_CCC_PASSIVE
+Do not initiate the shutdown, but wait for the server to do it. Do not send a
+reply.
+.IP CURLFTPSSL_CCC_ACTIVE
+Initiate the shutdown and wait for a reply.
+.SH DEFAULT
+CURLFTPSSL_CCC_NONE
+.SH PROTOCOLS
+FTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.16.1
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_USE_SSL "(3), " CURLOPT_FTPSSLAUTH "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.html b/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.html
new file mode 100644 (file)
index 0000000..051cdcc
--- /dev/null
@@ -0,0 +1,66 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_FTP_SSL_CCC man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_FTP_SSL_CCC - switch off SSL again with FTP after auth <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_SSL_CCC, &nbsp;                         long how); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">If enabled, this option makes libcurl use CCC (Clear Command Channel). It shuts down the SSL/TLS layer after authenticating. The rest of the control channel communication will be unencrypted. This allows NAT routers to follow the FTP transaction. Pass a long using one of the values below 
+<p class="level0"><a name="CURLFTPSSLCCCNONE"></a><span class="nroffip">CURLFTPSSL_CCC_NONE</span> 
+<p class="level1">Don't attempt to use CCC. 
+<p class="level0"><a name="CURLFTPSSLCCCPASSIVE"></a><span class="nroffip">CURLFTPSSL_CCC_PASSIVE</span> 
+<p class="level1">Do not initiate the shutdown, but wait for the server to do it. Do not send a reply. 
+<p class="level0"><a name="CURLFTPSSLCCCACTIVE"></a><span class="nroffip">CURLFTPSSL_CCC_ACTIVE</span> 
+<p class="level1">Initiate the shutdown and wait for a reply. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">CURLFTPSSL_CCC_NONE <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">FTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.16.1 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_USE_SSL.html">CURLOPT_USE_SSL</a>, <a Class="manpage" href="./CURLOPT_FTPSSLAUTH.html">CURLOPT_FTPSSLAUTH</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.pdf b/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.pdf
new file mode 100644 (file)
index 0000000..fc5a13b
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3 b/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3
new file mode 100644 (file)
index 0000000..d26af0c
--- /dev/null
@@ -0,0 +1,47 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_FTP_USE_EPRT 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_FTP_USE_EPRT \- enable/disable use of EPRT with FTP
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_EPRT, long enabled);
+.SH DESCRIPTION
+Pass a long. If the value is 1, it tells curl to use the EPRT command when
+doing active FTP downloads (which is enabled by
+\fICURLOPT_FTPPORT(3)\fP). Using EPRT means that it will first attempt to use
+EPRT before using PORT, but if you pass zero to this option, it will not try
+using EPRT, only plain PORT.
+
+If the server is an IPv6 host, this option will have no effect as EPRT is
+necessary then.
+.SH DEFAULT
+.SH PROTOCOLS
+.SH EXAMPLE
+.SH AVAILABILITY
+Added in 7.10.5
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_FTP_USE_EPSV "(3), " CURLOPT_FTPPORT "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.html b/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.html
new file mode 100644 (file)
index 0000000..bc48556
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_FTP_USE_EPRT man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_FTP_USE_EPRT - enable/disable use of EPRT with FTP <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_EPRT, long enabled); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long. If the value is 1, it tells curl to use the EPRT command when doing active FTP downloads (which is enabled by <a Class="emphasis" href="./CURLOPT_FTPPORT.html">CURLOPT_FTPPORT</a>). Using EPRT means that it will first attempt to use EPRT before using PORT, but if you pass zero to this option, it will not try using EPRT, only plain PORT. 
+<p class="level0">If the server is an IPv6 host, this option will have no effect as EPRT is necessary then. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0"><a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0"><a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.10.5 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_FTP_USE_EPSV.html">CURLOPT_FTP_USE_EPSV</a>, <a Class="manpage" href="./CURLOPT_FTPPORT.html">CURLOPT_FTPPORT</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.pdf b/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.pdf
new file mode 100644 (file)
index 0000000..7b8530a
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3 b/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3
new file mode 100644 (file)
index 0000000..172985a
--- /dev/null
@@ -0,0 +1,48 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_FTP_USE_EPSV 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_FTP_USE_EPSV \- enable/disable use of EPSV
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_EPSV, long epsv);
+.SH DESCRIPTION
+Pass \fIepsv\fP as a long. If the value is 1, it tells curl to use the EPSV
+command when doing passive FTP downloads (which it does by default). Using
+EPSV means that it will first attempt to use EPSV before using PASV, but if
+you pass zero to this option, it will not try using EPSV, only plain PASV.
+
+If the server is an IPv6 host, this option will have no effect as of 7.12.3.
+.SH DEFAULT
+1
+.SH PROTOCOLS
+FTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Along with FTP
+.SH RETURN VALUE
+Returns CURLE_OK if FTP is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_FTP_USE_EPRT "(3), " CURLOPT_FTPPORT "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.html b/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.html
new file mode 100644 (file)
index 0000000..3ebd105
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_FTP_USE_EPSV man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_FTP_USE_EPSV - enable/disable use of EPSV <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_EPSV, long epsv); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass <span Class="emphasis">epsv</span> as a long. If the value is 1, it tells curl to use the EPSV command when doing passive FTP downloads (which it does by default). Using EPSV means that it will first attempt to use EPSV before using PASV, but if you pass zero to this option, it will not try using EPSV, only plain PASV. 
+<p class="level0">If the server is an IPv6 host, this option will have no effect as of 7.12.3. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">1 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">FTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Along with FTP <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if FTP is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_FTP_USE_EPRT.html">CURLOPT_FTP_USE_EPRT</a>, <a Class="manpage" href="./CURLOPT_FTPPORT.html">CURLOPT_FTPPORT</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.pdf b/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.pdf
new file mode 100644 (file)
index 0000000..2da1671
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3 b/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3
new file mode 100644 (file)
index 0000000..b20f3fb
--- /dev/null
@@ -0,0 +1,46 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_FTP_USE_PRET 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_FTP_USE_PRET \- enable the PRET command
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_PRET, long enable);
+.SH DESCRIPTION
+Pass a long. If the value is 1, it tells curl to send a PRET command before
+PASV (and EPSV). Certain FTP servers, mainly drftpd, require this non-standard
+command for directory listings as well as up and downloads in PASV mode. Has
+no effect when using the active FTP transfers mode.
+.SH DEFAULT
+0
+.SH PROTOCOLS
+FTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.20.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_FTP_USE_EPRT "(3), " CURLOPT_FTP_USE_EPSV "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.html b/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.html
new file mode 100644 (file)
index 0000000..f2cfc71
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_FTP_USE_PRET man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_FTP_USE_PRET - enable the PRET command <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_PRET, long enable); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long. If the value is 1, it tells curl to send a PRET command before PASV (and EPSV). Certain FTP servers, mainly drftpd, require this non-standard command for directory listings as well as up and downloads in PASV mode. Has no effect when using the active FTP transfers mode. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">FTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.20.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_FTP_USE_EPRT.html">CURLOPT_FTP_USE_EPRT</a>, <a Class="manpage" href="./CURLOPT_FTP_USE_EPSV.html">CURLOPT_FTP_USE_EPSV</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.pdf b/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.pdf
new file mode 100644 (file)
index 0000000..c48929a
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3 b/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3
new file mode 100644 (file)
index 0000000..13f3cec
--- /dev/null
@@ -0,0 +1,48 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_GSSAPI_DELEGATION 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_GSSAPI_DELEGATION \- set allowed GSS-API delegation
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_GSSAPI_DELEGATION, long level);
+.SH DESCRIPTION
+Set the long parameter \fIlevel\fP to CURLGSSAPI_DELEGATION_FLAG to allow
+unconditional GSSAPI credential delegation.  The delegation is disabled by
+default since 7.21.7.  Set the parameter to CURLGSSAPI_DELEGATION_POLICY_FLAG
+to delegate only if the OK-AS-DELEGATE flag is set in the service ticket in
+case this feature is supported by the GSS-API implementation and the definition
+of GSS_C_DELEG_POLICY_FLAG was available at compile-time.
+.SH DEFAULT
+CURLGSSAPI_DELEGATION_NONE
+.SH PROTOCOLS
+HTTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.22.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_HTTPAUTH "(3), " CURLOPT_PROXYAUTH "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.html b/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.html
new file mode 100644 (file)
index 0000000..f9beaf9
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_GSSAPI_DELEGATION man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_GSSAPI_DELEGATION - set allowed GSS-API delegation <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_GSSAPI_DELEGATION, long level); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Set the long parameter <span Class="emphasis">level</span> to CURLGSSAPI_DELEGATION_FLAG to allow unconditional GSSAPI credential delegation.  The delegation is disabled by default since 7.21.7.  Set the parameter to CURLGSSAPI_DELEGATION_POLICY_FLAG to delegate only if the OK-AS-DELEGATE flag is set in the service ticket in case this feature is supported by the GSS-API implementation and the definition of GSS_C_DELEG_POLICY_FLAG was available at compile-time. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">CURLGSSAPI_DELEGATION_NONE <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.22.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_HTTPAUTH.html">CURLOPT_HTTPAUTH</a>, <a Class="manpage" href="./CURLOPT_PROXYAUTH.html">CURLOPT_PROXYAUTH</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.pdf b/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.pdf
new file mode 100644 (file)
index 0000000..d7c67be
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_HEADER.3 b/docs/libcurl/opts/CURLOPT_HEADER.3
new file mode 100644 (file)
index 0000000..130575a
--- /dev/null
@@ -0,0 +1,46 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.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 <curl/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).
+
+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
+about the protocol in use.
+
+It is often better to use \fICURLOPT_HEADERFUNCTION(3)\fP to get the header
+data separately.
+.SH DEFAULT
+0
+.SH RETURN VALUE
+Returns CURLE_OK.
+.SH "SEE ALSO"
+.BR CURLOPT_HEADERFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_HEADER.html b/docs/libcurl/opts/CURLOPT_HEADER.html
new file mode 100644 (file)
index 0000000..7cbb9d3
--- /dev/null
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_HEADER man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_HEADER - pass headers to the data stream <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADER, long onoff); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass in <span Class="emphasis">onoff</span> set to 1 to tell the library to include the header in the body output for requests with this <span Class="emphasis">handle</span>. This option is relevant for protocols that actually have headers or other meta-data (like HTTP and FTP). 
+<p class="level0">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 about the protocol in use. 
+<p class="level0">It is often better to use <a Class="emphasis" href="./CURLOPT_HEADERFUNCTION.html">CURLOPT_HEADERFUNCTION</a> to get the header data separately. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_HEADERFUNCTION.html">CURLOPT_HEADERFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_HEADER.pdf b/docs/libcurl/opts/CURLOPT_HEADER.pdf
new file mode 100644 (file)
index 0000000..b4168cf
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_HEADER.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_HEADERDATA.3 b/docs/libcurl/opts/CURLOPT_HEADERDATA.3
new file mode 100644 (file)
index 0000000..c0a45f2
--- /dev/null
@@ -0,0 +1,50 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_HEADERDATA 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_HEADERDATA \- pointer to pass to header callback
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADERDATA, void *pointer);
+.SH DESCRIPTION
+Pass a \fIpointer\fP to be used to write the header part of the received data
+to.
+
+If \fICURLOPT_WRITEFUNCTION(3)\fP or \fICURLOPT_HEADERFUNCTION(3)\fP is used,
+\fIpointer\fP will be passed in to the respective callback.
+
+If neither of those options are set, \fIpointer\fP must be a valid FILE * and
+it will be used by a plain fwrite() to write headers to.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_HEADERFUNCTION "(3), " CURLOPT_WRITEFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_HEADERDATA.html b/docs/libcurl/opts/CURLOPT_HEADERDATA.html
new file mode 100644 (file)
index 0000000..122cad9
--- /dev/null
@@ -0,0 +1,62 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_HEADERDATA man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_HEADERDATA - pointer to pass to header callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADERDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a <span Class="emphasis">pointer</span> to be used to write the header part of the received data to. 
+<p class="level0">If <a Class="emphasis" href="./CURLOPT_WRITEFUNCTION.html">CURLOPT_WRITEFUNCTION</a> or <a Class="emphasis" href="./CURLOPT_HEADERFUNCTION.html">CURLOPT_HEADERFUNCTION</a> is used, <span Class="emphasis">pointer</span> will be passed in to the respective callback. 
+<p class="level0">If neither of those options are set, <span Class="emphasis">pointer</span> must be a valid FILE * and it will be used by a plain fwrite() to write headers to. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_HEADERFUNCTION.html">CURLOPT_HEADERFUNCTION</a>, <a Class="manpage" href="./CURLOPT_WRITEFUNCTION.html">CURLOPT_WRITEFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_HEADERDATA.pdf b/docs/libcurl/opts/CURLOPT_HEADERDATA.pdf
new file mode 100644 (file)
index 0000000..1c28b8c
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_HEADERDATA.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3 b/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3
new file mode 100644 (file)
index 0000000..b6100f2
--- /dev/null
@@ -0,0 +1,89 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.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 <curl/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 \fIptr\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 \fICURL_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 DEFAULT
+Nothing.
+.SH PROTOCOLS
+Used for all protocols with headers or meta-data concept: HTTP, FTP, POP3,
+IMAP, SMTP and more.
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_HEADERDATA "(3), " CURLOPT_WRITEFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.html b/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.html
new file mode 100644 (file)
index 0000000..8d112ce
--- /dev/null
@@ -0,0 +1,67 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_HEADERFUNCTION man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_HEADERFUNCTION - callback that receives header data <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">size_t header_callback(char *buffer, &nbsp;                      size_t size, &nbsp;                      size_t nitems, &nbsp;                      void *userdata); 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADERFUNCTION, header_callback); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
+<p class="level0">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 <span Class="emphasis">ptr</span> is <span Class="emphasis">size</span> multiplied with <span Class="emphasis">nmemb</span>. Do not assume that the header line is zero terminated! The pointer named <span Class="emphasis">userdata</span> is the one you set with the <a Class="emphasis" href="./CURLOPT_HEADERDATA.html">CURLOPT_HEADERDATA</a> 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 <span Class="emphasis">CURL_WRITE_ERROR</span>. 
+<p class="level0">A complete HTTP header that is passed to this function can be up to <span Class="emphasis">CURL_MAX_HTTP_HEADER</span> (100K) bytes. 
+<p class="level0">If this option is not set, or if it is set to NULL, but <a Class="emphasis" href="./CURLOPT_HEADERDATA.html">CURLOPT_HEADERDATA</a> 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 <a Class="emphasis" href="./CURLOPT_WRITEFUNCTION.html">CURLOPT_WRITEFUNCTION</a>, or if it is not specified or NULL - the default, stream-writing function. 
+<p class="level0">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. 
+<p class="level0">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. 
+<p class="level0">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. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">Nothing. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">Used for all protocols with headers or meta-data concept: HTTP, FTP, POP3, IMAP, SMTP and more. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_HEADERDATA.html">CURLOPT_HEADERDATA</a>, <a Class="manpage" href="./CURLOPT_WRITEFUNCTION.html">CURLOPT_WRITEFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.pdf b/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.pdf
new file mode 100644 (file)
index 0000000..acf174a
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_HEADEROPT.3 b/docs/libcurl/opts/CURLOPT_HEADEROPT.3
new file mode 100644 (file)
index 0000000..be96d7d
--- /dev/null
@@ -0,0 +1,57 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_HEADEROPT 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_HEADEROPT \- set how to send HTTP headers
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADEROPT, long bitmask);
+.SH DESCRIPTION
+Pass a long that is a bitmask of options of how to deal with headers. The two
+mutually exclusive options are:
+
+\fBCURLHEADER_UNIFIED\fP - keep working as before. This means
+\fICURLOPT_HTTPHEADER(3)\fP headers will be used in requests both to servers
+and proxies. With this option enabled, \fICURLOPT_PROXYHEADER(3)\fP will not
+have any effect.
+
+\fBCURLHEADER_SEPARATE\fP - makes \fICURLOPT_HTTPHEADER(3)\fP headers only get
+sent to a server and not to a proxy. Proxy headers must be set with
+\fICURLOPT_PROXYHEADER(3)\fP to get used. Note that if a non-CONNECT request
+is sent to a proxy, libcurl will send both server headers and proxy
+headers. When doing CONNECT, libcurl will send \fICURLOPT_PROXYHEADER(3)\fP
+headers only to the proxy and then \fICURLOPT_HTTPHEADER(3)\fP headers only to
+the server.
+.SH DEFAULT
+CURLHEADER_UNIFIED
+.SH PROTOCOLS
+HTTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.37.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_HTTPHEADER "(3), " CURLOPT_PROXYHEADER "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_HEADEROPT.html b/docs/libcurl/opts/CURLOPT_HEADEROPT.html
new file mode 100644 (file)
index 0000000..dbcd319
--- /dev/null
@@ -0,0 +1,62 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_HEADEROPT man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_HEADEROPT - set how to send HTTP headers <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADEROPT, long bitmask); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long that is a bitmask of options of how to deal with headers. The two mutually exclusive options are: 
+<p class="level0"><span Class="bold">CURLHEADER_UNIFIED</span> - keep working as before. This means <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a> headers will be used in requests both to servers and proxies. With this option enabled, <a Class="emphasis" href="./CURLOPT_PROXYHEADER.html">CURLOPT_PROXYHEADER</a> will not have any effect. 
+<p class="level0"><span Class="bold">CURLHEADER_SEPARATE</span> - makes <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a> headers only get sent to a server and not to a proxy. Proxy headers must be set with <a Class="emphasis" href="./CURLOPT_PROXYHEADER.html">CURLOPT_PROXYHEADER</a> to get used. Note that if a non-CONNECT request is sent to a proxy, libcurl will send both server headers and proxy headers. When doing CONNECT, libcurl will send <a Class="emphasis" href="./CURLOPT_PROXYHEADER.html">CURLOPT_PROXYHEADER</a> headers only to the proxy and then <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a> headers only to the server. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">CURLHEADER_UNIFIED <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.37.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a>, <a Class="manpage" href="./CURLOPT_PROXYHEADER.html">CURLOPT_PROXYHEADER</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_HEADEROPT.pdf b/docs/libcurl/opts/CURLOPT_HEADEROPT.pdf
new file mode 100644 (file)
index 0000000..686bd20
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_HEADEROPT.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3 b/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3
new file mode 100644 (file)
index 0000000..1454ed1
--- /dev/null
@@ -0,0 +1,56 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_HTTP200ALIASES 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_HTTP200ALIASES \- specify alternative matches for HTTP 200 OK
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP200ALIASES,
+                          struct curl_slist *aliases);
+.SH DESCRIPTION
+Pass a pointer to a linked list of \fIaliases\fP to be treated as valid HTTP
+200 responses.  Some servers respond with a custom header response line.  For
+example, IceCast servers respond with "ICY 200 OK".  By including this string
+in your list of aliases, the response will be treated as a valid HTTP header
+line such as "HTTP/1.0 200 OK".
+
+The linked list should be a fully valid list of struct curl_slist structs, and
+be 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.
+
+The alias itself is not parsed for any version strings. The protocol is
+assumed to match HTTP 1.0 when an alias match.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+HTTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.10.3
+.SH RETURN VALUE
+Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_HTTP_VERSION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.html b/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.html
new file mode 100644 (file)
index 0000000..72c6a9d
--- /dev/null
@@ -0,0 +1,66 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_HTTP200ALIASES man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_HTTP200ALIASES - specify alternative matches for HTTP 200 OK <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP200ALIASES,
+ &nbsp;                         struct curl_slist *aliases);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to a linked list of <span Class="emphasis">aliases</span> to be treated as valid HTTP 200 responses.  Some servers respond with a custom header response line.  For example, IceCast servers respond with "ICY 200 OK".  By including this string in your list of aliases, the response will be treated as a valid HTTP header line such as "HTTP/1.0 200 OK". 
+<p class="level0">The linked list should be a fully valid list of struct curl_slist structs, and be properly filled in.  Use <span Class="emphasis">curl_slist_append(3)</span> to create the list and <span Class="emphasis">curl_slist_free_all(3)</span> to clean up an entire list. 
+<p class="level0">The alias itself is not parsed for any version strings. The protocol is assumed to match HTTP 1.0 when an alias match. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.10.3 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_HTTP_VERSION.html">CURLOPT_HTTP_VERSION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.pdf b/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.pdf
new file mode 100644 (file)
index 0000000..714de64
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_HTTPAUTH.3 b/docs/libcurl/opts/CURLOPT_HTTPAUTH.3
new file mode 100644 (file)
index 0000000..35d75aa
--- /dev/null
@@ -0,0 +1,116 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_HTTPAUTH 3 "2 Aug 2014" "libcurl 7.38.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_HTTPAUTH \- set HTTP server authentication methods to try
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPAUTH, long bitmask);
+.SH DESCRIPTION
+Pass a long as parameter, which is set to a bitmask, to tell libcurl which
+authentication method(s) you want it to use speaking to the remote server.
+
+The available bits are listed below. If more than one bit is set, libcurl will
+first query the site to see which authentication methods it supports and then
+pick the best one you allow it to use. For some methods, this will induce an
+extra network round-trip. Set the actual name and password with the
+\fICURLOPT_USERPWD(3)\fP option or with the \fICURLOPT_USERNAME(3)\fP and the
+\fICURLOPT_PASSWORD(3)\fP options.
+
+For authentication with a proxy, see \fICURLOPT_PROXYAUTH(3)\fP.
+
+.IP CURLAUTH_BASIC
+HTTP Basic authentication. This is the default choice, and the only method
+that is in wide-spread use and supported virtually everywhere. This sends
+the user name and password over the network in plain text, easily captured by
+others.
+.IP CURLAUTH_DIGEST
+HTTP Digest authentication.  Digest authentication is defined in RFC2617 and
+is a more secure way to do authentication over public networks than the
+regular old-fashioned Basic method.
+.IP CURLAUTH_DIGEST_IE
+HTTP Digest authentication with an IE flavor.  Digest authentication is
+defined in RFC2617 and is a more secure way to do authentication over public
+networks than the regular old-fashioned Basic method. The IE flavor is simply
+that libcurl will use a special "quirk" that IE is known to have used before
+version 7 and that some servers require the client to use.
+.IP CURLAUTH_NEGOTIATE
+HTTP Negotiate (SPNEGO) authentication. Negotiate authentication is defined
+in RFC 4559 and is the most secure way to perform authentication over HTTP.
+
+You need to build libcurl with a suitable GSS-API library or SSPI on Windows
+for this to work.
+.IP CURLAUTH_NTLM
+HTTP NTLM authentication. A proprietary protocol invented and used by
+Microsoft. It uses a challenge-response and hash concept similar to Digest, to
+prevent the password from being eavesdropped.
+
+You need to build libcurl with either OpenSSL, GnuTLS or NSS support for this
+option to work, or build libcurl on Windows with SSPI support.
+.IP CURLAUTH_NTLM_WB
+NTLM delegating to winbind helper. Authentication is performed by a separate
+binary application that is executed when needed. The name of the application
+is specified at compile time but is typically /usr/bin/ntlm_auth
+
+Note that libcurl will fork when necessary to run the winbind application and
+kill it when complete, calling waitpid() to await its exit when done. On POSIX
+operating systems, killing the process will cause a SIGCHLD signal to be
+raised (regardless of whether \fICURLOPT_NOSIGNAL(3)\fP is set), which must be
+handled intelligently by the application. In particular, the application must
+not unconditionally call wait() in its SIGCHLD signal handler to avoid being
+subject to a race condition.  This behavior is subject to change in future
+versions of libcurl.
+.IP CURLAUTH_ANY
+This is a convenience macro that sets all bits and thus makes libcurl pick any
+it finds suitable. libcurl will automatically select the one it finds most
+secure.
+.IP CURLAUTH_ANYSAFE
+This is a convenience macro that sets all bits except Basic and thus makes
+libcurl pick any it finds suitable. libcurl will automatically select the one
+it finds most secure.
+.IP CURLAUTH_ONLY
+This is a meta symbol. OR this value together with a single specific auth
+value to force libcurl to probe for un-restricted auth and if not, only that
+single auth algorithm is acceptable.
+.SH DEFAULT
+CURLAUTH_BASIC
+.SH PROTOCOLS
+HTTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Option Added in 7.10.6.
+
+CURLAUTH_DIGEST_IE was added added in 7.19.3
+
+CURLAUTH_ONLY was added in 7.21.3
+
+CURLAUTH_NTLM_WB was added in 7.22.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
+CURLE_NOT_BUILT_IN if the bitmask specified no supported authentication
+methods.
+.SH "SEE ALSO"
+.BR CURLOPT_PROXYAUTH "(3), " CURLOPT_USERPWD "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_HTTPAUTH.html b/docs/libcurl/opts/CURLOPT_HTTPAUTH.html
new file mode 100644 (file)
index 0000000..c184acb
--- /dev/null
@@ -0,0 +1,90 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_HTTPAUTH man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_HTTPAUTH - set HTTP server authentication methods to try <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPAUTH, long bitmask);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long as parameter, which is set to a bitmask, to tell libcurl which authentication method(s) you want it to use speaking to the remote server. 
+<p class="level0">The available bits are listed below. If more than one bit is set, libcurl will first query the site to see which authentication methods it supports and then pick the best one you allow it to use. For some methods, this will induce an extra network round-trip. Set the actual name and password with the <a Class="emphasis" href="./CURLOPT_USERPWD.html">CURLOPT_USERPWD</a> option or with the <a Class="emphasis" href="./CURLOPT_USERNAME.html">CURLOPT_USERNAME</a> and the <a Class="emphasis" href="./CURLOPT_PASSWORD.html">CURLOPT_PASSWORD</a> options. 
+<p class="level0">For authentication with a proxy, see <a Class="emphasis" href="./CURLOPT_PROXYAUTH.html">CURLOPT_PROXYAUTH</a>. 
+<p class="level0">
+<p class="level0"><a name="CURLAUTHBASIC"></a><span class="nroffip">CURLAUTH_BASIC</span> 
+<p class="level1">HTTP Basic authentication. This is the default choice, and the only method that is in wide-spread use and supported virtually everywhere. This sends the user name and password over the network in plain text, easily captured by others. 
+<p class="level0"><a name="CURLAUTHDIGEST"></a><span class="nroffip">CURLAUTH_DIGEST</span> 
+<p class="level1">HTTP Digest authentication.  Digest authentication is defined in <a href="http://www.ietf.org/rfc/rfc2617.txt">RFC 2617</a> and is a more secure way to do authentication over public networks than the regular old-fashioned Basic method. 
+<p class="level0"><a name="CURLAUTHDIGESTIE"></a><span class="nroffip">CURLAUTH_DIGEST_IE</span> 
+<p class="level1">HTTP Digest authentication with an IE flavor.  Digest authentication is defined in <a href="http://www.ietf.org/rfc/rfc2617.txt">RFC 2617</a> and is a more secure way to do authentication over public networks than the regular old-fashioned Basic method. The IE flavor is simply that libcurl will use a special "quirk" that IE is known to have used before version 7 and that some servers require the client to use. 
+<p class="level0"><a name="CURLAUTHNEGOTIATE"></a><span class="nroffip">CURLAUTH_NEGOTIATE</span> 
+<p class="level1">HTTP Negotiate (SPNEGO) authentication. Negotiate authentication is defined in <a href="http://www.ietf.org/rfc/rfc4559.txt">RFC 4559</a> and is the most secure way to perform authentication over HTTP. 
+<p class="level1">You need to build libcurl with a suitable GSS-API library or SSPI on Windows for this to work. 
+<p class="level0"><a name="CURLAUTHNTLM"></a><span class="nroffip">CURLAUTH_NTLM</span> 
+<p class="level1">HTTP NTLM authentication. A proprietary protocol invented and used by Microsoft. It uses a challenge-response and hash concept similar to Digest, to prevent the password from being eavesdropped. 
+<p class="level1">You need to build libcurl with either OpenSSL, GnuTLS or NSS support for this option to work, or build libcurl on Windows with SSPI support. 
+<p class="level0"><a name="CURLAUTHNTLMWB"></a><span class="nroffip">CURLAUTH_NTLM_WB</span> 
+<p class="level1">NTLM delegating to winbind helper. Authentication is performed by a separate binary application that is executed when needed. The name of the application is specified at compile time but is typically /usr/bin/ntlm_auth 
+<p class="level1">Note that libcurl will fork when necessary to run the winbind application and kill it when complete, calling waitpid() to await its exit when done. On POSIX operating systems, killing the process will cause a SIGCHLD signal to be raised (regardless of whether <a Class="emphasis" href="./CURLOPT_NOSIGNAL.html">CURLOPT_NOSIGNAL</a> is set), which must be handled intelligently by the application. In particular, the application must not unconditionally call wait() in its SIGCHLD signal handler to avoid being subject to a race condition.  This behavior is subject to change in future versions of libcurl. 
+<p class="level0"><a name="CURLAUTHANY"></a><span class="nroffip">CURLAUTH_ANY</span> 
+<p class="level1">This is a convenience macro that sets all bits and thus makes libcurl pick any it finds suitable. libcurl will automatically select the one it finds most secure. 
+<p class="level0"><a name="CURLAUTHANYSAFE"></a><span class="nroffip">CURLAUTH_ANYSAFE</span> 
+<p class="level1">This is a convenience macro that sets all bits except Basic and thus makes libcurl pick any it finds suitable. libcurl will automatically select the one it finds most secure. 
+<p class="level0"><a name="CURLAUTHONLY"></a><span class="nroffip">CURLAUTH_ONLY</span> 
+<p class="level1">This is a meta symbol. OR this value together with a single specific auth value to force libcurl to probe for un-restricted auth and if not, only that single auth algorithm is acceptable. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">CURLAUTH_BASIC <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Option Added in 7.10.6. 
+<p class="level0">CURLAUTH_DIGEST_IE was added added in 7.19.3 
+<p class="level0">CURLAUTH_ONLY was added in 7.21.3 
+<p class="level0">CURLAUTH_NTLM_WB was added in 7.22.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_NOT_BUILT_IN if the bitmask specified no supported authentication methods. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_PROXYAUTH.html">CURLOPT_PROXYAUTH</a>, <a Class="manpage" href="./CURLOPT_USERPWD.html">CURLOPT_USERPWD</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_HTTPAUTH.pdf b/docs/libcurl/opts/CURLOPT_HTTPAUTH.pdf
new file mode 100644 (file)
index 0000000..34aa232
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_HTTPAUTH.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_HTTPGET.3 b/docs/libcurl/opts/CURLOPT_HTTPGET.3
new file mode 100644 (file)
index 0000000..c14c387
--- /dev/null
@@ -0,0 +1,59 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_HTTPGET 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_HTTPGET \- ask for a HTTP GET request
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPGET, long useget);
+.SH DESCRIPTION
+Pass a long. If \fIuseget\fP is 1, this forces the HTTP request to get back to
+using GET. Usable if a POST, HEAD, PUT, etc has been used previously using the
+same curl \fIhandle\fP.
+
+When setting \fICURLOPT_HTTPGET(3)\fP to 1, it will automatically set
+\fICURLOPT_NOBODY(3)\fP to 0 and \fICURLOPT_UPLOAD(3)\fP to 0.
+.SH DEFAULT
+0
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+.nf
+curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+  /* use a GET to fetch this */ 
+  curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L);
+
+  /* Perform the request */ 
+  curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+Along with HTTP
+.SH RETURN VALUE
+Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_NOBODY "(3), " CURLOPT_UPLOAD "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_HTTPGET.html b/docs/libcurl/opts/CURLOPT_HTTPGET.html
new file mode 100644 (file)
index 0000000..cd70851
--- /dev/null
@@ -0,0 +1,72 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_HTTPGET man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_HTTPGET - ask for a HTTP GET request <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPGET, long useget); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long. If <span Class="emphasis">useget</span> is 1, this forces the HTTP request to get back to using GET. Usable if a POST, HEAD, PUT, etc has been used previously using the same curl <span Class="emphasis">handle</span>. 
+<p class="level0">When setting <a Class="emphasis" href="./CURLOPT_HTTPGET.html">CURLOPT_HTTPGET</a> to 1, it will automatically set <a Class="emphasis" href="./CURLOPT_NOBODY.html">CURLOPT_NOBODY</a> to 0 and <a Class="emphasis" href="./CURLOPT_UPLOAD.html">CURLOPT_UPLOAD</a> to 0. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP(S) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre>
+<p class="level0">curl = curl_easy_init();
+ if(curl) {
+ &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+ <p class="level0">&nbsp; /* use a GET to fetch this */ 
+ &nbsp; curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L);
+ <p class="level0">&nbsp; /* Perform the request */ 
+ &nbsp; curl_easy_perform(curl);
+ }
+ </pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Along with HTTP <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_NOBODY.html">CURLOPT_NOBODY</a>, <a Class="manpage" href="./CURLOPT_UPLOAD.html">CURLOPT_UPLOAD</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_HTTPGET.pdf b/docs/libcurl/opts/CURLOPT_HTTPGET.pdf
new file mode 100644 (file)
index 0000000..2bb9c9e
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_HTTPGET.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_HTTPHEADER.3 b/docs/libcurl/opts/CURLOPT_HTTPHEADER.3
new file mode 100644 (file)
index 0000000..10fcf08
--- /dev/null
@@ -0,0 +1,83 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_HTTPHEADER 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_HTTPHEADER \- set custom HTTP headers
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPHEADER, struct curl_slist *headers);
+.SH DESCRIPTION
+Pass a pointer to a linked list of HTTP headers to pass to the server and/or
+proxy in your HTTP request. The same list can be used for both host and proxy
+requests!
+
+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. If you add a
+header that is otherwise generated and used by libcurl internally, your added
+one will be used instead. If you add a header with no content as in 'Accept:'
+(no data on the right side of the colon), the internally used header will get
+disabled. With this option you can add new headers, replace internal headers
+and remove internal headers. To add a header with no content (nothing to the
+right side of the colon), use the form 'MyHeader;' (note the ending
+semicolon).
+
+The headers included in the linked list \fBmust not\fP be CRLF-terminated,
+because libcurl adds CRLF after each header item. Failure to comply with this
+will result in strange bugs because the server will most likely ignore part of
+the headers you specified.
+
+The first line in a request (containing the method, usually a GET or POST) is
+not a header and cannot be replaced using this option. Only the lines
+following the request-line are headers. Adding this method line in this list
+of headers will only cause your request to send an invalid header. Use
+\fICURLOPT_CUSTOMREQUEST(3)\fP to change the method.
+
+When this option is passed to \fIcurl_easy_setopt(3)\fP, libcurl will not copy
+the entire list so you \fBmust\fP keep it around until you no longer use this
+\fIhandle\fP for a transfer before you call \fIcurl_slist_free_all(3)\fP on
+the list.
+
+Pass a NULL to this option to reset back to no custom headers.
+
+The most commonly replaced headers have "shortcuts" in the options
+\fICURLOPT_COOKIE(3)\fP, \fICURLOPT_USERAGENT(3)\fP and
+\fICURLOPT_REFERER(3)\fP.
+
+There's an alternative option that sets or replaces headers only for requests
+that are sent with CONNECT to a proxy: \fICURLOPT_PROXYHEADER(3)\fP. Use
+\fICURLOPT_HEADEROPT(3)\fP to control the behavior.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+HTTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+As long as HTTP is enabled
+.SH RETURN VALUE
+Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_CUSTOMREQUEST "(3), " CURLOPT_HEADEROPT "(3), "
+.BR CURLOPT_PROXYHEADER "(3)"
diff --git a/docs/libcurl/opts/CURLOPT_HTTPHEADER.html b/docs/libcurl/opts/CURLOPT_HTTPHEADER.html
new file mode 100644 (file)
index 0000000..308887a
--- /dev/null
@@ -0,0 +1,67 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_HTTPHEADER man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_HTTPHEADER - set custom HTTP headers <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPHEADER, struct curl_slist *headers); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to a linked list of HTTP headers to pass to the server and/or proxy in your HTTP request. The same list can be used for both host and proxy requests! 
+<p class="level0">The linked list should be a fully valid list of <span Class="bold">struct curl_slist</span> structs properly filled in. Use <span Class="emphasis">curl_slist_append(3)</span> to create the list and <span Class="emphasis">curl_slist_free_all(3)</span> to clean up an entire list. If you add a header that is otherwise generated and used by libcurl internally, your added one will be used instead. If you add a header with no content as in 'Accept:' (no data on the right side of the colon), the internally used header will get disabled. With this option you can add new headers, replace internal headers and remove internal headers. To add a header with no content (nothing to the right side of the colon), use the form 'MyHeader;' (note the ending semicolon). 
+<p class="level0">The headers included in the linked list <span Class="bold">must not</span> be CRLF-terminated, because libcurl adds CRLF after each header item. Failure to comply with this will result in strange bugs because the server will most likely ignore part of the headers you specified. 
+<p class="level0">The first line in a request (containing the method, usually a GET or POST) is not a header and cannot be replaced using this option. Only the lines following the request-line are headers. Adding this method line in this list of headers will only cause your request to send an invalid header. Use <a Class="emphasis" href="./CURLOPT_CUSTOMREQUEST.html">CURLOPT_CUSTOMREQUEST</a> to change the method. 
+<p class="level0">When this option is passed to <span Class="emphasis">curl_easy_setopt(3)</span>, libcurl will not copy the entire list so you <span Class="bold">must</span> keep it around until you no longer use this <span Class="emphasis">handle</span> for a transfer before you call <span Class="emphasis">curl_slist_free_all(3)</span> on the list. 
+<p class="level0">Pass a NULL to this option to reset back to no custom headers. 
+<p class="level0">The most commonly replaced headers have "shortcuts" in the options <a Class="emphasis" href="./CURLOPT_COOKIE.html">CURLOPT_COOKIE</a>, <a Class="emphasis" href="./CURLOPT_USERAGENT.html">CURLOPT_USERAGENT</a> and <a Class="emphasis" href="./CURLOPT_REFERER.html">CURLOPT_REFERER</a>. 
+<p class="level0">There's an alternative option that sets or replaces headers only for requests that are sent with CONNECT to a proxy: <a Class="emphasis" href="./CURLOPT_PROXYHEADER.html">CURLOPT_PROXYHEADER</a>. Use <a Class="emphasis" href="./CURLOPT_HEADEROPT.html">CURLOPT_HEADEROPT</a> to control the behavior. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">As long as HTTP is enabled <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_CUSTOMREQUEST.html">CURLOPT_CUSTOMREQUEST</a>, <a Class="manpage" href="./CURLOPT_HEADEROPT.html">CURLOPT_HEADEROPT</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_PROXYHEADER.html">CURLOPT_PROXYHEADER</a>, <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_HTTPHEADER.pdf b/docs/libcurl/opts/CURLOPT_HTTPHEADER.pdf
new file mode 100644 (file)
index 0000000..4e471f2
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_HTTPHEADER.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_HTTPPOST.3 b/docs/libcurl/opts/CURLOPT_HTTPPOST.3
new file mode 100644 (file)
index 0000000..0f35b63
--- /dev/null
@@ -0,0 +1,78 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_HTTPPOST 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_HTTPPOST \- specify the multipart formpost content
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPPOST,
+                          struct curl_httppost *formpost);
+.SH DESCRIPTION
+Tells libcurl you want a multipart/formdata HTTP POST to be made and you
+instruct what data to pass on to the server in the \fIformpost\fP argument.
+Pass a pointer to a linked list of curl_httppost structs as parameter.  The
+easiest way to create such a list, is to use \fIcurl_formadd(3)\fP as
+documented. The data in this list must remain intact until you close this curl
+handle again with \fIcurl_easy_cleanup(3)\fP.
+
+Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header.
+You can disable this header with \fICURLOPT_HTTPHEADER(3)\fP.
+
+When setting \fICURLOPT_HTTPPOST(3)\fP, it will automatically set
+\fICURLOPT_NOBODY(3)\fP to 0.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+HTTP
+.SH EXAMPLE
+.nf
+/* Fill in the file upload field. This makes libcurl load data from
+   the given file name when curl_easy_perform() is called. */
+curl_formadd(&formpost,
+             &lastptr,
+             CURLFORM_COPYNAME, "sendfile",
+             CURLFORM_FILE, "postit2.c",
+             CURLFORM_END);
+
+/* Fill in the filename field */
+curl_formadd(&formpost,
+             &lastptr,
+             CURLFORM_COPYNAME, "filename",
+             CURLFORM_COPYCONTENTS, "postit2.c",
+             CURLFORM_END);
+
+/* Fill in the submit field too, even if this is rarely needed */
+curl_formadd(&formpost,
+             &lastptr,
+             CURLFORM_COPYNAME, "submit",
+             CURLFORM_COPYCONTENTS, "send",
+             CURLFORM_END);
+.fi
+.SH AVAILABILITY
+As long as HTTP is enabled
+.SH RETURN VALUE
+Returns CURLE_OK if HTTP is enabled, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_POSTFIELDS "(3), " CURLOPT_POST "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_HTTPPOST.html b/docs/libcurl/opts/CURLOPT_HTTPPOST.html
new file mode 100644 (file)
index 0000000..226621d
--- /dev/null
@@ -0,0 +1,88 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_HTTPPOST man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_HTTPPOST - specify the multipart formpost content <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPPOST,
+ &nbsp;                         struct curl_httppost *formpost);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Tells libcurl you want a multipart/formdata HTTP POST to be made and you instruct what data to pass on to the server in the <span Class="emphasis">formpost</span> argument. Pass a pointer to a linked list of curl_httppost structs as parameter.  The easiest way to create such a list, is to use <span Class="emphasis">curl_formadd(3)</span> as documented. The data in this list must remain intact until you close this curl handle again with <span Class="emphasis">curl_easy_cleanup(3)</span>. 
+<p class="level0">Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header. You can disable this header with <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a>. 
+<p class="level0">When setting <a Class="emphasis" href="./CURLOPT_HTTPPOST.html">CURLOPT_HTTPPOST</a>, it will automatically set <a Class="emphasis" href="./CURLOPT_NOBODY.html">CURLOPT_NOBODY</a> to 0. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre>
+<p class="level0">/* Fill in the file upload field. This makes libcurl load data from
+ &nbsp;  the given file name when curl_easy_perform() is called. */
+ curl_formadd(&formpost,
+ &nbsp;            &lastptr,
+ &nbsp;            CURLFORM_COPYNAME, "sendfile",
+ &nbsp;            CURLFORM_FILE, "postit2.c",
+ &nbsp;            CURLFORM_END);
+ <p class="level0">/* Fill in the filename field */
+ curl_formadd(&formpost,
+ &nbsp;            &lastptr,
+ &nbsp;            CURLFORM_COPYNAME, "filename",
+ &nbsp;            CURLFORM_COPYCONTENTS, "postit2.c",
+ &nbsp;            CURLFORM_END);
+ <p class="level0">/* Fill in the submit field too, even if this is rarely needed */
+ curl_formadd(&formpost,
+ &nbsp;            &lastptr,
+ &nbsp;            CURLFORM_COPYNAME, "submit",
+ &nbsp;            CURLFORM_COPYCONTENTS, "send",
+ &nbsp;            CURLFORM_END);
+ </pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">As long as HTTP is enabled <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if HTTP is enabled, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_POSTFIELDS.html">CURLOPT_POSTFIELDS</a>, <a Class="manpage" href="./CURLOPT_POST.html">CURLOPT_POST</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_HTTPPOST.pdf b/docs/libcurl/opts/CURLOPT_HTTPPOST.pdf
new file mode 100644 (file)
index 0000000..3889f02
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_HTTPPOST.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3 b/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3
new file mode 100644 (file)
index 0000000..3cbf50e
--- /dev/null
@@ -0,0 +1,51 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_HTTPPROXYTUNNEL 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_HTTPPROXYTUNNEL \- tunnel through HTTP proxy
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPPROXYTUNNEL, long tunnel);
+.SH DESCRIPTION
+Set the parameter to 1 to make libcurl tunnel all operations through the HTTP
+proxy. There is a big difference between using a proxy and to tunnel through
+it. If you don't know what this means, you probably don't want this tunneling
+option.
+
+Tunneling essentially means that a CONNECT is sent to the proxy, asking it to
+connect to a remote host on a specific port number and then the traffic is
+just passed through the proxy. Proxies tend to whitelist specific port numbers
+it allows CONNECT requests to and often only port 80 and 443 are allowed.
+.SH DEFAULT
+0
+.SH PROTOCOLS
+All network protocols
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_PROXY "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.html b/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.html
new file mode 100644 (file)
index 0000000..6f1688e
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_HTTPPROXYTUNNEL man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_HTTPPROXYTUNNEL - tunnel through HTTP proxy <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPPROXYTUNNEL, long tunnel); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Set the parameter to 1 to make libcurl tunnel all operations through the HTTP proxy. There is a big difference between using a proxy and to tunnel through it. If you don't know what this means, you probably don't want this tunneling option. 
+<p class="level0">Tunneling essentially means that a CONNECT is sent to the proxy, asking it to connect to a remote host on a specific port number and then the traffic is just passed through the proxy. Proxies tend to whitelist specific port numbers it allows CONNECT requests to and often only port 80 and 443 are allowed. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All network protocols <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_PROXY.html">CURLOPT_PROXY</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.pdf b/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.pdf
new file mode 100644 (file)
index 0000000..babdf52
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3 b/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3
new file mode 100644 (file)
index 0000000..65472ec
--- /dev/null
@@ -0,0 +1,49 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_HTTP_CONTENT_DECODING 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_HTTP_CONTENT_DECODING \- enable/disable HTTP content decoding
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP_CONTENT_DECODING,
+                          long enabled);
+.SH DESCRIPTION
+Pass a long to tell libcurl how to act on content decoding. If set to zero,
+content decoding will be disabled. If set to 1 it is enabled. Libcurl has no
+default content decoding but requires you to use
+\fICURLOPT_ACCEPT_ENCODING(3)\fP for that.
+.SH DEFAULT
+1
+.SH PROTOCOLS
+HTTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.16.2
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_STDERR "(3), " CURLOPT_DEBUGFUNCTION "(3), "
+.BR CURLOPT_ACCEPT_ENCODING "(3) "
diff --git a/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.html b/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.html
new file mode 100644 (file)
index 0000000..cacd17e
--- /dev/null
@@ -0,0 +1,64 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_HTTP_CONTENT_DECODING man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_HTTP_CONTENT_DECODING - enable/disable HTTP content decoding <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP_CONTENT_DECODING,
+ &nbsp;                         long enabled);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long to tell libcurl how to act on content decoding. If set to zero, content decoding will be disabled. If set to 1 it is enabled. Libcurl has no default content decoding but requires you to use <a Class="emphasis" href="./CURLOPT_ACCEPT_ENCODING.html">CURLOPT_ACCEPT_ENCODING</a> for that. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">1 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.16.2 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_STDERR.html">CURLOPT_STDERR</a>, <a Class="manpage" href="./CURLOPT_DEBUGFUNCTION.html">CURLOPT_DEBUGFUNCTION</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_ACCEPT_ENCODING.html">CURLOPT_ACCEPT_ENCODING</a>, <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.pdf b/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.pdf
new file mode 100644 (file)
index 0000000..36983d8
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3 b/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3
new file mode 100644 (file)
index 0000000..26662db
--- /dev/null
@@ -0,0 +1,48 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_HTTP_TRANSFER_DECODING 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_HTTP_TRANSFER_DECODING \- enable/disable HTTP transfer decoding
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP_TRANSFER_DECODING,
+                         long enabled);
+.SH DESCRIPTION
+Pass a long to tell libcurl how to act on transfer decoding. If set to zero,
+transfer decoding will be disabled, if set to 1 it is enabled
+(default). libcurl does chunked transfer decoding by default unless this
+option is set to zero.
+.SH DEFAULT
+1
+.SH PROTOCOLS
+HTTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.16.2
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_HTTP_CONTENT_DECODING "(3), " CURLOPT_ACCEPT_ENCODING "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.html b/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.html
new file mode 100644 (file)
index 0000000..ddf9eea
--- /dev/null
@@ -0,0 +1,64 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_HTTP_TRANSFER_DECODING man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_HTTP_TRANSFER_DECODING - enable/disable HTTP transfer decoding <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP_TRANSFER_DECODING,
+ &nbsp;                        long enabled);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long to tell libcurl how to act on transfer decoding. If set to zero, transfer decoding will be disabled, if set to 1 it is enabled (default). libcurl does chunked transfer decoding by default unless this option is set to zero. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">1 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.16.2 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_HTTP_CONTENT_DECODING.html">CURLOPT_HTTP_CONTENT_DECODING</a>, <a Class="manpage" href="./CURLOPT_ACCEPT_ENCODING.html">CURLOPT_ACCEPT_ENCODING</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.pdf b/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.pdf
new file mode 100644 (file)
index 0000000..151796c
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3 b/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3
new file mode 100644 (file)
index 0000000..ed5ea82
--- /dev/null
@@ -0,0 +1,57 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_HTTP_VERSION 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_HTTP_VERSION \- specify HTTP protocol version to use
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP_VERSION, long version);
+.SH DESCRIPTION
+Pass \fIversion\fP a long, set to one of the values described below. They
+force libcurl to use the specific HTTP versions. This is not sensible to do
+unless you have a good reason. You have to set this option if you want to use
+libcurl's HTTP/2 support.
+
+.IP CURL_HTTP_VERSION_NONE
+We don't care about what version the library uses. libcurl will use whatever
+it thinks fit.
+.IP CURL_HTTP_VERSION_1_0
+Enforce HTTP 1.0 requests.
+.IP CURL_HTTP_VERSION_1_1
+Enforce HTTP 1.1 requests.
+.IP CURL_HTTP_VERSION_2_0
+Attempt HTTP 2.0 requests. libcurl will fall back to HTTP 1.x if HTTP 2.0
+can't be negotiated with the server.
+.SH DEFAULT
+CURL_HTTP_VERSION_NONE
+.SH PROTOCOLS
+HTTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Along with HTTP
+.SH RETURN VALUE
+Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_SSLVERSION "(3), " CURLOPT_HTTP200ALIASES "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_HTTP_VERSION.html b/docs/libcurl/opts/CURLOPT_HTTP_VERSION.html
new file mode 100644 (file)
index 0000000..7169870
--- /dev/null
@@ -0,0 +1,69 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_HTTP_VERSION man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_HTTP_VERSION - specify HTTP protocol version to use <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP_VERSION, long version); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass <span Class="emphasis">version</span> a long, set to one of the values described below. They force libcurl to use the specific HTTP versions. This is not sensible to do unless you have a good reason. You have to set this option if you want to use libcurl's HTTP/2 support. 
+<p class="level0">
+<p class="level0"><a name="CURLHTTPVERSIONNONE"></a><span class="nroffip">CURL_HTTP_VERSION_NONE</span> 
+<p class="level1">We don't care about what version the library uses. libcurl will use whatever it thinks fit. 
+<p class="level0"><a name="CURLHTTPVERSION10"></a><span class="nroffip">CURL_HTTP_VERSION_1_0</span> 
+<p class="level1">Enforce HTTP 1.0 requests. 
+<p class="level0"><a name="CURLHTTPVERSION11"></a><span class="nroffip">CURL_HTTP_VERSION_1_1</span> 
+<p class="level1">Enforce HTTP 1.1 requests. 
+<p class="level0"><a name="CURLHTTPVERSION20"></a><span class="nroffip">CURL_HTTP_VERSION_2_0</span> 
+<p class="level1">Attempt HTTP 2.0 requests. libcurl will fall back to HTTP 1.x if HTTP 2.0 can't be negotiated with the server. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">CURL_HTTP_VERSION_NONE <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Along with HTTP <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SSLVERSION.html">CURLOPT_SSLVERSION</a>, <a Class="manpage" href="./CURLOPT_HTTP200ALIASES.html">CURLOPT_HTTP200ALIASES</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_HTTP_VERSION.pdf b/docs/libcurl/opts/CURLOPT_HTTP_VERSION.pdf
new file mode 100644 (file)
index 0000000..7351f4d
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_HTTP_VERSION.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3 b/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3
new file mode 100644 (file)
index 0000000..11bff65
--- /dev/null
@@ -0,0 +1,51 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_IGNORE_CONTENT_LENGTH 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_IGNORE_CONTENT_LENGTH \- ignore Content-Length in HTTP response
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IGNORE_CONTENT_LENGTH,
+                          long ignore);
+.SH DESCRIPTION
+If \fIignore\fP is set to 1, ignore the Content-Length header in the HTTP
+response. This is useful for Apache 1.x (and similar servers) which will
+report incorrect content length for files over 2 gigabytes. If this option is
+used, curl will not be able to accurately report progress, and will simply
+stop the download when the server ends the connection.
+
+Only use this option if strictly necessary.
+.SH DEFAULT
+0
+.SH PROTOCOLS
+HTTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.14.1
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_HTTP_VERSION "(3), " CURLOPT_MAXFILESIZE_LARGE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.html b/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.html
new file mode 100644 (file)
index 0000000..7616ae5
--- /dev/null
@@ -0,0 +1,65 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_IGNORE_CONTENT_LENGTH man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_IGNORE_CONTENT_LENGTH - ignore Content-Length in HTTP response <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IGNORE_CONTENT_LENGTH,
+ &nbsp;                         long ignore);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">If <span Class="emphasis">ignore</span> is set to 1, ignore the Content-Length header in the HTTP response. This is useful for Apache 1.x (and similar servers) which will report incorrect content length for files over 2 gigabytes. If this option is used, curl will not be able to accurately report progress, and will simply stop the download when the server ends the connection. 
+<p class="level0">Only use this option if strictly necessary. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.14.1 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_HTTP_VERSION.html">CURLOPT_HTTP_VERSION</a>, <a Class="manpage" href="./CURLOPT_MAXFILESIZE_LARGE.html">CURLOPT_MAXFILESIZE_LARGE</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.pdf b/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.pdf
new file mode 100644 (file)
index 0000000..90a31bc
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_INFILESIZE.3 b/docs/libcurl/opts/CURLOPT_INFILESIZE.3
new file mode 100644 (file)
index 0000000..129414c
--- /dev/null
@@ -0,0 +1,58 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_INFILESIZE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_INFILESIZE \- set size of the input file to send off
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INFILESIZE, long filesize);
+.SH DESCRIPTION
+When uploading a file to a remote site, \fIfilesize\fP should be used to tell
+libcurl what the expected size of the input file is. This value must be passed
+as a long. See also \fICURLOPT_INFILESIZE_LARGE(3)\fP for sending files larger
+than 2GB.
+
+For uploading using SCP, this option or \fICURLOPT_INFILESIZE_LARGE(3)\fP is
+mandatory.
+
+To unset this value again, set it to -1.
+
+When sending emails using SMTP, this command can be used to specify the
+optional SIZE parameter for the MAIL FROM command.
+
+This option does not limit how much data libcurl will actually send, as that
+is controlled entirely by what the read callback returns, but telling one
+value and sending a different amount may lead to errors.
+.SH DEFAULT
+Unset
+.SH PROTOCOLS
+Many
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+SMTP support added in 7.23.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_INFILESIZE_LARGE "(3), " CURLOPT_UPLOAD "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_INFILESIZE.html b/docs/libcurl/opts/CURLOPT_INFILESIZE.html
new file mode 100644 (file)
index 0000000..ae0e217
--- /dev/null
@@ -0,0 +1,64 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_INFILESIZE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_INFILESIZE - set size of the input file to send off <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INFILESIZE, long filesize); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">When uploading a file to a remote site, <span Class="emphasis">filesize</span> should be used to tell libcurl what the expected size of the input file is. This value must be passed as a long. See also <a Class="emphasis" href="./CURLOPT_INFILESIZE_LARGE.html">CURLOPT_INFILESIZE_LARGE</a> for sending files larger than 2GB. 
+<p class="level0">For uploading using SCP, this option or <a Class="emphasis" href="./CURLOPT_INFILESIZE_LARGE.html">CURLOPT_INFILESIZE_LARGE</a> is mandatory. 
+<p class="level0">To unset this value again, set it to -1. 
+<p class="level0">When sending emails using SMTP, this command can be used to specify the optional SIZE parameter for the MAIL FROM command. 
+<p class="level0">This option does not limit how much data libcurl will actually send, as that is controlled entirely by what the read callback returns, but telling one value and sending a different amount may lead to errors. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">Unset <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">Many <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">SMTP support added in 7.23.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_INFILESIZE_LARGE.html">CURLOPT_INFILESIZE_LARGE</a>, <a Class="manpage" href="./CURLOPT_UPLOAD.html">CURLOPT_UPLOAD</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_INFILESIZE.pdf b/docs/libcurl/opts/CURLOPT_INFILESIZE.pdf
new file mode 100644 (file)
index 0000000..39e4d28
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_INFILESIZE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3 b/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3
new file mode 100644 (file)
index 0000000..0aa5224
--- /dev/null
@@ -0,0 +1,59 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_INFILESIZE_LARGE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_INFILESIZE_LARGE \- set size of the input file to send off
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INFILESIZE_LARGE,
+                          curl_off_t filesize);
+.SH DESCRIPTION
+When uploading a file to a remote site, \fIfilesize\fP should be used to tell
+libcurl what the expected size of the input file is. This value must be passed
+as a \fBcurl_off_t\fP. 
+
+For uploading using SCP, this option or \fICURLOPT_INFILESIZE(3)\fP is
+mandatory.
+
+To unset this value again, set it to -1.
+
+When sending emails using SMTP, this command can be used to specify the
+optional SIZE parameter for the MAIL FROM command.
+
+This option does not limit how much data libcurl will actually send, as that
+is controlled entirely by what the read callback returns, but telling one
+value and sending a different amount may lead to errors.
+.SH DEFAULT
+Unset
+.SH PROTOCOLS
+Many
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+SMTP support added in 7.23.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_INFILESIZE "(3), " CURLOPT_UPLOAD "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.html b/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.html
new file mode 100644 (file)
index 0000000..c16aed1
--- /dev/null
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_INFILESIZE_LARGE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_INFILESIZE_LARGE - set size of the input file to send off <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INFILESIZE_LARGE,
+ &nbsp;                         curl_off_t filesize);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">When uploading a file to a remote site, <span Class="emphasis">filesize</span> should be used to tell libcurl what the expected size of the input file is. This value must be passed as a <span Class="bold">curl_off_t</span>.  
+<p class="level0">For uploading using SCP, this option or <a Class="emphasis" href="./CURLOPT_INFILESIZE.html">CURLOPT_INFILESIZE</a> is mandatory. 
+<p class="level0">To unset this value again, set it to -1. 
+<p class="level0">When sending emails using SMTP, this command can be used to specify the optional SIZE parameter for the MAIL FROM command. 
+<p class="level0">This option does not limit how much data libcurl will actually send, as that is controlled entirely by what the read callback returns, but telling one value and sending a different amount may lead to errors. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">Unset <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">Many <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">SMTP support added in 7.23.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_INFILESIZE.html">CURLOPT_INFILESIZE</a>, <a Class="manpage" href="./CURLOPT_UPLOAD.html">CURLOPT_UPLOAD</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.pdf b/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.pdf
new file mode 100644 (file)
index 0000000..769696a
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_INTERFACE.3 b/docs/libcurl/opts/CURLOPT_INTERFACE.3
new file mode 100644 (file)
index 0000000..0890eb6
--- /dev/null
@@ -0,0 +1,55 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_INTERFACE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_INTERFACE \- source interface for outgoing traffic
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INTERFACE, char *interface);
+.SH DESCRIPTION
+Pass a char * as parameter. This sets the \fIinterface\fP name to use as
+outgoing network interface. The name can be an interface name, an IP address,
+or a host name.
+
+If the parameter starts with "if!" then it is treated as only as interface
+name and no attempt will ever be named to do treat it as an IP address or to
+do name resolution on it.  If the parameter starts with \&"host!" it is
+treated as either an IP address or a hostname.  Hostnames are resolved
+synchronously.  Using the if! format is highly recommended when using the
+multi interfaces to avoid allowing the code to block.  If "if!" is specified
+but the parameter does not match an existing interface, CURLE_INTERFACE_FAILED
+is returned from the libcurl function used to perform the transfer.
+.SH DEFAULT
+NULL, use whatever the TCP stack finds suitable
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+The "if!" and "host!" syntax was added in 7.24.0.
+.SH RETURN VALUE
+Returns CURLE_OK on success or
+CURLE_OUT_OF_MEMORY if there was insufficient heap space.
+.SH "SEE ALSO"
+.BR CURLOPT_SOCKOPTFUNCTION "(3), " CURLOPT_TCP_NODELAY "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_INTERFACE.html b/docs/libcurl/opts/CURLOPT_INTERFACE.html
new file mode 100644 (file)
index 0000000..4806797
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_INTERFACE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_INTERFACE - source interface for outgoing traffic <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INTERFACE, char *interface); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * as parameter. This sets the <span Class="emphasis">interface</span> name to use as outgoing network interface. The name can be an interface name, an IP address, or a host name. 
+<p class="level0">If the parameter starts with "if!" then it is treated as only as interface name and no attempt will ever be named to do treat it as an IP address or to do name resolution on it.  If the parameter starts with "host!" it is treated as either an IP address or a hostname.  Hostnames are resolved synchronously.  Using the if! format is highly recommended when using the multi interfaces to avoid allowing the code to block.  If "if!" is specified but the parameter does not match an existing interface, CURLE_INTERFACE_FAILED is returned from the libcurl function used to perform the transfer. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL, use whatever the TCP stack finds suitable <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">The "if!" and "host!" syntax was added in 7.24.0. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK on success or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SOCKOPTFUNCTION.html">CURLOPT_SOCKOPTFUNCTION</a>, <a Class="manpage" href="./CURLOPT_TCP_NODELAY.html">CURLOPT_TCP_NODELAY</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_INTERFACE.pdf b/docs/libcurl/opts/CURLOPT_INTERFACE.pdf
new file mode 100644 (file)
index 0000000..564e7b2
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_INTERFACE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3 b/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3
new file mode 100644 (file)
index 0000000..836dfac
--- /dev/null
@@ -0,0 +1,45 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_INTERLEAVEDATA 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_INTERLEAVEDATA \- custom pointer to RTSP interleave callback
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INTERLEAVEDATA, void *pointer);
+.SH DESCRIPTION
+This is the userdata \fIpointer\fP that will be passed to
+\fICURLOPT_INTERLEAVEFUNCTION(3)\fP when interleaved RTP data is
+received.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+RTSP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.20.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_INTERLEAVEFUNCTION "(3), " CURLOPT_RTSP_REQUEST "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.html b/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.html
new file mode 100644 (file)
index 0000000..bc98928
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_INTERLEAVEDATA man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_INTERLEAVEDATA - custom pointer to RTSP interleave callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INTERLEAVEDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">This is the userdata <span Class="emphasis">pointer</span> that will be passed to <a Class="emphasis" href="./CURLOPT_INTERLEAVEFUNCTION.html">CURLOPT_INTERLEAVEFUNCTION</a> when interleaved RTP data is received. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">RTSP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.20.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_INTERLEAVEFUNCTION.html">CURLOPT_INTERLEAVEFUNCTION</a>, <a Class="manpage" href="./CURLOPT_RTSP_REQUEST.html">CURLOPT_RTSP_REQUEST</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.pdf b/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.pdf
new file mode 100644 (file)
index 0000000..b51132c
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3 b/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3
new file mode 100644 (file)
index 0000000..b965529
--- /dev/null
@@ -0,0 +1,68 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_INTERLEAVEFUNCTION 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_INTERLEAVEFUNCTION \- callback function for RTSP interleaved data
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+size_t interleave_callback(void *ptr, size_t size, size_t nmemb,
+                           void *userdata);
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INTERLEAVEFUNCTION,
+                          interleave_callback);
+.SH DESCRIPTION
+Pass a pointer to your callback function, which should match the prototype
+shown above.
+
+This callback function gets called by libcurl as soon as it has received
+interleaved RTP data. This function gets called for each $ block and therefore
+contains exactly one upper-layer protocol unit (e.g.  one RTP packet). Curl
+writes the interleaved header as well as the included data for each call. The
+first byte is always an ASCII dollar sign. The dollar sign is followed by a
+one byte channel identifier and then a 2 byte integer length in network byte
+order. See \fIRFC2326 Section 10.12\fP for more information on how RTP
+interleaving behaves. If unset or set to NULL, curl will use the default write
+function.
+
+Interleaved RTP poses some challenges for the client application. Since the
+stream data is sharing the RTSP control connection, it is critical to service
+the RTP in a timely fashion. If the RTP data is not handled quickly,
+subsequent response processing may become unreasonably delayed and the
+connection may close. The application may use \fICURL_RTSPREQ_RECEIVE\fP to
+service RTP data when no requests are desired. If the application makes a
+request, (e.g.  \fICURL_RTSPREQ_PAUSE\fP) then the response handler will
+process any pending RTP data before marking the request as finished.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+RTSP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.20.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_INTERLEAVEFUNCTION "(3), " CURLOPT_RTSP_REQUEST "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.html b/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.html
new file mode 100644 (file)
index 0000000..d6d82a1
--- /dev/null
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_INTERLEAVEFUNCTION man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_INTERLEAVEFUNCTION - callback function for RTSP interleaved data <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">size_t interleave_callback(void *ptr, size_t size, size_t nmemb,
+ &nbsp;                          void *userdata);
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INTERLEAVEFUNCTION,
+ &nbsp;                         interleave_callback);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
+<p class="level0">This callback function gets called by libcurl as soon as it has received interleaved RTP data. This function gets called for each $ block and therefore contains exactly one upper-layer protocol unit (e.g.  one RTP packet). Curl writes the interleaved header as well as the included data for each call. The first byte is always an ASCII dollar sign. The dollar sign is followed by a one byte channel identifier and then a 2 byte integer length in network byte order. See <span Class="emphasis"><a href="http://www.ietf.org/rfc/rfc2326.txt">RFC 2326</a> Section 10.12</span> for more information on how RTP interleaving behaves. If unset or set to NULL, curl will use the default write function. 
+<p class="level0">Interleaved RTP poses some challenges for the client application. Since the stream data is sharing the RTSP control connection, it is critical to service the RTP in a timely fashion. If the RTP data is not handled quickly, subsequent response processing may become unreasonably delayed and the connection may close. The application may use <span Class="emphasis">CURL_RTSPREQ_RECEIVE</span> to service RTP data when no requests are desired. If the application makes a request, (e.g.  <span Class="emphasis">CURL_RTSPREQ_PAUSE</span>) then the response handler will process any pending RTP data before marking the request as finished. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">RTSP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.20.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_INTERLEAVEFUNCTION.html">CURLOPT_INTERLEAVEFUNCTION</a>, <a Class="manpage" href="./CURLOPT_RTSP_REQUEST.html">CURLOPT_RTSP_REQUEST</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.pdf b/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.pdf
new file mode 100644 (file)
index 0000000..08f7c69
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_IOCTLDATA.3 b/docs/libcurl/opts/CURLOPT_IOCTLDATA.3
new file mode 100644 (file)
index 0000000..456080c
--- /dev/null
@@ -0,0 +1,44 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_IOCTLDATA 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_IOCTLDATA \- custom pointer passed to I/O callback
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IOCTLDATA, void *pointer);
+.SH DESCRIPTION
+Pass the \fIpointer\fP that will be untouched by libcurl and passed as the 3rd
+argument in the ioctl callback set with \fICURLOPT_IOCTLFUNCTION(3)\fP.
+.SH DEFAULT
+By default, the value of this parameter is NULL.
+.SH PROTOCOLS
+Used with HTTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.12.3
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_IOCTLFUNCTION "(3), " CURLOPT_SEEKFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_IOCTLDATA.html b/docs/libcurl/opts/CURLOPT_IOCTLDATA.html
new file mode 100644 (file)
index 0000000..7b4b296
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_IOCTLDATA man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_IOCTLDATA - custom pointer passed to I/O callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IOCTLDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass the <span Class="emphasis">pointer</span> that will be untouched by libcurl and passed as the 3rd argument in the ioctl callback set with <a Class="emphasis" href="./CURLOPT_IOCTLFUNCTION.html">CURLOPT_IOCTLFUNCTION</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">By default, the value of this parameter is NULL. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">Used with HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.12.3 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_IOCTLFUNCTION.html">CURLOPT_IOCTLFUNCTION</a>, <a Class="manpage" href="./CURLOPT_SEEKFUNCTION.html">CURLOPT_SEEKFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_IOCTLDATA.pdf b/docs/libcurl/opts/CURLOPT_IOCTLDATA.pdf
new file mode 100644 (file)
index 0000000..a6bb33b
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_IOCTLDATA.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3 b/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3
new file mode 100644 (file)
index 0000000..ebfe8df
--- /dev/null
@@ -0,0 +1,76 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_IOCTLFUNCTION 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_IOCTLFUNCTION \- callback for I/O operations
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+typedef enum {
+  CURLIOE_OK,            /* I/O operation successful */
+  CURLIOE_UNKNOWNCMD,    /* command was unknown to callback */
+  CURLIOE_FAILRESTART,   /* failed to restart the read */
+  CURLIOE_LAST           /* never use */
+} curlioerr;
+
+typedef enum  {
+  CURLIOCMD_NOP,         /* no operation */
+  CURLIOCMD_RESTARTREAD, /* restart the read stream from start */
+  CURLIOCMD_LAST         /* never use */
+} curliocmd;
+
+curlioerr ioctl_callback(CURL *handle, int cmd, void *clientp);
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IOCTLFUNCTION, ioctl_callback);
+.SH DESCRIPTION
+Pass a pointer to your callback function, which should match the prototype
+shown above.
+
+This callback function gets called by libcurl when something special
+I/O-related needs to be done that the library can't do by itself. For now,
+rewinding the read data stream is the only action it can request. The
+rewinding of the read data stream may be necessary when doing a HTTP PUT or
+POST with a multi-pass authentication method.
+
+The callback MUST return \fICURLIOE_UNKNOWNCMD\fP if the input \fIcmd\fP is
+not \fICURLIOCMD_RESTARTREAD\fP.
+
+The \fIclientp\fP argument to the callback is set with the
+\fICURLOPT_IOCTLDATA(3)\fP option.
+
+This option is deprecated! Do not use it. Use \fICURLOPT_SEEKFUNCTION(3)\fP
+instead to provide seeking! If \fICURLOPT_SEEKFUNCTION(3)\fP is set, this
+parameter will be ignored when seeking.
+.SH DEFAULT
+By default, this parameter is set to NULL. Not used.
+.SH PROTOCOLS
+Used with HTTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.12.3
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_IOCTLDATA "(3), " CURLOPT_SEEKFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.html b/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.html
new file mode 100644 (file)
index 0000000..4280b9f
--- /dev/null
@@ -0,0 +1,79 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_IOCTLFUNCTION man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_IOCTLFUNCTION - callback for I/O operations <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">typedef enum {
+ &nbsp; CURLIOE_OK,            /* I/O operation successful */
+ &nbsp; CURLIOE_UNKNOWNCMD,    /* command was unknown to callback */
+ &nbsp; CURLIOE_FAILRESTART,   /* failed to restart the read */
+ &nbsp; CURLIOE_LAST           /* never use */
+ } curlioerr;
+ <p class="level0">typedef enum  {
+ &nbsp; CURLIOCMD_NOP,         /* no operation */
+ &nbsp; CURLIOCMD_RESTARTREAD, /* restart the read stream from start */
+ &nbsp; CURLIOCMD_LAST         /* never use */
+ } curliocmd;
+ <p class="level0">curlioerr ioctl_callback(CURL *handle, int cmd, void *clientp);
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IOCTLFUNCTION, ioctl_callback);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
+<p class="level0">This callback function gets called by libcurl when something special I/O-related needs to be done that the library can't do by itself. For now, rewinding the read data stream is the only action it can request. The rewinding of the read data stream may be necessary when doing a HTTP PUT or POST with a multi-pass authentication method. 
+<p class="level0">The callback MUST return <span Class="emphasis">CURLIOE_UNKNOWNCMD</span> if the input <span Class="emphasis">cmd</span> is not <span Class="emphasis">CURLIOCMD_RESTARTREAD</span>. 
+<p class="level0">The <span Class="emphasis">clientp</span> argument to the callback is set with the <a Class="emphasis" href="./CURLOPT_IOCTLDATA.html">CURLOPT_IOCTLDATA</a> option. 
+<p class="level0">This option is deprecated! Do not use it. Use <a Class="emphasis" href="./CURLOPT_SEEKFUNCTION.html">CURLOPT_SEEKFUNCTION</a> instead to provide seeking! If <a Class="emphasis" href="./CURLOPT_SEEKFUNCTION.html">CURLOPT_SEEKFUNCTION</a> is set, this parameter will be ignored when seeking. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">By default, this parameter is set to NULL. Not used. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">Used with HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.12.3 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_IOCTLDATA.html">CURLOPT_IOCTLDATA</a>, <a Class="manpage" href="./CURLOPT_SEEKFUNCTION.html">CURLOPT_SEEKFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.pdf b/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.pdf
new file mode 100644 (file)
index 0000000..bf304e1
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_IPRESOLVE.3 b/docs/libcurl/opts/CURLOPT_IPRESOLVE.3
new file mode 100644 (file)
index 0000000..ad9827a
--- /dev/null
@@ -0,0 +1,51 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_IPRESOLVE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_IPRESOLVE \- specify which IP protocol version to use
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IPRESOLVE, long resolve);
+.SH DESCRIPTION
+Allows an application to select what kind of IP addresses to use when
+resolving host names. This is only interesting when using host names that
+resolve addresses using more than one version of IP. The allowed values are:
+.IP CURL_IPRESOLVE_WHATEVER
+Default, resolves addresses to all IP versions that your system allows.
+.IP CURL_IPRESOLVE_V4
+Resolve to IPv4 addresses.
+.IP CURL_IPRESOLVE_V6
+Resolve to IPv6 addresses.
+.SH DEFAULT
+CURL_IPRESOLVE_WHATEVER
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_HTTP_VERSION "(3), " CURLOPT_SSLVERSION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_IPRESOLVE.html b/docs/libcurl/opts/CURLOPT_IPRESOLVE.html
new file mode 100644 (file)
index 0000000..283873c
--- /dev/null
@@ -0,0 +1,66 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_IPRESOLVE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_IPRESOLVE - specify which IP protocol version to use <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IPRESOLVE, long resolve); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Allows an application to select what kind of IP addresses to use when resolving host names. This is only interesting when using host names that resolve addresses using more than one version of IP. The allowed values are: 
+<p class="level0"><a name="CURLIPRESOLVEWHATEVER"></a><span class="nroffip">CURL_IPRESOLVE_WHATEVER</span> 
+<p class="level1">Default, resolves addresses to all IP versions that your system allows. 
+<p class="level0"><a name="CURLIPRESOLVEV4"></a><span class="nroffip">CURL_IPRESOLVE_V4</span> 
+<p class="level1">Resolve to IPv4 addresses. 
+<p class="level0"><a name="CURLIPRESOLVEV6"></a><span class="nroffip">CURL_IPRESOLVE_V6</span> 
+<p class="level1">Resolve to IPv6 addresses. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">CURL_IPRESOLVE_WHATEVER <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_HTTP_VERSION.html">CURLOPT_HTTP_VERSION</a>, <a Class="manpage" href="./CURLOPT_SSLVERSION.html">CURLOPT_SSLVERSION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_IPRESOLVE.pdf b/docs/libcurl/opts/CURLOPT_IPRESOLVE.pdf
new file mode 100644 (file)
index 0000000..79c6dd3
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_IPRESOLVE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_ISSUERCERT.3 b/docs/libcurl/opts/CURLOPT_ISSUERCERT.3
new file mode 100644 (file)
index 0000000..08afb29
--- /dev/null
@@ -0,0 +1,58 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_ISSUERCERT 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_ISSUERCERT \- issuer SSL certificate filename
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ISSUERCERT, char *file);
+.SH DESCRIPTION
+Pass a char * to a zero terminated string naming a \fIfile\fP holding a CA
+certificate in PEM format. If the option is set, an additional check against
+the peer certificate is performed to verify the issuer is indeed the one
+associated with the certificate provided by the option. This additional check
+is useful in multi-level PKI where one needs to enforce that the peer
+certificate is from a specific branch of the tree.
+
+This option makes sense only when used in combination with the
+\fICURLOPT_SSL_VERIFYPEER(3)\fP option. Otherwise, the result of the check is
+not considered as failure.
+
+A specific error code (CURLE_SSL_ISSUER_ERROR) is defined with the option,
+which is returned if the setup of the SSL/TLS session has failed due to a
+mismatch with the issuer of peer certificate (\fICURLOPT_SSL_VERIFYPEER(3)\fP
+has to be set too for the check to fail). (Added in 7.19.0)
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+All TLS-based protocols
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+If built TLS enabled
+.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 CURLOPT_CRLFILE "(3), " CURLOPT_SSL_VERIFYPEER "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_ISSUERCERT.html b/docs/libcurl/opts/CURLOPT_ISSUERCERT.html
new file mode 100644 (file)
index 0000000..d1bef9f
--- /dev/null
@@ -0,0 +1,62 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_ISSUERCERT man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_ISSUERCERT - issuer SSL certificate filename <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ISSUERCERT, char *file); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * to a zero terminated string naming a <span Class="emphasis">file</span> holding a CA certificate in PEM format. If the option is set, an additional check against the peer certificate is performed to verify the issuer is indeed the one associated with the certificate provided by the option. This additional check is useful in multi-level PKI where one needs to enforce that the peer certificate is from a specific branch of the tree. 
+<p class="level0">This option makes sense only when used in combination with the <a Class="emphasis" href="./CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a> option. Otherwise, the result of the check is not considered as failure. 
+<p class="level0">A specific error code (CURLE_SSL_ISSUER_ERROR) is defined with the option, which is returned if the setup of the SSL/TLS session has failed due to a mismatch with the issuer of peer certificate (<a Class="emphasis" href="./CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a> has to be set too for the check to fail). (Added in 7.19.0) <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All TLS-based protocols <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">If built TLS enabled <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_CRLFILE.html">CURLOPT_CRLFILE</a>, <a Class="manpage" href="./CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_ISSUERCERT.pdf b/docs/libcurl/opts/CURLOPT_ISSUERCERT.pdf
new file mode 100644 (file)
index 0000000..a04ea53
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_ISSUERCERT.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_KEYPASSWD.3 b/docs/libcurl/opts/CURLOPT_KEYPASSWD.3
new file mode 100644 (file)
index 0000000..0ed0c87
--- /dev/null
@@ -0,0 +1,48 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_KEYPASSWD 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_KEYPASSWD \- set passphrase to private key
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_KEYPASSWD, char *pwd);
+.SH DESCRIPTION
+Pass a pointer to a zero terminated string as parameter. It will be used as
+the password required to use the \fICURLOPT_SSLKEY(3)\fP or
+\fICURLOPT_SSH_PRIVATE_KEYFILE(3)\fP private key.  You never needed a pass
+phrase to load a certificate but you need one to load your private key.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+This option was known as CURLOPT_SSLKEYPASSWD up to 7.16.4 and
+CURLOPT_SSLCERTPASSWD up to 7.9.2.
+.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_SSLKEY "(3), " CURLOPT_SSH_PRIVATE_KEYFILE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_KEYPASSWD.html b/docs/libcurl/opts/CURLOPT_KEYPASSWD.html
new file mode 100644 (file)
index 0000000..9c02291
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_KEYPASSWD man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_KEYPASSWD - set passphrase to private key <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_KEYPASSWD, char *pwd); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to a zero terminated string as parameter. It will be used as the password required to use the <a Class="emphasis" href="./CURLOPT_SSLKEY.html">CURLOPT_SSLKEY</a> or <a Class="emphasis" href="./CURLOPT_SSH_PRIVATE_KEYFILE.html">CURLOPT_SSH_PRIVATE_KEYFILE</a> private key.  You never needed a pass phrase to load a certificate but you need one to load your private key. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">This option was known as CURLOPT_SSLKEYPASSWD up to 7.16.4 and CURLOPT_SSLCERTPASSWD up to 7.9.2. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if TLS enabled, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SSLKEY.html">CURLOPT_SSLKEY</a>, <a Class="manpage" href="./CURLOPT_SSH_PRIVATE_KEYFILE.html">CURLOPT_SSH_PRIVATE_KEYFILE</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_KEYPASSWD.pdf b/docs/libcurl/opts/CURLOPT_KEYPASSWD.pdf
new file mode 100644 (file)
index 0000000..db9de05
--- /dev/null
@@ -0,0 +1,112 @@
+%PDF-1.4
+%Çì\8f¢
+5 0 obj
+<</Length 6 0 R/Filter /FlateDecode>>
+stream
+x\9c­VÝ\8eÚ8\14¾ç)\8e´7¡\ 27v~½»Z\89N3*m\86°\10Ú\1dͬP\ 6<%[&¡Iè¨}\86¾Ê¾ã\1e;NB(½[!\81°\8f\8f¿ó}çÇ\9fÁ$\14LùÑ¿\9b§ÁË\85\a\1fË\81  \1f\a\9f\aTm\82þÙ<Á«\18\r\10?\ eê3\14<\ 6\1e·\88Ï!~\1a\18W«E\18Íãõ»àv>\8cÿ\19x\ eñ\1c´\8b·\ 3\87\13\87Bü<¸3&Ëå\87×÷\86u?\84ͱدER~]\97¢Ê\ fÕpÌ\1c\93\98¦gà\9f4ÏJè¹ü;~;°l\878¼vzâJ^76     £\88d\83@9\ 2\91XÇ6£Ä²al¹êÐl"\8dMiG¥/K;»        äz\17#3\89mz0¦Ln\9b\1e\1eÎj\ 4ð/ ~8$eyØ\15I) ÊáP¤
+°DåÈË\98I        wõe_\92\16\ 4'Ôç¾­7*\ 1\9ft0T\1d£6q)o"\16_Ûsý \99K\89'ѺÄW\96ËÛY4_N\97ý \90\ 3\1d\90ñK\9amöÇ­\80ߥ\f\17Ùý!Í\99\rq8\88_Ôánr´9Wê^mÁ\8b]\92m÷b\ 4g¼ \86®_\933\82Í.)àÅáy{?üMQÒG® 5¨_\aË«Åt\1eO£Y\8f\85\8b\11ÌOIôu¦\99Ä5-)\96Q\96\90À!O³J\14R\91\ 4¾\89"\aü÷\94fI%¶PVE\9a}\84¤Dí\8aäIà\96ôh\11*] d\94bJy\9a{2m6\99Üô   ·\98O\eÝ\9e»¬ªMZ4¬N\9dt¿\87\a\ 1Ç\12\e«\9dP\19ó<ä\84û\8eå\18\85B|>¦\ 5Z Þ£L¤\9dÐ\94QS\130fv}ACCÃýr\19"ým9t\94q\9fPî6)\94\17õnë\10\83t¨§\ 1\9fx{³\9e/¦ïµ\f\96§hfijÌ&æIÜÅ\8c%¦W\ 3\99\ 4×Ó0¸\80ÄudMùÚR\96\88®Û:ÕMâ»\rs?-\11¤Ô÷\95À?Ö\8aC¬Î}]+Nm.õr­®ÎÈm\87Ý>=\95\1f!\13\8caô­Ð_\84Î\82Ú+'ì¤z\8bì\94\11\87¶PÄVª®\ 4W¾-\1fð­³îÒu\8f}\9e\8d(ªôû\ 6\93\15\1e\86LµFË8VðU¡D\97\99ãbq¡íØxì\7fl;g4ÖúöêÙô\89cò^Q_kß\8eí×­\90pj·i´R»TF§Ud®ÕT]\18\9ft¼&\8f$LÏódW×E0[\85á\ 5,§½e¾Ð(lË×!2·Éû1ö,\9c+2­¢\18¢öNf\11Ït\9bܾ\8a³\86\8a°9â°{J\1a\13¬õ8\ÂC"«ýPäU¾É÷å¯ð&\8eçË\11\«ïéÍDþÌ£¹5\82å\r®\81¨6\97(=\r#økr3\ f\83F-ÿ§í1\8ez-I÷Gãu¤év|ÿ°äÒ²½Mªb×!½\87np¢\80®C\9bJ\9d\86\93WÓp\1aßö©\91Õhã\1d\1a\8f\85 éÔy\1eïÒ\12ê\11\ fÏCªó\1a\9bâ§,\1f2\eû¡M\8dçL¶É~s«g\vu]=x\8f\a\99ý\1eA¸6à(:5¿
+\16M%pÕ°mÔÒn*2\1e+\16ôZ;Q&§õÛ5£ZÕÞ\95\17\94²½úTKà\9d±\bâÕb\ 6ï\87ÔÂÈ\jLÂU \9bú\8fªQ\99oê¥d,Du,ô\e(XGï }TI%²äa/¶#½±\9a½\9b)I\19\1d-³ò£&\8fña¶\8eÔD\95\ e²¼\1aA=\ 2ÆÍ\81ÓA\82\17­âut½¾   n"U0\8cÔ\r\81ú\84鲿3nÓ!>Õ\8cÇJ\ 5\ 4%\94ö\b»3v¢\10 &\1cgø @=Ó¬<>*\8d\8cï\9bTd\15ìDr\80ò\90l\ 4¹ð@ \9e\84yú´      \ 2\98\84˨£ÿ,óûIs6\f-é¬N\ 25¡F}7x\8bÛ\r¡\9fLC®ç\15\ e,ÿÂ0dø4àþù<ìãpð\1e¿\1d¥\1d\92±\85\bð­\8c\89[³½O\1fä\ 3\f³Îò\889\1cSÇá6q\f|\9a¼=f\80/K[ñf·\8d\8aJWA<ø\13?ÿ\ 1òpæ£endstream
+endobj
+6 0 obj
+1333
+endobj
+4 0 obj
+<</Type/Page/MediaBox [0 0 595 842]
+/Rotate 0/Parent 3 0 R
+/Resources<</ProcSet[/PDF /Text]
+/ExtGState 11 0 R
+/Font 12 0 R
+>>
+/Contents 5 0 R
+>>
+endobj
+3 0 obj
+<< /Type /Pages /Kids [
+4 0 R
+] /Count 1
+>>
+endobj
+1 0 obj
+<</Type /Catalog /Pages 3 0 R
+/Metadata 14 0 R
+>>
+endobj
+7 0 obj
+<</Type/ExtGState
+/OPM 1>>endobj
+11 0 obj
+<</R7
+7 0 R>>
+endobj
+12 0 obj
+<</R10
+10 0 R/R9
+9 0 R/R8
+8 0 R>>
+endobj
+10 0 obj
+<</BaseFont/Times-Italic/Type/Font
+/Subtype/Type1>>
+endobj
+9 0 obj
+<</BaseFont/Times-Bold/Type/Font
+/Subtype/Type1>>
+endobj
+8 0 obj
+<</BaseFont/Times-Roman/Type/Font
+/Encoding 13 0 R/Subtype/Type1>>
+endobj
+13 0 obj
+<</Type/Encoding/Differences[
+140/fi
+173/minus]>>
+endobj
+14 0 obj
+<</Type/Metadata
+/Subtype/XML/Length 1346>>stream
+<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
+<?adobe-xap-filters esc="CRLF"?>
+<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
+<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
+<rdf:Description rdf:about='uuid:67d31dca-cf2b-11ef-0000-ba6faefc18a2' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.06'/>
+<rdf:Description rdf:about='uuid:67d31dca-cf2b-11ef-0000-ba6faefc18a2' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-01-08T09:17:59+01:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-01-08T09:17:59+01:00</xmp:CreateDate>
+<xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
+<rdf:Description rdf:about='uuid:67d31dca-cf2b-11ef-0000-ba6faefc18a2' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:67d31dca-cf2b-11ef-0000-ba6faefc18a2'/>
+<rdf:Description rdf:about='uuid:67d31dca-cf2b-11ef-0000-ba6faefc18a2' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+</rdf:RDF>
+</x:xmpmeta>
+                                                                        
+                                                                        
+<?xpacket end='w'?>
+endstream
+endobj
+2 0 obj
+<</Producer(GPL Ghostscript 9.06)
+/CreationDate(D:20150108091759+01'00')
+/ModDate(D:20150108091759+01'00')
+/Creator(groff version 1.22.3)>>endobj
+xref
+0 15
+0000000000 65535 f 
+0000001657 00000 n 
+0000003547 00000 n 
+0000001598 00000 n 
+0000001438 00000 n 
+0000000015 00000 n 
+0000001418 00000 n 
+0000001722 00000 n 
+0000001976 00000 n 
+0000001911 00000 n 
+0000001843 00000 n 
+0000001763 00000 n 
+0000001793 00000 n 
+0000002058 00000 n 
+0000002124 00000 n 
+trailer
+<< /Size 15 /Root 1 0 R /Info 2 0 R
+/ID [<9C282454DD73ABCBA4EAB892D19536F1><9C282454DD73ABCBA4EAB892D19536F1>]
+>>
+startxref
+3701
+%%EOF
diff --git a/docs/libcurl/opts/CURLOPT_KRBLEVEL.3 b/docs/libcurl/opts/CURLOPT_KRBLEVEL.3
new file mode 100644 (file)
index 0000000..571eba3
--- /dev/null
@@ -0,0 +1,48 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_KRBLEVEL 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_KRBLEVEL \- set FTP kerberos security level
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_KRBLEVEL, char *level);
+.SH DESCRIPTION
+Pass a char * as parameter. Set the kerberos security level for FTP; this also
+enables kerberos awareness.  This is a string that should match one of the
+following: \&'clear', \&'safe', \&'confidential' or \&'private'.  If the
+string is set but doesn't match one of these, 'private' will be used. Set the
+string to NULL to disable kerberos support for FTP.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+FTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+This option was known as CURLOPT_KRB4LEVEL up to 7.16.3
+.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 CURLOPT_KRBLEVEL "(3), " CURLOPT_FTP_SSL "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_KRBLEVEL.html b/docs/libcurl/opts/CURLOPT_KRBLEVEL.html
new file mode 100644 (file)
index 0000000..4e503fd
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_KRBLEVEL man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_KRBLEVEL - set FTP kerberos security level <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_KRBLEVEL, char *level); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * as parameter. Set the kerberos security level for FTP; this also enables kerberos awareness.  This is a string that should match one of the following: 'clear', 'safe', 'confidential' or 'private'.  If the string is set but doesn't match one of these, 'private' will be used. Set the string to NULL to disable kerberos support for FTP. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">FTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">This option was known as CURLOPT_KRB4LEVEL up to 7.16.3 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_KRBLEVEL.html">CURLOPT_KRBLEVEL</a>, <span Class="manpage">  CURLOPT_FTP_SSL (3)</span> <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_KRBLEVEL.pdf b/docs/libcurl/opts/CURLOPT_KRBLEVEL.pdf
new file mode 100644 (file)
index 0000000..9a583b5
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_KRBLEVEL.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_LOCALPORT.3 b/docs/libcurl/opts/CURLOPT_LOCALPORT.3
new file mode 100644 (file)
index 0000000..88ca1f8
--- /dev/null
@@ -0,0 +1,46 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_LOCALPORT 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_LOCALPORT \- set local port number to use for socket
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOCALPORT, long port);
+.SH DESCRIPTION
+Pass a long. This sets the local port number of the socket used for the
+connection. This can be used in combination with \fICURLOPT_INTERFACE(3)\fP
+and you are recommended to use \fICURLOPT_LOCALPORTRANGE(3)\fP as well when
+this option is set. Valid port numbers are 1 - 65535.
+.SH DEFAULT
+0, disabled - use whatever the system thinks is fine
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.15.2
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_LOCALPORTRANGE "(3), " CURLOPT_INTERFACE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_LOCALPORT.html b/docs/libcurl/opts/CURLOPT_LOCALPORT.html
new file mode 100644 (file)
index 0000000..ff86fd5
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_LOCALPORT man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_LOCALPORT - set local port number to use for socket <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOCALPORT, long port); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long. This sets the local port number of the socket used for the connection. This can be used in combination with <a Class="emphasis" href="./CURLOPT_INTERFACE.html">CURLOPT_INTERFACE</a> and you are recommended to use <a Class="emphasis" href="./CURLOPT_LOCALPORTRANGE.html">CURLOPT_LOCALPORTRANGE</a> as well when this option is set. Valid port numbers are 1 - 65535. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0, disabled - use whatever the system thinks is fine <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.15.2 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_LOCALPORTRANGE.html">CURLOPT_LOCALPORTRANGE</a>, <a Class="manpage" href="./CURLOPT_INTERFACE.html">CURLOPT_INTERFACE</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_LOCALPORT.pdf b/docs/libcurl/opts/CURLOPT_LOCALPORT.pdf
new file mode 100644 (file)
index 0000000..68e8564
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_LOCALPORT.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3 b/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3
new file mode 100644 (file)
index 0000000..3a7c701
--- /dev/null
@@ -0,0 +1,50 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_LOCALPORTRANGE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_LOCALPORTRANGE \- number of additional local ports to try
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOCALPORTRANGE,
+                          long range);
+.SH DESCRIPTION
+Pass a long. The \fIrange\fP argument is the number of attempts libcurl will
+make to find a working local port number. It starts with the given
+\fICURLOPT_LOCALPORT(3)\fP and adds one to the number for each retry. Setting
+this option to 1 or below will make libcurl do only one try for the exact port
+number. Port numbers by nature are scarce resources that will be busy at times
+so setting this value to something too low might cause unnecessary connection
+setup failures.
+.SH DEFAULT
+1
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.15.2
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_LOCALPORT "(3), " CURLOPT_INTERFACE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.html b/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.html
new file mode 100644 (file)
index 0000000..1e6181e
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_LOCALPORTRANGE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_LOCALPORTRANGE - number of additional local ports to try <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOCALPORTRANGE, &nbsp;                         long range); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long. The <span Class="emphasis">range</span> argument is the number of attempts libcurl will make to find a working local port number. It starts with the given <a Class="emphasis" href="./CURLOPT_LOCALPORT.html">CURLOPT_LOCALPORT</a> and adds one to the number for each retry. Setting this option to 1 or below will make libcurl do only one try for the exact port number. Port numbers by nature are scarce resources that will be busy at times so setting this value to something too low might cause unnecessary connection setup failures. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">1 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.15.2 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_LOCALPORT.html">CURLOPT_LOCALPORT</a>, <a Class="manpage" href="./CURLOPT_INTERFACE.html">CURLOPT_INTERFACE</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.pdf b/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.pdf
new file mode 100644 (file)
index 0000000..cf5a7a6
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3 b/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3
new file mode 100644 (file)
index 0000000..dde3c6e
--- /dev/null
@@ -0,0 +1,53 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_LOGIN_OPTIONS 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_LOGIN_OPTIONS \- set login options
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOGIN_OPTIONS, char *options);
+.SH DESCRIPTION
+Pass a char * as parameter, which should be pointing to the zero terminated
+\fIoptions\fP string to use for the transfer.
+
+For more information about the login options please see RFC2384, RFC5092 and
+IETF draft draft-earhart-url-smtp-00.txt
+
+\fBCURLOPT_LOGIN_OPTIONS(3)\fP can be used to set protocol specific login
+options, such as the preferred authentication mechanism via "AUTH=NTLM" or
+"AUTH=*", and should be used in conjunction with the \fICURLOPT_USERNAME(3)\fP
+option.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+Only IMAP, POP3 and SMTP support login options.
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.34.0
+.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 CURLOPT_USERNAME "(3), " CURLOPT_PASSWORD "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.html b/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.html
new file mode 100644 (file)
index 0000000..ac84955
--- /dev/null
@@ -0,0 +1,62 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_LOGIN_OPTIONS man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_LOGIN_OPTIONS - set login options <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOGIN_OPTIONS, char *options); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * as parameter, which should be pointing to the zero terminated <span Class="emphasis">options</span> string to use for the transfer. 
+<p class="level0">For more information about the login options please see <a href="http://www.ietf.org/rfc/rfc2384.txt">RFC 2384</a>, RFC5092 and IETF draft draft-earhart-url-smtp-00.txt 
+<p class="level0"><a Class="bold" href="./CURLOPT_LOGIN_OPTIONS.html">CURLOPT_LOGIN_OPTIONS</a> can be used to set protocol specific login options, such as the preferred authentication mechanism via "AUTH=NTLM" or "AUTH=*", and should be used in conjunction with the <a Class="emphasis" href="./CURLOPT_USERNAME.html">CURLOPT_USERNAME</a> option. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">Only IMAP, POP3 and SMTP support login options. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.34.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_USERNAME.html">CURLOPT_USERNAME</a>, <a Class="manpage" href="./CURLOPT_PASSWORD.html">CURLOPT_PASSWORD</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.pdf b/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.pdf
new file mode 100644 (file)
index 0000000..7c15e64
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3 b/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3
new file mode 100644 (file)
index 0000000..893c1b1
--- /dev/null
@@ -0,0 +1,46 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_LOW_SPEED_LIMIT 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_LOW_SPEED_LIMIT \- set low speed limit in bytes per second
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOW_SPEED_LIMIT, long speedlimit);
+.SH DESCRIPTION
+Pass a long as parameter. It contains the average transfer speed in bytes per
+second that the transfer should be below during
+\fICURLOPT_LOW_SPEED_TIME(3)\fP seconds for libcurl to consider it to be too
+slow and abort.
+.SH DEFAULT
+0, disabled
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_LOW_SPEED_TIME "(3), " CURLOPT_TIMEOUT "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.html b/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.html
new file mode 100644 (file)
index 0000000..a10f6e6
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_LOW_SPEED_LIMIT man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_LOW_SPEED_LIMIT - set low speed limit in bytes per second <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOW_SPEED_LIMIT, long speedlimit); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long as parameter. It contains the average transfer speed in bytes per second that the transfer should be below during <a Class="emphasis" href="./CURLOPT_LOW_SPEED_TIME.html">CURLOPT_LOW_SPEED_TIME</a> seconds for libcurl to consider it to be too slow and abort. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0, disabled <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_LOW_SPEED_TIME.html">CURLOPT_LOW_SPEED_TIME</a>, <a Class="manpage" href="./CURLOPT_TIMEOUT.html">CURLOPT_TIMEOUT</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.pdf b/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.pdf
new file mode 100644 (file)
index 0000000..b7aaaf5
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3 b/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3
new file mode 100644 (file)
index 0000000..90b19f2
--- /dev/null
@@ -0,0 +1,45 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_LOW_SPEED_TIME 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_LOW_SPEED_TIME \- set low speed limit time period
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOW_SPEED_TIME, long speedtime);
+.SH DESCRIPTION
+Pass a long as parameter. It contains the time in number seconds that the
+transfer speed should be below the \fICURLOPT_LOW_SPEED_LIMIT(3)\fP for the
+library to consider it too slow and abort.
+.SH DEFAULT
+0, disabled
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_LOW_SPEED_LIMIT "(3), " CURLOPT_TIMEOUT "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.html b/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.html
new file mode 100644 (file)
index 0000000..0d097df
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_LOW_SPEED_TIME man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_LOW_SPEED_TIME - set low speed limit time period <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOW_SPEED_TIME, long speedtime); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long as parameter. It contains the time in number seconds that the transfer speed should be below the <a Class="emphasis" href="./CURLOPT_LOW_SPEED_LIMIT.html">CURLOPT_LOW_SPEED_LIMIT</a> for the library to consider it too slow and abort. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0, disabled <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_LOW_SPEED_LIMIT.html">CURLOPT_LOW_SPEED_LIMIT</a>, <a Class="manpage" href="./CURLOPT_TIMEOUT.html">CURLOPT_TIMEOUT</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.pdf b/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.pdf
new file mode 100644 (file)
index 0000000..41f2f37
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3 b/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3
new file mode 100644 (file)
index 0000000..4591a01
--- /dev/null
@@ -0,0 +1,58 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_MAIL_AUTH 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_MAIL_AUTH \- SMTP authentication address
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAIL_AUTH, char *auth);
+.SH DESCRIPTION
+Pass a pointer to a zero terminated string as parameter. This will be used to
+specify the authentication address (identity) of a submitted message that is
+being relayed to another server.
+
+This optional parameter allows co-operating agents in a trusted environment to
+communicate the authentication of individual messages and should only be used
+by the application program, using libcurl, if the application is itself a mail
+server acting in such an environment. If the application is operating as such
+and the AUTH address is not known or is invalid, then an empty string should
+be used for this parameter.
+
+Unlike \fICURLOPT_MAIL_FROM(3)\fP and \fICURLOPT_MAIL_RCPT(3)\fP, the address
+should not be specified within a pair of angled brackets (<>). However, if an
+empty string is used then a pair of brackets will be sent by libcurl as
+required by RFC2554.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+SMTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.25.0
+.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 CURLOPT_MAIL_FROM "(3), " CURLOPT_MAIL_RCPT "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_MAIL_AUTH.html b/docs/libcurl/opts/CURLOPT_MAIL_AUTH.html
new file mode 100644 (file)
index 0000000..3209031
--- /dev/null
@@ -0,0 +1,62 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_MAIL_AUTH man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_MAIL_AUTH - SMTP authentication address <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAIL_AUTH, char *auth); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to a zero terminated string as parameter. This will be used to specify the authentication address (identity) of a submitted message that is being relayed to another server. 
+<p class="level0">This optional parameter allows co-operating agents in a trusted environment to communicate the authentication of individual messages and should only be used by the application program, using libcurl, if the application is itself a mail server acting in such an environment. If the application is operating as such and the AUTH address is not known or is invalid, then an empty string should be used for this parameter. 
+<p class="level0">Unlike <a Class="emphasis" href="./CURLOPT_MAIL_FROM.html">CURLOPT_MAIL_FROM</a> and <a Class="emphasis" href="./CURLOPT_MAIL_RCPT.html">CURLOPT_MAIL_RCPT</a>, the address should not be specified within a pair of angled brackets (&lt;&gt;). However, if an empty string is used then a pair of brackets will be sent by libcurl as required by <a href="http://www.ietf.org/rfc/rfc2554.txt">RFC 2554</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">SMTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.25.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_MAIL_FROM.html">CURLOPT_MAIL_FROM</a>, <a Class="manpage" href="./CURLOPT_MAIL_RCPT.html">CURLOPT_MAIL_RCPT</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_MAIL_AUTH.pdf b/docs/libcurl/opts/CURLOPT_MAIL_AUTH.pdf
new file mode 100644 (file)
index 0000000..5afbd97
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_MAIL_AUTH.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_MAIL_FROM.3 b/docs/libcurl/opts/CURLOPT_MAIL_FROM.3
new file mode 100644 (file)
index 0000000..bf7160e
--- /dev/null
@@ -0,0 +1,51 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_MAIL_FROM 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_MAIL_FROM \- SMTP sender address
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAIL_FROM, char *from);
+.SH DESCRIPTION
+Pass a pointer to a zero terminated string as parameter. This should be used
+to specify the sender's email address when sending SMTP mail with libcurl.
+
+An originator email address should be specified with angled brackets (<>)
+around it, which if not specified will be added automatically.
+
+If this parameter is not specified then an empty address will be sent to the
+mail server which may cause the email to be rejected.
+.SH DEFAULT
+blank
+.SH PROTOCOLS
+SMTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.20.0
+.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 CURLOPT_MAIL_RCPT "(3), " CURLOPT_MAIL_AUTH "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_MAIL_FROM.html b/docs/libcurl/opts/CURLOPT_MAIL_FROM.html
new file mode 100644 (file)
index 0000000..f34a2fc
--- /dev/null
@@ -0,0 +1,62 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_MAIL_FROM man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_MAIL_FROM - SMTP sender address <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAIL_FROM, char *from); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to a zero terminated string as parameter. This should be used to specify the sender's email address when sending SMTP mail with libcurl. 
+<p class="level0">An originator email address should be specified with angled brackets (&lt;&gt;) around it, which if not specified will be added automatically. 
+<p class="level0">If this parameter is not specified then an empty address will be sent to the mail server which may cause the email to be rejected. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">blank <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">SMTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.20.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_MAIL_RCPT.html">CURLOPT_MAIL_RCPT</a>, <a Class="manpage" href="./CURLOPT_MAIL_AUTH.html">CURLOPT_MAIL_AUTH</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_MAIL_FROM.pdf b/docs/libcurl/opts/CURLOPT_MAIL_FROM.pdf
new file mode 100644 (file)
index 0000000..0d24fce
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_MAIL_FROM.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3 b/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3
new file mode 100644 (file)
index 0000000..95665e7
--- /dev/null
@@ -0,0 +1,60 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_MAIL_RCPT 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_MAIL_RCPT \- list of SMTP mail recipients
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAIL_RCPT,
+                          struct curl_slist *rcpts);
+.SH DESCRIPTION
+Pass a pointer to a linked list of recipients to pass to the server in your
+SMTP mail request. 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.
+
+When performing a mail transfer, each recipient should be specified within a
+pair of angled brackets (<>), however, should you not use an angled bracket as
+the first character libcurl will assume you provided a single email address
+and enclose that address within brackets for you.
+
+When performing an address verification (VRFY command), each recipient should
+be specified as the user name or user name and domain (as per Section 3.5 of
+RFC5321).
+
+When performing a mailing list expand (EXPN command), each recipient should be
+specified using the mailing list name, such as "Friends" or "London-Office".
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+SMTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.20.0. The VRFY and EXPN logic was added in 7.34.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_MAIL_FROM "(3), " CURLOPT_MAIL_AUTH "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_MAIL_RCPT.html b/docs/libcurl/opts/CURLOPT_MAIL_RCPT.html
new file mode 100644 (file)
index 0000000..a37fcd5
--- /dev/null
@@ -0,0 +1,67 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_MAIL_RCPT man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_MAIL_RCPT - list of SMTP mail recipients <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAIL_RCPT,
+ &nbsp;                         struct curl_slist *rcpts);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to a linked list of recipients to pass to the server in your SMTP mail request. The linked list should be a fully valid list of <span class="bold">struct curl_slist</span> structs properly filled in. Use <span Class="emphasis">curl_slist_append(3)</span> to create the list and <span Class="emphasis">curl_slist_free_all(3)</span> to clean up an entire list. 
+<p class="level0">When performing a mail transfer, each recipient should be specified within a pair of angled brackets (&lt;&gt;), however, should you not use an angled bracket as the first character libcurl will assume you provided a single email address and enclose that address within brackets for you. 
+<p class="level0">When performing an address verification (VRFY command), each recipient should be specified as the user name or user name and domain (as per Section 3.5 of <a href="http://www.ietf.org/rfc/rfc5321.txt">RFC 5321</a>). 
+<p class="level0">When performing a mailing list expand (EXPN command), each recipient should be specified using the mailing list name, such as "Friends" or "London-Office". <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">SMTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.20.0. The VRFY and EXPN logic was added in 7.34.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_MAIL_FROM.html">CURLOPT_MAIL_FROM</a>, <a Class="manpage" href="./CURLOPT_MAIL_AUTH.html">CURLOPT_MAIL_AUTH</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_MAIL_RCPT.pdf b/docs/libcurl/opts/CURLOPT_MAIL_RCPT.pdf
new file mode 100644 (file)
index 0000000..bc2e86f
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_MAIL_RCPT.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3 b/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3
new file mode 100644 (file)
index 0000000..2a41b37
--- /dev/null
@@ -0,0 +1,59 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_MAXCONNECTS 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_MAXCONNECTS \- maximum connection cache size
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXCONNECTS, long amount);
+.SH DESCRIPTION
+Pass a long. The set \fIamount\fP will be the maximum number of simultaneously
+open persistent connections that libcurl may cache in the pool associated with
+this handle. The default is 5, and there isn't much point in changing this
+value unless you are perfectly aware of how this works and changes libcurl's
+behaviour. This concerns connections using any of the protocols that support
+persistent connections.
+
+When reaching the maximum limit, curl closes the oldest one in the cache to
+prevent increasing the number of open connections.
+
+If you already have performed transfers with this curl handle, setting a
+smaller \fICURLOPT_MAXCONNECTS(3)\fP than before may cause open connections to
+get closed unnecessarily.
+
+If you add this easy handle to a multi handle, this setting is not
+acknowledged, and you must instead use \fIcurl_multi_setopt(3)\fP and the
+\fICURLMOPT_MAXCONNECTS\fP option.
+.SH DEFAULT
+5
+.SH PROTOCOLS
+Most
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLMOPT_MAXCONNECTS "(3), " CURLOPT_MAXREDIRS "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_MAXCONNECTS.html b/docs/libcurl/opts/CURLOPT_MAXCONNECTS.html
new file mode 100644 (file)
index 0000000..3edcfba
--- /dev/null
@@ -0,0 +1,63 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_MAXCONNECTS man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_MAXCONNECTS - maximum connection cache size <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXCONNECTS, long amount); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long. The set <span Class="emphasis">amount</span> will be the maximum number of simultaneously open persistent connections that libcurl may cache in the pool associated with this handle. The default is 5, and there isn't much point in changing this value unless you are perfectly aware of how this works and changes libcurl's behaviour. This concerns connections using any of the protocols that support persistent connections. 
+<p class="level0">When reaching the maximum limit, curl closes the oldest one in the cache to prevent increasing the number of open connections. 
+<p class="level0">If you already have performed transfers with this curl handle, setting a smaller <a Class="emphasis" href="./CURLOPT_MAXCONNECTS.html">CURLOPT_MAXCONNECTS</a> than before may cause open connections to get closed unnecessarily. 
+<p class="level0">If you add this easy handle to a multi handle, this setting is not acknowledged, and you must instead use <span Class="emphasis">curl_multi_setopt(3)</span> and the <span Class="emphasis">CURLMOPT_MAXCONNECTS</span> option. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">5 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">Most <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLMOPT_MAXCONNECTS.html">CURLMOPT_MAXCONNECTS</a>, <a Class="manpage" href="./CURLOPT_MAXREDIRS.html">CURLOPT_MAXREDIRS</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_MAXCONNECTS.pdf b/docs/libcurl/opts/CURLOPT_MAXCONNECTS.pdf
new file mode 100644 (file)
index 0000000..1cc92db
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_MAXCONNECTS.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3 b/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3
new file mode 100644 (file)
index 0000000..e0ce066
--- /dev/null
@@ -0,0 +1,52 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_MAXFILESIZE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_MAXFILESIZE \- maximum file size allowed to download
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXFILESIZE, long size);
+.SH DESCRIPTION
+Pass a long as parameter. This allows you to specify the maximum \fIsize\fP
+(in bytes) of a file to download. If the file requested is found larger than
+this value, the transfer will not start and \fICURLE_FILESIZE_EXCEEDED\fP will
+be returned.
+
+The file size is not always known prior to download, and for such files this
+option has no effect even if the file transfer ends up being larger than this
+given limit. This concerns both FTP and HTTP transfers.
+
+If you want a limit above 2GB, use \fICURLOPT_MAXFILESIZE_LARGE(3)\fP.
+.SH DEFAULT
+None
+.SH PROTOCOLS
+FTP and HTTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_MAXFILESIZE_LARGE "(3), " CURLOPT_MAX_RECV_SPEED_LARGE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_MAXFILESIZE.html b/docs/libcurl/opts/CURLOPT_MAXFILESIZE.html
new file mode 100644 (file)
index 0000000..306cc59
--- /dev/null
@@ -0,0 +1,62 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_MAXFILESIZE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_MAXFILESIZE - maximum file size allowed to download <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXFILESIZE, long size); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long as parameter. This allows you to specify the maximum <span Class="emphasis">size</span> (in bytes) of a file to download. If the file requested is found larger than this value, the transfer will not start and <span Class="emphasis">CURLE_FILESIZE_EXCEEDED</span> will be returned. 
+<p class="level0">The file size is not always known prior to download, and for such files this option has no effect even if the file transfer ends up being larger than this given limit. This concerns both FTP and HTTP transfers. 
+<p class="level0">If you want a limit above 2GB, use <a Class="emphasis" href="./CURLOPT_MAXFILESIZE_LARGE.html">CURLOPT_MAXFILESIZE_LARGE</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">None <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">FTP and HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_MAXFILESIZE_LARGE.html">CURLOPT_MAXFILESIZE_LARGE</a>, <a Class="manpage" href="./CURLOPT_MAX_RECV_SPEED_LARGE.html">CURLOPT_MAX_RECV_SPEED_LARGE</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_MAXFILESIZE.pdf b/docs/libcurl/opts/CURLOPT_MAXFILESIZE.pdf
new file mode 100644 (file)
index 0000000..b434b96
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_MAXFILESIZE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3 b/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3
new file mode 100644 (file)
index 0000000..b313001
--- /dev/null
@@ -0,0 +1,52 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_MAXFILESIZE_LARGE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_MAXFILESIZE_LARGE \- maximum file size allowed to download
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXFILESIZE_LARGE,
+                          curl_off_t size);
+.SH DESCRIPTION
+Pass a curl_off_t as parameter. This allows you to specify the maximum
+\fIsize\fP (in bytes) of a file to download. If the file requested is found
+larger than this value, the transfer will not start and
+\fICURLE_FILESIZE_EXCEEDED\fP will be returned.
+
+The file size is not always known prior to download, and for such files this
+option has no effect even if the file transfer ends up being larger than this
+given limit. This concerns both FTP and HTTP transfers.
+.SH DEFAULT
+None
+.SH PROTOCOLS
+FTP and HTTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.11.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_MAXFILESIZE "(3), " CURLOPT_MAX_RECV_SPEED_LARGE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.html b/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.html
new file mode 100644 (file)
index 0000000..fb97d1e
--- /dev/null
@@ -0,0 +1,65 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_MAXFILESIZE_LARGE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_MAXFILESIZE_LARGE - maximum file size allowed to download <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXFILESIZE_LARGE,
+ &nbsp;                         curl_off_t size);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a curl_off_t as parameter. This allows you to specify the maximum <span Class="emphasis">size</span> (in bytes) of a file to download. If the file requested is found larger than this value, the transfer will not start and <span Class="emphasis">CURLE_FILESIZE_EXCEEDED</span> will be returned. 
+<p class="level0">The file size is not always known prior to download, and for such files this option has no effect even if the file transfer ends up being larger than this given limit. This concerns both FTP and HTTP transfers. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">None <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">FTP and HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.11.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_MAXFILESIZE.html">CURLOPT_MAXFILESIZE</a>, <a Class="manpage" href="./CURLOPT_MAX_RECV_SPEED_LARGE.html">CURLOPT_MAX_RECV_SPEED_LARGE</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.pdf b/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.pdf
new file mode 100644 (file)
index 0000000..3ab4721
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_MAXREDIRS.3 b/docs/libcurl/opts/CURLOPT_MAXREDIRS.3
new file mode 100644 (file)
index 0000000..34608c3
--- /dev/null
@@ -0,0 +1,64 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_MAXREDIRS 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_MAXREDIRS \- maximum number of redirects allowed
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXREDIRS, long amount);
+.SH DESCRIPTION
+Pass a long. The set number will be the redirection limit \fIamount\fP. If
+that many redirections have been followed, the next redirect will cause an
+error (\fICURLE_TOO_MANY_REDIRECTS\fP). This option only makes sense if the
+\fICURLOPT_FOLLOWLOCATION(3)\fP is used at the same time.
+
+Setting the limit to 0 will make libcurl refuse any redirect.
+
+Set it to -1 for an infinite number of redirects.
+.SH DEFAULT
+-1, unlimited
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+.nf
+curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/");
+
+  /* enable redirect following */
+  curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
+
+  /* allow three redirects */
+  curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 3L);
+
+  /* Perform the request */
+  curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+Along with HTTP
+.SH RETURN VALUE
+Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_FOLLOWLOCATION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_MAXREDIRS.html b/docs/libcurl/opts/CURLOPT_MAXREDIRS.html
new file mode 100644 (file)
index 0000000..5fe7247
--- /dev/null
@@ -0,0 +1,75 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_MAXREDIRS man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_MAXREDIRS - maximum number of redirects allowed <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXREDIRS, long amount); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long. The set number will be the redirection limit <span Class="emphasis">amount</span>. If that many redirections have been followed, the next redirect will cause an error (<span Class="emphasis">CURLE_TOO_MANY_REDIRECTS</span>). This option only makes sense if the <a Class="emphasis" href="./CURLOPT_FOLLOWLOCATION.html">CURLOPT_FOLLOWLOCATION</a> is used at the same time. 
+<p class="level0">Setting the limit to 0 will make libcurl refuse any redirect. 
+<p class="level0">Set it to -1 for an infinite number of redirects. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">-1, unlimited <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP(S) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre>
+<p class="level0">curl = curl_easy_init();
+ if(curl) {
+ &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com/">http://example.com/</a>");
+ <p class="level0">&nbsp; /* enable redirect following */
+ &nbsp; curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
+ <p class="level0">&nbsp; /* allow three redirects */
+ &nbsp; curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 3L);
+ <p class="level0">&nbsp; /* Perform the request */
+ &nbsp; curl_easy_perform(curl);
+ }
+ </pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Along with HTTP <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_FOLLOWLOCATION.html">CURLOPT_FOLLOWLOCATION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_MAXREDIRS.pdf b/docs/libcurl/opts/CURLOPT_MAXREDIRS.pdf
new file mode 100644 (file)
index 0000000..a00bda4
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_MAXREDIRS.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3 b/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3
new file mode 100644 (file)
index 0000000..e73ad22
--- /dev/null
@@ -0,0 +1,49 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_MAX_RECV_SPEED_LARGE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_MAX_RECV_SPEED_LARGE \- rate limit data download speed
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAX_RECV_SPEED_LARGE,
+                          curl_off_t speed);
+.SH DESCRIPTION
+Pass a curl_off_t as parameter.  If a download exceeds this \fIspeed\fP
+(counted in bytes per second) on cumulative average during the transfer, the
+transfer will pause to keep the average rate less than or equal to the
+parameter value. Defaults to unlimited speed.
+
+This option doesn't affect transfer speeds done with FILE:// URLs.
+.SH DEFAULT
+0, disabled
+.SH PROTOCOLS
+All but file://
+.SH EXAMPLE
+.SH AVAILABILITY
+Added in 7.15.5
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_MAX_SEND_SPEED_LARGE "(3), " CURLOPT_LOW_SPEED_LIMIT "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.html b/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.html
new file mode 100644 (file)
index 0000000..aa54256
--- /dev/null
@@ -0,0 +1,65 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_MAX_RECV_SPEED_LARGE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_MAX_RECV_SPEED_LARGE - rate limit data download speed <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAX_RECV_SPEED_LARGE,
+ &nbsp;                         curl_off_t speed);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a curl_off_t as parameter.  If a download exceeds this <span Class="emphasis">speed</span> (counted in bytes per second) on cumulative average during the transfer, the transfer will pause to keep the average rate less than or equal to the parameter value. Defaults to unlimited speed. 
+<p class="level0">This option doesn't affect transfer speeds done with FILE:// URLs. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0, disabled <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All but file:// <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.15.5 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_MAX_SEND_SPEED_LARGE.html">CURLOPT_MAX_SEND_SPEED_LARGE</a>, <a Class="manpage" href="./CURLOPT_LOW_SPEED_LIMIT.html">CURLOPT_LOW_SPEED_LIMIT</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.pdf b/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.pdf
new file mode 100644 (file)
index 0000000..ffd933a
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3 b/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3
new file mode 100644 (file)
index 0000000..4893b39
--- /dev/null
@@ -0,0 +1,50 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_MAX_SEND_SPEED_LARGE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_MAX_SEND_SPEED_LARGE \- rate limit data upload speed
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAX_SEND_SPEED_LARGE,
+                          curl_off_t maxspeed);
+.SH DESCRIPTION
+Pass a curl_off_t as parameter with the \fImaxspeed\fP.  If an upload exceeds
+this speed (counted in bytes per second) on cumulative average during the
+transfer, the transfer will pause to keep the average rate less than or equal
+to the parameter value.  Defaults to unlimited speed.
+
+This option doesn't affect transfer speeds done with FILE:// URLs.
+.SH DEFAULT
+0, disabled
+.SH PROTOCOLS
+All except file://
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.15.5
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_MAX_RECV_SPEED_LARGE "(3), " CURLOPT_LOW_SPEED_LIMIT "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.html b/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.html
new file mode 100644 (file)
index 0000000..ed9c19a
--- /dev/null
@@ -0,0 +1,65 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_MAX_SEND_SPEED_LARGE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_MAX_SEND_SPEED_LARGE - rate limit data upload speed <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAX_SEND_SPEED_LARGE,
+ &nbsp;                         curl_off_t maxspeed);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a curl_off_t as parameter with the <span Class="emphasis">maxspeed</span>.  If an upload exceeds this speed (counted in bytes per second) on cumulative average during the transfer, the transfer will pause to keep the average rate less than or equal to the parameter value.  Defaults to unlimited speed. 
+<p class="level0">This option doesn't affect transfer speeds done with FILE:// URLs. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0, disabled <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All except file:// <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.15.5 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_MAX_RECV_SPEED_LARGE.html">CURLOPT_MAX_RECV_SPEED_LARGE</a>, <a Class="manpage" href="./CURLOPT_LOW_SPEED_LIMIT.html">CURLOPT_LOW_SPEED_LIMIT</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.pdf b/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.pdf
new file mode 100644 (file)
index 0000000..9b43918
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_NETRC.3 b/docs/libcurl/opts/CURLOPT_NETRC.3
new file mode 100644 (file)
index 0000000..9fb13b3
--- /dev/null
@@ -0,0 +1,73 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_NETRC 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_NETRC \- request that .netrc is used
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NETRC, long level);
+.SH DESCRIPTION
+This parameter controls the preference \fIlevel\fP of libcurl between using
+user names and passwords from your \fI~/.netrc\fP file, relative to user names
+and passwords in the URL supplied with \fICURLOPT_URL(3)\fP.
+
+libcurl uses a user name (and supplied or prompted password) supplied with
+\fICURLOPT_USERPWD(3)\fP or \fICURLOPT_USERNAME(3)\fP in preference to any of
+the options controlled by this parameter.
+
+Only machine name, user name and password are taken into account (init macros
+and similar things aren't supported).
+
+libcurl does not verify that the file has the correct properties set (as the
+standard Unix ftp client does). It should only be readable by user.
+
+\fIlevel\fP should be set to one of the values described below.
+
+.IP CURL_NETRC_OPTIONAL
+The use of your \fI~/.netrc\fP file is optional, and information in the URL is
+to be preferred.  The file will be scanned for the host and user name (to
+find the password only) or for the host only, to find the first user name and
+password after that \fImachine\fP, which ever information is not specified in
+the URL.
+
+Undefined values of the option will have this effect.
+.IP CURL_NETRC_IGNORED
+The library will ignore the file and use only the information in the URL.
+
+This is the default.
+.IP CURL_NETRC_REQUIRED
+This value tells the library that use of the file is required, to ignore the
+information in the URL, and to search the file for the host only.
+.SH DEFAULT
+CURL_NETRC_IGNORED
+.SH PROTOCOLS
+Most
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_USERPWD "(3), " CURLOPT_USERNAME "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_NETRC.html b/docs/libcurl/opts/CURLOPT_NETRC.html
new file mode 100644 (file)
index 0000000..777f4ff
--- /dev/null
@@ -0,0 +1,73 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_NETRC man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_NETRC - request that .netrc is used <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NETRC, long level); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">This parameter controls the preference <span Class="emphasis">level</span> of libcurl between using user names and passwords from your <span Class="emphasis">~/.netrc</span> file, relative to user names and passwords in the URL supplied with <a Class="emphasis" href="./CURLOPT_URL.html">CURLOPT_URL</a>. 
+<p class="level0">libcurl uses a user name (and supplied or prompted password) supplied with <a Class="emphasis" href="./CURLOPT_USERPWD.html">CURLOPT_USERPWD</a> or <a Class="emphasis" href="./CURLOPT_USERNAME.html">CURLOPT_USERNAME</a> in preference to any of the options controlled by this parameter. 
+<p class="level0">Only machine name, user name and password are taken into account (init macros and similar things aren't supported). 
+<p class="level0">libcurl does not verify that the file has the correct properties set (as the standard Unix ftp client does). It should only be readable by user. 
+<p class="level0"><span Class="emphasis">level</span> should be set to one of the values described below. 
+<p class="level0">
+<p class="level0"><a name="CURLNETRCOPTIONAL"></a><span class="nroffip">CURL_NETRC_OPTIONAL</span> 
+<p class="level1">The use of your <span Class="emphasis">~/.netrc</span> file is optional, and information in the URL is to be preferred.  The file will be scanned for the host and user name (to find the password only) or for the host only, to find the first user name and password after that <span Class="emphasis">machine</span>, which ever information is not specified in the URL. 
+<p class="level1">Undefined values of the option will have this effect. 
+<p class="level0"><a name="CURLNETRCIGNORED"></a><span class="nroffip">CURL_NETRC_IGNORED</span> 
+<p class="level1">The library will ignore the file and use only the information in the URL. 
+<p class="level1">This is the default. 
+<p class="level0"><a name="CURLNETRCREQUIRED"></a><span class="nroffip">CURL_NETRC_REQUIRED</span> 
+<p class="level1">This value tells the library that use of the file is required, to ignore the information in the URL, and to search the file for the host only. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">CURL_NETRC_IGNORED <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">Most <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_USERPWD.html">CURLOPT_USERPWD</a>, <a Class="manpage" href="./CURLOPT_USERNAME.html">CURLOPT_USERNAME</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_NETRC.pdf b/docs/libcurl/opts/CURLOPT_NETRC.pdf
new file mode 100644 (file)
index 0000000..05b8eea
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_NETRC.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_NETRC_FILE.3 b/docs/libcurl/opts/CURLOPT_NETRC_FILE.3
new file mode 100644 (file)
index 0000000..7291999
--- /dev/null
@@ -0,0 +1,48 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_NETRC_FILE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_NETRC_FILE \- file name to read .netrc info from
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NETRC_FILE, char *file);
+.SH DESCRIPTION
+Pass a char * as parameter, pointing to a zero terminated string containing
+the full path name to the \fIfile\fP you want libcurl to use as .netrc
+file. If this option is omitted, and \fICURLOPT_NETRC(3)\fP is set, libcurl
+will attempt to find a .netrc file in the current user's home
+directory.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.10.9
+.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 CURLOPT_NETRC "(3), " CURLOPT_USERNAME "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_NETRC_FILE.html b/docs/libcurl/opts/CURLOPT_NETRC_FILE.html
new file mode 100644 (file)
index 0000000..8b05da0
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_NETRC_FILE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_NETRC_FILE - file name to read .netrc info from <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NETRC_FILE, char *file); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * as parameter, pointing to a zero terminated string containing the full path name to the <span Class="emphasis">file</span> you want libcurl to use as .netrc file. If this option is omitted, and <a Class="emphasis" href="./CURLOPT_NETRC.html">CURLOPT_NETRC</a> is set, libcurl will attempt to find a .netrc file in the current user's home directory. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.10.9 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_NETRC.html">CURLOPT_NETRC</a>, <a Class="manpage" href="./CURLOPT_USERNAME.html">CURLOPT_USERNAME</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_NETRC_FILE.pdf b/docs/libcurl/opts/CURLOPT_NETRC_FILE.pdf
new file mode 100644 (file)
index 0000000..e14615d
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_NETRC_FILE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3 b/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3
new file mode 100644 (file)
index 0000000..2d22595
--- /dev/null
@@ -0,0 +1,48 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_NEW_DIRECTORY_PERMS 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_NEW_DIRECTORY_PERMS \- permissions for remotely created directories
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NEW_DIRECTORY_PERMS,
+                          long mode);
+.SH DESCRIPTION
+Pass a long as a parameter, containing the value of the permissions that will
+be assigned to newly created directories on the remote server.  The default value is
+\fI0755\fP, but any valid value can be used.  The only protocols that can use
+this are \fIsftp://\fP, \fIscp://\fP, and \fIfile://\fP.
+.SH DEFAULT
+0755
+.SH PROTOCOLS
+SFTP, SCP and FILE
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.16.4
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_NEW_FILE_PERMS "(3), " CURLOPT_UPLOAD "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.html b/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.html
new file mode 100644 (file)
index 0000000..401b885
--- /dev/null
@@ -0,0 +1,64 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_NEW_DIRECTORY_PERMS man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_NEW_DIRECTORY_PERMS - permissions for remotely created directories <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NEW_DIRECTORY_PERMS,
+ &nbsp;                         long mode);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long as a parameter, containing the value of the permissions that will be assigned to newly created directories on the remote server.  The default value is <span Class="emphasis">0755</span>, but any valid value can be used.  The only protocols that can use this are <span Class="emphasis">sftp://</span>, <span Class="emphasis">scp://</span>, and <span Class="emphasis">file://</span>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0755 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">SFTP, SCP and FILE <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.16.4 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_NEW_FILE_PERMS.html">CURLOPT_NEW_FILE_PERMS</a>, <a Class="manpage" href="./CURLOPT_UPLOAD.html">CURLOPT_UPLOAD</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.pdf b/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.pdf
new file mode 100644 (file)
index 0000000..75aa45f
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3 b/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3
new file mode 100644 (file)
index 0000000..eb51f46
--- /dev/null
@@ -0,0 +1,48 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_NEW_FILE_PERMS 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_NEW_FILE_PERMS \- permissions for remotely created files
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NEW_FILE_PERMS,
+                          long mode);
+.SH DESCRIPTION
+Pass a long as a parameter, containing the value of the permissions that will
+be assigned to newly created files on the remote server.  The default value is
+\fI0644\fP, but any valid value can be used.  The only protocols that can use
+this are \fIsftp://\fP, \fIscp://\fP, and \fIfile://\fP.
+.SH DEFAULT
+0644
+.SH PROTOCOLS
+SFTP, SCP and FILE
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.16.4
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_NEW_DIRECTORY_PERMS "(3), " CURLOPT_UPLOAD "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.html b/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.html
new file mode 100644 (file)
index 0000000..da31f73
--- /dev/null
@@ -0,0 +1,64 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_NEW_FILE_PERMS man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_NEW_FILE_PERMS - permissions for remotely created files <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NEW_FILE_PERMS,
+ &nbsp;                         long mode);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long as a parameter, containing the value of the permissions that will be assigned to newly created files on the remote server.  The default value is <span Class="emphasis">0644</span>, but any valid value can be used.  The only protocols that can use this are <span Class="emphasis">sftp://</span>, <span Class="emphasis">scp://</span>, and <span Class="emphasis">file://</span>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0644 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">SFTP, SCP and FILE <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.16.4 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_NEW_DIRECTORY_PERMS.html">CURLOPT_NEW_DIRECTORY_PERMS</a>, <a Class="manpage" href="./CURLOPT_UPLOAD.html">CURLOPT_UPLOAD</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.pdf b/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.pdf
new file mode 100644 (file)
index 0000000..4be0871
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_NOBODY.3 b/docs/libcurl/opts/CURLOPT_NOBODY.3
new file mode 100644 (file)
index 0000000..b303b95
--- /dev/null
@@ -0,0 +1,59 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_NOBODY 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_NOBODY \- do the download request without getting the body
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOBODY, long opt);
+.SH DESCRIPTION
+A long parameter set to 1 tells libcurl to not include the body-part in the
+output when doing what would otherwise be a download. For HTTP(S), this makes
+libcurl do a HEAD request. For most other protocols it means just not asking
+to transfer the body data.
+
+Enabling this option means asking for a download but without a body.
+.SH DEFAULT
+0, the body is transferred
+.SH PROTOCOLS
+Most
+.SH EXAMPLE
+.nf
+curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+  /* get us the resource without a body! */ 
+  curl_easy_setopt(curl, CURLOPT_NOBODY, 1L);
+
+  /* Perform the request */ 
+  curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_HTTPGET "(3), " CURLOPT_POST "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_NOBODY.html b/docs/libcurl/opts/CURLOPT_NOBODY.html
new file mode 100644 (file)
index 0000000..abca439
--- /dev/null
@@ -0,0 +1,72 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_NOBODY man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_NOBODY - do the download request without getting the body <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOBODY, long opt); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">A long parameter set to 1 tells libcurl to not include the body-part in the output when doing what would otherwise be a download. For HTTP(S), this makes libcurl do a HEAD request. For most other protocols it means just not asking to transfer the body data. 
+<p class="level0">Enabling this option means asking for a download but without a body. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0, the body is transferred <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">Most <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre>
+<p class="level0">curl = curl_easy_init();
+ if(curl) {
+ &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+ <p class="level0">&nbsp; /* get us the resource without a body! */ 
+ &nbsp; curl_easy_setopt(curl, CURLOPT_NOBODY, 1L);
+ <p class="level0">&nbsp; /* Perform the request */ 
+ &nbsp; curl_easy_perform(curl);
+ }
+ </pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_HTTPGET.html">CURLOPT_HTTPGET</a>, <a Class="manpage" href="./CURLOPT_POST.html">CURLOPT_POST</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_NOBODY.pdf b/docs/libcurl/opts/CURLOPT_NOBODY.pdf
new file mode 100644 (file)
index 0000000..d58164a
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_NOBODY.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_NOPROGRESS.3 b/docs/libcurl/opts/CURLOPT_NOPROGRESS.3
new file mode 100644 (file)
index 0000000..ebdecb0
--- /dev/null
@@ -0,0 +1,42 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_NOPROGRESS 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_NOPROGRESS \- switch off the progress meter
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOPROGRESS, long onoff);
+.SH DESCRIPTION
+If \fIonoff\fP is to 1, it tells the library to shut off the progress meter
+completely for requests done with this \fIhandle\fP. It will also prevent the
+\fICURLOPT_PROGRESSFUNCTION(3)\fP from getting called.
+
+Future versions of libcurl are likely to not have any built-in progress meter
+at all.
+.SH DEFAULT
+1, meaning it normally runs without a progress meter.
+.SH RETURN VALUE
+Returns CURLE_OK.
+.SH "SEE ALSO"
+.BR CURLOPT_PROGRESSFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_NOPROGRESS.html b/docs/libcurl/opts/CURLOPT_NOPROGRESS.html
new file mode 100644 (file)
index 0000000..79bde0e
--- /dev/null
@@ -0,0 +1,58 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_NOPROGRESS man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_NOPROGRESS - switch off the progress meter <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOPROGRESS, long onoff); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">If <span Class="emphasis">onoff</span> is to 1, it tells the library to shut off the progress meter completely for requests done with this <span Class="emphasis">handle</span>. It will also prevent the <a Class="emphasis" href="./CURLOPT_PROGRESSFUNCTION.html">CURLOPT_PROGRESSFUNCTION</a> from getting called. 
+<p class="level0">Future versions of libcurl are likely to not have any built-in progress meter at all. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">1, meaning it normally runs without a progress meter. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_PROGRESSFUNCTION.html">CURLOPT_PROGRESSFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_NOPROGRESS.pdf b/docs/libcurl/opts/CURLOPT_NOPROGRESS.pdf
new file mode 100644 (file)
index 0000000..2d832a1
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_NOPROGRESS.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_NOPROXY.3 b/docs/libcurl/opts/CURLOPT_NOPROXY.3
new file mode 100644 (file)
index 0000000..7e2e719
--- /dev/null
@@ -0,0 +1,51 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.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 <curl/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.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+Most
+.SH EXAMPLE
+TODO
+.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 CURLOPT_PROXY "(3), " CURLOPT_PROXYAUTH "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_NOPROXY.html b/docs/libcurl/opts/CURLOPT_NOPROXY.html
new file mode 100644 (file)
index 0000000..f8b9794
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_NOPROXY man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_NOPROXY - disable proxy use for specific hosts <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOPROXY, char *noproxy); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">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. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">Most <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.19.4 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_PROXY.html">CURLOPT_PROXY</a>, <a Class="manpage" href="./CURLOPT_PROXYAUTH.html">CURLOPT_PROXYAUTH</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_NOPROXY.pdf b/docs/libcurl/opts/CURLOPT_NOPROXY.pdf
new file mode 100644 (file)
index 0000000..5301afc
--- /dev/null
@@ -0,0 +1,111 @@
+%PDF-1.4
+%Çì\8f¢
+5 0 obj
+<</Length 6 0 R/Filter /FlateDecode>>
+stream
+x\9c\95VÛnÛF\10}×W\fÐ\87R\81´á.¯Û\16\ 5\94DA\9cÈ¢+Si\f»\10\18je± H\85¤ª¤ß\90_é?vv\97WÛmZ\18°¤½Í\993g.\9fÀ$\14LùW\7fÆ\87Ñó\95\a÷åÈ\84ûѧ\11U\9bP\7fÄ\ax\11â\ 1_.\84»\91¾CÁcàq\8bø\1cÂÃÈx¹^-\82«p³\f®Vãð÷ÑÔ$6\84ñÈs\89o\99òN¸\1d\19Á\a¹gÊ\rj\13Óâ¾Þð\18¡\1e\84çÑ­qsgXwc\88OEº\11QùeS\8a*?Vã)sLbRÇÀ\1fI\9e\950°ø[ø¶5iÙ6aß²XÛ©¡2Êå\89ç+\8eN\12îH?§¶Í  e0µ\ua9ë^r\88íú¡Ë¹\ïøa\bÃô`\8aWåöÿ!\86\11ç       \7fm[Ã\8c\11ß5\99Þ1%aFRF\1fS\ 1Ç"ÿü\ 5\80]^@y\14qò5\86}^V¥\86×÷\8c¢g\9e\85\10\11\83²q}\83ð®/®\87\9e ã\8d\17ß%Y\9c\9e\ 2~\92\81y.ÿ\91ýÏ
+3z³ÐnÆ9\1ex\18¸;µ\ 5ÏöQ¶MÅd\18¶ï[:\98K   s\ 6lLq\85\ 3\95ã7\13\88û\11±\ÎûÄì£\ 2\9ee¹"ænüãc\16\12×í±ðj~ýruq\15^\ 4Ë:RÔѲx\82\91«¨5Î\89_#Gg\¥c£,!\82c\9ed\95( ÊñÇ\9f¢È\ 1\7f\1d\92,ªÄ\16ʪH²{\ 2á^Ôß!F]'\181Èwx!Î\ f\87\bJq\8c
+u!Å-¹#\83
+Yt\10%Tû¨RP\15\84\1a\1a:\88nI\10Û\1c²¼\82B|:%\85\90\80\94J\10ν\90ËQ¼\17Û      \88\81·Ôµ\89å5êûCmZè\97«]e>÷m½ykdÉز]L\ 6fìr\95\84\161mÆÚS\ 2\92²Ö¤Ø\92ñÔáxÇg\86t=ÏÒ/pNÒm\1c\15[\88\9aLf\1a\8bÊy·ÁÒ§\9cv8\8c$U9\90HÎK$\12¿?S>Y\8eC8í\82\16£(¢\18\83 \9d2m¥/Ë%¬Ë·É¹S\15#\9eËi\13[G\1e\97ÊJâ=\1c¢
+ÙC\8biªÓl\ 2¨p\10;y\9b2éA#ç\9d\88«dȱG\1cÚȵæØ|į\81Ìlu~ËP×I>\80îcjØnó\10\99wÐ)q\9df\1dã¬\ 4\ 3I\86ï MJJø©\9d@ÚU\91\982N     F¾f\8b¢\f´\8eD\82Ö\v$w\9b\1f"|ã¬\18@µVøKC\93\14H\13\13ÀòÓ_\80¤*Eº#ðZU\vî\11Û©\ 3*\rÔU\1f/\891&±Im×ø\1c\1d\8e²Tà\8aM8wh½B0#à¬\14B1i=·©\9eù)U5rjSYú½^&x\8e6 <m^d^ïEeÇé-üà\9b:\96çsm\8cûÄö\1a\8eU°Ðz\17'iÆÖfúÏ~\1c£
+L\93ÙÆ©Ryؾgâ{\ ek\1eÄ­(\13\9a\1d$ )ï}§\15=Ò¬O<æÓîÀ´v\9bâ\83­Êë[$\97Q«R̸ǵoX÷^×êtl_å/\9e£vcf¶®«±\89mM×ZæZ\r\1f\8b°Õ\W'¥Ð=ϳì\16Ór½X|\ 3\1f-¿.ûÌõj6¦\8c\98\8eN¿ \84 ë\88\16ñL·éÅ/\83Å\83\1e\86°9âè\80\¢.¿\ 1dþavyµ\987\19ëÿc\ f\b;\1cÔ\92©­Q¼
+jÂ\1cß\7fb¬àòdkMòªÄcÌÞC7b`\b\\876R¸XÌ^\,.Â\9b¡s²ëÙ~\9b°ºïͶ[ÌhÌR\8fPNì\7f÷õÖXÍÃõj     ïÇÔÂÔp©1[¬çJ¦O¹ìâ\11­ô\95¨NE=\86Í7Á;Hv*ïõx¦
+þéxÌ\8bJv\18}h½|·\fÆÒ\f7\99ñër\13¨^+ob\ eÈÊ¡Ó\83µ\13\ 5\ e7ÁëÍåü2\90ãB3!Q\9f°¶\vÝ$c\1c\ e\8d]Õë@\94P:\18\94n\rL\ 6\81å\83Ë\ 2àúFT"Iåi7fuIø\1a'"«`/¢#6«(\16¤¦a0:yȹÓ\1f\9dæs\98\83\8eç\a"i\ 6\9eáøç"\93]\a\18N©M¿{\10mO\8e©¼\91\84\1a_'C«T\ e4mýøï\86Q\83th\eO×SÖ\fÖ}Q\9aÝûá\9b\aj´e\11z\88\ eçv,ù8lZ¶CÜ^8Òä£\9c\15\96GÌñ\94:\ e·\89cà(þö\94\ 1ÃV ø·Ûì¦ò½y8ú\ 5ÿþ\ 6\ e¥4ëendstream
+endobj
+6 0 obj
+1445
+endobj
+4 0 obj
+<</Type/Page/MediaBox [0 0 595 842]
+/Rotate 0/Parent 3 0 R
+/Resources<</ProcSet[/PDF /Text]
+/ExtGState 10 0 R
+/Font 11 0 R
+>>
+/Contents 5 0 R
+>>
+endobj
+3 0 obj
+<< /Type /Pages /Kids [
+4 0 R
+] /Count 1
+>>
+endobj
+1 0 obj
+<</Type /Catalog /Pages 3 0 R
+/Metadata 13 0 R
+>>
+endobj
+7 0 obj
+<</Type/ExtGState
+/OPM 1>>endobj
+10 0 obj
+<</R7
+7 0 R>>
+endobj
+11 0 obj
+<</R9
+9 0 R/R8
+8 0 R>>
+endobj
+9 0 obj
+<</BaseFont/Times-Bold/Type/Font
+/Subtype/Type1>>
+endobj
+8 0 obj
+<</BaseFont/Times-Roman/Type/Font
+/Encoding 12 0 R/Subtype/Type1>>
+endobj
+12 0 obj
+<</Type/Encoding/Differences[
+140/fi
+173/minus]>>
+endobj
+13 0 obj
+<</Type/Metadata
+/Subtype/XML/Length 1346>>stream
+<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
+<?adobe-xap-filters esc="CRLF"?>
+<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
+<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
+<rdf:Description rdf:about='uuid:699ce14a-cf2b-11ef-0000-65c5a25808db' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.06'/>
+<rdf:Description rdf:about='uuid:699ce14a-cf2b-11ef-0000-65c5a25808db' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-01-08T09:18:02+01:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-01-08T09:18:02+01:00</xmp:CreateDate>
+<xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
+<rdf:Description rdf:about='uuid:699ce14a-cf2b-11ef-0000-65c5a25808db' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:699ce14a-cf2b-11ef-0000-65c5a25808db'/>
+<rdf:Description rdf:about='uuid:699ce14a-cf2b-11ef-0000-65c5a25808db' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+</rdf:RDF>
+</x:xmpmeta>
+                                                                        
+                                                                        
+<?xpacket end='w'?>
+endstream
+endobj
+2 0 obj
+<</Producer(GPL Ghostscript 9.06)
+/CreationDate(D:20150108091802+01'00')
+/ModDate(D:20150108091802+01'00')
+/Creator(groff version 1.22.3)>>endobj
+xref
+0 14
+0000000000 65535 f 
+0000001769 00000 n 
+0000003580 00000 n 
+0000001710 00000 n 
+0000001550 00000 n 
+0000000015 00000 n 
+0000001530 00000 n 
+0000001834 00000 n 
+0000002009 00000 n 
+0000001944 00000 n 
+0000001875 00000 n 
+0000001905 00000 n 
+0000002091 00000 n 
+0000002157 00000 n 
+trailer
+<< /Size 14 /Root 1 0 R /Info 2 0 R
+/ID [<2D83AF6D6784F99F64821E4ED344D788><2D83AF6D6784F99F64821E4ED344D788>]
+>>
+startxref
+3734
+%%EOF
diff --git a/docs/libcurl/opts/CURLOPT_NOSIGNAL.3 b/docs/libcurl/opts/CURLOPT_NOSIGNAL.3
new file mode 100644 (file)
index 0000000..27fe158
--- /dev/null
@@ -0,0 +1,55 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_NOSIGNAL 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_NOSIGNAL \- skip all signal handling
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOSIGNAL, long onoff);
+.SH DESCRIPTION
+If \fIonoff\fP is 1, libcurl will not use any functions that install signal
+handlers or any functions that cause signals to be sent to the process. This
+option is here to allow multi-threaded unix applications to still set/use all
+timeout options etc, without risking getting signals.
+
+If this option is set and libcurl has been built with the standard name
+resolver, timeouts will not occur while the name resolve takes place.
+Consider building libcurl with the c-ares or threaded resolver backends to
+enable asynchronous DNS lookups, to enable timeouts for name resolves without
+the use of signals.
+
+Setting \fICURLOPT_NOSIGNAL(3)\fP to 1 makes libcurl NOT ask the system to
+ignore SIGPIPE signals, which otherwise are sent by the system when trying to
+send data to a socket which is closed in the other end. libcurl makes an
+effort to never cause such SIGPIPEs to trigger, but some operating systems
+have no way to avoid them and even on those that have there are some corner
+cases when they may still happen, contrary to our desire. In addition, using
+\fICURLAUTH_NTLM_WB\fP authentication could cause a SIGCHLD signal to be
+raised.
+.SH DEFAULT
+0
+.SH AVAILABILITY
+Added in 7.10
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
diff --git a/docs/libcurl/opts/CURLOPT_NOSIGNAL.html b/docs/libcurl/opts/CURLOPT_NOSIGNAL.html
new file mode 100644 (file)
index 0000000..287fbb3
--- /dev/null
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_NOSIGNAL man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_NOSIGNAL - skip all signal handling <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOSIGNAL, long onoff); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">If <span Class="emphasis">onoff</span> is 1, libcurl will not use any functions that install signal handlers or any functions that cause signals to be sent to the process. This option is here to allow multi-threaded unix applications to still set/use all timeout options etc, without risking getting signals. 
+<p class="level0">If this option is set and libcurl has been built with the standard name resolver, timeouts will not occur while the name resolve takes place. Consider building libcurl with the c-ares or threaded resolver backends to enable asynchronous DNS lookups, to enable timeouts for name resolves without the use of signals. 
+<p class="level0">Setting <a Class="emphasis" href="./CURLOPT_NOSIGNAL.html">CURLOPT_NOSIGNAL</a> to 1 makes libcurl NOT ask the system to ignore SIGPIPE signals, which otherwise are sent by the system when trying to send data to a socket which is closed in the other end. libcurl makes an effort to never cause such SIGPIPEs to trigger, but some operating systems have no way to avoid them and even on those that have there are some corner cases when they may still happen, contrary to our desire. In addition, using <span Class="emphasis">CURLAUTH_NTLM_WB</span> authentication could cause a SIGCHLD signal to be raised. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.10 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_NOSIGNAL.pdf b/docs/libcurl/opts/CURLOPT_NOSIGNAL.pdf
new file mode 100644 (file)
index 0000000..619b766
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_NOSIGNAL.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3 b/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3
new file mode 100644 (file)
index 0000000..a397c3e
--- /dev/null
@@ -0,0 +1,44 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_OPENSOCKETDATA 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_OPENSOCKETDATA \- custom pointer passed to open socket callback
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_OPENSOCKETDATA, void *pointer);
+.SH DESCRIPTION
+Pass a \fIpointer\fP that will be untouched by libcurl and passed as the first
+argument in the opensocket callback set with \fICURLOPT_OPENSOCKETFUNCTION(3)\fP.
+.SH DEFAULT
+The default value of this parameter is NULL.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.17.1
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_OPENSOCKETFUNCTION "(3), " CURLOPT_SOCKOPTFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.html b/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.html
new file mode 100644 (file)
index 0000000..75985aa
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_OPENSOCKETDATA man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_OPENSOCKETDATA - custom pointer passed to open socket callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_OPENSOCKETDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a <span Class="emphasis">pointer</span> that will be untouched by libcurl and passed as the first argument in the opensocket callback set with <a Class="emphasis" href="./CURLOPT_OPENSOCKETFUNCTION.html">CURLOPT_OPENSOCKETFUNCTION</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">The default value of this parameter is NULL. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.17.1 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_OPENSOCKETFUNCTION.html">CURLOPT_OPENSOCKETFUNCTION</a>, <a Class="manpage" href="./CURLOPT_SOCKOPTFUNCTION.html">CURLOPT_SOCKOPTFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.pdf b/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.pdf
new file mode 100644 (file)
index 0000000..7bf876d
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3 b/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3
new file mode 100644 (file)
index 0000000..d5f461d
--- /dev/null
@@ -0,0 +1,90 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_OPENSOCKETFUNCTION 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_OPENSOCKETFUNCTION \- set callback for opening sockets
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+typedef enum  {
+  CURLSOCKTYPE_IPCXN,  /* socket created for a specific IP connection */
+  CURLSOCKTYPE_ACCEPT, /* socket created by accept() call */
+  CURLSOCKTYPE_LAST    /* never use */
+} curlsocktype;
+
+struct curl_sockaddr {
+  int family;
+  int socktype;
+  int protocol;
+  unsigned int addrlen;
+  struct sockaddr addr;
+};
+
+curl_socket_t opensocket_callback(void *clientp,
+                                  curlsocktype purpose,
+                                  struct curl_sockaddr *address);
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_OPENSOCKETFUNCTION, opensocket_callback);
+.SH DESCRIPTION
+Pass a pointer to your callback function, which should match the prototype
+shown above.
+
+This callback function gets called by libcurl instead of the \fIsocket(2)\fP
+call. The callback's \fIpurpose\fP argument identifies the exact purpose for
+this particular socket: \fICURLSOCKTYPE_IPCXN\fP is for IP based connections
+and \fICURLSOCKTYPE_ACCEPT\fP is for sockets created after accept() - such as
+when doing active FTP. Future versions of libcurl may support more
+purposes.
+
+The \fIclientp\fP pointer contains whatever user-defined value set using the
+\fICURLOPT_OPENSOCKETDATA(3)\fP function.
+
+The callback gets the resolved peer address as the \fIaddress\fP argument and
+is allowed to modify the address or refuse to connect completely. The callback
+function should return the newly created socket or \fICURL_SOCKET_BAD\fP in
+case no connection could be established or another error was detected. Any
+additional \fIsetsockopt(2)\fP calls can of course be done on the socket at
+the user's discretion.  A \fICURL_SOCKET_BAD\fP return value from the callback
+function will signal an unrecoverable error to libcurl and it will return
+\fICURLE_COULDNT_CONNECT\fP from the function that triggered this callback.
+This return code can be used for IP address blacklisting.
+
+If you want to pass in a socket with an already established connection, pass
+the socket back with this callback and then use
+\fICURLOPT_SOCKOPTFUNCTION(3)\fP to signal that it already is connected.
+.SH DEFAULT
+The default behavior is the equivalent of this:
+.nf
+   return socket(addr->family, addr->socktype, addr->protocol);
+.fi
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+.SH AVAILABILITY
+Added in 7.17.1.
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_OPENSOCKETDATA "(3), " CURLOPT_SOCKOPTFUNCTION "(3), "
+.BR CURLOPT_CLOSESOCKETFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.html b/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.html
new file mode 100644 (file)
index 0000000..b72dedb
--- /dev/null
@@ -0,0 +1,86 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_OPENSOCKETFUNCTION man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_OPENSOCKETFUNCTION - set callback for opening sockets <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">typedef enum  {
+ &nbsp; CURLSOCKTYPE_IPCXN,  /* socket created for a specific IP connection */
+ &nbsp; CURLSOCKTYPE_ACCEPT, /* socket created by accept() call */
+ &nbsp; CURLSOCKTYPE_LAST    /* never use */
+ } curlsocktype;
+ <p class="level0">struct curl_sockaddr {
+ &nbsp; int family;
+ &nbsp; int socktype;
+ &nbsp; int protocol;
+ &nbsp; unsigned int addrlen;
+ &nbsp; struct sockaddr addr;
+ };
+ <p class="level0">curl_socket_t opensocket_callback(void *clientp,
+ &nbsp;                                 curlsocktype purpose,
+ &nbsp;                                 struct curl_sockaddr *address);
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_OPENSOCKETFUNCTION, opensocket_callback);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
+<p class="level0">This callback function gets called by libcurl instead of the <span Class="emphasis">socket(2)</span> call. The callback's <span Class="emphasis">purpose</span> argument identifies the exact purpose for this particular socket: <span Class="emphasis">CURLSOCKTYPE_IPCXN</span> is for IP based connections and <span Class="emphasis">CURLSOCKTYPE_ACCEPT</span> is for sockets created after accept() - such as when doing active FTP. Future versions of libcurl may support more purposes. 
+<p class="level0">The <span Class="emphasis">clientp</span> pointer contains whatever user-defined value set using the <a Class="emphasis" href="./CURLOPT_OPENSOCKETDATA.html">CURLOPT_OPENSOCKETDATA</a> function. 
+<p class="level0">The callback gets the resolved peer address as the <span Class="emphasis">address</span> argument and is allowed to modify the address or refuse to connect completely. The callback function should return the newly created socket or <span Class="emphasis">CURL_SOCKET_BAD</span> in case no connection could be established or another error was detected. Any additional <span Class="emphasis">setsockopt(2)</span> calls can of course be done on the socket at the user's discretion.  A <span Class="emphasis">CURL_SOCKET_BAD</span> return value from the callback function will signal an unrecoverable error to libcurl and it will return <span Class="emphasis">CURLE_COULDNT_CONNECT</span> from the function that triggered this callback. This return code can be used for IP address blacklisting. 
+<p class="level0">If you want to pass in a socket with an already established connection, pass the socket back with this callback and then use <a Class="emphasis" href="./CURLOPT_SOCKOPTFUNCTION.html">CURLOPT_SOCKOPTFUNCTION</a> to signal that it already is connected. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">The default behavior is the equivalent of this: <pre>
+<p class="level0">&nbsp;  return socket(addr-&gt;family, addr-&gt;socktype, addr-&gt;protocol);
+ </pre>
+
+<p class="level0"><a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.17.1. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_OPENSOCKETDATA.html">CURLOPT_OPENSOCKETDATA</a>, <a Class="manpage" href="./CURLOPT_SOCKOPTFUNCTION.html">CURLOPT_SOCKOPTFUNCTION</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_CLOSESOCKETFUNCTION.html">CURLOPT_CLOSESOCKETFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.pdf b/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.pdf
new file mode 100644 (file)
index 0000000..335e93e
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_PASSWORD.3 b/docs/libcurl/opts/CURLOPT_PASSWORD.3
new file mode 100644 (file)
index 0000000..b460658
--- /dev/null
@@ -0,0 +1,50 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_PASSWORD 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_PASSWORD \- password to use in authentication
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PASSWORD, char *pwd);
+.SH DESCRIPTION
+Pass a char * as parameter, which should be pointing to the zero terminated
+password to use for the transfer.
+
+The \fICURLOPT_PASSWORD(3)\fP option should be used in conjunction with the
+\fICURLOPT_USERNAME(3)\fP option.
+.SH DEFAULT
+blank
+.SH PROTOCOLS
+Most
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.19.1
+.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 CURLOPT_USERPWD "(3), " CURLOPT_USERNAME "(3), "
+.BR CURLOPT_HTTPAUTH "(3), " CURLOPT_PROXYAUTH "(3)"
+
diff --git a/docs/libcurl/opts/CURLOPT_PASSWORD.html b/docs/libcurl/opts/CURLOPT_PASSWORD.html
new file mode 100644 (file)
index 0000000..b2da86d
--- /dev/null
@@ -0,0 +1,62 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_PASSWORD man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_PASSWORD - password to use in authentication <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PASSWORD, char *pwd); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * as parameter, which should be pointing to the zero terminated password to use for the transfer. 
+<p class="level0">The <a Class="emphasis" href="./CURLOPT_PASSWORD.html">CURLOPT_PASSWORD</a> option should be used in conjunction with the <a Class="emphasis" href="./CURLOPT_USERNAME.html">CURLOPT_USERNAME</a> option. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">blank <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">Most <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.19.1 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_USERPWD.html">CURLOPT_USERPWD</a>, <a Class="manpage" href="./CURLOPT_USERNAME.html">CURLOPT_USERNAME</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_HTTPAUTH.html">CURLOPT_HTTPAUTH</a>, <a Class="manpage" href="./CURLOPT_PROXYAUTH.html">CURLOPT_PROXYAUTH</a>, 
+<p class="level0"><p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_PASSWORD.pdf b/docs/libcurl/opts/CURLOPT_PASSWORD.pdf
new file mode 100644 (file)
index 0000000..760f360
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_PASSWORD.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_PORT.3 b/docs/libcurl/opts/CURLOPT_PORT.3
new file mode 100644 (file)
index 0000000..5fd19c7
--- /dev/null
@@ -0,0 +1,51 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_PORT 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_PORT \- set remote port number to work with
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PORT, long number);
+.SH DESCRIPTION
+This option sets \fInumber\fP to be the remote port number to connect to,
+instead of the one specified in the URL or the default port for the used
+protocol.
+
+Usually, you just let the URL decide which port to use but this allows the
+application to override that.
+
+While this option accepts a 'long', a port number is usually a 16 bit number
+and therefore using a port number over 65535 will cause a run-time error.
+.SH DEFAULT
+By default this is 0 which makes it not used.
+.SH PROTOCOLS
+Used for all protocols that speak to a port number.
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_STDERR "(3), " CURLOPT_DEBUGFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_PORT.html b/docs/libcurl/opts/CURLOPT_PORT.html
new file mode 100644 (file)
index 0000000..4154014
--- /dev/null
@@ -0,0 +1,62 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_PORT man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_PORT - set remote port number to work with <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PORT, long number); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">This option sets <span Class="emphasis">number</span> to be the remote port number to connect to, instead of the one specified in the URL or the default port for the used protocol. 
+<p class="level0">Usually, you just let the URL decide which port to use but this allows the application to override that. 
+<p class="level0">While this option accepts a 'long', a port number is usually a 16 bit number and therefore using a port number over 65535 will cause a run-time error. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">By default this is 0 which makes it not used. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">Used for all protocols that speak to a port number. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_STDERR.html">CURLOPT_STDERR</a>, <a Class="manpage" href="./CURLOPT_DEBUGFUNCTION.html">CURLOPT_DEBUGFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_PORT.pdf b/docs/libcurl/opts/CURLOPT_PORT.pdf
new file mode 100644 (file)
index 0000000..9a9bb46
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_PORT.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_POST.3 b/docs/libcurl/opts/CURLOPT_POST.3
new file mode 100644 (file)
index 0000000..cd6b6d4
--- /dev/null
@@ -0,0 +1,77 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_POST 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_POST \- request a HTTP POST
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POST, long post);
+.SH DESCRIPTION
+A parameter set to 1 tells libcurl to do a regular HTTP post. This will also
+make the library use a "Content-Type: application/x-www-form-urlencoded"
+header. (This is by far the most commonly used POST method).
+
+Use one of \fICURLOPT_POSTFIELDS(3)\fP or \fICURLOPT_COPYPOSTFIELDS(3)\fP
+options to specify what data to post and \fICURLOPT_POSTFIELDSIZE(3)\fP or
+\fICURLOPT_POSTFIELDSIZE_LARGE(3)\fP to set the data size.
+
+Optionally, you can provide data to POST using the
+\fICURLOPT_READFUNCTION(3)\fP and \fICURLOPT_READDATA(3)\fP options but then
+you must make sure to not set \fICURLOPT_POSTFIELDS(3)\fP to anything but
+NULL. When providing data with a callback, you must transmit it using chunked
+transfer-encoding or you must set the size of the data with the
+\fICURLOPT_POSTFIELDSIZE(3)\fP or \fICURLOPT_POSTFIELDSIZE_LARGE(3)\fP
+options. To enable chunked encoding, you simply pass in the appropriate
+Transfer-Encoding header, see the post-callback.c example.
+
+You can override the default POST Content-Type: header by setting your own
+with \fICURLOPT_HTTPHEADER(3)\fP.
+
+Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header.
+You can disable this header with \fICURLOPT_HTTPHEADER(3)\fP as usual.
+
+If you use POST to a HTTP 1.1 server, you can send data without knowing the
+size before starting the POST if you use chunked encoding. You enable this by
+adding a header like "Transfer-Encoding: chunked" with
+\fICURLOPT_HTTPHEADER(3)\fP. With HTTP 1.0 or without chunked transfer, you
+must specify the size in the request.
+
+When setting \fICURLOPT_POST(3)\fP to 1, it will automatically set
+\fICURLOPT_NOBODY(3)\fP to 0.
+
+If you issue a POST request and then want to make a HEAD or GET using the same
+re-used handle, you must explicitly set the new request type using
+\fICURLOPT_NOBODY(3)\fP or \fICURLOPT_HTTPGET(3)\fP or similar.
+.SH DEFAULT
+0, disabled
+.SH PROTOCOLS
+HTTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Along with HTTP
+.SH RETURN VALUE
+Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_POSTFIELDS "(3), " CURLOPT_HTTPPOST "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_POST.html b/docs/libcurl/opts/CURLOPT_POST.html
new file mode 100644 (file)
index 0000000..bc7dcd1
--- /dev/null
@@ -0,0 +1,67 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_POST man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_POST - request a HTTP POST <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POST, long post); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">A parameter set to 1 tells libcurl to do a regular HTTP post. This will also make the library use a "Content-Type: application/x-www-form-urlencoded" header. (This is by far the most commonly used POST method). 
+<p class="level0">Use one of <a Class="emphasis" href="./CURLOPT_POSTFIELDS.html">CURLOPT_POSTFIELDS</a> or <a Class="emphasis" href="./CURLOPT_COPYPOSTFIELDS.html">CURLOPT_COPYPOSTFIELDS</a> options to specify what data to post and <a Class="emphasis" href="./CURLOPT_POSTFIELDSIZE.html">CURLOPT_POSTFIELDSIZE</a> or <a Class="emphasis" href="./CURLOPT_POSTFIELDSIZE_LARGE.html">CURLOPT_POSTFIELDSIZE_LARGE</a> to set the data size. 
+<p class="level0">Optionally, you can provide data to POST using the <a Class="emphasis" href="./CURLOPT_READFUNCTION.html">CURLOPT_READFUNCTION</a> and <a Class="emphasis" href="./CURLOPT_READDATA.html">CURLOPT_READDATA</a> options but then you must make sure to not set <a Class="emphasis" href="./CURLOPT_POSTFIELDS.html">CURLOPT_POSTFIELDS</a> to anything but NULL. When providing data with a callback, you must transmit it using chunked transfer-encoding or you must set the size of the data with the <a Class="emphasis" href="./CURLOPT_POSTFIELDSIZE.html">CURLOPT_POSTFIELDSIZE</a> or <a Class="emphasis" href="./CURLOPT_POSTFIELDSIZE_LARGE.html">CURLOPT_POSTFIELDSIZE_LARGE</a> options. To enable chunked encoding, you simply pass in the appropriate Transfer-Encoding header, see the post-callback.c example. 
+<p class="level0">You can override the default POST Content-Type: header by setting your own with <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a>. 
+<p class="level0">Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header. You can disable this header with <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a> as usual. 
+<p class="level0">If you use POST to a HTTP 1.1 server, you can send data without knowing the size before starting the POST if you use chunked encoding. You enable this by adding a header like "Transfer-Encoding: chunked" with <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a>. With HTTP 1.0 or without chunked transfer, you must specify the size in the request. 
+<p class="level0">When setting <a Class="emphasis" href="./CURLOPT_POST.html">CURLOPT_POST</a> to 1, it will automatically set <a Class="emphasis" href="./CURLOPT_NOBODY.html">CURLOPT_NOBODY</a> to 0. 
+<p class="level0">If you issue a POST request and then want to make a HEAD or GET using the same re-used handle, you must explicitly set the new request type using <a Class="emphasis" href="./CURLOPT_NOBODY.html">CURLOPT_NOBODY</a> or <a Class="emphasis" href="./CURLOPT_HTTPGET.html">CURLOPT_HTTPGET</a> or similar. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0, disabled <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Along with HTTP <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_POSTFIELDS.html">CURLOPT_POSTFIELDS</a>, <a Class="manpage" href="./CURLOPT_HTTPPOST.html">CURLOPT_HTTPPOST</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_POST.pdf b/docs/libcurl/opts/CURLOPT_POST.pdf
new file mode 100644 (file)
index 0000000..8e0e966
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_POST.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_POSTFIELDS.3 b/docs/libcurl/opts/CURLOPT_POSTFIELDS.3
new file mode 100644 (file)
index 0000000..d559143
--- /dev/null
@@ -0,0 +1,84 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_POSTFIELDS 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_POSTFIELDS \- specify data to POST to server
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDS, char *postdata);
+.SH DESCRIPTION
+Pass a char * as parameter, pointing to the full data to send in a HTTP POST
+operation. You must make sure that the data is formatted the way you want the
+server to receive it. libcurl will not convert or encode it for you in any
+way. For example, the web server may assume that this data is url-encoded.
+
+The data pointed to is NOT copied by the library: as a consequence, it must be
+preserved by the calling application until the associated transfer finishes.
+This behaviour can be changed (so libcurl does copy the data) by setting the
+\fICURLOPT_COPYPOSTFIELDS(3)\fP option.
+
+This POST is a normal application/x-www-form-urlencoded kind (and libcurl will
+set that Content-Type by default when this option is used), which is commonly
+used by HTML forms. Change Content-Type with \fICURLOPT_HTTPHEADER(3)\fP.
+
+Using \fICURLOPT_POSTFIELDS(3)\fP implies \fICURLOPT_POST(3)\fP.
+
+If you want to do a zero-byte POST, you need to set
+\fICURLOPT_POSTFIELDSIZE(3)\fP explicitly to zero, as simply setting
+\fICURLOPT_POSTFIELDS(3)\fP to NULL or "" just effectively disables the
+sending of the specified string. libcurl will instead assume that you'll send
+the POST data using the read callback!
+
+Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header.
+You can disable this header with \fICURLOPT_HTTPHEADER(3)\fP as usual.
+
+To make multipart/formdata posts (aka RFC2388-posts), check out the
+\fICURLOPT_HTTPPOST(3)\fP option combined with \fIcurl_formadd(3)\fP.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+HTTP
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  const char *data = "data to send";
+
+  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+  /* size of the POST data */
+  curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 12L);
+
+  /* pass in a pointer to the data - libcurl will not copy */
+  curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
+
+  curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_POSTFIELDSIZE "(3), " CURLOPT_READFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_POSTFIELDS.html b/docs/libcurl/opts/CURLOPT_POSTFIELDS.html
new file mode 100644 (file)
index 0000000..3b998ef
--- /dev/null
@@ -0,0 +1,79 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_POSTFIELDS man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_POSTFIELDS - specify data to POST to server <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDS, char *postdata); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * as parameter, pointing to the full data to send in a HTTP POST operation. You must make sure that the data is formatted the way you want the server to receive it. libcurl will not convert or encode it for you in any way. For example, the web server may assume that this data is url-encoded. 
+<p class="level0">The data pointed to is NOT copied by the library: as a consequence, it must be preserved by the calling application until the associated transfer finishes. This behaviour can be changed (so libcurl does copy the data) by setting the <a Class="emphasis" href="./CURLOPT_COPYPOSTFIELDS.html">CURLOPT_COPYPOSTFIELDS</a> option. 
+<p class="level0">This POST is a normal application/x-www-form-urlencoded kind (and libcurl will set that Content-Type by default when this option is used), which is commonly used by HTML forms. Change Content-Type with <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a>. 
+<p class="level0">Using <a Class="emphasis" href="./CURLOPT_POSTFIELDS.html">CURLOPT_POSTFIELDS</a> implies <a Class="emphasis" href="./CURLOPT_POST.html">CURLOPT_POST</a>. 
+<p class="level0">If you want to do a zero-byte POST, you need to set <a Class="emphasis" href="./CURLOPT_POSTFIELDSIZE.html">CURLOPT_POSTFIELDSIZE</a> explicitly to zero, as simply setting <a Class="emphasis" href="./CURLOPT_POSTFIELDS.html">CURLOPT_POSTFIELDS</a> to NULL or "" just effectively disables the sending of the specified string. libcurl will instead assume that you'll send the POST data using the read callback! 
+<p class="level0">Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header. You can disable this header with <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a> as usual. 
+<p class="level0">To make multipart/formdata posts (aka <a href="http://www.ietf.org/rfc/rfc2388.txt">RFC 2388</a>-posts), check out the <a Class="emphasis" href="./CURLOPT_HTTPPOST.html">CURLOPT_HTTPPOST</a> option combined with <span Class="emphasis">curl_formadd(3)</span>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre>
+<p class="level0">CURL *curl = curl_easy_init();
+ if(curl) {
+ &nbsp; const char *data = "data to send";
+ <p class="level0">&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+ <p class="level0">&nbsp; /* size of the POST data */
+ &nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 12L);
+ <p class="level0">&nbsp; /* pass in a pointer to the data - libcurl will not copy */
+ &nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
+ <p class="level0">&nbsp; curl_easy_perform(curl);
+ }
+ </pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_POSTFIELDSIZE.html">CURLOPT_POSTFIELDSIZE</a>, <a Class="manpage" href="./CURLOPT_READFUNCTION.html">CURLOPT_READFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_POSTFIELDS.pdf b/docs/libcurl/opts/CURLOPT_POSTFIELDS.pdf
new file mode 100644 (file)
index 0000000..879a677
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_POSTFIELDS.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3 b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3
new file mode 100644 (file)
index 0000000..0166805
--- /dev/null
@@ -0,0 +1,62 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_POSTFIELDSIZE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_POSTFIELDSIZE \- size of POST data pointed to
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDSIZE, long size);
+.SH DESCRIPTION
+If you want to post data to the server without having libcurl do a strlen() to
+measure the data size, this option must be used. When this option is used you
+can post fully binary data, which otherwise is likely to fail. If this size is
+set to -1, the library will use strlen() to get the size.
+
+If you post more than 2GB, use \fICURLOPT_POSTFIELDSIZE_LARGE(3)\fP.
+.SH DEFAULT
+-1
+.SH PROTOCOLS
+HTTP
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  const char *data = "data to send";
+
+  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+  /* size of the POST data */
+  curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long) strlen(data));
+
+  curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
+
+  curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+Along with HTTP
+.SH RETURN VALUE
+Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_POSTFIELDS "(3), " CURLOPT_POSTFIELDSIZE_LARGE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.html b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.html
new file mode 100644 (file)
index 0000000..ac4732b
--- /dev/null
@@ -0,0 +1,73 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_POSTFIELDSIZE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_POSTFIELDSIZE - size of POST data pointed to <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDSIZE, long size); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">If you want to post data to the server without having libcurl do a strlen() to measure the data size, this option must be used. When this option is used you can post fully binary data, which otherwise is likely to fail. If this size is set to -1, the library will use strlen() to get the size. 
+<p class="level0">If you post more than 2GB, use <a Class="emphasis" href="./CURLOPT_POSTFIELDSIZE_LARGE.html">CURLOPT_POSTFIELDSIZE_LARGE</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">-1 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre>
+<p class="level0">CURL *curl = curl_easy_init();
+ if(curl) {
+ &nbsp; const char *data = "data to send";
+ <p class="level0">&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+ <p class="level0">&nbsp; /* size of the POST data */
+ &nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long) strlen(data));
+ <p class="level0">&nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
+ <p class="level0">&nbsp; curl_easy_perform(curl);
+ }
+ </pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Along with HTTP <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_POSTFIELDS.html">CURLOPT_POSTFIELDS</a>, <a Class="manpage" href="./CURLOPT_POSTFIELDSIZE_LARGE.html">CURLOPT_POSTFIELDSIZE_LARGE</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.pdf b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.pdf
new file mode 100644 (file)
index 0000000..98043aa
--- /dev/null
@@ -0,0 +1,116 @@
+%PDF-1.4
+%Çì\8f¢
+5 0 obj
+<</Length 6 0 R/Filter /FlateDecode>>
+stream
+x\9c\8dUms\9bF\10þίØq?\144âÄñ*ê¦3rBR%D¨\12N\9aZ\1d\rF'\8b\14\81ÂKT·Ó\9fÔÿؽ\ 3,K¶ë\8cf\8caow\9fÝ}ö¹/ \11
+\1aÿµÏx+\rf\ eÜ\94\92\ 6\17\89
+#´\8fx\v\17!\1e\18ò\ fáZj|(8:8®A\86.\84[É´È\90\97®ä\97\973?\98\86Ëi0\ f_\8f=ÿÕ|ü\9b·\90\8d\85\ 2q]¤K\16\95·Ë\92Uù®RTÝÒ\88¦92¾$yVÂÓÎÊïá[IÕ\88N1a\8cx\ÄC\\8bC2l\b}I\9e\8c\94ï±\ 4´R\8b\81\95$¿÷\94ðó½\ 2t\8d\98\9a\ 3*Õ¹Yã¨\1f\a\rÿB\99üÅ _\ 3ÿ\ e«¨\8a`\97'YÅVPåMÔ{0TÄ¡R\9b\fEÚù§I0\9d\8fçÇÉÅ\11\91Xþ.Éâ´^1ø\91÷eÀÿ\90ÍOü¸n\8az8¨8Ç\ 3§}[\b\13ô6Q¶JYÿñ®õ!ͳ\eQÁB9ÇÎü\ fÖWÞüål<\rÇÁä)¸\94\18\9aÝLx¼\86Û¼\86½â\12wHmW\8e²
\81­)«¦IøRm\18\94¬øªP\13Oé®Ì
+Ø'Õ&¯+ØD
+E_ױ寠bL\93k^"¬r\88 ¬\8a\94e\v\19ù\82a¶Xv]0\11N\84æõôñ5)\ 5#88_Ò\88e[\1c\Ø»j¹\ 4Û\1aÑ\3¨K¶"ðqÃ2á\ 5­\19ÿã\16QI\1ce\røu\9d¦·p\9ddQq+Òõa¿Iâ\rä\98¿Ø'%ã~iò\87\82\8dÔ¨iË\fÏ#\15ZrRN>y\1du<t\88m»®Þ\10±aZ\92\12À\ 6
+(\82]üÉDÿTÚ\17ub;
+\ e`\9f¤)\a\92\e~\9aw\17½        \1f\97Ú¥Q9qp\9cí\80DIÛ\t\ f+Ôß\ôy¸fÂTëöY\1f\12£\85øø\1e,ýÑìM»\85GìÀÙ\13Ól]É#û`\18Ä9æÙk\ 1\18çe\ ey\83p\17]jÒ6ÄèRX)\97\84v\8duÛpZ«\1fr«Öl\7f\a\817Ýq\1cü[+\95\98ÓY\8bÁ4\ 4\ 6$¨n;m\aT\9dh\96+&\15\84\10ÜeÔ±\12Íî$åeà\9fì5\82v\11Å\ 1ÆÏa8}\ 6\88÷ëèýÔ÷\9eÚ¸\832AO¬Ç\8b{B\90dIÅ     qνåd½\90¹\r       ò7rϺC\11£¨V\10\ 2zb}^ÀY·¡%ËVgç\a½á»óPiø\97\83Âà£\ fg\9bªÚý0\180\ 5\a\84£2ä?£í.e$ηg\1c\12ß\ 6yлSOÎÖ\83\82ö\ 6\b±ÙÛgó\9d(ÚBæ\9a\86Uv\eÁ\ 3.\94FßZÕüö\90}hܹó=·\1d+Öy±í:Ê­ê¡£ÿ´\14µ\86Ã\a÷ÐÑx9\8dM1ÂÑ\a\18\1d\88¤\11ۢݾ\8dýÑÅØ\1f\87\9fN\16Ë"\86\89  \8e\980\12zÎ5\14\9e\95<óÂËÙ\ 4>(Ô@\ 5¶©<ò/=1\9aÇÈ\86çYU\17í\15ì-\83w\90¬E\1e!Põn\97\17xíõ\ 1¯\9cöÈåäÝ$P\8c\96\ 2\1f'Ë@\ Ü/Ë+Ò¦zú~ô<\18ùóàPÇÉýøp`'MÂP´ÛH¡NýãXh·mí\e¤í$®c\90N³ïÅU\rS'\ eE\91Õ-b7=ë..\87\18\ eÑ\14\95Z\96k\12\ e¼­Qqñ\8a\10m0ï\94C\88\93\17J¿àï?\84ï\88Òendstream
+endobj
+6 0 obj
+1105
+endobj
+4 0 obj
+<</Type/Page/MediaBox [0 0 595 842]
+/Rotate 0/Parent 3 0 R
+/Resources<</ProcSet[/PDF /Text]
+/ExtGState 11 0 R
+/Font 12 0 R
+>>
+/Contents 5 0 R
+>>
+endobj
+3 0 obj
+<< /Type /Pages /Kids [
+4 0 R
+] /Count 1
+>>
+endobj
+1 0 obj
+<</Type /Catalog /Pages 3 0 R
+/Metadata 14 0 R
+>>
+endobj
+7 0 obj
+<</Type/ExtGState
+/OPM 1>>endobj
+11 0 obj
+<</R7
+7 0 R>>
+endobj
+12 0 obj
+<</R10
+10 0 R/R9
+9 0 R/R8
+8 0 R>>
+endobj
+10 0 obj
+<</BaseFont/Times-Italic/Type/Font
+/Subtype/Type1>>
+endobj
+9 0 obj
+<</BaseFont/Times-Bold/Type/Font
+/Subtype/Type1>>
+endobj
+8 0 obj
+<</BaseFont/Times-Roman/Type/Font
+/Encoding 13 0 R/Subtype/Type1>>
+endobj
+13 0 obj
+<</Type/Encoding/Differences[
+173/minus]>>
+endobj
+14 0 obj
+<</Type/Metadata
+/Subtype/XML/Length 1346>>stream
+<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
+<?adobe-xap-filters esc="CRLF"?>
+<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
+<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
+<rdf:Description rdf:about='uuid:699ce14a-cf2b-11ef-0000-17393b2772b9' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.06'/>
+<rdf:Description rdf:about='uuid:699ce14a-cf2b-11ef-0000-17393b2772b9' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-01-08T09:18:02+01:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-01-08T09:18:02+01:00</xmp:CreateDate>
+<xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
+<rdf:Description rdf:about='uuid:699ce14a-cf2b-11ef-0000-17393b2772b9' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:699ce14a-cf2b-11ef-0000-17393b2772b9'/>
+<rdf:Description rdf:about='uuid:699ce14a-cf2b-11ef-0000-17393b2772b9' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+</rdf:RDF>
+</x:xmpmeta>
+                                                                        
+                                                                        
+<?xpacket end='w'?>
+endstream
+endobj
+2 0 obj
+<</Producer(GPL Ghostscript 9.06)
+/CreationDate(D:20150108091802+01'00')
+/ModDate(D:20150108091802+01'00')
+/Creator(groff version 1.22.3)>>endobj
+xref
+0 15
+0000000000 65535 f 
+0000001429 00000 n 
+0000003312 00000 n 
+0000001370 00000 n 
+0000001210 00000 n 
+0000000015 00000 n 
+0000001190 00000 n 
+0000001494 00000 n 
+0000001748 00000 n 
+0000001683 00000 n 
+0000001615 00000 n 
+0000001535 00000 n 
+0000001565 00000 n 
+0000001830 00000 n 
+0000001889 00000 n 
+trailer
+<< /Size 15 /Root 1 0 R /Info 2 0 R
+/ID [<E7A069C89AE370A9D41735FF131F0C9F><E7A069C89AE370A9D41735FF131F0C9F>]
+>>
+startxref
+3466
+%%EOF
diff --git a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3 b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3
new file mode 100644 (file)
index 0000000..50fc351
--- /dev/null
@@ -0,0 +1,64 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_POSTFIELDSIZE_LARGE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_POSTFIELDSIZE_LARGE \- size of POST data pointed to
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDSIZE_LARGE,
+                          curl_off_t size);
+.SH DESCRIPTION
+If you want to post data to the server without having libcurl do a strlen() to
+measure the data size, this option must be used. When this option is used you
+can post fully binary data, which otherwise is likely to fail. If this size is
+set to -1, the library will use strlen() to get the size.
+.SH DEFAULT
+-1
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  const char *data = large_chunk;
+  curl_off_t length_of_data; /* set somehow */
+
+  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+  /* size of the POST data */
+  curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE_LARGE, length_of_data);
+
+  curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
+
+  curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+Along with HTTP
+.SH RETURN VALUE
+Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_POSTFIELDS "(3), " CURLOPT_COPYPOSTFIELDS "(3), "
+.BR CURLOPT_POSTFIELDSIZE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.html b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.html
new file mode 100644 (file)
index 0000000..322ee47
--- /dev/null
@@ -0,0 +1,77 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_POSTFIELDSIZE_LARGE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_POSTFIELDSIZE_LARGE - size of POST data pointed to <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDSIZE_LARGE,
+ &nbsp;                         curl_off_t size);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">If you want to post data to the server without having libcurl do a strlen() to measure the data size, this option must be used. When this option is used you can post fully binary data, which otherwise is likely to fail. If this size is set to -1, the library will use strlen() to get the size. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">-1 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP(S) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre>
+<p class="level0">CURL *curl = curl_easy_init();
+ if(curl) {
+ &nbsp; const char *data = large_chunk;
+ &nbsp; curl_off_t length_of_data; /* set somehow */
+ <p class="level0">&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+ <p class="level0">&nbsp; /* size of the POST data */
+ &nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE_LARGE, length_of_data);
+ <p class="level0">&nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
+ <p class="level0">&nbsp; curl_easy_perform(curl);
+ }
+ </pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Along with HTTP <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_POSTFIELDS.html">CURLOPT_POSTFIELDS</a>, <a Class="manpage" href="./CURLOPT_COPYPOSTFIELDS.html">CURLOPT_COPYPOSTFIELDS</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_POSTFIELDSIZE.html">CURLOPT_POSTFIELDSIZE</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.pdf b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.pdf
new file mode 100644 (file)
index 0000000..53bb6bd
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_POSTQUOTE.3 b/docs/libcurl/opts/CURLOPT_POSTQUOTE.3
new file mode 100644 (file)
index 0000000..72692fd
--- /dev/null
@@ -0,0 +1,48 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_POSTQUOTE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_POSTQUOTE \- (S)FTP commands to run after the transfer
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTQUOTE, struct curl_slist *cmds);
+.SH DESCRIPTION
+Pass a pointer to a linked list of FTP or SFTP commands to pass to the server
+after your FTP transfer request. The commands will only be run if no error
+occurred. The linked list should be a fully valid list of struct curl_slist
+structs properly filled in as described for \fICURLOPT_QUOTE(3)\fP.
+
+Disable this operation again by setting a NULL to this option.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+SFTP and FTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+If support for the protocols are built-in.
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_QUOTE "(3), " CURLOPT_PREQUOTE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_POSTQUOTE.html b/docs/libcurl/opts/CURLOPT_POSTQUOTE.html
new file mode 100644 (file)
index 0000000..ba8a206
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_POSTQUOTE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_POSTQUOTE - (S)FTP commands to run after the transfer <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTQUOTE, struct curl_slist *cmds); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to a linked list of FTP or SFTP commands to pass to the server after your FTP transfer request. The commands will only be run if no error occurred. The linked list should be a fully valid list of struct curl_slist structs properly filled in as described for <a Class="emphasis" href="./CURLOPT_QUOTE.html">CURLOPT_QUOTE</a>. 
+<p class="level0">Disable this operation again by setting a NULL to this option. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">SFTP and FTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">If support for the protocols are built-in. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_QUOTE.html">CURLOPT_QUOTE</a>, <a Class="manpage" href="./CURLOPT_PREQUOTE.html">CURLOPT_PREQUOTE</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_POSTQUOTE.pdf b/docs/libcurl/opts/CURLOPT_POSTQUOTE.pdf
new file mode 100644 (file)
index 0000000..7ee5b9b
--- /dev/null
@@ -0,0 +1,114 @@
+%PDF-1.4
+%Çì\8f¢
+5 0 obj
+<</Length 6 0 R/Filter /FlateDecode>>
+stream
+x\9c\85U\7fo\9bH\10ýß\9fb¤û£\10\85-Ëòku§\93Ü\84Jn©qlÜ^\15\9f"\8c\1d6\ e\v­ò\1dúUî;Þì.¶e·\91\b\98\99}3ïÍã\19lBÁ\96¿þ\9ao\ 6\ 1<\8a\81\r\8f\83ç\ 1U/¡¿ä\ex\97b@(\1f¤ë\81Ρ\108\10pFB\ eéfpoÜ̧q2I\1f&É,½39áÜñCc\9e\98\7f§\1f\ 6Ü'Ôç\1cóÒÕÀ§$\f ý\8eIi´0ØÂ\84¼kª\87"\13/\ f¢hë]kZ\8eg\13\9bz\ 6Þ\94õVÀiyY\931F8Õ%ïåA®Ìpý}Q\15dÙÄ¡\88\ 686@¸'{°\\86Á!XÌ\97éÆxh¦ÿ`÷\18G=âq¦Ë\1a\9f"ùüØ»c\13×\ eÀ¢\8e|më&^í\\ 1ò8\ 2\82ÿ`aÌ\16æût\ 2y½ÙdÛ\95\80\86¦ÛB¶n\8b\ 6Ú§\ 2Ú&Û\8auÑ(ä§x\11§E}\12*T³¯ãd2\eÍN±©\10\85Ëø­ÜæU·*à\ f9Ø·ò\8f<ý)Ã\1d\17Òx\90^iÔy\8d1ç³_¨Wpõ\84 «âúlòÔ>\1dõ5\88¶éòV\97\11U)Z¸Ê7+±0\7f¿ÔÇm4»\99\8e&é(\19KlÈ\15õ4U¿èi\92\1d(â$ô4A\94¸N/%! \83]]nÕ4k¼©Êí¿\88W#-V °Õk\90\rÌÎÉØeB]%\15¢h¾\99ÔE.mÇÀ\82\9a¤\97ºkTú     S\96³×\ 4ñl®\115ÅsW\88\96@\8a\ 5\ f\a}/«
+êmõ\ 2ËBñ_®a[CÑ4\88©Îq\8cM±Ò9Ç\ 6¸wh@<Õ]µ\92É\19¬»
+ë|3\1d   Ô£FV\95\876\154\89)Ö:5~æI?\11°kê]Ñ`¥\1fU\85Ç\94¨I\ 1«BäM¹ÄûuÝ\98o\90\14jï·À     \89Íö\9b·×Ç\9d\82j\aìµ]<Ò\8a¶Á\19\ fû%#\8a|æPÂqµ¤BeÙÛRdË
+\97â©\14 ñeÒ\b {4±ÙÐc\9e\91!Ðå\vRÕ¶åö\11Ç1\9eDZ&P¥ÈxrY\83ï{íyn(Å\85+ΩÛû\8a1\9c«·T6Ö»\83ã³ \7f\e§\aM\1e\9b\932\ e\82\80¹\aéJ\zW_\851\99ö(\¦P ô\1c\1f\1dV\9dc9Äö\94¨\8c$\85äp¦ÃH`û{¯ºIâ3G°äD\99ë\9eø\95¡t\8fR\94\80*úkøi\12Gûå\f_]Îô\b\8a2¹Å\1aÒmÒOÏ\vÃ_x0\97\91\87Óä\90]\85\19\8e~\8c\1eí'a\8câá»Q<J¿\9ev\8a´0\17Ï85æÑ\1aD·ÛÕM+5¬ö\1a¥ÞÖy]¡Y4\ 5,M§\97lWV­U^\94˽1\8dÒùt\f\9fMÊP\87>5\86ñ<:\93÷q0\18_´]Ó\7f¿¢\87ä£\w  DË\13P¨=Äbu­XÑ\81óñÇqb¢È¿\8c\1f\12å\90Ú'Ú\8b\82\9eE\11\fãYr¤ö\1cÒ+\v\8b»zÖGÈ¥\99í×T-òõiY<Õ÷mçÜ
+&ÓèbqjcuúSmüðSâ«/3'¾.[\95KéZ\10\10\16\10Û´¨çq\97x\ 6\rà\ 3\1a¨\83\8a»\87] ²T\94\ eîð÷?#dL\80endstream
+endobj
+6 0 obj
+1052
+endobj
+4 0 obj
+<</Type/Page/MediaBox [0 0 595 842]
+/Rotate 0/Parent 3 0 R
+/Resources<</ProcSet[/PDF /Text]
+/ExtGState 11 0 R
+/Font 12 0 R
+>>
+/Contents 5 0 R
+>>
+endobj
+3 0 obj
+<< /Type /Pages /Kids [
+4 0 R
+] /Count 1
+>>
+endobj
+1 0 obj
+<</Type /Catalog /Pages 3 0 R
+/Metadata 14 0 R
+>>
+endobj
+7 0 obj
+<</Type/ExtGState
+/OPM 1>>endobj
+11 0 obj
+<</R7
+7 0 R>>
+endobj
+12 0 obj
+<</R10
+10 0 R/R9
+9 0 R/R8
+8 0 R>>
+endobj
+10 0 obj
+<</BaseFont/Times-Italic/Type/Font
+/Subtype/Type1>>
+endobj
+9 0 obj
+<</BaseFont/Times-Bold/Type/Font
+/Subtype/Type1>>
+endobj
+8 0 obj
+<</BaseFont/Times-Roman/Type/Font
+/Encoding 13 0 R/Subtype/Type1>>
+endobj
+13 0 obj
+<</Type/Encoding/Differences[
+140/fi
+173/minus]>>
+endobj
+14 0 obj
+<</Type/Metadata
+/Subtype/XML/Length 1346>>stream
+<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
+<?adobe-xap-filters esc="CRLF"?>
+<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
+<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
+<rdf:Description rdf:about='uuid:6a3577ca-cf2b-11ef-0000-56fc4828454a' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.06'/>
+<rdf:Description rdf:about='uuid:6a3577ca-cf2b-11ef-0000-56fc4828454a' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-01-08T09:18:03+01:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-01-08T09:18:03+01:00</xmp:CreateDate>
+<xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
+<rdf:Description rdf:about='uuid:6a3577ca-cf2b-11ef-0000-56fc4828454a' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:6a3577ca-cf2b-11ef-0000-56fc4828454a'/>
+<rdf:Description rdf:about='uuid:6a3577ca-cf2b-11ef-0000-56fc4828454a' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+</rdf:RDF>
+</x:xmpmeta>
+                                                                        
+                                                                        
+<?xpacket end='w'?>
+endstream
+endobj
+2 0 obj
+<</Producer(GPL Ghostscript 9.06)
+/CreationDate(D:20150108091803+01'00')
+/ModDate(D:20150108091803+01'00')
+/Creator(groff version 1.22.3)>>endobj
+xref
+0 15
+0000000000 65535 f 
+0000001376 00000 n 
+0000003266 00000 n 
+0000001317 00000 n 
+0000001157 00000 n 
+0000000015 00000 n 
+0000001137 00000 n 
+0000001441 00000 n 
+0000001695 00000 n 
+0000001630 00000 n 
+0000001562 00000 n 
+0000001482 00000 n 
+0000001512 00000 n 
+0000001777 00000 n 
+0000001843 00000 n 
+trailer
+<< /Size 15 /Root 1 0 R /Info 2 0 R
+/ID [<6D18367D1B659C0775060C32CB00322E><6D18367D1B659C0775060C32CB00322E>]
+>>
+startxref
+3420
+%%EOF
diff --git a/docs/libcurl/opts/CURLOPT_POSTREDIR.3 b/docs/libcurl/opts/CURLOPT_POSTREDIR.3
new file mode 100644 (file)
index 0000000..aa36bd0
--- /dev/null
@@ -0,0 +1,73 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_POSTREDIR 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_POSTREDIR \- how to act on a HTTP POST redirect
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTREDIR,
+                          long bitmask);
+.SH DESCRIPTION
+Pass a bitmask to control how libcurl acts on redirects after POSTs that get a
+301, 302 or 303 response back.  A parameter with bit 0 set (value
+\fBCURL_REDIR_POST_301\fP) tells the library to respect RFC2616/10.3.2 and not
+convert POST requests into GET requests when following a 301 redirection.
+Setting bit 1 (value \fBCURL_REDIR_POST_302\fP) makes libcurl maintain the
+request method after a 302 redirect whilst setting bit 2 (value
+\fBCURL_REDIR_POST_303\fP) makes libcurl maintain the request method after a
+303 redirect. The value \fBCURL_REDIR_POST_ALL\fP is a convenience define that
+sets all three bits.
+
+The non-RFC behaviour is ubiquitous in web browsers, so the library does the
+conversion by default to maintain consistency. However, a server may require a
+POST to remain a POST after such a redirection. This option is meaningful only
+when setting \fICURLOPT_FOLLOWLOCATION(3)\fP.
+.SH DEFAULT
+0
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+  /* a silly POST example */
+  curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "data=true");
+
+  /* example.com is redirected, so we tell libcurl to send POST on 301, 302 and
+     303 HTTP response codes */
+  curl_easy_setopt(curl, CURLOPT_POSTREDIR, CURL_REDIR_POST_ALL);
+
+  curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.17.1. This option was known as CURLOPT_POST301 up to 7.19.0 as it
+only supported the 301 then. CURL_REDIR_POST_303 was added in 7.26.0.
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_FOLLOWLOCATION "(3), " CURLOPT_POSTFIELDS "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_POSTREDIR.html b/docs/libcurl/opts/CURLOPT_POSTREDIR.html
new file mode 100644 (file)
index 0000000..f4b8ffe
--- /dev/null
@@ -0,0 +1,78 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_POSTREDIR man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_POSTREDIR - how to act on a HTTP POST redirect <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTREDIR,
+ &nbsp;                         long bitmask);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a bitmask to control how libcurl acts on redirects after POSTs that get a 301, 302 or 303 response back.  A parameter with bit 0 set (value <span Class="bold">CURL_REDIR_POST_301</span>) tells the library to respect <a href="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616</a>/10.3.2 and not convert POST requests into GET requests when following a 301 redirection. Setting bit 1 (value <span Class="bold">CURL_REDIR_POST_302</span>) makes libcurl maintain the request method after a 302 redirect whilst setting bit 2 (value <span Class="bold">CURL_REDIR_POST_303</span>) makes libcurl maintain the request method after a 303 redirect. The value <span Class="bold">CURL_REDIR_POST_ALL</span> is a convenience define that sets all three bits. 
+<p class="level0">The non-RFC behaviour is ubiquitous in web browsers, so the library does the conversion by default to maintain consistency. However, a server may require a POST to remain a POST after such a redirection. This option is meaningful only when setting <a Class="emphasis" href="./CURLOPT_FOLLOWLOCATION.html">CURLOPT_FOLLOWLOCATION</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP(S) <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre>
+<p class="level0">CURL *curl = curl_easy_init();
+ if(curl) {
+ &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+ <p class="level0">&nbsp; /* a silly POST example */
+ &nbsp; curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "data=true");
+ <p class="level0">&nbsp; /* example.com is redirected, so we tell libcurl to send POST on 301, 302 and
+ &nbsp;    303 HTTP response codes */
+ &nbsp; curl_easy_setopt(curl, CURLOPT_POSTREDIR, CURL_REDIR_POST_ALL);
+ <p class="level0">&nbsp; curl_easy_perform(curl);
+ }
+ </pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.17.1. This option was known as CURLOPT_POST301 up to 7.19.0 as it only supported the 301 then. CURL_REDIR_POST_303 was added in 7.26.0. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_FOLLOWLOCATION.html">CURLOPT_FOLLOWLOCATION</a>, <a Class="manpage" href="./CURLOPT_POSTFIELDS.html">CURLOPT_POSTFIELDS</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_POSTREDIR.pdf b/docs/libcurl/opts/CURLOPT_POSTREDIR.pdf
new file mode 100644 (file)
index 0000000..513682a
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_POSTREDIR.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_PREQUOTE.3 b/docs/libcurl/opts/CURLOPT_PREQUOTE.3
new file mode 100644 (file)
index 0000000..e4163e8
--- /dev/null
@@ -0,0 +1,47 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_PREQUOTE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_PREQUOTE \- commands to run before FTP or SFTP transfer
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PREQUOTE, char *cmds);
+.SH DESCRIPTION
+Pass a pointer to a linked list of FTP or SFTP commands to pass to the server
+after the transfer type is set. The linked list should be a fully valid list
+of struct curl_slist structs properly filled in as described for
+\fICURLOPT_QUOTE(3)\fP. Disable this operation again by setting a NULL to this
+option.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+FTP and SFTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Along with the protocol support
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_QUOTE "(3), " CURLOPT_POSTQUOTE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_PREQUOTE.html b/docs/libcurl/opts/CURLOPT_PREQUOTE.html
new file mode 100644 (file)
index 0000000..f74c660
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_PREQUOTE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_PREQUOTE - commands to run before FTP or SFTP transfer <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PREQUOTE, char *cmds); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to a linked list of FTP or SFTP commands to pass to the server after the transfer type is set. The linked list should be a fully valid list of struct curl_slist structs properly filled in as described for <a Class="emphasis" href="./CURLOPT_QUOTE.html">CURLOPT_QUOTE</a>. Disable this operation again by setting a NULL to this option. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">FTP and SFTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Along with the protocol support <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_QUOTE.html">CURLOPT_QUOTE</a>, <a Class="manpage" href="./CURLOPT_POSTQUOTE.html">CURLOPT_POSTQUOTE</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_PREQUOTE.pdf b/docs/libcurl/opts/CURLOPT_PREQUOTE.pdf
new file mode 100644 (file)
index 0000000..60ae8e4
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_PREQUOTE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_PRIVATE.3 b/docs/libcurl/opts/CURLOPT_PRIVATE.3
new file mode 100644 (file)
index 0000000..bdb11cf
--- /dev/null
@@ -0,0 +1,46 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_PRIVATE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_PRIVATE \- store a private pointer
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PRIVATE, void *pointer);
+.SH DESCRIPTION
+Pass a void * as parameter, pointing to data that should be associated with
+this curl handle.  The pointer can subsequently be retrieved using
+\fIcurl_easy_getinfo(3)\fP with the CURLINFO_PRIVATE option. libcurl itself
+never does nothing with this data.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.10.3
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_VERBOSE "(3), " CURLOPT_STDERR "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_PRIVATE.html b/docs/libcurl/opts/CURLOPT_PRIVATE.html
new file mode 100644 (file)
index 0000000..165f333
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_PRIVATE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_PRIVATE - store a private pointer <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PRIVATE, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a void * as parameter, pointing to data that should be associated with this curl handle.  The pointer can subsequently be retrieved using <span Class="emphasis">curl_easy_getinfo(3)</span> with the CURLINFO_PRIVATE option. libcurl itself never does nothing with this data. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.10.3 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_VERBOSE.html">CURLOPT_VERBOSE</a>, <a Class="manpage" href="./CURLOPT_STDERR.html">CURLOPT_STDERR</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_PRIVATE.pdf b/docs/libcurl/opts/CURLOPT_PRIVATE.pdf
new file mode 100644 (file)
index 0000000..6d0c6d4
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_PRIVATE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3 b/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3
new file mode 100644 (file)
index 0000000..c4785dc
--- /dev/null
@@ -0,0 +1,44 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_PROGRESSDATA 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_PROGRESSDATA \- custom pointer passed to the progress callback
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROGRESSDATA, void *pointer);
+.SH DESCRIPTION
+Pass a \fIpointer\fP that will be untouched by libcurl and passed as the first
+argument in the progress callback set with \fICURLOPT_PROGRESSFUNCTION(3)\fP.
+.SH DEFAULT
+The default value of this parameter is NULL.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+http://curl.haxx.se/libcurl/c/progressfunc.html
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_PROGRESSFUNCTION "(3), " CURLOPT_XFERINFOFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_PROGRESSDATA.html b/docs/libcurl/opts/CURLOPT_PROGRESSDATA.html
new file mode 100644 (file)
index 0000000..cd73126
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_PROGRESSDATA man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_PROGRESSDATA - custom pointer passed to the progress callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROGRESSDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a <span Class="emphasis">pointer</span> that will be untouched by libcurl and passed as the first argument in the progress callback set with <a Class="emphasis" href="./CURLOPT_PROGRESSFUNCTION.html">CURLOPT_PROGRESSFUNCTION</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">The default value of this parameter is NULL. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><a href="http://curl.haxx.se/libcurl/c/progressfunc.html">http://curl.haxx.se/libcurl/c/progressfunc.html</a> <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_PROGRESSFUNCTION.html">CURLOPT_PROGRESSFUNCTION</a>, <a Class="manpage" href="./CURLOPT_XFERINFOFUNCTION.html">CURLOPT_XFERINFOFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_PROGRESSDATA.pdf b/docs/libcurl/opts/CURLOPT_PROGRESSDATA.pdf
new file mode 100644 (file)
index 0000000..efd9226
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_PROGRESSDATA.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3 b/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3
new file mode 100644 (file)
index 0000000..d8e7a66
--- /dev/null
@@ -0,0 +1,84 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_PROGRESSFUNCTION 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_PROGRESSFUNCTION \- callback to progress meter function
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+int progress_callback(void *clientp,
+                      double dltotal,
+                      double dlnow,
+                      double ultotal,
+                      double ulnow);
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROGRESSFUNCTION, progress_callback);
+.SH DESCRIPTION
+Pass a pointer to your callback function, which should match the prototype
+shown above.
+
+We encourage users to use the newer \fICURLOPT_XFERINFOFUNCTION(3)\fP instead,
+if you can.
+
+This function gets called by libcurl instead of its internal equivalent with a
+frequent interval. While data is being transferred it will be called very
+frequently, and during slow periods like when nothing is being transferred it
+can slow down to about one call per second.
+
+\fIclientp\fP is the pointer set with \fICURLOPT_PROGRESSDATA(3)\fP, it is not
+used by libcurl but is only passed along from the application to the callback.
+
+The callback gets told how much data libcurl will transfer and has
+transferred, in number of bytes. \fIdltotal\fP is the total number of bytes
+libcurl expects to download in this transfer. \fIdlnow\fP is the number of
+bytes downloaded so far. \fIultotal\fP is the total number of bytes libcurl
+expects to upload in this transfer. \fIulnow\fP is the number of bytes
+uploaded so far.
+
+Unknown/unused argument values passed to the callback will be set to zero
+(like if you only download data, the upload size will remain 0). Many times
+the callback will be called one or more times first, before it knows the data
+sizes so a program must be made to handle that.
+
+Returning a non-zero value from this callback will cause libcurl to abort the
+transfer and return \fICURLE_ABORTED_BY_CALLBACK\fP.
+
+If you transfer data with the multi interface, this function will not be
+called during periods of idleness unless you call the appropriate libcurl
+function that performs transfers.
+
+\fICURLOPT_NOPROGRESS(3)\fP must be set to 0 to make this function actually
+get called.
+.SH DEFAULT
+By default, libcurl has an internal progress meter. That's rarely wanted by
+users.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+http://curl.haxx.se/libcurl/c/progressfunc.html
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK.
+.SH "SEE ALSO"
+.BR CURLOPT_VERBOSE "(3), " CURLOPT_NOPROGRESS "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.html b/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.html
new file mode 100644 (file)
index 0000000..489cd70
--- /dev/null
@@ -0,0 +1,69 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_PROGRESSFUNCTION man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_PROGRESSFUNCTION - callback to progress meter function <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">int progress_callback(void *clientp, &nbsp;                     double dltotal, &nbsp;                     double dlnow, &nbsp;                     double ultotal, &nbsp;                     double ulnow); 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROGRESSFUNCTION, progress_callback); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
+<p class="level0">We encourage users to use the newer <a Class="emphasis" href="./CURLOPT_XFERINFOFUNCTION.html">CURLOPT_XFERINFOFUNCTION</a> instead, if you can. 
+<p class="level0">This function gets called by libcurl instead of its internal equivalent with a frequent interval. While data is being transferred it will be called very frequently, and during slow periods like when nothing is being transferred it can slow down to about one call per second. 
+<p class="level0"><span Class="emphasis">clientp</span> is the pointer set with <a Class="emphasis" href="./CURLOPT_PROGRESSDATA.html">CURLOPT_PROGRESSDATA</a>, it is not used by libcurl but is only passed along from the application to the callback. 
+<p class="level0">The callback gets told how much data libcurl will transfer and has transferred, in number of bytes. <span Class="emphasis">dltotal</span> is the total number of bytes libcurl expects to download in this transfer. <span Class="emphasis">dlnow</span> is the number of bytes downloaded so far. <span Class="emphasis">ultotal</span> is the total number of bytes libcurl expects to upload in this transfer. <span Class="emphasis">ulnow</span> is the number of bytes uploaded so far. 
+<p class="level0">Unknown/unused argument values passed to the callback will be set to zero (like if you only download data, the upload size will remain 0). Many times the callback will be called one or more times first, before it knows the data sizes so a program must be made to handle that. 
+<p class="level0">Returning a non-zero value from this callback will cause libcurl to abort the transfer and return <span Class="emphasis">CURLE_ABORTED_BY_CALLBACK</span>. 
+<p class="level0">If you transfer data with the multi interface, this function will not be called during periods of idleness unless you call the appropriate libcurl function that performs transfers. 
+<p class="level0"><a Class="emphasis" href="./CURLOPT_NOPROGRESS.html">CURLOPT_NOPROGRESS</a> must be set to 0 to make this function actually get called. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">By default, libcurl has an internal progress meter. That's rarely wanted by users. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><a href="http://curl.haxx.se/libcurl/c/progressfunc.html">http://curl.haxx.se/libcurl/c/progressfunc.html</a> <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_VERBOSE.html">CURLOPT_VERBOSE</a>, <a Class="manpage" href="./CURLOPT_NOPROGRESS.html">CURLOPT_NOPROGRESS</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.pdf b/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.pdf
new file mode 100644 (file)
index 0000000..dc418fe
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_PROTOCOLS.3 b/docs/libcurl/opts/CURLOPT_PROTOCOLS.3
new file mode 100644 (file)
index 0000000..958eeeb
--- /dev/null
@@ -0,0 +1,92 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_PROTOCOLS 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_PROTOCOLS \- set allowed protocols
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROTOCOLS, long bitmask);
+.SH DESCRIPTION
+Pass a long that holds a bitmask of CURLPROTO_* defines. If used, this bitmask
+limits what protocols libcurl may use in the transfer. This allows you to have
+a libcurl built to support a wide range of protocols but still limit specific
+transfers to only be allowed to use a subset of them. By default libcurl will
+accept all protocols it supports (\fICURLPROTO_ALL\fP). See also
+\fICURLOPT_REDIR_PROTOCOLS(3)\fP.
+
+These are the available protocol defines:
+.nf
+CURLPROTO_DICT
+CURLPROTO_FILE
+CURLPROTO_FTP
+CURLPROTO_FTPS
+CURLPROTO_GOPHER
+CURLPROTO_HTTP
+CURLPROTO_HTTPS
+CURLPROTO_IMAP
+CURLPROTO_IMAPS
+CURLPROTO_LDAP
+CURLPROTO_LDAPS
+CURLPROTO_POP3
+CURLPROTO_POP3S
+CURLPROTO_RTMP
+CURLPROTO_RTMPE
+CURLPROTO_RTMPS
+CURLPROTO_RTMPT
+CURLPROTO_RTMPTE
+CURLPROTO_RTMPTS
+CURLPROTO_RTSP
+CURLPROTO_SCP
+CURLPROTO_SFTP
+CURLPROTO_SMB
+CURLPROTO_SMTP
+CURLPROTO_SMTPS
+CURLPROTO_TELNET
+CURLPROTO_TFTP
+.fi
+.SH DEFAULT
+All protocols built-in
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+.nf
+curl = curl_easy_init();
+if(curl) {
+  /* pass in the URL from an external source */
+  curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
+
+  /* only allow HTTP, TFTP and SFTP */
+  curl_easy_setopt(curl, CURLOPT_PROTOCOLS,
+                   CURLPROTO_HTTP | CURLPROTO_TFTP | CURLPROTO_SFTP);
+
+  /* Perform the request */
+  curl_easy_perform(curl);
+}
+.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 CURLOPT_REDIR_PROTOCOLS "(3), " CURLOPT_URL "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_PROTOCOLS.html b/docs/libcurl/opts/CURLOPT_PROTOCOLS.html
new file mode 100644 (file)
index 0000000..b2eae23
--- /dev/null
@@ -0,0 +1,104 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_PROTOCOLS man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_PROTOCOLS - set allowed protocols <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROTOCOLS, long bitmask); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long that holds a bitmask of CURLPROTO_* defines. If used, this bitmask limits what protocols libcurl may use in the transfer. This allows you to have a libcurl built to support a wide range of protocols but still limit specific transfers to only be allowed to use a subset of them. By default libcurl will accept all protocols it supports (<span Class="emphasis">CURLPROTO_ALL</span>). See also <a Class="emphasis" href="./CURLOPT_REDIR_PROTOCOLS.html">CURLOPT_REDIR_PROTOCOLS</a>. 
+<p class="level0">These are the available protocol defines: <pre>
+<p class="level0">CURLPROTO_DICT
+ CURLPROTO_FILE
+ CURLPROTO_FTP
+ CURLPROTO_FTPS
+ CURLPROTO_GOPHER
+ CURLPROTO_HTTP
+ CURLPROTO_HTTPS
+ CURLPROTO_IMAP
+ CURLPROTO_IMAPS
+ CURLPROTO_LDAP
+ CURLPROTO_LDAPS
+ CURLPROTO_POP3
+ CURLPROTO_POP3S
+ CURLPROTO_RTMP
+ CURLPROTO_RTMPE
+ CURLPROTO_RTMPS
+ CURLPROTO_RTMPT
+ CURLPROTO_RTMPTE
+ CURLPROTO_RTMPTS
+ CURLPROTO_RTSP
+ CURLPROTO_SCP
+ CURLPROTO_SFTP
+ CURLPROTO_SMB
+ CURLPROTO_SMTP
+ CURLPROTO_SMTPS
+ CURLPROTO_TELNET
+ CURLPROTO_TFTP
+ </pre>
+
+<p class="level0"><a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">All protocols built-in <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre>
+<p class="level0">curl = curl_easy_init();
+ if(curl) {
+ &nbsp; /* pass in the URL from an external source */
+ &nbsp; curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
+ <p class="level0">&nbsp; /* only allow HTTP, TFTP and SFTP */
+ &nbsp; curl_easy_setopt(curl, CURLOPT_PROTOCOLS,
+ &nbsp;                  CURLPROTO_HTTP | CURLPROTO_TFTP | CURLPROTO_SFTP);
+ <p class="level0">&nbsp; /* Perform the request */
+ &nbsp; curl_easy_perform(curl);
+ }
+ </pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.19.4 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_REDIR_PROTOCOLS.html">CURLOPT_REDIR_PROTOCOLS</a>, <a Class="manpage" href="./CURLOPT_URL.html">CURLOPT_URL</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_PROTOCOLS.pdf b/docs/libcurl/opts/CURLOPT_PROTOCOLS.pdf
new file mode 100644 (file)
index 0000000..45587f3
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_PROTOCOLS.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_PROXY.3 b/docs/libcurl/opts/CURLOPT_PROXY.3
new file mode 100644 (file)
index 0000000..b419e51
--- /dev/null
@@ -0,0 +1,85 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_PROXY 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_PROXY \- set proxy to use
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY, char *proxy);
+.SH DESCRIPTION
+Set the \fIproxy\fP to use for the upcoming request. The parameter should be a
+char * to a zero terminated string holding the host name or dotted IP
+address.
+
+To specify port number in this string, append :[port] to the end of the host
+name. The proxy's port number may optionally be specified with the separate
+option \fICURLOPT_PROXYPORT(3)\fP. If not specified, libcurl will default to
+using port 1080 for proxies.
+
+The proxy string may be prefixed with [scheme]:// to specify which kind of
+proxy is used. Use socks4://, socks4a://, socks5:// or socks5h:// (the last
+one to enable socks5 and asking the proxy to do the resolving, also known as
+\fICURLPROXY_SOCKS5_HOSTNAME\fP type) to request the specific SOCKS version to
+be used. No protocol specified, http:// and all others will be treated as HTTP
+proxies.
+
+Without a scheme prefix, \fICURLOPT_PROXYTYPE(3)\fP can be used to specify
+which kind of proxy the string identifies.
+
+When you tell the library to use a HTTP proxy, libcurl will transparently
+convert operations to HTTP even if you specify an FTP URL etc. This may have
+an impact on what other features of the library you can use, such as
+\fICURLOPT_QUOTE(3)\fP and similar FTP specifics that don't work unless you
+tunnel through the HTTP proxy. Such tunneling is activated with
+\fICURLOPT_HTTPPROXYTUNNEL(3)\fP.
+
+libcurl respects the environment variables \fBhttp_proxy\fP, \fBftp_proxy\fP,
+\fBall_proxy\fP etc, if any of those are set. The \fICURLOPT_PROXY(3)\fP
+option does however override any possibly set environment variables.
+
+Setting the proxy string to "" (an empty string) will explicitly disable the
+use of a proxy, even if there is an environment variable set for it.
+
+A proxy host string given in an environment variable can also include protocol
+scheme (http://) and embedded user + password.
+.SH DEFAULT
+Default is NULL, meaning no proxy is used.
+
+When you set a host name to use, do not assume that there's any particular
+single port number used widely for proxies. Specify it!
+.SH PROTOCOLS
+All except file://. Note that some protocols don't do very well over proxy.
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Since 7.14.1 the proxy environment variable names can include the protocol
+scheme.
+
+Since 7.21.7 the proxy string supports the socks protocols as "schemes".
+.SH RETURN VALUE
+Returns CURLE_OK if proxies are supported, CURLE_UNKNOWN_OPTION if not, or
+CURLE_OUT_OF_MEMORY if there was insufficient heap space.
+.SH "SEE ALSO"
+.BR CURLOPT_PROXYPORT "(3), " CURLOPT_HTTPPROXYTUNNEL "(3), "
+.BR CURLOPT_PROXYTYPE "(3)"
diff --git a/docs/libcurl/opts/CURLOPT_PROXY.html b/docs/libcurl/opts/CURLOPT_PROXY.html
new file mode 100644 (file)
index 0000000..d37676a
--- /dev/null
@@ -0,0 +1,69 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_PROXY man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_PROXY - set proxy to use <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY, char *proxy); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Set the <span Class="emphasis">proxy</span> to use for the upcoming request. The parameter should be a char * to a zero terminated string holding the host name or dotted IP address. 
+<p class="level0">To specify port number in this string, append :[port] to the end of the host name. The proxy's port number may optionally be specified with the separate option <a Class="emphasis" href="./CURLOPT_PROXYPORT.html">CURLOPT_PROXYPORT</a>. If not specified, libcurl will default to using port 1080 for proxies. 
+<p class="level0">The proxy string may be prefixed with [scheme]:// to specify which kind of proxy is used. Use socks4://, socks4a://, socks5:// or socks5h:// (the last one to enable socks5 and asking the proxy to do the resolving, also known as <span Class="emphasis">CURLPROXY_SOCKS5_HOSTNAME</span> type) to request the specific SOCKS version to be used. No protocol specified, http:// and all others will be treated as HTTP proxies. 
+<p class="level0">Without a scheme prefix, <a Class="emphasis" href="./CURLOPT_PROXYTYPE.html">CURLOPT_PROXYTYPE</a> can be used to specify which kind of proxy the string identifies. 
+<p class="level0">When you tell the library to use a HTTP proxy, libcurl will transparently convert operations to HTTP even if you specify an FTP URL etc. This may have an impact on what other features of the library you can use, such as <a Class="emphasis" href="./CURLOPT_QUOTE.html">CURLOPT_QUOTE</a> and similar FTP specifics that don't work unless you tunnel through the HTTP proxy. Such tunneling is activated with <a Class="emphasis" href="./CURLOPT_HTTPPROXYTUNNEL.html">CURLOPT_HTTPPROXYTUNNEL</a>. 
+<p class="level0">libcurl respects the environment variables <span Class="bold">http_proxy</span>, <span Class="bold">ftp_proxy</span>, <span Class="bold">all_proxy</span> etc, if any of those are set. The <a Class="emphasis" href="./CURLOPT_PROXY.html">CURLOPT_PROXY</a> option does however override any possibly set environment variables. 
+<p class="level0">Setting the proxy string to "" (an empty string) will explicitly disable the use of a proxy, even if there is an environment variable set for it. 
+<p class="level0">A proxy host string given in an environment variable can also include protocol scheme (http://) and embedded user + password. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">Default is NULL, meaning no proxy is used. 
+<p class="level0">When you set a host name to use, do not assume that there's any particular single port number used widely for proxies. Specify it! <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All except file://. Note that some protocols don't do very well over proxy. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Since 7.14.1 the proxy environment variable names can include the protocol scheme. 
+<p class="level0">Since 7.21.7 the proxy string supports the socks protocols as "schemes". <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if proxies are supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_PROXYPORT.html">CURLOPT_PROXYPORT</a>, <a Class="manpage" href="./CURLOPT_HTTPPROXYTUNNEL.html">CURLOPT_HTTPPROXYTUNNEL</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_PROXYTYPE.html">CURLOPT_PROXYTYPE</a>, <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_PROXY.pdf b/docs/libcurl/opts/CURLOPT_PROXY.pdf
new file mode 100644 (file)
index 0000000..76ace30
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_PROXY.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_PROXYAUTH.3 b/docs/libcurl/opts/CURLOPT_PROXYAUTH.3
new file mode 100644 (file)
index 0000000..fe742c0
--- /dev/null
@@ -0,0 +1,55 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_PROXYAUTH 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_PROXYAUTH \- set HTTP proxy authentication methods to try
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYAUTH, long bitmask);
+.SH DESCRIPTION
+Pass a long as parameter, which is set to a bitmask, to tell libcurl which
+HTTP authentication method(s) you want it to use for your proxy
+authentication.  If more than one bit is set, libcurl will first query the
+site to see what authentication methods it supports and then pick the best one
+you allow it to use. For some methods, this will induce an extra network
+round-trip. Set the actual name and password with the
+\fICURLOPT_PROXYUSERPWD(3)\fP option.
+
+The bitmask can be constructed by or'ing together the bits fully listed and
+described in the \fICURLOPT_HTTPAUTH(3)\fP man page.
+.SH DEFAULT
+CURLAUTH_BASIC
+.SH PROTOCOLS
+HTTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.10.7
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
+CURLE_NOT_BUILT_IN if the bitmask specified no supported authentication
+methods.
+.SH "SEE ALSO"
+.BR CURLOPT_PROXY "(3), " CURLOPT_PROXYTYPE "(3), "
+.BR CURLOPT_PROXYUSERPWD "(3), " CURLOPT_PROXYPORT "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_PROXYAUTH.html b/docs/libcurl/opts/CURLOPT_PROXYAUTH.html
new file mode 100644 (file)
index 0000000..e7d050e
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_PROXYAUTH man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_PROXYAUTH - set HTTP proxy authentication methods to try <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYAUTH, long bitmask); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long as parameter, which is set to a bitmask, to tell libcurl which HTTP authentication method(s) you want it to use for your proxy authentication.  If more than one bit is set, libcurl will first query the site to see what authentication methods it supports and then pick the best one you allow it to use. For some methods, this will induce an extra network round-trip. Set the actual name and password with the <a Class="emphasis" href="./CURLOPT_PROXYUSERPWD.html">CURLOPT_PROXYUSERPWD</a> option. 
+<p class="level0">The bitmask can be constructed by or'ing together the bits fully listed and described in the <a Class="emphasis" href="./CURLOPT_HTTPAUTH.html">CURLOPT_HTTPAUTH</a> man page. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">CURLAUTH_BASIC <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.10.7 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_NOT_BUILT_IN if the bitmask specified no supported authentication methods. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_PROXY.html">CURLOPT_PROXY</a>, <a Class="manpage" href="./CURLOPT_PROXYTYPE.html">CURLOPT_PROXYTYPE</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_PROXYUSERPWD.html">CURLOPT_PROXYUSERPWD</a>, <a Class="manpage" href="./CURLOPT_PROXYPORT.html">CURLOPT_PROXYPORT</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_PROXYAUTH.pdf b/docs/libcurl/opts/CURLOPT_PROXYAUTH.pdf
new file mode 100644 (file)
index 0000000..377a5c4
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_PROXYAUTH.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_PROXYHEADER.3 b/docs/libcurl/opts/CURLOPT_PROXYHEADER.3
new file mode 100644 (file)
index 0000000..bfa7a7a
--- /dev/null
@@ -0,0 +1,57 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_PROXYHEADER 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_PROXYHEADER \- custom HTTP headers to pass to proxy
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYHEADER,
+                          struct curl_slist *headers);
+.SH DESCRIPTION
+Pass a pointer to a linked list of HTTP headers to pass in your HTTP request
+sent to a proxy. The rules for this list is identical to the
+\fICURLOPT_HTTPHEADER(3)\fP option's.
+
+The headers set with this option is only ever used in requests sent to a proxy
+- when there's also a request sent to a host.
+
+The first line in a request (containing the method, usually a GET or POST) is
+NOT a header and cannot be replaced using this option. Only the lines
+following the request-line are headers. Adding this method line in this list
+of headers will only cause your request to send an invalid header.
+
+Pass a NULL to this to reset back to no custom headers.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+HTTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.37.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_HEADEROPT "(3), " CURLOPT_HTTPHEADER "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_PROXYHEADER.html b/docs/libcurl/opts/CURLOPT_PROXYHEADER.html
new file mode 100644 (file)
index 0000000..8c14363
--- /dev/null
@@ -0,0 +1,67 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_PROXYHEADER man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_PROXYHEADER - custom HTTP headers to pass to proxy <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYHEADER,
+ &nbsp;                         struct curl_slist *headers);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to a linked list of HTTP headers to pass in your HTTP request sent to a proxy. The rules for this list is identical to the <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a> option's. 
+<p class="level0">The headers set with this option is only ever used in requests sent to a proxy - when there's also a request sent to a host. 
+<p class="level0">The first line in a request (containing the method, usually a GET or POST) is NOT a header and cannot be replaced using this option. Only the lines following the request-line are headers. Adding this method line in this list of headers will only cause your request to send an invalid header. 
+<p class="level0">Pass a NULL to this to reset back to no custom headers. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.37.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_HEADEROPT.html">CURLOPT_HEADEROPT</a>, <a Class="manpage" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_PROXYHEADER.pdf b/docs/libcurl/opts/CURLOPT_PROXYHEADER.pdf
new file mode 100644 (file)
index 0000000..07ff613
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_PROXYHEADER.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3 b/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3
new file mode 100644 (file)
index 0000000..43536ca
--- /dev/null
@@ -0,0 +1,49 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_PROXYPASSWORD 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_PROXYPASSWORD \- password to use with proxy authentication
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYPASSWORD, char *pwd);
+.SH DESCRIPTION
+Pass a char * as parameter, which should be pointing to the zero terminated
+password to use for authentication with the proxy.
+
+The \fICURLOPT_PROXYPASSWORD(3)\fP option should be used in conjunction with
+the \fICURLOPT_PROXYUSERNAME(3)\fP option.
+.SH DEFAULT
+blank
+.SH PROTOCOLS
+Most
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.19.1
+.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 CURLOPT_PASSWORD "(3), " CURLOPT_PROXYUSERNAME "(3), "
+.BR CURLOPT_HTTPAUTH "(3), " CURLOPT_PROXYAUTH "(3)"
diff --git a/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.html b/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.html
new file mode 100644 (file)
index 0000000..f41b4f0
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_PROXYPASSWORD man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_PROXYPASSWORD - password to use with proxy authentication <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYPASSWORD, char *pwd); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * as parameter, which should be pointing to the zero terminated password to use for authentication with the proxy. 
+<p class="level0">The <a Class="emphasis" href="./CURLOPT_PROXYPASSWORD.html">CURLOPT_PROXYPASSWORD</a> option should be used in conjunction with the <a Class="emphasis" href="./CURLOPT_PROXYUSERNAME.html">CURLOPT_PROXYUSERNAME</a> option. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">blank <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">Most <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.19.1 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_PASSWORD.html">CURLOPT_PASSWORD</a>, <a Class="manpage" href="./CURLOPT_PROXYUSERNAME.html">CURLOPT_PROXYUSERNAME</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_HTTPAUTH.html">CURLOPT_HTTPAUTH</a>, <a Class="manpage" href="./CURLOPT_PROXYAUTH.html">CURLOPT_PROXYAUTH</a>, <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.pdf b/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.pdf
new file mode 100644 (file)
index 0000000..025758f
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_PROXYPORT.3 b/docs/libcurl/opts/CURLOPT_PROXYPORT.3
new file mode 100644 (file)
index 0000000..d8a1bb1
--- /dev/null
@@ -0,0 +1,47 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_PROXYPORT 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_PROXYPORT \- port number the proxy listens on
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYPORT, long port);
+.SH DESCRIPTION
+Pass a long with this option to set the proxy port to connect to unless it is
+specified in the proxy string \fICURLOPT_PROXY(3)\fP or uses the default one.
+
+While this accepts a 'long', the port number is 16 bit so it can't be larger
+than 65535.
+.SH DEFAULT
+0, not specified which makes it use the default port
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_PROXY "(3), " CURLOPT_PROXYTYPE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_PROXYPORT.html b/docs/libcurl/opts/CURLOPT_PROXYPORT.html
new file mode 100644 (file)
index 0000000..e065f33
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_PROXYPORT man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_PROXYPORT - port number the proxy listens on <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYPORT, long port); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long with this option to set the proxy port to connect to unless it is specified in the proxy string <a Class="emphasis" href="./CURLOPT_PROXY.html">CURLOPT_PROXY</a> or uses the default one. 
+<p class="level0">While this accepts a 'long', the port number is 16 bit so it can't be larger than 65535. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0, not specified which makes it use the default port <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_PROXY.html">CURLOPT_PROXY</a>, <a Class="manpage" href="./CURLOPT_PROXYTYPE.html">CURLOPT_PROXYTYPE</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_PROXYPORT.pdf b/docs/libcurl/opts/CURLOPT_PROXYPORT.pdf
new file mode 100644 (file)
index 0000000..4d66079
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_PROXYPORT.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_PROXYTYPE.3 b/docs/libcurl/opts/CURLOPT_PROXYTYPE.3
new file mode 100644 (file)
index 0000000..2ce0cc0
--- /dev/null
@@ -0,0 +1,54 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_PROXYTYPE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_PROXYTYPE \- proxy protocol type
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYTYPE, long type);
+.SH DESCRIPTION
+Pass a long with this option to set type of the proxy. Available options for
+this are \fICURLPROXY_HTTP\fP, \fICURLPROXY_HTTP_1_0\fP
+\fICURLPROXY_SOCKS4\fP, \fICURLPROXY_SOCKS5\fP, \fICURLPROXY_SOCKS4A\fP and
+\fICURLPROXY_SOCKS5_HOSTNAME\fP. The HTTP type is default.
+
+If you set \fBCURLOPT_PROXYTYPE(3)\fP to \fICURLPROXY_HTTP_1_0\fP, it will
+only affect how libcurl speaks to a proxy when CONNECT is used. The HTTP
+version used for "regular" HTTP requests is instead controlled with
+\fICURLOPT_HTTP_VERSION(3)\fP.
+
+Often it is more convenient to specify the proxy type with the scheme part of
+the \fICURLOPT_PROXY(3)\fP string.
+.SH DEFAULT
+CURLPROXY_HTTP
+.SH PROTOCOLS
+Most
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_PROXY "(3), " CURLOPT_PROXYPORT "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_PROXYTYPE.html b/docs/libcurl/opts/CURLOPT_PROXYTYPE.html
new file mode 100644 (file)
index 0000000..2f45432
--- /dev/null
@@ -0,0 +1,62 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_PROXYTYPE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_PROXYTYPE - proxy protocol type <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYTYPE, long type); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long with this option to set type of the proxy. Available options for this are <span Class="emphasis">CURLPROXY_HTTP</span>, <span Class="emphasis">CURLPROXY_HTTP_1_0</span> <span Class="emphasis">CURLPROXY_SOCKS4</span>, <span Class="emphasis">CURLPROXY_SOCKS5</span>, <span Class="emphasis">CURLPROXY_SOCKS4A</span> and <span Class="emphasis">CURLPROXY_SOCKS5_HOSTNAME</span>. The HTTP type is default. 
+<p class="level0">If you set <a Class="bold" href="./CURLOPT_PROXYTYPE.html">CURLOPT_PROXYTYPE</a> to <span Class="emphasis">CURLPROXY_HTTP_1_0</span>, it will only affect how libcurl speaks to a proxy when CONNECT is used. The HTTP version used for "regular" HTTP requests is instead controlled with <a Class="emphasis" href="./CURLOPT_HTTP_VERSION.html">CURLOPT_HTTP_VERSION</a>. 
+<p class="level0">Often it is more convenient to specify the proxy type with the scheme part of the <a Class="emphasis" href="./CURLOPT_PROXY.html">CURLOPT_PROXY</a> string. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">CURLPROXY_HTTP <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">Most <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_PROXY.html">CURLOPT_PROXY</a>, <a Class="manpage" href="./CURLOPT_PROXYPORT.html">CURLOPT_PROXYPORT</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_PROXYTYPE.pdf b/docs/libcurl/opts/CURLOPT_PROXYTYPE.pdf
new file mode 100644 (file)
index 0000000..c5a8e40
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_PROXYTYPE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3 b/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3
new file mode 100644 (file)
index 0000000..c342ec4
--- /dev/null
@@ -0,0 +1,53 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_PROXYUSERNAME 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_PROXYUSERNAME \- user name to use for proxy authentication
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYUSERNAME,
+                          char *username);
+.SH DESCRIPTION
+Pass a char * as parameter, which should be pointing to the zero terminated
+user name to use for the transfer.
+
+\fBCURLOPT_PROXYUSERNAME(3)\fP sets the user name to be used in protocol
+authentication with the proxy.
+
+To specify the proxy password use the \fICURLOPT_PROXYPASSWORD(3)\fP.
+.SH DEFAULT
+blank
+.SH PROTOCOLS
+Most
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.19.1
+.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 CURLOPT_PROXYPASSWORD "(3), " CURLOPT_USERNAME "(3), "
+.BR CURLOPT_HTTPAUTH "(3), " CURLOPT_PROXYAUTH "(3)"
diff --git a/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.html b/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.html
new file mode 100644 (file)
index 0000000..04e8263
--- /dev/null
@@ -0,0 +1,66 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_PROXYUSERNAME man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_PROXYUSERNAME - user name to use for proxy authentication <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYUSERNAME,
+ &nbsp;                         char *username);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * as parameter, which should be pointing to the zero terminated user name to use for the transfer. 
+<p class="level0"><a Class="bold" href="./CURLOPT_PROXYUSERNAME.html">CURLOPT_PROXYUSERNAME</a> sets the user name to be used in protocol authentication with the proxy. 
+<p class="level0">To specify the proxy password use the <a Class="emphasis" href="./CURLOPT_PROXYPASSWORD.html">CURLOPT_PROXYPASSWORD</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">blank <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">Most <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.19.1 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_PROXYPASSWORD.html">CURLOPT_PROXYPASSWORD</a>, <a Class="manpage" href="./CURLOPT_USERNAME.html">CURLOPT_USERNAME</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_HTTPAUTH.html">CURLOPT_HTTPAUTH</a>, <a Class="manpage" href="./CURLOPT_PROXYAUTH.html">CURLOPT_PROXYAUTH</a>, <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.pdf b/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.pdf
new file mode 100644 (file)
index 0000000..03f7611
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3 b/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3
new file mode 100644 (file)
index 0000000..bbf0da5
--- /dev/null
@@ -0,0 +1,50 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_PROXYUSERPWD 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_PROXYUSERPWD \- user name and password to use for proxy authentication
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYUSERPWD, char *userpwd);
+.SH DESCRIPTION
+Pass a char * as parameter, which should be [user name]:[password] to use for
+the connection to the HTTP proxy. Both the name and the password will be URL
+decoded before use, so to include for example a colon in the user name you
+should encode it as %3A. (This is different to how \fICURLOPT_USERPWD(3)\fP is
+used - beware.)
+
+Use \fICURLOPT_PROXYAUTH(3)\fP to specify the authentication method.
+.SH DEFAULT
+This is NULL by default.
+.SH PROTOCOLS
+Used with all protocols that can use a proxy
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK if proxies are supported, CURLE_UNKNOWN_OPTION if not, or
+CURLE_OUT_OF_MEMORY if there was insufficient heap space.
+.SH "SEE ALSO"
+.BR CURLOPT_PROXY "(3), " CURLOPT_PROXYTYPE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.html b/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.html
new file mode 100644 (file)
index 0000000..ecd301c
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_PROXYUSERPWD man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_PROXYUSERPWD - user name and password to use for proxy authentication <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYUSERPWD, char *userpwd); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * as parameter, which should be [user name]:[password] to use for the connection to the HTTP proxy. Both the name and the password will be URL decoded before use, so to include for example a colon in the user name you should encode it as %3A. (This is different to how <a Class="emphasis" href="./CURLOPT_USERPWD.html">CURLOPT_USERPWD</a> is used - beware.) 
+<p class="level0">Use <a Class="emphasis" href="./CURLOPT_PROXYAUTH.html">CURLOPT_PROXYAUTH</a> to specify the authentication method. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">This is NULL by default. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">Used with all protocols that can use a proxy <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if proxies are supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_PROXY.html">CURLOPT_PROXY</a>, <a Class="manpage" href="./CURLOPT_PROXYTYPE.html">CURLOPT_PROXYTYPE</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.pdf b/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.pdf
new file mode 100644 (file)
index 0000000..c99bf94
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3 b/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3
new file mode 100644 (file)
index 0000000..ae5ede7
--- /dev/null
@@ -0,0 +1,48 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_PROXY_TRANSFER_MODE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_PROXY_TRANSFER_MODE \- append FTP transfer mode to URL for proxy
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TRANSFER_MODE, long enabled);
+.SH DESCRIPTION
+Pass a long. If the value is set to 1 (one), it tells libcurl to set the
+transfer mode (binary or ASCII) for FTP transfers done via a HTTP proxy, by
+appending ;type=a or ;type=i to the URL. Without this setting, or it being set
+to 0 (zero, the default), \fICURLOPT_TRANSFERTEXT(3)\fP has no effect when
+doing FTP via a proxy. Beware that not all proxies support this feature.
+.SH DEFAULT
+0, disabled
+.SH PROTOCOLS
+FTP over proxy
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.18.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if the
+enabled value is not supported.
+.SH "SEE ALSO"
+.BR CURLOPT_PROXY "(3), " CURLOPT_HTTPPROXYTUNNEL "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.html b/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.html
new file mode 100644 (file)
index 0000000..ae3f30a
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_PROXY_TRANSFER_MODE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_PROXY_TRANSFER_MODE - append FTP transfer mode to URL for proxy <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TRANSFER_MODE, long enabled); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long. If the value is set to 1 (one), it tells libcurl to set the transfer mode (binary or ASCII) for FTP transfers done via a HTTP proxy, by appending ;type=a or ;type=i to the URL. Without this setting, or it being set to 0 (zero, the default), <a Class="emphasis" href="./CURLOPT_TRANSFERTEXT.html">CURLOPT_TRANSFERTEXT</a> has no effect when doing FTP via a proxy. Beware that not all proxies support this feature. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0, disabled <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">FTP over proxy <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.18.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if the enabled value is not supported. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_PROXY.html">CURLOPT_PROXY</a>, <a Class="manpage" href="./CURLOPT_HTTPPROXYTUNNEL.html">CURLOPT_HTTPPROXYTUNNEL</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.pdf b/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.pdf
new file mode 100644 (file)
index 0000000..d21dcf7
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_PUT.3 b/docs/libcurl/opts/CURLOPT_PUT.3
new file mode 100644 (file)
index 0000000..bd40b7f
--- /dev/null
@@ -0,0 +1,48 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_PUT 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_PUT \- make a HTTP PUT request
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PUT, long put);
+.SH DESCRIPTION
+A parameter set to 1 tells the library to use HTTP PUT to transfer data. The
+data should be set with \fICURLOPT_READDATA(3)\fP and
+\fICURLOPT_INFILESIZE(3)\fP.
+
+This option is \fBdeprecated\fP since version 7.12.1. Use
+\fICURLOPT_UPLOAD(3)\fP!
+.SH DEFAULT
+0, disabled
+.SH PROTOCOLS
+HTTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Deprecated since 7.12.1. Do not use.
+.SH RETURN VALUE
+Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_UPLOAD "(3), " CURLOPT_HTTPGET "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_PUT.html b/docs/libcurl/opts/CURLOPT_PUT.html
new file mode 100644 (file)
index 0000000..1000cc7
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_PUT man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_PUT - make a HTTP PUT request <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PUT, long put); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">A parameter set to 1 tells the library to use HTTP PUT to transfer data. The data should be set with <a Class="emphasis" href="./CURLOPT_READDATA.html">CURLOPT_READDATA</a> and <a Class="emphasis" href="./CURLOPT_INFILESIZE.html">CURLOPT_INFILESIZE</a>. 
+<p class="level0">This option is <span Class="bold">deprecated</span> since version 7.12.1. Use <a Class="emphasis" href="./CURLOPT_UPLOAD.html">CURLOPT_UPLOAD</a>! <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0, disabled <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Deprecated since 7.12.1. Do not use. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_UPLOAD.html">CURLOPT_UPLOAD</a>, <a Class="manpage" href="./CURLOPT_HTTPGET.html">CURLOPT_HTTPGET</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_PUT.pdf b/docs/libcurl/opts/CURLOPT_PUT.pdf
new file mode 100644 (file)
index 0000000..d5f4626
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_PUT.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_QUOTE.3 b/docs/libcurl/opts/CURLOPT_QUOTE.3
new file mode 100644 (file)
index 0000000..8bf3c14
--- /dev/null
@@ -0,0 +1,86 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_QUOTE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_QUOTE \- (S)FTP commands to run before transfer
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_QUOTE, struct curl_slist *cmds);
+.SH DESCRIPTION
+Pass a pointer to a linked list of FTP or SFTP commands to pass to the server
+prior to your request. This will be done before any other commands are issued
+(even before the CWD command for FTP). The linked list should be a fully valid
+list of 'struct curl_slist' structs properly filled in with text strings. Use
+\fIcurl_slist_append(3)\fP to append strings (commands) to the list, and clear
+the entire list afterwards with \fIcurl_slist_free_all(3)\fP. Disable this
+operation again by setting a NULL to this option. When speaking to a FTP
+server, prefix the command with an asterisk (*) to make libcurl continue even
+if the command fails as by default libcurl will stop at first failure.
+
+The set of valid FTP commands depends on the server (see RFC959 for a list of
+mandatory commands).
+
+The valid SFTP commands are:
+.RS
+.IP "chgrp group file"
+The chgrp command sets the group ID of the file named by the file operand to
+the group ID specified by the group operand. The group operand is a decimal
+integer group ID.
+.IP "chmod mode file"
+The chmod command modifies the file mode bits of the specified file. The
+mode operand is an octal integer mode number.
+.IP "chown user file"
+The chown command sets the owner of the file named by the file operand to the
+user ID specified by the user operand. The user operand is a decimal
+integer user ID.
+.IP "ln source_file target_file"
+The ln and symlink commands create a symbolic link at the target_file location
+pointing to the source_file location.
+.IP "mkdir directory_name"
+The mkdir command creates the directory named by the directory_name operand.
+.IP "pwd"
+The pwd command returns the absolute pathname of the current working directory.
+.IP "rename source target"
+The rename command renames the file or directory named by the source
+operand to the destination path named by the target operand.
+.IP "rm file"
+The rm command removes the file specified by the file operand.
+.IP "rmdir directory"
+The rmdir command removes the directory entry specified by the directory
+operand, provided it is empty.
+.IP "symlink source_file target_file"
+See ln.
+.RE
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+SFTP and FTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+SFTP support added in 7.16.3. *-prefix for SFTP added in 7.24.0
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_POSTQUOTE "(3), " CURLOPT_PREQUOTE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_QUOTE.html b/docs/libcurl/opts/CURLOPT_QUOTE.html
new file mode 100644 (file)
index 0000000..91549af
--- /dev/null
@@ -0,0 +1,84 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_QUOTE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_QUOTE - (S)FTP commands to run before transfer <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_QUOTE, struct curl_slist *cmds); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to a linked list of FTP or SFTP commands to pass to the server prior to your request. This will be done before any other commands are issued (even before the CWD command for FTP). The linked list should be a fully valid list of 'struct curl_slist' structs properly filled in with text strings. Use <span Class="emphasis">curl_slist_append(3)</span> to append strings (commands) to the list, and clear the entire list afterwards with <span Class="emphasis">curl_slist_free_all(3)</span>. Disable this operation again by setting a NULL to this option. When speaking to a FTP server, prefix the command with an asterisk (*) to make libcurl continue even if the command fails as by default libcurl will stop at first failure. 
+<p class="level0">The set of valid FTP commands depends on the server (see <a href="http://www.ietf.org/rfc/rfc959.txt">RFC 959</a> for a list of mandatory commands). 
+<p class="level0">The valid SFTP commands are: 
+<p class="level1">
+<p class="level0"><a name="chgrp"></a><span class="nroffip">chgrp group file</span> 
+<p class="level1">The chgrp command sets the group ID of the file named by the file operand to the group ID specified by the group operand. The group operand is a decimal integer group ID. 
+<p class="level0"><a name="chmod"></a><span class="nroffip">chmod mode file</span> 
+<p class="level1">The chmod command modifies the file mode bits of the specified file. The mode operand is an octal integer mode number. 
+<p class="level0"><a name="chown"></a><span class="nroffip">chown user file</span> 
+<p class="level1">The chown command sets the owner of the file named by the file operand to the user ID specified by the user operand. The user operand is a decimal integer user ID. 
+<p class="level0"><a name="ln"></a><span class="nroffip">ln source_file target_file</span> 
+<p class="level1">The ln and symlink commands create a symbolic link at the target_file location pointing to the source_file location. 
+<p class="level0"><a name="mkdir"></a><span class="nroffip">mkdir directory_name</span> 
+<p class="level1">The mkdir command creates the directory named by the directory_name operand. 
+<p class="level0"><a name="pwd"></a><span class="nroffip">pwd</span> 
+<p class="level1">The pwd command returns the absolute pathname of the current working directory. 
+<p class="level0"><a name="rename"></a><span class="nroffip">rename source target</span> 
+<p class="level1">The rename command renames the file or directory named by the source operand to the destination path named by the target operand. 
+<p class="level0"><a name="rm"></a><span class="nroffip">rm file</span> 
+<p class="level1">The rm command removes the file specified by the file operand. 
+<p class="level0"><a name="rmdir"></a><span class="nroffip">rmdir directory</span> 
+<p class="level1">The rmdir command removes the directory entry specified by the directory operand, provided it is empty. 
+<p class="level0"><a name="symlink"></a><span class="nroffip">symlink source_file target_file</span> 
+<p class="level1">See ln. 
+<p class="level0"><a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">SFTP and FTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">SFTP support added in 7.16.3. *-prefix for SFTP added in 7.24.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_POSTQUOTE.html">CURLOPT_POSTQUOTE</a>, <a Class="manpage" href="./CURLOPT_PREQUOTE.html">CURLOPT_PREQUOTE</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_QUOTE.pdf b/docs/libcurl/opts/CURLOPT_QUOTE.pdf
new file mode 100644 (file)
index 0000000..76550af
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_QUOTE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3 b/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3
new file mode 100644 (file)
index 0000000..0c2d688
--- /dev/null
@@ -0,0 +1,45 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_RANDOM_FILE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_RANDOM_FILE \- specify a source for random data
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RANDOM_FILE, char *path);
+.SH DESCRIPTION
+Pass a char * to a zero terminated file name. The file will be used to read
+from to seed the random engine for SSL and more.
+.SH DEFAULT
+NULL, not used
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK on success or
+CURLE_OUT_OF_MEMORY if there was insufficient heap space.
+.SH "SEE ALSO"
+.BR CURLOPT_EGDSOCKET "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_RANDOM_FILE.html b/docs/libcurl/opts/CURLOPT_RANDOM_FILE.html
new file mode 100644 (file)
index 0000000..2b81b5e
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_RANDOM_FILE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_RANDOM_FILE - specify a source for random data <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RANDOM_FILE, char *path); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * to a zero terminated file name. The file will be used to read from to seed the random engine for SSL and more. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL, not used <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK on success or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_EGDSOCKET.html">CURLOPT_EGDSOCKET</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_RANDOM_FILE.pdf b/docs/libcurl/opts/CURLOPT_RANDOM_FILE.pdf
new file mode 100644 (file)
index 0000000..5f8a5ac
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_RANDOM_FILE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_RANGE.3 b/docs/libcurl/opts/CURLOPT_RANGE.3
new file mode 100644 (file)
index 0000000..f5dd555
--- /dev/null
@@ -0,0 +1,66 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_RANGE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_RANGE \- set byte range to request
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RANGE, char *range);
+.SH DESCRIPTION
+Pass a char * as parameter, which should contain the specified range you want
+to retrieve. It should be in the format "X-Y", where either X or Y may be left
+out and X and Y are byte indexes.
+
+HTTP transfers also support several intervals, separated with commas as in
+\fI"X-Y,N-M"\fP. Using this kind of multiple intervals will cause the HTTP
+server to send the response document in pieces (using standard MIME separation
+techniques). For RTSP, the formatting of a range should follow RFC2326 Section
+12.29. For RTSP, byte ranges are \fBnot\fP permitted. Instead, ranges should
+be given in npt, utc, or smpte formats.
+
+Pass a NULL to this option to disable the use of ranges.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+HTTP, FTP, FILE, RTSP and SFTP.
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+  /* get the first 200 bytes */
+  curl_easy_setopt(curl, CURLOPT_RANGE, "0-199");
+
+  /* Perform the request */
+  curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+FILE since 7.18.0, RTSP since 7.20.0
+.SH RETURN VALUE
+Returns CURLE_OK on success or
+CURLE_OUT_OF_MEMORY if there was insufficient heap space.
+.SH "SEE ALSO"
+.BR CURLOPT_RESUME_FROM "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_RANGE.html b/docs/libcurl/opts/CURLOPT_RANGE.html
new file mode 100644 (file)
index 0000000..c256da8
--- /dev/null
@@ -0,0 +1,73 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_RANGE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_RANGE - set byte range to request <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RANGE, char *range); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * as parameter, which should contain the specified range you want to retrieve. It should be in the format "X-Y", where either X or Y may be left out and X and Y are byte indexes. 
+<p class="level0">HTTP transfers also support several intervals, separated with commas as in <span Class="emphasis">"X-Y,N-M"</span>. Using this kind of multiple intervals will cause the HTTP server to send the response document in pieces (using standard MIME separation techniques). For RTSP, the formatting of a range should follow <a href="http://www.ietf.org/rfc/rfc2326.txt">RFC 2326</a> Section 12.29. For RTSP, byte ranges are <span Class="bold">not</span> permitted. Instead, ranges should be given in npt, utc, or smpte formats. 
+<p class="level0">Pass a NULL to this option to disable the use of ranges. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP, FTP, FILE, RTSP and SFTP. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre>
+<p class="level0">CURL *curl = curl_easy_init();
+ if(curl) {
+ &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+ <p class="level0">&nbsp; /* get the first 200 bytes */
+ &nbsp; curl_easy_setopt(curl, CURLOPT_RANGE, "0-199");
+ <p class="level0">&nbsp; /* Perform the request */
+ &nbsp; curl_easy_perform(curl);
+ }
+ </pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">FILE since 7.18.0, RTSP since 7.20.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK on success or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_RESUME_FROM.html">CURLOPT_RESUME_FROM</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_RANGE.pdf b/docs/libcurl/opts/CURLOPT_RANGE.pdf
new file mode 100644 (file)
index 0000000..196f75d
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_RANGE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_READDATA.3 b/docs/libcurl/opts/CURLOPT_READDATA.3
new file mode 100644 (file)
index 0000000..db66631
--- /dev/null
@@ -0,0 +1,52 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_READDATA 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_READDATA \- custom pointer passed to the read callback
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_READDATA, void *pointer);
+.SH DESCRIPTION
+Data \fIpointer\fP to pass to the file read function. If you use the
+\fICURLOPT_READFUNCTION(3)\fP option, this is the pointer you'll get as
+input in the 4th argument to the callback.
+
+If you don't specify a read callback but instead rely on the default internal
+read function, this data must be a valid readable FILE * (cast to 'void *').
+
+If you're using libcurl as a win32 DLL, you MUST use a
+\fICURLOPT_READFUNCTION(3)\fP if you set this option.
+.SH DEFAULT
+By default, this is a FILE * to stdin.
+.SH PROTOCOLS
+This is used for all protocols when sending data.
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+This option was once known by the older name \fICURLOPT_INFILE\fP, the name
+\fICURLOPT_READDATA\fP was introduced in 7.9.7.
+.SH RETURN VALUE
+This will return CURLE_OK.
+.SH "SEE ALSO"
+.BR CURLOPT_READFUNCTION "(3), " CURLOPT_WRITEDATA "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_READDATA.html b/docs/libcurl/opts/CURLOPT_READDATA.html
new file mode 100644 (file)
index 0000000..cb372fc
--- /dev/null
@@ -0,0 +1,62 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_READDATA man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_READDATA - custom pointer passed to the read callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_READDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Data <span Class="emphasis">pointer</span> to pass to the file read function. If you use the <a Class="emphasis" href="./CURLOPT_READFUNCTION.html">CURLOPT_READFUNCTION</a> option, this is the pointer you'll get as input in the 4th argument to the callback. 
+<p class="level0">If you don't specify a read callback but instead rely on the default internal read function, this data must be a valid readable FILE * (cast to 'void *'). 
+<p class="level0">If you're using libcurl as a win32 DLL, you MUST use a <a Class="emphasis" href="./CURLOPT_READFUNCTION.html">CURLOPT_READFUNCTION</a> if you set this option. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">By default, this is a FILE * to stdin. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">This is used for all protocols when sending data. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">This option was once known by the older name <span Class="emphasis">CURLOPT_INFILE</span>, the name <span Class="emphasis">CURLOPT_READDATA</span> was introduced in 7.9.7. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">This will return CURLE_OK. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_READFUNCTION.html">CURLOPT_READFUNCTION</a>, <a Class="manpage" href="./CURLOPT_WRITEDATA.html">CURLOPT_WRITEDATA</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_READDATA.pdf b/docs/libcurl/opts/CURLOPT_READDATA.pdf
new file mode 100644 (file)
index 0000000..c23376d
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_READDATA.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_READFUNCTION.3 b/docs/libcurl/opts/CURLOPT_READFUNCTION.3
new file mode 100644 (file)
index 0000000..79139ad
--- /dev/null
@@ -0,0 +1,78 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_READFUNCTION 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_READFUNCTION \- read callback for data uploads
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+size_t read_callback(char *buffer, size_t size, size_t nitems, void *instream);
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_READFUNCTION, read_callback);
+
+.SH DESCRIPTION
+Pass a pointer to your callback function, as the prototype shows above.
+
+This callback function gets called by libcurl as soon as it needs to read data
+in order to send it to the peer. The data area pointed at by the pointer
+\fIbuffer\fP should be filled up with at most \fIsize\fP multiplied with
+\fInmemb\fP number of bytes by your function.
+
+Your function must then return the actual number of bytes that it stored in
+that memory area. Returning 0 will signal end-of-file to the library and cause
+it to stop the current transfer.
+
+If you stop the current transfer by returning 0 "pre-maturely" (i.e before the
+server expected it, like when you've said you will upload N bytes and you
+upload less than N bytes), you may experience that the server "hangs" waiting
+for the rest of the data that won't come.
+
+The read callback may return \fICURL_READFUNC_ABORT\fP to stop the current
+operation immediately, resulting in a \fICURLE_ABORTED_BY_CALLBACK\fP error
+code from the transfer.
+
+The callback can return \fICURL_READFUNC_PAUSE\fP to cause reading from this
+connection to pause. See \fIcurl_easy_pause(3)\fP for further details.
+
+\fBBugs\fP: when doing TFTP uploads, you must return the exact amount of data
+that the callback wants, or it will be considered the final packet by the
+server end and the transfer will end there.
+
+If you set this callback pointer to NULL, or don't set it at all, the default
+internal read function will be used. It is doing an fread() on the FILE *
+userdata set with \fICURLOPT_READDATA(3)\fP.
+.SH DEFAULT
+The default internal read callback is fread().
+.SH PROTOCOLS
+This is used for all protocols when doing uploads.
+.SH EXAMPLE
+Here's an example setting a read callback for reading that to upload to an FTP
+site: http://curl.haxx.se/libcurl/c/ftpupload.html
+.SH AVAILABILITY
+CURL_READFUNC_PAUSE return code was added in 7.18.0 and CURL_READFUNC_ABORT
+was added in 7.12.1.
+.SH RETURN VALUE
+This will return CURLE_OK.
+.SH "SEE ALSO"
+.BR CURLOPT_READDATA "(3), " CURLOPT_WRITEFUNCTION "(3), "
+.BR CURLOPT_SEEKFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_READFUNCTION.html b/docs/libcurl/opts/CURLOPT_READFUNCTION.html
new file mode 100644 (file)
index 0000000..e1e88dd
--- /dev/null
@@ -0,0 +1,69 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_READFUNCTION man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_READFUNCTION - read callback for data uploads <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">size_t read_callback(char *buffer, size_t size, size_t nitems, void *instream); 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_READFUNCTION, read_callback); 
+<p class="level0"><a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to your callback function, as the prototype shows above. 
+<p class="level0">This callback function gets called by libcurl as soon as it needs to read data in order to send it to the peer. The data area pointed at by the pointer <span Class="emphasis">buffer</span> should be filled up with at most <span Class="emphasis">size</span> multiplied with <span Class="emphasis">nmemb</span> number of bytes by your function. 
+<p class="level0">Your function must then return the actual number of bytes that it stored in that memory area. Returning 0 will signal end-of-file to the library and cause it to stop the current transfer. 
+<p class="level0">If you stop the current transfer by returning 0 "pre-maturely" (i.e before the server expected it, like when you've said you will upload N bytes and you upload less than N bytes), you may experience that the server "hangs" waiting for the rest of the data that won't come. 
+<p class="level0">The read callback may return <span Class="emphasis">CURL_READFUNC_ABORT</span> to stop the current operation immediately, resulting in a <span Class="emphasis">CURLE_ABORTED_BY_CALLBACK</span> error code from the transfer. 
+<p class="level0">The callback can return <span Class="emphasis">CURL_READFUNC_PAUSE</span> to cause reading from this connection to pause. See <span Class="emphasis">curl_easy_pause(3)</span> for further details. 
+<p class="level0"><span Class="bold">Bugs</span>: when doing TFTP uploads, you must return the exact amount of data that the callback wants, or it will be considered the final packet by the server end and the transfer will end there. 
+<p class="level0">If you set this callback pointer to NULL, or don't set it at all, the default internal read function will be used. It is doing an fread() on the FILE * userdata set with <a Class="emphasis" href="./CURLOPT_READDATA.html">CURLOPT_READDATA</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">The default internal read callback is fread(). <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">This is used for all protocols when doing uploads. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">Here's an example setting a read callback for reading that to upload to an FTP site: <a href="http://curl.haxx.se/libcurl/c/ftpupload.html">http://curl.haxx.se/libcurl/c/ftpupload.html</a> <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">CURL_READFUNC_PAUSE return code was added in 7.18.0 and CURL_READFUNC_ABORT was added in 7.12.1. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">This will return CURLE_OK. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_READDATA.html">CURLOPT_READDATA</a>, <a Class="manpage" href="./CURLOPT_WRITEFUNCTION.html">CURLOPT_WRITEFUNCTION</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_SEEKFUNCTION.html">CURLOPT_SEEKFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_READFUNCTION.pdf b/docs/libcurl/opts/CURLOPT_READFUNCTION.pdf
new file mode 100644 (file)
index 0000000..7926845
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_READFUNCTION.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3 b/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3
new file mode 100644 (file)
index 0000000..fbec9f5
--- /dev/null
@@ -0,0 +1,92 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_REDIR_PROTOCOLS 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_REDIR_PROTOCOLS \- set protocols allowed to redirect to
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REDIR_PROTOCOLS, long bitmask);
+.SH DESCRIPTION
+Pass a long that holds a bitmask of CURLPROTO_* defines. If used, this bitmask
+limits what protocols libcurl may use in a transfer that it follows to in a
+redirect when \fICURLOPT_FOLLOWLOCATION(3)\fP is enabled. This allows you to
+limit specific transfers to only be allowed to use a subset of protocols in
+redirections. By default libcurl will allow all protocols except for FILE and
+SCP.
+
+These are the available protocol defines:
+.nf
+CURLPROTO_DICT
+CURLPROTO_FILE
+CURLPROTO_FTP
+CURLPROTO_FTPS
+CURLPROTO_GOPHER
+CURLPROTO_HTTP
+CURLPROTO_HTTPS
+CURLPROTO_IMAP
+CURLPROTO_IMAPS
+CURLPROTO_LDAP
+CURLPROTO_LDAPS
+CURLPROTO_POP3
+CURLPROTO_POP3S
+CURLPROTO_RTMP
+CURLPROTO_RTMPE
+CURLPROTO_RTMPS
+CURLPROTO_RTMPT
+CURLPROTO_RTMPTE
+CURLPROTO_RTMPTS
+CURLPROTO_RTSP
+CURLPROTO_SCP
+CURLPROTO_SFTP
+CURLPROTO_SMB
+CURLPROTO_SMTP
+CURLPROTO_SMTPS
+CURLPROTO_TELNET
+CURLPROTO_TFTP
+.fi
+.SH DEFAULT
+All protocols except for FILE, SCP and SMB.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+.nf
+curl = curl_easy_init();
+if(curl) {
+  /* pass in the URL from an external source */
+  curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
+
+  /* only allow redirects to HTTP and HTTPS URLs */
+  curl_easy_setopt(curl, CURLOPT_REDIR_PROTOCOLS,
+                   CURLPROTO_HTTP | CURLPROTO_HTTPS);
+
+  /* Perform the request */
+  curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.19.4, before then it would follow all protocols.
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_PROTOCOLS "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.html b/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.html
new file mode 100644 (file)
index 0000000..58f8e28
--- /dev/null
@@ -0,0 +1,104 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_REDIR_PROTOCOLS man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_REDIR_PROTOCOLS - set protocols allowed to redirect to <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REDIR_PROTOCOLS, long bitmask); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long that holds a bitmask of CURLPROTO_* defines. If used, this bitmask limits what protocols libcurl may use in a transfer that it follows to in a redirect when <a Class="emphasis" href="./CURLOPT_FOLLOWLOCATION.html">CURLOPT_FOLLOWLOCATION</a> is enabled. This allows you to limit specific transfers to only be allowed to use a subset of protocols in redirections. By default libcurl will allow all protocols except for FILE and SCP. 
+<p class="level0">These are the available protocol defines: <pre>
+<p class="level0">CURLPROTO_DICT
+ CURLPROTO_FILE
+ CURLPROTO_FTP
+ CURLPROTO_FTPS
+ CURLPROTO_GOPHER
+ CURLPROTO_HTTP
+ CURLPROTO_HTTPS
+ CURLPROTO_IMAP
+ CURLPROTO_IMAPS
+ CURLPROTO_LDAP
+ CURLPROTO_LDAPS
+ CURLPROTO_POP3
+ CURLPROTO_POP3S
+ CURLPROTO_RTMP
+ CURLPROTO_RTMPE
+ CURLPROTO_RTMPS
+ CURLPROTO_RTMPT
+ CURLPROTO_RTMPTE
+ CURLPROTO_RTMPTS
+ CURLPROTO_RTSP
+ CURLPROTO_SCP
+ CURLPROTO_SFTP
+ CURLPROTO_SMB
+ CURLPROTO_SMTP
+ CURLPROTO_SMTPS
+ CURLPROTO_TELNET
+ CURLPROTO_TFTP
+ </pre>
+
+<p class="level0"><a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">All protocols except for FILE, SCP and SMB. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre>
+<p class="level0">curl = curl_easy_init();
+ if(curl) {
+ &nbsp; /* pass in the URL from an external source */
+ &nbsp; curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
+ <p class="level0">&nbsp; /* only allow redirects to HTTP and HTTPS URLs */
+ &nbsp; curl_easy_setopt(curl, CURLOPT_REDIR_PROTOCOLS,
+ &nbsp;                  CURLPROTO_HTTP | CURLPROTO_HTTPS);
+ <p class="level0">&nbsp; /* Perform the request */
+ &nbsp; curl_easy_perform(curl);
+ }
+ </pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.19.4, before then it would follow all protocols. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_PROTOCOLS.html">CURLOPT_PROTOCOLS</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.pdf b/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.pdf
new file mode 100644 (file)
index 0000000..f5e3527
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_REFERER.3 b/docs/libcurl/opts/CURLOPT_REFERER.3
new file mode 100644 (file)
index 0000000..d00019b
--- /dev/null
@@ -0,0 +1,47 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_REFERER 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_REFERER \- set the HTTP referer header
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REFERER, char *where);
+.SH DESCRIPTION
+Pass a pointer to a zero terminated string as parameter. It will be used to
+set the Referer: header in the http request sent to the remote server. This
+can be used to fool servers or scripts. You can also set any custom header
+with \fICURLOPT_HTTPHEADER(3)\fP.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+HTTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+If built with HTTP support
+.SH RETURN VALUE
+Returns CURLE_OK if HTTP support is enabled, CURLE_UNKNOWN_OPTION if not, or
+CURLE_OUT_OF_MEMORY if there was insufficient heap space.
+.SH "SEE ALSO"
+.BR CURLOPT_USERAGENT "(3), " CURLOPT_HTTPHEADER "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_REFERER.html b/docs/libcurl/opts/CURLOPT_REFERER.html
new file mode 100644 (file)
index 0000000..d9dcbc6
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_REFERER man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_REFERER - set the HTTP referer header <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REFERER, char *where); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to a zero terminated string as parameter. It will be used to set the Referer: header in the http request sent to the remote server. This can be used to fool servers or scripts. You can also set any custom header with <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">If built with HTTP support <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if HTTP support is enabled, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_USERAGENT.html">CURLOPT_USERAGENT</a>, <a Class="manpage" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_REFERER.pdf b/docs/libcurl/opts/CURLOPT_REFERER.pdf
new file mode 100644 (file)
index 0000000..c898926
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_REFERER.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_RESOLVE.3 b/docs/libcurl/opts/CURLOPT_RESOLVE.3
new file mode 100644 (file)
index 0000000..06a393a
--- /dev/null
@@ -0,0 +1,82 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.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 <curl/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.
+
+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 to set with
+\fICURL_RESOLVE\fP will not time-out from the DNS cache like ordinary
+entries.
+
+You can 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.
+.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");
+  res = curl_easy_perform(curl);
+
+  /* always cleanup */
+  curl_easy_cleanup(curl);
+}
+
+curl_slist_free_all(host);
+.fi
+.SH AVAILABILITY
+Added in 7.21.3
+.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), "
diff --git a/docs/libcurl/opts/CURLOPT_RESOLVE.html b/docs/libcurl/opts/CURLOPT_RESOLVE.html
new file mode 100644 (file)
index 0000000..f3bd342
--- /dev/null
@@ -0,0 +1,82 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_RESOLVE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_RESOLVE - provide custom host name to IP address resolves <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RESOLVE,
+ &nbsp;                         struct curl_slist *hosts);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">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 <span Class="bold">struct curl_slist</span> structs properly filled in. Use <span Class="emphasis">curl_slist_append(3)</span> to create the list and <span Class="emphasis">curl_slist_free_all(3)</span> to clean up an entire list. 
+<p class="level0">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. 
+<p class="level0">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 to set with <span Class="emphasis">CURL_RESOLVE</span> will not time-out from the DNS cache like ordinary entries. 
+<p class="level0">You can 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. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre>
+<p class="level0">CURL *curl;
+ struct curl_slist *host = NULL;
+ host = curl_slist_append(NULL, "example.com:80:127.0.0.1");
+ <p class="level0">curl = curl_easy_init();
+ if(curl) {
+ &nbsp; curl_easy_setopt(curl, CURLOPT_RESOLVE, host);
+ &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+ &nbsp; res = curl_easy_perform(curl);
+ <p class="level0">&nbsp; /* always cleanup */
+ &nbsp; curl_easy_cleanup(curl);
+ }
+ <p class="level0">curl_slist_free_all(host);
+ </pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.21.3 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_IPRESOLVE.html">CURLOPT_IPRESOLVE</a>, <a Class="manpage" href="./CURLOPT_DNS_CACHE_TIMEOUT.html">CURLOPT_DNS_CACHE_TIMEOUT</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_RESOLVE.pdf b/docs/libcurl/opts/CURLOPT_RESOLVE.pdf
new file mode 100644 (file)
index 0000000..ee832c9
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_RESOLVE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_RESUME_FROM.3 b/docs/libcurl/opts/CURLOPT_RESUME_FROM.3
new file mode 100644 (file)
index 0000000..c25c646
--- /dev/null
@@ -0,0 +1,72 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_RESUME_FROM 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_RESUME_FROM \- set a point to resume transfer from
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RESUME_FROM, long from);
+.SH DESCRIPTION
+Pass a long as parameter. It contains the offset in number of bytes that you
+want the transfer to start from. Set this option to 0 to make the transfer
+start from the beginning (effectively disabling resume). For FTP, set this
+option to -1 to make the transfer start from the end of the target file
+(useful to continue an interrupted upload).
+
+When doing uploads with FTP, the resume position is where in the local/source
+file libcurl should try to resume the upload from and it will then append the
+source file to the remote target file.
+
+If you need to resume a transfer beyond the 2GB limit, use
+\fICURLOPT_RESUME_FROM_LARGE(3)\fP instead.
+.SH DEFAULT
+0, not used
+.SH PROTOCOLS
+HTTP, FTP, SFTP, FILE
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com");
+
+  /* resume upload at byte index 200 */
+  curl_easy_setopt(curl, CURLOPT_RESUME_FROM, 200L);
+
+  /* ask for upload */
+  curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
+
+  /* set total data amount to expect */
+  curl_easy_setopt(curl, CURLOPT_INFILESIZE, size_of_file);
+
+  /* Perform the request */
+  curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_RESUME_FROM_LARGE "(3), " CURLOPT_RANGE "(3), "
+.BR CURLOPT_INFILESIZE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_RESUME_FROM.html b/docs/libcurl/opts/CURLOPT_RESUME_FROM.html
new file mode 100644 (file)
index 0000000..223d95a
--- /dev/null
@@ -0,0 +1,77 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_RESUME_FROM man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_RESUME_FROM - set a point to resume transfer from <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RESUME_FROM, long from); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long as parameter. It contains the offset in number of bytes that you want the transfer to start from. Set this option to 0 to make the transfer start from the beginning (effectively disabling resume). For FTP, set this option to -1 to make the transfer start from the end of the target file (useful to continue an interrupted upload). 
+<p class="level0">When doing uploads with FTP, the resume position is where in the local/source file libcurl should try to resume the upload from and it will then append the source file to the remote target file. 
+<p class="level0">If you need to resume a transfer beyond the 2GB limit, use <a Class="emphasis" href="./CURLOPT_RESUME_FROM_LARGE.html">CURLOPT_RESUME_FROM_LARGE</a> instead. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0, not used <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP, FTP, SFTP, FILE <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre>
+<p class="level0">CURL *curl = curl_easy_init();
+ if(curl) {
+ &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="ftp://example.com">ftp://example.com</a>");
+ <p class="level0">&nbsp; /* resume upload at byte index 200 */
+ &nbsp; curl_easy_setopt(curl, CURLOPT_RESUME_FROM, 200L);
+ <p class="level0">&nbsp; /* ask for upload */
+ &nbsp; curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
+ <p class="level0">&nbsp; /* set total data amount to expect */
+ &nbsp; curl_easy_setopt(curl, CURLOPT_INFILESIZE, size_of_file);
+ <p class="level0">&nbsp; /* Perform the request */
+ &nbsp; curl_easy_perform(curl);
+ }
+ </pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_RESUME_FROM_LARGE.html">CURLOPT_RESUME_FROM_LARGE</a>, <a Class="manpage" href="./CURLOPT_RANGE.html">CURLOPT_RANGE</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_INFILESIZE.html">CURLOPT_INFILESIZE</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_RESUME_FROM.pdf b/docs/libcurl/opts/CURLOPT_RESUME_FROM.pdf
new file mode 100644 (file)
index 0000000..2cae610
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_RESUME_FROM.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3 b/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3
new file mode 100644 (file)
index 0000000..bcb30af
--- /dev/null
@@ -0,0 +1,74 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_RESUME_FROM_LARGE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_RESUME_FROM_LARGE \- set a point to resume transfer from
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RESUME_FROM_LARGE,
+                          curl_off_t from);
+.SH DESCRIPTION
+Pass a curl_off_t as parameter. It contains the offset in number of bytes that
+you want the transfer to start from. Set this option to 0 to make the transfer
+start from the beginning (effectively disabling resume). For FTP, set this
+option to -1 to make the transfer start from the end of the target file
+(useful to continue an interrupted upload).
+
+When doing uploads with FTP, the resume position is where in the local/source
+file libcurl should try to resume the upload from and it will then append the
+source file to the remote target file.
+.SH DEFAULT
+0, not used
+.SH PROTOCOLS
+HTTP, FTP, SFTP, FILE
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  curl_off_t resume_position = GET_IT_SOMEHOW;
+  curl_off_t file_size = GET_IT_SOMEHOW_AS_WELL;
+
+  curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com");
+
+  /* resuming upload at this position, possibly beyond 2GB */
+  curl_easy_setopt(curl, CURLOPT_RESUME_FROM_LARGE, resume_position);
+
+  /* ask for upload */
+  curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
+
+  /* set total data amount to expect */
+  curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, file_size);
+
+  /* Perform the request */
+  curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.11.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_RESUME_FROM "(3), " CURLOPT_RANGE "(3), "
+.BR CURLOPT_INFILESIZE_LARGE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.html b/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.html
new file mode 100644 (file)
index 0000000..122520b
--- /dev/null
@@ -0,0 +1,82 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_RESUME_FROM_LARGE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_RESUME_FROM_LARGE - set a point to resume transfer from <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RESUME_FROM_LARGE,
+ &nbsp;                         curl_off_t from);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a curl_off_t as parameter. It contains the offset in number of bytes that you want the transfer to start from. Set this option to 0 to make the transfer start from the beginning (effectively disabling resume). For FTP, set this option to -1 to make the transfer start from the end of the target file (useful to continue an interrupted upload). 
+<p class="level0">When doing uploads with FTP, the resume position is where in the local/source file libcurl should try to resume the upload from and it will then append the source file to the remote target file. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0, not used <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP, FTP, SFTP, FILE <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre>
+<p class="level0">CURL *curl = curl_easy_init();
+ if(curl) {
+ &nbsp; curl_off_t resume_position = GET_IT_SOMEHOW;
+ &nbsp; curl_off_t file_size = GET_IT_SOMEHOW_AS_WELL;
+ <p class="level0">&nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="ftp://example.com">ftp://example.com</a>");
+ <p class="level0">&nbsp; /* resuming upload at this position, possibly beyond 2GB */
+ &nbsp; curl_easy_setopt(curl, CURLOPT_RESUME_FROM_LARGE, resume_position);
+ <p class="level0">&nbsp; /* ask for upload */
+ &nbsp; curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
+ <p class="level0">&nbsp; /* set total data amount to expect */
+ &nbsp; curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, file_size);
+ <p class="level0">&nbsp; /* Perform the request */
+ &nbsp; curl_easy_perform(curl);
+ }
+ </pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.11.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_RESUME_FROM.html">CURLOPT_RESUME_FROM</a>, <a Class="manpage" href="./CURLOPT_RANGE.html">CURLOPT_RANGE</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_INFILESIZE_LARGE.html">CURLOPT_INFILESIZE_LARGE</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.pdf b/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.pdf
new file mode 100644 (file)
index 0000000..2c7eb2d
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3 b/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3
new file mode 100644 (file)
index 0000000..c951016
--- /dev/null
@@ -0,0 +1,45 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_RTSP_CLIENT_CSEQ 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_RTSP_CLIENT_CSEQ \- set the RTSP client CSEQ number
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_CLIENT_CSEQ, long cseq);
+.SH DESCRIPTION
+Pass a long to set the the CSEQ number to issue for the next RTSP
+request. Useful if the application is resuming a previously broken
+connection. The CSEQ will increment from this new number henceforth.
+.SH DEFAULT
+0
+.SH PROTOCOLS
+RTSP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.20.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_RTSP_SERVER_CSEQ "(3), " CURLOPT_RTSP_REQUEST "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.html b/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.html
new file mode 100644 (file)
index 0000000..b1f53ca
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_RTSP_CLIENT_CSEQ man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_RTSP_CLIENT_CSEQ - set the RTSP client CSEQ number <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_CLIENT_CSEQ, long cseq); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long to set the the CSEQ number to issue for the next RTSP request. Useful if the application is resuming a previously broken connection. The CSEQ will increment from this new number henceforth. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">RTSP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.20.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_RTSP_SERVER_CSEQ.html">CURLOPT_RTSP_SERVER_CSEQ</a>, <a Class="manpage" href="./CURLOPT_RTSP_REQUEST.html">CURLOPT_RTSP_REQUEST</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.pdf b/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.pdf
new file mode 100644 (file)
index 0000000..3a6b033
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3 b/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3
new file mode 100644 (file)
index 0000000..9ab175d
--- /dev/null
@@ -0,0 +1,101 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_RTSP_REQUEST 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_RTSP_REQUEST \- specify RTSP request
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_REQUEST, long request);
+.SH DESCRIPTION
+Tell libcurl what kind of RTSP request to make. Pass one of the following RTSP
+enum values as a long in the \fIrequest\fP argument. Unless noted otherwise,
+commands require the Session ID to be initialized.
+.IP CURL_RTSPREQ_OPTIONS
+Used to retrieve the available methods of the server. The application is
+responsible for parsing and obeying the response. \fB(The session ID is not
+needed for this method.)\fP
+.IP CURL_RTSPREQ_DESCRIBE
+Used to get the low level description of a stream. The application should note
+what formats it understands in the \fI'Accept:'\fP header. Unless set
+manually, libcurl will automatically fill in \fI'Accept:
+application/sdp'\fP. Time-condition headers will be added to Describe requests
+if the \fICURLOPT_TIMECONDITION(3)\fP option is active. \fB(The session ID is
+not needed for this method)\fP
+.IP CURL_RTSPREQ_ANNOUNCE
+When sent by a client, this method changes the description of the session. For
+example, if a client is using the server to record a meeting, the client can
+use Announce to inform the server of all the meta-information about the
+session.  ANNOUNCE acts like a HTTP PUT or POST just like
+\fICURL_RTSPREQ_SET_PARAMETER\fP
+.IP CURL_RTSPREQ_SETUP
+Setup is used to initialize the transport layer for the session. The
+application must set the desired Transport options for a session by using the
+\fICURLOPT_RTSP_TRANSPORT(3)\fP option prior to calling setup. If no session
+ID is currently set with \fICURLOPT_RTSP_SESSION_ID(3)\fP, libcurl will
+extract and use the session ID in the response to this request. \fB(The
+session ID is not needed for this method).\fP
+.IP CURL_RTSPREQ_PLAY
+Send a Play command to the server. Use the \fICURLOPT_RANGE(3)\fP option to
+modify the playback time (e.g. 'npt=10-15').
+.IP CURL_RTSPREQ_PAUSE
+Send a Pause command to the server. Use the \fICURLOPT_RANGE(3)\fP option with
+a single value to indicate when the stream should be halted. (e.g. npt='25')
+.IP CURL_RTSPREQ_TEARDOWN
+This command terminates an RTSP session. Simply closing a connection does not
+terminate the RTSP session since it is valid to control an RTSP session over
+different connections.
+.IP CURL_RTSPREQ_GET_PARAMETER
+Retrieve a parameter from the server. By default, libcurl will automatically
+include a \fIContent-Type: text/parameters\fP header on all non-empty requests
+unless a custom one is set. GET_PARAMETER acts just like a HTTP PUT or POST
+(see \fICURL_RTSPREQ_SET_PARAMETER\fP).
+Applications wishing to send a heartbeat message (e.g. in the presence of a
+server-specified timeout) should send use an empty GET_PARAMETER request.
+.IP CURL_RTSPREQ_SET_PARAMETER
+Set a parameter on the server. By default, libcurl will automatically include
+a \fIContent-Type: text/parameters\fP header unless a custom one is set. The
+interaction with SET_PARAMETER is much like a HTTP PUT or POST. An application
+may either use \fICURLOPT_UPLOAD(3)\fP with \fICURLOPT_READDATA(3)\fP like a
+HTTP PUT, or it may use \fICURLOPT_POSTFIELDS(3)\fP like a HTTP POST. No
+chunked transfers are allowed, so the application must set the
+\fICURLOPT_INFILESIZE(3)\fP in the former and \fICURLOPT_POSTFIELDSIZE(3)\fP
+in the latter. Also, there is no use of multi-part POSTs within RTSP.
+.IP CURL_RTSPREQ_RECORD
+Used to tell the server to record a session. Use the \fICURLOPT_RANGE(3)\fP
+option to modify the record time.
+.IP CURL_RTSPREQ_RECEIVE
+This is a special request because it does not send any data to the server. The
+application may call this function in order to receive interleaved RTP
+data. It will return after processing one read buffer of data in order to give
+the application a chance to run.
+.SH DEFAULT
+.SH PROTOCOLS
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.20.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_RTSP_SESSION_ID "(3), " CURLOPT_RTSP_STREAM_URI "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.html b/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.html
new file mode 100644 (file)
index 0000000..87592b5
--- /dev/null
@@ -0,0 +1,82 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_RTSP_REQUEST man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_RTSP_REQUEST - specify RTSP request <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_REQUEST, long request); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Tell libcurl what kind of RTSP request to make. Pass one of the following RTSP enum values as a long in the <span Class="emphasis">request</span> argument. Unless noted otherwise, commands require the Session ID to be initialized. 
+<p class="level0"><a name="CURLRTSPREQOPTIONS"></a><span class="nroffip">CURL_RTSPREQ_OPTIONS</span> 
+<p class="level1">Used to retrieve the available methods of the server. The application is responsible for parsing and obeying the response. <span class="bold">(The session ID is not needed for this method.)</span> 
+<p class="level0"><a name="CURLRTSPREQDESCRIBE"></a><span class="nroffip">CURL_RTSPREQ_DESCRIBE</span> 
+<p class="level1">Used to get the low level description of a stream. The application should note what formats it understands in the <span Class="emphasis">'Accept:'</span> header. Unless set manually, libcurl will automatically fill in <span class="emphasis">'Accept: application/sdp'</span>. Time-condition headers will be added to Describe requests if the <a Class="emphasis" href="./CURLOPT_TIMECONDITION.html">CURLOPT_TIMECONDITION</a> option is active. <span class="bold">(The session ID is not needed for this method)</span> 
+<p class="level0"><a name="CURLRTSPREQANNOUNCE"></a><span class="nroffip">CURL_RTSPREQ_ANNOUNCE</span> 
+<p class="level1">When sent by a client, this method changes the description of the session. For example, if a client is using the server to record a meeting, the client can use Announce to inform the server of all the meta-information about the session.  ANNOUNCE acts like a HTTP PUT or POST just like <a class="emphasis" href="#CURLRTSPREQSETPARAMETER">CURL_RTSPREQ_SET_PARAMETER</a> 
+<p class="level0"><a name="CURLRTSPREQSETUP"></a><span class="nroffip">CURL_RTSPREQ_SETUP</span> 
+<p class="level1">Setup is used to initialize the transport layer for the session. The application must set the desired Transport options for a session by using the <a Class="emphasis" href="./CURLOPT_RTSP_TRANSPORT.html">CURLOPT_RTSP_TRANSPORT</a> option prior to calling setup. If no session ID is currently set with <a Class="emphasis" href="./CURLOPT_RTSP_SESSION_ID.html">CURLOPT_RTSP_SESSION_ID</a>, libcurl will extract and use the session ID in the response to this request. <span class="bold">(The session ID is not needed for this method).</span> 
+<p class="level0"><a name="CURLRTSPREQPLAY"></a><span class="nroffip">CURL_RTSPREQ_PLAY</span> 
+<p class="level1">Send a Play command to the server. Use the <a Class="emphasis" href="./CURLOPT_RANGE.html">CURLOPT_RANGE</a> option to modify the playback time (e.g. 'npt=10-15'). 
+<p class="level0"><a name="CURLRTSPREQPAUSE"></a><span class="nroffip">CURL_RTSPREQ_PAUSE</span> 
+<p class="level1">Send a Pause command to the server. Use the <a Class="emphasis" href="./CURLOPT_RANGE.html">CURLOPT_RANGE</a> option with a single value to indicate when the stream should be halted. (e.g. npt='25') 
+<p class="level0"><a name="CURLRTSPREQTEARDOWN"></a><span class="nroffip">CURL_RTSPREQ_TEARDOWN</span> 
+<p class="level1">This command terminates an RTSP session. Simply closing a connection does not terminate the RTSP session since it is valid to control an RTSP session over different connections. 
+<p class="level0"><a name="CURLRTSPREQGETPARAMETER"></a><span class="nroffip">CURL_RTSPREQ_GET_PARAMETER</span> 
+<p class="level1">Retrieve a parameter from the server. By default, libcurl will automatically include a <span Class="emphasis">Content-Type: text/parameters</span> header on all non-empty requests unless a custom one is set. GET_PARAMETER acts just like a HTTP PUT or POST (see <a class="emphasis" href="#CURLRTSPREQSETPARAMETER">CURL_RTSPREQ_SET_PARAMETER</a>). Applications wishing to send a heartbeat message (e.g. in the presence of a server-specified timeout) should send use an empty GET_PARAMETER request. 
+<p class="level0"><a name="CURLRTSPREQSETPARAMETER"></a><span class="nroffip">CURL_RTSPREQ_SET_PARAMETER</span> 
+<p class="level1">Set a parameter on the server. By default, libcurl will automatically include a <span Class="emphasis">Content-Type: text/parameters</span> header unless a custom one is set. The interaction with SET_PARAMETER is much like a HTTP PUT or POST. An application may either use <a Class="emphasis" href="./CURLOPT_UPLOAD.html">CURLOPT_UPLOAD</a> with <a Class="emphasis" href="./CURLOPT_READDATA.html">CURLOPT_READDATA</a> like a HTTP PUT, or it may use <a Class="emphasis" href="./CURLOPT_POSTFIELDS.html">CURLOPT_POSTFIELDS</a> like a HTTP POST. No chunked transfers are allowed, so the application must set the <a Class="emphasis" href="./CURLOPT_INFILESIZE.html">CURLOPT_INFILESIZE</a> in the former and <a Class="emphasis" href="./CURLOPT_POSTFIELDSIZE.html">CURLOPT_POSTFIELDSIZE</a> in the latter. Also, there is no use of multi-part POSTs within RTSP. 
+<p class="level0"><a name="CURLRTSPREQRECORD"></a><span class="nroffip">CURL_RTSPREQ_RECORD</span> 
+<p class="level1">Used to tell the server to record a session. Use the <a Class="emphasis" href="./CURLOPT_RANGE.html">CURLOPT_RANGE</a> option to modify the record time. 
+<p class="level0"><a name="CURLRTSPREQRECEIVE"></a><span class="nroffip">CURL_RTSPREQ_RECEIVE</span> 
+<p class="level1">This is a special request because it does not send any data to the server. The application may call this function in order to receive interleaved RTP data. It will return after processing one read buffer of data in order to give the application a chance to run. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0"><a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0"><a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.20.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_RTSP_SESSION_ID.html">CURLOPT_RTSP_SESSION_ID</a>, <a Class="manpage" href="./CURLOPT_RTSP_STREAM_URI.html">CURLOPT_RTSP_STREAM_URI</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.pdf b/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.pdf
new file mode 100644 (file)
index 0000000..baec9cb
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3 b/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3
new file mode 100644 (file)
index 0000000..9e7cf3a
--- /dev/null
@@ -0,0 +1,45 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_RTSP_SERVER_CSEQ 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_RTSP_SERVER_CSEQ \- set the RTSP server CSEQ number
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_SERVER_CSEQ, long cseq);
+.SH DESCRIPTION
+Pass a long to set the CSEQ number to expect for the next RTSP Server->Client
+request.  \fBNOTE\fP: this feature (listening for Server requests) is
+unimplemented.
+.SH DEFAULT
+0
+.SH PROTOCOLS
+RTSP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.20.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_RTSP_CLIENT_CSEQ "(3), " CURLOPT_RTSP_STREAM_URI "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.html b/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.html
new file mode 100644 (file)
index 0000000..e90ff59
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_RTSP_SERVER_CSEQ man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_RTSP_SERVER_CSEQ - set the RTSP server CSEQ number <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_SERVER_CSEQ, long cseq); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long to set the CSEQ number to expect for the next RTSP Server-&gt;Client request.  <span Class="bold">NOTE</span>: this feature (listening for Server requests) is unimplemented. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">RTSP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.20.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_RTSP_CLIENT_CSEQ.html">CURLOPT_RTSP_CLIENT_CSEQ</a>, <a Class="manpage" href="./CURLOPT_RTSP_STREAM_URI.html">CURLOPT_RTSP_STREAM_URI</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.pdf b/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.pdf
new file mode 100644 (file)
index 0000000..c64018d
--- /dev/null
@@ -0,0 +1,110 @@
+%PDF-1.4
+%Çì\8f¢
+5 0 obj
+<</Length 6 0 R/Filter /FlateDecode>>
+stream
+x\9c\85UmoÛ6\10þ®_A`_¤"fE\89/â:\14p]\rp«X®D§+âÁHm&Ñ`Ë\8e%oÝ\8fÚ\7fÜ\91\92¥ØN\11\18\88\10êx÷¼Ü\9d\9e\90\8f   òͯ}.7ÎÛL \87ÊñÑ\83óä\10û\12µ\8få\ 6}P\10\10\99\ 3uï4w\b\12\ 1\12\91Djãܺ£Y\96¤SµÈ<&±\94\81pU>]äqæý©>9\92c
+·ÔÊ    B\1c\ fܸ\89³Å(\8f¿ÌÝpî¡åa¿^è»êßE¥ëí®ö\ 6\ 1ó±ï\v\17þ)¶e\85ú
+&cÀ%æ¤ÉyÛÕ\8aÌ\15\19\9dæ¶ñ\ 3\1f\a\ 4°.\81\8a\ 4*X2Ãf\10r\8e}\82ài2¹\93¡§þ\ 2\1d \8e0ÌdØTp¯csÞ«\10ø\98ú\ 2\rH`^û\r£\9fk`q\89°Ã\85þC@\13Õ\8f\1ae\1e÷M\1c\1cìÿö ¨O(wõ\1eÙ¸ò°ù®÷\96Á9n(ÎqdÑåß&é4\1fç§\18m\88ÅçþR\94Ëõa¥ÑoFç·æ\ f~|oÂ\ 3\8aTâ¨7\rúå\16bέ\98ÛWèÍã]¹Zë«gF4È_dx\85ÖÛò\ 1-+ý4÷Þ½Fàc\9c\8f²ñT\8dÓ\89\ 1\ 5f\11Öxõ\ 2\99é]ç\91Ä\11k\1c\ 2?\18kl¨*t×T¯·\9dÌÏÔ4ÇÚ#\14Ë\88Q÷ÇN/kt¿ÝÛ°R[\v\f\93\1f5:1\12åÆ Û{\82bÑÖ\ 5§\f\1a\81\19\87Àölð~´.tY£½~:èªÆ\8d1²å"BèE?86ï$õ(\b\197¹A\9f\81À2\94Q\9bû׺c\1faFhÔ\ e\96ûXTè^ß\r¬\80Ô'8
+ÙY\83Ö\87½Fsw]Tµ.\v\10ÈÐÎ\8f}gH\83:-æ
+\86\122\1eÊb³[ë\r°Ñ+üº\8f¿·þ1\1a\19\880'\92ÐvNÝá̾%¦V;b\ 1\ fEû6Q\1d³\9e¼i\ 5!DH;ûý^Ì\171L³\16\ 2\r-\ 40:à¢U{\10`\9f\86\9b*\94v\ 5a- \9f\1f§}\94&y\9b\84\9fÁ!X\ 2\98\1e\83&\ 1&\91\7fä\9aO/qÒ¨\89èÁÆ\7f\f¯§I|lúè§M¯z¬$4ÓÑTù\98\8a²(º\nT\9aÈ®\9a\11\9eZîÃ\eÔ/:ð\883rìÝq2ü0NÆêÛé2\ 1«B
+5\9e7\94;\­ô
+\15%\12\18\92¼bÌ­\9bÅj\96\8dGB\18>NÜa2\8bÛ\96º¤\fñ\1a\1a¶Ýüñ"ý\8c\8a{;¤Í\17ÁtguØí¶{èÌ+\ 4Ë©\r\9cM>ÃH\85Ìý:Y¤v§\98\8bå¶~µ}ó8FÃ$OOÇõ9¤~÷\85°\19"Jì\ 2\1c%ãx¢ìÞ;£C\18Åü(­ý\1a]\9d&\87Ú\9c÷»à,?ì'»`U\16\ f¯\17³l|\91\1e\9a\86\1f\84L`
+c\a{\80aÞ¤^\17ßÍf\a¯B\ 1^\r\bc\92bæÂWñÓ¡D\ 1|wlvÚ\8d\ 11¹bå|\81ßÿߨ\ 2uendstream
+endobj
+6 0 obj
+962
+endobj
+4 0 obj
+<</Type/Page/MediaBox [0 0 595 842]
+/Rotate 0/Parent 3 0 R
+/Resources<</ProcSet[/PDF /Text]
+/ExtGState 10 0 R
+/Font 11 0 R
+>>
+/Contents 5 0 R
+>>
+endobj
+3 0 obj
+<< /Type /Pages /Kids [
+4 0 R
+] /Count 1
+>>
+endobj
+1 0 obj
+<</Type /Catalog /Pages 3 0 R
+/Metadata 13 0 R
+>>
+endobj
+7 0 obj
+<</Type/ExtGState
+/OPM 1>>endobj
+10 0 obj
+<</R7
+7 0 R>>
+endobj
+11 0 obj
+<</R9
+9 0 R/R8
+8 0 R>>
+endobj
+9 0 obj
+<</BaseFont/Times-Bold/Type/Font
+/Subtype/Type1>>
+endobj
+8 0 obj
+<</BaseFont/Times-Roman/Type/Font
+/Encoding 12 0 R/Subtype/Type1>>
+endobj
+12 0 obj
+<</Type/Encoding/Differences[
+173/minus]>>
+endobj
+13 0 obj
+<</Type/Metadata
+/Subtype/XML/Length 1346>>stream
+<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
+<?adobe-xap-filters esc="CRLF"?>
+<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
+<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
+<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-e6e9a23d587a' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.06'/>
+<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-e6e9a23d587a' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-01-08T09:18:05+01:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-01-08T09:18:05+01:00</xmp:CreateDate>
+<xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
+<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-e6e9a23d587a' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:6bff3b4a-cf2b-11ef-0000-e6e9a23d587a'/>
+<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-e6e9a23d587a' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+</rdf:RDF>
+</x:xmpmeta>
+                                                                        
+                                                                        
+<?xpacket end='w'?>
+endstream
+endobj
+2 0 obj
+<</Producer(GPL Ghostscript 9.06)
+/CreationDate(D:20150108091805+01'00')
+/ModDate(D:20150108091805+01'00')
+/Creator(groff version 1.22.3)>>endobj
+xref
+0 14
+0000000000 65535 f 
+0000001285 00000 n 
+0000003089 00000 n 
+0000001226 00000 n 
+0000001066 00000 n 
+0000000015 00000 n 
+0000001047 00000 n 
+0000001350 00000 n 
+0000001525 00000 n 
+0000001460 00000 n 
+0000001391 00000 n 
+0000001421 00000 n 
+0000001607 00000 n 
+0000001666 00000 n 
+trailer
+<< /Size 14 /Root 1 0 R /Info 2 0 R
+/ID [<A4FA71C88590FFAE0FC8708BF479E6D2><A4FA71C88590FFAE0FC8708BF479E6D2>]
+>>
+startxref
+3243
+%%EOF
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3 b/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3
new file mode 100644 (file)
index 0000000..ec3d387
--- /dev/null
@@ -0,0 +1,49 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_RTSP_SESSION_ID 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_RTSP_SESSION_ID \- set RTSP session ID
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_SESSION_ID, char *id);
+.SH DESCRIPTION
+Pass a char * as a parameter to set the value of the current RTSP Session ID
+for the handle. Useful for resuming an in-progress session. Once this value is
+set to any non-NULL value, libcurl will return \fICURLE_RTSP_SESSION_ERROR\fP
+if ID received from the server does not match. If unset (or set to NULL),
+libcurl will automatically set the ID the first time the server sets it in a
+response.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+RTSP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.20.0
+.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 CURLOPT_RTSP_REQUEST "(3), " CURLOPT_RTSP_STREAM_URI "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.html b/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.html
new file mode 100644 (file)
index 0000000..d3cf458
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_RTSP_SESSION_ID man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_RTSP_SESSION_ID - set RTSP session ID <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_SESSION_ID, char *id); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * as a parameter to set the value of the current RTSP Session ID for the handle. Useful for resuming an in-progress session. Once this value is set to any non-NULL value, libcurl will return <span Class="emphasis">CURLE_RTSP_SESSION_ERROR</span> if ID received from the server does not match. If unset (or set to NULL), libcurl will automatically set the ID the first time the server sets it in a response. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">RTSP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.20.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_RTSP_REQUEST.html">CURLOPT_RTSP_REQUEST</a>, <a Class="manpage" href="./CURLOPT_RTSP_STREAM_URI.html">CURLOPT_RTSP_STREAM_URI</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.pdf b/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.pdf
new file mode 100644 (file)
index 0000000..3b58f7c
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3 b/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3
new file mode 100644 (file)
index 0000000..6a10ea0
--- /dev/null
@@ -0,0 +1,53 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_RTSP_STREAM_URI 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_RTSP_STREAM_URI \- set RTSP stream URI
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_STREAM_URI, char *URI);
+.SH DESCRIPTION
+Set the stream \fIURI\fP to operate on by passing a char * . For example, a
+single session may be controlling \fIrtsp://foo/twister/audio\fP and
+\fIrtsp://foo/twister/video\fP and the application can switch to the
+appropriate stream using this option. If unset, libcurl will default to
+operating on generic server options by passing '*' in the place of the RTSP
+Stream URI. This option is distinct from \fICURLOPT_URL(3)\fP. When working
+with RTSP, the \fICURLOPT_STREAM_URI(3)\fP indicates what URL to send to the
+server in the request header while the \fICURLOPT_URL(3)\fP indicates where to
+make the connection to.  (e.g. the \fICURLOPT_URL(3)\fP for the above examples
+might be set to \fIrtsp://foo/twister\fP
+.SH DEFAULT
+'*'
+.SH PROTOCOLS
+RTSP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.20.0
+.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 CURLOPT_RTSP_REQUEST "(3), " CURLOPT_RTSP_TRANSPORT "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.html b/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.html
new file mode 100644 (file)
index 0000000..c35879b
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_RTSP_STREAM_URI man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_RTSP_STREAM_URI - set RTSP stream URI <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_STREAM_URI, char *URI); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Set the stream <span Class="emphasis">URI</span> to operate on by passing a char * . For example, a single session may be controlling <span Class="emphasis">rtsp://foo/twister/audio</span> and <span Class="emphasis">rtsp://foo/twister/video</span> and the application can switch to the appropriate stream using this option. If unset, libcurl will default to operating on generic server options by passing '*' in the place of the RTSP Stream URI. This option is distinct from <a Class="emphasis" href="./CURLOPT_URL.html">CURLOPT_URL</a>. When working with RTSP, the <span Class="emphasis">CURLOPT_STREAM_URI(3)</span> indicates what URL to send to the server in the request header while the <a Class="emphasis" href="./CURLOPT_URL.html">CURLOPT_URL</a> indicates where to make the connection to.  (e.g. the <a Class="emphasis" href="./CURLOPT_URL.html">CURLOPT_URL</a> for the above examples might be set to <span Class="emphasis">rtsp://foo/twister</span> <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">'*' <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">RTSP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.20.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_RTSP_REQUEST.html">CURLOPT_RTSP_REQUEST</a>, <a Class="manpage" href="./CURLOPT_RTSP_TRANSPORT.html">CURLOPT_RTSP_TRANSPORT</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.pdf b/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.pdf
new file mode 100644 (file)
index 0000000..79bbdc9
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3 b/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3
new file mode 100644 (file)
index 0000000..4d0a4c0
--- /dev/null
@@ -0,0 +1,49 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_RTSP_TRANSPORT 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_RTSP_TRANSPORT \- set RTSP Transport: header
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_TRANSPORT,
+                          char *transport);
+.SH DESCRIPTION
+Pass a char * to tell libcurl what to pass for the Transport: header for this
+RTSP session. This is mainly a convenience method to avoid needing to set a
+custom Transport: header for every SETUP request. The application must set a
+Transport: header before issuing a SETUP request.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+RTSP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.20.0
+.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 CURLOPT_RTSP_REQUEST "(3), " CURLOPT_RTSP_SESSION_ID "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.html b/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.html
new file mode 100644 (file)
index 0000000..f79c01f
--- /dev/null
@@ -0,0 +1,64 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_RTSP_TRANSPORT man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_RTSP_TRANSPORT - set RTSP Transport: header <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_TRANSPORT,
+ &nbsp;                         char *transport);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * to tell libcurl what to pass for the Transport: header for this RTSP session. This is mainly a convenience method to avoid needing to set a custom Transport: header for every SETUP request. The application must set a Transport: header before issuing a SETUP request. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">RTSP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.20.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_RTSP_REQUEST.html">CURLOPT_RTSP_REQUEST</a>, <a Class="manpage" href="./CURLOPT_RTSP_SESSION_ID.html">CURLOPT_RTSP_SESSION_ID</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.pdf b/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.pdf
new file mode 100644 (file)
index 0000000..d05ea24
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_SASL_IR.3 b/docs/libcurl/opts/CURLOPT_SASL_IR.3
new file mode 100644 (file)
index 0000000..7714217
--- /dev/null
@@ -0,0 +1,56 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SASL_IR 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SASL_IR \- enable sending initial response in first packet
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SASL_IR, long enable);
+.SH DESCRIPTION
+Pass a long. If the value is 1, curl will send the initial response to the
+server in the first authentication packet in order to reduce the number of
+ping pong requests. Only applicable to the following supporting SASL
+authentication mechanisms:
+
+* Login
+* Plain
+* GSSAPI
+* NTLM
+* OAuth 2.0
+
+Note: Whilst IMAP supports this option there is no need to explicitly set it,
+as libcurl can determine the feature itself when the server supports the
+SASL-IR CAPABILITY.
+.SH DEFAULT
+0
+.SH PROTOCOLS
+IMAP, POP3 and SMTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.31.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_MAIL_AUTH "(3), " CURLOPT_MAIL_FROM "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SASL_IR.html b/docs/libcurl/opts/CURLOPT_SASL_IR.html
new file mode 100644 (file)
index 0000000..a703b49
--- /dev/null
@@ -0,0 +1,62 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SASL_IR man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SASL_IR - enable sending initial response in first packet <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SASL_IR, long enable); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long. If the value is 1, curl will send the initial response to the server in the first authentication packet in order to reduce the number of ping pong requests. Only applicable to the following supporting SASL authentication mechanisms: 
+<p class="level0">* Login * Plain * GSSAPI * NTLM * OAuth 2.0 
+<p class="level0">Note: Whilst IMAP supports this option there is no need to explicitly set it, as libcurl can determine the feature itself when the server supports the SASL-IR CAPABILITY. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">IMAP, POP3 and SMTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.31.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_MAIL_AUTH.html">CURLOPT_MAIL_AUTH</a>, <a Class="manpage" href="./CURLOPT_MAIL_FROM.html">CURLOPT_MAIL_FROM</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SASL_IR.pdf b/docs/libcurl/opts/CURLOPT_SASL_IR.pdf
new file mode 100644 (file)
index 0000000..841d3a9
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_SASL_IR.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_SEEKDATA.3 b/docs/libcurl/opts/CURLOPT_SEEKDATA.3
new file mode 100644 (file)
index 0000000..830f099
--- /dev/null
@@ -0,0 +1,43 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SEEKDATA 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SEEKDATA \- custom pointer passed to the seek callback
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SEEKDATA, void *pointer);
+.SH DESCRIPTION
+Data \fIpointer\fP to pass to the seek callback function. If you use the
+\fICURLOPT_SEEKFUNCTION(3)\fP option, this is the pointer you'll get as
+input.
+.SH DEFAULT
+If you don't set this, NULL is passed to the callback.
+.SH PROTOCOLS
+HTTP, FTP, SFTP
+.SH EXAMPLE
+.SH AVAILABILITY
+Added in 7.18.0
+.SH RETURN VALUE
+.SH "SEE ALSO"
+.BR CURLOPT_STDERR "(3), " CURLOPT_DEBUGFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SEEKDATA.html b/docs/libcurl/opts/CURLOPT_SEEKDATA.html
new file mode 100644 (file)
index 0000000..bd688d1
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SEEKDATA man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SEEKDATA - custom pointer passed to the seek callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SEEKDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Data <span Class="emphasis">pointer</span> to pass to the seek callback function. If you use the <a Class="emphasis" href="./CURLOPT_SEEKFUNCTION.html">CURLOPT_SEEKFUNCTION</a> option, this is the pointer you'll get as input. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">If you don't set this, NULL is passed to the callback. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP, FTP, SFTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.18.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0"><a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_STDERR.html">CURLOPT_STDERR</a>, <a Class="manpage" href="./CURLOPT_DEBUGFUNCTION.html">CURLOPT_DEBUGFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SEEKDATA.pdf b/docs/libcurl/opts/CURLOPT_SEEKDATA.pdf
new file mode 100644 (file)
index 0000000..9cbfdea
--- /dev/null
@@ -0,0 +1,112 @@
+%PDF-1.4
+%Çì\8f¢
+5 0 obj
+<</Length 6 0 R/Filter /FlateDecode>>
+stream
+x\9c\8dUkoÚX\10ýî_1R?ÄTøæ¾ü¸ÚÕJ$8-­\v¬¹T[%«\88\1a'aKpZ\9b®ú£ö?î\¿M\1a©\ 2\81ð\9d;3çÌ9ÃW \84\ 15¯ú;y´Îc\1fîs\8b½õÕbå!Ô_É#\h\f\bÌ\ 3}gUw\18ø\1c|%H @?Zöå:\8e\16K}»
+Ã÷Ó\91þÇr\18a\ftb\ 5\9c\88\80\9a[zk\9er|ú¯eO4LL\1c51, .£¼\8añ\14\11¾\89¹¶olq3\82äøm\7f\9b\1f·yZdOÅÈáR\11\15\b\e\7fì²C\ eÃê\7fëw]y!<¢ä¯W¯j\96\b(F+\13p\1e+\ 4O\94kð;Òõ\88\90à\b¯\8c\9f÷\12¹ÄU¢Îó!4Ï;Þ8%\92úà0^\1eÿ"am§\9c¸æ\903B»^ÿKºÚ\18ÐÞ¢%Èc^d\8fð\94í\ e\r\9e6y\9en¡È xH!OÓ/\90löûÏ\9bäKÕh\1f#s\19Q¦Y\8f\ 4e¥Õ§ùb¹\9a­\86\98\90\82\ 6Ï«Ý!Ù\1f·)ünÆun>ÈÃ\1f\12tT\ 1N2\f8\1dçMy\ 4¯\1f6\87í>\1d\9f\fó¬#\86\9b\17&Yó3\9cåø{Ë\8fj®VÜd»-¼®©¹\19ýö\9c\ 1!ʲ\1d\ 3Ópu\19Ï\96\98¿HÂtSlªCF\9b±#\91¼ÑD]ðä>F\bÞtG\ÉË\ eqPfd?\1d\18Ü\1d\ f\89\91>\81Ù\1düÈ\8epÌS\13ö¬8Ò¢\1a6úÄ^­ç\97\ 6J«ö\9eÁ\85Od{©²Ø¸T¨¤Âx©FK+\8f\16\ f»\1cðm\9a\86\1d\9d\8d\18µ÷{¸O\vØ`ÀáéX\90Ò\9a'<{\ 3\8e¯jç¹2(G\8eqL¶^X×F¡h¤ÊoÜÃ]Q\9d\1dv\a\ 6S1ß÷EÛµ]\13¶Í\ eg=ÝHI\82N7EÞÓ\róTË\ 6\821xÇ0_G\91A=tU3\1fò\O\81ÙX´/¨e\c\95¢ÄÊ$¢ñëJ\ e'ÔU¥\10\16\1a\16m;\\10\9fz\8d\9e.\17Ñ\89#\1dã[!;¸oµ^ö÷\anì@\ 5\8d?®ºý\81\9c{-\ 1\83;ãñê\85;WÕ¥!lÅ\88ëSÑ\83\1dþ5ù°\8cÂz\92nPaçfG\98ÉÊÊÕ\1fÑÕg5dJ<\975UfÑäb\16Íô§\13Ѻ¸\931W_\9böd»ÅÙì\ eà\13Ü\vô'&ï\89ïÚ\8e\8eçðqÄ\84$Êcö$Z\87¥dm´\fL¢Õ\ 2{ª2\9c\18¿µ\96\9e\86q<lMI"Ýþ\9f˸k¤lÝ#^Ëâu\9bj\1a^\18\v­ß4V­ÍÓ"\96\9cxÁ³¼\ eG¥ù
+\1c)\14áUÊýî³YºH\ 3Z\9b\8ep»»Ø\94k3\ fÞ\1d\ fÀ)\93erÙ
+\8b\99T¡¶þÄ×ÿá¡÷Oendstream
+endobj
+6 0 obj
+905
+endobj
+4 0 obj
+<</Type/Page/MediaBox [0 0 595 842]
+/Rotate 0/Parent 3 0 R
+/Resources<</ProcSet[/PDF /Text]
+/ExtGState 11 0 R
+/Font 12 0 R
+>>
+/Contents 5 0 R
+>>
+endobj
+3 0 obj
+<< /Type /Pages /Kids [
+4 0 R
+] /Count 1
+>>
+endobj
+1 0 obj
+<</Type /Catalog /Pages 3 0 R
+/Metadata 14 0 R
+>>
+endobj
+7 0 obj
+<</Type/ExtGState
+/OPM 1>>endobj
+11 0 obj
+<</R7
+7 0 R>>
+endobj
+12 0 obj
+<</R10
+10 0 R/R9
+9 0 R/R8
+8 0 R>>
+endobj
+10 0 obj
+<</BaseFont/Times-Italic/Type/Font
+/Subtype/Type1>>
+endobj
+9 0 obj
+<</BaseFont/Times-Bold/Type/Font
+/Subtype/Type1>>
+endobj
+8 0 obj
+<</BaseFont/Times-Roman/Type/Font
+/Encoding 13 0 R/Subtype/Type1>>
+endobj
+13 0 obj
+<</Type/Encoding/Differences[
+173/minus]>>
+endobj
+14 0 obj
+<</Type/Metadata
+/Subtype/XML/Length 1346>>stream
+<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
+<?adobe-xap-filters esc="CRLF"?>
+<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
+<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
+<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-bfb7a2fb1104' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.06'/>
+<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-bfb7a2fb1104' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-01-08T09:18:06+01:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-01-08T09:18:06+01:00</xmp:CreateDate>
+<xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
+<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-bfb7a2fb1104' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:6bff3b4a-cf2b-11ef-0000-bfb7a2fb1104'/>
+<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-bfb7a2fb1104' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+</rdf:RDF>
+</x:xmpmeta>
+                                                                        
+                                                                        
+<?xpacket end='w'?>
+endstream
+endobj
+2 0 obj
+<</Producer(GPL Ghostscript 9.06)
+/CreationDate(D:20150108091806+01'00')
+/ModDate(D:20150108091806+01'00')
+/Creator(groff version 1.22.3)>>endobj
+xref
+0 15
+0000000000 65535 f 
+0000001228 00000 n 
+0000003111 00000 n 
+0000001169 00000 n 
+0000001009 00000 n 
+0000000015 00000 n 
+0000000990 00000 n 
+0000001293 00000 n 
+0000001547 00000 n 
+0000001482 00000 n 
+0000001414 00000 n 
+0000001334 00000 n 
+0000001364 00000 n 
+0000001629 00000 n 
+0000001688 00000 n 
+trailer
+<< /Size 15 /Root 1 0 R /Info 2 0 R
+/ID [<DEB12F4A5B8693AE24F75ABA0F65967E><DEB12F4A5B8693AE24F75ABA0F65967E>]
+>>
+startxref
+3265
+%%EOF
diff --git a/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3 b/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3
new file mode 100644 (file)
index 0000000..8747a17
--- /dev/null
@@ -0,0 +1,73 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SEEKFUNCTION 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SEEKFUNCTION \- user callback for seeking in input stream
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+/* These are the return codes for the seek callbacks */
+#define CURL_SEEKFUNC_OK       0
+#define CURL_SEEKFUNC_FAIL     1 /* fail the entire transfer */
+#define CURL_SEEKFUNC_CANTSEEK 2 /* tell libcurl seeking can't be done, so
+                                    libcurl might try other means instead */
+
+int seek_callback(void *userp, curl_off_t offset, int origin);
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SEEKFUNCTION, seek_callback);
+.SH DESCRIPTION
+Pass a pointer to your callback function, which should match the prototype
+shown above.
+
+This function gets called by libcurl to seek to a certain position in the
+input stream and can be used to fast forward a file in a resumed upload
+(instead of reading all uploaded bytes with the normal read
+function/callback). It is also called to rewind a stream when doing a HTTP PUT
+or POST with a multi-pass authentication method. The function shall work like
+fseek(3) or lseek(3) and it gets SEEK_SET, SEEK_CUR or SEEK_END as argument
+for \fIorigin\fP, although libcurl currently only passes SEEK_SET.
+
+\fIuserp\fP is the pointer you set with \fICURLOPT_SEEKDATA(3)\fP.
+
+The callback function must return \fICURL_SEEKFUNC_OK\fP on success,
+\fICURL_SEEKFUNC_FAIL\fP to cause the upload operation to fail or
+\fICURL_SEEKFUNC_CANTSEEK\fP to indicate that while the seek failed, libcurl
+is free to work around the problem if possible. The latter can sometimes be
+done by instead reading from the input or similar.
+
+If you forward the input arguments directly to fseek(3) or lseek(3), note that
+the data type for \fIoffset\fP is not the same as defined for curl_off_t on
+many systems!
+.SH DEFAULT
+By default, this is NULL and unused.
+.SH PROTOCOLS
+HTTP, FTP, SFTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.18.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_SEEKDATA "(3), " CURLOPT_IOCTLFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.html b/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.html
new file mode 100644 (file)
index 0000000..6010e49
--- /dev/null
@@ -0,0 +1,73 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SEEKFUNCTION man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SEEKFUNCTION - user callback for seeking in input stream <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">/* These are the return codes for the seek callbacks */
+ #define CURL_SEEKFUNC_OK       0
+ #define CURL_SEEKFUNC_FAIL     1 /* fail the entire transfer */
+ #define CURL_SEEKFUNC_CANTSEEK 2 /* tell libcurl seeking can't be done, so
+ &nbsp;                                   libcurl might try other means instead */
+ <p class="level0">int seek_callback(void *userp, curl_off_t offset, int origin);
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SEEKFUNCTION, seek_callback);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
+<p class="level0">This function gets called by libcurl to seek to a certain position in the input stream and can be used to fast forward a file in a resumed upload (instead of reading all uploaded bytes with the normal read function/callback). It is also called to rewind a stream when doing a HTTP PUT or POST with a multi-pass authentication method. The function shall work like fseek(3) or lseek(3) and it gets SEEK_SET, SEEK_CUR or SEEK_END as argument for <span Class="emphasis">origin</span>, although libcurl currently only passes SEEK_SET. 
+<p class="level0"><span Class="emphasis">userp</span> is the pointer you set with <a Class="emphasis" href="./CURLOPT_SEEKDATA.html">CURLOPT_SEEKDATA</a>. 
+<p class="level0">The callback function must return <span Class="emphasis">CURL_SEEKFUNC_OK</span> on success, <span Class="emphasis">CURL_SEEKFUNC_FAIL</span> to cause the upload operation to fail or <span Class="emphasis">CURL_SEEKFUNC_CANTSEEK</span> to indicate that while the seek failed, libcurl is free to work around the problem if possible. The latter can sometimes be done by instead reading from the input or similar. 
+<p class="level0">If you forward the input arguments directly to fseek(3) or lseek(3), note that the data type for <span Class="emphasis">offset</span> is not the same as defined for curl_off_t on many systems! <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">By default, this is NULL and unused. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP, FTP, SFTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.18.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SEEKDATA.html">CURLOPT_SEEKDATA</a>, <a Class="manpage" href="./CURLOPT_IOCTLFUNCTION.html">CURLOPT_IOCTLFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.pdf b/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.pdf
new file mode 100644 (file)
index 0000000..712417b
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_SHARE.3 b/docs/libcurl/opts/CURLOPT_SHARE.3
new file mode 100644 (file)
index 0000000..a483540
--- /dev/null
@@ -0,0 +1,59 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SHARE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SHARE \- specify share handle to use
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SHARE, CURLSH *share);
+.SH DESCRIPTION
+Pass a \fIshare\fP handle as a parameter. The share handle must have been
+created by a previous call to \fIcurl_share_init(3)\fP. Setting this option,
+will make this curl handle use the data from the shared handle instead of
+keeping the data to itself. This enables several curl handles to share
+data. If the curl handles are used simultaneously in multiple threads, you
+\fBMUST\fP use the locking methods in the share handle. See
+\fIcurl_share_setopt(3)\fP for details.
+
+If you add a share that is set to share cookies, your easy handle will use
+that cookie cache and get the cookie engine enabled. If you unshare an object
+that was using cookies (or change to another object that doesn't share
+cookies), the easy handle will get its cookie engine disabled.
+
+Data that the share object is not set to share will be dealt with the usual
+way, as if no share was used.
+
+Set this option to NULL again to stop using that share object.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_COOKIE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SHARE.html b/docs/libcurl/opts/CURLOPT_SHARE.html
new file mode 100644 (file)
index 0000000..ae2082e
--- /dev/null
@@ -0,0 +1,63 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SHARE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SHARE - specify share handle to use <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SHARE, CURLSH *share); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a <span Class="emphasis">share</span> handle as a parameter. The share handle must have been created by a previous call to <span Class="emphasis">curl_share_init(3)</span>. Setting this option, will make this curl handle use the data from the shared handle instead of keeping the data to itself. This enables several curl handles to share data. If the curl handles are used simultaneously in multiple threads, you <span Class="bold">MUST</span> use the locking methods in the share handle. See <span Class="emphasis">curl_share_setopt(3)</span> for details. 
+<p class="level0">If you add a share that is set to share cookies, your easy handle will use that cookie cache and get the cookie engine enabled. If you unshare an object that was using cookies (or change to another object that doesn't share cookies), the easy handle will get its cookie engine disabled. 
+<p class="level0">Data that the share object is not set to share will be dealt with the usual way, as if no share was used. 
+<p class="level0">Set this option to NULL again to stop using that share object. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_COOKIE.html">CURLOPT_COOKIE</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SHARE.pdf b/docs/libcurl/opts/CURLOPT_SHARE.pdf
new file mode 100644 (file)
index 0000000..8453beb
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_SHARE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3 b/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3
new file mode 100644 (file)
index 0000000..61c2b5e
--- /dev/null
@@ -0,0 +1,44 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SOCKOPTDATA 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SOCKOPTDATA \- custom pointer to pass to sockopt callback
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKOPTDATA, void *pointer);
+.SH DESCRIPTION
+Pass a \fIpointer\fP that will be untouched by libcurl and passed as the first
+argument in the sockopt callback set with \fICURLOPT_SOCKOPTFUNCTION(3)\fP.
+.SH DEFAULT
+The default value of this parameter is NULL.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.16.0
+.SH RETURN VALUE
+Returns \fICURLE_OK\fP if the option is supported, and \fICURLE_UNKNOWN_OPTION\fP if not.
+.SH "SEE ALSO"
+.BR CURLOPT_SOCKOPTFUNCTION "(3), " CURLOPT_OPENSOCKETFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.html b/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.html
new file mode 100644 (file)
index 0000000..692af0e
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SOCKOPTDATA man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SOCKOPTDATA - custom pointer to pass to sockopt callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKOPTDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a <span Class="emphasis">pointer</span> that will be untouched by libcurl and passed as the first argument in the sockopt callback set with <a Class="emphasis" href="./CURLOPT_SOCKOPTFUNCTION.html">CURLOPT_SOCKOPTFUNCTION</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">The default value of this parameter is NULL. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.16.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns <span Class="emphasis">CURLE_OK</span> if the option is supported, and <span Class="emphasis">CURLE_UNKNOWN_OPTION</span> if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SOCKOPTFUNCTION.html">CURLOPT_SOCKOPTFUNCTION</a>, <a Class="manpage" href="./CURLOPT_OPENSOCKETFUNCTION.html">CURLOPT_OPENSOCKETFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.pdf b/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.pdf
new file mode 100644 (file)
index 0000000..5e4622f
--- /dev/null
@@ -0,0 +1,116 @@
+%PDF-1.4
+%Çì\8f¢
+5 0 obj
+<</Length 6 0 R/Filter /FlateDecode>>
+stream
+x\9c\9dVën£F\14þï§\18©\7f \8a'se\18µªäMXÉ\eÖ¸6Þvµ©,b\93Ø-\ 6¯\81\8dö\1dú*}Ç\9e\ 1\fÆqªª\8a\14ÇÃá\¾Ë\99|E\ 4SDÌOó¹Ú\rnf
+=ç\ 3\82\9e\a_\a´z\88\9a\8fÕ\ e½\v!À5\aáÓ ~\87\90Ò\1c»\1a\85»Á\17ëv1ó\83\9c\a·÷6ÓXk¦,8¸³\7f\ f?\f\86\14S\8aÂ\15äfØ\11\90 \\9bC\ 6\87/\ 3k\14¢\91\1dþ\ 1õM\88\8b%\84Õ1BW/¾@\85\a\8b?ØhU\1e\92e\1cåß\97y\dûÂ\1e2I0!Ê\82/Û,ÍQ¯\13S\9ci\82µªóÕ-A©¶#&±jËý\97\96êFª\1c\ 4¢µ       ¸\99i\80\aki\10\1a
+é`.(\1ar§zar\92Ib©y\93è£gÎ;h\19Á\82(4¤Ì<þ_\98¶}3,«é(&]ç\7f¯ºF À%´~@j\84˼Èvh\9fmÓ"> "Cû(ÏÍg\9e­þ´a>B\85cpF«(I\1e#84\8dô\87§\8aaÆa\b\a»UÑùçI0\9d\8fçýY\ 1\9afNë\87mºJÊu\8c~2äÞ\98_xós5\84@¡?\b¯j(V\19Ä\9cóÿP=BW\9b(]'ñu\9f}N.ÀÅ\\85\89ó\16ß\rn}Ư¿µ¸i\98ªÃÌʶktÕ ö`ÿXÏx
+\a\97\14su\ 2Ç\9d7¿\9d\8d§á8\984\1a¢²\96Ð\ 5h¦ÑiaÙTÆL³ª:°\13Õ%)9ÚSa\97ð\86W«éì\fz\8a\1d\97è.Yc°b\13\15èe\9b$è1FeZdåj\13¯Ñãw\94l\1f\rî\b0®4\ 1§\11\bc\13£¿\ ey\81¢\83\r\ 6\13>\97»8-Ð6­\9e\ 1ݺ\92Ë\9en\10\90W³"5æ\´\ 3¿l\8bÍÙDà
+Ö*õÌ\14Â$\17Ô°ü~1¹5 Öî¬uÙî,)\80Î\ 6\13ü\9a$\ 6\7f*Ý#é}C\8e\14n%\1a\88¥â\98b´hV\bì\9dÆÕÌáÇ\15ã\87-i]\v\86g¥T7jã¹\10`ZÇO\95»\88âVT&\ 5úf3iEI\19£ì      \80Üæ\80ú!ÚÅÆ\96ðe²ð}|Áz\95p\8e#LgÍ\ 4\82W\13P\ 1=ªã\9ec\98H]i(\bQÐöË8VÄ9î§ÛÀ?s-\8c¬a\86\8e¯Q\92\Ðüi\1fÞo£\8fSß;jÝ}Sëa×\ 6åÆ\14u\13wA\83µtÝ\v«V\9bȶ\9a¡DÔ~þt²¿\81=GÒ£\9bÇþèÝØ\1f\87\9fû³\ 1\89\@\8dS~¬Ñz\rb\a9+\f5È¿ÏúÅ\9ayáb6A\9f\ 5Ö\ eµFþÂ;\13ãÉȳ¸(\ fi~&xαÓí\1e£wo\19Ü÷\9b\95\1cvX\e³}ªìVß\80F!y¹ßg\87"^_\eÏ\9e¯\b¸\14´8õ\93·\Lî'\81-\e\11þ:Y\ 6õ\86\11\B\8cwEÓ¬¸à&®àß\ 2qz\ 3x\1e\1aùó \víãðöMw4õ+?Kìö®ãë~n(í8=\bMö`êML\ 5¯ËÛW\80\82×ÜWi\87Ü\95À>\1a
+"±S7|Ü\88
+\96;Èb\b\1diØ1\16\84}(SÄবz\16­\99¨Iå\85\83_àç\1f.¾KÝendstream
+endobj
+6 0 obj
+1045
+endobj
+4 0 obj
+<</Type/Page/MediaBox [0 0 595 842]
+/Rotate 0/Parent 3 0 R
+/Resources<</ProcSet[/PDF /Text]
+/ExtGState 11 0 R
+/Font 12 0 R
+>>
+/Contents 5 0 R
+>>
+endobj
+3 0 obj
+<< /Type /Pages /Kids [
+4 0 R
+] /Count 1
+>>
+endobj
+1 0 obj
+<</Type /Catalog /Pages 3 0 R
+/Metadata 14 0 R
+>>
+endobj
+7 0 obj
+<</Type/ExtGState
+/OPM 1>>endobj
+11 0 obj
+<</R7
+7 0 R>>
+endobj
+12 0 obj
+<</R10
+10 0 R/R9
+9 0 R/R8
+8 0 R>>
+endobj
+10 0 obj
+<</BaseFont/Times-Italic/Type/Font
+/Subtype/Type1>>
+endobj
+9 0 obj
+<</BaseFont/Times-Bold/Type/Font
+/Subtype/Type1>>
+endobj
+8 0 obj
+<</BaseFont/Times-Roman/Type/Font
+/Encoding 13 0 R/Subtype/Type1>>
+endobj
+13 0 obj
+<</Type/Encoding/Differences[
+140/fi
+173/minus]>>
+endobj
+14 0 obj
+<</Type/Metadata
+/Subtype/XML/Length 1346>>stream
+<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
+<?adobe-xap-filters esc="CRLF"?>
+<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
+<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
+<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-a72fc39baf1d' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.06'/>
+<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-a72fc39baf1d' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-01-08T09:18:06+01:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-01-08T09:18:06+01:00</xmp:CreateDate>
+<xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
+<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-a72fc39baf1d' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:6bff3b4a-cf2b-11ef-0000-a72fc39baf1d'/>
+<rdf:Description rdf:about='uuid:6bff3b4a-cf2b-11ef-0000-a72fc39baf1d' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+</rdf:RDF>
+</x:xmpmeta>
+                                                                        
+                                                                        
+<?xpacket end='w'?>
+endstream
+endobj
+2 0 obj
+<</Producer(GPL Ghostscript 9.06)
+/CreationDate(D:20150108091806+01'00')
+/ModDate(D:20150108091806+01'00')
+/Creator(groff version 1.22.3)>>endobj
+xref
+0 15
+0000000000 65535 f 
+0000001369 00000 n 
+0000003259 00000 n 
+0000001310 00000 n 
+0000001150 00000 n 
+0000000015 00000 n 
+0000001130 00000 n 
+0000001434 00000 n 
+0000001688 00000 n 
+0000001623 00000 n 
+0000001555 00000 n 
+0000001475 00000 n 
+0000001505 00000 n 
+0000001770 00000 n 
+0000001836 00000 n 
+trailer
+<< /Size 15 /Root 1 0 R /Info 2 0 R
+/ID [<548B7B107771A11F62E135259C369E68><548B7B107771A11F62E135259C369E68>]
+>>
+startxref
+3413
+%%EOF
diff --git a/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3 b/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3
new file mode 100644 (file)
index 0000000..e99fb79
--- /dev/null
@@ -0,0 +1,88 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SOCKOPTFUNCTION 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SOCKOPTFUNCTION \- set callback for setting socket options
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+typedef enum  {
+  CURLSOCKTYPE_IPCXN,  /* socket created for a specific IP connection */
+  CURLSOCKTYPE_ACCEPT, /* socket created by accept() call */
+  CURLSOCKTYPE_LAST    /* never use */
+} curlsocktype;
+
+#define CURL_SOCKOPT_OK 0
+#define CURL_SOCKOPT_ERROR 1 /* causes libcurl to abort and return
+                                CURLE_ABORTED_BY_CALLBACK */
+#define CURL_SOCKOPT_ALREADY_CONNECTED 2
+
+int sockopt_callback(void *clientp,
+                     curl_socket_t curlfd,
+                     curlsocktype purpose);
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKOPTFUNCTION, sockopt_callback);
+.SH DESCRIPTION
+Pass a pointer to your callback function, which should match the prototype
+shown above.
+
+When set, this callback function gets called by libcurl when the socket has
+been created, but before the connect call to allow applications to change
+specific socket options. The callback's \fIpurpose\fP argument identifies the
+exact purpose for this particular socket:
+
+\fICURLSOCKTYPE_IPCXN\fP for actively created connections or since 7.28.0
+\fICURLSOCKTYPE_ACCEPT\fP for FTP when the connection was setup with PORT/EPSV
+(in earlier versions these sockets weren't passed to this callback).
+
+Future versions of libcurl may support more purposes. libcurl passes the newly
+created socket descriptor to the callback in the \fIcurlfd\fP parameter so
+additional setsockopt() calls can be done at the user's discretion.
+
+The \fIclientp\fP pointer contains whatever user-defined value set using the
+\fICURLOPT_SOCKOPTDATA(3)\fP function.
+
+Return \fICURL_SOCKOPT_OK\fP from the callback on success. Return
+\fICURL_SOCKOPT_ERROR\fP from the callback function to signal an unrecoverable
+error to the library and it will close the socket and return
+\fICURLE_COULDNT_CONNECT\fP.
+Alternatively, the callback function can return
+\fICURL_SOCKOPT_ALREADY_CONNECTED\fP, to tell libcurl that the socket is
+already connected and then libcurl will not attempt to connect it. This allows
+an application to pass in an already connected socket with
+\fICURLOPT_OPENSOCKETFUNCTION(3)\fP and then have this function make libcurl
+not attempt to connect (again).
+.SH DEFAULT
+By default, this callback is NULL and unused.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.16.0. The \fICURL_SOCKOPT_ALREADY_CONNECTED\fP return code was
+added in 7.21.5.
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_SOCKOPTDATA "(3), " CURLOPT_OPENSOCKETFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.html b/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.html
new file mode 100644 (file)
index 0000000..07186d2
--- /dev/null
@@ -0,0 +1,80 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SOCKOPTFUNCTION man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SOCKOPTFUNCTION - set callback for setting socket options <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">typedef enum  {
+ &nbsp; CURLSOCKTYPE_IPCXN,  /* socket created for a specific IP connection */
+ &nbsp; CURLSOCKTYPE_ACCEPT, /* socket created by accept() call */
+ &nbsp; CURLSOCKTYPE_LAST    /* never use */
+ } curlsocktype;
+ <p class="level0">#define CURL_SOCKOPT_OK 0
+ #define CURL_SOCKOPT_ERROR 1 /* causes libcurl to abort and return
+ &nbsp;                               CURLE_ABORTED_BY_CALLBACK */
+ #define CURL_SOCKOPT_ALREADY_CONNECTED 2
+ <p class="level0">int sockopt_callback(void *clientp,
+ &nbsp;                    curl_socket_t curlfd,
+ &nbsp;                    curlsocktype purpose);
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKOPTFUNCTION, sockopt_callback);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
+<p class="level0">When set, this callback function gets called by libcurl when the socket has been created, but before the connect call to allow applications to change specific socket options. The callback's <span Class="emphasis">purpose</span> argument identifies the exact purpose for this particular socket: 
+<p class="level0"><span Class="emphasis">CURLSOCKTYPE_IPCXN</span> for actively created connections or since 7.28.0 <span Class="emphasis">CURLSOCKTYPE_ACCEPT</span> for FTP when the connection was setup with PORT/EPSV (in earlier versions these sockets weren't passed to this callback). 
+<p class="level0">Future versions of libcurl may support more purposes. libcurl passes the newly created socket descriptor to the callback in the <span Class="emphasis">curlfd</span> parameter so additional setsockopt() calls can be done at the user's discretion. 
+<p class="level0">The <span Class="emphasis">clientp</span> pointer contains whatever user-defined value set using the <a Class="emphasis" href="./CURLOPT_SOCKOPTDATA.html">CURLOPT_SOCKOPTDATA</a> function. 
+<p class="level0">Return <span Class="emphasis">CURL_SOCKOPT_OK</span> from the callback on success. Return <span Class="emphasis">CURL_SOCKOPT_ERROR</span> from the callback function to signal an unrecoverable error to the library and it will close the socket and return <span Class="emphasis">CURLE_COULDNT_CONNECT</span>. Alternatively, the callback function can return <span Class="emphasis">CURL_SOCKOPT_ALREADY_CONNECTED</span>, to tell libcurl that the socket is already connected and then libcurl will not attempt to connect it. This allows an application to pass in an already connected socket with <a Class="emphasis" href="./CURLOPT_OPENSOCKETFUNCTION.html">CURLOPT_OPENSOCKETFUNCTION</a> and then have this function make libcurl not attempt to connect (again). <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">By default, this callback is NULL and unused. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.16.0. The <span Class="emphasis">CURL_SOCKOPT_ALREADY_CONNECTED</span> return code was added in 7.21.5. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SOCKOPTDATA.html">CURLOPT_SOCKOPTDATA</a>, <a Class="manpage" href="./CURLOPT_OPENSOCKETFUNCTION.html">CURLOPT_OPENSOCKETFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.pdf b/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.pdf
new file mode 100644 (file)
index 0000000..47958b9
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3 b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3
new file mode 100644 (file)
index 0000000..cb318fc
--- /dev/null
@@ -0,0 +1,47 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SOCKS5_GSSAPI_NEC 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SOCKS5_GSSAPI_NEC \- set socks proxy gssapi negotiation protection
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_GSSAPI_NEC, long nec);
+.SH DESCRIPTION
+Pass a long set to 1 to enable or 0 to disable. As part of the gssapi
+negotiation a protection mode is negotiated. The RFC1961 says in section
+4.3/4.4 it should be protected, but the NEC reference implementation does not.
+If enabled, this option allows the unprotected exchange of the protection mode
+negotiation.
+.SH DEFAULT
+?
+.SH PROTOCOLS
+Most
+.SH EXAMPLE
+TODO
+.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 CURLOPT_SOCKS5_GSSAPI_SERVICE "(3), " CURLOPT_PROXY "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.html b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.html
new file mode 100644 (file)
index 0000000..41a462e
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SOCKS5_GSSAPI_NEC man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SOCKS5_GSSAPI_NEC - set socks proxy gssapi negotiation protection <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_GSSAPI_NEC, long nec); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long set to 1 to enable or 0 to disable. As part of the gssapi negotiation a protection mode is negotiated. The <a href="http://www.ietf.org/rfc/rfc1961.txt">RFC 1961</a> says in section 4.3/4.4 it should be protected, but the NEC reference implementation does not. If enabled, this option allows the unprotected exchange of the protection mode negotiation. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">? <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">Most <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.19.4 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SOCKS5_GSSAPI_SERVICE.html">CURLOPT_SOCKS5_GSSAPI_SERVICE</a>, <a Class="manpage" href="./CURLOPT_PROXY.html">CURLOPT_PROXY</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.pdf b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.pdf
new file mode 100644 (file)
index 0000000..42a15ab
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3 b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3
new file mode 100644 (file)
index 0000000..d18ea9f
--- /dev/null
@@ -0,0 +1,46 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SOCKS5_GSSAPI_SERVICE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SOCKS5_GSSAPI_SERVICE \- proxy socks gssapi service name
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_GSSAPI_SERVICE, char *name);
+.SH DESCRIPTION
+Pass a char * as parameter to a string holding the \fIname\fP of the
+service. The default service name for a SOCKS5 server is
+rcmd/server-fqdn. This option allows you to change it.
+.SH DEFAULT
+See above
+.SH PROTOCOLS
+Most
+.SH EXAMPLE
+TODO
+.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 CURLOPT_PROXY "(3), " CURLOPT_PROXYTYPE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.html b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.html
new file mode 100644 (file)
index 0000000..32c43d3
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SOCKS5_GSSAPI_SERVICE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SOCKS5_GSSAPI_SERVICE - proxy socks gssapi service name <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_GSSAPI_SERVICE, char *name); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * as parameter to a string holding the <span Class="emphasis">name</span> of the service. The default service name for a SOCKS5 server is rcmd/server-fqdn. This option allows you to change it. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">See above <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">Most <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.19.4 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_PROXY.html">CURLOPT_PROXY</a>, <a Class="manpage" href="./CURLOPT_PROXYTYPE.html">CURLOPT_PROXYTYPE</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.pdf b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.pdf
new file mode 100644 (file)
index 0000000..74b6ccd
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3 b/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3
new file mode 100644 (file)
index 0000000..966f746
--- /dev/null
@@ -0,0 +1,50 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SSH_AUTH_TYPES 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SSH_AUTH_TYPES \- set desired auth types for SFTP and SCP
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_AUTH_TYPES, long bitmask);
+.SH DESCRIPTION
+Pass a long set to a bitmask consisting of one or more of
+CURLSSH_AUTH_PUBLICKEY, CURLSSH_AUTH_PASSWORD, CURLSSH_AUTH_HOST,
+CURLSSH_AUTH_KEYBOARD and CURLSSH_AUTH_AGENT.
+
+Set \fICURLSSH_AUTH_ANY\fP to let libcurl pick a suitable one. Currently
+CURLSSH_AUTH_HOST has no effect. If CURLSSH_AUTH_AGENT is used, libcurl
+attempts to connect to ssh-agent or pageant and let the agent attempt the
+authentication.
+.SH DEFAULT
+None
+.SH PROTOCOLS
+SFTP and SCP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+CURLSSH_AUTH_HOST was added in 7.16.1, CURLSSH_AUTH_AGENT was added in 7.28.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 "(3), " CURLOPT_SSH_PUBLIC_KEYFILE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.html b/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.html
new file mode 100644 (file)
index 0000000..6b28744
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SSH_AUTH_TYPES man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SSH_AUTH_TYPES - set desired auth types for SFTP and SCP <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_AUTH_TYPES, long bitmask); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long set to a bitmask consisting of one or more of CURLSSH_AUTH_PUBLICKEY, CURLSSH_AUTH_PASSWORD, CURLSSH_AUTH_HOST, CURLSSH_AUTH_KEYBOARD and CURLSSH_AUTH_AGENT. 
+<p class="level0">Set <span Class="emphasis">CURLSSH_AUTH_ANY</span> to let libcurl pick a suitable one. Currently CURLSSH_AUTH_HOST has no effect. If CURLSSH_AUTH_AGENT is used, libcurl attempts to connect to ssh-agent or pageant and let the agent attempt the authentication. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">None <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">SFTP and SCP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">CURLSSH_AUTH_HOST was added in 7.16.1, CURLSSH_AUTH_AGENT was added in 7.28.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.html">CURLOPT_SSH_HOST_PUBLIC_KEY_MD5</a>, <a Class="manpage" href="./CURLOPT_SSH_PUBLIC_KEYFILE.html">CURLOPT_SSH_PUBLIC_KEYFILE</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.pdf b/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.pdf
new file mode 100644 (file)
index 0000000..a719b92
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3 b/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3
new file mode 100644 (file)
index 0000000..12e7720
--- /dev/null
@@ -0,0 +1,48 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 \- checksum of SSH server public key
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_HOST_PUBLIC_KEY_MD5,
+                          char *md5);
+.SH DESCRIPTION
+Pass a char * pointing to a string containing 32 hexadecimal digits. The
+string should be the 128 bit MD5 checksum of the remote host's public key, and
+libcurl will reject the connection to the host unless the md5sums match.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+SCP and SFTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.17.1
+.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 CURLOPT_SSH_PUBLIC_KEYFILE "(3), " CURLOPT_SSH_AUTH_TYPES "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.html b/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.html
new file mode 100644 (file)
index 0000000..0bcbfdd
--- /dev/null
@@ -0,0 +1,64 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 - checksum of SSH server public key <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_HOST_PUBLIC_KEY_MD5,
+ &nbsp;                         char *md5);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * pointing to a string containing 32 hexadecimal digits. The string should be the 128 bit MD5 checksum of the remote host's public key, and libcurl will reject the connection to the host unless the md5sums match. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">SCP and SFTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.17.1 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SSH_PUBLIC_KEYFILE.html">CURLOPT_SSH_PUBLIC_KEYFILE</a>, <a Class="manpage" href="./CURLOPT_SSH_AUTH_TYPES.html">CURLOPT_SSH_AUTH_TYPES</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.pdf b/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.pdf
new file mode 100644 (file)
index 0000000..e04a2f8
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3 b/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3
new file mode 100644 (file)
index 0000000..45e7d7a
--- /dev/null
@@ -0,0 +1,44 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SSH_KEYDATA 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SSH_KEYDATA \- pointer to pass to the SSH key callback
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_KEYDATA, void *pointer);
+.SH DESCRIPTION
+Pass a void * as parameter. This \fIpointer\fP will be passed along verbatim
+to the callback set with \fICURLOPT_SSH_KEYFUNCTION(3)\fP.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+SFTP and SCP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.19.6
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_SSH_KEYDATA "(3), " CURLOPT_SSH_KNOWNHOSTS "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.html b/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.html
new file mode 100644 (file)
index 0000000..9257ac7
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SSH_KEYDATA man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SSH_KEYDATA - pointer to pass to the SSH key callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_KEYDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a void * as parameter. This <span Class="emphasis">pointer</span> will be passed along verbatim to the callback set with <a Class="emphasis" href="./CURLOPT_SSH_KEYFUNCTION.html">CURLOPT_SSH_KEYFUNCTION</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">SFTP and SCP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.19.6 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SSH_KEYDATA.html">CURLOPT_SSH_KEYDATA</a>, <a Class="manpage" href="./CURLOPT_SSH_KNOWNHOSTS.html">CURLOPT_SSH_KNOWNHOSTS</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.pdf b/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.pdf
new file mode 100644 (file)
index 0000000..5c2b7db
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3 b/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3
new file mode 100644 (file)
index 0000000..4af9a3b
--- /dev/null
@@ -0,0 +1,105 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SSH_KEYFUNCTION 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SSH_KEYFUNCTION \- callback for known host matching logic
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+enum curl_khstat {
+  CURLKHSTAT_FINE_ADD_TO_FILE,
+  CURLKHSTAT_FINE,
+  CURLKHSTAT_REJECT, /* reject the connection, return an error */
+  CURLKHSTAT_DEFER,  /* do not accept it, but we can't answer right
+                        now so this causes a CURLE_DEFER error but
+                        otherwise the connection will be left intact
+                        etc */
+};
+
+enum curl_khmatch {
+  CURLKHMATCH_OK,       /* match */
+  CURLKHMATCH_MISMATCH, /* host found, key mismatch! */
+  CURLKHMATCH_MISSING,  /* no matching host/key found */
+};
+
+struct curl_khkey {
+  const char *key; /* points to a zero-terminated string encoded with
+                      base64 if len is zero, otherwise to the "raw"
+                      data */
+  size_t len;
+  enum curl_khtype keytype;
+};
+
+int ssh_keycallback(CURL *easy,
+                    const struct curl_khkey *knownkey,
+                    const struct curl_khkey *foundkey,
+                    enum curl_khmatch,
+                    void *clientp);
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_KEYFUNCTION,
+                          ssh_keycallback);
+.SH DESCRIPTION
+Pass a pointer to your callback function, which should match the prototype
+shown above.
+
+It gets called when the known_host matching has been done, to allow the
+application to act and decide for libcurl how to proceed. The callback will
+only be called if \fICURLOPT_SSH_KNOWNHOSTS(3)\fP is also set.
+
+This callback function gets passed the CURL handle, the key from the
+known_hosts file \fIknownkey\fP, the key from the remote site \fIfoundkey\fP,
+info from libcurl on the matching status and a custom pointer (set with
+\fICURLOPT_SSH_KEYDATA(3)\fP). It MUST return one of the following return
+codes to tell libcurl how to act:
+
+.IP CURLKHSTAT_FINE_ADD_TO_FILE
+The host+key is accepted and libcurl will append it to the known_hosts file
+before continuing with the connection. This will also add the host+key combo
+to the known_host pool kept in memory if it wasn't already present there. The
+adding of data to the file is done by completely replacing the file with a new
+copy, so the permissions of the file must allow this.
+.IP CURLKHSTAT_FINE
+The host+key is accepted libcurl will continue with the connection. This will
+also add the host+key combo to the known_host pool kept in memory if it wasn't
+already present there.
+.IP CURLKHSTAT_REJECT
+The host+key is rejected. libcurl will deny the connection to continue and it
+will be closed.
+.IP CURLKHSTAT_DEFER
+The host+key is rejected, but the SSH connection is asked to be kept alive.
+This feature could be used when the app wants to somehow return back and act
+on the host+key situation and then retry without needing the overhead of
+setting it up from scratch again.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+SFTP and SCP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.19.6
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_SSH_KEYDATA "(3), " CURLOPT_SSH_KNOWNHOSTS "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.html b/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.html
new file mode 100644 (file)
index 0000000..bfc1920
--- /dev/null
@@ -0,0 +1,101 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SSH_KEYFUNCTION man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SSH_KEYFUNCTION - callback for known host matching logic <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">enum curl_khstat {
+ &nbsp; CURLKHSTAT_FINE_ADD_TO_FILE,
+ &nbsp; CURLKHSTAT_FINE,
+ &nbsp; CURLKHSTAT_REJECT, /* reject the connection, return an error */
+ &nbsp; CURLKHSTAT_DEFER,  /* do not accept it, but we can't answer right
+ &nbsp;                       now so this causes a CURLE_DEFER error but
+ &nbsp;                       otherwise the connection will be left intact
+ &nbsp;                       etc */
+ };
+ <p class="level0">enum curl_khmatch {
+ &nbsp; CURLKHMATCH_OK,       /* match */
+ &nbsp; CURLKHMATCH_MISMATCH, /* host found, key mismatch! */
+ &nbsp; CURLKHMATCH_MISSING,  /* no matching host/key found */
+ };
+ <p class="level0">struct curl_khkey {
+ &nbsp; const char *key; /* points to a zero-terminated string encoded with
+ &nbsp;                     base64 if len is zero, otherwise to the "raw"
+ &nbsp;                     data */
+ &nbsp; size_t len;
+ &nbsp; enum curl_khtype keytype;
+ };
+ <p class="level0">int ssh_keycallback(CURL *easy,
+ &nbsp;                   const struct curl_khkey *knownkey,
+ &nbsp;                   const struct curl_khkey *foundkey,
+ &nbsp;                   enum curl_khmatch,
+ &nbsp;                   void *clientp);
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_KEYFUNCTION,
+ &nbsp;                         ssh_keycallback);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
+<p class="level0">It gets called when the known_host matching has been done, to allow the application to act and decide for libcurl how to proceed. The callback will only be called if <a Class="emphasis" href="./CURLOPT_SSH_KNOWNHOSTS.html">CURLOPT_SSH_KNOWNHOSTS</a> is also set. 
+<p class="level0">This callback function gets passed the CURL handle, the key from the known_hosts file <span Class="emphasis">knownkey</span>, the key from the remote site <span Class="emphasis">foundkey</span>, info from libcurl on the matching status and a custom pointer (set with <a Class="emphasis" href="./CURLOPT_SSH_KEYDATA.html">CURLOPT_SSH_KEYDATA</a>). It MUST return one of the following return codes to tell libcurl how to act: 
+<p class="level0">
+<p class="level0"><a name="CURLKHSTATFINEADDTOFILE"></a><span class="nroffip">CURLKHSTAT_FINE_ADD_TO_FILE</span> 
+<p class="level1">The host+key is accepted and libcurl will append it to the known_hosts file before continuing with the connection. This will also add the host+key combo to the known_host pool kept in memory if it wasn't already present there. The adding of data to the file is done by completely replacing the file with a new copy, so the permissions of the file must allow this. 
+<p class="level0"><a name="CURLKHSTATFINE"></a><span class="nroffip">CURLKHSTAT_FINE</span> 
+<p class="level1">The host+key is accepted libcurl will continue with the connection. This will also add the host+key combo to the known_host pool kept in memory if it wasn't already present there. 
+<p class="level0"><a name="CURLKHSTATREJECT"></a><span class="nroffip">CURLKHSTAT_REJECT</span> 
+<p class="level1">The host+key is rejected. libcurl will deny the connection to continue and it will be closed. 
+<p class="level0"><a name="CURLKHSTATDEFER"></a><span class="nroffip">CURLKHSTAT_DEFER</span> 
+<p class="level1">The host+key is rejected, but the SSH connection is asked to be kept alive. This feature could be used when the app wants to somehow return back and act on the host+key situation and then retry without needing the overhead of setting it up from scratch again. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">SFTP and SCP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.19.6 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SSH_KEYDATA.html">CURLOPT_SSH_KEYDATA</a>, <a Class="manpage" href="./CURLOPT_SSH_KNOWNHOSTS.html">CURLOPT_SSH_KNOWNHOSTS</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.pdf b/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.pdf
new file mode 100644 (file)
index 0000000..cdbd6b6
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3 b/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3
new file mode 100644 (file)
index 0000000..85574ce
--- /dev/null
@@ -0,0 +1,49 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SSH_KNOWNHOSTS 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SSH_KNOWNHOSTS \- file name holding the SSH known hosts
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_KNOWNHOSTS, char *fname);
+.SH DESCRIPTION
+Pass a pointer to a zero terminated string holding the file name of the
+known_host file to use.  The known_hosts file should use the OpenSSH file
+format as supported by libssh2. If this file is specified, libcurl will only
+accept connections with hosts that are known and present in that file, with a
+matching public key. Use \fICURLOPT_SSH_KEYFUNCTION(3)\fP to alter the default
+behavior on host and key (mis)matching.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+SFTP and SCP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.19.6
+.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 CURLOPT_SSH_AUTH_TYPES "(3), " CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.html b/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.html
new file mode 100644 (file)
index 0000000..b757f22
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SSH_KNOWNHOSTS man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SSH_KNOWNHOSTS - file name holding the SSH known hosts <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_KNOWNHOSTS, char *fname); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to a zero terminated string holding the file name of the known_host file to use.  The known_hosts file should use the OpenSSH file format as supported by libssh2. If this file is specified, libcurl will only accept connections with hosts that are known and present in that file, with a matching public key. Use <a Class="emphasis" href="./CURLOPT_SSH_KEYFUNCTION.html">CURLOPT_SSH_KEYFUNCTION</a> to alter the default behavior on host and key (mis)matching. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">SFTP and SCP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.19.6 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SSH_AUTH_TYPES.html">CURLOPT_SSH_AUTH_TYPES</a>, <a Class="manpage" href="./CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.html">CURLOPT_SSH_HOST_PUBLIC_KEY_MD5</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.pdf b/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.pdf
new file mode 100644 (file)
index 0000000..51cf58a
--- /dev/null
@@ -0,0 +1,116 @@
+%PDF-1.4
+%Çì\8f¢
+5 0 obj
+<</Length 6 0 R/Filter /FlateDecode>>
+stream
+x\9c\85VÿnâF\10þßO1Rÿ¨9Á\9ewý[­*\91ÄQ¸s0\ 5sm\94TÈ1Kì\ 6l\ e\9b\8bÒgÈ«ô\1d;»^\9b\17!\81ÌÎÎ|óÍÌ7þ
+\ 6¡`\88\8fúM7ÚÇ©\v\ f\95\83öU£ò\10ÔOº\81³\18\r<ñG¼Ò\9a;\14\\ 6®o\12Ï\87x£éçói\18MâÅlvµø<\8ezñß\9ao\13F\r\86ÆñRc\ eÁ\vñ\93v«ÿ1¾\8afñìN7ïz\90îwë\ 5OªçEÅër[÷\ 6Ìò\89ï\9b:>äeQÁ©ç¿âO\9aI\19ñ\1aÇGîDØ\81\81a\11T\8a\98}ÄL|[À\1eX\86G\f
+\ 3Ó\91×ÆCal\b;j\13Û7\95»ë@ü\7fH\97\19Ä2\\18P&\8e\8d&\85SL¦E|Ï¢-\16ø\17\1c\8adÃ!+×˼x\80\80æðX\94=\86æ>sõ§\ 2\8f«º\929\1d£E\94\ 3ê`\92\ 2Óìf\1cMf£Ù12i"Qé?åEºÞ/9ü*øü(¾Hö\9b0g\16Ä¡\16\7fh0§%Ú\9cR~'\8fàC\96\14Ë5ï¿!ÜThUr}H³d\a\1fV"½»Þ/ï\81¿\bfçÓÑ$\1eEcU\1ej7ÕùN"\93¤«\8aO<[õ\ ea\8eÝ\10_U\90À¶Ì\8b\9aï .ñá\1f¾+\ 1\9f6y\91Ô|        U½\13t¿¦½«E¹\92Ïm   <ÛÂ\12,D  ¤\rúÛW\9cÈ\84,Ã!\8ej\89\12¹\859Yv\87U¸Á¿©E\\ 5\94\12×ô\ 4ÐÖm%ýVY¹_/\85o\19>ÚòBt\828Z\95»MRCRAµßnË\9dÈàþ\19Öù}Ue\8cÀH Î\e7øSmy\9a¿ðe_âi"·\9dI¨e6$ámQcxÊ×k(\8bõ3$iÊ·5¤eQð´\19«§¼Î\9aîÃ\b\ 2ÂN\11\940&z\13û\ 1¶;^ñ¢\86¼hÌ^D\87È»       ò4\13$o÷÷\ 3É\9a\80\12
+(\9e\84\82HRxìý|(:u\89í±vtù³lQâ\bóTó\88\18©C2?\f\194©:¨x3\aÔh\15\89
+Ⱦ:>jßàær>>\17½×éÃ+%³Q¾\f5ø·ºh§µì+,Ò\92¯zB\87\98ãéÉ~]Ã=Ï\92\1e\8a\81\9eþ-/wȬäOÒô(Ó?¤é¸Ä5T&( \98\94 \83\9dþZvLÃlaoòê®'\19\1dÈâ\9aÞQ³!ͤAÿ\83A»T\ 3f[\9e\b\80h}jµ´\rçMÓ`\ 6®
\1cÓU§aÜá:\10$òq]×´:\18ãy\18¾\ 3c2U(,S¢À.e\8e«ÖÀ\80\11Ãö%\19Q\fQ\17\93\99È\97Ójðy\14\9eh\1dÂö\11\87u¤Ãúì2\9eHúgç\93wP\ 5\7f\ e¯'aÐ*\90÷¿
+\14\1f@QS\94³\81t\11)ölÏûÎnñ\85e\17M\90ÜT|ø\ 5\ e{\ 6ëáØT1¡\8fÂáÙ(\1cÅ7§MIL\vc\1c%:\.Q\18p\ 6]B}âü8×[}\1aÄóé\18¾ô¨Ðn\87êÃp\1e(\9d~\9b²\83&\8dpLy½ß©\95\e,¢Ï\907\82Ù¬b)@­Jõ\95Ñ|Ü­\b\83á\8aXDRéÅÍ¢¬ûPîd\]¹\9cÇ\8bèrq\1d\GS\94\ 5F\9a\1eaV;\8679j\90¡¯jy±!\8e\12Ú½I¨\15\9cq\14¬§Ã\8cVHOµ_u»õ%Í\85ne<Ù¢l&©ÒõcÚ¨\8blÛ¯7m\10À0\9cE\a\86\8f¹:^ýÃ\9exW\11\8b\7f\1e_-â\9bI0;a\195\99t\13(%¨\7fì\1a#;N\9bÚ\91s±l\17\93ùY8:\17:¶¸¾°OßL(qü7¾\a¦\8fâ\83\88MÛ%N\ 3ºÝ\b.1]bô\ 6Ô¶}\8bØ:¾'}Ú\17\80\9e¬fëu#H\85« Ö~ÇÏ\7fY*\9c\85endstream
+endobj
+6 0 obj
+1237
+endobj
+4 0 obj
+<</Type/Page/MediaBox [0 0 595 842]
+/Rotate 0/Parent 3 0 R
+/Resources<</ProcSet[/PDF /Text]
+/ExtGState 11 0 R
+/Font 12 0 R
+>>
+/Contents 5 0 R
+>>
+endobj
+3 0 obj
+<< /Type /Pages /Kids [
+4 0 R
+] /Count 1
+>>
+endobj
+1 0 obj
+<</Type /Catalog /Pages 3 0 R
+/Metadata 14 0 R
+>>
+endobj
+7 0 obj
+<</Type/ExtGState
+/OPM 1>>endobj
+11 0 obj
+<</R7
+7 0 R>>
+endobj
+12 0 obj
+<</R10
+10 0 R/R9
+9 0 R/R8
+8 0 R>>
+endobj
+10 0 obj
+<</BaseFont/Times-Italic/Type/Font
+/Subtype/Type1>>
+endobj
+9 0 obj
+<</BaseFont/Times-Bold/Type/Font
+/Subtype/Type1>>
+endobj
+8 0 obj
+<</BaseFont/Times-Roman/Type/Font
+/Encoding 13 0 R/Subtype/Type1>>
+endobj
+13 0 obj
+<</Type/Encoding/Differences[
+140/fi
+173/minus]>>
+endobj
+14 0 obj
+<</Type/Metadata
+/Subtype/XML/Length 1346>>stream
+<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
+<?adobe-xap-filters esc="CRLF"?>
+<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
+<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
+<rdf:Description rdf:about='uuid:6c97d1ca-cf2b-11ef-0000-97ccdacf2f0e' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.06'/>
+<rdf:Description rdf:about='uuid:6c97d1ca-cf2b-11ef-0000-97ccdacf2f0e' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-01-08T09:18:07+01:00</xmp:ModifyDate>
+<xmp:CreateDate>2015-01-08T09:18:07+01:00</xmp:CreateDate>
+<xmp:CreatorTool>groff version 1.22.3</xmp:CreatorTool></rdf:Description>
+<rdf:Description rdf:about='uuid:6c97d1ca-cf2b-11ef-0000-97ccdacf2f0e' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:6c97d1ca-cf2b-11ef-0000-97ccdacf2f0e'/>
+<rdf:Description rdf:about='uuid:6c97d1ca-cf2b-11ef-0000-97ccdacf2f0e' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+</rdf:RDF>
+</x:xmpmeta>
+                                                                        
+                                                                        
+<?xpacket end='w'?>
+endstream
+endobj
+2 0 obj
+<</Producer(GPL Ghostscript 9.06)
+/CreationDate(D:20150108091807+01'00')
+/ModDate(D:20150108091807+01'00')
+/Creator(groff version 1.22.3)>>endobj
+xref
+0 15
+0000000000 65535 f 
+0000001561 00000 n 
+0000003451 00000 n 
+0000001502 00000 n 
+0000001342 00000 n 
+0000000015 00000 n 
+0000001322 00000 n 
+0000001626 00000 n 
+0000001880 00000 n 
+0000001815 00000 n 
+0000001747 00000 n 
+0000001667 00000 n 
+0000001697 00000 n 
+0000001962 00000 n 
+0000002028 00000 n 
+trailer
+<< /Size 15 /Root 1 0 R /Info 2 0 R
+/ID [<D884164C072563CB883565F84D010B8D><D884164C072563CB883565F84D010B8D>]
+>>
+startxref
+3605
+%%EOF
diff --git a/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3 b/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3
new file mode 100644 (file)
index 0000000..f357f2c
--- /dev/null
@@ -0,0 +1,51 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SSH_PRIVATE_KEYFILE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SSH_PRIVATE_KEYFILE \- set private key file for SSH auth
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_PRIVATE_KEYFILE,
+                          char *filename);
+.SH DESCRIPTION
+Pass a char * pointing to a \fIfilename\fP for your private key. If not used,
+libcurl defaults to \fB$HOME/.ssh/id_dsa\fP if the HOME environment variable
+is set, and just "id_dsa" in the current directory if HOME is not set.
+
+If the file is password-protected, set the password with
+\fICURLOPT_KEYPASSWD(3)\fP.
+.SH DEFAULT
+As explained above
+.SH PROTOCOLS
+SFTP and SCP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.16.1
+.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 CURLOPT_SSH_PUBLIC_KEYFILE "(3), " CURLOPT_SSH_AUTH_TYPES "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.html b/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.html
new file mode 100644 (file)
index 0000000..c425a1b
--- /dev/null
@@ -0,0 +1,65 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SSH_PRIVATE_KEYFILE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SSH_PRIVATE_KEYFILE - set private key file for SSH auth <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_PRIVATE_KEYFILE,
+ &nbsp;                         char *filename);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * pointing to a <span Class="emphasis">filename</span> for your private key. If not used, libcurl defaults to <span Class="bold">$HOME/.ssh/id_dsa</span> if the HOME environment variable is set, and just "id_dsa" in the current directory if HOME is not set. 
+<p class="level0">If the file is password-protected, set the password with <a Class="emphasis" href="./CURLOPT_KEYPASSWD.html">CURLOPT_KEYPASSWD</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">As explained above <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">SFTP and SCP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.16.1 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SSH_PUBLIC_KEYFILE.html">CURLOPT_SSH_PUBLIC_KEYFILE</a>, <a Class="manpage" href="./CURLOPT_SSH_AUTH_TYPES.html">CURLOPT_SSH_AUTH_TYPES</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.pdf b/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.pdf
new file mode 100644 (file)
index 0000000..ed2ddf9
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3 b/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3
new file mode 100644 (file)
index 0000000..35f2a19
--- /dev/null
@@ -0,0 +1,53 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SSH_PUBLIC_KEYFILE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SSH_PUBLIC_KEYFILE \- set public key file for SSH auth
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_PUBLIC_KEYFILE,
+                          char *filename);
+.SH DESCRIPTION
+Pass a char * pointing to a \fIfilename\fP for your public key. If not used,
+libcurl defaults to \fB$HOME/.ssh/id_dsa.pub\fP if the HOME environment
+variable is set, and just "id_dsa.pub" in the current directory if HOME is not
+set.
+
+If an empty string is passed, libcurl will pass no public key to libssh2 which
+then tries to compute it from the private key, this is known to work when
+libssh2 1.4.0+ is linked against OpenSSL.
+.SH DEFAULT
+As explained above
+.SH PROTOCOLS
+SFTP and SCP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+The "" trick was added in 7.26.0
+.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 CURLOPT_SSH_PRIVATE_KEYFILE "(3), " CURLOPT_SSH_AUTH_TYPES "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.html b/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.html
new file mode 100644 (file)
index 0000000..fc38e72
--- /dev/null
@@ -0,0 +1,65 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SSH_PUBLIC_KEYFILE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SSH_PUBLIC_KEYFILE - set public key file for SSH auth <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_PUBLIC_KEYFILE,
+ &nbsp;                         char *filename);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * pointing to a <span Class="emphasis">filename</span> for your public key. If not used, libcurl defaults to <span Class="bold">$HOME/.ssh/id_dsa.pub</span> if the HOME environment variable is set, and just "id_dsa.pub" in the current directory if HOME is not set. 
+<p class="level0">If an empty string is passed, libcurl will pass no public key to libssh2 which then tries to compute it from the private key, this is known to work when libssh2 1.4.0+ is linked against OpenSSL. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">As explained above <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">SFTP and SCP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">The "" trick was added in 7.26.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SSH_PRIVATE_KEYFILE.html">CURLOPT_SSH_PRIVATE_KEYFILE</a>, <a Class="manpage" href="./CURLOPT_SSH_AUTH_TYPES.html">CURLOPT_SSH_AUTH_TYPES</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.pdf b/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.pdf
new file mode 100644 (file)
index 0000000..c588db2
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_SSLCERT.3 b/docs/libcurl/opts/CURLOPT_SSLCERT.3
new file mode 100644 (file)
index 0000000..7ae54f1
--- /dev/null
@@ -0,0 +1,55 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SSLCERT 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SSLCERT \- set SSL client certificate
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLCERT, char *cert);
+.SH DESCRIPTION
+Pass a pointer to a zero terminated string as parameter. The string should be
+the file name of your client certificate. The default format is "P12" on
+Secure Transport and "PEM" on other engines, and can be changed with
+\fICURLOPT_SSLCERTTYPE(3)\fP.
+
+With NSS or Secure Transport, this can also be the nickname of the certificate
+you wish to authenticate with as it is named in the security database. If you
+want to use a file from the current directory, please precede it with "./"
+prefix, in order to avoid confusion with a nickname.
+
+When using a client certificate, you most likely also need to provide a
+private key with \fICURLOPT_SSLKEY(3)\fP.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+If built TLS enabled.
+.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_SSLCERTTYPE "(3), " CURLOPT_SSLKEY "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SSLCERT.html b/docs/libcurl/opts/CURLOPT_SSLCERT.html
new file mode 100644 (file)
index 0000000..8e3e4bc
--- /dev/null
@@ -0,0 +1,62 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SSLCERT man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SSLCERT - set SSL client certificate <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLCERT, char *cert); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to a zero terminated string as parameter. The string should be the file name of your client certificate. The default format is "P12" on Secure Transport and "PEM" on other engines, and can be changed with <a Class="emphasis" href="./CURLOPT_SSLCERTTYPE.html">CURLOPT_SSLCERTTYPE</a>. 
+<p class="level0">With NSS or Secure Transport, this can also be the nickname of the certificate you wish to authenticate with as it is named in the security database. If you want to use a file from the current directory, please precede it with "./" prefix, in order to avoid confusion with a nickname. 
+<p class="level0">When using a client certificate, you most likely also need to provide a private key with <a Class="emphasis" href="./CURLOPT_SSLKEY.html">CURLOPT_SSLKEY</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">If built TLS enabled. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if TLS enabled, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SSLCERTTYPE.html">CURLOPT_SSLCERTTYPE</a>, <a Class="manpage" href="./CURLOPT_SSLKEY.html">CURLOPT_SSLKEY</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SSLCERT.pdf b/docs/libcurl/opts/CURLOPT_SSLCERT.pdf
new file mode 100644 (file)
index 0000000..7466794
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_SSLCERT.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3 b/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3
new file mode 100644 (file)
index 0000000..b19d517
--- /dev/null
@@ -0,0 +1,48 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SSLCERTTYPE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SSLCERTTYPE \- specify type of the client SSL certificate
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLCERTTYPE, char *type);
+.SH DESCRIPTION
+Pass a pointer to a zero terminated string as parameter. The string should be
+the format of your certificate. Supported formats are "PEM" and "DER", except
+with Secure Transport. OpenSSL (versions 0.9.3 and later) and Secure Transport
+(on iOS 5 or later, or OS X 10.7 or later) also support "P12" for
+PKCS#12-encoded files.
+.SH DEFAULT
+"PEM"
+.SH PROTOCOLS
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+If built TLS enabled. Added in 7.9.3
+.SH RETURN VALUE
+Returns CURLE_OK if TLS is supported, CURLE_UNKNOWN_OPTION if not, or
+CURLE_OUT_OF_MEMORY if there was insufficient heap space.
+.SH "SEE ALSO"
+.BR CURLOPT_SSLCERT "(3), " CURLOPT_SSLKEY "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.html b/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.html
new file mode 100644 (file)
index 0000000..071eeb7
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SSLCERTTYPE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SSLCERTTYPE - specify type of the client SSL certificate <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLCERTTYPE, char *type); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to a zero terminated string as parameter. The string should be the format of your certificate. Supported formats are "PEM" and "DER", except with Secure Transport. OpenSSL (versions 0.9.3 and later) and Secure Transport (on iOS 5 or later, or OS X 10.7 or later) also support "P12" for PKCS#12-encoded files. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">"PEM" <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">If built TLS enabled. Added in 7.9.3 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if TLS is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SSLCERT.html">CURLOPT_SSLCERT</a>, <a Class="manpage" href="./CURLOPT_SSLKEY.html">CURLOPT_SSLKEY</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.pdf b/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.pdf
new file mode 100644 (file)
index 0000000..dd66602
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_SSLENGINE.3 b/docs/libcurl/opts/CURLOPT_SSLENGINE.3
new file mode 100644 (file)
index 0000000..a88a5a7
--- /dev/null
@@ -0,0 +1,48 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SSLENGINE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SSLENGINE \- set SSL engine identifier
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLENGINE, char *id);
+.SH DESCRIPTION
+Pass a pointer to a zero terminated string as parameter. It will be used as
+the identifier for the crypto engine you want to use for your private key.
+
+If the crypto device cannot be loaded, \fICURLE_SSL_ENGINE_NOTFOUND\fP is
+returned.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+If built TLS enabled.
+.SH RETURN VALUE
+Returns CURLE_OK if TLS is supported, CURLE_UNKNOWN_OPTION if not, or
+CURLE_OUT_OF_MEMORY if there was insufficient heap space.
+.SH "SEE ALSO"
+.BR CURLOPT_SSLENGINE_DEFAULT "(3), " CURLOPT_SSLKEY "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SSLENGINE.html b/docs/libcurl/opts/CURLOPT_SSLENGINE.html
new file mode 100644 (file)
index 0000000..7263f40
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SSLENGINE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SSLENGINE - set SSL engine identifier <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLENGINE, char *id); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to a zero terminated string as parameter. It will be used as the identifier for the crypto engine you want to use for your private key. 
+<p class="level0">If the crypto device cannot be loaded, <span Class="emphasis">CURLE_SSL_ENGINE_NOTFOUND</span> is returned. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">If built TLS enabled. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if TLS is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SSLENGINE_DEFAULT.html">CURLOPT_SSLENGINE_DEFAULT</a>, <a Class="manpage" href="./CURLOPT_SSLKEY.html">CURLOPT_SSLKEY</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SSLENGINE.pdf b/docs/libcurl/opts/CURLOPT_SSLENGINE.pdf
new file mode 100644 (file)
index 0000000..a9a478e
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_SSLENGINE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3 b/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3
new file mode 100644 (file)
index 0000000..6570df1
--- /dev/null
@@ -0,0 +1,48 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SSLENGINE_DEFAULT 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SSLENGINE_DEFAULT \- make SSL engine default
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLENGINE_DEFAULT, long val);
+.SH DESCRIPTION
+Pass a long set to 1 as parameter. Sets the actual crypto engine as the
+default for (asymmetric) crypto operations.
+
+If the crypto device cannot be set, \fICURLE_SSL_ENGINE_SETFAILED\fP is
+returned.
+.SH DEFAULT
+None
+.SH PROTOCOLS
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+If built TLS enabled.
+.SH RETURN VALUE
+Returns CURLE_OK if TLS is supported, CURLE_UNKNOWN_OPTION if not, or
+CURLE_OUT_OF_MEMORY if there was insufficient heap space.
+.SH "SEE ALSO"
+.BR CURLOPT_SSLENGINE "(3), " CURLOPT_SSLCERT "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.html b/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.html
new file mode 100644 (file)
index 0000000..75c3bbc
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SSLENGINE_DEFAULT man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SSLENGINE_DEFAULT - make SSL engine default <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLENGINE_DEFAULT, long val); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long set to 1 as parameter. Sets the actual crypto engine as the default for (asymmetric) crypto operations. 
+<p class="level0">If the crypto device cannot be set, <span Class="emphasis">CURLE_SSL_ENGINE_SETFAILED</span> is returned. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">None <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">If built TLS enabled. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if TLS is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SSLENGINE.html">CURLOPT_SSLENGINE</a>, <a Class="manpage" href="./CURLOPT_SSLCERT.html">CURLOPT_SSLCERT</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.pdf b/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.pdf
new file mode 100644 (file)
index 0000000..506cb92
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_SSLKEY.3 b/docs/libcurl/opts/CURLOPT_SSLKEY.3
new file mode 100644 (file)
index 0000000..add69d8
--- /dev/null
@@ -0,0 +1,50 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SSLKEY 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SSLKEY \- specify private keyfile for TLS and SSL client cert
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLKEY, char *keyfile);
+.SH DESCRIPTION
+Pass a pointer to a zero terminated string as parameter. The string should be
+the file name of your private key. The default format is "PEM" and can be
+changed with \fICURLOPT_SSLKEYTYPE(3)\fP.
+
+(iOS and Mac OS X only) This option is ignored if curl was built against
+Secure Transport. Secure Transport expects the private key to be already
+present in the keychain or PKCS#12 file containing the certificate.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+If built TLS enabled.
+.SH RETURN VALUE
+Returns CURLE_OK if TLS is supported, CURLE_UNKNOWN_OPTION if not, or
+CURLE_OUT_OF_MEMORY if there was insufficient heap space.
+.SH "SEE ALSO"
+.BR CURLOPT_SSLKEYTYPE "(3), " CURLOPT_SSLCERT "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SSLKEY.html b/docs/libcurl/opts/CURLOPT_SSLKEY.html
new file mode 100644 (file)
index 0000000..faabcf3
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SSLKEY man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SSLKEY - specify private keyfile for TLS and SSL client cert <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLKEY, char *keyfile); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to a zero terminated string as parameter. The string should be the file name of your private key. The default format is "PEM" and can be changed with <a Class="emphasis" href="./CURLOPT_SSLKEYTYPE.html">CURLOPT_SSLKEYTYPE</a>. 
+<p class="level0">(iOS and Mac OS X only) This option is ignored if curl was built against Secure Transport. Secure Transport expects the private key to be already present in the keychain or PKCS#12 file containing the certificate. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">If built TLS enabled. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if TLS is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SSLKEYTYPE.html">CURLOPT_SSLKEYTYPE</a>, <a Class="manpage" href="./CURLOPT_SSLCERT.html">CURLOPT_SSLCERT</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SSLKEY.pdf b/docs/libcurl/opts/CURLOPT_SSLKEY.pdf
new file mode 100644 (file)
index 0000000..fe27c02
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_SSLKEY.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3 b/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3
new file mode 100644 (file)
index 0000000..d491634
--- /dev/null
@@ -0,0 +1,50 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SSLKEYTYPE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SSLKEYTYPE \- set type of the private key file
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLKEYTYPE, char *type);
+.SH DESCRIPTION
+Pass a pointer to a zero terminated string as parameter. The string should be
+the format of your private key. Supported formats are "PEM", "DER" and "ENG".
+
+The format "ENG" enables you to load the private key from a crypto engine. In
+this case \fICURLOPT_SSLKEY(3)\fP is used as an identifier passed to the
+engine. You have to set the crypto engine with \fICURLOPT_SSLENGINE(3)\fP.
+\&"DER" format key file currently does not work because of a bug in OpenSSL.
+.SH DEFAULT
+"PEM"
+.SH PROTOCOLS
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+If built TLS enabled.
+.SH RETURN VALUE
+Returns CURLE_OK if TLS is supported, CURLE_UNKNOWN_OPTION if not, or
+CURLE_OUT_OF_MEMORY if there was insufficient heap space.
+.SH "SEE ALSO"
+.BR CURLOPT_SSLKEY "(3), " CURLOPT_SSLCERT "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.html b/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.html
new file mode 100644 (file)
index 0000000..be6b2bd
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SSLKEYTYPE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SSLKEYTYPE - set type of the private key file <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLKEYTYPE, char *type); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to a zero terminated string as parameter. The string should be the format of your private key. Supported formats are "PEM", "DER" and "ENG". 
+<p class="level0">The format "ENG" enables you to load the private key from a crypto engine. In this case <a Class="emphasis" href="./CURLOPT_SSLKEY.html">CURLOPT_SSLKEY</a> is used as an identifier passed to the engine. You have to set the crypto engine with <a Class="emphasis" href="./CURLOPT_SSLENGINE.html">CURLOPT_SSLENGINE</a>. "DER" format key file currently does not work because of a bug in OpenSSL. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">"PEM" <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">If built TLS enabled. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if TLS is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SSLKEY.html">CURLOPT_SSLKEY</a>, <a Class="manpage" href="./CURLOPT_SSLCERT.html">CURLOPT_SSLCERT</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.pdf b/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.pdf
new file mode 100644 (file)
index 0000000..f5446ae
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_SSLVERSION.3 b/docs/libcurl/opts/CURLOPT_SSLVERSION.3
new file mode 100644 (file)
index 0000000..a10dabd
--- /dev/null
@@ -0,0 +1,78 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SSLVERSION 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SSLVERSION \- set preferred TLS/SSL version
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLVERSION, long version);
+.SH DESCRIPTION
+Pass a long as parameter to control which version of SSL/TLS to attempt to
+use.
+
+Use one of the available defines for this purpose. The available options are:
+.RS
+.IP CURL_SSLVERSION_DEFAULT
+The default action. This will attempt to figure out the remote SSL protocol
+version.
+.IP CURL_SSLVERSION_TLSv1
+TLSv1.x
+.IP CURL_SSLVERSION_SSLv2
+SSLv2
+.IP CURL_SSLVERSION_SSLv3
+SSLv3
+.IP CURL_SSLVERSION_TLSv1_0
+TLSv1.0 (Added in 7.34.0)
+.IP CURL_SSLVERSION_TLSv1_1
+TLSv1.1 (Added in 7.34.0)
+.IP CURL_SSLVERSION_TLSv1_2
+TLSv1.2 (Added in 7.34.0)
+.RE
+.SH DEFAULT
+CURL_SSLVERSION_DEFAULT
+.SH PROTOCOLS
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
+
+  /* ask libcurl to use TLS version 1.0 or later */
+  curl_easy_setopt(curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1);
+
+  /* Perform the request */
+  curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+SSLv2 is disabled by default since 7.18.1. Other SSL versions availability may
+vary depending on which backend libcurl has been built to use.
+
+SSLv3 is disabled by default since 7.39.0.
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_USE_SSL "(3), " CURLOPT_HTTP_VERSION "(3), "
+.BR CURLOPT_IPRESOLVE "(3) "
diff --git a/docs/libcurl/opts/CURLOPT_SSLVERSION.html b/docs/libcurl/opts/CURLOPT_SSLVERSION.html
new file mode 100644 (file)
index 0000000..efbca5b
--- /dev/null
@@ -0,0 +1,89 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SSLVERSION man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SSLVERSION - set preferred TLS/SSL version <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLVERSION, long version); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long as parameter to control which version of SSL/TLS to attempt to use. 
+<p class="level0">Use one of the available defines for this purpose. The available options are: 
+<p class="level1">
+<p class="level0"><a name="CURLSSLVERSIONDEFAULT"></a><span class="nroffip">CURL_SSLVERSION_DEFAULT</span> 
+<p class="level1">The default action. This will attempt to figure out the remote SSL protocol version. 
+<p class="level0"><a name="CURLSSLVERSIONTLSv1"></a><span class="nroffip">CURL_SSLVERSION_TLSv1</span> 
+<p class="level1">TLSv1.x 
+<p class="level0"><a name="CURLSSLVERSIONSSLv2"></a><span class="nroffip">CURL_SSLVERSION_SSLv2</span> 
+<p class="level1">SSLv2 
+<p class="level0"><a name="CURLSSLVERSIONSSLv3"></a><span class="nroffip">CURL_SSLVERSION_SSLv3</span> 
+<p class="level1">SSLv3 
+<p class="level0"><a name="CURLSSLVERSIONTLSv10"></a><span class="nroffip">CURL_SSLVERSION_TLSv1_0</span> 
+<p class="level1">TLSv1.0 (Added in 7.34.0) 
+<p class="level0"><a name="CURLSSLVERSIONTLSv11"></a><span class="nroffip">CURL_SSLVERSION_TLSv1_1</span> 
+<p class="level1">TLSv1.1 (Added in 7.34.0) 
+<p class="level0"><a name="CURLSSLVERSIONTLSv12"></a><span class="nroffip">CURL_SSLVERSION_TLSv1_2</span> 
+<p class="level1">TLSv1.2 (Added in 7.34.0) 
+<p class="level0"><a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">CURL_SSLVERSION_DEFAULT <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre>
+<p class="level0">CURL *curl = curl_easy_init();
+ if(curl) {
+ &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
+ <p class="level0">&nbsp; /* ask libcurl to use TLS version 1.0 or later */
+ &nbsp; curl_easy_setopt(curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1);
+ <p class="level0">&nbsp; /* Perform the request */
+ &nbsp; curl_easy_perform(curl);
+ }
+ </pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">SSLv2 is disabled by default since 7.18.1. Other SSL versions availability may vary depending on which backend libcurl has been built to use. 
+<p class="level0">SSLv3 is disabled by default since 7.39.0. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_USE_SSL.html">CURLOPT_USE_SSL</a>, <a Class="manpage" href="./CURLOPT_HTTP_VERSION.html">CURLOPT_HTTP_VERSION</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_IPRESOLVE.html">CURLOPT_IPRESOLVE</a>, <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SSLVERSION.pdf b/docs/libcurl/opts/CURLOPT_SSLVERSION.pdf
new file mode 100644 (file)
index 0000000..ed73b15
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_SSLVERSION.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3 b/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3
new file mode 100644 (file)
index 0000000..7e05a59
--- /dev/null
@@ -0,0 +1,65 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SSL_CIPHER_LIST 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SSL_CIPHER_LIST \- specify ciphers to use for TLS
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_CIPHER_LIST, char *list);
+.SH DESCRIPTION
+Pass a char *, pointing to a zero terminated string holding the list of
+ciphers to use for the SSL connection. The list must be syntactically correct,
+it consists of one or more cipher strings separated by colons. Commas or
+spaces are also acceptable separators but colons are normally used, \&!, \&-
+and \&+ can be used as operators.
+
+For OpenSSL and GnuTLS valid examples of cipher lists include 'RC4-SHA',
+\'SHA1+DES\', 'TLSv1' and 'DEFAULT'. The default list is normally set when you
+compile OpenSSL.
+
+You'll find more details about cipher lists on this URL:
+
+ http://www.openssl.org/docs/apps/ciphers.html
+
+For NSS, valid examples of cipher lists include 'rsa_rc4_128_md5',
+\'rsa_aes_128_sha\', etc. With NSS you don't add/remove ciphers. If one uses
+this option then all known ciphers are disabled and only those passed in are
+enabled.
+
+You'll find more details about the NSS cipher lists on this URL:
+
+ http://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html#Directives
+.SH DEFAULT
+NULL, use internal default
+.SH PROTOCOLS
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+If built TLS enabled.
+.SH RETURN VALUE
+Returns CURLE_OK if TLS is supported, CURLE_UNKNOWN_OPTION if not, or
+CURLE_OUT_OF_MEMORY if there was insufficient heap space.
+.SH "SEE ALSO"
+.BR CURLOPT_SSLVERSION "(3), " CURLOPT_USE_SSL "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.html b/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.html
new file mode 100644 (file)
index 0000000..eab61ca
--- /dev/null
@@ -0,0 +1,66 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SSL_CIPHER_LIST man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SSL_CIPHER_LIST - specify ciphers to use for TLS <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_CIPHER_LIST, char *list); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char *, pointing to a zero terminated string holding the list of ciphers to use for the SSL connection. The list must be syntactically correct, it consists of one or more cipher strings separated by colons. Commas or spaces are also acceptable separators but colons are normally used, !, - and + can be used as operators. 
+<p class="level0">For OpenSSL and GnuTLS valid examples of cipher lists include 'RC4-SHA', &acute;SHA1+DES&acute;, 'TLSv1' and 'DEFAULT'. The default list is normally set when you compile OpenSSL. 
+<p class="level0">You'll find more details about cipher lists on this URL: 
+<p class="level0">&nbsp;<a href="http://www.openssl.org/docs/apps/ciphers.html">http://www.openssl.org/docs/apps/ciphers.html</a> 
+<p class="level0">For NSS, valid examples of cipher lists include 'rsa_rc4_128_md5', &acute;rsa_aes_128_sha&acute;, etc. With NSS you don't add/remove ciphers. If one uses this option then all known ciphers are disabled and only those passed in are enabled. 
+<p class="level0">You'll find more details about the NSS cipher lists on this URL: 
+<p class="level0">&nbsp;<a href="http://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html#Directives">http://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html#Directives</a> <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL, use internal default <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">If built TLS enabled. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if TLS is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SSLVERSION.html">CURLOPT_SSLVERSION</a>, <a Class="manpage" href="./CURLOPT_USE_SSL.html">CURLOPT_USE_SSL</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.pdf b/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.pdf
new file mode 100644 (file)
index 0000000..4b0f4d0
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3 b/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3
new file mode 100644 (file)
index 0000000..4873cdd
--- /dev/null
@@ -0,0 +1,45 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SSL_CTX_DATA 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SSL_CTX_DATA \- custom pointer passed to ssl_ctx callback
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_CTX_DATA, void *pointer);
+.SH DESCRIPTION
+Data \fIpointer\fP to pass to the ssl context callback set by the option
+\fICURLOPT_SSL_CTX_FUNCTION(3)\fP, this is the pointer you'll get as third
+parameter.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.11.0. Only used with the OpenSSL backend.
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_SSL_CTX_FUNCTION "(3), " CURLOPT_SSLVERSION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.html b/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.html
new file mode 100644 (file)
index 0000000..7c3995d
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SSL_CTX_DATA man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SSL_CTX_DATA - custom pointer passed to ssl_ctx callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_CTX_DATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Data <span Class="emphasis">pointer</span> to pass to the ssl context callback set by the option <a Class="emphasis" href="./CURLOPT_SSL_CTX_FUNCTION.html">CURLOPT_SSL_CTX_FUNCTION</a>, this is the pointer you'll get as third parameter. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.11.0. Only used with the OpenSSL backend. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SSL_CTX_FUNCTION.html">CURLOPT_SSL_CTX_FUNCTION</a>, <a Class="manpage" href="./CURLOPT_SSLVERSION.html">CURLOPT_SSLVERSION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.pdf b/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.pdf
new file mode 100644 (file)
index 0000000..8e9f8bd
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3
new file mode 100644 (file)
index 0000000..1e8dbe5
--- /dev/null
@@ -0,0 +1,70 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SSL_CTX_FUNCTION 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SSL_CTX_FUNCTION \- openssl specific callback to do SSL magic
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode ssl_ctx_callback(CURL *curl, void *ssl_ctx, void *userptr);
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_CTX_FUNCTION,
+                          ssl_ctx_callback);
+.SH DESCRIPTION
+This option only works for libcurl powered by OpenSSL. If libcurl was built
+against another SSL library, this functionality is absent.
+
+Pass a pointer to your callback function, which should match the prototype
+shown above.
+
+This callback function gets called by libcurl just before the initialization
+of a SSL connection after having processed all other SSL related options to
+give a last chance to an application to modify the behaviour of openssl's ssl
+initialization. The \fIsslctx\fP parameter is actually a pointer to an openssl
+\fISSL_CTX\fP. If an error is returned from the callback, no attempt to
+establish a connection is made and the perform operation will return the error
+code.  Set the \fIuserptr\fP argument with the \fICURLOPT_SSL_CTX_DATA(3)\fP
+option.
+
+This function will get called on all new connections made to a server, during
+the SSL negotiation. The SSL_CTX pointer will be a new one every time.
+
+To use this properly, a non-trivial amount of knowledge of the openssl
+libraries is necessary. For example, using this function allows you to use
+openssl callbacks to add additional validation code for certificates, and even
+to change the actual URI of a HTTPS request (example used in the lib509 test
+case).  See also the example section for a replacement of the key, certificate
+and trust file settings.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.11.0. Only supported when built with OpenSSL.
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_SSL_CTX_DATA "(3), " CURLOPT_SSL_VERIFYPEER "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.html b/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.html
new file mode 100644 (file)
index 0000000..2b0f441
--- /dev/null
@@ -0,0 +1,69 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SSL_CTX_FUNCTION man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SSL_CTX_FUNCTION - openssl specific callback to do SSL magic <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLcode ssl_ctx_callback(CURL *curl, void *ssl_ctx, void *userptr);
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_CTX_FUNCTION,
+ &nbsp;                         ssl_ctx_callback);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">This option only works for libcurl powered by OpenSSL. If libcurl was built against another SSL library, this functionality is absent. 
+<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
+<p class="level0">This callback function gets called by libcurl just before the initialization of a SSL connection after having processed all other SSL related options to give a last chance to an application to modify the behaviour of openssl's ssl initialization. The <span Class="emphasis">sslctx</span> parameter is actually a pointer to an openssl <span Class="emphasis">SSL_CTX</span>. If an error is returned from the callback, no attempt to establish a connection is made and the perform operation will return the error code.  Set the <span Class="emphasis">userptr</span> argument with the <a Class="emphasis" href="./CURLOPT_SSL_CTX_DATA.html">CURLOPT_SSL_CTX_DATA</a> option. 
+<p class="level0">This function will get called on all new connections made to a server, during the SSL negotiation. The SSL_CTX pointer will be a new one every time. 
+<p class="level0">To use this properly, a non-trivial amount of knowledge of the openssl libraries is necessary. For example, using this function allows you to use openssl callbacks to add additional validation code for certificates, and even to change the actual URI of a HTTPS request (example used in the lib509 test case).  See also the example section for a replacement of the key, certificate and trust file settings. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.11.0. Only supported when built with OpenSSL. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SSL_CTX_DATA.html">CURLOPT_SSL_CTX_DATA</a>, <a Class="manpage" href="./CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.pdf b/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.pdf
new file mode 100644 (file)
index 0000000..af3d959
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3 b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3
new file mode 100644 (file)
index 0000000..6716f72
--- /dev/null
@@ -0,0 +1,45 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SSL_ENABLE_ALPN 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SSL_ENABLE_ALPN \- enable ALPN
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_ENABLE_ALPN, long npn);
+.SH DESCRIPTION
+Pass a long as parameter, 0 or 1 where 1 is for enable and 0 for disable. This
+option enables/disables ALPN in the SSL handshake (if the SSL backend libcurl
+is built to use supports it), which can be used to negotiate http2.
+.SH DEFAULT
+1, enabled
+.SH PROTOCOLS
+HTTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.36.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_SSL_ENABLE_NPN "(3), " CURLOPT_SSL_OPTIONS "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.html b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.html
new file mode 100644 (file)
index 0000000..69d6df2
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SSL_ENABLE_ALPN man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SSL_ENABLE_ALPN - enable ALPN <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_ENABLE_ALPN, long npn); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long as parameter, 0 or 1 where 1 is for enable and 0 for disable. This option enables/disables ALPN in the SSL handshake (if the SSL backend libcurl is built to use supports it), which can be used to negotiate http2. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">1, enabled <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.36.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SSL_ENABLE_NPN.html">CURLOPT_SSL_ENABLE_NPN</a>, <a Class="manpage" href="./CURLOPT_SSL_OPTIONS.html">CURLOPT_SSL_OPTIONS</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.pdf b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.pdf
new file mode 100644 (file)
index 0000000..96f158c
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3 b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3
new file mode 100644 (file)
index 0000000..5db9b51
--- /dev/null
@@ -0,0 +1,45 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SSL_ENABLE_NPN 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SSL_ENABLE_NPN \- enable NPN
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_ENABLE_NPN, long npn);
+.SH DESCRIPTION
+Pass a long as parameter, 0 or 1 where 1 is for enable and 0 for disable. This
+option enables/disables NPN in the SSL handshake (if the SSL backend libcurl
+is built to use supports it), which can be used to negotiate http2.
+.SH DEFAULT
+1, enabled
+.SH PROTOCOLS
+HTTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.36.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_SSL_ENABLE_ALPN "(3), " CURLOPT_SSL_OPTIONS "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.html b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.html
new file mode 100644 (file)
index 0000000..3278e95
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SSL_ENABLE_NPN man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SSL_ENABLE_NPN - enable NPN <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_ENABLE_NPN, long npn); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long as parameter, 0 or 1 where 1 is for enable and 0 for disable. This option enables/disables NPN in the SSL handshake (if the SSL backend libcurl is built to use supports it), which can be used to negotiate http2. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">1, enabled <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.36.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SSL_ENABLE_ALPN.html">CURLOPT_SSL_ENABLE_ALPN</a>, <a Class="manpage" href="./CURLOPT_SSL_OPTIONS.html">CURLOPT_SSL_OPTIONS</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.pdf b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.pdf
new file mode 100644 (file)
index 0000000..49767cb
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3 b/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3
new file mode 100644 (file)
index 0000000..09bcb96
--- /dev/null
@@ -0,0 +1,51 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SSL_OPTIONS 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SSL_OPTIONS \- set SSL behavior options
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_OPTIONS, long bitmask);
+.SH DESCRIPTION
+Pass a long with a bitmask to tell libcurl about specific SSL behaviors.
+
+\fICURLSSLOPT_ALLOW_BEAST\fP is the only supported bit and by setting this the
+user will tell libcurl to not attempt to use any workarounds for a security
+flaw in the SSL3 and TLS1.0 protocols.  If this option isn't used or this bit
+is set to 0, the SSL layer libcurl uses may use a work-around for this flaw
+although it might cause interoperability problems with some (older) SSL
+implementations. WARNING: avoiding this work-around lessens the security, and
+by setting this option to 1 you ask for exactly that.
+.SH DEFAULT
+0
+.SH PROTOCOLS
+All TLS-based protocols
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.25.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_SSLVERSION "(3), " CURLOPT_SSL_CIPHER_LIST "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.html b/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.html
new file mode 100644 (file)
index 0000000..f268c59
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SSL_OPTIONS man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SSL_OPTIONS - set SSL behavior options <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_OPTIONS, long bitmask); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long with a bitmask to tell libcurl about specific SSL behaviors. 
+<p class="level0"><span Class="emphasis">CURLSSLOPT_ALLOW_BEAST</span> is the only supported bit and by setting this the user will tell libcurl to not attempt to use any workarounds for a security flaw in the SSL3 and TLS1.0 protocols.  If this option isn't used or this bit is set to 0, the SSL layer libcurl uses may use a work-around for this flaw although it might cause interoperability problems with some (older) SSL implementations. WARNING: avoiding this work-around lessens the security, and by setting this option to 1 you ask for exactly that. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All TLS-based protocols <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.25.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SSLVERSION.html">CURLOPT_SSLVERSION</a>, <a Class="manpage" href="./CURLOPT_SSL_CIPHER_LIST.html">CURLOPT_SSL_CIPHER_LIST</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.pdf b/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.pdf
new file mode 100644 (file)
index 0000000..c974eb5
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3 b/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3
new file mode 100644 (file)
index 0000000..4baa061
--- /dev/null
@@ -0,0 +1,49 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SSL_SESSIONID_CACHE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SSL_SESSIONID_CACHE \- enable/disable use of the SSL session-ID cache
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_SESSIONID_CACHE,
+                         long enabled);
+.SH DESCRIPTION
+Pass a long set to 0 to disable libcurl's use of SSL session-ID caching. Set
+this to 1 to enable it. By default all transfers are done using the cache
+enabled. While nothing ever should get hurt by attempting to reuse SSL
+session-IDs, there seem to be or have been broken SSL implementations in the
+wild that may require you to disable this in order for you to succeed.
+.SH DEFAULT
+1
+.SH PROTOCOLS
+All TLS-based
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.16.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_DNS_CACHE_TIMEOUT "(3), " CURLOPT_SSLVERSION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.html b/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.html
new file mode 100644 (file)
index 0000000..0f32572
--- /dev/null
@@ -0,0 +1,64 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SSL_SESSIONID_CACHE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SSL_SESSIONID_CACHE - enable/disable use of the SSL session-ID cache <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_SESSIONID_CACHE,
+ &nbsp;                        long enabled);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long set to 0 to disable libcurl's use of SSL session-ID caching. Set this to 1 to enable it. By default all transfers are done using the cache enabled. While nothing ever should get hurt by attempting to reuse SSL session-IDs, there seem to be or have been broken SSL implementations in the wild that may require you to disable this in order for you to succeed. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">1 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All TLS-based <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.16.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_DNS_CACHE_TIMEOUT.html">CURLOPT_DNS_CACHE_TIMEOUT</a>, <a Class="manpage" href="./CURLOPT_SSLVERSION.html">CURLOPT_SSLVERSION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.pdf b/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.pdf
new file mode 100644 (file)
index 0000000..467c624
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3 b/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3
new file mode 100644 (file)
index 0000000..ca39a09
--- /dev/null
@@ -0,0 +1,77 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SSL_VERIFYHOST 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SSL_VERIFYHOST \- verify the certificate's name against host
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_VERIFYHOST, long verify);
+.SH DESCRIPTION
+Pass a long as parameter specifying what to \fIverify\fP.
+
+This option determines whether libcurl verifies that the server cert is for
+the server it is known as.
+
+When negotiating TLS and SSL connections, the server sends a certificate
+indicating its identity.
+
+When \fICURLOPT_SSL_VERIFYHOST(3)\fP is 2, that certificate must indicate that
+the server is the server to which you meant to connect, or the connection
+fails. Simply put, it means it has to have the same name in the certificate as
+is in the URL you operate against.
+
+Curl considers the server the intended one when the Common Name field or a
+Subject Alternate Name field in the certificate matches the host name in the
+URL to which you told Curl to connect.
+
+When the \fIverify\fP value is 1, \fIcurl_easy_setopt\fP will return an error
+and the option value will not be changed.  It was previously (in 7.28.0 and
+earlier) a debug option of some sorts, but it is no longer supported due to
+frequently leading to programmer mistakes. Future versions will stop returning
+an error for 1 and just treat 1 and 2 the same.
+
+When the \fIverify\fP value is 0, the connection succeeds regardless of the
+names in the certificate. Use that ability with caution!
+
+The default value for this option is 2.
+
+This option controls checking the server's certificate's claimed identity.
+The server could be lying.  To control lying, see
+\fICURLOPT_SSL_VERIFYPEER(3)\fP.  If libcurl is built against NSS and
+\fICURLOPT_SSL_VERIFYPEER(3)\fP is zero, \fICURLOPT_SSL_VERIFYHOST(3)\fP is
+also set to zero and cannot be overridden.
+.SH DEFAULT
+2
+.SH PROTOCOLS
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+If built TLS enabled.
+.SH RETURN VALUE
+Returns CURLE_OK if TLS is supported, and CURLE_UNKNOWN_OPTION if not.
+
+If 1 is set as argument, \fICURLE_BAD_FUNCTION_ARGUMENT\fP is returned.
+.SH "SEE ALSO"
+.BR CURLOPT_SSL_VERIFYPEER "(3), " CURLOPT_CAINFO "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.html b/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.html
new file mode 100644 (file)
index 0000000..7de718d
--- /dev/null
@@ -0,0 +1,69 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SSL_VERIFYHOST man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SSL_VERIFYHOST - verify the certificate's name against host <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_VERIFYHOST, long verify); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long as parameter specifying what to <span Class="emphasis">verify</span>. 
+<p class="level0">This option determines whether libcurl verifies that the server cert is for the server it is known as. 
+<p class="level0">When negotiating TLS and SSL connections, the server sends a certificate indicating its identity. 
+<p class="level0">When <a Class="emphasis" href="./CURLOPT_SSL_VERIFYHOST.html">CURLOPT_SSL_VERIFYHOST</a> is 2, that certificate must indicate that the server is the server to which you meant to connect, or the connection fails. Simply put, it means it has to have the same name in the certificate as is in the URL you operate against. 
+<p class="level0">Curl considers the server the intended one when the Common Name field or a Subject Alternate Name field in the certificate matches the host name in the URL to which you told Curl to connect. 
+<p class="level0">When the <span Class="emphasis">verify</span> value is 1, <span Class="emphasis">curl_easy_setopt</span> will return an error and the option value will not be changed.  It was previously (in 7.28.0 and earlier) a debug option of some sorts, but it is no longer supported due to frequently leading to programmer mistakes. Future versions will stop returning an error for 1 and just treat 1 and 2 the same. 
+<p class="level0">When the <span Class="emphasis">verify</span> value is 0, the connection succeeds regardless of the names in the certificate. Use that ability with caution! 
+<p class="level0">The default value for this option is 2. 
+<p class="level0">This option controls checking the server's certificate's claimed identity. The server could be lying.  To control lying, see <a Class="emphasis" href="./CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a>.  If libcurl is built against NSS and <a Class="emphasis" href="./CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a> is zero, <a Class="emphasis" href="./CURLOPT_SSL_VERIFYHOST.html">CURLOPT_SSL_VERIFYHOST</a> is also set to zero and cannot be overridden. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">2 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">If built TLS enabled. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if TLS is supported, and CURLE_UNKNOWN_OPTION if not. 
+<p class="level0">If 1 is set as argument, <span Class="emphasis">CURLE_BAD_FUNCTION_ARGUMENT</span> is returned. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a>, <a Class="manpage" href="./CURLOPT_CAINFO.html">CURLOPT_CAINFO</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.pdf b/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.pdf
new file mode 100644 (file)
index 0000000..3ba7cfd
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3 b/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3
new file mode 100644 (file)
index 0000000..f2bad74
--- /dev/null
@@ -0,0 +1,71 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SSL_VERIFYPEER 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SSL_VERIFYPEER \- verify the peer's SSL certificate
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_VERIFYPEER, long verify);
+.SH DESCRIPTION
+Pass a long as parameter to enable or disable.
+
+This option determines whether curl verifies the authenticity of the peer's
+certificate. A value of 1 means curl verifies; 0 (zero) means it doesn't.
+
+When negotiating a TLS or SSL connection, the server sends a certificate
+indicating its identity.  Curl verifies whether the certificate is authentic,
+i.e. that you can trust that the server is who the certificate says it is.
+This trust is based on a chain of digital signatures, rooted in certification
+authority (CA) certificates you supply.  curl uses a default bundle of CA
+certificates (the path for that is determined at build time) and you can
+specify alternate certificates with the \fICURLOPT_CAINFO(3)\fP option or the
+\fICURLOPT_CAPATH(3)\fP option.
+
+When \fICURLOPT_SSL_VERIFYPEER(3)\fP is enabled, and the verification fails to
+prove that the certificate is authentic, the connection fails.  When the
+option is zero, the peer certificate verification succeeds regardless.
+
+Authenticating the certificate is not enough to be sure about the server. You
+typically also want to ensure that the server is the server you mean to be
+talking to.  Use \fICURLOPT_SSL_VERIFYHOST(3)\fP for that. The check that the
+host name in the certificate is valid for the host name you're connecting to
+is done independently of the \fICURLOPT_SSL_VERIFYPEER(3)\fP option.
+
+WARNING: disabling verification of the certificate allows bad guys to
+man-in-the-middle the communication without you knowing it. Disabling
+verification makes the communication insecure. Just having encryption on a
+transfer is not enough as you cannot be sure that you are communicating with
+the correct end-point.
+.SH DEFAULT
+By default, curl assumes a value of 1.
+.SH PROTOCOLS
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+If built TLS enabled.
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_SSL_VERIFYHOST "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.html b/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.html
new file mode 100644 (file)
index 0000000..7b9a56c
--- /dev/null
@@ -0,0 +1,65 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_SSL_VERIFYPEER man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_SSL_VERIFYPEER - verify the peer's SSL certificate <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_VERIFYPEER, long verify); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long as parameter to enable or disable. 
+<p class="level0">This option determines whether curl verifies the authenticity of the peer's certificate. A value of 1 means curl verifies; 0 (zero) means it doesn't. 
+<p class="level0">When negotiating a TLS or SSL connection, the server sends a certificate indicating its identity.  Curl verifies whether the certificate is authentic, i.e. that you can trust that the server is who the certificate says it is. This trust is based on a chain of digital signatures, rooted in certification authority (CA) certificates you supply.  curl uses a default bundle of CA certificates (the path for that is determined at build time) and you can specify alternate certificates with the <a Class="emphasis" href="./CURLOPT_CAINFO.html">CURLOPT_CAINFO</a> option or the <a Class="emphasis" href="./CURLOPT_CAPATH.html">CURLOPT_CAPATH</a> option. 
+<p class="level0">When <a Class="emphasis" href="./CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a> is enabled, and the verification fails to prove that the certificate is authentic, the connection fails.  When the option is zero, the peer certificate verification succeeds regardless. 
+<p class="level0">Authenticating the certificate is not enough to be sure about the server. You typically also want to ensure that the server is the server you mean to be talking to.  Use <a Class="emphasis" href="./CURLOPT_SSL_VERIFYHOST.html">CURLOPT_SSL_VERIFYHOST</a> for that. The check that the host name in the certificate is valid for the host name you're connecting to is done independently of the <a Class="emphasis" href="./CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a> option. 
+<p class="level0">WARNING: disabling verification of the certificate allows bad guys to man-in-the-middle the communication without you knowing it. Disabling verification makes the communication insecure. Just having encryption on a transfer is not enough as you cannot be sure that you are communicating with the correct end-point. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">By default, curl assumes a value of 1. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">If built TLS enabled. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SSL_VERIFYHOST.html">CURLOPT_SSL_VERIFYHOST</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.pdf b/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.pdf
new file mode 100644 (file)
index 0000000..2bba563
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_STDERR.3 b/docs/libcurl/opts/CURLOPT_STDERR.3
new file mode 100644 (file)
index 0000000..67e9501
--- /dev/null
@@ -0,0 +1,45 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_STDERR 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_STDERR \- redirect stderr to another stream
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STDERR, FILE *stream);
+.SH DESCRIPTION
+Pass a FILE * as parameter. Tell libcurl to use this \fIstream\fP instead of
+stderr when showing the progress meter and displaying \fICURLOPT_VERBOSE(3)\fP
+data.
+.SH DEFAULT
+stderr
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_VERBOSE "(3), " CURLOPT_NOPROGRESS "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_STDERR.html b/docs/libcurl/opts/CURLOPT_STDERR.html
new file mode 100644 (file)
index 0000000..50fcd93
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_STDERR man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_STDERR - redirect stderr to another stream <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STDERR, FILE *stream); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a FILE * as parameter. Tell libcurl to use this <span Class="emphasis">stream</span> instead of stderr when showing the progress meter and displaying <a Class="emphasis" href="./CURLOPT_VERBOSE.html">CURLOPT_VERBOSE</a> data. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">stderr <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_VERBOSE.html">CURLOPT_VERBOSE</a>, <a Class="manpage" href="./CURLOPT_NOPROGRESS.html">CURLOPT_NOPROGRESS</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_STDERR.pdf b/docs/libcurl/opts/CURLOPT_STDERR.pdf
new file mode 100644 (file)
index 0000000..18a1a52
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_STDERR.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3 b/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3
new file mode 100644 (file)
index 0000000..daf3df4
--- /dev/null
@@ -0,0 +1,47 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_TCP_KEEPALIVE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_TCP_KEEPALIVE \- enable TCP keep-alive probing
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPALIVE, long probe);
+.SH DESCRIPTION
+Pass a long. If set to 1, TCP keepalive probes will be sent. The delay and
+frequency of these probes can be controlled by the
+\fICURLOPT_TCP_KEEPIDLE(3)\fP and \fICURLOPT_TCP_KEEPINTVL(3)\fP options,
+provided the operating system supports them. Set to 0 (default behavior) to
+disable keepalive probes
+.SH DEFAULT
+0
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.25.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_TCP_KEEPIDLE "(3), " CURLOPT_TCP_KEEPINTVL "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.html b/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.html
new file mode 100644 (file)
index 0000000..765594e
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_TCP_KEEPALIVE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_TCP_KEEPALIVE - enable TCP keep-alive probing <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPALIVE, long probe); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long. If set to 1, TCP keepalive probes will be sent. The delay and frequency of these probes can be controlled by the <a Class="emphasis" href="./CURLOPT_TCP_KEEPIDLE.html">CURLOPT_TCP_KEEPIDLE</a> and <a Class="emphasis" href="./CURLOPT_TCP_KEEPINTVL.html">CURLOPT_TCP_KEEPINTVL</a> options, provided the operating system supports them. Set to 0 (default behavior) to disable keepalive probes <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.25.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_TCP_KEEPIDLE.html">CURLOPT_TCP_KEEPIDLE</a>, <a Class="manpage" href="./CURLOPT_TCP_KEEPINTVL.html">CURLOPT_TCP_KEEPINTVL</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.pdf b/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.pdf
new file mode 100644 (file)
index 0000000..3f60961
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3 b/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3
new file mode 100644 (file)
index 0000000..1724824
--- /dev/null
@@ -0,0 +1,45 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_TCP_KEEPIDLE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_TCP_KEEPIDLE \- set TCP keep-alive idle time wait
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPIDLE, long delay);
+.SH DESCRIPTION
+Pass a long. Sets the \fIdelay\fP, in seconds, that the operating system will
+wait while the connection is idle before sending keepalive probes. Not all
+operating systems support this option.
+.SH DEFAULT
+?
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.25.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_TCP_KEEPALIVE "(3), " CURLOPT_TCP_KEEPINTVL "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.html b/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.html
new file mode 100644 (file)
index 0000000..a575947
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_TCP_KEEPIDLE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_TCP_KEEPIDLE - set TCP keep-alive idle time wait <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPIDLE, long delay); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long. Sets the <span Class="emphasis">delay</span>, in seconds, that the operating system will wait while the connection is idle before sending keepalive probes. Not all operating systems support this option. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">? <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.25.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_TCP_KEEPALIVE.html">CURLOPT_TCP_KEEPALIVE</a>, <a Class="manpage" href="./CURLOPT_TCP_KEEPINTVL.html">CURLOPT_TCP_KEEPINTVL</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.pdf b/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.pdf
new file mode 100644 (file)
index 0000000..cdcc179
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3 b/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3
new file mode 100644 (file)
index 0000000..e4bcf7f
--- /dev/null
@@ -0,0 +1,43 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_TCP_KEEPINTVL 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_TCP_KEEPINTVL \- set TCP keep-alive interval
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPINTVL, long interval);
+.SH DESCRIPTION
+Pass a long. Sets the interval, in seconds, that the operating system will
+wait between sending keepalive probes. Not all operating systems support this
+option. (Added in 7.25.0)
+.SH DEFAULT
+.SH PROTOCOLS
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_TCP_KEEPALIVE "(3), " CURLOPT_TCP_KEEPIDLE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.html b/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.html
new file mode 100644 (file)
index 0000000..b7579fb
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_TCP_KEEPINTVL man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_TCP_KEEPINTVL - set TCP keep-alive interval <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPINTVL, long interval); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long. Sets the interval, in seconds, that the operating system will wait between sending keepalive probes. Not all operating systems support this option. (Added in 7.25.0) <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0"><a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0"><a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_TCP_KEEPALIVE.html">CURLOPT_TCP_KEEPALIVE</a>, <a Class="manpage" href="./CURLOPT_TCP_KEEPIDLE.html">CURLOPT_TCP_KEEPIDLE</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.pdf b/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.pdf
new file mode 100644 (file)
index 0000000..7982bab
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3 b/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3
new file mode 100644 (file)
index 0000000..bd13516
--- /dev/null
@@ -0,0 +1,56 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_TCP_NODELAY 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_TCP_NODELAY \- set the TCP_NODELAY option
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_NODELAY, long nodelay);
+.SH DESCRIPTION
+Pass a long specifying whether the TCP_NODELAY option is to be set or cleared
+(1 = set, 0 = clear). The option is cleared by default. This will have no
+effect after the connection has been established.
+
+Setting this option will disable TCP's Nagle algorithm. The purpose of this
+algorithm is to try to minimize the number of small packets on the network
+(where "small packets" means TCP segments less than the Maximum Segment Size
+(MSS) for the network).
+
+Maximizing the amount of data sent per TCP segment is good because it
+amortizes the overhead of the send. However, in some cases small segments may
+need to be sent without delay. This is less efficient than sending larger
+amounts of data at a time, and can contribute to congestion on the network if
+overdone.
+.SH DEFAULT
+0
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_SOCKOPTFUNCTION "(3), " CURLOPT_TCP_KEEPALIVE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_TCP_NODELAY.html b/docs/libcurl/opts/CURLOPT_TCP_NODELAY.html
new file mode 100644 (file)
index 0000000..7f2ba49
--- /dev/null
@@ -0,0 +1,62 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_TCP_NODELAY man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_TCP_NODELAY - set the TCP_NODELAY option <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_NODELAY, long nodelay); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long specifying whether the TCP_NODELAY option is to be set or cleared (1 = set, 0 = clear). The option is cleared by default. This will have no effect after the connection has been established. 
+<p class="level0">Setting this option will disable TCP's Nagle algorithm. The purpose of this algorithm is to try to minimize the number of small packets on the network (where "small packets" means TCP segments less than the Maximum Segment Size (MSS) for the network). 
+<p class="level0">Maximizing the amount of data sent per TCP segment is good because it amortizes the overhead of the send. However, in some cases small segments may need to be sent without delay. This is less efficient than sending larger amounts of data at a time, and can contribute to congestion on the network if overdone. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SOCKOPTFUNCTION.html">CURLOPT_SOCKOPTFUNCTION</a>, <a Class="manpage" href="./CURLOPT_TCP_KEEPALIVE.html">CURLOPT_TCP_KEEPALIVE</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_TCP_NODELAY.pdf b/docs/libcurl/opts/CURLOPT_TCP_NODELAY.pdf
new file mode 100644 (file)
index 0000000..7277e8e
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_TCP_NODELAY.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3 b/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3
new file mode 100644 (file)
index 0000000..f5a9bc5
--- /dev/null
@@ -0,0 +1,47 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_TELNETOPTIONS 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_TELNETOPTIONS \- custom telnet options
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TELNETOPTIONS,
+                          struct curl_slist *cmds);
+.SH DESCRIPTION
+Provide a pointer to a curl_slist with variables to pass to the telnet
+negotiations. The variables should be in the format <option=value>. libcurl
+supports the options 'TTYPE', 'XDISPLOC' and 'NEW_ENV'. See the TELNET
+standard for details.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+TELNET
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Along with TELNET
+.SH RETURN VALUE
+Returns CURLE_OK if TELNET is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_HTTPHEADER "(3), " CURLOPT_QUOTE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.html b/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.html
new file mode 100644 (file)
index 0000000..ac50076
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_TELNETOPTIONS man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_TELNETOPTIONS - custom telnet options <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TELNETOPTIONS, &nbsp;                         struct curl_slist *cmds); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Provide a pointer to a curl_slist with variables to pass to the telnet negotiations. The variables should be in the format &lt;option=value&gt;. libcurl supports the options 'TTYPE', 'XDISPLOC' and 'NEW_ENV'. See the TELNET standard for details. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">TELNET <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Along with TELNET <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if TELNET is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a>, <a Class="manpage" href="./CURLOPT_QUOTE.html">CURLOPT_QUOTE</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.pdf b/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.pdf
new file mode 100644 (file)
index 0000000..ade0176
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3 b/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3
new file mode 100644 (file)
index 0000000..05bc639
--- /dev/null
@@ -0,0 +1,48 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_TFTP_BLKSIZE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_TFTP_BLKSIZE \- TFTP block size
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TFTP_BLKSIZE, long blocksize);
+.SH DESCRIPTION
+Specify \fIblocksize\fP to use for TFTP data transmission. Valid range as per
+RFC2348 is 8-65464 bytes. The default of 512 bytes will be used if this option
+is not specified. The specified block size will only be used pending support
+by the remote server. If the server does not return an option acknowledgement
+or returns an option acknowledgement with no blksize, the default of 512 bytes
+will be used.
+.SH DEFAULT
+512
+.SH PROTOCOLS
+TFTP
+.SH EXAMPLE
+TODO
+.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 CURLOPT_MAXFILESIZE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.html b/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.html
new file mode 100644 (file)
index 0000000..080d612
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_TFTP_BLKSIZE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_TFTP_BLKSIZE - TFTP block size <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TFTP_BLKSIZE, long blocksize); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Specify <span Class="emphasis">blocksize</span> to use for TFTP data transmission. Valid range as per <a href="http://www.ietf.org/rfc/rfc2348.txt">RFC 2348</a> is 8-65464 bytes. The default of 512 bytes will be used if this option is not specified. The specified block size will only be used pending support by the remote server. If the server does not return an option acknowledgement or returns an option acknowledgement with no blksize, the default of 512 bytes will be used. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">512 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">TFTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.19.4 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_MAXFILESIZE.html">CURLOPT_MAXFILESIZE</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.pdf b/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.pdf
new file mode 100644 (file)
index 0000000..ef1d0fd
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_TIMECONDITION.3 b/docs/libcurl/opts/CURLOPT_TIMECONDITION.3
new file mode 100644 (file)
index 0000000..66c34ff
--- /dev/null
@@ -0,0 +1,51 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_TIMECONDITION 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_TIMECONDITION \- select condition for a time request
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMECONDITION, long cond);
+.SH DESCRIPTION
+Pass a long as parameter. This defines how the \fICURLOPT_TIMEVALUE(3)\fP time
+value is treated. You can set this parameter to \fICURL_TIMECOND_IFMODSINCE\fP
+or \fICURL_TIMECOND_IFUNMODSINCE\fP.
+
+The last modification time of a file is not always known and in such instances
+this feature will have no effect even if the given time condition would not
+have been met. \fIcurl_easy_getinfo(3)\fP with the
+\fICURLINFO_CONDITION_UNMET\fP option can be used after a transfer to learn if
+a zero-byte successful "transfer" was due to this condition not matching.
+.SH DEFAULT
+CURL_TIMECOND_NONE (0)
+.SH PROTOCOLS
+HTTP, FTP, RTSP, and FILE
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_TIMEVALUE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_TIMECONDITION.html b/docs/libcurl/opts/CURLOPT_TIMECONDITION.html
new file mode 100644 (file)
index 0000000..dedeed0
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_TIMECONDITION man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_TIMECONDITION - select condition for a time request <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMECONDITION, long cond); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long as parameter. This defines how the <a Class="emphasis" href="./CURLOPT_TIMEVALUE.html">CURLOPT_TIMEVALUE</a> time value is treated. You can set this parameter to <span Class="emphasis">CURL_TIMECOND_IFMODSINCE</span> or <span Class="emphasis">CURL_TIMECOND_IFUNMODSINCE</span>. 
+<p class="level0">The last modification time of a file is not always known and in such instances this feature will have no effect even if the given time condition would not have been met. <span Class="emphasis">curl_easy_getinfo(3)</span> with the <span Class="emphasis">CURLINFO_CONDITION_UNMET</span> option can be used after a transfer to learn if a zero-byte successful "transfer" was due to this condition not matching. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">CURL_TIMECOND_NONE (0) <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP, FTP, RTSP, and FILE <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_TIMEVALUE.html">CURLOPT_TIMEVALUE</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_TIMECONDITION.pdf b/docs/libcurl/opts/CURLOPT_TIMECONDITION.pdf
new file mode 100644 (file)
index 0000000..7c4f1b6
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_TIMECONDITION.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_TIMEOUT.3 b/docs/libcurl/opts/CURLOPT_TIMEOUT.3
new file mode 100644 (file)
index 0000000..41e0569
--- /dev/null
@@ -0,0 +1,60 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_TIMEOUT 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_TIMEOUT \- set maximum time the request is allowed to take
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEOUT, long timeout);
+.SH DESCRIPTION
+Pass a long as parameter containing \fItimeout\fP - the maximum time in
+seconds that you allow the libcurl transfer operation to take. Normally, name
+lookups can take a considerable time and limiting operations to less than a
+few minutes risk aborting perfectly normal operations. This option may cause
+libcurl to use the SIGALRM signal to timeout system calls.
+
+In unix-like systems, this might cause signals to be used unless
+\fICURLOPT_NOSIGNAL(3)\fP is set.
+
+If both \fICURLOPT_TIMEOUT(3)\fP and \fICURLOPT_TIMEOUT_MS(3)\fP are set, the
+value set last will be used.
+
+Since this puts a hard limit for how long time a request is allowed to take,
+it has limited use in dynamic use cases with varying transfer times. You are
+then advised to explore \fICURLOPT_LOW_SPEED_LIMIT(3)\fP,
+\fICURLOPT_LOW_SPEED_TIME(3)\fP or using \fICURLOPT_PROGRESSFUNCTION(3)\fP to
+implement your own timeout logic.
+.SH DEFAULT
+Default timeout is 0 (zero) which means it never times out during transfer.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_TIMEOUT_MS "(3), " 
+.BR CURLOPT_CONNECTTIMEOUT "(3), " CURLOPT_LOW_SPEED_LIMIT "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_TIMEOUT.html b/docs/libcurl/opts/CURLOPT_TIMEOUT.html
new file mode 100644 (file)
index 0000000..1b1b784
--- /dev/null
@@ -0,0 +1,63 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_TIMEOUT man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_TIMEOUT - set maximum time the request is allowed to take <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEOUT, long timeout); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long as parameter containing <span Class="emphasis">timeout</span> - the maximum time in seconds that you allow the libcurl transfer operation to take. Normally, name lookups can take a considerable time and limiting operations to less than a few minutes risk aborting perfectly normal operations. This option may cause libcurl to use the SIGALRM signal to timeout system calls. 
+<p class="level0">In unix-like systems, this might cause signals to be used unless <a Class="emphasis" href="./CURLOPT_NOSIGNAL.html">CURLOPT_NOSIGNAL</a> is set. 
+<p class="level0">If both <a Class="emphasis" href="./CURLOPT_TIMEOUT.html">CURLOPT_TIMEOUT</a> and <a Class="emphasis" href="./CURLOPT_TIMEOUT_MS.html">CURLOPT_TIMEOUT_MS</a> are set, the value set last will be used. 
+<p class="level0">Since this puts a hard limit for how long time a request is allowed to take, it has limited use in dynamic use cases with varying transfer times. You are then advised to explore <a Class="emphasis" href="./CURLOPT_LOW_SPEED_LIMIT.html">CURLOPT_LOW_SPEED_LIMIT</a>, <a Class="emphasis" href="./CURLOPT_LOW_SPEED_TIME.html">CURLOPT_LOW_SPEED_TIME</a> or using <a Class="emphasis" href="./CURLOPT_PROGRESSFUNCTION.html">CURLOPT_PROGRESSFUNCTION</a> to implement your own timeout logic. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">Default timeout is 0 (zero) which means it never times out during transfer. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_TIMEOUT_MS.html">CURLOPT_TIMEOUT_MS</a>, <span Class="manpage">  </span> <a Class="manpage" href="./CURLOPT_CONNECTTIMEOUT.html">CURLOPT_CONNECTTIMEOUT</a>, <a Class="manpage" href="./CURLOPT_LOW_SPEED_LIMIT.html">CURLOPT_LOW_SPEED_LIMIT</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_TIMEOUT.pdf b/docs/libcurl/opts/CURLOPT_TIMEOUT.pdf
new file mode 100644 (file)
index 0000000..958c762
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_TIMEOUT.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3 b/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3
new file mode 100644 (file)
index 0000000..fe9a3cd
--- /dev/null
@@ -0,0 +1,64 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_TIMEOUT_MS 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_TIMEOUT_MS \- set maximum time the request is allowed to take
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEOUT_MS, long timeout);
+.SH DESCRIPTION
+Pass a long as parameter containing \fItimeout\fP - the maximum time in
+milliseconds that you allow the libcurl transfer operation to take. Normally,
+name lookups can take a considerable time and limiting operations to less than
+a few minutes risk aborting perfectly normal operations. This option may cause
+libcurl to use the SIGALRM signal to timeout system calls.
+
+If libcurl is built to use the standard system name resolver, that portion of
+the transfer will still use full-second resolution for timeouts with a minimum
+timeout allowed of one second.
+
+In unix-like systems, this might cause signals to be used unless
+\fICURLOPT_NOSIGNAL(3)\fP is set.
+
+If both \fICURLOPT_TIMEOUT(3)\fP and \fICURLOPT_TIMEOUT_MS(3)\fP are set, the
+value set last will be used.
+
+Since this puts a hard limit for how long time a request is allowed to take,
+it has limited use in dynamic use cases with varying transfer times. You are
+then advised to explore \fICURLOPT_LOW_SPEED_LIMIT(3)\fP,
+\fICURLOPT_LOW_SPEED_TIME(3)\fP or using \fICURLOPT_PROGRESSFUNCTION(3)\fP to
+implement your own timeout logic.
+.SH DEFAULT
+Default timeout is 0 (zero) which means it never times out during transfer.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_TIMEOUT "(3), " 
+.BR CURLOPT_CONNECTTIMEOUT "(3), " CURLOPT_LOW_SPEED_LIMIT "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.html b/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.html
new file mode 100644 (file)
index 0000000..383bff3
--- /dev/null
@@ -0,0 +1,64 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_TIMEOUT_MS man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_TIMEOUT_MS - set maximum time the request is allowed to take <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEOUT_MS, long timeout); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long as parameter containing <span Class="emphasis">timeout</span> - the maximum time in milliseconds that you allow the libcurl transfer operation to take. Normally, name lookups can take a considerable time and limiting operations to less than a few minutes risk aborting perfectly normal operations. This option may cause libcurl to use the SIGALRM signal to timeout system calls. 
+<p class="level0">If libcurl is built to use the standard system name resolver, that portion of the transfer will still use full-second resolution for timeouts with a minimum timeout allowed of one second. 
+<p class="level0">In unix-like systems, this might cause signals to be used unless <a Class="emphasis" href="./CURLOPT_NOSIGNAL.html">CURLOPT_NOSIGNAL</a> is set. 
+<p class="level0">If both <a Class="emphasis" href="./CURLOPT_TIMEOUT.html">CURLOPT_TIMEOUT</a> and <a Class="emphasis" href="./CURLOPT_TIMEOUT_MS.html">CURLOPT_TIMEOUT_MS</a> are set, the value set last will be used. 
+<p class="level0">Since this puts a hard limit for how long time a request is allowed to take, it has limited use in dynamic use cases with varying transfer times. You are then advised to explore <a Class="emphasis" href="./CURLOPT_LOW_SPEED_LIMIT.html">CURLOPT_LOW_SPEED_LIMIT</a>, <a Class="emphasis" href="./CURLOPT_LOW_SPEED_TIME.html">CURLOPT_LOW_SPEED_TIME</a> or using <a Class="emphasis" href="./CURLOPT_PROGRESSFUNCTION.html">CURLOPT_PROGRESSFUNCTION</a> to implement your own timeout logic. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">Default timeout is 0 (zero) which means it never times out during transfer. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_TIMEOUT.html">CURLOPT_TIMEOUT</a>, <span Class="manpage">  </span> <a Class="manpage" href="./CURLOPT_CONNECTTIMEOUT.html">CURLOPT_CONNECTTIMEOUT</a>, <a Class="manpage" href="./CURLOPT_LOW_SPEED_LIMIT.html">CURLOPT_LOW_SPEED_LIMIT</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.pdf b/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.pdf
new file mode 100644 (file)
index 0000000..f5ced77
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_TIMEVALUE.3 b/docs/libcurl/opts/CURLOPT_TIMEVALUE.3
new file mode 100644 (file)
index 0000000..43a3871
--- /dev/null
@@ -0,0 +1,45 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.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 <curl/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.
+.SH DEFAULT
+0
+.SH PROTOCOLS
+HTTP, FTP, RTSP, and FILE
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_TIMECONDITION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_TIMEVALUE.html b/docs/libcurl/opts/CURLOPT_TIMEVALUE.html
new file mode 100644 (file)
index 0000000..14df2f1
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_TIMEVALUE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_TIMEVALUE - set time value for conditional <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEVALUE, long val); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long <span Class="emphasis">val</span> 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 <a Class="emphasis" href="./CURLOPT_TIMECONDITION.html">CURLOPT_TIMECONDITION</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP, FTP, RTSP, and FILE <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_TIMECONDITION.html">CURLOPT_TIMECONDITION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_TIMEVALUE.pdf b/docs/libcurl/opts/CURLOPT_TIMEVALUE.pdf
new file mode 100644 (file)
index 0000000..9265a93
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_TIMEVALUE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3 b/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3
new file mode 100644 (file)
index 0000000..1c8697f
--- /dev/null
@@ -0,0 +1,47 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_TLSAUTH_PASSWORD 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_TLSAUTH_PASSWORD \- password to use for TLS authentication
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_PASSWORD, char *pwd);
+.SH DESCRIPTION
+Pass a char * as parameter, which should point to the zero terminated password
+to use for the TLS authentication method specified with the
+\fICURLOPT_TLSAUTH_TYPE(3)\fP option. Requires that the
+\fICURLOPT_TLSAUTH_USERNAME(3)\fP option also be set.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+All TLS-based protocols
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.21.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 CURLOPT_TLSAUTH_TYPE "(3), " CURLOPT_TLSAUTH_USERNAME "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.html b/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.html
new file mode 100644 (file)
index 0000000..3af10cb
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_TLSAUTH_PASSWORD man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_TLSAUTH_PASSWORD - password to use for TLS authentication <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_PASSWORD, char *pwd); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * as parameter, which should point to the zero terminated password to use for the TLS authentication method specified with the <a Class="emphasis" href="./CURLOPT_TLSAUTH_TYPE.html">CURLOPT_TLSAUTH_TYPE</a> option. Requires that the <a Class="emphasis" href="./CURLOPT_TLSAUTH_USERNAME.html">CURLOPT_TLSAUTH_USERNAME</a> option also be set. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All TLS-based protocols <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.21.4 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_TLSAUTH_TYPE.html">CURLOPT_TLSAUTH_TYPE</a>, <a Class="manpage" href="./CURLOPT_TLSAUTH_USERNAME.html">CURLOPT_TLSAUTH_USERNAME</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.pdf b/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.pdf
new file mode 100644 (file)
index 0000000..631361a
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3 b/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3
new file mode 100644 (file)
index 0000000..b5cdd5b
--- /dev/null
@@ -0,0 +1,52 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_TLSAUTH_TYPE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_TLSAUTH_TYPE \- set TLS authentication methods
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_TYPE, long bitmask);
+.SH DESCRIPTION
+Pass a long as parameter, which is set to a bitmask, to tell libcurl which
+authentication method(s) you want it to use for TLS authentication.
+
+.IP CURL_TLSAUTH_SRP
+TLS-SRP authentication. Secure Remote Password authentication for TLS is
+defined in RFC5054 and provides mutual authentication if both sides have a
+shared secret. To use TLS-SRP, you must also set the
+\fICURLOPT_TLSAUTH_USERNAME(3)\fP and \fICURLOPT_TLSAUTH_PASSWORD(3)\fP
+options.
+.SH DEFAULT
+CURL_TLSAUTH_NONE (0)
+.SH PROTOCOLS
+All TLS-based protocols
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+You need to build libcurl with GnuTLS or OpenSSL with TLS-SRP support for this
+to work. Added in 7.21.4
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_TLSAUTH_USERNAME "(3), " CURLOPT_TLSAUTH_PASSWORD "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.html b/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.html
new file mode 100644 (file)
index 0000000..7a96979
--- /dev/null
@@ -0,0 +1,63 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_TLSAUTH_TYPE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_TLSAUTH_TYPE - set TLS authentication methods <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_TYPE, long bitmask); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long as parameter, which is set to a bitmask, to tell libcurl which authentication method(s) you want it to use for TLS authentication. 
+<p class="level0">
+<p class="level0"><a name="CURLTLSAUTHSRP"></a><span class="nroffip">CURL_TLSAUTH_SRP</span> 
+<p class="level1">TLS-SRP authentication. Secure Remote Password authentication for TLS is defined in <a href="http://www.ietf.org/rfc/rfc5054.txt">RFC 5054</a> and provides mutual authentication if both sides have a shared secret. To use TLS-SRP, you must also set the <a Class="emphasis" href="./CURLOPT_TLSAUTH_USERNAME.html">CURLOPT_TLSAUTH_USERNAME</a> and <a Class="emphasis" href="./CURLOPT_TLSAUTH_PASSWORD.html">CURLOPT_TLSAUTH_PASSWORD</a> options. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">CURL_TLSAUTH_NONE (0) <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All TLS-based protocols <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">You need to build libcurl with GnuTLS or OpenSSL with TLS-SRP support for this to work. Added in 7.21.4 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_TLSAUTH_USERNAME.html">CURLOPT_TLSAUTH_USERNAME</a>, <a Class="manpage" href="./CURLOPT_TLSAUTH_PASSWORD.html">CURLOPT_TLSAUTH_PASSWORD</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.pdf b/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.pdf
new file mode 100644 (file)
index 0000000..e8549b0
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3 b/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3
new file mode 100644 (file)
index 0000000..c5bb2df
--- /dev/null
@@ -0,0 +1,47 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_TLSAUTH_USERNAME 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_TLSAUTH_USERNAME \- user name to use for TLS authentication
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_USERNAME, char *user);
+.SH DESCRIPTION
+Pass a char * as parameter, which should point to the zero terminated username
+to use for the TLS authentication method specified with the
+\fICURLOPT_TLSAUTH_TYPE(3)\fP option. Requires that the
+\fICURLOPT_TLSAUTH_PASSWORD(3)\fP option also be set.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+All TLS-based protocols
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.21.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 CURLOPT_TLSAUTH_TYPE "(3), " CURLOPT_TLSAUTH_PASSWORD "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.html b/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.html
new file mode 100644 (file)
index 0000000..2d8fcf6
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_TLSAUTH_USERNAME man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_TLSAUTH_USERNAME - user name to use for TLS authentication <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_USERNAME, char *user); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * as parameter, which should point to the zero terminated username to use for the TLS authentication method specified with the <a Class="emphasis" href="./CURLOPT_TLSAUTH_TYPE.html">CURLOPT_TLSAUTH_TYPE</a> option. Requires that the <a Class="emphasis" href="./CURLOPT_TLSAUTH_PASSWORD.html">CURLOPT_TLSAUTH_PASSWORD</a> option also be set. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All TLS-based protocols <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.21.4 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_TLSAUTH_TYPE.html">CURLOPT_TLSAUTH_TYPE</a>, <a Class="manpage" href="./CURLOPT_TLSAUTH_PASSWORD.html">CURLOPT_TLSAUTH_PASSWORD</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.pdf b/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.pdf
new file mode 100644 (file)
index 0000000..c4be60c
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3 b/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3
new file mode 100644 (file)
index 0000000..6e62413
--- /dev/null
@@ -0,0 +1,51 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_TRANSFERTEXT 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_TRANSFERTEXT \- request a text based transfer for FTP
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TRANSFERTEXT, long text);
+.SH DESCRIPTION
+A parameter set to 1 tells the library to use ASCII mode for FTP transfers,
+instead of the default binary transfer. For win32 systems it does not set the
+stdout to binary mode. This option can be usable when transferring text data
+between systems with different views on certain characters, such as newlines
+or similar.
+
+libcurl does not do a complete ASCII conversion when doing ASCII transfers
+over FTP. This is a known limitation/flaw that nobody has rectified. libcurl
+simply sets the mode to ASCII and performs a standard transfer.
+.SH DEFAULT
+0, disabled
+.SH PROTOCOLS
+FTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Along with FTP
+.SH RETURN VALUE
+Returns CURLE_OK if FTP is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_CRLF "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.html b/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.html
new file mode 100644 (file)
index 0000000..7a95187
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_TRANSFERTEXT man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_TRANSFERTEXT - request a text based transfer for FTP <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TRANSFERTEXT, long text); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">A parameter set to 1 tells the library to use ASCII mode for FTP transfers, instead of the default binary transfer. For win32 systems it does not set the stdout to binary mode. This option can be usable when transferring text data between systems with different views on certain characters, such as newlines or similar. 
+<p class="level0">libcurl does not do a complete ASCII conversion when doing ASCII transfers over FTP. This is a known limitation/flaw that nobody has rectified. libcurl simply sets the mode to ASCII and performs a standard transfer. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0, disabled <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">FTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Along with FTP <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if FTP is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_CRLF.html">CURLOPT_CRLF</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.pdf b/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.pdf
new file mode 100644 (file)
index 0000000..a7fceec
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3 b/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3
new file mode 100644 (file)
index 0000000..7f2a11c
--- /dev/null
@@ -0,0 +1,54 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_TRANSFER_ENCODING 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_TRANSFER_ENCODING \- ask for HTTP Transfer Encoding
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TRANSFER_ENCODING, long enable);
+.SH DESCRIPTION
+Pass a long set to 1 to \fIenable\fP or 0 to disable.
+
+Adds a request for compressed Transfer Encoding in the outgoing HTTP
+request. If the server supports this and so desires, it can respond with the
+HTTP response sent using a compressed Transfer-Encoding that will be
+automatically uncompressed by libcurl on reception.
+
+Transfer-Encoding differs slightly from the Content-Encoding you ask for with
+\fBCURLOPT_ACCEPT_ENCODING(3)\fP in that a Transfer-Encoding is strictly meant
+to be for the transfer and thus MUST be decoded before the data arrives in the
+client. Traditionally, Transfer-Encoding has been much less used and supported
+by both HTTP clients and HTTP servers.
+.SH DEFAULT
+0
+.SH PROTOCOLS
+HTTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.21.6
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_ACCEPT_ENCODING "(3), " CURLOPT_HTTP_TRANSFER_DECODING "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.html b/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.html
new file mode 100644 (file)
index 0000000..5cb1e39
--- /dev/null
@@ -0,0 +1,62 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_TRANSFER_ENCODING man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_TRANSFER_ENCODING - ask for HTTP Transfer Encoding <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TRANSFER_ENCODING, long enable); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long set to 1 to <span Class="emphasis">enable</span> or 0 to disable. 
+<p class="level0">Adds a request for compressed Transfer Encoding in the outgoing HTTP request. If the server supports this and so desires, it can respond with the HTTP response sent using a compressed Transfer-Encoding that will be automatically uncompressed by libcurl on reception. 
+<p class="level0">Transfer-Encoding differs slightly from the Content-Encoding you ask for with <a Class="bold" href="./CURLOPT_ACCEPT_ENCODING.html">CURLOPT_ACCEPT_ENCODING</a> in that a Transfer-Encoding is strictly meant to be for the transfer and thus MUST be decoded before the data arrives in the client. Traditionally, Transfer-Encoding has been much less used and supported by both HTTP clients and HTTP servers. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.21.6 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_ACCEPT_ENCODING.html">CURLOPT_ACCEPT_ENCODING</a>, <a Class="manpage" href="./CURLOPT_HTTP_TRANSFER_DECODING.html">CURLOPT_HTTP_TRANSFER_DECODING</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.pdf b/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.pdf
new file mode 100644 (file)
index 0000000..f135e55
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3 b/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3
new file mode 100644 (file)
index 0000000..a659cd2
--- /dev/null
@@ -0,0 +1,78 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_UNIX_SOCKET_PATH 3 "09 Oct 2014" "libcurl 7.40.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_UNIX_SOCKET_PATH \- set Unix domain socket
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UNIX_SOCKET_PATH, char *path);
+.SH DESCRIPTION
+Enables the use of Unix domain sockets as connection endpoint and sets the path
+to \fIpath\fP. If \fIpath\fP is NULL, then Unix domain sockets are disabled. An
+empty string will result in an error at some point, it will not disable use of
+Unix domain sockets.
+
+When enabled, cURL will connect to the Unix domain socket instead of
+establishing a TCP connection to a host. Since no TCP connection is created,
+cURL does not need to resolve the DNS hostname in the URL.
+
+The maximum path length on Cygwin, Linux and Solaris is 107. On other platforms
+it might be even less.
+
+Proxy and TCP options such as
+.BR CURLOPT_TCP_NODELAY "(3)
+are not supported. Proxy options such as
+.BR CURLOPT_PROXY "(3)
+have no effect either as these are TCP-oriented, and asking a proxy server to
+connect to a certain Unix domain socket is not possible.
+.SH DEFAULT
+Default is NULL, meaning that no Unix domain sockets are used.
+.SH PROTOCOLS
+All protocols except for file:// and FTP are supported in theory. HTTP, IMAP,
+POP3 and SMTP should in particular work (including their SSL/TLS variants).
+.SH EXAMPLE
+Given that you have an nginx server running, listening on /tmp/nginx.sock, you
+can request a HTTP resource with:
+
+.nf
+    curl_easy_setopt(curl_handle, CURLOPT_UNIX_SOCKET_PATH, "/tmp/nginx.sock");
+    curl_easy_setopt(curl_handle, CURLOPT_URL, "http://localhost/");
+.fi
+
+If you are on Linux and somehow have a need for paths larger than 107 bytes, you
+could use the proc filesystem to bypass the limitation:
+
+.nf
+    int dirfd = open(long_directory_path_to_socket, O_DIRECTORY | O_RDONLY);
+    char path[108];
+    snprintf(path, sizeof(path), "/proc/self/fd/%d/nginx.sock", dirfd);
+    curl_easy_setopt(curl_handle, CURLOPT_UNIX_SOCKET_PATH, path);
+    /* Be sure to keep dirfd valid until you discard the handle */
+.fi
+.SH AVAILABILITY
+Since 7.40.0.
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_OPENSOCKETFUNCTION "(3), " unix "(7), "
diff --git a/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.html b/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.html
new file mode 100644 (file)
index 0000000..17fcef6
--- /dev/null
@@ -0,0 +1,79 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_UNIX_SOCKET_PATH man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_UNIX_SOCKET_PATH - set Unix domain socket <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UNIX_SOCKET_PATH, char *path); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Enables the use of Unix domain sockets as connection endpoint and sets the path to <span Class="emphasis">path</span>. If <span Class="emphasis">path</span> is NULL, then Unix domain sockets are disabled. An empty string will result in an error at some point, it will not disable use of Unix domain sockets. 
+<p class="level0">When enabled, cURL will connect to the Unix domain socket instead of establishing a TCP connection to a host. Since no TCP connection is created, cURL does not need to resolve the DNS hostname in the URL. 
+<p class="level0">The maximum path length on Cygwin, Linux and Solaris is 107. On other platforms it might be even less. 
+<p class="level0">Proxy and TCP options such as <a Class="manpage" href="./CURLOPT_TCP_NODELAY.html">CURLOPT_TCP_NODELAY</a>, are not supported. Proxy options such as <a Class="manpage" href="./CURLOPT_PROXY.html">CURLOPT_PROXY</a>, have no effect either as these are TCP-oriented, and asking a proxy server to connect to a certain Unix domain socket is not possible. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">Default is NULL, meaning that no Unix domain sockets are used. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All protocols except for file:// and FTP are supported in theory. HTTP, IMAP, POP3 and SMTP should in particular work (including their SSL/TLS variants). <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">Given that you have an nginx server running, listening on /tmp/nginx.sock, you can request a HTTP resource with: 
+<p class="level0"><pre>
+<p class="level0">&nbsp;   curl_easy_setopt(curl_handle, CURLOPT_UNIX_SOCKET_PATH, "/tmp/nginx.sock");
+ &nbsp;   curl_easy_setopt(curl_handle, CURLOPT_URL, "<a href="http://localhost/">http://localhost/</a>");
+ </pre>
+
+<p class="level0">
+<p class="level0">If you are on Linux and somehow have a need for paths larger than 107 bytes, you could use the proc filesystem to bypass the limitation: 
+<p class="level0"><pre>
+<p class="level0">&nbsp;   int dirfd = open(long_directory_path_to_socket, O_DIRECTORY | O_RDONLY);
+ &nbsp;   char path[108];
+ &nbsp;   snprintf(path, sizeof(path), "/proc/self/fd/%d/nginx.sock", dirfd);
+ &nbsp;   curl_easy_setopt(curl_handle, CURLOPT_UNIX_SOCKET_PATH, path);
+ &nbsp;   /* Be sure to keep dirfd valid until you discard the handle */
+ </pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Since 7.40.0. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_OPENSOCKETFUNCTION.html">CURLOPT_OPENSOCKETFUNCTION</a>, <span Class="manpage">  unix (7)</span> <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.pdf b/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.pdf
new file mode 100644 (file)
index 0000000..200b623
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3 b/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3
new file mode 100644 (file)
index 0000000..68c3860
--- /dev/null
@@ -0,0 +1,48 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_UNRESTRICTED_AUTH 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_UNRESTRICTED_AUTH \- send credentials to other hosts too
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UNRESTRICTED_AUTH,
+                          long goahead);
+.SH DESCRIPTION
+A long parameter set to 1 tells libcurl it can continue to send authentication
+(user+password) credentials when following locations, even when hostname
+changed. This option is meaningful only when setting
+\fICURLOPT_FOLLOWLOCATION(3)\fP.
+.SH DEFAULT
+0
+.SH PROTOCOLS
+HTTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Along with HTTP
+.SH RETURN VALUE
+Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_FOLLOWLOCATION "(3), " CURLOPT_USERPWD "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.html b/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.html
new file mode 100644 (file)
index 0000000..9d16b0f
--- /dev/null
@@ -0,0 +1,64 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_UNRESTRICTED_AUTH man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_UNRESTRICTED_AUTH - send credentials to other hosts too <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UNRESTRICTED_AUTH,
+ &nbsp;                         long goahead);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">A long parameter set to 1 tells libcurl it can continue to send authentication (user+password) credentials when following locations, even when hostname changed. This option is meaningful only when setting <a Class="emphasis" href="./CURLOPT_FOLLOWLOCATION.html">CURLOPT_FOLLOWLOCATION</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0 <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Along with HTTP <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_FOLLOWLOCATION.html">CURLOPT_FOLLOWLOCATION</a>, <a Class="manpage" href="./CURLOPT_USERPWD.html">CURLOPT_USERPWD</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.pdf b/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.pdf
new file mode 100644 (file)
index 0000000..56e223b
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_UPLOAD.3 b/docs/libcurl/opts/CURLOPT_UPLOAD.3
new file mode 100644 (file)
index 0000000..d24bd28
--- /dev/null
@@ -0,0 +1,78 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_UPLOAD 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_UPLOAD \- enable data upload
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UPLOAD, long upload);
+.SH DESCRIPTION
+The long parameter \fIupload\fP set to 1 tells the library to prepare for and
+perform an upload. The \fICURLOPT_READDATA(3)\fP and
+\fICURLOPT_INFILESIZE(3)\fP or \fICURLOPT_INFILESIZE_LARGE(3)\fP options are
+also interesting for uploads. If the protocol is HTTP, uploading means using
+the PUT request unless you tell libcurl otherwise.
+
+Using PUT with HTTP 1.1 implies the use of a "Expect: 100-continue" header.
+You can disable this header with \fICURLOPT_HTTPHEADER(3)\fP as usual.
+
+If you use PUT to a HTTP 1.1 server, you can upload data without knowing the
+size before starting the transfer if you use chunked encoding. You enable this
+by adding a header like "Transfer-Encoding: chunked" with
+\fICURLOPT_HTTPHEADER(3)\fP. With HTTP 1.0 or without chunked transfer, you
+must specify the size.
+.SH DEFAULT
+0, default is download
+.SH PROTOCOLS
+Most
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  /* we want to use our own read function */
+  curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
+
+  /* enable uploading */
+  curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
+
+  /* specify target */
+  curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/dir/to/newfile");
+
+  /* now specify which pointer to pass to our callback */
+  curl_easy_setopt(curl, CURLOPT_READDATA, hd_src);
+
+  /* Set the size of the file to upload */
+  curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, (curl_off_t)fsize);
+
+  /* Now run off and do what you've been told! */
+  curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_PUT "(3), " CURLOPT_READFUNCTION "(3), "
+.BR CURLOPT_INFILESIZE_LARGE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_UPLOAD.html b/docs/libcurl/opts/CURLOPT_UPLOAD.html
new file mode 100644 (file)
index 0000000..f0c399f
--- /dev/null
@@ -0,0 +1,80 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_UPLOAD man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_UPLOAD - enable data upload <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UPLOAD, long upload); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">The long parameter <span Class="emphasis">upload</span> set to 1 tells the library to prepare for and perform an upload. The <a Class="emphasis" href="./CURLOPT_READDATA.html">CURLOPT_READDATA</a> and <a Class="emphasis" href="./CURLOPT_INFILESIZE.html">CURLOPT_INFILESIZE</a> or <a Class="emphasis" href="./CURLOPT_INFILESIZE_LARGE.html">CURLOPT_INFILESIZE_LARGE</a> options are also interesting for uploads. If the protocol is HTTP, uploading means using the PUT request unless you tell libcurl otherwise. 
+<p class="level0">Using PUT with HTTP 1.1 implies the use of a "Expect: 100-continue" header. You can disable this header with <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a> as usual. 
+<p class="level0">If you use PUT to a HTTP 1.1 server, you can upload data without knowing the size before starting the transfer if you use chunked encoding. You enable this by adding a header like "Transfer-Encoding: chunked" with <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a>. With HTTP 1.0 or without chunked transfer, you must specify the size. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0, default is download <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">Most <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre>
+<p class="level0">CURL *curl = curl_easy_init();
+ if(curl) {
+ &nbsp; /* we want to use our own read function */
+ &nbsp; curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
+ <p class="level0">&nbsp; /* enable uploading */
+ &nbsp; curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
+ <p class="level0">&nbsp; /* specify target */
+ &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="ftp://example.com/dir/to/newfile">ftp://example.com/dir/to/newfile</a>");
+ <p class="level0">&nbsp; /* now specify which pointer to pass to our callback */
+ &nbsp; curl_easy_setopt(curl, CURLOPT_READDATA, hd_src);
+ <p class="level0">&nbsp; /* Set the size of the file to upload */
+ &nbsp; curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, (curl_off_t)fsize);
+ <p class="level0">&nbsp; /* Now run off and do what you've been told! */
+ &nbsp; curl_easy_perform(curl);
+ }
+ </pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_PUT.html">CURLOPT_PUT</a>, <a Class="manpage" href="./CURLOPT_READFUNCTION.html">CURLOPT_READFUNCTION</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_INFILESIZE_LARGE.html">CURLOPT_INFILESIZE_LARGE</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_UPLOAD.pdf b/docs/libcurl/opts/CURLOPT_UPLOAD.pdf
new file mode 100644 (file)
index 0000000..4b3a45f
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_UPLOAD.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_URL.3 b/docs/libcurl/opts/CURLOPT_URL.3
new file mode 100644 (file)
index 0000000..bf19228
--- /dev/null
@@ -0,0 +1,310 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_URL 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_URL \- provide the URL to use in the request
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_URL, char *URL);
+.SH DESCRIPTION
+Pass in a pointer to the \fIURL\fP to work with. The parameter should be a
+char * to a zero terminated string which must be URL-encoded in the following
+format:
+
+scheme://host:port/path
+
+For a greater explanation of the format please see RFC3986.
+
+libcurl doesn't validate the syntax or use this variable until the transfer is
+issued. Even if you set a crazy value here, \fIcurl_easy_setopt(3)\fP will
+still return \fICURLE_OK\fP.
+
+If the given URL lacks the scheme (such as "http://" or "ftp://" etc) then
+libcurl will attempt to resolve the protocol based on one of the following
+given host names: HTTP, FTP, DICT, LDAP, IMAP, POP3 or SMTP
+
+Should the protocol, either that specified by the scheme or deduced by libcurl
+from the host name, not be supported by libcurl then
+\fICURLE_UNSUPPORTED_PROTOCOL\fP will be returned from either the
+\fIcurl_easy_perform(3)\fP or \fIcurl_multi_perform(3)\fP functions when you
+call them. Use \fIcurl_version_info(3)\fP for detailed information of which
+protocols are supported by the build of libcurl you are using.
+
+\fICURLOPT_PROTOCOLS(3)\fP can be used to limit what protocols libcurl will
+use for this transfer, independent of what libcurl has been compiled to
+support. That may be useful if you accept the URL from an external source and
+want to limit the accessibility.
+
+\fICURLOPT_URL(3)\fP is the only option that \fBmust\fP be set before a
+transfer is started.
+
+The host part of the URL contains the address of the server that you want to
+connect to. This can be the fully qualified domain name of the server, the
+local network name of the machine on your network or the IP address of the
+server or machine represented by either an IPv4 or IPv6 address. For example:
+
+http://www.example.com/
+
+http://hostname/
+
+http://192.168.0.1/
+
+http://[2001:1890:1112:1::20]/
+
+It is also possible to specify the user name, password and any supported login
+options as part of the host, for the following protocols, when connecting to
+servers that require authentication:
+
+http://user:password@www.example.com
+
+ftp://user:password@ftp.example.com
+
+smb://domain%2fuser:password@server.example.com
+
+imap://user:password;options@mail.example.com
+
+pop3://user:password;options@mail.example.com
+
+smtp://user:password;options@mail.example.com
+
+At present only IMAP, POP3 and SMTP support login options as part of the host.
+For more information about the login options in URL syntax please see RFC2384,
+RFC5092 and IETF draft draft-earhart-url-smtp-00.txt (Added in 7.31.0).
+
+The port is optional and when not specified libcurl will use the default port
+based on the determined or specified protocol: 80 for HTTP, 21 for FTP and 25
+for SMTP, etc. The following examples show how to specify the port:
+
+http://www.example.com:8080/ - This will connect to a web server using port
+8080 rather than 80.
+
+smtp://mail.example.com:587/ - This will connect to a SMTP server on the
+alternative mail port.
+
+The path part of the URL is protocol specific and whilst some examples are
+given below this list is not conclusive:
+
+.IP HTTP
+The path part of a HTTP request specifies the file to retrieve and from what
+directory. If the directory is not specified then the web server's root
+directory is used. If the file is omitted then the default document will be
+retrieved for either the directory specified or the root directory. The exact
+resource returned for each URL is entirely dependent on the server's
+configuration.
+
+http://www.example.com - This gets the main page from the web server.
+
+http://www.example.com/index.html - This returns the main page by explicitly
+requesting it.
+
+http://www.example.com/contactus/ - This returns the default document from
+the contactus directory.
+
+.IP FTP
+The path part of an FTP request specifies the file to retrieve and from what
+directory. If the file part is omitted then libcurl downloads the directory
+listing for the directory specified. If the directory is omitted then
+the directory listing for the root / home directory will be returned.
+
+ftp://ftp.example.com - This retrieves the directory listing for the root
+directory.
+
+ftp://ftp.example.com/readme.txt - This downloads the file readme.txt from the
+root directory.
+
+ftp://ftp.example.com/libcurl/readme.txt - This downloads readme.txt from the
+libcurl directory.
+
+ftp://user:password@ftp.example.com/readme.txt - This retrieves the readme.txt
+file from the user's home directory. When a username and password is
+specified, everything that is specified in the path part is relative to the
+user's home directory. To retrieve files from the root directory or a
+directory underneath the root directory then the absolute path must be
+specified by prepending an additional forward slash to the beginning of the
+path.
+
+ftp://user:password@ftp.example.com//readme.txt - This retrieves the readme.txt
+from the root directory when logging in as a specified user.
+
+.IP SMTP
+The path part of a SMTP request specifies the host name to present during
+communication with the mail server. If the path is omitted then libcurl will
+attempt to resolve the local computer's host name. However, this may not
+return the fully qualified domain name that is required by some mail servers
+and specifying this path allows you to set an alternative name, such as
+your machine's fully qualified domain name, which you might have obtained
+from an external function such as gethostname or getaddrinfo.
+
+smtp://mail.example.com - This connects to the mail server at example.com and
+sends your local computer's host name in the HELO / EHLO command.
+
+smtp://mail.example.com/client.example.com - This will send client.example.com in
+the HELO / EHLO command to the mail server at example.com.
+
+.IP POP3
+The path part of a POP3 request specifies the message ID to retrieve. If the
+ID is not specified then a list of waiting messages is returned instead.
+
+pop3://user:password@mail.example.com - This lists the available messages for
+the user
+
+pop3://user:password@mail.example.com/1 - This retrieves the first message for
+the user
+
+.IP IMAP
+The path part of an IMAP request not only specifies the mailbox to list (Added
+in 7.30.0) or select, but can also be used to check the UIDVALIDITY of the
+mailbox, to specify the UID, SECTION (Added in 7.30.0) and PARTIAL octets
+(Added in 7.37.0) of the message to fetch and to specify what messages to
+search for (Added in 7.37.0).
+
+imap://user:password@mail.example.com - Performs a top level folder list
+
+imap://user:password@mail.example.com/INBOX - Performs a folder list on the
+user's inbox
+
+imap://user:password@mail.example.com/INBOX/;UID=1 - Selects the user's inbox
+and fetches message 1
+
+imap://user:password@mail.example.com/INBOX;UIDVALIDITY=50/;UID=2 - Selects
+the user's inbox, checks the UIDVALIDITY of the mailbox is 50 and fetches
+message 2 if it is
+
+imap://user:password@mail.example.com/INBOX/;UID=3/;SECTION=TEXT - Selects the
+user's inbox and fetches the text portion of message 3
+
+imap://user:password@mail.example.com/INBOX/;UID=4/;PARTIAL=0.1024 - Selects
+the user's inbox and fetches the first 1024 octets of message 4
+
+imap://user:password@mail.example.com/INBOX?NEW - Selects the user's inbox and
+checks for NEW messages
+
+imap://user:password@mail.example.com/INBOX?SUBJECT%20shadows - Selects the
+user's inbox and searches for messages containing "shadows" in the subject
+line
+
+For more information about the individual components of an IMAP URL please
+see RFC5092.
+
+.IP SCP
+The path part of a SCP request specifies the file to retrieve and from what
+directory. The file part may not be omitted. The file is taken as an absolute
+path from the root directory on the server. To specify a path relative to the
+user's home directory on the server, prepend ~/ to the path portion.  If the
+user name is not embedded in the URL, it can be set with the
+\fICURLOPT_USERPWD(3)\fP or \fICURLOPT_USERNAME(3)\fP option.
+
+scp://user@example.com/etc/issue - This specifies the file /etc/issue
+
+scp://example.com/~/my-file - This specifies the file my-file in the
+user's home directory on the server
+
+.IP SFTP
+The path part of a SFTP request specifies the file to retrieve and from what
+directory. If the file part is omitted then libcurl downloads the directory
+listing for the directory specified.  If the path ends in a / then a directory
+listing is returned instead of a file.  If the path is omitted entirely then
+the directory listing for the root / home directory will be returned.  If the
+user name is not embedded in the URL, it can be set with the
+\fICURLOPT_USERPWD(3)\fP or \fICURLOPT_USERNAME(3)\fP option.
+
+sftp://user:password@example.com/etc/issue - This specifies the file
+/etc/issue
+
+sftp://user@example.com/~/my-file - This specifies the file my-file in the
+user's home directory
+
+sftp://ssh.example.com/~/Documents/ - This requests a directory listing
+of the Documents directory under the user's home directory
+
+.IP SMB
+The path part of a SMB request specifies the file to retrieve and from what
+share and directory or the share to upload to and as such, may not be omitted.
+If the user name is not embedded in the URL, it can be set with the
+\fICURLOPT_USERPWD(3)\fP or \fICURLOPT_USERNAME(3)\fP option. If the user name
+is embedded in the URL then it must contain the domain name and as such, the
+backslash must be URL encoded as %2f.
+
+smb://server.example.com/files/issue - This specifies the file "issue" located
+in the root of the "files" share
+
+smb://server.example.com/files/ -T issue - This specifies the file "issue" will
+be uploaded to the root of the "files" share.
+
+.IP LDAP
+The path part of a LDAP request can be used to specify the: Distinguished
+Name, Attributes, Scope, Filter and Extension for a LDAP search. Each field
+is separated by a question mark and when that field is not required an empty
+string with the question mark separator should be included.
+
+ldap://ldap.example.com/o=My%20Organisation - This will perform a LDAP search
+with the DN as My Organisation.
+
+ldap://ldap.example.com/o=My%20Organisation?postalAddress - This will perform
+the same search but will only return postalAddress attributes.
+
+ldap://ldap.example.com/?rootDomainNamingContext - This specifies an empty DN
+and requests information about the rootDomainNamingContext attribute for an
+Active Directory server.
+
+For more information about the individual components of a LDAP URL please
+see RFC4516.
+.IP RTMP
+There's no official URL spec for RTMP so libcurl uses the URL syntax supported
+by the underlying librtmp library. It has a syntax where it wants a
+traditional URL, followed by a space and a series of space-separated
+name=value pairs.
+
+While space is not typically a "legal" letter, libcurl accepts them. When a
+user wants to pass in a '#' (hash) character it will be treated as a fragment
+and get cut off by libcurl if provided literally. You will instead have to
+escape it by providing it as backslash and its ASCII value in hexadecimal:
+"\\23".
+.SH DEFAULT
+There is no default URL. If this option isn't set, no transfer can be
+performed.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+  curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+POP3 and SMTP were added in 7.31.0
+.SH RETURN VALUE
+Returns CURLE_OK on success or CURLE_OUT_OF_MEMORY if there was insufficient
+heap space.
+
+Note that \fIcurl_easy_setopt(3)\fP won't actually parse the given string so
+given a bad URL, it will not be detected until \fIcurl_easy_perform(3)\fP or
+similar is called.
+.SH "SEE ALSO"
+.BR CURLOPT_VERBOSE "(3), " CURLOPT_PROTOCOLS "(3), "
+.BR CURLOPT_FORBID_REUSE "(3), " CURLOPT_FRESH_CONNECT "(3), "
+.BR curl_easy_perform "(3)"
diff --git a/docs/libcurl/opts/CURLOPT_URL.html b/docs/libcurl/opts/CURLOPT_URL.html
new file mode 100644 (file)
index 0000000..0f75582
--- /dev/null
@@ -0,0 +1,155 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_URL man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_URL - provide the URL to use in the request <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_URL, char *URL); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass in a pointer to the <span Class="emphasis">URL</span> to work with. The parameter should be a char * to a zero terminated string which must be URL-encoded in the following format: 
+<p class="level0">scheme://host:port/path 
+<p class="level0">For a greater explanation of the format please see <a href="http://www.ietf.org/rfc/rfc3986.txt">RFC 3986</a>. 
+<p class="level0">libcurl doesn't validate the syntax or use this variable until the transfer is issued. Even if you set a crazy value here, <span Class="emphasis">curl_easy_setopt(3)</span> will still return <span Class="emphasis">CURLE_OK</span>. 
+<p class="level0">If the given URL lacks the scheme (such as "http://" or "ftp://" etc) then libcurl will attempt to resolve the protocol based on one of the following given host names: HTTP, FTP, DICT, LDAP, IMAP, POP3 or SMTP 
+<p class="level0">Should the protocol, either that specified by the scheme or deduced by libcurl from the host name, not be supported by libcurl then <span Class="emphasis">CURLE_UNSUPPORTED_PROTOCOL</span> will be returned from either the <span Class="emphasis">curl_easy_perform(3)</span> or <span Class="emphasis">curl_multi_perform(3)</span> functions when you call them. Use <span Class="emphasis">curl_version_info(3)</span> for detailed information of which protocols are supported by the build of libcurl you are using. 
+<p class="level0"><a Class="emphasis" href="./CURLOPT_PROTOCOLS.html">CURLOPT_PROTOCOLS</a> can be used to limit what protocols libcurl will use for this transfer, independent of what libcurl has been compiled to support. That may be useful if you accept the URL from an external source and want to limit the accessibility. 
+<p class="level0"><a Class="emphasis" href="./CURLOPT_URL.html">CURLOPT_URL</a> is the only option that <span Class="bold">must</span> be set before a transfer is started. 
+<p class="level0">The host part of the URL contains the address of the server that you want to connect to. This can be the fully qualified domain name of the server, the local network name of the machine on your network or the IP address of the server or machine represented by either an IPv4 or IPv6 address. For example: 
+<p class="level0"><a href="http://www.example.com/">http://www.example.com/</a> 
+<p class="level0"><a href="http://hostname/">http://hostname/</a> 
+<p class="level0"><a href="http://192.168.0.1/">http://192.168.0.1/</a> 
+<p class="level0">http://[2001:1890:1112:1::20]/ 
+<p class="level0">It is also possible to specify the user name, password and any supported login options as part of the host, for the following protocols, when connecting to servers that require authentication: 
+<p class="level0"><a href="http://user">http://user</a>:password@www.example.com 
+<p class="level0"><a href="ftp://user">ftp://user</a>:password@ftp.example.com 
+<p class="level0">smb://domain%2fuser:password@server.example.com 
+<p class="level0">imap://user:password;options@mail.example.com 
+<p class="level0">pop3://user:password;options@mail.example.com 
+<p class="level0">smtp://user:password;options@mail.example.com 
+<p class="level0">At present only IMAP, POP3 and SMTP support login options as part of the host. For more information about the login options in URL syntax please see <a href="http://www.ietf.org/rfc/rfc2384.txt">RFC 2384</a>, <a href="http://www.ietf.org/rfc/rfc5092.txt">RFC 5092</a> and IETF draft draft-earhart-url-smtp-00.txt (Added in 7.31.0). 
+<p class="level0">The port is optional and when not specified libcurl will use the default port based on the determined or specified protocol: 80 for HTTP, 21 for FTP and 25 for SMTP, etc. The following examples show how to specify the port: 
+<p class="level0"><a href="http://www.example.com">http://www.example.com</a>:8080/ - This will connect to a web server using port 8080 rather than 80. 
+<p class="level0">smtp://mail.example.com:587/ - This will connect to a SMTP server on the alternative mail port. 
+<p class="level0">The path part of the URL is protocol specific and whilst some examples are given below this list is not conclusive: 
+<p class="level0">
+<p class="level0"><a name="HTTP"></a><span class="nroffip">HTTP</span> 
+<p class="level1">The path part of a HTTP request specifies the file to retrieve and from what directory. If the directory is not specified then the web server's root directory is used. If the file is omitted then the default document will be retrieved for either the directory specified or the root directory. The exact resource returned for each URL is entirely dependent on the server's configuration. 
+<p class="level1"><a href="http://www.example.com">http://www.example.com</a> - This gets the main page from the web server. 
+<p class="level1"><a href="http://www.example.com/index.html">http://www.example.com/index.html</a> - This returns the main page by explicitly requesting it. 
+<p class="level1"><a href="http://www.example.com/contactus/">http://www.example.com/contactus/</a> - This returns the default document from the contactus directory. 
+<p class="level1">
+<p class="level0"><a name="FTP"></a><span class="nroffip">FTP</span> 
+<p class="level1">The path part of an FTP request specifies the file to retrieve and from what directory. If the file part is omitted then libcurl downloads the directory listing for the directory specified. If the directory is omitted then the directory listing for the root / home directory will be returned. 
+<p class="level1"><a href="ftp://ftp.example.com">ftp://ftp.example.com</a> - This retrieves the directory listing for the root directory. 
+<p class="level1"><a href="ftp://ftp.example.com/readme.txt">ftp://ftp.example.com/readme.txt</a> - This downloads the file readme.txt from the root directory. 
+<p class="level1"><a href="ftp://ftp.example.com/libcurl/readme.txt">ftp://ftp.example.com/libcurl/readme.txt</a> - This downloads readme.txt from the libcurl directory. 
+<p class="level1"><a href="ftp://user">ftp://user</a>:password@ftp.example.com/readme.txt - This retrieves the readme.txt file from the user's home directory. When a username and password is specified, everything that is specified in the path part is relative to the user's home directory. To retrieve files from the root directory or a directory underneath the root directory then the absolute path must be specified by prepending an additional forward slash to the beginning of the path. 
+<p class="level1"><a href="ftp://user">ftp://user</a>:password@ftp.example.com//readme.txt - This retrieves the readme.txt from the root directory when logging in as a specified user. 
+<p class="level1">
+<p class="level0"><a name="SMTP"></a><span class="nroffip">SMTP</span> 
+<p class="level1">The path part of a SMTP request specifies the host name to present during communication with the mail server. If the path is omitted then libcurl will attempt to resolve the local computer's host name. However, this may not return the fully qualified domain name that is required by some mail servers and specifying this path allows you to set an alternative name, such as your machine's fully qualified domain name, which you might have obtained from an external function such as gethostname or getaddrinfo. 
+<p class="level1">smtp://mail.example.com - This connects to the mail server at example.com and sends your local computer's host name in the HELO / EHLO command. 
+<p class="level1">smtp://mail.example.com/client.example.com - This will send client.example.com in the HELO / EHLO command to the mail server at example.com. 
+<p class="level1">
+<p class="level0"><a name="POP3"></a><span class="nroffip">POP3</span> 
+<p class="level1">The path part of a POP3 request specifies the message ID to retrieve. If the ID is not specified then a list of waiting messages is returned instead. 
+<p class="level1">pop3://user:password@mail.example.com - This lists the available messages for the user 
+<p class="level1">pop3://user:password@mail.example.com/1 - This retrieves the first message for the user 
+<p class="level1">
+<p class="level0"><a name="IMAP"></a><span class="nroffip">IMAP</span> 
+<p class="level1">The path part of an IMAP request not only specifies the mailbox to list (Added in 7.30.0) or select, but can also be used to check the UIDVALIDITY of the mailbox, to specify the UID, SECTION (Added in 7.30.0) and PARTIAL octets (Added in 7.37.0) of the message to fetch and to specify what messages to search for (Added in 7.37.0). 
+<p class="level1">imap://user:password@mail.example.com - Performs a top level folder list 
+<p class="level1">imap://user:password@mail.example.com/INBOX - Performs a folder list on the user's inbox 
+<p class="level1">imap://user:password@mail.example.com/INBOX/;UID=1 - Selects the user's inbox and fetches message 1 
+<p class="level1">imap://user:password@mail.example.com/INBOX;UIDVALIDITY=50/;UID=2 - Selects the user's inbox, checks the UIDVALIDITY of the mailbox is 50 and fetches message 2 if it is 
+<p class="level1">imap://user:password@mail.example.com/INBOX/;UID=3/;SECTION=TEXT - Selects the user's inbox and fetches the text portion of message 3 
+<p class="level1">imap://user:password@mail.example.com/INBOX/;UID=4/;PARTIAL=0.1024 - Selects the user's inbox and fetches the first 1024 octets of message 4 
+<p class="level1">imap://user:password@mail.example.com/INBOX?NEW - Selects the user's inbox and checks for NEW messages 
+<p class="level1">imap://user:password@mail.example.com/INBOX?SUBJECT%20shadows - Selects the user's inbox and searches for messages containing "shadows" in the subject line 
+<p class="level1">For more information about the individual components of an IMAP URL please see <a href="http://www.ietf.org/rfc/rfc5092.txt">RFC 5092</a>. 
+<p class="level1">
+<p class="level0"><a name="SCP"></a><span class="nroffip">SCP</span> 
+<p class="level1">The path part of a SCP request specifies the file to retrieve and from what directory. The file part may not be omitted. The file is taken as an absolute path from the root directory on the server. To specify a path relative to the user's home directory on the server, prepend ~/ to the path portion.  If the user name is not embedded in the URL, it can be set with the <a Class="emphasis" href="./CURLOPT_USERPWD.html">CURLOPT_USERPWD</a> or <a Class="emphasis" href="./CURLOPT_USERNAME.html">CURLOPT_USERNAME</a> option. 
+<p class="level1">scp://user@example.com/etc/issue - This specifies the file /etc/issue 
+<p class="level1">scp://example.com/~/my-file - This specifies the file my-file in the user's home directory on the server 
+<p class="level1">
+<p class="level0"><a name="SFTP"></a><span class="nroffip">SFTP</span> 
+<p class="level1">The path part of a SFTP request specifies the file to retrieve and from what directory. If the file part is omitted then libcurl downloads the directory listing for the directory specified.  If the path ends in a / then a directory listing is returned instead of a file.  If the path is omitted entirely then the directory listing for the root / home directory will be returned.  If the user name is not embedded in the URL, it can be set with the <a Class="emphasis" href="./CURLOPT_USERPWD.html">CURLOPT_USERPWD</a> or <a Class="emphasis" href="./CURLOPT_USERNAME.html">CURLOPT_USERNAME</a> option. 
+<p class="level1">s<a href="ftp://user">ftp://user</a>:password@example.com/etc/issue - This specifies the file /etc/issue 
+<p class="level1">s<a href="ftp://user">ftp://user</a>@example.com/~/my-file - This specifies the file my-file in the user's home directory 
+<p class="level1">s<a href="ftp://ssh.example.com/">ftp://ssh.example.com/</a>~/Documents/ - This requests a directory listing of the Documents directory under the user's home directory 
+<p class="level1">
+<p class="level0"><a name="SMB"></a><span class="nroffip">SMB</span> 
+<p class="level1">The path part of a SMB request specifies the file to retrieve and from what share and directory or the share to upload to and as such, may not be omitted. If the user name is not embedded in the URL, it can be set with the <a Class="emphasis" href="./CURLOPT_USERPWD.html">CURLOPT_USERPWD</a> or <a Class="emphasis" href="./CURLOPT_USERNAME.html">CURLOPT_USERNAME</a> option. If the user name is embedded in the URL then it must contain the domain name and as such, the backslash must be URL encoded as %2f. 
+<p class="level1">smb://server.example.com/files/issue - This specifies the file "issue" located in the root of the "files" share 
+<p class="level1">smb://server.example.com/files/ -T issue - This specifies the file "issue" will be uploaded to the root of the "files" share. 
+<p class="level1">
+<p class="level0"><a name="LDAP"></a><span class="nroffip">LDAP</span> 
+<p class="level1">The path part of a LDAP request can be used to specify the: Distinguished Name, Attributes, Scope, Filter and Extension for a LDAP search. Each field is separated by a question mark and when that field is not required an empty string with the question mark separator should be included. 
+<p class="level1">ldap://ldap.example.com/o=My%20Organisation - This will perform a LDAP search with the DN as My Organisation. 
+<p class="level1">ldap://ldap.example.com/o=My%20Organisation?postalAddress - This will perform the same search but will only return postalAddress attributes. 
+<p class="level1">ldap://ldap.example.com/?rootDomainNamingContext - This specifies an empty DN and requests information about the rootDomainNamingContext attribute for an Active Directory server. 
+<p class="level1">For more information about the individual components of a LDAP URL please see <a href="http://www.ietf.org/rfc/rfc4516.txt">RFC 4516</a>. 
+<p class="level0"><a name="RTMP"></a><span class="nroffip">RTMP</span> 
+<p class="level1">There's no official URL spec for RTMP so libcurl uses the URL syntax supported by the underlying librtmp library. It has a syntax where it wants a traditional URL, followed by a space and a series of space-separated name=value pairs. 
+<p class="level1">While space is not typically a "legal" letter, libcurl accepts them. When a user wants to pass in a '#' (hash) character it will be treated as a fragment and get cut off by libcurl if provided literally. You will instead have to escape it by providing it as backslash and its ASCII value in hexadecimal: "\23". <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">There is no default URL. If this option isn't set, no transfer can be performed. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre>
+<p class="level0">CURL *curl = curl_easy_init();
+ if(curl) {
+ &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+ <p class="level0">&nbsp; curl_easy_perform(curl);
+ }
+ </pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">POP3 and SMTP were added in 7.31.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK on success or CURLE_OUT_OF_MEMORY if there was insufficient heap space. 
+<p class="level0">Note that <span Class="emphasis">curl_easy_setopt(3)</span> won't actually parse the given string so given a bad URL, it will not be detected until <span Class="emphasis">curl_easy_perform(3)</span> or similar is called. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_VERBOSE.html">CURLOPT_VERBOSE</a>, <a Class="manpage" href="./CURLOPT_PROTOCOLS.html">CURLOPT_PROTOCOLS</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_FORBID_REUSE.html">CURLOPT_FORBID_REUSE</a>, <a Class="manpage" href="./CURLOPT_FRESH_CONNECT.html">CURLOPT_FRESH_CONNECT</a>, <span Class="manpage"> </span> <span Class="manpage">curl_easy_perform (3)</span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_URL.pdf b/docs/libcurl/opts/CURLOPT_URL.pdf
new file mode 100644 (file)
index 0000000..7867b41
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_URL.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_USERAGENT.3 b/docs/libcurl/opts/CURLOPT_USERAGENT.3
new file mode 100644 (file)
index 0000000..13ccbd4
--- /dev/null
@@ -0,0 +1,47 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_USERAGENT 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_USERAGENT \- set HTTP user-agent header
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USERAGENT, char *ua);
+.SH DESCRIPTION
+Pass a pointer to a zero terminated string as parameter. It will be used to
+set the User-Agent: header in the HTTP request sent to the remote server. This
+can be used to fool servers or scripts. You can also set any custom header
+with \fICURLOPT_HTTPHEADER(3)\fP.
+.SH DEFAULT
+NULL, no User-Agent: header is used by default.
+.SH PROTOCOLS
+HTTP, HTTPS
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+As long as HTTP is supported
+.SH RETURN VALUE
+Returns CURLE_OK if HTTP is supported, CURLE_UNKNOWN_OPTION if not, or
+CURLE_OUT_OF_MEMORY if there was insufficient heap space.
+.SH "SEE ALSO"
+.BR CURLOPT_REFERER "(3), " CURLOPT_HTTPHEADER "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_USERAGENT.html b/docs/libcurl/opts/CURLOPT_USERAGENT.html
new file mode 100644 (file)
index 0000000..e418ec5
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_USERAGENT man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_USERAGENT - set HTTP user-agent header <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USERAGENT, char *ua); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to a zero terminated string as parameter. It will be used to set the User-Agent: header in the HTTP request sent to the remote server. This can be used to fool servers or scripts. You can also set any custom header with <a Class="emphasis" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL, no User-Agent: header is used by default. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">HTTP, HTTPS <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">As long as HTTP is supported <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if HTTP is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_REFERER.html">CURLOPT_REFERER</a>, <a Class="manpage" href="./CURLOPT_HTTPHEADER.html">CURLOPT_HTTPHEADER</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_USERAGENT.pdf b/docs/libcurl/opts/CURLOPT_USERAGENT.pdf
new file mode 100644 (file)
index 0000000..d3ef568
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_USERAGENT.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_USERNAME.3 b/docs/libcurl/opts/CURLOPT_USERNAME.3
new file mode 100644 (file)
index 0000000..7546f74
--- /dev/null
@@ -0,0 +1,71 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_USERNAME 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_USERNAME \- user name to use in authentication
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USERNAME,
+                          char *username);
+.SH DESCRIPTION
+Pass a char * as parameter, which should be pointing to the zero terminated
+user name to use for the transfer.
+
+\fBCURLOPT_USERNAME(3)\fP sets the user name to be used in protocol
+authentication. You should not use this option together with the (older)
+\fICURLOPT_USERPWD(3)\fP option.
+
+When using Kerberos V5 authentication with a Windows based server, you should
+include the domain name in order for the server to successfully obtain a
+Kerberos Ticket. If you don't then the initial part of the authentication
+handshake may fail.
+
+When using NTLM, the user name can be specified simply as the user name
+without the domain name should the server be part of a single domain and
+forest.
+
+To include the domain name use either Down-Level Logon Name or UPN (User
+Principal Name) formats. For example, EXAMPLE\\user and user@example.com
+respectively.
+
+Some HTTP servers (on Windows) support inclusion of the domain for Basic
+authentication as well.
+
+To specify the password and login options, along with the user name, use the
+\fICURLOPT_PASSWORD(3)\fP and \fICURLOPT_LOGIN_OPTIONS(3)\fP options.
+.SH DEFAULT
+blank
+.SH PROTOCOLS
+Most
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.19.1
+.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 CURLOPT_USERPWD "(3), " CURLOPT_PASSWORD "(3), "
+.BR CURLOPT_HTTPAUTH "(3), " CURLOPT_PROXYAUTH "(3)"
diff --git a/docs/libcurl/opts/CURLOPT_USERNAME.html b/docs/libcurl/opts/CURLOPT_USERNAME.html
new file mode 100644 (file)
index 0000000..e0d459d
--- /dev/null
@@ -0,0 +1,70 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_USERNAME man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_USERNAME - user name to use in authentication <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USERNAME,
+ &nbsp;                         char *username);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * as parameter, which should be pointing to the zero terminated user name to use for the transfer. 
+<p class="level0"><a Class="bold" href="./CURLOPT_USERNAME.html">CURLOPT_USERNAME</a> sets the user name to be used in protocol authentication. You should not use this option together with the (older) <a Class="emphasis" href="./CURLOPT_USERPWD.html">CURLOPT_USERPWD</a> option. 
+<p class="level0">When using Kerberos V5 authentication with a Windows based server, you should include the domain name in order for the server to successfully obtain a Kerberos Ticket. If you don't then the initial part of the authentication handshake may fail. 
+<p class="level0">When using NTLM, the user name can be specified simply as the user name without the domain name should the server be part of a single domain and forest. 
+<p class="level0">To include the domain name use either Down-Level Logon Name or UPN (User Principal Name) formats. For example, EXAMPLE\user and user@example.com respectively. 
+<p class="level0">Some HTTP servers (on Windows) support inclusion of the domain for Basic authentication as well. 
+<p class="level0">To specify the password and login options, along with the user name, use the <a Class="emphasis" href="./CURLOPT_PASSWORD.html">CURLOPT_PASSWORD</a> and <a Class="emphasis" href="./CURLOPT_LOGIN_OPTIONS.html">CURLOPT_LOGIN_OPTIONS</a> options. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">blank <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">Most <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.19.1 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_USERPWD.html">CURLOPT_USERPWD</a>, <a Class="manpage" href="./CURLOPT_PASSWORD.html">CURLOPT_PASSWORD</a>, <span Class="manpage"> </span> <a Class="manpage" href="./CURLOPT_HTTPAUTH.html">CURLOPT_HTTPAUTH</a>, <a Class="manpage" href="./CURLOPT_PROXYAUTH.html">CURLOPT_PROXYAUTH</a>, <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_USERNAME.pdf b/docs/libcurl/opts/CURLOPT_USERNAME.pdf
new file mode 100644 (file)
index 0000000..904f8b0
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_USERNAME.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_USERPWD.3 b/docs/libcurl/opts/CURLOPT_USERPWD.3
new file mode 100644 (file)
index 0000000..22e920f
--- /dev/null
@@ -0,0 +1,76 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_USERPWD 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_USERPWD \- user name and password to use in authentication
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USERPWD, char *userpwd);
+.SH DESCRIPTION
+Pass a char * as parameter, pointing to a zero terminated login details string
+for the connection. The format of which is: [user name]:[password].
+
+When using Kerberos V5 authentication with a Windows based server, you should
+specify the user name part with the domain name in order for the server to
+successfully obtain a Kerberos Ticket. If you don't then the initial part of
+the authentication handshake may fail.
+
+When using NTLM, the user name can be specified simply as the user name
+without the domain name should the server be part of a single domain and
+forest.
+
+To specify the domain name use either Down-Level Logon Name or UPN (User
+Principal Name) formats. For example, EXAMPLE\\user and user@example.com
+respectively.
+
+Some HTTP servers (on Windows) support inclusion of the domain for Basic
+authentication as well.
+
+When using HTTP and \fICURLOPT_FOLLOWLOCATION(3)\fP, libcurl might perform
+several requests to possibly different hosts. libcurl will only send this user
+and password information to hosts using the initial host name (unless
+\fICURLOPT_UNRESTRICTED_AUTH(3)\fP is set), so if libcurl follows locations to
+other hosts it will not send the user and password to those. This is enforced
+to prevent accidental information leakage.
+
+Use \fICURLOPT_HTTPAUTH(3)\fP to specify the authentication method for HTTP
+based connections or \fICURLOPT_LOGIN_OPTIONS(3)\fP to control IMAP, POP3 and
+SMTP options.
+
+The user and password strings are not URL decoded, so there's no way to send
+in a user name containing a colon using this option. Use
+\fICURLOPT_USERNAME(3)\fP for that, or include it in the URL.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+Most
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK on success or
+CURLE_OUT_OF_MEMORY if there was insufficient heap space.
+.SH "SEE ALSO"
+.BR CURLOPT_USERNAME "(3), " CURLOPT_PASSWORD "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_USERPWD.html b/docs/libcurl/opts/CURLOPT_USERPWD.html
new file mode 100644 (file)
index 0000000..c1c3394
--- /dev/null
@@ -0,0 +1,67 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_USERPWD man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_USERPWD - user name and password to use in authentication <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USERPWD, char *userpwd); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * as parameter, pointing to a zero terminated login details string for the connection. The format of which is: [user name]:[password]. 
+<p class="level0">When using Kerberos V5 authentication with a Windows based server, you should specify the user name part with the domain name in order for the server to successfully obtain a Kerberos Ticket. If you don't then the initial part of the authentication handshake may fail. 
+<p class="level0">When using NTLM, the user name can be specified simply as the user name without the domain name should the server be part of a single domain and forest. 
+<p class="level0">To specify the domain name use either Down-Level Logon Name or UPN (User Principal Name) formats. For example, EXAMPLE\user and user@example.com respectively. 
+<p class="level0">Some HTTP servers (on Windows) support inclusion of the domain for Basic authentication as well. 
+<p class="level0">When using HTTP and <a Class="emphasis" href="./CURLOPT_FOLLOWLOCATION.html">CURLOPT_FOLLOWLOCATION</a>, libcurl might perform several requests to possibly different hosts. libcurl will only send this user and password information to hosts using the initial host name (unless <a Class="emphasis" href="./CURLOPT_UNRESTRICTED_AUTH.html">CURLOPT_UNRESTRICTED_AUTH</a> is set), so if libcurl follows locations to other hosts it will not send the user and password to those. This is enforced to prevent accidental information leakage. 
+<p class="level0">Use <a Class="emphasis" href="./CURLOPT_HTTPAUTH.html">CURLOPT_HTTPAUTH</a> to specify the authentication method for HTTP based connections or <a Class="emphasis" href="./CURLOPT_LOGIN_OPTIONS.html">CURLOPT_LOGIN_OPTIONS</a> to control IMAP, POP3 and SMTP options. 
+<p class="level0">The user and password strings are not URL decoded, so there's no way to send in a user name containing a colon using this option. Use <a Class="emphasis" href="./CURLOPT_USERNAME.html">CURLOPT_USERNAME</a> for that, or include it in the URL. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">Most <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK on success or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_USERNAME.html">CURLOPT_USERNAME</a>, <a Class="manpage" href="./CURLOPT_PASSWORD.html">CURLOPT_PASSWORD</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_USERPWD.pdf b/docs/libcurl/opts/CURLOPT_USERPWD.pdf
new file mode 100644 (file)
index 0000000..5e5209b
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_USERPWD.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_USE_SSL.3 b/docs/libcurl/opts/CURLOPT_USE_SSL.3
new file mode 100644 (file)
index 0000000..348f1b0
--- /dev/null
@@ -0,0 +1,69 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_USE_SSL 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_USE_SSL \- request using SSL / TLS for the transfer
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USE_SSL, long level);
+.SH DESCRIPTION
+Pass a long using one of the values from below, to make libcurl use your
+desired \fIlevel\fP of SSL for the transfer.
+
+These are all protocols that start out plain text and get "upgraded" to SSL
+using the STARTTLS command.
+
+This is for enabling SSL/TLS when you use FTP, SMTP, POP3, IMAP etc.
+.IP CURLUSESSL_NONE
+Don't attempt to use SSL.
+.IP CURLUSESSL_TRY
+Try using SSL, proceed as normal otherwise.
+.IP CURLUSESSL_CONTROL
+Require SSL for the control connection or fail with \fICURLE_USE_SSL_FAILED\fP.
+.IP CURLUSESSL_ALL
+Require SSL for all communication or fail with \fICURLE_USE_SSL_FAILED\fP.
+.SH DEFAULT
+CURLUSESSL_NONE
+.SH PROTOCOLS
+FTP, SMTP, POP3, IMAP
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/dir/file.ext");
+
+  /* require use of SSL for this, or fail */
+  curl_easy_setopt(curl, CURLOPT_USE_SSL, CURLUSESSL_ALL);
+
+  /* Perform the request */
+  curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.11.0. This option was known as CURLOPT_FTP_SSL up to 7.16.4, and
+the constants were known as CURLFTPSSL_*
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_SSLVERSION "(3), " CURLOPT_SSL_OPTIONS "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_USE_SSL.html b/docs/libcurl/opts/CURLOPT_USE_SSL.html
new file mode 100644 (file)
index 0000000..22916b0
--- /dev/null
@@ -0,0 +1,81 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_USE_SSL man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_USE_SSL - request using SSL / TLS for the transfer <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USE_SSL, long level); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a long using one of the values from below, to make libcurl use your desired <span Class="emphasis">level</span> of SSL for the transfer. 
+<p class="level0">These are all protocols that start out plain text and get "upgraded" to SSL using the STARTTLS command. 
+<p class="level0">This is for enabling SSL/TLS when you use FTP, SMTP, POP3, IMAP etc. 
+<p class="level0"><a name="CURLUSESSLNONE"></a><span class="nroffip">CURLUSESSL_NONE</span> 
+<p class="level1">Don't attempt to use SSL. 
+<p class="level0"><a name="CURLUSESSLTRY"></a><span class="nroffip">CURLUSESSL_TRY</span> 
+<p class="level1">Try using SSL, proceed as normal otherwise. 
+<p class="level0"><a name="CURLUSESSLCONTROL"></a><span class="nroffip">CURLUSESSL_CONTROL</span> 
+<p class="level1">Require SSL for the control connection or fail with <span Class="emphasis">CURLE_USE_SSL_FAILED</span>. 
+<p class="level0"><a name="CURLUSESSLALL"></a><span class="nroffip">CURLUSESSL_ALL</span> 
+<p class="level1">Require SSL for all communication or fail with <span Class="emphasis">CURLE_USE_SSL_FAILED</span>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">CURLUSESSL_NONE <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">FTP, SMTP, POP3, IMAP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre>
+<p class="level0">CURL *curl = curl_easy_init();
+ if(curl) {
+ &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="ftp://example.com/dir/file.ext">ftp://example.com/dir/file.ext</a>");
+ <p class="level0">&nbsp; /* require use of SSL for this, or fail */
+ &nbsp; curl_easy_setopt(curl, CURLOPT_USE_SSL, CURLUSESSL_ALL);
+ <p class="level0">&nbsp; /* Perform the request */
+ &nbsp; curl_easy_perform(curl);
+ }
+ </pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.11.0. This option was known as CURLOPT_FTP_SSL up to 7.16.4, and the constants were known as CURLFTPSSL_* <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_SSLVERSION.html">CURLOPT_SSLVERSION</a>, <a Class="manpage" href="./CURLOPT_SSL_OPTIONS.html">CURLOPT_SSL_OPTIONS</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_USE_SSL.pdf b/docs/libcurl/opts/CURLOPT_USE_SSL.pdf
new file mode 100644 (file)
index 0000000..b2c5442
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_USE_SSL.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_VERBOSE.3 b/docs/libcurl/opts/CURLOPT_VERBOSE.3
new file mode 100644 (file)
index 0000000..732b8c4
--- /dev/null
@@ -0,0 +1,63 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_VERBOSE 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_VERBOSE \- set verbose mode on/off
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_VERBOSE, long onoff);
+.SH DESCRIPTION
+Set the \fIonoff\fP parameter to 1 to make the library display a lot of
+verbose information about its operations on this \fIhandle\fP. Very useful for
+libcurl and/or protocol debugging and understanding. The verbose information
+will be sent to stderr, or the stream set with \fICURLOPT_STDERR(3)\fP.
+
+You hardly ever want this set in production use, you will almost always want
+this when you debug/report problems.
+
+To also get all the protocol data sent and received, consider using the
+\fICURLOPT_DEBUGFUNCTION(3)\fP.
+.SH DEFAULT
+0, meaning disabled.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+  /* ask libcurl to show us the verbose output */
+  curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
+
+  /* Perform the request */
+  curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_STDERR "(3), " CURLOPT_DEBUGFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_VERBOSE.html b/docs/libcurl/opts/CURLOPT_VERBOSE.html
new file mode 100644 (file)
index 0000000..402a394
--- /dev/null
@@ -0,0 +1,73 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_VERBOSE man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_VERBOSE - set verbose mode on/off <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_VERBOSE, long onoff); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Set the <span Class="emphasis">onoff</span> parameter to 1 to make the library display a lot of verbose information about its operations on this <span Class="emphasis">handle</span>. Very useful for libcurl and/or protocol debugging and understanding. The verbose information will be sent to stderr, or the stream set with <a Class="emphasis" href="./CURLOPT_STDERR.html">CURLOPT_STDERR</a>. 
+<p class="level0">You hardly ever want this set in production use, you will almost always want this when you debug/report problems. 
+<p class="level0">To also get all the protocol data sent and received, consider using the <a Class="emphasis" href="./CURLOPT_DEBUGFUNCTION.html">CURLOPT_DEBUGFUNCTION</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">0, meaning disabled. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><pre>
+<p class="level0">CURL *curl = curl_easy_init();
+ if(curl) {
+ &nbsp; curl_easy_setopt(curl, CURLOPT_URL, "<a href="http://example.com">http://example.com</a>");
+ <p class="level0">&nbsp; /* ask libcurl to show us the verbose output */
+ &nbsp; curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
+ <p class="level0">&nbsp; /* Perform the request */
+ &nbsp; curl_easy_perform(curl);
+ }
+ </pre>
+
+<p class="level0"><a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Always <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_STDERR.html">CURLOPT_STDERR</a>, <a Class="manpage" href="./CURLOPT_DEBUGFUNCTION.html">CURLOPT_DEBUGFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_VERBOSE.pdf b/docs/libcurl/opts/CURLOPT_VERBOSE.pdf
new file mode 100644 (file)
index 0000000..5250d4e
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_VERBOSE.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3 b/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3
new file mode 100644 (file)
index 0000000..b567045
--- /dev/null
@@ -0,0 +1,87 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_WILDCARDMATCH 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_WILDCARDMATCH \- enable directory wildcard transfers
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WILDCARDMATCH, long onoff);
+.SH DESCRIPTION
+Set \fIonoff\fP to 1 if you want to transfer multiple files according to a
+file name pattern. The pattern can be specified as part of the
+\fICURLOPT_URL(3)\fP option, using an fnmatch-like pattern (Shell Pattern
+Matching) in the last part of URL (file name).
+
+By default, libcurl uses its internal wildcard matching implementation. You
+can provide your own matching function by the
+\fICURLOPT_FNMATCH_FUNCTION(3)\fP option.
+
+A brief introduction of its syntax follows:
+.RS
+.IP "* - ASTERISK"
+\&ftp://example.com/some/path/\fB*.txt\fP (for all txt's from the root
+directory)
+.RE
+.RS
+.IP "? - QUESTION MARK"
+Question mark matches any (exactly one) character.
+
+\&ftp://example.com/some/path/\fBphoto?.jpeg\fP
+.RE
+.RS
+.IP "[ - BRACKET EXPRESSION"
+The left bracket opens a bracket expression. The question mark and asterisk have
+no special meaning in a bracket expression. Each bracket expression ends by the
+right bracket and matches exactly one character. Some examples follow:
+
+\fB[a-zA-Z0\-9]\fP or \fB[f\-gF\-G]\fP \- character interval
+
+\fB[abc]\fP - character enumeration
+
+\fB[^abc]\fP or \fB[!abc]\fP - negation
+
+\fB[[:\fP\fIname\fP\fB:]]\fP class expression. Supported classes are
+\fBalnum\fP,\fBlower\fP, \fBspace\fP, \fBalpha\fP, \fBdigit\fP, \fBprint\fP,
+\fBupper\fP, \fBblank\fP, \fBgraph\fP, \fBxdigit\fP.
+
+\fB[][-!^]\fP - special case \- matches only '\-', ']', '[', '!' or '^'. These
+characters have no special purpose.
+
+\fB[\\[\\]\\\\]\fP - escape syntax. Matches '[', ']' or '\\'.
+
+Using the rules above, a file name pattern can be constructed:
+
+\&ftp://example.com/some/path/\fB[a-z[:upper:]\\\\].jpeg\fP
+.RE
+.PP
+.SH PROTOCOLS
+This feature is only supported for FTP download.
+.SH EXAMPLE
+See http://curl.haxx.se/libcurl/c/ftp-wildcard.html
+.SH AVAILABILITY
+Added in 7.21.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_FNMATCH_FUNCTION "(3), " CURLOPT_URL "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.html b/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.html
new file mode 100644 (file)
index 0000000..1abff18
--- /dev/null
@@ -0,0 +1,83 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_WILDCARDMATCH man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_WILDCARDMATCH - enable directory wildcard transfers <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WILDCARDMATCH, long onoff); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Set <span Class="emphasis">onoff</span> to 1 if you want to transfer multiple files according to a file name pattern. The pattern can be specified as part of the <a Class="emphasis" href="./CURLOPT_URL.html">CURLOPT_URL</a> option, using an fnmatch-like pattern (Shell Pattern Matching) in the last part of URL (file name). 
+<p class="level0">By default, libcurl uses its internal wildcard matching implementation. You can provide your own matching function by the <a Class="emphasis" href="./CURLOPT_FNMATCH_FUNCTION.html">CURLOPT_FNMATCH_FUNCTION</a> option. 
+<p class="level0">A brief introduction of its syntax follows: 
+<p class="level1">
+<p class="level0"><a name=""></a><span class="nroffip">* - ASTERISK</span> 
+<p class="level1"><a href="ftp://example.com/some/path/">ftp://example.com/some/path/</a><span Class="bold">*.txt</span> (for all txt's from the root directory) 
+<p class="level0">
+<p class="level1">
+<p class="level0"><a name=""></a><span class="nroffip">? - QUESTION MARK</span> 
+<p class="level1">Question mark matches any (exactly one) character. 
+<p class="level1"><a href="ftp://example.com/some/path/">ftp://example.com/some/path/</a><span Class="bold">photo?.jpeg</span> 
+<p class="level0">
+<p class="level1">
+<p class="level0"><a name=""></a><span class="nroffip">[ - BRACKET EXPRESSION</span> 
+<p class="level1">The left bracket opens a bracket expression. The question mark and asterisk have no special meaning in a bracket expression. Each bracket expression ends by the right bracket and matches exactly one character. Some examples follow: 
+<p class="level1"><span Class="bold">[a-zA-Z0-9]</span> or <span Class="bold">[f-gF-G]</span> - character interval 
+<p class="level1"><span Class="bold">[abc]</span> - character enumeration 
+<p class="level1"><span Class="bold">[^abc]</span> or <span Class="bold">[!abc]</span> - negation 
+<p class="level1"><a class="bold" href="#">[[:</a><span Class="emphasis">name</span><a class="bold" href="#">:]]</a> class expression. Supported classes are <span Class="bold">alnum</span>,<span Class="bold">lower</span>, <span Class="bold">space</span>, <span Class="bold">alpha</span>, <span Class="bold">digit</span>, <span Class="bold">print</span>, <span Class="bold">upper</span>, <span Class="bold">blank</span>, <span Class="bold">graph</span>, <span Class="bold">xdigit</span>. 
+<p class="level1"><span Class="bold">[][-!^]</span> - special case - matches only '-', ']', '[', '!' or '^'. These characters have no special purpose. 
+<p class="level1"><a class="bold" href="#">[\[\]\\]</a> - escape syntax. Matches '[', ']' or '&acute;. 
+<p class="level1">Using the rules above, a file name pattern can be constructed: 
+<p class="level1"><a href="ftp://example.com/some/path/">ftp://example.com/some/path/</a><span Class="bold">[a-z[:upper:]\\].jpeg</span> 
+<p class="level0">
+<p class="level0"><a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">This feature is only supported for FTP download. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">See <a href="http://curl.haxx.se/libcurl/c/ftp-wildcard.html">http://curl.haxx.se/libcurl/c/ftp-wildcard.html</a> <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.21.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_FNMATCH_FUNCTION.html">CURLOPT_FNMATCH_FUNCTION</a>, <a Class="manpage" href="./CURLOPT_URL.html">CURLOPT_URL</a>, <a class="manpage" href="#"> </a> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.pdf b/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.pdf
new file mode 100644 (file)
index 0000000..c0d81dc
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_WRITEDATA.3 b/docs/libcurl/opts/CURLOPT_WRITEDATA.3
new file mode 100644 (file)
index 0000000..be07c76
--- /dev/null
@@ -0,0 +1,58 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_WRITEDATA 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_WRITEDATA \- custom pointer passed to the write callback
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WRITEDATA, void *pointer);
+.SH DESCRIPTION
+A data \fIpointer\fP to pass to the write callback. If you use the
+\fICURLOPT_WRITEFUNCTION(3)\fP option, this is the pointer you'll get in that
+callback's 4th argument. If you don't use a write callback, you must make
+\fIpointer\fP a 'FILE *' (cast to 'void *') as libcurl will pass this to
+\fIfwrite(3)\fP when writing data.
+
+The internal \fICURLOPT_WRITEFUNCTION(3)\fP will write the data to the FILE *
+given with this option, or to stdout if this option hasn't been set.
+
+If you're using libcurl as a win32 DLL, you \fBMUST\fP use the
+\fICURLOPT_WRITEFUNCTION(3)\fP if you set this option or you will experience
+crashes.
+.SH DEFAULT
+By default, this is a FILE * to stdout.
+.SH PROTOCOLS
+Used for all protocols.
+.SH EXAMPLE
+A common technique is to use the write callback to store the incoming data
+into a dynamically growing allocated buffer, and then this CURLOPT_WRITEDATA
+is used to point to a struct or the buffer to store data in. Like in the
+getinmemory example: http://curl.haxx.se/libcurl/c/getinmemory.html
+.SH AVAILABILITY
+Available in all libcurl versions. This option was formerly known as
+\fICURLOPT_FILE\fP, the name \fICURLOPT_WRITEDATA\fP was introduced in 7.9.7.
+.SH RETURN VALUE
+This will return CURLE_OK.
+.SH "SEE ALSO"
+.BR CURLOPT_WRITEFUNCTION "(3), " CURLOPT_READDATA "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_WRITEDATA.html b/docs/libcurl/opts/CURLOPT_WRITEDATA.html
new file mode 100644 (file)
index 0000000..fb9dff9
--- /dev/null
@@ -0,0 +1,62 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_WRITEDATA man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_WRITEDATA - custom pointer passed to the write callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WRITEDATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">A data <span Class="emphasis">pointer</span> to pass to the write callback. If you use the <a Class="emphasis" href="./CURLOPT_WRITEFUNCTION.html">CURLOPT_WRITEFUNCTION</a> option, this is the pointer you'll get in that callback's 4th argument. If you don't use a write callback, you must make <span Class="emphasis">pointer</span> a 'FILE *' (cast to 'void *') as libcurl will pass this to <span Class="emphasis">fwrite(3)</span> when writing data. 
+<p class="level0">The internal <a Class="emphasis" href="./CURLOPT_WRITEFUNCTION.html">CURLOPT_WRITEFUNCTION</a> will write the data to the FILE * given with this option, or to stdout if this option hasn't been set. 
+<p class="level0">If you're using libcurl as a win32 DLL, you <span Class="bold">MUST</span> use the <a Class="emphasis" href="./CURLOPT_WRITEFUNCTION.html">CURLOPT_WRITEFUNCTION</a> if you set this option or you will experience crashes. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">By default, this is a FILE * to stdout. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">Used for all protocols. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">A common technique is to use the write callback to store the incoming data into a dynamically growing allocated buffer, and then this CURLOPT_WRITEDATA is used to point to a struct or the buffer to store data in. Like in the getinmemory example: <a href="http://curl.haxx.se/libcurl/c/getinmemory.html">http://curl.haxx.se/libcurl/c/getinmemory.html</a> <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Available in all libcurl versions. This option was formerly known as <span Class="emphasis">CURLOPT_FILE</span>, the name <span Class="emphasis">CURLOPT_WRITEDATA</span> was introduced in 7.9.7. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">This will return CURLE_OK. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_WRITEFUNCTION.html">CURLOPT_WRITEFUNCTION</a>, <a Class="manpage" href="./CURLOPT_READDATA.html">CURLOPT_READDATA</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_WRITEDATA.pdf b/docs/libcurl/opts/CURLOPT_WRITEDATA.pdf
new file mode 100644 (file)
index 0000000..2751caa
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_WRITEDATA.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3 b/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3
new file mode 100644 (file)
index 0000000..f5a45a3
--- /dev/null
@@ -0,0 +1,81 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_WRITEFUNCTION 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_WRITEFUNCTION \- set callback for writing received data
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata);
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WRITEFUNCTION, write_callback);
+.SH DESCRIPTION
+Pass a pointer to your callback function, which should match the prototype
+shown above.
+
+This callback function gets called by libcurl as soon as there is data
+received that needs to be saved.  \fIptr\fP points to the delivered data, and
+the size of that data is \fIsize\fP multiplied with \fInmemb\fP.
+
+The callback function will be passed as much data as possible in all invokes,
+but you must not make any assumptions. It may be one byte, it may be
+thousands. The maximum amount of body data that will be passed to the write
+callback is defined in the curl.h header file: \fICURL_MAX_WRITE_SIZE\fP (the
+usual default is 16K). If \fICURLOPT_HEADER(3)\fP is enabled, which makes
+header data get passed to the write callback, you can get up to
+\fICURL_MAX_HTTP_HEADER\fP bytes of header data passed into it. This usually
+means 100K.
+
+This function may be called with zero bytes data if the transferred file is
+empty.
+
+The data passed to this function will not be zero terminated!
+
+Set the \fIuserdata\fP argument with the \fICURLOPT_WRITEDATA(3)\fP option.
+
+Your callback should return the number of bytes actually taken care of. If
+that amount differs from the amount passed to your callback function, it'll
+signal an error condition to the library. This will cause the transfer to get
+aborted and the libcurl function used will return \fICURLE_WRITE_ERROR\fP.
+
+If your callback function returns CURL_WRITEFUNC_PAUSE it will cause this
+transfer to become paused.  See \fIcurl_easy_pause(3)\fP for further details.
+
+Set this option to NULL to get the internal default function used instead of
+your callback. The internal default function will write the data to the FILE *
+given with \fICURLOPT_WRITEDATA(3)\fP.
+.SH DEFAULT
+libcurl will use 'fwrite' as a callback by default.
+.SH PROTOCOLS
+For all protocols
+.SH AVAILABILITY
+Support for the CURL_WRITEFUNC_PAUSE return code was added in version 7.18.0.
+.SH RETURN VALUE
+This will return CURLE_OK.
+.SH EXAMPLE
+A common technique is to use this callback to store the incoming data into a
+dynamically growing allocated buffer. Like in the getinmemory example:
+http://curl.haxx.se/libcurl/c/getinmemory.html
+.SH "SEE ALSO"
+.BR CURLOPT_WRITEDATA "(3), " CURLOPT_READFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.html b/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.html
new file mode 100644 (file)
index 0000000..94bb1b2
--- /dev/null
@@ -0,0 +1,72 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_WRITEFUNCTION man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_WRITEFUNCTION - set callback for writing received data <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0"><pre>
+<p class="level0">#include &lt;curl/curl.h&gt;
+ <p class="level0">size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata);
+ <p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WRITEFUNCTION, write_callback);
+ </pre>
+<a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
+<p class="level0">This callback function gets called by libcurl as soon as there is data received that needs to be saved.  <span Class="emphasis">ptr</span> points to the delivered data, and the size of that data is <span Class="emphasis">size</span> multiplied with <span Class="emphasis">nmemb</span>. 
+<p class="level0">The callback function will be passed as much data as possible in all invokes, but you must not make any assumptions. It may be one byte, it may be thousands. The maximum amount of body data that will be passed to the write callback is defined in the curl.h header file: <span Class="emphasis">CURL_MAX_WRITE_SIZE</span> (the usual default is 16K). If <a Class="emphasis" href="./CURLOPT_HEADER.html">CURLOPT_HEADER</a> is enabled, which makes header data get passed to the write callback, you can get up to <span Class="emphasis">CURL_MAX_HTTP_HEADER</span> bytes of header data passed into it. This usually means 100K. 
+<p class="level0">This function may be called with zero bytes data if the transferred file is empty. 
+<p class="level0">The data passed to this function will not be zero terminated! 
+<p class="level0">Set the <span Class="emphasis">userdata</span> argument with the <a Class="emphasis" href="./CURLOPT_WRITEDATA.html">CURLOPT_WRITEDATA</a> option. 
+<p class="level0">Your callback should return the number of bytes actually taken care of. If that amount differs from the amount passed to your callback function, it'll signal an error condition to the library. This will cause the transfer to get aborted and the libcurl function used will return <span Class="emphasis">CURLE_WRITE_ERROR</span>. 
+<p class="level0">If your callback function returns CURL_WRITEFUNC_PAUSE it will cause this transfer to become paused.  See <span Class="emphasis">curl_easy_pause(3)</span> for further details. 
+<p class="level0">Set this option to NULL to get the internal default function used instead of your callback. The internal default function will write the data to the FILE * given with <a Class="emphasis" href="./CURLOPT_WRITEDATA.html">CURLOPT_WRITEDATA</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">libcurl will use 'fwrite' as a callback by default. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">For all protocols <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Support for the CURL_WRITEFUNC_PAUSE return code was added in version 7.18.0. <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">This will return CURLE_OK. <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">A common technique is to use this callback to store the incoming data into a dynamically growing allocated buffer. Like in the getinmemory example: <a href="http://curl.haxx.se/libcurl/c/getinmemory.html">http://curl.haxx.se/libcurl/c/getinmemory.html</a> <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_WRITEDATA.html">CURLOPT_WRITEDATA</a>, <a Class="manpage" href="./CURLOPT_READFUNCTION.html">CURLOPT_READFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.pdf b/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.pdf
new file mode 100644 (file)
index 0000000..42c2177
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_XFERINFODATA.3 b/docs/libcurl/opts/CURLOPT_XFERINFODATA.3
new file mode 100644 (file)
index 0000000..b2c170f
--- /dev/null
@@ -0,0 +1,46 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_XFERINFODATA 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_XFERINFODATA \- custom pointer passed to the progress callback
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_XFERINFODATA, void *pointer);
+.SH DESCRIPTION
+Pass a \fIpointer\fP that will be untouched by libcurl and passed as the first
+argument in the progress callback set with \fICURLOPT_XFERINFOFUNCTION(3)\fP.
+
+This is an alias for \fICURLOPT_PROGRESSDATA(3)\fP.
+.SH DEFAULT
+The default value of this parameter is NULL.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+http://curl.haxx.se/libcurl/c/progressfunc.html
+.SH AVAILABILITY
+Added in 7.32.0
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_XFERINFOFUNCTION "(3), " CURLOPT_XFERINFOFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_XFERINFODATA.html b/docs/libcurl/opts/CURLOPT_XFERINFODATA.html
new file mode 100644 (file)
index 0000000..3c61c0e
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_XFERINFODATA man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_XFERINFODATA - custom pointer passed to the progress callback <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_XFERINFODATA, void *pointer); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a <span Class="emphasis">pointer</span> that will be untouched by libcurl and passed as the first argument in the progress callback set with <a Class="emphasis" href="./CURLOPT_XFERINFOFUNCTION.html">CURLOPT_XFERINFOFUNCTION</a>. 
+<p class="level0">This is an alias for <a Class="emphasis" href="./CURLOPT_PROGRESSDATA.html">CURLOPT_PROGRESSDATA</a>. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">The default value of this parameter is NULL. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><a href="http://curl.haxx.se/libcurl/c/progressfunc.html">http://curl.haxx.se/libcurl/c/progressfunc.html</a> <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.32.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_XFERINFOFUNCTION.html">CURLOPT_XFERINFOFUNCTION</a>, <a Class="manpage" href="./CURLOPT_XFERINFOFUNCTION.html">CURLOPT_XFERINFOFUNCTION</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_XFERINFODATA.pdf b/docs/libcurl/opts/CURLOPT_XFERINFODATA.pdf
new file mode 100644 (file)
index 0000000..87d1cfd
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_XFERINFODATA.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3 b/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3
new file mode 100644 (file)
index 0000000..cad8118
--- /dev/null
@@ -0,0 +1,81 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_XFERINFOFUNCTION 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_XFERINFOFUNCTION \- callback to progress meter function
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+int progress_callback(void *clientp,
+                      curl_off_t dltotal,
+                      curl_off_t dlnow,
+                      curl_off_t ultotal,
+                      curl_off_t ulnow);
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_XFERINFOFUNCTION, progress_callback);
+.SH DESCRIPTION
+Pass a pointer to your callback function, which should match the prototype
+shown above.
+
+This function gets called by libcurl instead of its internal equivalent with a
+frequent interval. While data is being transferred it will be called very
+frequently, and during slow periods like when nothing is being transferred it
+can slow down to about one call per second.
+
+\fIclientp\fP is the pointer set with \fICURLOPT_XFERINFODATA(3)\fP, it is not
+used by libcurl but is only passed along from the application to the callback.
+
+The callback gets told how much data libcurl will transfer and has
+transferred, in number of bytes. \fIdltotal\fP is the total number of bytes
+libcurl expects to download in this transfer. \fIdlnow\fP is the number of
+bytes downloaded so far. \fIultotal\fP is the total number of bytes libcurl
+expects to upload in this transfer. \fIulnow\fP is the number of bytes
+uploaded so far.
+
+Unknown/unused argument values passed to the callback will be set to zero
+(like if you only download data, the upload size will remain 0). Many times
+the callback will be called one or more times first, before it knows the data
+sizes so a program must be made to handle that.
+
+Returning a non-zero value from this callback will cause libcurl to abort the
+transfer and return \fICURLE_ABORTED_BY_CALLBACK\fP.
+
+If you transfer data with the multi interface, this function will not be
+called during periods of idleness unless you call the appropriate libcurl
+function that performs transfers.
+
+\fICURLOPT_NOPROGRESS(3)\fP must be set to 0 to make this function actually
+get called.
+.SH DEFAULT
+By default, libcurl has an internal progress meter. That's rarely wanted by
+users.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+http://curl.haxx.se/libcurl/c/progressfunc.html
+.SH AVAILABILITY
+Added in 7.32.0. This callback replaces \fICURLOPT_PROGRESSFUNCTION(3)\fP
+.SH RETURN VALUE
+Returns CURLE_OK.
+.SH "SEE ALSO"
+.BR CURLOPT_XFERINFODATA "(3), " CURLOPT_NOPROGRESS "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.html b/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.html
new file mode 100644 (file)
index 0000000..12435a1
--- /dev/null
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_XFERINFOFUNCTION man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_XFERINFOFUNCTION - callback to progress meter function <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">int progress_callback(void *clientp, &nbsp;                     curl_off_t dltotal, &nbsp;                     curl_off_t dlnow, &nbsp;                     curl_off_t ultotal, &nbsp;                     curl_off_t ulnow); 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_XFERINFOFUNCTION, progress_callback); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a pointer to your callback function, which should match the prototype shown above. 
+<p class="level0">This function gets called by libcurl instead of its internal equivalent with a frequent interval. While data is being transferred it will be called very frequently, and during slow periods like when nothing is being transferred it can slow down to about one call per second. 
+<p class="level0"><span Class="emphasis">clientp</span> is the pointer set with <a Class="emphasis" href="./CURLOPT_XFERINFODATA.html">CURLOPT_XFERINFODATA</a>, it is not used by libcurl but is only passed along from the application to the callback. 
+<p class="level0">The callback gets told how much data libcurl will transfer and has transferred, in number of bytes. <span Class="emphasis">dltotal</span> is the total number of bytes libcurl expects to download in this transfer. <span Class="emphasis">dlnow</span> is the number of bytes downloaded so far. <span Class="emphasis">ultotal</span> is the total number of bytes libcurl expects to upload in this transfer. <span Class="emphasis">ulnow</span> is the number of bytes uploaded so far. 
+<p class="level0">Unknown/unused argument values passed to the callback will be set to zero (like if you only download data, the upload size will remain 0). Many times the callback will be called one or more times first, before it knows the data sizes so a program must be made to handle that. 
+<p class="level0">Returning a non-zero value from this callback will cause libcurl to abort the transfer and return <span Class="emphasis">CURLE_ABORTED_BY_CALLBACK</span>. 
+<p class="level0">If you transfer data with the multi interface, this function will not be called during periods of idleness unless you call the appropriate libcurl function that performs transfers. 
+<p class="level0"><a Class="emphasis" href="./CURLOPT_NOPROGRESS.html">CURLOPT_NOPROGRESS</a> must be set to 0 to make this function actually get called. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">By default, libcurl has an internal progress meter. That's rarely wanted by users. <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">All <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0"><a href="http://curl.haxx.se/libcurl/c/progressfunc.html">http://curl.haxx.se/libcurl/c/progressfunc.html</a> <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.32.0. This callback replaces <a Class="emphasis" href="./CURLOPT_PROGRESSFUNCTION.html">CURLOPT_PROGRESSFUNCTION</a> <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_XFERINFODATA.html">CURLOPT_XFERINFODATA</a>, <a Class="manpage" href="./CURLOPT_NOPROGRESS.html">CURLOPT_NOPROGRESS</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.pdf b/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.pdf
new file mode 100644 (file)
index 0000000..56d3a0d
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.pdf differ
diff --git a/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3 b/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3
new file mode 100644 (file)
index 0000000..2644c88
--- /dev/null
@@ -0,0 +1,49 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_XOAUTH2_BEARER 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_XOAUTH2_BEARER \- specify OAuth 2.0 access token
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_XOAUTH2_BEARER, char *token);
+.SH DESCRIPTION
+Pass a char * as parameter, which should point to the zero terminated OAuth
+2.0 Bearer Access Token for use with IMAP, POP3 and SMTP servers that support
+the OAuth 2.0 Authorization Framework.
+
+Note: The user name used to generate the Bearer Token should be supplied via
+the \fICURLOPT_USERNAME(3)\fP option.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+IMAP, POP3 and SMTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.33.0
+.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 CURLOPT_MAIL_AUTH "(3), " CURLOPT_USERNAME "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.html b/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.html
new file mode 100644 (file)
index 0000000..0658c30
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<title>CURLOPT_XOAUTH2_BEARER man page</title>
+<meta name="generator" content="roffit">
+<STYLE type="text/css">
+P.level0 {
+ padding-left: 2em;
+}
+
+P.level1 {
+ padding-left: 4em;
+}
+
+P.level2 {
+ padding-left: 6em;
+}
+
+span.emphasis {
+ font-style: italic;
+}
+
+span.bold {
+ font-weight: bold;
+}
+
+span.manpage {
+ font-weight: bold;
+}
+
+h2.nroffsh {
+ background-color: #e0e0e0;
+}
+
+span.nroffip {
+ font-weight: bold;
+ font-size: 120%;
+ font-family: monospace;
+}
+
+p.roffit {
+ text-align: center;
+ font-size: 80%;
+}
+</STYLE>
+</head><body>
+
+<p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
+<p class="level0">CURLOPT_XOAUTH2_BEARER - specify OAuth 2.0 access token <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
+<p class="level0">#include &lt;curl/curl.h&gt; 
+<p class="level0">CURLcode curl_easy_setopt(CURL *handle, CURLOPT_XOAUTH2_BEARER, char *token); <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">Pass a char * as parameter, which should point to the zero terminated OAuth 2.0 Bearer Access Token for use with IMAP, POP3 and SMTP servers that support the OAuth 2.0 Authorization Framework. 
+<p class="level0">Note: The user name used to generate the Bearer Token should be supplied via the <a Class="emphasis" href="./CURLOPT_USERNAME.html">CURLOPT_USERNAME</a> option. <a name="DEFAULT"></a><h2 class="nroffsh">DEFAULT</h2>
+<p class="level0">NULL <a name="PROTOCOLS"></a><h2 class="nroffsh">PROTOCOLS</h2>
+<p class="level0">IMAP, POP3 and SMTP <a name="EXAMPLE"></a><h2 class="nroffsh">EXAMPLE</h2>
+<p class="level0">TODO <a name="AVAILABILITY"></a><h2 class="nroffsh">AVAILABILITY</h2>
+<p class="level0">Added in 7.33.0 <a name="RETURN"></a><h2 class="nroffsh">RETURN VALUE</h2>
+<p class="level0">Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. <a name="SEE"></a><h2 class="nroffsh">SEE ALSO</h2>
+<p class="level0"><a Class="manpage" href="./CURLOPT_MAIL_AUTH.html">CURLOPT_MAIL_AUTH</a>, <a Class="manpage" href="./CURLOPT_USERNAME.html">CURLOPT_USERNAME</a>, <span Class="manpage"> </span> <p class="roffit">
+ This HTML page was made with <a href="http://daniel.haxx.se/projects/roffit/">roffit</a>.
+</body></html>
diff --git a/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.pdf b/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.pdf
new file mode 100644 (file)
index 0000000..b8406cf
Binary files /dev/null and b/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.pdf differ
diff --git a/docs/libcurl/opts/Makefile.am b/docs/libcurl/opts/Makefile.am
new file mode 100644 (file)
index 0000000..eac785c
--- /dev/null
@@ -0,0 +1,346 @@
+#***************************************************************************
+#                                  _   _ ____  _
+#  Project                     ___| | | |  _ \| |
+#                             / __| | | | |_) | |
+#                            | (__| |_| |  _ <| |___
+#                             \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at http://curl.haxx.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
+
+AUTOMAKE_OPTIONS = foreign no-dependencies
+
+man_MANS = CURLOPT_ACCEPT_ENCODING.3 CURLOPT_ACCEPTTIMEOUT_MS.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_CONNECT_ONLY.3                  \
+ CURLOPT_CONNECTTIMEOUT.3 CURLOPT_CONNECTTIMEOUT_MS.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_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_FTP_ACCOUNT.3  \
+ CURLOPT_FTP_ALTERNATIVE_TO_USER.3 CURLOPT_FTP_CREATE_MISSING_DIRS.3   \
+ CURLOPT_FTP_FILEMETHOD.3 CURLOPT_FTPPORT.3                            \
+ CURLOPT_FTP_RESPONSE_TIMEOUT.3 CURLOPT_FTP_SKIP_PASV_IP.3             \
+ CURLOPT_FTPSSLAUTH.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_HEADER.3 CURLOPT_HEADERDATA.3     \
+ CURLOPT_HEADERFUNCTION.3 CURLOPT_HEADEROPT.3 CURLOPT_HTTP200ALIASES.3 \
+ CURLOPT_HTTPAUTH.3 CURLOPT_HTTP_CONTENT_DECODING.3 CURLOPT_HTTPGET.3  \
+ CURLOPT_HTTPHEADER.3 CURLOPT_HTTPPOST.3 CURLOPT_HTTPPROXYTUNNEL.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_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_MAX_RECV_SPEED_LARGE.3 CURLOPT_MAXREDIRS.3                    \
+ CURLOPT_MAX_SEND_SPEED_LARGE.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_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_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_PROXY_TRANSFER_MODE.3 CURLOPT_PROXYTYPE.3 \
+ CURLOPT_PROXYUSERNAME.3 CURLOPT_PROXYUSERPWD.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_RESOLVE.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_SHARE.3 CURLOPT_SOCKOPTDATA.3          \
+ CURLOPT_SOCKOPTFUNCTION.3 CURLOPT_SOCKS5_GSSAPI_NEC.3                 \
+ CURLOPT_SOCKS5_GSSAPI_SERVICE.3 CURLOPT_SSH_AUTH_TYPES.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_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_SSLENGINE.3        \
+ CURLOPT_SSLENGINE_DEFAULT.3 CURLOPT_SSLKEY.3 CURLOPT_SSLKEYTYPE.3     \
+ CURLOPT_SSL_OPTIONS.3 CURLOPT_SSL_SESSIONID_CACHE.3                   \
+ CURLOPT_SSL_VERIFYHOST.3 CURLOPT_SSL_VERIFYPEER.3 CURLOPT_SSLVERSION.3        \
+ CURLOPT_STDERR.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_TIMECONDITION.3 CURLOPT_TIMEOUT.3      \
+ CURLOPT_TIMEOUT_MS.3 CURLOPT_TIMEVALUE.3 CURLOPT_TLSAUTH_PASSWORD.3   \
+ CURLOPT_TLSAUTH_TYPE.3 CURLOPT_TLSAUTH_USERNAME.3                     \
+ CURLOPT_TRANSFER_ENCODING.3 CURLOPT_TRANSFERTEXT.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                   \
+ 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_SOCKETDATA.3 CURLMOPT_SOCKETFUNCTION.3 CURLMOPT_TIMERDATA.3  \
+ CURLMOPT_TIMERFUNCTION.3 CURLOPT_UNIX_SOCKET_PATH.3
+
+
+HTMLPAGES = CURLOPT_ACCEPT_ENCODING.html CURLOPT_ACCEPTTIMEOUT_MS.html \
+ CURLOPT_ADDRESS_SCOPE.html CURLOPT_APPEND.html                                \
+ CURLOPT_AUTOREFERER.html CURLOPT_BUFFERSIZE.html CURLOPT_CAINFO.html  \
+ CURLOPT_CAPATH.html CURLOPT_CERTINFO.html                             \
+ CURLOPT_CHUNK_BGN_FUNCTION.html CURLOPT_CHUNK_DATA.html               \
+ CURLOPT_CHUNK_END_FUNCTION.html CURLOPT_CLOSESOCKETDATA.html          \
+ CURLOPT_CLOSESOCKETFUNCTION.html CURLOPT_CONNECT_ONLY.html            \
+ CURLOPT_CONNECTTIMEOUT.html CURLOPT_CONNECTTIMEOUT_MS.html            \
+ CURLOPT_CONV_FROM_NETWORK_FUNCTION.html                               \
+ CURLOPT_CONV_FROM_UTF8_FUNCTION.html                                  \
+ CURLOPT_CONV_TO_NETWORK_FUNCTION.html CURLOPT_COOKIE.html             \
+ CURLOPT_COOKIEFILE.html CURLOPT_COOKIEJAR.html CURLOPT_COOKIELIST.html        \
+ CURLOPT_COOKIESESSION.html CURLOPT_COPYPOSTFIELDS.html                        \
+ CURLOPT_CRLF.html CURLOPT_CRLFILE.html CURLOPT_CUSTOMREQUEST.html     \
+ CURLOPT_DEBUGDATA.html CURLOPT_DEBUGFUNCTION.html                     \
+ CURLOPT_DIRLISTONLY.html CURLOPT_DNS_CACHE_TIMEOUT.html               \
+ CURLOPT_DNS_INTERFACE.html CURLOPT_DNS_LOCAL_IP4.html                 \
+ CURLOPT_DNS_LOCAL_IP6.html CURLOPT_DNS_SERVERS.html                   \
+ CURLOPT_DNS_USE_GLOBAL_CACHE.html CURLOPT_EGDSOCKET.html              \
+ CURLOPT_ERRORBUFFER.html CURLOPT_EXPECT_100_TIMEOUT_MS.html           \
+ CURLOPT_FAILONERROR.html CURLOPT_FILETIME.html                                \
+ CURLOPT_FNMATCH_DATA.html CURLOPT_FNMATCH_FUNCTION.html               \
+ CURLOPT_FOLLOWLOCATION.html CURLOPT_FORBID_REUSE.html                 \
+ CURLOPT_FRESH_CONNECT.html CURLOPT_FTP_ACCOUNT.html                   \
+ CURLOPT_FTP_ALTERNATIVE_TO_USER.html                                  \
+ CURLOPT_FTP_CREATE_MISSING_DIRS.html CURLOPT_FTP_FILEMETHOD.html      \
+ CURLOPT_FTPPORT.html CURLOPT_FTP_RESPONSE_TIMEOUT.html                        \
+ CURLOPT_FTP_SKIP_PASV_IP.html CURLOPT_FTPSSLAUTH.html                 \
+ CURLOPT_FTP_SSL_CCC.html CURLOPT_FTP_USE_EPRT.html                    \
+ CURLOPT_FTP_USE_EPSV.html CURLOPT_FTP_USE_PRET.html                   \
+ CURLOPT_GSSAPI_DELEGATION.html CURLOPT_HEADER.html                    \
+ CURLOPT_HEADERDATA.html CURLOPT_HEADERFUNCTION.html                   \
+ CURLOPT_HEADEROPT.html CURLOPT_HTTP200ALIASES.html                    \
+ CURLOPT_HTTPAUTH.html CURLOPT_HTTP_CONTENT_DECODING.html              \
+ CURLOPT_HTTPGET.html CURLOPT_HTTPHEADER.html CURLOPT_HTTPPOST.html    \
+ CURLOPT_HTTPPROXYTUNNEL.html CURLOPT_HTTP_TRANSFER_DECODING.html      \
+ CURLOPT_HTTP_VERSION.html CURLOPT_IGNORE_CONTENT_LENGTH.html          \
+ CURLOPT_INFILESIZE.html CURLOPT_INFILESIZE_LARGE.html                 \
+ CURLOPT_INTERFACE.html CURLOPT_INTERLEAVEDATA.html                    \
+ CURLOPT_INTERLEAVEFUNCTION.html CURLOPT_IOCTLDATA.html                        \
+ CURLOPT_IOCTLFUNCTION.html CURLOPT_IPRESOLVE.html                     \
+ CURLOPT_ISSUERCERT.html CURLOPT_KEYPASSWD.html CURLOPT_KRBLEVEL.html  \
+ CURLOPT_LOCALPORT.html CURLOPT_LOCALPORTRANGE.html                    \
+ CURLOPT_LOGIN_OPTIONS.html CURLOPT_LOW_SPEED_LIMIT.html               \
+ CURLOPT_LOW_SPEED_TIME.html CURLOPT_MAIL_AUTH.html                    \
+ CURLOPT_MAIL_FROM.html CURLOPT_MAIL_RCPT.html CURLOPT_MAXCONNECTS.html        \
+ CURLOPT_MAXFILESIZE.html CURLOPT_MAXFILESIZE_LARGE.html               \
+ CURLOPT_MAX_RECV_SPEED_LARGE.html CURLOPT_MAXREDIRS.html              \
+ CURLOPT_MAX_SEND_SPEED_LARGE.html CURLOPT_NETRC.html                  \
+ CURLOPT_NETRC_FILE.html CURLOPT_NEW_DIRECTORY_PERMS.html              \
+ CURLOPT_NEW_FILE_PERMS.html CURLOPT_NOBODY.html                       \
+ CURLOPT_NOPROGRESS.html CURLOPT_NOPROXY.html CURLOPT_NOSIGNAL.html    \
+ CURLOPT_OPENSOCKETDATA.html CURLOPT_OPENSOCKETFUNCTION.html           \
+ CURLOPT_PASSWORD.html CURLOPT_PORT.html CURLOPT_POST.html             \
+ CURLOPT_POSTFIELDS.html CURLOPT_POSTFIELDSIZE.html                    \
+ CURLOPT_POSTFIELDSIZE_LARGE.html CURLOPT_POSTQUOTE.html               \
+ CURLOPT_POSTREDIR.html CURLOPT_PREQUOTE.html CURLOPT_PRIVATE.html     \
+ CURLOPT_PROGRESSDATA.html CURLOPT_PROGRESSFUNCTION.html               \
+ CURLOPT_PROTOCOLS.html CURLOPT_PROXY.html CURLOPT_PROXYAUTH.html      \
+ CURLOPT_PROXYHEADER.html CURLOPT_PROXYPASSWORD.html                   \
+ CURLOPT_PROXYPORT.html CURLOPT_PROXY_TRANSFER_MODE.html               \
+ CURLOPT_PROXYTYPE.html CURLOPT_PROXYUSERNAME.html                     \
+ CURLOPT_PROXYUSERPWD.html CURLOPT_PUT.html CURLOPT_QUOTE.html         \
+ CURLOPT_RANDOM_FILE.html CURLOPT_RANGE.html CURLOPT_READDATA.html     \
+ CURLOPT_READFUNCTION.html CURLOPT_REDIR_PROTOCOLS.html                        \
+ CURLOPT_REFERER.html CURLOPT_RESOLVE.html CURLOPT_RESUME_FROM.html    \
+ CURLOPT_RESUME_FROM_LARGE.html CURLOPT_RTSP_CLIENT_CSEQ.html          \
+ CURLOPT_RTSP_REQUEST.html CURLOPT_RTSP_SERVER_CSEQ.html               \
+ CURLOPT_RTSP_SESSION_ID.html CURLOPT_RTSP_STREAM_URI.html             \
+ CURLOPT_RTSP_TRANSPORT.html CURLOPT_SASL_IR.html CURLOPT_SEEKDATA.html        \
+ CURLOPT_SEEKFUNCTION.html CURLOPT_SHARE.html CURLOPT_SOCKOPTDATA.html \
+ CURLOPT_SOCKOPTFUNCTION.html CURLOPT_SOCKS5_GSSAPI_NEC.html           \
+ CURLOPT_SOCKS5_GSSAPI_SERVICE.html CURLOPT_SSH_AUTH_TYPES.html                \
+ CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.html CURLOPT_SSH_KEYDATA.html         \
+ CURLOPT_SSH_KEYFUNCTION.html CURLOPT_SSH_KNOWNHOSTS.html              \
+ CURLOPT_SSH_PRIVATE_KEYFILE.html CURLOPT_SSH_PUBLIC_KEYFILE.html      \
+ CURLOPT_SSLCERT.html CURLOPT_SSLCERTTYPE.html                         \
+ CURLOPT_SSL_CIPHER_LIST.html CURLOPT_SSL_CTX_DATA.html                        \
+ CURLOPT_SSL_CTX_FUNCTION.html CURLOPT_SSL_ENABLE_ALPN.html            \
+ CURLOPT_SSL_ENABLE_NPN.html CURLOPT_SSLENGINE.html                    \
+ CURLOPT_SSLENGINE_DEFAULT.html CURLOPT_SSLKEY.html                    \
+ CURLOPT_SSLKEYTYPE.html CURLOPT_SSL_OPTIONS.html                      \
+ CURLOPT_SSL_SESSIONID_CACHE.html CURLOPT_SSL_VERIFYHOST.html          \
+ CURLOPT_SSL_VERIFYPEER.html CURLOPT_SSLVERSION.html                   \
+ CURLOPT_STDERR.html CURLOPT_TCP_KEEPALIVE.html                                \
+ CURLOPT_TCP_KEEPIDLE.html CURLOPT_TCP_KEEPINTVL.html                  \
+ CURLOPT_TCP_NODELAY.html CURLOPT_TELNETOPTIONS.html                   \
+ CURLOPT_TFTP_BLKSIZE.html CURLOPT_TIMECONDITION.html                  \
+ CURLOPT_TIMEOUT.html CURLOPT_TIMEOUT_MS.html CURLOPT_TIMEVALUE.html   \
+ CURLOPT_TLSAUTH_PASSWORD.html CURLOPT_TLSAUTH_TYPE.html               \
+ CURLOPT_TLSAUTH_USERNAME.html CURLOPT_TRANSFER_ENCODING.html          \
+ CURLOPT_TRANSFERTEXT.html CURLOPT_UNRESTRICTED_AUTH.html              \
+ CURLOPT_UPLOAD.html CURLOPT_URL.html CURLOPT_USERAGENT.html           \
+ CURLOPT_USERNAME.html CURLOPT_USERPWD.html CURLOPT_USE_SSL.html       \
+ CURLOPT_VERBOSE.html CURLOPT_WILDCARDMATCH.html CURLOPT_WRITEDATA.html        \
+ CURLOPT_WRITEFUNCTION.html CURLOPT_XFERINFODATA.html                  \
+ CURLOPT_XFERINFOFUNCTION.html CURLOPT_XOAUTH2_BEARER.html             \
+ CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.html                               \
+ CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.html CURLMOPT_MAXCONNECTS.html   \
+ CURLMOPT_MAX_HOST_CONNECTIONS.html CURLMOPT_MAX_PIPELINE_LENGTH.html  \
+ CURLMOPT_MAX_TOTAL_CONNECTIONS.html CURLMOPT_PIPELINING.html          \
+ CURLMOPT_PIPELINING_SERVER_BL.html CURLMOPT_PIPELINING_SITE_BL.html   \
+ CURLMOPT_SOCKETDATA.html CURLMOPT_SOCKETFUNCTION.html                 \
+ CURLMOPT_TIMERDATA.html CURLMOPT_TIMERFUNCTION.html                   \
+ CURLOPT_UNIX_SOCKET_PATH.html
+
+PDFPAGES = CURLOPT_ACCEPT_ENCODING.pdf CURLOPT_ACCEPTTIMEOUT_MS.pdf    \
+ CURLOPT_ADDRESS_SCOPE.pdf CURLOPT_APPEND.pdf CURLOPT_AUTOREFERER.pdf  \
+ CURLOPT_BUFFERSIZE.pdf CURLOPT_CAINFO.pdf CURLOPT_CAPATH.pdf          \
+ CURLOPT_CERTINFO.pdf CURLOPT_CHUNK_BGN_FUNCTION.pdf                   \
+ CURLOPT_CHUNK_DATA.pdf CURLOPT_CHUNK_END_FUNCTION.pdf                 \
+ CURLOPT_CLOSESOCKETDATA.pdf CURLOPT_CLOSESOCKETFUNCTION.pdf           \
+ CURLOPT_CONNECT_ONLY.pdf CURLOPT_CONNECTTIMEOUT.pdf                   \
+ CURLOPT_CONNECTTIMEOUT_MS.pdf CURLOPT_CONV_FROM_NETWORK_FUNCTION.pdf  \
+ CURLOPT_CONV_FROM_UTF8_FUNCTION.pdf                                   \
+ CURLOPT_CONV_TO_NETWORK_FUNCTION.pdf CURLOPT_COOKIE.pdf               \
+ CURLOPT_COOKIEFILE.pdf CURLOPT_COOKIEJAR.pdf CURLOPT_COOKIELIST.pdf   \
+ CURLOPT_COOKIESESSION.pdf CURLOPT_COPYPOSTFIELDS.pdf CURLOPT_CRLF.pdf \
+ CURLOPT_CRLFILE.pdf CURLOPT_CUSTOMREQUEST.pdf CURLOPT_DEBUGDATA.pdf   \
+ CURLOPT_DEBUGFUNCTION.pdf CURLOPT_DIRLISTONLY.pdf                     \
+ CURLOPT_DNS_CACHE_TIMEOUT.pdf CURLOPT_DNS_INTERFACE.pdf               \
+ CURLOPT_DNS_LOCAL_IP4.pdf CURLOPT_DNS_LOCAL_IP6.pdf                   \
+ CURLOPT_DNS_SERVERS.pdf CURLOPT_DNS_USE_GLOBAL_CACHE.pdf              \
+ CURLOPT_EGDSOCKET.pdf CURLOPT_ERRORBUFFER.pdf                         \
+ CURLOPT_EXPECT_100_TIMEOUT_MS.pdf CURLOPT_FAILONERROR.pdf             \
+ CURLOPT_FILETIME.pdf CURLOPT_FNMATCH_DATA.pdf                         \
+ CURLOPT_FNMATCH_FUNCTION.pdf CURLOPT_FOLLOWLOCATION.pdf               \
+ CURLOPT_FORBID_REUSE.pdf CURLOPT_FRESH_CONNECT.pdf                    \
+ CURLOPT_FTP_ACCOUNT.pdf CURLOPT_FTP_ALTERNATIVE_TO_USER.pdf           \
+ CURLOPT_FTP_CREATE_MISSING_DIRS.pdf CURLOPT_FTP_FILEMETHOD.pdf                \
+ CURLOPT_FTPPORT.pdf CURLOPT_FTP_RESPONSE_TIMEOUT.pdf                  \
+ CURLOPT_FTP_SKIP_PASV_IP.pdf CURLOPT_FTPSSLAUTH.pdf                   \
+ CURLOPT_FTP_SSL_CCC.pdf CURLOPT_FTP_USE_EPRT.pdf                      \
+ CURLOPT_FTP_USE_EPSV.pdf CURLOPT_FTP_USE_PRET.pdf                     \
+ CURLOPT_GSSAPI_DELEGATION.pdf CURLOPT_HEADER.pdf                      \
+ CURLOPT_HEADERDATA.pdf CURLOPT_HEADERFUNCTION.pdf                     \
+ CURLOPT_HEADEROPT.pdf CURLOPT_HTTP200ALIASES.pdf CURLOPT_HTTPAUTH.pdf \
+ CURLOPT_HTTP_CONTENT_DECODING.pdf CURLOPT_HTTPGET.pdf                 \
+ CURLOPT_HTTPHEADER.pdf CURLOPT_HTTPPOST.pdf                           \
+ CURLOPT_HTTPPROXYTUNNEL.pdf CURLOPT_HTTP_TRANSFER_DECODING.pdf                \
+ CURLOPT_HTTP_VERSION.pdf CURLOPT_IGNORE_CONTENT_LENGTH.pdf            \
+ CURLOPT_INFILESIZE.pdf CURLOPT_INFILESIZE_LARGE.pdf                   \
+ CURLOPT_INTERFACE.pdf CURLOPT_INTERLEAVEDATA.pdf                      \
+ CURLOPT_INTERLEAVEFUNCTION.pdf CURLOPT_IOCTLDATA.pdf                  \
+ CURLOPT_IOCTLFUNCTION.pdf CURLOPT_IPRESOLVE.pdf CURLOPT_ISSUERCERT.pdf        \
+ CURLOPT_KEYPASSWD.pdf CURLOPT_KRBLEVEL.pdf CURLOPT_LOCALPORT.pdf      \
+ CURLOPT_LOCALPORTRANGE.pdf CURLOPT_LOGIN_OPTIONS.pdf                  \
+ CURLOPT_LOW_SPEED_LIMIT.pdf CURLOPT_LOW_SPEED_TIME.pdf                        \
+ CURLOPT_MAIL_AUTH.pdf CURLOPT_MAIL_FROM.pdf CURLOPT_MAIL_RCPT.pdf     \
+ CURLOPT_MAXCONNECTS.pdf CURLOPT_MAXFILESIZE.pdf                       \
+ CURLOPT_MAXFILESIZE_LARGE.pdf CURLOPT_MAX_RECV_SPEED_LARGE.pdf                \
+ CURLOPT_MAXREDIRS.pdf CURLOPT_MAX_SEND_SPEED_LARGE.pdf                        \
+ CURLOPT_NETRC.pdf CURLOPT_NETRC_FILE.pdf                              \
+ CURLOPT_NEW_DIRECTORY_PERMS.pdf CURLOPT_NEW_FILE_PERMS.pdf            \
+ CURLOPT_NOBODY.pdf CURLOPT_NOPROGRESS.pdf CURLOPT_NOPROXY.pdf         \
+ CURLOPT_NOSIGNAL.pdf CURLOPT_OPENSOCKETDATA.pdf                       \
+ CURLOPT_OPENSOCKETFUNCTION.pdf CURLOPT_PASSWORD.pdf CURLOPT_PORT.pdf  \
+ CURLOPT_POST.pdf CURLOPT_POSTFIELDS.pdf CURLOPT_POSTFIELDSIZE.pdf     \
+ CURLOPT_POSTFIELDSIZE_LARGE.pdf CURLOPT_POSTQUOTE.pdf                 \
+ CURLOPT_POSTREDIR.pdf CURLOPT_PREQUOTE.pdf CURLOPT_PRIVATE.pdf                \
+ CURLOPT_PROGRESSDATA.pdf CURLOPT_PROGRESSFUNCTION.pdf                 \
+ CURLOPT_PROTOCOLS.pdf CURLOPT_PROXY.pdf CURLOPT_PROXYAUTH.pdf         \
+ CURLOPT_PROXYHEADER.pdf CURLOPT_PROXYPASSWORD.pdf                     \
+ CURLOPT_PROXYPORT.pdf CURLOPT_PROXY_TRANSFER_MODE.pdf                 \
+ CURLOPT_PROXYTYPE.pdf CURLOPT_PROXYUSERNAME.pdf                       \
+ CURLOPT_PROXYUSERPWD.pdf CURLOPT_PUT.pdf CURLOPT_QUOTE.pdf            \
+ CURLOPT_RANDOM_FILE.pdf CURLOPT_RANGE.pdf CURLOPT_READDATA.pdf                \
+ CURLOPT_READFUNCTION.pdf CURLOPT_REDIR_PROTOCOLS.pdf                  \
+ CURLOPT_REFERER.pdf CURLOPT_RESOLVE.pdf CURLOPT_RESUME_FROM.pdf       \
+ CURLOPT_RESUME_FROM_LARGE.pdf CURLOPT_RTSP_CLIENT_CSEQ.pdf            \
+ CURLOPT_RTSP_REQUEST.pdf CURLOPT_RTSP_SERVER_CSEQ.pdf                 \
+ CURLOPT_RTSP_SESSION_ID.pdf CURLOPT_RTSP_STREAM_URI.pdf               \
+ CURLOPT_RTSP_TRANSPORT.pdf CURLOPT_SASL_IR.pdf CURLOPT_SEEKDATA.pdf   \
+ CURLOPT_SEEKFUNCTION.pdf CURLOPT_SHARE.pdf CURLOPT_SOCKOPTDATA.pdf    \
+ CURLOPT_SOCKOPTFUNCTION.pdf CURLOPT_SOCKS5_GSSAPI_NEC.pdf             \
+ CURLOPT_SOCKS5_GSSAPI_SERVICE.pdf CURLOPT_SSH_AUTH_TYPES.pdf          \
+ CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.pdf CURLOPT_SSH_KEYDATA.pdf           \
+ CURLOPT_SSH_KEYFUNCTION.pdf CURLOPT_SSH_KNOWNHOSTS.pdf                        \
+ CURLOPT_SSH_PRIVATE_KEYFILE.pdf CURLOPT_SSH_PUBLIC_KEYFILE.pdf                \
+ CURLOPT_SSLCERT.pdf CURLOPT_SSLCERTTYPE.pdf                           \
+ CURLOPT_SSL_CIPHER_LIST.pdf CURLOPT_SSL_CTX_DATA.pdf                  \
+ CURLOPT_SSL_CTX_FUNCTION.pdf CURLOPT_SSL_ENABLE_ALPN.pdf              \
+ CURLOPT_SSL_ENABLE_NPN.pdf CURLOPT_SSLENGINE.pdf                      \
+ CURLOPT_SSLENGINE_DEFAULT.pdf CURLOPT_SSLKEY.pdf                      \
+ CURLOPT_SSLKEYTYPE.pdf CURLOPT_SSL_OPTIONS.pdf                                \
+ CURLOPT_SSL_SESSIONID_CACHE.pdf CURLOPT_SSL_VERIFYHOST.pdf            \
+ CURLOPT_SSL_VERIFYPEER.pdf CURLOPT_SSLVERSION.pdf CURLOPT_STDERR.pdf  \
+ CURLOPT_TCP_KEEPALIVE.pdf CURLOPT_TCP_KEEPIDLE.pdf                    \
+ CURLOPT_TCP_KEEPINTVL.pdf CURLOPT_TCP_NODELAY.pdf                     \
+ CURLOPT_TELNETOPTIONS.pdf CURLOPT_TFTP_BLKSIZE.pdf                    \
+ CURLOPT_TIMECONDITION.pdf CURLOPT_TIMEOUT.pdf CURLOPT_TIMEOUT_MS.pdf  \
+ CURLOPT_TIMEVALUE.pdf CURLOPT_TLSAUTH_PASSWORD.pdf                    \
+ CURLOPT_TLSAUTH_TYPE.pdf CURLOPT_TLSAUTH_USERNAME.pdf                 \
+ CURLOPT_TRANSFER_ENCODING.pdf CURLOPT_TRANSFERTEXT.pdf                        \
+ CURLOPT_UNRESTRICTED_AUTH.pdf CURLOPT_UPLOAD.pdf CURLOPT_URL.pdf      \
+ CURLOPT_USERAGENT.pdf CURLOPT_USERNAME.pdf CURLOPT_USERPWD.pdf                \
+ CURLOPT_USE_SSL.pdf CURLOPT_VERBOSE.pdf CURLOPT_WILDCARDMATCH.pdf     \
+ CURLOPT_WRITEDATA.pdf CURLOPT_WRITEFUNCTION.pdf                       \
+ CURLOPT_XFERINFODATA.pdf CURLOPT_XFERINFOFUNCTION.pdf                 \
+ CURLOPT_XOAUTH2_BEARER.pdf CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.pdf     \
+ CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.pdf CURLMOPT_MAXCONNECTS.pdf     \
+ CURLMOPT_MAX_HOST_CONNECTIONS.pdf CURLMOPT_MAX_PIPELINE_LENGTH.pdf    \
+ CURLMOPT_MAX_TOTAL_CONNECTIONS.pdf CURLMOPT_PIPELINING.pdf            \
+ CURLMOPT_PIPELINING_SERVER_BL.pdf CURLMOPT_PIPELINING_SITE_BL.pdf     \
+ CURLMOPT_SOCKETDATA.pdf CURLMOPT_SOCKETFUNCTION.pdf                   \
+ CURLMOPT_TIMERDATA.pdf CURLMOPT_TIMERFUNCTION.pdf                     \
+ CURLOPT_UNIX_SOCKET_PATH.pdf
+
+CLEANFILES = $(HTMLPAGES) $(PDFPAGES)
+
+EXTRA_DIST = $(man_MANS) $(HTMLPAGES) $(PDFPAGES)
+MAN2HTML= roffit --mandir=. < $< >$@
+
+SUFFIXES = .3 .html
+
+html: $(HTMLPAGES)
+
+.3.html:
+       $(MAN2HTML)
+
+pdf: $(PDFPAGES)
+
+.3.pdf:
+       @(foo=`echo $@ | sed -e 's/\.[0-9]$$//g'`; \
+       groff -Tps -man $< >$$foo.ps; \
+       ps2pdf $$foo.ps $@; \
+       rm $$foo.ps; \
+       echo "converted $< to $@")
+
+mancheck:
+       @cd $(top_srcdir)/docs/libcurl/opts && ls `awk -F, '!/OBSOLETE/ && /^  CINIT/ { a=substr($$1, 9); print "CURLOPT_" a ".3"}' $(top_srcdir)/include/curl/curl.h`
diff --git a/docs/libcurl/opts/Makefile.in b/docs/libcurl/opts/Makefile.in
new file mode 100644 (file)
index 0000000..cb2f5d2
--- /dev/null
@@ -0,0 +1,929 @@
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+#***************************************************************************
+#                                  _   _ ____  _
+#  Project                     ___| | | |  _ \| |
+#                             / __| | | | |_) | |
+#                            | (__| |_| |  _ <| |___
+#                             \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at http://curl.haxx.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
+VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs  ]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = docs/libcurl/opts
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+       $(top_srcdir)/mkinstalldirs
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
+       $(top_srcdir)/m4/curl-confopts.m4 \
+       $(top_srcdir)/m4/curl-functions.m4 \
+       $(top_srcdir)/m4/curl-openssl.m4 \
+       $(top_srcdir)/m4/curl-override.m4 \
+       $(top_srcdir)/m4/curl-reentrant.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+       $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+       $(top_srcdir)/m4/xc-am-iface.m4 \
+       $(top_srcdir)/m4/xc-cc-check.m4 \
+       $(top_srcdir)/m4/xc-lt-iface.m4 \
+       $(top_srcdir)/m4/xc-translit.m4 \
+       $(top_srcdir)/m4/xc-val-flgs.m4 \
+       $(top_srcdir)/m4/zz40-xc-ovr.m4 \
+       $(top_srcdir)/m4/zz50-xc-ovr.m4 \
+       $(top_srcdir)/m4/zz60-xc-ovr.m4 $(top_srcdir)/acinclude.m4 \
+       $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
+       $(top_builddir)/include/curl/curlbuild.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+depcomp =
+am__depfiles_maybe =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+man3dir = $(mandir)/man3
+am__installdirs = "$(DESTDIR)$(man3dir)"
+MANS = $(man_MANS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BLANK_AT_MAKETIME = @BLANK_AT_MAKETIME@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CFLAG_CURL_SYMBOL_HIDING = @CFLAG_CURL_SYMBOL_HIDING@
+CONFIGURE_OPTIONS = @CONFIGURE_OPTIONS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPFLAG_CURL_STATICLIB = @CPPFLAG_CURL_STATICLIB@
+CURLVERSION = @CURLVERSION@
+CURL_CA_BUNDLE = @CURL_CA_BUNDLE@
+CURL_CFLAG_EXTRAS = @CURL_CFLAG_EXTRAS@
+CURL_DISABLE_DICT = @CURL_DISABLE_DICT@
+CURL_DISABLE_FILE = @CURL_DISABLE_FILE@
+CURL_DISABLE_FTP = @CURL_DISABLE_FTP@
+CURL_DISABLE_GOPHER = @CURL_DISABLE_GOPHER@
+CURL_DISABLE_HTTP = @CURL_DISABLE_HTTP@
+CURL_DISABLE_IMAP = @CURL_DISABLE_IMAP@
+CURL_DISABLE_LDAP = @CURL_DISABLE_LDAP@
+CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
+CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
+CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
+CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
+CURL_DISABLE_SMB = @CURL_DISABLE_SMB@
+CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
+CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
+CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
+CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
+CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
+CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_SHARED = @ENABLE_SHARED@
+ENABLE_STATIC = @ENABLE_STATIC@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
+HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
+HAVE_LIBZ = @HAVE_LIBZ@
+HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
+IDN_ENABLED = @IDN_ENABLED@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+IPV6_ENABLED = @IPV6_ENABLED@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBCURL_LIBS = @LIBCURL_LIBS@
+LIBMETALINK_CPPFLAGS = @LIBMETALINK_CPPFLAGS@
+LIBMETALINK_LDFLAGS = @LIBMETALINK_LDFLAGS@
+LIBMETALINK_LIBS = @LIBMETALINK_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MANOPT = @MANOPT@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+NROFF = @NROFF@
+NSS_LIBS = @NSS_LIBS@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKGADD_NAME = @PKGADD_NAME@
+PKGADD_PKG = @PKGADD_PKG@
+PKGADD_VENDOR = @PKGADD_VENDOR@
+PKGCONFIG = @PKGCONFIG@
+RANDOM_FILE = @RANDOM_FILE@
+RANLIB = @RANLIB@
+REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SSL_ENABLED = @SSL_ENABLED@
+STRIP = @STRIP@
+SUPPORT_FEATURES = @SUPPORT_FEATURES@
+SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
+USE_ARES = @USE_ARES@
+USE_AXTLS = @USE_AXTLS@
+USE_CYASSL = @USE_CYASSL@
+USE_DARWINSSL = @USE_DARWINSSL@
+USE_GNUTLS = @USE_GNUTLS@
+USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
+USE_LIBRTMP = @USE_LIBRTMP@
+USE_LIBSSH2 = @USE_LIBSSH2@
+USE_NGHTTP2 = @USE_NGHTTP2@
+USE_NSS = @USE_NSS@
+USE_OPENLDAP = @USE_OPENLDAP@
+USE_POLARSSL = @USE_POLARSSL@
+USE_SCHANNEL = @USE_SCHANNEL@
+USE_SSLEAY = @USE_SSLEAY@
+USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
+USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
+VERSION = @VERSION@
+VERSIONNUM = @VERSIONNUM@
+ZLIB_LIBS = @ZLIB_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+libext = @libext@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = foreign no-dependencies
+man_MANS = CURLOPT_ACCEPT_ENCODING.3 CURLOPT_ACCEPTTIMEOUT_MS.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_CONNECT_ONLY.3                  \
+ CURLOPT_CONNECTTIMEOUT.3 CURLOPT_CONNECTTIMEOUT_MS.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_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_FTP_ACCOUNT.3  \
+ CURLOPT_FTP_ALTERNATIVE_TO_USER.3 CURLOPT_FTP_CREATE_MISSING_DIRS.3   \
+ CURLOPT_FTP_FILEMETHOD.3 CURLOPT_FTPPORT.3                            \
+ CURLOPT_FTP_RESPONSE_TIMEOUT.3 CURLOPT_FTP_SKIP_PASV_IP.3             \
+ CURLOPT_FTPSSLAUTH.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_HEADER.3 CURLOPT_HEADERDATA.3     \
+ CURLOPT_HEADERFUNCTION.3 CURLOPT_HEADEROPT.3 CURLOPT_HTTP200ALIASES.3 \
+ CURLOPT_HTTPAUTH.3 CURLOPT_HTTP_CONTENT_DECODING.3 CURLOPT_HTTPGET.3  \
+ CURLOPT_HTTPHEADER.3 CURLOPT_HTTPPOST.3 CURLOPT_HTTPPROXYTUNNEL.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_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_MAX_RECV_SPEED_LARGE.3 CURLOPT_MAXREDIRS.3                    \
+ CURLOPT_MAX_SEND_SPEED_LARGE.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_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_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_PROXY_TRANSFER_MODE.3 CURLOPT_PROXYTYPE.3 \
+ CURLOPT_PROXYUSERNAME.3 CURLOPT_PROXYUSERPWD.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_RESOLVE.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_SHARE.3 CURLOPT_SOCKOPTDATA.3          \
+ CURLOPT_SOCKOPTFUNCTION.3 CURLOPT_SOCKS5_GSSAPI_NEC.3                 \
+ CURLOPT_SOCKS5_GSSAPI_SERVICE.3 CURLOPT_SSH_AUTH_TYPES.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_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_SSLENGINE.3        \
+ CURLOPT_SSLENGINE_DEFAULT.3 CURLOPT_SSLKEY.3 CURLOPT_SSLKEYTYPE.3     \
+ CURLOPT_SSL_OPTIONS.3 CURLOPT_SSL_SESSIONID_CACHE.3                   \
+ CURLOPT_SSL_VERIFYHOST.3 CURLOPT_SSL_VERIFYPEER.3 CURLOPT_SSLVERSION.3        \
+ CURLOPT_STDERR.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_TIMECONDITION.3 CURLOPT_TIMEOUT.3      \
+ CURLOPT_TIMEOUT_MS.3 CURLOPT_TIMEVALUE.3 CURLOPT_TLSAUTH_PASSWORD.3   \
+ CURLOPT_TLSAUTH_TYPE.3 CURLOPT_TLSAUTH_USERNAME.3                     \
+ CURLOPT_TRANSFER_ENCODING.3 CURLOPT_TRANSFERTEXT.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                   \
+ 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_SOCKETDATA.3 CURLMOPT_SOCKETFUNCTION.3 CURLMOPT_TIMERDATA.3  \
+ CURLMOPT_TIMERFUNCTION.3 CURLOPT_UNIX_SOCKET_PATH.3
+
+HTMLPAGES = CURLOPT_ACCEPT_ENCODING.html CURLOPT_ACCEPTTIMEOUT_MS.html \
+ CURLOPT_ADDRESS_SCOPE.html CURLOPT_APPEND.html                                \
+ CURLOPT_AUTOREFERER.html CURLOPT_BUFFERSIZE.html CURLOPT_CAINFO.html  \
+ CURLOPT_CAPATH.html CURLOPT_CERTINFO.html                             \
+ CURLOPT_CHUNK_BGN_FUNCTION.html CURLOPT_CHUNK_DATA.html               \
+ CURLOPT_CHUNK_END_FUNCTION.html CURLOPT_CLOSESOCKETDATA.html          \
+ CURLOPT_CLOSESOCKETFUNCTION.html CURLOPT_CONNECT_ONLY.html            \
+ CURLOPT_CONNECTTIMEOUT.html CURLOPT_CONNECTTIMEOUT_MS.html            \
+ CURLOPT_CONV_FROM_NETWORK_FUNCTION.html                               \
+ CURLOPT_CONV_FROM_UTF8_FUNCTION.html                                  \
+ CURLOPT_CONV_TO_NETWORK_FUNCTION.html CURLOPT_COOKIE.html             \
+ CURLOPT_COOKIEFILE.html CURLOPT_COOKIEJAR.html CURLOPT_COOKIELIST.html        \
+ CURLOPT_COOKIESESSION.html CURLOPT_COPYPOSTFIELDS.html                        \
+ CURLOPT_CRLF.html CURLOPT_CRLFILE.html CURLOPT_CUSTOMREQUEST.html     \
+ CURLOPT_DEBUGDATA.html CURLOPT_DEBUGFUNCTION.html                     \
+ CURLOPT_DIRLISTONLY.html CURLOPT_DNS_CACHE_TIMEOUT.html               \
+ CURLOPT_DNS_INTERFACE.html CURLOPT_DNS_LOCAL_IP4.html                 \
+ CURLOPT_DNS_LOCAL_IP6.html CURLOPT_DNS_SERVERS.html                   \
+ CURLOPT_DNS_USE_GLOBAL_CACHE.html CURLOPT_EGDSOCKET.html              \
+ CURLOPT_ERRORBUFFER.html CURLOPT_EXPECT_100_TIMEOUT_MS.html           \
+ CURLOPT_FAILONERROR.html CURLOPT_FILETIME.html                                \
+ CURLOPT_FNMATCH_DATA.html CURLOPT_FNMATCH_FUNCTION.html               \
+ CURLOPT_FOLLOWLOCATION.html CURLOPT_FORBID_REUSE.html                 \
+ CURLOPT_FRESH_CONNECT.html CURLOPT_FTP_ACCOUNT.html                   \
+ CURLOPT_FTP_ALTERNATIVE_TO_USER.html                                  \
+ CURLOPT_FTP_CREATE_MISSING_DIRS.html CURLOPT_FTP_FILEMETHOD.html      \
+ CURLOPT_FTPPORT.html CURLOPT_FTP_RESPONSE_TIMEOUT.html                        \
+ CURLOPT_FTP_SKIP_PASV_IP.html CURLOPT_FTPSSLAUTH.html                 \
+ CURLOPT_FTP_SSL_CCC.html CURLOPT_FTP_USE_EPRT.html                    \
+ CURLOPT_FTP_USE_EPSV.html CURLOPT_FTP_USE_PRET.html                   \
+ CURLOPT_GSSAPI_DELEGATION.html CURLOPT_HEADER.html                    \
+ CURLOPT_HEADERDATA.html CURLOPT_HEADERFUNCTION.html                   \
+ CURLOPT_HEADEROPT.html CURLOPT_HTTP200ALIASES.html                    \
+ CURLOPT_HTTPAUTH.html CURLOPT_HTTP_CONTENT_DECODING.html              \
+ CURLOPT_HTTPGET.html CURLOPT_HTTPHEADER.html CURLOPT_HTTPPOST.html    \
+ CURLOPT_HTTPPROXYTUNNEL.html CURLOPT_HTTP_TRANSFER_DECODING.html      \
+ CURLOPT_HTTP_VERSION.html CURLOPT_IGNORE_CONTENT_LENGTH.html          \
+ CURLOPT_INFILESIZE.html CURLOPT_INFILESIZE_LARGE.html                 \
+ CURLOPT_INTERFACE.html CURLOPT_INTERLEAVEDATA.html                    \
+ CURLOPT_INTERLEAVEFUNCTION.html CURLOPT_IOCTLDATA.html                        \
+ CURLOPT_IOCTLFUNCTION.html CURLOPT_IPRESOLVE.html                     \
+ CURLOPT_ISSUERCERT.html CURLOPT_KEYPASSWD.html CURLOPT_KRBLEVEL.html  \
+ CURLOPT_LOCALPORT.html CURLOPT_LOCALPORTRANGE.html                    \
+ CURLOPT_LOGIN_OPTIONS.html CURLOPT_LOW_SPEED_LIMIT.html               \
+ CURLOPT_LOW_SPEED_TIME.html CURLOPT_MAIL_AUTH.html                    \
+ CURLOPT_MAIL_FROM.html CURLOPT_MAIL_RCPT.html CURLOPT_MAXCONNECTS.html        \
+ CURLOPT_MAXFILESIZE.html CURLOPT_MAXFILESIZE_LARGE.html               \
+ CURLOPT_MAX_RECV_SPEED_LARGE.html CURLOPT_MAXREDIRS.html              \
+ CURLOPT_MAX_SEND_SPEED_LARGE.html CURLOPT_NETRC.html                  \
+ CURLOPT_NETRC_FILE.html CURLOPT_NEW_DIRECTORY_PERMS.html              \
+ CURLOPT_NEW_FILE_PERMS.html CURLOPT_NOBODY.html                       \
+ CURLOPT_NOPROGRESS.html CURLOPT_NOPROXY.html CURLOPT_NOSIGNAL.html    \
+ CURLOPT_OPENSOCKETDATA.html CURLOPT_OPENSOCKETFUNCTION.html           \
+ CURLOPT_PASSWORD.html CURLOPT_PORT.html CURLOPT_POST.html             \
+ CURLOPT_POSTFIELDS.html CURLOPT_POSTFIELDSIZE.html                    \
+ CURLOPT_POSTFIELDSIZE_LARGE.html CURLOPT_POSTQUOTE.html               \
+ CURLOPT_POSTREDIR.html CURLOPT_PREQUOTE.html CURLOPT_PRIVATE.html     \
+ CURLOPT_PROGRESSDATA.html CURLOPT_PROGRESSFUNCTION.html               \
+ CURLOPT_PROTOCOLS.html CURLOPT_PROXY.html CURLOPT_PROXYAUTH.html      \
+ CURLOPT_PROXYHEADER.html CURLOPT_PROXYPASSWORD.html                   \
+ CURLOPT_PROXYPORT.html CURLOPT_PROXY_TRANSFER_MODE.html               \
+ CURLOPT_PROXYTYPE.html CURLOPT_PROXYUSERNAME.html                     \
+ CURLOPT_PROXYUSERPWD.html CURLOPT_PUT.html CURLOPT_QUOTE.html         \
+ CURLOPT_RANDOM_FILE.html CURLOPT_RANGE.html CURLOPT_READDATA.html     \
+ CURLOPT_READFUNCTION.html CURLOPT_REDIR_PROTOCOLS.html                        \
+ CURLOPT_REFERER.html CURLOPT_RESOLVE.html CURLOPT_RESUME_FROM.html    \
+ CURLOPT_RESUME_FROM_LARGE.html CURLOPT_RTSP_CLIENT_CSEQ.html          \
+ CURLOPT_RTSP_REQUEST.html CURLOPT_RTSP_SERVER_CSEQ.html               \
+ CURLOPT_RTSP_SESSION_ID.html CURLOPT_RTSP_STREAM_URI.html             \
+ CURLOPT_RTSP_TRANSPORT.html CURLOPT_SASL_IR.html CURLOPT_SEEKDATA.html        \
+ CURLOPT_SEEKFUNCTION.html CURLOPT_SHARE.html CURLOPT_SOCKOPTDATA.html \
+ CURLOPT_SOCKOPTFUNCTION.html CURLOPT_SOCKS5_GSSAPI_NEC.html           \
+ CURLOPT_SOCKS5_GSSAPI_SERVICE.html CURLOPT_SSH_AUTH_TYPES.html                \
+ CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.html CURLOPT_SSH_KEYDATA.html         \
+ CURLOPT_SSH_KEYFUNCTION.html CURLOPT_SSH_KNOWNHOSTS.html              \
+ CURLOPT_SSH_PRIVATE_KEYFILE.html CURLOPT_SSH_PUBLIC_KEYFILE.html      \
+ CURLOPT_SSLCERT.html CURLOPT_SSLCERTTYPE.html                         \
+ CURLOPT_SSL_CIPHER_LIST.html CURLOPT_SSL_CTX_DATA.html                        \
+ CURLOPT_SSL_CTX_FUNCTION.html CURLOPT_SSL_ENABLE_ALPN.html            \
+ CURLOPT_SSL_ENABLE_NPN.html CURLOPT_SSLENGINE.html                    \
+ CURLOPT_SSLENGINE_DEFAULT.html CURLOPT_SSLKEY.html                    \
+ CURLOPT_SSLKEYTYPE.html CURLOPT_SSL_OPTIONS.html                      \
+ CURLOPT_SSL_SESSIONID_CACHE.html CURLOPT_SSL_VERIFYHOST.html          \
+ CURLOPT_SSL_VERIFYPEER.html CURLOPT_SSLVERSION.html                   \
+ CURLOPT_STDERR.html CURLOPT_TCP_KEEPALIVE.html                                \
+ CURLOPT_TCP_KEEPIDLE.html CURLOPT_TCP_KEEPINTVL.html                  \
+ CURLOPT_TCP_NODELAY.html CURLOPT_TELNETOPTIONS.html                   \
+ CURLOPT_TFTP_BLKSIZE.html CURLOPT_TIMECONDITION.html                  \
+ CURLOPT_TIMEOUT.html CURLOPT_TIMEOUT_MS.html CURLOPT_TIMEVALUE.html   \
+ CURLOPT_TLSAUTH_PASSWORD.html CURLOPT_TLSAUTH_TYPE.html               \
+ CURLOPT_TLSAUTH_USERNAME.html CURLOPT_TRANSFER_ENCODING.html          \
+ CURLOPT_TRANSFERTEXT.html CURLOPT_UNRESTRICTED_AUTH.html              \
+ CURLOPT_UPLOAD.html CURLOPT_URL.html CURLOPT_USERAGENT.html           \
+ CURLOPT_USERNAME.html CURLOPT_USERPWD.html CURLOPT_USE_SSL.html       \
+ CURLOPT_VERBOSE.html CURLOPT_WILDCARDMATCH.html CURLOPT_WRITEDATA.html        \
+ CURLOPT_WRITEFUNCTION.html CURLOPT_XFERINFODATA.html                  \
+ CURLOPT_XFERINFOFUNCTION.html CURLOPT_XOAUTH2_BEARER.html             \
+ CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.html                               \
+ CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.html CURLMOPT_MAXCONNECTS.html   \
+ CURLMOPT_MAX_HOST_CONNECTIONS.html CURLMOPT_MAX_PIPELINE_LENGTH.html  \
+ CURLMOPT_MAX_TOTAL_CONNECTIONS.html CURLMOPT_PIPELINING.html          \
+ CURLMOPT_PIPELINING_SERVER_BL.html CURLMOPT_PIPELINING_SITE_BL.html   \
+ CURLMOPT_SOCKETDATA.html CURLMOPT_SOCKETFUNCTION.html                 \
+ CURLMOPT_TIMERDATA.html CURLMOPT_TIMERFUNCTION.html                   \
+ CURLOPT_UNIX_SOCKET_PATH.html
+
+PDFPAGES = CURLOPT_ACCEPT_ENCODING.pdf CURLOPT_ACCEPTTIMEOUT_MS.pdf    \
+ CURLOPT_ADDRESS_SCOPE.pdf CURLOPT_APPEND.pdf CURLOPT_AUTOREFERER.pdf  \
+ CURLOPT_BUFFERSIZE.pdf CURLOPT_CAINFO.pdf CURLOPT_CAPATH.pdf          \
+ CURLOPT_CERTINFO.pdf CURLOPT_CHUNK_BGN_FUNCTION.pdf                   \
+ CURLOPT_CHUNK_DATA.pdf CURLOPT_CHUNK_END_FUNCTION.pdf                 \
+ CURLOPT_CLOSESOCKETDATA.pdf CURLOPT_CLOSESOCKETFUNCTION.pdf           \
+ CURLOPT_CONNECT_ONLY.pdf CURLOPT_CONNECTTIMEOUT.pdf                   \
+ CURLOPT_CONNECTTIMEOUT_MS.pdf CURLOPT_CONV_FROM_NETWORK_FUNCTION.pdf  \
+ CURLOPT_CONV_FROM_UTF8_FUNCTION.pdf                                   \
+ CURLOPT_CONV_TO_NETWORK_FUNCTION.pdf CURLOPT_COOKIE.pdf               \
+ CURLOPT_COOKIEFILE.pdf CURLOPT_COOKIEJAR.pdf CURLOPT_COOKIELIST.pdf   \
+ CURLOPT_COOKIESESSION.pdf CURLOPT_COPYPOSTFIELDS.pdf CURLOPT_CRLF.pdf \
+ CURLOPT_CRLFILE.pdf CURLOPT_CUSTOMREQUEST.pdf CURLOPT_DEBUGDATA.pdf   \
+ CURLOPT_DEBUGFUNCTION.pdf CURLOPT_DIRLISTONLY.pdf                     \
+ CURLOPT_DNS_CACHE_TIMEOUT.pdf CURLOPT_DNS_INTERFACE.pdf               \
+ CURLOPT_DNS_LOCAL_IP4.pdf CURLOPT_DNS_LOCAL_IP6.pdf                   \
+ CURLOPT_DNS_SERVERS.pdf CURLOPT_DNS_USE_GLOBAL_CACHE.pdf              \
+ CURLOPT_EGDSOCKET.pdf CURLOPT_ERRORBUFFER.pdf                         \
+ CURLOPT_EXPECT_100_TIMEOUT_MS.pdf CURLOPT_FAILONERROR.pdf             \
+ CURLOPT_FILETIME.pdf CURLOPT_FNMATCH_DATA.pdf                         \
+ CURLOPT_FNMATCH_FUNCTION.pdf CURLOPT_FOLLOWLOCATION.pdf               \
+ CURLOPT_FORBID_REUSE.pdf CURLOPT_FRESH_CONNECT.pdf                    \
+ CURLOPT_FTP_ACCOUNT.pdf CURLOPT_FTP_ALTERNATIVE_TO_USER.pdf           \
+ CURLOPT_FTP_CREATE_MISSING_DIRS.pdf CURLOPT_FTP_FILEMETHOD.pdf                \
+ CURLOPT_FTPPORT.pdf CURLOPT_FTP_RESPONSE_TIMEOUT.pdf                  \
+ CURLOPT_FTP_SKIP_PASV_IP.pdf CURLOPT_FTPSSLAUTH.pdf                   \
+ CURLOPT_FTP_SSL_CCC.pdf CURLOPT_FTP_USE_EPRT.pdf                      \
+ CURLOPT_FTP_USE_EPSV.pdf CURLOPT_FTP_USE_PRET.pdf                     \
+ CURLOPT_GSSAPI_DELEGATION.pdf CURLOPT_HEADER.pdf                      \
+ CURLOPT_HEADERDATA.pdf CURLOPT_HEADERFUNCTION.pdf                     \
+ CURLOPT_HEADEROPT.pdf CURLOPT_HTTP200ALIASES.pdf CURLOPT_HTTPAUTH.pdf \
+ CURLOPT_HTTP_CONTENT_DECODING.pdf CURLOPT_HTTPGET.pdf                 \
+ CURLOPT_HTTPHEADER.pdf CURLOPT_HTTPPOST.pdf                           \
+ CURLOPT_HTTPPROXYTUNNEL.pdf CURLOPT_HTTP_TRANSFER_DECODING.pdf                \
+ CURLOPT_HTTP_VERSION.pdf CURLOPT_IGNORE_CONTENT_LENGTH.pdf            \
+ CURLOPT_INFILESIZE.pdf CURLOPT_INFILESIZE_LARGE.pdf                   \
+ CURLOPT_INTERFACE.pdf CURLOPT_INTERLEAVEDATA.pdf                      \
+ CURLOPT_INTERLEAVEFUNCTION.pdf CURLOPT_IOCTLDATA.pdf                  \
+ CURLOPT_IOCTLFUNCTION.pdf CURLOPT_IPRESOLVE.pdf CURLOPT_ISSUERCERT.pdf        \
+ CURLOPT_KEYPASSWD.pdf CURLOPT_KRBLEVEL.pdf CURLOPT_LOCALPORT.pdf      \
+ CURLOPT_LOCALPORTRANGE.pdf CURLOPT_LOGIN_OPTIONS.pdf                  \
+ CURLOPT_LOW_SPEED_LIMIT.pdf CURLOPT_LOW_SPEED_TIME.pdf                        \
+ CURLOPT_MAIL_AUTH.pdf CURLOPT_MAIL_FROM.pdf CURLOPT_MAIL_RCPT.pdf     \
+ CURLOPT_MAXCONNECTS.pdf CURLOPT_MAXFILESIZE.pdf                       \
+ CURLOPT_MAXFILESIZE_LARGE.pdf CURLOPT_MAX_RECV_SPEED_LARGE.pdf                \
+ CURLOPT_MAXREDIRS.pdf CURLOPT_MAX_SEND_SPEED_LARGE.pdf                        \
+ CURLOPT_NETRC.pdf CURLOPT_NETRC_FILE.pdf                              \
+ CURLOPT_NEW_DIRECTORY_PERMS.pdf CURLOPT_NEW_FILE_PERMS.pdf            \
+ CURLOPT_NOBODY.pdf CURLOPT_NOPROGRESS.pdf CURLOPT_NOPROXY.pdf         \
+ CURLOPT_NOSIGNAL.pdf CURLOPT_OPENSOCKETDATA.pdf                       \
+ CURLOPT_OPENSOCKETFUNCTION.pdf CURLOPT_PASSWORD.pdf CURLOPT_PORT.pdf  \
+ CURLOPT_POST.pdf CURLOPT_POSTFIELDS.pdf CURLOPT_POSTFIELDSIZE.pdf     \
+ CURLOPT_POSTFIELDSIZE_LARGE.pdf CURLOPT_POSTQUOTE.pdf                 \
+ CURLOPT_POSTREDIR.pdf CURLOPT_PREQUOTE.pdf CURLOPT_PRIVATE.pdf                \
+ CURLOPT_PROGRESSDATA.pdf CURLOPT_PROGRESSFUNCTION.pdf                 \
+ CURLOPT_PROTOCOLS.pdf CURLOPT_PROXY.pdf CURLOPT_PROXYAUTH.pdf         \
+ CURLOPT_PROXYHEADER.pdf CURLOPT_PROXYPASSWORD.pdf                     \
+ CURLOPT_PROXYPORT.pdf CURLOPT_PROXY_TRANSFER_MODE.pdf                 \
+ CURLOPT_PROXYTYPE.pdf CURLOPT_PROXYUSERNAME.pdf                       \
+ CURLOPT_PROXYUSERPWD.pdf CURLOPT_PUT.pdf CURLOPT_QUOTE.pdf            \
+ CURLOPT_RANDOM_FILE.pdf CURLOPT_RANGE.pdf CURLOPT_READDATA.pdf                \
+ CURLOPT_READFUNCTION.pdf CURLOPT_REDIR_PROTOCOLS.pdf                  \
+ CURLOPT_REFERER.pdf CURLOPT_RESOLVE.pdf CURLOPT_RESUME_FROM.pdf       \
+ CURLOPT_RESUME_FROM_LARGE.pdf CURLOPT_RTSP_CLIENT_CSEQ.pdf            \
+ CURLOPT_RTSP_REQUEST.pdf CURLOPT_RTSP_SERVER_CSEQ.pdf                 \
+ CURLOPT_RTSP_SESSION_ID.pdf CURLOPT_RTSP_STREAM_URI.pdf               \
+ CURLOPT_RTSP_TRANSPORT.pdf CURLOPT_SASL_IR.pdf CURLOPT_SEEKDATA.pdf   \
+ CURLOPT_SEEKFUNCTION.pdf CURLOPT_SHARE.pdf CURLOPT_SOCKOPTDATA.pdf    \
+ CURLOPT_SOCKOPTFUNCTION.pdf CURLOPT_SOCKS5_GSSAPI_NEC.pdf             \
+ CURLOPT_SOCKS5_GSSAPI_SERVICE.pdf CURLOPT_SSH_AUTH_TYPES.pdf          \
+ CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.pdf CURLOPT_SSH_KEYDATA.pdf           \
+ CURLOPT_SSH_KEYFUNCTION.pdf CURLOPT_SSH_KNOWNHOSTS.pdf                        \
+ CURLOPT_SSH_PRIVATE_KEYFILE.pdf CURLOPT_SSH_PUBLIC_KEYFILE.pdf                \
+ CURLOPT_SSLCERT.pdf CURLOPT_SSLCERTTYPE.pdf                           \
+ CURLOPT_SSL_CIPHER_LIST.pdf CURLOPT_SSL_CTX_DATA.pdf                  \
+ CURLOPT_SSL_CTX_FUNCTION.pdf CURLOPT_SSL_ENABLE_ALPN.pdf              \
+ CURLOPT_SSL_ENABLE_NPN.pdf CURLOPT_SSLENGINE.pdf                      \
+ CURLOPT_SSLENGINE_DEFAULT.pdf CURLOPT_SSLKEY.pdf                      \
+ CURLOPT_SSLKEYTYPE.pdf CURLOPT_SSL_OPTIONS.pdf                                \
+ CURLOPT_SSL_SESSIONID_CACHE.pdf CURLOPT_SSL_VERIFYHOST.pdf            \
+ CURLOPT_SSL_VERIFYPEER.pdf CURLOPT_SSLVERSION.pdf CURLOPT_STDERR.pdf  \
+ CURLOPT_TCP_KEEPALIVE.pdf CURLOPT_TCP_KEEPIDLE.pdf                    \
+ CURLOPT_TCP_KEEPINTVL.pdf CURLOPT_TCP_NODELAY.pdf                     \
+ CURLOPT_TELNETOPTIONS.pdf CURLOPT_TFTP_BLKSIZE.pdf                    \
+ CURLOPT_TIMECONDITION.pdf CURLOPT_TIMEOUT.pdf CURLOPT_TIMEOUT_MS.pdf  \
+ CURLOPT_TIMEVALUE.pdf CURLOPT_TLSAUTH_PASSWORD.pdf                    \
+ CURLOPT_TLSAUTH_TYPE.pdf CURLOPT_TLSAUTH_USERNAME.pdf                 \
+ CURLOPT_TRANSFER_ENCODING.pdf CURLOPT_TRANSFERTEXT.pdf                        \
+ CURLOPT_UNRESTRICTED_AUTH.pdf CURLOPT_UPLOAD.pdf CURLOPT_URL.pdf      \
+ CURLOPT_USERAGENT.pdf CURLOPT_USERNAME.pdf CURLOPT_USERPWD.pdf                \
+ CURLOPT_USE_SSL.pdf CURLOPT_VERBOSE.pdf CURLOPT_WILDCARDMATCH.pdf     \
+ CURLOPT_WRITEDATA.pdf CURLOPT_WRITEFUNCTION.pdf                       \
+ CURLOPT_XFERINFODATA.pdf CURLOPT_XFERINFOFUNCTION.pdf                 \
+ CURLOPT_XOAUTH2_BEARER.pdf CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.pdf     \
+ CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.pdf CURLMOPT_MAXCONNECTS.pdf     \
+ CURLMOPT_MAX_HOST_CONNECTIONS.pdf CURLMOPT_MAX_PIPELINE_LENGTH.pdf    \
+ CURLMOPT_MAX_TOTAL_CONNECTIONS.pdf CURLMOPT_PIPELINING.pdf            \
+ CURLMOPT_PIPELINING_SERVER_BL.pdf CURLMOPT_PIPELINING_SITE_BL.pdf     \
+ CURLMOPT_SOCKETDATA.pdf CURLMOPT_SOCKETFUNCTION.pdf                   \
+ CURLMOPT_TIMERDATA.pdf CURLMOPT_TIMERFUNCTION.pdf                     \
+ CURLOPT_UNIX_SOCKET_PATH.pdf
+
+CLEANFILES = $(HTMLPAGES) $(PDFPAGES)
+EXTRA_DIST = $(man_MANS) $(HTMLPAGES) $(PDFPAGES)
+MAN2HTML = roffit --mandir=. < $< >$@
+SUFFIXES = .3 .html
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .3 .html .pdf
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign docs/libcurl/opts/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign docs/libcurl/opts/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+install-man3: $(man_MANS)
+       @$(NORMAL_INSTALL)
+       @list1=''; \
+       list2='$(man_MANS)'; \
+       test -n "$(man3dir)" \
+         && test -n "`echo $$list1$$list2`" \
+         || exit 0; \
+       echo " $(MKDIR_P) '$(DESTDIR)$(man3dir)'"; \
+       $(MKDIR_P) "$(DESTDIR)$(man3dir)" || exit 1; \
+       { for i in $$list1; do echo "$$i"; done;  \
+       if test -n "$$list2"; then \
+         for i in $$list2; do echo "$$i"; done \
+           | sed -n '/\.3[a-z]*$$/p'; \
+       fi; \
+       } | while read p; do \
+         if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; echo "$$p"; \
+       done | \
+       sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \
+             -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+       sed 'N;N;s,\n, ,g' | { \
+       list=; while read file base inst; do \
+         if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+           echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man3dir)/$$inst'"; \
+           $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man3dir)/$$inst" || exit $$?; \
+         fi; \
+       done; \
+       for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+       while read files; do \
+         test -z "$$files" || { \
+           echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man3dir)'"; \
+           $(INSTALL_DATA) $$files "$(DESTDIR)$(man3dir)" || exit $$?; }; \
+       done; }
+
+uninstall-man3:
+       @$(NORMAL_UNINSTALL)
+       @list=''; test -n "$(man3dir)" || exit 0; \
+       files=`{ for i in $$list; do echo "$$i"; done; \
+       l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+         sed -n '/\.3[a-z]*$$/p'; \
+       } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \
+             -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+       dir='$(DESTDIR)$(man3dir)'; $(am__uninstall_files_from_dir)
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile $(MANS)
+installdirs:
+       for dir in "$(DESTDIR)$(man3dir)"; do \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+       done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-man
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man: install-man3
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-man
+
+uninstall-man: uninstall-man3
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+       cscopelist-am ctags-am distclean distclean-generic \
+       distclean-libtool distdir dvi dvi-am html html-am info info-am \
+       install install-am install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-man3 install-pdf install-pdf-am install-ps \
+       install-ps-am install-strip installcheck installcheck-am \
+       installdirs maintainer-clean maintainer-clean-generic \
+       mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+       ps ps-am tags-am uninstall uninstall-am uninstall-man \
+       uninstall-man3
+
+
+html: $(HTMLPAGES)
+
+.3.html:
+       $(MAN2HTML)
+
+pdf: $(PDFPAGES)
+
+.3.pdf:
+       @(foo=`echo $@ | sed -e 's/\.[0-9]$$//g'`; \
+       groff -Tps -man $< >$$foo.ps; \
+       ps2pdf $$foo.ps $@; \
+       rm $$foo.ps; \
+       echo "converted $< to $@")
+
+mancheck:
+       @cd $(top_srcdir)/docs/libcurl/opts && ls `awk -F, '!/OBSOLETE/ && /^  CINIT/ { a=substr($$1, 9); print "CURLOPT_" a ".3"}' $(top_srcdir)/include/curl/curl.h`
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
index e61cbbe..b8b0838 100644 (file)
@@ -17,7 +17,8 @@ CURLAUTH_ANYSAFE                7.10.6
 CURLAUTH_BASIC                  7.10.6
 CURLAUTH_DIGEST                 7.10.6
 CURLAUTH_DIGEST_IE              7.19.3
 CURLAUTH_BASIC                  7.10.6
 CURLAUTH_DIGEST                 7.10.6
 CURLAUTH_DIGEST_IE              7.19.3
-CURLAUTH_GSSNEGOTIATE           7.10.6
+CURLAUTH_GSSNEGOTIATE           7.10.6       7.38.0
+CURLAUTH_NEGOTIATE              7.38.0
 CURLAUTH_NONE                   7.10.6
 CURLAUTH_NTLM                   7.10.6
 CURLAUTH_NTLM_WB                7.22.0
 CURLAUTH_NONE                   7.10.6
 CURLAUTH_NTLM                   7.10.6
 CURLAUTH_NTLM_WB                7.22.0
@@ -73,6 +74,7 @@ CURLE_FTP_WEIRD_USER_REPLY      7.1           7.17.0
 CURLE_FTP_WRITE_ERROR           7.1           7.17.0
 CURLE_FUNCTION_NOT_FOUND        7.1
 CURLE_GOT_NOTHING               7.9.1
 CURLE_FTP_WRITE_ERROR           7.1           7.17.0
 CURLE_FUNCTION_NOT_FOUND        7.1
 CURLE_GOT_NOTHING               7.9.1
+CURLE_HTTP2                     7.38.0
 CURLE_HTTP_NOT_FOUND            7.1
 CURLE_HTTP_PORT_FAILED          7.3           7.12.0
 CURLE_HTTP_POST_ERROR           7.1
 CURLE_HTTP_NOT_FOUND            7.1
 CURLE_HTTP_PORT_FAILED          7.3           7.12.0
 CURLE_HTTP_POST_ERROR           7.1
@@ -85,8 +87,8 @@ CURLE_LDAP_SEARCH_FAILED        7.1
 CURLE_LIBRARY_NOT_FOUND         7.1           7.17.0
 CURLE_LOGIN_DENIED              7.13.1
 CURLE_MALFORMAT_USER            7.1           7.17.0
 CURLE_LIBRARY_NOT_FOUND         7.1           7.17.0
 CURLE_LOGIN_DENIED              7.13.1
 CURLE_MALFORMAT_USER            7.1           7.17.0
-CURLE_NO_CONNECTION_AVAILABLE   7.30.0
 CURLE_NOT_BUILT_IN              7.21.5
 CURLE_NOT_BUILT_IN              7.21.5
+CURLE_NO_CONNECTION_AVAILABLE   7.30.0
 CURLE_OK                        7.1
 CURLE_OPERATION_TIMEDOUT        7.10.2
 CURLE_OPERATION_TIMEOUTED       7.1           7.17.0
 CURLE_OK                        7.1
 CURLE_OPERATION_TIMEDOUT        7.10.2
 CURLE_OPERATION_TIMEOUTED       7.1           7.17.0
@@ -118,6 +120,7 @@ CURLE_SSL_ENGINE_NOTFOUND       7.9.3
 CURLE_SSL_ENGINE_SETFAILED      7.9.3
 CURLE_SSL_ISSUER_ERROR          7.19.0
 CURLE_SSL_PEER_CERTIFICATE      7.8           7.17.1
 CURLE_SSL_ENGINE_SETFAILED      7.9.3
 CURLE_SSL_ISSUER_ERROR          7.19.0
 CURLE_SSL_PEER_CERTIFICATE      7.8           7.17.1
+CURLE_SSL_PINNEDPUBKEYNOTMATCH  7.39.0
 CURLE_SSL_SHUTDOWN_FAILED       7.16.1
 CURLE_TELNET_OPTION_SYNTAX      7.7
 CURLE_TFTP_DISKFULL             7.15.0        7.17.0
 CURLE_SSL_SHUTDOWN_FAILED       7.16.1
 CURLE_TELNET_OPTION_SYNTAX      7.7
 CURLE_TFTP_DISKFULL             7.15.0        7.17.0
@@ -193,6 +196,8 @@ CURLFTP_CREATE_DIR_RETRY        7.19.4
 CURLGSSAPI_DELEGATION_FLAG      7.22.0
 CURLGSSAPI_DELEGATION_NONE      7.22.0
 CURLGSSAPI_DELEGATION_POLICY_FLAG 7.22.0
 CURLGSSAPI_DELEGATION_FLAG      7.22.0
 CURLGSSAPI_DELEGATION_NONE      7.22.0
 CURLGSSAPI_DELEGATION_POLICY_FLAG 7.22.0
+CURLHEADER_SEPARATE             7.37.0
+CURLHEADER_UNIFIED              7.37.0
 CURLINFO_APPCONNECT_TIME        7.19.0
 CURLINFO_CERTINFO               7.19.1
 CURLINFO_CONDITION_UNMET        7.19.4
 CURLINFO_APPCONNECT_TIME        7.19.0
 CURLINFO_CERTINFO               7.19.1
 CURLINFO_CONDITION_UNMET        7.19.4
@@ -250,6 +255,7 @@ CURLINFO_SSL_VERIFYRESULT       7.5
 CURLINFO_STARTTRANSFER_TIME     7.9.2
 CURLINFO_STRING                 7.4.1
 CURLINFO_TEXT                   7.9.6
 CURLINFO_STARTTRANSFER_TIME     7.9.2
 CURLINFO_STRING                 7.4.1
 CURLINFO_TEXT                   7.9.6
+CURLINFO_TLS_SESSION            7.34.0
 CURLINFO_TOTAL_TIME             7.4.1
 CURLINFO_TYPEMASK               7.4.1
 CURLIOCMD_NOP                   7.12.3
 CURLINFO_TOTAL_TIME             7.4.1
 CURLINFO_TYPEMASK               7.4.1
 CURLIOCMD_NOP                   7.12.3
@@ -270,10 +276,10 @@ CURLKHTYPE_RSA1                 7.19.6
 CURLKHTYPE_UNKNOWN              7.19.6
 CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE 7.30.0
 CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 7.30.0
 CURLKHTYPE_UNKNOWN              7.19.6
 CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE 7.30.0
 CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 7.30.0
+CURLMOPT_MAXCONNECTS            7.16.3
 CURLMOPT_MAX_HOST_CONNECTIONS   7.30.0
 CURLMOPT_MAX_PIPELINE_LENGTH    7.30.0
 CURLMOPT_MAX_TOTAL_CONNECTIONS  7.30.0
 CURLMOPT_MAX_HOST_CONNECTIONS   7.30.0
 CURLMOPT_MAX_PIPELINE_LENGTH    7.30.0
 CURLMOPT_MAX_TOTAL_CONNECTIONS  7.30.0
-CURLMOPT_MAXCONNECTS            7.16.3
 CURLMOPT_PIPELINING             7.16.0
 CURLMOPT_PIPELINING_SERVER_BL   7.30.0
 CURLMOPT_PIPELINING_SITE_BL     7.30.0
 CURLMOPT_PIPELINING             7.16.0
 CURLMOPT_PIPELINING_SERVER_BL   7.30.0
 CURLMOPT_PIPELINING_SITE_BL     7.30.0
@@ -283,6 +289,7 @@ CURLMOPT_TIMERDATA              7.16.0
 CURLMOPT_TIMERFUNCTION          7.16.0
 CURLMSG_DONE                    7.9.6
 CURLMSG_NONE                    7.9.6
 CURLMOPT_TIMERFUNCTION          7.16.0
 CURLMSG_DONE                    7.9.6
 CURLMSG_NONE                    7.9.6
+CURLM_ADDED_ALREADY             7.32.1
 CURLM_BAD_EASY_HANDLE           7.9.6
 CURLM_BAD_HANDLE                7.9.6
 CURLM_BAD_SOCKET                7.15.4
 CURLM_BAD_EASY_HANDLE           7.9.6
 CURLM_BAD_HANDLE                7.9.6
 CURLM_BAD_SOCKET                7.15.4
@@ -331,11 +338,15 @@ CURLOPT_DEBUGDATA               7.9.6
 CURLOPT_DEBUGFUNCTION           7.9.6
 CURLOPT_DIRLISTONLY             7.17.0
 CURLOPT_DNS_CACHE_TIMEOUT       7.9.3
 CURLOPT_DEBUGFUNCTION           7.9.6
 CURLOPT_DIRLISTONLY             7.17.0
 CURLOPT_DNS_CACHE_TIMEOUT       7.9.3
+CURLOPT_DNS_INTERFACE           7.33.0
+CURLOPT_DNS_LOCAL_IP4           7.33.0
+CURLOPT_DNS_LOCAL_IP6           7.33.0
 CURLOPT_DNS_SERVERS             7.24.0
 CURLOPT_DNS_USE_GLOBAL_CACHE    7.9.3         7.11.1
 CURLOPT_EGDSOCKET               7.7
 CURLOPT_ENCODING                7.10
 CURLOPT_ERRORBUFFER             7.1
 CURLOPT_DNS_SERVERS             7.24.0
 CURLOPT_DNS_USE_GLOBAL_CACHE    7.9.3         7.11.1
 CURLOPT_EGDSOCKET               7.7
 CURLOPT_ENCODING                7.10
 CURLOPT_ERRORBUFFER             7.1
+CURLOPT_EXPECT_100_TIMEOUT_MS   7.36.0
 CURLOPT_FAILONERROR             7.1
 CURLOPT_FILE                    7.1           7.9.7
 CURLOPT_FILETIME                7.5
 CURLOPT_FAILONERROR             7.1
 CURLOPT_FILE                    7.1           7.9.7
 CURLOPT_FILETIME                7.5
@@ -364,6 +375,7 @@ CURLOPT_GSSAPI_DELEGATION       7.22.0
 CURLOPT_HEADER                  7.1
 CURLOPT_HEADERDATA              7.10
 CURLOPT_HEADERFUNCTION          7.7.2
 CURLOPT_HEADER                  7.1
 CURLOPT_HEADERDATA              7.10
 CURLOPT_HEADERFUNCTION          7.7.2
+CURLOPT_HEADEROPT               7.37.0
 CURLOPT_HTTP200ALIASES          7.10.3
 CURLOPT_HTTPAUTH                7.10.6
 CURLOPT_HTTPGET                 7.8.1
 CURLOPT_HTTP200ALIASES          7.10.3
 CURLOPT_HTTPAUTH                7.10.6
 CURLOPT_HTTPGET                 7.8.1
@@ -390,6 +402,7 @@ CURLOPT_KRB4LEVEL               7.3           7.17.0
 CURLOPT_KRBLEVEL                7.16.4
 CURLOPT_LOCALPORT               7.15.2
 CURLOPT_LOCALPORTRANGE          7.15.2
 CURLOPT_KRBLEVEL                7.16.4
 CURLOPT_LOCALPORT               7.15.2
 CURLOPT_LOCALPORTRANGE          7.15.2
+CURLOPT_LOGIN_OPTIONS           7.34.0
 CURLOPT_LOW_SPEED_LIMIT         7.1
 CURLOPT_LOW_SPEED_TIME          7.1
 CURLOPT_MAIL_AUTH               7.25.0
 CURLOPT_LOW_SPEED_LIMIT         7.1
 CURLOPT_LOW_SPEED_TIME          7.1
 CURLOPT_MAIL_AUTH               7.25.0
@@ -417,6 +430,7 @@ CURLOPT_PASSWDDATA              7.4.2         7.11.1      7.15.5
 CURLOPT_PASSWDFUNCTION          7.4.2         7.11.1      7.15.5
 CURLOPT_PASSWORD                7.19.1
 CURLOPT_PASV_HOST               7.12.1        7.16.0      7.15.5
 CURLOPT_PASSWDFUNCTION          7.4.2         7.11.1      7.15.5
 CURLOPT_PASSWORD                7.19.1
 CURLOPT_PASV_HOST               7.12.1        7.16.0      7.15.5
+CURLOPT_PINNEDPUBLICKEY         7.39.0
 CURLOPT_PORT                    7.1
 CURLOPT_POST                    7.1
 CURLOPT_POST301                 7.17.1        7.19.1
 CURLOPT_PORT                    7.1
 CURLOPT_POST                    7.1
 CURLOPT_POST301                 7.17.1        7.19.1
@@ -432,6 +446,7 @@ CURLOPT_PROGRESSFUNCTION        7.1           7.32.0
 CURLOPT_PROTOCOLS               7.19.4
 CURLOPT_PROXY                   7.1
 CURLOPT_PROXYAUTH               7.10.7
 CURLOPT_PROTOCOLS               7.19.4
 CURLOPT_PROXY                   7.1
 CURLOPT_PROXYAUTH               7.10.7
+CURLOPT_PROXYHEADER             7.37.0
 CURLOPT_PROXYPASSWORD           7.19.1
 CURLOPT_PROXYPORT               7.1
 CURLOPT_PROXYTYPE               7.10
 CURLOPT_PROXYPASSWORD           7.19.1
 CURLOPT_PROXYPORT               7.1
 CURLOPT_PROXYTYPE               7.10
@@ -492,6 +507,8 @@ CURLOPT_SSLVERSION              7.1
 CURLOPT_SSL_CIPHER_LIST         7.9
 CURLOPT_SSL_CTX_DATA            7.10.6
 CURLOPT_SSL_CTX_FUNCTION        7.10.6
 CURLOPT_SSL_CIPHER_LIST         7.9
 CURLOPT_SSL_CTX_DATA            7.10.6
 CURLOPT_SSL_CTX_FUNCTION        7.10.6
+CURLOPT_SSL_ENABLE_ALPN         7.36.0
+CURLOPT_SSL_ENABLE_NPN          7.36.0
 CURLOPT_SSL_OPTIONS             7.25.0
 CURLOPT_SSL_SESSIONID_CACHE     7.16.0
 CURLOPT_SSL_VERIFYHOST          7.8.1
 CURLOPT_SSL_OPTIONS             7.25.0
 CURLOPT_SSL_SESSIONID_CACHE     7.16.0
 CURLOPT_SSL_VERIFYHOST          7.8.1
@@ -512,6 +529,7 @@ CURLOPT_TLSAUTH_TYPE            7.21.4
 CURLOPT_TLSAUTH_USERNAME        7.21.4
 CURLOPT_TRANSFERTEXT            7.1.1
 CURLOPT_TRANSFER_ENCODING       7.21.6
 CURLOPT_TLSAUTH_USERNAME        7.21.4
 CURLOPT_TRANSFERTEXT            7.1.1
 CURLOPT_TRANSFER_ENCODING       7.21.6
+CURLOPT_UNIX_SOCKET_PATH        7.40.0
 CURLOPT_UNRESTRICTED_AUTH       7.10.4
 CURLOPT_UPLOAD                  7.1
 CURLOPT_URL                     7.1
 CURLOPT_UNRESTRICTED_AUTH       7.10.4
 CURLOPT_UPLOAD                  7.1
 CURLOPT_URL                     7.1
@@ -527,6 +545,7 @@ CURLOPT_WRITEHEADER             7.1
 CURLOPT_WRITEINFO               7.1
 CURLOPT_XFERINFODATA            7.32.0
 CURLOPT_XFERINFOFUNCTION        7.32.0
 CURLOPT_WRITEINFO               7.1
 CURLOPT_XFERINFODATA            7.32.0
 CURLOPT_XFERINFOFUNCTION        7.32.0
+CURLOPT_XOAUTH2_BEARER          7.33.0
 CURLPAUSE_ALL                   7.18.0
 CURLPAUSE_CONT                  7.18.0
 CURLPAUSE_RECV                  7.18.0
 CURLPAUSE_ALL                   7.18.0
 CURLPAUSE_CONT                  7.18.0
 CURLPAUSE_RECV                  7.18.0
@@ -556,6 +575,8 @@ CURLPROTO_RTMPTS                7.21.0
 CURLPROTO_RTSP                  7.20.0
 CURLPROTO_SCP                   7.19.4
 CURLPROTO_SFTP                  7.19.4
 CURLPROTO_RTSP                  7.20.0
 CURLPROTO_SCP                   7.19.4
 CURLPROTO_SFTP                  7.19.4
+CURLPROTO_SMB                   7.40.0
+CURLPROTO_SMBS                  7.40.0
 CURLPROTO_SMTP                  7.20.0
 CURLPROTO_SMTPS                 7.20.0
 CURLPROTO_TELNET                7.19.4
 CURLPROTO_SMTP                  7.20.0
 CURLPROTO_SMTPS                 7.20.0
 CURLPROTO_TELNET                7.19.4
@@ -588,6 +609,17 @@ CURLSSH_AUTH_KEYBOARD           7.16.1
 CURLSSH_AUTH_NONE               7.16.1
 CURLSSH_AUTH_PASSWORD           7.16.1
 CURLSSH_AUTH_PUBLICKEY          7.16.1
 CURLSSH_AUTH_NONE               7.16.1
 CURLSSH_AUTH_PASSWORD           7.16.1
 CURLSSH_AUTH_PUBLICKEY          7.16.1
+CURLSSLBACKEND_AXTLS            7.38.0
+CURLSSLBACKEND_CYASSL           7.34.0
+CURLSSLBACKEND_DARWINSSL        7.34.0
+CURLSSLBACKEND_GNUTLS           7.34.0
+CURLSSLBACKEND_GSKIT            7.34.0
+CURLSSLBACKEND_NONE             7.34.0
+CURLSSLBACKEND_NSS              7.34.0
+CURLSSLBACKEND_OPENSSL          7.34.0
+CURLSSLBACKEND_POLARSSL         7.34.0
+CURLSSLBACKEND_QSOSSL           7.34.0        -           7.38.1
+CURLSSLBACKEND_SCHANNEL         7.34.0
 CURLSSLOPT_ALLOW_BEAST          7.25.0
 CURLUSESSL_ALL                  7.17.0
 CURLUSESSL_CONTROL              7.17.0
 CURLSSLOPT_ALLOW_BEAST          7.25.0
 CURLUSESSL_ALL                  7.17.0
 CURLUSESSL_CONTROL              7.17.0
@@ -620,14 +652,15 @@ CURL_FORMADD_NULL               7.9.8
 CURL_FORMADD_OK                 7.9.8
 CURL_FORMADD_OPTION_TWICE       7.9.8
 CURL_FORMADD_UNKNOWN_OPTION     7.9.8
 CURL_FORMADD_OK                 7.9.8
 CURL_FORMADD_OPTION_TWICE       7.9.8
 CURL_FORMADD_UNKNOWN_OPTION     7.9.8
+CURL_GLOBAL_ACK_EINTR           7.30.0
 CURL_GLOBAL_ALL                 7.8
 CURL_GLOBAL_DEFAULT             7.8
 CURL_GLOBAL_NOTHING             7.8
 CURL_GLOBAL_SSL                 7.8
 CURL_GLOBAL_WIN32               7.8.1
 CURL_GLOBAL_ALL                 7.8
 CURL_GLOBAL_DEFAULT             7.8
 CURL_GLOBAL_NOTHING             7.8
 CURL_GLOBAL_SSL                 7.8
 CURL_GLOBAL_WIN32               7.8.1
-CURL_GLOBAL_ACK_EINTR           7.30.0
 CURL_HTTP_VERSION_1_0           7.9.1
 CURL_HTTP_VERSION_1_1           7.9.1
 CURL_HTTP_VERSION_1_0           7.9.1
 CURL_HTTP_VERSION_1_1           7.9.1
+CURL_HTTP_VERSION_2_0           7.33.0
 CURL_HTTP_VERSION_NONE          7.9.1
 CURL_IPRESOLVE_V4               7.10.8
 CURL_IPRESOLVE_V6               7.10.8
 CURL_HTTP_VERSION_NONE          7.9.1
 CURL_IPRESOLVE_V4               7.10.8
 CURL_IPRESOLVE_V6               7.10.8
@@ -689,6 +722,9 @@ CURL_SSLVERSION_DEFAULT         7.9.2
 CURL_SSLVERSION_SSLv2           7.9.2
 CURL_SSLVERSION_SSLv3           7.9.2
 CURL_SSLVERSION_TLSv1           7.9.2
 CURL_SSLVERSION_SSLv2           7.9.2
 CURL_SSLVERSION_SSLv3           7.9.2
 CURL_SSLVERSION_TLSv1           7.9.2
+CURL_SSLVERSION_TLSv1_0         7.34.0
+CURL_SSLVERSION_TLSv1_1         7.34.0
+CURL_SSLVERSION_TLSv1_2         7.34.0
 CURL_TIMECOND_IFMODSINCE        7.9.7
 CURL_TIMECOND_IFUNMODSINCE      7.9.7
 CURL_TIMECOND_LASTMOD           7.9.7
 CURL_TIMECOND_IFMODSINCE        7.9.7
 CURL_TIMECOND_IFUNMODSINCE      7.9.7
 CURL_TIMECOND_LASTMOD           7.9.7
@@ -699,10 +735,13 @@ CURL_VERSION_ASYNCHDNS          7.10.7
 CURL_VERSION_CONV               7.15.4
 CURL_VERSION_CURLDEBUG          7.19.6
 CURL_VERSION_DEBUG              7.10.6
 CURL_VERSION_CONV               7.15.4
 CURL_VERSION_CURLDEBUG          7.19.6
 CURL_VERSION_DEBUG              7.10.6
-CURL_VERSION_GSSNEGOTIATE       7.10.6
+CURL_VERSION_GSSAPI             7.38.0
+CURL_VERSION_GSSNEGOTIATE       7.10.6        7.38.0
+CURL_VERSION_HTTP2              7.33.0
 CURL_VERSION_IDN                7.12.0
 CURL_VERSION_IPV6               7.10
 CURL_VERSION_IDN                7.12.0
 CURL_VERSION_IPV6               7.10
-CURL_VERSION_KERBEROS4          7.10
+CURL_VERSION_KERBEROS4          7.10          7.33.0
+CURL_VERSION_KERBEROS5          7.40.0
 CURL_VERSION_LARGEFILE          7.11.1
 CURL_VERSION_LIBZ               7.10
 CURL_VERSION_NTLM               7.10.6
 CURL_VERSION_LARGEFILE          7.11.1
 CURL_VERSION_LIBZ               7.10
 CURL_VERSION_NTLM               7.10.6
@@ -711,6 +750,7 @@ CURL_VERSION_SPNEGO             7.10.8
 CURL_VERSION_SSL                7.10
 CURL_VERSION_SSPI               7.13.2
 CURL_VERSION_TLSAUTH_SRP        7.21.4
 CURL_VERSION_SSL                7.10
 CURL_VERSION_SSPI               7.13.2
 CURL_VERSION_TLSAUTH_SRP        7.21.4
+CURL_VERSION_UNIX_SOCKETS       7.40.0
 CURL_WAIT_POLLIN                7.28.0
 CURL_WAIT_POLLOUT               7.28.0
 CURL_WAIT_POLLPRI               7.28.0
 CURL_WAIT_POLLIN                7.28.0
 CURL_WAIT_POLLOUT               7.28.0
 CURL_WAIT_POLLPRI               7.28.0
index fbdd589..0c633de 100644 (file)
@@ -47,13 +47,15 @@ p.roffit {
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">mk-ca-bundle - convert mozilla's certdata.txt to PEM format <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
 
 <p class="level0"><a name="NAME"></a><h2 class="nroffsh">NAME</h2>
 <p class="level0">mk-ca-bundle - convert mozilla's certdata.txt to PEM format <a name="SYNOPSIS"></a><h2 class="nroffsh">SYNOPSIS</h2>
-<p class="level0">mk-ca-bundle [bilnqtuv] <span Class="emphasis">[outputfile]</span> <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
-<p class="level0">The mk-ca-bundle tool downloads the certdata.txt file from Mozilla's source tree over HTTP, then parses certdata.txt and extracts CA Root Certificates into PEM format.  These are then processed with the OpenSSL commandline tool to produce the final ca-bundle file. 
+<p class="level0">mk-ca-bundle [bilnpqstuv] <span Class="emphasis">[outputfile]</span> <a name="DESCRIPTION"></a><h2 class="nroffsh">DESCRIPTION</h2>
+<p class="level0">The mk-ca-bundle tool downloads the certdata.txt file from Mozilla's source tree over HTTP, then parses certdata.txt and extracts certificates into PEM format.  By default, only CA root certificates trusted to issue SSL server authentication certificates are extracted. These are then processed with the OpenSSL commandline tool to produce the final ca-bundle file. 
 <p class="level0">The default <span Class="emphasis">outputfile</span> name is <span Class="bold">ca-bundle.crt</span>. By setting it to '-' (a single dash) you will get the output sent to STDOUT instead of a file. 
 <p class="level0">The PEM format this scripts uses for output makes the result readily available for use by just about all OpenSSL or GnuTLS powered applications, such as curl, wget and more. <a name="OPTIONS"></a><h2 class="nroffsh">OPTIONS</h2>
 <p class="level0">The following options are supported: 
 <p class="level0"><a name="-b"></a><span class="nroffip">-b</span> 
 <p class="level1">backup an existing version of <span Class="emphasis">outputfilename</span> 
 <p class="level0">The default <span Class="emphasis">outputfile</span> name is <span Class="bold">ca-bundle.crt</span>. By setting it to '-' (a single dash) you will get the output sent to STDOUT instead of a file. 
 <p class="level0">The PEM format this scripts uses for output makes the result readily available for use by just about all OpenSSL or GnuTLS powered applications, such as curl, wget and more. <a name="OPTIONS"></a><h2 class="nroffsh">OPTIONS</h2>
 <p class="level0">The following options are supported: 
 <p class="level0"><a name="-b"></a><span class="nroffip">-b</span> 
 <p class="level1">backup an existing version of <span Class="emphasis">outputfilename</span> 
+<p class="level0"><a name="-d"></a><span class="nroffip">-d [name]</span> 
+<p class="level1">specify which Mozilla tree to pull certdata.txt from (or a custom URL). Valid names are: aurora, beta, central, mozilla, nss, release (default). They are shortcuts for which source tree to get the cert data from. 
 <p class="level0"><a name="-f"></a><span class="nroffip">-f</span> 
 <p class="level1">force rebuild even if certdata.txt is current (Added in version 1.17) 
 <p class="level0"><a name="-i"></a><span class="nroffip">-i</span> 
 <p class="level0"><a name="-f"></a><span class="nroffip">-f</span> 
 <p class="level1">force rebuild even if certdata.txt is current (Added in version 1.17) 
 <p class="level0"><a name="-i"></a><span class="nroffip">-i</span> 
@@ -62,10 +64,25 @@ p.roffit {
 <p class="level1">print license info about certdata.txt 
 <p class="level0"><a name="-n"></a><span class="nroffip">-n</span> 
 <p class="level1">no download of certdata.txt (to use existing) 
 <p class="level1">print license info about certdata.txt 
 <p class="level0"><a name="-n"></a><span class="nroffip">-n</span> 
 <p class="level1">no download of certdata.txt (to use existing) 
+<p class="level0"><a name="-p"></a><span class="nroffip">-p [purposes]:[levels]</span> 
+<p class="level1">list of Mozilla trust purposes and levels for certificates to include in output. Takes the form of a comma separated list of purposes, a colon, and a comma separated list of levels. The default is to include all certificates trusted to issue SSL Server certificates (SERVER_AUTH:TRUSTED_DELEGATOR). 
+<p class="level1">(Added in version 1.21, Perl only) 
+<p class="level1">Valid purposes are: 
+<p class="level2">ALL, DIGITAL_SIGNATURE, NON_REPUDIATION, KEY_ENCIPHERMENT, DATA_ENCIPHERMENT, KEY_AGREEMENT, KEY_CERT_SIGN, CRL_SIGN, SERVER_AUTH (default), CLIENT_AUTH, CODE_SIGNING, EMAIL_PROTECTION, IPSEC_END_SYSTEM, IPSEC_TUNNEL, IPSEC_USER, TIME_STAMPING, STEP_UP_APPROVED 
+<p class="level1">
+<p class="level1">Valid trust levels are: 
+<p class="level2">ALL, TRUSTED_DELEGATOR (default), NOT_TRUSTED, MUST_VERIFY_TRUST, TRUSTED 
+<p class="level1">
 <p class="level0"><a name="-q"></a><span class="nroffip">-q</span> 
 <p class="level1">be really quiet (no progress output at all) 
 <p class="level0"><a name="-t"></a><span class="nroffip">-t</span> 
 <p class="level1">include plain text listing of certificates 
 <p class="level0"><a name="-q"></a><span class="nroffip">-q</span> 
 <p class="level1">be really quiet (no progress output at all) 
 <p class="level0"><a name="-t"></a><span class="nroffip">-t</span> 
 <p class="level1">include plain text listing of certificates 
+<p class="level0"><a name="-s"></a><span class="nroffip">-s [algorithms]</span> 
+<p class="level1">comma separated list of signature algorithms with which to hash/fingerprint each certificate and output when run in plain text mode. 
+<p class="level1">(Added in version 1.21, Perl only) 
+<p class="level1">Valid algorithms are: 
+<p class="level2">ALL, NONE, MD5 (default), SHA1, SHA256, SHA384, SHA512 
+<p class="level1">
 <p class="level0"><a name="-u"></a><span class="nroffip">-u</span> 
 <p class="level1">unlink (remove) certdata.txt after processing 
 <p class="level0"><a name="-v"></a><span class="nroffip">-v</span> 
 <p class="level0"><a name="-u"></a><span class="nroffip">-u</span> 
 <p class="level1">unlink (remove) certdata.txt after processing 
 <p class="level0"><a name="-v"></a><span class="nroffip">-v</span> 
index 5fe5224..fbd4b36 100644 (file)
Binary files a/docs/mk-ca-bundle.pdf and b/docs/mk-ca-bundle.pdf differ
index 187d55e..1b6b48f 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -220,6 +220,7 @@ CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
+CURL_DISABLE_SMB = @CURL_DISABLE_SMB@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
@@ -244,7 +245,6 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_NSS_INITCONTEXT = @HAVE_NSS_INITCONTEXT@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
@@ -253,7 +253,6 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
-KRB4_ENABLED = @KRB4_ENABLED@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
@@ -274,6 +273,7 @@ MKDIR_P = @MKDIR_P@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
+NSS_LIBS = @NSS_LIBS@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
@@ -309,11 +309,13 @@ USE_GNUTLS = @USE_GNUTLS@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
+USE_NGHTTP2 = @USE_NGHTTP2@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
+USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
index 9b7fc9c..1087121 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -207,6 +207,7 @@ CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
+CURL_DISABLE_SMB = @CURL_DISABLE_SMB@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
@@ -231,7 +232,6 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_NSS_INITCONTEXT = @HAVE_NSS_INITCONTEXT@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
@@ -240,7 +240,6 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
-KRB4_ENABLED = @KRB4_ENABLED@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
@@ -261,6 +260,7 @@ MKDIR_P = @MKDIR_P@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
+NSS_LIBS = @NSS_LIBS@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
@@ -296,11 +296,13 @@ USE_GNUTLS = @USE_GNUTLS@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
+USE_NGHTTP2 = @USE_NGHTTP2@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
+USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
@@ -438,8 +440,8 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 
 curlbuild.h: stamp-h2
 $(am__aclocal_m4_deps):
 
 curlbuild.h: stamp-h2
-       @if test ! -f $@; then rm -f stamp-h2; else :; fi
-       @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h2; else :; fi
+       @test -f $@ || rm -f stamp-h2
+       @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h2
 
 stamp-h2: $(srcdir)/curlbuild.h.in $(top_builddir)/config.status
        @rm -f stamp-h2
 
 stamp-h2: $(srcdir)/curlbuild.h.in $(top_builddir)/config.status
        @rm -f stamp-h2
index 41c0881..44b1b7e 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -69,7 +69,7 @@
    require it! */
 #if defined(_AIX) || defined(__NOVELL_LIBC__) || defined(__NetBSD__) || \
     defined(__minix) || defined(__SYMBIAN32__) || defined(__INTEGRITY) || \
    require it! */
 #if defined(_AIX) || defined(__NOVELL_LIBC__) || defined(__NetBSD__) || \
     defined(__minix) || defined(__SYMBIAN32__) || defined(__INTEGRITY) || \
-    defined(ANDROID) || defined(__ANDROID__) || \
+    defined(ANDROID) || defined(__ANDROID__) || defined(__OpenBSD__) || \
    (defined(__FreeBSD_version) && (__FreeBSD_version < 800000))
 #include <sys/select.h>
 #endif
    (defined(__FreeBSD_version) && (__FreeBSD_version < 800000))
 #include <sys/select.h>
 #endif
@@ -423,7 +423,9 @@ typedef enum {
   CURLE_FTP_WEIRD_PASV_REPLY,    /* 13 */
   CURLE_FTP_WEIRD_227_FORMAT,    /* 14 */
   CURLE_FTP_CANT_GET_HOST,       /* 15 */
   CURLE_FTP_WEIRD_PASV_REPLY,    /* 13 */
   CURLE_FTP_WEIRD_227_FORMAT,    /* 14 */
   CURLE_FTP_CANT_GET_HOST,       /* 15 */
-  CURLE_OBSOLETE16,              /* 16 - NOT USED */
+  CURLE_HTTP2,                   /* 16 - A problem in the http2 framing layer.
+                                    [was obsoleted in August 2007 for 7.17.0,
+                                    reused in July 2014 for 7.38.0] */
   CURLE_FTP_COULDNT_SET_TYPE,    /* 17 */
   CURLE_PARTIAL_FILE,            /* 18 */
   CURLE_FTP_COULDNT_RETR_FILE,   /* 19 */
   CURLE_FTP_COULDNT_SET_TYPE,    /* 17 */
   CURLE_PARTIAL_FILE,            /* 18 */
   CURLE_FTP_COULDNT_RETR_FILE,   /* 19 */
@@ -519,13 +521,18 @@ typedef enum {
   CURLE_CHUNK_FAILED,            /* 88 - chunk callback reported error */
   CURLE_NO_CONNECTION_AVAILABLE, /* 89 - No connection available, the
                                     session will be queued */
   CURLE_CHUNK_FAILED,            /* 88 - chunk callback reported error */
   CURLE_NO_CONNECTION_AVAILABLE, /* 89 - No connection available, the
                                     session will be queued */
+  CURLE_SSL_PINNEDPUBKEYNOTMATCH, /* 90 - specified pinned public key did not
+                                     match */
   CURL_LAST /* never use! */
 } CURLcode;
 
 #ifndef CURL_NO_OLDIES /* define this to test if your app builds with all
                           the obsolete stuff removed! */
 
   CURL_LAST /* never use! */
 } CURLcode;
 
 #ifndef CURL_NO_OLDIES /* define this to test if your app builds with all
                           the obsolete stuff removed! */
 
-/* Previously obsoletes error codes re-used in 7.24.0 */
+/* Previously obsolete error code re-used in 7.38.0 */
+#define CURLE_OBSOLETE16 CURLE_HTTP2
+
+/* Previously obsolete error codes re-used in 7.24.0 */
 #define CURLE_OBSOLETE10 CURLE_FTP_ACCEPT_FAILED
 #define CURLE_OBSOLETE12 CURLE_FTP_ACCEPT_TIMEOUT
 
 #define CURLE_OBSOLETE10 CURLE_FTP_ACCEPT_FAILED
 #define CURLE_OBSOLETE12 CURLE_FTP_ACCEPT_TIMEOUT
 
@@ -579,6 +586,16 @@ typedef enum {
    make programs break */
 #define CURLE_ALREADY_COMPLETE 99999
 
    make programs break */
 #define CURLE_ALREADY_COMPLETE 99999
 
+/* Provide defines for really old option names */
+#define CURLOPT_FILE CURLOPT_WRITEDATA /* name changed in 7.9.7 */
+#define CURLOPT_INFILE CURLOPT_READDATA /* name changed in 7.9.7 */
+#define CURLOPT_WRITEHEADER CURLOPT_HEADERDATA
+
+/* Since long deprecated options with no code in the lib that does anything
+   with them. */
+#define CURLOPT_WRITEINFO CURLOPT_OBSOLETE40
+#define CURLOPT_CLOSEPOLICY CURLOPT_OBSOLETE72
+
 #endif /*!CURL_NO_OLDIES*/
 
 /* This prototype applies to all conversion callbacks */
 #endif /*!CURL_NO_OLDIES*/
 
 /* This prototype applies to all conversion callbacks */
@@ -609,7 +626,8 @@ typedef enum {
  * CURLAUTH_NONE         - No HTTP authentication
  * CURLAUTH_BASIC        - HTTP Basic authentication (default)
  * CURLAUTH_DIGEST       - HTTP Digest authentication
  * CURLAUTH_NONE         - No HTTP authentication
  * CURLAUTH_BASIC        - HTTP Basic authentication (default)
  * CURLAUTH_DIGEST       - HTTP Digest authentication
- * CURLAUTH_GSSNEGOTIATE - HTTP GSS-Negotiate authentication
+ * CURLAUTH_NEGOTIATE    - HTTP Negotiate (SPNEGO) authentication
+ * CURLAUTH_GSSNEGOTIATE - Alias for CURLAUTH_NEGOTIATE (deprecated)
  * CURLAUTH_NTLM         - HTTP NTLM authentication
  * CURLAUTH_DIGEST_IE    - HTTP Digest authentication with IE flavour
  * CURLAUTH_NTLM_WB      - HTTP NTLM authentication delegated to winbind helper
  * CURLAUTH_NTLM         - HTTP NTLM authentication
  * CURLAUTH_DIGEST_IE    - HTTP Digest authentication with IE flavour
  * CURLAUTH_NTLM_WB      - HTTP NTLM authentication delegated to winbind helper
@@ -622,7 +640,9 @@ typedef enum {
 #define CURLAUTH_NONE         ((unsigned long)0)
 #define CURLAUTH_BASIC        (((unsigned long)1)<<0)
 #define CURLAUTH_DIGEST       (((unsigned long)1)<<1)
 #define CURLAUTH_NONE         ((unsigned long)0)
 #define CURLAUTH_BASIC        (((unsigned long)1)<<0)
 #define CURLAUTH_DIGEST       (((unsigned long)1)<<1)
-#define CURLAUTH_GSSNEGOTIATE (((unsigned long)1)<<2)
+#define CURLAUTH_NEGOTIATE    (((unsigned long)1)<<2)
+/* Deprecated since the advent of CURLAUTH_NEGOTIATE */
+#define CURLAUTH_GSSNEGOTIATE CURLAUTH_NEGOTIATE
 #define CURLAUTH_NTLM         (((unsigned long)1)<<3)
 #define CURLAUTH_DIGEST_IE    (((unsigned long)1)<<4)
 #define CURLAUTH_NTLM_WB      (((unsigned long)1)<<5)
 #define CURLAUTH_NTLM         (((unsigned long)1)<<3)
 #define CURLAUTH_DIGEST_IE    (((unsigned long)1)<<4)
 #define CURLAUTH_NTLM_WB      (((unsigned long)1)<<5)
@@ -645,16 +665,18 @@ typedef enum {
 
 #define CURL_ERROR_SIZE 256
 
 
 #define CURL_ERROR_SIZE 256
 
+enum curl_khtype {
+  CURLKHTYPE_UNKNOWN,
+  CURLKHTYPE_RSA1,
+  CURLKHTYPE_RSA,
+  CURLKHTYPE_DSS
+};
+
 struct curl_khkey {
   const char *key; /* points to a zero-terminated string encoded with base64
                       if len is zero, otherwise to the "raw" data */
   size_t len;
 struct curl_khkey {
   const char *key; /* points to a zero-terminated string encoded with base64
                       if len is zero, otherwise to the "raw" data */
   size_t len;
-  enum type {
-    CURLKHTYPE_UNKNOWN,
-    CURLKHTYPE_RSA1,
-    CURLKHTYPE_RSA,
-    CURLKHTYPE_DSS
-  } keytype;
+  enum curl_khtype keytype;
 };
 
 /* this is the set of return values expected from the curl_sshkeycallback
 };
 
 /* this is the set of return values expected from the curl_sshkeycallback
@@ -752,6 +774,10 @@ typedef enum {
   CURLFTPMETHOD_LAST       /* not an option, never use */
 } curl_ftpmethod;
 
   CURLFTPMETHOD_LAST       /* not an option, never use */
 } curl_ftpmethod;
 
+/* bitmask defines for CURLOPT_HEADEROPT */
+#define CURLHEADER_UNIFIED  0
+#define CURLHEADER_SEPARATE (1<<0)
+
 /* CURLPROTO_ defines are for the CURLOPT_*PROTOCOLS options */
 #define CURLPROTO_HTTP   (1<<0)
 #define CURLPROTO_HTTPS  (1<<1)
 /* CURLPROTO_ defines are for the CURLOPT_*PROTOCOLS options */
 #define CURLPROTO_HTTP   (1<<0)
 #define CURLPROTO_HTTPS  (1<<1)
@@ -779,6 +805,8 @@ typedef enum {
 #define CURLPROTO_RTMPS  (1<<23)
 #define CURLPROTO_RTMPTS (1<<24)
 #define CURLPROTO_GOPHER (1<<25)
 #define CURLPROTO_RTMPS  (1<<23)
 #define CURLPROTO_RTMPTS (1<<24)
 #define CURLPROTO_GOPHER (1<<25)
+#define CURLPROTO_SMB    (1<<26)
+#define CURLPROTO_SMBS   (1<<27)
 #define CURLPROTO_ALL    (~0) /* enable everything */
 
 /* long may be 32 or 64 bits, but we should never depend on anything else
 #define CURLPROTO_ALL    (~0) /* enable everything */
 
 /* long may be 32 or 64 bits, but we should never depend on anything else
@@ -814,7 +842,7 @@ typedef enum {
 
 typedef enum {
   /* This is the FILE * or void * the regular output should be written to. */
 
 typedef enum {
   /* This is the FILE * or void * the regular output should be written to. */
-  CINIT(FILE, OBJECTPOINT, 1),
+  CINIT(WRITEDATA, OBJECTPOINT, 1),
 
   /* The full URL to get/put */
   CINIT(URL,  OBJECTPOINT, 2),
 
   /* The full URL to get/put */
   CINIT(URL,  OBJECTPOINT, 2),
@@ -825,10 +853,10 @@ typedef enum {
   /* Name of proxy to use. */
   CINIT(PROXY, OBJECTPOINT, 4),
 
   /* Name of proxy to use. */
   CINIT(PROXY, OBJECTPOINT, 4),
 
-  /* "name:password" to use when fetching. */
+  /* "user:password;options" to use when fetching. */
   CINIT(USERPWD, OBJECTPOINT, 5),
 
   CINIT(USERPWD, OBJECTPOINT, 5),
 
-  /* "name:password" to use with proxy. */
+  /* "user:password" to use with proxy. */
   CINIT(PROXYUSERPWD, OBJECTPOINT, 6),
 
   /* Range to get, specified as an ASCII string. */
   CINIT(PROXYUSERPWD, OBJECTPOINT, 6),
 
   /* Range to get, specified as an ASCII string. */
@@ -837,7 +865,7 @@ typedef enum {
   /* not used */
 
   /* Specified file stream to upload from (use as input): */
   /* not used */
 
   /* Specified file stream to upload from (use as input): */
-  CINIT(INFILE, OBJECTPOINT, 9),
+  CINIT(READDATA, OBJECTPOINT, 9),
 
   /* Buffer to receive error messages in, must be at least CURL_ERROR_SIZE
    * bytes big. If this is not used, error messages go to stderr instead: */
 
   /* Buffer to receive error messages in, must be at least CURL_ERROR_SIZE
    * bytes big. If this is not used, error messages go to stderr instead: */
@@ -901,7 +929,8 @@ typedef enum {
   /* Set cookie in request: */
   CINIT(COOKIE, OBJECTPOINT, 22),
 
   /* Set cookie in request: */
   CINIT(COOKIE, OBJECTPOINT, 22),
 
-  /* This points to a linked list of headers, struct curl_slist kind */
+  /* This points to a linked list of headers, struct curl_slist kind. This
+     list is also used for RTSP (in spite of its name) */
   CINIT(HTTPHEADER, OBJECTPOINT, 23),
 
   /* This points to a linked list of post entries, struct curl_httppost */
   CINIT(HTTPHEADER, OBJECTPOINT, 23),
 
   /* This points to a linked list of post entries, struct curl_httppost */
@@ -921,7 +950,7 @@ typedef enum {
 
   /* send FILE * or void * to store headers to, if you use a callback it
      is simply passed to the callback unmodified */
 
   /* send FILE * or void * to store headers to, if you use a callback it
      is simply passed to the callback unmodified */
-  CINIT(WRITEHEADER, OBJECTPOINT, 29),
+  CINIT(HEADERDATA, OBJECTPOINT, 29),
 
   /* point to a file to read the initial cookies from, also enables
      "cookie awareness" */
 
   /* point to a file to read the initial cookies from, also enables
      "cookie awareness" */
@@ -954,13 +983,13 @@ typedef enum {
   /* send linked-list of post-transfer QUOTE commands */
   CINIT(POSTQUOTE, OBJECTPOINT, 39),
 
   /* send linked-list of post-transfer QUOTE commands */
   CINIT(POSTQUOTE, OBJECTPOINT, 39),
 
-  CINIT(WRITEINFO, OBJECTPOINT, 40), /* DEPRECATED, do not use! */
+  CINIT(OBSOLETE40, OBJECTPOINT, 40), /* OBSOLETE, do not use! */
 
   CINIT(VERBOSE, LONG, 41),      /* talk a lot */
   CINIT(HEADER, LONG, 42),       /* throw the header out too */
   CINIT(NOPROGRESS, LONG, 43),   /* shut off the progress meter */
   CINIT(NOBODY, LONG, 44),       /* use HEAD to get http document */
 
   CINIT(VERBOSE, LONG, 41),      /* talk a lot */
   CINIT(HEADER, LONG, 42),       /* throw the header out too */
   CINIT(NOPROGRESS, LONG, 43),   /* shut off the progress meter */
   CINIT(NOBODY, LONG, 44),       /* use HEAD to get http document */
-  CINIT(FAILONERROR, LONG, 45),  /* no output on http error codes >= 300 */
+  CINIT(FAILONERROR, LONG, 45),  /* no output on http error codes >= 400 */
   CINIT(UPLOAD, LONG, 46),       /* this is an upload */
   CINIT(POST, LONG, 47),         /* HTTP POST method */
   CINIT(DIRLISTONLY, LONG, 48),  /* bare names when listing directories */
   CINIT(UPLOAD, LONG, 46),       /* this is an upload */
   CINIT(POST, LONG, 47),         /* HTTP POST method */
   CINIT(DIRLISTONLY, LONG, 48),  /* bare names when listing directories */
@@ -1033,7 +1062,7 @@ typedef enum {
   /* Max amount of cached alive connections */
   CINIT(MAXCONNECTS, LONG, 71),
 
   /* Max amount of cached alive connections */
   CINIT(MAXCONNECTS, LONG, 71),
 
-  CINIT(CLOSEPOLICY, LONG, 72), /* DEPRECATED, do not use! */
+  CINIT(OBSOLETE72, LONG, 72), /* OBSOLETE, do not use! */
 
   /* 73 = OBSOLETE */
 
 
   /* 73 = OBSOLETE */
 
@@ -1386,8 +1415,7 @@ typedef enum {
   CINIT(ADDRESS_SCOPE, LONG, 171),
 
   /* Collect certificate chain info and allow it to get retrievable with
   CINIT(ADDRESS_SCOPE, LONG, 171),
 
   /* Collect certificate chain info and allow it to get retrievable with
-     CURLINFO_CERTINFO after the transfer is complete. (Unfortunately) only
-     working with OpenSSL-powered builds. */
+     CURLINFO_CERTINFO after the transfer is complete. */
   CINIT(CERTINFO, LONG, 172),
 
   /* "name" and "pwd" to use when fetching. */
   CINIT(CERTINFO, LONG, 172),
 
   /* "name" and "pwd" to use when fetching. */
@@ -1551,6 +1579,49 @@ typedef enum {
    * prototype defines. (Deprecates CURLOPT_PROGRESSFUNCTION) */
   CINIT(XFERINFOFUNCTION, FUNCTIONPOINT, 219),
 
    * prototype defines. (Deprecates CURLOPT_PROGRESSFUNCTION) */
   CINIT(XFERINFOFUNCTION, FUNCTIONPOINT, 219),
 
+  /* The XOAUTH2 bearer token */
+  CINIT(XOAUTH2_BEARER, OBJECTPOINT, 220),
+
+  /* Set the interface string to use as outgoing network
+   * interface for DNS requests.
+   * Only supported by the c-ares DNS backend */
+  CINIT(DNS_INTERFACE, OBJECTPOINT, 221),
+
+  /* Set the local IPv4 address to use for outgoing DNS requests.
+   * Only supported by the c-ares DNS backend */
+  CINIT(DNS_LOCAL_IP4, OBJECTPOINT, 222),
+
+  /* Set the local IPv4 address to use for outgoing DNS requests.
+   * Only supported by the c-ares DNS backend */
+  CINIT(DNS_LOCAL_IP6, OBJECTPOINT, 223),
+
+  /* Set authentication options directly */
+  CINIT(LOGIN_OPTIONS, OBJECTPOINT, 224),
+
+  /* Enable/disable TLS NPN extension (http2 over ssl might fail without) */
+  CINIT(SSL_ENABLE_NPN, LONG, 225),
+
+  /* Enable/disable TLS ALPN extension (http2 over ssl might fail without) */
+  CINIT(SSL_ENABLE_ALPN, LONG, 226),
+
+  /* Time to wait for a response to a HTTP request containing an
+   * Expect: 100-continue header before sending the data anyway. */
+  CINIT(EXPECT_100_TIMEOUT_MS, LONG, 227),
+
+  /* This points to a linked list of headers used for proxy requests only,
+     struct curl_slist kind */
+  CINIT(PROXYHEADER, OBJECTPOINT, 228),
+
+  /* Pass in a bitmask of "header options" */
+  CINIT(HEADEROPT, LONG, 229),
+
+  /* The public key in DER form used to validate the peer public key
+     this option is used only if SSL_VERIFYPEER is true */
+  CINIT(PINNEDPUBLICKEY, OBJECTPOINT, 230),
+
+  /* Path to Unix domain socket */
+  CINIT(UNIX_SOCKET_PATH, OBJECTPOINT, 231),
+
   CURLOPT_LASTENTRY /* the last unused */
 } CURLoption;
 
   CURLOPT_LASTENTRY /* the last unused */
 } CURLoption;
 
@@ -1587,13 +1658,10 @@ typedef enum {
      option might be handy to force libcurl to use a specific IP version. */
 #define CURL_IPRESOLVE_WHATEVER 0 /* default, resolves addresses to all IP
                                      versions that your system allows */
      option might be handy to force libcurl to use a specific IP version. */
 #define CURL_IPRESOLVE_WHATEVER 0 /* default, resolves addresses to all IP
                                      versions that your system allows */
-#define CURL_IPRESOLVE_V4       1 /* resolve to ipv4 addresses */
-#define CURL_IPRESOLVE_V6       2 /* resolve to ipv6 addresses */
+#define CURL_IPRESOLVE_V4       1 /* resolve to IPv4 addresses */
+#define CURL_IPRESOLVE_V6       2 /* resolve to IPv6 addresses */
 
   /* three convenient "aliases" that follow the name scheme better */
 
   /* three convenient "aliases" that follow the name scheme better */
-#define CURLOPT_WRITEDATA CURLOPT_FILE
-#define CURLOPT_READDATA  CURLOPT_INFILE
-#define CURLOPT_HEADERDATA CURLOPT_WRITEHEADER
 #define CURLOPT_RTSPHEADER CURLOPT_HTTPHEADER
 
   /* These enums are for use with the CURLOPT_HTTP_VERSION option. */
 #define CURLOPT_RTSPHEADER CURLOPT_HTTPHEADER
 
   /* These enums are for use with the CURLOPT_HTTP_VERSION option. */
@@ -1603,6 +1671,7 @@ enum {
                              for us! */
   CURL_HTTP_VERSION_1_0,  /* please use HTTP 1.0 in the request */
   CURL_HTTP_VERSION_1_1,  /* please use HTTP 1.1 in the request */
                              for us! */
   CURL_HTTP_VERSION_1_0,  /* please use HTTP 1.0 in the request */
   CURL_HTTP_VERSION_1_1,  /* please use HTTP 1.1 in the request */
+  CURL_HTTP_VERSION_2_0,  /* please use HTTP 2.0 in the request */
 
   CURL_HTTP_VERSION_LAST /* *ILLEGAL* http version */
 };
 
   CURL_HTTP_VERSION_LAST /* *ILLEGAL* http version */
 };
@@ -1640,9 +1709,12 @@ enum CURL_NETRC_OPTION {
 
 enum {
   CURL_SSLVERSION_DEFAULT,
 
 enum {
   CURL_SSLVERSION_DEFAULT,
-  CURL_SSLVERSION_TLSv1,
+  CURL_SSLVERSION_TLSv1, /* TLS 1.x */
   CURL_SSLVERSION_SSLv2,
   CURL_SSLVERSION_SSLv3,
   CURL_SSLVERSION_SSLv2,
   CURL_SSLVERSION_SSLv3,
+  CURL_SSLVERSION_TLSv1_0,
+  CURL_SSLVERSION_TLSv1_1,
+  CURL_SSLVERSION_TLSv1_2,
 
   CURL_SSLVERSION_LAST /* never use, keep last */
 };
 
   CURL_SSLVERSION_LAST /* never use, keep last */
 };
@@ -1961,6 +2033,29 @@ struct curl_certinfo {
                                    format "name: value" */
 };
 
                                    format "name: value" */
 };
 
+/* enum for the different supported SSL backends */
+typedef enum {
+  CURLSSLBACKEND_NONE = 0,
+  CURLSSLBACKEND_OPENSSL = 1,
+  CURLSSLBACKEND_GNUTLS = 2,
+  CURLSSLBACKEND_NSS = 3,
+  CURLSSLBACKEND_OBSOLETE4 = 4,  /* Was QSOSSL. */
+  CURLSSLBACKEND_GSKIT = 5,
+  CURLSSLBACKEND_POLARSSL = 6,
+  CURLSSLBACKEND_CYASSL = 7,
+  CURLSSLBACKEND_SCHANNEL = 8,
+  CURLSSLBACKEND_DARWINSSL = 9,
+  CURLSSLBACKEND_AXTLS = 10
+} curl_sslbackend;
+
+/* Information about the SSL library used and the respective internal SSL
+   handle, which can be used to obtain further information regarding the
+   connection. Asked for with CURLINFO_TLS_SESSION. */
+struct curl_tlssessioninfo {
+  curl_sslbackend backend;
+  void *internals;
+};
+
 #define CURLINFO_STRING   0x100000
 #define CURLINFO_LONG     0x200000
 #define CURLINFO_DOUBLE   0x300000
 #define CURLINFO_STRING   0x100000
 #define CURLINFO_LONG     0x200000
 #define CURLINFO_DOUBLE   0x300000
@@ -2012,9 +2107,10 @@ typedef enum {
   CURLINFO_PRIMARY_PORT     = CURLINFO_LONG   + 40,
   CURLINFO_LOCAL_IP         = CURLINFO_STRING + 41,
   CURLINFO_LOCAL_PORT       = CURLINFO_LONG   + 42,
   CURLINFO_PRIMARY_PORT     = CURLINFO_LONG   + 40,
   CURLINFO_LOCAL_IP         = CURLINFO_STRING + 41,
   CURLINFO_LOCAL_PORT       = CURLINFO_LONG   + 42,
+  CURLINFO_TLS_SESSION      = CURLINFO_SLIST  + 43,
   /* Fill in new entries below here! */
 
   /* Fill in new entries below here! */
 
-  CURLINFO_LASTONE          = 42
+  CURLINFO_LASTONE          = 43
 } CURLINFO;
 
 /* CURLINFO_RESPONSE_CODE is the new name for the option previously known as
 } CURLINFO;
 
 /* CURLINFO_RESPONSE_CODE is the new name for the option previously known as
@@ -2150,22 +2246,30 @@ typedef struct {
 
 } curl_version_info_data;
 
 
 } curl_version_info_data;
 
-#define CURL_VERSION_IPV6      (1<<0)  /* IPv6-enabled */
-#define CURL_VERSION_KERBEROS4 (1<<1)  /* kerberos auth is supported */
-#define CURL_VERSION_SSL       (1<<2)  /* SSL options are present */
-#define CURL_VERSION_LIBZ      (1<<3)  /* libz features are present */
-#define CURL_VERSION_NTLM      (1<<4)  /* NTLM auth is supported */
-#define CURL_VERSION_GSSNEGOTIATE (1<<5) /* Negotiate auth support */
-#define CURL_VERSION_DEBUG     (1<<6)  /* built with debug capabilities */
-#define CURL_VERSION_ASYNCHDNS (1<<7)  /* asynchronous dns resolves */
-#define CURL_VERSION_SPNEGO    (1<<8)  /* SPNEGO auth */
-#define CURL_VERSION_LARGEFILE (1<<9)  /* supports files bigger than 2GB */
-#define CURL_VERSION_IDN       (1<<10) /* International Domain Names support */
-#define CURL_VERSION_SSPI      (1<<11) /* SSPI is supported */
-#define CURL_VERSION_CONV      (1<<12) /* character conversions supported */
-#define CURL_VERSION_CURLDEBUG (1<<13) /* debug memory tracking supported */
-#define CURL_VERSION_TLSAUTH_SRP (1<<14) /* TLS-SRP auth is supported */
-#define CURL_VERSION_NTLM_WB   (1<<15) /* NTLM delegating to winbind helper */
+#define CURL_VERSION_IPV6         (1<<0)  /* IPv6-enabled */
+#define CURL_VERSION_KERBEROS4    (1<<1)  /* Kerberos V4 auth is supported
+                                             (deprecated) */
+#define CURL_VERSION_SSL          (1<<2)  /* SSL options are present */
+#define CURL_VERSION_LIBZ         (1<<3)  /* libz features are present */
+#define CURL_VERSION_NTLM         (1<<4)  /* NTLM auth is supported */
+#define CURL_VERSION_GSSNEGOTIATE (1<<5)  /* Negotiate auth is supported
+                                             (deprecated) */
+#define CURL_VERSION_DEBUG        (1<<6)  /* Built with debug capabilities */
+#define CURL_VERSION_ASYNCHDNS    (1<<7)  /* Asynchronous DNS resolves */
+#define CURL_VERSION_SPNEGO       (1<<8)  /* SPNEGO auth is supported */
+#define CURL_VERSION_LARGEFILE    (1<<9)  /* Supports files larger than 2GB */
+#define CURL_VERSION_IDN          (1<<10) /* Internationized Domain Names are
+                                             supported */
+#define CURL_VERSION_SSPI         (1<<11) /* Built against Windows SSPI */
+#define CURL_VERSION_CONV         (1<<12) /* Character conversions supported */
+#define CURL_VERSION_CURLDEBUG    (1<<13) /* Debug memory tracking supported */
+#define CURL_VERSION_TLSAUTH_SRP  (1<<14) /* TLS-SRP auth is supported */
+#define CURL_VERSION_NTLM_WB      (1<<15) /* NTLM delegation to winbind helper
+                                             is suported */
+#define CURL_VERSION_HTTP2        (1<<16) /* HTTP2 support built-in */
+#define CURL_VERSION_GSSAPI       (1<<17) /* Built against a GSS-API library */
+#define CURL_VERSION_KERBEROS5    (1<<18) /* Kerberos V5 auth is supported */
+#define CURL_VERSION_UNIX_SOCKETS (1<<19) /* Unix domain sockets support */
 
  /*
  * NAME curl_version_info()
 
  /*
  * NAME curl_version_info()
index 3ad2f01..f09419a 100644 (file)
 
 #elif defined(__GNUC__)
 #  if defined(__ILP32__) || \
 
 #elif defined(__GNUC__)
 #  if defined(__ILP32__) || \
-      defined(__i386__) || defined(__ppc__) || defined(__arm__)
+      defined(__i386__) || defined(__ppc__) || defined(__arm__) || defined(__sparc__)
 #    define CURL_SIZEOF_LONG           4
 #    define CURL_TYPEOF_CURL_OFF_T     long long
 #    define CURL_FORMAT_CURL_OFF_T     "lld"
 #    define CURL_SIZEOF_LONG           4
 #    define CURL_TYPEOF_CURL_OFF_T     long long
 #    define CURL_FORMAT_CURL_OFF_T     "lld"
 #    define CURL_SUFFIX_CURL_OFF_T     LL
 #    define CURL_SUFFIX_CURL_OFF_TU    ULL
 #  elif defined(__LP64__) || \
 #    define CURL_SUFFIX_CURL_OFF_T     LL
 #    define CURL_SUFFIX_CURL_OFF_TU    ULL
 #  elif defined(__LP64__) || \
-        defined(__x86_64__) || defined(__ppc64__)
+        defined(__x86_64__) || defined(__ppc64__) || defined(__sparc64__)
 #    define CURL_SIZEOF_LONG           8
 #    define CURL_TYPEOF_CURL_OFF_T     long
 #    define CURL_FORMAT_CURL_OFF_T     "ld"
 #    define CURL_SIZEOF_LONG           8
 #    define CURL_TYPEOF_CURL_OFF_T     long
 #    define CURL_FORMAT_CURL_OFF_T     "ld"
index 3aa772f..60bc7a7 100644 (file)
 /* ================================================================ */
 
 #ifdef CURL_SIZEOF_LONG
 /* ================================================================ */
 
 #ifdef CURL_SIZEOF_LONG
-#  error "CURL_SIZEOF_LONG shall not be defined except in curlbuild.h"
+#error "CURL_SIZEOF_LONG shall not be defined except in curlbuild.h"
    Error Compilation_aborted_CURL_SIZEOF_LONG_already_defined
 #endif
 
 #ifdef CURL_TYPEOF_CURL_SOCKLEN_T
    Error Compilation_aborted_CURL_SIZEOF_LONG_already_defined
 #endif
 
 #ifdef CURL_TYPEOF_CURL_SOCKLEN_T
-#  error "CURL_TYPEOF_CURL_SOCKLEN_T shall not be defined except in curlbuild.h"
+#error "CURL_TYPEOF_CURL_SOCKLEN_T shall not be defined except in curlbuild.h"
    Error Compilation_aborted_CURL_TYPEOF_CURL_SOCKLEN_T_already_defined
 #endif
 
 #ifdef CURL_SIZEOF_CURL_SOCKLEN_T
    Error Compilation_aborted_CURL_TYPEOF_CURL_SOCKLEN_T_already_defined
 #endif
 
 #ifdef CURL_SIZEOF_CURL_SOCKLEN_T
-#  error "CURL_SIZEOF_CURL_SOCKLEN_T shall not be defined except in curlbuild.h"
+#error "CURL_SIZEOF_CURL_SOCKLEN_T shall not be defined except in curlbuild.h"
    Error Compilation_aborted_CURL_SIZEOF_CURL_SOCKLEN_T_already_defined
 #endif
    Error Compilation_aborted_CURL_SIZEOF_CURL_SOCKLEN_T_already_defined
 #endif
+
 #ifdef CURL_TYPEOF_CURL_OFF_T
 #ifdef CURL_TYPEOF_CURL_OFF_T
-#  error "CURL_TYPEOF_CURL_OFF_T shall not be defined except in curlbuild.h"
+#error "CURL_TYPEOF_CURL_OFF_T shall not be defined except in curlbuild.h"
    Error Compilation_aborted_CURL_TYPEOF_CURL_OFF_T_already_defined
 #endif
 
 #ifdef CURL_FORMAT_CURL_OFF_T
    Error Compilation_aborted_CURL_TYPEOF_CURL_OFF_T_already_defined
 #endif
 
 #ifdef CURL_FORMAT_CURL_OFF_T
-#  error "CURL_FORMAT_CURL_OFF_T shall not be defined except in curlbuild.h"
+#error "CURL_FORMAT_CURL_OFF_T shall not be defined except in curlbuild.h"
    Error Compilation_aborted_CURL_FORMAT_CURL_OFF_T_already_defined
 #endif
 
 #ifdef CURL_FORMAT_CURL_OFF_TU
    Error Compilation_aborted_CURL_FORMAT_CURL_OFF_T_already_defined
 #endif
 
 #ifdef CURL_FORMAT_CURL_OFF_TU
-#  error "CURL_FORMAT_CURL_OFF_TU shall not be defined except in curlbuild.h"
+#error "CURL_FORMAT_CURL_OFF_TU shall not be defined except in curlbuild.h"
    Error Compilation_aborted_CURL_FORMAT_CURL_OFF_TU_already_defined
 #endif
 
 #ifdef CURL_FORMAT_OFF_T
    Error Compilation_aborted_CURL_FORMAT_CURL_OFF_TU_already_defined
 #endif
 
 #ifdef CURL_FORMAT_OFF_T
-#  error "CURL_FORMAT_OFF_T shall not be defined except in curlbuild.h"
+#error "CURL_FORMAT_OFF_T shall not be defined except in curlbuild.h"
    Error Compilation_aborted_CURL_FORMAT_OFF_T_already_defined
 #endif
 
 #ifdef CURL_SIZEOF_CURL_OFF_T
    Error Compilation_aborted_CURL_FORMAT_OFF_T_already_defined
 #endif
 
 #ifdef CURL_SIZEOF_CURL_OFF_T
-#  error "CURL_SIZEOF_CURL_OFF_T shall not be defined except in curlbuild.h"
+#error "CURL_SIZEOF_CURL_OFF_T shall not be defined except in curlbuild.h"
    Error Compilation_aborted_CURL_SIZEOF_CURL_OFF_T_already_defined
 #endif
 
 #ifdef CURL_SUFFIX_CURL_OFF_T
    Error Compilation_aborted_CURL_SIZEOF_CURL_OFF_T_already_defined
 #endif
 
 #ifdef CURL_SUFFIX_CURL_OFF_T
-#  error "CURL_SUFFIX_CURL_OFF_T shall not be defined except in curlbuild.h"
+#error "CURL_SUFFIX_CURL_OFF_T shall not be defined except in curlbuild.h"
    Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_T_already_defined
 #endif
 
 #ifdef CURL_SUFFIX_CURL_OFF_TU
    Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_T_already_defined
 #endif
 
 #ifdef CURL_SUFFIX_CURL_OFF_TU
-#  error "CURL_SUFFIX_CURL_OFF_TU shall not be defined except in curlbuild.h"
+#error "CURL_SUFFIX_CURL_OFF_TU shall not be defined except in curlbuild.h"
    Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_TU_already_defined
 #endif
 
    Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_TU_already_defined
 #endif
 
 /*  EXTERNAL INTERFACE SETTINGS FOR CONFIGURE CAPABLE SYSTEMS ONLY  */
 /* ================================================================ */
 
 /*  EXTERNAL INTERFACE SETTINGS FOR CONFIGURE CAPABLE SYSTEMS ONLY  */
 /* ================================================================ */
 
+/* Configure process defines this to 1 when it finds out that system  */
+/* header file ws2tcpip.h must be included by the external interface. */
+#cmakedefine CURL_PULL_WS2TCPIP_H
+#ifdef CURL_PULL_WS2TCPIP_H
+#  ifndef WIN32_LEAN_AND_MEAN
+#    define WIN32_LEAN_AND_MEAN
+#  endif
+#  include <windows.h>
+#  include <winsock2.h>
+#  include <ws2tcpip.h>
+#endif
+
 /* Configure process defines this to 1 when it finds out that system   */
 /* header file sys/types.h must be included by the external interface. */
 /* Configure process defines this to 1 when it finds out that system   */
 /* header file sys/types.h must be included by the external interface. */
-#cmakedefine CURL_PULL_SYS_TYPES_H ${CURL_PULL_SYS_TYPES_H}
+#cmakedefine CURL_PULL_SYS_TYPES_H
 #ifdef CURL_PULL_SYS_TYPES_H
 #  include <sys/types.h>
 #endif
 
 /* Configure process defines this to 1 when it finds out that system */
 /* header file stdint.h must be included by the external interface.  */
 #ifdef CURL_PULL_SYS_TYPES_H
 #  include <sys/types.h>
 #endif
 
 /* Configure process defines this to 1 when it finds out that system */
 /* header file stdint.h must be included by the external interface.  */
-#cmakedefine CURL_PULL_STDINT_H ${CURL_PULL_STDINT_H}
+#cmakedefine CURL_PULL_STDINT_H
 #ifdef CURL_PULL_STDINT_H
 #  include <stdint.h>
 #endif
 
 /* Configure process defines this to 1 when it finds out that system  */
 /* header file inttypes.h must be included by the external interface. */
 #ifdef CURL_PULL_STDINT_H
 #  include <stdint.h>
 #endif
 
 /* Configure process defines this to 1 when it finds out that system  */
 /* header file inttypes.h must be included by the external interface. */
-#cmakedefine CURL_PULL_INTTYPES_H ${CURL_PULL_INTTYPES_H}
+#cmakedefine CURL_PULL_INTTYPES_H
 #ifdef CURL_PULL_INTTYPES_H
 #  include <inttypes.h>
 #endif
 
 #ifdef CURL_PULL_INTTYPES_H
 #  include <inttypes.h>
 #endif
 
+/* Configure process defines this to 1 when it finds out that system    */
+/* header file sys/socket.h must be included by the external interface. */
+#cmakedefine CURL_PULL_SYS_SOCKET_H
+#ifdef CURL_PULL_SYS_SOCKET_H
+#  include <sys/socket.h>
+#endif
+
+/* Configure process defines this to 1 when it finds out that system  */
+/* header file sys/poll.h must be included by the external interface. */
+#cmakedefine CURL_PULL_SYS_POLL_H
+#ifdef CURL_PULL_SYS_POLL_H
+#  include <sys/poll.h>
+#endif
+
 /* The size of `long', as computed by sizeof. */
 /* The size of `long', as computed by sizeof. */
-#cmakedefine CURL_SIZEOF_LONG ${CURL_SIZEOF_LONG}
+#define CURL_SIZEOF_LONG ${CURL_SIZEOF_LONG}
 
 /* Integral data type used for curl_socklen_t. */
 
 /* Integral data type used for curl_socklen_t. */
-#cmakedefine CURL_TYPEOF_CURL_SOCKLEN_T ${CURL_TYPEOF_CURL_SOCKLEN_T}
-
-/* on windows socklen_t is in here */
-#ifdef _WIN32
-#  include <winsock2.h>
-#  include <ws2tcpip.h>
-#endif
+#define CURL_TYPEOF_CURL_SOCKLEN_T ${CURL_TYPEOF_CURL_SOCKLEN_T}
 
 
-#ifdef HAVE_SYS_SOCKET_H
-#  include <sys/socket.h>
-#endif
+/* The size of `curl_socklen_t', as computed by sizeof. */
+#define CURL_SIZEOF_CURL_SOCKLEN_T ${CURL_SIZEOF_CURL_SOCKLEN_T}
 
 /* Data type definition of curl_socklen_t. */
 typedef CURL_TYPEOF_CURL_SOCKLEN_T curl_socklen_t;
 
 
 /* Data type definition of curl_socklen_t. */
 typedef CURL_TYPEOF_CURL_SOCKLEN_T curl_socklen_t;
 
-/* The size of `curl_socklen_t', as computed by sizeof. */
-#cmakedefine CURL_SIZEOF_CURL_SOCKLEN_T ${CURL_SIZEOF_CURL_SOCKLEN_T}
-
 /* Signed integral data type used for curl_off_t. */
 /* Signed integral data type used for curl_off_t. */
-#cmakedefine CURL_TYPEOF_CURL_OFF_T ${CURL_TYPEOF_CURL_OFF_T}
+#define CURL_TYPEOF_CURL_OFF_T ${CURL_TYPEOF_CURL_OFF_T}
 
 /* Data type definition of curl_off_t. */
 typedef CURL_TYPEOF_CURL_OFF_T curl_off_t;
 
 /* curl_off_t formatting string directive without "%" conversion specifier. */
 
 /* Data type definition of curl_off_t. */
 typedef CURL_TYPEOF_CURL_OFF_T curl_off_t;
 
 /* curl_off_t formatting string directive without "%" conversion specifier. */
-#cmakedefine CURL_FORMAT_CURL_OFF_T "${CURL_FORMAT_CURL_OFF_T}"
+#define CURL_FORMAT_CURL_OFF_T "${CURL_FORMAT_CURL_OFF_T}"
 
 /* unsigned curl_off_t formatting string without "%" conversion specifier. */
 
 /* unsigned curl_off_t formatting string without "%" conversion specifier. */
-#cmakedefine CURL_FORMAT_CURL_OFF_TU "${CURL_FORMAT_CURL_OFF_TU}"
+#define CURL_FORMAT_CURL_OFF_TU "${CURL_FORMAT_CURL_OFF_TU}"
 
 /* curl_off_t formatting string directive with "%" conversion specifier. */
 
 /* curl_off_t formatting string directive with "%" conversion specifier. */
-#cmakedefine CURL_FORMAT_OFF_T "${CURL_FORMAT_OFF_T}"
+#define CURL_FORMAT_OFF_T "${CURL_FORMAT_OFF_T}"
 
 /* The size of `curl_off_t', as computed by sizeof. */
 
 /* The size of `curl_off_t', as computed by sizeof. */
-#cmakedefine CURL_SIZEOF_CURL_OFF_T ${CURL_SIZEOF_CURL_OFF_T}
+#define CURL_SIZEOF_CURL_OFF_T ${CURL_SIZEOF_CURL_OFF_T}
 
 /* curl_off_t constant suffix. */
 
 /* curl_off_t constant suffix. */
-#cmakedefine CURL_SUFFIX_CURL_OFF_T ${CURL_SUFFIX_CURL_OFF_T}
+#define CURL_SUFFIX_CURL_OFF_T ${CURL_SUFFIX_CURL_OFF_T}
 
 /* unsigned curl_off_t constant suffix. */
 
 /* unsigned curl_off_t constant suffix. */
-#cmakedefine CURL_SUFFIX_CURL_OFF_TU ${CURL_SUFFIX_CURL_OFF_TU}
+#define CURL_SUFFIX_CURL_OFF_TU ${CURL_SUFFIX_CURL_OFF_TU}
 
 #endif /* __CURL_CURLBUILD_H */
 
 #endif /* __CURL_CURLBUILD_H */
index c2be02c..ccdafc1 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
    a script at release-time. This was made its own header file in 7.11.2 */
 
 /* This is the global package copyright */
    a script at release-time. This was made its own header file in 7.11.2 */
 
 /* This is the global package copyright */
-#define LIBCURL_COPYRIGHT "1996 - 2013 Daniel Stenberg, <daniel@haxx.se>."
+#define LIBCURL_COPYRIGHT "1996 - 2015 Daniel Stenberg, <daniel@haxx.se>."
 
 /* This is the version number of the libcurl package from which this header
    file origins: */
 
 /* This is the version number of the libcurl package from which this header
    file origins: */
-#define LIBCURL_VERSION "7.32.0"
+#define LIBCURL_VERSION "7.40.0"
 
 /* The numeric version number is also available "in parts" by using these
    defines: */
 #define LIBCURL_VERSION_MAJOR 7
 
 /* The numeric version number is also available "in parts" by using these
    defines: */
 #define LIBCURL_VERSION_MAJOR 7
-#define LIBCURL_VERSION_MINOR 32
+#define LIBCURL_VERSION_MINOR 40
 #define LIBCURL_VERSION_PATCH 0
 
 /* This is the numeric version of the libcurl version number, meant for easier
 #define LIBCURL_VERSION_PATCH 0
 
 /* This is the numeric version of the libcurl version number, meant for easier
@@ -53,7 +53,7 @@
    and it is always a greater number in a more recent release. It makes
    comparisons with greater than and less than work.
 */
    and it is always a greater number in a more recent release. It makes
    comparisons with greater than and less than work.
 */
-#define LIBCURL_VERSION_NUM 0x072000
+#define LIBCURL_VERSION_NUM 0x072800
 
 /*
  * This is the date and time when the full source package was created. The
 
 /*
  * This is the date and time when the full source package was created. The
@@ -64,6 +64,6 @@
  *
  * "Mon Feb 12 11:35:33 UTC 2007"
  */
  *
  * "Mon Feb 12 11:35:33 UTC 2007"
  */
-#define LIBCURL_TIMESTAMP "Sun Aug 11 22:15:54 UTC 2013"
+#define LIBCURL_TIMESTAMP "Thu Jan  8 08:17:17 UTC 2015"
 
 #endif /* __CURL_CURLVER_H */
 
 #endif /* __CURL_CURLVER_H */
index a5eb3c6..3c4acb0 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -64,6 +64,8 @@ typedef enum {
   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_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_LAST
 } CURLMcode;
 
   CURLM_LAST
 } CURLMcode;
 
index f8917e8..69d41a2 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -264,6 +264,12 @@ _CURL_WARNING(_curl_easy_getinfo_err_curl_slist,
    (option) == CURLOPT_RTSP_SESSION_ID ||                                     \
    (option) == CURLOPT_RTSP_STREAM_URI ||                                     \
    (option) == CURLOPT_RTSP_TRANSPORT ||                                      \
    (option) == CURLOPT_RTSP_SESSION_ID ||                                     \
    (option) == CURLOPT_RTSP_STREAM_URI ||                                     \
    (option) == CURLOPT_RTSP_TRANSPORT ||                                      \
+   (option) == CURLOPT_XOAUTH2_BEARER ||                                      \
+   (option) == CURLOPT_DNS_SERVERS ||                                         \
+   (option) == CURLOPT_DNS_INTERFACE ||                                       \
+   (option) == CURLOPT_DNS_LOCAL_IP4 ||                                       \
+   (option) == CURLOPT_DNS_LOCAL_IP6 ||                                       \
+   (option) == CURLOPT_LOGIN_OPTIONS ||                                       \
    0)
 
 /* evaluates to true if option takes a curl_write_callback argument */
    0)
 
 /* evaluates to true if option takes a curl_write_callback argument */
@@ -285,7 +291,7 @@ _CURL_WARNING(_curl_easy_getinfo_err_curl_slist,
    (option) == CURLOPT_SOCKOPTDATA ||                                         \
    (option) == CURLOPT_OPENSOCKETDATA ||                                      \
    (option) == CURLOPT_PROGRESSDATA ||                                        \
    (option) == CURLOPT_SOCKOPTDATA ||                                         \
    (option) == CURLOPT_OPENSOCKETDATA ||                                      \
    (option) == CURLOPT_PROGRESSDATA ||                                        \
-   (option) == CURLOPT_WRITEHEADER ||                                         \
+   (option) == CURLOPT_HEADERDATA ||                                         \
    (option) == CURLOPT_DEBUGDATA ||                                           \
    (option) == CURLOPT_SSL_CTX_DATA ||                                        \
    (option) == CURLOPT_SEEKDATA ||                                            \
    (option) == CURLOPT_DEBUGDATA ||                                           \
    (option) == CURLOPT_SSL_CTX_DATA ||                                        \
    (option) == CURLOPT_SEEKDATA ||                                            \
index a9244eb..377bb86 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
 # install - install a program, script, or datafile
 
 #!/bin/sh
 # install - install a program, script, or datafile
 
-scriptversion=2011-01-19.21; # UTC
+scriptversion=2011-11-20.07; # UTC
 
 # This originates from X11R5 (mit/util/scripts/install.sh), which was
 # later released in X11R6 (xc/config/util/install.sh) with the
 
 # This originates from X11R5 (mit/util/scripts/install.sh), which was
 # later released in X11R6 (xc/config/util/install.sh) with the
@@ -35,7 +35,7 @@ scriptversion=2011-01-19.21; # UTC
 # FSF changes to this file are in the public domain.
 #
 # Calling this script install-sh is preferred over install.sh, to prevent
 # FSF changes to this file are in the public domain.
 #
 # Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
+# 'make' implicit rules from creating a file called install from it
 # when there is no Makefile.
 #
 # This script is compatible with the BSD install script, but was written
 # when there is no Makefile.
 #
 # This script is compatible with the BSD install script, but was written
@@ -156,7 +156,7 @@ while test $# -ne 0; do
     -s) stripcmd=$stripprog;;
 
     -t) dst_arg=$2
     -s) stripcmd=$stripprog;;
 
     -t) dst_arg=$2
-       # Protect names problematic for `test' and other utilities.
+       # Protect names problematic for 'test' and other utilities.
        case $dst_arg in
          -* | [=\(\)!]) dst_arg=./$dst_arg;;
        esac
        case $dst_arg in
          -* | [=\(\)!]) dst_arg=./$dst_arg;;
        esac
@@ -190,7 +190,7 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
     fi
     shift # arg
     dst_arg=$arg
     fi
     shift # arg
     dst_arg=$arg
-    # Protect names problematic for `test' and other utilities.
+    # Protect names problematic for 'test' and other utilities.
     case $dst_arg in
       -* | [=\(\)!]) dst_arg=./$dst_arg;;
     esac
     case $dst_arg in
       -* | [=\(\)!]) dst_arg=./$dst_arg;;
     esac
@@ -202,7 +202,7 @@ if test $# -eq 0; then
     echo "$0: no input file specified." >&2
     exit 1
   fi
     echo "$0: no input file specified." >&2
     exit 1
   fi
-  # It's OK to call `install-sh -d' without argument.
+  # It's OK to call 'install-sh -d' without argument.
   # This can happen when creating conditional directories.
   exit 0
 fi
   # This can happen when creating conditional directories.
   exit 0
 fi
@@ -240,7 +240,7 @@ fi
 
 for src
 do
 
 for src
 do
-  # Protect names problematic for `test' and other utilities.
+  # Protect names problematic for 'test' and other utilities.
   case $src in
     -* | [=\(\)!]) src=./$src;;
   esac
   case $src in
     -* | [=\(\)!]) src=./$src;;
   esac
@@ -354,7 +354,7 @@ do
              if test -z "$dir_arg" || {
                   # Check for POSIX incompatibilities with -m.
                   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
              if test -z "$dir_arg" || {
                   # Check for POSIX incompatibilities with -m.
                   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
-                  # other-writeable bit of parent directory when it shouldn't.
+                  # other-writable bit of parent directory when it shouldn't.
                   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
                   ls_ld_tmpdir=`ls -ld "$tmpdir"`
                   case $ls_ld_tmpdir in
                   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
                   ls_ld_tmpdir=`ls -ld "$tmpdir"`
                   case $ls_ld_tmpdir in
index b2bcf09..e7886ac 100644 (file)
@@ -48,25 +48,6 @@ endif()
 # )
 # ENDIF(NOT HAVE_STRTOLL AND NOT HAVE__STRTOI64)
 
 # )
 # ENDIF(NOT HAVE_STRTOLL AND NOT HAVE__STRTOI64)
 
-if(HAVE_FEATURES_H)
-  set_source_files_properties(
-    cookie.c
-    easy.c
-    formdata.c
-    getenv.c
-    nonblock.c
-    hash.c
-    http.c
-    if2ip.c
-    mprintf.c
-    multi.c
-    sendf.c
-    telnet.c
-    transfer.c
-    url.c
-    COMPILE_FLAGS -D_BSD_SOURCE)
-endif(HAVE_FEATURES_H)
-
 
 # The rest of the build
 
 
 # The rest of the build
 
@@ -76,7 +57,7 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../include)
 include_directories(${CMAKE_CURRENT_BINARY_DIR}/..)
 include_directories(${CMAKE_CURRENT_SOURCE_DIR})
 include_directories(${CMAKE_CURRENT_BINARY_DIR})
 include_directories(${CMAKE_CURRENT_BINARY_DIR}/..)
 include_directories(${CMAKE_CURRENT_SOURCE_DIR})
 include_directories(${CMAKE_CURRENT_BINARY_DIR})
-if(CURL_USE_ARES)
+if(USE_ARES)
   include_directories(${CARES_INCLUDE_DIR})
 endif()
 
   include_directories(${CARES_INCLUDE_DIR})
 endif()
 
@@ -106,8 +87,6 @@ endif()
 
 set_target_properties(${LIB_NAME} PROPERTIES COMPILE_DEFINITIONS BUILDING_LIBCURL)
 
 
 set_target_properties(${LIB_NAME} PROPERTIES COMPILE_DEFINITIONS BUILDING_LIBCURL)
 
-setup_curl_dependencies(${LIB_NAME})
-
 # Remove the "lib" prefix since the library is already named "libcurl".
 set_target_properties(${LIB_NAME} PROPERTIES PREFIX "")
 set_target_properties(${LIB_NAME} PROPERTIES IMPORT_PREFIX "")
 # Remove the "lib" prefix since the library is already named "libcurl".
 set_target_properties(${LIB_NAME} PROPERTIES PREFIX "")
 set_target_properties(${LIB_NAME} PROPERTIES IMPORT_PREFIX "")
index b775365..14f5ac8 100644 (file)
@@ -3,16 +3,31 @@
 #  G. Vanem <gvanem@broadpark.no>
 #
 
 #  G. Vanem <gvanem@broadpark.no>
 #
 
+.ERASE
+
+!if $(__VERSION__) < 1280
+!message !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!message ! This Open Watcom version is too old and is no longer supported !
+!message !     Please download latest version from www.openwatcom.org     !
+!message !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!error Unsupported version of Open Watcom
+!endif
+
 !ifndef %watcom
 !error WATCOM environment variable not set!
 !endif
 
 !ifndef %watcom
 !error WATCOM environment variable not set!
 !endif
 
+# In order to process Makefile.inc wmake must be called with -u switch!
+!ifndef %MAKEFLAGS
+!error You MUST call wmake with the -u switch!
+!endif
+
 !ifdef %libname
 LIBNAME = $(%libname)
 !else
 LIBNAME = libcurl
 !endif
 !ifdef %libname
 LIBNAME = $(%libname)
 !else
 LIBNAME = libcurl
 !endif
-TARGETS = $(LIBNAME).dll $(LIBNAME)_imp.lib $(LIBNAME).lib
+TARGETS = $(LIBNAME).dll $(LIBNAME).lib
 
 CC = wcc386
 LD = wlink
 
 CC = wcc386
 LD = wlink
@@ -23,37 +38,29 @@ RC = wrc
 !  loaddll wcc386  wccd386
 !  loaddll wpp386  wppd386
 !  loaddll wlib    wlibd
 !  loaddll wcc386  wccd386
 !  loaddll wpp386  wppd386
 !  loaddll wlib    wlibd
-!  if $(__VERSION__) > 1270
-!    loaddll wlink   wlinkd
-!  else
-!    loaddll wlink   wlink
-!  endif
+!  loaddll wlink   wlinkd
 !endif
 
 !ifdef __LINUX__
 !endif
 
 !ifdef __LINUX__
-DS = /
 CP = cp
 MD = mkdir -p
 CP = cp
 MD = mkdir -p
-RD = rmdir -p
-RM = rm -f
 !else
 !else
-DS = $(X)\$(X)
 CP = copy 2>NUL
 MD = mkdir
 CP = copy 2>NUL
 MD = mkdir
-RD = rmdir /q /s 2>NUL
-!if $(__VERSION__) < 1250
-RM = del /q /f 2>NUL
-!else
-RM = rm -f
 !endif
 !endif
+!if $(__VERSION__) > 1290
+RD = rm -rf
+!else ifdef __UNIX__
+RD = rm -rf
+!else
+RD = rmdir /q /s 2>NUL
 !endif
 
 !endif
 
-SYS_INCL = -I$(%watcom)$(DS)h$(DS)nt -I$(%watcom)$(DS)h
-SYS_LIBS = $(%watcom)$(DS)lib386$(DS)nt;$(%watcom)$(DS)lib386
+SYS_INCL = -I"$(%watcom)/h/nt" -I"$(%watcom)/h"
 
 CFLAGS = -3r -mf -hc -zff -zgf -zq -zm -zc -s -fr=con -w2 -fpi -oilrtfm &
          -wcd=201 -bt=nt -d+ -dWIN32 -dCURL_WANTS_CA_BUNDLE_ENV         &
 
 CFLAGS = -3r -mf -hc -zff -zgf -zq -zm -zc -s -fr=con -w2 -fpi -oilrtfm &
          -wcd=201 -bt=nt -d+ -dWIN32 -dCURL_WANTS_CA_BUNDLE_ENV         &
-         -dBUILDING_LIBCURL -dHAVE_SPNEGO=1 -I. -I..$(DS)include $(SYS_INCL)
+         -dBUILDING_LIBCURL -I. -I"../include" $(SYS_INCL)
 
 !ifdef %debug
 DEBUG  = -dDEBUG=1 -dDEBUGBUILD
 
 !ifdef %debug
 DEBUG  = -dDEBUG=1 -dDEBUGBUILD
@@ -70,6 +77,11 @@ CFLAGS += -d_WIN32_WINNT=0x0501 -dENABLE_IPV6
 CFLAGS += -dUSE_WINDOWS_SSPI
 !endif
 
 CFLAGS += -dUSE_WINDOWS_SSPI
 !endif
 
+!ifdef %use_winssl
+CFLAGS += -dUSE_WINDOWS_SSPI
+CFLAGS += -DUSE_SCHANNEL
+!endif
+
 !ifdef %use_winidn
 CFLAGS += -dWINVER=0x0600 -dUSE_WIN32_IDN
 !  if $(__VERSION__) <= 1290
 !ifdef %use_winidn
 CFLAGS += -dWINVER=0x0600 -dUSE_WIN32_IDN
 !  if $(__VERSION__) <= 1290
@@ -83,169 +95,162 @@ CFLAGS += -dWANT_IDN_PROTOTYPES
 !ifdef %zlib_root
 ZLIB_ROOT = $(%zlib_root)
 !else
 !ifdef %zlib_root
 ZLIB_ROOT = $(%zlib_root)
 !else
-ZLIB_ROOT = ..$(DS)..$(DS)zlib-1.2.8
+ZLIB_ROOT = ../../zlib-1.2.8
 !endif
 
 !ifdef %libssh2_root
 LIBSSH2_ROOT = $(%libssh2_root)
 !else
 !endif
 
 !ifdef %libssh2_root
 LIBSSH2_ROOT = $(%libssh2_root)
 !else
-LIBSSH2_ROOT = ..$(DS)..$(DS)libssh2-1.4.3
+LIBSSH2_ROOT = ../../libssh2-1.4.3
 !endif
 
 !ifdef %librtmp_root
 LIBRTMP_ROOT = $(%librtmp_root)
 !else
 !endif
 
 !ifdef %librtmp_root
 LIBRTMP_ROOT = $(%librtmp_root)
 !else
-LIBRTMP_ROOT = ..$(DS)..$(DS)rtmpdump-2.3
+LIBRTMP_ROOT = ../../rtmpdump-2.3
 !endif
 
 !ifdef %openssl_root
 OPENSSL_ROOT = $(%openssl_root)
 !else
 !endif
 
 !ifdef %openssl_root
 OPENSSL_ROOT = $(%openssl_root)
 !else
-OPENSSL_ROOT = ..$(DS)..$(DS)openssl-0.9.8y
+OPENSSL_ROOT = ../../openssl-0.9.8zc
 !endif
 
 !ifdef %ares_root
 ARES_ROOT = $(%ares_root)
 !else
 !endif
 
 !ifdef %ares_root
 ARES_ROOT = $(%ares_root)
 !else
-ARES_ROOT = ..$(DS)ares
+ARES_ROOT = ../ares
 !endif
 
 !ifdef %use_zlib
 !endif
 
 !ifdef %use_zlib
-CFLAGS += -dHAVE_ZLIB_H -dHAVE_LIBZ -I$(ZLIB_ROOT)
+CFLAGS += -dHAVE_ZLIB_H -dHAVE_LIBZ -I"$(ZLIB_ROOT)"
 !endif
 
 !ifdef %use_rtmp
 !endif
 
 !ifdef %use_rtmp
-CFLAGS += -dUSE_LIBRTMP -I$(LIBRTMP_ROOT)
+CFLAGS += -dUSE_LIBRTMP -I"$(LIBRTMP_ROOT)"
 !endif
 
 !ifdef %use_ssh2
 !endif
 
 !ifdef %use_ssh2
-CFLAGS += -DUSE_LIBSSH2 -DHAVE_LIBSSH2_H -I$(LIBSSH2_ROOT)$(DS)include -I$(LIBSSH2_ROOT)$(DS)win32
+CFLAGS += -DUSE_LIBSSH2 -DHAVE_LIBSSH2_H -I"$(LIBSSH2_ROOT)/include" -I"$(LIBSSH2_ROOT)/win32"
 !endif
 
 !ifdef %use_ssl
 !endif
 
 !ifdef %use_ssl
-CFLAGS += -wcd=138 -dUSE_OPENSSL -dUSE_SSLEAY -I$(OPENSSL_ROOT)$(DS)inc32
+CFLAGS += -wcd=138 -dUSE_OPENSSL -dUSE_SSLEAY -I"$(OPENSSL_ROOT)/inc32"
 !endif
 
 !ifdef %use_ares
 !endif
 
 !ifdef %use_ares
-CFLAGS += -dUSE_ARES -I$(ARES_ROOT)
+CFLAGS += -dUSE_ARES -I"$(ARES_ROOT)"
 !endif
 
 !ifdef %use_watt32
 !endif
 
 !ifdef %use_watt32
-CFLAGS += -dUSE_WATT32 -I$(%watt_root)$(DS)inc
+CFLAGS += -dUSE_WATT32 -I"$(%watt_root)/inc"
 !endif
 
 OBJ_BASE = WC_Win32.obj
 !endif
 
 OBJ_BASE = WC_Win32.obj
-LINK_ARG = $(OBJ_BASE)$(DS)dyn$(DS)wlink.arg
-LIB_ARG  = $(OBJ_BASE)$(DS)stat$(DS)wlib.arg
-
-# In order to process Makefile.inc wmake must be called with -u switch!
-!ifndef %MAKEFLAGS
-!error You MUST call wmake with the -u switch!
+!if $(__VERSION__) > 1290
+OBJ_STAT = $(OBJ_BASE)/stat
+OBJ_DYN  = $(OBJ_BASE)/dyn
+!else ifdef __UNIX__
+OBJ_STAT = $(OBJ_BASE)/stat
+OBJ_DYN  = $(OBJ_BASE)/dyn
 !else
 !else
-!include Makefile.inc
+OBJ_STAT = $(OBJ_BASE)\stat
+OBJ_DYN  = $(OBJ_BASE)\dyn
 !endif
 
 !endif
 
-OBJS = $(CSOURCES:.c=.obj)
-!ifdef __LINUX__
-OBJS = $OBJ_DIR/$(OBJS: = $OBJ_DIR/)
+LINK_ARG = $(OBJ_DYN)/wlink.arg
+LIB_ARG  = $(OBJ_STAT)/wlib.arg
 
 
-!else
-OBJS = $OBJ_DIR\$(OBJS: = $OBJ_DIR\)
-!endif
+!include Makefile.inc
 
 
-#
-# Use $(OBJS) as a template to generate $(OBJS_STAT) and $(OBJS_DYN).
-#
-OBJ_DIR    = $(OBJ_BASE)$(DS)stat
-OBJS_STAT  = $+ $(OBJS) $-
+OBJS1 = ./$(CSOURCES:.c=.obj)
+OBJS2 = $(OBJS1:vtls/=)
+OBJS3 = $(OBJS2: = ./)
+OBJS_STAT = $(OBJS3:./=$(OBJ_STAT)/)
+OBJS_DYN  = $(OBJS3:./=$(OBJ_DYN)/)
 
 
-OBJ_DIR    = $(OBJ_BASE)$(DS)dyn
-OBJS_DYN   = $+ $(OBJS) $-
+CURLBUILDH = ../include/curl/curlbuild.h
+RESOURCE   = $(OBJ_DYN)/libcurl.res
 
 
-CURLBUILDH = ..$(DS)include$(DS)curl$(DS)curlbuild.h
-RESOURCE   = $(OBJ_BASE)$(DS)dyn$(DS)libcurl.res
+DIRS = $(OBJ_BASE) $(OBJ_BASE)/stat $(OBJ_BASE)/dyn
 
 
-all: $(CURLBUILDH) $(OBJ_BASE) $(TARGETS) .SYMBOLIC
+.c : vtls
+
+all: $(CURLBUILDH) $(DIRS) $(TARGETS) .SYMBOLIC
        @echo Welcome to libcurl
 
 clean: .SYMBOLIC
        @echo Welcome to libcurl
 
 clean: .SYMBOLIC
-       -$(RM) $(OBJS_STAT)
-       -$(RM) $(OBJS_DYN)
-       -$(RM) $(RESOURCE) $(LINK_ARG) $(LIB_ARG)
+       -rm -f $(OBJS_STAT)
+       -rm -f $(OBJS_DYN)
+       -rm -f $(RESOURCE) $(LINK_ARG) $(LIB_ARG)
 
 vclean distclean: clean .SYMBOLIC
 
 vclean distclean: clean .SYMBOLIC
-       -$(RM) $(TARGETS) $(LIBNAME).map $(LIBNAME).sym
-       -$(RD) $(OBJ_BASE)$(DS)stat
-       -$(RD) $(OBJ_BASE)$(DS)dyn
+       -rm -f $(TARGETS) $(LIBNAME).map $(LIBNAME).sym
+       -$(RD) $(OBJ_STAT)
+       -$(RD) $(OBJ_DYN)
        -$(RD) $(OBJ_BASE)
 
        -$(RD) $(OBJ_BASE)
 
-$(OBJ_BASE):
+$(DIRS):
        -$(MD) $^@
        -$(MD) $^@
-       -$(MD) $^@$(DS)stat
-       -$(MD) $^@$(DS)dyn
 
 $(CURLBUILDH): .EXISTSONLY
        $(CP) $^@.dist $^@
 
 
 $(CURLBUILDH): .EXISTSONLY
        $(CP) $^@.dist $^@
 
-$(LIBNAME).dll: $(OBJS_DYN) $(RESOURCE) $(LINK_ARG)
-       $(LD) name $^@ @$]@
-
-$(LIBNAME).lib: $(OBJS_STAT) $(LIB_ARG)
-       $(AR) -q -b -c $^@ @$]@
-
-.ERASE
-$(RESOURCE): libcurl.rc
-       $(RC) $(DEBUG) -q -r -zm -bt=nt -I..$(DS)include $(SYS_INCL) $[@ -fo=$^@
-
-.ERASE
-.c{$(OBJ_BASE)$(DS)dyn}.obj:
-       $(CC) $(CFLAGS) -bd -br $[@ -fo=$^@
-
-.ERASE
-.c{$(OBJ_BASE)$(DS)stat}.obj:
-       $(CC) $(CFLAGS) -DCURL_STATICLIB $[@ -fo=$^@
-
-$(LINK_ARG): $(__MAKEFILES__)
-       %create $^@
-       @%append $^@ system nt dll
-       @%append $^@ file { $(OBJS_DYN) }
+$(LIBNAME).dll: $(OBJS_DYN) $(RESOURCE) $(__MAKEFILES__)
+       %create $(LINK_ARG)
+       @%append $(LINK_ARG) system nt dll
 !ifdef %debug
 !ifdef %debug
-       @%append $^@ debug all
-       @%append $^@ option symfile
+       @%append $(LINK_ARG) debug all
+       @%append $(LINK_ARG) option symfile
 !endif
 !endif
-       @%append $^@ option quiet, map, caseexact, eliminate, implib=$(LIBNAME)_imp.lib,
-       @%append $^@ res=$(RESOURCE) libpath $(SYS_LIBS)
-       @%append $^@ library wldap32.lib
+       @%append $(LINK_ARG) option quiet, caseexact, eliminate
+       @%append $(LINK_ARG) option map=$(OBJ_DYN)/$(LIBNAME).map
+       @%append $(LINK_ARG) option implib=$(LIBNAME)_imp.lib
+       @%append $(LINK_ARG) option res=$(RESOURCE)
+       @for %f in ($(OBJS_DYN)) do @%append $(LINK_ARG) file %f
+       @%append $(LINK_ARG) library wldap32.lib
 !ifdef %use_watt32
 !ifdef %use_watt32
-       @%append $^@ library $(%watt_root)$(DS)lib$(DS)wattcpw_imp.lib
+       @%append $(LINK_ARG) library '$(%watt_root)/lib/wattcpw_imp.lib'
 !else
 !else
-       @%append $^@ library ws2_32.lib
+       @%append $(LINK_ARG) library ws2_32.lib
 !endif
 !ifdef %use_zlib
 !endif
 !ifdef %use_zlib
-       @%append $^@ library $(ZLIB_ROOT)$(DS)zlib.lib
+       @%append $(LINK_ARG) library '$(ZLIB_ROOT)/zlib.lib'
 !endif
 !ifdef %use_rtmp
 !endif
 !ifdef %use_rtmp
-       @%append $^@ library $(LIBRTMP_ROOT)$(DS)librtmp$(DS)librtmp.lib
+       @%append $(LINK_ARG) library '$(LIBRTMP_ROOT)/librtmp/librtmp.lib'
 !endif
 !ifdef %use_ssh2
 !endif
 !ifdef %use_ssh2
-       @%append $^@ library $(LIBSSH2_ROOT)$(DS)win32$(DS)libssh2.lib
+       @%append $(LINK_ARG) library '$(LIBSSH2_ROOT)/win32/libssh2.lib'
 !endif
 !ifdef %use_ssl
 !endif
 !ifdef %use_ssl
-       @%append $^@ library $(OPENSSL_ROOT)$(DS)out32$(DS)libeay32.lib, $(OPENSSL_ROOT)$(DS)out32$(DS)ssleay32.lib
+       @%append $(LINK_ARG) library '$(OPENSSL_ROOT)/out32/libeay32.lib'
+       @%append $(LINK_ARG) library '$(OPENSSL_ROOT)/out32/ssleay32.lib'
 !endif
 !ifdef %use_ares
 !endif
 !ifdef %use_ares
-       @%append $^@ library $(ARES_ROOT)$(DS)cares.lib
+       @%append $(LINK_ARG) library '$(ARES_ROOT)/cares.lib'
 !endif
 !ifdef %use_winidn
 !  if $(__VERSION__) > 1290
 !endif
 !ifdef %use_winidn
 !  if $(__VERSION__) > 1290
-       @%append $^@ library normaliz.lib
+       @%append $(LINK_ARG) library normaliz.lib
 !  else
 !  else
-       @%append $^@ import '_IdnToAscii@20' 'NORMALIZ.DLL'.'IdnToAscii'
-       @%append $^@ import '_IdnToUnicode@20' 'NORMALIZ.DLL'.'IdnToUnicode'
+       @%append $(LINK_ARG) import '_IdnToAscii@20' 'NORMALIZ.DLL'.'IdnToAscii'
+       @%append $(LINK_ARG) import '_IdnToUnicode@20' 'NORMALIZ.DLL'.'IdnToUnicode'
 !  endif
 !endif
 !  endif
 !endif
+       $(LD) name $^@ @$(LINK_ARG)
 
 
-$(LIB_ARG): $(__MAKEFILES__)
-       %create $^@
-       @for %f in ($(OBJS_STAT)) do @%append $^@ +- %f
+$(LIBNAME).lib: $(OBJS_STAT)
+       %create $(LIB_ARG)
+       @for %f in ($<) do @%append $(LIB_ARG) +- %f
+       $(AR) -q -b -c -pa $^@ @$(LIB_ARG)
 
 
+$(RESOURCE): libcurl.rc
+       $(RC) $(DEBUG) -q -r -zm -bt=nt -I"../include" $(SYS_INCL) $[@ -fo=$^@
+
+.c{$(OBJ_DYN)}.obj:
+       $(CC) $(CFLAGS) -bd -br $[@ -fo=$^@
+
+.c{$(OBJ_STAT)}.obj:
+       $(CC) $(CFLAGS) -DCURL_STATICLIB $[@ -fo=$^@
+       
index 4477cc2..6dffbd9 100644 (file)
@@ -60,20 +60,15 @@ CFLAGS += @CURL_CFLAG_EXTRAS@
 # $(top_builddir)/ares is for in-tree c-ares's generated ares_build.h file
 # $(top_srcdir)/ares is for in-tree c-ares's external include files
 
 # $(top_builddir)/ares is for in-tree c-ares's generated ares_build.h file
 # $(top_srcdir)/ares is for in-tree c-ares's external include files
 
-if USE_EMBEDDED_ARES
-AM_CPPFLAGS = -I$(top_builddir)/include/curl \
-              -I$(top_builddir)/include      \
-              -I$(top_srcdir)/include        \
-              -I$(top_builddir)/lib          \
-              -I$(top_srcdir)/lib            \
-              -I$(top_builddir)/ares         \
-              -I$(top_srcdir)/ares
-else
 AM_CPPFLAGS = -I$(top_builddir)/include/curl \
               -I$(top_builddir)/include      \
               -I$(top_srcdir)/include        \
               -I$(top_builddir)/lib          \
               -I$(top_srcdir)/lib
 AM_CPPFLAGS = -I$(top_builddir)/include/curl \
               -I$(top_builddir)/include      \
               -I$(top_srcdir)/include        \
               -I$(top_builddir)/lib          \
               -I$(top_srcdir)/lib
+
+if USE_EMBEDDED_ARES
+AM_CPPFLAGS += -I$(top_builddir)/ares        \
+               -I$(top_srcdir)/ares
 endif
 
 # Prevent LIBS from being used for all link targets
 endif
 
 # Prevent LIBS from being used for all link targets
index 7dbb37f..b9531fd 100644 (file)
@@ -27,7 +27,7 @@ ZLIB_PATH = ..\..\zlib-1.2.8
 
 # Edit the path below to point to the base of your OpenSSL package.
 !ifndef OPENSSL_PATH
 
 # Edit the path below to point to the base of your OpenSSL package.
 !ifndef OPENSSL_PATH
-OPENSSL_PATH = ..\..\openssl-0.9.8y
+OPENSSL_PATH = ..\..\openssl-0.9.8zc
 !endif
 
 # Set libcurl static lib, dll and import lib
 !endif
 
 # Set libcurl static lib, dll and import lib
@@ -49,9 +49,9 @@ CC_FLAGS = -5 -O2 -tWM -w -w-aus -w-ccc -w-dup -w-prc -w-pro -w-rch -w-sig -w-sp
 LIBFLAGS = /C /P32
 LDFLAGS  = -q -lq -laa -tWD
 
 LIBFLAGS = /C /P32
 LDFLAGS  = -q -lq -laa -tWD
 
-SRCDIR   = .
+SRCDIR   = .;.\vtls
 OBJDIR   = .\BCC_objs
 OBJDIR   = .\BCC_objs
-INCDIRS  = -I.;..\include
+INCDIRS  = -I.;.\lib;..\include
 LINKLIB  = $(BCCDIR)\lib\cw32mt.lib $(BCCDIR)\lib\ws2_32.lib
 DEFINES  = -DNDEBUG -DWIN32 -DBUILDING_LIBCURL
 
 LINKLIB  = $(BCCDIR)\lib\cw32mt.lib $(BCCDIR)\lib\ws2_32.lib
 DEFINES  = -DNDEBUG -DWIN32 -DBUILDING_LIBCURL
 
@@ -94,10 +94,11 @@ LINKLIB  = $(LINKLIB) $(OPENSSL_PATH)\out32\ssleay32.lib $(OPENSSL_PATH)\out32\l
 # build source files with hyphens in their name as objects with underscores
 # using explicit compilation build rules instead of implicit ones.
 
 # build source files with hyphens in their name as objects with underscores
 # using explicit compilation build rules instead of implicit ones.
 
-NOHYPHEN = $(CSOURCES:-=_)
+NOHYPHEN1 = $(CSOURCES:-=_)
+NOHYPHEN2 = $(NOHYPHEN1:vtls/=)
 
 
-OBJECTS = $(NOHYPHEN:.c=.obj)
-PREPROCESSED = $(NOHYPHEN:.c=.int)
+OBJECTS = $(NOHYPHEN2:.c=.obj)
+PREPROCESSED = $(NOHYPHEN2:.c=.int)
 
 # Borland's command line compiler (BCC32) version 5.5.1 integrated
 # preprocessor has a bug which results in silently generating wrong
 
 # Borland's command line compiler (BCC32) version 5.5.1 integrated
 # preprocessor has a bug which results in silently generating wrong
index 51e7c5f..5947cf0 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
 
 @SET_MAKE@
 
 
 @SET_MAKE@
 
-# ./lib/Makefile.inc
-# Using the backslash as line continuation character might be problematic
-# with some make flavours, as Watcom's wmake showed us already. If we
-# ever want to change this in a portable manner then we should consider
-# this idea (posted to the libcurl list by Adam Kellas):
-# CSRC1 = file1.c file2.c file3.c
-# CSRC2 = file4.c file5.c file6.c
-# CSOURCES = $(CSRC1) $(CSRC2)
+#***************************************************************************
+#                                  _   _ ____  _
+#  Project                     ___| | | |  _ \| |
+#                             / __| | | | |_) | |
+#                            | (__| |_| |  _ <| |___
+#                             \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at http://curl.haxx.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
 
 VPATH = @srcdir@
 am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
 
 VPATH = @srcdir@
 am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
@@ -87,13 +100,16 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-@CURL_LT_SHLIB_USE_VERSION_INFO_TRUE@am__append_1 = $(VERSIONINFO)
-@CURL_LT_SHLIB_USE_NO_UNDEFINED_TRUE@am__append_2 = -no-undefined
-@CURL_LT_SHLIB_USE_MIMPURE_TEXT_TRUE@am__append_3 = -mimpure-text
-@CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_TRUE@am__append_4 = -Wl,--version-script=libcurl.vers
-@USE_CPPFLAG_CURL_STATICLIB_TRUE@am__append_5 = -DCURL_STATICLIB
-@DOING_CURL_SYMBOL_HIDING_TRUE@am__append_6 = -DCURL_HIDDEN_SYMBOLS
-@DOING_CURL_SYMBOL_HIDING_TRUE@am__append_7 = $(CFLAG_CURL_SYMBOL_HIDING)
+@USE_EMBEDDED_ARES_TRUE@am__append_1 = -I$(top_builddir)/ares        \
+@USE_EMBEDDED_ARES_TRUE@               -I$(top_srcdir)/ares
+
+@CURL_LT_SHLIB_USE_VERSION_INFO_TRUE@am__append_2 = $(VERSIONINFO)
+@CURL_LT_SHLIB_USE_NO_UNDEFINED_TRUE@am__append_3 = -no-undefined
+@CURL_LT_SHLIB_USE_MIMPURE_TEXT_TRUE@am__append_4 = -mimpure-text
+@CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_TRUE@am__append_5 = -Wl,--version-script=libcurl.vers
+@USE_CPPFLAG_CURL_STATICLIB_TRUE@am__append_6 = -DCURL_STATICLIB
+@DOING_CURL_SYMBOL_HIDING_TRUE@am__append_7 = -DCURL_HIDDEN_SYMBOLS
+@DOING_CURL_SYMBOL_HIDING_TRUE@am__append_8 = $(CFLAG_CURL_SYMBOL_HIDING)
 DIST_COMMON = $(srcdir)/Makefile.inc $(srcdir)/Makefile.in \
        $(srcdir)/Makefile.am $(srcdir)/curl_config.h.in \
        $(top_srcdir)/mkinstalldirs $(srcdir)/libcurl.vers.in \
 DIST_COMMON = $(srcdir)/Makefile.inc $(srcdir)/Makefile.in \
        $(srcdir)/Makefile.am $(srcdir)/curl_config.h.in \
        $(top_srcdir)/mkinstalldirs $(srcdir)/libcurl.vers.in \
@@ -159,12 +175,11 @@ am__objects_1 = libcurl_la-file.lo libcurl_la-timeval.lo \
        libcurl_la-cookie.lo libcurl_la-http.lo libcurl_la-sendf.lo \
        libcurl_la-ftp.lo libcurl_la-url.lo libcurl_la-dict.lo \
        libcurl_la-if2ip.lo libcurl_la-speedcheck.lo \
        libcurl_la-cookie.lo libcurl_la-http.lo libcurl_la-sendf.lo \
        libcurl_la-ftp.lo libcurl_la-url.lo libcurl_la-dict.lo \
        libcurl_la-if2ip.lo libcurl_la-speedcheck.lo \
-       libcurl_la-ldap.lo libcurl_la-ssluse.lo libcurl_la-version.lo \
-       libcurl_la-getenv.lo libcurl_la-escape.lo \
-       libcurl_la-mprintf.lo libcurl_la-telnet.lo libcurl_la-netrc.lo \
-       libcurl_la-getinfo.lo libcurl_la-transfer.lo \
-       libcurl_la-strequal.lo libcurl_la-easy.lo \
-       libcurl_la-security.lo libcurl_la-krb4.lo \
+       libcurl_la-ldap.lo libcurl_la-version.lo libcurl_la-getenv.lo \
+       libcurl_la-escape.lo libcurl_la-mprintf.lo \
+       libcurl_la-telnet.lo libcurl_la-netrc.lo libcurl_la-getinfo.lo \
+       libcurl_la-transfer.lo libcurl_la-strequal.lo \
+       libcurl_la-easy.lo libcurl_la-security.lo \
        libcurl_la-curl_fnmatch.lo libcurl_la-fileinfo.lo \
        libcurl_la-ftplistparser.lo libcurl_la-wildcard.lo \
        libcurl_la-krb5.lo libcurl_la-memdebug.lo \
        libcurl_la-curl_fnmatch.lo libcurl_la-fileinfo.lo \
        libcurl_la-ftplistparser.lo libcurl_la-wildcard.lo \
        libcurl_la-krb5.lo libcurl_la-memdebug.lo \
@@ -179,34 +194,41 @@ am__objects_1 = libcurl_la-file.lo libcurl_la-timeval.lo \
        libcurl_la-hostip4.lo libcurl_la-hostip6.lo \
        libcurl_la-hostsyn.lo libcurl_la-inet_ntop.lo \
        libcurl_la-parsedate.lo libcurl_la-select.lo \
        libcurl_la-hostip4.lo libcurl_la-hostip6.lo \
        libcurl_la-hostsyn.lo libcurl_la-inet_ntop.lo \
        libcurl_la-parsedate.lo libcurl_la-select.lo \
-       libcurl_la-gtls.lo libcurl_la-sslgen.lo libcurl_la-tftp.lo \
-       libcurl_la-splay.lo libcurl_la-strdup.lo libcurl_la-socks.lo \
-       libcurl_la-ssh.lo libcurl_la-nss.lo libcurl_la-qssl.lo \
-       libcurl_la-rawstr.lo libcurl_la-curl_addrinfo.lo \
-       libcurl_la-socks_gssapi.lo libcurl_la-socks_sspi.lo \
-       libcurl_la-curl_sspi.lo libcurl_la-slist.lo \
-       libcurl_la-nonblock.lo libcurl_la-curl_memrchr.lo \
-       libcurl_la-imap.lo libcurl_la-pop3.lo libcurl_la-smtp.lo \
-       libcurl_la-pingpong.lo libcurl_la-rtsp.lo \
-       libcurl_la-curl_threads.lo libcurl_la-warnless.lo \
-       libcurl_la-hmac.lo libcurl_la-polarssl.lo \
-       libcurl_la-polarssl_threadlock.lo libcurl_la-curl_rtmp.lo \
-       libcurl_la-openldap.lo libcurl_la-curl_gethostname.lo \
-       libcurl_la-gopher.lo libcurl_la-axtls.lo \
+       libcurl_la-tftp.lo libcurl_la-splay.lo libcurl_la-strdup.lo \
+       libcurl_la-socks.lo libcurl_la-ssh.lo libcurl_la-rawstr.lo \
+       libcurl_la-curl_addrinfo.lo libcurl_la-socks_gssapi.lo \
+       libcurl_la-socks_sspi.lo libcurl_la-curl_sspi.lo \
+       libcurl_la-slist.lo libcurl_la-nonblock.lo \
+       libcurl_la-curl_memrchr.lo libcurl_la-imap.lo \
+       libcurl_la-pop3.lo libcurl_la-smtp.lo libcurl_la-pingpong.lo \
+       libcurl_la-rtsp.lo libcurl_la-curl_threads.lo \
+       libcurl_la-warnless.lo libcurl_la-hmac.lo \
+       libcurl_la-curl_rtmp.lo libcurl_la-openldap.lo \
+       libcurl_la-curl_gethostname.lo libcurl_la-gopher.lo \
        libcurl_la-idn_win32.lo libcurl_la-http_negotiate_sspi.lo \
        libcurl_la-idn_win32.lo libcurl_la-http_negotiate_sspi.lo \
-       libcurl_la-cyassl.lo libcurl_la-http_proxy.lo \
-       libcurl_la-non-ascii.lo libcurl_la-asyn-ares.lo \
-       libcurl_la-asyn-thread.lo libcurl_la-curl_gssapi.lo \
-       libcurl_la-curl_ntlm.lo libcurl_la-curl_ntlm_wb.lo \
-       libcurl_la-curl_ntlm_core.lo libcurl_la-curl_ntlm_msgs.lo \
-       libcurl_la-curl_sasl.lo libcurl_la-curl_schannel.lo \
-       libcurl_la-curl_multibyte.lo libcurl_la-curl_darwinssl.lo \
-       libcurl_la-hostcheck.lo libcurl_la-bundles.lo \
-       libcurl_la-conncache.lo libcurl_la-pipeline.lo \
-       libcurl_la-dotdot.lo libcurl_la-x509asn1.lo \
-       libcurl_la-gskit.lo
-am__objects_2 =
-am_libcurl_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+       libcurl_la-http_proxy.lo libcurl_la-non-ascii.lo \
+       libcurl_la-asyn-ares.lo libcurl_la-asyn-thread.lo \
+       libcurl_la-curl_gssapi.lo libcurl_la-curl_ntlm.lo \
+       libcurl_la-curl_ntlm_wb.lo libcurl_la-curl_ntlm_core.lo \
+       libcurl_la-curl_ntlm_msgs.lo libcurl_la-curl_sasl.lo \
+       libcurl_la-curl_multibyte.lo libcurl_la-hostcheck.lo \
+       libcurl_la-bundles.lo libcurl_la-conncache.lo \
+       libcurl_la-pipeline.lo libcurl_la-dotdot.lo \
+       libcurl_la-x509asn1.lo libcurl_la-http2.lo \
+       libcurl_la-curl_sasl_sspi.lo libcurl_la-smb.lo \
+       libcurl_la-curl_sasl_gssapi.lo libcurl_la-curl_endian.lo
+am__dirstamp = $(am__leading_dot)dirstamp
+am__objects_2 = vtls/libcurl_la-openssl.lo vtls/libcurl_la-gtls.lo \
+       vtls/libcurl_la-vtls.lo vtls/libcurl_la-nss.lo \
+       vtls/libcurl_la-polarssl.lo \
+       vtls/libcurl_la-polarssl_threadlock.lo \
+       vtls/libcurl_la-axtls.lo vtls/libcurl_la-cyassl.lo \
+       vtls/libcurl_la-curl_schannel.lo \
+       vtls/libcurl_la-curl_darwinssl.lo vtls/libcurl_la-gskit.lo
+am__objects_3 = $(am__objects_1) $(am__objects_2)
+am__objects_4 =
+am__objects_5 = $(am__objects_4) $(am__objects_4)
+am_libcurl_la_OBJECTS = $(am__objects_3) $(am__objects_5)
 libcurl_la_OBJECTS = $(am_libcurl_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 libcurl_la_OBJECTS = $(am_libcurl_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -216,19 +238,18 @@ libcurl_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libcurl_la_CFLAGS) \
        $(CFLAGS) $(libcurl_la_LDFLAGS) $(LDFLAGS) -o $@
 libcurlu_la_LIBADD =
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libcurl_la_CFLAGS) \
        $(CFLAGS) $(libcurl_la_LDFLAGS) $(LDFLAGS) -o $@
 libcurlu_la_LIBADD =
-am__objects_3 = libcurlu_la-file.lo libcurlu_la-timeval.lo \
+am__objects_6 = libcurlu_la-file.lo libcurlu_la-timeval.lo \
        libcurlu_la-base64.lo libcurlu_la-hostip.lo \
        libcurlu_la-progress.lo libcurlu_la-formdata.lo \
        libcurlu_la-cookie.lo libcurlu_la-http.lo libcurlu_la-sendf.lo \
        libcurlu_la-ftp.lo libcurlu_la-url.lo libcurlu_la-dict.lo \
        libcurlu_la-if2ip.lo libcurlu_la-speedcheck.lo \
        libcurlu_la-base64.lo libcurlu_la-hostip.lo \
        libcurlu_la-progress.lo libcurlu_la-formdata.lo \
        libcurlu_la-cookie.lo libcurlu_la-http.lo libcurlu_la-sendf.lo \
        libcurlu_la-ftp.lo libcurlu_la-url.lo libcurlu_la-dict.lo \
        libcurlu_la-if2ip.lo libcurlu_la-speedcheck.lo \
-       libcurlu_la-ldap.lo libcurlu_la-ssluse.lo \
-       libcurlu_la-version.lo libcurlu_la-getenv.lo \
-       libcurlu_la-escape.lo libcurlu_la-mprintf.lo \
-       libcurlu_la-telnet.lo libcurlu_la-netrc.lo \
-       libcurlu_la-getinfo.lo libcurlu_la-transfer.lo \
-       libcurlu_la-strequal.lo libcurlu_la-easy.lo \
-       libcurlu_la-security.lo libcurlu_la-krb4.lo \
+       libcurlu_la-ldap.lo libcurlu_la-version.lo \
+       libcurlu_la-getenv.lo libcurlu_la-escape.lo \
+       libcurlu_la-mprintf.lo libcurlu_la-telnet.lo \
+       libcurlu_la-netrc.lo libcurlu_la-getinfo.lo \
+       libcurlu_la-transfer.lo libcurlu_la-strequal.lo \
+       libcurlu_la-easy.lo libcurlu_la-security.lo \
        libcurlu_la-curl_fnmatch.lo libcurlu_la-fileinfo.lo \
        libcurlu_la-ftplistparser.lo libcurlu_la-wildcard.lo \
        libcurlu_la-krb5.lo libcurlu_la-memdebug.lo \
        libcurlu_la-curl_fnmatch.lo libcurlu_la-fileinfo.lo \
        libcurlu_la-ftplistparser.lo libcurlu_la-wildcard.lo \
        libcurlu_la-krb5.lo libcurlu_la-memdebug.lo \
@@ -243,34 +264,39 @@ am__objects_3 = libcurlu_la-file.lo libcurlu_la-timeval.lo \
        libcurlu_la-hostasyn.lo libcurlu_la-hostip4.lo \
        libcurlu_la-hostip6.lo libcurlu_la-hostsyn.lo \
        libcurlu_la-inet_ntop.lo libcurlu_la-parsedate.lo \
        libcurlu_la-hostasyn.lo libcurlu_la-hostip4.lo \
        libcurlu_la-hostip6.lo libcurlu_la-hostsyn.lo \
        libcurlu_la-inet_ntop.lo libcurlu_la-parsedate.lo \
-       libcurlu_la-select.lo libcurlu_la-gtls.lo \
-       libcurlu_la-sslgen.lo libcurlu_la-tftp.lo libcurlu_la-splay.lo \
+       libcurlu_la-select.lo libcurlu_la-tftp.lo libcurlu_la-splay.lo \
        libcurlu_la-strdup.lo libcurlu_la-socks.lo libcurlu_la-ssh.lo \
        libcurlu_la-strdup.lo libcurlu_la-socks.lo libcurlu_la-ssh.lo \
-       libcurlu_la-nss.lo libcurlu_la-qssl.lo libcurlu_la-rawstr.lo \
-       libcurlu_la-curl_addrinfo.lo libcurlu_la-socks_gssapi.lo \
-       libcurlu_la-socks_sspi.lo libcurlu_la-curl_sspi.lo \
-       libcurlu_la-slist.lo libcurlu_la-nonblock.lo \
-       libcurlu_la-curl_memrchr.lo libcurlu_la-imap.lo \
-       libcurlu_la-pop3.lo libcurlu_la-smtp.lo \
+       libcurlu_la-rawstr.lo libcurlu_la-curl_addrinfo.lo \
+       libcurlu_la-socks_gssapi.lo libcurlu_la-socks_sspi.lo \
+       libcurlu_la-curl_sspi.lo libcurlu_la-slist.lo \
+       libcurlu_la-nonblock.lo libcurlu_la-curl_memrchr.lo \
+       libcurlu_la-imap.lo libcurlu_la-pop3.lo libcurlu_la-smtp.lo \
        libcurlu_la-pingpong.lo libcurlu_la-rtsp.lo \
        libcurlu_la-curl_threads.lo libcurlu_la-warnless.lo \
        libcurlu_la-pingpong.lo libcurlu_la-rtsp.lo \
        libcurlu_la-curl_threads.lo libcurlu_la-warnless.lo \
-       libcurlu_la-hmac.lo libcurlu_la-polarssl.lo \
-       libcurlu_la-polarssl_threadlock.lo libcurlu_la-curl_rtmp.lo \
+       libcurlu_la-hmac.lo libcurlu_la-curl_rtmp.lo \
        libcurlu_la-openldap.lo libcurlu_la-curl_gethostname.lo \
        libcurlu_la-openldap.lo libcurlu_la-curl_gethostname.lo \
-       libcurlu_la-gopher.lo libcurlu_la-axtls.lo \
-       libcurlu_la-idn_win32.lo libcurlu_la-http_negotiate_sspi.lo \
-       libcurlu_la-cyassl.lo libcurlu_la-http_proxy.lo \
+       libcurlu_la-gopher.lo libcurlu_la-idn_win32.lo \
+       libcurlu_la-http_negotiate_sspi.lo libcurlu_la-http_proxy.lo \
        libcurlu_la-non-ascii.lo libcurlu_la-asyn-ares.lo \
        libcurlu_la-asyn-thread.lo libcurlu_la-curl_gssapi.lo \
        libcurlu_la-curl_ntlm.lo libcurlu_la-curl_ntlm_wb.lo \
        libcurlu_la-curl_ntlm_core.lo libcurlu_la-curl_ntlm_msgs.lo \
        libcurlu_la-non-ascii.lo libcurlu_la-asyn-ares.lo \
        libcurlu_la-asyn-thread.lo libcurlu_la-curl_gssapi.lo \
        libcurlu_la-curl_ntlm.lo libcurlu_la-curl_ntlm_wb.lo \
        libcurlu_la-curl_ntlm_core.lo libcurlu_la-curl_ntlm_msgs.lo \
-       libcurlu_la-curl_sasl.lo libcurlu_la-curl_schannel.lo \
-       libcurlu_la-curl_multibyte.lo libcurlu_la-curl_darwinssl.lo \
+       libcurlu_la-curl_sasl.lo libcurlu_la-curl_multibyte.lo \
        libcurlu_la-hostcheck.lo libcurlu_la-bundles.lo \
        libcurlu_la-conncache.lo libcurlu_la-pipeline.lo \
        libcurlu_la-dotdot.lo libcurlu_la-x509asn1.lo \
        libcurlu_la-hostcheck.lo libcurlu_la-bundles.lo \
        libcurlu_la-conncache.lo libcurlu_la-pipeline.lo \
        libcurlu_la-dotdot.lo libcurlu_la-x509asn1.lo \
-       libcurlu_la-gskit.lo
-am_libcurlu_la_OBJECTS = $(am__objects_3) $(am__objects_2)
+       libcurlu_la-http2.lo libcurlu_la-curl_sasl_sspi.lo \
+       libcurlu_la-smb.lo libcurlu_la-curl_sasl_gssapi.lo \
+       libcurlu_la-curl_endian.lo
+am__objects_7 = vtls/libcurlu_la-openssl.lo vtls/libcurlu_la-gtls.lo \
+       vtls/libcurlu_la-vtls.lo vtls/libcurlu_la-nss.lo \
+       vtls/libcurlu_la-polarssl.lo \
+       vtls/libcurlu_la-polarssl_threadlock.lo \
+       vtls/libcurlu_la-axtls.lo vtls/libcurlu_la-cyassl.lo \
+       vtls/libcurlu_la-curl_schannel.lo \
+       vtls/libcurlu_la-curl_darwinssl.lo vtls/libcurlu_la-gskit.lo
+am__objects_8 = $(am__objects_6) $(am__objects_7)
+am_libcurlu_la_OBJECTS = $(am__objects_8) $(am__objects_5)
 libcurlu_la_OBJECTS = $(am_libcurlu_la_OBJECTS)
 libcurlu_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libcurlu_la_CFLAGS) \
 libcurlu_la_OBJECTS = $(am_libcurlu_la_OBJECTS)
 libcurlu_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libcurlu_la_CFLAGS) \
@@ -372,6 +398,7 @@ CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
+CURL_DISABLE_SMB = @CURL_DISABLE_SMB@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
@@ -396,7 +423,6 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_NSS_INITCONTEXT = @HAVE_NSS_INITCONTEXT@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
@@ -405,7 +431,6 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
-KRB4_ENABLED = @KRB4_ENABLED@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
@@ -428,6 +453,7 @@ MKDIR_P = @MKDIR_P@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
+NSS_LIBS = @NSS_LIBS@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
@@ -463,11 +489,13 @@ USE_GNUTLS = @USE_GNUTLS@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
+USE_NGHTTP2 = @USE_NGHTTP2@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
+USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
@@ -567,25 +595,6 @@ lib_LTLIBRARIES = libcurl.la
 @BUILD_UNITTESTS_FALSE@noinst_LTLIBRARIES = 
 @BUILD_UNITTESTS_TRUE@noinst_LTLIBRARIES = libcurlu.la
 
 @BUILD_UNITTESTS_FALSE@noinst_LTLIBRARIES = 
 @BUILD_UNITTESTS_TRUE@noinst_LTLIBRARIES = libcurlu.la
 
-# This flag accepts an argument of the form current[:revision[:age]]. So,
-# passing -version-info 3:12:1 sets current to 3, revision to 12, and age to
-# 1.
-#
-# Here's the simplified rule guide on how to change -version-info:
-# (current version is C:R:A)
-#
-# 1. if there are only source changes, use C:R+1:A
-# 2. if interfaces were added use C+1:0:A+1
-# 3. if interfaces were removed, then use C+1:0:0
-#
-# For the full guide on libcurl ABI rules, see docs/libcurl/ABI
-@USE_EMBEDDED_ARES_FALSE@AM_CPPFLAGS = -I$(top_builddir)/include/curl \
-@USE_EMBEDDED_ARES_FALSE@      -I$(top_builddir)/include \
-@USE_EMBEDDED_ARES_FALSE@      -I$(top_srcdir)/include \
-@USE_EMBEDDED_ARES_FALSE@      -I$(top_builddir)/lib \
-@USE_EMBEDDED_ARES_FALSE@      -I$(top_srcdir)/lib \
-@USE_EMBEDDED_ARES_FALSE@      -DBUILDING_LIBCURL
-
 # Specify our include paths here, and do it relative to $(top_srcdir) and
 # $(top_builddir), to ensure that these paths which belong to the library
 # being currently built and tested are searched before the library which
 # Specify our include paths here, and do it relative to $(top_srcdir) and
 # $(top_builddir), to ensure that these paths which belong to the library
 # being currently built and tested are searched before the library which
@@ -611,14 +620,9 @@ lib_LTLIBRARIES = libcurl.la
 # 3. if interfaces were removed, then use C+1:0:0
 #
 # For the full guide on libcurl ABI rules, see docs/libcurl/ABI
 # 3. if interfaces were removed, then use C+1:0:0
 #
 # For the full guide on libcurl ABI rules, see docs/libcurl/ABI
-@USE_EMBEDDED_ARES_TRUE@AM_CPPFLAGS = -I$(top_builddir)/include/curl \
-@USE_EMBEDDED_ARES_TRUE@       -I$(top_builddir)/include \
-@USE_EMBEDDED_ARES_TRUE@       -I$(top_srcdir)/include \
-@USE_EMBEDDED_ARES_TRUE@       -I$(top_builddir)/lib \
-@USE_EMBEDDED_ARES_TRUE@       -I$(top_srcdir)/lib \
-@USE_EMBEDDED_ARES_TRUE@       -I$(top_builddir)/ares \
-@USE_EMBEDDED_ARES_TRUE@       -I$(top_srcdir)/ares \
-@USE_EMBEDDED_ARES_TRUE@       -DBUILDING_LIBCURL
+AM_CPPFLAGS = -I$(top_builddir)/include/curl -I$(top_builddir)/include \
+       -I$(top_srcdir)/include -I$(top_builddir)/lib \
+       -I$(top_srcdir)/lib $(am__append_1) -DBUILDING_LIBCURL
 @SONAME_BUMP_FALSE@VERSIONINFO = -version-info 7:0:3
 
 #
 @SONAME_BUMP_FALSE@VERSIONINFO = -version-info 7:0:3
 
 #
@@ -633,56 +637,64 @@ lib_LTLIBRARIES = libcurl.la
 @SONAME_BUMP_TRUE@VERSIONINFO = -version-info 8:0:3
 AM_LDFLAGS = 
 AM_CFLAGS = 
 @SONAME_BUMP_TRUE@VERSIONINFO = -version-info 8:0:3
 AM_LDFLAGS = 
 AM_CFLAGS = 
-libcurl_la_CPPFLAGS_EXTRA = $(am__append_5) $(am__append_6)
-libcurl_la_LDFLAGS_EXTRA = $(am__append_1) $(am__append_2) \
-       $(am__append_3) $(am__append_4)
-libcurl_la_CFLAGS_EXTRA = $(am__append_7)
+libcurl_la_CPPFLAGS_EXTRA = $(am__append_6) $(am__append_7)
+libcurl_la_LDFLAGS_EXTRA = $(am__append_2) $(am__append_3) \
+       $(am__append_4) $(am__append_5)
+libcurl_la_CFLAGS_EXTRA = $(am__append_8)
 libcurl_la_CPPFLAGS = $(AM_CPPFLAGS) $(libcurl_la_CPPFLAGS_EXTRA)
 libcurl_la_LDFLAGS = $(AM_LDFLAGS) $(libcurl_la_LDFLAGS_EXTRA) $(LDFLAGS) $(LIBCURL_LIBS)
 libcurl_la_CFLAGS = $(AM_CFLAGS) $(libcurl_la_CFLAGS_EXTRA)
 libcurlu_la_CPPFLAGS = $(AM_CPPFLAGS) -DCURL_STATICLIB -DUNITTESTS
 libcurlu_la_LDFLAGS = $(AM_LDFLAGS) -static $(LIBCURL_LIBS)
 libcurlu_la_CFLAGS = $(AM_CFLAGS)
 libcurl_la_CPPFLAGS = $(AM_CPPFLAGS) $(libcurl_la_CPPFLAGS_EXTRA)
 libcurl_la_LDFLAGS = $(AM_LDFLAGS) $(libcurl_la_LDFLAGS_EXTRA) $(LDFLAGS) $(LIBCURL_LIBS)
 libcurl_la_CFLAGS = $(AM_CFLAGS) $(libcurl_la_CFLAGS_EXTRA)
 libcurlu_la_CPPFLAGS = $(AM_CPPFLAGS) -DCURL_STATICLIB -DUNITTESTS
 libcurlu_la_LDFLAGS = $(AM_LDFLAGS) -static $(LIBCURL_LIBS)
 libcurlu_la_CFLAGS = $(AM_CFLAGS)
-CSOURCES = file.c timeval.c base64.c hostip.c progress.c formdata.c    \
-  cookie.c http.c sendf.c ftp.c url.c dict.c if2ip.c speedcheck.c      \
-  ldap.c ssluse.c version.c getenv.c escape.c mprintf.c telnet.c       \
-  netrc.c getinfo.c transfer.c strequal.c easy.c security.c krb4.c     \
-  curl_fnmatch.c fileinfo.c ftplistparser.c wildcard.c krb5.c          \
-  memdebug.c http_chunks.c strtok.c connect.c llist.c hash.c multi.c   \
-  content_encoding.c share.c http_digest.c md4.c md5.c \
-  http_negotiate.c inet_pton.c strtoofft.c strerror.c amigaos.c                \
-  hostasyn.c hostip4.c hostip6.c hostsyn.c inet_ntop.c parsedate.c     \
-  select.c gtls.c sslgen.c tftp.c splay.c strdup.c socks.c ssh.c nss.c \
-  qssl.c rawstr.c curl_addrinfo.c socks_gssapi.c socks_sspi.c          \
-  curl_sspi.c slist.c nonblock.c curl_memrchr.c imap.c pop3.c smtp.c   \
-  pingpong.c rtsp.c curl_threads.c warnless.c hmac.c polarssl.c                \
-  polarssl_threadlock.c curl_rtmp.c openldap.c curl_gethostname.c      \
-  gopher.c axtls.c idn_win32.c http_negotiate_sspi.c cyassl.c          \
-  http_proxy.c non-ascii.c asyn-ares.c asyn-thread.c curl_gssapi.c     \
-  curl_ntlm.c curl_ntlm_wb.c curl_ntlm_core.c curl_ntlm_msgs.c         \
-  curl_sasl.c curl_schannel.c curl_multibyte.c curl_darwinssl.c                \
+LIB_VTLS_CFILES = vtls/openssl.c vtls/gtls.c vtls/vtls.c vtls/nss.c     \
+  vtls/polarssl.c vtls/polarssl_threadlock.c vtls/axtls.c               \
+  vtls/cyassl.c vtls/curl_schannel.c vtls/curl_darwinssl.c vtls/gskit.c
+
+LIB_VTLS_HFILES = vtls/openssl.h vtls/vtls.h vtls/gtls.h                \
+  vtls/nssg.h vtls/polarssl.h vtls/polarssl_threadlock.h vtls/axtls.h   \
+  vtls/cyassl.h vtls/curl_schannel.h vtls/curl_darwinssl.h vtls/gskit.h
+
+LIB_CFILES = file.c timeval.c base64.c hostip.c progress.c formdata.c   \
+  cookie.c http.c sendf.c ftp.c url.c dict.c if2ip.c speedcheck.c       \
+  ldap.c version.c getenv.c escape.c mprintf.c telnet.c netrc.c         \
+  getinfo.c transfer.c strequal.c easy.c security.c curl_fnmatch.c      \
+  fileinfo.c ftplistparser.c wildcard.c krb5.c memdebug.c http_chunks.c \
+  strtok.c connect.c llist.c hash.c multi.c content_encoding.c share.c  \
+  http_digest.c md4.c md5.c http_negotiate.c inet_pton.c strtoofft.c    \
+  strerror.c amigaos.c hostasyn.c hostip4.c hostip6.c hostsyn.c         \
+  inet_ntop.c parsedate.c select.c tftp.c splay.c strdup.c socks.c      \
+  ssh.c rawstr.c curl_addrinfo.c socks_gssapi.c socks_sspi.c            \
+  curl_sspi.c slist.c nonblock.c curl_memrchr.c imap.c pop3.c smtp.c    \
+  pingpong.c rtsp.c curl_threads.c warnless.c hmac.c curl_rtmp.c        \
+  openldap.c curl_gethostname.c gopher.c idn_win32.c                    \
+  http_negotiate_sspi.c http_proxy.c non-ascii.c asyn-ares.c            \
+  asyn-thread.c curl_gssapi.c curl_ntlm.c curl_ntlm_wb.c                \
+  curl_ntlm_core.c curl_ntlm_msgs.c curl_sasl.c curl_multibyte.c        \
   hostcheck.c bundles.c conncache.c pipeline.c dotdot.c x509asn1.c      \
   hostcheck.c bundles.c conncache.c pipeline.c dotdot.c x509asn1.c      \
-  gskit.c
-
-HHEADERS = arpa_telnet.h netrc.h file.h timeval.h qssl.h hostip.h      \
-  progress.h formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h     \
-  if2ip.h speedcheck.h urldata.h curl_ldap.h ssluse.h escape.h telnet.h        \
-  getinfo.h strequal.h krb4.h memdebug.h http_chunks.h \
-  curl_fnmatch.h wildcard.h fileinfo.h ftplistparser.h strtok.h                \
-  connect.h llist.h hash.h content_encoding.h share.h curl_md4.h       \
-  curl_md5.h http_digest.h http_negotiate.h inet_pton.h amigaos.h      \
-  strtoofft.h strerror.h inet_ntop.h curlx.h curl_memory.h curl_setup.h        \
-  transfer.h select.h easyif.h multiif.h parsedate.h sslgen.h gtls.h   \
-  tftp.h sockaddr.h splay.h strdup.h socks.h ssh.h nssg.h curl_base64.h        \
-  rawstr.h curl_addrinfo.h curl_sspi.h slist.h nonblock.h              \
-  curl_memrchr.h imap.h pop3.h smtp.h pingpong.h rtsp.h curl_threads.h \
-  warnless.h curl_hmac.h polarssl.h polarssl_threadlock.h curl_rtmp.h  \
-  curl_gethostname.h gopher.h axtls.h cyassl.h http_proxy.h non-ascii.h        \
-  asyn.h curl_ntlm.h curl_gssapi.h curl_ntlm_wb.h curl_ntlm_core.h     \
-  curl_ntlm_msgs.h curl_sasl.h curl_schannel.h curl_multibyte.h                \
-  curl_darwinssl.h hostcheck.h bundles.h conncache.h curl_setup_once.h \
-  multihandle.h setup-vms.h pipeline.h dotdot.h x509asn1.h gskit.h
-
+  http2.c curl_sasl_sspi.c smb.c curl_sasl_gssapi.c curl_endian.c
+
+LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \
+  formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h if2ip.h         \
+  speedcheck.h urldata.h curl_ldap.h escape.h telnet.h getinfo.h        \
+  strequal.h curl_sec.h memdebug.h http_chunks.h curl_fnmatch.h         \
+  wildcard.h fileinfo.h ftplistparser.h strtok.h connect.h llist.h      \
+  hash.h content_encoding.h share.h curl_md4.h curl_md5.h http_digest.h \
+  http_negotiate.h inet_pton.h amigaos.h strtoofft.h strerror.h         \
+  inet_ntop.h curlx.h curl_memory.h curl_setup.h transfer.h select.h    \
+  easyif.h multiif.h parsedate.h tftp.h sockaddr.h splay.h strdup.h     \
+  socks.h ssh.h curl_base64.h rawstr.h curl_addrinfo.h curl_sspi.h      \
+  slist.h nonblock.h curl_memrchr.h imap.h pop3.h smtp.h pingpong.h     \
+  rtsp.h curl_threads.h warnless.h curl_hmac.h curl_rtmp.h              \
+  curl_gethostname.h gopher.h http_proxy.h non-ascii.h asyn.h           \
+  curl_ntlm.h curl_gssapi.h curl_ntlm_wb.h curl_ntlm_core.h             \
+  curl_ntlm_msgs.h curl_sasl.h curl_multibyte.h hostcheck.h bundles.h   \
+  conncache.h curl_setup_once.h multihandle.h setup-vms.h pipeline.h    \
+  dotdot.h x509asn1.h http2.h sigpipe.h smb.h curl_endian.h
+
+LIB_RCFILES = libcurl.rc
+CSOURCES = $(LIB_CFILES) $(LIB_VTLS_CFILES)
+HHEADERS = $(LIB_HFILES) $(LIB_VTLS_HFILES)
 
 # Makefile.inc provides the CSOURCES and HHEADERS defines
 libcurl_la_SOURCES = $(CSOURCES) $(HHEADERS)
 
 # Makefile.inc provides the CSOURCES and HHEADERS defines
 libcurl_la_SOURCES = $(CSOURCES) $(HHEADERS)
@@ -725,8 +737,8 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 
 curl_config.h: stamp-h1
 $(am__aclocal_m4_deps):
 
 curl_config.h: stamp-h1
-       @if test ! -f $@; then rm -f stamp-h1; else :; fi
-       @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
+       @test -f $@ || rm -f stamp-h1
+       @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
 
 stamp-h1: $(srcdir)/curl_config.h.in $(top_builddir)/config.status
        @rm -f stamp-h1
 
 stamp-h1: $(srcdir)/curl_config.h.in $(top_builddir)/config.status
        @rm -f stamp-h1
@@ -786,15 +798,67 @@ clean-noinstLTLIBRARIES:
          echo rm -f $${locs}; \
          rm -f $${locs}; \
        }
          echo rm -f $${locs}; \
          rm -f $${locs}; \
        }
+vtls/$(am__dirstamp):
+       @$(MKDIR_P) vtls
+       @: > vtls/$(am__dirstamp)
+vtls/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) vtls/$(DEPDIR)
+       @: > vtls/$(DEPDIR)/$(am__dirstamp)
+vtls/libcurl_la-openssl.lo: vtls/$(am__dirstamp) \
+       vtls/$(DEPDIR)/$(am__dirstamp)
+vtls/libcurl_la-gtls.lo: vtls/$(am__dirstamp) \
+       vtls/$(DEPDIR)/$(am__dirstamp)
+vtls/libcurl_la-vtls.lo: vtls/$(am__dirstamp) \
+       vtls/$(DEPDIR)/$(am__dirstamp)
+vtls/libcurl_la-nss.lo: vtls/$(am__dirstamp) \
+       vtls/$(DEPDIR)/$(am__dirstamp)
+vtls/libcurl_la-polarssl.lo: vtls/$(am__dirstamp) \
+       vtls/$(DEPDIR)/$(am__dirstamp)
+vtls/libcurl_la-polarssl_threadlock.lo: vtls/$(am__dirstamp) \
+       vtls/$(DEPDIR)/$(am__dirstamp)
+vtls/libcurl_la-axtls.lo: vtls/$(am__dirstamp) \
+       vtls/$(DEPDIR)/$(am__dirstamp)
+vtls/libcurl_la-cyassl.lo: vtls/$(am__dirstamp) \
+       vtls/$(DEPDIR)/$(am__dirstamp)
+vtls/libcurl_la-curl_schannel.lo: vtls/$(am__dirstamp) \
+       vtls/$(DEPDIR)/$(am__dirstamp)
+vtls/libcurl_la-curl_darwinssl.lo: vtls/$(am__dirstamp) \
+       vtls/$(DEPDIR)/$(am__dirstamp)
+vtls/libcurl_la-gskit.lo: vtls/$(am__dirstamp) \
+       vtls/$(DEPDIR)/$(am__dirstamp)
 
 libcurl.la: $(libcurl_la_OBJECTS) $(libcurl_la_DEPENDENCIES) $(EXTRA_libcurl_la_DEPENDENCIES) 
        $(AM_V_CCLD)$(libcurl_la_LINK) -rpath $(libdir) $(libcurl_la_OBJECTS) $(libcurl_la_LIBADD) $(LIBS)
 
 libcurl.la: $(libcurl_la_OBJECTS) $(libcurl_la_DEPENDENCIES) $(EXTRA_libcurl_la_DEPENDENCIES) 
        $(AM_V_CCLD)$(libcurl_la_LINK) -rpath $(libdir) $(libcurl_la_OBJECTS) $(libcurl_la_LIBADD) $(LIBS)
+vtls/libcurlu_la-openssl.lo: vtls/$(am__dirstamp) \
+       vtls/$(DEPDIR)/$(am__dirstamp)
+vtls/libcurlu_la-gtls.lo: vtls/$(am__dirstamp) \
+       vtls/$(DEPDIR)/$(am__dirstamp)
+vtls/libcurlu_la-vtls.lo: vtls/$(am__dirstamp) \
+       vtls/$(DEPDIR)/$(am__dirstamp)
+vtls/libcurlu_la-nss.lo: vtls/$(am__dirstamp) \
+       vtls/$(DEPDIR)/$(am__dirstamp)
+vtls/libcurlu_la-polarssl.lo: vtls/$(am__dirstamp) \
+       vtls/$(DEPDIR)/$(am__dirstamp)
+vtls/libcurlu_la-polarssl_threadlock.lo: vtls/$(am__dirstamp) \
+       vtls/$(DEPDIR)/$(am__dirstamp)
+vtls/libcurlu_la-axtls.lo: vtls/$(am__dirstamp) \
+       vtls/$(DEPDIR)/$(am__dirstamp)
+vtls/libcurlu_la-cyassl.lo: vtls/$(am__dirstamp) \
+       vtls/$(DEPDIR)/$(am__dirstamp)
+vtls/libcurlu_la-curl_schannel.lo: vtls/$(am__dirstamp) \
+       vtls/$(DEPDIR)/$(am__dirstamp)
+vtls/libcurlu_la-curl_darwinssl.lo: vtls/$(am__dirstamp) \
+       vtls/$(DEPDIR)/$(am__dirstamp)
+vtls/libcurlu_la-gskit.lo: vtls/$(am__dirstamp) \
+       vtls/$(DEPDIR)/$(am__dirstamp)
 
 libcurlu.la: $(libcurlu_la_OBJECTS) $(libcurlu_la_DEPENDENCIES) $(EXTRA_libcurlu_la_DEPENDENCIES) 
        $(AM_V_CCLD)$(libcurlu_la_LINK) $(am_libcurlu_la_rpath) $(libcurlu_la_OBJECTS) $(libcurlu_la_LIBADD) $(LIBS)
 
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
 
 libcurlu.la: $(libcurlu_la_OBJECTS) $(libcurlu_la_DEPENDENCIES) $(EXTRA_libcurlu_la_DEPENDENCIES) 
        $(AM_V_CCLD)$(libcurlu_la_LINK) $(am_libcurlu_la_rpath) $(libcurlu_la_OBJECTS) $(libcurlu_la_LIBADD) $(LIBS)
 
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
+       -rm -f vtls/*.$(OBJEXT)
+       -rm -f vtls/*.lo
 
 distclean-compile:
        -rm -f *.tab.c
 
 distclean-compile:
        -rm -f *.tab.c
@@ -802,7 +866,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-amigaos.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-asyn-ares.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-asyn-thread.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-amigaos.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-asyn-ares.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-asyn-thread.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-axtls.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-base64.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-bundles.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-conncache.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-base64.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-bundles.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-conncache.Plo@am__quote@
@@ -810,7 +873,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-content_encoding.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-cookie.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_addrinfo.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-content_encoding.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-cookie.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_addrinfo.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_darwinssl.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_endian.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_fnmatch.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_gethostname.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_gssapi.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_fnmatch.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_gethostname.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_gssapi.Plo@am__quote@
@@ -822,10 +885,10 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_ntlm_wb.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_rtmp.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_sasl.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_ntlm_wb.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_rtmp.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_sasl.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_schannel.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_sasl_gssapi.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_sasl_sspi.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_sspi.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_threads.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_sspi.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_threads.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-cyassl.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-dict.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-dotdot.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-easy.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-dict.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-dotdot.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-easy.Plo@am__quote@
@@ -838,8 +901,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-getenv.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-getinfo.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-gopher.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-getenv.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-getinfo.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-gopher.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-gskit.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-gtls.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-hash.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-hmac.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-hostasyn.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-hash.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-hmac.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-hostasyn.Plo@am__quote@
@@ -849,6 +910,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-hostip6.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-hostsyn.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-http.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-hostip6.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-hostsyn.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-http.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-http2.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-http_chunks.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-http_digest.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-http_negotiate.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-http_chunks.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-http_digest.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-http_negotiate.Plo@am__quote@
@@ -859,7 +921,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-imap.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-inet_ntop.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-inet_pton.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-imap.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-inet_ntop.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-inet_pton.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-krb4.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-krb5.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-ldap.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-llist.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-krb5.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-ldap.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-llist.Plo@am__quote@
@@ -871,16 +932,12 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-netrc.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-non-ascii.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-nonblock.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-netrc.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-non-ascii.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-nonblock.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-nss.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-openldap.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-parsedate.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-pingpong.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-pipeline.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-openldap.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-parsedate.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-pingpong.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-pipeline.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-polarssl.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-polarssl_threadlock.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-pop3.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-progress.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-pop3.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-progress.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-qssl.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-rawstr.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-rtsp.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-security.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-rawstr.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-rtsp.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-security.Plo@am__quote@
@@ -888,6 +945,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-sendf.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-share.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-slist.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-sendf.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-share.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-slist.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-smb.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-smtp.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-socks.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-socks_gssapi.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-smtp.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-socks.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-socks_gssapi.Plo@am__quote@
@@ -895,8 +953,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-speedcheck.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-splay.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-ssh.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-speedcheck.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-splay.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-ssh.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-sslgen.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-ssluse.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-strdup.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-strequal.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-strerror.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-strdup.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-strequal.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-strerror.Plo@am__quote@
@@ -914,7 +970,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-amigaos.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-asyn-ares.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-asyn-thread.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-amigaos.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-asyn-ares.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-asyn-thread.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-axtls.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-base64.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-bundles.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-conncache.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-base64.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-bundles.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-conncache.Plo@am__quote@
@@ -922,7 +977,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-content_encoding.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-cookie.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_addrinfo.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-content_encoding.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-cookie.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_addrinfo.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_darwinssl.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_endian.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_fnmatch.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_gethostname.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_gssapi.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_fnmatch.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_gethostname.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_gssapi.Plo@am__quote@
@@ -934,10 +989,10 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_ntlm_wb.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_rtmp.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_sasl.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_ntlm_wb.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_rtmp.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_sasl.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_schannel.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_sasl_gssapi.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_sasl_sspi.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_sspi.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_threads.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_sspi.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_threads.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-cyassl.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-dict.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-dotdot.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-easy.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-dict.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-dotdot.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-easy.Plo@am__quote@
@@ -950,8 +1005,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-getenv.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-getinfo.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-gopher.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-getenv.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-getinfo.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-gopher.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-gskit.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-gtls.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-hash.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-hmac.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-hostasyn.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-hash.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-hmac.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-hostasyn.Plo@am__quote@
@@ -961,6 +1014,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-hostip6.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-hostsyn.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-http.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-hostip6.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-hostsyn.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-http.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-http2.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-http_chunks.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-http_digest.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-http_negotiate.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-http_chunks.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-http_digest.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-http_negotiate.Plo@am__quote@
@@ -971,7 +1025,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-imap.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-inet_ntop.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-inet_pton.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-imap.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-inet_ntop.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-inet_pton.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-krb4.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-krb5.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-ldap.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-llist.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-krb5.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-ldap.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-llist.Plo@am__quote@
@@ -983,16 +1036,12 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-netrc.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-non-ascii.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-nonblock.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-netrc.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-non-ascii.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-nonblock.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-nss.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-openldap.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-parsedate.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-pingpong.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-pipeline.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-openldap.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-parsedate.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-pingpong.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-pipeline.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-polarssl.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-polarssl_threadlock.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-pop3.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-progress.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-pop3.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-progress.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-qssl.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-rawstr.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-rtsp.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-security.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-rawstr.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-rtsp.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-security.Plo@am__quote@
@@ -1000,6 +1049,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-sendf.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-share.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-slist.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-sendf.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-share.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-slist.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-smb.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-smtp.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-socks.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-socks_gssapi.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-smtp.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-socks.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-socks_gssapi.Plo@am__quote@
@@ -1007,8 +1057,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-speedcheck.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-splay.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-ssh.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-speedcheck.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-splay.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-ssh.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-sslgen.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-ssluse.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-strdup.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-strequal.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-strerror.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-strdup.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-strequal.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-strerror.Plo@am__quote@
@@ -1023,24 +1071,49 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-warnless.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-wildcard.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-x509asn1.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-warnless.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-wildcard.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-x509asn1.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-axtls.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-curl_darwinssl.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-curl_schannel.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-cyassl.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-gskit.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-gtls.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-nss.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-openssl.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-polarssl.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-polarssl_threadlock.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-vtls.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-axtls.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-curl_darwinssl.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-curl_schannel.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-cyassl.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-gskit.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-gtls.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-nss.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-openssl.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-polarssl.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-polarssl_threadlock.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-vtls.Plo@am__quote@
 
 .c.o:
 
 .c.o:
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
 
 .c.obj:
 
 .c.obj:
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
 
 .c.lo:
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+@am__fastdepCC_TRUE@   $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Plo
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
@@ -1150,13 +1223,6 @@ libcurl_la-ldap.lo: ldap.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-ldap.lo `test -f 'ldap.c' || echo '$(srcdir)/'`ldap.c
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-ldap.lo `test -f 'ldap.c' || echo '$(srcdir)/'`ldap.c
 
-libcurl_la-ssluse.lo: ssluse.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-ssluse.lo -MD -MP -MF $(DEPDIR)/libcurl_la-ssluse.Tpo -c -o libcurl_la-ssluse.lo `test -f 'ssluse.c' || echo '$(srcdir)/'`ssluse.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-ssluse.Tpo $(DEPDIR)/libcurl_la-ssluse.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ssluse.c' object='libcurl_la-ssluse.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-ssluse.lo `test -f 'ssluse.c' || echo '$(srcdir)/'`ssluse.c
-
 libcurl_la-version.lo: version.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-version.lo -MD -MP -MF $(DEPDIR)/libcurl_la-version.Tpo -c -o libcurl_la-version.lo `test -f 'version.c' || echo '$(srcdir)/'`version.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-version.Tpo $(DEPDIR)/libcurl_la-version.Plo
 libcurl_la-version.lo: version.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-version.lo -MD -MP -MF $(DEPDIR)/libcurl_la-version.Tpo -c -o libcurl_la-version.lo `test -f 'version.c' || echo '$(srcdir)/'`version.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-version.Tpo $(DEPDIR)/libcurl_la-version.Plo
@@ -1234,13 +1300,6 @@ libcurl_la-security.lo: security.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-security.lo `test -f 'security.c' || echo '$(srcdir)/'`security.c
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-security.lo `test -f 'security.c' || echo '$(srcdir)/'`security.c
 
-libcurl_la-krb4.lo: krb4.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-krb4.lo -MD -MP -MF $(DEPDIR)/libcurl_la-krb4.Tpo -c -o libcurl_la-krb4.lo `test -f 'krb4.c' || echo '$(srcdir)/'`krb4.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-krb4.Tpo $(DEPDIR)/libcurl_la-krb4.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='krb4.c' object='libcurl_la-krb4.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-krb4.lo `test -f 'krb4.c' || echo '$(srcdir)/'`krb4.c
-
 libcurl_la-curl_fnmatch.lo: curl_fnmatch.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-curl_fnmatch.lo -MD -MP -MF $(DEPDIR)/libcurl_la-curl_fnmatch.Tpo -c -o libcurl_la-curl_fnmatch.lo `test -f 'curl_fnmatch.c' || echo '$(srcdir)/'`curl_fnmatch.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-curl_fnmatch.Tpo $(DEPDIR)/libcurl_la-curl_fnmatch.Plo
 libcurl_la-curl_fnmatch.lo: curl_fnmatch.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-curl_fnmatch.lo -MD -MP -MF $(DEPDIR)/libcurl_la-curl_fnmatch.Tpo -c -o libcurl_la-curl_fnmatch.lo `test -f 'curl_fnmatch.c' || echo '$(srcdir)/'`curl_fnmatch.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-curl_fnmatch.Tpo $(DEPDIR)/libcurl_la-curl_fnmatch.Plo
@@ -1444,20 +1503,6 @@ libcurl_la-select.lo: select.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-select.lo `test -f 'select.c' || echo '$(srcdir)/'`select.c
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-select.lo `test -f 'select.c' || echo '$(srcdir)/'`select.c
 
-libcurl_la-gtls.lo: gtls.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-gtls.lo -MD -MP -MF $(DEPDIR)/libcurl_la-gtls.Tpo -c -o libcurl_la-gtls.lo `test -f 'gtls.c' || echo '$(srcdir)/'`gtls.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-gtls.Tpo $(DEPDIR)/libcurl_la-gtls.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gtls.c' object='libcurl_la-gtls.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-gtls.lo `test -f 'gtls.c' || echo '$(srcdir)/'`gtls.c
-
-libcurl_la-sslgen.lo: sslgen.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-sslgen.lo -MD -MP -MF $(DEPDIR)/libcurl_la-sslgen.Tpo -c -o libcurl_la-sslgen.lo `test -f 'sslgen.c' || echo '$(srcdir)/'`sslgen.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-sslgen.Tpo $(DEPDIR)/libcurl_la-sslgen.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sslgen.c' object='libcurl_la-sslgen.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-sslgen.lo `test -f 'sslgen.c' || echo '$(srcdir)/'`sslgen.c
-
 libcurl_la-tftp.lo: tftp.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-tftp.lo -MD -MP -MF $(DEPDIR)/libcurl_la-tftp.Tpo -c -o libcurl_la-tftp.lo `test -f 'tftp.c' || echo '$(srcdir)/'`tftp.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-tftp.Tpo $(DEPDIR)/libcurl_la-tftp.Plo
 libcurl_la-tftp.lo: tftp.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-tftp.lo -MD -MP -MF $(DEPDIR)/libcurl_la-tftp.Tpo -c -o libcurl_la-tftp.lo `test -f 'tftp.c' || echo '$(srcdir)/'`tftp.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-tftp.Tpo $(DEPDIR)/libcurl_la-tftp.Plo
@@ -1493,20 +1538,6 @@ libcurl_la-ssh.lo: ssh.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-ssh.lo `test -f 'ssh.c' || echo '$(srcdir)/'`ssh.c
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-ssh.lo `test -f 'ssh.c' || echo '$(srcdir)/'`ssh.c
 
-libcurl_la-nss.lo: nss.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-nss.lo -MD -MP -MF $(DEPDIR)/libcurl_la-nss.Tpo -c -o libcurl_la-nss.lo `test -f 'nss.c' || echo '$(srcdir)/'`nss.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-nss.Tpo $(DEPDIR)/libcurl_la-nss.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='nss.c' object='libcurl_la-nss.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-nss.lo `test -f 'nss.c' || echo '$(srcdir)/'`nss.c
-
-libcurl_la-qssl.lo: qssl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-qssl.lo -MD -MP -MF $(DEPDIR)/libcurl_la-qssl.Tpo -c -o libcurl_la-qssl.lo `test -f 'qssl.c' || echo '$(srcdir)/'`qssl.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-qssl.Tpo $(DEPDIR)/libcurl_la-qssl.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='qssl.c' object='libcurl_la-qssl.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-qssl.lo `test -f 'qssl.c' || echo '$(srcdir)/'`qssl.c
-
 libcurl_la-rawstr.lo: rawstr.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-rawstr.lo -MD -MP -MF $(DEPDIR)/libcurl_la-rawstr.Tpo -c -o libcurl_la-rawstr.lo `test -f 'rawstr.c' || echo '$(srcdir)/'`rawstr.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-rawstr.Tpo $(DEPDIR)/libcurl_la-rawstr.Plo
 libcurl_la-rawstr.lo: rawstr.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-rawstr.lo -MD -MP -MF $(DEPDIR)/libcurl_la-rawstr.Tpo -c -o libcurl_la-rawstr.lo `test -f 'rawstr.c' || echo '$(srcdir)/'`rawstr.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-rawstr.Tpo $(DEPDIR)/libcurl_la-rawstr.Plo
@@ -1619,20 +1650,6 @@ libcurl_la-hmac.lo: hmac.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-hmac.lo `test -f 'hmac.c' || echo '$(srcdir)/'`hmac.c
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-hmac.lo `test -f 'hmac.c' || echo '$(srcdir)/'`hmac.c
 
-libcurl_la-polarssl.lo: polarssl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-polarssl.lo -MD -MP -MF $(DEPDIR)/libcurl_la-polarssl.Tpo -c -o libcurl_la-polarssl.lo `test -f 'polarssl.c' || echo '$(srcdir)/'`polarssl.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-polarssl.Tpo $(DEPDIR)/libcurl_la-polarssl.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='polarssl.c' object='libcurl_la-polarssl.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-polarssl.lo `test -f 'polarssl.c' || echo '$(srcdir)/'`polarssl.c
-
-libcurl_la-polarssl_threadlock.lo: polarssl_threadlock.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-polarssl_threadlock.lo -MD -MP -MF $(DEPDIR)/libcurl_la-polarssl_threadlock.Tpo -c -o libcurl_la-polarssl_threadlock.lo `test -f 'polarssl_threadlock.c' || echo '$(srcdir)/'`polarssl_threadlock.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-polarssl_threadlock.Tpo $(DEPDIR)/libcurl_la-polarssl_threadlock.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='polarssl_threadlock.c' object='libcurl_la-polarssl_threadlock.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-polarssl_threadlock.lo `test -f 'polarssl_threadlock.c' || echo '$(srcdir)/'`polarssl_threadlock.c
-
 libcurl_la-curl_rtmp.lo: curl_rtmp.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-curl_rtmp.lo -MD -MP -MF $(DEPDIR)/libcurl_la-curl_rtmp.Tpo -c -o libcurl_la-curl_rtmp.lo `test -f 'curl_rtmp.c' || echo '$(srcdir)/'`curl_rtmp.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-curl_rtmp.Tpo $(DEPDIR)/libcurl_la-curl_rtmp.Plo
 libcurl_la-curl_rtmp.lo: curl_rtmp.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-curl_rtmp.lo -MD -MP -MF $(DEPDIR)/libcurl_la-curl_rtmp.Tpo -c -o libcurl_la-curl_rtmp.lo `test -f 'curl_rtmp.c' || echo '$(srcdir)/'`curl_rtmp.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-curl_rtmp.Tpo $(DEPDIR)/libcurl_la-curl_rtmp.Plo
@@ -1661,13 +1678,6 @@ libcurl_la-gopher.lo: gopher.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-gopher.lo `test -f 'gopher.c' || echo '$(srcdir)/'`gopher.c
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-gopher.lo `test -f 'gopher.c' || echo '$(srcdir)/'`gopher.c
 
-libcurl_la-axtls.lo: axtls.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-axtls.lo -MD -MP -MF $(DEPDIR)/libcurl_la-axtls.Tpo -c -o libcurl_la-axtls.lo `test -f 'axtls.c' || echo '$(srcdir)/'`axtls.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-axtls.Tpo $(DEPDIR)/libcurl_la-axtls.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='axtls.c' object='libcurl_la-axtls.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-axtls.lo `test -f 'axtls.c' || echo '$(srcdir)/'`axtls.c
-
 libcurl_la-idn_win32.lo: idn_win32.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-idn_win32.lo -MD -MP -MF $(DEPDIR)/libcurl_la-idn_win32.Tpo -c -o libcurl_la-idn_win32.lo `test -f 'idn_win32.c' || echo '$(srcdir)/'`idn_win32.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-idn_win32.Tpo $(DEPDIR)/libcurl_la-idn_win32.Plo
 libcurl_la-idn_win32.lo: idn_win32.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-idn_win32.lo -MD -MP -MF $(DEPDIR)/libcurl_la-idn_win32.Tpo -c -o libcurl_la-idn_win32.lo `test -f 'idn_win32.c' || echo '$(srcdir)/'`idn_win32.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-idn_win32.Tpo $(DEPDIR)/libcurl_la-idn_win32.Plo
@@ -1682,13 +1692,6 @@ libcurl_la-http_negotiate_sspi.lo: http_negotiate_sspi.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-http_negotiate_sspi.lo `test -f 'http_negotiate_sspi.c' || echo '$(srcdir)/'`http_negotiate_sspi.c
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-http_negotiate_sspi.lo `test -f 'http_negotiate_sspi.c' || echo '$(srcdir)/'`http_negotiate_sspi.c
 
-libcurl_la-cyassl.lo: cyassl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-cyassl.lo -MD -MP -MF $(DEPDIR)/libcurl_la-cyassl.Tpo -c -o libcurl_la-cyassl.lo `test -f 'cyassl.c' || echo '$(srcdir)/'`cyassl.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-cyassl.Tpo $(DEPDIR)/libcurl_la-cyassl.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cyassl.c' object='libcurl_la-cyassl.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-cyassl.lo `test -f 'cyassl.c' || echo '$(srcdir)/'`cyassl.c
-
 libcurl_la-http_proxy.lo: http_proxy.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-http_proxy.lo -MD -MP -MF $(DEPDIR)/libcurl_la-http_proxy.Tpo -c -o libcurl_la-http_proxy.lo `test -f 'http_proxy.c' || echo '$(srcdir)/'`http_proxy.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-http_proxy.Tpo $(DEPDIR)/libcurl_la-http_proxy.Plo
 libcurl_la-http_proxy.lo: http_proxy.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-http_proxy.lo -MD -MP -MF $(DEPDIR)/libcurl_la-http_proxy.Tpo -c -o libcurl_la-http_proxy.lo `test -f 'http_proxy.c' || echo '$(srcdir)/'`http_proxy.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-http_proxy.Tpo $(DEPDIR)/libcurl_la-http_proxy.Plo
@@ -1759,13 +1762,6 @@ libcurl_la-curl_sasl.lo: curl_sasl.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-curl_sasl.lo `test -f 'curl_sasl.c' || echo '$(srcdir)/'`curl_sasl.c
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-curl_sasl.lo `test -f 'curl_sasl.c' || echo '$(srcdir)/'`curl_sasl.c
 
-libcurl_la-curl_schannel.lo: curl_schannel.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-curl_schannel.lo -MD -MP -MF $(DEPDIR)/libcurl_la-curl_schannel.Tpo -c -o libcurl_la-curl_schannel.lo `test -f 'curl_schannel.c' || echo '$(srcdir)/'`curl_schannel.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-curl_schannel.Tpo $(DEPDIR)/libcurl_la-curl_schannel.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='curl_schannel.c' object='libcurl_la-curl_schannel.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-curl_schannel.lo `test -f 'curl_schannel.c' || echo '$(srcdir)/'`curl_schannel.c
-
 libcurl_la-curl_multibyte.lo: curl_multibyte.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-curl_multibyte.lo -MD -MP -MF $(DEPDIR)/libcurl_la-curl_multibyte.Tpo -c -o libcurl_la-curl_multibyte.lo `test -f 'curl_multibyte.c' || echo '$(srcdir)/'`curl_multibyte.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-curl_multibyte.Tpo $(DEPDIR)/libcurl_la-curl_multibyte.Plo
 libcurl_la-curl_multibyte.lo: curl_multibyte.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-curl_multibyte.lo -MD -MP -MF $(DEPDIR)/libcurl_la-curl_multibyte.Tpo -c -o libcurl_la-curl_multibyte.lo `test -f 'curl_multibyte.c' || echo '$(srcdir)/'`curl_multibyte.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-curl_multibyte.Tpo $(DEPDIR)/libcurl_la-curl_multibyte.Plo
@@ -1773,13 +1769,6 @@ libcurl_la-curl_multibyte.lo: curl_multibyte.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-curl_multibyte.lo `test -f 'curl_multibyte.c' || echo '$(srcdir)/'`curl_multibyte.c
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-curl_multibyte.lo `test -f 'curl_multibyte.c' || echo '$(srcdir)/'`curl_multibyte.c
 
-libcurl_la-curl_darwinssl.lo: curl_darwinssl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-curl_darwinssl.lo -MD -MP -MF $(DEPDIR)/libcurl_la-curl_darwinssl.Tpo -c -o libcurl_la-curl_darwinssl.lo `test -f 'curl_darwinssl.c' || echo '$(srcdir)/'`curl_darwinssl.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-curl_darwinssl.Tpo $(DEPDIR)/libcurl_la-curl_darwinssl.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='curl_darwinssl.c' object='libcurl_la-curl_darwinssl.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-curl_darwinssl.lo `test -f 'curl_darwinssl.c' || echo '$(srcdir)/'`curl_darwinssl.c
-
 libcurl_la-hostcheck.lo: hostcheck.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-hostcheck.lo -MD -MP -MF $(DEPDIR)/libcurl_la-hostcheck.Tpo -c -o libcurl_la-hostcheck.lo `test -f 'hostcheck.c' || echo '$(srcdir)/'`hostcheck.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-hostcheck.Tpo $(DEPDIR)/libcurl_la-hostcheck.Plo
 libcurl_la-hostcheck.lo: hostcheck.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-hostcheck.lo -MD -MP -MF $(DEPDIR)/libcurl_la-hostcheck.Tpo -c -o libcurl_la-hostcheck.lo `test -f 'hostcheck.c' || echo '$(srcdir)/'`hostcheck.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-hostcheck.Tpo $(DEPDIR)/libcurl_la-hostcheck.Plo
@@ -1822,12 +1811,117 @@ libcurl_la-x509asn1.lo: x509asn1.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-x509asn1.lo `test -f 'x509asn1.c' || echo '$(srcdir)/'`x509asn1.c
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-x509asn1.lo `test -f 'x509asn1.c' || echo '$(srcdir)/'`x509asn1.c
 
-libcurl_la-gskit.lo: gskit.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-gskit.lo -MD -MP -MF $(DEPDIR)/libcurl_la-gskit.Tpo -c -o libcurl_la-gskit.lo `test -f 'gskit.c' || echo '$(srcdir)/'`gskit.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-gskit.Tpo $(DEPDIR)/libcurl_la-gskit.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gskit.c' object='libcurl_la-gskit.lo' libtool=yes @AMDEPBACKSLASH@
+libcurl_la-http2.lo: http2.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-http2.lo -MD -MP -MF $(DEPDIR)/libcurl_la-http2.Tpo -c -o libcurl_la-http2.lo `test -f 'http2.c' || echo '$(srcdir)/'`http2.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-http2.Tpo $(DEPDIR)/libcurl_la-http2.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='http2.c' object='libcurl_la-http2.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-http2.lo `test -f 'http2.c' || echo '$(srcdir)/'`http2.c
+
+libcurl_la-curl_sasl_sspi.lo: curl_sasl_sspi.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-curl_sasl_sspi.lo -MD -MP -MF $(DEPDIR)/libcurl_la-curl_sasl_sspi.Tpo -c -o libcurl_la-curl_sasl_sspi.lo `test -f 'curl_sasl_sspi.c' || echo '$(srcdir)/'`curl_sasl_sspi.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-curl_sasl_sspi.Tpo $(DEPDIR)/libcurl_la-curl_sasl_sspi.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='curl_sasl_sspi.c' object='libcurl_la-curl_sasl_sspi.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-curl_sasl_sspi.lo `test -f 'curl_sasl_sspi.c' || echo '$(srcdir)/'`curl_sasl_sspi.c
+
+libcurl_la-smb.lo: smb.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-smb.lo -MD -MP -MF $(DEPDIR)/libcurl_la-smb.Tpo -c -o libcurl_la-smb.lo `test -f 'smb.c' || echo '$(srcdir)/'`smb.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-smb.Tpo $(DEPDIR)/libcurl_la-smb.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='smb.c' object='libcurl_la-smb.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-smb.lo `test -f 'smb.c' || echo '$(srcdir)/'`smb.c
+
+libcurl_la-curl_sasl_gssapi.lo: curl_sasl_gssapi.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-curl_sasl_gssapi.lo -MD -MP -MF $(DEPDIR)/libcurl_la-curl_sasl_gssapi.Tpo -c -o libcurl_la-curl_sasl_gssapi.lo `test -f 'curl_sasl_gssapi.c' || echo '$(srcdir)/'`curl_sasl_gssapi.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-curl_sasl_gssapi.Tpo $(DEPDIR)/libcurl_la-curl_sasl_gssapi.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='curl_sasl_gssapi.c' object='libcurl_la-curl_sasl_gssapi.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-curl_sasl_gssapi.lo `test -f 'curl_sasl_gssapi.c' || echo '$(srcdir)/'`curl_sasl_gssapi.c
+
+libcurl_la-curl_endian.lo: curl_endian.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-curl_endian.lo -MD -MP -MF $(DEPDIR)/libcurl_la-curl_endian.Tpo -c -o libcurl_la-curl_endian.lo `test -f 'curl_endian.c' || echo '$(srcdir)/'`curl_endian.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-curl_endian.Tpo $(DEPDIR)/libcurl_la-curl_endian.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='curl_endian.c' object='libcurl_la-curl_endian.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-curl_endian.lo `test -f 'curl_endian.c' || echo '$(srcdir)/'`curl_endian.c
+
+vtls/libcurl_la-openssl.lo: vtls/openssl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vtls/libcurl_la-openssl.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-openssl.Tpo -c -o vtls/libcurl_la-openssl.lo `test -f 'vtls/openssl.c' || echo '$(srcdir)/'`vtls/openssl.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-openssl.Tpo vtls/$(DEPDIR)/libcurl_la-openssl.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/openssl.c' object='vtls/libcurl_la-openssl.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurl_la-openssl.lo `test -f 'vtls/openssl.c' || echo '$(srcdir)/'`vtls/openssl.c
+
+vtls/libcurl_la-gtls.lo: vtls/gtls.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vtls/libcurl_la-gtls.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-gtls.Tpo -c -o vtls/libcurl_la-gtls.lo `test -f 'vtls/gtls.c' || echo '$(srcdir)/'`vtls/gtls.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-gtls.Tpo vtls/$(DEPDIR)/libcurl_la-gtls.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/gtls.c' object='vtls/libcurl_la-gtls.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurl_la-gtls.lo `test -f 'vtls/gtls.c' || echo '$(srcdir)/'`vtls/gtls.c
+
+vtls/libcurl_la-vtls.lo: vtls/vtls.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vtls/libcurl_la-vtls.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-vtls.Tpo -c -o vtls/libcurl_la-vtls.lo `test -f 'vtls/vtls.c' || echo '$(srcdir)/'`vtls/vtls.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-vtls.Tpo vtls/$(DEPDIR)/libcurl_la-vtls.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/vtls.c' object='vtls/libcurl_la-vtls.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurl_la-vtls.lo `test -f 'vtls/vtls.c' || echo '$(srcdir)/'`vtls/vtls.c
+
+vtls/libcurl_la-nss.lo: vtls/nss.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vtls/libcurl_la-nss.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-nss.Tpo -c -o vtls/libcurl_la-nss.lo `test -f 'vtls/nss.c' || echo '$(srcdir)/'`vtls/nss.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-nss.Tpo vtls/$(DEPDIR)/libcurl_la-nss.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/nss.c' object='vtls/libcurl_la-nss.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurl_la-nss.lo `test -f 'vtls/nss.c' || echo '$(srcdir)/'`vtls/nss.c
+
+vtls/libcurl_la-polarssl.lo: vtls/polarssl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vtls/libcurl_la-polarssl.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-polarssl.Tpo -c -o vtls/libcurl_la-polarssl.lo `test -f 'vtls/polarssl.c' || echo '$(srcdir)/'`vtls/polarssl.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-polarssl.Tpo vtls/$(DEPDIR)/libcurl_la-polarssl.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/polarssl.c' object='vtls/libcurl_la-polarssl.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurl_la-polarssl.lo `test -f 'vtls/polarssl.c' || echo '$(srcdir)/'`vtls/polarssl.c
+
+vtls/libcurl_la-polarssl_threadlock.lo: vtls/polarssl_threadlock.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vtls/libcurl_la-polarssl_threadlock.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-polarssl_threadlock.Tpo -c -o vtls/libcurl_la-polarssl_threadlock.lo `test -f 'vtls/polarssl_threadlock.c' || echo '$(srcdir)/'`vtls/polarssl_threadlock.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-polarssl_threadlock.Tpo vtls/$(DEPDIR)/libcurl_la-polarssl_threadlock.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/polarssl_threadlock.c' object='vtls/libcurl_la-polarssl_threadlock.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurl_la-polarssl_threadlock.lo `test -f 'vtls/polarssl_threadlock.c' || echo '$(srcdir)/'`vtls/polarssl_threadlock.c
+
+vtls/libcurl_la-axtls.lo: vtls/axtls.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vtls/libcurl_la-axtls.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-axtls.Tpo -c -o vtls/libcurl_la-axtls.lo `test -f 'vtls/axtls.c' || echo '$(srcdir)/'`vtls/axtls.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-axtls.Tpo vtls/$(DEPDIR)/libcurl_la-axtls.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/axtls.c' object='vtls/libcurl_la-axtls.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-gskit.lo `test -f 'gskit.c' || echo '$(srcdir)/'`gskit.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurl_la-axtls.lo `test -f 'vtls/axtls.c' || echo '$(srcdir)/'`vtls/axtls.c
+
+vtls/libcurl_la-cyassl.lo: vtls/cyassl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vtls/libcurl_la-cyassl.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-cyassl.Tpo -c -o vtls/libcurl_la-cyassl.lo `test -f 'vtls/cyassl.c' || echo '$(srcdir)/'`vtls/cyassl.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-cyassl.Tpo vtls/$(DEPDIR)/libcurl_la-cyassl.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/cyassl.c' object='vtls/libcurl_la-cyassl.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurl_la-cyassl.lo `test -f 'vtls/cyassl.c' || echo '$(srcdir)/'`vtls/cyassl.c
+
+vtls/libcurl_la-curl_schannel.lo: vtls/curl_schannel.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vtls/libcurl_la-curl_schannel.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-curl_schannel.Tpo -c -o vtls/libcurl_la-curl_schannel.lo `test -f 'vtls/curl_schannel.c' || echo '$(srcdir)/'`vtls/curl_schannel.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-curl_schannel.Tpo vtls/$(DEPDIR)/libcurl_la-curl_schannel.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/curl_schannel.c' object='vtls/libcurl_la-curl_schannel.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurl_la-curl_schannel.lo `test -f 'vtls/curl_schannel.c' || echo '$(srcdir)/'`vtls/curl_schannel.c
+
+vtls/libcurl_la-curl_darwinssl.lo: vtls/curl_darwinssl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vtls/libcurl_la-curl_darwinssl.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-curl_darwinssl.Tpo -c -o vtls/libcurl_la-curl_darwinssl.lo `test -f 'vtls/curl_darwinssl.c' || echo '$(srcdir)/'`vtls/curl_darwinssl.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-curl_darwinssl.Tpo vtls/$(DEPDIR)/libcurl_la-curl_darwinssl.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/curl_darwinssl.c' object='vtls/libcurl_la-curl_darwinssl.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurl_la-curl_darwinssl.lo `test -f 'vtls/curl_darwinssl.c' || echo '$(srcdir)/'`vtls/curl_darwinssl.c
+
+vtls/libcurl_la-gskit.lo: vtls/gskit.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vtls/libcurl_la-gskit.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-gskit.Tpo -c -o vtls/libcurl_la-gskit.lo `test -f 'vtls/gskit.c' || echo '$(srcdir)/'`vtls/gskit.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-gskit.Tpo vtls/$(DEPDIR)/libcurl_la-gskit.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/gskit.c' object='vtls/libcurl_la-gskit.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurl_la-gskit.lo `test -f 'vtls/gskit.c' || echo '$(srcdir)/'`vtls/gskit.c
 
 libcurlu_la-file.lo: file.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-file.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-file.Tpo -c -o libcurlu_la-file.lo `test -f 'file.c' || echo '$(srcdir)/'`file.c
 
 libcurlu_la-file.lo: file.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-file.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-file.Tpo -c -o libcurlu_la-file.lo `test -f 'file.c' || echo '$(srcdir)/'`file.c
@@ -1934,13 +2028,6 @@ libcurlu_la-ldap.lo: ldap.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-ldap.lo `test -f 'ldap.c' || echo '$(srcdir)/'`ldap.c
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-ldap.lo `test -f 'ldap.c' || echo '$(srcdir)/'`ldap.c
 
-libcurlu_la-ssluse.lo: ssluse.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-ssluse.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-ssluse.Tpo -c -o libcurlu_la-ssluse.lo `test -f 'ssluse.c' || echo '$(srcdir)/'`ssluse.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-ssluse.Tpo $(DEPDIR)/libcurlu_la-ssluse.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ssluse.c' object='libcurlu_la-ssluse.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-ssluse.lo `test -f 'ssluse.c' || echo '$(srcdir)/'`ssluse.c
-
 libcurlu_la-version.lo: version.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-version.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-version.Tpo -c -o libcurlu_la-version.lo `test -f 'version.c' || echo '$(srcdir)/'`version.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-version.Tpo $(DEPDIR)/libcurlu_la-version.Plo
 libcurlu_la-version.lo: version.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-version.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-version.Tpo -c -o libcurlu_la-version.lo `test -f 'version.c' || echo '$(srcdir)/'`version.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-version.Tpo $(DEPDIR)/libcurlu_la-version.Plo
@@ -2018,13 +2105,6 @@ libcurlu_la-security.lo: security.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-security.lo `test -f 'security.c' || echo '$(srcdir)/'`security.c
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-security.lo `test -f 'security.c' || echo '$(srcdir)/'`security.c
 
-libcurlu_la-krb4.lo: krb4.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-krb4.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-krb4.Tpo -c -o libcurlu_la-krb4.lo `test -f 'krb4.c' || echo '$(srcdir)/'`krb4.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-krb4.Tpo $(DEPDIR)/libcurlu_la-krb4.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='krb4.c' object='libcurlu_la-krb4.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-krb4.lo `test -f 'krb4.c' || echo '$(srcdir)/'`krb4.c
-
 libcurlu_la-curl_fnmatch.lo: curl_fnmatch.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-curl_fnmatch.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-curl_fnmatch.Tpo -c -o libcurlu_la-curl_fnmatch.lo `test -f 'curl_fnmatch.c' || echo '$(srcdir)/'`curl_fnmatch.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-curl_fnmatch.Tpo $(DEPDIR)/libcurlu_la-curl_fnmatch.Plo
 libcurlu_la-curl_fnmatch.lo: curl_fnmatch.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-curl_fnmatch.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-curl_fnmatch.Tpo -c -o libcurlu_la-curl_fnmatch.lo `test -f 'curl_fnmatch.c' || echo '$(srcdir)/'`curl_fnmatch.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-curl_fnmatch.Tpo $(DEPDIR)/libcurlu_la-curl_fnmatch.Plo
@@ -2228,20 +2308,6 @@ libcurlu_la-select.lo: select.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-select.lo `test -f 'select.c' || echo '$(srcdir)/'`select.c
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-select.lo `test -f 'select.c' || echo '$(srcdir)/'`select.c
 
-libcurlu_la-gtls.lo: gtls.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-gtls.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-gtls.Tpo -c -o libcurlu_la-gtls.lo `test -f 'gtls.c' || echo '$(srcdir)/'`gtls.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-gtls.Tpo $(DEPDIR)/libcurlu_la-gtls.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gtls.c' object='libcurlu_la-gtls.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-gtls.lo `test -f 'gtls.c' || echo '$(srcdir)/'`gtls.c
-
-libcurlu_la-sslgen.lo: sslgen.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-sslgen.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-sslgen.Tpo -c -o libcurlu_la-sslgen.lo `test -f 'sslgen.c' || echo '$(srcdir)/'`sslgen.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-sslgen.Tpo $(DEPDIR)/libcurlu_la-sslgen.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sslgen.c' object='libcurlu_la-sslgen.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-sslgen.lo `test -f 'sslgen.c' || echo '$(srcdir)/'`sslgen.c
-
 libcurlu_la-tftp.lo: tftp.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-tftp.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-tftp.Tpo -c -o libcurlu_la-tftp.lo `test -f 'tftp.c' || echo '$(srcdir)/'`tftp.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-tftp.Tpo $(DEPDIR)/libcurlu_la-tftp.Plo
 libcurlu_la-tftp.lo: tftp.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-tftp.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-tftp.Tpo -c -o libcurlu_la-tftp.lo `test -f 'tftp.c' || echo '$(srcdir)/'`tftp.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-tftp.Tpo $(DEPDIR)/libcurlu_la-tftp.Plo
@@ -2277,20 +2343,6 @@ libcurlu_la-ssh.lo: ssh.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-ssh.lo `test -f 'ssh.c' || echo '$(srcdir)/'`ssh.c
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-ssh.lo `test -f 'ssh.c' || echo '$(srcdir)/'`ssh.c
 
-libcurlu_la-nss.lo: nss.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-nss.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-nss.Tpo -c -o libcurlu_la-nss.lo `test -f 'nss.c' || echo '$(srcdir)/'`nss.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-nss.Tpo $(DEPDIR)/libcurlu_la-nss.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='nss.c' object='libcurlu_la-nss.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-nss.lo `test -f 'nss.c' || echo '$(srcdir)/'`nss.c
-
-libcurlu_la-qssl.lo: qssl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-qssl.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-qssl.Tpo -c -o libcurlu_la-qssl.lo `test -f 'qssl.c' || echo '$(srcdir)/'`qssl.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-qssl.Tpo $(DEPDIR)/libcurlu_la-qssl.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='qssl.c' object='libcurlu_la-qssl.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-qssl.lo `test -f 'qssl.c' || echo '$(srcdir)/'`qssl.c
-
 libcurlu_la-rawstr.lo: rawstr.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-rawstr.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-rawstr.Tpo -c -o libcurlu_la-rawstr.lo `test -f 'rawstr.c' || echo '$(srcdir)/'`rawstr.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-rawstr.Tpo $(DEPDIR)/libcurlu_la-rawstr.Plo
 libcurlu_la-rawstr.lo: rawstr.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-rawstr.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-rawstr.Tpo -c -o libcurlu_la-rawstr.lo `test -f 'rawstr.c' || echo '$(srcdir)/'`rawstr.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-rawstr.Tpo $(DEPDIR)/libcurlu_la-rawstr.Plo
@@ -2403,20 +2455,6 @@ libcurlu_la-hmac.lo: hmac.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-hmac.lo `test -f 'hmac.c' || echo '$(srcdir)/'`hmac.c
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-hmac.lo `test -f 'hmac.c' || echo '$(srcdir)/'`hmac.c
 
-libcurlu_la-polarssl.lo: polarssl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-polarssl.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-polarssl.Tpo -c -o libcurlu_la-polarssl.lo `test -f 'polarssl.c' || echo '$(srcdir)/'`polarssl.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-polarssl.Tpo $(DEPDIR)/libcurlu_la-polarssl.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='polarssl.c' object='libcurlu_la-polarssl.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-polarssl.lo `test -f 'polarssl.c' || echo '$(srcdir)/'`polarssl.c
-
-libcurlu_la-polarssl_threadlock.lo: polarssl_threadlock.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-polarssl_threadlock.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-polarssl_threadlock.Tpo -c -o libcurlu_la-polarssl_threadlock.lo `test -f 'polarssl_threadlock.c' || echo '$(srcdir)/'`polarssl_threadlock.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-polarssl_threadlock.Tpo $(DEPDIR)/libcurlu_la-polarssl_threadlock.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='polarssl_threadlock.c' object='libcurlu_la-polarssl_threadlock.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-polarssl_threadlock.lo `test -f 'polarssl_threadlock.c' || echo '$(srcdir)/'`polarssl_threadlock.c
-
 libcurlu_la-curl_rtmp.lo: curl_rtmp.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-curl_rtmp.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-curl_rtmp.Tpo -c -o libcurlu_la-curl_rtmp.lo `test -f 'curl_rtmp.c' || echo '$(srcdir)/'`curl_rtmp.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-curl_rtmp.Tpo $(DEPDIR)/libcurlu_la-curl_rtmp.Plo
 libcurlu_la-curl_rtmp.lo: curl_rtmp.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-curl_rtmp.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-curl_rtmp.Tpo -c -o libcurlu_la-curl_rtmp.lo `test -f 'curl_rtmp.c' || echo '$(srcdir)/'`curl_rtmp.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-curl_rtmp.Tpo $(DEPDIR)/libcurlu_la-curl_rtmp.Plo
@@ -2445,13 +2483,6 @@ libcurlu_la-gopher.lo: gopher.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-gopher.lo `test -f 'gopher.c' || echo '$(srcdir)/'`gopher.c
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-gopher.lo `test -f 'gopher.c' || echo '$(srcdir)/'`gopher.c
 
-libcurlu_la-axtls.lo: axtls.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-axtls.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-axtls.Tpo -c -o libcurlu_la-axtls.lo `test -f 'axtls.c' || echo '$(srcdir)/'`axtls.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-axtls.Tpo $(DEPDIR)/libcurlu_la-axtls.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='axtls.c' object='libcurlu_la-axtls.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-axtls.lo `test -f 'axtls.c' || echo '$(srcdir)/'`axtls.c
-
 libcurlu_la-idn_win32.lo: idn_win32.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-idn_win32.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-idn_win32.Tpo -c -o libcurlu_la-idn_win32.lo `test -f 'idn_win32.c' || echo '$(srcdir)/'`idn_win32.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-idn_win32.Tpo $(DEPDIR)/libcurlu_la-idn_win32.Plo
 libcurlu_la-idn_win32.lo: idn_win32.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-idn_win32.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-idn_win32.Tpo -c -o libcurlu_la-idn_win32.lo `test -f 'idn_win32.c' || echo '$(srcdir)/'`idn_win32.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-idn_win32.Tpo $(DEPDIR)/libcurlu_la-idn_win32.Plo
@@ -2466,13 +2497,6 @@ libcurlu_la-http_negotiate_sspi.lo: http_negotiate_sspi.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-http_negotiate_sspi.lo `test -f 'http_negotiate_sspi.c' || echo '$(srcdir)/'`http_negotiate_sspi.c
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-http_negotiate_sspi.lo `test -f 'http_negotiate_sspi.c' || echo '$(srcdir)/'`http_negotiate_sspi.c
 
-libcurlu_la-cyassl.lo: cyassl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-cyassl.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-cyassl.Tpo -c -o libcurlu_la-cyassl.lo `test -f 'cyassl.c' || echo '$(srcdir)/'`cyassl.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-cyassl.Tpo $(DEPDIR)/libcurlu_la-cyassl.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cyassl.c' object='libcurlu_la-cyassl.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-cyassl.lo `test -f 'cyassl.c' || echo '$(srcdir)/'`cyassl.c
-
 libcurlu_la-http_proxy.lo: http_proxy.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-http_proxy.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-http_proxy.Tpo -c -o libcurlu_la-http_proxy.lo `test -f 'http_proxy.c' || echo '$(srcdir)/'`http_proxy.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-http_proxy.Tpo $(DEPDIR)/libcurlu_la-http_proxy.Plo
 libcurlu_la-http_proxy.lo: http_proxy.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-http_proxy.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-http_proxy.Tpo -c -o libcurlu_la-http_proxy.lo `test -f 'http_proxy.c' || echo '$(srcdir)/'`http_proxy.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-http_proxy.Tpo $(DEPDIR)/libcurlu_la-http_proxy.Plo
@@ -2543,13 +2567,6 @@ libcurlu_la-curl_sasl.lo: curl_sasl.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-curl_sasl.lo `test -f 'curl_sasl.c' || echo '$(srcdir)/'`curl_sasl.c
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-curl_sasl.lo `test -f 'curl_sasl.c' || echo '$(srcdir)/'`curl_sasl.c
 
-libcurlu_la-curl_schannel.lo: curl_schannel.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-curl_schannel.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-curl_schannel.Tpo -c -o libcurlu_la-curl_schannel.lo `test -f 'curl_schannel.c' || echo '$(srcdir)/'`curl_schannel.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-curl_schannel.Tpo $(DEPDIR)/libcurlu_la-curl_schannel.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='curl_schannel.c' object='libcurlu_la-curl_schannel.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-curl_schannel.lo `test -f 'curl_schannel.c' || echo '$(srcdir)/'`curl_schannel.c
-
 libcurlu_la-curl_multibyte.lo: curl_multibyte.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-curl_multibyte.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-curl_multibyte.Tpo -c -o libcurlu_la-curl_multibyte.lo `test -f 'curl_multibyte.c' || echo '$(srcdir)/'`curl_multibyte.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-curl_multibyte.Tpo $(DEPDIR)/libcurlu_la-curl_multibyte.Plo
 libcurlu_la-curl_multibyte.lo: curl_multibyte.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-curl_multibyte.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-curl_multibyte.Tpo -c -o libcurlu_la-curl_multibyte.lo `test -f 'curl_multibyte.c' || echo '$(srcdir)/'`curl_multibyte.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-curl_multibyte.Tpo $(DEPDIR)/libcurlu_la-curl_multibyte.Plo
@@ -2557,13 +2574,6 @@ libcurlu_la-curl_multibyte.lo: curl_multibyte.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-curl_multibyte.lo `test -f 'curl_multibyte.c' || echo '$(srcdir)/'`curl_multibyte.c
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-curl_multibyte.lo `test -f 'curl_multibyte.c' || echo '$(srcdir)/'`curl_multibyte.c
 
-libcurlu_la-curl_darwinssl.lo: curl_darwinssl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-curl_darwinssl.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-curl_darwinssl.Tpo -c -o libcurlu_la-curl_darwinssl.lo `test -f 'curl_darwinssl.c' || echo '$(srcdir)/'`curl_darwinssl.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-curl_darwinssl.Tpo $(DEPDIR)/libcurlu_la-curl_darwinssl.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='curl_darwinssl.c' object='libcurlu_la-curl_darwinssl.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-curl_darwinssl.lo `test -f 'curl_darwinssl.c' || echo '$(srcdir)/'`curl_darwinssl.c
-
 libcurlu_la-hostcheck.lo: hostcheck.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-hostcheck.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-hostcheck.Tpo -c -o libcurlu_la-hostcheck.lo `test -f 'hostcheck.c' || echo '$(srcdir)/'`hostcheck.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-hostcheck.Tpo $(DEPDIR)/libcurlu_la-hostcheck.Plo
 libcurlu_la-hostcheck.lo: hostcheck.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-hostcheck.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-hostcheck.Tpo -c -o libcurlu_la-hostcheck.lo `test -f 'hostcheck.c' || echo '$(srcdir)/'`hostcheck.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-hostcheck.Tpo $(DEPDIR)/libcurlu_la-hostcheck.Plo
@@ -2606,18 +2616,124 @@ libcurlu_la-x509asn1.lo: x509asn1.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-x509asn1.lo `test -f 'x509asn1.c' || echo '$(srcdir)/'`x509asn1.c
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-x509asn1.lo `test -f 'x509asn1.c' || echo '$(srcdir)/'`x509asn1.c
 
-libcurlu_la-gskit.lo: gskit.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-gskit.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-gskit.Tpo -c -o libcurlu_la-gskit.lo `test -f 'gskit.c' || echo '$(srcdir)/'`gskit.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-gskit.Tpo $(DEPDIR)/libcurlu_la-gskit.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gskit.c' object='libcurlu_la-gskit.lo' libtool=yes @AMDEPBACKSLASH@
+libcurlu_la-http2.lo: http2.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-http2.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-http2.Tpo -c -o libcurlu_la-http2.lo `test -f 'http2.c' || echo '$(srcdir)/'`http2.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-http2.Tpo $(DEPDIR)/libcurlu_la-http2.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='http2.c' object='libcurlu_la-http2.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-http2.lo `test -f 'http2.c' || echo '$(srcdir)/'`http2.c
+
+libcurlu_la-curl_sasl_sspi.lo: curl_sasl_sspi.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-curl_sasl_sspi.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-curl_sasl_sspi.Tpo -c -o libcurlu_la-curl_sasl_sspi.lo `test -f 'curl_sasl_sspi.c' || echo '$(srcdir)/'`curl_sasl_sspi.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-curl_sasl_sspi.Tpo $(DEPDIR)/libcurlu_la-curl_sasl_sspi.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='curl_sasl_sspi.c' object='libcurlu_la-curl_sasl_sspi.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-curl_sasl_sspi.lo `test -f 'curl_sasl_sspi.c' || echo '$(srcdir)/'`curl_sasl_sspi.c
+
+libcurlu_la-smb.lo: smb.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-smb.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-smb.Tpo -c -o libcurlu_la-smb.lo `test -f 'smb.c' || echo '$(srcdir)/'`smb.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-smb.Tpo $(DEPDIR)/libcurlu_la-smb.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='smb.c' object='libcurlu_la-smb.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-smb.lo `test -f 'smb.c' || echo '$(srcdir)/'`smb.c
+
+libcurlu_la-curl_sasl_gssapi.lo: curl_sasl_gssapi.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-curl_sasl_gssapi.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-curl_sasl_gssapi.Tpo -c -o libcurlu_la-curl_sasl_gssapi.lo `test -f 'curl_sasl_gssapi.c' || echo '$(srcdir)/'`curl_sasl_gssapi.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-curl_sasl_gssapi.Tpo $(DEPDIR)/libcurlu_la-curl_sasl_gssapi.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='curl_sasl_gssapi.c' object='libcurlu_la-curl_sasl_gssapi.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-curl_sasl_gssapi.lo `test -f 'curl_sasl_gssapi.c' || echo '$(srcdir)/'`curl_sasl_gssapi.c
+
+libcurlu_la-curl_endian.lo: curl_endian.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-curl_endian.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-curl_endian.Tpo -c -o libcurlu_la-curl_endian.lo `test -f 'curl_endian.c' || echo '$(srcdir)/'`curl_endian.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-curl_endian.Tpo $(DEPDIR)/libcurlu_la-curl_endian.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='curl_endian.c' object='libcurlu_la-curl_endian.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-curl_endian.lo `test -f 'curl_endian.c' || echo '$(srcdir)/'`curl_endian.c
+
+vtls/libcurlu_la-openssl.lo: vtls/openssl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vtls/libcurlu_la-openssl.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-openssl.Tpo -c -o vtls/libcurlu_la-openssl.lo `test -f 'vtls/openssl.c' || echo '$(srcdir)/'`vtls/openssl.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-openssl.Tpo vtls/$(DEPDIR)/libcurlu_la-openssl.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/openssl.c' object='vtls/libcurlu_la-openssl.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurlu_la-openssl.lo `test -f 'vtls/openssl.c' || echo '$(srcdir)/'`vtls/openssl.c
+
+vtls/libcurlu_la-gtls.lo: vtls/gtls.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vtls/libcurlu_la-gtls.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-gtls.Tpo -c -o vtls/libcurlu_la-gtls.lo `test -f 'vtls/gtls.c' || echo '$(srcdir)/'`vtls/gtls.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-gtls.Tpo vtls/$(DEPDIR)/libcurlu_la-gtls.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/gtls.c' object='vtls/libcurlu_la-gtls.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurlu_la-gtls.lo `test -f 'vtls/gtls.c' || echo '$(srcdir)/'`vtls/gtls.c
+
+vtls/libcurlu_la-vtls.lo: vtls/vtls.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vtls/libcurlu_la-vtls.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-vtls.Tpo -c -o vtls/libcurlu_la-vtls.lo `test -f 'vtls/vtls.c' || echo '$(srcdir)/'`vtls/vtls.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-vtls.Tpo vtls/$(DEPDIR)/libcurlu_la-vtls.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/vtls.c' object='vtls/libcurlu_la-vtls.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurlu_la-vtls.lo `test -f 'vtls/vtls.c' || echo '$(srcdir)/'`vtls/vtls.c
+
+vtls/libcurlu_la-nss.lo: vtls/nss.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vtls/libcurlu_la-nss.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-nss.Tpo -c -o vtls/libcurlu_la-nss.lo `test -f 'vtls/nss.c' || echo '$(srcdir)/'`vtls/nss.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-nss.Tpo vtls/$(DEPDIR)/libcurlu_la-nss.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/nss.c' object='vtls/libcurlu_la-nss.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurlu_la-nss.lo `test -f 'vtls/nss.c' || echo '$(srcdir)/'`vtls/nss.c
+
+vtls/libcurlu_la-polarssl.lo: vtls/polarssl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vtls/libcurlu_la-polarssl.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-polarssl.Tpo -c -o vtls/libcurlu_la-polarssl.lo `test -f 'vtls/polarssl.c' || echo '$(srcdir)/'`vtls/polarssl.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-polarssl.Tpo vtls/$(DEPDIR)/libcurlu_la-polarssl.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/polarssl.c' object='vtls/libcurlu_la-polarssl.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurlu_la-polarssl.lo `test -f 'vtls/polarssl.c' || echo '$(srcdir)/'`vtls/polarssl.c
+
+vtls/libcurlu_la-polarssl_threadlock.lo: vtls/polarssl_threadlock.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vtls/libcurlu_la-polarssl_threadlock.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-polarssl_threadlock.Tpo -c -o vtls/libcurlu_la-polarssl_threadlock.lo `test -f 'vtls/polarssl_threadlock.c' || echo '$(srcdir)/'`vtls/polarssl_threadlock.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-polarssl_threadlock.Tpo vtls/$(DEPDIR)/libcurlu_la-polarssl_threadlock.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/polarssl_threadlock.c' object='vtls/libcurlu_la-polarssl_threadlock.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurlu_la-polarssl_threadlock.lo `test -f 'vtls/polarssl_threadlock.c' || echo '$(srcdir)/'`vtls/polarssl_threadlock.c
+
+vtls/libcurlu_la-axtls.lo: vtls/axtls.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vtls/libcurlu_la-axtls.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-axtls.Tpo -c -o vtls/libcurlu_la-axtls.lo `test -f 'vtls/axtls.c' || echo '$(srcdir)/'`vtls/axtls.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-axtls.Tpo vtls/$(DEPDIR)/libcurlu_la-axtls.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/axtls.c' object='vtls/libcurlu_la-axtls.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurlu_la-axtls.lo `test -f 'vtls/axtls.c' || echo '$(srcdir)/'`vtls/axtls.c
+
+vtls/libcurlu_la-cyassl.lo: vtls/cyassl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vtls/libcurlu_la-cyassl.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-cyassl.Tpo -c -o vtls/libcurlu_la-cyassl.lo `test -f 'vtls/cyassl.c' || echo '$(srcdir)/'`vtls/cyassl.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-cyassl.Tpo vtls/$(DEPDIR)/libcurlu_la-cyassl.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/cyassl.c' object='vtls/libcurlu_la-cyassl.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurlu_la-cyassl.lo `test -f 'vtls/cyassl.c' || echo '$(srcdir)/'`vtls/cyassl.c
+
+vtls/libcurlu_la-curl_schannel.lo: vtls/curl_schannel.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vtls/libcurlu_la-curl_schannel.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-curl_schannel.Tpo -c -o vtls/libcurlu_la-curl_schannel.lo `test -f 'vtls/curl_schannel.c' || echo '$(srcdir)/'`vtls/curl_schannel.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-curl_schannel.Tpo vtls/$(DEPDIR)/libcurlu_la-curl_schannel.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/curl_schannel.c' object='vtls/libcurlu_la-curl_schannel.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurlu_la-curl_schannel.lo `test -f 'vtls/curl_schannel.c' || echo '$(srcdir)/'`vtls/curl_schannel.c
+
+vtls/libcurlu_la-curl_darwinssl.lo: vtls/curl_darwinssl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vtls/libcurlu_la-curl_darwinssl.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-curl_darwinssl.Tpo -c -o vtls/libcurlu_la-curl_darwinssl.lo `test -f 'vtls/curl_darwinssl.c' || echo '$(srcdir)/'`vtls/curl_darwinssl.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-curl_darwinssl.Tpo vtls/$(DEPDIR)/libcurlu_la-curl_darwinssl.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/curl_darwinssl.c' object='vtls/libcurlu_la-curl_darwinssl.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurlu_la-curl_darwinssl.lo `test -f 'vtls/curl_darwinssl.c' || echo '$(srcdir)/'`vtls/curl_darwinssl.c
+
+vtls/libcurlu_la-gskit.lo: vtls/gskit.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vtls/libcurlu_la-gskit.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-gskit.Tpo -c -o vtls/libcurlu_la-gskit.lo `test -f 'vtls/gskit.c' || echo '$(srcdir)/'`vtls/gskit.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-gskit.Tpo vtls/$(DEPDIR)/libcurlu_la-gskit.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/gskit.c' object='vtls/libcurlu_la-gskit.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-gskit.lo `test -f 'gskit.c' || echo '$(srcdir)/'`gskit.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurlu_la-gskit.lo `test -f 'vtls/gskit.c' || echo '$(srcdir)/'`vtls/gskit.c
 
 mostlyclean-libtool:
        -rm -f *.lo
 
 clean-libtool:
        -rm -rf .libs _libs
 
 mostlyclean-libtool:
        -rm -f *.lo
 
 clean-libtool:
        -rm -rf .libs _libs
+       -rm -rf vtls/.libs vtls/_libs
 
 ID: $(am__tagged_files)
        $(am__define_uniq_tagged_files); mkid -fID $$unique
 
 ID: $(am__tagged_files)
        $(am__define_uniq_tagged_files); mkid -fID $$unique
@@ -2735,6 +2851,8 @@ clean-generic:
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
        -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
        -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+       -rm -f vtls/$(DEPDIR)/$(am__dirstamp)
+       -rm -f vtls/$(am__dirstamp)
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
@@ -2745,7 +2863,7 @@ clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
        clean-noinstLTLIBRARIES mostlyclean-am
 
 distclean: distclean-am
        clean-noinstLTLIBRARIES mostlyclean-am
 
 distclean: distclean-am
-       -rm -rf ./$(DEPDIR)
+       -rm -rf ./$(DEPDIR) vtls/$(DEPDIR)
        -rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
        distclean-hdr distclean-tags
        -rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
        distclean-hdr distclean-tags
@@ -2791,7 +2909,7 @@ install-ps-am:
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
-       -rm -rf ./$(DEPDIR)
+       -rm -rf ./$(DEPDIR) vtls/$(DEPDIR)
        -rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
        -rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
index 586d94a..8f9d16d 100644 (file)
@@ -1,48 +1,71 @@
-# ./lib/Makefile.inc
-# Using the backslash as line continuation character might be problematic
-# with some make flavours, as Watcom's wmake showed us already. If we
-# ever want to change this in a portable manner then we should consider
-# this idea (posted to the libcurl list by Adam Kellas):
-# CSRC1 = file1.c file2.c file3.c
-# CSRC2 = file4.c file5.c file6.c
-# CSOURCES = $(CSRC1) $(CSRC2)
+#***************************************************************************
+#                                  _   _ ____  _
+#  Project                     ___| | | |  _ \| |
+#                             / __| | | | |_) | |
+#                            | (__| |_| |  _ <| |___
+#                             \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at http://curl.haxx.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
 
 
-CSOURCES = file.c timeval.c base64.c hostip.c progress.c formdata.c    \
-  cookie.c http.c sendf.c ftp.c url.c dict.c if2ip.c speedcheck.c      \
-  ldap.c ssluse.c version.c getenv.c escape.c mprintf.c telnet.c       \
-  netrc.c getinfo.c transfer.c strequal.c easy.c security.c krb4.c     \
-  curl_fnmatch.c fileinfo.c ftplistparser.c wildcard.c krb5.c          \
-  memdebug.c http_chunks.c strtok.c connect.c llist.c hash.c multi.c   \
-  content_encoding.c share.c http_digest.c md4.c md5.c \
-  http_negotiate.c inet_pton.c strtoofft.c strerror.c amigaos.c                \
-  hostasyn.c hostip4.c hostip6.c hostsyn.c inet_ntop.c parsedate.c     \
-  select.c gtls.c sslgen.c tftp.c splay.c strdup.c socks.c ssh.c nss.c \
-  qssl.c rawstr.c curl_addrinfo.c socks_gssapi.c socks_sspi.c          \
-  curl_sspi.c slist.c nonblock.c curl_memrchr.c imap.c pop3.c smtp.c   \
-  pingpong.c rtsp.c curl_threads.c warnless.c hmac.c polarssl.c                \
-  polarssl_threadlock.c curl_rtmp.c openldap.c curl_gethostname.c      \
-  gopher.c axtls.c idn_win32.c http_negotiate_sspi.c cyassl.c          \
-  http_proxy.c non-ascii.c asyn-ares.c asyn-thread.c curl_gssapi.c     \
-  curl_ntlm.c curl_ntlm_wb.c curl_ntlm_core.c curl_ntlm_msgs.c         \
-  curl_sasl.c curl_schannel.c curl_multibyte.c curl_darwinssl.c                \
+LIB_VTLS_CFILES = vtls/openssl.c vtls/gtls.c vtls/vtls.c vtls/nss.c     \
+  vtls/polarssl.c vtls/polarssl_threadlock.c vtls/axtls.c               \
+  vtls/cyassl.c vtls/curl_schannel.c vtls/curl_darwinssl.c vtls/gskit.c
+
+LIB_VTLS_HFILES = vtls/openssl.h vtls/vtls.h vtls/gtls.h                \
+  vtls/nssg.h vtls/polarssl.h vtls/polarssl_threadlock.h vtls/axtls.h   \
+  vtls/cyassl.h vtls/curl_schannel.h vtls/curl_darwinssl.h vtls/gskit.h
+
+LIB_CFILES = file.c timeval.c base64.c hostip.c progress.c formdata.c   \
+  cookie.c http.c sendf.c ftp.c url.c dict.c if2ip.c speedcheck.c       \
+  ldap.c version.c getenv.c escape.c mprintf.c telnet.c netrc.c         \
+  getinfo.c transfer.c strequal.c easy.c security.c curl_fnmatch.c      \
+  fileinfo.c ftplistparser.c wildcard.c krb5.c memdebug.c http_chunks.c \
+  strtok.c connect.c llist.c hash.c multi.c content_encoding.c share.c  \
+  http_digest.c md4.c md5.c http_negotiate.c inet_pton.c strtoofft.c    \
+  strerror.c amigaos.c hostasyn.c hostip4.c hostip6.c hostsyn.c         \
+  inet_ntop.c parsedate.c select.c tftp.c splay.c strdup.c socks.c      \
+  ssh.c rawstr.c curl_addrinfo.c socks_gssapi.c socks_sspi.c            \
+  curl_sspi.c slist.c nonblock.c curl_memrchr.c imap.c pop3.c smtp.c    \
+  pingpong.c rtsp.c curl_threads.c warnless.c hmac.c curl_rtmp.c        \
+  openldap.c curl_gethostname.c gopher.c idn_win32.c                    \
+  http_negotiate_sspi.c http_proxy.c non-ascii.c asyn-ares.c            \
+  asyn-thread.c curl_gssapi.c curl_ntlm.c curl_ntlm_wb.c                \
+  curl_ntlm_core.c curl_ntlm_msgs.c curl_sasl.c curl_multibyte.c        \
   hostcheck.c bundles.c conncache.c pipeline.c dotdot.c x509asn1.c      \
   hostcheck.c bundles.c conncache.c pipeline.c dotdot.c x509asn1.c      \
-  gskit.c
+  http2.c curl_sasl_sspi.c smb.c curl_sasl_gssapi.c curl_endian.c
+
+LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \
+  formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h if2ip.h         \
+  speedcheck.h urldata.h curl_ldap.h escape.h telnet.h getinfo.h        \
+  strequal.h curl_sec.h memdebug.h http_chunks.h curl_fnmatch.h         \
+  wildcard.h fileinfo.h ftplistparser.h strtok.h connect.h llist.h      \
+  hash.h content_encoding.h share.h curl_md4.h curl_md5.h http_digest.h \
+  http_negotiate.h inet_pton.h amigaos.h strtoofft.h strerror.h         \
+  inet_ntop.h curlx.h curl_memory.h curl_setup.h transfer.h select.h    \
+  easyif.h multiif.h parsedate.h tftp.h sockaddr.h splay.h strdup.h     \
+  socks.h ssh.h curl_base64.h rawstr.h curl_addrinfo.h curl_sspi.h      \
+  slist.h nonblock.h curl_memrchr.h imap.h pop3.h smtp.h pingpong.h     \
+  rtsp.h curl_threads.h warnless.h curl_hmac.h curl_rtmp.h              \
+  curl_gethostname.h gopher.h http_proxy.h non-ascii.h asyn.h           \
+  curl_ntlm.h curl_gssapi.h curl_ntlm_wb.h curl_ntlm_core.h             \
+  curl_ntlm_msgs.h curl_sasl.h curl_multibyte.h hostcheck.h bundles.h   \
+  conncache.h curl_setup_once.h multihandle.h setup-vms.h pipeline.h    \
+  dotdot.h x509asn1.h http2.h sigpipe.h smb.h curl_endian.h
+
+LIB_RCFILES = libcurl.rc
 
 
-HHEADERS = arpa_telnet.h netrc.h file.h timeval.h qssl.h hostip.h      \
-  progress.h formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h     \
-  if2ip.h speedcheck.h urldata.h curl_ldap.h ssluse.h escape.h telnet.h        \
-  getinfo.h strequal.h krb4.h memdebug.h http_chunks.h \
-  curl_fnmatch.h wildcard.h fileinfo.h ftplistparser.h strtok.h                \
-  connect.h llist.h hash.h content_encoding.h share.h curl_md4.h       \
-  curl_md5.h http_digest.h http_negotiate.h inet_pton.h amigaos.h      \
-  strtoofft.h strerror.h inet_ntop.h curlx.h curl_memory.h curl_setup.h        \
-  transfer.h select.h easyif.h multiif.h parsedate.h sslgen.h gtls.h   \
-  tftp.h sockaddr.h splay.h strdup.h socks.h ssh.h nssg.h curl_base64.h        \
-  rawstr.h curl_addrinfo.h curl_sspi.h slist.h nonblock.h              \
-  curl_memrchr.h imap.h pop3.h smtp.h pingpong.h rtsp.h curl_threads.h \
-  warnless.h curl_hmac.h polarssl.h polarssl_threadlock.h curl_rtmp.h  \
-  curl_gethostname.h gopher.h axtls.h cyassl.h http_proxy.h non-ascii.h        \
-  asyn.h curl_ntlm.h curl_gssapi.h curl_ntlm_wb.h curl_ntlm_core.h     \
-  curl_ntlm_msgs.h curl_sasl.h curl_schannel.h curl_multibyte.h                \
-  curl_darwinssl.h hostcheck.h bundles.h conncache.h curl_setup_once.h \
-  multihandle.h setup-vms.h pipeline.h dotdot.h x509asn1.h gskit.h
+CSOURCES = $(LIB_CFILES) $(LIB_VTLS_CFILES)
+HHEADERS = $(LIB_HFILES) $(LIB_VTLS_HFILES)
index a401c71..f3673c5 100644 (file)
@@ -18,7 +18,7 @@ ZLIB_PATH = ../../zlib-1.2.8
 endif
 # Edit the path below to point to the base of your OpenSSL package.
 ifndef OPENSSL_PATH
 endif
 # Edit the path below to point to the base of your OpenSSL package.
 ifndef OPENSSL_PATH
-OPENSSL_PATH = ../../openssl-0.9.8y
+OPENSSL_PATH = ../../openssl-0.9.8zc
 endif
 # Edit the path below to point to the base of your LibSSH2 package.
 ifndef LIBSSH2_PATH
 endif
 # Edit the path below to point to the base of your LibSSH2 package.
 ifndef LIBSSH2_PATH
@@ -42,6 +42,10 @@ endif
 ifndef LDAP_SDK
 LDAP_SDK = c:/novell/ndk/cldapsdk/win32
 endif
 ifndef LDAP_SDK
 LDAP_SDK = c:/novell/ndk/cldapsdk/win32
 endif
+# Edit the path below to point to the base of your nghttp2 package.
+ifndef NGHTTP2_PATH
+NGHTTP2_PATH = ../../nghttp2-0.6.7
+endif
 
 PROOT = ..
 
 
 PROOT = ..
 
@@ -50,25 +54,34 @@ ifndef LIBCARES_PATH
 LIBCARES_PATH = $(PROOT)/ares
 endif
 
 LIBCARES_PATH = $(PROOT)/ares
 endif
 
-# Edit the var below to set to your architecture or set environment var.
-ifndef ARCH
-ARCH = w32
-endif
-
 CC     = $(CROSSPREFIX)gcc
 CFLAGS = -g -O2 -Wall
 CFLAGS += -fno-strict-aliasing
 CC     = $(CROSSPREFIX)gcc
 CFLAGS = -g -O2 -Wall
 CFLAGS += -fno-strict-aliasing
-ifeq ($(ARCH),w64)
-CFLAGS += -D_AMD64_
-endif
 # comment LDFLAGS below to keep debug info
 LDFLAGS        = -s
 AR     = $(CROSSPREFIX)ar
 RANLIB = $(CROSSPREFIX)ranlib
 RC     = $(CROSSPREFIX)windres
 # comment LDFLAGS below to keep debug info
 LDFLAGS        = -s
 AR     = $(CROSSPREFIX)ar
 RANLIB = $(CROSSPREFIX)ranlib
 RC     = $(CROSSPREFIX)windres
-RCFLAGS        = --include-dir=$(PROOT)/include -DDEBUGBUILD=0 -O COFF -i
+RCFLAGS        = --include-dir=$(PROOT)/include -DDEBUGBUILD=0 -O COFF
 STRIP  = $(CROSSPREFIX)strip -g
 
 STRIP  = $(CROSSPREFIX)strip -g
 
+# Set environment var ARCH to your architecture to override autodetection.
+ifndef ARCH
+ifeq ($(findstring x86_64,$(shell $(CC) -dumpmachine)),x86_64)
+ARCH   = w64
+else
+ARCH   = w32
+endif
+endif
+
+ifeq ($(ARCH),w64)
+CFLAGS  += -D_AMD64_
+RCFLAGS += -F pe-x86-64
+else
+CFLAGS  += -m32
+RCFLAGS += -F pe-i386
+endif
+
 # Platform-dependent helper tool macros
 ifeq ($(findstring /sh,$(SHELL)),/sh)
 DEL    = rm -f $1
 # Platform-dependent helper tool macros
 ifeq ($(findstring /sh,$(SHELL)),/sh)
 DEL    = rm -f $1
@@ -137,9 +150,6 @@ endif
 ifeq ($(findstring -sspi,$(CFG)),-sspi)
 SSPI = 1
 endif
 ifeq ($(findstring -sspi,$(CFG)),-sspi)
 SSPI = 1
 endif
-ifeq ($(findstring -spnego,$(CFG)),-spnego)
-SPNEGO = 1
-endif
 ifeq ($(findstring -ldaps,$(CFG)),-ldaps)
 LDAPS = 1
 endif
 ifeq ($(findstring -ldaps,$(CFG)),-ldaps)
 LDAPS = 1
 endif
@@ -150,6 +160,9 @@ ifeq ($(findstring -winssl,$(CFG)),-winssl)
 WINSSL = 1
 SSPI = 1
 endif
 WINSSL = 1
 SSPI = 1
 endif
+ifeq ($(findstring -nghttp2,$(CFG)),-nghttp2)
+NGHTTP2 = 1
+endif
 
 INCLUDES = -I. -I../include
 CFLAGS += -DBUILDING_LIBCURL
 
 INCLUDES = -I. -I../include
 CFLAGS += -DBUILDING_LIBCURL
@@ -169,6 +182,11 @@ ifdef RTMP
   CFLAGS += -DUSE_LIBRTMP
   DLL_LIBS += -L"$(LIBRTMP_PATH)/librtmp" -lrtmp -lwinmm
 endif
   CFLAGS += -DUSE_LIBRTMP
   DLL_LIBS += -L"$(LIBRTMP_PATH)/librtmp" -lrtmp -lwinmm
 endif
+ifdef NGHTTP2
+  INCLUDES += -I"$(NGHTTP2_PATH)/include"
+  CFLAGS += -DUSE_NGHTTP2
+  DLL_LIBS += -L"$(NGHTTP2_PATH)/lib" -lnghttp2
+endif
 ifdef SSH2
   INCLUDES += -I"$(LIBSSH2_PATH)/include" -I"$(LIBSSH2_PATH)/win32"
   CFLAGS += -DUSE_LIBSSH2 -DHAVE_LIBSSH2_H
 ifdef SSH2
   INCLUDES += -I"$(LIBSSH2_PATH)/include" -I"$(LIBSSH2_PATH)/win32"
   CFLAGS += -DUSE_LIBSSH2 -DHAVE_LIBSSH2_H
@@ -285,10 +303,10 @@ $(libcurl_dll_LIBRARY): $(libcurl_a_OBJECTS) $(RESOURCE) $(libcurl_dll_DEPENDENC
          $(libcurl_a_OBJECTS) $(RESOURCE) $(DLL_LIBS)
 
 %.o: %.c $(PROOT)/include/curl/curlbuild.h
          $(libcurl_a_OBJECTS) $(RESOURCE) $(DLL_LIBS)
 
 %.o: %.c $(PROOT)/include/curl/curlbuild.h
-       $(CC) $(INCLUDES) $(CFLAGS) -c $<
+       $(CC) $(INCLUDES) $(CFLAGS) -c $< -o $@
 
 %.res: %.rc
 
 %.res: %.rc
-       $(RC) $(RCFLAGS) $< -o $@
+       $(RC) $(RCFLAGS) -i $< -o $@
 
 clean:
 ifeq "$(wildcard $(PROOT)/include/curl/curlbuild.h.dist)" "$(PROOT)/include/curl/curlbuild.h.dist"
 
 clean:
 ifeq "$(wildcard $(PROOT)/include/curl/curlbuild.h.dist)" "$(PROOT)/include/curl/curlbuild.h.dist"
index 058047b..802959c 100644 (file)
@@ -19,7 +19,7 @@ endif
 
 # Edit the path below to point to the base of your OpenSSL package.
 ifndef OPENSSL_PATH
 
 # Edit the path below to point to the base of your OpenSSL package.
 ifndef OPENSSL_PATH
-OPENSSL_PATH = ../../openssl-0.9.8y
+OPENSSL_PATH = ../../openssl-0.9.8zc
 endif
 
 # Edit the path below to point to the base of your LibSSH2 package.
 endif
 
 # Edit the path below to point to the base of your LibSSH2 package.
@@ -42,6 +42,11 @@ ifndef LIBRTMP_PATH
 LIBRTMP_PATH = ../../librtmp-2.3
 endif
 
 LIBRTMP_PATH = ../../librtmp-2.3
 endif
 
+# Edit the path below to point to the base of your nghttp2 package.
+ifndef NGHTTP2_PATH
+NGHTTP2_PATH = ../../nghttp2-0.6.7
+endif
+
 # Edit the path below to point to the base of your fbopenssl package.
 ifndef FBOPENSSL_PATH
 FBOPENSSL_PATH = ../../fbopenssl-0.4
 # Edit the path below to point to the base of your fbopenssl package.
 ifndef FBOPENSSL_PATH
 FBOPENSSL_PATH = ../../fbopenssl-0.4
@@ -217,8 +222,8 @@ endif
 ifeq ($(findstring -idn,$(CFG)),-idn)
 WITH_IDN = 1
 endif
 ifeq ($(findstring -idn,$(CFG)),-idn)
 WITH_IDN = 1
 endif
-ifeq ($(findstring -spnego,$(CFG)),-spnego)
-WITH_SPNEGO = 1
+ifeq ($(findstring -nghttp2,$(CFG)),-nghttp2)
+WITH_NGHTTP2 = 1
 endif
 ifeq ($(findstring -ipv6,$(CFG)),-ipv6)
 ENABLE_IPV6 = 1
 endif
 ifeq ($(findstring -ipv6,$(CFG)),-ipv6)
 ENABLE_IPV6 = 1
@@ -247,10 +252,6 @@ ifdef WITH_SSL
        LDLIBS += $(OPENSSL_PATH)/out_nw_$(LIBARCH_L)/crypto.$(LIBEXT)
        IMPORTS += GetProcessSwitchCount RunningProcess
        INSTDEP += ca-bundle.crt
        LDLIBS += $(OPENSSL_PATH)/out_nw_$(LIBARCH_L)/crypto.$(LIBEXT)
        IMPORTS += GetProcessSwitchCount RunningProcess
        INSTDEP += ca-bundle.crt
-ifdef WITH_SPNEGO
-       INCLUDES += -I$(FBOPENSSL_PATH)/include
-       LDLIBS += $(FBOPENSSL_PATH)/nw/fbopenssl.$(LIBEXT)
-endif
 else
 ifdef WITH_AXTLS
        INCLUDES += -I$(AXTLS_PATH)/inc
 else
 ifdef WITH_AXTLS
        INCLUDES += -I$(AXTLS_PATH)/inc
@@ -276,6 +277,10 @@ ifdef WITH_IDN
        INCLUDES += -I$(LIBIDN_PATH)/include
        LDLIBS += $(LIBIDN_PATH)/lib/libidn.$(LIBEXT)
 endif
        INCLUDES += -I$(LIBIDN_PATH)/include
        LDLIBS += $(LIBIDN_PATH)/lib/libidn.$(LIBEXT)
 endif
+ifdef WITH_NGHTTP2
+       INCLUDES += -I$(NGHTTP2_PATH)/include
+       LDLIBS += $(NGHTTP2_PATH)/lib/libnghttp2.$(LIBEXT)
+endif
 
 ifeq ($(LIBARCH),LIBC)
        INCLUDES += -I$(NDK_LIBC)/include
 
 ifeq ($(LIBARCH),LIBC)
        INCLUDES += -I$(NDK_LIBC)/include
@@ -315,10 +320,12 @@ endif
 # Makefile.inc provides the CSOURCES and HHEADERS defines
 include Makefile.inc
 
 # Makefile.inc provides the CSOURCES and HHEADERS defines
 include Makefile.inc
 
-OBJS   := $(patsubst %.c,$(OBJDIR)/%.o,$(strip $(CSOURCES))) $(OBJDIR)/nwos.o
+OBJS   := $(patsubst %.c,$(OBJDIR)/%.o,$(strip $(notdir $(CSOURCES)))) $(OBJDIR)/nwos.o
 
 OBJL   = $(OBJS) $(OBJDIR)/nwlib.o $(LDLIBS)
 
 
 OBJL   = $(OBJS) $(OBJDIR)/nwlib.o $(LDLIBS)
 
+vpath %.c . vtls
+
 all: lib nlm
 
 nlm: prebuild $(TARGET).nlm
 all: lib nlm
 
 nlm: prebuild $(TARGET).nlm
@@ -650,6 +657,9 @@ endif
 ifdef WITH_RTMP
        @echo $(DL)#define USE_LIBRTMP 1$(DL) >> $@
 endif
 ifdef WITH_RTMP
        @echo $(DL)#define USE_LIBRTMP 1$(DL) >> $@
 endif
+ifdef WITH_NGHTTP2
+       @echo $(DL)#define USE_NGHTTP2 1$(DL) >> $@
+endif
        @echo $(DL)#ifdef __GNUC__$(DL) >> $@
        @echo $(DL)#define HAVE_VARIADIC_MACROS_GCC 1$(DL) >> $@
        @echo $(DL)#else$(DL) >> $@
        @echo $(DL)#ifdef __GNUC__$(DL) >> $@
        @echo $(DL)#define HAVE_VARIADIC_MACROS_GCC 1$(DL) >> $@
        @echo $(DL)#else$(DL) >> $@
@@ -690,15 +700,20 @@ ifdef WITH_ZLIB
 else
        @echo zlib support:    no
 endif
 else
        @echo zlib support:    no
 endif
+ifdef WITH_NGHTTP2
+       @echo http2 support:   enabled
+else
+       @echo http2 support:   no
+endif
 ifdef WITH_ARES
        @echo c-ares support:  enabled
 else
        @echo c-ares support:  no
 endif
 ifdef ENABLE_IPV6
 ifdef WITH_ARES
        @echo c-ares support:  enabled
 else
        @echo c-ares support:  no
 endif
 ifdef ENABLE_IPV6
-       @echo ipv6 support:    enabled
+       @echo IPv6 support:    enabled
 else
 else
-       @echo ipv6 support:    no
+       @echo IPv6 support:    no
 endif
 
 $(CURL_INC)/curl/curlbuild.h: Makefile.netware FORCE
 endif
 
 $(CURL_INC)/curl/curlbuild.h: Makefile.netware FORCE
index b4a8354..461e4f7 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___\r
 #                             \___|\___/|_| \_\_____|\r
 #\r
 #                            | (__| |_| |  _ <| |___\r
 #                             \___|\___/|_| \_\_____|\r
 #\r
-# Copyright (C) 1999 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.\r
+# Copyright (C) 1999 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.\r
 #\r
 # This software is licensed as described in the file COPYING, which\r
 # you should have received as part of this distribution. The terms\r
 #\r
 # This software is licensed as described in the file COPYING, which\r
 # you should have received as part of this distribution. The terms\r
@@ -65,7 +65,7 @@
 !INCLUDE ..\winbuild\Makefile.msvc.names\r
 \r
 !IFNDEF OPENSSL_PATH\r
 !INCLUDE ..\winbuild\Makefile.msvc.names\r
 \r
 !IFNDEF OPENSSL_PATH\r
-OPENSSL_PATH   = ../../openssl-0.9.8y\r
+OPENSSL_PATH   = ../../openssl-0.9.8zc\r
 !ENDIF\r
 \r
 !IFNDEF LIBSSH2_PATH\r
 !ENDIF\r
 \r
 !IFNDEF LIBSSH2_PATH\r
@@ -130,6 +130,10 @@ CFLAGS = $(CFLAGS) /DUSE_WINDOWS_SSPI /I$(WINDOWS_SDK_PATH)\include
 CFLAGS = $(CFLAGS) /DUSE_IPV6\r
 !ENDIF\r
 \r
 CFLAGS = $(CFLAGS) /DUSE_IPV6\r
 !ENDIF\r
 \r
+!IFDEF USE_IDN\r
+CFLAGS = $(CFLAGS) /DUSE_WIN32_IDN /DWANT_IDN_PROTOTYPES\r
+!ENDIF\r
+\r
 ##############################################################\r
 # Runtime library configuration\r
 \r
 ##############################################################\r
 # Runtime library configuration\r
 \r
@@ -166,6 +170,18 @@ CFGSET   = TRUE
 !ENDIF\r
 \r
 ######################\r
 !ENDIF\r
 \r
 ######################\r
+# release-winssl\r
+\r
+!IF "$(CFG)" == "release-winssl"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSWINSSL) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
 # release-zlib\r
 \r
 !IF "$(CFG)" == "release-zlib"\r
 # release-zlib\r
 \r
 !IF "$(CFG)" == "release-zlib"\r
@@ -519,6 +535,7 @@ X_OBJS= \
        $(DIROBJ)\cookie.obj \\r
        $(DIROBJ)\curl_addrinfo.obj \\r
        $(DIROBJ)\curl_darwinssl.obj \\r
        $(DIROBJ)\cookie.obj \\r
        $(DIROBJ)\curl_addrinfo.obj \\r
        $(DIROBJ)\curl_darwinssl.obj \\r
+       $(DIROBJ)\curl_endian.obj \\r
        $(DIROBJ)\curl_fnmatch.obj \\r
        $(DIROBJ)\curl_gethostname.obj \\r
        $(DIROBJ)\curl_gssapi.obj \\r
        $(DIROBJ)\curl_fnmatch.obj \\r
        $(DIROBJ)\curl_gethostname.obj \\r
        $(DIROBJ)\curl_gssapi.obj \\r
@@ -530,6 +547,8 @@ X_OBJS= \
        $(DIROBJ)\curl_ntlm_wb.obj \\r
        $(DIROBJ)\curl_rtmp.obj \\r
        $(DIROBJ)\curl_sasl.obj \\r
        $(DIROBJ)\curl_ntlm_wb.obj \\r
        $(DIROBJ)\curl_rtmp.obj \\r
        $(DIROBJ)\curl_sasl.obj \\r
+       $(DIROBJ)\curl_sasl_gssapi.obj \\r
+       $(DIROBJ)\curl_sasl_sspi.obj \\r
        $(DIROBJ)\curl_schannel.obj \\r
        $(DIROBJ)\curl_sspi.obj \\r
        $(DIROBJ)\curl_threads.obj \\r
        $(DIROBJ)\curl_schannel.obj \\r
        $(DIROBJ)\curl_sspi.obj \\r
        $(DIROBJ)\curl_threads.obj \\r
@@ -566,7 +585,6 @@ X_OBJS= \
        $(DIROBJ)\imap.obj \\r
        $(DIROBJ)\inet_ntop.obj \\r
        $(DIROBJ)\inet_pton.obj \\r
        $(DIROBJ)\imap.obj \\r
        $(DIROBJ)\inet_ntop.obj \\r
        $(DIROBJ)\inet_pton.obj \\r
-       $(DIROBJ)\krb4.obj \\r
        $(DIROBJ)\krb5.obj \\r
        $(DIROBJ)\ldap.obj \\r
        $(DIROBJ)\llist.obj \\r
        $(DIROBJ)\krb5.obj \\r
        $(DIROBJ)\ldap.obj \\r
        $(DIROBJ)\llist.obj \\r
@@ -587,7 +605,6 @@ X_OBJS= \
        $(DIROBJ)\polarssl_threadlock.obj \\r
        $(DIROBJ)\pop3.obj \\r
        $(DIROBJ)\progress.obj \\r
        $(DIROBJ)\polarssl_threadlock.obj \\r
        $(DIROBJ)\pop3.obj \\r
        $(DIROBJ)\progress.obj \\r
-       $(DIROBJ)\qssl.obj \\r
        $(DIROBJ)\rawstr.obj \\r
        $(DIROBJ)\rtsp.obj \\r
        $(DIROBJ)\security.obj \\r
        $(DIROBJ)\rawstr.obj \\r
        $(DIROBJ)\rtsp.obj \\r
        $(DIROBJ)\security.obj \\r
@@ -595,6 +612,7 @@ X_OBJS= \
        $(DIROBJ)\sendf.obj \\r
        $(DIROBJ)\share.obj \\r
        $(DIROBJ)\slist.obj \\r
        $(DIROBJ)\sendf.obj \\r
        $(DIROBJ)\share.obj \\r
        $(DIROBJ)\slist.obj \\r
+       $(DIROBJ)\smb.obj \\r
        $(DIROBJ)\smtp.obj \\r
        $(DIROBJ)\socks.obj \\r
        $(DIROBJ)\socks_gssapi.obj \\r
        $(DIROBJ)\smtp.obj \\r
        $(DIROBJ)\socks.obj \\r
        $(DIROBJ)\socks_gssapi.obj \\r
@@ -602,8 +620,8 @@ X_OBJS= \
        $(DIROBJ)\speedcheck.obj \\r
        $(DIROBJ)\splay.obj \\r
        $(DIROBJ)\ssh.obj \\r
        $(DIROBJ)\speedcheck.obj \\r
        $(DIROBJ)\splay.obj \\r
        $(DIROBJ)\ssh.obj \\r
-       $(DIROBJ)\sslgen.obj \\r
-       $(DIROBJ)\ssluse.obj \\r
+       $(DIROBJ)\vtls.obj \\r
+       $(DIROBJ)\openssl.obj \\r
        $(DIROBJ)\strdup.obj \\r
        $(DIROBJ)\strequal.obj \\r
        $(DIROBJ)\strerror.obj \\r
        $(DIROBJ)\strdup.obj \\r
        $(DIROBJ)\strequal.obj \\r
        $(DIROBJ)\strerror.obj \\r
@@ -642,6 +660,9 @@ $(DIROBJ):
 {.\}.c{$(DIROBJ)\}.obj:\r
        $(CC) $(CFLAGS) /Fo"$@"  $<\r
 \r
 {.\}.c{$(DIROBJ)\}.obj:\r
        $(CC) $(CFLAGS) /Fo"$@"  $<\r
 \r
+{.\vtls\}.c{$(DIROBJ)\}.obj:\r
+       $(CC) $(CFLAGS) /Fo"$@"  $<\r
+\r
 debug-dll\libcurl.res \\r
 debug-dll-ssl-dll\libcurl.res \\r
 debug-dll-zlib-dll\libcurl.res \\r
 debug-dll\libcurl.res \\r
 debug-dll-ssl-dll\libcurl.res \\r
 debug-dll-zlib-dll\libcurl.res \\r
index fda1e13..ee20ebe 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___\r
 #                             \___|\___/|_| \_\_____|\r
 #\r
 #                            | (__| |_| |  _ <| |___\r
 #                             \___|\___/|_| \_\_____|\r
 #\r
-# Copyright (C) 1999 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.\r
+# Copyright (C) 1999 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.\r
 #\r
 # This software is licensed as described in the file COPYING, which\r
 # you should have received as part of this distribution. The terms\r
 #\r
 # This software is licensed as described in the file COPYING, which\r
 # you should have received as part of this distribution. The terms\r
@@ -65,7 +65,7 @@
 !INCLUDE ..\winbuild\Makefile.msvc.names\r
 \r
 !IFNDEF OPENSSL_PATH\r
 !INCLUDE ..\winbuild\Makefile.msvc.names\r
 \r
 !IFNDEF OPENSSL_PATH\r
-OPENSSL_PATH   = ../../openssl-0.9.8y\r
+OPENSSL_PATH   = ../../openssl-0.9.8zc\r
 !ENDIF\r
 \r
 !IFNDEF LIBSSH2_PATH\r
 !ENDIF\r
 \r
 !IFNDEF LIBSSH2_PATH\r
@@ -130,6 +130,10 @@ CFLAGS = $(CFLAGS) /DUSE_WINDOWS_SSPI /I$(WINDOWS_SDK_PATH)\include
 CFLAGS = $(CFLAGS) /DUSE_IPV6\r
 !ENDIF\r
 \r
 CFLAGS = $(CFLAGS) /DUSE_IPV6\r
 !ENDIF\r
 \r
+!IFDEF USE_IDN\r
+CFLAGS = $(CFLAGS) /DUSE_WIN32_IDN /DWANT_IDN_PROTOTYPES\r
+!ENDIF\r
+\r
 ##############################################################\r
 # Runtime library configuration\r
 \r
 ##############################################################\r
 # Runtime library configuration\r
 \r
@@ -166,6 +170,18 @@ CFGSET   = TRUE
 !ENDIF\r
 \r
 ######################\r
 !ENDIF\r
 \r
 ######################\r
+# release-winssl\r
+\r
+!IF "$(CFG)" == "release-winssl"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSWINSSL) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
 # release-zlib\r
 \r
 !IF "$(CFG)" == "release-zlib"\r
 # release-zlib\r
 \r
 !IF "$(CFG)" == "release-zlib"\r
@@ -519,6 +535,7 @@ X_OBJS= \
        $(DIROBJ)\cookie.obj \\r
        $(DIROBJ)\curl_addrinfo.obj \\r
        $(DIROBJ)\curl_darwinssl.obj \\r
        $(DIROBJ)\cookie.obj \\r
        $(DIROBJ)\curl_addrinfo.obj \\r
        $(DIROBJ)\curl_darwinssl.obj \\r
+       $(DIROBJ)\curl_endian.obj \\r
        $(DIROBJ)\curl_fnmatch.obj \\r
        $(DIROBJ)\curl_gethostname.obj \\r
        $(DIROBJ)\curl_gssapi.obj \\r
        $(DIROBJ)\curl_fnmatch.obj \\r
        $(DIROBJ)\curl_gethostname.obj \\r
        $(DIROBJ)\curl_gssapi.obj \\r
@@ -530,6 +547,8 @@ X_OBJS= \
        $(DIROBJ)\curl_ntlm_wb.obj \\r
        $(DIROBJ)\curl_rtmp.obj \\r
        $(DIROBJ)\curl_sasl.obj \\r
        $(DIROBJ)\curl_ntlm_wb.obj \\r
        $(DIROBJ)\curl_rtmp.obj \\r
        $(DIROBJ)\curl_sasl.obj \\r
+       $(DIROBJ)\curl_sasl_gssapi.obj \\r
+       $(DIROBJ)\curl_sasl_sspi.obj \\r
        $(DIROBJ)\curl_schannel.obj \\r
        $(DIROBJ)\curl_sspi.obj \\r
        $(DIROBJ)\curl_threads.obj \\r
        $(DIROBJ)\curl_schannel.obj \\r
        $(DIROBJ)\curl_sspi.obj \\r
        $(DIROBJ)\curl_threads.obj \\r
@@ -566,7 +585,6 @@ X_OBJS= \
        $(DIROBJ)\imap.obj \\r
        $(DIROBJ)\inet_ntop.obj \\r
        $(DIROBJ)\inet_pton.obj \\r
        $(DIROBJ)\imap.obj \\r
        $(DIROBJ)\inet_ntop.obj \\r
        $(DIROBJ)\inet_pton.obj \\r
-       $(DIROBJ)\krb4.obj \\r
        $(DIROBJ)\krb5.obj \\r
        $(DIROBJ)\ldap.obj \\r
        $(DIROBJ)\llist.obj \\r
        $(DIROBJ)\krb5.obj \\r
        $(DIROBJ)\ldap.obj \\r
        $(DIROBJ)\llist.obj \\r
@@ -587,7 +605,6 @@ X_OBJS= \
        $(DIROBJ)\polarssl_threadlock.obj \\r
        $(DIROBJ)\pop3.obj \\r
        $(DIROBJ)\progress.obj \\r
        $(DIROBJ)\polarssl_threadlock.obj \\r
        $(DIROBJ)\pop3.obj \\r
        $(DIROBJ)\progress.obj \\r
-       $(DIROBJ)\qssl.obj \\r
        $(DIROBJ)\rawstr.obj \\r
        $(DIROBJ)\rtsp.obj \\r
        $(DIROBJ)\security.obj \\r
        $(DIROBJ)\rawstr.obj \\r
        $(DIROBJ)\rtsp.obj \\r
        $(DIROBJ)\security.obj \\r
@@ -595,6 +612,7 @@ X_OBJS= \
        $(DIROBJ)\sendf.obj \\r
        $(DIROBJ)\share.obj \\r
        $(DIROBJ)\slist.obj \\r
        $(DIROBJ)\sendf.obj \\r
        $(DIROBJ)\share.obj \\r
        $(DIROBJ)\slist.obj \\r
+       $(DIROBJ)\smb.obj \\r
        $(DIROBJ)\smtp.obj \\r
        $(DIROBJ)\socks.obj \\r
        $(DIROBJ)\socks_gssapi.obj \\r
        $(DIROBJ)\smtp.obj \\r
        $(DIROBJ)\socks.obj \\r
        $(DIROBJ)\socks_gssapi.obj \\r
@@ -602,8 +620,8 @@ X_OBJS= \
        $(DIROBJ)\speedcheck.obj \\r
        $(DIROBJ)\splay.obj \\r
        $(DIROBJ)\ssh.obj \\r
        $(DIROBJ)\speedcheck.obj \\r
        $(DIROBJ)\splay.obj \\r
        $(DIROBJ)\ssh.obj \\r
-       $(DIROBJ)\sslgen.obj \\r
-       $(DIROBJ)\ssluse.obj \\r
+       $(DIROBJ)\vtls.obj \\r
+       $(DIROBJ)\openssl.obj \\r
        $(DIROBJ)\strdup.obj \\r
        $(DIROBJ)\strequal.obj \\r
        $(DIROBJ)\strerror.obj \\r
        $(DIROBJ)\strdup.obj \\r
        $(DIROBJ)\strequal.obj \\r
        $(DIROBJ)\strerror.obj \\r
@@ -642,6 +660,9 @@ $(DIROBJ):
 {.\}.c{$(DIROBJ)\}.obj:\r
        $(CC) $(CFLAGS) /Fo"$@"  $<\r
 \r
 {.\}.c{$(DIROBJ)\}.obj:\r
        $(CC) $(CFLAGS) /Fo"$@"  $<\r
 \r
+{.\vtls\}.c{$(DIROBJ)\}.obj:\r
+       $(CC) $(CFLAGS) /Fo"$@"  $<\r
+\r
 debug-dll\libcurl.res \\r
 debug-dll-ssl-dll\libcurl.res \\r
 debug-dll-zlib-dll\libcurl.res \\r
 debug-dll\libcurl.res \\r
 debug-dll-ssl-dll\libcurl.res \\r
 debug-dll-zlib-dll\libcurl.res \\r
index e0f851d..0d10ac5 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___\r
 #                             \___|\___/|_| \_\_____|\r
 #\r
 #                            | (__| |_| |  _ <| |___\r
 #                             \___|\___/|_| \_\_____|\r
 #\r
-# Copyright (C) 1999 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.\r
+# Copyright (C) 1999 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.\r
 #\r
 # This software is licensed as described in the file COPYING, which\r
 # you should have received as part of this distribution. The terms\r
 #\r
 # This software is licensed as described in the file COPYING, which\r
 # you should have received as part of this distribution. The terms\r
@@ -65,7 +65,7 @@
 !INCLUDE ..\winbuild\Makefile.msvc.names\r
 \r
 !IFNDEF OPENSSL_PATH\r
 !INCLUDE ..\winbuild\Makefile.msvc.names\r
 \r
 !IFNDEF OPENSSL_PATH\r
-OPENSSL_PATH   = ../../openssl-0.9.8y\r
+OPENSSL_PATH   = ../../openssl-0.9.8zc\r
 !ENDIF\r
 \r
 !IFNDEF LIBSSH2_PATH\r
 !ENDIF\r
 \r
 !IFNDEF LIBSSH2_PATH\r
@@ -130,6 +130,10 @@ CFLAGS = $(CFLAGS) /DUSE_WINDOWS_SSPI /I$(WINDOWS_SDK_PATH)\include
 CFLAGS = $(CFLAGS) /DUSE_IPV6\r
 !ENDIF\r
 \r
 CFLAGS = $(CFLAGS) /DUSE_IPV6\r
 !ENDIF\r
 \r
+!IFDEF USE_IDN\r
+CFLAGS = $(CFLAGS) /DUSE_WIN32_IDN /DWANT_IDN_PROTOTYPES\r
+!ENDIF\r
+\r
 ##############################################################\r
 # Runtime library configuration\r
 \r
 ##############################################################\r
 # Runtime library configuration\r
 \r
@@ -166,6 +170,18 @@ CFGSET   = TRUE
 !ENDIF\r
 \r
 ######################\r
 !ENDIF\r
 \r
 ######################\r
+# release-winssl\r
+\r
+!IF "$(CFG)" == "release-winssl"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSWINSSL) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
 # release-zlib\r
 \r
 !IF "$(CFG)" == "release-zlib"\r
 # release-zlib\r
 \r
 !IF "$(CFG)" == "release-zlib"\r
@@ -519,6 +535,7 @@ X_OBJS= \
        $(DIROBJ)\cookie.obj \\r
        $(DIROBJ)\curl_addrinfo.obj \\r
        $(DIROBJ)\curl_darwinssl.obj \\r
        $(DIROBJ)\cookie.obj \\r
        $(DIROBJ)\curl_addrinfo.obj \\r
        $(DIROBJ)\curl_darwinssl.obj \\r
+       $(DIROBJ)\curl_endian.obj \\r
        $(DIROBJ)\curl_fnmatch.obj \\r
        $(DIROBJ)\curl_gethostname.obj \\r
        $(DIROBJ)\curl_gssapi.obj \\r
        $(DIROBJ)\curl_fnmatch.obj \\r
        $(DIROBJ)\curl_gethostname.obj \\r
        $(DIROBJ)\curl_gssapi.obj \\r
@@ -530,6 +547,8 @@ X_OBJS= \
        $(DIROBJ)\curl_ntlm_wb.obj \\r
        $(DIROBJ)\curl_rtmp.obj \\r
        $(DIROBJ)\curl_sasl.obj \\r
        $(DIROBJ)\curl_ntlm_wb.obj \\r
        $(DIROBJ)\curl_rtmp.obj \\r
        $(DIROBJ)\curl_sasl.obj \\r
+       $(DIROBJ)\curl_sasl_gssapi.obj \\r
+       $(DIROBJ)\curl_sasl_sspi.obj \\r
        $(DIROBJ)\curl_schannel.obj \\r
        $(DIROBJ)\curl_sspi.obj \\r
        $(DIROBJ)\curl_threads.obj \\r
        $(DIROBJ)\curl_schannel.obj \\r
        $(DIROBJ)\curl_sspi.obj \\r
        $(DIROBJ)\curl_threads.obj \\r
@@ -566,7 +585,6 @@ X_OBJS= \
        $(DIROBJ)\imap.obj \\r
        $(DIROBJ)\inet_ntop.obj \\r
        $(DIROBJ)\inet_pton.obj \\r
        $(DIROBJ)\imap.obj \\r
        $(DIROBJ)\inet_ntop.obj \\r
        $(DIROBJ)\inet_pton.obj \\r
-       $(DIROBJ)\krb4.obj \\r
        $(DIROBJ)\krb5.obj \\r
        $(DIROBJ)\ldap.obj \\r
        $(DIROBJ)\llist.obj \\r
        $(DIROBJ)\krb5.obj \\r
        $(DIROBJ)\ldap.obj \\r
        $(DIROBJ)\llist.obj \\r
@@ -587,7 +605,6 @@ X_OBJS= \
        $(DIROBJ)\polarssl_threadlock.obj \\r
        $(DIROBJ)\pop3.obj \\r
        $(DIROBJ)\progress.obj \\r
        $(DIROBJ)\polarssl_threadlock.obj \\r
        $(DIROBJ)\pop3.obj \\r
        $(DIROBJ)\progress.obj \\r
-       $(DIROBJ)\qssl.obj \\r
        $(DIROBJ)\rawstr.obj \\r
        $(DIROBJ)\rtsp.obj \\r
        $(DIROBJ)\security.obj \\r
        $(DIROBJ)\rawstr.obj \\r
        $(DIROBJ)\rtsp.obj \\r
        $(DIROBJ)\security.obj \\r
@@ -595,6 +612,7 @@ X_OBJS= \
        $(DIROBJ)\sendf.obj \\r
        $(DIROBJ)\share.obj \\r
        $(DIROBJ)\slist.obj \\r
        $(DIROBJ)\sendf.obj \\r
        $(DIROBJ)\share.obj \\r
        $(DIROBJ)\slist.obj \\r
+       $(DIROBJ)\smb.obj \\r
        $(DIROBJ)\smtp.obj \\r
        $(DIROBJ)\socks.obj \\r
        $(DIROBJ)\socks_gssapi.obj \\r
        $(DIROBJ)\smtp.obj \\r
        $(DIROBJ)\socks.obj \\r
        $(DIROBJ)\socks_gssapi.obj \\r
@@ -602,8 +620,8 @@ X_OBJS= \
        $(DIROBJ)\speedcheck.obj \\r
        $(DIROBJ)\splay.obj \\r
        $(DIROBJ)\ssh.obj \\r
        $(DIROBJ)\speedcheck.obj \\r
        $(DIROBJ)\splay.obj \\r
        $(DIROBJ)\ssh.obj \\r
-       $(DIROBJ)\sslgen.obj \\r
-       $(DIROBJ)\ssluse.obj \\r
+       $(DIROBJ)\vtls.obj \\r
+       $(DIROBJ)\openssl.obj \\r
        $(DIROBJ)\strdup.obj \\r
        $(DIROBJ)\strequal.obj \\r
        $(DIROBJ)\strerror.obj \\r
        $(DIROBJ)\strdup.obj \\r
        $(DIROBJ)\strequal.obj \\r
        $(DIROBJ)\strerror.obj \\r
@@ -642,6 +660,9 @@ $(DIROBJ):
 {.\}.c{$(DIROBJ)\}.obj:\r
        $(CC) $(CFLAGS) /Fo"$@"  $<\r
 \r
 {.\}.c{$(DIROBJ)\}.obj:\r
        $(CC) $(CFLAGS) /Fo"$@"  $<\r
 \r
+{.\vtls\}.c{$(DIROBJ)\}.obj:\r
+       $(CC) $(CFLAGS) /Fo"$@"  $<\r
+\r
 debug-dll\libcurl.res \\r
 debug-dll-ssl-dll\libcurl.res \\r
 debug-dll-zlib-dll\libcurl.res \\r
 debug-dll\libcurl.res \\r
 debug-dll-ssl-dll\libcurl.res \\r
 debug-dll-zlib-dll\libcurl.res \\r
index 7b6e0ca..9f1b8d4 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___\r
 #                             \___|\___/|_| \_\_____|\r
 #\r
 #                            | (__| |_| |  _ <| |___\r
 #                             \___|\___/|_| \_\_____|\r
 #\r
-# Copyright (C) 1999 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.\r
+# Copyright (C) 1999 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.\r
 #\r
 # This software is licensed as described in the file COPYING, which\r
 # you should have received as part of this distribution. The terms\r
 #\r
 # This software is licensed as described in the file COPYING, which\r
 # you should have received as part of this distribution. The terms\r
@@ -65,7 +65,7 @@
 !INCLUDE ..\winbuild\Makefile.msvc.names\r
 \r
 !IFNDEF OPENSSL_PATH\r
 !INCLUDE ..\winbuild\Makefile.msvc.names\r
 \r
 !IFNDEF OPENSSL_PATH\r
-OPENSSL_PATH   = ../../openssl-0.9.8y\r
+OPENSSL_PATH   = ../../openssl-0.9.8zc\r
 !ENDIF\r
 \r
 !IFNDEF LIBSSH2_PATH\r
 !ENDIF\r
 \r
 !IFNDEF LIBSSH2_PATH\r
@@ -130,6 +130,10 @@ CFLAGS = $(CFLAGS) /DUSE_WINDOWS_SSPI /I$(WINDOWS_SDK_PATH)\include
 CFLAGS = $(CFLAGS) /DUSE_IPV6\r
 !ENDIF\r
 \r
 CFLAGS = $(CFLAGS) /DUSE_IPV6\r
 !ENDIF\r
 \r
+!IFDEF USE_IDN\r
+CFLAGS = $(CFLAGS) /DUSE_WIN32_IDN /DWANT_IDN_PROTOTYPES\r
+!ENDIF\r
+\r
 ##############################################################\r
 # Runtime library configuration\r
 \r
 ##############################################################\r
 # Runtime library configuration\r
 \r
@@ -166,6 +170,18 @@ CFGSET   = TRUE
 !ENDIF\r
 \r
 ######################\r
 !ENDIF\r
 \r
 ######################\r
+# release-winssl\r
+\r
+!IF "$(CFG)" == "release-winssl"\r
+TARGET   = $(LIBCURL_STA_LIB_REL)\r
+DIROBJ   = $(CFG)\r
+LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)"\r
+LNK      = $(LNKLIB) /out:$(DIROBJ)\$(TARGET)\r
+CC       = $(CCNODBG) $(RTLIB) $(CFLAGSWINSSL) $(CFLAGSLIB)\r
+CFGSET   = TRUE\r
+!ENDIF\r
+\r
+######################\r
 # release-zlib\r
 \r
 !IF "$(CFG)" == "release-zlib"\r
 # release-zlib\r
 \r
 !IF "$(CFG)" == "release-zlib"\r
@@ -519,6 +535,7 @@ X_OBJS= \
        $(DIROBJ)\cookie.obj \\r
        $(DIROBJ)\curl_addrinfo.obj \\r
        $(DIROBJ)\curl_darwinssl.obj \\r
        $(DIROBJ)\cookie.obj \\r
        $(DIROBJ)\curl_addrinfo.obj \\r
        $(DIROBJ)\curl_darwinssl.obj \\r
+       $(DIROBJ)\curl_endian.obj \\r
        $(DIROBJ)\curl_fnmatch.obj \\r
        $(DIROBJ)\curl_gethostname.obj \\r
        $(DIROBJ)\curl_gssapi.obj \\r
        $(DIROBJ)\curl_fnmatch.obj \\r
        $(DIROBJ)\curl_gethostname.obj \\r
        $(DIROBJ)\curl_gssapi.obj \\r
@@ -530,6 +547,8 @@ X_OBJS= \
        $(DIROBJ)\curl_ntlm_wb.obj \\r
        $(DIROBJ)\curl_rtmp.obj \\r
        $(DIROBJ)\curl_sasl.obj \\r
        $(DIROBJ)\curl_ntlm_wb.obj \\r
        $(DIROBJ)\curl_rtmp.obj \\r
        $(DIROBJ)\curl_sasl.obj \\r
+       $(DIROBJ)\curl_sasl_gssapi.obj \\r
+       $(DIROBJ)\curl_sasl_sspi.obj \\r
        $(DIROBJ)\curl_schannel.obj \\r
        $(DIROBJ)\curl_sspi.obj \\r
        $(DIROBJ)\curl_threads.obj \\r
        $(DIROBJ)\curl_schannel.obj \\r
        $(DIROBJ)\curl_sspi.obj \\r
        $(DIROBJ)\curl_threads.obj \\r
@@ -566,7 +585,6 @@ X_OBJS= \
        $(DIROBJ)\imap.obj \\r
        $(DIROBJ)\inet_ntop.obj \\r
        $(DIROBJ)\inet_pton.obj \\r
        $(DIROBJ)\imap.obj \\r
        $(DIROBJ)\inet_ntop.obj \\r
        $(DIROBJ)\inet_pton.obj \\r
-       $(DIROBJ)\krb4.obj \\r
        $(DIROBJ)\krb5.obj \\r
        $(DIROBJ)\ldap.obj \\r
        $(DIROBJ)\llist.obj \\r
        $(DIROBJ)\krb5.obj \\r
        $(DIROBJ)\ldap.obj \\r
        $(DIROBJ)\llist.obj \\r
@@ -587,7 +605,6 @@ X_OBJS= \
        $(DIROBJ)\polarssl_threadlock.obj \\r
        $(DIROBJ)\pop3.obj \\r
        $(DIROBJ)\progress.obj \\r
        $(DIROBJ)\polarssl_threadlock.obj \\r
        $(DIROBJ)\pop3.obj \\r
        $(DIROBJ)\progress.obj \\r
-       $(DIROBJ)\qssl.obj \\r
        $(DIROBJ)\rawstr.obj \\r
        $(DIROBJ)\rtsp.obj \\r
        $(DIROBJ)\security.obj \\r
        $(DIROBJ)\rawstr.obj \\r
        $(DIROBJ)\rtsp.obj \\r
        $(DIROBJ)\security.obj \\r
@@ -595,6 +612,7 @@ X_OBJS= \
        $(DIROBJ)\sendf.obj \\r
        $(DIROBJ)\share.obj \\r
        $(DIROBJ)\slist.obj \\r
        $(DIROBJ)\sendf.obj \\r
        $(DIROBJ)\share.obj \\r
        $(DIROBJ)\slist.obj \\r
+       $(DIROBJ)\smb.obj \\r
        $(DIROBJ)\smtp.obj \\r
        $(DIROBJ)\socks.obj \\r
        $(DIROBJ)\socks_gssapi.obj \\r
        $(DIROBJ)\smtp.obj \\r
        $(DIROBJ)\socks.obj \\r
        $(DIROBJ)\socks_gssapi.obj \\r
@@ -602,8 +620,8 @@ X_OBJS= \
        $(DIROBJ)\speedcheck.obj \\r
        $(DIROBJ)\splay.obj \\r
        $(DIROBJ)\ssh.obj \\r
        $(DIROBJ)\speedcheck.obj \\r
        $(DIROBJ)\splay.obj \\r
        $(DIROBJ)\ssh.obj \\r
-       $(DIROBJ)\sslgen.obj \\r
-       $(DIROBJ)\ssluse.obj \\r
+       $(DIROBJ)\vtls.obj \\r
+       $(DIROBJ)\openssl.obj \\r
        $(DIROBJ)\strdup.obj \\r
        $(DIROBJ)\strequal.obj \\r
        $(DIROBJ)\strerror.obj \\r
        $(DIROBJ)\strdup.obj \\r
        $(DIROBJ)\strequal.obj \\r
        $(DIROBJ)\strerror.obj \\r
@@ -642,6 +660,9 @@ $(DIROBJ):
 {.\}.c{$(DIROBJ)\}.obj:\r
        $(CC) $(CFLAGS) /Fo"$@"  $<\r
 \r
 {.\}.c{$(DIROBJ)\}.obj:\r
        $(CC) $(CFLAGS) /Fo"$@"  $<\r
 \r
+{.\vtls\}.c{$(DIROBJ)\}.obj:\r
+       $(CC) $(CFLAGS) /Fo"$@"  $<\r
+\r
 debug-dll\libcurl.res \\r
 debug-dll-ssl-dll\libcurl.res \\r
 debug-dll-zlib-dll\libcurl.res \\r
 debug-dll\libcurl.res \\r
 debug-dll-ssl-dll\libcurl.res \\r
 debug-dll-zlib-dll\libcurl.res \\r
index 0f9de51..7ff197f 100644 (file)
@@ -33,8 +33,8 @@ BUILD_TYPE := debug
 USER_CFLAGS:=
 
 # directories where to seek for includes and libraries
 USER_CFLAGS:=
 
 # directories where to seek for includes and libraries
-OPENSSL_INC := D:/libraries/openssl/openssl-0.9.8y-vxWorks6.3/include
-OPENSSL_LIB := D:/libraries/openssl/openssl-0.9.8y-vxWorks6.3
+OPENSSL_INC := D:/libraries/openssl/openssl-0.9.8zc-vxWorks6.3/include
+OPENSSL_LIB := D:/libraries/openssl/openssl-0.9.8zc-vxWorks6.3
 ZLIB_INC    := D:/libraries/zlib/zlib-1.2.8-VxWorks6.3/zlib-1.2.8
 ZLIB_LIB    := D:/libraries/zlib/zlib-1.2.8-VxWorks6.3/binaries/vxworks_3.1_gnu/Debug/lib
 ARES_INC    :=
 ZLIB_INC    := D:/libraries/zlib/zlib-1.2.8-VxWorks6.3/zlib-1.2.8
 ZLIB_LIB    := D:/libraries/zlib/zlib-1.2.8-VxWorks6.3/binaries/vxworks_3.1_gnu/Debug/lib
 ARES_INC    :=
index 2e30bc7..d5688ff 100644 (file)
  defined.
 
  CURLRES_ARES - is defined if libcurl is built to use c-ares for asynchronous
  defined.
 
  CURLRES_ARES - is defined if libcurl is built to use c-ares for asynchronous
- name resolves. It cannot have ENABLE_IPV6 defined at the same time, as c-ares
- has no ipv6 support. This can be Windows or *nix.
+ name resolves. This can be Windows or *nix.
 
 
- CURLRES_THREADED - is defined if libcurl is built to run under (native)
- Windows, and then the name resolve will be done in a new thread, and the
- supported asynch API will be the same as for ares-builds.
+ CURLRES_THREADED - is defined if libcurl is built to use threading for
+ asynchronous name resolves. The name resolve will be done in a new thread,
+ and the supported asynch API will be the same as for ares-builds. This is
+ the default under (native) Windows.
 
  If any of the two previous are defined, CURLRES_ASYNCH is defined too. If
  libcurl is not built to use an asynchronous resolver, CURLRES_SYNCH is
 
  If any of the two previous are defined, CURLRES_ASYNCH is defined too. If
  libcurl is not built to use an asynchronous resolver, CURLRES_SYNCH is
 
  The host*.c sources files are split up like this:
 
 
  The host*.c sources files are split up like this:
 
- hostip.c   - method-independent resolver functions and utility functions
- hostasyn.c - functions for asynchronous name resolves
- hostsyn.c  - functions for synchronous name resolves
hostares.c - functions for ares-using name resolves
hostthre.c - functions for threaded name resolves
- hostip4.c  - ipv4-specific functions
- hostip6.c  - ipv6-specific functions
+ hostip.c      - method-independent resolver functions and utility functions
+ hostasyn.c    - functions for asynchronous name resolves
+ hostsyn.c     - functions for synchronous name resolves
asyn-ares.c   - functions for asynchronous name resolves using c-ares
asyn-thread.c - functions for asynchronous name resolves using threads
+ hostip4.c     - IPv4 specific functions
+ hostip6.c     - IPv6 specific functions
 
  The hostip.h is the single united header file for all this. It defines the
  CURLRES_* defines based on the config*.h and curl_setup.h defines.
 
  The hostip.h is the single united header file for all this. It defines the
  CURLRES_* defines based on the config*.h and curl_setup.h defines.
index 081667d..4404b6c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -178,7 +178,7 @@ static void destroy_async_data (struct Curl_async *async);
  */
 void Curl_resolver_cancel(struct connectdata *conn)
 {
  */
 void Curl_resolver_cancel(struct connectdata *conn)
 {
-  if(conn && conn->data && conn->data->state.resolver)
+  if(conn->data && conn->data->state.resolver)
     ares_cancel((ares_channel)conn->data->state.resolver);
   destroy_async_data(&conn->async);
 }
     ares_cancel((ares_channel)conn->data->state.resolver);
   destroy_async_data(&conn->async);
 }
@@ -235,7 +235,7 @@ int Curl_resolver_getsock(struct connectdata *conn,
   milli = (timeout->tv_sec * 1000) + (timeout->tv_usec/1000);
   if(milli == 0)
     milli += 10;
   milli = (timeout->tv_sec * 1000) + (timeout->tv_usec/1000);
   if(milli == 0)
     milli += 10;
-  Curl_expire(conn->data, milli);
+  Curl_expire_latest(conn->data, milli);
 
   return max;
 }
 
   return max;
 }
@@ -315,7 +315,7 @@ CURLcode Curl_resolver_is_resolved(struct connectdata *conn,
   struct SessionHandle *data = conn->data;
   struct ResolverResults *res = (struct ResolverResults *)
     conn->async.os_specific;
   struct SessionHandle *data = conn->data;
   struct ResolverResults *res = (struct ResolverResults *)
     conn->async.os_specific;
-  CURLcode rc = CURLE_OK;
+  CURLcode result = CURLE_OK;
 
   *dns = NULL;
 
 
   *dns = NULL;
 
@@ -329,7 +329,7 @@ CURLcode Curl_resolver_is_resolved(struct connectdata *conn,
     if(!conn->async.dns) {
       failf(data, "Could not resolve: %s (%s)",
             conn->async.hostname, ares_strerror(conn->async.status));
     if(!conn->async.dns) {
       failf(data, "Could not resolve: %s (%s)",
             conn->async.hostname, ares_strerror(conn->async.status));
-      rc = conn->bits.proxy?CURLE_COULDNT_RESOLVE_PROXY:
+      result = conn->bits.proxy?CURLE_COULDNT_RESOLVE_PROXY:
         CURLE_COULDNT_RESOLVE_HOST;
     }
     else
         CURLE_COULDNT_RESOLVE_HOST;
     }
     else
@@ -338,7 +338,7 @@ CURLcode Curl_resolver_is_resolved(struct connectdata *conn,
     destroy_async_data(&conn->async);
   }
 
     destroy_async_data(&conn->async);
   }
 
-  return rc;
+  return result;
 }
 
 /*
 }
 
 /*
@@ -355,7 +355,7 @@ CURLcode Curl_resolver_is_resolved(struct connectdata *conn,
 CURLcode Curl_resolver_wait_resolv(struct connectdata *conn,
                                    struct Curl_dns_entry **entry)
 {
 CURLcode Curl_resolver_wait_resolv(struct connectdata *conn,
                                    struct Curl_dns_entry **entry)
 {
-  CURLcode rc=CURLE_OK;
+  CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
   long timeout;
   struct timeval now = Curl_tvnow();
   struct SessionHandle *data = conn->data;
   long timeout;
   struct timeval now = Curl_tvnow();
@@ -394,7 +394,7 @@ CURLcode Curl_resolver_wait_resolv(struct connectdata *conn,
       break;
 
     if(Curl_pgrsUpdate(conn)) {
       break;
 
     if(Curl_pgrsUpdate(conn)) {
-      rc = CURLE_ABORTED_BY_CALLBACK;
+      result = CURLE_ABORTED_BY_CALLBACK;
       timeout = -1; /* trigger the cancel below */
     }
     else {
       timeout = -1; /* trigger the cancel below */
     }
     else {
@@ -403,6 +403,7 @@ CURLcode Curl_resolver_wait_resolv(struct connectdata *conn,
       timeout -= timediff?timediff:1; /* always deduct at least 1 */
       now = now2; /* for next loop */
     }
       timeout -= timediff?timediff:1; /* always deduct at least 1 */
       now = now2; /* for next loop */
     }
+
     if(timeout < 0) {
       /* our timeout, so we cancel the ares operation */
       ares_cancel((ares_channel)data->state.resolver);
     if(timeout < 0) {
       /* our timeout, so we cancel the ares operation */
       ares_cancel((ares_channel)data->state.resolver);
@@ -412,18 +413,17 @@ CURLcode Curl_resolver_wait_resolv(struct connectdata *conn,
 
   /* Operation complete, if the lookup was successful we now have the entry
      in the cache. */
 
   /* Operation complete, if the lookup was successful we now have the entry
      in the cache. */
-
   if(entry)
     *entry = conn->async.dns;
 
   if(entry)
     *entry = conn->async.dns;
 
-  if(rc)
+  if(result)
     /* close the connection, since we can't return failure here without
        cleaning up this connection properly.
        TODO: remove this action from here, it is not a name resolver decision.
     */
     /* close the connection, since we can't return failure here without
        cleaning up this connection properly.
        TODO: remove this action from here, it is not a name resolver decision.
     */
-    conn->bits.close = TRUE;
+    connclose(conn, "c-ares resolve failed");
 
 
-  return rc;
+  return result;
 }
 
 /* Connects results to the list */
 }
 
 /* Connects results to the list */
@@ -623,4 +623,72 @@ CURLcode Curl_set_dns_servers(struct SessionHandle *data,
 #endif
   return result;
 }
 #endif
   return result;
 }
+
+CURLcode Curl_set_dns_interface(struct SessionHandle *data,
+                                const char *interf)
+{
+#if (ARES_VERSION >= 0x010704)
+  if(!interf)
+    interf = "";
+
+  ares_set_local_dev((ares_channel)data->state.resolver, interf);
+
+  return CURLE_OK;
+#else /* c-ares version too old! */
+  (void)data;
+  (void)interf;
+  return CURLE_NOT_BUILT_IN;
+#endif
+}
+
+CURLcode Curl_set_dns_local_ip4(struct SessionHandle *data,
+                                const char *local_ip4)
+{
+#if (ARES_VERSION >= 0x010704)
+  struct in_addr a4;
+
+  if((!local_ip4) || (local_ip4[0] == 0)) {
+    a4.s_addr = 0; /* disabled: do not bind to a specific address */
+  }
+  else {
+    if(Curl_inet_pton(AF_INET, local_ip4, &a4) != 1) {
+      return CURLE_BAD_FUNCTION_ARGUMENT;
+    }
+  }
+
+  ares_set_local_ip4((ares_channel)data->state.resolver, ntohl(a4.s_addr));
+
+  return CURLE_OK;
+#else /* c-ares version too old! */
+  (void)data;
+  (void)local_ip4;
+  return CURLE_NOT_BUILT_IN;
+#endif
+}
+
+CURLcode Curl_set_dns_local_ip6(struct SessionHandle *data,
+                                const char *local_ip6)
+{
+#if (ARES_VERSION >= 0x010704) && defined(ENABLE_IPV6)
+  unsigned char a6[INET6_ADDRSTRLEN];
+
+  if((!local_ip6) || (local_ip6[0] == 0)) {
+    /* disabled: do not bind to a specific address */
+    memset(a6, 0, sizeof(a6));
+  }
+  else {
+    if(Curl_inet_pton(AF_INET6, local_ip6, a6) != 1) {
+      return CURLE_BAD_FUNCTION_ARGUMENT;
+    }
+  }
+
+  ares_set_local_ip6((ares_channel)data->state.resolver, a6);
+
+  return CURLE_OK;
+#else /* c-ares version too old! */
+  (void)data;
+  (void)local_ip6;
+  return CURLE_NOT_BUILT_IN;
+#endif
+}
 #endif /* CURLRES_ARES */
 #endif /* CURLRES_ARES */
index 66fb510..80b5e78 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -68,6 +68,7 @@
 #include "inet_pton.h"
 #include "inet_ntop.h"
 #include "curl_threads.h"
 #include "inet_pton.h"
 #include "inet_ntop.h"
 #include "curl_threads.h"
+#include "connect.h"
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
@@ -165,6 +166,7 @@ struct thread_sync_data {
 #ifdef HAVE_GETADDRINFO
   struct addrinfo hints;
 #endif
 #ifdef HAVE_GETADDRINFO
   struct addrinfo hints;
 #endif
+  struct thread_data *td; /* for thread-self cleanup */
 };
 
 struct thread_data {
 };
 
 struct thread_data {
@@ -201,15 +203,18 @@ void destroy_thread_sync_data(struct thread_sync_data * tsd)
 
 /* Initialize resolver thread synchronization data */
 static
 
 /* Initialize resolver thread synchronization data */
 static
-int init_thread_sync_data(struct thread_sync_data * tsd,
+int init_thread_sync_data(struct thread_data * td,
                            const char * hostname,
                            int port,
                            const struct addrinfo *hints)
 {
                            const char * hostname,
                            int port,
                            const struct addrinfo *hints)
 {
+  struct thread_sync_data *tsd = &td->tsd;
+
   memset(tsd, 0, sizeof(*tsd));
 
   memset(tsd, 0, sizeof(*tsd));
 
+  tsd->td = td;
   tsd->port = port;
   tsd->port = port;
-#ifdef CURLRES_IPV6
+#ifdef HAVE_GETADDRINFO
   DEBUGASSERT(hints);
   tsd->hints = *hints;
 #else
   DEBUGASSERT(hints);
   tsd->hints = *hints;
 #else
@@ -265,7 +270,8 @@ static int getaddrinfo_complete(struct connectdata *conn)
 static unsigned int CURL_STDCALL getaddrinfo_thread (void *arg)
 {
   struct thread_sync_data *tsd = (struct thread_sync_data*)arg;
 static unsigned int CURL_STDCALL getaddrinfo_thread (void *arg)
 {
   struct thread_sync_data *tsd = (struct thread_sync_data*)arg;
-  char   service [NI_MAXSERV];
+  struct thread_data *td = tsd->td;
+  char service[12];
   int rc;
 
   snprintf(service, sizeof(service), "%d", tsd->port);
   int rc;
 
   snprintf(service, sizeof(service), "%d", tsd->port);
@@ -279,8 +285,16 @@ static unsigned int CURL_STDCALL getaddrinfo_thread (void *arg)
   }
 
   Curl_mutex_acquire(tsd->mtx);
   }
 
   Curl_mutex_acquire(tsd->mtx);
-  tsd->done = 1;
-  Curl_mutex_release(tsd->mtx);
+  if(tsd->done) {
+    /* too late, gotta clean up the mess */
+    Curl_mutex_release(tsd->mtx);
+    destroy_thread_sync_data(tsd);
+    free(td);
+  }
+  else {
+    tsd->done = 1;
+    Curl_mutex_release(tsd->mtx);
+  }
 
   return 0;
 }
 
   return 0;
 }
@@ -293,6 +307,7 @@ static unsigned int CURL_STDCALL getaddrinfo_thread (void *arg)
 static unsigned int CURL_STDCALL gethostbyname_thread (void *arg)
 {
   struct thread_sync_data *tsd = (struct thread_sync_data *)arg;
 static unsigned int CURL_STDCALL gethostbyname_thread (void *arg)
 {
   struct thread_sync_data *tsd = (struct thread_sync_data *)arg;
+  struct thread_data *td = tsd->td;
 
   tsd->res = Curl_ipv4_resolve_r(tsd->hostname, tsd->port);
 
 
   tsd->res = Curl_ipv4_resolve_r(tsd->hostname, tsd->port);
 
@@ -303,8 +318,16 @@ static unsigned int CURL_STDCALL gethostbyname_thread (void *arg)
   }
 
   Curl_mutex_acquire(tsd->mtx);
   }
 
   Curl_mutex_acquire(tsd->mtx);
-  tsd->done = 1;
-  Curl_mutex_release(tsd->mtx);
+  if(tsd->done) {
+    /* too late, gotta clean up the mess */
+    Curl_mutex_release(tsd->mtx);
+    destroy_thread_sync_data(tsd);
+    free(td);
+  }
+  else {
+    tsd->done = 1;
+    Curl_mutex_release(tsd->mtx);
+  }
 
   return 0;
 }
 
   return 0;
 }
@@ -316,21 +339,37 @@ static unsigned int CURL_STDCALL gethostbyname_thread (void *arg)
  */
 static void destroy_async_data (struct Curl_async *async)
 {
  */
 static void destroy_async_data (struct Curl_async *async)
 {
-  if(async->hostname)
-    free(async->hostname);
-
   if(async->os_specific) {
     struct thread_data *td = (struct thread_data*) async->os_specific;
   if(async->os_specific) {
     struct thread_data *td = (struct thread_data*) async->os_specific;
+    int done;
+
+    /*
+     * if the thread is still blocking in the resolve syscall, detach it and
+     * let the thread do the cleanup...
+     */
+    Curl_mutex_acquire(td->tsd.mtx);
+    done = td->tsd.done;
+    td->tsd.done = 1;
+    Curl_mutex_release(td->tsd.mtx);
+
+    if(!done) {
+      Curl_thread_destroy(td->thread_hnd);
+    }
+    else {
+      if(td->thread_hnd != curl_thread_t_null)
+        Curl_thread_join(&td->thread_hnd);
 
 
-    if(td->thread_hnd != curl_thread_t_null)
-      Curl_thread_join(&td->thread_hnd);
-
-    destroy_thread_sync_data(&td->tsd);
+      destroy_thread_sync_data(&td->tsd);
 
 
-    free(async->os_specific);
+      free(async->os_specific);
+    }
   }
   }
-  async->hostname = NULL;
   async->os_specific = NULL;
   async->os_specific = NULL;
+
+  if(async->hostname)
+    free(async->hostname);
+
+  async->hostname = NULL;
 }
 
 /*
 }
 
 /*
@@ -356,7 +395,7 @@ static bool init_resolve_thread (struct connectdata *conn,
   conn->async.dns = NULL;
   td->thread_hnd = curl_thread_t_null;
 
   conn->async.dns = NULL;
   td->thread_hnd = curl_thread_t_null;
 
-  if(!init_thread_sync_data(&td->tsd, hostname, port, hints))
+  if(!init_thread_sync_data(td, hostname, port, hints))
     goto err_exit;
 
   Curl_safefree(conn->async.hostname);
     goto err_exit;
 
   Curl_safefree(conn->async.hostname);
@@ -395,19 +434,21 @@ static bool init_resolve_thread (struct connectdata *conn,
 static CURLcode resolver_error(struct connectdata *conn)
 {
   const char *host_or_proxy;
 static CURLcode resolver_error(struct connectdata *conn)
 {
   const char *host_or_proxy;
-  CURLcode rc;
+  CURLcode result;
+
   if(conn->bits.httpproxy) {
     host_or_proxy = "proxy";
   if(conn->bits.httpproxy) {
     host_or_proxy = "proxy";
-    rc = CURLE_COULDNT_RESOLVE_PROXY;
+    result = CURLE_COULDNT_RESOLVE_PROXY;
   }
   else {
     host_or_proxy = "host";
   }
   else {
     host_or_proxy = "host";
-    rc = CURLE_COULDNT_RESOLVE_HOST;
+    result = CURLE_COULDNT_RESOLVE_HOST;
   }
 
   failf(conn->data, "Could not resolve %s: %s", host_or_proxy,
         conn->async.hostname);
   }
 
   failf(conn->data, "Could not resolve %s: %s", host_or_proxy,
         conn->async.hostname);
-  return rc;
+
+  return result;
 }
 
 /*
 }
 
 /*
@@ -424,13 +465,13 @@ CURLcode Curl_resolver_wait_resolv(struct connectdata *conn,
                                    struct Curl_dns_entry **entry)
 {
   struct thread_data   *td = (struct thread_data*) conn->async.os_specific;
                                    struct Curl_dns_entry **entry)
 {
   struct thread_data   *td = (struct thread_data*) conn->async.os_specific;
-  CURLcode rc = CURLE_OK;
+  CURLcode result = CURLE_OK;
 
   DEBUGASSERT(conn && td);
 
   /* wait for the thread to resolve the name */
   if(Curl_thread_join(&td->thread_hnd))
 
   DEBUGASSERT(conn && td);
 
   /* wait for the thread to resolve the name */
   if(Curl_thread_join(&td->thread_hnd))
-    rc = getaddrinfo_complete(conn);
+    result = getaddrinfo_complete(conn);
   else
     DEBUGASSERT(0);
 
   else
     DEBUGASSERT(0);
 
@@ -441,14 +482,14 @@ CURLcode Curl_resolver_wait_resolv(struct connectdata *conn,
 
   if(!conn->async.dns)
     /* a name was not resolved, report error */
 
   if(!conn->async.dns)
     /* a name was not resolved, report error */
-    rc = resolver_error(conn);
+    result = resolver_error(conn);
 
   destroy_async_data(&conn->async);
 
   if(!conn->async.dns)
 
   destroy_async_data(&conn->async);
 
   if(!conn->async.dns)
-    conn->bits.close = TRUE;
+    connclose(conn, "asynch resolve failed");
 
 
-  return (rc);
+  return result;
 }
 
 /*
 }
 
 /*
@@ -478,9 +519,9 @@ CURLcode Curl_resolver_is_resolved(struct connectdata *conn,
     getaddrinfo_complete(conn);
 
     if(!conn->async.dns) {
     getaddrinfo_complete(conn);
 
     if(!conn->async.dns) {
-      CURLcode rc = resolver_error(conn);
+      CURLcode result = resolver_error(conn);
       destroy_async_data(&conn->async);
       destroy_async_data(&conn->async);
-      return rc;
+      return result;
     }
     destroy_async_data(&conn->async);
     *entry = conn->async.dns;
     }
     destroy_async_data(&conn->async);
     *entry = conn->async.dns;
@@ -559,7 +600,7 @@ Curl_addrinfo *Curl_resolver_getaddrinfo(struct connectdata *conn,
   struct in_addr in;
   Curl_addrinfo *res;
   int error;
   struct in_addr in;
   Curl_addrinfo *res;
   int error;
-  char sbuf[NI_MAXSERV];
+  char sbuf[12];
   int pf = PF_INET;
 #ifdef CURLRES_IPV6
   struct in6_addr in6;
   int pf = PF_INET;
 #ifdef CURLRES_IPV6
   struct in6_addr in6;
@@ -594,7 +635,7 @@ Curl_addrinfo *Curl_resolver_getaddrinfo(struct connectdata *conn,
   }
 
   if((pf != PF_INET) && !Curl_ipv6works())
   }
 
   if((pf != PF_INET) && !Curl_ipv6works())
-    /* the stack seems to be a non-ipv6 one */
+    /* The stack seems to be a non-IPv6 one */
     pf = PF_INET;
 
 #endif /* CURLRES_IPV6 */
     pf = PF_INET;
 
 #endif /* CURLRES_IPV6 */
@@ -635,4 +676,28 @@ CURLcode Curl_set_dns_servers(struct SessionHandle *data,
 
 }
 
 
 }
 
+CURLcode Curl_set_dns_interface(struct SessionHandle *data,
+                                const char *interf)
+{
+  (void)data;
+  (void)interf;
+  return CURLE_NOT_BUILT_IN;
+}
+
+CURLcode Curl_set_dns_local_ip4(struct SessionHandle *data,
+                                const char *local_ip4)
+{
+  (void)data;
+  (void)local_ip4;
+  return CURLE_NOT_BUILT_IN;
+}
+
+CURLcode Curl_set_dns_local_ip6(struct SessionHandle *data,
+                                const char *local_ip6)
+{
+  (void)data;
+  (void)local_ip6;
+  return CURLE_NOT_BUILT_IN;
+}
+
 #endif /* CURLRES_THREADED */
 #endif /* CURLRES_THREADED */
index 3f3f0f9..6b1eb7c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "memdebug.h"
 
 /* ---- Base64 Encoding/Decoding Table --- */
 #include "memdebug.h"
 
 /* ---- Base64 Encoding/Decoding Table --- */
-static const char table64[]=
+static const char base64[]=
   "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
 
   "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
 
-static void decodeQuantum(unsigned char *dest, const char *src)
+/* The Base 64 encoding with an URL and filename safe alphabet, RFC 4648
+   section 5 */
+static const char base64url[]=
+  "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
+
+static size_t decodeQuantum(unsigned char *dest, const char *src)
 {
 {
+  size_t padding = 0;
   const char *s, *p;
   const char *s, *p;
-  unsigned long i, v, x = 0;
+  unsigned long i, x = 0;
 
   for(i = 0, s = src; i < 4; i++, s++) {
 
   for(i = 0, s = src; i < 4; i++, s++) {
-    v = 0;
-    p = table64;
-    while(*p && (*p != *s)) {
-      v++;
-      p++;
-    }
-    if(*p == *s)
-      x = (x << 6) + v;
-    else if(*s == '=')
+    unsigned long v = 0;
+
+    if(*s == '=') {
       x = (x << 6);
       x = (x << 6);
+      padding++;
+    }
+    else {
+      p = base64;
+
+      while(*p && (*p != *s)) {
+        v++;
+        p++;
+      }
+
+      if(*p == *s)
+        x = (x << 6) + v;
+      else
+        return 0;
+    }
   }
 
   }
 
-  dest[2] = curlx_ultouc(x & 0xFFUL);
+  if(padding < 1)
+    dest[2] = curlx_ultouc(x & 0xFFUL);
+
   x >>= 8;
   x >>= 8;
-  dest[1] = curlx_ultouc(x & 0xFFUL);
+  if(padding < 2)
+    dest[1] = curlx_ultouc(x & 0xFFUL);
+
   x >>= 8;
   dest[0] = curlx_ultouc(x & 0xFFUL);
   x >>= 8;
   dest[0] = curlx_ultouc(x & 0xFFUL);
+
+  return 3 - padding;
 }
 
 /*
 }
 
 /*
@@ -82,82 +103,78 @@ static void decodeQuantum(unsigned char *dest, const char *src)
 CURLcode Curl_base64_decode(const char *src,
                             unsigned char **outptr, size_t *outlen)
 {
 CURLcode Curl_base64_decode(const char *src,
                             unsigned char **outptr, size_t *outlen)
 {
+  size_t srclen = 0;
   size_t length = 0;
   size_t length = 0;
-  size_t equalsTerm = 0;
+  size_t padding = 0;
   size_t i;
   size_t numQuantums;
   size_t i;
   size_t numQuantums;
-  unsigned char lastQuantum[3];
   size_t rawlen = 0;
   size_t rawlen = 0;
+  unsigned char *pos;
   unsigned char *newstr;
 
   *outptr = NULL;
   *outlen = 0;
   unsigned char *newstr;
 
   *outptr = NULL;
   *outlen = 0;
+  srclen = strlen(src);
+
+  /* Check the length of the input string is valid */
+  if(!srclen || srclen % 4)
+    return CURLE_BAD_CONTENT_ENCODING;
 
 
+  /* Find the position of any = padding characters */
   while((src[length] != '=') && src[length])
     length++;
   while((src[length] != '=') && src[length])
     length++;
+
   /* A maximum of two = padding characters is allowed */
   if(src[length] == '=') {
   /* A maximum of two = padding characters is allowed */
   if(src[length] == '=') {
-    equalsTerm++;
-    if(src[length+equalsTerm] == '=')
-      equalsTerm++;
+    padding++;
+    if(src[length + 1] == '=')
+      padding++;
   }
   }
-  numQuantums = (length + equalsTerm) / 4;
 
 
-  /* Don't allocate a buffer if the decoded length is 0 */
-  if(numQuantums == 0)
-    return CURLE_OK;
+  /* Check the = padding characters weren't part way through the input */
+  if(length + padding != srclen)
+    return CURLE_BAD_CONTENT_ENCODING;
 
 
-  rawlen = (numQuantums * 3) - equalsTerm;
+  /* Calculate the number of quantums */
+  numQuantums = srclen / 4;
 
 
-  /* The buffer must be large enough to make room for the last quantum
-  (which may be partially thrown out) and the zero terminator. */
-  newstr = malloc(rawlen+4);
+  /* Calculate the size of the decoded string */
+  rawlen = (numQuantums * 3) - padding;
+
+  /* Allocate our buffer including room for a zero terminator */
+  newstr = malloc(rawlen + 1);
   if(!newstr)
     return CURLE_OUT_OF_MEMORY;
 
   if(!newstr)
     return CURLE_OUT_OF_MEMORY;
 
-  *outptr = newstr;
+  pos = newstr;
 
 
-  /* Decode all but the last quantum (which may not decode to a
-  multiple of 3 bytes) */
-  for(i = 0; i < numQuantums - 1; i++) {
-    decodeQuantum(newstr, src);
-    newstr += 3; src += 4;
-  }
+  /* Decode the quantums */
+  for(i = 0; i < numQuantums; i++) {
+    size_t result = decodeQuantum(pos, src);
+    if(!result) {
+      Curl_safefree(newstr);
 
 
-  /* This final decode may actually read slightly past the end of the buffer
-  if the input string is missing pad bytes.  This will almost always be
-  harmless. */
-  decodeQuantum(lastQuantum, src);
-  for(i = 0; i < 3 - equalsTerm; i++)
-    newstr[i] = lastQuantum[i];
+      return CURLE_BAD_CONTENT_ENCODING;
+    }
 
 
-  newstr[i] = '\0'; /* zero terminate */
+    pos += result;
+    src += 4;
+  }
 
 
-  *outlen = rawlen; /* return size of decoded data */
+  /* Zero terminate */
+  *pos = '\0';
+
+  /* Return the decoded data */
+  *outptr = newstr;
+  *outlen = rawlen;
 
   return CURLE_OK;
 }
 
 
   return CURLE_OK;
 }
 
-/*
- * Curl_base64_encode()
- *
- * Given a pointer to an input buffer and an input size, encode it and
- * return a pointer in *outptr to a newly allocated memory area holding
- * encoded data. Size of encoded data is returned in variable pointed by
- * outlen.
- *
- * Input length of 0 indicates input buffer holds a NUL-terminated string.
- *
- * Returns CURLE_OK on success, otherwise specific error code. Function
- * output shall not be considered valid unless CURLE_OK is returned.
- *
- * When encoded data length is 0, returns NULL in *outptr.
- *
- * @unittest: 1302
- */
-CURLcode Curl_base64_encode(struct SessionHandle *data,
-                            const char *inputbuff, size_t insize,
-                            char **outptr, size_t *outlen)
+static CURLcode base64_encode(const char *table64,
+                              struct SessionHandle *data,
+                              const char *inputbuff, size_t insize,
+                              char **outptr, size_t *outlen)
 {
   CURLcode error;
   unsigned char ibuf[3];
 {
   CURLcode error;
   unsigned char ibuf[3];
@@ -245,4 +262,52 @@ CURLcode Curl_base64_encode(struct SessionHandle *data,
 
   return CURLE_OK;
 }
 
   return CURLE_OK;
 }
+
+/*
+ * Curl_base64_encode()
+ *
+ * Given a pointer to an input buffer and an input size, encode it and
+ * return a pointer in *outptr to a newly allocated memory area holding
+ * encoded data. Size of encoded data is returned in variable pointed by
+ * outlen.
+ *
+ * Input length of 0 indicates input buffer holds a NUL-terminated string.
+ *
+ * Returns CURLE_OK on success, otherwise specific error code. Function
+ * output shall not be considered valid unless CURLE_OK is returned.
+ *
+ * When encoded data length is 0, returns NULL in *outptr.
+ *
+ * @unittest: 1302
+ */
+CURLcode Curl_base64_encode(struct SessionHandle *data,
+                            const char *inputbuff, size_t insize,
+                            char **outptr, size_t *outlen)
+{
+  return base64_encode(base64, data, inputbuff, insize, outptr, outlen);
+}
+
+/*
+ * Curl_base64url_encode()
+ *
+ * Given a pointer to an input buffer and an input size, encode it and
+ * return a pointer in *outptr to a newly allocated memory area holding
+ * encoded data. Size of encoded data is returned in variable pointed by
+ * outlen.
+ *
+ * Input length of 0 indicates input buffer holds a NUL-terminated string.
+ *
+ * Returns CURLE_OK on success, otherwise specific error code. Function
+ * output shall not be considered valid unless CURLE_OK is returned.
+ *
+ * When encoded data length is 0, returns NULL in *outptr.
+ *
+ * @unittest: 1302
+ */
+CURLcode Curl_base64url_encode(struct SessionHandle *data,
+                               const char *inputbuff, size_t insize,
+                               char **outptr, size_t *outlen)
+{
+  return base64_encode(base64url, data, inputbuff, insize, outptr, outlen);
+}
 /* ---- End of Base64 Encoding ---- */
 /* ---- End of Base64 Encoding ---- */
index cce5e81..dd5b06d 100644 (file)
@@ -69,7 +69,6 @@
 #define HAVE_SETMODE           1
 #define HAVE_SIGNAL            1
 #define HAVE_SOCKET            1
 #define HAVE_SETMODE           1
 #define HAVE_SIGNAL            1
 #define HAVE_SOCKET            1
-#define HAVE_SPNEGO            1
 #define HAVE_STRDUP            1
 #define HAVE_STRICMP           1
 #define HAVE_STRTOLL           1
 #define HAVE_STRDUP            1
 #define HAVE_STRICMP           1
 #define HAVE_STRTOLL           1
index a290fe4..1e62228 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 /* Define if you have GSS API. */
 #define HAVE_GSSAPI
 
 /* Define if you have GSS API. */
 #define HAVE_GSSAPI
 
+/* Define if you have the GNU gssapi libraries */
+#undef HAVE_GSSGNU
+
+/* Define if you have the Heimdal gssapi libraries */
+#define HAVE_GSSHEIMDAL
+
+/* Define if you have the MIT gssapi libraries */
+#undef HAVE_GSSMIT
+
 /* Define if you have the `ucb' library (-lucb). */
 #undef HAVE_LIBUCB
 
 /* Define if you have the `ucb' library (-lucb). */
 #undef HAVE_LIBUCB
 
 /* Define to the function return type for send. */
 #define SEND_TYPE_RETV int
 
 /* Define to the function return type for send. */
 #define SEND_TYPE_RETV int
 
-/* Define to use the QsoSSL package. */
-#define USE_QSOSSL
-
 /* Define to use the GSKit package. */
 /* Define to use the GSKit package. */
-#undef USE_GSKIT
+#define USE_GSKIT
+
+/* Define to use the OS/400 crypto library. */
+#define USE_OS400CRYPTO
+
+/* Define to use Unix sockets. */
+#define USE_UNIX_SOCKETS
 
 /* Use the system keyring as the default CA bundle. */
 #define CURL_CA_BUNDLE  "/QIBM/UserData/ICSS/Cert/Server/DEFAULT.KDB"
 
 /* Use the system keyring as the default CA bundle. */
 #define CURL_CA_BUNDLE  "/QIBM/UserData/ICSS/Cert/Server/DEFAULT.KDB"
index 17d92b0..f7eaab9 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 /* Define to 1 if you have the IoctlSocket camel case function. */
 /* #undef HAVE_IOCTLSOCKET_CAMEL */
 
 /* Define to 1 if you have the IoctlSocket camel case function. */
 /* #undef HAVE_IOCTLSOCKET_CAMEL */
 
-/* Define to 1 if you have a working IoctlSocket camel case FIONBIO function. */
+/* Define to 1 if you have a working IoctlSocket camel case FIONBIO
+   function. */
 /* #undef HAVE_IOCTLSOCKET_CAMEL_FIONBIO */
 
 /* Define to 1 if you have the <io.h> header file. */
 /* #undef HAVE_IOCTLSOCKET_CAMEL_FIONBIO */
 
 /* Define to 1 if you have the <io.h> header file. */
 /* Define to 1 if you have the `socket' function. */
 #define HAVE_SOCKET 1
 
 /* Define to 1 if you have the `socket' function. */
 #define HAVE_SOCKET 1
 
-/* Define this if you have the SPNEGO library fbopenssl */
-/* #undef HAVE_SPNEGO */
-
 /* Define to 1 if you have the `SSL_get_shutdown' function. */
 /*#define HAVE_SSL_GET_SHUTDOWN 1*/
 
 /* Define to 1 if you have the `SSL_get_shutdown' function. */
 /*#define HAVE_SSL_GET_SHUTDOWN 1*/
 
 /*#define PACKAGE "curl"*/
 
 /* Define to the address where bug reports for this package should be sent. */
 /*#define PACKAGE "curl"*/
 
 /* Define to the address where bug reports for this package should be sent. */
-/*#define PACKAGE_BUGREPORT "a suitable curl mailing list => http://curl.haxx.se/mail/"*/
+/*#define PACKAGE_BUGREPORT \
+  "a suitable curl mailing list => http://curl.haxx.se/mail/"*/
 
 /* Define to the full name of this package. */
 /*#define PACKAGE_NAME "curl"*/
 
 /* Define to the full name of this package. */
 /*#define PACKAGE_NAME "curl"*/
index ddb8f77..6ff701a 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 /* Define to 1 if you have the IoctlSocket camel case function. */
 /* #undef HAVE_IOCTLSOCKET_CAMEL */
 
 /* Define to 1 if you have the IoctlSocket camel case function. */
 /* #undef HAVE_IOCTLSOCKET_CAMEL */
 
-/* Define to 1 if you have a working IoctlSocket camel case FIONBIO function. */
+/* Define to 1 if you have a working IoctlSocket camel case FIONBIO
+   function. */
 /* #undef HAVE_IOCTLSOCKET_CAMEL_FIONBIO */
 
 /* Define to 1 if you have the <io.h> header file. */
 /* #undef HAVE_IOCTLSOCKET_CAMEL_FIONBIO */
 
 /* Define to 1 if you have the <io.h> header file. */
 /* Define to 1 if you have the `socket' function. */
 #define HAVE_SOCKET 1
 
 /* Define to 1 if you have the `socket' function. */
 #define HAVE_SOCKET 1
 
-/* Define this if you have the SPNEGO library fbopenssl */
-/* #undef HAVE_SPNEGO */
-
 /* Define to 1 if you have the <ssl.h> header file. */
 /* #undef HAVE_SSL_H */
 #define HAVE_SSL_H 1
 /* Define to 1 if you have the <ssl.h> header file. */
 /* #undef HAVE_SSL_H */
 #define HAVE_SSL_H 1
 #define PACKAGE "curl"
 
 /* Define to the address where bug reports for this package should be sent. */
 #define PACKAGE "curl"
 
 /* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT "a suitable curl mailing list => http://curl.haxx.se/mail/"
+#define PACKAGE_BUGREPORT \
+  "a suitable curl mailing list => http://curl.haxx.se/mail/"
 
 /* Define to the full name of this package. */
 #define PACKAGE_NAME "curl"
 
 /* Define to the full name of this package. */
 #define PACKAGE_NAME "curl"
index c94534a..05220b5 100644 (file)
 /* Define to 1 if you have the `socket' function. */
 #define HAVE_SOCKET 1
 
 /* Define to 1 if you have the `socket' function. */
 #define HAVE_SOCKET 1
 
-/* Define this if you have the SPNEGO library fbopenssl */
-/* #undef HAVE_SPNEGO */
-
 /* Define to 1 if you have the `SSL_get_shutdown' function. */
 #define HAVE_SSL_GET_SHUTDOWN 1
 
 /* Define to 1 if you have the `SSL_get_shutdown' function. */
 #define HAVE_SSL_GET_SHUTDOWN 1
 
index 9ce6ad2..744e022 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #define HAVE_GETOPT_H 1
 #endif
 
 #define HAVE_GETOPT_H 1
 #endif
 
+/* Define to 1 if you have the <inttypes.h> header file. */
+#if defined(_MSC_VER) && (_MSC_VER >= 1800)
+#define HAVE_INTTYPES_H 1
+#endif
+
 /* Define if you have the <io.h> header file. */
 #define HAVE_IO_H 1
 
 /* Define if you have the <io.h> header file. */
 #define HAVE_IO_H 1
 
 /* Define if you have the <ssl.h> header file. */
 /* #define HAVE_SSL_H 1 */
 
 /* Define if you have the <ssl.h> header file. */
 /* #define HAVE_SSL_H 1 */
 
+/* Define to 1 if you have the <stdbool.h> header file. */
+#if defined(_MSC_VER) && (_MSC_VER >= 1800)
+#define HAVE_STDBOOL_H 1
+#endif
+
 /* Define if you have the <stdlib.h> header file. */
 #define HAVE_STDLIB_H 1
 
 /* Define if you have the <stdlib.h> header file. */
 #define HAVE_STDLIB_H 1
 
 /* Define if you can safely include both <sys/time.h> and <time.h>. */
 /* #define TIME_WITH_SYS_TIME 1 */
 
 /* Define if you can safely include both <sys/time.h> and <time.h>. */
 /* #define TIME_WITH_SYS_TIME 1 */
 
+/* Define to 1 if bool is an available type. */
+#if defined(_MSC_VER) && (_MSC_VER >= 1800)
+#define HAVE_BOOL_T 1
+#endif
+
 /* ---------------------------------------------------------------- */
 /*                             FUNCTIONS                            */
 /* ---------------------------------------------------------------- */
 /* ---------------------------------------------------------------- */
 /*                             FUNCTIONS                            */
 /* ---------------------------------------------------------------- */
 #define HAVE_STRSTR 1
 
 /* Define if you have the strtoll function. */
 #define HAVE_STRSTR 1
 
 /* Define if you have the strtoll function. */
-#if defined(__MINGW32__) || defined(__WATCOMC__) || defined(__POCC__)
+#if defined(__MINGW32__) || defined(__WATCOMC__) || defined(__POCC__) || \
+    (defined(_MSC_VER) && (_MSC_VER >= 1800))
 #define HAVE_STRTOLL 1
 #endif
 
 #define HAVE_STRTOLL 1
 #endif
 
 #endif
 
 /* ---------------------------------------------------------------- */
 #endif
 
 /* ---------------------------------------------------------------- */
-/*                          STRUCT RELATED                          */
-/* ---------------------------------------------------------------- */
-
-/* Define if you have struct sockaddr_storage. */
-#if !defined(__SALFORDC__) && !defined(__BORLANDC__)
-#define HAVE_STRUCT_SOCKADDR_STORAGE 1
-#endif
-
-/* Define if you have struct timeval. */
-#define HAVE_STRUCT_TIMEVAL 1
-
-/* Define if struct sockaddr_in6 has the sin6_scope_id member. */
-#define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1
-
-/* ---------------------------------------------------------------- */
 /*               BSD-style lwIP TCP/IP stack SPECIFIC               */
 /* ---------------------------------------------------------------- */
 
 /*               BSD-style lwIP TCP/IP stack SPECIFIC               */
 /* ---------------------------------------------------------------- */
 
 #endif
 
 /* Define if the compiler supports the 'long long' data type. */
 #endif
 
 /* Define if the compiler supports the 'long long' data type. */
-#if defined(__MINGW32__) || defined(__WATCOMC__)
+#if defined(__MINGW32__) || defined(__WATCOMC__) || \
+    (defined(_MSC_VER) && (_MSC_VER >= 1310))
 #define HAVE_LONGLONG 1
 #endif
 
 #define HAVE_LONGLONG 1
 #endif
 
 #  endif
 #endif
 
 #  endif
 #endif
 
-/* Officially, Microsoft's Windows SDK versions 6.X do not support Windows
-   2000 as a supported build target. VS2008 default installations provide
-   an embedded Windows SDK v6.0A along with the claim that Windows 2000 is
-   a valid build target for VS2008. Popular belief is that binaries built
-   with VS2008 using Windows SDK versions 6.X and Windows 2000 as a build
-   target are functional. */
-#if defined(_MSC_VER) && (_MSC_VER >= 1500)
+/* Define some minimum and default build targets for Visual Studio */
+#if defined(_MSC_VER)
+   /* Officially, Microsoft's Windows SDK versions 6.X does not support Windows
+      2000 as a supported build target. VS2008 default installations provides
+      an embedded Windows SDK v6.0A along with the claim that Windows 2000 is a
+      valid build target for VS2008. Popular belief is that binaries built with
+      VS2008 using Windows SDK versions v6.X and Windows 2000 as a build target
+      are functional. */
 #  define VS2008_MIN_TARGET 0x0500
 #  define VS2008_MIN_TARGET 0x0500
-#endif
 
 
-/* When no build target is specified VS2008 default build target is Windows
-   Vista, which leaves out even Winsows XP. If no build target has been given
-   for VS2008 we will target the minimum Officially supported build target,
-   which happens to be Windows XP. */
-#if defined(_MSC_VER) && (_MSC_VER >= 1500)
-#  define VS2008_DEF_TARGET  0x0501
+   /* The minimum build target for VS2012 is Vista unless Update 1 is installed
+      and the v110_xp toolset is choosen. */
+#  if defined(_USING_V110_SDK71_)
+#    define VS2012_MIN_TARGET 0x0501
+#  else
+#    define VS2012_MIN_TARGET 0x0600
+#  endif
+
+   /* VS2008 default build target is Windows Vista. We override default target
+      to be Windows XP. */
+#  define VS2008_DEF_TARGET 0x0501
+
+   /* VS2012 default build target is Windows Vista unless Update 1 is installed
+      and the v110_xp toolset is choosen. */
+#  if defined(_USING_V110_SDK71_)
+#    define VS2012_DEF_TARGET 0x0501
+#  else
+#    define VS2012_DEF_TARGET 0x0600
+#  endif
 #endif
 
 /* VS2008 default target settings and minimum build target check. */
 #endif
 
 /* VS2008 default target settings and minimum build target check. */
-#if defined(_MSC_VER) && (_MSC_VER >= 1500)
+#if defined(_MSC_VER) && (_MSC_VER >= 1500) && (_MSC_VER <= 1600)
 #  ifndef _WIN32_WINNT
 #    define _WIN32_WINNT VS2008_DEF_TARGET
 #  endif
 #  ifndef _WIN32_WINNT
 #    define _WIN32_WINNT VS2008_DEF_TARGET
 #  endif
 #  endif
 #endif
 
 #  endif
 #endif
 
+/* VS2012 default target settings and minimum build target check. */
+#if defined(_MSC_VER) && (_MSC_VER >= 1700)
+#  ifndef _WIN32_WINNT
+#    define _WIN32_WINNT VS2012_DEF_TARGET
+#  endif
+#  ifndef WINVER
+#    define WINVER VS2012_DEF_TARGET
+#  endif
+#  if (_WIN32_WINNT < VS2012_MIN_TARGET) || (WINVER < VS2012_MIN_TARGET)
+#    if defined(_USING_V110_SDK71_)
+#      error VS2012 does not support Windows build targets prior to Windows XP
+#    else
+#      error VS2012 does not support Windows build targets prior to Windows \
+Vista
+#    endif
+#  endif
+#endif
+
 /* When no build target is specified Pelles C 5.00 and later default build
    target is Windows Vista. We override default target to be Windows 2000. */
 #if defined(__POCC__) && (__POCC__ >= 500)
 /* When no build target is specified Pelles C 5.00 and later default build
    target is Windows Vista. We override default target to be Windows 2000. */
 #if defined(__POCC__) && (__POCC__ >= 500)
 #endif
 
 /* ---------------------------------------------------------------- */
 #endif
 
 /* ---------------------------------------------------------------- */
+/*                          STRUCT RELATED                          */
+/* ---------------------------------------------------------------- */
+
+/* Define if you have struct sockaddr_storage. */
+#if !defined(__SALFORDC__) && !defined(__BORLANDC__)
+#define HAVE_STRUCT_SOCKADDR_STORAGE 1
+#endif
+
+/* Define if you have struct timeval. */
+#define HAVE_STRUCT_TIMEVAL 1
+
+/* Define if struct sockaddr_in6 has the sin6_scope_id member. */
+#define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1
+
+#if HAVE_WINSOCK2_H && defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0600)
+#define HAVE_STRUCT_POLLFD 1
+#endif
+
+/* ---------------------------------------------------------------- */
 /*                        LARGE FILE SUPPORT                        */
 /* ---------------------------------------------------------------- */
 
 /*                        LARGE FILE SUPPORT                        */
 /* ---------------------------------------------------------------- */
 
 #  define CURL_DISABLE_LDAP 1
 #endif
 
 #  define CURL_DISABLE_LDAP 1
 #endif
 
+/* Define to use the Windows crypto library. */
+#if !defined(USE_SSLEAY) && !defined(USE_NSS)
+#define USE_WIN32_CRYPTO
+#endif
+
 /* ---------------------------------------------------------------- */
 /*                       ADDITIONAL DEFINITIONS                     */
 /* ---------------------------------------------------------------- */
 /* ---------------------------------------------------------------- */
 /*                       ADDITIONAL DEFINITIONS                     */
 /* ---------------------------------------------------------------- */
index 48271f7..fcfb150 100644 (file)
@@ -6,7 +6,7 @@
  *                             \___|\___/|_| \_\_____|
  *
  * Copyright (C) 2012, Linus Nielsen Feltzing, <linus@haxx.se>
  *                             \___|\___/|_| \_\_____|
  *
  * Copyright (C) 2012, Linus Nielsen Feltzing, <linus@haxx.se>
- * Copyright (C) 2012 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -131,7 +131,7 @@ CURLcode Curl_conncache_add_conn(struct conncache *connc,
                                       conn->host.name);
   if(!bundle) {
     result = Curl_bundle_create(data, &new_bundle);
                                       conn->host.name);
   if(!bundle) {
     result = Curl_bundle_create(data, &new_bundle);
-    if(result != CURLE_OK)
+    if(result)
       return result;
 
     if(!conncache_add_bundle(data->state.conn_cache,
       return result;
 
     if(!conncache_add_bundle(data->state.conn_cache,
@@ -143,14 +143,19 @@ CURLcode Curl_conncache_add_conn(struct conncache *connc,
   }
 
   result = Curl_bundle_add_conn(bundle, conn);
   }
 
   result = Curl_bundle_add_conn(bundle, conn);
-  if(result != CURLE_OK) {
+  if(result) {
     if(new_bundle)
       conncache_remove_bundle(data->state.conn_cache, new_bundle);
     return result;
   }
 
     if(new_bundle)
       conncache_remove_bundle(data->state.conn_cache, new_bundle);
     return result;
   }
 
+  conn->connection_id = connc->next_connection_id++;
   connc->num_connections++;
 
   connc->num_connections++;
 
+  DEBUGF(infof(conn->data, "Added connection %ld. "
+               "The cache now contains %" CURL_FORMAT_CURL_OFF_TU " members\n",
+               conn->connection_id, (curl_off_t) connc->num_connections));
+
   return CURLE_OK;
 }
 
   return CURLE_OK;
 }
 
@@ -166,10 +171,14 @@ void Curl_conncache_remove_conn(struct conncache *connc,
     if(bundle->num_connections == 0) {
       conncache_remove_bundle(connc, bundle);
     }
     if(bundle->num_connections == 0) {
       conncache_remove_bundle(connc, bundle);
     }
-    connc->num_connections--;
 
 
-    DEBUGF(infof(conn->data, "The cache now contains %d members\n",
-                 connc->num_connections));
+    if(connc) {
+      connc->num_connections--;
+
+      DEBUGF(infof(conn->data, "The cache now contains %"
+                   CURL_FORMAT_CURL_OFF_TU " members\n",
+                   (curl_off_t) connc->num_connections));
+    }
   }
 }
 
   }
 }
 
@@ -195,22 +204,20 @@ void Curl_conncache_foreach(struct conncache *connc,
   he = Curl_hash_next_element(&iter);
   while(he) {
     struct connectbundle *bundle;
   he = Curl_hash_next_element(&iter);
   while(he) {
     struct connectbundle *bundle;
-    struct connectdata *conn;
 
     bundle = he->ptr;
 
     bundle = he->ptr;
+    he = Curl_hash_next_element(&iter);
 
     curr = bundle->conn_list->head;
     while(curr) {
       /* Yes, we need to update curr before calling func(), because func()
          might decide to remove the connection */
 
     curr = bundle->conn_list->head;
     while(curr) {
       /* Yes, we need to update curr before calling func(), because func()
          might decide to remove the connection */
-      conn = curr->ptr;
+      struct connectdata *conn = curr->ptr;
       curr = curr->next;
 
       if(1 == func(conn, param))
         return;
     }
       curr = curr->next;
 
       if(1 == func(conn, param))
         return;
     }
-
-    he = Curl_hash_next_element(&iter);
   }
 }
 
   }
 }
 
@@ -220,7 +227,6 @@ struct connectdata *
 Curl_conncache_find_first_connection(struct conncache *connc)
 {
   struct curl_hash_iterator iter;
 Curl_conncache_find_first_connection(struct conncache *connc)
 {
   struct curl_hash_iterator iter;
-  struct curl_llist_element *curr;
   struct curl_hash_element *he;
   struct connectbundle *bundle;
 
   struct curl_hash_element *he;
   struct connectbundle *bundle;
 
@@ -228,6 +234,7 @@ Curl_conncache_find_first_connection(struct conncache *connc)
 
   he = Curl_hash_next_element(&iter);
   while(he) {
 
   he = Curl_hash_next_element(&iter);
   while(he) {
+    struct curl_llist_element *curr;
     bundle = he->ptr;
 
     curr = bundle->conn_list->head;
     bundle = he->ptr;
 
     curr = bundle->conn_list->head;
index f5e41f1..d793f24 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2012, 2013, Linus Nielsen Feltzing, <linus@haxx.se>
+ * Copyright (C) 2012 - 2014, Linus Nielsen Feltzing, <linus@haxx.se>
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -25,6 +25,8 @@
 struct conncache {
   struct curl_hash *hash;
   size_t num_connections;
 struct conncache {
   struct curl_hash *hash;
   size_t num_connections;
+  long next_connection_id;
+  struct timeval last_cleanup;
 };
 
 struct conncache *Curl_conncache_init(int size);
 };
 
 struct conncache *Curl_conncache_init(int size);
index 2b5719d..5a60d14 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -71,7 +71,7 @@
 #include "sockaddr.h" /* required for Curl_sockaddr_storage */
 #include "inet_ntop.h"
 #include "inet_pton.h"
 #include "sockaddr.h" /* required for Curl_sockaddr_storage */
 #include "inet_ntop.h"
 #include "inet_pton.h"
-#include "sslgen.h" /* for Curl_ssl_check_cxn() */
+#include "vtls/vtls.h" /* for Curl_ssl_check_cxn() */
 #include "progress.h"
 #include "warnless.h"
 #include "conncache.h"
 #include "progress.h"
 #include "warnless.h"
 #include "conncache.h"
@@ -94,7 +94,7 @@ static bool verifyconnect(curl_socket_t sockfd, int *error);
 #define KEEPALIVE_FACTOR(x)
 #endif
 
 #define KEEPALIVE_FACTOR(x)
 #endif
 
-#if defined(HAVE_WINSOCK_H) && !defined(SIO_KEEPALIVE_VALS)
+#if defined(HAVE_WINSOCK2_H) && !defined(SIO_KEEPALIVE_VALS)
 #define SIO_KEEPALIVE_VALS    _WSAIOW(IOC_VENDOR,4)
 
 struct tcp_keepalive {
 #define SIO_KEEPALIVE_VALS    _WSAIOW(IOC_VENDOR,4)
 
 struct tcp_keepalive {
@@ -164,8 +164,7 @@ tcpkeepalive(struct SessionHandle *data,
 static CURLcode
 singleipconnect(struct connectdata *conn,
                 const Curl_addrinfo *ai, /* start connecting to this */
 static CURLcode
 singleipconnect(struct connectdata *conn,
                 const Curl_addrinfo *ai, /* start connecting to this */
-                curl_socket_t *sock,
-                bool *connected);
+                curl_socket_t *sock);
 
 /*
  * Curl_timeleft() returns the amount of milliseconds left allowed for the
 
 /*
  * Curl_timeleft() returns the amount of milliseconds left allowed for the
@@ -225,7 +224,12 @@ long Curl_timeleft(struct SessionHandle *data,
   }
 
   /* subtract elapsed time */
   }
 
   /* subtract elapsed time */
-  timeout_ms -= Curl_tvdiff(*nowp, data->progress.t_startsingle);
+  if(duringconnect)
+    /* since this most recent connect started */
+    timeout_ms -= Curl_tvdiff(*nowp, data->progress.t_startsingle);
+  else
+    /* since the entire operation started */
+    timeout_ms -= Curl_tvdiff(*nowp, data->progress.t_startop);
   if(!timeout_ms)
     /* avoid returning 0 as that means no timeout! */
     return -1;
   if(!timeout_ms)
     /* avoid returning 0 as that means no timeout! */
     return -1;
@@ -233,47 +237,8 @@ long Curl_timeleft(struct SessionHandle *data,
   return timeout_ms;
 }
 
   return timeout_ms;
 }
 
-/*
- * checkconnect() checks for a TCP connect on the given socket.
- * It returns:
- */
-
-enum chkconn_t {
-  CHKCONN_SELECT_ERROR = -1,
-  CHKCONN_CONNECTED    = 0,
-  CHKCONN_IDLE         = 1,
-  CHKCONN_FDSET_ERROR  = 2
-};
-
-static enum chkconn_t
-checkconnect(curl_socket_t sockfd)
-{
-  int rc;
-#ifdef mpeix
-  /* Call this function once now, and ignore the results. We do this to
-     "clear" the error state on the socket so that we can later read it
-     reliably. This is reported necessary on the MPE/iX operating system. */
-  (void)verifyconnect(sockfd, NULL);
-#endif
-
-  rc = Curl_socket_ready(CURL_SOCKET_BAD, sockfd, 0);
-
-  if(-1 == rc)
-    /* error, no connect here, try next */
-    return CHKCONN_SELECT_ERROR;
-
-  else if(rc & CURL_CSELECT_ERR)
-    /* error condition caught */
-    return CHKCONN_FDSET_ERROR;
-
-  else if(rc)
-    return CHKCONN_CONNECTED;
-
-  return CHKCONN_IDLE;
-}
-
 static CURLcode bindlocal(struct connectdata *conn,
 static CURLcode bindlocal(struct connectdata *conn,
-                          curl_socket_t sockfd, int af)
+                          curl_socket_t sockfd, int af, unsigned int scope)
 {
   struct SessionHandle *data = conn->data;
 
 {
   struct SessionHandle *data = conn->data;
 
@@ -292,12 +257,6 @@ static CURLcode bindlocal(struct connectdata *conn,
   int portnum = data->set.localportrange;
   const char *dev = data->set.str[STRING_DEVICE];
   int error;
   int portnum = data->set.localportrange;
   const char *dev = data->set.str[STRING_DEVICE];
   int error;
-  char myhost[256] = "";
-  int done = 0; /* -1 for error, 1 for address found */
-  bool is_interface = FALSE;
-  bool is_host = FALSE;
-  static const char *if_prefix = "if!";
-  static const char *host_prefix = "host!";
 
   /*************************************************************
    * Select device to bind socket to
 
   /*************************************************************
    * Select device to bind socket to
@@ -309,6 +268,13 @@ static CURLcode bindlocal(struct connectdata *conn,
   memset(&sa, 0, sizeof(struct Curl_sockaddr_storage));
 
   if(dev && (strlen(dev)<255) ) {
   memset(&sa, 0, sizeof(struct Curl_sockaddr_storage));
 
   if(dev && (strlen(dev)<255) ) {
+    char myhost[256] = "";
+    int done = 0; /* -1 for error, 1 for address found */
+    bool is_interface = FALSE;
+    bool is_host = FALSE;
+    static const char *if_prefix = "if!";
+    static const char *host_prefix = "host!";
+
     if(strncmp(if_prefix, dev, strlen(if_prefix)) == 0) {
       dev += strlen(if_prefix);
       is_interface = TRUE;
     if(strncmp(if_prefix, dev, strlen(if_prefix)) == 0) {
       dev += strlen(if_prefix);
       is_interface = TRUE;
@@ -320,7 +286,8 @@ static CURLcode bindlocal(struct connectdata *conn,
 
     /* interface */
     if(!is_host) {
 
     /* interface */
     if(!is_host) {
-      switch(Curl_if2ip(af, conn->scope, dev, myhost, sizeof(myhost))) {
+      switch(Curl_if2ip(af, scope, conn->scope_id, dev,
+                        myhost, sizeof(myhost))) {
         case IF2IP_NOT_FOUND:
           if(is_interface) {
             /* Do not fall back to treating it as a host name */
         case IF2IP_NOT_FOUND:
           if(is_interface) {
             /* Do not fall back to treating it as a host name */
@@ -409,7 +376,7 @@ static CURLcode bindlocal(struct connectdata *conn,
 
     if(done > 0) {
 #ifdef ENABLE_IPV6
 
     if(done > 0) {
 #ifdef ENABLE_IPV6
-      /* ipv6 address */
+      /* IPv6 address */
       if(af == AF_INET6) {
 #ifdef HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID
         char *scope_ptr = strchr(myhost, '%');
       if(af == AF_INET6) {
 #ifdef HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID
         char *scope_ptr = strchr(myhost, '%');
@@ -432,7 +399,7 @@ static CURLcode bindlocal(struct connectdata *conn,
       }
       else
 #endif
       }
       else
 #endif
-      /* ipv4 address */
+      /* IPv4 address */
       if((af == AF_INET) &&
          (Curl_inet_pton(AF_INET, myhost, &si4->sin_addr) > 0)) {
         si4->sin_family = AF_INET;
       if((af == AF_INET) &&
          (Curl_inet_pton(AF_INET, myhost, &si4->sin_addr) > 0)) {
         si4->sin_family = AF_INET;
@@ -573,42 +540,58 @@ static bool verifyconnect(curl_socket_t sockfd, int *error)
    more address exists or error */
 static CURLcode trynextip(struct connectdata *conn,
                           int sockindex,
    more address exists or error */
 static CURLcode trynextip(struct connectdata *conn,
                           int sockindex,
-                          bool *connected)
+                          int tempindex)
 {
 {
-  curl_socket_t sockfd;
-  Curl_addrinfo *ai;
+  CURLcode result = CURLE_COULDNT_CONNECT;
 
   /* First clean up after the failed socket.
      Don't close it yet to ensure that the next IP's socket gets a different
      file descriptor, which can prevent bugs when the curl_multi_socket_action
      interface is used with certain select() replacements such as kqueue. */
 
   /* First clean up after the failed socket.
      Don't close it yet to ensure that the next IP's socket gets a different
      file descriptor, which can prevent bugs when the curl_multi_socket_action
      interface is used with certain select() replacements such as kqueue. */
-  curl_socket_t fd_to_close = conn->sock[sockindex];
-  conn->sock[sockindex] = CURL_SOCKET_BAD;
-  *connected = FALSE;
+  curl_socket_t fd_to_close = conn->tempsock[tempindex];
+  conn->tempsock[tempindex] = CURL_SOCKET_BAD;
 
 
-  if(sockindex != FIRSTSOCKET) {
-    Curl_closesocket(conn, fd_to_close);
-    return CURLE_COULDNT_CONNECT; /* no next */
-  }
+  if(sockindex == FIRSTSOCKET) {
+    Curl_addrinfo *ai = NULL;
+    int family = AF_UNSPEC;
 
 
-  /* try the next address */
-  ai = conn->ip_addr->ai_next;
-
-  while(ai) {
-    CURLcode res = singleipconnect(conn, ai, &sockfd, connected);
-    if(res)
-      return res;
-    if(sockfd != CURL_SOCKET_BAD) {
-      /* store the new socket descriptor */
-      conn->sock[sockindex] = sockfd;
-      conn->ip_addr = ai;
-      Curl_closesocket(conn, fd_to_close);
-      return CURLE_OK;
+    if(conn->tempaddr[tempindex]) {
+      /* find next address in the same protocol family */
+      family = conn->tempaddr[tempindex]->ai_family;
+      ai = conn->tempaddr[tempindex]->ai_next;
+    }
+    else if(conn->tempaddr[0]) {
+      /* happy eyeballs - try the other protocol family */
+      int firstfamily = conn->tempaddr[0]->ai_family;
+#ifdef ENABLE_IPV6
+      family = (firstfamily == AF_INET) ? AF_INET6 : AF_INET;
+#else
+      family = firstfamily;
+#endif
+      ai = conn->tempaddr[0]->ai_next;
+    }
+
+    while(ai) {
+      while(ai && ai->ai_family != family)
+        ai = ai->ai_next;
+
+      if(ai) {
+        result = singleipconnect(conn, ai, &conn->tempsock[tempindex]);
+        if(result == CURLE_COULDNT_CONNECT) {
+          ai = ai->ai_next;
+          continue;
+        }
+
+        conn->tempaddr[tempindex] = ai;
+      }
+      break;
     }
     }
-    ai = ai->ai_next;
   }
   }
-  Curl_closesocket(conn, fd_to_close);
-  return CURLE_COULDNT_CONNECT;
+
+  if(fd_to_close != CURL_SOCKET_BAD)
+    Curl_closesocket(conn, fd_to_close);
+
+  return result;
 }
 
 /* Copies connection info into the session handle to make it available
 }
 
 /* Copies connection info into the session handle to make it available
@@ -676,13 +659,17 @@ static bool getaddressinfo(struct sockaddr* sa, char* addr,
    connection */
 void Curl_updateconninfo(struct connectdata *conn, curl_socket_t sockfd)
 {
    connection */
 void Curl_updateconninfo(struct connectdata *conn, curl_socket_t sockfd)
 {
-  int error;
   curl_socklen_t len;
   struct Curl_sockaddr_storage ssrem;
   struct Curl_sockaddr_storage ssloc;
   struct SessionHandle *data = conn->data;
 
   curl_socklen_t len;
   struct Curl_sockaddr_storage ssrem;
   struct Curl_sockaddr_storage ssloc;
   struct SessionHandle *data = conn->data;
 
+  if(conn->socktype == SOCK_DGRAM)
+    /* there's no connection! */
+    return;
+
   if(!conn->bits.reuse) {
   if(!conn->bits.reuse) {
+    int error;
 
     len = sizeof(struct Curl_sockaddr_storage);
     if(getpeername(sockfd, (struct sockaddr*) &ssrem, &len)) {
 
     len = sizeof(struct Curl_sockaddr_storage);
     if(getpeername(sockfd, (struct sockaddr*) &ssrem, &len)) {
@@ -693,6 +680,7 @@ void Curl_updateconninfo(struct connectdata *conn, curl_socket_t sockfd)
     }
 
     len = sizeof(struct Curl_sockaddr_storage);
     }
 
     len = sizeof(struct Curl_sockaddr_storage);
+    memset(&ssloc, 0, sizeof(ssloc));
     if(getsockname(sockfd, (struct sockaddr*) &ssloc, &len)) {
       error = SOCKERRNO;
       failf(data, "getsockname() failed with errno %d: %s",
     if(getsockname(sockfd, (struct sockaddr*) &ssloc, &len)) {
       error = SOCKERRNO;
       failf(data, "getsockname() failed with errno %d: %s",
@@ -707,6 +695,7 @@ void Curl_updateconninfo(struct connectdata *conn, curl_socket_t sockfd)
             error, Curl_strerror(conn, error));
       return;
     }
             error, Curl_strerror(conn, error));
       return;
     }
+    memcpy(conn->ip_addr_str, conn->primary_ip, MAX_IPADR_LEN);
 
     if(!getaddressinfo((struct sockaddr*)&ssloc,
                        conn->local_ip, &conn->local_port)) {
 
     if(!getaddressinfo((struct sockaddr*)&ssloc,
                        conn->local_ip, &conn->local_port)) {
@@ -731,12 +720,12 @@ CURLcode Curl_is_connected(struct connectdata *conn,
                            bool *connected)
 {
   struct SessionHandle *data = conn->data;
                            bool *connected)
 {
   struct SessionHandle *data = conn->data;
-  CURLcode code = CURLE_OK;
-  curl_socket_t sockfd = conn->sock[sockindex];
-  long allow = DEFAULT_CONNECT_TIMEOUT;
+  CURLcode result = CURLE_OK;
+  long allow;
   int error = 0;
   struct timeval now;
   int error = 0;
   struct timeval now;
-  enum chkconn_t chk;
+  int rc;
+  int i;
 
   DEBUGASSERT(sockindex >= FIRSTSOCKET && sockindex <= SECONDARYSOCKET);
 
 
   DEBUGASSERT(sockindex >= FIRSTSOCKET && sockindex <= SECONDARYSOCKET);
 
@@ -759,72 +748,108 @@ CURLcode Curl_is_connected(struct connectdata *conn,
     return CURLE_OPERATION_TIMEDOUT;
   }
 
     return CURLE_OPERATION_TIMEDOUT;
   }
 
-  /* check socket for connect */
-  chk = checkconnect(sockfd);
-  if(CHKCONN_IDLE == chk) {
-    if(curlx_tvdiff(now, conn->connecttime) >= conn->timeoutms_per_addr) {
-      infof(data, "After %ldms connect time, move on!\n",
-            conn->timeoutms_per_addr);
-      goto next;
-    }
+  for(i=0; i<2; i++) {
+    if(conn->tempsock[i] == CURL_SOCKET_BAD)
+      continue;
 
 
-    /* not an error, but also no connection yet */
-    return code;
-  }
+#ifdef mpeix
+    /* Call this function once now, and ignore the results. We do this to
+       "clear" the error state on the socket so that we can later read it
+       reliably. This is reported necessary on the MPE/iX operating system. */
+    (void)verifyconnect(conn->tempsock[i], NULL);
+#endif
+
+    /* check socket for connect */
+    rc = Curl_socket_ready(CURL_SOCKET_BAD, conn->tempsock[i], 0);
 
 
-  if(CHKCONN_CONNECTED == chk) {
-    if(verifyconnect(sockfd, &error)) {
-      /* we are connected with TCP, awesome! */
+    if(rc == 0) { /* no connection yet */
+      if(curlx_tvdiff(now, conn->connecttime) >= conn->timeoutms_per_addr) {
+        infof(data, "After %ldms connect time, move on!\n",
+              conn->timeoutms_per_addr);
+        error = ETIMEDOUT;
+      }
+
+      /* should we try another protocol family? */
+      if(i == 0 && conn->tempaddr[1] == NULL &&
+         curlx_tvdiff(now, conn->connecttime) >= HAPPY_EYEBALLS_TIMEOUT) {
+        trynextip(conn, sockindex, 1);
+      }
+    }
+    else if(rc == CURL_CSELECT_OUT) {
+      if(verifyconnect(conn->tempsock[i], &error)) {
+        /* we are connected with TCP, awesome! */
+        int other = i ^ 1;
+
+        /* use this socket from now on */
+        conn->sock[sockindex] = conn->tempsock[i];
+        conn->ip_addr = conn->tempaddr[i];
+        conn->tempsock[i] = CURL_SOCKET_BAD;
+
+        /* close the other socket, if open */
+        if(conn->tempsock[other] != CURL_SOCKET_BAD) {
+          Curl_closesocket(conn, conn->tempsock[other]);
+          conn->tempsock[other] = CURL_SOCKET_BAD;
+        }
 
 
-      /* see if we need to do any proxy magic first once we connected */
-      code = Curl_connected_proxy(conn);
-      if(code)
-        return code;
+        /* see if we need to do any proxy magic first once we connected */
+        result = Curl_connected_proxy(conn, sockindex);
+        if(result)
+          return result;
 
 
-      conn->bits.tcpconnect[sockindex] = TRUE;
+        conn->bits.tcpconnect[sockindex] = TRUE;
 
 
-      *connected = TRUE;
-      if(sockindex == FIRSTSOCKET)
-        Curl_pgrsTime(data, TIMER_CONNECT); /* connect done */
-      Curl_verboseconnect(conn);
-      Curl_updateconninfo(conn, sockfd);
+        *connected = TRUE;
+        if(sockindex == FIRSTSOCKET)
+          Curl_pgrsTime(data, TIMER_CONNECT); /* connect done */
+        Curl_updateconninfo(conn, conn->sock[sockindex]);
+        Curl_verboseconnect(conn);
 
 
-      return CURLE_OK;
+        return CURLE_OK;
+      }
+      else
+        infof(data, "Connection failed\n");
     }
     }
-    /* nope, not connected for real */
-  }
-  else {
-    /* nope, not connected  */
-    if(CHKCONN_FDSET_ERROR == chk) {
-      (void)verifyconnect(sockfd, &error);
-      infof(data, "%s\n",Curl_strerror(conn, error));
+    else if(rc & CURL_CSELECT_ERR)
+      (void)verifyconnect(conn->tempsock[i], &error);
+
+    /*
+     * The connection failed here, we should attempt to connect to the "next
+     * address" for the given host. But first remember the latest error.
+     */
+    if(error) {
+      data->state.os_errno = error;
+      SET_SOCKERRNO(error);
+      if(conn->tempaddr[i]) {
+        char ipaddress[MAX_IPADR_LEN];
+        Curl_printable_address(conn->tempaddr[i], ipaddress, MAX_IPADR_LEN);
+        infof(data, "connect to %s port %ld failed: %s\n",
+              ipaddress, conn->port, Curl_strerror(conn, error));
+
+        conn->timeoutms_per_addr = conn->tempaddr[i]->ai_next == NULL ?
+                                   allow : allow / 2;
+
+        result = trynextip(conn, sockindex, i);
+      }
     }
     }
-    else
-      infof(data, "Connection failed\n");
   }
 
   }
 
-  /*
-   * The connection failed here, we should attempt to connect to the "next
-   * address" for the given host. But first remember the latest error.
-   */
-  if(error) {
-    data->state.os_errno = error;
-    SET_SOCKERRNO(error);
-  }
-  next:
+  if(result) {
+    /* no more addresses to try */
 
 
-  conn->timeoutms_per_addr = conn->ip_addr->ai_next == NULL ?
-                             allow : allow / 2;
-  code = trynextip(conn, sockindex, connected);
+    /* if the first address family runs out of addresses to try before
+       the happy eyeball timeout, go ahead and try the next family now */
+    if(conn->tempaddr[1] == NULL) {
+      result = trynextip(conn, sockindex, 1);
+      if(!result)
+        return result;
+    }
 
 
-  if(code) {
-    error = SOCKERRNO;
-    data->state.os_errno = error;
-    failf(data, "Failed connect to %s:%ld; %s",
-          conn->host.name, conn->port, Curl_strerror(conn, error));
+    failf(data, "Failed to connect to %s port %ld: %s",
+          conn->bits.proxy?conn->proxy.name:conn->host.name,
+          conn->port, Curl_strerror(conn, error));
   }
 
   }
 
-  return code;
+  return result;
 }
 
 static void tcpnodelay(struct connectdata *conn,
 }
 
 static void tcpnodelay(struct connectdata *conn,
@@ -901,19 +926,40 @@ void Curl_sndbufset(curl_socket_t sockfd)
   int val = CURL_MAX_WRITE_SIZE + 32;
   int curval = 0;
   int curlen = sizeof(curval);
   int val = CURL_MAX_WRITE_SIZE + 32;
   int curval = 0;
   int curlen = sizeof(curval);
+  DWORD majorVersion = 6;
 
 
-  OSVERSIONINFO osver;
   static int detectOsState = DETECT_OS_NONE;
 
   if(detectOsState == DETECT_OS_NONE) {
   static int detectOsState = DETECT_OS_NONE;
 
   if(detectOsState == DETECT_OS_NONE) {
+#if !defined(_WIN32_WINNT) || !defined(_WIN32_WINNT_WIN2K) || \
+    (_WIN32_WINNT < _WIN32_WINNT_WIN2K)
+    OSVERSIONINFO osver;
+
     memset(&osver, 0, sizeof(osver));
     osver.dwOSVersionInfoSize = sizeof(osver);
     memset(&osver, 0, sizeof(osver));
     osver.dwOSVersionInfoSize = sizeof(osver);
+
     detectOsState = DETECT_OS_PREVISTA;
     if(GetVersionEx(&osver)) {
     detectOsState = DETECT_OS_PREVISTA;
     if(GetVersionEx(&osver)) {
-      if(osver.dwMajorVersion >= 6)
+      if(osver.dwMajorVersion >= majorVersion)
         detectOsState = DETECT_OS_VISTA_OR_LATER;
     }
         detectOsState = DETECT_OS_VISTA_OR_LATER;
     }
+#else
+    ULONGLONG majorVersionMask;
+    OSVERSIONINFOEX osver;
+
+    memset(&osver, 0, sizeof(osver));
+    osver.dwOSVersionInfoSize = sizeof(osver);
+    osver.dwMajorVersion = majorVersion;
+    majorVersionMask = VerSetConditionMask(0, VER_MAJORVERSION,
+                                           VER_GREATER_EQUAL);
+
+    if(VerifyVersionInfo(&osver, VER_MAJORVERSION, majorVersionMask))
+      detectOsState = DETECT_OS_VISTA_OR_LATER;
+    else
+      detectOsState = DETECT_OS_PREVISTA;
+#endif
   }
   }
+
   if(detectOsState == DETECT_OS_VISTA_OR_LATER)
     return;
 
   if(detectOsState == DETECT_OS_VISTA_OR_LATER)
     return;
 
@@ -925,7 +971,6 @@ void Curl_sndbufset(curl_socket_t sockfd)
 }
 #endif
 
 }
 #endif
 
-
 /*
  * singleipconnect()
  *
 /*
  * singleipconnect()
  *
@@ -935,11 +980,9 @@ void Curl_sndbufset(curl_socket_t sockfd)
  * singleipconnect() connects to the given IP only, and it may return without
  * having connected.
  */
  * singleipconnect() connects to the given IP only, and it may return without
  * having connected.
  */
-static CURLcode
-singleipconnect(struct connectdata *conn,
-                const Curl_addrinfo *ai,
-                curl_socket_t *sockp,
-                bool *connected)
+static CURLcode singleipconnect(struct connectdata *conn,
+                                const Curl_addrinfo *ai,
+                                curl_socket_t *sockp)
 {
   struct Curl_sockaddr_ex addr;
   int rc;
 {
   struct Curl_sockaddr_ex addr;
   int rc;
@@ -947,13 +990,15 @@ singleipconnect(struct connectdata *conn,
   bool isconnected = FALSE;
   struct SessionHandle *data = conn->data;
   curl_socket_t sockfd;
   bool isconnected = FALSE;
   struct SessionHandle *data = conn->data;
   curl_socket_t sockfd;
-  CURLcode res = CURLE_OK;
+  CURLcode result;
+  char ipaddress[MAX_IPADR_LEN];
+  long port;
+  bool is_tcp;
 
   *sockp = CURL_SOCKET_BAD;
 
   *sockp = CURL_SOCKET_BAD;
-  *connected = FALSE; /* default is not connected */
 
 
-  res = Curl_socket(conn, ai, &addr, &sockfd);
-  if(res)
+  result = Curl_socket(conn, ai, &addr, &sockfd);
+  if(result)
     /* Failed to create the socket, but still return OK since we signal the
        lack of socket as well. This allows the parent function to keep looping
        over alternative addresses/socket families etc. */
     /* Failed to create the socket, but still return OK since we signal the
        lack of socket as well. This allows the parent function to keep looping
        over alternative addresses/socket families etc. */
@@ -961,7 +1006,7 @@ singleipconnect(struct connectdata *conn,
 
   /* store remote address and port used in this connection attempt */
   if(!getaddressinfo((struct sockaddr*)&addr.sa_addr,
 
   /* store remote address and port used in this connection attempt */
   if(!getaddressinfo((struct sockaddr*)&addr.sa_addr,
-                     conn->primary_ip, &conn->primary_port)) {
+                     ipaddress, &port)) {
     /* malformed address or bug in inet_ntop, try next address */
     error = ERRNO;
     failf(data, "sa_addr inet_ntop() failed with errno %d: %s",
     /* malformed address or bug in inet_ntop, try next address */
     error = ERRNO;
     failf(data, "sa_addr inet_ntop() failed with errno %d: %s",
@@ -969,19 +1014,18 @@ singleipconnect(struct connectdata *conn,
     Curl_closesocket(conn, sockfd);
     return CURLE_OK;
   }
     Curl_closesocket(conn, sockfd);
     return CURLE_OK;
   }
-  memcpy(conn->ip_addr_str, conn->primary_ip, MAX_IPADR_LEN);
-  infof(data, "  Trying %s...\n", conn->ip_addr_str);
-
-  Curl_persistconninfo(conn);
+  infof(data, "  Trying %s...\n", ipaddress);
 
 
-  if(data->set.tcp_nodelay)
+  is_tcp = (addr.family == AF_INET || addr.family == AF_INET6) &&
+           addr.socktype == SOCK_STREAM;
+  if(is_tcp && data->set.tcp_nodelay)
     tcpnodelay(conn, sockfd);
 
   nosigpipe(conn, sockfd);
 
   Curl_sndbufset(sockfd);
 
     tcpnodelay(conn, sockfd);
 
   nosigpipe(conn, sockfd);
 
   Curl_sndbufset(sockfd);
 
-  if(data->set.tcp_keepalive)
+  if(is_tcp && data->set.tcp_keepalive)
     tcpkeepalive(data, sockfd);
 
   if(data->set.fsockopt) {
     tcpkeepalive(data, sockfd);
 
   if(data->set.fsockopt) {
@@ -999,23 +1043,26 @@ singleipconnect(struct connectdata *conn,
   }
 
   /* possibly bind the local end to an IP, interface or port */
   }
 
   /* possibly bind the local end to an IP, interface or port */
-  res = bindlocal(conn, sockfd, addr.family);
-  if(res) {
-    Curl_closesocket(conn, sockfd); /* close socket and bail out */
-    if(res == CURLE_UNSUPPORTED_PROTOCOL) {
-      /* The address family is not supported on this interface.
-         We can continue trying addresses */
-      return CURLE_OK;
+  if(addr.family == AF_INET || addr.family == AF_INET6) {
+    result = bindlocal(conn, sockfd, addr.family,
+                       Curl_ipv6_scope((struct sockaddr*)&addr.sa_addr));
+    if(result) {
+      Curl_closesocket(conn, sockfd); /* close socket and bail out */
+      if(result == CURLE_UNSUPPORTED_PROTOCOL) {
+        /* The address family is not supported on this interface.
+           We can continue trying addresses */
+        return CURLE_COULDNT_CONNECT;
+      }
+      return result;
     }
     }
-    return res;
   }
 
   /* set socket non-blocking */
   }
 
   /* set socket non-blocking */
-  curlx_nonblock(sockfd, TRUE);
+  (void)curlx_nonblock(sockfd, TRUE);
 
   conn->connecttime = Curl_tvnow();
   if(conn->num_addr > 1)
 
   conn->connecttime = Curl_tvnow();
   if(conn->num_addr > 1)
-    Curl_expire(data, conn->timeoutms_per_addr);
+    Curl_expire_latest(data, conn->timeoutms_per_addr);
 
   /* Connect TCP sockets, bind UDP */
   if(!isconnected && (conn->socktype == SOCK_STREAM)) {
 
   /* Connect TCP sockets, bind UDP */
   if(!isconnected && (conn->socktype == SOCK_STREAM)) {
@@ -1033,7 +1080,7 @@ singleipconnect(struct connectdata *conn,
 #endif
 
   if(-1 == rc) {
 #endif
 
   if(-1 == rc) {
-    switch (error) {
+    switch(error) {
     case EINPROGRESS:
     case EWOULDBLOCK:
 #if defined(EAGAIN)
     case EINPROGRESS:
     case EWOULDBLOCK:
 #if defined(EAGAIN)
@@ -1045,25 +1092,25 @@ singleipconnect(struct connectdata *conn,
     case EAGAIN:
 #endif
 #endif
     case EAGAIN:
 #endif
 #endif
-      *sockp = sockfd;
-      return CURLE_OK;
+      result = CURLE_OK;
+      break;
 
     default:
       /* unknown error, fallthrough and try another address! */
 
     default:
       /* unknown error, fallthrough and try another address! */
-      failf(data, "Failed to connect to %s: %s",
-            conn->ip_addr_str, Curl_strerror(conn,error));
+      infof(data, "Immediate connect fail for %s: %s\n",
+            ipaddress, Curl_strerror(conn,error));
       data->state.os_errno = error;
 
       /* connect failed */
       Curl_closesocket(conn, sockfd);
       data->state.os_errno = error;
 
       /* connect failed */
       Curl_closesocket(conn, sockfd);
-
-      break;
+      result = CURLE_COULDNT_CONNECT;
     }
   }
     }
   }
-  else
+
+  if(!result)
     *sockp = sockfd;
 
     *sockp = sockfd;
 
-  return CURLE_OK;
+  return result;
 }
 
 /*
 }
 
 /*
@@ -1073,29 +1120,13 @@ singleipconnect(struct connectdata *conn,
  */
 
 CURLcode Curl_connecthost(struct connectdata *conn,  /* context */
  */
 
 CURLcode Curl_connecthost(struct connectdata *conn,  /* context */
-                          const struct Curl_dns_entry *remotehost,
-                          curl_socket_t *sockconn,   /* the connected socket */
-                          Curl_addrinfo **addr,      /* the one we used */
-                          bool *connected)           /* really connected? */
+                          const struct Curl_dns_entry *remotehost)
 {
   struct SessionHandle *data = conn->data;
 {
   struct SessionHandle *data = conn->data;
-  curl_socket_t sockfd = CURL_SOCKET_BAD;
-  Curl_addrinfo *ai;
-  Curl_addrinfo *curr_addr;
-
-  struct timeval after;
   struct timeval before = Curl_tvnow();
   struct timeval before = Curl_tvnow();
+  CURLcode result = CURLE_COULDNT_CONNECT;
 
 
-  /*************************************************************
-   * Figure out what maximum time we have left
-   *************************************************************/
-  long timeout_ms;
-
-  DEBUGASSERT(sockconn);
-  *connected = FALSE; /* default to not connected */
-
-  /* get the timeout left */
-  timeout_ms = Curl_timeleft(data, &before, TRUE);
+  long timeout_ms = Curl_timeleft(data, &before, TRUE);
 
   if(timeout_ms < 0) {
     /* a precaution, no need to continue if time already is up */
 
   if(timeout_ms < 0) {
     /* a precaution, no need to continue if time already is up */
@@ -1104,57 +1135,26 @@ CURLcode Curl_connecthost(struct connectdata *conn,  /* context */
   }
 
   conn->num_addr = Curl_num_addresses(remotehost->addr);
   }
 
   conn->num_addr = Curl_num_addresses(remotehost->addr);
-
-  ai = remotehost->addr;
-
-  /* Below is the loop that attempts to connect to all IP-addresses we
-   * know for the given host. One by one until one IP succeeds.
-   */
-
-  /*
-   * Connecting with a Curl_addrinfo chain
-   */
-  for(curr_addr = ai; curr_addr; curr_addr = curr_addr->ai_next) {
-    CURLcode res;
-
-    /* Max time for the next address */
-    conn->timeoutms_per_addr = curr_addr->ai_next == NULL ?
-                               timeout_ms : timeout_ms / 2;
-
-    /* start connecting to the IP curr_addr points to */
-    res = singleipconnect(conn, curr_addr,
-                          &sockfd, connected);
-    if(res)
-      return res;
-
-    if(sockfd != CURL_SOCKET_BAD)
+  conn->tempaddr[0] = remotehost->addr;
+  conn->tempaddr[1] = NULL;
+  conn->tempsock[0] = CURL_SOCKET_BAD;
+  conn->tempsock[1] = CURL_SOCKET_BAD;
+  Curl_expire(conn->data, HAPPY_EYEBALLS_TIMEOUT);
+
+  /* Max time for the next connection attempt */
+  conn->timeoutms_per_addr =
+    conn->tempaddr[0]->ai_next == NULL ? timeout_ms : timeout_ms / 2;
+
+  /* start connecting to first IP */
+  while(conn->tempaddr[0]) {
+    result = singleipconnect(conn, conn->tempaddr[0], &(conn->tempsock[0]));
+    if(!result)
       break;
       break;
-
-    /* get a new timeout for next attempt */
-    after = Curl_tvnow();
-    timeout_ms -= Curl_tvdiff(after, before);
-    if(timeout_ms < 0) {
-      failf(data, "connect() timed out!");
-      return CURLE_OPERATION_TIMEDOUT;
-    }
-    before = after;
-  }  /* end of connect-to-each-address loop */
-
-  *sockconn = sockfd;    /* the socket descriptor we've connected */
-
-  if(sockfd == CURL_SOCKET_BAD) {
-    /* no good connect was made */
-    failf(data, "couldn't connect to %s at %s:%ld",
-          conn->bits.proxy?"proxy":"host",
-          conn->bits.proxy?conn->proxy.name:conn->host.name, conn->port);
-    return CURLE_COULDNT_CONNECT;
+    conn->tempaddr[0] = conn->tempaddr[0]->ai_next;
   }
 
   }
 
-  /* leave the socket in non-blocking mode */
-
-  /* store the address we use */
-  if(addr)
-    *addr = curr_addr;
+  if(conn->tempsock[0] == CURL_SOCKET_BAD)
+    return result;
 
   data->info.numconnects++; /* to track the number of connections made */
 
 
   data->info.numconnects++; /* to track the number of connections made */
 
@@ -1251,12 +1251,13 @@ int Curl_closesocket(struct connectdata *conn,
     else
       return conn->fclosesocket(conn->closesocket_client, sock);
   }
     else
       return conn->fclosesocket(conn->closesocket_client, sock);
   }
-  sclose(sock);
 
   if(conn)
     /* tell the multi-socket code about this */
     Curl_multi_closed(conn, sock);
 
 
   if(conn)
     /* tell the multi-socket code about this */
     Curl_multi_closed(conn, sock);
 
+  sclose(sock);
+
   return 0;
 }
 
   return 0;
 }
 
@@ -1320,12 +1321,34 @@ CURLcode Curl_socket(struct connectdata *conn,
     return CURLE_COULDNT_CONNECT;
 
 #if defined(ENABLE_IPV6) && defined(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID)
     return CURLE_COULDNT_CONNECT;
 
 #if defined(ENABLE_IPV6) && defined(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID)
-  if(conn->scope && (addr->family == AF_INET6)) {
+  if(conn->scope_id && (addr->family == AF_INET6)) {
     struct sockaddr_in6 * const sa6 = (void *)&addr->sa_addr;
     struct sockaddr_in6 * const sa6 = (void *)&addr->sa_addr;
-    sa6->sin6_scope_id = conn->scope;
+    sa6->sin6_scope_id = conn->scope_id;
   }
 #endif
 
   return CURLE_OK;
 
 }
   }
 #endif
 
   return CURLE_OK;
 
 }
+
+#ifdef CURLDEBUG
+/*
+ * Curl_conncontrol() is used to set the conn->bits.close bit on or off. It
+ * MUST be called with the connclose() or connkeep() macros with a stated
+ * reason. The reason is only shown in debug builds but helps to figure out
+ * decision paths when connections are or aren't re-used as expected.
+ */
+void Curl_conncontrol(struct connectdata *conn, bool closeit,
+                      const char *reason)
+{
+#if defined(CURL_DISABLE_VERBOSE_STRINGS)
+  (void) reason;
+#endif
+
+  infof(conn->data, "Marked for [%s]: %s\n", closeit?"closure":"keep alive",
+        reason);
+
+  conn->bits.close = closeit; /* the only place in the source code that should
+                                 assign this bit */
+}
+#endif
index ab98002..91646c7 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -31,11 +31,7 @@ CURLcode Curl_is_connected(struct connectdata *conn,
                            bool *connected);
 
 CURLcode Curl_connecthost(struct connectdata *conn,
                            bool *connected);
 
 CURLcode Curl_connecthost(struct connectdata *conn,
-                          const struct Curl_dns_entry *host, /* connect to
-                                                                this */
-                          curl_socket_t *sockconn, /* not set if error */
-                          Curl_addrinfo **addr, /* the one we used */
-                          bool *connected); /* truly connected? */
+                          const struct Curl_dns_entry *host);
 
 /* generic function that returns how much time there's left to run, according
    to the timeouts set */
 
 /* generic function that returns how much time there's left to run, according
    to the timeouts set */
@@ -44,6 +40,8 @@ long Curl_timeleft(struct SessionHandle *data,
                    bool duringconnect);
 
 #define DEFAULT_CONNECT_TIMEOUT 300000 /* milliseconds == five minutes */
                    bool duringconnect);
 
 #define DEFAULT_CONNECT_TIMEOUT 300000 /* milliseconds == five minutes */
+#define HAPPY_EYEBALLS_TIMEOUT     200 /* milliseconds to wait between
+                                          IPv4/IPv6 connection attempts */
 
 /*
  * Used to extract socket and connectdata struct for the most recent
 
 /*
  * Used to extract socket and connectdata struct for the most recent
@@ -104,4 +102,21 @@ CURLcode Curl_socket(struct connectdata *conn,
                      struct Curl_sockaddr_ex *addr,
                      curl_socket_t *sockfd);
 
                      struct Curl_sockaddr_ex *addr,
                      curl_socket_t *sockfd);
 
+#ifdef CURLDEBUG
+/*
+ * Curl_connclose() sets the bit.close bit to TRUE with an explanation.
+ * Nothing else.
+ */
+void Curl_conncontrol(struct connectdata *conn,
+                      bool closeit,
+                      const char *reason);
+#define connclose(x,y) Curl_conncontrol(x,TRUE, y)
+#define connkeep(x,y) Curl_conncontrol(x, FALSE, y)
+#else /* if !CURLDEBUG */
+
+#define connclose(x,y) (x)->bits.close = TRUE
+#define connkeep(x,y) (x)->bits.close = FALSE
+
+#endif
+
 #endif /* HEADER_CURL_CONNECT_H */
 #endif /* HEADER_CURL_CONNECT_H */
index b679067..0b9c8d3 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 RECEIVING COOKIE INFORMATION
 ============================
 
 RECEIVING COOKIE INFORMATION
 ============================
 
-struct CookieInfo *cookie_init(char *file);
+struct CookieInfo *Curl_cookie_init(struct SessionHandle *data,
+                    const char *file, struct CookieInfo *inc, bool newsession);
 
         Inits a cookie struct to store data in a local file. This is always
         called before any cookies are set.
 
 
         Inits a cookie struct to store data in a local file. This is always
         called before any cookies are set.
 
-int cookies_set(struct CookieInfo *cookie, char *cookie_line);
+struct Cookie *Curl_cookie_add(struct SessionHandle *data,
+                 struct CookieInfo *c, bool httpheader, char *lineptr,
+                 const char *domain, const char *path);
 
 
-        The 'cookie_line' parameter is a full "Set-cookie:" line as
+        The 'lineptr' parameter is a full "Set-cookie:" line as
         received from a server.
 
         The function need to replace previously stored lines that this new
         received from a server.
 
         The function need to replace previously stored lines that this new
@@ -47,8 +50,8 @@ int cookies_set(struct CookieInfo *cookie, char *cookie_line);
 SENDING COOKIE INFORMATION
 ==========================
 
 SENDING COOKIE INFORMATION
 ==========================
 
-struct Cookies *cookie_getlist(struct CookieInfo *cookie,
-                               char *host, char *path, bool secure);
+struct Cookies *Curl_cookie_getlist(struct CookieInfo *cookie,
+                                    char *host, char *path, bool secure);
 
         For a given host and path, return a linked list of cookies that
         the client should send to the server if used now. The secure
 
         For a given host and path, return a linked list of cookies that
         the client should send to the server if used now. The secure
@@ -95,6 +98,7 @@ Example set of cookies:
 #include "strtoofft.h"
 #include "rawstr.h"
 #include "curl_memrchr.h"
 #include "strtoofft.h"
 #include "rawstr.h"
 #include "curl_memrchr.h"
+#include "inet_pton.h"
 
 /* The last #include file should be: */
 #include "memdebug.h"
 
 /* The last #include file should be: */
 #include "memdebug.h"
@@ -258,6 +262,8 @@ static char *sanitize_cookie_path(const char *cookie_path)
 
 /*
  * Load cookies from all given cookie files (CURLOPT_COOKIEFILE).
 
 /*
  * Load cookies from all given cookie files (CURLOPT_COOKIEFILE).
+ *
+ * NOTE: OOM or cookie parsing failures are ignored.
  */
 void Curl_cookie_loadfiles(struct SessionHandle *data)
 {
  */
 void Curl_cookie_loadfiles(struct SessionHandle *data)
 {
@@ -265,10 +271,17 @@ void Curl_cookie_loadfiles(struct SessionHandle *data)
   if(list) {
     Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE);
     while(list) {
   if(list) {
     Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE);
     while(list) {
-      data->cookies = Curl_cookie_init(data,
-                                       list->data,
-                                       data->cookies,
-                                       data->set.cookiesession);
+      struct CookieInfo *newcookies = Curl_cookie_init(data,
+                                        list->data,
+                                        data->cookies,
+                                        data->set.cookiesession);
+      if(!newcookies)
+        /* Failure may be due to OOM or a bad cookie; both are ignored
+         * but only the first should be
+         */
+        infof(data, "ignoring failed cookie_init for %s\n", list->data);
+      else
+        data->cookies = newcookies;
       list = list->next;
     }
     curl_slist_free_all(data->change.cookielist); /* clean up list */
       list = list->next;
     }
     curl_slist_free_all(data->change.cookielist); /* clean up list */
@@ -290,6 +303,56 @@ static void strstore(char **str, const char *newstr)
   *str = strdup(newstr);
 }
 
   *str = strdup(newstr);
 }
 
+/*
+ * remove_expired() removes expired cookies.
+ */
+static void remove_expired(struct CookieInfo *cookies)
+{
+  struct Cookie *co, *nx, *pv;
+  curl_off_t now = (curl_off_t)time(NULL);
+
+  co = cookies->cookies;
+  pv = NULL;
+  while(co) {
+    nx = co->next;
+    if((co->expirestr || co->maxage) && co->expires < now) {
+      if(co == cookies->cookies) {
+        cookies->cookies = co->next;
+      }
+      else {
+        pv->next = co->next;
+      }
+      cookies->numcookies--;
+      freecookie(co);
+    }
+    else {
+      pv = co;
+    }
+    co = nx;
+  }
+}
+
+/*
+ * Return true if the given string is an IP(v4|v6) address.
+ */
+static bool isip(const char *domain)
+{
+  struct in_addr addr;
+#ifdef ENABLE_IPV6
+  struct in6_addr addr6;
+#endif
+
+  if(Curl_inet_pton(AF_INET, domain, &addr)
+#ifdef ENABLE_IPV6
+     || Curl_inet_pton(AF_INET6, domain, &addr6)
+#endif
+    ) {
+    /* domain name given as IP address */
+    return TRUE;
+  }
+
+  return FALSE;
+}
 
 /****************************************************************************
  *
 
 /****************************************************************************
  *
@@ -300,6 +363,8 @@ static void strstore(char **str, const char *newstr)
  * Be aware that sometimes we get an IP-only host name, and that might also be
  * a numerical IPv6 address.
  *
  * Be aware that sometimes we get an IP-only host name, and that might also be
  * a numerical IPv6 address.
  *
+ * Returns NULL on out of memory or invalid cookie. This is suboptimal,
+ * as they should be treated separately.
  ***************************************************************************/
 
 struct Cookie *
  ***************************************************************************/
 
 struct Cookie *
@@ -411,24 +476,33 @@ Curl_cookie_add(struct SessionHandle *data,
           }
         }
         else if(Curl_raw_equal("domain", name)) {
           }
         }
         else if(Curl_raw_equal("domain", name)) {
+          bool is_ip;
+          const char *dotp;
+
           /* Now, we make sure that our host is within the given domain,
              or the given domain is not valid and thus cannot be set. */
 
           if('.' == whatptr[0])
             whatptr++; /* ignore preceding dot */
 
           /* Now, we make sure that our host is within the given domain,
              or the given domain is not valid and thus cannot be set. */
 
           if('.' == whatptr[0])
             whatptr++; /* ignore preceding dot */
 
-          if(!domain || tailmatch(whatptr, domain)) {
-            const char *tailptr=whatptr;
-            if(tailptr[0] == '.')
-              tailptr++;
-            strstore(&co->domain, tailptr); /* don't prefix w/dots
-                                               internally */
+          is_ip = isip(domain ? domain : whatptr);
+
+          /* check for more dots */
+          dotp = strchr(whatptr, '.');
+          if(!dotp)
+            domain=":";
+
+          if(!domain
+             || (is_ip && !strcmp(whatptr, domain))
+             || (!is_ip && tailmatch(whatptr, domain))) {
+            strstore(&co->domain, whatptr);
             if(!co->domain) {
               badcookie = TRUE;
               break;
             }
             if(!co->domain) {
               badcookie = TRUE;
               break;
             }
-            co->tailmatch=TRUE; /* we always do that if the domain name was
-                                   given */
+            if(!is_ip)
+              co->tailmatch=TRUE; /* we always do that if the domain name was
+                                     given */
           }
           else {
             /* we did not get a tailmatch and then the attempted set domain
           }
           else {
             /* we did not get a tailmatch and then the attempted set domain
@@ -461,9 +535,6 @@ Curl_cookie_add(struct SessionHandle *data,
             badcookie = TRUE;
             break;
           }
             badcookie = TRUE;
             break;
           }
-          co->expires =
-            strtol((*co->maxage=='\"')?&co->maxage[1]:&co->maxage[0],NULL,10)
-            + (long)now;
         }
         else if(Curl_raw_equal("expires", name)) {
           strstore(&co->expirestr, whatptr);
         }
         else if(Curl_raw_equal("expires", name)) {
           strstore(&co->expirestr, whatptr);
@@ -471,17 +542,6 @@ Curl_cookie_add(struct SessionHandle *data,
             badcookie = TRUE;
             break;
           }
             badcookie = TRUE;
             break;
           }
-          /* Note that if the date couldn't get parsed for whatever reason,
-             the cookie will be treated as a session cookie */
-          co->expires = curl_getdate(what, &now);
-
-          /* Session cookies have expires set to 0 so if we get that back
-             from the date parser let's add a second to make it a
-             non-session cookie */
-          if(co->expires == 0)
-            co->expires = 1;
-          else if(co->expires < 0)
-            co->expires = 0;
         }
         else if(!co->name) {
           co->name = strdup(name);
         }
         else if(!co->name) {
           co->name = strdup(name);
@@ -516,6 +576,30 @@ Curl_cookie_add(struct SessionHandle *data,
         semiptr=strchr(ptr, '\0');
     } while(semiptr);
 
         semiptr=strchr(ptr, '\0');
     } while(semiptr);
 
+    if(co->maxage) {
+      co->expires =
+        curlx_strtoofft((*co->maxage=='\"')?
+                        &co->maxage[1]:&co->maxage[0], NULL, 10);
+      if(CURL_OFF_T_MAX - now < co->expires)
+        /* avoid overflow */
+        co->expires = CURL_OFF_T_MAX;
+      else
+        co->expires += now;
+    }
+    else if(co->expirestr) {
+      /* Note that if the date couldn't get parsed for whatever reason,
+         the cookie will be treated as a session cookie */
+      co->expires = curl_getdate(co->expirestr, NULL);
+
+      /* Session cookies have expires set to 0 so if we get that back
+         from the date parser let's add a second to make it a
+         non-session cookie */
+      if(co->expires == 0)
+        co->expires = 1;
+      else if(co->expires < 0)
+        co->expires = 0;
+    }
+
     if(!badcookie && !co->domain) {
       if(domain) {
         /* no domain was given in the header line, set the default */
     if(!badcookie && !co->domain) {
       if(domain) {
         /* no domain was given in the header line, set the default */
@@ -700,6 +784,9 @@ Curl_cookie_add(struct SessionHandle *data,
      superceeds an already existing cookie, which it may if the previous have
      the same domain and path as this */
 
      superceeds an already existing cookie, which it may if the previous have
      the same domain and path as this */
 
+  /* at first, remove expired cookies */
+  remove_expired(c);
+
   clist = c->cookies;
   replace_old = FALSE;
   while(clist) {
   clist = c->cookies;
   replace_old = FALSE;
   while(clist) {
@@ -784,7 +871,7 @@ Curl_cookie_add(struct SessionHandle *data,
   if(c->running)
     /* Only show this when NOT reading the cookies from a file */
     infof(data, "%s cookie %s=\"%s\" for domain %s, path %s, "
   if(c->running)
     /* Only show this when NOT reading the cookies from a file */
     infof(data, "%s cookie %s=\"%s\" for domain %s, path %s, "
-          "expire %" FORMAT_OFF_T "\n",
+          "expire %" CURL_FORMAT_CURL_OFF_T "\n",
           replace_old?"Replaced":"Added", co->name, co->value,
           co->domain, co->path, co->expires);
 
           replace_old?"Replaced":"Added", co->name, co->value,
           co->domain, co->path, co->expires);
 
@@ -809,6 +896,7 @@ Curl_cookie_add(struct SessionHandle *data,
  *
  * If 'newsession' is TRUE, discard all "session cookies" on read from file.
  *
  *
  * If 'newsession' is TRUE, discard all "session cookies" on read from file.
  *
+ * Returns NULL on out of memory. Invalid cookies are ignored.
  ****************************************************************************/
 struct CookieInfo *Curl_cookie_init(struct SessionHandle *data,
                                     const char *file,
  ****************************************************************************/
 struct CookieInfo *Curl_cookie_init(struct SessionHandle *data,
                                     const char *file,
@@ -816,8 +904,9 @@ struct CookieInfo *Curl_cookie_init(struct SessionHandle *data,
                                     bool newsession)
 {
   struct CookieInfo *c;
                                     bool newsession)
 {
   struct CookieInfo *c;
-  FILE *fp;
+  FILE *fp = NULL;
   bool fromfile=TRUE;
   bool fromfile=TRUE;
+  char *line = NULL;
 
   if(NULL == inc) {
     /* we didn't get a struct, create one */
 
   if(NULL == inc) {
     /* we didn't get a struct, create one */
@@ -825,6 +914,8 @@ struct CookieInfo *Curl_cookie_init(struct SessionHandle *data,
     if(!c)
       return NULL; /* failed to get memory */
     c->filename = strdup(file?file:"none"); /* copy the name just in case */
     if(!c)
       return NULL; /* failed to get memory */
     c->filename = strdup(file?file:"none"); /* copy the name just in case */
+    if(!c->filename)
+      goto fail; /* failed to get memory */
   }
   else {
     /* we got an already existing one, use that */
   }
   else {
     /* we got an already existing one, use that */
@@ -849,25 +940,26 @@ struct CookieInfo *Curl_cookie_init(struct SessionHandle *data,
     char *lineptr;
     bool headerline;
 
     char *lineptr;
     bool headerline;
 
-    char *line = malloc(MAX_COOKIE_LINE);
-    if(line) {
-      while(fgets(line, MAX_COOKIE_LINE, fp)) {
-        if(checkprefix("Set-Cookie:", line)) {
-          /* This is a cookie line, get it! */
-          lineptr=&line[11];
-          headerline=TRUE;
-        }
-        else {
-          lineptr=line;
-          headerline=FALSE;
-        }
-        while(*lineptr && ISBLANK(*lineptr))
-          lineptr++;
-
-        Curl_cookie_add(data, c, headerline, lineptr, NULL, NULL);
+    line = malloc(MAX_COOKIE_LINE);
+    if(!line)
+      goto fail;
+    while(fgets(line, MAX_COOKIE_LINE, fp)) {
+      if(checkprefix("Set-Cookie:", line)) {
+        /* This is a cookie line, get it! */
+        lineptr=&line[11];
+        headerline=TRUE;
+      }
+      else {
+        lineptr=line;
+        headerline=FALSE;
       }
       }
-      free(line); /* free the line buffer */
+      while(*lineptr && ISBLANK(*lineptr))
+        lineptr++;
+
+      Curl_cookie_add(data, c, headerline, lineptr, NULL, NULL);
     }
     }
+    free(line); /* free the line buffer */
+
     if(fromfile)
       fclose(fp);
   }
     if(fromfile)
       fclose(fp);
   }
@@ -875,6 +967,16 @@ struct CookieInfo *Curl_cookie_init(struct SessionHandle *data,
   c->running = TRUE;          /* now, we're running */
 
   return c;
   c->running = TRUE;          /* now, we're running */
 
   return c;
+
+fail:
+  Curl_safefree(line);
+  if(!inc)
+    /* Only clean up if we allocated it here, as the original could still be in
+     * use by a share handle */
+    Curl_cookie_cleanup(c);
+  if(fromfile && fp)
+    fclose(fp);
+  return NULL; /* out of memory */
 }
 
 /* sort this so that the longest path gets before the shorter path */
 }
 
 /* sort this so that the longest path gets before the shorter path */
@@ -927,10 +1029,17 @@ struct Cookie *Curl_cookie_getlist(struct CookieInfo *c,
   time_t now = time(NULL);
   struct Cookie *mainco=NULL;
   size_t matches = 0;
   time_t now = time(NULL);
   struct Cookie *mainco=NULL;
   size_t matches = 0;
+  bool is_ip;
 
   if(!c || !c->cookies)
     return NULL; /* no cookie struct or no cookies in the struct */
 
 
   if(!c || !c->cookies)
     return NULL; /* no cookie struct or no cookies in the struct */
 
+  /* at first, remove expired cookies */
+  remove_expired(c);
+
+  /* check if host is an IP(v4|v6) address */
+  is_ip = isip(host);
+
   co = c->cookies;
 
   while(co) {
   co = c->cookies;
 
   while(co) {
@@ -942,8 +1051,8 @@ struct Cookie *Curl_cookie_getlist(struct CookieInfo *c,
 
       /* now check if the domain is correct */
       if(!co->domain ||
 
       /* now check if the domain is correct */
       if(!co->domain ||
-         (co->tailmatch && tailmatch(co->domain, host)) ||
-         (!co->tailmatch && Curl_raw_equal(host, co->domain)) ) {
+         (co->tailmatch && !is_ip && tailmatch(co->domain, host)) ||
+         ((!co->tailmatch || is_ip) && Curl_raw_equal(host, co->domain)) ) {
         /* the right part of the host matches the domain stuff in the
            cookie data */
 
         /* the right part of the host matches the domain stuff in the
            cookie data */
 
@@ -1047,16 +1156,14 @@ void Curl_cookie_clearall(struct CookieInfo *cookies)
 void Curl_cookie_freelist(struct Cookie *co, bool cookiestoo)
 {
   struct Cookie *next;
 void Curl_cookie_freelist(struct Cookie *co, bool cookiestoo)
 {
   struct Cookie *next;
-  if(co) {
-    while(co) {
-      next = co->next;
-      if(cookiestoo)
-        freecookie(co);
-      else
-        free(co); /* we only free the struct since the "members" are all just
-                     pointed out in the main cookie list! */
-      co = next;
-    }
+  while(co) {
+    next = co->next;
+    if(cookiestoo)
+      freecookie(co);
+    else
+      free(co); /* we only free the struct since the "members" are all just
+                   pointed out in the main cookie list! */
+    co = next;
   }
 }
 
   }
 }
 
@@ -1103,23 +1210,15 @@ void Curl_cookie_clearsess(struct CookieInfo *cookies)
  *
  * Curl_cookie_cleanup()
  *
  *
  * Curl_cookie_cleanup()
  *
- * Free a "cookie object" previous created with cookie_init().
+ * Free a "cookie object" previous created with Curl_cookie_init().
  *
  ****************************************************************************/
 void Curl_cookie_cleanup(struct CookieInfo *c)
 {
  *
  ****************************************************************************/
 void Curl_cookie_cleanup(struct CookieInfo *c)
 {
-  struct Cookie *co;
-  struct Cookie *next;
   if(c) {
     if(c->filename)
       free(c->filename);
   if(c) {
     if(c->filename)
       free(c->filename);
-    co = c->cookies;
-
-    while(co) {
-      next = co->next;
-      freecookie(co);
-      co = next;
-    }
+    Curl_cookie_freelist(c->cookies, TRUE);
     free(c); /* free the base struct as well */
   }
 }
     free(c); /* free the base struct as well */
   }
 }
@@ -1138,7 +1237,7 @@ static char *get_netscape_format(const struct Cookie *co)
     "%s\t"   /* tailmatch */
     "%s\t"   /* path */
     "%s\t"   /* secure */
     "%s\t"   /* tailmatch */
     "%s\t"   /* path */
     "%s\t"   /* secure */
-    "%" FORMAT_OFF_T "\t"   /* expires */
+    "%" CURL_FORMAT_CURL_OFF_T "\t"   /* expires */
     "%s\t"   /* name */
     "%s",    /* value */
     co->httponly?"#HttpOnly_":"",
     "%s\t"   /* name */
     "%s",    /* value */
     co->httponly?"#HttpOnly_":"",
@@ -1173,6 +1272,9 @@ static int cookie_output(struct CookieInfo *c, const char *dumphere)
        destination file */
     return 0;
 
        destination file */
     return 0;
 
+  /* at first, remove expired cookies */
+  remove_expired(c);
+
   if(strequal("-", dumphere)) {
     /* use stdout */
     out = stdout;
   if(strequal("-", dumphere)) {
     /* use stdout */
     out = stdout;
index 10652c6..1e359d5 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -33,6 +33,9 @@
 #ifdef HAVE_ARPA_INET_H
 #  include <arpa/inet.h>
 #endif
 #ifdef HAVE_ARPA_INET_H
 #  include <arpa/inet.h>
 #endif
+#ifdef HAVE_SYS_UN_H
+#  include <sys/un.h>
+#endif
 
 #ifdef __VMS
 #  include <in.h>
 
 #ifdef __VMS
 #  include <in.h>
@@ -354,7 +357,7 @@ Curl_he2ai(const struct hostent *he, int port)
     prevai = ai;
   }
 
     prevai = ai;
   }
 
-  if(result != CURLE_OK) {
+  if(result) {
     Curl_freeaddrinfo(firstai);
     firstai = NULL;
   }
     Curl_freeaddrinfo(firstai);
     firstai = NULL;
   }
@@ -477,6 +480,42 @@ Curl_addrinfo *Curl_str2addr(char *address, int port)
   return NULL; /* bad input format */
 }
 
   return NULL; /* bad input format */
 }
 
+#ifdef USE_UNIX_SOCKETS
+/**
+ * Given a path to a Unix domain socket, return a newly allocated Curl_addrinfo
+ * struct initialized with this path.
+ */
+Curl_addrinfo *Curl_unix2addr(const char *path)
+{
+  Curl_addrinfo *ai;
+  struct sockaddr_un *sa_un;
+  size_t path_len;
+
+  ai = calloc(1, sizeof(Curl_addrinfo));
+  if(!ai)
+    return NULL;
+  if((ai->ai_addr = calloc(1, sizeof(struct sockaddr_un))) == NULL) {
+    free(ai);
+    return NULL;
+  }
+  /* sun_path must be able to store the NUL-terminated path */
+  path_len = strlen(path);
+  if(path_len >= sizeof(sa_un->sun_path)) {
+    free(ai->ai_addr);
+    free(ai);
+    return NULL;
+  }
+
+  ai->ai_family = AF_UNIX;
+  ai->ai_socktype = SOCK_STREAM; /* assume reliable transport for HTTP */
+  ai->ai_addrlen = (curl_socklen_t) sizeof(struct sockaddr_un);
+  sa_un = (void *) ai->ai_addr;
+  sa_un->sun_family = AF_UNIX;
+  memcpy(sa_un->sun_path, path, path_len + 1); /* copy NUL byte */
+  return ai;
+}
+#endif
+
 #if defined(CURLDEBUG) && defined(HAVE_FREEADDRINFO)
 /*
  * curl_dofreeaddrinfo()
 #if defined(CURLDEBUG) && defined(HAVE_FREEADDRINFO)
 /*
  * curl_dofreeaddrinfo()
index 6d2b753..4ef8827 100644 (file)
@@ -79,6 +79,10 @@ Curl_ip2addr(int af, const void *inaddr, const char *hostname, int port);
 
 Curl_addrinfo *Curl_str2addr(char *dotted, int port);
 
 
 Curl_addrinfo *Curl_str2addr(char *dotted, int port);
 
+#ifdef USE_UNIX_SOCKETS
+Curl_addrinfo *Curl_unix2addr(const char *path);
+#endif
+
 #if defined(CURLDEBUG) && defined(HAVE_FREEADDRINFO)
 void
 curl_dofreeaddrinfo(struct addrinfo *freethis,
 #if defined(CURLDEBUG) && defined(HAVE_FREEADDRINFO)
 void
 curl_dofreeaddrinfo(struct addrinfo *freethis,
index 6e200d2..92896fe 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -25,6 +25,9 @@
 CURLcode Curl_base64_encode(struct SessionHandle *data,
                             const char *inputbuff, size_t insize,
                             char **outptr, size_t *outlen);
 CURLcode Curl_base64_encode(struct SessionHandle *data,
                             const char *inputbuff, size_t insize,
                             char **outptr, size_t *outlen);
+CURLcode Curl_base64url_encode(struct SessionHandle *data,
+                               const char *inputbuff, size_t insize,
+                               char **outptr, size_t *outlen);
 
 CURLcode Curl_base64_decode(const char *src,
                             unsigned char **outptr, size_t *outlen);
 
 CURLcode Curl_base64_decode(const char *src,
                             unsigned char **outptr, size_t *outlen);
index 454c9e6..87be9c7 100644 (file)
@@ -1,7 +1,7 @@
 /* lib/curl_config.h.in.  Generated somehow by cmake.  */
 
 /* when building libcurl itself */
 /* lib/curl_config.h.in.  Generated somehow by cmake.  */
 
 /* when building libcurl itself */
-#cmakedefine BUILDING_LIBCURL ${BUILDING_LIBCURL}
+#cmakedefine BUILDING_LIBCURL 1
 
 /* Location of default ca bundle */
 #cmakedefine CURL_CA_BUNDLE ${CURL_CA_BUNDLE}
 
 /* Location of default ca bundle */
 #cmakedefine CURL_CA_BUNDLE ${CURL_CA_BUNDLE}
 #cmakedefine CURL_CA_PATH ${CURL_CA_PATH}
 
 /* to disable cookies support */
 #cmakedefine CURL_CA_PATH ${CURL_CA_PATH}
 
 /* to disable cookies support */
-#cmakedefine CURL_DISABLE_COOKIES ${CURL_DISABLE_COOKIES}
+#cmakedefine CURL_DISABLE_COOKIES 1
 
 /* to disable cryptographic authentication */
 
 /* to disable cryptographic authentication */
-#cmakedefine CURL_DISABLE_CRYPTO_AUTH ${CURL_DISABLE_CRYPTO_AUTH}
+#cmakedefine CURL_DISABLE_CRYPTO_AUTH 1
 
 /* to disable DICT */
 
 /* to disable DICT */
-#cmakedefine CURL_DISABLE_DICT ${CURL_DISABLE_DICT}
+#cmakedefine CURL_DISABLE_DICT 1
 
 /* to disable FILE */
 
 /* to disable FILE */
-#cmakedefine CURL_DISABLE_FILE ${CURL_DISABLE_FILE}
+#cmakedefine CURL_DISABLE_FILE 1
 
 /* to disable FTP */
 
 /* to disable FTP */
-#cmakedefine CURL_DISABLE_FTP ${CURL_DISABLE_FTP}
+#cmakedefine CURL_DISABLE_FTP 1
 
 /* to disable HTTP */
 
 /* to disable HTTP */
-#cmakedefine CURL_DISABLE_HTTP ${CURL_DISABLE_HTTP}
+#cmakedefine CURL_DISABLE_HTTP 1
 
 /* to disable LDAP */
 
 /* to disable LDAP */
-#cmakedefine CURL_DISABLE_LDAP ${CURL_DISABLE_LDAP}
+#cmakedefine CURL_DISABLE_LDAP 1
 
 /* to disable LDAPS */
 
 /* to disable LDAPS */
-#cmakedefine CURL_DISABLE_LDAPS ${CURL_DISABLE_LDAPS}
+#cmakedefine CURL_DISABLE_LDAPS 1
 
 /* to disable proxies */
 
 /* to disable proxies */
-#cmakedefine CURL_DISABLE_PROXY ${CURL_DISABLE_PROXY}
+#cmakedefine CURL_DISABLE_PROXY 1
 
 /* to disable TELNET */
 
 /* to disable TELNET */
-#cmakedefine CURL_DISABLE_TELNET ${CURL_DISABLE_TELNET}
+#cmakedefine CURL_DISABLE_TELNET 1
 
 /* to disable TFTP */
 
 /* to disable TFTP */
-#cmakedefine CURL_DISABLE_TFTP ${CURL_DISABLE_TFTP}
+#cmakedefine CURL_DISABLE_TFTP 1
 
 /* to disable verbose strings */
 
 /* to disable verbose strings */
-#cmakedefine CURL_DISABLE_VERBOSE_STRINGS ${CURL_DISABLE_VERBOSE_STRINGS}
+#cmakedefine CURL_DISABLE_VERBOSE_STRINGS 1
 
 /* to make a symbol visible */
 
 /* to make a symbol visible */
-#cmakedefine CURL_EXTERN_SYMBOL ${CURL_EXTERN_SYMBOL}
+#cmakedefine CURL_EXTERN_SYMBOL 1
 /* Ensure using CURL_EXTERN_SYMBOL is possible */
 #ifndef CURL_EXTERN_SYMBOL
 #define CURL_EXTERN_SYMBOL
 #endif
 
 /* Use Windows LDAP implementation */
 /* Ensure using CURL_EXTERN_SYMBOL is possible */
 #ifndef CURL_EXTERN_SYMBOL
 #define CURL_EXTERN_SYMBOL
 #endif
 
 /* Use Windows LDAP implementation */
-#cmakedefine CURL_LDAP_WIN ${CURL_LDAP_WIN}
+#cmakedefine CURL_LDAP_WIN 1
 
 /* when not building a shared library */
 
 /* when not building a shared library */
-#cmakedefine CURL_STATICLIB ${CURL_STATICLIB}
+#cmakedefine CURL_STATICLIB 1
 
 /* Set to explicitly specify we don't want to use thread-safe functions */
 
 /* Set to explicitly specify we don't want to use thread-safe functions */
-#cmakedefine DISABLED_THREADSAFE ${DISABLED_THREADSAFE}
+#cmakedefine DISABLED_THREADSAFE 1
 
 /* your Entropy Gathering Daemon socket pathname */
 #cmakedefine EGD_SOCKET ${EGD_SOCKET}
 
 /* Define if you want to enable IPv6 support */
 
 /* your Entropy Gathering Daemon socket pathname */
 #cmakedefine EGD_SOCKET ${EGD_SOCKET}
 
 /* Define if you want to enable IPv6 support */
-#cmakedefine ENABLE_IPV6 ${ENABLE_IPV6}
+#cmakedefine ENABLE_IPV6 1
 
 /* Define to the type qualifier of arg 1 for getnameinfo. */
 #cmakedefine GETNAMEINFO_QUAL_ARG1 ${GETNAMEINFO_QUAL_ARG1}
 
 /* Define to the type qualifier of arg 1 for getnameinfo. */
 #cmakedefine GETNAMEINFO_QUAL_ARG1 ${GETNAMEINFO_QUAL_ARG1}
 #cmakedefine GETSERVBYPORT_R_BUFSIZE ${GETSERVBYPORT_R_BUFSIZE}
 
 /* Define to 1 if you have the alarm function. */
 #cmakedefine GETSERVBYPORT_R_BUFSIZE ${GETSERVBYPORT_R_BUFSIZE}
 
 /* Define to 1 if you have the alarm function. */
-#cmakedefine HAVE_ALARM ${HAVE_ALARM}
+#cmakedefine HAVE_ALARM 1
 
 /* Define to 1 if you have the <alloca.h> header file. */
 
 /* Define to 1 if you have the <alloca.h> header file. */
-#cmakedefine HAVE_ALLOCA_H ${HAVE_ALLOCA_H}
+#cmakedefine HAVE_ALLOCA_H 1
 
 /* Define to 1 if you have the <arpa/inet.h> header file. */
 
 /* Define to 1 if you have the <arpa/inet.h> header file. */
-#cmakedefine HAVE_ARPA_INET_H ${HAVE_ARPA_INET_H}
+#cmakedefine HAVE_ARPA_INET_H 1
 
 /* Define to 1 if you have the <arpa/tftp.h> header file. */
 
 /* Define to 1 if you have the <arpa/tftp.h> header file. */
-#cmakedefine HAVE_ARPA_TFTP_H ${HAVE_ARPA_TFTP_H}
+#cmakedefine HAVE_ARPA_TFTP_H 1
 
 /* Define to 1 if you have the <assert.h> header file. */
 
 /* Define to 1 if you have the <assert.h> header file. */
-#cmakedefine HAVE_ASSERT_H ${HAVE_ASSERT_H}
+#cmakedefine HAVE_ASSERT_H 1
 
 /* Define to 1 if you have the `basename' function. */
 
 /* Define to 1 if you have the `basename' function. */
-#cmakedefine HAVE_BASENAME ${HAVE_BASENAME}
+#cmakedefine HAVE_BASENAME 1
 
 /* Define to 1 if bool is an available type. */
 
 /* Define to 1 if bool is an available type. */
-#cmakedefine HAVE_BOOL_T ${HAVE_BOOL_T}
+#cmakedefine HAVE_BOOL_T 1
 
 /* Define to 1 if you have the clock_gettime function and monotonic timer. */
 
 /* Define to 1 if you have the clock_gettime function and monotonic timer. */
-#cmakedefine HAVE_CLOCK_GETTIME_MONOTONIC ${HAVE_CLOCK_GETTIME_MONOTONIC}
+#cmakedefine HAVE_CLOCK_GETTIME_MONOTONIC 1
 
 /* Define to 1 if you have the `closesocket' function. */
 
 /* Define to 1 if you have the `closesocket' function. */
-#cmakedefine HAVE_CLOSESOCKET ${HAVE_CLOSESOCKET}
+#cmakedefine HAVE_CLOSESOCKET 1
 
 /* Define to 1 if you have the `CRYPTO_cleanup_all_ex_data' function. */
 
 /* Define to 1 if you have the `CRYPTO_cleanup_all_ex_data' function. */
-#cmakedefine HAVE_CRYPTO_CLEANUP_ALL_EX_DATA ${HAVE_CRYPTO_CLEANUP_ALL_EX_DATA}
+#cmakedefine HAVE_CRYPTO_CLEANUP_ALL_EX_DATA 1
 
 /* Define to 1 if you have the <crypto.h> header file. */
 
 /* Define to 1 if you have the <crypto.h> header file. */
-#cmakedefine HAVE_CRYPTO_H ${HAVE_CRYPTO_H}
+#cmakedefine HAVE_CRYPTO_H 1
 
 /* Define to 1 if you have the <des.h> header file. */
 
 /* Define to 1 if you have the <des.h> header file. */
-#cmakedefine HAVE_DES_H ${HAVE_DES_H}
+#cmakedefine HAVE_DES_H 1
 
 /* Define to 1 if you have the <dlfcn.h> header file. */
 
 /* Define to 1 if you have the <dlfcn.h> header file. */
-#cmakedefine HAVE_DLFCN_H ${HAVE_DLFCN_H}
+#cmakedefine HAVE_DLFCN_H 1
 
 /* Define to 1 if you have the `ENGINE_load_builtin_engines' function. */
 
 /* Define to 1 if you have the `ENGINE_load_builtin_engines' function. */
-#cmakedefine HAVE_ENGINE_LOAD_BUILTIN_ENGINES ${HAVE_ENGINE_LOAD_BUILTIN_ENGINES}
+#cmakedefine HAVE_ENGINE_LOAD_BUILTIN_ENGINES 1
 
 /* Define to 1 if you have the <errno.h> header file. */
 
 /* Define to 1 if you have the <errno.h> header file. */
-#cmakedefine HAVE_ERRNO_H ${HAVE_ERRNO_H}
+#cmakedefine HAVE_ERRNO_H 1
 
 /* Define to 1 if you have the <err.h> header file. */
 
 /* Define to 1 if you have the <err.h> header file. */
-#cmakedefine HAVE_ERR_H ${HAVE_ERR_H}
+#cmakedefine HAVE_ERR_H 1
 
 /* Define to 1 if you have the fcntl function. */
 
 /* Define to 1 if you have the fcntl function. */
-#cmakedefine HAVE_FCNTL ${HAVE_FCNTL}
+#cmakedefine HAVE_FCNTL 1
 
 /* Define to 1 if you have the <fcntl.h> header file. */
 
 /* Define to 1 if you have the <fcntl.h> header file. */
-#cmakedefine HAVE_FCNTL_H ${HAVE_FCNTL_H}
+#cmakedefine HAVE_FCNTL_H 1
 
 /* Define to 1 if you have a working fcntl O_NONBLOCK function. */
 
 /* Define to 1 if you have a working fcntl O_NONBLOCK function. */
-#cmakedefine HAVE_FCNTL_O_NONBLOCK ${HAVE_FCNTL_O_NONBLOCK}
+#cmakedefine HAVE_FCNTL_O_NONBLOCK 1
 
 /* Define to 1 if you have the fdopen function. */
 
 /* Define to 1 if you have the fdopen function. */
-#cmakedefine HAVE_FDOPEN ${HAVE_FDOPEN}
+#cmakedefine HAVE_FDOPEN 1
 
 /* Define to 1 if you have the `fork' function. */
 
 /* Define to 1 if you have the `fork' function. */
-#cmakedefine HAVE_FORK ${HAVE_FORK}
+#cmakedefine HAVE_FORK 1
 
 /* Define to 1 if you have the freeaddrinfo function. */
 
 /* Define to 1 if you have the freeaddrinfo function. */
-#cmakedefine HAVE_FREEADDRINFO ${HAVE_FREEADDRINFO}
+#cmakedefine HAVE_FREEADDRINFO 1
 
 /* Define to 1 if you have the freeifaddrs function. */
 
 /* Define to 1 if you have the freeifaddrs function. */
-#cmakedefine HAVE_FREEIFADDRS ${HAVE_FREEIFADDRS}
+#cmakedefine HAVE_FREEIFADDRS 1
 
 /* Define to 1 if you have the ftruncate function. */
 
 /* Define to 1 if you have the ftruncate function. */
-#cmakedefine HAVE_FTRUNCATE ${HAVE_FTRUNCATE}
+#cmakedefine HAVE_FTRUNCATE 1
 
 /* Define to 1 if you have a working getaddrinfo function. */
 
 /* Define to 1 if you have a working getaddrinfo function. */
-#cmakedefine HAVE_GETADDRINFO ${HAVE_GETADDRINFO}
+#cmakedefine HAVE_GETADDRINFO 1
 
 /* Define to 1 if you have the `geteuid' function. */
 
 /* Define to 1 if you have the `geteuid' function. */
-#cmakedefine HAVE_GETEUID ${HAVE_GETEUID}
+#cmakedefine HAVE_GETEUID 1
 
 /* Define to 1 if you have the gethostbyaddr function. */
 
 /* Define to 1 if you have the gethostbyaddr function. */
-#cmakedefine HAVE_GETHOSTBYADDR ${HAVE_GETHOSTBYADDR}
+#cmakedefine HAVE_GETHOSTBYADDR 1
 
 /* Define to 1 if you have the gethostbyaddr_r function. */
 
 /* Define to 1 if you have the gethostbyaddr_r function. */
-#cmakedefine HAVE_GETHOSTBYADDR_R ${HAVE_GETHOSTBYADDR_R}
+#cmakedefine HAVE_GETHOSTBYADDR_R 1
 
 /* gethostbyaddr_r() takes 5 args */
 
 /* gethostbyaddr_r() takes 5 args */
-#cmakedefine HAVE_GETHOSTBYADDR_R_5 ${HAVE_GETHOSTBYADDR_R_5}
+#cmakedefine HAVE_GETHOSTBYADDR_R_5 1
 
 /* gethostbyaddr_r() takes 7 args */
 
 /* gethostbyaddr_r() takes 7 args */
-#cmakedefine HAVE_GETHOSTBYADDR_R_7 ${HAVE_GETHOSTBYADDR_R_7}
+#cmakedefine HAVE_GETHOSTBYADDR_R_7 1
 
 /* gethostbyaddr_r() takes 8 args */
 
 /* gethostbyaddr_r() takes 8 args */
-#cmakedefine HAVE_GETHOSTBYADDR_R_8 ${HAVE_GETHOSTBYADDR_R_8}
+#cmakedefine HAVE_GETHOSTBYADDR_R_8 1
 
 /* Define to 1 if you have the gethostbyname function. */
 
 /* Define to 1 if you have the gethostbyname function. */
-#cmakedefine HAVE_GETHOSTBYNAME ${HAVE_GETHOSTBYNAME}
+#cmakedefine HAVE_GETHOSTBYNAME 1
 
 /* Define to 1 if you have the gethostbyname_r function. */
 
 /* Define to 1 if you have the gethostbyname_r function. */
-#cmakedefine HAVE_GETHOSTBYNAME_R ${HAVE_GETHOSTBYNAME_R}
+#cmakedefine HAVE_GETHOSTBYNAME_R 1
 
 /* gethostbyname_r() takes 3 args */
 
 /* gethostbyname_r() takes 3 args */
-#cmakedefine HAVE_GETHOSTBYNAME_R_3 ${HAVE_GETHOSTBYNAME_R_3}
+#cmakedefine HAVE_GETHOSTBYNAME_R_3 1
 
 /* gethostbyname_r() takes 5 args */
 
 /* gethostbyname_r() takes 5 args */
-#cmakedefine HAVE_GETHOSTBYNAME_R_5 ${HAVE_GETHOSTBYNAME_R_5}
+#cmakedefine HAVE_GETHOSTBYNAME_R_5 1
 
 /* gethostbyname_r() takes 6 args */
 
 /* gethostbyname_r() takes 6 args */
-#cmakedefine HAVE_GETHOSTBYNAME_R_6 ${HAVE_GETHOSTBYNAME_R_6}
+#cmakedefine HAVE_GETHOSTBYNAME_R_6 1
 
 /* Define to 1 if you have the gethostname function. */
 
 /* Define to 1 if you have the gethostname function. */
-#cmakedefine HAVE_GETHOSTNAME ${HAVE_GETHOSTNAME}
+#cmakedefine HAVE_GETHOSTNAME 1
 
 /* Define to 1 if you have a working getifaddrs function. */
 
 /* Define to 1 if you have a working getifaddrs function. */
-#cmakedefine HAVE_GETIFADDRS ${HAVE_GETIFADDRS}
+#cmakedefine HAVE_GETIFADDRS 1
 
 /* Define to 1 if you have the getnameinfo function. */
 
 /* Define to 1 if you have the getnameinfo function. */
-#cmakedefine HAVE_GETNAMEINFO ${HAVE_GETNAMEINFO}
+#cmakedefine HAVE_GETNAMEINFO 1
 
 /* Define to 1 if you have the `getpass_r' function. */
 
 /* Define to 1 if you have the `getpass_r' function. */
-#cmakedefine HAVE_GETPASS_R ${HAVE_GETPASS_R}
+#cmakedefine HAVE_GETPASS_R 1
 
 /* Define to 1 if you have the `getppid' function. */
 
 /* Define to 1 if you have the `getppid' function. */
-#cmakedefine HAVE_GETPPID ${HAVE_GETPPID}
+#cmakedefine HAVE_GETPPID 1
 
 /* Define to 1 if you have the `getprotobyname' function. */
 
 /* Define to 1 if you have the `getprotobyname' function. */
-#cmakedefine HAVE_GETPROTOBYNAME ${HAVE_GETPROTOBYNAME}
+#cmakedefine HAVE_GETPROTOBYNAME 1
 
 /* Define to 1 if you have the `getpwuid' function. */
 
 /* Define to 1 if you have the `getpwuid' function. */
-#cmakedefine HAVE_GETPWUID ${HAVE_GETPWUID}
+#cmakedefine HAVE_GETPWUID 1
 
 /* Define to 1 if you have the `getrlimit' function. */
 
 /* Define to 1 if you have the `getrlimit' function. */
-#cmakedefine HAVE_GETRLIMIT ${HAVE_GETRLIMIT}
+#cmakedefine HAVE_GETRLIMIT 1
 
 /* Define to 1 if you have the getservbyport_r function. */
 
 /* Define to 1 if you have the getservbyport_r function. */
-#cmakedefine HAVE_GETSERVBYPORT_R ${HAVE_GETSERVBYPORT_R}
+#cmakedefine HAVE_GETSERVBYPORT_R 1
 
 /* Define to 1 if you have the `gettimeofday' function. */
 
 /* Define to 1 if you have the `gettimeofday' function. */
-#cmakedefine HAVE_GETTIMEOFDAY ${HAVE_GETTIMEOFDAY}
+#cmakedefine HAVE_GETTIMEOFDAY 1
 
 /* Define to 1 if you have a working glibc-style strerror_r function. */
 
 /* Define to 1 if you have a working glibc-style strerror_r function. */
-#cmakedefine HAVE_GLIBC_STRERROR_R ${HAVE_GLIBC_STRERROR_R}
+#cmakedefine HAVE_GLIBC_STRERROR_R 1
 
 /* Define to 1 if you have a working gmtime_r function. */
 
 /* Define to 1 if you have a working gmtime_r function. */
-#cmakedefine HAVE_GMTIME_R ${HAVE_GMTIME_R}
+#cmakedefine HAVE_GMTIME_R 1
 
 /* if you have the gssapi libraries */
 
 /* if you have the gssapi libraries */
-#cmakedefine HAVE_GSSAPI ${HAVE_GSSAPI}
+#cmakedefine HAVE_GSSAPI 1
 
 /* Define to 1 if you have the <gssapi/gssapi_generic.h> header file. */
 
 /* Define to 1 if you have the <gssapi/gssapi_generic.h> header file. */
-#cmakedefine HAVE_GSSAPI_GSSAPI_GENERIC_H ${HAVE_GSSAPI_GSSAPI_GENERIC_H}
+#cmakedefine HAVE_GSSAPI_GSSAPI_GENERIC_H 1
 
 /* Define to 1 if you have the <gssapi/gssapi.h> header file. */
 
 /* Define to 1 if you have the <gssapi/gssapi.h> header file. */
-#cmakedefine HAVE_GSSAPI_GSSAPI_H ${HAVE_GSSAPI_GSSAPI_H}
+#cmakedefine HAVE_GSSAPI_GSSAPI_H 1
 
 /* Define to 1 if you have the <gssapi/gssapi_krb5.h> header file. */
 
 /* Define to 1 if you have the <gssapi/gssapi_krb5.h> header file. */
-#cmakedefine HAVE_GSSAPI_GSSAPI_KRB5_H ${HAVE_GSSAPI_GSSAPI_KRB5_H}
+#cmakedefine HAVE_GSSAPI_GSSAPI_KRB5_H 1
 
 /* if you have the GNU gssapi libraries */
 
 /* if you have the GNU gssapi libraries */
-#cmakedefine HAVE_GSSGNU ${HAVE_GSSGNU}
+#cmakedefine HAVE_GSSGNU 1
 
 /* if you have the Heimdal gssapi libraries */
 
 /* if you have the Heimdal gssapi libraries */
-#cmakedefine HAVE_GSSHEIMDAL ${HAVE_GSSHEIMDAL}
+#cmakedefine HAVE_GSSHEIMDAL 1
 
 /* if you have the MIT gssapi libraries */
 
 /* if you have the MIT gssapi libraries */
-#cmakedefine HAVE_GSSMIT ${HAVE_GSSMIT}
+#cmakedefine HAVE_GSSMIT 1
 
 /* Define to 1 if you have the `idna_strerror' function. */
 
 /* Define to 1 if you have the `idna_strerror' function. */
-#cmakedefine HAVE_IDNA_STRERROR ${HAVE_IDNA_STRERROR}
+#cmakedefine HAVE_IDNA_STRERROR 1
 
 /* Define to 1 if you have the `idn_free' function. */
 
 /* Define to 1 if you have the `idn_free' function. */
-#cmakedefine HAVE_IDN_FREE ${HAVE_IDN_FREE}
+#cmakedefine HAVE_IDN_FREE 1
 
 /* Define to 1 if you have the <idn-free.h> header file. */
 
 /* Define to 1 if you have the <idn-free.h> header file. */
-#cmakedefine HAVE_IDN_FREE_H ${HAVE_IDN_FREE_H}
+#cmakedefine HAVE_IDN_FREE_H 1
 
 /* Define to 1 if you have the <ifaddrs.h> header file. */
 
 /* Define to 1 if you have the <ifaddrs.h> header file. */
-#cmakedefine HAVE_IFADDRS_H ${HAVE_IFADDRS_H}
+#cmakedefine HAVE_IFADDRS_H 1
 
 /* Define to 1 if you have the `inet_addr' function. */
 
 /* Define to 1 if you have the `inet_addr' function. */
-#cmakedefine HAVE_INET_ADDR ${HAVE_INET_ADDR}
+#cmakedefine HAVE_INET_ADDR 1
 
 /* Define to 1 if you have the inet_ntoa_r function. */
 
 /* Define to 1 if you have the inet_ntoa_r function. */
-#cmakedefine HAVE_INET_NTOA_R ${HAVE_INET_NTOA_R}
+#cmakedefine HAVE_INET_NTOA_R 1
 
 /* inet_ntoa_r() takes 2 args */
 
 /* inet_ntoa_r() takes 2 args */
-#cmakedefine HAVE_INET_NTOA_R_2 ${HAVE_INET_NTOA_R_2}
+#cmakedefine HAVE_INET_NTOA_R_2 1
 
 /* inet_ntoa_r() takes 3 args */
 
 /* inet_ntoa_r() takes 3 args */
-#cmakedefine HAVE_INET_NTOA_R_3 ${HAVE_INET_NTOA_R_3}
+#cmakedefine HAVE_INET_NTOA_R_3 1
 
 /* Define to 1 if you have a IPv6 capable working inet_ntop function. */
 
 /* Define to 1 if you have a IPv6 capable working inet_ntop function. */
-#cmakedefine HAVE_INET_NTOP ${HAVE_INET_NTOP}
+#cmakedefine HAVE_INET_NTOP 1
 
 /* Define to 1 if you have a IPv6 capable working inet_pton function. */
 
 /* Define to 1 if you have a IPv6 capable working inet_pton function. */
-#cmakedefine HAVE_INET_PTON ${HAVE_INET_PTON}
+#cmakedefine HAVE_INET_PTON 1
 
 /* Define to 1 if you have the <inttypes.h> header file. */
 
 /* Define to 1 if you have the <inttypes.h> header file. */
-#cmakedefine HAVE_INTTYPES_H ${HAVE_INTTYPES_H}
+#cmakedefine HAVE_INTTYPES_H 1
 
 /* Define to 1 if you have the ioctl function. */
 
 /* Define to 1 if you have the ioctl function. */
-#cmakedefine HAVE_IOCTL ${HAVE_IOCTL}
+#cmakedefine HAVE_IOCTL 1
 
 /* Define to 1 if you have the ioctlsocket function. */
 
 /* Define to 1 if you have the ioctlsocket function. */
-#cmakedefine HAVE_IOCTLSOCKET ${HAVE_IOCTLSOCKET}
+#cmakedefine HAVE_IOCTLSOCKET 1
 
 /* Define to 1 if you have the IoctlSocket camel case function. */
 
 /* Define to 1 if you have the IoctlSocket camel case function. */
-#cmakedefine HAVE_IOCTLSOCKET_CAMEL ${HAVE_IOCTLSOCKET_CAMEL}
+#cmakedefine HAVE_IOCTLSOCKET_CAMEL 1
 
 /* Define to 1 if you have a working IoctlSocket camel case FIONBIO function.
    */
 
 /* Define to 1 if you have a working IoctlSocket camel case FIONBIO function.
    */
-#cmakedefine HAVE_IOCTLSOCKET_CAMEL_FIONBIO ${HAVE_IOCTLSOCKET_CAMEL_FIONBIO}
+#cmakedefine HAVE_IOCTLSOCKET_CAMEL_FIONBIO 1
 
 /* Define to 1 if you have a working ioctlsocket FIONBIO function. */
 
 /* Define to 1 if you have a working ioctlsocket FIONBIO function. */
-#cmakedefine HAVE_IOCTLSOCKET_FIONBIO ${HAVE_IOCTLSOCKET_FIONBIO}
+#cmakedefine HAVE_IOCTLSOCKET_FIONBIO 1
 
 /* Define to 1 if you have a working ioctl FIONBIO function. */
 
 /* Define to 1 if you have a working ioctl FIONBIO function. */
-#cmakedefine HAVE_IOCTL_FIONBIO ${HAVE_IOCTL_FIONBIO}
+#cmakedefine HAVE_IOCTL_FIONBIO 1
 
 /* Define to 1 if you have a working ioctl SIOCGIFADDR function. */
 
 /* Define to 1 if you have a working ioctl SIOCGIFADDR function. */
-#cmakedefine HAVE_IOCTL_SIOCGIFADDR ${HAVE_IOCTL_SIOCGIFADDR}
+#cmakedefine HAVE_IOCTL_SIOCGIFADDR 1
 
 /* Define to 1 if you have the <io.h> header file. */
 
 /* Define to 1 if you have the <io.h> header file. */
-#cmakedefine HAVE_IO_H ${HAVE_IO_H}
+#cmakedefine HAVE_IO_H 1
 
 /* if you have the Kerberos4 libraries (including -ldes) */
 
 /* if you have the Kerberos4 libraries (including -ldes) */
-#cmakedefine HAVE_KRB4 ${HAVE_KRB4}
+#cmakedefine HAVE_KRB4 1
 
 /* Define to 1 if you have the `krb_get_our_ip_for_realm' function. */
 
 /* Define to 1 if you have the `krb_get_our_ip_for_realm' function. */
-#cmakedefine HAVE_KRB_GET_OUR_IP_FOR_REALM ${HAVE_KRB_GET_OUR_IP_FOR_REALM}
+#cmakedefine HAVE_KRB_GET_OUR_IP_FOR_REALM 1
 
 /* Define to 1 if you have the <krb.h> header file. */
 
 /* Define to 1 if you have the <krb.h> header file. */
-#cmakedefine HAVE_KRB_H ${HAVE_KRB_H}
+#cmakedefine HAVE_KRB_H 1
 
 /* Define to 1 if you have the lber.h header file. */
 
 /* Define to 1 if you have the lber.h header file. */
-#cmakedefine HAVE_LBER_H ${HAVE_LBER_H}
+#cmakedefine HAVE_LBER_H 1
 
 /* Define to 1 if you have the ldapssl.h header file. */
 
 /* Define to 1 if you have the ldapssl.h header file. */
-#cmakedefine HAVE_LDAPSSL_H ${HAVE_LDAPSSL_H}
+#cmakedefine HAVE_LDAPSSL_H 1
 
 /* Define to 1 if you have the ldap.h header file. */
 
 /* Define to 1 if you have the ldap.h header file. */
-#cmakedefine HAVE_LDAP_H ${HAVE_LDAP_H}
+#cmakedefine HAVE_LDAP_H 1
 
 /* Use LDAPS implementation */
 
 /* Use LDAPS implementation */
-#cmakedefine HAVE_LDAP_SSL ${HAVE_LDAP_SSL}
+#cmakedefine HAVE_LDAP_SSL 1
 
 /* Define to 1 if you have the ldap_ssl.h header file. */
 
 /* Define to 1 if you have the ldap_ssl.h header file. */
-#cmakedefine HAVE_LDAP_SSL_H ${HAVE_LDAP_SSL_H}
+#cmakedefine HAVE_LDAP_SSL_H 1
 
 /* Define to 1 if you have the `ldap_url_parse' function. */
 
 /* Define to 1 if you have the `ldap_url_parse' function. */
-#cmakedefine HAVE_LDAP_URL_PARSE ${HAVE_LDAP_URL_PARSE}
+#cmakedefine HAVE_LDAP_URL_PARSE 1
 
 /* Define to 1 if you have the <libgen.h> header file. */
 
 /* Define to 1 if you have the <libgen.h> header file. */
-#cmakedefine HAVE_LIBGEN_H ${HAVE_LIBGEN_H}
+#cmakedefine HAVE_LIBGEN_H 1
 
 /* Define to 1 if you have the `idn' library (-lidn). */
 
 /* Define to 1 if you have the `idn' library (-lidn). */
-#cmakedefine HAVE_LIBIDN ${HAVE_LIBIDN}
+#cmakedefine HAVE_LIBIDN 1
 
 /* Define to 1 if you have the `resolv' library (-lresolv). */
 
 /* Define to 1 if you have the `resolv' library (-lresolv). */
-#cmakedefine HAVE_LIBRESOLV ${HAVE_LIBRESOLV}
+#cmakedefine HAVE_LIBRESOLV 1
 
 /* Define to 1 if you have the `resolve' library (-lresolve). */
 
 /* Define to 1 if you have the `resolve' library (-lresolve). */
-#cmakedefine HAVE_LIBRESOLVE ${HAVE_LIBRESOLVE}
+#cmakedefine HAVE_LIBRESOLVE 1
 
 /* Define to 1 if you have the `socket' library (-lsocket). */
 
 /* Define to 1 if you have the `socket' library (-lsocket). */
-#cmakedefine HAVE_LIBSOCKET ${HAVE_LIBSOCKET}
+#cmakedefine HAVE_LIBSOCKET 1
 
 /* Define to 1 if you have the `ssh2' library (-lssh2). */
 
 /* Define to 1 if you have the `ssh2' library (-lssh2). */
-#cmakedefine HAVE_LIBSSH2 ${HAVE_LIBSSH2}
+#cmakedefine HAVE_LIBSSH2 1
+
+/* Define to 1 if libssh2 provides `libssh2_version'. */
+#cmakedefine HAVE_LIBSSH2_VERSION 1
+
+/* Define to 1 if libssh2 provides `libssh2_init'. */
+#cmakedefine HAVE_LIBSSH2_INIT 1
+
+/* Define to 1 if libssh2 provides `libssh2_exit'. */
+#cmakedefine HAVE_LIBSSH2_EXIT 1
+
+/* Define to 1 if libssh2 provides `libssh2_scp_send64'. */
+#cmakedefine HAVE_LIBSSH2_SCP_SEND64 1
+
+/* Define to 1 if libssh2 provides `libssh2_session_handshake'. */
+#cmakedefine HAVE_LIBSSH2_SESSION_HANDSHAKE 1
 
 /* Define to 1 if you have the <libssh2.h> header file. */
 
 /* Define to 1 if you have the <libssh2.h> header file. */
-#cmakedefine HAVE_LIBSSH2_H ${HAVE_LIBSSH2_H}
+#cmakedefine HAVE_LIBSSH2_H 1
 
 /* Define to 1 if you have the `ssl' library (-lssl). */
 
 /* Define to 1 if you have the `ssl' library (-lssl). */
-#cmakedefine HAVE_LIBSSL ${HAVE_LIBSSL}
+#cmakedefine HAVE_LIBSSL 1
 
 /* if zlib is available */
 
 /* if zlib is available */
-#cmakedefine HAVE_LIBZ ${HAVE_LIBZ}
+#cmakedefine HAVE_LIBZ 1
 
 /* Define to 1 if you have the <limits.h> header file. */
 
 /* Define to 1 if you have the <limits.h> header file. */
-#cmakedefine HAVE_LIMITS_H ${HAVE_LIMITS_H}
+#cmakedefine HAVE_LIMITS_H 1
 
 /* if your compiler supports LL */
 
 /* if your compiler supports LL */
-#cmakedefine HAVE_LL ${HAVE_LL}
+#cmakedefine HAVE_LL 1
 
 /* Define to 1 if you have the <locale.h> header file. */
 
 /* Define to 1 if you have the <locale.h> header file. */
-#cmakedefine HAVE_LOCALE_H ${HAVE_LOCALE_H}
+#cmakedefine HAVE_LOCALE_H 1
 
 /* Define to 1 if you have a working localtime_r function. */
 
 /* Define to 1 if you have a working localtime_r function. */
-#cmakedefine HAVE_LOCALTIME_R ${HAVE_LOCALTIME_R}
+#cmakedefine HAVE_LOCALTIME_R 1
 
 /* Define to 1 if the compiler supports the 'long long' data type. */
 
 /* Define to 1 if the compiler supports the 'long long' data type. */
-#cmakedefine HAVE_LONGLONG ${HAVE_LONGLONG}
+#cmakedefine HAVE_LONGLONG 1
 
 /* Define to 1 if you have the malloc.h header file. */
 
 /* Define to 1 if you have the malloc.h header file. */
-#cmakedefine HAVE_MALLOC_H ${HAVE_MALLOC_H}
+#cmakedefine HAVE_MALLOC_H 1
 
 /* Define to 1 if you have the <memory.h> header file. */
 
 /* Define to 1 if you have the <memory.h> header file. */
-#cmakedefine HAVE_MEMORY_H ${HAVE_MEMORY_H}
+#cmakedefine HAVE_MEMORY_H 1
 
 /* Define to 1 if you have the MSG_NOSIGNAL flag. */
 
 /* Define to 1 if you have the MSG_NOSIGNAL flag. */
-#cmakedefine HAVE_MSG_NOSIGNAL ${HAVE_MSG_NOSIGNAL}
+#cmakedefine HAVE_MSG_NOSIGNAL 1
 
 /* Define to 1 if you have the <netdb.h> header file. */
 
 /* Define to 1 if you have the <netdb.h> header file. */
-#cmakedefine HAVE_NETDB_H ${HAVE_NETDB_H}
+#cmakedefine HAVE_NETDB_H 1
 
 /* Define to 1 if you have the <netinet/in.h> header file. */
 
 /* Define to 1 if you have the <netinet/in.h> header file. */
-#cmakedefine HAVE_NETINET_IN_H ${HAVE_NETINET_IN_H}
+#cmakedefine HAVE_NETINET_IN_H 1
 
 /* Define to 1 if you have the <netinet/tcp.h> header file. */
 
 /* Define to 1 if you have the <netinet/tcp.h> header file. */
-#cmakedefine HAVE_NETINET_TCP_H ${HAVE_NETINET_TCP_H}
+#cmakedefine HAVE_NETINET_TCP_H 1
 
 /* Define to 1 if you have the <net/if.h> header file. */
 
 /* Define to 1 if you have the <net/if.h> header file. */
-#cmakedefine HAVE_NET_IF_H ${HAVE_NET_IF_H}
+#cmakedefine HAVE_NET_IF_H 1
 
 /* Define to 1 if NI_WITHSCOPEID exists and works. */
 
 /* Define to 1 if NI_WITHSCOPEID exists and works. */
-#cmakedefine HAVE_NI_WITHSCOPEID ${HAVE_NI_WITHSCOPEID}
+#cmakedefine HAVE_NI_WITHSCOPEID 1
 
 
-/* if you have an old MIT gssapi library, lacking GSS_C_NT_HOSTBASED_SERVICE
-   */
-#cmakedefine HAVE_OLD_GSSMIT ${HAVE_OLD_GSSMIT}
+/* if you have an old MIT gssapi library, lacking GSS_C_NT_HOSTBASED_SERVICE */
+#cmakedefine HAVE_OLD_GSSMIT 1
 
 /* Define to 1 if you have the <openssl/crypto.h> header file. */
 
 /* Define to 1 if you have the <openssl/crypto.h> header file. */
-#cmakedefine HAVE_OPENSSL_CRYPTO_H ${HAVE_OPENSSL_CRYPTO_H}
+#cmakedefine HAVE_OPENSSL_CRYPTO_H 1
 
 /* Define to 1 if you have the <openssl/engine.h> header file. */
 
 /* Define to 1 if you have the <openssl/engine.h> header file. */
-#cmakedefine HAVE_OPENSSL_ENGINE_H ${HAVE_OPENSSL_ENGINE_H}
+#cmakedefine HAVE_OPENSSL_ENGINE_H 1
 
 /* Define to 1 if you have the <openssl/err.h> header file. */
 
 /* Define to 1 if you have the <openssl/err.h> header file. */
-#cmakedefine HAVE_OPENSSL_ERR_H ${HAVE_OPENSSL_ERR_H}
+#cmakedefine HAVE_OPENSSL_ERR_H 1
 
 /* Define to 1 if you have the <openssl/pem.h> header file. */
 
 /* Define to 1 if you have the <openssl/pem.h> header file. */
-#cmakedefine HAVE_OPENSSL_PEM_H ${HAVE_OPENSSL_PEM_H}
+#cmakedefine HAVE_OPENSSL_PEM_H 1
 
 /* Define to 1 if you have the <openssl/pkcs12.h> header file. */
 
 /* Define to 1 if you have the <openssl/pkcs12.h> header file. */
-#cmakedefine HAVE_OPENSSL_PKCS12_H ${HAVE_OPENSSL_PKCS12_H}
+#cmakedefine HAVE_OPENSSL_PKCS12_H 1
 
 /* Define to 1 if you have the <openssl/rsa.h> header file. */
 
 /* Define to 1 if you have the <openssl/rsa.h> header file. */
-#cmakedefine HAVE_OPENSSL_RSA_H ${HAVE_OPENSSL_RSA_H}
+#cmakedefine HAVE_OPENSSL_RSA_H 1
 
 /* Define to 1 if you have the <openssl/ssl.h> header file. */
 
 /* Define to 1 if you have the <openssl/ssl.h> header file. */
-#cmakedefine HAVE_OPENSSL_SSL_H ${HAVE_OPENSSL_SSL_H}
+#cmakedefine HAVE_OPENSSL_SSL_H 1
 
 /* Define to 1 if you have the <openssl/x509.h> header file. */
 
 /* Define to 1 if you have the <openssl/x509.h> header file. */
-#cmakedefine HAVE_OPENSSL_X509_H ${HAVE_OPENSSL_X509_H}
+#cmakedefine HAVE_OPENSSL_X509_H 1
 
 /* Define to 1 if you have the <pem.h> header file. */
 
 /* Define to 1 if you have the <pem.h> header file. */
-#cmakedefine HAVE_PEM_H ${HAVE_PEM_H}
+#cmakedefine HAVE_PEM_H 1
 
 /* Define to 1 if you have the `perror' function. */
 
 /* Define to 1 if you have the `perror' function. */
-#cmakedefine HAVE_PERROR ${HAVE_PERROR}
+#cmakedefine HAVE_PERROR 1
 
 /* Define to 1 if you have the `pipe' function. */
 
 /* Define to 1 if you have the `pipe' function. */
-#cmakedefine HAVE_PIPE ${HAVE_PIPE}
+#cmakedefine HAVE_PIPE 1
 
 /* Define to 1 if you have a working poll function. */
 
 /* Define to 1 if you have a working poll function. */
-#cmakedefine HAVE_POLL ${HAVE_POLL}
+#cmakedefine HAVE_POLL 1
 
 /* If you have a fine poll */
 
 /* If you have a fine poll */
-#cmakedefine HAVE_POLL_FINE ${HAVE_POLL_FINE}
+#cmakedefine HAVE_POLL_FINE 1
 
 /* Define to 1 if you have the <poll.h> header file. */
 
 /* Define to 1 if you have the <poll.h> header file. */
-#cmakedefine HAVE_POLL_H ${HAVE_POLL_H}
+#cmakedefine HAVE_POLL_H 1
 
 /* Define to 1 if you have a working POSIX-style strerror_r function. */
 
 /* Define to 1 if you have a working POSIX-style strerror_r function. */
-#cmakedefine HAVE_POSIX_STRERROR_R ${HAVE_POSIX_STRERROR_R}
+#cmakedefine HAVE_POSIX_STRERROR_R 1
+
+/* Define to 1 if you have the <pthread.h> header file */
+#cmakedefine HAVE_PTHREAD_H 1
 
 /* Define to 1 if you have the <pwd.h> header file. */
 
 /* Define to 1 if you have the <pwd.h> header file. */
-#cmakedefine HAVE_PWD_H ${HAVE_PWD_H}
+#cmakedefine HAVE_PWD_H 1
 
 /* Define to 1 if you have the `RAND_egd' function. */
 
 /* Define to 1 if you have the `RAND_egd' function. */
-#cmakedefine HAVE_RAND_EGD ${HAVE_RAND_EGD}
+#cmakedefine HAVE_RAND_EGD 1
 
 /* Define to 1 if you have the `RAND_screen' function. */
 
 /* Define to 1 if you have the `RAND_screen' function. */
-#cmakedefine HAVE_RAND_SCREEN ${HAVE_RAND_SCREEN}
+#cmakedefine HAVE_RAND_SCREEN 1
 
 /* Define to 1 if you have the `RAND_status' function. */
 
 /* Define to 1 if you have the `RAND_status' function. */
-#cmakedefine HAVE_RAND_STATUS ${HAVE_RAND_STATUS}
+#cmakedefine HAVE_RAND_STATUS 1
 
 /* Define to 1 if you have the recv function. */
 
 /* Define to 1 if you have the recv function. */
-#cmakedefine HAVE_RECV ${HAVE_RECV}
+#cmakedefine HAVE_RECV 1
 
 /* Define to 1 if you have the recvfrom function. */
 
 /* Define to 1 if you have the recvfrom function. */
-#cmakedefine HAVE_RECVFROM ${HAVE_RECVFROM}
+#cmakedefine HAVE_RECVFROM 1
 
 /* Define to 1 if you have the <rsa.h> header file. */
 
 /* Define to 1 if you have the <rsa.h> header file. */
-#cmakedefine HAVE_RSA_H ${HAVE_RSA_H}
+#cmakedefine HAVE_RSA_H 1
 
 /* Define to 1 if you have the select function. */
 
 /* Define to 1 if you have the select function. */
-#cmakedefine HAVE_SELECT ${HAVE_SELECT}
+#cmakedefine HAVE_SELECT 1
 
 /* Define to 1 if you have the send function. */
 
 /* Define to 1 if you have the send function. */
-#cmakedefine HAVE_SEND ${HAVE_SEND}
+#cmakedefine HAVE_SEND 1
 
 /* Define to 1 if you have the <setjmp.h> header file. */
 
 /* Define to 1 if you have the <setjmp.h> header file. */
-#cmakedefine HAVE_SETJMP_H ${HAVE_SETJMP_H}
+#cmakedefine HAVE_SETJMP_H 1
 
 /* Define to 1 if you have the `setlocale' function. */
 
 /* Define to 1 if you have the `setlocale' function. */
-#cmakedefine HAVE_SETLOCALE ${HAVE_SETLOCALE}
+#cmakedefine HAVE_SETLOCALE 1
 
 /* Define to 1 if you have the `setmode' function. */
 
 /* Define to 1 if you have the `setmode' function. */
-#cmakedefine HAVE_SETMODE ${HAVE_SETMODE}
+#cmakedefine HAVE_SETMODE 1
 
 /* Define to 1 if you have the `setrlimit' function. */
 
 /* Define to 1 if you have the `setrlimit' function. */
-#cmakedefine HAVE_SETRLIMIT ${HAVE_SETRLIMIT}
+#cmakedefine HAVE_SETRLIMIT 1
 
 /* Define to 1 if you have the setsockopt function. */
 
 /* Define to 1 if you have the setsockopt function. */
-#cmakedefine HAVE_SETSOCKOPT ${HAVE_SETSOCKOPT}
+#cmakedefine HAVE_SETSOCKOPT 1
 
 /* Define to 1 if you have a working setsockopt SO_NONBLOCK function. */
 
 /* Define to 1 if you have a working setsockopt SO_NONBLOCK function. */
-#cmakedefine HAVE_SETSOCKOPT_SO_NONBLOCK ${HAVE_SETSOCKOPT_SO_NONBLOCK}
+#cmakedefine HAVE_SETSOCKOPT_SO_NONBLOCK 1
 
 /* Define to 1 if you have the <sgtty.h> header file. */
 
 /* Define to 1 if you have the <sgtty.h> header file. */
-#cmakedefine HAVE_SGTTY_H ${HAVE_SGTTY_H}
+#cmakedefine HAVE_SGTTY_H 1
 
 /* Define to 1 if you have the sigaction function. */
 
 /* Define to 1 if you have the sigaction function. */
-#cmakedefine HAVE_SIGACTION ${HAVE_SIGACTION}
+#cmakedefine HAVE_SIGACTION 1
 
 /* Define to 1 if you have the siginterrupt function. */
 
 /* Define to 1 if you have the siginterrupt function. */
-#cmakedefine HAVE_SIGINTERRUPT ${HAVE_SIGINTERRUPT}
+#cmakedefine HAVE_SIGINTERRUPT 1
 
 /* Define to 1 if you have the signal function. */
 
 /* Define to 1 if you have the signal function. */
-#cmakedefine HAVE_SIGNAL ${HAVE_SIGNAL}
+#cmakedefine HAVE_SIGNAL 1
 
 /* Define to 1 if you have the <signal.h> header file. */
 
 /* Define to 1 if you have the <signal.h> header file. */
-#cmakedefine HAVE_SIGNAL_H ${HAVE_SIGNAL_H}
+#cmakedefine HAVE_SIGNAL_H 1
 
 /* Define to 1 if you have the sigsetjmp function or macro. */
 
 /* Define to 1 if you have the sigsetjmp function or macro. */
-#cmakedefine HAVE_SIGSETJMP ${HAVE_SIGSETJMP}
+#cmakedefine HAVE_SIGSETJMP 1
 
 /* Define to 1 if sig_atomic_t is an available typedef. */
 
 /* Define to 1 if sig_atomic_t is an available typedef. */
-#cmakedefine HAVE_SIG_ATOMIC_T ${HAVE_SIG_ATOMIC_T}
+#cmakedefine HAVE_SIG_ATOMIC_T 1
 
 /* Define to 1 if sig_atomic_t is already defined as volatile. */
 
 /* Define to 1 if sig_atomic_t is already defined as volatile. */
-#cmakedefine HAVE_SIG_ATOMIC_T_VOLATILE ${HAVE_SIG_ATOMIC_T_VOLATILE}
+#cmakedefine HAVE_SIG_ATOMIC_T_VOLATILE 1
 
 /* Define to 1 if struct sockaddr_in6 has the sin6_scope_id member */
 
 /* Define to 1 if struct sockaddr_in6 has the sin6_scope_id member */
-#cmakedefine HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID ${HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID}
+#cmakedefine HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1
 
 /* Define to 1 if you have the `socket' function. */
 
 /* Define to 1 if you have the `socket' function. */
-#cmakedefine HAVE_SOCKET ${HAVE_SOCKET}
-
-/* Define this if you have the SPNEGO library fbopenssl */
-#cmakedefine HAVE_SPNEGO ${HAVE_SPNEGO}
+#cmakedefine HAVE_SOCKET 1
 
 /* Define to 1 if you have the `SSL_get_shutdown' function. */
 
 /* Define to 1 if you have the `SSL_get_shutdown' function. */
-#cmakedefine HAVE_SSL_GET_SHUTDOWN ${HAVE_SSL_GET_SHUTDOWN}
+#cmakedefine HAVE_SSL_GET_SHUTDOWN 1
 
 /* Define to 1 if you have the <ssl.h> header file. */
 
 /* Define to 1 if you have the <ssl.h> header file. */
-#cmakedefine HAVE_SSL_H ${HAVE_SSL_H}
+#cmakedefine HAVE_SSL_H 1
 
 /* Define to 1 if you have the <stdbool.h> header file. */
 
 /* Define to 1 if you have the <stdbool.h> header file. */
-#cmakedefine HAVE_STDBOOL_H ${HAVE_STDBOOL_H}
+#cmakedefine HAVE_STDBOOL_H 1
 
 /* Define to 1 if you have the <stdint.h> header file. */
 
 /* Define to 1 if you have the <stdint.h> header file. */
-#cmakedefine HAVE_STDINT_H ${HAVE_STDINT_H}
+#cmakedefine HAVE_STDINT_H 1
 
 /* Define to 1 if you have the <stdio.h> header file. */
 
 /* Define to 1 if you have the <stdio.h> header file. */
-#cmakedefine HAVE_STDIO_H ${HAVE_STDIO_H}
+#cmakedefine HAVE_STDIO_H 1
 
 /* Define to 1 if you have the <stdlib.h> header file. */
 
 /* Define to 1 if you have the <stdlib.h> header file. */
-#cmakedefine HAVE_STDLIB_H ${HAVE_STDLIB_H}
+#cmakedefine HAVE_STDLIB_H 1
 
 /* Define to 1 if you have the strcasecmp function. */
 
 /* Define to 1 if you have the strcasecmp function. */
-#cmakedefine HAVE_STRCASECMP ${HAVE_STRCASECMP}
+#cmakedefine HAVE_STRCASECMP 1
 
 /* Define to 1 if you have the strcasestr function. */
 
 /* Define to 1 if you have the strcasestr function. */
-#cmakedefine HAVE_STRCASESTR ${HAVE_STRCASESTR}
+#cmakedefine HAVE_STRCASESTR 1
 
 /* Define to 1 if you have the strcmpi function. */
 
 /* Define to 1 if you have the strcmpi function. */
-#cmakedefine HAVE_STRCMPI ${HAVE_STRCMPI}
+#cmakedefine HAVE_STRCMPI 1
 
 /* Define to 1 if you have the strdup function. */
 
 /* Define to 1 if you have the strdup function. */
-#cmakedefine HAVE_STRDUP ${HAVE_STRDUP}
+#cmakedefine HAVE_STRDUP 1
 
 /* Define to 1 if you have the strerror_r function. */
 
 /* Define to 1 if you have the strerror_r function. */
-#cmakedefine HAVE_STRERROR_R ${HAVE_STRERROR_R}
+#cmakedefine HAVE_STRERROR_R 1
 
 /* Define to 1 if you have the stricmp function. */
 
 /* Define to 1 if you have the stricmp function. */
-#cmakedefine HAVE_STRICMP ${HAVE_STRICMP}
+#cmakedefine HAVE_STRICMP 1
 
 /* Define to 1 if you have the <strings.h> header file. */
 
 /* Define to 1 if you have the <strings.h> header file. */
-#cmakedefine HAVE_STRINGS_H ${HAVE_STRINGS_H}
+#cmakedefine HAVE_STRINGS_H 1
 
 /* Define to 1 if you have the <string.h> header file. */
 
 /* Define to 1 if you have the <string.h> header file. */
-#cmakedefine HAVE_STRING_H ${HAVE_STRING_H}
+#cmakedefine HAVE_STRING_H 1
 
 /* Define to 1 if you have the strlcat function. */
 
 /* Define to 1 if you have the strlcat function. */
-#cmakedefine HAVE_STRLCAT ${HAVE_STRLCAT}
+#cmakedefine HAVE_STRLCAT 1
 
 /* Define to 1 if you have the `strlcpy' function. */
 
 /* Define to 1 if you have the `strlcpy' function. */
-#cmakedefine HAVE_STRLCPY ${HAVE_STRLCPY}
+#cmakedefine HAVE_STRLCPY 1
 
 /* Define to 1 if you have the strncasecmp function. */
 
 /* Define to 1 if you have the strncasecmp function. */
-#cmakedefine HAVE_STRNCASECMP ${HAVE_STRNCASECMP}
+#cmakedefine HAVE_STRNCASECMP 1
 
 /* Define to 1 if you have the strncmpi function. */
 
 /* Define to 1 if you have the strncmpi function. */
-#cmakedefine HAVE_STRNCMPI ${HAVE_STRNCMPI}
+#cmakedefine HAVE_STRNCMPI 1
 
 /* Define to 1 if you have the strnicmp function. */
 
 /* Define to 1 if you have the strnicmp function. */
-#cmakedefine HAVE_STRNICMP ${HAVE_STRNICMP}
+#cmakedefine HAVE_STRNICMP 1
 
 /* Define to 1 if you have the <stropts.h> header file. */
 
 /* Define to 1 if you have the <stropts.h> header file. */
-#cmakedefine HAVE_STROPTS_H ${HAVE_STROPTS_H}
+#cmakedefine HAVE_STROPTS_H 1
 
 /* Define to 1 if you have the strstr function. */
 
 /* Define to 1 if you have the strstr function. */
-#cmakedefine HAVE_STRSTR ${HAVE_STRSTR}
+#cmakedefine HAVE_STRSTR 1
 
 /* Define to 1 if you have the strtok_r function. */
 
 /* Define to 1 if you have the strtok_r function. */
-#cmakedefine HAVE_STRTOK_R ${HAVE_STRTOK_R}
+#cmakedefine HAVE_STRTOK_R 1
 
 /* Define to 1 if you have the strtoll function. */
 
 /* Define to 1 if you have the strtoll function. */
-#cmakedefine HAVE_STRTOLL ${HAVE_STRTOLL}
+#cmakedefine HAVE_STRTOLL 1
 
 /* if struct sockaddr_storage is defined */
 
 /* if struct sockaddr_storage is defined */
-#cmakedefine HAVE_STRUCT_SOCKADDR_STORAGE ${HAVE_STRUCT_SOCKADDR_STORAGE}
+#cmakedefine HAVE_STRUCT_SOCKADDR_STORAGE 1
 
 /* Define to 1 if you have the timeval struct. */
 
 /* Define to 1 if you have the timeval struct. */
-#cmakedefine HAVE_STRUCT_TIMEVAL ${HAVE_STRUCT_TIMEVAL}
+#cmakedefine HAVE_STRUCT_TIMEVAL 1
 
 /* Define to 1 if you have the <sys/filio.h> header file. */
 
 /* Define to 1 if you have the <sys/filio.h> header file. */
-#cmakedefine HAVE_SYS_FILIO_H ${HAVE_SYS_FILIO_H}
+#cmakedefine HAVE_SYS_FILIO_H 1
 
 /* Define to 1 if you have the <sys/ioctl.h> header file. */
 
 /* Define to 1 if you have the <sys/ioctl.h> header file. */
-#cmakedefine HAVE_SYS_IOCTL_H ${HAVE_SYS_IOCTL_H}
+#cmakedefine HAVE_SYS_IOCTL_H 1
 
 /* Define to 1 if you have the <sys/param.h> header file. */
 
 /* Define to 1 if you have the <sys/param.h> header file. */
-#cmakedefine HAVE_SYS_PARAM_H ${HAVE_SYS_PARAM_H}
+#cmakedefine HAVE_SYS_PARAM_H 1
 
 /* Define to 1 if you have the <sys/poll.h> header file. */
 
 /* Define to 1 if you have the <sys/poll.h> header file. */
-#cmakedefine HAVE_SYS_POLL_H ${HAVE_SYS_POLL_H}
+#cmakedefine HAVE_SYS_POLL_H 1
 
 /* Define to 1 if you have the <sys/resource.h> header file. */
 
 /* Define to 1 if you have the <sys/resource.h> header file. */
-#cmakedefine HAVE_SYS_RESOURCE_H ${HAVE_SYS_RESOURCE_H}
+#cmakedefine HAVE_SYS_RESOURCE_H 1
 
 /* Define to 1 if you have the <sys/select.h> header file. */
 
 /* Define to 1 if you have the <sys/select.h> header file. */
-#cmakedefine HAVE_SYS_SELECT_H ${HAVE_SYS_SELECT_H}
+#cmakedefine HAVE_SYS_SELECT_H 1
 
 /* Define to 1 if you have the <sys/socket.h> header file. */
 
 /* Define to 1 if you have the <sys/socket.h> header file. */
-#cmakedefine HAVE_SYS_SOCKET_H ${HAVE_SYS_SOCKET_H}
+#cmakedefine HAVE_SYS_SOCKET_H 1
 
 /* Define to 1 if you have the <sys/sockio.h> header file. */
 
 /* Define to 1 if you have the <sys/sockio.h> header file. */
-#cmakedefine HAVE_SYS_SOCKIO_H ${HAVE_SYS_SOCKIO_H}
+#cmakedefine HAVE_SYS_SOCKIO_H 1
 
 /* Define to 1 if you have the <sys/stat.h> header file. */
 
 /* Define to 1 if you have the <sys/stat.h> header file. */
-#cmakedefine HAVE_SYS_STAT_H ${HAVE_SYS_STAT_H}
+#cmakedefine HAVE_SYS_STAT_H 1
 
 /* Define to 1 if you have the <sys/time.h> header file. */
 
 /* Define to 1 if you have the <sys/time.h> header file. */
-#cmakedefine HAVE_SYS_TIME_H ${HAVE_SYS_TIME_H}
+#cmakedefine HAVE_SYS_TIME_H 1
 
 /* Define to 1 if you have the <sys/types.h> header file. */
 
 /* Define to 1 if you have the <sys/types.h> header file. */
-#cmakedefine HAVE_SYS_TYPES_H ${HAVE_SYS_TYPES_H}
+#cmakedefine HAVE_SYS_TYPES_H 1
 
 /* Define to 1 if you have the <sys/uio.h> header file. */
 
 /* Define to 1 if you have the <sys/uio.h> header file. */
-#cmakedefine HAVE_SYS_UIO_H ${HAVE_SYS_UIO_H}
+#cmakedefine HAVE_SYS_UIO_H 1
 
 /* Define to 1 if you have the <sys/un.h> header file. */
 
 /* Define to 1 if you have the <sys/un.h> header file. */
-#cmakedefine HAVE_SYS_UN_H ${HAVE_SYS_UN_H}
+#cmakedefine HAVE_SYS_UN_H 1
 
 /* Define to 1 if you have the <sys/utime.h> header file. */
 
 /* Define to 1 if you have the <sys/utime.h> header file. */
-#cmakedefine HAVE_SYS_UTIME_H ${HAVE_SYS_UTIME_H}
+#cmakedefine HAVE_SYS_UTIME_H 1
 
 /* Define to 1 if you have the <termios.h> header file. */
 
 /* Define to 1 if you have the <termios.h> header file. */
-#cmakedefine HAVE_TERMIOS_H ${HAVE_TERMIOS_H}
+#cmakedefine HAVE_TERMIOS_H 1
 
 /* Define to 1 if you have the <termio.h> header file. */
 
 /* Define to 1 if you have the <termio.h> header file. */
-#cmakedefine HAVE_TERMIO_H ${HAVE_TERMIO_H}
+#cmakedefine HAVE_TERMIO_H 1
 
 /* Define to 1 if you have the <time.h> header file. */
 
 /* Define to 1 if you have the <time.h> header file. */
-#cmakedefine HAVE_TIME_H ${HAVE_TIME_H}
+#cmakedefine HAVE_TIME_H 1
 
 /* Define to 1 if you have the <tld.h> header file. */
 
 /* Define to 1 if you have the <tld.h> header file. */
-#cmakedefine HAVE_TLD_H ${HAVE_TLD_H}
+#cmakedefine HAVE_TLD_H 1
 
 /* Define to 1 if you have the `tld_strerror' function. */
 
 /* Define to 1 if you have the `tld_strerror' function. */
-#cmakedefine HAVE_TLD_STRERROR ${HAVE_TLD_STRERROR}
+#cmakedefine HAVE_TLD_STRERROR 1
 
 /* Define to 1 if you have the `uname' function. */
 
 /* Define to 1 if you have the `uname' function. */
-#cmakedefine HAVE_UNAME ${HAVE_UNAME}
+#cmakedefine HAVE_UNAME 1
 
 /* Define to 1 if you have the <unistd.h> header file. */
 
 /* Define to 1 if you have the <unistd.h> header file. */
-#cmakedefine HAVE_UNISTD_H ${HAVE_UNISTD_H}
+#cmakedefine HAVE_UNISTD_H 1
 
 /* Define to 1 if you have the `utime' function. */
 
 /* Define to 1 if you have the `utime' function. */
-#cmakedefine HAVE_UTIME ${HAVE_UTIME}
+#cmakedefine HAVE_UTIME 1
 
 /* Define to 1 if you have the <utime.h> header file. */
 
 /* Define to 1 if you have the <utime.h> header file. */
-#cmakedefine HAVE_UTIME_H ${HAVE_UTIME_H}
+#cmakedefine HAVE_UTIME_H 1
 
 /* Define to 1 if compiler supports C99 variadic macro style. */
 
 /* Define to 1 if compiler supports C99 variadic macro style. */
-#cmakedefine HAVE_VARIADIC_MACROS_C99 ${HAVE_VARIADIC_MACROS_C99}
+#cmakedefine HAVE_VARIADIC_MACROS_C99 1
 
 /* Define to 1 if compiler supports old gcc variadic macro style. */
 
 /* Define to 1 if compiler supports old gcc variadic macro style. */
-#cmakedefine HAVE_VARIADIC_MACROS_GCC ${HAVE_VARIADIC_MACROS_GCC}
+#cmakedefine HAVE_VARIADIC_MACROS_GCC 1
 
 /* Define to 1 if you have the winber.h header file. */
 
 /* Define to 1 if you have the winber.h header file. */
-#cmakedefine HAVE_WINBER_H ${HAVE_WINBER_H}
+#cmakedefine HAVE_WINBER_H 1
 
 /* Define to 1 if you have the windows.h header file. */
 
 /* Define to 1 if you have the windows.h header file. */
-#cmakedefine HAVE_WINDOWS_H ${HAVE_WINDOWS_H}
+#cmakedefine HAVE_WINDOWS_H 1
 
 /* Define to 1 if you have the winldap.h header file. */
 
 /* Define to 1 if you have the winldap.h header file. */
-#cmakedefine HAVE_WINLDAP_H ${HAVE_WINLDAP_H}
+#cmakedefine HAVE_WINLDAP_H 1
 
 /* Define to 1 if you have the winsock2.h header file. */
 
 /* Define to 1 if you have the winsock2.h header file. */
-#cmakedefine HAVE_WINSOCK2_H ${HAVE_WINSOCK2_H}
+#cmakedefine HAVE_WINSOCK2_H 1
 
 /* Define to 1 if you have the winsock.h header file. */
 
 /* Define to 1 if you have the winsock.h header file. */
-#cmakedefine HAVE_WINSOCK_H ${HAVE_WINSOCK_H}
+#cmakedefine HAVE_WINSOCK_H 1
 
 /* Define this symbol if your OS supports changing the contents of argv */
 
 /* Define this symbol if your OS supports changing the contents of argv */
-#cmakedefine HAVE_WRITABLE_ARGV ${HAVE_WRITABLE_ARGV}
+#cmakedefine HAVE_WRITABLE_ARGV 1
 
 /* Define to 1 if you have the writev function. */
 
 /* Define to 1 if you have the writev function. */
-#cmakedefine HAVE_WRITEV ${HAVE_WRITEV}
+#cmakedefine HAVE_WRITEV 1
 
 /* Define to 1 if you have the ws2tcpip.h header file. */
 
 /* Define to 1 if you have the ws2tcpip.h header file. */
-#cmakedefine HAVE_WS2TCPIP_H ${HAVE_WS2TCPIP_H}
+#cmakedefine HAVE_WS2TCPIP_H 1
 
 /* Define to 1 if you have the <x509.h> header file. */
 
 /* Define to 1 if you have the <x509.h> header file. */
-#cmakedefine HAVE_X509_H ${HAVE_X509_H}
+#cmakedefine HAVE_X509_H 1
 
 /* Define if you have the <process.h> header file. */
 
 /* Define if you have the <process.h> header file. */
-#cmakedefine HAVE_PROCESS_H ${HAVE_PROCESS_H}
+#cmakedefine HAVE_PROCESS_H 1
 
 /* if you have the zlib.h header file */
 
 /* if you have the zlib.h header file */
-#cmakedefine HAVE_ZLIB_H ${HAVE_ZLIB_H}
+#cmakedefine HAVE_ZLIB_H 1
 
 /* Define to the sub-directory in which libtool stores uninstalled libraries.
    */
 #cmakedefine LT_OBJDIR ${LT_OBJDIR}
 
 /* If you lack a fine basename() prototype */
 
 /* Define to the sub-directory in which libtool stores uninstalled libraries.
    */
 #cmakedefine LT_OBJDIR ${LT_OBJDIR}
 
 /* If you lack a fine basename() prototype */
-#cmakedefine NEED_BASENAME_PROTO ${NEED_BASENAME_PROTO}
+#cmakedefine NEED_BASENAME_PROTO 1
 
 /* Define to 1 if you need the lber.h header file even with ldap.h */
 
 /* Define to 1 if you need the lber.h header file even with ldap.h */
-#cmakedefine NEED_LBER_H ${NEED_LBER_H}
+#cmakedefine NEED_LBER_H 1
 
 /* Define to 1 if you need the malloc.h header file even with stdlib.h */
 
 /* Define to 1 if you need the malloc.h header file even with stdlib.h */
-#cmakedefine NEED_MALLOC_H ${NEED_MALLOC_H}
+#cmakedefine NEED_MALLOC_H 1
 
 /* Define to 1 if _REENTRANT preprocessor symbol must be defined. */
 
 /* Define to 1 if _REENTRANT preprocessor symbol must be defined. */
-#cmakedefine NEED_REENTRANT ${NEED_REENTRANT}
+#cmakedefine NEED_REENTRANT 1
 
 /* cpu-machine-OS */
 #cmakedefine OS ${OS}
 
 /* cpu-machine-OS */
 #cmakedefine OS ${OS}
 #cmakedefine RECVFROM_TYPE_ARG2 ${RECVFROM_TYPE_ARG2}
 
 /* Define to 1 if the type pointed by arg 2 for recvfrom is void. */
 #cmakedefine RECVFROM_TYPE_ARG2 ${RECVFROM_TYPE_ARG2}
 
 /* Define to 1 if the type pointed by arg 2 for recvfrom is void. */
-#cmakedefine RECVFROM_TYPE_ARG2_IS_VOID ${RECVFROM_TYPE_ARG2_IS_VOID}
+#cmakedefine RECVFROM_TYPE_ARG2_IS_VOID 1
 
 /* Define to the type of arg 3 for recvfrom. */
 #cmakedefine RECVFROM_TYPE_ARG3 ${RECVFROM_TYPE_ARG3}
 
 /* Define to the type of arg 3 for recvfrom. */
 #cmakedefine RECVFROM_TYPE_ARG3 ${RECVFROM_TYPE_ARG3}
 #cmakedefine RECVFROM_TYPE_ARG5 ${RECVFROM_TYPE_ARG5}
 
 /* Define to 1 if the type pointed by arg 5 for recvfrom is void. */
 #cmakedefine RECVFROM_TYPE_ARG5 ${RECVFROM_TYPE_ARG5}
 
 /* Define to 1 if the type pointed by arg 5 for recvfrom is void. */
-#cmakedefine RECVFROM_TYPE_ARG5_IS_VOID ${RECVFROM_TYPE_ARG5_IS_VOID}
+#cmakedefine RECVFROM_TYPE_ARG5_IS_VOID 1
 
 /* Define to the type pointed by arg 6 for recvfrom. */
 #cmakedefine RECVFROM_TYPE_ARG6 ${RECVFROM_TYPE_ARG6}
 
 /* Define to 1 if the type pointed by arg 6 for recvfrom is void. */
 
 /* Define to the type pointed by arg 6 for recvfrom. */
 #cmakedefine RECVFROM_TYPE_ARG6 ${RECVFROM_TYPE_ARG6}
 
 /* Define to 1 if the type pointed by arg 6 for recvfrom is void. */
-#cmakedefine RECVFROM_TYPE_ARG6_IS_VOID ${RECVFROM_TYPE_ARG6_IS_VOID}
+#cmakedefine RECVFROM_TYPE_ARG6_IS_VOID 1
 
 /* Define to the function return type for recvfrom. */
 #cmakedefine RECVFROM_TYPE_RETV ${RECVFROM_TYPE_RETV}
 
 /* Define to the function return type for recvfrom. */
 #cmakedefine RECVFROM_TYPE_RETV ${RECVFROM_TYPE_RETV}
 #cmakedefine SIZEOF_VOIDP ${SIZEOF_VOIDP}
 
 /* Define to 1 if you have the ANSI C header files. */
 #cmakedefine SIZEOF_VOIDP ${SIZEOF_VOIDP}
 
 /* Define to 1 if you have the ANSI C header files. */
-#cmakedefine STDC_HEADERS ${STDC_HEADERS}
+#cmakedefine STDC_HEADERS 1
 
 /* Define to the type of arg 3 for strerror_r. */
 #cmakedefine STRERROR_R_TYPE_ARG3 ${STRERROR_R_TYPE_ARG3}
 
 /* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
 
 /* Define to the type of arg 3 for strerror_r. */
 #cmakedefine STRERROR_R_TYPE_ARG3 ${STRERROR_R_TYPE_ARG3}
 
 /* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-#cmakedefine TIME_WITH_SYS_TIME ${TIME_WITH_SYS_TIME}
+#cmakedefine TIME_WITH_SYS_TIME 1
 
 /* Define if you want to enable c-ares support */
 
 /* Define if you want to enable c-ares support */
-#cmakedefine USE_ARES ${USE_ARES}
+#cmakedefine USE_ARES 1
+
+/* Define if you want to enable POSIX threaded DNS lookup */
+#cmakedefine USE_THREADS_POSIX 1
 
 /* Define to disable non-blocking sockets. */
 
 /* Define to disable non-blocking sockets. */
-#cmakedefine USE_BLOCKING_SOCKETS ${USE_BLOCKING_SOCKETS}
+#cmakedefine USE_BLOCKING_SOCKETS 1
 
 /* if GnuTLS is enabled */
 
 /* if GnuTLS is enabled */
-#cmakedefine USE_GNUTLS ${USE_GNUTLS}
+#cmakedefine USE_GNUTLS 1
 
 /* if PolarSSL is enabled */
 
 /* if PolarSSL is enabled */
-#cmakedefine USE_POLARSSL ${USE_POLARSSL}
+#cmakedefine USE_POLARSSL 1
 
 /* if libSSH2 is in use */
 
 /* if libSSH2 is in use */
-#cmakedefine USE_LIBSSH2 ${USE_LIBSSH2}
+#cmakedefine USE_LIBSSH2 1
 
 /* If you want to build curl with the built-in manual */
 
 /* If you want to build curl with the built-in manual */
-#cmakedefine USE_MANUAL ${USE_MANUAL}
+#cmakedefine USE_MANUAL 1
 
 /* if NSS is enabled */
 
 /* if NSS is enabled */
-#cmakedefine USE_NSS ${USE_NSS}
+#cmakedefine USE_NSS 1
+
+/* if you want to use OpenLDAP code instead of legacy ldap implementation */
+#cmakedefine USE_OPENLDAP 1
 
 /* if OpenSSL is in use */
 
 /* if OpenSSL is in use */
-#cmakedefine USE_OPENSSL ${USE_OPENSSL}
+#cmakedefine USE_OPENSSL 1
 
 /* if SSL is enabled */
 
 /* if SSL is enabled */
-#cmakedefine USE_SSLEAY ${USE_SSLEAY}
+#cmakedefine USE_SSLEAY 1
+
+/* if Unix domain sockets are enabled  */
+#cmakedefine USE_UNIX_SOCKETS
 
 /* Define to 1 if you are building a Windows target without large file
    support. */
 
 /* Define to 1 if you are building a Windows target without large file
    support. */
-#cmakedefine USE_WIN32_LARGE_FILES ${USE_WIN32_LARGE_FILES}
+#cmakedefine USE_WIN32_LARGE_FILES 1
 
 /* to enable SSPI support */
 
 /* to enable SSPI support */
-#cmakedefine USE_WINDOWS_SSPI ${USE_WINDOWS_SSPI}
+#cmakedefine USE_WINDOWS_SSPI 1
 
 /* Define to 1 if using yaSSL in OpenSSL compatibility mode. */
 
 /* Define to 1 if using yaSSL in OpenSSL compatibility mode. */
-#cmakedefine USE_YASSLEMUL ${USE_YASSLEMUL}
+#cmakedefine USE_YASSLEMUL 1
 
 /* Version number of package */
 #cmakedefine VERSION ${VERSION}
 
 /* Define to avoid automatic inclusion of winsock.h */
 
 /* Version number of package */
 #cmakedefine VERSION ${VERSION}
 
 /* Define to avoid automatic inclusion of winsock.h */
-#cmakedefine WIN32_LEAN_AND_MEAN ${WIN32_LEAN_AND_MEAN}
+#cmakedefine WIN32_LEAN_AND_MEAN 1
 
 /* Define to 1 if OS is AIX. */
 #ifndef _ALL_SOURCE
 
 /* Define to 1 if OS is AIX. */
 #ifndef _ALL_SOURCE
index 539f030..1318afc 100644 (file)
@@ -48,6 +48,9 @@
 /* to disable RTSP */
 #undef CURL_DISABLE_RTSP
 
 /* to disable RTSP */
 #undef CURL_DISABLE_RTSP
 
+/* to disable SMB/CIFS */
+#undef CURL_DISABLE_SMB
+
 /* to disable SMTP */
 #undef CURL_DISABLE_SMTP
 
 /* to disable SMTP */
 #undef CURL_DISABLE_SMTP
 
 /* Define to 1 if you have the <crypto.h> header file. */
 #undef HAVE_CRYPTO_H
 
 /* Define to 1 if you have the <crypto.h> header file. */
 #undef HAVE_CRYPTO_H
 
-/* Define to 1 if you have the <des.h> header file. */
-#undef HAVE_DES_H
+/* Define to 1 if you have the <cyassl/error-ssl.h> header file. */
+#undef HAVE_CYASSL_ERROR_SSL_H
 
 /* Define to 1 if you have the <dlfcn.h> header file. */
 #undef HAVE_DLFCN_H
 
 /* Define to 1 if you have the <dlfcn.h> header file. */
 #undef HAVE_DLFCN_H
 /* Define to 1 if you have the `getpwuid' function. */
 #undef HAVE_GETPWUID
 
 /* Define to 1 if you have the `getpwuid' function. */
 #undef HAVE_GETPWUID
 
+/* Define to 1 if you have the `getpwuid_r' function. */
+#undef HAVE_GETPWUID_R
+
 /* Define to 1 if you have the `getrlimit' function. */
 #undef HAVE_GETRLIMIT
 
 /* Define to 1 if you have the `getrlimit' function. */
 #undef HAVE_GETRLIMIT
 
 /* if you have the function gnutls_srp_verifier */
 #undef HAVE_GNUTLS_SRP
 
 /* if you have the function gnutls_srp_verifier */
 #undef HAVE_GNUTLS_SRP
 
-/* if you have the gssapi libraries */
+/* if you have GSS-API libraries */
 #undef HAVE_GSSAPI
 
 /* Define to 1 if you have the <gssapi/gssapi_generic.h> header file. */
 #undef HAVE_GSSAPI
 
 /* Define to 1 if you have the <gssapi/gssapi_generic.h> header file. */
 /* Define to 1 if you have the <gssapi/gssapi_krb5.h> header file. */
 #undef HAVE_GSSAPI_GSSAPI_KRB5_H
 
 /* Define to 1 if you have the <gssapi/gssapi_krb5.h> header file. */
 #undef HAVE_GSSAPI_GSSAPI_KRB5_H
 
-/* if you have the GNU gssapi libraries */
+/* if you have GNU GSS */
 #undef HAVE_GSSGNU
 
 #undef HAVE_GSSGNU
 
-/* if you have the Heimdal gssapi libraries */
+/* if you have Heimdal */
 #undef HAVE_GSSHEIMDAL
 
 #undef HAVE_GSSHEIMDAL
 
-/* if you have the MIT gssapi libraries */
+/* if you have MIT Kerberos */
 #undef HAVE_GSSMIT
 
 /* Define to 1 if you have the `idna_strerror' function. */
 #undef HAVE_GSSMIT
 
 /* Define to 1 if you have the `idna_strerror' function. */
 /* Define to 1 if you have the <ifaddrs.h> header file. */
 #undef HAVE_IFADDRS_H
 
 /* Define to 1 if you have the <ifaddrs.h> header file. */
 #undef HAVE_IFADDRS_H
 
+/* Define to 1 if you have the `if_nametoindex' function. */
+#undef HAVE_IF_NAMETOINDEX
+
 /* Define to 1 if you have the `inet_addr' function. */
 #undef HAVE_INET_ADDR
 
 /* Define to 1 if you have the `inet_addr' function. */
 #undef HAVE_INET_ADDR
 
 /* Define to 1 if you have the <io.h> header file. */
 #undef HAVE_IO_H
 
 /* Define to 1 if you have the <io.h> header file. */
 #undef HAVE_IO_H
 
-/* if you have the Kerberos4 libraries (including -ldes) */
-#undef HAVE_KRB4
-
-/* Define to 1 if you have the `krb_get_our_ip_for_realm' function. */
-#undef HAVE_KRB_GET_OUR_IP_FOR_REALM
-
-/* Define to 1 if you have the <krb.h> header file. */
-#undef HAVE_KRB_H
-
 /* Define to 1 if you have the lber.h header file. */
 #undef HAVE_LBER_H
 
 /* Define to 1 if you have the lber.h header file. */
 #undef HAVE_LBER_H
 
 /* Define to 1 if you have the `idn' library (-lidn). */
 #undef HAVE_LIBIDN
 
 /* Define to 1 if you have the `idn' library (-lidn). */
 #undef HAVE_LIBIDN
 
-/* Define to 1 if you have the `resolv' library (-lresolv). */
-#undef HAVE_LIBRESOLV
-
 /* Define to 1 if you have the `resolve' library (-lresolve). */
 #undef HAVE_LIBRESOLVE
 
 /* Define to 1 if you have the `resolve' library (-lresolve). */
 #undef HAVE_LIBRESOLVE
 
 /* Define to 1 if you have the `ssh2' library (-lssh2). */
 #undef HAVE_LIBSSH2
 
 /* Define to 1 if you have the `ssh2' library (-lssh2). */
 #undef HAVE_LIBSSH2
 
-/* Define to 1 if you have the `libssh2_exit' function. */
-#undef HAVE_LIBSSH2_EXIT
-
 /* Define to 1 if you have the <libssh2.h> header file. */
 #undef HAVE_LIBSSH2_H
 
 /* Define to 1 if you have the <libssh2.h> header file. */
 #undef HAVE_LIBSSH2_H
 
-/* Define to 1 if you have the `libssh2_init' function. */
-#undef HAVE_LIBSSH2_INIT
-
-/* Define to 1 if you have the `libssh2_scp_send64' function. */
-#undef HAVE_LIBSSH2_SCP_SEND64
-
-/* Define to 1 if you have the `libssh2_session_handshake' function. */
-#undef HAVE_LIBSSH2_SESSION_HANDSHAKE
-
-/* Define to 1 if you have the `libssh2_version' function. */
-#undef HAVE_LIBSSH2_VERSION
-
 /* Define to 1 if you have the `ssl' library (-lssl). */
 #undef HAVE_LIBSSL
 
 /* Define to 1 if you have the `ssl' library (-lssl). */
 #undef HAVE_LIBSSL
 
 /* Define to 1 if you have the <net/if.h> header file. */
 #undef HAVE_NET_IF_H
 
 /* Define to 1 if you have the <net/if.h> header file. */
 #undef HAVE_NET_IF_H
 
+/* Define to 1 if you have the <nghttp2/nghttp2.h> header file. */
+#undef HAVE_NGHTTP2_NGHTTP2_H
+
 /* Define to 1 if NI_WITHSCOPEID exists and works. */
 #undef HAVE_NI_WITHSCOPEID
 
 /* Define to 1 if NI_WITHSCOPEID exists and works. */
 #undef HAVE_NI_WITHSCOPEID
 
-/* if you have the NSS_InitContext function */
-#undef HAVE_NSS_INITCONTEXT
-
-/* if you have an old MIT gssapi library, lacking GSS_C_NT_HOSTBASED_SERVICE
+/* if you have an old MIT Kerberos version, lacking GSS_C_NT_HOSTBASED_SERVICE
    */
 #undef HAVE_OLD_GSSMIT
 
    */
 #undef HAVE_OLD_GSSMIT
 
 /* Define to 1 if you have the <socket.h> header file. */
 #undef HAVE_SOCKET_H
 
 /* Define to 1 if you have the <socket.h> header file. */
 #undef HAVE_SOCKET_H
 
-/* Define this if you have the SPNEGO library fbopenssl */
-#undef HAVE_SPNEGO
-
 /* if you have the function SRP_Calc_client_key */
 #undef HAVE_SSLEAY_SRP
 
 /* if you have the function SRP_Calc_client_key */
 #undef HAVE_SSLEAY_SRP
 
 /* Define to 1 if you have the <string.h> header file. */
 #undef HAVE_STRING_H
 
 /* Define to 1 if you have the <string.h> header file. */
 #undef HAVE_STRING_H
 
-/* Define to 1 if you have the `strlcpy' function. */
-#undef HAVE_STRLCPY
-
 /* Define to 1 if you have the strncasecmp function. */
 #undef HAVE_STRNCASECMP
 
 /* Define to 1 if you have the strncasecmp function. */
 #undef HAVE_STRNCASECMP
 
 /* Define to 1 if _THREAD_SAFE preprocessor symbol must be defined. */
 #undef NEED_THREAD_SAFE
 
 /* Define to 1 if _THREAD_SAFE preprocessor symbol must be defined. */
 #undef NEED_THREAD_SAFE
 
-/* Define to 1 if your C compiler doesn't accept -c and -o together. */
-#undef NO_MINUS_C_MINUS_O
-
 /* Define to enable NTLM delegation to winbind's ntlm_auth helper. */
 #undef NTLM_WB_ENABLED
 
 /* Define to enable NTLM delegation to winbind's ntlm_auth helper. */
 #undef NTLM_WB_ENABLED
 
 /* The size of `long', as computed by sizeof. */
 #undef SIZEOF_LONG
 
 /* The size of `long', as computed by sizeof. */
 #undef SIZEOF_LONG
 
+/* The size of `long long', as computed by sizeof. */
+#undef SIZEOF_LONG_LONG
+
 /* The size of `off_t', as computed by sizeof. */
 #undef SIZEOF_OFF_T
 
 /* The size of `off_t', as computed by sizeof. */
 #undef SIZEOF_OFF_T
 
 /* Define to enable metalink support */
 #undef USE_METALINK
 
 /* Define to enable metalink support */
 #undef USE_METALINK
 
+/* if nghttp2 is in use */
+#undef USE_NGHTTP2
+
 /* if NSS is enabled */
 #undef USE_NSS
 
 /* if NSS is enabled */
 #undef USE_NSS
 
 /* Use TLS-SRP authentication */
 #undef USE_TLS_SRP
 
 /* Use TLS-SRP authentication */
 #undef USE_TLS_SRP
 
+/* Use Unix domain sockets */
+#undef USE_UNIX_SOCKETS
+
 /* Define to 1 if you have the `normaliz' (WinIDN) library (-lnormaliz). */
 #undef USE_WIN32_IDN
 
 /* Define to 1 if you have the `normaliz' (WinIDN) library (-lnormaliz). */
 #undef USE_WIN32_IDN
 
diff --git a/lib/curl_endian.c b/lib/curl_endian.c
new file mode 100644 (file)
index 0000000..14a2883
--- /dev/null
@@ -0,0 +1,230 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+
+#include "curl_setup.h"
+
+#include "curl_endian.h"
+
+/*
+ * Curl_read16_le()
+ *
+ * This function converts a 16-bit integer from the little endian format, as
+ * used in the incoming package to whatever endian format we're using
+ * natively.
+ *
+ * Parameters:
+ *
+ * buf      [in]     - A pointer to a 2 byte buffer.
+ *
+ * Returns the integer.
+ */
+unsigned short Curl_read16_le(unsigned char *buf)
+{
+  return (unsigned short)(((unsigned short)buf[0]) |
+                          ((unsigned short)buf[1] << 8));
+}
+
+/*
+ * Curl_read32_le()
+ *
+ * This function converts a 32-bit integer from the little endian format, as
+ * used in the incoming package to whatever endian format we're using
+ * natively.
+ *
+ * Parameters:
+ *
+ * buf      [in]     - A pointer to a 4 byte buffer.
+ *
+ * Returns the integer.
+ */
+unsigned int Curl_read32_le(unsigned char *buf)
+{
+  return ((unsigned int)buf[0]) | ((unsigned int)buf[1] << 8) |
+         ((unsigned int)buf[2] << 16) | ((unsigned int)buf[3] << 24);
+}
+
+/*
+ * Curl_read64_le()
+ *
+ * This function converts a 64-bit integer from the little endian format, as
+ * used in the incoming package to whatever endian format we're using
+ * natively.
+ *
+ * Parameters:
+ *
+ * buf      [in]     - A pointer to a 8 byte buffer.
+ *
+ * Returns the integer.
+ */
+#if defined(HAVE_LONGLONG)
+unsigned long long Curl_read64_le(unsigned char *buf)
+{
+  return ((unsigned long long)buf[0]) |
+         ((unsigned long long)buf[1] << 8) |
+         ((unsigned long long)buf[2] << 16) |
+         ((unsigned long long)buf[3] << 24) |
+         ((unsigned long long)buf[4] << 32) |
+         ((unsigned long long)buf[5] << 40) |
+         ((unsigned long long)buf[6] << 48) |
+         ((unsigned long long)buf[7] << 56);
+}
+#else
+unsigned __int64 Curl_read64_le(unsigned char *buf)
+{
+  return ((unsigned __int64)buf[0]) | ((unsigned __int64)buf[1] << 8) |
+         ((unsigned __int64)buf[2] << 16) | ((unsigned __int64)buf[3] << 24) |
+         ((unsigned __int64)buf[4] << 32) | ((unsigned __int64)buf[5] << 40) |
+         ((unsigned __int64)buf[6] << 48) | ((unsigned __int64)buf[7] << 56);
+}
+#endif
+
+/*
+ * Curl_read16_be()
+ *
+ * This function converts a 16-bit integer from the big endian format, as
+ * used in the incoming package to whatever endian format we're using
+ * natively.
+ *
+ * Parameters:
+ *
+ * buf      [in]     - A pointer to a 2 byte buffer.
+ *
+ * Returns the integer.
+ */
+unsigned short Curl_read16_be(unsigned char *buf)
+{
+  return (unsigned short)(((unsigned short)buf[0] << 8) |
+                          ((unsigned short)buf[1]));
+}
+
+/*
+ * Curl_read32_be()
+ *
+ * This function converts a 32-bit integer from the big endian format, as
+ * used in the incoming package to whatever endian format we're using
+ * natively.
+ *
+ * Parameters:
+ *
+ * buf      [in]     - A pointer to a 4 byte buffer.
+ *
+ * Returns the integer.
+ */
+unsigned int Curl_read32_be(unsigned char *buf)
+{
+  return ((unsigned int)buf[0] << 24) | ((unsigned int)buf[1] << 16) |
+         ((unsigned int)buf[2] << 8) | ((unsigned int)buf[3]);
+}
+
+/*
+ * Curl_read64_be()
+ *
+ * This function converts a 64-bit integer from the big endian format, as
+ * used in the incoming package to whatever endian format we're using
+ * natively.
+ *
+ * Parameters:
+ *
+ * buf      [in]     - A pointer to a 8 byte buffer.
+ *
+ * Returns the integer.
+ */
+#if defined(HAVE_LONGLONG)
+unsigned long long Curl_read64_be(unsigned char *buf)
+{
+  return ((unsigned long long)buf[0] << 56) |
+         ((unsigned long long)buf[1] << 48) |
+         ((unsigned long long)buf[2] << 40) |
+         ((unsigned long long)buf[3] << 32) |
+         ((unsigned long long)buf[4] << 24) |
+         ((unsigned long long)buf[5] << 16) |
+         ((unsigned long long)buf[6] << 8) |
+         ((unsigned long long)buf[7]);
+}
+#else
+unsigned __int64 Curl_read64_be(unsigned char *buf)
+{
+  return ((unsigned __int64)buf[0] << 56) | ((unsigned __int64)buf[1] << 48) |
+         ((unsigned __int64)buf[2] << 40) | ((unsigned __int64)buf[3] << 32) |
+         ((unsigned __int64)buf[4] << 24) | ((unsigned __int64)buf[5] << 16) |
+         ((unsigned __int64)buf[6] << 8) | ((unsigned __int64)buf[7]);
+}
+#endif
+
+/*
+ * Curl_write16_le()
+ *
+ * This function converts a 16-bit integer from the native endian format,
+ * to little endian format ready for sending down the wire.
+ *
+ * Parameters:
+ *
+ * value    [in]     - The 16-bit integer value.
+ * buffer   [in]     - A pointer to the output buffer.
+ */
+void Curl_write16_le(const short value, unsigned char *buffer)
+{
+  buffer[0] = (char)(value & 0x00FF);
+  buffer[1] = (char)((value & 0xFF00) >> 8);
+}
+
+/*
+ * Curl_write32_le()
+ *
+ * This function converts a 32-bit integer from the native endian format,
+ * to little endian format ready for sending down the wire.
+ *
+ * Parameters:
+ *
+ * value    [in]     - The 32-bit integer value.
+ * buffer   [in]     - A pointer to the output buffer.
+ */
+void Curl_write32_le(const int value, unsigned char *buffer)
+{
+  buffer[0] = (char)(value & 0x000000FF);
+  buffer[1] = (char)((value & 0x0000FF00) >> 8);
+  buffer[2] = (char)((value & 0x00FF0000) >> 16);
+  buffer[3] = (char)((value & 0xFF000000) >> 24);
+}
+
+#if (CURL_SIZEOF_CURL_OFF_T > 4)
+/*
+ * Curl_write64_le()
+ *
+ * This function converts a 64-bit integer from the native endian format,
+ * to little endian format ready for sending down the wire.
+ *
+ * Parameters:
+ *
+ * value    [in]     - The 64-bit integer value.
+ * buffer   [in]     - A pointer to the output buffer.
+ */
+#if defined(HAVE_LONGLONG)
+void Curl_write64_le(const long long value, unsigned char *buffer)
+#else
+void Curl_write64_le(const __int64 value, unsigned char *buffer)
+#endif
+{
+  Curl_write32_le((int)value, buffer);
+  Curl_write32_le((int)(value >> 32), buffer + 4);
+}
+#endif
diff --git a/lib/curl_endian.h b/lib/curl_endian.h
new file mode 100644 (file)
index 0000000..e384279
--- /dev/null
@@ -0,0 +1,70 @@
+#ifndef HEADER_CURL_ENDIAN_H
+#define HEADER_CURL_ENDIAN_H
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+
+/* Converts a 16-bit integer from little endian */
+unsigned short Curl_read16_le(unsigned char *buf);
+
+/* Converts a 32-bit integer from little endian */
+unsigned int Curl_read32_le(unsigned char *buf);
+
+#if (CURL_SIZEOF_CURL_OFF_T > 4)
+/* Converts a 64-bit integer from little endian */
+#if defined(HAVE_LONGLONG)
+unsigned long long Curl_read64_le(unsigned char *buf);
+#else
+unsigned __int64 Curl_read64_le(unsigned char *buf);
+#endif
+#endif
+
+/* Converts a 16-bit integer from big endian */
+unsigned short Curl_read16_be(unsigned char *buf);
+
+/* Converts a 32-bit integer from big endian */
+unsigned int Curl_read32_be(unsigned char *buf);
+
+#if (CURL_SIZEOF_CURL_OFF_T > 4)
+/* Converts a 64-bit integer from big endian */
+#if defined(HAVE_LONGLONG)
+unsigned long long Curl_read64_be(unsigned char *buf);
+#else
+unsigned __int64 Curl_read64_be(unsigned char *buf);
+#endif
+#endif
+
+/* Converts a 16-bit integer to little endian */
+void Curl_write16_le(const short value, unsigned char *buffer);
+
+/* Converts a 32-bit integer to little endian */
+void Curl_write32_le(const int value, unsigned char *buffer);
+
+#if (CURL_SIZEOF_CURL_OFF_T > 4)
+/* Converts a 64-bit integer to little endian */
+#if defined(HAVE_LONGLONG)
+void Curl_write64_le(const long long value, unsigned char *buffer);
+#else
+void Curl_write64_le(const __int64 value, unsigned char *buffer);
+#endif
+#endif
+
+#endif /* HEADER_CURL_ENDIAN_H */
index fabbe35..2cd14ff 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2011 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "curl_gssapi.h"
 #include "sendf.h"
 
 #include "curl_gssapi.h"
 #include "sendf.h"
 
+static const char spnego_oid_bytes[] = "\x2b\x06\x01\x05\x05\x02";
+gss_OID_desc Curl_spnego_mech_oid = { 6, &spnego_oid_bytes };
+static const char krb5_oid_bytes[] = "\x2a\x86\x48\x86\xf7\x12\x01\x02\x02";
+gss_OID_desc Curl_krb5_mech_oid = { 9, &krb5_oid_bytes };
+
 OM_uint32 Curl_gss_init_sec_context(
     struct SessionHandle *data,
 OM_uint32 Curl_gss_init_sec_context(
     struct SessionHandle *data,
-    OM_uint32 * minor_status,
-    gss_ctx_id_t * context,
+    OM_uint32 *minor_status,
+    gss_ctx_id_t *context,
     gss_name_t target_name,
     gss_name_t target_name,
+    gss_OID mech_type,
     gss_channel_bindings_t input_chan_bindings,
     gss_buffer_t input_token,
     gss_buffer_t output_token,
     gss_channel_bindings_t input_chan_bindings,
     gss_buffer_t input_token,
     gss_buffer_t output_token,
-    OM_uint32 * ret_flags)
+    const bool mutual_auth,
+    OM_uint32 *ret_flags)
 {
 {
-  OM_uint32 req_flags = GSS_C_MUTUAL_FLAG | GSS_C_REPLAY_FLAG;
+  OM_uint32 req_flags = GSS_C_REPLAY_FLAG;
+
+  if(mutual_auth)
+    req_flags |= GSS_C_MUTUAL_FLAG;
 
   if(data->set.gssapi_delegation & CURLGSSAPI_DELEGATION_POLICY_FLAG) {
 #ifdef GSS_C_DELEG_POLICY_FLAG
 
   if(data->set.gssapi_delegation & CURLGSSAPI_DELEGATION_POLICY_FLAG) {
 #ifdef GSS_C_DELEG_POLICY_FLAG
@@ -55,7 +65,7 @@ OM_uint32 Curl_gss_init_sec_context(
                               GSS_C_NO_CREDENTIAL, /* cred_handle */
                               context,
                               target_name,
                               GSS_C_NO_CREDENTIAL, /* cred_handle */
                               context,
                               target_name,
-                              GSS_C_NO_OID, /* mech_type */
+                              mech_type,
                               req_flags,
                               0, /* time_req */
                               input_chan_bindings,
                               req_flags,
                               0, /* time_req */
                               input_chan_bindings,
@@ -66,4 +76,45 @@ OM_uint32 Curl_gss_init_sec_context(
                               NULL /* time_rec */);
 }
 
                               NULL /* time_rec */);
 }
 
+/*
+ * Curl_gss_log_error()
+ *
+ * This is used to log a GSS-API error status.
+ *
+ * Parameters:
+ *
+ * data    [in] - The session handle.
+ * status  [in] - The status code.
+ * prefix  [in] - The prefix of the log message.
+ */
+void Curl_gss_log_error(struct SessionHandle *data, OM_uint32 status,
+                        const char *prefix)
+{
+  OM_uint32 maj_stat;
+  OM_uint32 min_stat;
+  OM_uint32 msg_ctx = 0;
+  gss_buffer_desc status_string;
+  char buf[1024];
+  size_t len;
+
+  snprintf(buf, sizeof(buf), "%s", prefix);
+  len = strlen(buf);
+  do {
+    maj_stat = gss_display_status(&min_stat,
+                                  status,
+                                  GSS_C_MECH_CODE,
+                                  GSS_C_NO_OID,
+                                  &msg_ctx,
+                                  &status_string);
+    if(sizeof(buf) > len + status_string.length + 1) {
+      snprintf(buf + len, sizeof(buf) - len,
+        ": %s", (char*)status_string.value);
+      len += status_string.length;
+    }
+    gss_release_buffer(&min_stat, &status_string);
+  } while(!GSS_ERROR(maj_stat) && msg_ctx != 0);
+
+  infof(data, "%s\n", buf);
+}
+
 #endif /* HAVE_GSSAPI */
 #endif /* HAVE_GSSAPI */
index ed33b51..35e4b24 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2011 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #  include <gssapi.h>
 #endif
 
 #  include <gssapi.h>
 #endif
 
+extern gss_OID_desc Curl_spnego_mech_oid;
+extern gss_OID_desc Curl_krb5_mech_oid;
 
 
-/* Common method for using gss api */
-
+/* Common method for using GSS-API */
 OM_uint32 Curl_gss_init_sec_context(
     struct SessionHandle *data,
 OM_uint32 Curl_gss_init_sec_context(
     struct SessionHandle *data,
-    OM_uint32 * minor_status,
-    gss_ctx_id_t * context,
+    OM_uint32 *minor_status,
+    gss_ctx_id_t *context,
     gss_name_t target_name,
     gss_name_t target_name,
+    gss_OID mech_type,
     gss_channel_bindings_t input_chan_bindings,
     gss_buffer_t input_token,
     gss_buffer_t output_token,
     gss_channel_bindings_t input_chan_bindings,
     gss_buffer_t input_token,
     gss_buffer_t output_token,
-    OM_uint32 * ret_flags);
+    const bool mutual_auth,
+    OM_uint32 *ret_flags);
+
+/* Helper to log a GSS-API error status */
+void Curl_gss_log_error(struct SessionHandle *data, OM_uint32 status,
+                        const char *prefix);
 
 #endif /* HAVE_GSSAPI */
 
 
 #endif /* HAVE_GSSAPI */
 
index b0be9cf..13c7903 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 
 #include "curl_setup.h"
 
 
 #include "curl_setup.h"
 
-/* NSS crypto library does not provide the MD4 hash algorithm, so that we have
- * a local implementation of it */
-#ifdef USE_NSS
+/* NSS and OS/400 crypto library do not provide the MD4 hash algorithm, so
+ * that we have a local implementation of it */
+#if defined(USE_NSS) || defined(USE_OS400CRYPTO)
+
 void Curl_md4it(unsigned char *output, const unsigned char *input, size_t len);
 void Curl_md4it(unsigned char *output, const unsigned char *input, size_t len);
-#endif /* USE_NSS */
+
+#endif /* defined(USE_NSS) || defined(USE_OS400CRYPTO) */
 
 #endif /* HEADER_CURL_MD4_H */
 
 #endif /* HEADER_CURL_MD4_H */
index 6c02239..6e65722 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -22,7 +22,8 @@
 
 #include "curl_setup.h"
 
 
 #include "curl_setup.h"
 
-#if defined(USE_WIN32_IDN) || (defined(USE_WINDOWS_SSPI) && defined(UNICODE))
+#if defined(USE_WIN32_IDN) || ((defined(USE_WINDOWS_SSPI) || \
+                                defined(CURL_LDAP_WIN)) && defined(UNICODE))
 
  /*
   * MultiByte conversions using Windows kernel32 library.
 
  /*
   * MultiByte conversions using Windows kernel32 library.
@@ -79,4 +80,4 @@ char *Curl_convert_wchar_to_UTF8(const wchar_t *str_w)
   return str_utf8;
 }
 
   return str_utf8;
 }
 
-#endif /* USE_WIN32_IDN || (USE_WINDOWS_SSPI && UNICODE) */
+#endif /* USE_WIN32_IDN || ((USE_WINDOWS_SSPI || CURL_LDAP_WIN) && UNICODE) */
index 7ee5eae..d024755 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -23,7 +23,8 @@
  ***************************************************************************/
 #include "curl_setup.h"
 
  ***************************************************************************/
 #include "curl_setup.h"
 
-#if defined(USE_WIN32_IDN) || (defined(USE_WINDOWS_SSPI) && defined(UNICODE))
+#if defined(USE_WIN32_IDN) || ((defined(USE_WINDOWS_SSPI) || \
+                                defined(CURL_LDAP_WIN)) && defined(UNICODE))
 
  /*
   * MultiByte conversions using Windows kernel32 library.
 
  /*
   * MultiByte conversions using Windows kernel32 library.
 wchar_t *Curl_convert_UTF8_to_wchar(const char *str_utf8);
 char *Curl_convert_wchar_to_UTF8(const wchar_t *str_w);
 
 wchar_t *Curl_convert_UTF8_to_wchar(const char *str_utf8);
 char *Curl_convert_wchar_to_UTF8(const wchar_t *str_w);
 
-#endif /* USE_WIN32_IDN || (USE_WINDOWS_SSPI && UNICODE) */
+#endif /* USE_WIN32_IDN || ((USE_WINDOWS_SSPI || CURL_LDAP_WIN) && UNICODE) */
 
 
 
 
-#if defined(USE_WIN32_IDN) || defined(USE_WINDOWS_SSPI)
+#if defined(USE_WIN32_IDN) || defined(USE_WINDOWS_SSPI) || \
+    defined(CURL_LDAP_WIN)
 
 /*
  * Macros Curl_convert_UTF8_to_tchar(), Curl_convert_tchar_to_UTF8()
 
 /*
  * Macros Curl_convert_UTF8_to_tchar(), Curl_convert_tchar_to_UTF8()
@@ -85,6 +87,6 @@ typedef union {
 
 #endif /* UNICODE */
 
 
 #endif /* UNICODE */
 
-#endif /* USE_WIN32_IDN || USE_WINDOWS_SSPI */
+#endif /* USE_WIN32_IDN || USE_WINDOWS_SSPI || CURL_LDAP_WIN */
 
 #endif /* HEADER_CURL_MULTIBYTE_H */
 
 #endif /* HEADER_CURL_MULTIBYTE_H */
index 4d126a5..c77f055 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -22,7 +22,7 @@
 
 #include "curl_setup.h"
 
 
 #include "curl_setup.h"
 
-#ifdef USE_NTLM
+#if !defined(CURL_DISABLE_HTTP) && defined(USE_NTLM)
 
 /*
  * NTLM details:
 
 /*
  * NTLM details:
@@ -39,6 +39,7 @@
 #include "curl_ntlm.h"
 #include "curl_ntlm_msgs.h"
 #include "curl_ntlm_wb.h"
 #include "curl_ntlm.h"
 #include "curl_ntlm_msgs.h"
 #include "curl_ntlm_wb.h"
+#include "curl_sasl.h"
 #include "url.h"
 #include "curl_memory.h"
 
 #include "url.h"
 #include "curl_memory.h"
 
@@ -46,7 +47,7 @@
 #include <curl/mprintf.h>
 
 #if defined(USE_NSS)
 #include <curl/mprintf.h>
 
 #if defined(USE_NSS)
-#include "nssg.h"
+#include "vtls/nssg.h"
 #elif defined(USE_WINDOWS_SSPI)
 #include "curl_sspi.h"
 #endif
 #elif defined(USE_WINDOWS_SSPI)
 #include "curl_sspi.h"
 #endif
@@ -69,18 +70,8 @@ CURLcode Curl_input_ntlm(struct connectdata *conn,
   struct ntlmdata *ntlm;
   CURLcode result = CURLE_OK;
 
   struct ntlmdata *ntlm;
   CURLcode result = CURLE_OK;
 
-#ifdef USE_NSS
-  result = Curl_nss_force_init(conn->data);
-  if(result)
-    return result;
-#endif
-
   ntlm = proxy ? &conn->proxyntlm : &conn->ntlm;
 
   ntlm = proxy ? &conn->proxyntlm : &conn->ntlm;
 
-  /* skip initial whitespaces */
-  while(*header && ISSPACE(*header))
-    header++;
-
   if(checkprefix("NTLM", header)) {
     header += strlen("NTLM");
 
   if(checkprefix("NTLM", header)) {
     header += strlen("NTLM");
 
@@ -88,8 +79,8 @@ CURLcode Curl_input_ntlm(struct connectdata *conn,
       header++;
 
     if(*header) {
       header++;
 
     if(*header) {
-      result = Curl_ntlm_decode_type2_message(conn->data, header, ntlm);
-      if(CURLE_OK != result)
+      result = Curl_sasl_decode_ntlm_type2_message(conn->data, header, ntlm);
+      if(result)
         return result;
 
       ntlm->state = NTLMSTATE_TYPE2; /* We got a type-2 message */
         return result;
 
       ntlm->state = NTLMSTATE_TYPE2; /* We got a type-2 message */
@@ -116,12 +107,11 @@ CURLcode Curl_input_ntlm(struct connectdata *conn,
 /*
  * This is for creating ntlm header output
  */
 /*
  * This is for creating ntlm header output
  */
-CURLcode Curl_output_ntlm(struct connectdata *conn,
-                          bool proxy)
+CURLcode Curl_output_ntlm(struct connectdata *conn, bool proxy)
 {
   char *base64 = NULL;
   size_t len = 0;
 {
   char *base64 = NULL;
   size_t len = 0;
-  CURLcode error;
+  CURLcode result;
 
   /* point to the address of the pointer that holds the string to send to the
      server, which is for a plain host or for a HTTP proxy */
 
   /* point to the address of the pointer that holds the string to send to the
      server, which is for a plain host or for a HTTP proxy */
@@ -179,10 +169,10 @@ CURLcode Curl_output_ntlm(struct connectdata *conn,
   case NTLMSTATE_TYPE1:
   default: /* for the weird cases we (re)start here */
     /* Create a type-1 message */
   case NTLMSTATE_TYPE1:
   default: /* for the weird cases we (re)start here */
     /* Create a type-1 message */
-    error = Curl_ntlm_create_type1_message(userp, passwdp, ntlm, &base64,
-                                           &len);
-    if(error)
-      return error;
+    result = Curl_sasl_create_ntlm_type1_message(userp, passwdp, ntlm, &base64,
+                                                 &len);
+    if(result)
+      return result;
 
     if(base64) {
       Curl_safefree(*allocuserpwd);
 
     if(base64) {
       Curl_safefree(*allocuserpwd);
@@ -192,16 +182,17 @@ CURLcode Curl_output_ntlm(struct connectdata *conn,
       free(base64);
       if(!*allocuserpwd)
         return CURLE_OUT_OF_MEMORY;
       free(base64);
       if(!*allocuserpwd)
         return CURLE_OUT_OF_MEMORY;
+
       DEBUG_OUT(fprintf(stderr, "**** Header %s\n ", *allocuserpwd));
     }
     break;
 
   case NTLMSTATE_TYPE2:
     /* We already received the type-2 message, create a type-3 message */
       DEBUG_OUT(fprintf(stderr, "**** Header %s\n ", *allocuserpwd));
     }
     break;
 
   case NTLMSTATE_TYPE2:
     /* We already received the type-2 message, create a type-3 message */
-    error = Curl_ntlm_create_type3_message(conn->data, userp, passwdp,
-                                           ntlm, &base64, &len);
-    if(error)
-      return error;
+    result = Curl_sasl_create_ntlm_type3_message(conn->data, userp, passwdp,
+                                                 ntlm, &base64, &len);
+    if(result)
+      return result;
 
     if(base64) {
       Curl_safefree(*allocuserpwd);
 
     if(base64) {
       Curl_safefree(*allocuserpwd);
@@ -211,6 +202,7 @@ CURLcode Curl_output_ntlm(struct connectdata *conn,
       free(base64);
       if(!*allocuserpwd)
         return CURLE_OUT_OF_MEMORY;
       free(base64);
       if(!*allocuserpwd)
         return CURLE_OUT_OF_MEMORY;
+
       DEBUG_OUT(fprintf(stderr, "**** %s\n ", *allocuserpwd));
 
       ntlm->state = NTLMSTATE_TYPE3; /* we send a type-3 */
       DEBUG_OUT(fprintf(stderr, "**** %s\n ", *allocuserpwd));
 
       ntlm->state = NTLMSTATE_TYPE3; /* we send a type-3 */
@@ -231,14 +223,12 @@ CURLcode Curl_output_ntlm(struct connectdata *conn,
 
 void Curl_http_ntlm_cleanup(struct connectdata *conn)
 {
 
 void Curl_http_ntlm_cleanup(struct connectdata *conn)
 {
-#ifdef USE_WINDOWS_SSPI
-  Curl_ntlm_sspi_cleanup(&conn->ntlm);
-  Curl_ntlm_sspi_cleanup(&conn->proxyntlm);
-#elif defined(NTLM_WB_ENABLED)
+  Curl_sasl_ntlm_cleanup(&conn->ntlm);
+  Curl_sasl_ntlm_cleanup(&conn->proxyntlm);
+
+#if defined(NTLM_WB_ENABLED)
   Curl_ntlm_wb_cleanup(conn);
   Curl_ntlm_wb_cleanup(conn);
-#else
-  (void)conn;
 #endif
 }
 
 #endif
 }
 
-#endif /* USE_NTLM */
+#endif /* !CURL_DISABLE_HTTP && USE_NTLM */
index 21a9e9e..947eac2 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -24,7 +24,7 @@
 
 #include "curl_setup.h"
 
 
 #include "curl_setup.h"
 
-#ifdef USE_NTLM
+#if !defined(CURL_DISABLE_HTTP) && defined(USE_NTLM)
 
 /* this is for ntlm header input */
 CURLcode Curl_input_ntlm(struct connectdata *conn, bool proxy,
 
 /* this is for ntlm header input */
 CURLcode Curl_input_ntlm(struct connectdata *conn, bool proxy,
@@ -35,10 +35,6 @@ CURLcode Curl_output_ntlm(struct connectdata *conn, bool proxy);
 
 void Curl_http_ntlm_cleanup(struct connectdata *conn);
 
 
 void Curl_http_ntlm_cleanup(struct connectdata *conn);
 
-#else
-
-#define Curl_http_ntlm_cleanup(a) Curl_nop_stmt
-
-#endif
+#endif /* !CURL_DISABLE_HTTP && USE_NTLM */
 
 #endif /* HEADER_CURL_NTLM_H */
 
 #endif /* HEADER_CURL_NTLM_H */
index 79aeb08..2aaea4d 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -22,7 +22,7 @@
 
 #include "curl_setup.h"
 
 
 #include "curl_setup.h"
 
-#if defined(USE_NTLM) && !defined(USE_WINDOWS_SSPI)
+#if defined(USE_NTLM)
 
 /*
  * NTLM details:
 
 /*
  * NTLM details:
@@ -31,6 +31,8 @@
  * http://www.innovation.ch/java/ntlm.html
  */
 
  * http://www.innovation.ch/java/ntlm.html
  */
 
+#if !defined(USE_WINDOWS_SSPI) || defined(USE_WIN32_CRYPTO)
+
 #ifdef USE_SSLEAY
 
 #  ifdef USE_OPENSSL
 #ifdef USE_SSLEAY
 
 #  ifdef USE_OPENSSL
 #  include <CommonCrypto/CommonCryptor.h>
 #  include <CommonCrypto/CommonDigest.h>
 
 #  include <CommonCrypto/CommonCryptor.h>
 #  include <CommonCrypto/CommonDigest.h>
 
+#elif defined(USE_OS400CRYPTO)
+#  include "cipher.mih"  /* mih/cipher */
+#  include "curl_md4.h"
+#elif defined(USE_WIN32_CRYPTO)
+#  include <wincrypt.h>
 #else
 #  error "Can't compile NTLM support without a crypto library."
 #endif
 #else
 #  error "Can't compile NTLM support without a crypto library."
 #endif
 #include "rawstr.h"
 #include "curl_memory.h"
 #include "curl_ntlm_core.h"
 #include "rawstr.h"
 #include "curl_memory.h"
 #include "curl_ntlm_core.h"
+#include "curl_md5.h"
+#include "curl_hmac.h"
+#include "warnless.h"
+#include "curl_endian.h"
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
 /* The last #include file should be: */
 #include "memdebug.h"
 
 /* The last #include file should be: */
 #include "memdebug.h"
 
-#ifdef USE_SSLEAY
+#define NTLM_HMAC_MD5_LEN     (16)
+#define NTLMv2_BLOB_SIGNATURE "\x01\x01\x00\x00"
+#define NTLMv2_BLOB_LEN       (44 -16 + ntlm->target_info_len + 4)
+
 /*
 /*
- * Turns a 56 bit key into the 64 bit, odd parity key and sets the key.  The
- * key schedule ks is also set.
- */
-static void setup_des_key(const unsigned char *key_56,
-                          DES_key_schedule DESKEYARG(ks))
+* Turns a 56-bit key into being 64-bit wide.
+*/
+static void extend_key_56_to_64(const unsigned char *key_56, char *key)
 {
 {
-  DES_cblock key;
-
   key[0] = key_56[0];
   key[1] = (unsigned char)(((key_56[0] << 7) & 0xFF) | (key_56[1] >> 1));
   key[2] = (unsigned char)(((key_56[1] << 6) & 0xFF) | (key_56[2] >> 2));
   key[0] = key_56[0];
   key[1] = (unsigned char)(((key_56[0] << 7) & 0xFF) | (key_56[1] >> 1));
   key[2] = (unsigned char)(((key_56[1] << 6) & 0xFF) | (key_56[2] >> 2));
@@ -121,29 +131,24 @@ static void setup_des_key(const unsigned char *key_56,
   key[5] = (unsigned char)(((key_56[4] << 3) & 0xFF) | (key_56[5] >> 5));
   key[6] = (unsigned char)(((key_56[5] << 2) & 0xFF) | (key_56[6] >> 6));
   key[7] = (unsigned char) ((key_56[6] << 1) & 0xFF);
   key[5] = (unsigned char)(((key_56[4] << 3) & 0xFF) | (key_56[5] >> 5));
   key[6] = (unsigned char)(((key_56[5] << 2) & 0xFF) | (key_56[6] >> 6));
   key[7] = (unsigned char) ((key_56[6] << 1) & 0xFF);
-
-  DES_set_odd_parity(&key);
-  DES_set_key(&key, ks);
 }
 
 }
 
-#else /* defined(USE_SSLEAY) */
-
+#ifdef USE_SSLEAY
 /*
 /*
- * Turns a 56 bit key into the 64 bit, odd parity key.  Used by GnuTLS and NSS.
+ * Turns a 56 bit key into the 64 bit, odd parity key and sets the key.  The
+ * key schedule ks is also set.
  */
  */
-static void extend_key_56_to_64(const unsigned char *key_56, char *key)
+static void setup_des_key(const unsigned char *key_56,
+                          DES_key_schedule DESKEYARG(ks))
 {
 {
-  key[0] = key_56[0];
-  key[1] = (unsigned char)(((key_56[0] << 7) & 0xFF) | (key_56[1] >> 1));
-  key[2] = (unsigned char)(((key_56[1] << 6) & 0xFF) | (key_56[2] >> 2));
-  key[3] = (unsigned char)(((key_56[2] << 5) & 0xFF) | (key_56[3] >> 3));
-  key[4] = (unsigned char)(((key_56[3] << 4) & 0xFF) | (key_56[4] >> 4));
-  key[5] = (unsigned char)(((key_56[4] << 3) & 0xFF) | (key_56[5] >> 5));
-  key[6] = (unsigned char)(((key_56[5] << 2) & 0xFF) | (key_56[6] >> 6));
-  key[7] = (unsigned char) ((key_56[6] << 1) & 0xFF);
+  DES_cblock key;
+
+  extend_key_56_to_64(key_56, (char *) key);
+  DES_set_odd_parity(&key);
+  DES_set_key(&key, ks);
 }
 
 }
 
-#if defined(USE_GNUTLS_NETTLE)
+#elif defined(USE_GNUTLS_NETTLE)
 
 static void setup_des_key(const unsigned char *key_56,
                           struct des_ctx *des)
 
 static void setup_des_key(const unsigned char *key_56,
                           struct des_ctx *des)
@@ -242,9 +247,66 @@ static bool encrypt_des(const unsigned char *in, unsigned char *out,
   return err == kCCSuccess;
 }
 
   return err == kCCSuccess;
 }
 
-#endif /* defined(USE_DARWINSSL) */
+#elif defined(USE_OS400CRYPTO)
 
 
-#endif /* defined(USE_SSLEAY) */
+static bool encrypt_des(const unsigned char *in, unsigned char *out,
+                        const unsigned char *key_56)
+{
+  char key[8];
+  _CIPHER_Control_T ctl;
+
+  ctl.Func_ID = ENCRYPT_ONLY;
+  ctl.Data_Len = 8;
+  extend_key_56_to_64(key_56, ctl.Crypto_Key);
+  _CIPHER((_SPCPTR *) &out, &ctl, (_SPCPTR *) &in);
+  return TRUE;
+}
+
+#elif defined(USE_WIN32_CRYPTO)
+
+static bool encrypt_des(const unsigned char *in, unsigned char *out,
+                        const unsigned char *key_56)
+{
+  HCRYPTPROV hprov;
+  HCRYPTKEY hkey;
+  struct {
+    BLOBHEADER hdr;
+    unsigned int len;
+    char key[8];
+  } blob;
+  DWORD len = 8;
+
+  /* Acquire the crypto provider */
+  if(!CryptAcquireContext(&hprov, NULL, NULL, PROV_RSA_FULL,
+                          CRYPT_VERIFYCONTEXT))
+    return FALSE;
+
+  memset(&blob, 0, sizeof(blob));
+  extend_key_56_to_64(key_56, blob.key);
+  blob.hdr.bType = PLAINTEXTKEYBLOB;
+  blob.hdr.bVersion = 2;
+  blob.hdr.aiKeyAlg = CALG_DES;
+  blob.len = sizeof(blob.key);
+
+  /* Import the key */
+  if(!CryptImportKey(hprov, (BYTE *) &blob, sizeof(blob), 0, 0, &hkey)) {
+    CryptReleaseContext(hprov, 0);
+
+    return FALSE;
+  }
+
+  memcpy(out, in, 8);
+
+  /* Perform the encryption */
+  CryptEncrypt(hkey, 0, FALSE, 0, out, &len, len);
+
+  CryptDestroyKey(hkey);
+  CryptReleaseContext(hprov, 0);
+
+  return TRUE;
+}
+
+#endif /* defined(USE_WIN32_CRYPTO) */
 
  /*
   * takes a 21 byte array and treats it as 3 56-bit DES keys. The
 
  /*
   * takes a 21 byte array and treats it as 3 56-bit DES keys. The
@@ -294,7 +356,8 @@ void Curl_ntlm_core_lm_resp(const unsigned char *keys,
   setup_des_key(keys + 14, &des);
   gcry_cipher_encrypt(des, results + 16, 8, plaintext, 8);
   gcry_cipher_close(des);
   setup_des_key(keys + 14, &des);
   gcry_cipher_encrypt(des, results + 16, 8, plaintext, 8);
   gcry_cipher_close(des);
-#elif defined(USE_NSS) || defined(USE_DARWINSSL)
+#elif defined(USE_NSS) || defined(USE_DARWINSSL) || defined(USE_OS400CRYPTO) \
+  || defined(USE_WIN32_CRYPTO)
   encrypt_des(plaintext, results, keys);
   encrypt_des(plaintext, results + 8, keys + 7);
   encrypt_des(plaintext, results + 16, keys + 14);
   encrypt_des(plaintext, results, keys);
   encrypt_des(plaintext, results + 8, keys + 7);
   encrypt_des(plaintext, results + 16, keys + 14);
@@ -304,11 +367,11 @@ void Curl_ntlm_core_lm_resp(const unsigned char *keys,
 /*
  * Set up lanmanager hashed password
  */
 /*
  * Set up lanmanager hashed password
  */
-void Curl_ntlm_core_mk_lm_hash(struct SessionHandle *data,
-                               const char *password,
-                               unsigned char *lmbuffer /* 21 bytes */)
+CURLcode Curl_ntlm_core_mk_lm_hash(struct SessionHandle *data,
+                                   const char *password,
+                                   unsigned char *lmbuffer /* 21 bytes */)
 {
 {
-  CURLcode res;
+  CURLcode result;
   unsigned char pw[14];
   static const unsigned char magic[] = {
     0x4B, 0x47, 0x53, 0x21, 0x40, 0x23, 0x24, 0x25 /* i.e. KGS!@#$% */
   unsigned char pw[14];
   static const unsigned char magic[] = {
     0x4B, 0x47, 0x53, 0x21, 0x40, 0x23, 0x24, 0x25 /* i.e. KGS!@#$% */
@@ -322,9 +385,9 @@ void Curl_ntlm_core_mk_lm_hash(struct SessionHandle *data,
    * The LanManager hashed password needs to be created using the
    * password in the network encoding not the host encoding.
    */
    * The LanManager hashed password needs to be created using the
    * password in the network encoding not the host encoding.
    */
-  res = Curl_convert_to_network(data, (char *)pw, 14);
-  if(res)
-    return;
+  result = Curl_convert_to_network(data, (char *)pw, 14);
+  if(result)
+    return result;
 
   {
     /* Create LanManager hashed password. */
 
   {
     /* Create LanManager hashed password. */
@@ -357,13 +420,16 @@ void Curl_ntlm_core_mk_lm_hash(struct SessionHandle *data,
     setup_des_key(pw + 7, &des);
     gcry_cipher_encrypt(des, lmbuffer + 8, 8, magic, 8);
     gcry_cipher_close(des);
     setup_des_key(pw + 7, &des);
     gcry_cipher_encrypt(des, lmbuffer + 8, 8, magic, 8);
     gcry_cipher_close(des);
-#elif defined(USE_NSS) || defined(USE_DARWINSSL)
+#elif defined(USE_NSS) || defined(USE_DARWINSSL) || defined(USE_OS400CRYPTO) \
+  || defined(USE_WIN32_CRYPTO)
     encrypt_des(magic, lmbuffer, pw);
     encrypt_des(magic, lmbuffer + 8, pw + 7);
 #endif
 
     memset(lmbuffer + 16, 0, 21 - 16);
   }
     encrypt_des(magic, lmbuffer, pw);
     encrypt_des(magic, lmbuffer + 8, pw + 7);
 #endif
 
     memset(lmbuffer + 16, 0, 21 - 16);
   }
+
+  return CURLE_OK;
 }
 
 #if USE_NTRESPONSES
 }
 
 #if USE_NTRESPONSES
@@ -377,6 +443,20 @@ static void ascii_to_unicode_le(unsigned char *dest, const char *src,
   }
 }
 
   }
 }
 
+#if USE_NTLM_V2 && !defined(USE_WINDOWS_SSPI)
+
+static void ascii_uppercase_to_unicode_le(unsigned char *dest,
+                                          const char *src, size_t srclen)
+{
+  size_t i;
+  for(i = 0; i < srclen; i++) {
+    dest[2 * i] = (unsigned char)(toupper(src[i]));
+    dest[2 * i + 1] = '\0';
+  }
+}
+
+#endif /* USE_NTLM_V2 && !USE_WINDOWS_SSPI */
+
 /*
  * Set up nt hashed passwords
  */
 /*
  * Set up nt hashed passwords
  */
@@ -418,10 +498,23 @@ CURLcode Curl_ntlm_core_mk_nt_hash(struct SessionHandle *data,
     gcry_md_write(MD4pw, pw, 2 * len);
     memcpy (ntbuffer, gcry_md_read (MD4pw, 0), MD4_DIGEST_LENGTH);
     gcry_md_close(MD4pw);
     gcry_md_write(MD4pw, pw, 2 * len);
     memcpy (ntbuffer, gcry_md_read (MD4pw, 0), MD4_DIGEST_LENGTH);
     gcry_md_close(MD4pw);
-#elif defined(USE_NSS)
+#elif defined(USE_NSS) || defined(USE_OS400CRYPTO)
     Curl_md4it(ntbuffer, pw, 2 * len);
 #elif defined(USE_DARWINSSL)
     (void)CC_MD4(pw, (CC_LONG)(2 * len), ntbuffer);
     Curl_md4it(ntbuffer, pw, 2 * len);
 #elif defined(USE_DARWINSSL)
     (void)CC_MD4(pw, (CC_LONG)(2 * len), ntbuffer);
+#elif defined(USE_WIN32_CRYPTO)
+    HCRYPTPROV hprov;
+    if(CryptAcquireContext(&hprov, NULL, NULL, PROV_RSA_FULL,
+                           CRYPT_VERIFYCONTEXT)) {
+      HCRYPTHASH hhash;
+      if(CryptCreateHash(hprov, CALG_MD4, 0, 0, &hhash)) {
+        DWORD length = 16;
+        CryptHashData(hhash, pw, (unsigned int)len * 2, 0);
+        CryptGetHashParam(hhash, HP_HASHVAL, ntbuffer, &length, 0);
+        CryptDestroyHash(hhash);
+      }
+      CryptReleaseContext(hprov, 0);
+    }
 #endif
 
     memset(ntbuffer + 16, 0, 21 - 16);
 #endif
 
     memset(ntbuffer + 16, 0, 21 - 16);
@@ -431,6 +524,193 @@ CURLcode Curl_ntlm_core_mk_nt_hash(struct SessionHandle *data,
 
   return CURLE_OK;
 }
 
   return CURLE_OK;
 }
+
+#if USE_NTLM_V2 && !defined(USE_WINDOWS_SSPI)
+
+/* This returns the HMAC MD5 digest */
+CURLcode Curl_hmac_md5(const unsigned char *key, unsigned int keylen,
+                       const unsigned char *data, unsigned int datalen,
+                       unsigned char *output)
+{
+  HMAC_context *ctxt = Curl_HMAC_init(Curl_HMAC_MD5, key, keylen);
+
+  if(!ctxt)
+    return CURLE_OUT_OF_MEMORY;
+
+  /* Update the digest with the given challenge */
+  Curl_HMAC_update(ctxt, data, datalen);
+
+  /* Finalise the digest */
+  Curl_HMAC_final(ctxt, output);
+
+  return CURLE_OK;
+}
+
+/* This creates the NTLMv2 hash by using NTLM hash as the key and Unicode
+ * (uppercase UserName + Domain) as the data
+ */
+CURLcode Curl_ntlm_core_mk_ntlmv2_hash(const char *user, size_t userlen,
+                                       const char *domain, size_t domlen,
+                                       unsigned char *ntlmhash,
+                                       unsigned char *ntlmv2hash)
+{
+  /* Unicode representation */
+  size_t identity_len = (userlen + domlen) * 2;
+  unsigned char *identity = malloc(identity_len);
+  CURLcode result = CURLE_OK;
+
+  if(!identity)
+    return CURLE_OUT_OF_MEMORY;
+
+  ascii_uppercase_to_unicode_le(identity, user, userlen);
+  ascii_to_unicode_le(identity + (userlen << 1), domain, domlen);
+
+  result = Curl_hmac_md5(ntlmhash, 16, identity, curlx_uztoui(identity_len),
+                         ntlmv2hash);
+
+  Curl_safefree(identity);
+
+  return result;
+}
+
+/*
+ * Curl_ntlm_core_mk_ntlmv2_resp()
+ *
+ * This creates the NTLMv2 response as set in the ntlm type-3 message.
+ *
+ * Parameters:
+ *
+ * ntlmv2hash       [in] - The ntlmv2 hash (16 bytes)
+ * challenge_client [in] - The client nonce (8 bytes)
+ * ntlm             [in] - The ntlm data struct being used to read TargetInfo
+                           and Server challenge received in the type-2 message
+ * ntresp          [out] - The address where a pointer to newly allocated
+ *                         memory holding the NTLMv2 response.
+ * ntresp_len      [out] - The length of the output message.
+ *
+ * Returns CURLE_OK on success.
+ */
+CURLcode Curl_ntlm_core_mk_ntlmv2_resp(unsigned char *ntlmv2hash,
+                                       unsigned char *challenge_client,
+                                       struct ntlmdata *ntlm,
+                                       unsigned char **ntresp,
+                                       unsigned int *ntresp_len)
+{
+/* NTLMv2 response structure :
+------------------------------------------------------------------------------
+0     HMAC MD5         16 bytes
+------BLOB--------------------------------------------------------------------
+16    Signature        0x01010000
+20    Reserved         long (0x00000000)
+24    Timestamp        LE, 64-bit signed value representing the number of
+                       tenths of a microsecond since January 1, 1601.
+32    Client Nonce     8 bytes
+40    Unknown          4 bytes
+44    Target Info      N bytes (from the type-2 message)
+44+N  Unknown          4 bytes
+------------------------------------------------------------------------------
+*/
+
+  unsigned int len = 0;
+  unsigned char *ptr = NULL;
+  unsigned char hmac_output[NTLM_HMAC_MD5_LEN];
+#if defined(HAVE_LONGLONG)
+  long long tw;
+#else
+  __int64 tw;
+#endif
+  CURLcode result = CURLE_OK;
+
+  /* Calculate the timestamp */
+#ifdef DEBUGBUILD
+  char *force_timestamp = getenv("CURL_FORCETIME");
+  if(force_timestamp)
+    tw = 11644473600ULL * 10000000ULL;
+  else
+#endif
+  tw = ((long long)time(NULL) + 11644473600ULL) * 10000000ULL;
+
+  /* Calculate the response len */
+  len = NTLM_HMAC_MD5_LEN + NTLMv2_BLOB_LEN;
+
+  /* Allocate the response */
+  ptr = malloc(len);
+  if(!ptr)
+    return CURLE_OUT_OF_MEMORY;
+
+  memset(ptr, 0, len);
+
+  /* Create the BLOB structure */
+  snprintf((char *)ptr + NTLM_HMAC_MD5_LEN, NTLMv2_BLOB_LEN,
+           NTLMv2_BLOB_SIGNATURE
+           "%c%c%c%c",  /* Reserved = 0 */
+           0, 0, 0, 0);
+
+  Curl_write64_le(tw, ptr + 24);
+  memcpy(ptr + 32, challenge_client, 8);
+  memcpy(ptr + 44, ntlm->target_info, ntlm->target_info_len);
+
+  /* Concatenate the Type 2 challenge with the BLOB and do HMAC MD5 */
+  memcpy(ptr + 8, &ntlm->nonce[0], 8);
+  result = Curl_hmac_md5(ntlmv2hash, NTLM_HMAC_MD5_LEN, ptr + 8,
+                         NTLMv2_BLOB_LEN + 8, hmac_output);
+  if(result) {
+    Curl_safefree(ptr);
+
+    return result;
+  }
+
+  /* Concatenate the HMAC MD5 output  with the BLOB */
+  memcpy(ptr, hmac_output, NTLM_HMAC_MD5_LEN);
+
+  /* Return the response */
+  *ntresp = ptr;
+  *ntresp_len = len;
+
+  return result;
+}
+
+/*
+ * Curl_ntlm_core_mk_lmv2_resp()
+ *
+ * This creates the LMv2 response as used in the ntlm type-3 message.
+ *
+ * Parameters:
+ *
+ * ntlmv2hash        [in] - The ntlmv2 hash (16 bytes)
+ * challenge_client  [in] - The client nonce (8 bytes)
+ * challenge_client  [in] - The server challenge (8 bytes)
+ * lmresp           [out] - The LMv2 response (24 bytes)
+ *
+ * Returns CURLE_OK on success.
+ */
+CURLcode  Curl_ntlm_core_mk_lmv2_resp(unsigned char *ntlmv2hash,
+                                      unsigned char *challenge_client,
+                                      unsigned char *challenge_server,
+                                      unsigned char *lmresp)
+{
+  unsigned char data[16];
+  unsigned char hmac_output[16];
+  CURLcode result = CURLE_OK;
+
+  memcpy(&data[0], challenge_server, 8);
+  memcpy(&data[8], challenge_client, 8);
+
+  result = Curl_hmac_md5(ntlmv2hash, 16, &data[0], 16, hmac_output);
+  if(result)
+    return result;
+
+  /* Concatenate the HMAC MD5 output  with the client nonce */
+  memcpy(lmresp, hmac_output, 16);
+  memcpy(lmresp+16, challenge_client, 8);
+
+  return result;
+}
+
+#endif /* USE_NTLM_V2 && !USE_WINDOWS_SSPI */
+
 #endif /* USE_NTRESPONSES */
 
 #endif /* USE_NTRESPONSES */
 
-#endif /* USE_NTLM && !USE_WINDOWS_SSPI */
+#endif /* !USE_WINDOWS_SSPI || USE_WIN32_CRYPTO */
+
+#endif /* USE_NTLM */
index 9aa126b..c168966 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -24,7 +24,9 @@
 
 #include "curl_setup.h"
 
 
 #include "curl_setup.h"
 
-#if defined(USE_NTLM) && !defined(USE_WINDOWS_SSPI)
+#if defined(USE_NTLM)
+
+#if !defined(USE_WINDOWS_SSPI) || defined(USE_WIN32_CRYPTO)
 
 #ifdef USE_SSLEAY
 #  if !defined(OPENSSL_VERSION_NUMBER) && \
 
 #ifdef USE_SSLEAY
 #  if !defined(OPENSSL_VERSION_NUMBER) && \
 #  ifdef OPENSSL_NO_MD4
 #    define USE_NTRESPONSES 0
 #    define USE_NTLM2SESSION 0
 #  ifdef OPENSSL_NO_MD4
 #    define USE_NTRESPONSES 0
 #    define USE_NTLM2SESSION 0
+#    define USE_NTLM_V2 0
 #  endif
 #endif
 
 #  endif
 #endif
 
-/*
- * Define USE_NTRESPONSES to 1 in order to make the type-3 message include
- * the NT response message. Define USE_NTLM2SESSION to 1 in order to make
- * the type-3 message include the NTLM2Session response message, requires
- * USE_NTRESPONSES defined to 1.
- */
-
+/* Define USE_NTRESPONSES to 1 in order to make the type-3 message include
+ * the NT response message. */
 #ifndef USE_NTRESPONSES
 #ifndef USE_NTRESPONSES
-#  define USE_NTRESPONSES 1
-#  define USE_NTLM2SESSION 1
+#define USE_NTRESPONSES 1
+#endif
+
+/* Define USE_NTLM2SESSION to 1 in order to make the type-3 message include the
+   NTLM2Session response message, requires USE_NTRESPONSES defined to 1 and a
+   Crypto engine that we have curl_ssl_md5sum() for. */
+#if !defined(USE_NTLM2SESSION) && USE_NTRESPONSES && !defined(USE_WIN32_CRYPTO)
+#define USE_NTLM2SESSION 1
+#endif
+
+/* Define USE_NTLM_V2 to 1 in order to allow the type-3 message to include the
+   LMv2 and NTLMv2 response messages, requires USE_NTRESPONSES defined to 1
+   and support for 64-bit integers. */
+#if !defined(USE_NTLM_V2) && USE_NTRESPONSES && (CURL_SIZEOF_CURL_OFF_T > 4)
+#define USE_NTLM_V2 1
 #endif
 
 void Curl_ntlm_core_lm_resp(const unsigned char *keys,
                             const unsigned char *plaintext,
                             unsigned char *results);
 
 #endif
 
 void Curl_ntlm_core_lm_resp(const unsigned char *keys,
                             const unsigned char *plaintext,
                             unsigned char *results);
 
-void Curl_ntlm_core_mk_lm_hash(struct SessionHandle *data,
-                               const char *password,
-                               unsigned char *lmbuffer /* 21 bytes */);
+CURLcode Curl_ntlm_core_mk_lm_hash(struct SessionHandle *data,
+                                   const char *password,
+                                   unsigned char *lmbuffer /* 21 bytes */);
 
 #if USE_NTRESPONSES
 CURLcode Curl_ntlm_core_mk_nt_hash(struct SessionHandle *data,
                                    const char *password,
                                    unsigned char *ntbuffer /* 21 bytes */);
 
 #if USE_NTRESPONSES
 CURLcode Curl_ntlm_core_mk_nt_hash(struct SessionHandle *data,
                                    const char *password,
                                    unsigned char *ntbuffer /* 21 bytes */);
-#endif
 
 
-#endif /* USE_NTLM && !USE_WINDOWS_SSPI */
+#if USE_NTLM_V2 && !defined(USE_WINDOWS_SSPI)
+
+CURLcode Curl_hmac_md5(const unsigned char *key, unsigned int keylen,
+                       const unsigned char *data, unsigned int datalen,
+                       unsigned char *output);
+
+CURLcode Curl_ntlm_core_mk_ntlmv2_hash(const char *user, size_t userlen,
+                                       const char *domain, size_t domlen,
+                                       unsigned char *ntlmhash,
+                                       unsigned char *ntlmv2hash);
+
+CURLcode  Curl_ntlm_core_mk_ntlmv2_resp(unsigned char *ntlmv2hash,
+                                        unsigned char *challenge_client,
+                                        struct ntlmdata *ntlm,
+                                        unsigned char **ntresp,
+                                        unsigned int *ntresp_len);
+
+CURLcode  Curl_ntlm_core_mk_lmv2_resp(unsigned char *ntlmv2hash,
+                                      unsigned char *challenge_client,
+                                      unsigned char *challenge_server,
+                                      unsigned char *lmresp);
+
+#endif /* USE_NTLM_V2 && !USE_WINDOWS_SSPI */
+
+#endif /* USE_NTRESPONSES */
+
+#endif /* !USE_WINDOWS_SSPI || USE_WIN32_CRYPTO */
+
+#endif /* USE_NTLM */
 
 #endif /* HEADER_CURL_NTLM_CORE_H */
 
 #endif /* HEADER_CURL_NTLM_CORE_H */
index 125ce6e..865954d 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -22,7 +22,7 @@
 
 #include "curl_setup.h"
 
 
 #include "curl_setup.h"
 
-#ifdef USE_NTLM
+#if defined(USE_NTLM) && !defined(USE_WINDOWS_SSPI)
 
 /*
  * NTLM details:
 
 /*
  * NTLM details:
 #include "warnless.h"
 #include "curl_memory.h"
 
 #include "warnless.h"
 #include "curl_memory.h"
 
-#ifdef USE_WINDOWS_SSPI
-#  include "curl_sspi.h"
-#endif
+#include "vtls/vtls.h"
 
 
-#include "sslgen.h"
+#ifdef USE_NSS
+#include "vtls/nssg.h" /* for Curl_nss_force_init() */
+#endif
 
 #define BUILDING_CURL_NTLM_MSGS_C
 #include "curl_ntlm_msgs.h"
 
 #define BUILDING_CURL_NTLM_MSGS_C
 #include "curl_ntlm_msgs.h"
+#include "curl_sasl.h"
+#include "curl_endian.h"
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
@@ -147,18 +149,52 @@ static void ntlm_print_hex(FILE *handle, const char *buf, size_t len)
 # define DEBUG_OUT(x) Curl_nop_stmt
 #endif
 
 # define DEBUG_OUT(x) Curl_nop_stmt
 #endif
 
-#ifndef USE_WINDOWS_SSPI
 /*
 /*
- * This function converts from the little endian format used in the
- * incoming package to whatever endian format we're using natively.
- * Argument is a pointer to a 4 byte buffer.
+ * ntlm_decode_type2_target()
+ *
+ * This is used to decode the "target info" in the ntlm type-2 message
+ * received.
+ *
+ * Parameters:
+ *
+ * data      [in]     - The session handle.
+ * buffer    [in]     - The decoded type-2 message.
+ * size      [in]     - The input buffer size, at least 32 bytes.
+ * ntlm      [in/out] - The ntlm data struct being used and modified.
+ *
+ * Returns CURLE_OK on success.
  */
  */
-static unsigned int readint_le(unsigned char *buf)
+static CURLcode ntlm_decode_type2_target(struct SessionHandle *data,
+                                         unsigned char *buffer,
+                                         size_t size,
+                                         struct ntlmdata *ntlm)
 {
 {
-  return ((unsigned int)buf[0]) | ((unsigned int)buf[1] << 8) |
-    ((unsigned int)buf[2] << 16) | ((unsigned int)buf[3] << 24);
+  unsigned short target_info_len = 0;
+  unsigned int target_info_offset = 0;
+
+  if(size >= 48) {
+    target_info_len = Curl_read16_le(&buffer[40]);
+    target_info_offset = Curl_read32_le(&buffer[44]);
+    if(target_info_len > 0) {
+      if(((target_info_offset + target_info_len) > size) ||
+         (target_info_offset < 48)) {
+        infof(data, "NTLM handshake failure (bad type-2 message). "
+                    "Target Info Offset Len is set incorrect by the peer\n");
+        return CURLE_BAD_CONTENT_ENCODING;
+      }
+
+      ntlm->target_info = malloc(target_info_len);
+      if(!ntlm->target_info)
+        return CURLE_OUT_OF_MEMORY;
+
+      memcpy(ntlm->target_info, &buffer[target_info_offset], target_info_len);
+    }
+  }
+
+  ntlm->target_info_len = target_info_len;
+
+  return CURLE_OK;
 }
 }
-#endif
 
 /*
   NTLM message structure notes:
 
 /*
   NTLM message structure notes:
@@ -177,29 +213,26 @@ static unsigned int readint_le(unsigned char *buf)
 */
 
 /*
 */
 
 /*
- * Curl_ntlm_decode_type2_message()
+ * Curl_sasl_decode_ntlm_type2_message()
  *
  *
- * This is used to decode a ntlm type-2 message received from a HTTP or SASL
- * based (such as SMTP, POP3 or IMAP) server. The message is first decoded
- * from a base64 string into a raw ntlm message and checked for validity
- * before the appropriate data for creating a type-3 message is written to
- * the given ntlm data structure.
+ * This is used to decode an already encoded NTLM type-2 message. The message
+ * is first decoded from a base64 string into a raw NTLM message and checked
+ * for validity before the appropriate data for creating a type-3 message is
+ * written to the given NTLM data structure.
  *
  * Parameters:
  *
  *
  * Parameters:
  *
- * data    [in]     - Pointer to session handle.
- * header  [in]     - Pointer to the input buffer.
- * ntlm    [in]     - Pointer to ntlm data struct being used and modified.
+ * data     [in]     - The session handle.
+ * type2msg [in]     - The base64 encoded type-2 message.
+ * ntlm     [in/out] - The ntlm data struct being used and modified.
  *
  * Returns CURLE_OK on success.
  */
  *
  * Returns CURLE_OK on success.
  */
-CURLcode Curl_ntlm_decode_type2_message(struct SessionHandle *data,
-                                        const char* header,
-                                        struct ntlmdata* ntlm)
+CURLcode Curl_sasl_decode_ntlm_type2_message(struct SessionHandle *data,
+                                             const char *type2msg,
+                                             struct ntlmdata *ntlm)
 {
 {
-#ifndef USE_WINDOWS_SSPI
   static const char type2_marker[] = { 0x02, 0x00, 0x00, 0x00 };
   static const char type2_marker[] = { 0x02, 0x00, 0x00, 0x00 };
-#endif
 
   /* NTLM type-2 message structure:
 
 
   /* NTLM type-2 message structure:
 
@@ -217,45 +250,54 @@ CURLcode Curl_ntlm_decode_type2_message(struct SessionHandle *data,
                                         (*) -> Optional
   */
 
                                         (*) -> Optional
   */
 
-  size_t size = 0;
-  unsigned char *buffer = NULL;
-  CURLcode error;
+  CURLcode result = CURLE_OK;
+  unsigned char *type2 = NULL;
+  size_t type2_len = 0;
 
 
-#if defined(CURL_DISABLE_VERBOSE_STRINGS) || defined(USE_WINDOWS_SSPI)
+#if defined(USE_NSS)
+  /* Make sure the crypto backend is initialized */
+  result = Curl_nss_force_init(data);
+  if(result)
+    return result;
+#elif defined(CURL_DISABLE_VERBOSE_STRINGS)
   (void)data;
 #endif
 
   (void)data;
 #endif
 
-  error = Curl_base64_decode(header, &buffer, &size);
-  if(error)
-    return error;
-
-  if(!buffer) {
-    infof(data, "NTLM handshake failure (unhandled condition)\n");
-    return CURLE_REMOTE_ACCESS_DENIED;
+  /* Decode the base-64 encoded type-2 message */
+  if(strlen(type2msg) && *type2msg != '=') {
+    result = Curl_base64_decode(type2msg, &type2, &type2_len);
+    if(result)
+      return result;
   }
 
   }
 
-#ifdef USE_WINDOWS_SSPI
-  ntlm->type_2 = malloc(size + 1);
-  if(ntlm->type_2 == NULL) {
-    free(buffer);
-    return CURLE_OUT_OF_MEMORY;
+  /* Ensure we have a valid type-2 message */
+  if(!type2) {
+    infof(data, "NTLM handshake failure (empty type-2 message)\n");
+    return CURLE_BAD_CONTENT_ENCODING;
   }
   }
-  ntlm->n_type_2 = curlx_uztoul(size);
-  memcpy(ntlm->type_2, buffer, size);
-#else
+
   ntlm->flags = 0;
 
   ntlm->flags = 0;
 
-  if((size < 32) ||
-     (memcmp(buffer, NTLMSSP_SIGNATURE, 8) != 0) ||
-     (memcmp(buffer + 8, type2_marker, sizeof(type2_marker)) != 0)) {
+  if((type2_len < 32) ||
+     (memcmp(type2, NTLMSSP_SIGNATURE, 8) != 0) ||
+     (memcmp(type2 + 8, type2_marker, sizeof(type2_marker)) != 0)) {
     /* This was not a good enough type-2 message */
     /* This was not a good enough type-2 message */
-    free(buffer);
+    free(type2);
     infof(data, "NTLM handshake failure (bad type-2 message)\n");
     infof(data, "NTLM handshake failure (bad type-2 message)\n");
-    return CURLE_REMOTE_ACCESS_DENIED;
+    return CURLE_BAD_CONTENT_ENCODING;
   }
 
   }
 
-  ntlm->flags = readint_le(&buffer[20]);
-  memcpy(ntlm->nonce, &buffer[24], 8);
+  ntlm->flags = Curl_read32_le(&type2[20]);
+  memcpy(ntlm->nonce, &type2[24], 8);
+
+  if(ntlm->flags & NTLMFLAG_NEGOTIATE_TARGET_INFO) {
+    result = ntlm_decode_type2_target(data, type2, type2_len, ntlm);
+    if(result) {
+      free(type2);
+      infof(data, "NTLM handshake failure (bad type-2 message)\n");
+      return result;
+    }
+  }
 
   DEBUG_OUT({
     fprintf(stderr, "**** TYPE2 header flags=0x%08.8lx ", ntlm->flags);
 
   DEBUG_OUT({
     fprintf(stderr, "**** TYPE2 header flags=0x%08.8lx ", ntlm->flags);
@@ -265,35 +307,15 @@ CURLcode Curl_ntlm_decode_type2_message(struct SessionHandle *data,
     fprintf(stderr, "\n****\n");
     fprintf(stderr, "**** Header %s\n ", header);
   });
     fprintf(stderr, "\n****\n");
     fprintf(stderr, "**** Header %s\n ", header);
   });
-#endif
-  free(buffer);
 
 
-  return CURLE_OK;
-}
+  free(type2);
 
 
-#ifdef USE_WINDOWS_SSPI
-void Curl_ntlm_sspi_cleanup(struct ntlmdata *ntlm)
-{
-  Curl_safefree(ntlm->type_2);
-  if(ntlm->has_handles) {
-    s_pSecFn->DeleteSecurityContext(&ntlm->c_handle);
-    s_pSecFn->FreeCredentialsHandle(&ntlm->handle);
-    ntlm->has_handles = 0;
-  }
-  if(ntlm->p_identity) {
-    Curl_safefree(ntlm->identity.User);
-    Curl_safefree(ntlm->identity.Password);
-    Curl_safefree(ntlm->identity.Domain);
-    ntlm->p_identity = NULL;
-  }
+  return result;
 }
 }
-#endif
 
 
-#ifndef USE_WINDOWS_SSPI
 /* copy the source to the destination and fill in zeroes in every
    other destination byte! */
 /* copy the source to the destination and fill in zeroes in every
    other destination byte! */
-static void unicodecpy(unsigned char *dest,
-                       const char *src, size_t length)
+static void unicodecpy(unsigned char *dest, const char *src, size_t length)
 {
   size_t i;
   for(i = 0; i < length; i++) {
 {
   size_t i;
   for(i = 0; i < length; i++) {
@@ -301,14 +323,12 @@ static void unicodecpy(unsigned char *dest,
     dest[2 * i + 1] = '\0';
   }
 }
     dest[2 * i + 1] = '\0';
   }
 }
-#endif
 
 /*
 
 /*
- * Curl_ntlm_create_type1_message()
+ * Curl_sasl_create_ntlm_type1_message()
  *
  * This is used to generate an already encoded NTLM type-1 message ready for
  *
  * This is used to generate an already encoded NTLM type-1 message ready for
- * sending to the recipient, be it a HTTP or SASL based (such as SMTP, POP3
- * or IMAP) server, using the appropriate compile time crypo API.
+ * sending to the recipient using the appropriate compile time crypto API.
  *
  * Parameters:
  *
  *
  * Parameters:
  *
@@ -321,11 +341,10 @@ static void unicodecpy(unsigned char *dest,
  *
  * Returns CURLE_OK on success.
  */
  *
  * Returns CURLE_OK on success.
  */
-CURLcode Curl_ntlm_create_type1_message(const char *userp,
-                                        const char *passwdp,
-                                        struct ntlmdata *ntlm,
-                                        char **outptr,
-                                        size_t *outlen)
+CURLcode Curl_sasl_create_ntlm_type1_message(const char *userp,
+                                             const char *passwdp,
+                                             struct ntlmdata *ntlm,
+                                             char **outptr, size_t *outlen)
 {
   /* NTLM type-1 message structure:
 
 {
   /* NTLM type-1 message structure:
 
@@ -341,135 +360,9 @@ CURLcode Curl_ntlm_create_type1_message(const char *userp,
                                      (*) -> Optional
   */
 
                                      (*) -> Optional
   */
 
-  unsigned char ntlmbuf[NTLM_BUFSIZE];
   size_t size;
 
   size_t size;
 
-#ifdef USE_WINDOWS_SSPI
-
-  SecBuffer buf;
-  SecBufferDesc desc;
-  SECURITY_STATUS status;
-  unsigned long attrs;
-  xcharp_u useranddomain;
-  xcharp_u user, dup_user;
-  xcharp_u domain, dup_domain;
-  xcharp_u passwd, dup_passwd;
-  size_t domlen = 0;
-  TimeStamp tsDummy; /* For Windows 9x compatibility of SSPI calls */
-
-  domain.const_tchar_ptr = TEXT("");
-
-  Curl_ntlm_sspi_cleanup(ntlm);
-
-  if(userp && *userp) {
-
-    /* null initialize ntlm identity's data to allow proper cleanup */
-    ntlm->p_identity = &ntlm->identity;
-    memset(ntlm->p_identity, 0, sizeof(*ntlm->p_identity));
-
-    useranddomain.tchar_ptr = Curl_convert_UTF8_to_tchar((char *)userp);
-    if(!useranddomain.tchar_ptr)
-      return CURLE_OUT_OF_MEMORY;
-
-    user.const_tchar_ptr = _tcschr(useranddomain.const_tchar_ptr, TEXT('\\'));
-    if(!user.const_tchar_ptr)
-      user.const_tchar_ptr = _tcschr(useranddomain.const_tchar_ptr, TEXT('/'));
-
-    if(user.tchar_ptr) {
-      domain.tchar_ptr = useranddomain.tchar_ptr;
-      domlen = user.tchar_ptr - useranddomain.tchar_ptr;
-      user.tchar_ptr++;
-    }
-    else {
-      user.tchar_ptr = useranddomain.tchar_ptr;
-      domain.const_tchar_ptr = TEXT("");
-      domlen = 0;
-    }
-
-    /* setup ntlm identity's user and length */
-    dup_user.tchar_ptr = _tcsdup(user.tchar_ptr);
-    if(!dup_user.tchar_ptr) {
-      Curl_unicodefree(useranddomain.tchar_ptr);
-      return CURLE_OUT_OF_MEMORY;
-    }
-    ntlm->identity.User = dup_user.tbyte_ptr;
-    ntlm->identity.UserLength = curlx_uztoul(_tcslen(dup_user.tchar_ptr));
-    dup_user.tchar_ptr = NULL;
-
-    /* setup ntlm identity's domain and length */
-    dup_domain.tchar_ptr = malloc(sizeof(TCHAR) * (domlen + 1));
-    if(!dup_domain.tchar_ptr) {
-      Curl_unicodefree(useranddomain.tchar_ptr);
-      return CURLE_OUT_OF_MEMORY;
-    }
-    _tcsncpy(dup_domain.tchar_ptr, domain.tchar_ptr, domlen);
-    *(dup_domain.tchar_ptr + domlen) = TEXT('\0');
-    ntlm->identity.Domain = dup_domain.tbyte_ptr;
-    ntlm->identity.DomainLength = curlx_uztoul(domlen);
-    dup_domain.tchar_ptr = NULL;
-
-    Curl_unicodefree(useranddomain.tchar_ptr);
-
-    /* setup ntlm identity's password and length */
-    passwd.tchar_ptr = Curl_convert_UTF8_to_tchar((char *)passwdp);
-    if(!passwd.tchar_ptr)
-      return CURLE_OUT_OF_MEMORY;
-    dup_passwd.tchar_ptr = _tcsdup(passwd.tchar_ptr);
-    if(!dup_passwd.tchar_ptr) {
-      Curl_unicodefree(passwd.tchar_ptr);
-      return CURLE_OUT_OF_MEMORY;
-    }
-    ntlm->identity.Password = dup_passwd.tbyte_ptr;
-    ntlm->identity.PasswordLength =
-      curlx_uztoul(_tcslen(dup_passwd.tchar_ptr));
-    dup_passwd.tchar_ptr = NULL;
-
-    Curl_unicodefree(passwd.tchar_ptr);
-
-    /* setup ntlm identity's flags */
-    ntlm->identity.Flags = SECFLAG_WINNT_AUTH_IDENTITY;
-  }
-  else
-    ntlm->p_identity = NULL;
-
-  status = s_pSecFn->AcquireCredentialsHandle(NULL,
-                                              (TCHAR *) TEXT("NTLM"),
-                                              SECPKG_CRED_OUTBOUND, NULL,
-                                              ntlm->p_identity, NULL, NULL,
-                                              &ntlm->handle, &tsDummy);
-  if(status != SEC_E_OK)
-    return CURLE_OUT_OF_MEMORY;
-
-  desc.ulVersion = SECBUFFER_VERSION;
-  desc.cBuffers  = 1;
-  desc.pBuffers  = &buf;
-  buf.cbBuffer   = NTLM_BUFSIZE;
-  buf.BufferType = SECBUFFER_TOKEN;
-  buf.pvBuffer   = ntlmbuf;
-
-  status = s_pSecFn->InitializeSecurityContext(&ntlm->handle, NULL,
-                                               (TCHAR *) TEXT(""),
-                                               ISC_REQ_CONFIDENTIALITY |
-                                               ISC_REQ_REPLAY_DETECT |
-                                               ISC_REQ_CONNECTION,
-                                               0, SECURITY_NETWORK_DREP,
-                                               NULL, 0,
-                                               &ntlm->c_handle, &desc,
-                                               &attrs, &tsDummy);
-
-  if(status == SEC_I_COMPLETE_AND_CONTINUE ||
-     status == SEC_I_CONTINUE_NEEDED)
-    s_pSecFn->CompleteAuthToken(&ntlm->c_handle, &desc);
-  else if(status != SEC_E_OK) {
-    s_pSecFn->FreeCredentialsHandle(&ntlm->handle);
-    return CURLE_RECV_ERROR;
-  }
-
-  ntlm->has_handles = 1;
-  size = buf.cbBuffer;
-
-#else
-
+  unsigned char ntlmbuf[NTLM_BUFSIZE];
   const char *host = "";              /* empty */
   const char *domain = "";            /* empty */
   size_t hostlen = 0;
   const char *host = "";              /* empty */
   const char *domain = "";            /* empty */
   size_t hostlen = 0;
@@ -479,9 +372,11 @@ CURLcode Curl_ntlm_create_type1_message(const char *userp,
                                          domain are empty */
   (void)userp;
   (void)passwdp;
                                          domain are empty */
   (void)userp;
   (void)passwdp;
-  (void)ntlm;
 
 
-#if USE_NTLM2SESSION
+  /* Clean up any former leftovers and initialise to defaults */
+  Curl_sasl_ntlm_cleanup(ntlm);
+
+#if USE_NTRESPONSES && USE_NTLM2SESSION
 #define NTLM2FLAG NTLMFLAG_NEGOTIATE_NTLM2_KEY
 #else
 #define NTLM2FLAG 0
 #define NTLM2FLAG NTLMFLAG_NEGOTIATE_NTLM2_KEY
 #else
 #define NTLM2FLAG 0
@@ -522,8 +417,6 @@ CURLcode Curl_ntlm_create_type1_message(const char *userp,
   /* Initial packet length */
   size = 32 + hostlen + domlen;
 
   /* Initial packet length */
   size = 32 + hostlen + domlen;
 
-#endif
-
   DEBUG_OUT({
     fprintf(stderr, "* TYPE1 header flags=0x%02.2x%02.2x%02.2x%02.2x "
             "0x%08.8x ",
   DEBUG_OUT({
     fprintf(stderr, "* TYPE1 header flags=0x%02.2x%02.2x%02.2x%02.2x "
             "0x%08.8x ",
@@ -551,11 +444,10 @@ CURLcode Curl_ntlm_create_type1_message(const char *userp,
 }
 
 /*
 }
 
 /*
- * Curl_ntlm_create_type3_message()
+ * Curl_sasl_create_ntlm_type3_message()
  *
  * This is used to generate an already encoded NTLM type-3 message ready for
  *
  * This is used to generate an already encoded NTLM type-3 message ready for
- * sending to the recipient, be it a HTTP or SASL based (such as SMTP, POP3
- * or IMAP) server, using the appropriate compile time crypo API.
+ * sending to the recipient using the appropriate compile time crypto API.
  *
  * Parameters:
  *
  *
  * Parameters:
  *
@@ -569,12 +461,12 @@ CURLcode Curl_ntlm_create_type1_message(const char *userp,
  *
  * Returns CURLE_OK on success.
  */
  *
  * Returns CURLE_OK on success.
  */
-CURLcode Curl_ntlm_create_type3_message(struct SessionHandle *data,
-                                        const char *userp,
-                                        const char *passwdp,
-                                        struct ntlmdata *ntlm,
-                                        char **outptr,
-                                        size_t *outlen)
+CURLcode Curl_sasl_create_ntlm_type3_message(struct SessionHandle *data,
+                                             const char *userp,
+                                             const char *passwdp,
+                                             struct ntlmdata *ntlm,
+                                             char **outptr, size_t *outlen)
+
 {
   /* NTLM type-3 message structure:
 
 {
   /* NTLM type-3 message structure:
 
@@ -594,58 +486,17 @@ CURLcode Curl_ntlm_create_type3_message(struct SessionHandle *data,
                                           (*) -> Optional
   */
 
                                           (*) -> Optional
   */
 
-  unsigned char ntlmbuf[NTLM_BUFSIZE];
+  CURLcode result = CURLE_OK;
   size_t size;
   size_t size;
-
-#ifdef USE_WINDOWS_SSPI
-  SecBuffer type_2;
-  SecBuffer type_3;
-  SecBufferDesc type_2_desc;
-  SecBufferDesc type_3_desc;
-  SECURITY_STATUS status;
-  unsigned long attrs;
-  TimeStamp tsDummy; /* For Windows 9x compatibility of SSPI calls */
-
-  (void)passwdp;
-  (void)userp;
-  (void)data;
-
-  type_2_desc.ulVersion = type_3_desc.ulVersion  = SECBUFFER_VERSION;
-  type_2_desc.cBuffers  = type_3_desc.cBuffers   = 1;
-  type_2_desc.pBuffers  = &type_2;
-  type_3_desc.pBuffers  = &type_3;
-
-  type_2.BufferType = SECBUFFER_TOKEN;
-  type_2.pvBuffer   = ntlm->type_2;
-  type_2.cbBuffer   = ntlm->n_type_2;
-  type_3.BufferType = SECBUFFER_TOKEN;
-  type_3.pvBuffer   = ntlmbuf;
-  type_3.cbBuffer   = NTLM_BUFSIZE;
-
-  status = s_pSecFn->InitializeSecurityContext(&ntlm->handle,
-                                               &ntlm->c_handle,
-                                               (TCHAR *) TEXT(""),
-                                               ISC_REQ_CONFIDENTIALITY |
-                                               ISC_REQ_REPLAY_DETECT |
-                                               ISC_REQ_CONNECTION,
-                                               0, SECURITY_NETWORK_DREP,
-                                               &type_2_desc,
-                                               0, &ntlm->c_handle,
-                                               &type_3_desc,
-                                               &attrs, &tsDummy);
-  if(status != SEC_E_OK)
-    return CURLE_RECV_ERROR;
-
-  size = type_3.cbBuffer;
-
-  Curl_ntlm_sspi_cleanup(ntlm);
-
-#else
+  unsigned char ntlmbuf[NTLM_BUFSIZE];
   int lmrespoff;
   unsigned char lmresp[24]; /* fixed-size */
 #if USE_NTRESPONSES
   int ntrespoff;
   int lmrespoff;
   unsigned char lmresp[24]; /* fixed-size */
 #if USE_NTRESPONSES
   int ntrespoff;
+  unsigned int ntresplen = 24;
   unsigned char ntresp[24]; /* fixed-size */
   unsigned char ntresp[24]; /* fixed-size */
+  unsigned char *ptr_ntresp = &ntresp[0];
+  unsigned char *ntlmv2resp = NULL;
 #endif
   bool unicode = (ntlm->flags & NTLMFLAG_NEGOTIATE_UNICODE) ? TRUE : FALSE;
   char host[HOSTNAME_MAX + 1] = "";
 #endif
   bool unicode = (ntlm->flags & NTLMFLAG_NEGOTIATE_UNICODE) ? TRUE : FALSE;
   char host[HOSTNAME_MAX + 1] = "";
@@ -657,7 +508,6 @@ CURLcode Curl_ntlm_create_type3_message(struct SessionHandle *data,
   size_t hostlen = 0;
   size_t userlen = 0;
   size_t domlen = 0;
   size_t hostlen = 0;
   size_t userlen = 0;
   size_t domlen = 0;
-  CURLcode res;
 
   user = strchr(userp, '\\');
   if(!user)
 
   user = strchr(userp, '\\');
   if(!user)
@@ -684,22 +534,54 @@ CURLcode Curl_ntlm_create_type3_message(struct SessionHandle *data,
     hostlen = strlen(host);
   }
 
     hostlen = strlen(host);
   }
 
-  if(unicode) {
-    domlen = domlen * 2;
-    userlen = userlen * 2;
-    hostlen = hostlen * 2;
+#if USE_NTRESPONSES && USE_NTLM_V2
+  if(ntlm->target_info_len) {
+    unsigned char ntbuffer[0x18];
+    unsigned int entropy[2];
+    unsigned char ntlmv2hash[0x18];
+
+    entropy[0] = Curl_rand(data);
+    entropy[1] = Curl_rand(data);
+
+    result = Curl_ntlm_core_mk_nt_hash(data, passwdp, ntbuffer);
+    if(result)
+      return result;
+
+    result = Curl_ntlm_core_mk_ntlmv2_hash(user, userlen, domain, domlen,
+                                           ntbuffer, ntlmv2hash);
+    if(result)
+      return result;
+
+    /* LMv2 response */
+    result = Curl_ntlm_core_mk_lmv2_resp(ntlmv2hash,
+                                         (unsigned char *)&entropy[0],
+                                         &ntlm->nonce[0], lmresp);
+    if(result)
+      return result;
+
+    /* NTLMv2 response */
+    result = Curl_ntlm_core_mk_ntlmv2_resp(ntlmv2hash,
+                                           (unsigned char *)&entropy[0],
+                                           ntlm, &ntlmv2resp, &ntresplen);
+    if(result)
+      return result;
+
+    ptr_ntresp = ntlmv2resp;
   }
   }
+  else
+#endif
 
 
-#if USE_NTLM2SESSION
+#if USE_NTRESPONSES && USE_NTLM2SESSION
   /* We don't support NTLM2 if we don't have USE_NTRESPONSES */
   if(ntlm->flags & NTLMFLAG_NEGOTIATE_NTLM2_KEY) {
     unsigned char ntbuffer[0x18];
     unsigned char tmp[0x18];
     unsigned char md5sum[MD5_DIGEST_LENGTH];
   /* We don't support NTLM2 if we don't have USE_NTRESPONSES */
   if(ntlm->flags & NTLMFLAG_NEGOTIATE_NTLM2_KEY) {
     unsigned char ntbuffer[0x18];
     unsigned char tmp[0x18];
     unsigned char md5sum[MD5_DIGEST_LENGTH];
-    unsigned char entropy[8];
+    unsigned int entropy[2];
 
     /* Need to create 8 bytes random data */
 
     /* Need to create 8 bytes random data */
-    Curl_ssl_random(data, entropy, sizeof(entropy));
+    entropy[0] = Curl_rand(data);
+    entropy[1] = Curl_rand(data);
 
     /* 8 bytes random data as challenge in lmresp */
     memcpy(lmresp, entropy, 8);
 
     /* 8 bytes random data as challenge in lmresp */
     memcpy(lmresp, entropy, 8);
@@ -715,12 +597,14 @@ CURLcode Curl_ntlm_create_type3_message(struct SessionHandle *data,
 
     /* We shall only use the first 8 bytes of md5sum, but the des
        code in Curl_ntlm_core_lm_resp only encrypt the first 8 bytes */
 
     /* We shall only use the first 8 bytes of md5sum, but the des
        code in Curl_ntlm_core_lm_resp only encrypt the first 8 bytes */
-    if(CURLE_OUT_OF_MEMORY ==
-       Curl_ntlm_core_mk_nt_hash(data, passwdp, ntbuffer))
-      return CURLE_OUT_OF_MEMORY;
+    result = Curl_ntlm_core_mk_nt_hash(data, passwdp, ntbuffer);
+    if(result)
+      return result;
+
     Curl_ntlm_core_lm_resp(ntbuffer, md5sum, ntresp);
 
     /* End of NTLM2 Session code */
     Curl_ntlm_core_lm_resp(ntbuffer, md5sum, ntresp);
 
     /* End of NTLM2 Session code */
+
   }
   else
 #endif
   }
   else
 #endif
@@ -732,23 +616,34 @@ CURLcode Curl_ntlm_create_type3_message(struct SessionHandle *data,
     unsigned char lmbuffer[0x18];
 
 #if USE_NTRESPONSES
     unsigned char lmbuffer[0x18];
 
 #if USE_NTRESPONSES
-    if(CURLE_OUT_OF_MEMORY ==
-       Curl_ntlm_core_mk_nt_hash(data, passwdp, ntbuffer))
-      return CURLE_OUT_OF_MEMORY;
+    result = Curl_ntlm_core_mk_nt_hash(data, passwdp, ntbuffer);
+    if(result)
+      return result;
+
     Curl_ntlm_core_lm_resp(ntbuffer, &ntlm->nonce[0], ntresp);
 #endif
 
     Curl_ntlm_core_lm_resp(ntbuffer, &ntlm->nonce[0], ntresp);
 #endif
 
-    Curl_ntlm_core_mk_lm_hash(data, passwdp, lmbuffer);
+    result = Curl_ntlm_core_mk_lm_hash(data, passwdp, lmbuffer);
+    if(result)
+      return result;
+
     Curl_ntlm_core_lm_resp(lmbuffer, &ntlm->nonce[0], lmresp);
     Curl_ntlm_core_lm_resp(lmbuffer, &ntlm->nonce[0], lmresp);
+
     /* A safer but less compatible alternative is:
      *   Curl_ntlm_core_lm_resp(ntbuffer, &ntlm->nonce[0], lmresp);
      * See http://davenport.sourceforge.net/ntlm.html#ntlmVersion2 */
   }
 
     /* A safer but less compatible alternative is:
      *   Curl_ntlm_core_lm_resp(ntbuffer, &ntlm->nonce[0], lmresp);
      * See http://davenport.sourceforge.net/ntlm.html#ntlmVersion2 */
   }
 
+  if(unicode) {
+    domlen = domlen * 2;
+    userlen = userlen * 2;
+    hostlen = hostlen * 2;
+  }
+
   lmrespoff = 64; /* size of the message header */
 #if USE_NTRESPONSES
   ntrespoff = lmrespoff + 0x18;
   lmrespoff = 64; /* size of the message header */
 #if USE_NTRESPONSES
   ntrespoff = lmrespoff + 0x18;
-  domoff = ntrespoff + 0x18;
+  domoff = ntrespoff + ntresplen;
 #else
   domoff = lmrespoff + 0x18;
 #endif
 #else
   domoff = lmrespoff + 0x18;
 #endif
@@ -807,8 +702,8 @@ CURLcode Curl_ntlm_create_type3_message(struct SessionHandle *data,
                   0x0, 0x0,
 
 #if USE_NTRESPONSES
                   0x0, 0x0,
 
 #if USE_NTRESPONSES
-                  SHORTPAIR(0x18),  /* NT-response length, twice */
-                  SHORTPAIR(0x18),
+                  SHORTPAIR(ntresplen),  /* NT-response length, twice */
+                  SHORTPAIR(ntresplen),
                   SHORTPAIR(ntrespoff),
                   0x0, 0x0,
 #else
                   SHORTPAIR(ntrespoff),
                   0x0, 0x0,
 #else
@@ -854,17 +749,19 @@ CURLcode Curl_ntlm_create_type3_message(struct SessionHandle *data,
   });
 
 #if USE_NTRESPONSES
   });
 
 #if USE_NTRESPONSES
-  if(size < (NTLM_BUFSIZE - 0x18)) {
+  if(size < (NTLM_BUFSIZE - ntresplen)) {
     DEBUGASSERT(size == (size_t)ntrespoff);
     DEBUGASSERT(size == (size_t)ntrespoff);
-    memcpy(&ntlmbuf[size], ntresp, 0x18);
-    size += 0x18;
+    memcpy(&ntlmbuf[size], ptr_ntresp, ntresplen);
+    size += ntresplen;
   }
 
   DEBUG_OUT({
     fprintf(stderr, "\n   ntresp=");
   }
 
   DEBUG_OUT({
     fprintf(stderr, "\n   ntresp=");
-    ntlm_print_hex(stderr, (char *)&ntlmbuf[ntrespoff], 0x18);
+    ntlm_print_hex(stderr, (char *)&ntlmbuf[ntrespoff], ntresplen);
   });
 
   });
 
+  Curl_safefree(ntlmv2resp);/* Free the dynamic buffer allocated for NTLMv2 */
+
 #endif
 
   DEBUG_OUT({
 #endif
 
   DEBUG_OUT({
@@ -906,15 +803,17 @@ CURLcode Curl_ntlm_create_type3_message(struct SessionHandle *data,
   size += hostlen;
 
   /* Convert domain, user, and host to ASCII but leave the rest as-is */
   size += hostlen;
 
   /* Convert domain, user, and host to ASCII but leave the rest as-is */
-  res = Curl_convert_to_network(data, (char *)&ntlmbuf[domoff],
-                                size - domoff);
-  if(res)
+  result = Curl_convert_to_network(data, (char *)&ntlmbuf[domoff],
+                                   size - domoff);
+  if(result)
     return CURLE_CONV_FAILED;
 
     return CURLE_CONV_FAILED;
 
-#endif
-
   /* Return with binary blob encoded into base64 */
   /* Return with binary blob encoded into base64 */
-  return Curl_base64_encode(NULL, (char *)ntlmbuf, size, outptr, outlen);
+  result = Curl_base64_encode(NULL, (char *)ntlmbuf, size, outptr, outlen);
+
+  Curl_sasl_ntlm_cleanup(ntlm);
+
+  return result;
 }
 
 }
 
-#endif /* USE_NTLM */
+#endif /* USE_NTLM && !USE_WINDOWS_SSPI */
index e7d185d..2a71431 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 
 #ifdef USE_NTLM
 
 
 #ifdef USE_NTLM
 
-/* This is to generate a base64 encoded NTLM type-1 message */
-CURLcode Curl_ntlm_create_type1_message(const char *userp,
-                                        const char *passwdp,
-                                        struct ntlmdata *ntlm,
-                                        char **outptr,
-                                        size_t *outlen);
-
-/* This is to generate a base64 encoded NTLM type-3 message */
-CURLcode Curl_ntlm_create_type3_message(struct SessionHandle *data,
-                                        const char *userp,
-                                        const char *passwdp,
-                                        struct ntlmdata *ntlm,
-                                        char **outptr,
-                                        size_t *outlen);
-
-/* This is to decode a NTLM type-2 message */
-CURLcode Curl_ntlm_decode_type2_message(struct SessionHandle *data,
-                                        const char* header,
-                                        struct ntlmdata* ntlm);
-
-/* This is to clean up the ntlm data structure */
-#ifdef USE_WINDOWS_SSPI
-void Curl_ntlm_sspi_cleanup(struct ntlmdata *ntlm);
-#else
-#define Curl_ntlm_sspi_cleanup(x)
-#endif
-
 /* NTLM buffer fixed size, large enough for long user + host + domain */
 #define NTLM_BUFSIZE 1024
 
 /* NTLM buffer fixed size, large enough for long user + host + domain */
 #define NTLM_BUFSIZE 1024
 
@@ -163,14 +136,6 @@ void Curl_ntlm_sspi_cleanup(struct ntlmdata *ntlm);
 #define NTLMFLAG_NEGOTIATE_56                    (1<<31)
 /* Indicates that 56-bit encryption is supported. */
 
 #define NTLMFLAG_NEGOTIATE_56                    (1<<31)
 /* Indicates that 56-bit encryption is supported. */
 
-#ifdef UNICODE
-#  define SECFLAG_WINNT_AUTH_IDENTITY \
-     (unsigned long)SEC_WINNT_AUTH_IDENTITY_UNICODE
-#else
-#  define SECFLAG_WINNT_AUTH_IDENTITY \
-     (unsigned long)SEC_WINNT_AUTH_IDENTITY_ANSI
-#endif
-
 #endif /* BUILDING_CURL_NTLM_MSGS_C */
 
 #endif /* USE_NTLM */
 #endif /* BUILDING_CURL_NTLM_MSGS_C */
 
 #endif /* USE_NTLM */
index b1c20e1..5e2d79c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -22,7 +22,8 @@
 
 #include "curl_setup.h"
 
 
 #include "curl_setup.h"
 
-#if defined(USE_NTLM) && defined(NTLM_WB_ENABLED)
+#if !defined(CURL_DISABLE_HTTP) && defined(USE_NTLM) && \
+    defined(NTLM_WB_ENABLED)
 
 /*
  * NTLM details:
 
 /*
  * NTLM details:
 #ifdef HAVE_SIGNAL_H
 #include <signal.h>
 #endif
 #ifdef HAVE_SIGNAL_H
 #include <signal.h>
 #endif
+#ifdef HAVE_PWD_H
+#include <pwd.h>
+#endif
 
 #include "urldata.h"
 #include "sendf.h"
 #include "select.h"
 
 #include "urldata.h"
 #include "sendf.h"
 #include "select.h"
+#include "curl_ntlm_msgs.h"
 #include "curl_ntlm_wb.h"
 #include "url.h"
 #include "strerror.h"
 #include "curl_ntlm_wb.h"
 #include "url.h"
 #include "strerror.h"
@@ -116,6 +121,10 @@ static CURLcode ntlm_wb_init(struct connectdata *conn, const char *userp)
   char *slash, *domain = NULL;
   const char *ntlm_auth = NULL;
   char *ntlm_auth_alloc = NULL;
   char *slash, *domain = NULL;
   const char *ntlm_auth = NULL;
   char *ntlm_auth_alloc = NULL;
+#if defined(HAVE_GETPWUID_R) && defined(HAVE_GETEUID)
+  struct passwd pw, *pw_res;
+  char pwbuf[1024];
+#endif
   int error;
 
   /* Return if communication with ntlm_auth already set up */
   int error;
 
   /* Return if communication with ntlm_auth already set up */
@@ -124,6 +133,30 @@ static CURLcode ntlm_wb_init(struct connectdata *conn, const char *userp)
     return CURLE_OK;
 
   username = userp;
     return CURLE_OK;
 
   username = userp;
+  /* The real ntlm_auth really doesn't like being invoked with an
+     empty username. It won't make inferences for itself, and expects
+     the client to do so (mostly because it's really designed for
+     servers like squid to use for auth, and client support is an
+     afterthought for it). So try hard to provide a suitable username
+     if we don't already have one. But if we can't, provide the
+     empty one anyway. Perhaps they have an implementation of the
+     ntlm_auth helper which *doesn't* need it so we might as well try */
+  if(!username || !username[0]) {
+    username = getenv("NTLMUSER");
+    if(!username || !username[0])
+      username = getenv("LOGNAME");
+    if(!username || !username[0])
+      username = getenv("USER");
+#if defined(HAVE_GETPWUID_R) && defined(HAVE_GETEUID)
+    if((!username || !username[0]) &&
+       !getpwuid_r(geteuid(), &pw, pwbuf, sizeof(pwbuf), &pw_res) &&
+       pw_res) {
+      username = pw.pw_name;
+    }
+#endif
+    if(!username || !username[0])
+      username = userp;
+  }
   slash = strpbrk(username, "\\/");
   if(slash) {
     if((domain = strdup(username)) == NULL)
   slash = strpbrk(username, "\\/");
   if(slash) {
     if((domain = strdup(username)) == NULL)
@@ -226,10 +259,11 @@ done:
 static CURLcode ntlm_wb_response(struct connectdata *conn,
                                  const char *input, curlntlm state)
 {
 static CURLcode ntlm_wb_response(struct connectdata *conn,
                                  const char *input, curlntlm state)
 {
-  ssize_t size;
-  char buf[200]; /* enough, type 1, 3 message length is less then 200 */
-  char *tmpbuf = buf;
-  size_t len_in = strlen(input), len_out = sizeof(buf);
+  char *buf = malloc(NTLM_BUFSIZE);
+  size_t len_in = strlen(input), len_out = 0;
+
+  if(!buf)
+    return CURLE_OUT_OF_MEMORY;
 
   while(len_in > 0) {
     ssize_t written = swrite(conn->ntlm_auth_hlpr_socket, input, len_in);
 
   while(len_in > 0) {
     ssize_t written = swrite(conn->ntlm_auth_hlpr_socket, input, len_in);
@@ -244,8 +278,11 @@ static CURLcode ntlm_wb_response(struct connectdata *conn,
     len_in -= written;
   }
   /* Read one line */
     len_in -= written;
   }
   /* Read one line */
-  while(len_out > 0) {
-    size = sread(conn->ntlm_auth_hlpr_socket, tmpbuf, len_out);
+  while(1) {
+    ssize_t size;
+    char *newbuf;
+
+    size = sread(conn->ntlm_auth_hlpr_socket, buf + len_out, NTLM_BUFSIZE);
     if(size == -1) {
       if(errno == EINTR)
         continue;
     if(size == -1) {
       if(errno == EINTR)
         continue;
@@ -253,22 +290,27 @@ static CURLcode ntlm_wb_response(struct connectdata *conn,
     }
     else if(size == 0)
       goto done;
     }
     else if(size == 0)
       goto done;
-    else if(tmpbuf[size - 1] == '\n') {
-      tmpbuf[size - 1] = '\0';
-      goto wrfinish;
+
+    len_out += size;
+    if(buf[len_out - 1] == '\n') {
+      buf[len_out - 1] = '\0';
+      break;
     }
     }
-    tmpbuf += size;
-    len_out -= size;
+    newbuf = realloc(buf, len_out + NTLM_BUFSIZE);
+    if(!newbuf) {
+      free(buf);
+      return CURLE_OUT_OF_MEMORY;
+    }
+    buf = newbuf;
   }
   }
-  goto done;
-wrfinish:
+
   /* Samba/winbind installed but not configured */
   if(state == NTLMSTATE_TYPE1 &&
   /* Samba/winbind installed but not configured */
   if(state == NTLMSTATE_TYPE1 &&
-     size == 3 &&
+     len_out == 3 &&
      buf[0] == 'P' && buf[1] == 'W')
     return CURLE_REMOTE_ACCESS_DENIED;
   /* invalid response */
      buf[0] == 'P' && buf[1] == 'W')
     return CURLE_REMOTE_ACCESS_DENIED;
   /* invalid response */
-  if(size < 4)
+  if(len_out < 4)
     goto done;
   if(state == NTLMSTATE_TYPE1 &&
      (buf[0]!='Y' || buf[1]!='R' || buf[2]!=' '))
     goto done;
   if(state == NTLMSTATE_TYPE1 &&
      (buf[0]!='Y' || buf[1]!='R' || buf[2]!=' '))
@@ -278,9 +320,11 @@ wrfinish:
      (buf[0]!='A' || buf[1]!='F' || buf[2]!=' '))
     goto done;
 
      (buf[0]!='A' || buf[1]!='F' || buf[2]!=' '))
     goto done;
 
-  conn->response_header = aprintf("NTLM %.*s", size - 4, buf + 3);
+  conn->response_header = aprintf("NTLM %.*s", len_out - 4, buf + 3);
+  free(buf);
   return CURLE_OK;
 done:
   return CURLE_OK;
 done:
+  free(buf);
   return CURLE_REMOTE_ACCESS_DENIED;
 }
 
   return CURLE_REMOTE_ACCESS_DENIED;
 }
 
@@ -356,7 +400,7 @@ CURLcode Curl_output_ntlm_wb(struct connectdata *conn,
     conn->response_header = NULL;
     break;
   case NTLMSTATE_TYPE2:
     conn->response_header = NULL;
     break;
   case NTLMSTATE_TYPE2:
-    input = aprintf("TT %s", conn->challenge_header);
+    input = aprintf("TT %s\n", conn->challenge_header);
     if(!input)
       return CURLE_OUT_OF_MEMORY;
     res = ntlm_wb_response(conn, input, ntlm->state);
     if(!input)
       return CURLE_OUT_OF_MEMORY;
     res = ntlm_wb_response(conn, input, ntlm->state);
@@ -388,4 +432,4 @@ CURLcode Curl_output_ntlm_wb(struct connectdata *conn,
   return CURLE_OK;
 }
 
   return CURLE_OK;
 }
 
-#endif /* USE_NTLM && NTLM_WB_ENABLED */
+#endif /* !CURL_DISABLE_HTTP && USE_NTLM && NTLM_WB_ENABLED */
index db6bc16..828bb57 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -24,7 +24,8 @@
 
 #include "curl_setup.h"
 
 
 #include "curl_setup.h"
 
-#if defined(USE_NTLM) && defined(NTLM_WB_ENABLED)
+#if !defined(CURL_DISABLE_HTTP) && defined(USE_NTLM) && \
+    defined(NTLM_WB_ENABLED)
 
 /* this is for creating ntlm header output by delegating challenge/response
    to Samba's winbind daemon helper ntlm_auth */
 
 /* this is for creating ntlm header output by delegating challenge/response
    to Samba's winbind daemon helper ntlm_auth */
@@ -32,6 +33,6 @@ CURLcode Curl_output_ntlm_wb(struct connectdata *conn, bool proxy);
 
 void Curl_ntlm_wb_cleanup(struct connectdata *conn);
 
 
 void Curl_ntlm_wb_cleanup(struct connectdata *conn);
 
-#endif /* USE_NTLM && NTLM_WB_ENABLED */
+#endif /* !CURL_DISABLE_HTTP && USE_NTLM && NTLM_WB_ENABLED */
 
 #endif /* HEADER_CURL_NTLM_WB_H */
 
 #endif /* HEADER_CURL_NTLM_WB_H */
index 45da35c..d1d79c3 100644 (file)
@@ -5,6 +5,7 @@
  *                | (__| |_| |  _ <| |___
  *                 \___|\___/|_| \_\_____|
  *
  *                | (__| |_| |  _ <| |___
  *                 \___|\___/|_| \_\_____|
  *
+ * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  * Copyright (C) 2010, Howard Chu, <hyc@highlandsun.com>
  *
  * This software is licensed as described in the file COPYING, which
  * Copyright (C) 2010, Howard Chu, <hyc@highlandsun.com>
  *
  * This software is licensed as described in the file COPYING, which
@@ -48,7 +49,7 @@
 
 #define DEF_BUFTIME    (2*60*60*1000)    /* 2 hours */
 
 
 #define DEF_BUFTIME    (2*60*60*1000)    /* 2 hours */
 
-static CURLcode rtmp_setup(struct connectdata *conn);
+static CURLcode rtmp_setup_connection(struct connectdata *conn);
 static CURLcode rtmp_do(struct connectdata *conn, bool *done);
 static CURLcode rtmp_done(struct connectdata *conn, CURLcode, bool premature);
 static CURLcode rtmp_connect(struct connectdata *conn, bool *done);
 static CURLcode rtmp_do(struct connectdata *conn, bool *done);
 static CURLcode rtmp_done(struct connectdata *conn, CURLcode, bool premature);
 static CURLcode rtmp_connect(struct connectdata *conn, bool *done);
@@ -63,7 +64,7 @@ static Curl_send rtmp_send;
 
 const struct Curl_handler Curl_handler_rtmp = {
   "RTMP",                               /* scheme */
 
 const struct Curl_handler Curl_handler_rtmp = {
   "RTMP",                               /* scheme */
-  rtmp_setup,                           /* setup_connection */
+  rtmp_setup_connection,                /* setup_connection */
   rtmp_do,                              /* do_it */
   rtmp_done,                            /* done */
   ZERO_NULL,                            /* do_more */
   rtmp_do,                              /* do_it */
   rtmp_done,                            /* done */
   ZERO_NULL,                            /* do_more */
@@ -83,7 +84,7 @@ const struct Curl_handler Curl_handler_rtmp = {
 
 const struct Curl_handler Curl_handler_rtmpt = {
   "RTMPT",                              /* scheme */
 
 const struct Curl_handler Curl_handler_rtmpt = {
   "RTMPT",                              /* scheme */
-  rtmp_setup,                           /* setup_connection */
+  rtmp_setup_connection,                /* setup_connection */
   rtmp_do,                              /* do_it */
   rtmp_done,                            /* done */
   ZERO_NULL,                            /* do_more */
   rtmp_do,                              /* do_it */
   rtmp_done,                            /* done */
   ZERO_NULL,                            /* do_more */
@@ -103,7 +104,7 @@ const struct Curl_handler Curl_handler_rtmpt = {
 
 const struct Curl_handler Curl_handler_rtmpe = {
   "RTMPE",                              /* scheme */
 
 const struct Curl_handler Curl_handler_rtmpe = {
   "RTMPE",                              /* scheme */
-  rtmp_setup,                           /* setup_connection */
+  rtmp_setup_connection,                /* setup_connection */
   rtmp_do,                              /* do_it */
   rtmp_done,                            /* done */
   ZERO_NULL,                            /* do_more */
   rtmp_do,                              /* do_it */
   rtmp_done,                            /* done */
   ZERO_NULL,                            /* do_more */
@@ -123,7 +124,7 @@ const struct Curl_handler Curl_handler_rtmpe = {
 
 const struct Curl_handler Curl_handler_rtmpte = {
   "RTMPTE",                             /* scheme */
 
 const struct Curl_handler Curl_handler_rtmpte = {
   "RTMPTE",                             /* scheme */
-  rtmp_setup,                           /* setup_connection */
+  rtmp_setup_connection,                /* setup_connection */
   rtmp_do,                              /* do_it */
   rtmp_done,                            /* done */
   ZERO_NULL,                            /* do_more */
   rtmp_do,                              /* do_it */
   rtmp_done,                            /* done */
   ZERO_NULL,                            /* do_more */
@@ -143,7 +144,7 @@ const struct Curl_handler Curl_handler_rtmpte = {
 
 const struct Curl_handler Curl_handler_rtmps = {
   "RTMPS",                              /* scheme */
 
 const struct Curl_handler Curl_handler_rtmps = {
   "RTMPS",                              /* scheme */
-  rtmp_setup,                           /* setup_connection */
+  rtmp_setup_connection,                /* setup_connection */
   rtmp_do,                              /* do_it */
   rtmp_done,                            /* done */
   ZERO_NULL,                            /* do_more */
   rtmp_do,                              /* do_it */
   rtmp_done,                            /* done */
   ZERO_NULL,                            /* do_more */
@@ -163,7 +164,7 @@ const struct Curl_handler Curl_handler_rtmps = {
 
 const struct Curl_handler Curl_handler_rtmpts = {
   "RTMPTS",                             /* scheme */
 
 const struct Curl_handler Curl_handler_rtmpts = {
   "RTMPTS",                             /* scheme */
-  rtmp_setup,                           /* setup_connection */
+  rtmp_setup_connection,                /* setup_connection */
   rtmp_do,                              /* do_it */
   rtmp_done,                            /* done */
   ZERO_NULL,                            /* do_more */
   rtmp_do,                              /* do_it */
   rtmp_done,                            /* done */
   ZERO_NULL,                            /* do_more */
@@ -181,10 +182,9 @@ const struct Curl_handler Curl_handler_rtmpts = {
   PROTOPT_NONE                          /* flags*/
 };
 
   PROTOPT_NONE                          /* flags*/
 };
 
-static CURLcode rtmp_setup(struct connectdata *conn)
+static CURLcode rtmp_setup_connection(struct connectdata *conn)
 {
   RTMP *r = RTMP_Alloc();
 {
   RTMP *r = RTMP_Alloc();
-
   if(!r)
     return CURLE_OUT_OF_MEMORY;
 
   if(!r)
     return CURLE_OUT_OF_MEMORY;
 
@@ -216,7 +216,7 @@ static CURLcode rtmp_connect(struct connectdata *conn, bool *done)
      !(r->Link.protocol & RTMP_FEATURE_HTTP))
     r->Link.lFlags |= RTMP_LF_BUFX;
 
      !(r->Link.protocol & RTMP_FEATURE_HTTP))
     r->Link.lFlags |= RTMP_LF_BUFX;
 
-  curlx_nonblock(r->m_sb.sb_socket, FALSE);
+  (void)curlx_nonblock(r->m_sb.sb_socket, FALSE);
   setsockopt(r->m_sb.sb_socket, SOL_SOCKET, SO_RCVTIMEO,
              (char *)&tv, sizeof(tv));
 
   setsockopt(r->m_sb.sb_socket, SOL_SOCKET, SO_RCVTIMEO,
              (char *)&tv, sizeof(tv));
 
@@ -240,7 +240,7 @@ static CURLcode rtmp_do(struct connectdata *conn, bool *done)
     return CURLE_FAILED_INIT;
 
   if(conn->data->set.upload) {
     return CURLE_FAILED_INIT;
 
   if(conn->data->set.upload) {
-    Curl_pgrsSetUploadSize(conn->data, conn->data->set.infilesize);
+    Curl_pgrsSetUploadSize(conn->data, conn->data->state.infilesize);
     Curl_setup_transfer(conn, -1, -1, FALSE, NULL, FIRSTSOCKET, NULL);
   }
   else
     Curl_setup_transfer(conn, -1, -1, FALSE, NULL, FIRSTSOCKET, NULL);
   }
   else
index fcb0019..b944aa2 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2012 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  * RFC2195 CRAM-MD5 authentication
  * KIND, either express or implied.
  *
  * RFC2195 CRAM-MD5 authentication
+ * RFC2617 Basic and Digest Access Authentication
  * RFC2831 DIGEST-MD5 authentication
  * RFC4422 Simple Authentication and Security Layer (SASL)
  * RFC4616 PLAIN authentication
  * RFC2831 DIGEST-MD5 authentication
  * RFC4422 Simple Authentication and Security Layer (SASL)
  * RFC4616 PLAIN authentication
+ * RFC6749 OAuth 2.0 Authorization Framework
+ * Draft   LOGIN SASL Mechanism <draft-murchison-sasl-login-00.txt>
  *
  ***************************************************************************/
 
  *
  ***************************************************************************/
 
 
 #include "curl_base64.h"
 #include "curl_md5.h"
 
 #include "curl_base64.h"
 #include "curl_md5.h"
-#include "sslgen.h"
+#include "vtls/vtls.h"
 #include "curl_hmac.h"
 #include "curl_hmac.h"
-#include "curl_ntlm_msgs.h"
 #include "curl_sasl.h"
 #include "warnless.h"
 #include "curl_memory.h"
 #include "curl_sasl.h"
 #include "warnless.h"
 #include "curl_memory.h"
+#include "strtok.h"
+#include "rawstr.h"
+#include "non-ascii.h" /* included for Curl_convert_... prototypes */
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
 /* The last #include file should be: */
 #include "memdebug.h"
 
 /* The last #include file should be: */
 #include "memdebug.h"
 
-#ifndef CURL_DISABLE_CRYPTO_AUTH
+#if !defined(CURL_DISABLE_CRYPTO_AUTH) && !defined(USE_WINDOWS_SSPI)
+#define DIGEST_QOP_VALUE_AUTH             (1 << 0)
+#define DIGEST_QOP_VALUE_AUTH_INT         (1 << 1)
+#define DIGEST_QOP_VALUE_AUTH_CONF        (1 << 2)
+
+#define DIGEST_QOP_VALUE_STRING_AUTH      "auth"
+#define DIGEST_QOP_VALUE_STRING_AUTH_INT  "auth-int"
+#define DIGEST_QOP_VALUE_STRING_AUTH_CONF "auth-conf"
+
+#define DIGEST_MAX_VALUE_LENGTH           256
+#define DIGEST_MAX_CONTENT_LENGTH         1024
+
+/* The CURL_OUTPUT_DIGEST_CONV macro below is for non-ASCII machines.
+   It converts digest text to ASCII so the MD5 will be correct for
+   what ultimately goes over the network.
+*/
+#define CURL_OUTPUT_DIGEST_CONV(a, b) \
+  result = Curl_convert_to_network(a, (char *)b, strlen((const char*)b)); \
+  if(result) { \
+    free(b); \
+    return result; \
+  }
+
+/*
+ * Return 0 on success and then the buffers are filled in fine.
+ *
+ * Non-zero means failure to parse.
+ */
+static int sasl_digest_get_pair(const char *str, char *value, char *content,
+                                const char **endptr)
+{
+  int c;
+  bool starts_with_quote = FALSE;
+  bool escape = FALSE;
+
+  for(c = DIGEST_MAX_VALUE_LENGTH - 1; (*str && (*str != '=') && c--); )
+    *value++ = *str++;
+  *value = 0;
+
+  if('=' != *str++)
+    /* eek, no match */
+    return 1;
+
+  if('\"' == *str) {
+    /* this starts with a quote so it must end with one as well! */
+    str++;
+    starts_with_quote = TRUE;
+  }
+
+  for(c = DIGEST_MAX_CONTENT_LENGTH - 1; *str && c--; str++) {
+    switch(*str) {
+    case '\\':
+      if(!escape) {
+        /* possibly the start of an escaped quote */
+        escape = TRUE;
+        *content++ = '\\'; /* even though this is an escape character, we still
+                              store it as-is in the target buffer */
+        continue;
+      }
+      break;
+    case ',':
+      if(!starts_with_quote) {
+        /* this signals the end of the content if we didn't get a starting
+           quote and then we do "sloppy" parsing */
+        c = 0; /* the end */
+        continue;
+      }
+      break;
+    case '\r':
+    case '\n':
+      /* end of string */
+      c = 0;
+      continue;
+    case '\"':
+      if(!escape && starts_with_quote) {
+        /* end of string */
+        c = 0;
+        continue;
+      }
+      break;
+    }
+    escape = FALSE;
+    *content++ = *str;
+  }
+  *content = 0;
+
+  *endptr = str;
+
+  return 0; /* all is fine! */
+}
+
+/* Convert md5 chunk to RFC2617 (section 3.1.3) -suitable ascii string*/
+static void sasl_digest_md5_to_ascii(unsigned char *source, /* 16 bytes */
+                                     unsigned char *dest) /* 33 bytes */
+{
+  int i;
+  for(i = 0; i < 16; i++)
+    snprintf((char *)&dest[i*2], 3, "%02x", source[i]);
+}
+
+/* Perform quoted-string escaping as described in RFC2616 and its errata */
+static char *sasl_digest_string_quoted(const char *source)
+{
+  char *dest, *d;
+  const char *s = source;
+  size_t n = 1; /* null terminator */
+
+  /* Calculate size needed */
+  while(*s) {
+    ++n;
+    if(*s == '"' || *s == '\\') {
+      ++n;
+    }
+    ++s;
+  }
+
+  dest = malloc(n);
+  if(dest) {
+    s = source;
+    d = dest;
+    while(*s) {
+      if(*s == '"' || *s == '\\') {
+        *d++ = '\\';
+      }
+      *d++ = *s++;
+    }
+    *d = 0;
+  }
+
+  return dest;
+}
+
 /* Retrieves the value for a corresponding key from the challenge string
  * returns TRUE if the key could be found, FALSE if it does not exists
  */
 /* Retrieves the value for a corresponding key from the challenge string
  * returns TRUE if the key could be found, FALSE if it does not exists
  */
-static bool sasl_digest_get_key_value(const unsigned char *chlg,
+static bool sasl_digest_get_key_value(const char *chlg,
                                       const char *key,
                                       char *value,
                                       size_t max_val_len,
                                       const char *key,
                                       char *value,
                                       size_t max_val_len,
@@ -58,7 +194,7 @@ static bool sasl_digest_get_key_value(const unsigned char *chlg,
   char *find_pos;
   size_t i;
 
   char *find_pos;
   size_t i;
 
-  find_pos = strstr((const char *) chlg, key);
+  find_pos = strstr(chlg, key);
   if(!find_pos)
     return FALSE;
 
   if(!find_pos)
     return FALSE;
 
@@ -70,6 +206,58 @@ static bool sasl_digest_get_key_value(const unsigned char *chlg,
 
   return TRUE;
 }
 
   return TRUE;
 }
+
+static CURLcode sasl_digest_get_qop_values(const char *options, int *value)
+{
+  char *tmp;
+  char *token;
+  char *tok_buf;
+
+  /* Initialise the output */
+  *value = 0;
+
+  /* Tokenise the list of qop values. Use a temporary clone of the buffer since
+     strtok_r() ruins it. */
+  tmp = strdup(options);
+  if(!tmp)
+    return CURLE_OUT_OF_MEMORY;
+
+  token = strtok_r(tmp, ",", &tok_buf);
+  while(token != NULL) {
+    if(Curl_raw_equal(token, DIGEST_QOP_VALUE_STRING_AUTH))
+      *value |= DIGEST_QOP_VALUE_AUTH;
+    else if(Curl_raw_equal(token, DIGEST_QOP_VALUE_STRING_AUTH_INT))
+      *value |= DIGEST_QOP_VALUE_AUTH_INT;
+    else if(Curl_raw_equal(token, DIGEST_QOP_VALUE_STRING_AUTH_CONF))
+      *value |= DIGEST_QOP_VALUE_AUTH_CONF;
+
+    token = strtok_r(NULL, ",", &tok_buf);
+  }
+
+  Curl_safefree(tmp);
+
+  return CURLE_OK;
+}
+#endif /* !CURL_DISABLE_CRYPTO_AUTH && !USE_WINDOWS_SSPI */
+
+#if !defined(USE_WINDOWS_SSPI)
+/*
+ * Curl_sasl_build_spn()
+ *
+ * This is used to build a SPN string in the format service/host.
+ *
+ * Parameters:
+ *
+ * serivce  [in] - The service type such as www, smtp, pop or imap.
+ * host     [in] - The host name or realm.
+ *
+ * Returns a pointer to the newly allocated SPN.
+ */
+char *Curl_sasl_build_spn(const char *service, const char *host)
+{
+  /* Generate and return our SPN */
+  return aprintf("%s/%s", service, host);
+}
 #endif
 
 /*
 #endif
 
 /*
@@ -94,18 +282,18 @@ CURLcode Curl_sasl_create_plain_message(struct SessionHandle *data,
                                         const char *passwdp,
                                         char **outptr, size_t *outlen)
 {
                                         const char *passwdp,
                                         char **outptr, size_t *outlen)
 {
-  char plainauth[2 * MAX_CURL_USER_LENGTH + MAX_CURL_PASSWORD_LENGTH];
+  CURLcode result;
+  char *plainauth;
   size_t ulen;
   size_t plen;
 
   ulen = strlen(userp);
   plen = strlen(passwdp);
 
   size_t ulen;
   size_t plen;
 
   ulen = strlen(userp);
   plen = strlen(passwdp);
 
-  if(2 * ulen + plen + 2 > sizeof(plainauth)) {
+  plainauth = malloc(2 * ulen + plen + 2);
+  if(!plainauth) {
     *outlen = 0;
     *outptr = NULL;
     *outlen = 0;
     *outptr = NULL;
-
-    /* Plainauth too small */
     return CURLE_OUT_OF_MEMORY;
   }
 
     return CURLE_OUT_OF_MEMORY;
   }
 
@@ -117,8 +305,10 @@ CURLcode Curl_sasl_create_plain_message(struct SessionHandle *data,
   memcpy(plainauth + 2 * ulen + 2, passwdp, plen);
 
   /* Base64 encode the reply */
   memcpy(plainauth + 2 * ulen + 2, passwdp, plen);
 
   /* Base64 encode the reply */
-  return Curl_base64_encode(data, plainauth, 2 * ulen + plen + 2, outptr,
-                            outlen);
+  result = Curl_base64_encode(data, plainauth, 2 * ulen + plen + 2, outptr,
+                              outlen);
+  Curl_safefree(plainauth);
+  return result;
 }
 
 /*
 }
 
 /*
@@ -160,7 +350,37 @@ CURLcode Curl_sasl_create_login_message(struct SessionHandle *data,
 }
 
 #ifndef CURL_DISABLE_CRYPTO_AUTH
 }
 
 #ifndef CURL_DISABLE_CRYPTO_AUTH
-/*
+ /*
+ * Curl_sasl_decode_cram_md5_message()
+ *
+ * This is used to decode an already encoded CRAM-MD5 challenge message.
+ *
+ * Parameters:
+ *
+ * chlg64  [in]     - The base64 encoded challenge message.
+ * outptr  [in/out] - The address where a pointer to newly allocated memory
+ *                    holding the result will be stored upon completion.
+ * outlen  [out]    - The length of the output message.
+ *
+ * Returns CURLE_OK on success.
+ */
+CURLcode Curl_sasl_decode_cram_md5_message(const char *chlg64, char **outptr,
+                                           size_t *outlen)
+{
+  CURLcode result = CURLE_OK;
+  size_t chlg64len = strlen(chlg64);
+
+  *outptr = NULL;
+  *outlen = 0;
+
+  /* Decode the challenge if necessary */
+  if(chlg64len && *chlg64 != '=')
+    result = Curl_base64_decode(chlg64, (unsigned char **) outptr, outlen);
+
+    return result;
+ }
+
+ /*
  * Curl_sasl_create_cram_md5_message()
  *
  * This is used to generate an already encoded CRAM-MD5 response message ready
  * Curl_sasl_create_cram_md5_message()
  *
  * This is used to generate an already encoded CRAM-MD5 response message ready
@@ -169,7 +389,7 @@ CURLcode Curl_sasl_create_login_message(struct SessionHandle *data,
  * Parameters:
  *
  * data    [in]     - The session handle.
  * Parameters:
  *
  * data    [in]     - The session handle.
- * chlg64  [in]     - Pointer to the base64 encoded challenge buffer.
+ * chlg    [in]     - The challenge.
  * userp   [in]     - The user name.
  * passdwp [in]     - The user's password.
  * outptr  [in/out] - The address where a pointer to newly allocated memory
  * userp   [in]     - The user name.
  * passdwp [in]     - The user's password.
  * outptr  [in/out] - The address where a pointer to newly allocated memory
@@ -179,55 +399,122 @@ CURLcode Curl_sasl_create_login_message(struct SessionHandle *data,
  * Returns CURLE_OK on success.
  */
 CURLcode Curl_sasl_create_cram_md5_message(struct SessionHandle *data,
  * Returns CURLE_OK on success.
  */
 CURLcode Curl_sasl_create_cram_md5_message(struct SessionHandle *data,
-                                           const char *chlg64,
+                                           const char *chlg,
                                            const char *userp,
                                            const char *passwdp,
                                            char **outptr, size_t *outlen)
 {
   CURLcode result = CURLE_OK;
                                            const char *userp,
                                            const char *passwdp,
                                            char **outptr, size_t *outlen)
 {
   CURLcode result = CURLE_OK;
-  size_t chlg64len = strlen(chlg64);
-  unsigned char *chlg = (unsigned char *) NULL;
   size_t chlglen = 0;
   HMAC_context *ctxt;
   unsigned char digest[MD5_DIGEST_LEN];
   size_t chlglen = 0;
   HMAC_context *ctxt;
   unsigned char digest[MD5_DIGEST_LEN];
-  char response[MAX_CURL_USER_LENGTH + 2 * MD5_DIGEST_LEN + 1];
+  char *response;
 
 
-  /* Decode the challenge if necessary */
-  if(chlg64len && *chlg64 != '=') {
-    result = Curl_base64_decode(chlg64, &chlg, &chlglen);
-
-    if(result)
-      return result;
-  }
+  if(chlg)
+    chlglen = strlen(chlg);
 
   /* Compute the digest using the password as the key */
   ctxt = Curl_HMAC_init(Curl_HMAC_MD5,
                         (const unsigned char *) passwdp,
                         curlx_uztoui(strlen(passwdp)));
 
   /* Compute the digest using the password as the key */
   ctxt = Curl_HMAC_init(Curl_HMAC_MD5,
                         (const unsigned char *) passwdp,
                         curlx_uztoui(strlen(passwdp)));
-
-  if(!ctxt) {
-    Curl_safefree(chlg);
+  if(!ctxt)
     return CURLE_OUT_OF_MEMORY;
     return CURLE_OUT_OF_MEMORY;
-  }
 
   /* Update the digest with the given challenge */
   if(chlglen > 0)
 
   /* Update the digest with the given challenge */
   if(chlglen > 0)
-    Curl_HMAC_update(ctxt, chlg, curlx_uztoui(chlglen));
-
-  Curl_safefree(chlg);
+    Curl_HMAC_update(ctxt, (const unsigned char *) chlg,
+                     curlx_uztoui(chlglen));
 
   /* Finalise the digest */
   Curl_HMAC_final(ctxt, digest);
 
 
   /* Finalise the digest */
   Curl_HMAC_final(ctxt, digest);
 
-  /* Prepare the response */
-  snprintf(response, sizeof(response),
+  /* Generate the response */
+  response = aprintf(
       "%s %02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
            userp, digest[0], digest[1], digest[2], digest[3], digest[4],
            digest[5], digest[6], digest[7], digest[8], digest[9], digest[10],
            digest[11], digest[12], digest[13], digest[14], digest[15]);
       "%s %02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
            userp, digest[0], digest[1], digest[2], digest[3], digest[4],
            digest[5], digest[6], digest[7], digest[8], digest[9], digest[10],
            digest[11], digest[12], digest[13], digest[14], digest[15]);
+  if(!response)
+    return CURLE_OUT_OF_MEMORY;
 
 
-  /* Base64 encode the reply */
-  return Curl_base64_encode(data, response, 0, outptr, outlen);
+  /* Base64 encode the response */
+  result = Curl_base64_encode(data, response, 0, outptr, outlen);
+
+  Curl_safefree(response);
+
+  return result;
+}
+
+#ifndef USE_WINDOWS_SSPI
+/*
+ * sasl_decode_digest_md5_message()
+ *
+ * This is used internally to decode an already encoded DIGEST-MD5 challenge
+ * message into the seperate attributes.
+ *
+ * Parameters:
+ *
+ * chlg64  [in]     - The base64 encoded challenge message.
+ * nonce   [in/out] - The buffer where the nonce will be stored.
+ * nlen    [in]     - The length of the nonce buffer.
+ * realm   [in/out] - The buffer where the realm will be stored.
+ * rlen    [in]     - The length of the realm buffer.
+ * alg     [in/out] - The buffer where the algorithm will be stored.
+ * alen    [in]     - The length of the algorithm buffer.
+ * qop     [in/out] - The buffer where the qop-options will be stored.
+ * qlen    [in]     - The length of the qop buffer.
+ *
+ * Returns CURLE_OK on success.
+ */
+static CURLcode sasl_decode_digest_md5_message(const char *chlg64,
+                                               char *nonce, size_t nlen,
+                                               char *realm, size_t rlen,
+                                               char *alg, size_t alen,
+                                               char *qop, size_t qlen)
+{
+  CURLcode result = CURLE_OK;
+  unsigned char *chlg = NULL;
+  size_t chlglen = 0;
+  size_t chlg64len = strlen(chlg64);
+
+  /* Decode the base-64 encoded challenge message */
+  if(chlg64len && *chlg64 != '=') {
+    result = Curl_base64_decode(chlg64, &chlg, &chlglen);
+    if(result)
+      return result;
+  }
+
+  /* Ensure we have a valid challenge message */
+  if(!chlg)
+    return CURLE_BAD_CONTENT_ENCODING;
+
+  /* Retrieve nonce string from the challenge */
+  if(!sasl_digest_get_key_value((char *)chlg, "nonce=\"", nonce, nlen, '\"')) {
+    Curl_safefree(chlg);
+    return CURLE_BAD_CONTENT_ENCODING;
+  }
+
+  /* Retrieve realm string from the challenge */
+  if(!sasl_digest_get_key_value((char *)chlg, "realm=\"", realm, rlen, '\"')) {
+    /* Challenge does not have a realm, set empty string [RFC2831] page 6 */
+    strcpy(realm, "");
+  }
+
+  /* Retrieve algorithm string from the challenge */
+  if(!sasl_digest_get_key_value((char *)chlg, "algorithm=", alg, alen, ',')) {
+    Curl_safefree(chlg);
+    return CURLE_BAD_CONTENT_ENCODING;
+  }
+
+  /* Retrieve qop-options string from the challenge */
+  if(!sasl_digest_get_key_value((char *)chlg, "qop=\"", qop, qlen, '\"')) {
+    Curl_safefree(chlg);
+    return CURLE_BAD_CONTENT_ENCODING;
+  }
+
+  Curl_safefree(chlg);
+
+  return CURLE_OK;
 }
 
 /*
 }
 
 /*
@@ -239,10 +526,10 @@ CURLcode Curl_sasl_create_cram_md5_message(struct SessionHandle *data,
  * Parameters:
  *
  * data    [in]     - The session handle.
  * Parameters:
  *
  * data    [in]     - The session handle.
- * chlg64  [in]     - Pointer to the base64 encoded challenge buffer.
+ * chlg64  [in]     - The base64 encoded challenge message.
  * userp   [in]     - The user name.
  * passdwp [in]     - The user's password.
  * userp   [in]     - The user name.
  * passdwp [in]     - The user's password.
- * service [in]     - The service type such as www, smtp or pop
+ * service [in]     - The service type such as www, smtp, pop or imap.
  * outptr  [in/out] - The address where a pointer to newly allocated memory
  *                    holding the result will be stored upon completion.
  * outlen  [out]    - The length of the output message.
  * outptr  [in/out] - The address where a pointer to newly allocated memory
  *                    holding the result will be stored upon completion.
  * outlen  [out]    - The length of the output message.
@@ -256,65 +543,56 @@ CURLcode Curl_sasl_create_digest_md5_message(struct SessionHandle *data,
                                              const char *service,
                                              char **outptr, size_t *outlen)
 {
                                              const char *service,
                                              char **outptr, size_t *outlen)
 {
-  static const char table16[] = "0123456789abcdef";
-
   CURLcode result = CURLE_OK;
   CURLcode result = CURLE_OK;
-  unsigned char *chlg = (unsigned char *) NULL;
-  size_t chlglen = 0;
   size_t i;
   MD5_context *ctxt;
   size_t i;
   MD5_context *ctxt;
+  char *response = NULL;
   unsigned char digest[MD5_DIGEST_LEN];
   char HA1_hex[2 * MD5_DIGEST_LEN + 1];
   char HA2_hex[2 * MD5_DIGEST_LEN + 1];
   char resp_hash_hex[2 * MD5_DIGEST_LEN + 1];
   unsigned char digest[MD5_DIGEST_LEN];
   char HA1_hex[2 * MD5_DIGEST_LEN + 1];
   char HA2_hex[2 * MD5_DIGEST_LEN + 1];
   char resp_hash_hex[2 * MD5_DIGEST_LEN + 1];
-
   char nonce[64];
   char realm[128];
   char nonce[64];
   char realm[128];
-  char alg[64];
+  char algorithm[64];
+  char qop_options[64];
+  int qop_values;
+  char cnonce[33];
+  unsigned int entropy[4];
   char nonceCount[] = "00000001";
   char nonceCount[] = "00000001";
-  char cnonce[]     = "12345678"; /* will be changed */
   char method[]     = "AUTHENTICATE";
   char method[]     = "AUTHENTICATE";
-  char qop[]        = "auth";
-  char uri[128];
-  char response[512];
-
-  result = Curl_base64_decode(chlg64, &chlg, &chlglen);
+  char qop[]        = DIGEST_QOP_VALUE_STRING_AUTH;
+  char *spn         = NULL;
 
 
+  /* Decode the challange message */
+  result = sasl_decode_digest_md5_message(chlg64, nonce, sizeof(nonce),
+                                          realm, sizeof(realm),
+                                          algorithm, sizeof(algorithm),
+                                          qop_options, sizeof(qop_options));
   if(result)
     return result;
 
   if(result)
     return result;
 
-  if(!chlg)
-    return CURLE_LOGIN_DENIED;
-
-  /* Retrieve nonce string from the challenge */
-  if(!sasl_digest_get_key_value(chlg, "nonce=\"", nonce,
-                                sizeof(nonce), '\"')) {
-    Curl_safefree(chlg);
-    return CURLE_LOGIN_DENIED;
-  }
-
-  /* Retrieve realm string from the challenge */
-  if(!sasl_digest_get_key_value(chlg, "realm=\"", realm,
-                                sizeof(realm), '\"')) {
-    /* Challenge does not have a realm, set empty string [RFC2831] page 6 */
-    strcpy(realm, "");
-  }
+  /* We only support md5 sessions */
+  if(strcmp(algorithm, "md5-sess") != 0)
+    return CURLE_BAD_CONTENT_ENCODING;
 
 
-  /* Retrieve algorithm string from the challenge */
-  if(!sasl_digest_get_key_value(chlg, "algorithm=", alg, sizeof(alg), ',')) {
-    Curl_safefree(chlg);
-    return CURLE_LOGIN_DENIED;
-  }
+  /* Get the qop-values from the qop-options */
+  result = sasl_digest_get_qop_values(qop_options, &qop_values);
+  if(result)
+    return result;
 
 
-  Curl_safefree(chlg);
+  /* We only support auth quality-of-protection */
+  if(!(qop_values & DIGEST_QOP_VALUE_AUTH))
+    return CURLE_BAD_CONTENT_ENCODING;
 
 
-  /* We do not support other algorithms */
-  if(strcmp(alg, "md5-sess") != 0)
-    return CURLE_LOGIN_DENIED;
+  /* Generate 16 bytes of random data */
+  entropy[0] = Curl_rand(data);
+  entropy[1] = Curl_rand(data);
+  entropy[2] = Curl_rand(data);
+  entropy[3] = Curl_rand(data);
 
 
-  /* Generate 64 bits of random data */
-  for(i = 0; i < 8; i++)
-    cnonce[i] = table16[Curl_rand(data)%16];
+  /* Convert the random data into a 32 byte hex string */
+  snprintf(cnonce, sizeof(cnonce), "%08x%08x%08x%08x",
+           entropy[0], entropy[1], entropy[2], entropy[3]);
 
   /* So far so good, now calculate A1 and H(A1) according to RFC 2831 */
   ctxt = Curl_MD5_init(Curl_DIGEST_MD5);
 
   /* So far so good, now calculate A1 and H(A1) according to RFC 2831 */
   ctxt = Curl_MD5_init(Curl_DIGEST_MD5);
@@ -348,19 +626,24 @@ CURLcode Curl_sasl_create_digest_md5_message(struct SessionHandle *data,
   for(i = 0; i < MD5_DIGEST_LEN; i++)
     snprintf(&HA1_hex[2 * i], 3, "%02x", digest[i]);
 
   for(i = 0; i < MD5_DIGEST_LEN; i++)
     snprintf(&HA1_hex[2 * i], 3, "%02x", digest[i]);
 
-  /* Prepare the URL string */
-  snprintf(uri, sizeof(uri), "%s/%s", service, realm);
+  /* Generate our SPN */
+  spn = Curl_sasl_build_spn(service, realm);
+  if(!spn)
+    return CURLE_OUT_OF_MEMORY;
 
   /* Calculate H(A2) */
   ctxt = Curl_MD5_init(Curl_DIGEST_MD5);
 
   /* Calculate H(A2) */
   ctxt = Curl_MD5_init(Curl_DIGEST_MD5);
-  if(!ctxt)
+  if(!ctxt) {
+    Curl_safefree(spn);
+
     return CURLE_OUT_OF_MEMORY;
     return CURLE_OUT_OF_MEMORY;
+  }
 
   Curl_MD5_update(ctxt, (const unsigned char *) method,
                   curlx_uztoui(strlen(method)));
   Curl_MD5_update(ctxt, (const unsigned char *) ":", 1);
 
   Curl_MD5_update(ctxt, (const unsigned char *) method,
                   curlx_uztoui(strlen(method)));
   Curl_MD5_update(ctxt, (const unsigned char *) ":", 1);
-  Curl_MD5_update(ctxt, (const unsigned char *) uri,
-                  curlx_uztoui(strlen(uri)));
+  Curl_MD5_update(ctxt, (const unsigned char *) spn,
+                  curlx_uztoui(strlen(spn)));
   Curl_MD5_final(ctxt, digest);
 
   for(i = 0; i < MD5_DIGEST_LEN; i++)
   Curl_MD5_final(ctxt, digest);
 
   for(i = 0; i < MD5_DIGEST_LEN; i++)
@@ -368,8 +651,11 @@ CURLcode Curl_sasl_create_digest_md5_message(struct SessionHandle *data,
 
   /* Now calculate the response hash */
   ctxt = Curl_MD5_init(Curl_DIGEST_MD5);
 
   /* Now calculate the response hash */
   ctxt = Curl_MD5_init(Curl_DIGEST_MD5);
-  if(!ctxt)
+  if(!ctxt) {
+    Curl_safefree(spn);
+
     return CURLE_OUT_OF_MEMORY;
     return CURLE_OUT_OF_MEMORY;
+  }
 
   Curl_MD5_update(ctxt, (const unsigned char *) HA1_hex, 2 * MD5_DIGEST_LEN);
   Curl_MD5_update(ctxt, (const unsigned char *) ":", 1);
 
   Curl_MD5_update(ctxt, (const unsigned char *) HA1_hex, 2 * MD5_DIGEST_LEN);
   Curl_MD5_update(ctxt, (const unsigned char *) ":", 1);
@@ -393,82 +679,473 @@ CURLcode Curl_sasl_create_digest_md5_message(struct SessionHandle *data,
   for(i = 0; i < MD5_DIGEST_LEN; i++)
     snprintf(&resp_hash_hex[2 * i], 3, "%02x", digest[i]);
 
   for(i = 0; i < MD5_DIGEST_LEN; i++)
     snprintf(&resp_hash_hex[2 * i], 3, "%02x", digest[i]);
 
-  snprintf(response, sizeof(response),
-           "username=\"%s\",realm=\"%s\",nonce=\"%s\","
-           "cnonce=\"%s\",nc=\"%s\",digest-uri=\"%s\",response=%s",
-           userp, realm, nonce,
-           cnonce, nonceCount, uri, resp_hash_hex);
+  /* Generate the response */
+  response = aprintf("username=\"%s\",realm=\"%s\",nonce=\"%s\","
+                     "cnonce=\"%s\",nc=\"%s\",digest-uri=\"%s\",response=%s,"
+                     "qop=%s",
+                     userp, realm, nonce,
+                     cnonce, nonceCount, spn, resp_hash_hex, qop);
+  Curl_safefree(spn);
+  if(!response)
+    return CURLE_OUT_OF_MEMORY;
 
 
-  /* Base64 encode the reply */
-  return Curl_base64_encode(data, response, 0, outptr, outlen);
+  /* Base64 encode the response */
+  result = Curl_base64_encode(data, response, 0, outptr, outlen);
+
+  Curl_safefree(response);
+
+  return result;
 }
 }
-#endif
 
 
-#ifdef USE_NTLM
 /*
 /*
- * Curl_sasl_create_ntlm_type1_message()
+ * Curl_sasl_decode_digest_http_message()
  *
  *
- * This is used to generate an already encoded NTLM type-1 message ready for
- * sending to the recipient.
+ * This is used to decode a HTTP DIGEST challenge message into the seperate
+ * attributes.
+ *
+ * Parameters:
+ *
+ * chlg    [in]     - The challenge message.
+ * digest  [in/out] - The digest data struct being used and modified.
+ *
+ * Returns CURLE_OK on success.
+ */
+CURLcode Curl_sasl_decode_digest_http_message(const char *chlg,
+                                              struct digestdata *digest)
+{
+  bool before = FALSE; /* got a nonce before */
+  bool foundAuth = FALSE;
+  bool foundAuthInt = FALSE;
+  char *token = NULL;
+  char *tmp = NULL;
+
+  /* If we already have received a nonce, keep that in mind */
+  if(digest->nonce)
+    before = TRUE;
+
+  /* Clean up any former leftovers and initialise to defaults */
+  Curl_sasl_digest_cleanup(digest);
+
+  for(;;) {
+    char value[DIGEST_MAX_VALUE_LENGTH];
+    char content[DIGEST_MAX_CONTENT_LENGTH];
+
+    /* Pass all additional spaces here */
+    while(*chlg && ISSPACE(*chlg))
+      chlg++;
+
+    /* Extract a value=content pair */
+    if(!sasl_digest_get_pair(chlg, value, content, &chlg)) {
+      if(Curl_raw_equal(value, "nonce")) {
+        digest->nonce = strdup(content);
+        if(!digest->nonce)
+          return CURLE_OUT_OF_MEMORY;
+      }
+      else if(Curl_raw_equal(value, "stale")) {
+        if(Curl_raw_equal(content, "true")) {
+          digest->stale = TRUE;
+          digest->nc = 1; /* we make a new nonce now */
+        }
+      }
+      else if(Curl_raw_equal(value, "realm")) {
+        digest->realm = strdup(content);
+        if(!digest->realm)
+          return CURLE_OUT_OF_MEMORY;
+      }
+      else if(Curl_raw_equal(value, "opaque")) {
+        digest->opaque = strdup(content);
+        if(!digest->opaque)
+          return CURLE_OUT_OF_MEMORY;
+      }
+      else if(Curl_raw_equal(value, "qop")) {
+        char *tok_buf;
+        /* Tokenize the list and choose auth if possible, use a temporary
+            clone of the buffer since strtok_r() ruins it */
+        tmp = strdup(content);
+        if(!tmp)
+          return CURLE_OUT_OF_MEMORY;
+
+        token = strtok_r(tmp, ",", &tok_buf);
+        while(token != NULL) {
+          if(Curl_raw_equal(token, DIGEST_QOP_VALUE_STRING_AUTH)) {
+            foundAuth = TRUE;
+          }
+          else if(Curl_raw_equal(token, DIGEST_QOP_VALUE_STRING_AUTH_INT)) {
+            foundAuthInt = TRUE;
+          }
+          token = strtok_r(NULL, ",", &tok_buf);
+        }
+
+        free(tmp);
+
+        /* Select only auth or auth-int. Otherwise, ignore */
+        if(foundAuth) {
+          digest->qop = strdup(DIGEST_QOP_VALUE_STRING_AUTH);
+          if(!digest->qop)
+            return CURLE_OUT_OF_MEMORY;
+        }
+        else if(foundAuthInt) {
+          digest->qop = strdup(DIGEST_QOP_VALUE_STRING_AUTH_INT);
+          if(!digest->qop)
+            return CURLE_OUT_OF_MEMORY;
+        }
+      }
+      else if(Curl_raw_equal(value, "algorithm")) {
+        digest->algorithm = strdup(content);
+        if(!digest->algorithm)
+          return CURLE_OUT_OF_MEMORY;
+
+        if(Curl_raw_equal(content, "MD5-sess"))
+          digest->algo = CURLDIGESTALGO_MD5SESS;
+        else if(Curl_raw_equal(content, "MD5"))
+          digest->algo = CURLDIGESTALGO_MD5;
+        else
+          return CURLE_BAD_CONTENT_ENCODING;
+      }
+      else {
+        /* unknown specifier, ignore it! */
+      }
+    }
+    else
+      break; /* we're done here */
+
+    /* Pass all additional spaces here */
+    while(*chlg && ISSPACE(*chlg))
+      chlg++;
+
+    /* Allow the list to be comma-separated */
+    if(',' == *chlg)
+      chlg++;
+  }
+
+  /* We had a nonce since before, and we got another one now without
+     'stale=true'. This means we provided bad credentials in the previous
+     request */
+  if(before && !digest->stale)
+    return CURLE_BAD_CONTENT_ENCODING;
+
+  /* We got this header without a nonce, that's a bad Digest line! */
+  if(!digest->nonce)
+    return CURLE_BAD_CONTENT_ENCODING;
+
+  return CURLE_OK;
+}
+
+/*
+ * Curl_sasl_create_digest_http_message()
  *
  *
- * Note: This is a simple wrapper of the NTLM function which means that any
- * SASL based protocols don't have to include the NTLM functions directly.
+ * This is used to generate a HTTP DIGEST response message ready for sending
+ * to the recipient.
  *
  * Parameters:
  *
  *
  * Parameters:
  *
- * userp   [in]     - The user name in the format User or Domain\User.
+ * data    [in]     - The session handle.
+ * userp   [in]     - The user name.
  * passdwp [in]     - The user's password.
  * passdwp [in]     - The user's password.
- * ntlm    [in/out] - The ntlm data struct being used and modified.
+ * request [in]     - The HTTP request.
+ * uripath [in]     - The path of the HTTP uri.
+ * digest  [in/out] - The digest data struct being used and modified.
  * outptr  [in/out] - The address where a pointer to newly allocated memory
  *                    holding the result will be stored upon completion.
  * outlen  [out]    - The length of the output message.
  *
  * Returns CURLE_OK on success.
  */
  * outptr  [in/out] - The address where a pointer to newly allocated memory
  *                    holding the result will be stored upon completion.
  * outlen  [out]    - The length of the output message.
  *
  * Returns CURLE_OK on success.
  */
-CURLcode Curl_sasl_create_ntlm_type1_message(const char *userp,
-                                             const char *passwdp,
-                                             struct ntlmdata *ntlm,
-                                             char **outptr, size_t *outlen)
+CURLcode Curl_sasl_create_digest_http_message(struct SessionHandle *data,
+                                              const char *userp,
+                                              const char *passwdp,
+                                              const unsigned char *request,
+                                              const unsigned char *uripath,
+                                              struct digestdata *digest,
+                                              char **outptr, size_t *outlen)
 {
 {
-  return Curl_ntlm_create_type1_message(userp, passwdp, ntlm, outptr,
-                                        outlen);
+  CURLcode result;
+  unsigned char md5buf[16]; /* 16 bytes/128 bits */
+  unsigned char request_digest[33];
+  unsigned char *md5this;
+  unsigned char ha1[33];/* 32 digits and 1 zero byte */
+  unsigned char ha2[33];/* 32 digits and 1 zero byte */
+  char cnoncebuf[33];
+  char *cnonce = NULL;
+  size_t cnonce_sz = 0;
+  char *userp_quoted;
+  char *response = NULL;
+  char *tmp = NULL;
+
+  if(!digest->nc)
+    digest->nc = 1;
+
+  if(!digest->cnonce) {
+    snprintf(cnoncebuf, sizeof(cnoncebuf), "%08x%08x%08x%08x",
+             Curl_rand(data), Curl_rand(data),
+             Curl_rand(data), Curl_rand(data));
+
+    result = Curl_base64_encode(data, cnoncebuf, strlen(cnoncebuf),
+                                &cnonce, &cnonce_sz);
+    if(result)
+      return result;
+
+    digest->cnonce = cnonce;
+  }
+
+  /*
+    if the algorithm is "MD5" or unspecified (which then defaults to MD5):
+
+    A1 = unq(username-value) ":" unq(realm-value) ":" passwd
+
+    if the algorithm is "MD5-sess" then:
+
+    A1 = H( unq(username-value) ":" unq(realm-value) ":" passwd )
+         ":" unq(nonce-value) ":" unq(cnonce-value)
+  */
+
+  md5this = (unsigned char *)
+    aprintf("%s:%s:%s", userp, digest->realm, passwdp);
+  if(!md5this)
+    return CURLE_OUT_OF_MEMORY;
+
+  CURL_OUTPUT_DIGEST_CONV(data, md5this); /* convert on non-ASCII machines */
+  Curl_md5it(md5buf, md5this);
+  Curl_safefree(md5this);
+  sasl_digest_md5_to_ascii(md5buf, ha1);
+
+  if(digest->algo == CURLDIGESTALGO_MD5SESS) {
+    /* nonce and cnonce are OUTSIDE the hash */
+    tmp = aprintf("%s:%s:%s", ha1, digest->nonce, digest->cnonce);
+    if(!tmp)
+      return CURLE_OUT_OF_MEMORY;
+
+    CURL_OUTPUT_DIGEST_CONV(data, tmp); /* convert on non-ASCII machines */
+    Curl_md5it(md5buf, (unsigned char *)tmp);
+    Curl_safefree(tmp);
+    sasl_digest_md5_to_ascii(md5buf, ha1);
+  }
+
+  /*
+    If the "qop" directive's value is "auth" or is unspecified, then A2 is:
+
+      A2       = Method ":" digest-uri-value
+
+          If the "qop" value is "auth-int", then A2 is:
+
+      A2       = Method ":" digest-uri-value ":" H(entity-body)
+
+    (The "Method" value is the HTTP request method as specified in section
+    5.1.1 of RFC 2616)
+  */
+
+  md5this = (unsigned char *)aprintf("%s:%s", request, uripath);
+
+  if(digest->qop && Curl_raw_equal(digest->qop, "auth-int")) {
+    /* We don't support auth-int for PUT or POST at the moment.
+       TODO: replace md5 of empty string with entity-body for PUT/POST */
+    unsigned char *md5this2 = (unsigned char *)
+      aprintf("%s:%s", md5this, "d41d8cd98f00b204e9800998ecf8427e");
+    Curl_safefree(md5this);
+    md5this = md5this2;
+  }
+
+  if(!md5this)
+    return CURLE_OUT_OF_MEMORY;
+
+  CURL_OUTPUT_DIGEST_CONV(data, md5this); /* convert on non-ASCII machines */
+  Curl_md5it(md5buf, md5this);
+  Curl_safefree(md5this);
+  sasl_digest_md5_to_ascii(md5buf, ha2);
+
+  if(digest->qop) {
+    md5this = (unsigned char *)aprintf("%s:%s:%08x:%s:%s:%s",
+                                       ha1,
+                                       digest->nonce,
+                                       digest->nc,
+                                       digest->cnonce,
+                                       digest->qop,
+                                       ha2);
+  }
+  else {
+    md5this = (unsigned char *)aprintf("%s:%s:%s",
+                                       ha1,
+                                       digest->nonce,
+                                       ha2);
+  }
+
+  if(!md5this)
+    return CURLE_OUT_OF_MEMORY;
+
+  CURL_OUTPUT_DIGEST_CONV(data, md5this); /* convert on non-ASCII machines */
+  Curl_md5it(md5buf, md5this);
+  Curl_safefree(md5this);
+  sasl_digest_md5_to_ascii(md5buf, request_digest);
+
+  /* for test case 64 (snooped from a Mozilla 1.3a request)
+
+    Authorization: Digest username="testuser", realm="testrealm", \
+    nonce="1053604145", uri="/64", response="c55f7f30d83d774a3d2dcacf725abaca"
+
+    Digest parameters are all quoted strings.  Username which is provided by
+    the user will need double quotes and backslashes within it escaped.  For
+    the other fields, this shouldn't be an issue.  realm, nonce, and opaque
+    are copied as is from the server, escapes and all.  cnonce is generated
+    with web-safe characters.  uri is already percent encoded.  nc is 8 hex
+    characters.  algorithm and qop with standard values only contain web-safe
+    chracters.
+  */
+  userp_quoted = sasl_digest_string_quoted(userp);
+  if(!userp_quoted)
+    return CURLE_OUT_OF_MEMORY;
+
+  if(digest->qop) {
+    response = aprintf("username=\"%s\", "
+                       "realm=\"%s\", "
+                       "nonce=\"%s\", "
+                       "uri=\"%s\", "
+                       "cnonce=\"%s\", "
+                       "nc=%08x, "
+                       "qop=%s, "
+                       "response=\"%s\"",
+                       userp_quoted,
+                       digest->realm,
+                       digest->nonce,
+                       uripath,
+                       digest->cnonce,
+                       digest->nc,
+                       digest->qop,
+                       request_digest);
+
+    if(Curl_raw_equal(digest->qop, "auth"))
+      digest->nc++; /* The nc (from RFC) has to be a 8 hex digit number 0
+                       padded which tells to the server how many times you are
+                       using the same nonce in the qop=auth mode */
+  }
+  else {
+    response = aprintf("username=\"%s\", "
+                       "realm=\"%s\", "
+                       "nonce=\"%s\", "
+                       "uri=\"%s\", "
+                       "response=\"%s\"",
+                       userp_quoted,
+                       digest->realm,
+                       digest->nonce,
+                       uripath,
+                       request_digest);
+  }
+  Curl_safefree(userp_quoted);
+  if(!response)
+    return CURLE_OUT_OF_MEMORY;
+
+  /* Add the optional fields */
+  if(digest->opaque) {
+    /* Append the opaque */
+    tmp = aprintf("%s, opaque=\"%s\"", response, digest->opaque);
+    free(response);
+    if(!tmp)
+      return CURLE_OUT_OF_MEMORY;
+
+    response = tmp;
+  }
+
+  if(digest->algorithm) {
+    /* Append the algorithm */
+    tmp = aprintf("%s, algorithm=\"%s\"", response, digest->algorithm);
+    free(response);
+    if(!tmp)
+      return CURLE_OUT_OF_MEMORY;
+
+    response = tmp;
+  }
+
+  /* Return the output */
+  *outptr = response;
+  *outlen = strlen(response);
+
+  return CURLE_OK;
 }
 
 /*
 }
 
 /*
- * Curl_sasl_create_ntlm_type3_message()
+ * Curl_sasl_digest_cleanup()
+ *
+ * This is used to clean up the digest specific data.
+ *
+ * Parameters:
  *
  *
- * This is used to generate an already encoded NTLM type-3 message ready for
+ * digest    [in/out] - The digest data struct being cleaned up.
+ *
+ */
+void Curl_sasl_digest_cleanup(struct digestdata *digest)
+{
+  Curl_safefree(digest->nonce);
+  Curl_safefree(digest->cnonce);
+  Curl_safefree(digest->realm);
+  Curl_safefree(digest->opaque);
+  Curl_safefree(digest->qop);
+  Curl_safefree(digest->algorithm);
+
+  digest->nc = 0;
+  digest->algo = CURLDIGESTALGO_MD5; /* default algorithm */
+  digest->stale = FALSE; /* default means normal, not stale */
+}
+#endif  /* !USE_WINDOWS_SSPI */
+
+#endif  /* CURL_DISABLE_CRYPTO_AUTH */
+
+#if defined(USE_NTLM) && !defined(USE_WINDOWS_SSPI)
+/*
+ * Curl_sasl_ntlm_cleanup()
+ *
+ * This is used to clean up the ntlm specific data.
+ *
+ * Parameters:
+ *
+ * ntlm    [in/out] - The ntlm data struct being cleaned up.
+ *
+ */
+void Curl_sasl_ntlm_cleanup(struct ntlmdata *ntlm)
+{
+  /* Free the target info */
+  Curl_safefree(ntlm->target_info);
+
+  /* Reset any variables */
+  ntlm->target_info_len = 0;
+}
+#endif /* USE_NTLM && !USE_WINDOWS_SSPI*/
+
+/*
+ * Curl_sasl_create_xoauth2_message()
+ *
+ * This is used to generate an already encoded OAuth 2.0 message ready for
  * sending to the recipient.
  *
  * Parameters:
  *
  * sending to the recipient.
  *
  * Parameters:
  *
- * data    [in]     - Pointer to session handle.
- * header  [in]     - Pointer to the base64 encoded type-2 message buffer.
- * userp   [in]     - The user name in the format User or Domain\User.
- * passdwp [in]     - The user's password.
- * ntlm    [in/out] - The ntlm data struct being used and modified.
+ * data    [in]     - The session handle.
+ * user    [in]     - The user name.
+ * bearer  [in]     - The bearer token.
  * outptr  [in/out] - The address where a pointer to newly allocated memory
  *                    holding the result will be stored upon completion.
  * outlen  [out]    - The length of the output message.
  *
  * Returns CURLE_OK on success.
  */
  * outptr  [in/out] - The address where a pointer to newly allocated memory
  *                    holding the result will be stored upon completion.
  * outlen  [out]    - The length of the output message.
  *
  * Returns CURLE_OK on success.
  */
-CURLcode Curl_sasl_create_ntlm_type3_message(struct SessionHandle *data,
-                                             const char *header,
-                                             const char *userp,
-                                             const char *passwdp,
-                                             struct ntlmdata *ntlm,
-                                             char **outptr, size_t *outlen)
+CURLcode Curl_sasl_create_xoauth2_message(struct SessionHandle *data,
+                                          const char *user,
+                                          const char *bearer,
+                                          char **outptr, size_t *outlen)
 {
 {
-  CURLcode result = Curl_ntlm_decode_type2_message(data, header, ntlm);
+  CURLcode result = CURLE_OK;
+  char *xoauth = NULL;
+
+  /* Generate the message */
+  xoauth = aprintf("user=%s\1auth=Bearer %s\1\1", user, bearer);
+  if(!xoauth)
+    return CURLE_OUT_OF_MEMORY;
+
+  /* Base64 encode the reply */
+  result = Curl_base64_encode(data, xoauth, strlen(xoauth), outptr, outlen);
 
 
-  if(!result)
-    result = Curl_ntlm_create_type3_message(data, userp, passwdp, ntlm,
-                                            outptr, outlen);
+  Curl_safefree(xoauth);
 
   return result;
 }
 
   return result;
 }
-#endif /* USE_NTLM */
 
 /*
  * Curl_sasl_cleanup()
 
 /*
  * Curl_sasl_cleanup()
@@ -478,18 +1155,26 @@ CURLcode Curl_sasl_create_ntlm_type3_message(struct SessionHandle *data,
  *
  * Parameters:
  *
  *
  * Parameters:
  *
- * conn     [in]     - Pointer to the connection data.
+ * conn     [in]     - The connection data.
  * authused [in]     - The authentication mechanism used.
  */
 void Curl_sasl_cleanup(struct connectdata *conn, unsigned int authused)
 {
  * authused [in]     - The authentication mechanism used.
  */
 void Curl_sasl_cleanup(struct connectdata *conn, unsigned int authused)
 {
-#ifdef USE_NTLM
+#if defined(USE_KERBEROS5)
+  /* Cleanup the gssapi structure */
+  if(authused == SASL_MECH_GSSAPI) {
+    Curl_sasl_gssapi_cleanup(&conn->krb5);
+  }
+#endif
+
+#if defined(USE_NTLM)
   /* Cleanup the ntlm structure */
   if(authused == SASL_MECH_NTLM) {
   /* Cleanup the ntlm structure */
   if(authused == SASL_MECH_NTLM) {
-    Curl_ntlm_sspi_cleanup(&conn->ntlm);
+    Curl_sasl_ntlm_cleanup(&conn->ntlm);
   }
   }
-  (void)conn;
-#else
+#endif
+
+#if !defined(USE_KERBEROS5) && !defined(USE_NTLM)
   /* Reserved for future use */
   (void)conn;
   (void)authused;
   /* Reserved for future use */
   (void)conn;
   (void)authused;
index 22dcf80..41ef859 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2012 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  ***************************************************************************/
 
  *
  ***************************************************************************/
 
-#include "pingpong.h"
+#include <curl/curl.h>
 
 
-/* Authentication mechanism flags */
-#define SASL_MECH_LOGIN         (1 << 0)
-#define SASL_MECH_PLAIN         (1 << 1)
-#define SASL_MECH_CRAM_MD5      (1 << 2)
-#define SASL_MECH_DIGEST_MD5    (1 << 3)
-#define SASL_MECH_GSSAPI        (1 << 4)
-#define SASL_MECH_EXTERNAL      (1 << 5)
-#define SASL_MECH_NTLM          (1 << 6)
+struct SessionHandle;
+struct connectdata;
+
+#if !defined(CURL_DISABLE_CRYPTO_AUTH)
+struct digestdata;
+#endif
+
+#if defined(USE_NTLM)
+struct ntlmdata;
+#endif
+
+#if defined(USE_KERBEROS5)
+struct kerberos5data;
+#endif
 
 /* Authentication mechanism values */
 #define SASL_AUTH_NONE          0
 
 /* Authentication mechanism values */
 #define SASL_AUTH_NONE          0
-#define SASL_AUTH_ANY           ~0
+#define SASL_AUTH_ANY           ~0U
+
+/* Authentication mechanism flags */
+#define SASL_MECH_LOGIN             (1 << 0)
+#define SASL_MECH_PLAIN             (1 << 1)
+#define SASL_MECH_CRAM_MD5          (1 << 2)
+#define SASL_MECH_DIGEST_MD5        (1 << 3)
+#define SASL_MECH_GSSAPI            (1 << 4)
+#define SASL_MECH_EXTERNAL          (1 << 5)
+#define SASL_MECH_NTLM              (1 << 6)
+#define SASL_MECH_XOAUTH2           (1 << 7)
+
+/* Authentication mechanism strings */
+#define SASL_MECH_STRING_LOGIN      "LOGIN"
+#define SASL_MECH_STRING_PLAIN      "PLAIN"
+#define SASL_MECH_STRING_CRAM_MD5   "CRAM-MD5"
+#define SASL_MECH_STRING_DIGEST_MD5 "DIGEST-MD5"
+#define SASL_MECH_STRING_GSSAPI     "GSSAPI"
+#define SASL_MECH_STRING_EXTERNAL   "EXTERNAL"
+#define SASL_MECH_STRING_NTLM       "NTLM"
+#define SASL_MECH_STRING_XOAUTH2    "XOAUTH2"
+
+enum {
+  CURLDIGESTALGO_MD5,
+  CURLDIGESTALGO_MD5SESS
+};
+
+/* This is used to test whether the line starts with the given mechanism */
+#define sasl_mech_equal(line, wordlen, mech) \
+  (wordlen == (sizeof(mech) - 1) / sizeof(char) && \
+   !memcmp(line, mech, wordlen))
+
+/* This is used to build a SPN string */
+#if !defined(USE_WINDOWS_SSPI)
+char *Curl_sasl_build_spn(const char *service, const char *instance);
+#else
+TCHAR *Curl_sasl_build_spn(const char *service, const char *instance);
+#endif
 
 /* This is used to generate a base64 encoded PLAIN authentication message */
 CURLcode Curl_sasl_create_plain_message(struct SessionHandle *data,
 
 /* This is used to generate a base64 encoded PLAIN authentication message */
 CURLcode Curl_sasl_create_plain_message(struct SessionHandle *data,
@@ -50,9 +93,13 @@ CURLcode Curl_sasl_create_login_message(struct SessionHandle *data,
                                         size_t *outlen);
 
 #ifndef CURL_DISABLE_CRYPTO_AUTH
                                         size_t *outlen);
 
 #ifndef CURL_DISABLE_CRYPTO_AUTH
+/* This is used to decode a base64 encoded CRAM-MD5 challange message */
+CURLcode Curl_sasl_decode_cram_md5_message(const char *chlg64, char **outptr,
+                                           size_t *outlen);
+
 /* This is used to generate a base64 encoded CRAM-MD5 response message */
 CURLcode Curl_sasl_create_cram_md5_message(struct SessionHandle *data,
 /* This is used to generate a base64 encoded CRAM-MD5 response message */
 CURLcode Curl_sasl_create_cram_md5_message(struct SessionHandle *data,
-                                           const char *chlg64,
+                                           const char *chlg,
                                            const char *user,
                                            const char *passwdp,
                                            char **outptr, size_t *outlen);
                                            const char *user,
                                            const char *passwdp,
                                            char **outptr, size_t *outlen);
@@ -60,10 +107,26 @@ CURLcode Curl_sasl_create_cram_md5_message(struct SessionHandle *data,
 /* This is used to generate a base64 encoded DIGEST-MD5 response message */
 CURLcode Curl_sasl_create_digest_md5_message(struct SessionHandle *data,
                                              const char *chlg64,
 /* This is used to generate a base64 encoded DIGEST-MD5 response message */
 CURLcode Curl_sasl_create_digest_md5_message(struct SessionHandle *data,
                                              const char *chlg64,
-                                             const char *user,
+                                             const char *userp,
                                              const char *passwdp,
                                              const char *service,
                                              char **outptr, size_t *outlen);
                                              const char *passwdp,
                                              const char *service,
                                              char **outptr, size_t *outlen);
+
+/* This is used to decode a HTTP DIGEST challenge message */
+CURLcode Curl_sasl_decode_digest_http_message(const char *chlg,
+                                              struct digestdata *digest);
+
+/* This is used to generate a HTTP DIGEST response message */
+CURLcode Curl_sasl_create_digest_http_message(struct SessionHandle *data,
+                                              const char *userp,
+                                              const char *passwdp,
+                                              const unsigned char *request,
+                                              const unsigned char *uri,
+                                              struct digestdata *digest,
+                                              char **outptr, size_t *outlen);
+
+/* This is used to clean up the digest specific data */
+void Curl_sasl_digest_cleanup(struct digestdata *digest);
 #endif
 
 #ifdef USE_NTLM
 #endif
 
 #ifdef USE_NTLM
@@ -74,17 +137,54 @@ CURLcode Curl_sasl_create_ntlm_type1_message(const char *userp,
                                              char **outptr,
                                              size_t *outlen);
 
                                              char **outptr,
                                              size_t *outlen);
 
-/* This is used to decode an incoming NTLM type-2 message and generate a
-   base64 encoded type-3 response */
+/* This is used to decode a base64 encoded NTLM type-2 message */
+CURLcode Curl_sasl_decode_ntlm_type2_message(struct SessionHandle *data,
+                                             const char *type2msg,
+                                             struct ntlmdata *ntlm);
+
+/* This is used to generate a base64 encoded NTLM type-3 message */
 CURLcode Curl_sasl_create_ntlm_type3_message(struct SessionHandle *data,
 CURLcode Curl_sasl_create_ntlm_type3_message(struct SessionHandle *data,
-                                             const char *header,
                                              const char *userp,
                                              const char *passwdp,
                                              struct ntlmdata *ntlm,
                                              char **outptr, size_t *outlen);
 
                                              const char *userp,
                                              const char *passwdp,
                                              struct ntlmdata *ntlm,
                                              char **outptr, size_t *outlen);
 
+/* This is used to clean up the ntlm specific data */
+void Curl_sasl_ntlm_cleanup(struct ntlmdata *ntlm);
+
 #endif /* USE_NTLM */
 
 #endif /* USE_NTLM */
 
+#if defined(USE_KERBEROS5)
+/* This is used to generate a base64 encoded GSSAPI (Kerberos V5) user token
+   message */
+CURLcode Curl_sasl_create_gssapi_user_message(struct SessionHandle *data,
+                                              const char *userp,
+                                              const char *passwdp,
+                                              const char *service,
+                                              const bool mutual,
+                                              const char *chlg64,
+                                              struct kerberos5data *krb5,
+                                              char **outptr, size_t *outlen);
+
+/* This is used to generate a base64 encoded GSSAPI (Kerberos V5) security
+   token message */
+CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
+                                                  const char *input,
+                                                  struct kerberos5data *krb5,
+                                                  char **outptr,
+                                                  size_t *outlen);
+
+/* This is used to clean up the gssapi specific data */
+void Curl_sasl_gssapi_cleanup(struct kerberos5data *krb5);
+#endif /* USE_KERBEROS5 */
+
+/* This is used to generate a base64 encoded XOAUTH2 authentication message
+   containing the user name and bearer token */
+CURLcode Curl_sasl_create_xoauth2_message(struct SessionHandle *data,
+                                          const char *user,
+                                          const char *bearer,
+                                          char **outptr, size_t *outlen);
+
 /* This is used to cleanup any libraries or curl modules used by the sasl
    functions */
 void Curl_sasl_cleanup(struct connectdata *conn, unsigned int authused);
 /* This is used to cleanup any libraries or curl modules used by the sasl
    functions */
 void Curl_sasl_cleanup(struct connectdata *conn, unsigned int authused);
diff --git a/lib/curl_sasl_gssapi.c b/lib/curl_sasl_gssapi.c
new file mode 100644 (file)
index 0000000..6dda0e9
--- /dev/null
@@ -0,0 +1,398 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 2014, Steve Holme, <steve_holme@hotmail.com>.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * RFC4752 The Kerberos V5 ("GSSAPI") SASL Mechanism
+ *
+ ***************************************************************************/
+
+#include "curl_setup.h"
+
+#if defined(HAVE_GSSAPI) && defined(USE_KERBEROS5)
+
+#ifdef HAVE_OLD_GSSMIT
+#define GSS_C_NT_HOSTBASED_SERVICE gss_nt_service_name
+#define NCOMPAT 1
+#endif
+
+#define GSSAUTH_P_NONE      1
+#define GSSAUTH_P_INTEGRITY 2
+#define GSSAUTH_P_PRIVACY   4
+
+#include <curl/curl.h>
+
+#include "curl_sasl.h"
+#include "urldata.h"
+#include "curl_base64.h"
+#include "curl_gssapi.h"
+#include "curl_memory.h"
+#include "sendf.h"
+
+#define _MPRINTF_REPLACE /* use our functions only */
+#include <curl/mprintf.h>
+
+/* The last #include file should be: */
+#include "memdebug.h"
+
+/*
+* Curl_sasl_build_gssapi_spn()
+*
+* This is used to build a SPN string in the format service@host.
+*
+* Parameters:
+*
+* serivce  [in] - The service type such as www, smtp, pop or imap.
+* host     [in] - The host name or realm.
+*
+* Returns a pointer to the newly allocated SPN.
+*/
+static char *Curl_sasl_build_gssapi_spn(const char *service, const char *host)
+{
+  /* Generate and return our SPN */
+  return aprintf("%s@%s", service, host);
+}
+
+/*
+ * Curl_sasl_create_gssapi_user_message()
+ *
+ * This is used to generate an already encoded GSSAPI (Kerberos V5) user token
+ * message ready for sending to the recipient.
+ *
+ * Parameters:
+ *
+ * data        [in]     - The session handle.
+ * userp       [in]     - The user name.
+ * passdwp     [in]     - The user's password.
+ * service     [in]     - The service type such as www, smtp, pop or imap.
+ * mutual_auth [in]     - Flag specifing whether or not mutual authentication
+ *                        is enabled.
+ * chlg64      [in]     - Pointer to the optional base64 encoded challenge
+ *                        message.
+ * krb5        [in/out] - The gssapi data struct being used and modified.
+ * outptr      [in/out] - The address where a pointer to newly allocated memory
+ *                        holding the result will be stored upon completion.
+ * outlen      [out]    - The length of the output message.
+ *
+ * Returns CURLE_OK on success.
+ */
+CURLcode Curl_sasl_create_gssapi_user_message(struct SessionHandle *data,
+                                              const char *userp,
+                                              const char *passwdp,
+                                              const char *service,
+                                              const bool mutual_auth,
+                                              const char *chlg64,
+                                              struct kerberos5data *krb5,
+                                              char **outptr, size_t *outlen)
+{
+  CURLcode result = CURLE_OK;
+  size_t chlglen = 0;
+  unsigned char *chlg = NULL;
+  OM_uint32 gss_status;
+  OM_uint32 gss_major_status;
+  OM_uint32 gss_minor_status;
+  gss_buffer_desc spn_token = GSS_C_EMPTY_BUFFER;
+  gss_buffer_desc input_token = GSS_C_EMPTY_BUFFER;
+  gss_buffer_desc output_token = GSS_C_EMPTY_BUFFER;
+
+  (void) userp;
+  (void) passwdp;
+
+  if(krb5->context == GSS_C_NO_CONTEXT) {
+    /* Generate our SPN */
+    char *spn = Curl_sasl_build_gssapi_spn(service,
+                                           data->easy_conn->host.name);
+    if(!spn)
+      return CURLE_OUT_OF_MEMORY;
+
+    /* Populate the SPN structure */
+    spn_token.value = spn;
+    spn_token.length = strlen(spn);
+
+    /* Import the SPN */
+    gss_major_status = gss_import_name(&gss_minor_status, &spn_token,
+                                       gss_nt_service_name, &krb5->spn);
+    if(GSS_ERROR(gss_major_status)) {
+      Curl_gss_log_error(data, gss_minor_status, "gss_import_name() failed: ");
+
+      return CURLE_OUT_OF_MEMORY;
+    }
+  }
+  else {
+    /* Decode the base-64 encoded challenge message */
+    if(strlen(chlg64) && *chlg64 != '=') {
+      result = Curl_base64_decode(chlg64, &chlg, &chlglen);
+      if(result)
+        return result;
+    }
+
+    /* Ensure we have a valid challenge message */
+    if(!chlg) {
+      infof(data, "GSSAPI handshake failure (empty challenge message)\n");
+
+      return CURLE_BAD_CONTENT_ENCODING;
+    }
+
+    /* Setup the challenge "input" security buffer */
+    input_token.value = chlg;
+    input_token.length = chlglen;
+  }
+
+  gss_major_status = Curl_gss_init_sec_context(data,
+                                               &gss_minor_status,
+                                               &krb5->context,
+                                               krb5->spn,
+                                               &Curl_krb5_mech_oid,
+                                               GSS_C_NO_CHANNEL_BINDINGS,
+                                               &input_token,
+                                               &output_token,
+                                               mutual_auth,
+                                               NULL);
+
+  Curl_safefree(input_token.value);
+
+  if(GSS_ERROR(gss_major_status)) {
+    if(output_token.value)
+      gss_release_buffer(&gss_status, &output_token);
+
+    Curl_gss_log_error(data, gss_minor_status,
+                       "gss_init_sec_context() failed: ");
+
+    return CURLE_RECV_ERROR;
+  }
+
+  if(output_token.value && output_token.length) {
+    /* Base64 encode the response */
+    result = Curl_base64_encode(data, (char *) output_token.value,
+                                output_token.length, outptr, outlen);
+
+    gss_release_buffer(&gss_status, &output_token);
+  }
+
+  return result;
+}
+
+/*
+ * Curl_sasl_create_gssapi_security_message()
+ *
+ * This is used to generate an already encoded GSSAPI (Kerberos V5) security
+ * token message ready for sending to the recipient.
+ *
+ * Parameters:
+ *
+ * data    [in]     - The session handle.
+ * chlg64  [in]     - Pointer to the optional base64 encoded challenge message.
+ * krb5    [in/out] - The gssapi data struct being used and modified.
+ * outptr  [in/out] - The address where a pointer to newly allocated memory
+ *                    holding the result will be stored upon completion.
+ * outlen  [out]    - The length of the output message.
+ *
+ * Returns CURLE_OK on success.
+ */
+CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
+                                                  const char *chlg64,
+                                                  struct kerberos5data *krb5,
+                                                  char **outptr,
+                                                  size_t *outlen)
+{
+  CURLcode result = CURLE_OK;
+  size_t chlglen = 0;
+  size_t messagelen = 0;
+  unsigned char *chlg = NULL;
+  unsigned char *message = NULL;
+  OM_uint32 gss_status;
+  OM_uint32 gss_major_status;
+  OM_uint32 gss_minor_status;
+  gss_buffer_desc input_token = GSS_C_EMPTY_BUFFER;
+  gss_buffer_desc output_token = GSS_C_EMPTY_BUFFER;
+  unsigned int indata = 0;
+  unsigned int outdata = 0;
+  gss_qop_t qop = GSS_C_QOP_DEFAULT;
+  unsigned int sec_layer = 0;
+  unsigned int max_size = 0;
+  gss_name_t username = GSS_C_NO_NAME;
+  gss_buffer_desc username_token;
+
+  /* Decode the base-64 encoded input message */
+  if(strlen(chlg64) && *chlg64 != '=') {
+    result = Curl_base64_decode(chlg64, &chlg, &chlglen);
+    if(result)
+      return result;
+  }
+
+  /* Ensure we have a valid challenge message */
+  if(!chlg) {
+    infof(data, "GSSAPI handshake failure (empty security message)\n");
+
+    return CURLE_BAD_CONTENT_ENCODING;
+  }
+
+  /* Get the fully qualified username back from the context */
+  gss_major_status = gss_inquire_context(&gss_minor_status, krb5->context,
+                                         &username, NULL, NULL, NULL, NULL,
+                                         NULL, NULL);
+  if(GSS_ERROR(gss_major_status)) {
+    Curl_gss_log_error(data, gss_minor_status,
+                       "gss_inquire_context() failed: ");
+
+    Curl_safefree(chlg);
+
+    return CURLE_OUT_OF_MEMORY;
+  }
+
+  /* Convert the username from internal format to a displayable token */
+  gss_major_status = gss_display_name(&gss_minor_status, username,
+                                      &username_token, NULL);
+  if(GSS_ERROR(gss_major_status)) {
+    Curl_gss_log_error(data, gss_minor_status, "gss_display_name() failed: ");
+
+    Curl_safefree(chlg);
+
+    return CURLE_OUT_OF_MEMORY;
+  }
+
+  /* Setup the challenge "input" security buffer */
+  input_token.value = chlg;
+  input_token.length = chlglen;
+
+  /* Decrypt the inbound challenge and obtain the qop */
+  gss_major_status = gss_unwrap(&gss_minor_status, krb5->context, &input_token,
+                                &output_token, NULL, &qop);
+  if(GSS_ERROR(gss_major_status)) {
+    Curl_gss_log_error(data, gss_minor_status, "gss_unwrap() failed: ");
+
+    gss_release_buffer(&gss_status, &username_token);
+    Curl_safefree(chlg);
+
+    return CURLE_BAD_CONTENT_ENCODING;
+  }
+
+  /* Not 4 octets long so fail as per RFC4752 Section 3.1 */
+  if(output_token.length != 4) {
+    infof(data, "GSSAPI handshake failure (invalid security data)\n");
+
+    gss_release_buffer(&gss_status, &username_token);
+    Curl_safefree(chlg);
+
+    return CURLE_BAD_CONTENT_ENCODING;
+  }
+
+  /* Copy the data out and free the challenge as it is not required anymore */
+  memcpy(&indata, output_token.value, 4);
+  gss_release_buffer(&gss_status, &output_token);
+  Curl_safefree(chlg);
+
+  /* Extract the security layer */
+  sec_layer = indata & 0x000000FF;
+  if(!(sec_layer & GSSAUTH_P_NONE)) {
+    infof(data, "GSSAPI handshake failure (invalid security layer)\n");
+
+    gss_release_buffer(&gss_status, &username_token);
+
+    return CURLE_BAD_CONTENT_ENCODING;
+  }
+
+  /* Extract the maximum message size the server can receive */
+  max_size = ntohl(indata & 0xFFFFFF00);
+  if(max_size > 0) {
+    /* The server has told us it supports a maximum receive buffer, however, as
+       we don't require one unless we are encrypting data, we tell the server
+       our receive buffer is zero. */
+    max_size = 0;
+  }
+
+  /* Allocate our message */
+  messagelen = sizeof(outdata) + username_token.length + 1;
+  message = malloc(messagelen);
+  if(!message) {
+    gss_release_buffer(&gss_status, &username_token);
+
+    return CURLE_OUT_OF_MEMORY;
+  }
+
+  /* Populate the message with the security layer, client supported receive
+     message size and authorization identity including the 0x00 based
+     terminator. Note: Dispite RFC4752 Section 3.1 stating "The authorization
+     identity is not terminated with the zero-valued (%x00) octet." it seems
+     necessary to include it. */
+  outdata = htonl(max_size) | sec_layer;
+  memcpy(message, &outdata, sizeof(outdata));
+  memcpy(message + sizeof(outdata), username_token.value,
+         username_token.length);
+  message[messagelen - 1] = '\0';
+
+  /* Free the username token as it is not required anymore */
+  gss_release_buffer(&gss_status, &username_token);
+
+  /* Setup the "authentication data" security buffer */
+  input_token.value = message;
+  input_token.length = messagelen;
+
+  /* Encrypt the data */
+  gss_major_status = gss_wrap(&gss_minor_status, krb5->context, 0,
+                              GSS_C_QOP_DEFAULT, &input_token, NULL,
+                              &output_token);
+  if(GSS_ERROR(gss_major_status)) {
+    Curl_gss_log_error(data, gss_minor_status, "gss_wrap() failed: ");
+
+    Curl_safefree(message);
+
+    return CURLE_OUT_OF_MEMORY;
+  }
+
+  /* Base64 encode the response */
+  result = Curl_base64_encode(data, (char *) output_token.value,
+                              output_token.length, outptr, outlen);
+
+  /* Free the output buffer */
+  gss_release_buffer(&gss_status, &output_token);
+
+  /* Free the message buffer */
+  Curl_safefree(message);
+
+  return result;
+}
+
+/*
+ * Curl_sasl_gssapi_cleanup()
+ *
+ * This is used to clean up the gssapi specific data.
+ *
+ * Parameters:
+ *
+ * krb5     [in/out] - The kerberos 5 data struct being cleaned up.
+ *
+ */
+void Curl_sasl_gssapi_cleanup(struct kerberos5data *krb5)
+{
+  OM_uint32 minor_status;
+
+  /* Free our security context */
+  if(krb5->context != GSS_C_NO_CONTEXT) {
+    gss_delete_sec_context(&minor_status, &krb5->context, GSS_C_NO_BUFFER);
+    krb5->context = GSS_C_NO_CONTEXT;
+  }
+
+  /* Free the SPN */
+  if(krb5->spn != GSS_C_NO_NAME) {
+    gss_release_name(&minor_status, &krb5->spn);
+    krb5->spn = GSS_C_NO_NAME;
+  }
+}
+
+#endif /* HAVE_GSSAPI && USE_KERBEROS5 */
diff --git a/lib/curl_sasl_sspi.c b/lib/curl_sasl_sspi.c
new file mode 100644 (file)
index 0000000..0509b75
--- /dev/null
@@ -0,0 +1,1209 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 2014, Steve Holme, <steve_holme@hotmail.com>.
+ * Copyright (C) 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * RFC2617 Basic and Digest Access Authentication
+ * RFC2831 DIGEST-MD5 authentication
+ * RFC4422 Simple Authentication and Security Layer (SASL)
+ * RFC4752 The Kerberos V5 ("GSSAPI") SASL Mechanism
+ *
+ ***************************************************************************/
+
+#include "curl_setup.h"
+
+#if defined(USE_WINDOWS_SSPI)
+
+#include <curl/curl.h>
+
+#include "curl_sasl.h"
+#include "urldata.h"
+#include "curl_base64.h"
+#include "warnless.h"
+#include "curl_memory.h"
+#include "curl_multibyte.h"
+#include "sendf.h"
+#include "strdup.h"
+
+#define _MPRINTF_REPLACE /* use our functions only */
+#include <curl/mprintf.h>
+
+/* The last #include file should be: */
+#include "memdebug.h"
+
+/*
+ * Curl_sasl_build_spn()
+ *
+ * This is used to build a SPN string in the format service/host.
+ *
+ * Parameters:
+ *
+ * serivce  [in] - The service type such as www, smtp, pop or imap.
+ * host     [in] - The host name or realm.
+ *
+ * Returns a pointer to the newly allocated SPN.
+ */
+TCHAR *Curl_sasl_build_spn(const char *service, const char *host)
+{
+  char *utf8_spn = NULL;
+  TCHAR *tchar_spn = NULL;
+
+  /* Note: We could use DsMakeSPN() or DsClientMakeSpnForTargetServer() rather
+     than doing this ourselves but the first is only available in Windows XP
+     and Windows Server 2003 and the latter is only available in Windows 2000
+     but not Windows95/98/ME or Windows NT4.0 unless the Active Directory
+     Client Extensions are installed. As such it is far simpler for us to
+     formulate the SPN instead. */
+
+  /* Allocate our UTF8 based SPN */
+  utf8_spn = aprintf("%s/%s", service, host);
+  if(!utf8_spn) {
+    return NULL;
+  }
+
+  /* Allocate our TCHAR based SPN */
+  tchar_spn = Curl_convert_UTF8_to_tchar(utf8_spn);
+  if(!tchar_spn) {
+    Curl_safefree(utf8_spn);
+
+    return NULL;
+  }
+
+  /* Release the UTF8 variant when operating with Unicode */
+  Curl_unicodefree(utf8_spn);
+
+  /* Return our newly allocated SPN */
+  return tchar_spn;
+}
+
+#if !defined(CURL_DISABLE_CRYPTO_AUTH)
+/*
+ * Curl_sasl_create_digest_md5_message()
+ *
+ * This is used to generate an already encoded DIGEST-MD5 response message
+ * ready for sending to the recipient.
+ *
+ * Parameters:
+ *
+ * data    [in]     - The session handle.
+ * chlg64  [in]     - The base64 encoded challenge message.
+ * userp   [in]     - The user name in the format User or Domain\User.
+ * passdwp [in]     - The user's password.
+ * service [in]     - The service type such as www, smtp, pop or imap.
+ * outptr  [in/out] - The address where a pointer to newly allocated memory
+ *                    holding the result will be stored upon completion.
+ * outlen  [out]    - The length of the output message.
+ *
+ * Returns CURLE_OK on success.
+ */
+CURLcode Curl_sasl_create_digest_md5_message(struct SessionHandle *data,
+                                             const char *chlg64,
+                                             const char *userp,
+                                             const char *passwdp,
+                                             const char *service,
+                                             char **outptr, size_t *outlen)
+{
+  CURLcode result = CURLE_OK;
+  TCHAR *spn = NULL;
+  size_t chlglen = 0;
+  size_t token_max = 0;
+  unsigned char *input_token = NULL;
+  unsigned char *output_token = NULL;
+  CredHandle credentials;
+  CtxtHandle context;
+  PSecPkgInfo SecurityPackage;
+  SEC_WINNT_AUTH_IDENTITY identity;
+  SEC_WINNT_AUTH_IDENTITY *p_identity;
+  SecBuffer chlg_buf;
+  SecBuffer resp_buf;
+  SecBufferDesc chlg_desc;
+  SecBufferDesc resp_desc;
+  SECURITY_STATUS status;
+  unsigned long attrs;
+  TimeStamp expiry; /* For Windows 9x compatibility of SSPI calls */
+
+  /* Decode the base-64 encoded challenge message */
+  if(strlen(chlg64) && *chlg64 != '=') {
+    result = Curl_base64_decode(chlg64, &input_token, &chlglen);
+    if(result)
+      return result;
+  }
+
+  /* Ensure we have a valid challenge message */
+  if(!input_token) {
+    infof(data, "DIGEST-MD5 handshake failure (empty challenge message)\n");
+
+    return CURLE_BAD_CONTENT_ENCODING;
+  }
+
+  /* Query the security package for DigestSSP */
+  status = s_pSecFn->QuerySecurityPackageInfo((TCHAR *) TEXT(SP_NAME_DIGEST),
+                                              &SecurityPackage);
+  if(status != SEC_E_OK) {
+    Curl_safefree(input_token);
+
+    return CURLE_NOT_BUILT_IN;
+  }
+
+  token_max = SecurityPackage->cbMaxToken;
+
+  /* Release the package buffer as it is not required anymore */
+  s_pSecFn->FreeContextBuffer(SecurityPackage);
+
+  /* Allocate our response buffer */
+  output_token = malloc(token_max);
+  if(!output_token) {
+    Curl_safefree(input_token);
+
+    return CURLE_OUT_OF_MEMORY;
+  }
+
+  /* Generate our SPN */
+  spn = Curl_sasl_build_spn(service, data->easy_conn->host.name);
+  if(!spn) {
+    Curl_safefree(output_token);
+    Curl_safefree(input_token);
+
+    return CURLE_OUT_OF_MEMORY;
+  }
+
+  if(userp && *userp) {
+    /* Populate our identity structure */
+    result = Curl_create_sspi_identity(userp, passwdp, &identity);
+    if(result) {
+      Curl_safefree(spn);
+      Curl_safefree(output_token);
+      Curl_safefree(input_token);
+
+      return result;
+    }
+
+    /* Allow proper cleanup of the identity structure */
+    p_identity = &identity;
+  }
+  else
+    /* Use the current Windows user */
+    p_identity = NULL;
+
+  /* Acquire our credentials handle */
+  status = s_pSecFn->AcquireCredentialsHandle(NULL,
+                                              (TCHAR *) TEXT(SP_NAME_DIGEST),
+                                              SECPKG_CRED_OUTBOUND, NULL,
+                                              p_identity, NULL, NULL,
+                                              &credentials, &expiry);
+
+  if(status != SEC_E_OK) {
+    Curl_sspi_free_identity(p_identity);
+    Curl_safefree(spn);
+    Curl_safefree(output_token);
+    Curl_safefree(input_token);
+
+    return CURLE_LOGIN_DENIED;
+  }
+
+  /* Setup the challenge "input" security buffer */
+  chlg_desc.ulVersion = SECBUFFER_VERSION;
+  chlg_desc.cBuffers  = 1;
+  chlg_desc.pBuffers  = &chlg_buf;
+  chlg_buf.BufferType = SECBUFFER_TOKEN;
+  chlg_buf.pvBuffer   = input_token;
+  chlg_buf.cbBuffer   = curlx_uztoul(chlglen);
+
+  /* Setup the response "output" security buffer */
+  resp_desc.ulVersion = SECBUFFER_VERSION;
+  resp_desc.cBuffers  = 1;
+  resp_desc.pBuffers  = &resp_buf;
+  resp_buf.BufferType = SECBUFFER_TOKEN;
+  resp_buf.pvBuffer   = output_token;
+  resp_buf.cbBuffer   = curlx_uztoul(token_max);
+
+  /* Generate our response message */
+  status = s_pSecFn->InitializeSecurityContext(&credentials, NULL, spn,
+                                               0, 0, 0, &chlg_desc, 0,
+                                               &context, &resp_desc, &attrs,
+                                               &expiry);
+
+  if(status == SEC_I_COMPLETE_NEEDED ||
+     status == SEC_I_COMPLETE_AND_CONTINUE)
+    s_pSecFn->CompleteAuthToken(&credentials, &resp_desc);
+  else if(status != SEC_E_OK && status != SEC_I_CONTINUE_NEEDED) {
+    s_pSecFn->FreeCredentialsHandle(&credentials);
+    Curl_sspi_free_identity(p_identity);
+    Curl_safefree(spn);
+    Curl_safefree(output_token);
+    Curl_safefree(input_token);
+
+    return CURLE_RECV_ERROR;
+  }
+
+  /* Base64 encode the response */
+  result = Curl_base64_encode(data, (char *) output_token, resp_buf.cbBuffer,
+                              outptr, outlen);
+
+  /* Free our handles */
+  s_pSecFn->DeleteSecurityContext(&context);
+  s_pSecFn->FreeCredentialsHandle(&credentials);
+
+  /* Free the identity structure */
+  Curl_sspi_free_identity(p_identity);
+
+  /* Free the SPN */
+  Curl_safefree(spn);
+
+  /* Free the response buffer */
+  Curl_safefree(output_token);
+
+  /* Free the decoded challenge message */
+  Curl_safefree(input_token);
+
+  return result;
+}
+
+/*
+ * Curl_sasl_decode_digest_http_message()
+ *
+ * This is used to decode a HTTP DIGEST challenge message into the seperate
+ * attributes.
+ *
+ * Parameters:
+ *
+ * chlg    [in]     - The challenge message.
+ * digest  [in/out] - The digest data struct being used and modified.
+ *
+ * Returns CURLE_OK on success.
+ */
+CURLcode Curl_sasl_decode_digest_http_message(const char *chlg,
+                                              struct digestdata *digest)
+{
+  size_t chlglen = strlen(chlg);
+
+  /* We had an input token before and we got another one now. This means we
+  provided bad credentials in the previous request. */
+  if(digest->input_token)
+    return CURLE_BAD_CONTENT_ENCODING;
+
+  /* Simply store the challenge for use later */
+  digest->input_token = (BYTE *) Curl_memdup(chlg, chlglen);
+  if(!digest->input_token)
+    return CURLE_OUT_OF_MEMORY;
+
+  digest->input_token_len = chlglen;
+
+  return CURLE_OK;
+}
+
+/*
+ * Curl_sasl_create_digest_http_message()
+ *
+ * This is used to generate a HTTP DIGEST response message ready for sending
+ * to the recipient.
+ *
+ * Parameters:
+ *
+ * data    [in]     - The session handle.
+ * userp   [in]     - The user name in the format User or Domain\User.
+ * passdwp [in]     - The user's password.
+ * request [in]     - The HTTP request.
+ * uripath [in]     - The path of the HTTP uri.
+ * digest  [in/out] - The digest data struct being used and modified.
+ * outptr  [in/out] - The address where a pointer to newly allocated memory
+ *                    holding the result will be stored upon completion.
+ * outlen  [out]    - The length of the output message.
+ *
+ * Returns CURLE_OK on success.
+ */
+CURLcode Curl_sasl_create_digest_http_message(struct SessionHandle *data,
+                                              const char *userp,
+                                              const char *passwdp,
+                                              const unsigned char *request,
+                                              const unsigned char *uripath,
+                                              struct digestdata *digest,
+                                              char **outptr, size_t *outlen)
+{
+  size_t token_max;
+  CredHandle credentials;
+  CtxtHandle context;
+  char *resp;
+  BYTE *output_token;
+  PSecPkgInfo SecurityPackage;
+  SEC_WINNT_AUTH_IDENTITY identity;
+  SEC_WINNT_AUTH_IDENTITY *p_identity;
+  SecBuffer chlg_buf[3];
+  SecBuffer resp_buf;
+  SecBufferDesc chlg_desc;
+  SecBufferDesc resp_desc;
+  SECURITY_STATUS status;
+  unsigned long attrs;
+  TimeStamp expiry; /* For Windows 9x compatibility of SSPI calls */
+
+  (void) data;
+
+  /* Query the security package for DigestSSP */
+  status = s_pSecFn->QuerySecurityPackageInfo((TCHAR *) TEXT(SP_NAME_DIGEST),
+                                              &SecurityPackage);
+  if(status != SEC_E_OK)
+    return CURLE_NOT_BUILT_IN;
+
+  token_max = SecurityPackage->cbMaxToken;
+
+  /* Release the package buffer as it is not required anymore */
+  s_pSecFn->FreeContextBuffer(SecurityPackage);
+
+  /* Allocate the output buffer according to the max token size as indicated
+     by the security package */
+  output_token = malloc(token_max);
+  if(!output_token)
+    return CURLE_OUT_OF_MEMORY;
+
+  if(userp && *userp) {
+    /* Populate our identity structure */
+    if(Curl_create_sspi_identity(userp, passwdp, &identity))
+      return CURLE_OUT_OF_MEMORY;
+
+    /* Allow proper cleanup of the identity structure */
+    p_identity = &identity;
+  }
+  else
+    /* Use the current Windows user */
+    p_identity = NULL;
+
+  /* Acquire our credentials handle */
+  status = s_pSecFn->AcquireCredentialsHandle(NULL,
+                                              (TCHAR *) TEXT(SP_NAME_DIGEST),
+                                              SECPKG_CRED_OUTBOUND, NULL,
+                                              p_identity, NULL, NULL,
+                                              &credentials, &expiry);
+  if(status != SEC_E_OK) {
+    Curl_safefree(output_token);
+
+    return CURLE_LOGIN_DENIED;
+  }
+
+  /* Setup the challenge "input" security buffer if present */
+  chlg_desc.ulVersion    = SECBUFFER_VERSION;
+  chlg_desc.cBuffers     = 3;
+  chlg_desc.pBuffers     = chlg_buf;
+  chlg_buf[0].BufferType = SECBUFFER_TOKEN;
+  chlg_buf[0].pvBuffer   = digest->input_token;
+  chlg_buf[0].cbBuffer   = curlx_uztoul(digest->input_token_len);
+  chlg_buf[1].BufferType = SECBUFFER_PKG_PARAMS;
+  chlg_buf[1].pvBuffer   = (void *)request;
+  chlg_buf[1].cbBuffer   = curlx_uztoul(strlen((const char *) request));
+  chlg_buf[2].BufferType = SECBUFFER_PKG_PARAMS;
+  chlg_buf[2].pvBuffer   = NULL;
+  chlg_buf[2].cbBuffer   = 0;
+
+  /* Setup the response "output" security buffer */
+  resp_desc.ulVersion = SECBUFFER_VERSION;
+  resp_desc.cBuffers  = 1;
+  resp_desc.pBuffers  = &resp_buf;
+  resp_buf.BufferType = SECBUFFER_TOKEN;
+  resp_buf.pvBuffer   = output_token;
+  resp_buf.cbBuffer   = curlx_uztoul(token_max);
+
+  /* Generate our reponse message */
+  status = s_pSecFn->InitializeSecurityContext(&credentials, NULL,
+                                               (TCHAR *) uripath,
+                                               ISC_REQ_USE_HTTP_STYLE, 0, 0,
+                                               &chlg_desc, 0, &context,
+                                               &resp_desc, &attrs, &expiry);
+
+  if(status == SEC_I_COMPLETE_NEEDED ||
+     status == SEC_I_COMPLETE_AND_CONTINUE)
+    s_pSecFn->CompleteAuthToken(&credentials, &resp_desc);
+  else if(status != SEC_E_OK && status != SEC_I_CONTINUE_NEEDED) {
+    s_pSecFn->FreeCredentialsHandle(&credentials);
+
+    Curl_safefree(output_token);
+
+    return CURLE_OUT_OF_MEMORY;
+  }
+
+  resp = malloc(resp_buf.cbBuffer + 1);
+  if(!resp) {
+    s_pSecFn->DeleteSecurityContext(&context);
+    s_pSecFn->FreeCredentialsHandle(&credentials);
+
+    Curl_safefree(output_token);
+
+    return CURLE_OUT_OF_MEMORY;
+  }
+
+  /* Copy the generated reponse */
+  memcpy(resp, resp_buf.pvBuffer, resp_buf.cbBuffer);
+  resp[resp_buf.cbBuffer] = 0x00;
+
+  /* Return the response */
+  *outptr = resp;
+  *outlen = resp_buf.cbBuffer;
+
+  /* Free our handles */
+  s_pSecFn->DeleteSecurityContext(&context);
+  s_pSecFn->FreeCredentialsHandle(&credentials);
+
+  /* Free the identity structure */
+  Curl_sspi_free_identity(p_identity);
+
+  /* Free the response buffer */
+  Curl_safefree(output_token);
+
+  return CURLE_OK;
+}
+
+/*
+ * Curl_sasl_digest_cleanup()
+ *
+ * This is used to clean up the digest specific data.
+ *
+ * Parameters:
+ *
+ * digest    [in/out] - The digest data struct being cleaned up.
+ *
+ */
+void Curl_sasl_digest_cleanup(struct digestdata *digest)
+{
+  /* Free the input token */
+  Curl_safefree(digest->input_token);
+
+  /* Reset any variables */
+  digest->input_token_len = 0;
+}
+#endif /* !CURL_DISABLE_CRYPTO_AUTH */
+
+#if defined USE_NTLM
+/*
+* Curl_sasl_create_ntlm_type1_message()
+*
+* This is used to generate an already encoded NTLM type-1 message ready for
+* sending to the recipient.
+*
+* Parameters:
+*
+* userp   [in]     - The user name in the format User or Domain\User.
+* passdwp [in]     - The user's password.
+* ntlm    [in/out] - The ntlm data struct being used and modified.
+* outptr  [in/out] - The address where a pointer to newly allocated memory
+*                    holding the result will be stored upon completion.
+* outlen  [out]    - The length of the output message.
+*
+* Returns CURLE_OK on success.
+*/
+CURLcode Curl_sasl_create_ntlm_type1_message(const char *userp,
+                                             const char *passwdp,
+                                             struct ntlmdata *ntlm,
+                                             char **outptr, size_t *outlen)
+{
+  PSecPkgInfo SecurityPackage;
+  SecBuffer type_1_buf;
+  SecBufferDesc type_1_desc;
+  SECURITY_STATUS status;
+  unsigned long attrs;
+  TimeStamp expiry; /* For Windows 9x compatibility of SSPI calls */
+
+  /* Clean up any former leftovers and initialise to defaults */
+  Curl_sasl_ntlm_cleanup(ntlm);
+
+  /* Query the security package for NTLM */
+  status = s_pSecFn->QuerySecurityPackageInfo((TCHAR *) TEXT(SP_NAME_NTLM),
+                                              &SecurityPackage);
+  if(status != SEC_E_OK)
+    return CURLE_NOT_BUILT_IN;
+
+  ntlm->token_max = SecurityPackage->cbMaxToken;
+
+  /* Release the package buffer as it is not required anymore */
+  s_pSecFn->FreeContextBuffer(SecurityPackage);
+
+  /* Allocate our output buffer */
+  ntlm->output_token = malloc(ntlm->token_max);
+  if(!ntlm->output_token)
+    return CURLE_OUT_OF_MEMORY;
+
+  if(userp && *userp) {
+    CURLcode result;
+
+    /* Populate our identity structure */
+    result = Curl_create_sspi_identity(userp, passwdp, &ntlm->identity);
+    if(result)
+      return result;
+
+    /* Allow proper cleanup of the identity structure */
+    ntlm->p_identity = &ntlm->identity;
+  }
+  else
+    /* Use the current Windows user */
+    ntlm->p_identity = NULL;
+
+  /* Allocate our credentials handle */
+  ntlm->credentials = malloc(sizeof(CredHandle));
+  if(!ntlm->credentials)
+    return CURLE_OUT_OF_MEMORY;
+
+  memset(ntlm->credentials, 0, sizeof(CredHandle));
+
+  /* Acquire our credentials handle */
+  status = s_pSecFn->AcquireCredentialsHandle(NULL,
+                                              (TCHAR *) TEXT(SP_NAME_NTLM),
+                                              SECPKG_CRED_OUTBOUND, NULL,
+                                              ntlm->p_identity, NULL, NULL,
+                                              ntlm->credentials, &expiry);
+  if(status != SEC_E_OK)
+    return CURLE_LOGIN_DENIED;
+
+  /* Allocate our new context handle */
+  ntlm->context = malloc(sizeof(CtxtHandle));
+  if(!ntlm->context)
+    return CURLE_OUT_OF_MEMORY;
+
+  memset(ntlm->context, 0, sizeof(CtxtHandle));
+
+  /* Setup the type-1 "output" security buffer */
+  type_1_desc.ulVersion = SECBUFFER_VERSION;
+  type_1_desc.cBuffers  = 1;
+  type_1_desc.pBuffers  = &type_1_buf;
+  type_1_buf.BufferType = SECBUFFER_TOKEN;
+  type_1_buf.pvBuffer   = ntlm->output_token;
+  type_1_buf.cbBuffer   = curlx_uztoul(ntlm->token_max);
+
+  /* Generate our type-1 message */
+  status = s_pSecFn->InitializeSecurityContext(ntlm->credentials, NULL,
+                                               (TCHAR *) TEXT(""),
+                                               0, 0, SECURITY_NETWORK_DREP,
+                                               NULL, 0,
+                                               ntlm->context, &type_1_desc,
+                                               &attrs, &expiry);
+  if(status == SEC_I_COMPLETE_NEEDED ||
+    status == SEC_I_COMPLETE_AND_CONTINUE)
+    s_pSecFn->CompleteAuthToken(ntlm->context, &type_1_desc);
+  else if(status != SEC_E_OK && status != SEC_I_CONTINUE_NEEDED)
+    return CURLE_RECV_ERROR;
+
+  /* Base64 encode the response */
+  return Curl_base64_encode(NULL, (char *) ntlm->output_token,
+                            type_1_buf.cbBuffer, outptr, outlen);
+}
+
+/*
+* Curl_sasl_decode_ntlm_type2_message()
+*
+* This is used to decode an already encoded NTLM type-2 message.
+*
+* Parameters:
+*
+* data     [in]     - The session handle.
+* type2msg [in]     - The base64 encoded type-2 message.
+* ntlm     [in/out] - The ntlm data struct being used and modified.
+*
+* Returns CURLE_OK on success.
+*/
+CURLcode Curl_sasl_decode_ntlm_type2_message(struct SessionHandle *data,
+                                             const char *type2msg,
+                                             struct ntlmdata *ntlm)
+{
+  CURLcode result = CURLE_OK;
+  unsigned char *type2 = NULL;
+  size_t type2_len = 0;
+
+#if defined(CURL_DISABLE_VERBOSE_STRINGS)
+  (void) data;
+#endif
+
+  /* Decode the base-64 encoded type-2 message */
+  if(strlen(type2msg) && *type2msg != '=') {
+    result = Curl_base64_decode(type2msg, &type2, &type2_len);
+    if(result)
+      return result;
+  }
+
+  /* Ensure we have a valid type-2 message */
+  if(!type2) {
+    infof(data, "NTLM handshake failure (empty type-2 message)\n");
+
+    return CURLE_BAD_CONTENT_ENCODING;
+  }
+
+  /* Simply store the challenge for use later */
+  ntlm->input_token = type2;
+  ntlm->input_token_len = type2_len;
+
+  return result;
+}
+
+/*
+* Curl_sasl_create_ntlm_type3_message()
+*
+* This is used to generate an already encoded NTLM type-3 message ready for
+* sending to the recipient.
+*
+* Parameters:
+*
+* data    [in]     - The session handle.
+* userp   [in]     - The user name in the format User or Domain\User.
+* passdwp [in]     - The user's password.
+* ntlm    [in/out] - The ntlm data struct being used and modified.
+* outptr  [in/out] - The address where a pointer to newly allocated memory
+*                    holding the result will be stored upon completion.
+* outlen  [out]    - The length of the output message.
+*
+* Returns CURLE_OK on success.
+*/
+CURLcode Curl_sasl_create_ntlm_type3_message(struct SessionHandle *data,
+                                             const char *userp,
+                                             const char *passwdp,
+                                             struct ntlmdata *ntlm,
+                                             char **outptr, size_t *outlen)
+{
+  CURLcode result = CURLE_OK;
+  SecBuffer type_2_buf;
+  SecBuffer type_3_buf;
+  SecBufferDesc type_2_desc;
+  SecBufferDesc type_3_desc;
+  SECURITY_STATUS status;
+  unsigned long attrs;
+  TimeStamp expiry; /* For Windows 9x compatibility of SSPI calls */
+
+  (void) passwdp;
+  (void) userp;
+
+  /* Setup the type-2 "input" security buffer */
+  type_2_desc.ulVersion = SECBUFFER_VERSION;
+  type_2_desc.cBuffers  = 1;
+  type_2_desc.pBuffers  = &type_2_buf;
+  type_2_buf.BufferType = SECBUFFER_TOKEN;
+  type_2_buf.pvBuffer   = ntlm->input_token;
+  type_2_buf.cbBuffer   = curlx_uztoul(ntlm->input_token_len);
+
+  /* Setup the type-3 "output" security buffer */
+  type_3_desc.ulVersion = SECBUFFER_VERSION;
+  type_3_desc.cBuffers  = 1;
+  type_3_desc.pBuffers  = &type_3_buf;
+  type_3_buf.BufferType = SECBUFFER_TOKEN;
+  type_3_buf.pvBuffer   = ntlm->output_token;
+  type_3_buf.cbBuffer   = curlx_uztoul(ntlm->token_max);
+
+  /* Generate our type-3 message */
+  status = s_pSecFn->InitializeSecurityContext(ntlm->credentials,
+                                               ntlm->context,
+                                               (TCHAR *) TEXT(""),
+                                               0, 0, SECURITY_NETWORK_DREP,
+                                               &type_2_desc,
+                                               0, ntlm->context,
+                                               &type_3_desc,
+                                               &attrs, &expiry);
+  if(status != SEC_E_OK) {
+    infof(data, "NTLM handshake failure (type-3 message): Status=%x\n",
+          status);
+
+    return CURLE_RECV_ERROR;
+  }
+
+  /* Base64 encode the response */
+  result = Curl_base64_encode(data, (char *) ntlm->output_token,
+                              type_3_buf.cbBuffer, outptr, outlen);
+
+  Curl_sasl_ntlm_cleanup(ntlm);
+
+  return result;
+}
+
+/*
+ * Curl_sasl_ntlm_cleanup()
+ *
+ * This is used to clean up the ntlm specific data.
+ *
+ * Parameters:
+ *
+ * ntlm    [in/out] - The ntlm data struct being cleaned up.
+ *
+ */
+void Curl_sasl_ntlm_cleanup(struct ntlmdata *ntlm)
+{
+  /* Free our security context */
+  if(ntlm->context) {
+    s_pSecFn->DeleteSecurityContext(ntlm->context);
+    free(ntlm->context);
+    ntlm->context = NULL;
+  }
+
+  /* Free our credentials handle */
+  if(ntlm->credentials) {
+    s_pSecFn->FreeCredentialsHandle(ntlm->credentials);
+    free(ntlm->credentials);
+    ntlm->credentials = NULL;
+  }
+
+  /* Free our identity */
+  Curl_sspi_free_identity(ntlm->p_identity);
+  ntlm->p_identity = NULL;
+
+  /* Free the input and output tokens */
+  Curl_safefree(ntlm->input_token);
+  Curl_safefree(ntlm->output_token);
+
+  /* Reset any variables */
+  ntlm->token_max = 0;
+}
+#endif /* USE_NTLM */
+
+#if defined(USE_KERBEROS5)
+/*
+ * Curl_sasl_create_gssapi_user_message()
+ *
+ * This is used to generate an already encoded GSSAPI (Kerberos V5) user token
+ * message ready for sending to the recipient.
+ *
+ * Parameters:
+ *
+ * data        [in]     - The session handle.
+ * userp       [in]     - The user name in the format User or Domain\User.
+ * passdwp     [in]     - The user's password.
+ * service     [in]     - The service type such as www, smtp, pop or imap.
+ * mutual_auth [in]     - Flag specifing whether or not mutual authentication
+ *                        is enabled.
+ * chlg64      [in]     - The optional base64 encoded challenge message.
+ * krb5        [in/out] - The gssapi data struct being used and modified.
+ * outptr      [in/out] - The address where a pointer to newly allocated memory
+ *                        holding the result will be stored upon completion.
+ * outlen      [out]    - The length of the output message.
+ *
+ * Returns CURLE_OK on success.
+ */
+CURLcode Curl_sasl_create_gssapi_user_message(struct SessionHandle *data,
+                                              const char *userp,
+                                              const char *passwdp,
+                                              const char *service,
+                                              const bool mutual_auth,
+                                              const char *chlg64,
+                                              struct kerberos5data *krb5,
+                                              char **outptr, size_t *outlen)
+{
+  CURLcode result = CURLE_OK;
+  size_t chlglen = 0;
+  unsigned char *chlg = NULL;
+  CtxtHandle context;
+  PSecPkgInfo SecurityPackage;
+  SecBuffer chlg_buf;
+  SecBuffer resp_buf;
+  SecBufferDesc chlg_desc;
+  SecBufferDesc resp_desc;
+  SECURITY_STATUS status;
+  unsigned long attrs;
+  TimeStamp expiry; /* For Windows 9x compatibility of SSPI calls */
+
+  if(!krb5->credentials) {
+    /* Query the security package for Kerberos */
+    status = s_pSecFn->QuerySecurityPackageInfo((TCHAR *)
+                                                TEXT(SP_NAME_KERBEROS),
+                                                &SecurityPackage);
+    if(status != SEC_E_OK) {
+      return CURLE_NOT_BUILT_IN;
+    }
+
+    krb5->token_max = SecurityPackage->cbMaxToken;
+
+    /* Release the package buffer as it is not required anymore */
+    s_pSecFn->FreeContextBuffer(SecurityPackage);
+
+    /* Allocate our response buffer */
+    krb5->output_token = malloc(krb5->token_max);
+    if(!krb5->output_token)
+      return CURLE_OUT_OF_MEMORY;
+
+    /* Generate our SPN */
+    krb5->spn = Curl_sasl_build_spn(service, data->easy_conn->host.name);
+    if(!krb5->spn)
+      return CURLE_OUT_OF_MEMORY;
+
+    if(userp && *userp) {
+      /* Populate our identity structure */
+      result = Curl_create_sspi_identity(userp, passwdp, &krb5->identity);
+      if(result)
+        return result;
+
+      /* Allow proper cleanup of the identity structure */
+      krb5->p_identity = &krb5->identity;
+    }
+    else
+      /* Use the current Windows user */
+      krb5->p_identity = NULL;
+
+    /* Allocate our credentials handle */
+    krb5->credentials = malloc(sizeof(CredHandle));
+    if(!krb5->credentials)
+      return CURLE_OUT_OF_MEMORY;
+
+    memset(krb5->credentials, 0, sizeof(CredHandle));
+
+    /* Acquire our credentials handle */
+    status = s_pSecFn->AcquireCredentialsHandle(NULL,
+                                                (TCHAR *)
+                                                TEXT(SP_NAME_KERBEROS),
+                                                SECPKG_CRED_OUTBOUND, NULL,
+                                                krb5->p_identity, NULL, NULL,
+                                                krb5->credentials, &expiry);
+    if(status != SEC_E_OK)
+      return CURLE_LOGIN_DENIED;
+
+    /* Allocate our new context handle */
+    krb5->context = malloc(sizeof(CtxtHandle));
+    if(!krb5->context)
+      return CURLE_OUT_OF_MEMORY;
+
+    memset(krb5->context, 0, sizeof(CtxtHandle));
+  }
+  else {
+    /* Decode the base-64 encoded challenge message */
+    if(strlen(chlg64) && *chlg64 != '=') {
+      result = Curl_base64_decode(chlg64, &chlg, &chlglen);
+      if(result)
+        return result;
+    }
+
+    /* Ensure we have a valid challenge message */
+    if(!chlg) {
+      infof(data, "GSSAPI handshake failure (empty challenge message)\n");
+
+      return CURLE_BAD_CONTENT_ENCODING;
+    }
+
+    /* Setup the challenge "input" security buffer */
+    chlg_desc.ulVersion = SECBUFFER_VERSION;
+    chlg_desc.cBuffers  = 1;
+    chlg_desc.pBuffers  = &chlg_buf;
+    chlg_buf.BufferType = SECBUFFER_TOKEN;
+    chlg_buf.pvBuffer   = chlg;
+    chlg_buf.cbBuffer   = curlx_uztoul(chlglen);
+  }
+
+  /* Setup the response "output" security buffer */
+  resp_desc.ulVersion = SECBUFFER_VERSION;
+  resp_desc.cBuffers  = 1;
+  resp_desc.pBuffers  = &resp_buf;
+  resp_buf.BufferType = SECBUFFER_TOKEN;
+  resp_buf.pvBuffer   = krb5->output_token;
+  resp_buf.cbBuffer   = curlx_uztoul(krb5->token_max);
+
+  /* Generate our challenge-response message */
+  status = s_pSecFn->InitializeSecurityContext(krb5->credentials,
+                                               chlg ? krb5->context : NULL,
+                                               krb5->spn,
+                                               (mutual_auth ?
+                                                 ISC_REQ_MUTUAL_AUTH : 0),
+                                               0, SECURITY_NATIVE_DREP,
+                                               chlg ? &chlg_desc : NULL, 0,
+                                               &context,
+                                               &resp_desc, &attrs,
+                                               &expiry);
+
+  if(status != SEC_E_OK && status != SEC_I_CONTINUE_NEEDED) {
+    Curl_safefree(chlg);
+
+    return CURLE_RECV_ERROR;
+  }
+
+  if(memcmp(&context, krb5->context, sizeof(context))) {
+    s_pSecFn->DeleteSecurityContext(krb5->context);
+
+    memcpy(krb5->context, &context, sizeof(context));
+  }
+
+  if(resp_buf.cbBuffer) {
+    /* Base64 encode the response */
+    result = Curl_base64_encode(data, (char *)resp_buf.pvBuffer,
+                                resp_buf.cbBuffer, outptr, outlen);
+  }
+
+  /* Free the decoded challenge */
+  Curl_safefree(chlg);
+
+  return result;
+}
+
+/*
+ * Curl_sasl_create_gssapi_security_message()
+ *
+ * This is used to generate an already encoded GSSAPI (Kerberos V5) security
+ * token message ready for sending to the recipient.
+ *
+ * Parameters:
+ *
+ * data    [in]     - The session handle.
+ * chlg64  [in]     - The optional base64 encoded challenge message.
+ * krb5    [in/out] - The gssapi data struct being used and modified.
+ * outptr  [in/out] - The address where a pointer to newly allocated memory
+ *                    holding the result will be stored upon completion.
+ * outlen  [out]    - The length of the output message.
+ *
+ * Returns CURLE_OK on success.
+ */
+CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
+                                                  const char *chlg64,
+                                                  struct kerberos5data *krb5,
+                                                  char **outptr,
+                                                  size_t *outlen)
+{
+  CURLcode result = CURLE_OK;
+  size_t offset = 0;
+  size_t chlglen = 0;
+  size_t messagelen = 0;
+  size_t appdatalen = 0;
+  unsigned char *chlg = NULL;
+  unsigned char *trailer = NULL;
+  unsigned char *message = NULL;
+  unsigned char *padding = NULL;
+  unsigned char *appdata = NULL;
+  SecBuffer input_buf[2];
+  SecBuffer wrap_buf[3];
+  SecBufferDesc input_desc;
+  SecBufferDesc wrap_desc;
+  unsigned long indata = 0;
+  unsigned long outdata = 0;
+  unsigned long qop = 0;
+  unsigned long sec_layer = 0;
+  unsigned long max_size = 0;
+  SecPkgContext_Sizes sizes;
+  SecPkgCredentials_Names names;
+  SECURITY_STATUS status;
+  char *user_name;
+
+  /* Decode the base-64 encoded input message */
+  if(strlen(chlg64) && *chlg64 != '=') {
+    result = Curl_base64_decode(chlg64, &chlg, &chlglen);
+    if(result)
+      return result;
+  }
+
+  /* Ensure we have a valid challenge message */
+  if(!chlg) {
+    infof(data, "GSSAPI handshake failure (empty security message)\n");
+
+    return CURLE_BAD_CONTENT_ENCODING;
+  }
+
+  /* Get our response size information */
+  status = s_pSecFn->QueryContextAttributes(krb5->context,
+                                            SECPKG_ATTR_SIZES,
+                                            &sizes);
+  if(status != SEC_E_OK) {
+    Curl_safefree(chlg);
+
+    return CURLE_OUT_OF_MEMORY;
+  }
+
+  /* Get the fully qualified username back from the context */
+  status = s_pSecFn->QueryCredentialsAttributes(krb5->credentials,
+                                                SECPKG_CRED_ATTR_NAMES,
+                                                &names);
+  if(status != SEC_E_OK) {
+    Curl_safefree(chlg);
+
+    return CURLE_RECV_ERROR;
+  }
+
+  /* Setup the "input" security buffer */
+  input_desc.ulVersion = SECBUFFER_VERSION;
+  input_desc.cBuffers = 2;
+  input_desc.pBuffers = input_buf;
+  input_buf[0].BufferType = SECBUFFER_STREAM;
+  input_buf[0].pvBuffer = chlg;
+  input_buf[0].cbBuffer = curlx_uztoul(chlglen);
+  input_buf[1].BufferType = SECBUFFER_DATA;
+  input_buf[1].pvBuffer = NULL;
+  input_buf[1].cbBuffer = 0;
+
+  /* Decrypt the inbound challenge and obtain the qop */
+  status = s_pSecFn->DecryptMessage(krb5->context, &input_desc, 0, &qop);
+  if(status != SEC_E_OK) {
+    infof(data, "GSSAPI handshake failure (empty security message)\n");
+
+    Curl_safefree(chlg);
+
+    return CURLE_BAD_CONTENT_ENCODING;
+  }
+
+  /* Not 4 octets long so fail as per RFC4752 Section 3.1 */
+  if(input_buf[1].cbBuffer != 4) {
+    infof(data, "GSSAPI handshake failure (invalid security data)\n");
+
+    Curl_safefree(chlg);
+
+    return CURLE_BAD_CONTENT_ENCODING;
+  }
+
+  /* Copy the data out and free the challenge as it is not required anymore */
+  memcpy(&indata, input_buf[1].pvBuffer, 4);
+  s_pSecFn->FreeContextBuffer(input_buf[1].pvBuffer);
+  Curl_safefree(chlg);
+
+  /* Extract the security layer */
+  sec_layer = indata & 0x000000FF;
+  if(!(sec_layer & KERB_WRAP_NO_ENCRYPT)) {
+    infof(data, "GSSAPI handshake failure (invalid security layer)\n");
+
+    return CURLE_BAD_CONTENT_ENCODING;
+  }
+
+  /* Extract the maximum message size the server can receive */
+  max_size = ntohl(indata & 0xFFFFFF00);
+  if(max_size > 0) {
+    /* The server has told us it supports a maximum receive buffer, however, as
+       we don't require one unless we are encrypting data, we tell the server
+       our receive buffer is zero. */
+    max_size = 0;
+  }
+
+  /* Allocate the trailer */
+  trailer = malloc(sizes.cbSecurityTrailer);
+  if(!trailer)
+    return CURLE_OUT_OF_MEMORY;
+
+  /* Convert the user name to UTF8 when operating with Unicode */
+  user_name = Curl_convert_tchar_to_UTF8(names.sUserName);
+  if(!user_name) {
+    Curl_safefree(trailer);
+
+    return CURLE_OUT_OF_MEMORY;
+  }
+
+  /* Allocate our message */
+  messagelen = sizeof(outdata) + strlen(user_name) + 1;
+  message = malloc(messagelen);
+  if(!message) {
+    Curl_safefree(trailer);
+    Curl_unicodefree(user_name);
+
+    return CURLE_OUT_OF_MEMORY;
+  }
+
+  /* Populate the message with the security layer, client supported receive
+     message size and authorization identity including the 0x00 based
+     terminator. Note: Dispite RFC4752 Section 3.1 stating "The authorization
+     identity is not terminated with the zero-valued (%x00) octet." it seems
+     necessary to include it. */
+  outdata = htonl(max_size) | sec_layer;
+  memcpy(message, &outdata, sizeof(outdata));
+  strcpy((char *) message + sizeof(outdata), user_name);
+  Curl_unicodefree(user_name);
+
+  /* Allocate the padding */
+  padding = malloc(sizes.cbBlockSize);
+  if(!padding) {
+    Curl_safefree(message);
+    Curl_safefree(trailer);
+
+    return CURLE_OUT_OF_MEMORY;
+  }
+
+  /* Setup the "authentication data" security buffer */
+  wrap_desc.ulVersion    = SECBUFFER_VERSION;
+  wrap_desc.cBuffers     = 3;
+  wrap_desc.pBuffers     = wrap_buf;
+  wrap_buf[0].BufferType = SECBUFFER_TOKEN;
+  wrap_buf[0].pvBuffer   = trailer;
+  wrap_buf[0].cbBuffer   = sizes.cbSecurityTrailer;
+  wrap_buf[1].BufferType = SECBUFFER_DATA;
+  wrap_buf[1].pvBuffer   = message;
+  wrap_buf[1].cbBuffer   = curlx_uztoul(messagelen);
+  wrap_buf[2].BufferType = SECBUFFER_PADDING;
+  wrap_buf[2].pvBuffer   = padding;
+  wrap_buf[2].cbBuffer   = sizes.cbBlockSize;
+
+  /* Encrypt the data */
+  status = s_pSecFn->EncryptMessage(krb5->context, KERB_WRAP_NO_ENCRYPT,
+                                    &wrap_desc, 0);
+  if(status != SEC_E_OK) {
+    Curl_safefree(padding);
+    Curl_safefree(message);
+    Curl_safefree(trailer);
+
+    return CURLE_OUT_OF_MEMORY;
+  }
+
+  /* Allocate the encryption (wrap) buffer */
+  appdatalen = wrap_buf[0].cbBuffer + wrap_buf[1].cbBuffer +
+               wrap_buf[2].cbBuffer;
+  appdata = malloc(appdatalen);
+  if(!appdata) {
+    Curl_safefree(padding);
+    Curl_safefree(message);
+    Curl_safefree(trailer);
+
+    return CURLE_OUT_OF_MEMORY;
+  }
+
+  /* Populate the encryption buffer */
+  memcpy(appdata, wrap_buf[0].pvBuffer, wrap_buf[0].cbBuffer);
+  offset += wrap_buf[0].cbBuffer;
+  memcpy(appdata + offset, wrap_buf[1].pvBuffer, wrap_buf[1].cbBuffer);
+  offset += wrap_buf[1].cbBuffer;
+  memcpy(appdata + offset, wrap_buf[2].pvBuffer, wrap_buf[2].cbBuffer);
+
+  /* Base64 encode the response */
+  result = Curl_base64_encode(data, (char *)appdata, appdatalen, outptr,
+                              outlen);
+
+  /* Free all of our local buffers */
+  Curl_safefree(appdata);
+  Curl_safefree(padding);
+  Curl_safefree(message);
+  Curl_safefree(trailer);
+
+  return result;
+}
+
+/*
+ * Curl_sasl_gssapi_cleanup()
+ *
+ * This is used to clean up the gssapi specific data.
+ *
+ * Parameters:
+ *
+ * krb5     [in/out] - The kerberos 5 data struct being cleaned up.
+ *
+ */
+void Curl_sasl_gssapi_cleanup(struct kerberos5data *krb5)
+{
+  /* Free our security context */
+  if(krb5->context) {
+    s_pSecFn->DeleteSecurityContext(krb5->context);
+    free(krb5->context);
+    krb5->context = NULL;
+  }
+
+  /* Free our credentials handle */
+  if(krb5->credentials) {
+    s_pSecFn->FreeCredentialsHandle(krb5->credentials);
+    free(krb5->credentials);
+    krb5->credentials = NULL;
+  }
+
+  /* Free our identity */
+  Curl_sspi_free_identity(krb5->p_identity);
+  krb5->p_identity = NULL;
+
+  /* Free the SPN and output token */
+  Curl_safefree(krb5->spn);
+  Curl_safefree(krb5->output_token);
+
+  /* Reset any variables */
+  krb5->token_max = 0;
+}
+#endif /* USE_KERBEROS5 */
+
+#endif /* USE_WINDOWS_SSPI */
similarity index 82%
rename from lib/krb4.h
rename to lib/curl_sec.h
index 3e29b25..6c48da2 100644 (file)
@@ -1,5 +1,5 @@
-#ifndef HEADER_CURL_KRB4_H
-#define HEADER_CURL_KRB4_H
+#ifndef HEADER_CURL_SECURITY_H
+#define HEADER_CURL_SECURITY_H
 /***************************************************************************
  *                                  _   _ ____  _
  *  Project                     ___| | | |  _ \| |
 /***************************************************************************
  *                                  _   _ ____  _
  *  Project                     ___| | | |  _ \| |
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -30,28 +30,22 @@ struct Curl_sec_client_mech {
   void (*end)(void *);
   int (*check_prot)(void *, int);
   int (*overhead)(void *, int, int);
   void (*end)(void *);
   int (*check_prot)(void *, int);
   int (*overhead)(void *, int, int);
-  int (*encode)(void *, const void*, int, int, void**, struct connectdata *);
+  int (*encode)(void *, const void*, int, int, void**);
   int (*decode)(void *, void*, int, int, struct connectdata *);
 };
 
   int (*decode)(void *, void*, int, int, struct connectdata *);
 };
 
-
 #define AUTH_OK         0
 #define AUTH_CONTINUE   1
 #define AUTH_ERROR      2
 
 #define AUTH_OK         0
 #define AUTH_CONTINUE   1
 #define AUTH_ERROR      2
 
-#ifdef HAVE_KRB4
-extern struct Curl_sec_client_mech Curl_krb4_client_mech;
-#endif
 #ifdef HAVE_GSSAPI
 #ifdef HAVE_GSSAPI
-extern struct Curl_sec_client_mech Curl_krb5_client_mech;
-#endif
-
-CURLcode Curl_krb_kauth(struct connectdata *conn);
 int Curl_sec_read_msg (struct connectdata *conn, char *,
                        enum protection_level);
 void Curl_sec_end (struct connectdata *);
 CURLcode Curl_sec_login (struct connectdata *);
 int Curl_sec_request_prot (struct connectdata *conn, const char *level);
 
 int Curl_sec_read_msg (struct connectdata *conn, char *,
                        enum protection_level);
 void Curl_sec_end (struct connectdata *);
 CURLcode Curl_sec_login (struct connectdata *);
 int Curl_sec_request_prot (struct connectdata *conn, const char *level);
 
-#endif /* HEADER_CURL_KRB4_H */
+extern struct Curl_sec_client_mech Curl_krb5_client_mech;
+#endif
 
 
+#endif /* HEADER_CURL_SECURITY_H */
index 7edeca2..b046b77 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #  endif
 #endif
 
 #  endif
 #endif
 
+/* Solaris needs this to get a POSIX-conformant getpwuid_r */
+#if defined(sun) || defined(__sun)
+#  ifndef _POSIX_PTHREAD_SEMANTICS
+#    define _POSIX_PTHREAD_SEMANTICS 1
+#  endif
+#endif
+
 /* ================================================================ */
 /*  If you need to include a system header file for your platform,  */
 /*  please, do it beyond the point further indicated in this file.  */
 /* ================================================================ */
 /*  If you need to include a system header file for your platform,  */
 /*  please, do it beyond the point further indicated in this file.  */
 #endif
 
 /*
 #endif
 
 /*
- * Set up internal curl_off_t formatting string directives for
- * exclusive use with libcurl's internal *printf functions.
- */
-
-#ifdef FORMAT_OFF_T
-#  error "FORMAT_OFF_T shall not be defined before this point!"
-   Error Compilation_aborted_FORMAT_OFF_T_already_defined
-#endif
-
-#ifdef FORMAT_OFF_TU
-#  error "FORMAT_OFF_TU shall not be defined before this point!"
-   Error Compilation_aborted_FORMAT_OFF_TU_already_defined
-#endif
-
-#if (CURL_SIZEOF_CURL_OFF_T > CURL_SIZEOF_LONG)
-#  define FORMAT_OFF_T  "lld"
-#  define FORMAT_OFF_TU "llu"
-#else
-#  define FORMAT_OFF_T  "ld"
-#  define FORMAT_OFF_TU "lu"
-#endif
-
-/*
  * Disable other protocols when http is the only one desired.
  */
 
  * Disable other protocols when http is the only one desired.
  */
 
@@ -618,20 +602,29 @@ int netware_init(void);
 #define LIBIDN_REQUIRED_VERSION "0.4.1"
 
 #if defined(USE_GNUTLS) || defined(USE_SSLEAY) || defined(USE_NSS) || \
 #define LIBIDN_REQUIRED_VERSION "0.4.1"
 
 #if defined(USE_GNUTLS) || defined(USE_SSLEAY) || defined(USE_NSS) || \
-    defined(USE_QSOSSL) || defined(USE_POLARSSL) || defined(USE_AXTLS) || \
+    defined(USE_POLARSSL) || defined(USE_AXTLS) || \
     defined(USE_CYASSL) || defined(USE_SCHANNEL) || \
     defined(USE_DARWINSSL) || defined(USE_GSKIT)
 #define USE_SSL    /* SSL support has been enabled */
 #endif
 
     defined(USE_CYASSL) || defined(USE_SCHANNEL) || \
     defined(USE_DARWINSSL) || defined(USE_GSKIT)
 #define USE_SSL    /* SSL support has been enabled */
 #endif
 
-#if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
-#define USE_HTTP_NEGOTIATE
+/* Single point where USE_SPNEGO definition might be defined */
+#if !defined(CURL_DISABLE_CRYPTO_AUTH) && \
+    (defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI))
+#define USE_SPNEGO
+#endif
+
+/* Single point where USE_KERBEROS5 definition might be defined */
+#if !defined(CURL_DISABLE_CRYPTO_AUTH) && \
+    (defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI))
+#define USE_KERBEROS5
 #endif
 
 #endif
 
-/* Single point where USE_NTLM definition might be done */
-#if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_NTLM)
+/* Single point where USE_NTLM definition might be defined */
+#if !defined(CURL_DISABLE_NTLM) && !defined(CURL_DISABLE_CRYPTO_AUTH)
 #if defined(USE_SSLEAY) || defined(USE_WINDOWS_SSPI) || \
 #if defined(USE_SSLEAY) || defined(USE_WINDOWS_SSPI) || \
-    defined(USE_GNUTLS) || defined(USE_NSS) || defined(USE_DARWINSSL)
+    defined(USE_GNUTLS) || defined(USE_NSS) || defined(USE_DARWINSSL) || \
+    defined(USE_OS400CRYPTO) || defined(USE_WIN32_CRYPTO)
 #define USE_NTLM
 #endif
 #endif
 #define USE_NTLM
 #endif
 #endif
@@ -650,8 +643,10 @@ int netware_init(void);
 #if defined(__GNUC__) && ((__GNUC__ >= 3) || \
   ((__GNUC__ == 2) && defined(__GNUC_MINOR__) && (__GNUC_MINOR__ >= 7)))
 #  define UNUSED_PARAM __attribute__((__unused__))
 #if defined(__GNUC__) && ((__GNUC__ >= 3) || \
   ((__GNUC__ == 2) && defined(__GNUC_MINOR__) && (__GNUC_MINOR__ >= 7)))
 #  define UNUSED_PARAM __attribute__((__unused__))
+#  define WARN_UNUSED_RESULT __attribute__((warn_unused_result))
 #else
 #  define UNUSED_PARAM /*NOTHING*/
 #else
 #  define UNUSED_PARAM /*NOTHING*/
+#  define WARN_UNUSED_RESULT
 #endif
 
 /*
 #endif
 
 /*
index 6f3240a..69d6d47 100644 (file)
@@ -440,7 +440,7 @@ typedef int sig_atomic_t;
  * (or equivalent) on this platform to hide platform details to code using it.
  */
 
  * (or equivalent) on this platform to hide platform details to code using it.
  */
 
-#ifdef WIN32
+#if defined(WIN32) && !defined(USE_LWIPSOCK)
 #define ERRNO         ((int)GetLastError())
 #define SET_ERRNO(x)  (SetLastError((DWORD)(x)))
 #else
 #define ERRNO         ((int)GetLastError())
 #define SET_ERRNO(x)  (SetLastError((DWORD)(x)))
 #else
index e747d86..f09d288 100644 (file)
@@ -32,6 +32,9 @@
 #include <curl/mprintf.h>
 
 #include "curl_memory.h"
 #include <curl/mprintf.h>
 
 #include "curl_memory.h"
+#include "curl_multibyte.h"
+#include "warnless.h"
+
 /* The last #include file should be: */
 #include "memdebug.h"
 
 /* The last #include file should be: */
 #include "memdebug.h"
 
@@ -68,25 +71,52 @@ PSecurityFunctionTable s_pSecFn = NULL;
  */
 CURLcode Curl_sspi_global_init(void)
 {
  */
 CURLcode Curl_sspi_global_init(void)
 {
-  OSVERSIONINFO osver;
+  bool securityDll = FALSE;
   INITSECURITYINTERFACE_FN pInitSecurityInterface;
 
   /* If security interface is not yet initialized try to do this */
   if(!s_hSecDll) {
   INITSECURITYINTERFACE_FN pInitSecurityInterface;
 
   /* If security interface is not yet initialized try to do this */
   if(!s_hSecDll) {
+    /* Security Service Provider Interface (SSPI) functions are located in
+     * security.dll on WinNT 4.0 and in secur32.dll on Win9x. Win2K and XP
+     * have both these DLLs (security.dll forwards calls to secur32.dll) */
+    DWORD majorVersion = 4;
+    DWORD platformId = VER_PLATFORM_WIN32_NT;
+
+#if !defined(_WIN32_WINNT) || !defined(_WIN32_WINNT_WIN2K) || \
+    (_WIN32_WINNT < _WIN32_WINNT_WIN2K)
+    OSVERSIONINFO osver;
 
 
-    /* Find out Windows version */
     memset(&osver, 0, sizeof(osver));
     osver.dwOSVersionInfoSize = sizeof(osver);
     memset(&osver, 0, sizeof(osver));
     osver.dwOSVersionInfoSize = sizeof(osver);
+
+    /* Find out Windows version */
     if(!GetVersionEx(&osver))
       return CURLE_FAILED_INIT;
 
     if(!GetVersionEx(&osver))
       return CURLE_FAILED_INIT;
 
-    /* Security Service Provider Interface (SSPI) functions are located in
-     * security.dll on WinNT 4.0 and in secur32.dll on Win9x. Win2K and XP
-     * have both these DLLs (security.dll forwards calls to secur32.dll) */
+    /* Verify the major version number == 4 and platform id == WIN_NT */
+    if(osver.dwMajorVersion == majorVersion &&
+       osver.dwPlatformId == platformId)
+      securityDll = TRUE;
+#else
+    ULONGLONG majorVersionMask;
+    ULONGLONG platformIdMask;
+    OSVERSIONINFOEX osver;
+
+    memset(&osver, 0, sizeof(osver));
+    osver.dwOSVersionInfoSize = sizeof(osver);
+    osver.dwMajorVersion = majorVersion;
+    osver.dwPlatformId = platformId;
+    majorVersionMask = VerSetConditionMask(0, VER_MAJORVERSION, VER_EQUAL);
+    platformIdMask = VerSetConditionMask(0, VER_PLATFORMID, VER_EQUAL);
+
+    /* Verify the major version number == 4 and platform id == WIN_NT */
+    if(VerifyVersionInfo(&osver, VER_MAJORVERSION, majorVersionMask) &&
+       VerifyVersionInfo(&osver, VER_PLATFORMID, platformIdMask))
+      securityDll = TRUE;
+#endif
 
     /* Load SSPI dll into the address space of the calling process */
 
     /* Load SSPI dll into the address space of the calling process */
-    if(osver.dwPlatformId == VER_PLATFORM_WIN32_NT
-      && osver.dwMajorVersion == 4)
+    if(securityDll)
       s_hSecDll = LoadLibrary(TEXT("security.dll"));
     else
       s_hSecDll = LoadLibrary(TEXT("secur32.dll"));
       s_hSecDll = LoadLibrary(TEXT("security.dll"));
     else
       s_hSecDll = LoadLibrary(TEXT("secur32.dll"));
@@ -123,4 +153,105 @@ void Curl_sspi_global_cleanup(void)
   }
 }
 
   }
 }
 
+/*
+ * Curl_create_sspi_identity()
+ *
+ * This is used to populate a SSPI identity structure based on the supplied
+ * username and password.
+ *
+ * Parameters:
+ *
+ * userp    [in]     - The user name in the format User or Domain\User.
+ * passdwp  [in]     - The user's password.
+ * identity [in/out] - The identity structure.
+ *
+ * Returns CURLE_OK on success.
+ */
+CURLcode Curl_create_sspi_identity(const char *userp, const char *passwdp,
+                                   SEC_WINNT_AUTH_IDENTITY *identity)
+{
+  xcharp_u useranddomain;
+  xcharp_u user, dup_user;
+  xcharp_u domain, dup_domain;
+  xcharp_u passwd, dup_passwd;
+  size_t domlen = 0;
+
+  domain.const_tchar_ptr = TEXT("");
+
+  /* Initialize the identity */
+  memset(identity, 0, sizeof(*identity));
+
+  useranddomain.tchar_ptr = Curl_convert_UTF8_to_tchar((char *)userp);
+  if(!useranddomain.tchar_ptr)
+    return CURLE_OUT_OF_MEMORY;
+
+  user.const_tchar_ptr = _tcschr(useranddomain.const_tchar_ptr, TEXT('\\'));
+  if(!user.const_tchar_ptr)
+    user.const_tchar_ptr = _tcschr(useranddomain.const_tchar_ptr, TEXT('/'));
+
+  if(user.tchar_ptr) {
+    domain.tchar_ptr = useranddomain.tchar_ptr;
+    domlen = user.tchar_ptr - useranddomain.tchar_ptr;
+    user.tchar_ptr++;
+  }
+  else {
+    user.tchar_ptr = useranddomain.tchar_ptr;
+    domain.const_tchar_ptr = TEXT("");
+    domlen = 0;
+  }
+
+  /* Setup the identity's user and length */
+  dup_user.tchar_ptr = _tcsdup(user.tchar_ptr);
+  if(!dup_user.tchar_ptr) {
+    Curl_unicodefree(useranddomain.tchar_ptr);
+    return CURLE_OUT_OF_MEMORY;
+  }
+  identity->User = dup_user.tbyte_ptr;
+  identity->UserLength = curlx_uztoul(_tcslen(dup_user.tchar_ptr));
+  dup_user.tchar_ptr = NULL;
+
+  /* Setup the identity's domain and length */
+  dup_domain.tchar_ptr = malloc(sizeof(TCHAR) * (domlen + 1));
+  if(!dup_domain.tchar_ptr) {
+    Curl_unicodefree(useranddomain.tchar_ptr);
+    return CURLE_OUT_OF_MEMORY;
+  }
+  _tcsncpy(dup_domain.tchar_ptr, domain.tchar_ptr, domlen);
+  *(dup_domain.tchar_ptr + domlen) = TEXT('\0');
+  identity->Domain = dup_domain.tbyte_ptr;
+  identity->DomainLength = curlx_uztoul(domlen);
+  dup_domain.tchar_ptr = NULL;
+
+  Curl_unicodefree(useranddomain.tchar_ptr);
+
+  /* Setup ntlm identity's password and length */
+  passwd.tchar_ptr = Curl_convert_UTF8_to_tchar((char *)passwdp);
+  if(!passwd.tchar_ptr)
+    return CURLE_OUT_OF_MEMORY;
+  dup_passwd.tchar_ptr = _tcsdup(passwd.tchar_ptr);
+  if(!dup_passwd.tchar_ptr) {
+    Curl_unicodefree(passwd.tchar_ptr);
+    return CURLE_OUT_OF_MEMORY;
+  }
+  identity->Password = dup_passwd.tbyte_ptr;
+  identity->PasswordLength = curlx_uztoul(_tcslen(dup_passwd.tchar_ptr));
+  dup_passwd.tchar_ptr = NULL;
+
+  Curl_unicodefree(passwd.tchar_ptr);
+
+  /* Setup the identity's flags */
+  identity->Flags = SECFLAG_WINNT_AUTH_IDENTITY;
+
+  return CURLE_OK;
+}
+
+void Curl_sspi_free_identity(SEC_WINNT_AUTH_IDENTITY *identity)
+{
+  if(identity) {
+    Curl_safefree(identity->User);
+    Curl_safefree(identity->Password);
+    Curl_safefree(identity->Domain);
+  }
+}
+
 #endif /* USE_WINDOWS_SSPI */
 #endif /* USE_WINDOWS_SSPI */
index d525828..7fa308c 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 CURLcode Curl_sspi_global_init(void);
 void Curl_sspi_global_cleanup(void);
 
 CURLcode Curl_sspi_global_init(void);
 void Curl_sspi_global_cleanup(void);
 
-/* Forward-declaration of global variables defined in curl_sspi.c */
+/* This is used to generate an SSPI identity structure */
+CURLcode Curl_create_sspi_identity(const char *userp, const char *passwdp,
+                                   SEC_WINNT_AUTH_IDENTITY *identity);
+
+/* This is used to free an SSPI identity structure */
+void Curl_sspi_free_identity(SEC_WINNT_AUTH_IDENTITY *identity);
 
 
+/* Forward-declaration of global variables defined in curl_sspi.c */
 extern HMODULE s_hSecDll;
 extern PSecurityFunctionTable s_pSecFn;
 
 /* Provide some definitions missing in old headers */
 extern HMODULE s_hSecDll;
 extern PSecurityFunctionTable s_pSecFn;
 
 /* Provide some definitions missing in old headers */
+#define SP_NAME_DIGEST              "WDigest"
+#define SP_NAME_NTLM                "NTLM"
+#define SP_NAME_NEGOTIATE           "Negotiate"
+#define SP_NAME_KERBEROS            "Kerberos"
+
+#ifndef ISC_REQ_USE_HTTP_STYLE
+#define ISC_REQ_USE_HTTP_STYLE                0x01000000
+#endif
+
+#ifndef ISC_RET_REPLAY_DETECT
+#define ISC_RET_REPLAY_DETECT                 0x00000004
+#endif
+
+#ifndef ISC_RET_SEQUENCE_DETECT
+#define ISC_RET_SEQUENCE_DETECT               0x00000008
+#endif
+
+#ifndef ISC_RET_CONFIDENTIALITY
+#define ISC_RET_CONFIDENTIALITY               0x00000010
+#endif
+
+#ifndef ISC_RET_ALLOCATED_MEMORY
+#define ISC_RET_ALLOCATED_MEMORY              0x00000100
+#endif
+
+#ifndef ISC_RET_STREAM
+#define ISC_RET_STREAM                        0x00008000
+#endif
 
 #ifndef SEC_E_INSUFFICIENT_MEMORY
 
 #ifndef SEC_E_INSUFFICIENT_MEMORY
-# define SEC_E_INSUFFICIENT_MEMORY             ((HRESULT)0x80090300L)
+# define SEC_E_INSUFFICIENT_MEMORY            ((HRESULT)0x80090300L)
 #endif
 #ifndef SEC_E_INVALID_HANDLE
 #endif
 #ifndef SEC_E_INVALID_HANDLE
-# define SEC_E_INVALID_HANDLE                  ((HRESULT)0x80090301L)
+# define SEC_E_INVALID_HANDLE                 ((HRESULT)0x80090301L)
 #endif
 #ifndef SEC_E_UNSUPPORTED_FUNCTION
 #endif
 #ifndef SEC_E_UNSUPPORTED_FUNCTION
-# define SEC_E_UNSUPPORTED_FUNCTION            ((HRESULT)0x80090302L)
+# define SEC_E_UNSUPPORTED_FUNCTION           ((HRESULT)0x80090302L)
 #endif
 #ifndef SEC_E_TARGET_UNKNOWN
 #endif
 #ifndef SEC_E_TARGET_UNKNOWN
-# define SEC_E_TARGET_UNKNOWN                  ((HRESULT)0x80090303L)
+# define SEC_E_TARGET_UNKNOWN                 ((HRESULT)0x80090303L)
 #endif
 #ifndef SEC_E_INTERNAL_ERROR
 #endif
 #ifndef SEC_E_INTERNAL_ERROR
-# define SEC_E_INTERNAL_ERROR                  ((HRESULT)0x80090304L)
+# define SEC_E_INTERNAL_ERROR                 ((HRESULT)0x80090304L)
 #endif
 #ifndef SEC_E_SECPKG_NOT_FOUND
 #endif
 #ifndef SEC_E_SECPKG_NOT_FOUND
-# define SEC_E_SECPKG_NOT_FOUND                ((HRESULT)0x80090305L)
+# define SEC_E_SECPKG_NOT_FOUND               ((HRESULT)0x80090305L)
 #endif
 #ifndef SEC_E_NOT_OWNER
 #endif
 #ifndef SEC_E_NOT_OWNER
-# define SEC_E_NOT_OWNER                       ((HRESULT)0x80090306L)
+# define SEC_E_NOT_OWNER                      ((HRESULT)0x80090306L)
 #endif
 #ifndef SEC_E_CANNOT_INSTALL
 #endif
 #ifndef SEC_E_CANNOT_INSTALL
-# define SEC_E_CANNOT_INSTALL                  ((HRESULT)0x80090307L)
+# define SEC_E_CANNOT_INSTALL                 ((HRESULT)0x80090307L)
 #endif
 #ifndef SEC_E_INVALID_TOKEN
 #endif
 #ifndef SEC_E_INVALID_TOKEN
-# define SEC_E_INVALID_TOKEN                   ((HRESULT)0x80090308L)
+# define SEC_E_INVALID_TOKEN                  ((HRESULT)0x80090308L)
 #endif
 #ifndef SEC_E_CANNOT_PACK
 #endif
 #ifndef SEC_E_CANNOT_PACK
-# define SEC_E_CANNOT_PACK                     ((HRESULT)0x80090309L)
+# define SEC_E_CANNOT_PACK                    ((HRESULT)0x80090309L)
 #endif
 #ifndef SEC_E_QOP_NOT_SUPPORTED
 #endif
 #ifndef SEC_E_QOP_NOT_SUPPORTED
-# define SEC_E_QOP_NOT_SUPPORTED               ((HRESULT)0x8009030AL)
+# define SEC_E_QOP_NOT_SUPPORTED              ((HRESULT)0x8009030AL)
 #endif
 #ifndef SEC_E_NO_IMPERSONATION
 #endif
 #ifndef SEC_E_NO_IMPERSONATION
-# define SEC_E_NO_IMPERSONATION                ((HRESULT)0x8009030BL)
+# define SEC_E_NO_IMPERSONATION               ((HRESULT)0x8009030BL)
 #endif
 #ifndef SEC_E_LOGON_DENIED
 #endif
 #ifndef SEC_E_LOGON_DENIED
-# define SEC_E_LOGON_DENIED                    ((HRESULT)0x8009030CL)
+# define SEC_E_LOGON_DENIED                   ((HRESULT)0x8009030CL)
 #endif
 #ifndef SEC_E_UNKNOWN_CREDENTIALS
 #endif
 #ifndef SEC_E_UNKNOWN_CREDENTIALS
-# define SEC_E_UNKNOWN_CREDENTIALS             ((HRESULT)0x8009030DL)
+# define SEC_E_UNKNOWN_CREDENTIALS            ((HRESULT)0x8009030DL)
 #endif
 #ifndef SEC_E_NO_CREDENTIALS
 #endif
 #ifndef SEC_E_NO_CREDENTIALS
-# define SEC_E_NO_CREDENTIALS                  ((HRESULT)0x8009030EL)
+# define SEC_E_NO_CREDENTIALS                 ((HRESULT)0x8009030EL)
 #endif
 #ifndef SEC_E_MESSAGE_ALTERED
 #endif
 #ifndef SEC_E_MESSAGE_ALTERED
-# define SEC_E_MESSAGE_ALTERED                 ((HRESULT)0x8009030FL)
+# define SEC_E_MESSAGE_ALTERED                ((HRESULT)0x8009030FL)
 #endif
 #ifndef SEC_E_OUT_OF_SEQUENCE
 #endif
 #ifndef SEC_E_OUT_OF_SEQUENCE
-# define SEC_E_OUT_OF_SEQUENCE                 ((HRESULT)0x80090310L)
+# define SEC_E_OUT_OF_SEQUENCE                ((HRESULT)0x80090310L)
 #endif
 #ifndef SEC_E_NO_AUTHENTICATING_AUTHORITY
 #endif
 #ifndef SEC_E_NO_AUTHENTICATING_AUTHORITY
-# define SEC_E_NO_AUTHENTICATING_AUTHORITY     ((HRESULT)0x80090311L)
+# define SEC_E_NO_AUTHENTICATING_AUTHORITY    ((HRESULT)0x80090311L)
 #endif
 #ifndef SEC_E_BAD_PKGID
 #endif
 #ifndef SEC_E_BAD_PKGID
-# define SEC_E_BAD_PKGID                       ((HRESULT)0x80090316L)
+# define SEC_E_BAD_PKGID                      ((HRESULT)0x80090316L)
 #endif
 #ifndef SEC_E_CONTEXT_EXPIRED
 #endif
 #ifndef SEC_E_CONTEXT_EXPIRED
-# define SEC_E_CONTEXT_EXPIRED                 ((HRESULT)0x80090317L)
+# define SEC_E_CONTEXT_EXPIRED                ((HRESULT)0x80090317L)
 #endif
 #ifndef SEC_E_INCOMPLETE_MESSAGE
 #endif
 #ifndef SEC_E_INCOMPLETE_MESSAGE
-# define SEC_E_INCOMPLETE_MESSAGE              ((HRESULT)0x80090318L)
+# define SEC_E_INCOMPLETE_MESSAGE             ((HRESULT)0x80090318L)
 #endif
 #ifndef SEC_E_INCOMPLETE_CREDENTIALS
 #endif
 #ifndef SEC_E_INCOMPLETE_CREDENTIALS
-# define SEC_E_INCOMPLETE_CREDENTIALS          ((HRESULT)0x80090320L)
+# define SEC_E_INCOMPLETE_CREDENTIALS         ((HRESULT)0x80090320L)
 #endif
 #ifndef SEC_E_BUFFER_TOO_SMALL
 #endif
 #ifndef SEC_E_BUFFER_TOO_SMALL
-# define SEC_E_BUFFER_TOO_SMALL                ((HRESULT)0x80090321L)
+# define SEC_E_BUFFER_TOO_SMALL               ((HRESULT)0x80090321L)
 #endif
 #ifndef SEC_E_WRONG_PRINCIPAL
 #endif
 #ifndef SEC_E_WRONG_PRINCIPAL
-# define SEC_E_WRONG_PRINCIPAL                 ((HRESULT)0x80090322L)
+# define SEC_E_WRONG_PRINCIPAL                ((HRESULT)0x80090322L)
 #endif
 #ifndef SEC_E_TIME_SKEW
 #endif
 #ifndef SEC_E_TIME_SKEW
-# define SEC_E_TIME_SKEW                       ((HRESULT)0x80090324L)
+# define SEC_E_TIME_SKEW                      ((HRESULT)0x80090324L)
 #endif
 #ifndef SEC_E_UNTRUSTED_ROOT
 #endif
 #ifndef SEC_E_UNTRUSTED_ROOT
-# define SEC_E_UNTRUSTED_ROOT                  ((HRESULT)0x80090325L)
+# define SEC_E_UNTRUSTED_ROOT                 ((HRESULT)0x80090325L)
 #endif
 #ifndef SEC_E_ILLEGAL_MESSAGE
 #endif
 #ifndef SEC_E_ILLEGAL_MESSAGE
-# define SEC_E_ILLEGAL_MESSAGE                 ((HRESULT)0x80090326L)
+# define SEC_E_ILLEGAL_MESSAGE                ((HRESULT)0x80090326L)
 #endif
 #ifndef SEC_E_CERT_UNKNOWN
 #endif
 #ifndef SEC_E_CERT_UNKNOWN
-# define SEC_E_CERT_UNKNOWN                    ((HRESULT)0x80090327L)
+# define SEC_E_CERT_UNKNOWN                   ((HRESULT)0x80090327L)
 #endif
 #ifndef SEC_E_CERT_EXPIRED
 #endif
 #ifndef SEC_E_CERT_EXPIRED
-# define SEC_E_CERT_EXPIRED                    ((HRESULT)0x80090328L)
+# define SEC_E_CERT_EXPIRED                   ((HRESULT)0x80090328L)
 #endif
 #ifndef SEC_E_ENCRYPT_FAILURE
 #endif
 #ifndef SEC_E_ENCRYPT_FAILURE
-# define SEC_E_ENCRYPT_FAILURE                 ((HRESULT)0x80090329L)
+# define SEC_E_ENCRYPT_FAILURE                ((HRESULT)0x80090329L)
 #endif
 #ifndef SEC_E_DECRYPT_FAILURE
 #endif
 #ifndef SEC_E_DECRYPT_FAILURE
-# define SEC_E_DECRYPT_FAILURE                 ((HRESULT)0x80090330L)
+# define SEC_E_DECRYPT_FAILURE                ((HRESULT)0x80090330L)
 #endif
 #ifndef SEC_E_ALGORITHM_MISMATCH
 #endif
 #ifndef SEC_E_ALGORITHM_MISMATCH
-# define SEC_E_ALGORITHM_MISMATCH              ((HRESULT)0x80090331L)
+# define SEC_E_ALGORITHM_MISMATCH             ((HRESULT)0x80090331L)
 #endif
 #ifndef SEC_E_SECURITY_QOS_FAILED
 #endif
 #ifndef SEC_E_SECURITY_QOS_FAILED
-# define SEC_E_SECURITY_QOS_FAILED             ((HRESULT)0x80090332L)
+# define SEC_E_SECURITY_QOS_FAILED            ((HRESULT)0x80090332L)
 #endif
 #ifndef SEC_E_UNFINISHED_CONTEXT_DELETED
 #endif
 #ifndef SEC_E_UNFINISHED_CONTEXT_DELETED
-# define SEC_E_UNFINISHED_CONTEXT_DELETED      ((HRESULT)0x80090333L)
+# define SEC_E_UNFINISHED_CONTEXT_DELETED     ((HRESULT)0x80090333L)
 #endif
 #ifndef SEC_E_NO_TGT_REPLY
 #endif
 #ifndef SEC_E_NO_TGT_REPLY
-# define SEC_E_NO_TGT_REPLY                    ((HRESULT)0x80090334L)
+# define SEC_E_NO_TGT_REPLY                   ((HRESULT)0x80090334L)
 #endif
 #ifndef SEC_E_NO_IP_ADDRESSES
 #endif
 #ifndef SEC_E_NO_IP_ADDRESSES
-# define SEC_E_NO_IP_ADDRESSES                 ((HRESULT)0x80090335L)
+# define SEC_E_NO_IP_ADDRESSES                ((HRESULT)0x80090335L)
 #endif
 #ifndef SEC_E_WRONG_CREDENTIAL_HANDLE
 #endif
 #ifndef SEC_E_WRONG_CREDENTIAL_HANDLE
-# define SEC_E_WRONG_CREDENTIAL_HANDLE         ((HRESULT)0x80090336L)
+# define SEC_E_WRONG_CREDENTIAL_HANDLE        ((HRESULT)0x80090336L)
 #endif
 #ifndef SEC_E_CRYPTO_SYSTEM_INVALID
 #endif
 #ifndef SEC_E_CRYPTO_SYSTEM_INVALID
-# define SEC_E_CRYPTO_SYSTEM_INVALID           ((HRESULT)0x80090337L)
+# define SEC_E_CRYPTO_SYSTEM_INVALID          ((HRESULT)0x80090337L)
 #endif
 #ifndef SEC_E_MAX_REFERRALS_EXCEEDED
 #endif
 #ifndef SEC_E_MAX_REFERRALS_EXCEEDED
-# define SEC_E_MAX_REFERRALS_EXCEEDED          ((HRESULT)0x80090338L)
+# define SEC_E_MAX_REFERRALS_EXCEEDED         ((HRESULT)0x80090338L)
 #endif
 #ifndef SEC_E_MUST_BE_KDC
 #endif
 #ifndef SEC_E_MUST_BE_KDC
-# define SEC_E_MUST_BE_KDC                     ((HRESULT)0x80090339L)
+# define SEC_E_MUST_BE_KDC                    ((HRESULT)0x80090339L)
 #endif
 #ifndef SEC_E_STRONG_CRYPTO_NOT_SUPPORTED
 #endif
 #ifndef SEC_E_STRONG_CRYPTO_NOT_SUPPORTED
-# define SEC_E_STRONG_CRYPTO_NOT_SUPPORTED     ((HRESULT)0x8009033AL)
+# define SEC_E_STRONG_CRYPTO_NOT_SUPPORTED    ((HRESULT)0x8009033AL)
 #endif
 #ifndef SEC_E_TOO_MANY_PRINCIPALS
 #endif
 #ifndef SEC_E_TOO_MANY_PRINCIPALS
-# define SEC_E_TOO_MANY_PRINCIPALS             ((HRESULT)0x8009033BL)
+# define SEC_E_TOO_MANY_PRINCIPALS            ((HRESULT)0x8009033BL)
 #endif
 #ifndef SEC_E_NO_PA_DATA
 #endif
 #ifndef SEC_E_NO_PA_DATA
-# define SEC_E_NO_PA_DATA                      ((HRESULT)0x8009033CL)
+# define SEC_E_NO_PA_DATA                     ((HRESULT)0x8009033CL)
 #endif
 #ifndef SEC_E_PKINIT_NAME_MISMATCH
 #endif
 #ifndef SEC_E_PKINIT_NAME_MISMATCH
-# define SEC_E_PKINIT_NAME_MISMATCH            ((HRESULT)0x8009033DL)
+# define SEC_E_PKINIT_NAME_MISMATCH           ((HRESULT)0x8009033DL)
 #endif
 #ifndef SEC_E_SMARTCARD_LOGON_REQUIRED
 #endif
 #ifndef SEC_E_SMARTCARD_LOGON_REQUIRED
-# define SEC_E_SMARTCARD_LOGON_REQUIRED        ((HRESULT)0x8009033EL)
+# define SEC_E_SMARTCARD_LOGON_REQUIRED       ((HRESULT)0x8009033EL)
 #endif
 #ifndef SEC_E_SHUTDOWN_IN_PROGRESS
 #endif
 #ifndef SEC_E_SHUTDOWN_IN_PROGRESS
-# define SEC_E_SHUTDOWN_IN_PROGRESS            ((HRESULT)0x8009033FL)
+# define SEC_E_SHUTDOWN_IN_PROGRESS           ((HRESULT)0x8009033FL)
 #endif
 #ifndef SEC_E_KDC_INVALID_REQUEST
 #endif
 #ifndef SEC_E_KDC_INVALID_REQUEST
-# define SEC_E_KDC_INVALID_REQUEST             ((HRESULT)0x80090340L)
+# define SEC_E_KDC_INVALID_REQUEST            ((HRESULT)0x80090340L)
 #endif
 #ifndef SEC_E_KDC_UNABLE_TO_REFER
 #endif
 #ifndef SEC_E_KDC_UNABLE_TO_REFER
-# define SEC_E_KDC_UNABLE_TO_REFER             ((HRESULT)0x80090341L)
+# define SEC_E_KDC_UNABLE_TO_REFER            ((HRESULT)0x80090341L)
 #endif
 #ifndef SEC_E_KDC_UNKNOWN_ETYPE
 #endif
 #ifndef SEC_E_KDC_UNKNOWN_ETYPE
-# define SEC_E_KDC_UNKNOWN_ETYPE               ((HRESULT)0x80090342L)
+# define SEC_E_KDC_UNKNOWN_ETYPE              ((HRESULT)0x80090342L)
 #endif
 #ifndef SEC_E_UNSUPPORTED_PREAUTH
 #endif
 #ifndef SEC_E_UNSUPPORTED_PREAUTH
-# define SEC_E_UNSUPPORTED_PREAUTH             ((HRESULT)0x80090343L)
+# define SEC_E_UNSUPPORTED_PREAUTH            ((HRESULT)0x80090343L)
 #endif
 #ifndef SEC_E_DELEGATION_REQUIRED
 #endif
 #ifndef SEC_E_DELEGATION_REQUIRED
-# define SEC_E_DELEGATION_REQUIRED             ((HRESULT)0x80090345L)
+# define SEC_E_DELEGATION_REQUIRED            ((HRESULT)0x80090345L)
 #endif
 #ifndef SEC_E_BAD_BINDINGS
 #endif
 #ifndef SEC_E_BAD_BINDINGS
-# define SEC_E_BAD_BINDINGS                    ((HRESULT)0x80090346L)
+# define SEC_E_BAD_BINDINGS                   ((HRESULT)0x80090346L)
 #endif
 #ifndef SEC_E_MULTIPLE_ACCOUNTS
 #endif
 #ifndef SEC_E_MULTIPLE_ACCOUNTS
-# define SEC_E_MULTIPLE_ACCOUNTS               ((HRESULT)0x80090347L)
+# define SEC_E_MULTIPLE_ACCOUNTS              ((HRESULT)0x80090347L)
 #endif
 #ifndef SEC_E_NO_KERB_KEY
 #endif
 #ifndef SEC_E_NO_KERB_KEY
-# define SEC_E_NO_KERB_KEY                     ((HRESULT)0x80090348L)
+# define SEC_E_NO_KERB_KEY                    ((HRESULT)0x80090348L)
 #endif
 #ifndef SEC_E_CERT_WRONG_USAGE
 #endif
 #ifndef SEC_E_CERT_WRONG_USAGE
-# define SEC_E_CERT_WRONG_USAGE                ((HRESULT)0x80090349L)
+# define SEC_E_CERT_WRONG_USAGE               ((HRESULT)0x80090349L)
 #endif
 #ifndef SEC_E_DOWNGRADE_DETECTED
 #endif
 #ifndef SEC_E_DOWNGRADE_DETECTED
-# define SEC_E_DOWNGRADE_DETECTED              ((HRESULT)0x80090350L)
+# define SEC_E_DOWNGRADE_DETECTED             ((HRESULT)0x80090350L)
 #endif
 #ifndef SEC_E_SMARTCARD_CERT_REVOKED
 #endif
 #ifndef SEC_E_SMARTCARD_CERT_REVOKED
-# define SEC_E_SMARTCARD_CERT_REVOKED          ((HRESULT)0x80090351L)
+# define SEC_E_SMARTCARD_CERT_REVOKED         ((HRESULT)0x80090351L)
 #endif
 #ifndef SEC_E_ISSUING_CA_UNTRUSTED
 #endif
 #ifndef SEC_E_ISSUING_CA_UNTRUSTED
-# define SEC_E_ISSUING_CA_UNTRUSTED            ((HRESULT)0x80090352L)
+# define SEC_E_ISSUING_CA_UNTRUSTED           ((HRESULT)0x80090352L)
 #endif
 #ifndef SEC_E_REVOCATION_OFFLINE_C
 #endif
 #ifndef SEC_E_REVOCATION_OFFLINE_C
-# define SEC_E_REVOCATION_OFFLINE_C            ((HRESULT)0x80090353L)
+# define SEC_E_REVOCATION_OFFLINE_C           ((HRESULT)0x80090353L)
 #endif
 #ifndef SEC_E_PKINIT_CLIENT_FAILURE
 #endif
 #ifndef SEC_E_PKINIT_CLIENT_FAILURE
-# define SEC_E_PKINIT_CLIENT_FAILURE           ((HRESULT)0x80090354L)
+# define SEC_E_PKINIT_CLIENT_FAILURE          ((HRESULT)0x80090354L)
 #endif
 #ifndef SEC_E_SMARTCARD_CERT_EXPIRED
 #endif
 #ifndef SEC_E_SMARTCARD_CERT_EXPIRED
-# define SEC_E_SMARTCARD_CERT_EXPIRED          ((HRESULT)0x80090355L)
+# define SEC_E_SMARTCARD_CERT_EXPIRED         ((HRESULT)0x80090355L)
 #endif
 #ifndef SEC_E_NO_S4U_PROT_SUPPORT
 #endif
 #ifndef SEC_E_NO_S4U_PROT_SUPPORT
-# define SEC_E_NO_S4U_PROT_SUPPORT             ((HRESULT)0x80090356L)
+# define SEC_E_NO_S4U_PROT_SUPPORT            ((HRESULT)0x80090356L)
 #endif
 #ifndef SEC_E_CROSSREALM_DELEGATION_FAILURE
 #endif
 #ifndef SEC_E_CROSSREALM_DELEGATION_FAILURE
-# define SEC_E_CROSSREALM_DELEGATION_FAILURE   ((HRESULT)0x80090357L)
+# define SEC_E_CROSSREALM_DELEGATION_FAILURE  ((HRESULT)0x80090357L)
 #endif
 #ifndef SEC_E_REVOCATION_OFFLINE_KDC
 #endif
 #ifndef SEC_E_REVOCATION_OFFLINE_KDC
-# define SEC_E_REVOCATION_OFFLINE_KDC          ((HRESULT)0x80090358L)
+# define SEC_E_REVOCATION_OFFLINE_KDC         ((HRESULT)0x80090358L)
 #endif
 #ifndef SEC_E_ISSUING_CA_UNTRUSTED_KDC
 #endif
 #ifndef SEC_E_ISSUING_CA_UNTRUSTED_KDC
-# define SEC_E_ISSUING_CA_UNTRUSTED_KDC        ((HRESULT)0x80090359L)
+# define SEC_E_ISSUING_CA_UNTRUSTED_KDC       ((HRESULT)0x80090359L)
 #endif
 #ifndef SEC_E_KDC_CERT_EXPIRED
 #endif
 #ifndef SEC_E_KDC_CERT_EXPIRED
-# define SEC_E_KDC_CERT_EXPIRED                ((HRESULT)0x8009035AL)
+# define SEC_E_KDC_CERT_EXPIRED               ((HRESULT)0x8009035AL)
 #endif
 #ifndef SEC_E_KDC_CERT_REVOKED
 #endif
 #ifndef SEC_E_KDC_CERT_REVOKED
-# define SEC_E_KDC_CERT_REVOKED                ((HRESULT)0x8009035BL)
+# define SEC_E_KDC_CERT_REVOKED               ((HRESULT)0x8009035BL)
 #endif
 #ifndef SEC_E_INVALID_PARAMETER
 #endif
 #ifndef SEC_E_INVALID_PARAMETER
-# define SEC_E_INVALID_PARAMETER               ((HRESULT)0x8009035DL)
+# define SEC_E_INVALID_PARAMETER              ((HRESULT)0x8009035DL)
 #endif
 #ifndef SEC_E_DELEGATION_POLICY
 #endif
 #ifndef SEC_E_DELEGATION_POLICY
-# define SEC_E_DELEGATION_POLICY               ((HRESULT)0x8009035EL)
+# define SEC_E_DELEGATION_POLICY              ((HRESULT)0x8009035EL)
 #endif
 #ifndef SEC_E_POLICY_NLTM_ONLY
 #endif
 #ifndef SEC_E_POLICY_NLTM_ONLY
-# define SEC_E_POLICY_NLTM_ONLY                ((HRESULT)0x8009035FL)
+# define SEC_E_POLICY_NLTM_ONLY               ((HRESULT)0x8009035FL)
 #endif
 
 #ifndef SEC_I_CONTINUE_NEEDED
 #endif
 
 #ifndef SEC_I_CONTINUE_NEEDED
-# define SEC_I_CONTINUE_NEEDED                 ((HRESULT)0x00090312L)
+# define SEC_I_CONTINUE_NEEDED                ((HRESULT)0x00090312L)
 #endif
 #ifndef SEC_I_COMPLETE_NEEDED
 #endif
 #ifndef SEC_I_COMPLETE_NEEDED
-# define SEC_I_COMPLETE_NEEDED                 ((HRESULT)0x00090313L)
+# define SEC_I_COMPLETE_NEEDED                ((HRESULT)0x00090313L)
 #endif
 #ifndef SEC_I_COMPLETE_AND_CONTINUE
 #endif
 #ifndef SEC_I_COMPLETE_AND_CONTINUE
-# define SEC_I_COMPLETE_AND_CONTINUE           ((HRESULT)0x00090314L)
+# define SEC_I_COMPLETE_AND_CONTINUE          ((HRESULT)0x00090314L)
 #endif
 #ifndef SEC_I_LOCAL_LOGON
 #endif
 #ifndef SEC_I_LOCAL_LOGON
-# define SEC_I_LOCAL_LOGON                     ((HRESULT)0x00090315L)
+# define SEC_I_LOCAL_LOGON                    ((HRESULT)0x00090315L)
 #endif
 #ifndef SEC_I_CONTEXT_EXPIRED
 #endif
 #ifndef SEC_I_CONTEXT_EXPIRED
-# define SEC_I_CONTEXT_EXPIRED                 ((HRESULT)0x00090317L)
+# define SEC_I_CONTEXT_EXPIRED                ((HRESULT)0x00090317L)
 #endif
 #ifndef SEC_I_INCOMPLETE_CREDENTIALS
 #endif
 #ifndef SEC_I_INCOMPLETE_CREDENTIALS
-# define SEC_I_INCOMPLETE_CREDENTIALS          ((HRESULT)0x00090320L)
+# define SEC_I_INCOMPLETE_CREDENTIALS         ((HRESULT)0x00090320L)
 #endif
 #ifndef SEC_I_RENEGOTIATE
 #endif
 #ifndef SEC_I_RENEGOTIATE
-# define SEC_I_RENEGOTIATE                     ((HRESULT)0x00090321L)
+# define SEC_I_RENEGOTIATE                    ((HRESULT)0x00090321L)
 #endif
 #ifndef SEC_I_NO_LSA_CONTEXT
 #endif
 #ifndef SEC_I_NO_LSA_CONTEXT
-# define SEC_I_NO_LSA_CONTEXT                  ((HRESULT)0x00090323L)
+# define SEC_I_NO_LSA_CONTEXT                 ((HRESULT)0x00090323L)
 #endif
 #ifndef SEC_I_SIGNATURE_NEEDED
 #endif
 #ifndef SEC_I_SIGNATURE_NEEDED
-# define SEC_I_SIGNATURE_NEEDED                ((HRESULT)0x0009035CL)
+# define SEC_I_SIGNATURE_NEEDED               ((HRESULT)0x0009035CL)
+#endif
+
+#ifdef UNICODE
+#  define SECFLAG_WINNT_AUTH_IDENTITY \
+     (unsigned long)SEC_WINNT_AUTH_IDENTITY_UNICODE
+#else
+#  define SECFLAG_WINNT_AUTH_IDENTITY \
+     (unsigned long)SEC_WINNT_AUTH_IDENTITY_ANSI
 #endif
 
 #endif
 
+/*
+ * Definitions required from ntsecapi.h are directly provided below this point
+ * to avoid including ntsecapi.h due to a conflict with OpenSSL's safestack.h
+ */
+#define KERB_WRAP_NO_ENCRYPT 0x80000001
+
 #endif /* USE_WINDOWS_SSPI */
 #endif /* USE_WINDOWS_SSPI */
+
 #endif /* HEADER_CURL_SSPI_H */
 #endif /* HEADER_CURL_SSPI_H */
index c9e91f6..5b70139 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -63,32 +63,38 @@ static void *curl_thread_create_thunk(void *arg)
 
 curl_thread_t Curl_thread_create(unsigned int (*func) (void*), void *arg)
 {
 
 curl_thread_t Curl_thread_create(unsigned int (*func) (void*), void *arg)
 {
-  curl_thread_t t;
+  curl_thread_t t = malloc(sizeof(pthread_t));
   struct curl_actual_call *ac = malloc(sizeof(struct curl_actual_call));
   struct curl_actual_call *ac = malloc(sizeof(struct curl_actual_call));
-  if(!ac)
-    return curl_thread_t_null;
+  if(!(ac && t))
+    goto err;
 
   ac->func = func;
   ac->arg = arg;
 
 
   ac->func = func;
   ac->arg = arg;
 
-  if(pthread_create(&t, NULL, curl_thread_create_thunk, ac) != 0) {
-    free(ac);
-    return curl_thread_t_null;
-  }
+  if(pthread_create(t, NULL, curl_thread_create_thunk, ac) != 0)
+    goto err;
 
   return t;
 
   return t;
+
+err:
+  Curl_safefree(t);
+  Curl_safefree(ac);
+  return curl_thread_t_null;
 }
 
 void Curl_thread_destroy(curl_thread_t hnd)
 {
 }
 
 void Curl_thread_destroy(curl_thread_t hnd)
 {
-  if(hnd != curl_thread_t_null)
-    pthread_detach(hnd);
+  if(hnd != curl_thread_t_null) {
+    pthread_detach(*hnd);
+    free(hnd);
+  }
 }
 
 int Curl_thread_join(curl_thread_t *hnd)
 {
 }
 
 int Curl_thread_join(curl_thread_t *hnd)
 {
-  int ret = (pthread_join(*hnd, NULL) == 0);
+  int ret = (pthread_join(**hnd, NULL) == 0);
 
 
+  free(*hnd);
   *hnd = curl_thread_t_null;
 
   return ret;
   *hnd = curl_thread_t_null;
 
   return ret;
@@ -117,7 +123,12 @@ void Curl_thread_destroy(curl_thread_t hnd)
 
 int Curl_thread_join(curl_thread_t *hnd)
 {
 
 int Curl_thread_join(curl_thread_t *hnd)
 {
+#if !defined(_WIN32_WINNT) || !defined(_WIN32_WINNT_VISTA) || \
+    (_WIN32_WINNT < _WIN32_WINNT_VISTA)
   int ret = (WaitForSingleObject(*hnd, INFINITE) == WAIT_OBJECT_0);
   int ret = (WaitForSingleObject(*hnd, INFINITE) == WAIT_OBJECT_0);
+#else
+  int ret = (WaitForSingleObjectEx(*hnd, INFINITE, FALSE) == WAIT_OBJECT_0);
+#endif
 
   Curl_thread_destroy(*hnd);
 
 
   Curl_thread_destroy(*hnd);
 
index d9cec6b..0f3191a 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -26,8 +26,8 @@
 #if defined(USE_THREADS_POSIX)
 #  define CURL_STDCALL
 #  define curl_mutex_t           pthread_mutex_t
 #if defined(USE_THREADS_POSIX)
 #  define CURL_STDCALL
 #  define curl_mutex_t           pthread_mutex_t
-#  define curl_thread_t          pthread_t
-#  define curl_thread_t_null     (pthread_t)0
+#  define curl_thread_t          pthread_t *
+#  define curl_thread_t_null     (pthread_t *)0
 #  define Curl_mutex_init(m)     pthread_mutex_init(m, NULL)
 #  define Curl_mutex_acquire(m)  pthread_mutex_lock(m)
 #  define Curl_mutex_release(m)  pthread_mutex_unlock(m)
 #  define Curl_mutex_init(m)     pthread_mutex_init(m, NULL)
 #  define Curl_mutex_acquire(m)  pthread_mutex_lock(m)
 #  define Curl_mutex_release(m)  pthread_mutex_unlock(m)
 #  define curl_mutex_t           CRITICAL_SECTION
 #  define curl_thread_t          HANDLE
 #  define curl_thread_t_null     (HANDLE)0
 #  define curl_mutex_t           CRITICAL_SECTION
 #  define curl_thread_t          HANDLE
 #  define curl_thread_t_null     (HANDLE)0
-#  define Curl_mutex_init(m)     InitializeCriticalSection(m)
+#  if !defined(_WIN32_WINNT) || !defined(_WIN32_WINNT_VISTA) || \
+      (_WIN32_WINNT < _WIN32_WINNT_VISTA)
+#    define Curl_mutex_init(m)   InitializeCriticalSection(m)
+#  else
+#    define Curl_mutex_init(m)   InitializeCriticalSectionEx(m, 0, 1)
+#  endif
 #  define Curl_mutex_acquire(m)  EnterCriticalSection(m)
 #  define Curl_mutex_release(m)  LeaveCriticalSection(m)
 #  define Curl_mutex_destroy(m)  DeleteCriticalSection(m)
 #  define Curl_mutex_acquire(m)  EnterCriticalSection(m)
 #  define Curl_mutex_release(m)  LeaveCriticalSection(m)
 #  define Curl_mutex_destroy(m)  DeleteCriticalSection(m)
index f5c8921..86ddfb9 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -122,9 +122,8 @@ static char *unescape_word(struct SessionHandle *data, const char *inputbuff)
       dictp[olen++] = byte;
     }
     dictp[olen]=0;
       dictp[olen++] = byte;
     }
     dictp[olen]=0;
-
-    free(newp);
   }
   }
+  free(newp);
   return dictp;
 }
 
   return dictp;
 }
 
index 41b73be..ae16941 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -47,7 +47,7 @@
  *
  * an allocated dedotdotified output string
  */
  *
  * an allocated dedotdotified output string
  */
-char *Curl_dedotdotify(char *input)
+char *Curl_dedotdotify(const char *input)
 {
   size_t inlen = strlen(input);
   char *clone;
 {
   size_t inlen = strlen(input);
   char *clone;
index c3487c1..cd57822 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -21,5 +21,5 @@
  * KIND, either express or implied.
  *
  ***************************************************************************/
  * KIND, either express or implied.
  *
  ***************************************************************************/
-char *Curl_dedotdotify(char *input);
+char *Curl_dedotdotify(const char *input);
 #endif
 #endif
index 041a831..619312b 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include <sys/param.h>
 #endif
 
 #include <sys/param.h>
 #endif
 
-#if defined(HAVE_SIGNAL_H) && defined(HAVE_SIGACTION) && defined(USE_OPENSSL)
-#define SIGPIPE_IGNORE 1
-#include <signal.h>
-#endif
-
 #include "strequal.h"
 #include "urldata.h"
 #include <curl/curl.h>
 #include "transfer.h"
 #include "strequal.h"
 #include "urldata.h"
 #include <curl/curl.h>
 #include "transfer.h"
-#include "sslgen.h"
+#include "vtls/vtls.h"
 #include "url.h"
 #include "getinfo.h"
 #include "hostip.h"
 #include "url.h"
 #include "getinfo.h"
 #include "hostip.h"
@@ -78,6 +73,8 @@
 #include "warnless.h"
 #include "conncache.h"
 #include "multiif.h"
 #include "warnless.h"
 #include "conncache.h"
 #include "multiif.h"
+#include "sigpipe.h"
+#include "ssh.h"
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
 /* The last #include file should be: */
 #include "memdebug.h"
 
 /* The last #include file should be: */
 #include "memdebug.h"
 
-#ifdef SIGPIPE_IGNORE
-struct sigpipe_ignore {
-  struct sigaction old_pipe_act;
-  bool no_signal;
-};
-
-#define SIGPIPE_VARIABLE(x) struct sigpipe_ignore x
-
-/*
- * sigpipe_ignore() makes sure we ignore SIGPIPE while running libcurl
- * internals, and then sigpipe_restore() will restore the situation when we
- * return from libcurl again.
- */
-static void sigpipe_ignore(struct SessionHandle *data,
-                           struct sigpipe_ignore *ig)
-{
-  /* get a local copy of no_signal because the SessionHandle might not be
-     around when we restore */
-  ig->no_signal = data->set.no_signal;
-  if(!data->set.no_signal) {
-    struct sigaction action;
-    /* first, extract the existing situation */
-    memset(&ig->old_pipe_act, 0, sizeof(struct sigaction));
-    sigaction(SIGPIPE, NULL, &ig->old_pipe_act);
-    action = ig->old_pipe_act;
-    /* ignore this signal */
-    action.sa_handler = SIG_IGN;
-    sigaction(SIGPIPE, &action, NULL);
-  }
-}
-
-/*
- * sigpipe_restore() puts back the outside world's opinion of signal handler
- * and SIGPIPE handling. It MUST only be called after a corresponding
- * sigpipe_ignore() was used.
- */
-static void sigpipe_restore(struct sigpipe_ignore *ig)
-{
-  if(!ig->no_signal)
-    /* restore the outside state */
-    sigaction(SIGPIPE, &ig->old_pipe_act, NULL);
-}
-
-#else
-/* for systems without sigaction */
-#define sigpipe_ignore(x,y) Curl_nop_stmt
-#define sigpipe_restore(x)  Curl_nop_stmt
-#define SIGPIPE_VARIABLE(x)
-#endif
-
 /* win32_cleanup() is for win32 socket cleanup functionality, the opposite
    of win32_init() */
 static void win32_cleanup(void)
 /* win32_cleanup() is for win32 socket cleanup functionality, the opposite
    of win32_init() */
 static void win32_cleanup(void)
@@ -190,9 +137,9 @@ static CURLcode win32_init(void)
 
 #ifdef USE_WINDOWS_SSPI
   {
 
 #ifdef USE_WINDOWS_SSPI
   {
-    CURLcode err = Curl_sspi_global_init();
-    if(err != CURLE_OK)
-      return err;
+    CURLcode result = Curl_sspi_global_init();
+    if(result)
+      return result;
   }
 #endif
 
   }
 #endif
 
@@ -297,7 +244,7 @@ CURLcode curl_global_init(long flags)
     }
 
   if(flags & CURL_GLOBAL_WIN32)
     }
 
   if(flags & CURL_GLOBAL_WIN32)
-    if(win32_init() != CURLE_OK) {
+    if(win32_init()) {
       DEBUGF(fprintf(stderr, "Error: win32_init failed\n"));
       return CURLE_FAILED_INIT;
     }
       DEBUGF(fprintf(stderr, "Error: win32_init failed\n"));
       return CURLE_FAILED_INIT;
     }
@@ -319,7 +266,7 @@ CURLcode curl_global_init(long flags)
   idna_init();
 #endif
 
   idna_init();
 #endif
 
-  if(Curl_resolver_global_init() != CURLE_OK) {
+  if(Curl_resolver_global_init()) {
     DEBUGF(fprintf(stderr, "Error: resolver_global_init failed\n"));
     return CURLE_FAILED_INIT;
   }
     DEBUGF(fprintf(stderr, "Error: resolver_global_init failed\n"));
     return CURLE_FAILED_INIT;
   }
@@ -347,19 +294,23 @@ CURLcode curl_global_init_mem(long flags, curl_malloc_callback m,
                               curl_free_callback f, curl_realloc_callback r,
                               curl_strdup_callback s, curl_calloc_callback c)
 {
                               curl_free_callback f, curl_realloc_callback r,
                               curl_strdup_callback s, curl_calloc_callback c)
 {
-  CURLcode code = CURLE_OK;
+  CURLcode result = CURLE_OK;
 
   /* Invalid input, return immediately */
   if(!m || !f || !r || !s || !c)
     return CURLE_FAILED_INIT;
 
 
   /* Invalid input, return immediately */
   if(!m || !f || !r || !s || !c)
     return CURLE_FAILED_INIT;
 
-  /* Already initialized, don't do it again */
-  if(initialized)
+  if(initialized) {
+    /* Already initialized, don't do it again, but bump the variable anyway to
+       work like curl_global_init() and require the same amount of cleanup
+       calls. */
+    initialized++;
     return CURLE_OK;
     return CURLE_OK;
+  }
 
   /* Call the actual init function first */
 
   /* Call the actual init function first */
-  code = curl_global_init(flags);
-  if(code == CURLE_OK) {
+  result = curl_global_init(flags);
+  if(!result) {
     Curl_cmalloc = m;
     Curl_cfree = f;
     Curl_cstrdup = s;
     Curl_cmalloc = m;
     Curl_cfree = f;
     Curl_cstrdup = s;
@@ -367,7 +318,7 @@ CURLcode curl_global_init_mem(long flags, curl_malloc_callback m,
     Curl_ccalloc = c;
   }
 
     Curl_ccalloc = c;
   }
 
-  return code;
+  return result;
 }
 
 /**
 }
 
 /**
@@ -407,13 +358,13 @@ void curl_global_cleanup(void)
  */
 CURL *curl_easy_init(void)
 {
  */
 CURL *curl_easy_init(void)
 {
-  CURLcode res;
+  CURLcode result;
   struct SessionHandle *data;
 
   /* Make sure we inited the global SSL stuff */
   if(!initialized) {
   struct SessionHandle *data;
 
   /* Make sure we inited the global SSL stuff */
   if(!initialized) {
-    res = curl_global_init(CURL_GLOBAL_DEFAULT);
-    if(res) {
+    result = curl_global_init(CURL_GLOBAL_DEFAULT);
+    if(result) {
       /* something in the global init failed, return nothing */
       DEBUGF(fprintf(stderr, "Error: curl_global_init failed\n"));
       return NULL;
       /* something in the global init failed, return nothing */
       DEBUGF(fprintf(stderr, "Error: curl_global_init failed\n"));
       return NULL;
@@ -421,8 +372,8 @@ CURL *curl_easy_init(void)
   }
 
   /* We use curl_open() with undefined URL so far */
   }
 
   /* We use curl_open() with undefined URL so far */
-  res = Curl_open(&data);
-  if(res != CURLE_OK) {
+  result = Curl_open(&data);
+  if(result) {
     DEBUGF(fprintf(stderr, "Error: Curl_open failed\n"));
     return NULL;
   }
     DEBUGF(fprintf(stderr, "Error: Curl_open failed\n"));
     return NULL;
   }
@@ -440,86 +391,298 @@ CURLcode curl_easy_setopt(CURL *curl, CURLoption tag, ...)
 {
   va_list arg;
   struct SessionHandle *data = curl;
 {
   va_list arg;
   struct SessionHandle *data = curl;
-  CURLcode ret;
+  CURLcode result;
 
   if(!curl)
     return CURLE_BAD_FUNCTION_ARGUMENT;
 
   va_start(arg, tag);
 
 
   if(!curl)
     return CURLE_BAD_FUNCTION_ARGUMENT;
 
   va_start(arg, tag);
 
-  ret = Curl_setopt(data, tag, arg);
+  result = Curl_setopt(data, tag, arg);
 
   va_end(arg);
 
   va_end(arg);
-  return ret;
+  return result;
 }
 
 }
 
+#ifdef CURLDEBUG
+
+struct socketmonitor {
+  struct socketmonitor *next; /* the next node in the list or NULL */
+  struct pollfd socket; /* socket info of what to monitor */
+};
+
+struct events {
+  long ms;              /* timeout, run the timeout function when reached */
+  bool msbump;          /* set TRUE when timeout is set by callback */
+  int num_sockets;      /* number of nodes in the monitor list */
+  struct socketmonitor *list; /* list of sockets to monitor */
+  int running_handles;  /* store the returned number */
+};
+
+/* events_timer
+ *
+ * Callback that gets called with a new value when the timeout should be
+ * updated.
+ */
+
+static int events_timer(CURLM *multi,    /* multi handle */
+                        long timeout_ms, /* see above */
+                        void *userp)    /* private callback pointer */
+{
+  struct events *ev = userp;
+  (void)multi;
+  if(timeout_ms == -1)
+    /* timeout removed */
+    timeout_ms = 0;
+  else if(timeout_ms == 0)
+    /* timeout is already reached! */
+    timeout_ms = 1; /* trigger asap */
+
+  ev->ms = timeout_ms;
+  ev->msbump = TRUE;
+  return 0;
+}
+
+
+/* poll2cselect
+ *
+ * convert from poll() bit definitions to libcurl's CURL_CSELECT_* ones
+ */
+static int poll2cselect(int pollmask)
+{
+  int omask=0;
+  if(pollmask & POLLIN)
+    omask |= CURL_CSELECT_IN;
+  if(pollmask & POLLOUT)
+    omask |= CURL_CSELECT_OUT;
+  if(pollmask & POLLERR)
+    omask |= CURL_CSELECT_ERR;
+  return omask;
+}
+
+
+/* socketcb2poll
+ *
+ * convert from libcurl' CURL_POLL_* bit definitions to poll()'s
+ */
+static short socketcb2poll(int pollmask)
+{
+  short omask=0;
+  if(pollmask & CURL_POLL_IN)
+    omask |= POLLIN;
+  if(pollmask & CURL_POLL_OUT)
+    omask |= POLLOUT;
+  return omask;
+}
+
+/* events_socket
+ *
+ * Callback that gets called with information about socket activity to
+ * monitor.
+ */
+static int events_socket(CURL *easy,      /* easy handle */
+                         curl_socket_t s, /* socket */
+                         int what,        /* see above */
+                         void *userp,     /* private callback
+                                             pointer */
+                         void *socketp)   /* private socket
+                                             pointer */
+{
+  struct events *ev = userp;
+  struct socketmonitor *m;
+  struct socketmonitor *prev=NULL;
+
+#if defined(CURL_DISABLE_VERBOSE_STRINGS)
+  (void) easy;
+#endif
+  (void)socketp;
+
+  m = ev->list;
+  while(m) {
+    if(m->socket.fd == s) {
+
+      if(what == CURL_POLL_REMOVE) {
+        struct socketmonitor *nxt = m->next;
+        /* remove this node from the list of monitored sockets */
+        if(prev)
+          prev->next = nxt;
+        else
+          ev->list = nxt;
+        free(m);
+        m = nxt;
+        infof(easy, "socket cb: socket %d REMOVED\n", s);
+      }
+      else {
+        /* The socket 's' is already being monitored, update the activity
+           mask. Convert from libcurl bitmask to the poll one. */
+        m->socket.events = socketcb2poll(what);
+        infof(easy, "socket cb: socket %d UPDATED as %s%s\n", s,
+              what&CURL_POLL_IN?"IN":"",
+              what&CURL_POLL_OUT?"OUT":"");
+      }
+      break;
+    }
+    prev = m;
+    m = m->next; /* move to next node */
+  }
+  if(!m) {
+    if(what == CURL_POLL_REMOVE) {
+      /* this happens a bit too often, libcurl fix perhaps? */
+      /* fprintf(stderr,
+         "%s: socket %d asked to be REMOVED but not present!\n",
+                 __func__, s); */
+    }
+    else {
+      m = malloc(sizeof(struct socketmonitor));
+      m->next = ev->list;
+      m->socket.fd = s;
+      m->socket.events = socketcb2poll(what);
+      m->socket.revents = 0;
+      ev->list = m;
+      infof(easy, "socket cb: socket %d ADDED as %s%s\n", s,
+            what&CURL_POLL_IN?"IN":"",
+            what&CURL_POLL_OUT?"OUT":"");
+    }
+  }
+
+  return 0;
+}
+
+
 /*
 /*
- * curl_easy_perform() is the external interface that performs a blocking
- * transfer as previously setup.
+ * events_setup()
  *
  *
- * CONCEPT: This function creates a multi handle, adds the easy handle to it,
- * runs curl_multi_perform() until the transfer is done, then detaches the
- * easy handle, destroys the multi handle and returns the easy handle's return
- * code.
+ * Do the multi handle setups that only event-based transfers need.
+ */
+static void events_setup(CURLM *multi, struct events *ev)
+{
+  /* timer callback */
+  curl_multi_setopt(multi, CURLMOPT_TIMERFUNCTION, events_timer);
+  curl_multi_setopt(multi, CURLMOPT_TIMERDATA, ev);
+
+  /* socket callback */
+  curl_multi_setopt(multi, CURLMOPT_SOCKETFUNCTION, events_socket);
+  curl_multi_setopt(multi, CURLMOPT_SOCKETDATA, ev);
+}
+
+
+/* wait_or_timeout()
  *
  *
- * REALITY: it can't just create and destroy the multi handle that easily. It
- * needs to keep it around since if this easy handle is used again by this
- * function, the same multi handle must be re-used so that the same pools and
- * caches can be used.
+ * waits for activity on any of the given sockets, or the timeout to trigger.
  */
  */
-CURLcode curl_easy_perform(CURL *easy)
+
+static CURLcode wait_or_timeout(struct Curl_multi *multi, struct events *ev)
 {
 {
-  CURLM *multi;
-  CURLMcode mcode;
-  CURLcode code = CURLE_OK;
-  CURLMsg *msg;
   bool done = FALSE;
   bool done = FALSE;
-  int rc;
-  struct SessionHandle *data = easy;
-  int without_fds = 0;  /* count number of consecutive returns from
-                           curl_multi_wait() without any filedescriptors */
-  struct timeval before;
-  SIGPIPE_VARIABLE(pipe_st);
+  CURLMcode mcode;
+  CURLcode result = CURLE_OK;
 
 
-  if(!easy)
-    return CURLE_BAD_FUNCTION_ARGUMENT;
+  while(!done) {
+    CURLMsg *msg;
+    struct socketmonitor *m;
+    struct pollfd *f;
+    struct pollfd fds[4];
+    int numfds=0;
+    int pollrc;
+    int i;
+    struct timeval before;
+    struct timeval after;
+
+    /* populate the fds[] array */
+    for(m = ev->list, f=&fds[0]; m; m = m->next) {
+      f->fd = m->socket.fd;
+      f->events = m->socket.events;
+      f->revents = 0;
+      /* fprintf(stderr, "poll() %d check socket %d\n", numfds, f->fd); */
+      f++;
+      numfds++;
+    }
 
 
-  if(data->multi) {
-    failf(data, "easy handled already used in multi handle");
-    return CURLE_FAILED_INIT;
-  }
+    /* get the time stamp to use to figure out how long poll takes */
+    before = curlx_tvnow();
 
 
-  if(data->multi_easy)
-    multi = data->multi_easy;
-  else {
-    /* this multi handle will only ever have a single easy handled attached
-       to it, so make it use minimal hashes */
-    multi = Curl_multi_handle(1, 3);
-    if(!multi)
-      return CURLE_OUT_OF_MEMORY;
-    data->multi_easy = multi;
-  }
+    /* wait for activity or timeout */
+    pollrc = Curl_poll(fds, numfds, (int)ev->ms);
 
 
-  /* Copy the MAXCONNECTS option to the multi handle */
-  curl_multi_setopt(multi, CURLMOPT_MAXCONNECTS, data->set.maxconnects);
+    after = curlx_tvnow();
 
 
-  mcode = curl_multi_add_handle(multi, easy);
-  if(mcode) {
-    curl_multi_cleanup(multi);
-    if(mcode == CURLM_OUT_OF_MEMORY)
-      return CURLE_OUT_OF_MEMORY;
+    ev->msbump = FALSE; /* reset here */
+
+    if(0 == pollrc) {
+      /* timeout! */
+      ev->ms = 0;
+      /* fprintf(stderr, "call curl_multi_socket_action( TIMEOUT )\n"); */
+      mcode = curl_multi_socket_action(multi, CURL_SOCKET_TIMEOUT, 0,
+                                       &ev->running_handles);
+    }
+    else if(pollrc > 0) {
+      /* loop over the monitored sockets to see which ones had activity */
+      for(i = 0; i< numfds; i++) {
+        if(fds[i].revents) {
+          /* socket activity, tell libcurl */
+          int act = poll2cselect(fds[i].revents); /* convert */
+          infof(multi->easyp, "call curl_multi_socket_action( socket %d )\n",
+                fds[i].fd);
+          mcode = curl_multi_socket_action(multi, fds[i].fd, act,
+                                           &ev->running_handles);
+        }
+      }
+
+      if(!ev->msbump)
+        /* If nothing updated the timeout, we decrease it by the spent time.
+         * If it was updated, it has the new timeout time stored already.
+         */
+        ev->ms += curlx_tvdiff(after, before);
+
+    }
     else
     else
-      return CURLE_FAILED_INIT;
+      return CURLE_RECV_ERROR;
+
+    if(mcode)
+      return CURLE_URL_MALFORMAT; /* TODO: return a proper error! */
+
+    /* we don't really care about the "msgs_in_queue" value returned in the
+       second argument */
+    msg = curl_multi_info_read(multi, &pollrc);
+    if(msg) {
+      result = msg->data.result;
+      done = TRUE;
+    }
   }
 
   }
 
-  sigpipe_ignore(data, &pipe_st);
+  return result;
+}
 
 
-  /* assign this after curl_multi_add_handle() since that function checks for
-     it and rejects this handle otherwise */
-  data->multi = multi;
+
+/* easy_events()
+ *
+ * Runs a transfer in a blocking manner using the events-based API
+ */
+static CURLcode easy_events(CURLM *multi)
+{
+  struct events evs= {2, FALSE, 0, NULL, 0};
+
+  /* if running event-based, do some further multi inits */
+  events_setup(multi, &evs);
+
+  return wait_or_timeout(multi, &evs);
+}
+#else /* CURLDEBUG */
+/* when not built with debug, this function doesn't exist */
+#define easy_events(x) CURLE_NOT_BUILT_IN
+#endif
+
+static CURLcode easy_transfer(CURLM *multi)
+{
+  bool done = FALSE;
+  CURLMcode mcode = CURLM_OK;
+  CURLcode result = CURLE_OK;
+  struct timeval before;
+  int without_fds = 0;  /* count number of consecutive returns from
+                           curl_multi_wait() without any filedescriptors */
 
   while(!done && !mcode) {
 
   while(!done && !mcode) {
-    int still_running;
+    int still_running = 0;
     int ret;
 
     before = curlx_tvnow();
     int ret;
 
     before = curlx_tvnow();
@@ -528,7 +691,7 @@ CURLcode curl_easy_perform(CURL *easy)
     if(mcode == CURLM_OK) {
       if(ret == -1) {
         /* poll() failed not on EINTR, indicate a network problem */
     if(mcode == CURLM_OK) {
       if(ret == -1) {
         /* poll() failed not on EINTR, indicate a network problem */
-        code = CURLE_RECV_ERROR;
+        result = CURLE_RECV_ERROR;
         break;
       }
       else if(ret == 0) {
         break;
       }
       else if(ret == 0) {
@@ -556,24 +719,123 @@ CURLcode curl_easy_perform(CURL *easy)
 
     /* only read 'still_running' if curl_multi_perform() return OK */
     if((mcode == CURLM_OK) && !still_running) {
 
     /* only read 'still_running' if curl_multi_perform() return OK */
     if((mcode == CURLM_OK) && !still_running) {
-      msg = curl_multi_info_read(multi, &rc);
+      int rc;
+      CURLMsg *msg = curl_multi_info_read(multi, &rc);
       if(msg) {
       if(msg) {
-        code = msg->data.result;
+        result = msg->data.result;
         done = TRUE;
       }
     }
   }
 
         done = TRUE;
       }
     }
   }
 
+  /* Make sure to return some kind of error if there was a multi problem */
+  if(mcode) {
+    return (mcode == CURLM_OUT_OF_MEMORY) ? CURLE_OUT_OF_MEMORY :
+            /* The other multi errors should never happen, so return
+               something suitably generic */
+            CURLE_BAD_FUNCTION_ARGUMENT;
+  }
+
+  return result;
+}
+
+
+/*
+ * easy_perform() is the external interface that performs a blocking
+ * transfer as previously setup.
+ *
+ * CONCEPT: This function creates a multi handle, adds the easy handle to it,
+ * runs curl_multi_perform() until the transfer is done, then detaches the
+ * easy handle, destroys the multi handle and returns the easy handle's return
+ * code.
+ *
+ * REALITY: it can't just create and destroy the multi handle that easily. It
+ * needs to keep it around since if this easy handle is used again by this
+ * function, the same multi handle must be re-used so that the same pools and
+ * caches can be used.
+ *
+ * DEBUG: if 'events' is set TRUE, this function will use a replacement engine
+ * instead of curl_multi_perform() and use curl_multi_socket_action().
+ */
+static CURLcode easy_perform(struct SessionHandle *data, bool events)
+{
+  CURLM *multi;
+  CURLMcode mcode;
+  CURLcode result = CURLE_OK;
+  SIGPIPE_VARIABLE(pipe_st);
+
+  if(!data)
+    return CURLE_BAD_FUNCTION_ARGUMENT;
+
+  if(data->multi) {
+    failf(data, "easy handle already used in multi handle");
+    return CURLE_FAILED_INIT;
+  }
+
+  if(data->multi_easy)
+    multi = data->multi_easy;
+  else {
+    /* this multi handle will only ever have a single easy handled attached
+       to it, so make it use minimal hashes */
+    multi = Curl_multi_handle(1, 3);
+    if(!multi)
+      return CURLE_OUT_OF_MEMORY;
+    data->multi_easy = multi;
+  }
+
+  /* Copy the MAXCONNECTS option to the multi handle */
+  curl_multi_setopt(multi, CURLMOPT_MAXCONNECTS, data->set.maxconnects);
+
+  mcode = curl_multi_add_handle(multi, data);
+  if(mcode) {
+    curl_multi_cleanup(multi);
+    if(mcode == CURLM_OUT_OF_MEMORY)
+      return CURLE_OUT_OF_MEMORY;
+    else
+      return CURLE_FAILED_INIT;
+  }
+
+  sigpipe_ignore(data, &pipe_st);
+
+  /* assign this after curl_multi_add_handle() since that function checks for
+     it and rejects this handle otherwise */
+  data->multi = multi;
+
+  /* run the transfer */
+  result = events ? easy_events(multi) : easy_transfer(multi);
+
   /* ignoring the return code isn't nice, but atm we can't really handle
      a failure here, room for future improvement! */
   /* ignoring the return code isn't nice, but atm we can't really handle
      a failure here, room for future improvement! */
-  (void)curl_multi_remove_handle(multi, easy);
+  (void)curl_multi_remove_handle(multi, data);
 
   sigpipe_restore(&pipe_st);
 
   /* The multi handle is kept alive, owned by the easy handle */
 
   sigpipe_restore(&pipe_st);
 
   /* The multi handle is kept alive, owned by the easy handle */
-  return code;
+  return result;
+}
+
+
+/*
+ * curl_easy_perform() is the external interface that performs a blocking
+ * transfer as previously setup.
+ */
+CURLcode curl_easy_perform(CURL *easy)
+{
+  return easy_perform(easy, FALSE);
 }
 
 }
 
+#ifdef CURLDEBUG
+/*
+ * curl_easy_perform_ev() is the external interface that performs a blocking
+ * transfer using the event-based API internally.
+ */
+CURLcode curl_easy_perform_ev(CURL *easy)
+{
+  return easy_perform(easy, TRUE);
+}
+
+#endif
+
 /*
  * curl_easy_cleanup() is the external interface to cleaning/freeing the given
  * easy handle.
 /*
  * curl_easy_cleanup() is the external interface to cleaning/freeing the given
  * easy handle.
@@ -592,22 +854,6 @@ void curl_easy_cleanup(CURL *curl)
 }
 
 /*
 }
 
 /*
- * Store a pointed to the multi handle within the easy handle's data struct.
- */
-void Curl_easy_addmulti(struct SessionHandle *data,
-                        void *multi)
-{
-  data->multi = multi;
-}
-
-void Curl_easy_initHandleData(struct SessionHandle *data)
-{
-    memset(&data->req, 0, sizeof(struct SingleRequest));
-
-    data->req.maxdownload = -1;
-}
-
-/*
  * curl_easy_getinfo() is an external interface that allows an app to retrieve
  * information from a performed transfer and similar.
  */
  * curl_easy_getinfo() is an external interface that allows an app to retrieve
  * information from a performed transfer and similar.
  */
@@ -616,16 +862,16 @@ CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ...)
 {
   va_list arg;
   void *paramp;
 {
   va_list arg;
   void *paramp;
-  CURLcode ret;
+  CURLcode result;
   struct SessionHandle *data = (struct SessionHandle *)curl;
 
   va_start(arg, info);
   paramp = va_arg(arg, void *);
 
   struct SessionHandle *data = (struct SessionHandle *)curl;
 
   va_start(arg, info);
   paramp = va_arg(arg, void *);
 
-  ret = Curl_getinfo(data, info, paramp);
+  result = Curl_getinfo(data, info, paramp);
 
   va_end(arg);
 
   va_end(arg);
-  return ret;
+  return result;
 }
 
 /*
 }
 
 /*
@@ -652,7 +898,7 @@ CURL *curl_easy_duphandle(CURL *incurl)
   outcurl->state.headersize = HEADERSIZE;
 
   /* copy all userdefined values */
   outcurl->state.headersize = HEADERSIZE;
 
   /* copy all userdefined values */
-  if(Curl_dupset(outcurl, data) != CURLE_OK)
+  if(Curl_dupset(outcurl, data))
     goto fail;
 
   /* the connection cache is setup on demand */
     goto fail;
 
   /* the connection cache is setup on demand */
@@ -698,13 +944,11 @@ CURL *curl_easy_duphandle(CURL *incurl)
 
   /* Clone the resolver handle, if present, for the new handle */
   if(Curl_resolver_duphandle(&outcurl->state.resolver,
 
   /* Clone the resolver handle, if present, for the new handle */
   if(Curl_resolver_duphandle(&outcurl->state.resolver,
-                             data->state.resolver) != CURLE_OK)
+                             data->state.resolver))
     goto fail;
 
   Curl_convert_setup(outcurl);
 
     goto fail;
 
   Curl_convert_setup(outcurl);
 
-  Curl_easy_initHandleData(outcurl);
-
   outcurl->magic = CURLEASY_MAGIC_NUMBER;
 
   /* we reach this point and thus we are OK */
   outcurl->magic = CURLEASY_MAGIC_NUMBER;
 
   /* we reach this point and thus we are OK */
@@ -738,7 +982,7 @@ void curl_easy_reset(CURL *curl)
 
   data->state.path = NULL;
 
 
   data->state.path = NULL;
 
-  Curl_safefree(data->state.proto.generic);
+  Curl_free_request_state(data);
 
   /* zero out UserDefined data: */
   Curl_freeset(data);
 
   /* zero out UserDefined data: */
   Curl_freeset(data);
@@ -748,9 +992,6 @@ void curl_easy_reset(CURL *curl)
   /* zero out Progress data: */
   memset(&data->progress, 0, sizeof(struct Progress));
 
   /* zero out Progress data: */
   memset(&data->progress, 0, sizeof(struct Progress));
 
-  /* init Handle data */
-  Curl_easy_initHandleData(data);
-
   data->progress.flags |= PGRS_HIDE;
   data->state.current_speed = -1; /* init to negative == impossible */
 }
   data->progress.flags |= PGRS_HIDE;
   data->state.current_speed = -1; /* init to negative == impossible */
 }
@@ -785,73 +1026,15 @@ CURLcode curl_easy_pause(CURL *curl, int action)
     /* we have a buffer for sending that we now seem to be able to deliver
        since the receive pausing is lifted! */
 
     /* we have a buffer for sending that we now seem to be able to deliver
        since the receive pausing is lifted! */
 
-    /* get the pointer, type and length in local copies since the function may
-       return PAUSE again and then we'll get a new copy allocted and stored in
+    /* get the pointer in local copy since the function may return PAUSE
+       again and then we'll get a new copy allocted and stored in
        the tempwrite variables */
     char *tempwrite = data->state.tempwrite;
        the tempwrite variables */
     char *tempwrite = data->state.tempwrite;
-    char *freewrite = tempwrite; /* store this pointer to free it later */
-    size_t tempsize = data->state.tempwritesize;
-    int temptype = data->state.tempwritetype;
-    size_t chunklen;
-
-    /* clear tempwrite here just to make sure it gets cleared if there's no
-       further use of it, and make sure we don't clear it after the function
-       invoke as it may have been set to a new value by then */
-    data->state.tempwrite = NULL;
-
-    /* since the write callback API is define to never exceed
-       CURL_MAX_WRITE_SIZE bytes in a single call, and since we may in fact
-       have more data than that in our buffer here, we must loop sending the
-       data in multiple calls until there's no data left or we get another
-       pause returned.
-
-       A tricky part is that the function we call will "buffer" the data
-       itself when it pauses on a particular buffer, so we may need to do some
-       extra trickery if we get a pause return here.
-    */
-    do {
-      chunklen = (tempsize > CURL_MAX_WRITE_SIZE)?CURL_MAX_WRITE_SIZE:tempsize;
-
-      result = Curl_client_write(data->easy_conn,
-                                 temptype, tempwrite, chunklen);
-      if(result)
-        /* failures abort the loop at once */
-        break;
 
 
-      if(data->state.tempwrite && (tempsize - chunklen)) {
-        /* Ouch, the reading is again paused and the block we send is now
-           "cached". If this is the final chunk we can leave it like this, but
-           if we have more chunks that are cached after this, we need to free
-           the newly cached one and put back a version that is truly the entire
-           contents that is saved for later
-        */
-        char *newptr;
-
-        /* note that tempsize is still the size as before the callback was
-           used, and thus the whole piece of data to keep */
-        newptr = realloc(data->state.tempwrite, tempsize);
-
-        if(!newptr) {
-          free(data->state.tempwrite); /* free old area */
-          data->state.tempwrite = NULL;
-          result = CURLE_OUT_OF_MEMORY;
-          /* tempwrite will be freed further down */
-          break;
-        }
-        data->state.tempwrite = newptr; /* store new pointer */
-        memcpy(newptr, tempwrite, tempsize);
-        data->state.tempwritesize = tempsize; /* store new size */
-        /* tempwrite will be freed further down */
-        break; /* go back to pausing until further notice */
-      }
-      else {
-        tempsize -= chunklen;  /* left after the call above */
-        tempwrite += chunklen; /* advance the pointer */
-      }
-
-    } while((result == CURLE_OK) && tempsize);
-
-    free(freewrite); /* this is unconditionally no longer used */
+    data->state.tempwrite = NULL;
+    result = Curl_client_chop_write(data->easy_conn, data->state.tempwritetype,
+                                    tempwrite, data->state.tempwritesize);
+    free(tempwrite);
   }
 
   /* if there's no error and we're not pausing both directions, we want
   }
 
   /* if there's no error and we're not pausing both directions, we want
@@ -896,20 +1079,20 @@ static CURLcode easy_connection(struct SessionHandle *data,
 CURLcode curl_easy_recv(CURL *curl, void *buffer, size_t buflen, size_t *n)
 {
   curl_socket_t sfd;
 CURLcode curl_easy_recv(CURL *curl, void *buffer, size_t buflen, size_t *n)
 {
   curl_socket_t sfd;
-  CURLcode ret;
+  CURLcode result;
   ssize_t n1;
   struct connectdata *c;
   struct SessionHandle *data = (struct SessionHandle *)curl;
 
   ssize_t n1;
   struct connectdata *c;
   struct SessionHandle *data = (struct SessionHandle *)curl;
 
-  ret = easy_connection(data, &sfd, &c);
-  if(ret)
-    return ret;
+  result = easy_connection(data, &sfd, &c);
+  if(result)
+    return result;
 
   *n = 0;
 
   *n = 0;
-  ret = Curl_read(c, sfd, buffer, buflen, &n1);
+  result = Curl_read(c, sfd, buffer, buflen, &n1);
 
 
-  if(ret != CURLE_OK)
-    return ret;
+  if(result)
+    return result;
 
   *n = (size_t)n1;
 
 
   *n = (size_t)n1;
 
@@ -924,26 +1107,26 @@ CURLcode curl_easy_send(CURL *curl, const void *buffer, size_t buflen,
                         size_t *n)
 {
   curl_socket_t sfd;
                         size_t *n)
 {
   curl_socket_t sfd;
-  CURLcode ret;
+  CURLcode result;
   ssize_t n1;
   struct connectdata *c = NULL;
   struct SessionHandle *data = (struct SessionHandle *)curl;
 
   ssize_t n1;
   struct connectdata *c = NULL;
   struct SessionHandle *data = (struct SessionHandle *)curl;
 
-  ret = easy_connection(data, &sfd, &c);
-  if(ret)
-    return ret;
+  result = easy_connection(data, &sfd, &c);
+  if(result)
+    return result;
 
   *n = 0;
 
   *n = 0;
-  ret = Curl_write(c, sfd, buffer, buflen, &n1);
+  result = Curl_write(c, sfd, buffer, buflen, &n1);
 
   if(n1 == -1)
     return CURLE_SEND_ERROR;
 
   /* detect EAGAIN */
 
   if(n1 == -1)
     return CURLE_SEND_ERROR;
 
   /* detect EAGAIN */
-  if((CURLE_OK == ret) && (0 == n1))
+  if(!result && !n1)
     return CURLE_AGAIN;
 
   *n = (size_t)n1;
 
     return CURLE_AGAIN;
 
   *n = (size_t)n1;
 
-  return ret;
+  return result;
 }
 }
index 1f52168..043ff43 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -25,9 +25,9 @@
 /*
  * Prototypes for library-wide functions provided by easy.c
  */
 /*
  * Prototypes for library-wide functions provided by easy.c
  */
-void Curl_easy_addmulti(struct SessionHandle *data, void *multi);
-
-void Curl_easy_initHandleData(struct SessionHandle *data);
+#ifdef CURLDEBUG
+CURL_EXTERN CURLcode curl_easy_perform_ev(CURL *easy);
+#endif
 
 #endif /* HEADER_CURL_EASYIF_H */
 
 
 #endif /* HEADER_CURL_EASYIF_H */
 
index aa7db2c..9923e64 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -87,7 +87,7 @@ char *curl_easy_escape(CURL *handle, const char *string, int inlength)
   size_t newlen = alloc;
   size_t strindex=0;
   size_t length;
   size_t newlen = alloc;
   size_t strindex=0;
   size_t length;
-  CURLcode res;
+  CURLcode result;
 
   ns = malloc(alloc);
   if(!ns)
 
   ns = malloc(alloc);
   if(!ns)
@@ -115,8 +115,8 @@ char *curl_easy_escape(CURL *handle, const char *string, int inlength)
         }
       }
 
         }
       }
 
-      res = Curl_convert_to_network(handle, &in, 1);
-      if(res) {
+      result = Curl_convert_to_network(handle, &in, 1);
+      if(result) {
         /* Curl_convert_to_network calls failf if unsuccessful */
         free(ns);
         return NULL;
         /* Curl_convert_to_network calls failf if unsuccessful */
         free(ns);
         return NULL;
@@ -152,7 +152,7 @@ CURLcode Curl_urldecode(struct SessionHandle *data,
   unsigned char in;
   size_t strindex=0;
   unsigned long hex;
   unsigned char in;
   size_t strindex=0;
   unsigned long hex;
-  CURLcode res;
+  CURLcode result;
 
   if(!ns)
     return CURLE_OUT_OF_MEMORY;
 
   if(!ns)
     return CURLE_OUT_OF_MEMORY;
@@ -172,16 +172,17 @@ CURLcode Curl_urldecode(struct SessionHandle *data,
 
       in = curlx_ultouc(hex); /* this long is never bigger than 255 anyway */
 
 
       in = curlx_ultouc(hex); /* this long is never bigger than 255 anyway */
 
-      res = Curl_convert_from_network(data, &in, 1);
-      if(res) {
+      result = Curl_convert_from_network(data, &in, 1);
+      if(result) {
         /* Curl_convert_from_network calls failf if unsuccessful */
         free(ns);
         /* Curl_convert_from_network calls failf if unsuccessful */
         free(ns);
-        return res;
+        return result;
       }
 
       string+=2;
       alloc-=2;
     }
       }
 
       string+=2;
       alloc-=2;
     }
+
     if(reject_ctrl && (in < 0x20)) {
       free(ns);
       return CURLE_URL_MALFORMAT;
     if(reject_ctrl && (in < 0x20)) {
       free(ns);
       return CURLE_URL_MALFORMAT;
@@ -196,9 +197,8 @@ CURLcode Curl_urldecode(struct SessionHandle *data,
     /* store output size */
     *olen = strindex;
 
     /* store output size */
     *olen = strindex;
 
-  if(ostring)
-    /* store output string */
-    *ostring = ns;
+  /* store output string */
+  *ostring = ns;
 
   return CURLE_OK;
 }
 
   return CURLE_OK;
 }
index 038bf42..dd2c564 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -90,7 +90,7 @@ static CURLcode file_done(struct connectdata *conn,
 static CURLcode file_connect(struct connectdata *conn, bool *done);
 static CURLcode file_disconnect(struct connectdata *conn,
                                 bool dead_connection);
 static CURLcode file_connect(struct connectdata *conn, bool *done);
 static CURLcode file_disconnect(struct connectdata *conn,
                                 bool dead_connection);
-
+static CURLcode file_setup_connection(struct connectdata *conn);
 
 /*
  * FILE scheme handler.
 
 /*
  * FILE scheme handler.
@@ -98,7 +98,7 @@ static CURLcode file_disconnect(struct connectdata *conn,
 
 const struct Curl_handler Curl_handler_file = {
   "FILE",                               /* scheme */
 
 const struct Curl_handler Curl_handler_file = {
   "FILE",                               /* scheme */
-  ZERO_NULL,                            /* setup_connection */
+  file_setup_connection,                /* setup_connection */
   file_do,                              /* do_it */
   file_done,                            /* done */
   ZERO_NULL,                            /* do_more */
   file_do,                              /* do_it */
   file_done,                            /* done */
   ZERO_NULL,                            /* do_more */
@@ -117,6 +117,16 @@ const struct Curl_handler Curl_handler_file = {
 };
 
 
 };
 
 
+static CURLcode file_setup_connection(struct connectdata *conn)
+{
+  /* allocate the FILE specific struct */
+  conn->data->req.protop = calloc(1, sizeof(struct FILEPROTO));
+  if(!conn->data->req.protop)
+    return CURLE_OUT_OF_MEMORY;
+
+  return CURLE_OK;
+}
+
  /*
   Check if this is a range download, and if so, set the internal variables
   properly. This code is copied from the FTP implementation and might as
  /*
   Check if this is a range download, and if so, set the internal variables
   properly. This code is copied from the FTP implementation and might as
@@ -142,14 +152,14 @@ static CURLcode file_range(struct connectdata *conn)
     if((-1 == to) && (from>=0)) {
       /* X - */
       data->state.resume_from = from;
     if((-1 == to) && (from>=0)) {
       /* X - */
       data->state.resume_from = from;
-      DEBUGF(infof(data, "RANGE %" FORMAT_OFF_T " to end of file\n",
+      DEBUGF(infof(data, "RANGE %" CURL_FORMAT_CURL_OFF_T " to end of file\n",
                    from));
     }
     else if(from < 0) {
       /* -Y */
       data->req.maxdownload = -from;
       data->state.resume_from = from;
                    from));
     }
     else if(from < 0) {
       /* -Y */
       data->req.maxdownload = -from;
       data->state.resume_from = from;
-      DEBUGF(infof(data, "RANGE the last %" FORMAT_OFF_T " bytes\n",
+      DEBUGF(infof(data, "RANGE the last %" CURL_FORMAT_CURL_OFF_T " bytes\n",
                    -from));
     }
     else {
                    -from));
     }
     else {
@@ -157,12 +167,13 @@ static CURLcode file_range(struct connectdata *conn)
       totalsize = to-from;
       data->req.maxdownload = totalsize+1; /* include last byte */
       data->state.resume_from = from;
       totalsize = to-from;
       data->req.maxdownload = totalsize+1; /* include last byte */
       data->state.resume_from = from;
-      DEBUGF(infof(data, "RANGE from %" FORMAT_OFF_T
-                   " getting %" FORMAT_OFF_T " bytes\n",
+      DEBUGF(infof(data, "RANGE from %" CURL_FORMAT_CURL_OFF_T
+                   " getting %" CURL_FORMAT_CURL_OFF_T " bytes\n",
                    from, data->req.maxdownload));
     }
                    from, data->req.maxdownload));
     }
-    DEBUGF(infof(data, "range-download from %" FORMAT_OFF_T
-                 " to %" FORMAT_OFF_T ", totally %" FORMAT_OFF_T " bytes\n",
+    DEBUGF(infof(data, "range-download from %" CURL_FORMAT_CURL_OFF_T
+                 " to %" CURL_FORMAT_CURL_OFF_T ", totally %"
+                 CURL_FORMAT_CURL_OFF_T " bytes\n",
                  from, to, data->req.maxdownload));
   }
   else
                  from, to, data->req.maxdownload));
   }
   else
@@ -179,39 +190,18 @@ static CURLcode file_connect(struct connectdata *conn, bool *done)
 {
   struct SessionHandle *data = conn->data;
   char *real_path;
 {
   struct SessionHandle *data = conn->data;
   char *real_path;
-  struct FILEPROTO *file;
+  struct FILEPROTO *file = data->req.protop;
   int fd;
 #ifdef DOS_FILESYSTEM
   int i;
   char *actual_path;
 #endif
   int fd;
 #ifdef DOS_FILESYSTEM
   int i;
   char *actual_path;
 #endif
+  int real_path_len;
 
 
-  /* If there already is a protocol-specific struct allocated for this
-     sessionhandle, deal with it */
-  Curl_reset_reqproto(conn);
-
-  real_path = curl_easy_unescape(data, data->state.path, 0, NULL);
+  real_path = curl_easy_unescape(data, data->state.path, 0, &real_path_len);
   if(!real_path)
     return CURLE_OUT_OF_MEMORY;
 
   if(!real_path)
     return CURLE_OUT_OF_MEMORY;
 
-  if(!data->state.proto.file) {
-    file = calloc(1, sizeof(struct FILEPROTO));
-    if(!file) {
-      free(real_path);
-      return CURLE_OUT_OF_MEMORY;
-    }
-    data->state.proto.file = file;
-  }
-  else {
-    /* file is not a protocol that can deal with "persistancy" */
-    file = data->state.proto.file;
-    Curl_safefree(file->freepath);
-    file->path = NULL;
-    if(file->fd != -1)
-      close(file->fd);
-    file->fd = -1;
-  }
-
 #ifdef DOS_FILESYSTEM
   /* If the first character is a slash, and there's
      something that looks like a drive at the beginning of
 #ifdef DOS_FILESYSTEM
   /* If the first character is a slash, and there's
      something that looks like a drive at the beginning of
@@ -233,16 +223,23 @@ static CURLcode file_connect(struct connectdata *conn, bool *done)
      (actual_path[2] == ':' || actual_path[2] == '|')) {
     actual_path[2] = ':';
     actual_path++;
      (actual_path[2] == ':' || actual_path[2] == '|')) {
     actual_path[2] = ':';
     actual_path++;
+    real_path_len--;
   }
 
   /* change path separators from '/' to '\\' for DOS, Windows and OS/2 */
   }
 
   /* change path separators from '/' to '\\' for DOS, Windows and OS/2 */
-  for(i=0; actual_path[i] != '\0'; ++i)
+  for(i=0; i < real_path_len; ++i)
     if(actual_path[i] == '/')
       actual_path[i] = '\\';
     if(actual_path[i] == '/')
       actual_path[i] = '\\';
+    else if(!actual_path[i]) /* binary zero */
+      return CURLE_URL_MALFORMAT;
 
   fd = open_readonly(actual_path, O_RDONLY|O_BINARY);
   file->path = actual_path;
 #else
 
   fd = open_readonly(actual_path, O_RDONLY|O_BINARY);
   file->path = actual_path;
 #else
+  if(memchr(real_path, 0, real_path_len))
+    /* binary zeroes indicate foul play */
+    return CURLE_URL_MALFORMAT;
+
   fd = open_readonly(real_path, O_RDONLY);
   file->path = real_path;
 #endif
   fd = open_readonly(real_path, O_RDONLY);
   file->path = real_path;
 #endif
@@ -262,7 +259,7 @@ static CURLcode file_connect(struct connectdata *conn, bool *done)
 static CURLcode file_done(struct connectdata *conn,
                                CURLcode status, bool premature)
 {
 static CURLcode file_done(struct connectdata *conn,
                                CURLcode status, bool premature)
 {
-  struct FILEPROTO *file = conn->data->state.proto.file;
+  struct FILEPROTO *file = conn->data->req.protop;
   (void)status; /* not used */
   (void)premature; /* not used */
 
   (void)status; /* not used */
   (void)premature; /* not used */
 
@@ -280,7 +277,7 @@ static CURLcode file_done(struct connectdata *conn,
 static CURLcode file_disconnect(struct connectdata *conn,
                                 bool dead_connection)
 {
 static CURLcode file_disconnect(struct connectdata *conn,
                                 bool dead_connection)
 {
-  struct FILEPROTO *file = conn->data->state.proto.file;
+  struct FILEPROTO *file = conn->data->req.protop;
   (void)dead_connection; /* not used */
 
   if(file) {
   (void)dead_connection; /* not used */
 
   if(file) {
@@ -302,11 +299,11 @@ static CURLcode file_disconnect(struct connectdata *conn,
 
 static CURLcode file_upload(struct connectdata *conn)
 {
 
 static CURLcode file_upload(struct connectdata *conn)
 {
-  struct FILEPROTO *file = conn->data->state.proto.file;
+  struct FILEPROTO *file = conn->data->req.protop;
   const char *dir = strchr(file->path, DIRSEP);
   int fd;
   int mode;
   const char *dir = strchr(file->path, DIRSEP);
   int fd;
   int mode;
-  CURLcode res=CURLE_OK;
+  CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
   char *buf = data->state.buffer;
   size_t nread;
   struct SessionHandle *data = conn->data;
   char *buf = data->state.buffer;
   size_t nread;
@@ -347,9 +344,9 @@ static CURLcode file_upload(struct connectdata *conn)
     return CURLE_WRITE_ERROR;
   }
 
     return CURLE_WRITE_ERROR;
   }
 
-  if(-1 != data->set.infilesize)
+  if(-1 != data->state.infilesize)
     /* known size of data to "upload" */
     /* known size of data to "upload" */
-    Curl_pgrsSetUploadSize(data, data->set.infilesize);
+    Curl_pgrsSetUploadSize(data, data->state.infilesize);
 
   /* treat the negative resume offset value as the case of "-" */
   if(data->state.resume_from < 0) {
 
   /* treat the negative resume offset value as the case of "-" */
   if(data->state.resume_from < 0) {
@@ -362,10 +359,10 @@ static CURLcode file_upload(struct connectdata *conn)
       data->state.resume_from = (curl_off_t)file_stat.st_size;
   }
 
       data->state.resume_from = (curl_off_t)file_stat.st_size;
   }
 
-  while(res == CURLE_OK) {
+  while(!result) {
     int readcount;
     int readcount;
-    res = Curl_fillreadbuffer(conn, BUFSIZE, &readcount);
-    if(res)
+    result = Curl_fillreadbuffer(conn, BUFSIZE, &readcount);
+    if(result)
       break;
 
     if(readcount <= 0)  /* fix questionable compare error. curlvms */
       break;
 
     if(readcount <= 0)  /* fix questionable compare error. curlvms */
@@ -392,7 +389,7 @@ static CURLcode file_upload(struct connectdata *conn)
     /* write the data to the target */
     nwrite = write(fd, buf2, nread);
     if(nwrite != nread) {
     /* write the data to the target */
     nwrite = write(fd, buf2, nread);
     if(nwrite != nread) {
-      res = CURLE_SEND_ERROR;
+      result = CURLE_SEND_ERROR;
       break;
     }
 
       break;
     }
 
@@ -401,16 +398,16 @@ static CURLcode file_upload(struct connectdata *conn)
     Curl_pgrsSetUploadCounter(data, bytecount);
 
     if(Curl_pgrsUpdate(conn))
     Curl_pgrsSetUploadCounter(data, bytecount);
 
     if(Curl_pgrsUpdate(conn))
-      res = CURLE_ABORTED_BY_CALLBACK;
+      result = CURLE_ABORTED_BY_CALLBACK;
     else
     else
-      res = Curl_speedcheck(data, now);
+      result = Curl_speedcheck(data, now);
   }
   }
-  if(!res && Curl_pgrsUpdate(conn))
-    res = CURLE_ABORTED_BY_CALLBACK;
+  if(!result && Curl_pgrsUpdate(conn))
+    result = CURLE_ABORTED_BY_CALLBACK;
 
   close(fd);
 
 
   close(fd);
 
-  return res;
+  return result;
 }
 
 /*
 }
 
 /*
@@ -428,7 +425,7 @@ static CURLcode file_do(struct connectdata *conn, bool *done)
      are supported. This means that files on remotely mounted directories
      (via NFS, Samba, NT sharing) can be accessed through a file:// URL
   */
      are supported. This means that files on remotely mounted directories
      (via NFS, Samba, NT sharing) can be accessed through a file:// URL
   */
-  CURLcode res = CURLE_OK;
+  CURLcode result = CURLE_OK;
   struct_stat statbuf; /* struct_stat instead of struct stat just to allow the
                           Windows version to have a different struct without
                           having to redefine the simple word 'stat' */
   struct_stat statbuf; /* struct_stat instead of struct stat just to allow the
                           Windows version to have a different struct without
                           having to redefine the simple word 'stat' */
@@ -440,6 +437,7 @@ static CURLcode file_do(struct connectdata *conn, bool *done)
   curl_off_t bytecount = 0;
   int fd;
   struct timeval now = Curl_tvnow();
   curl_off_t bytecount = 0;
   int fd;
   struct timeval now = Curl_tvnow();
+  struct FILEPROTO *file;
 
   *done = TRUE; /* unconditionally */
 
 
   *done = TRUE; /* unconditionally */
 
@@ -449,8 +447,10 @@ static CURLcode file_do(struct connectdata *conn, bool *done)
   if(data->set.upload)
     return file_upload(conn);
 
   if(data->set.upload)
     return file_upload(conn);
 
+  file = conn->data->req.protop;
+
   /* get the fd from the connection phase */
   /* get the fd from the connection phase */
-  fd = conn->data->state.proto.file->fd;
+  fd = file->fd;
 
   /* VMS: This only works reliable for STREAMLF files */
   if(-1 != fstat(fd, &statbuf)) {
 
   /* VMS: This only works reliable for STREAMLF files */
   if(-1 != fstat(fd, &statbuf)) {
@@ -472,9 +472,8 @@ static CURLcode file_do(struct connectdata *conn, bool *done)
      information. Which for FILE can't be much more than the file size and
      date. */
   if(data->set.opt_no_body && data->set.include_header && fstated) {
      information. Which for FILE can't be much more than the file size and
      date. */
   if(data->set.opt_no_body && data->set.include_header && fstated) {
-    CURLcode result;
     snprintf(buf, sizeof(data->state.buffer),
     snprintf(buf, sizeof(data->state.buffer),
-             "Content-Length: %" FORMAT_OFF_T "\r\n", expected_size);
+             "Content-Length: %" CURL_FORMAT_CURL_OFF_T "\r\n", expected_size);
     result = Curl_client_write(conn, CLIENTWRITE_BOTH, buf, 0);
     if(result)
       return result;
     result = Curl_client_write(conn, CLIENTWRITE_BOTH, buf, 0);
     if(result)
       return result;
@@ -554,7 +553,7 @@ static CURLcode file_do(struct connectdata *conn, bool *done)
 
   Curl_pgrsTime(data, TIMER_STARTTRANSFER);
 
 
   Curl_pgrsTime(data, TIMER_STARTTRANSFER);
 
-  while(res == CURLE_OK) {
+  while(!result) {
     /* Don't fill a whole buffer if we want less than all data */
     size_t bytestoread =
       (expected_size < CURL_OFF_T_C(BUFSIZE) - CURL_OFF_T_C(1)) ?
     /* Don't fill a whole buffer if we want less than all data */
     size_t bytestoread =
       (expected_size < CURL_OFF_T_C(BUFSIZE) - CURL_OFF_T_C(1)) ?
@@ -571,21 +570,21 @@ static CURLcode file_do(struct connectdata *conn, bool *done)
     bytecount += nread;
     expected_size -= nread;
 
     bytecount += nread;
     expected_size -= nread;
 
-    res = Curl_client_write(conn, CLIENTWRITE_BODY, buf, nread);
-    if(res)
-      return res;
+    result = Curl_client_write(conn, CLIENTWRITE_BODY, buf, nread);
+    if(result)
+      return result;
 
     Curl_pgrsSetDownloadCounter(data, bytecount);
 
     if(Curl_pgrsUpdate(conn))
 
     Curl_pgrsSetDownloadCounter(data, bytecount);
 
     if(Curl_pgrsUpdate(conn))
-      res = CURLE_ABORTED_BY_CALLBACK;
+      result = CURLE_ABORTED_BY_CALLBACK;
     else
     else
-      res = Curl_speedcheck(data, now);
+      result = Curl_speedcheck(data, now);
   }
   if(Curl_pgrsUpdate(conn))
   }
   if(Curl_pgrsUpdate(conn))
-    res = CURLE_ABORTED_BY_CALLBACK;
+    result = CURLE_ABORTED_BY_CALLBACK;
 
 
-  return res;
+  return result;
 }
 
 #endif
 }
 
 #endif
index f718a3e..73d3b6d 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -24,7 +24,7 @@
 
 #include <curl/curl.h>
 
 
 #include <curl/curl.h>
 
-#if !defined(CURL_DISABLE_HTTP) || defined(USE_SSLEAY)
+#ifndef CURL_DISABLE_HTTP
 
 #if defined(HAVE_LIBGEN_H) && defined(HAVE_BASENAME)
 #include <libgen.h>
 
 #if defined(HAVE_LIBGEN_H) && defined(HAVE_BASENAME)
 #include <libgen.h>
 
 #include "urldata.h" /* for struct SessionHandle */
 #include "formdata.h"
 
 #include "urldata.h" /* for struct SessionHandle */
 #include "formdata.h"
-#include "sslgen.h"
+#include "vtls/vtls.h"
 #include "strequal.h"
 #include "curl_memory.h"
 #include "sendf.h"
 #include "strequal.h"
 #include "curl_memory.h"
 #include "sendf.h"
+#include "strdup.h"
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
 /* The last #include file should be: */
 #include "memdebug.h"
 
 /* The last #include file should be: */
 #include "memdebug.h"
 
-#endif  /* !defined(CURL_DISABLE_HTTP) || defined(USE_SSLEAY) */
-
-#ifndef CURL_DISABLE_HTTP
-
 #ifndef HAVE_BASENAME
 static char *Curl_basename(char *path);
 #define basename(x)  Curl_basename((x))
 #ifndef HAVE_BASENAME
 static char *Curl_basename(char *path);
 #define basename(x)  Curl_basename((x))
@@ -214,46 +211,6 @@ static const char *ContentTypeForFilename(const char *filename,
 
 /***************************************************************************
  *
 
 /***************************************************************************
  *
- * memdup()
- *
- * Copies the 'source' data to a newly allocated buffer buffer (that is
- * returned). Uses buffer_length if not null, else uses strlen to determine
- * the length of the buffer to be copied
- *
- * Returns the new pointer or NULL on failure.
- *
- ***************************************************************************/
-static char *memdup(const char *src, size_t buffer_length)
-{
-  size_t length;
-  bool add = FALSE;
-  char *buffer;
-
-  if(buffer_length)
-    length = buffer_length;
-  else if(src) {
-    length = strlen(src);
-    add = TRUE;
-  }
-  else
-    /* no length and a NULL src pointer! */
-    return strdup("");
-
-  buffer = malloc(length+add);
-  if(!buffer)
-    return NULL; /* fail */
-
-  memcpy(buffer, src, length);
-
-  /* if length unknown do null termination */
-  if(add)
-    buffer[length] = '\0';
-
-  return buffer;
-}
-
-/***************************************************************************
- *
  * FormAdd()
  *
  * Stores a formpost parameter and builds the appropriate linked list.
  * FormAdd()
  *
  * Stores a formpost parameter and builds the appropriate linked list.
@@ -682,9 +639,12 @@ CURLFORMcode FormAdd(struct curl_httppost **httppost,
            (form == first_form) ) {
           /* Note that there's small risk that form->name is NULL here if the
              app passed in a bad combo, so we better check for that first. */
            (form == first_form) ) {
           /* Note that there's small risk that form->name is NULL here if the
              app passed in a bad combo, so we better check for that first. */
-          if(form->name)
+          if(form->name) {
             /* copy name (without strdup; possibly contains null characters) */
             /* copy name (without strdup; possibly contains null characters) */
-            form->name = memdup(form->name, form->namelength);
+            form->name = Curl_memdup(form->name, form->namelength?
+                                     form->namelength:
+                                     strlen(form->name)+1);
+          }
           if(!form->name) {
             return_value = CURL_FORMADD_MEMORY;
             break;
           if(!form->name) {
             return_value = CURL_FORMADD_MEMORY;
             break;
@@ -693,9 +653,11 @@ CURLFORMcode FormAdd(struct curl_httppost **httppost,
         }
         if(!(form->flags & (HTTPPOST_FILENAME | HTTPPOST_READFILE |
                             HTTPPOST_PTRCONTENTS | HTTPPOST_PTRBUFFER |
         }
         if(!(form->flags & (HTTPPOST_FILENAME | HTTPPOST_READFILE |
                             HTTPPOST_PTRCONTENTS | HTTPPOST_PTRBUFFER |
-                            HTTPPOST_CALLBACK)) ) {
+                            HTTPPOST_CALLBACK)) && form->value) {
           /* copy value (without strdup; possibly contains null characters) */
           /* copy value (without strdup; possibly contains null characters) */
-          form->value = memdup(form->value, form->contentslength);
+          form->value = Curl_memdup(form->value, form->contentslength?
+                                    form->contentslength:
+                                    strlen(form->value)+1);
           if(!form->value) {
             return_value = CURL_FORMADD_MEMORY;
             break;
           if(!form->value) {
             return_value = CURL_FORMADD_MEMORY;
             break;
@@ -954,13 +916,13 @@ void Curl_formclean(struct FormData **form_ptr)
 int curl_formget(struct curl_httppost *form, void *arg,
                  curl_formget_callback append)
 {
 int curl_formget(struct curl_httppost *form, void *arg,
                  curl_formget_callback append)
 {
-  CURLcode rc;
+  CURLcode result;
   curl_off_t size;
   struct FormData *data, *ptr;
 
   curl_off_t size;
   struct FormData *data, *ptr;
 
-  rc = Curl_getformdata(NULL, &data, form, NULL, &size);
-  if(rc != CURLE_OK)
-    return (int)rc;
+  result = Curl_getformdata(NULL, &data, form, NULL, &size);
+  if(result)
+    return (int)result;
 
   for(ptr = data; ptr; ptr = ptr->next) {
     if((ptr->type == FORM_FILE) || (ptr->type == FORM_CALLBACK)) {
 
   for(ptr = data; ptr; ptr = ptr->next) {
     if((ptr->type == FORM_FILE) || (ptr->type == FORM_CALLBACK)) {
@@ -1110,8 +1072,10 @@ static CURLcode formdata_add_filename(const struct curl_httppost *file,
 
     /* filename need be escaped */
     filename_escaped = malloc(strlen(filename)*2+1);
 
     /* filename need be escaped */
     filename_escaped = malloc(strlen(filename)*2+1);
-    if(!filename_escaped)
+    if(!filename_escaped) {
+      Curl_safefree(filebasename);
       return CURLE_OUT_OF_MEMORY;
       return CURLE_OUT_OF_MEMORY;
+    }
     p0 = filename_escaped;
     p1 = filename;
     while(*p1) {
     p0 = filename_escaped;
     p1 = filename;
     while(*p1) {
@@ -1227,7 +1191,7 @@ CURLcode Curl_getformdata(struct SessionHandle *data,
       }
 
       result = AddFormDataf(&form, &size,
       }
 
       result = AddFormDataf(&form, &size,
-                            "\r\nContent-Type: multipart/mixed,"
+                            "\r\nContent-Type: multipart/mixed;"
                             " boundary=%s\r\n",
                             fileboundary);
       if(result)
                             " boundary=%s\r\n",
                             fileboundary);
       if(result)
@@ -1367,10 +1331,8 @@ CURLcode Curl_getformdata(struct SessionHandle *data,
   } while((post = post->next) != NULL); /* for each field */
 
   /* end-boundary for everything */
   } while((post = post->next) != NULL); /* for each field */
 
   /* end-boundary for everything */
-  if(CURLE_OK == result)
-    result = AddFormDataf(&form, &size,
-                          "\r\n--%s--\r\n",
-                          boundary);
+  if(!result)
+    result = AddFormDataf(&form, &size, "\r\n--%s--\r\n", boundary);
 
   if(result) {
     Curl_formclean(&firstform);
 
   if(result) {
     Curl_formclean(&firstform);
index c9b97dd..2f4351e 100644 (file)
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "ftp.h"
 #include "fileinfo.h"
 #include "ftplistparser.h"
 #include "ftp.h"
 #include "fileinfo.h"
 #include "ftplistparser.h"
-
-#if defined(HAVE_KRB4) || defined(HAVE_GSSAPI)
-#include "krb4.h"
-#endif
-
+#include "curl_sec.h"
 #include "strtoofft.h"
 #include "strequal.h"
 #include "strtoofft.h"
 #include "strequal.h"
-#include "sslgen.h"
+#include "vtls/vtls.h"
 #include "connect.h"
 #include "strerror.h"
 #include "inet_ntop.h"
 #include "connect.h"
 #include "strerror.h"
 #include "inet_ntop.h"
@@ -161,7 +157,7 @@ static CURLcode ftp_dophase_done(struct connectdata *conn,
                                  bool connected);
 
 /* easy-to-use macro: */
                                  bool connected);
 
 /* easy-to-use macro: */
-#define PPSENDF(x,y,z)  if((result = Curl_pp_sendf(x,y,z)) != CURLE_OK) \
+#define PPSENDF(x,y,z)  if((result = Curl_pp_sendf(x,y,z)))     \
                               return result
 
 
                               return result
 
 
@@ -212,7 +208,7 @@ const struct Curl_handler Curl_handler_ftps = {
   ftp_disconnect,                  /* disconnect */
   ZERO_NULL,                       /* readwrite */
   PORT_FTPS,                       /* defport */
   ftp_disconnect,                  /* disconnect */
   ZERO_NULL,                       /* readwrite */
   PORT_FTPS,                       /* defport */
-  CURLPROTO_FTP | CURLPROTO_FTPS,  /* protocol */
+  CURLPROTO_FTPS,                  /* protocol */
   PROTOPT_SSL | PROTOPT_DUAL | PROTOPT_CLOSEACTION |
   PROTOPT_NEEDSPWD | PROTOPT_NOURLQUERY /* flags */
 };
   PROTOPT_SSL | PROTOPT_DUAL | PROTOPT_CLOSEACTION |
   PROTOPT_NEEDSPWD | PROTOPT_NOURLQUERY /* flags */
 };
@@ -225,7 +221,7 @@ const struct Curl_handler Curl_handler_ftps = {
 
 static const struct Curl_handler Curl_handler_ftp_proxy = {
   "FTP",                                /* scheme */
 
 static const struct Curl_handler Curl_handler_ftp_proxy = {
   "FTP",                                /* scheme */
-  ZERO_NULL,                            /* setup_connection */
+  Curl_http_setup_conn,                 /* setup_connection */
   Curl_http,                            /* do_it */
   Curl_http_done,                       /* done */
   ZERO_NULL,                            /* do_more */
   Curl_http,                            /* do_it */
   Curl_http_done,                       /* done */
   ZERO_NULL,                            /* do_more */
@@ -251,7 +247,7 @@ static const struct Curl_handler Curl_handler_ftp_proxy = {
 
 static const struct Curl_handler Curl_handler_ftps_proxy = {
   "FTPS",                               /* scheme */
 
 static const struct Curl_handler Curl_handler_ftps_proxy = {
   "FTPS",                               /* scheme */
-  ZERO_NULL,                            /* setup_connection */
+  Curl_http_setup_conn,                 /* setup_connection */
   Curl_http,                            /* do_it */
   Curl_http_done,                       /* done */
   ZERO_NULL,                            /* do_more */
   Curl_http,                            /* do_it */
   Curl_http_done,                       /* done */
   ZERO_NULL,                            /* do_more */
@@ -350,7 +346,7 @@ static CURLcode AcceptServerConnect(struct connectdata *conn)
   infof(data, "Connection accepted from server\n");
 
   conn->sock[SECONDARYSOCKET] = s;
   infof(data, "Connection accepted from server\n");
 
   conn->sock[SECONDARYSOCKET] = s;
-  curlx_nonblock(s, TRUE); /* enable non-blocking */
+  (void)curlx_nonblock(s, TRUE); /* enable non-blocking */
   conn->sock_accepted[SECONDARYSOCKET] = TRUE;
 
   if(data->set.fsockopt) {
   conn->sock_accepted[SECONDARYSOCKET] = TRUE;
 
   if(data->set.fsockopt) {
@@ -493,7 +489,7 @@ static CURLcode ReceivedServerConnect(struct connectdata *conn, bool *received)
 static CURLcode InitiateTransfer(struct connectdata *conn)
 {
   struct SessionHandle *data = conn->data;
 static CURLcode InitiateTransfer(struct connectdata *conn)
 {
   struct SessionHandle *data = conn->data;
-  struct FTP *ftp = data->state.proto.ftp;
+  struct FTP *ftp = data->req.protop;
   CURLcode result = CURLE_OK;
 
   if(conn->ssl[SECONDARYSOCKET].use) {
   CURLcode result = CURLE_OK;
 
   if(conn->ssl[SECONDARYSOCKET].use) {
@@ -511,7 +507,7 @@ static CURLcode InitiateTransfer(struct connectdata *conn)
     /* When we know we're uploading a specified file, we can get the file
        size prior to the actual upload. */
 
     /* When we know we're uploading a specified file, we can get the file
        size prior to the actual upload. */
 
-    Curl_pgrsSetUploadSize(data, data->set.infilesize);
+    Curl_pgrsSetUploadSize(data, data->state.infilesize);
 
     /* set the SO_SNDBUF for the secondary socket for those who need it */
     Curl_sndbufset(conn->sock[SECONDARYSOCKET]);
 
     /* set the SO_SNDBUF for the secondary socket for those who need it */
     Curl_sndbufset(conn->sock[SECONDARYSOCKET]);
@@ -545,7 +541,7 @@ static CURLcode AllowServerConnect(struct connectdata *conn, bool *connected)
 {
   struct SessionHandle *data = conn->data;
   long timeout_ms;
 {
   struct SessionHandle *data = conn->data;
   long timeout_ms;
-  CURLcode ret = CURLE_OK;
+  CURLcode result = CURLE_OK;
 
   *connected = FALSE;
   infof(data, "Preparing for accepting server on data port\n");
 
   *connected = FALSE;
   infof(data, "Preparing for accepting server on data port\n");
@@ -561,22 +557,22 @@ static CURLcode AllowServerConnect(struct connectdata *conn, bool *connected)
   }
 
   /* see if the connection request is already here */
   }
 
   /* see if the connection request is already here */
-  ret = ReceivedServerConnect(conn, connected);
-  if(ret)
-    return ret;
+  result = ReceivedServerConnect(conn, connected);
+  if(result)
+    return result;
 
   if(*connected) {
 
   if(*connected) {
-    ret = AcceptServerConnect(conn);
-    if(ret)
-      return ret;
+    result = AcceptServerConnect(conn);
+    if(result)
+      return result;
 
 
-    ret = InitiateTransfer(conn);
-    if(ret)
-      return ret;
+    result = InitiateTransfer(conn);
+    if(result)
+      return result;
   }
   else {
     /* Add timeout to multi handle and break out of the loop */
   }
   else {
     /* Add timeout to multi handle and break out of the loop */
-    if(ret == CURLE_OK && *connected == FALSE) {
+    if(!result && *connected == FALSE) {
       if(data->set.accepttimeout > 0)
         Curl_expire(data, data->set.accepttimeout);
       else
       if(data->set.accepttimeout > 0)
         Curl_expire(data, data->set.accepttimeout);
       else
@@ -584,7 +580,7 @@ static CURLcode AllowServerConnect(struct connectdata *conn, bool *connected)
     }
   }
 
     }
   }
 
-  return ret;
+  return result;
 }
 
 /* macro to check for a three-digit ftp status code at the start of the
 }
 
 /* macro to check for a three-digit ftp status code at the start of the
@@ -615,7 +611,7 @@ static CURLcode ftp_readresp(curl_socket_t sockfd,
 {
   struct connectdata *conn = pp->conn;
   struct SessionHandle *data = conn->data;
 {
   struct connectdata *conn = pp->conn;
   struct SessionHandle *data = conn->data;
-#if defined(HAVE_KRB4) || defined(HAVE_GSSAPI)
+#ifdef HAVE_GSSAPI
   char * const buf = data->state.buffer;
 #endif
   CURLcode result = CURLE_OK;
   char * const buf = data->state.buffer;
 #endif
   CURLcode result = CURLE_OK;
@@ -623,7 +619,7 @@ static CURLcode ftp_readresp(curl_socket_t sockfd,
 
   result = Curl_pp_readresp(sockfd, pp, &code, size);
 
 
   result = Curl_pp_readresp(sockfd, pp, &code, size);
 
-#if defined(HAVE_KRB4) || defined(HAVE_GSSAPI)
+#if defined(HAVE_GSSAPI)
   /* handle the security-oriented responses 6xx ***/
   /* FIXME: some errorchecking perhaps... ***/
   switch(code) {
   /* handle the security-oriented responses 6xx ***/
   /* FIXME: some errorchecking perhaps... ***/
   switch(code) {
@@ -775,6 +771,47 @@ CURLcode Curl_GetFTPResponse(ssize_t *nreadp, /* return number of bytes read */
   return result;
 }
 
   return result;
 }
 
+#if defined(DEBUGBUILD) && !defined(CURL_DISABLE_VERBOSE_STRINGS)
+  /* for debug purposes */
+static const char * const ftp_state_names[]={
+  "STOP",
+  "WAIT220",
+  "AUTH",
+  "USER",
+  "PASS",
+  "ACCT",
+  "PBSZ",
+  "PROT",
+  "CCC",
+  "PWD",
+  "SYST",
+  "NAMEFMT",
+  "QUOTE",
+  "RETR_PREQUOTE",
+  "STOR_PREQUOTE",
+  "POSTQUOTE",
+  "CWD",
+  "MKD",
+  "MDTM",
+  "TYPE",
+  "LIST_TYPE",
+  "RETR_TYPE",
+  "STOR_TYPE",
+  "SIZE",
+  "RETR_SIZE",
+  "STOR_SIZE",
+  "REST",
+  "RETR_REST",
+  "PORT",
+  "PRET",
+  "PASV",
+  "LIST",
+  "RETR",
+  "STOR",
+  "QUIT"
+};
+#endif
+
 /* This is the ONLY way to change FTP state! */
 static void _state(struct connectdata *conn,
                    ftpstate newstate
 /* This is the ONLY way to change FTP state! */
 static void _state(struct connectdata *conn,
                    ftpstate newstate
@@ -783,59 +820,27 @@ static void _state(struct connectdata *conn,
 #endif
   )
 {
 #endif
   )
 {
-#if defined(DEBUGBUILD) && !defined(CURL_DISABLE_VERBOSE_STRINGS)
-  /* for debug purposes */
-  static const char * const names[]={
-    "STOP",
-    "WAIT220",
-    "AUTH",
-    "USER",
-    "PASS",
-    "ACCT",
-    "PBSZ",
-    "PROT",
-    "CCC",
-    "PWD",
-    "SYST",
-    "NAMEFMT",
-    "QUOTE",
-    "RETR_PREQUOTE",
-    "STOR_PREQUOTE",
-    "POSTQUOTE",
-    "CWD",
-    "MKD",
-    "MDTM",
-    "TYPE",
-    "LIST_TYPE",
-    "RETR_TYPE",
-    "STOR_TYPE",
-    "SIZE",
-    "RETR_SIZE",
-    "STOR_SIZE",
-    "REST",
-    "RETR_REST",
-    "PORT",
-    "PRET",
-    "PASV",
-    "LIST",
-    "RETR",
-    "STOR",
-    "QUIT"
-  };
-#endif
   struct ftp_conn *ftpc = &conn->proto.ftpc;
   struct ftp_conn *ftpc = &conn->proto.ftpc;
-#if defined(DEBUGBUILD) && !defined(CURL_DISABLE_VERBOSE_STRINGS)
+
+#if defined(DEBUGBUILD)
+
+#if defined(CURL_DISABLE_VERBOSE_STRINGS)
+  (void) lineno;
+#else
   if(ftpc->state != newstate)
     infof(conn->data, "FTP %p (line %d) state change from %s to %s\n",
   if(ftpc->state != newstate)
     infof(conn->data, "FTP %p (line %d) state change from %s to %s\n",
-          (void *)ftpc, lineno, names[ftpc->state], names[newstate]);
+          (void *)ftpc, lineno, ftp_state_names[ftpc->state],
+          ftp_state_names[newstate]);
+#endif
 #endif
 #endif
+
   ftpc->state = newstate;
 }
 
 static CURLcode ftp_state_user(struct connectdata *conn)
 {
   CURLcode result;
   ftpc->state = newstate;
 }
 
 static CURLcode ftp_state_user(struct connectdata *conn)
 {
   CURLcode result;
-  struct FTP *ftp = conn->data->state.proto.ftp;
+  struct FTP *ftp = conn->data->req.protop;
   /* send USER */
   PPSENDF(&conn->proto.ftpc.pp, "USER %s", ftp->user?ftp->user:"");
 
   /* send USER */
   PPSENDF(&conn->proto.ftpc.pp, "USER %s", ftp->user?ftp->user:"");
 
@@ -874,31 +879,38 @@ static int ftp_domore_getsock(struct connectdata *conn, curl_socket_t *socks,
     return GETSOCK_BLANK;
 
   /* When in DO_MORE state, we could be either waiting for us to connect to a
     return GETSOCK_BLANK;
 
   /* When in DO_MORE state, we could be either waiting for us to connect to a
-     remote site, or we could wait for that site to connect to us. Or just
-     handle ordinary commands.
-
-     When waiting for a connect, we can be in FTP_STOP state (or we're in
-     FTP_STOR when we do an upload) and then we wait for the secondary socket
-     to become writeable. . If we're in another state, we're still handling
-     commands on the control (primary) connection.
-
-  */
+   * remote site, or we could wait for that site to connect to us. Or just
+   * handle ordinary commands.
+   */
 
 
-  switch(ftpc->state) {
-  case FTP_STOP:
-  case FTP_STOR:
-    break;
-  default:
-    return Curl_pp_getsock(&conn->proto.ftpc.pp, socks, numsocks);
-  }
+  if(FTP_STOP == ftpc->state) {
+    int bits = GETSOCK_READSOCK(0);
+
+    /* if stopped and still in this state, then we're also waiting for a
+       connect on the secondary connection */
+    socks[0] = conn->sock[FIRSTSOCKET];
+
+    if(!conn->data->set.ftp_use_port) {
+      int s;
+      int i;
+      /* PORT is used to tell the server to connect to us, and during that we
+         don't do happy eyeballs, but we do if we connect to the server */
+      for(s=1, i=0; i<2; i++) {
+        if(conn->tempsock[i] != CURL_SOCKET_BAD) {
+          socks[s] = conn->tempsock[i];
+          bits |= GETSOCK_WRITESOCK(s++);
+        }
+      }
+    }
+    else {
+      socks[1] = conn->sock[SECONDARYSOCKET];
+      bits |= GETSOCK_WRITESOCK(1);
+    }
 
 
-  socks[0] = conn->sock[SECONDARYSOCKET];
-  if(ftpc->wait_data_conn) {
-    socks[1] = conn->sock[FIRSTSOCKET];
-    return GETSOCK_READSOCK(0) | GETSOCK_READSOCK(1);
+    return bits;
   }
   }
-
-  return GETSOCK_READSOCK(0);
+  else
+    return Curl_pp_getsock(&conn->proto.ftpc.pp, socks, numsocks);
 }
 
 /* This is called after the FTP_QUOTE state is passed.
 }
 
 /* This is called after the FTP_QUOTE state is passed.
@@ -1067,8 +1079,9 @@ static CURLcode ftp_state_use_port(struct connectdata *conn,
 
     if(*addr != '\0') {
       /* attempt to get the address of the given interface name */
 
     if(*addr != '\0') {
       /* attempt to get the address of the given interface name */
-      switch(Curl_if2ip(conn->ip_addr->ai_family, conn->scope, addr,
-                     hbuf, sizeof(hbuf))) {
+      switch(Curl_if2ip(conn->ip_addr->ai_family,
+                        Curl_ipv6_scope(conn->ip_addr->ai_addr),
+                        conn->scope_id, addr, hbuf, sizeof(hbuf))) {
         case IF2IP_NOT_FOUND:
           /* not an interface, use the given string as host name instead */
           host = addr;
         case IF2IP_NOT_FOUND:
           /* not an interface, use the given string as host name instead */
           host = addr;
@@ -1241,10 +1254,10 @@ static CURLcode ftp_state_use_port(struct connectdata *conn,
       continue;
 
     if((PORT == fcmd) && sa->sa_family != AF_INET)
       continue;
 
     if((PORT == fcmd) && sa->sa_family != AF_INET)
-      /* PORT is ipv4 only */
+      /* PORT is IPv4 only */
       continue;
 
       continue;
 
-    switch (sa->sa_family) {
+    switch(sa->sa_family) {
     case AF_INET:
       port = ntohs(sa4->sin_port);
       break;
     case AF_INET:
       port = ntohs(sa4->sin_port);
       break;
@@ -1382,7 +1395,7 @@ static CURLcode ftp_state_use_pasv(struct connectdata *conn)
 static CURLcode ftp_state_prepare_transfer(struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
 static CURLcode ftp_state_prepare_transfer(struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
-  struct FTP *ftp = conn->data->state.proto.ftp;
+  struct FTP *ftp = conn->data->req.protop;
   struct SessionHandle *data = conn->data;
 
   if(ftp->transfer != FTPTRANSFER_BODY) {
   struct SessionHandle *data = conn->data;
 
   if(ftp->transfer != FTPTRANSFER_BODY) {
@@ -1425,7 +1438,7 @@ static CURLcode ftp_state_prepare_transfer(struct connectdata *conn)
 static CURLcode ftp_state_rest(struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
 static CURLcode ftp_state_rest(struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
-  struct FTP *ftp = conn->data->state.proto.ftp;
+  struct FTP *ftp = conn->data->req.protop;
   struct ftp_conn *ftpc = &conn->proto.ftpc;
 
   if((ftp->transfer != FTPTRANSFER_BODY) && ftpc->file) {
   struct ftp_conn *ftpc = &conn->proto.ftpc;
 
   if((ftp->transfer != FTPTRANSFER_BODY) && ftpc->file) {
@@ -1446,7 +1459,7 @@ static CURLcode ftp_state_rest(struct connectdata *conn)
 static CURLcode ftp_state_size(struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
 static CURLcode ftp_state_size(struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
-  struct FTP *ftp = conn->data->state.proto.ftp;
+  struct FTP *ftp = conn->data->req.protop;
   struct ftp_conn *ftpc = &conn->proto.ftpc;
 
   if((ftp->transfer == FTPTRANSFER_INFO) && ftpc->file) {
   struct ftp_conn *ftpc = &conn->proto.ftpc;
 
   if((ftp->transfer == FTPTRANSFER_INFO) && ftpc->file) {
@@ -1524,7 +1537,7 @@ static CURLcode ftp_state_list(struct connectdata *conn)
 
   free(cmd);
 
 
   free(cmd);
 
-  if(result != CURLE_OK)
+  if(result)
     return result;
 
   state(conn, FTP_LIST);
     return result;
 
   state(conn, FTP_LIST);
@@ -1557,7 +1570,7 @@ static CURLcode ftp_state_stor_prequote(struct connectdata *conn)
 static CURLcode ftp_state_type(struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
 static CURLcode ftp_state_type(struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
-  struct FTP *ftp = conn->data->state.proto.ftp;
+  struct FTP *ftp = conn->data->req.protop;
   struct SessionHandle *data = conn->data;
   struct ftp_conn *ftpc = &conn->proto.ftpc;
 
   struct SessionHandle *data = conn->data;
   struct ftp_conn *ftpc = &conn->proto.ftpc;
 
@@ -1614,7 +1627,7 @@ static CURLcode ftp_state_ul_setup(struct connectdata *conn,
                                    bool sizechecked)
 {
   CURLcode result = CURLE_OK;
                                    bool sizechecked)
 {
   CURLcode result = CURLE_OK;
-  struct FTP *ftp = conn->data->state.proto.ftp;
+  struct FTP *ftp = conn->data->req.protop;
   struct SessionHandle *data = conn->data;
   struct ftp_conn *ftpc = &conn->proto.ftpc;
   int seekerr = CURL_SEEKFUNC_OK;
   struct SessionHandle *data = conn->data;
   struct ftp_conn *ftpc = &conn->proto.ftpc;
   int seekerr = CURL_SEEKFUNC_OK;
@@ -1678,10 +1691,10 @@ static CURLcode ftp_state_ul_setup(struct connectdata *conn,
       }
     }
     /* now, decrease the size of the read */
       }
     }
     /* now, decrease the size of the read */
-    if(data->set.infilesize>0) {
-      data->set.infilesize -= data->state.resume_from;
+    if(data->state.infilesize>0) {
+      data->state.infilesize -= data->state.resume_from;
 
 
-      if(data->set.infilesize <= 0) {
+      if(data->state.infilesize <= 0) {
         infof(data, "File already completely uploaded\n");
 
         /* no data to transfer */
         infof(data, "File already completely uploaded\n");
 
         /* no data to transfer */
@@ -1712,7 +1725,7 @@ static CURLcode ftp_state_quote(struct connectdata *conn,
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
-  struct FTP *ftp = data->state.proto.ftp;
+  struct FTP *ftp = data->req.protop;
   struct ftp_conn *ftpc = &conn->proto.ftpc;
   bool quote=FALSE;
   struct curl_slist *item;
   struct ftp_conn *ftpc = &conn->proto.ftpc;
   bool quote=FALSE;
   struct curl_slist *item;
@@ -1814,23 +1827,94 @@ static CURLcode ftp_epsv_disable(struct connectdata *conn)
   return result;
 }
 
   return result;
 }
 
+/*
+ * Perform the necessary magic that needs to be done once the TCP connection
+ * to the proxy has completed.
+ */
+static CURLcode proxy_magic(struct connectdata *conn,
+                            char *newhost, unsigned short newport,
+                            bool *magicdone)
+{
+  CURLcode result = CURLE_OK;
+  struct SessionHandle *data = conn->data;
+
+#if defined(CURL_DISABLE_PROXY)
+  (void) newhost;
+  (void) newport;
+#endif
+
+  *magicdone = FALSE;
+
+  switch(conn->proxytype) {
+  case CURLPROXY_SOCKS5:
+  case CURLPROXY_SOCKS5_HOSTNAME:
+    result = Curl_SOCKS5(conn->proxyuser, conn->proxypasswd, newhost,
+                         newport, SECONDARYSOCKET, conn);
+    *magicdone = TRUE;
+    break;
+  case CURLPROXY_SOCKS4:
+    result = Curl_SOCKS4(conn->proxyuser, newhost, newport,
+                         SECONDARYSOCKET, conn, FALSE);
+    *magicdone = TRUE;
+    break;
+  case CURLPROXY_SOCKS4A:
+    result = Curl_SOCKS4(conn->proxyuser, newhost, newport,
+                         SECONDARYSOCKET, conn, TRUE);
+    *magicdone = TRUE;
+    break;
+  case CURLPROXY_HTTP:
+  case CURLPROXY_HTTP_1_0:
+    /* do nothing here. handled later. */
+    break;
+  default:
+    failf(data, "unknown proxytype option given");
+    result = CURLE_COULDNT_CONNECT;
+    break;
+  }
+
+  if(conn->bits.tunnel_proxy && conn->bits.httpproxy) {
+    /* BLOCKING */
+    /* We want "seamless" FTP operations through HTTP proxy tunnel */
+
+    /* Curl_proxyCONNECT is based on a pointer to a struct HTTP at the
+     * member conn->proto.http; we want FTP through HTTP and we have to
+     * change the member temporarily for connecting to the HTTP proxy. After
+     * Curl_proxyCONNECT we have to set back the member to the original
+     * struct FTP pointer
+     */
+    struct HTTP http_proxy;
+    struct FTP *ftp_save = data->req.protop;
+    memset(&http_proxy, 0, sizeof(http_proxy));
+    data->req.protop = &http_proxy;
+
+    result = Curl_proxyCONNECT(conn, SECONDARYSOCKET, newhost, newport);
+
+    data->req.protop = ftp_save;
+
+    if(result)
+      return result;
+
+    if(conn->tunnel_state[SECONDARYSOCKET] != TUNNEL_COMPLETE) {
+      /* the CONNECT procedure is not complete, the tunnel is not yet up */
+      state(conn, FTP_STOP); /* this phase is completed */
+      return result;
+    }
+    else
+      *magicdone = TRUE;
+  }
+
+  return result;
+}
+
 static CURLcode ftp_state_pasv_resp(struct connectdata *conn,
                                     int ftpcode)
 {
   struct ftp_conn *ftpc = &conn->proto.ftpc;
   CURLcode result;
   struct SessionHandle *data=conn->data;
 static CURLcode ftp_state_pasv_resp(struct connectdata *conn,
                                     int ftpcode)
 {
   struct ftp_conn *ftpc = &conn->proto.ftpc;
   CURLcode result;
   struct SessionHandle *data=conn->data;
-  Curl_addrinfo *conninfo;
   struct Curl_dns_entry *addr=NULL;
   int rc;
   unsigned short connectport; /* the local port connect() should use! */
   struct Curl_dns_entry *addr=NULL;
   int rc;
   unsigned short connectport; /* the local port connect() should use! */
-  unsigned short newport=0; /* remote port */
-  bool connected;
-
-  /* newhost must be able to hold a full IP-style address in ASCII, which
-     in the IPv6 case means 5*8-1 = 39 letters */
-#define NEWHOST_BUFSIZE 48
-  char newhost[NEWHOST_BUFSIZE];
   char *str=&data->state.buffer[4];  /* start on the first letter */
 
   if((ftpc->count1 == 0) &&
   char *str=&data->state.buffer[4];  /* start on the first letter */
 
   if((ftpc->count1 == 0) &&
@@ -1863,7 +1947,7 @@ static CURLcode ftp_state_pasv_resp(struct connectdata *conn,
           return CURLE_FTP_WEIRD_PASV_REPLY;
         }
         if(ptr) {
           return CURLE_FTP_WEIRD_PASV_REPLY;
         }
         if(ptr) {
-          newport = (unsigned short)(num & 0xffff);
+          ftpc->newport = (unsigned short)(num & 0xffff);
 
           if(conn->bits.tunnel_proxy ||
              conn->proxytype == CURLPROXY_SOCKS5 ||
 
           if(conn->bits.tunnel_proxy ||
              conn->proxytype == CURLPROXY_SOCKS5 ||
@@ -1872,10 +1956,11 @@ static CURLcode ftp_state_pasv_resp(struct connectdata *conn,
              conn->proxytype == CURLPROXY_SOCKS4A)
             /* proxy tunnel -> use other host info because ip_addr_str is the
                proxy address not the ftp host */
              conn->proxytype == CURLPROXY_SOCKS4A)
             /* proxy tunnel -> use other host info because ip_addr_str is the
                proxy address not the ftp host */
-            snprintf(newhost, sizeof(newhost), "%s", conn->host.name);
+            snprintf(ftpc->newhost, sizeof(ftpc->newhost), "%s",
+                     conn->host.name);
           else
             /* use the same IP we are already connected to */
           else
             /* use the same IP we are already connected to */
-            snprintf(newhost, NEWHOST_BUFSIZE, "%s", conn->ip_addr_str);
+            snprintf(ftpc->newhost, NEWHOST_BUFSIZE, "%s", conn->ip_addr_str);
         }
       }
       else
         }
       }
       else
@@ -1928,14 +2013,15 @@ static CURLcode ftp_state_pasv_resp(struct connectdata *conn,
          conn->proxytype == CURLPROXY_SOCKS4A)
         /* proxy tunnel -> use other host info because ip_addr_str is the
            proxy address not the ftp host */
          conn->proxytype == CURLPROXY_SOCKS4A)
         /* proxy tunnel -> use other host info because ip_addr_str is the
            proxy address not the ftp host */
-        snprintf(newhost, sizeof(newhost), "%s", conn->host.name);
+        snprintf(ftpc->newhost, sizeof(ftpc->newhost), "%s", conn->host.name);
       else
       else
-        snprintf(newhost, sizeof(newhost), "%s", conn->ip_addr_str);
+        snprintf(ftpc->newhost, sizeof(ftpc->newhost), "%s",
+                 conn->ip_addr_str);
     }
     else
     }
     else
-      snprintf(newhost, sizeof(newhost),
+      snprintf(ftpc->newhost, sizeof(ftpc->newhost),
                "%d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3]);
                "%d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3]);
-    newport = (unsigned short)(((port[0]<<8) + port[1]) & 0xffff);
+    ftpc->newport = (unsigned short)(((port[0]<<8) + port[1]) & 0xffff);
   }
   else if(ftpc->count1 == 0) {
     /* EPSV failed, move on to PASV */
   }
   else if(ftpc->count1 == 0) {
     /* EPSV failed, move on to PASV */
@@ -1969,24 +2055,21 @@ static CURLcode ftp_state_pasv_resp(struct connectdata *conn,
   }
   else {
     /* normal, direct, ftp connection */
   }
   else {
     /* normal, direct, ftp connection */
-    rc = Curl_resolv(conn, newhost, newport, &addr);
+    rc = Curl_resolv(conn, ftpc->newhost, ftpc->newport, &addr);
     if(rc == CURLRESOLV_PENDING)
       /* BLOCKING */
       (void)Curl_resolver_wait_resolv(conn, &addr);
 
     if(rc == CURLRESOLV_PENDING)
       /* BLOCKING */
       (void)Curl_resolver_wait_resolv(conn, &addr);
 
-    connectport = newport; /* we connect to the remote port */
+    connectport = ftpc->newport; /* we connect to the remote port */
 
     if(!addr) {
 
     if(!addr) {
-      failf(data, "Can't resolve new host %s:%hu", newhost, connectport);
+      failf(data, "Can't resolve new host %s:%hu", ftpc->newhost, connectport);
       return CURLE_FTP_CANT_GET_HOST;
     }
   }
 
       return CURLE_FTP_CANT_GET_HOST;
     }
   }
 
-  result = Curl_connecthost(conn,
-                            addr,
-                            &conn->sock[SECONDARYSOCKET],
-                            &conninfo,
-                            &connected);
+  conn->bits.tcpconnect[SECONDARYSOCKET] = FALSE;
+  result = Curl_connecthost(conn, addr);
 
   Curl_resolv_unlock(data, addr); /* we're done using this address */
 
 
   Curl_resolv_unlock(data, addr); /* we're done using this address */
 
@@ -1997,88 +2080,17 @@ static CURLcode ftp_state_pasv_resp(struct connectdata *conn,
     return result;
   }
 
     return result;
   }
 
-  conn->bits.tcpconnect[SECONDARYSOCKET] = connected;
 
   /*
    * When this is used from the multi interface, this might've returned with
    * the 'connected' set to FALSE and thus we are now awaiting a non-blocking
 
   /*
    * When this is used from the multi interface, this might've returned with
    * the 'connected' set to FALSE and thus we are now awaiting a non-blocking
-   * connect to connect and we should not be "hanging" here waiting.
+   * connect to connect.
    */
 
   if(data->set.verbose)
     /* this just dumps information about this second connection */
    */
 
   if(data->set.verbose)
     /* this just dumps information about this second connection */
-    ftp_pasv_verbose(conn, conninfo, newhost, connectport);
+    ftp_pasv_verbose(conn, conn->ip_addr, ftpc->newhost, connectport);
 
 
-  switch(conn->proxytype) {
-    /* FIX: this MUST wait for a proper connect first if 'connected' is
-     * FALSE */
-  case CURLPROXY_SOCKS5:
-  case CURLPROXY_SOCKS5_HOSTNAME:
-    result = Curl_SOCKS5(conn->proxyuser, conn->proxypasswd, newhost, newport,
-                         SECONDARYSOCKET, conn);
-    connected = TRUE;
-    break;
-  case CURLPROXY_SOCKS4:
-    result = Curl_SOCKS4(conn->proxyuser, newhost, newport,
-                         SECONDARYSOCKET, conn, FALSE);
-    connected = TRUE;
-    break;
-  case CURLPROXY_SOCKS4A:
-    result = Curl_SOCKS4(conn->proxyuser, newhost, newport,
-                         SECONDARYSOCKET, conn, TRUE);
-    connected = TRUE;
-    break;
-  case CURLPROXY_HTTP:
-  case CURLPROXY_HTTP_1_0:
-    /* do nothing here. handled later. */
-    break;
-  default:
-    failf(data, "unknown proxytype option given");
-    result = CURLE_COULDNT_CONNECT;
-    break;
-  }
-
-  if(result) {
-    if(ftpc->count1 == 0 && ftpcode == 229)
-      return ftp_epsv_disable(conn);
-    return result;
-  }
-
-  if(conn->bits.tunnel_proxy && conn->bits.httpproxy) {
-    /* FIX: this MUST wait for a proper connect first if 'connected' is
-     * FALSE */
-
-    /* BLOCKING */
-    /* We want "seamless" FTP operations through HTTP proxy tunnel */
-
-    /* Curl_proxyCONNECT is based on a pointer to a struct HTTP at the member
-     * conn->proto.http; we want FTP through HTTP and we have to change the
-     * member temporarily for connecting to the HTTP proxy. After
-     * Curl_proxyCONNECT we have to set back the member to the original struct
-     * FTP pointer
-     */
-    struct HTTP http_proxy;
-    struct FTP *ftp_save = data->state.proto.ftp;
-    memset(&http_proxy, 0, sizeof(http_proxy));
-    data->state.proto.http = &http_proxy;
-
-    result = Curl_proxyCONNECT(conn, SECONDARYSOCKET, newhost, newport);
-
-    data->state.proto.ftp = ftp_save;
-
-    if(result)
-      return result;
-
-    if(conn->tunnel_state[SECONDARYSOCKET] != TUNNEL_COMPLETE) {
-      /* the CONNECT procedure is not complete, the tunnel is not yet up */
-      state(conn, FTP_STOP); /* this phase is completed */
-      conn->bits.tcpconnect[SECONDARYSOCKET] = FALSE;
-
-      return result;
-    }
-  }
-
-  conn->bits.tcpconnect[SECONDARYSOCKET] = connected;
   conn->bits.do_more = TRUE;
   state(conn, FTP_STOP); /* this phase is completed */
 
   conn->bits.do_more = TRUE;
   state(conn, FTP_STOP); /* this phase is completed */
 
@@ -2124,7 +2136,7 @@ static CURLcode ftp_state_mdtm_resp(struct connectdata *conn,
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data=conn->data;
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data=conn->data;
-  struct FTP *ftp = data->state.proto.ftp;
+  struct FTP *ftp = data->req.protop;
   struct ftp_conn *ftpc = &conn->proto.ftpc;
 
   switch(ftpcode) {
   struct ftp_conn *ftpc = &conn->proto.ftpc;
 
   switch(ftpcode) {
@@ -2258,7 +2270,7 @@ static CURLcode ftp_state_retr(struct connectdata *conn,
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data=conn->data;
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data=conn->data;
-  struct FTP *ftp = data->state.proto.ftp;
+  struct FTP *ftp = data->req.protop;
   struct ftp_conn *ftpc = &conn->proto.ftpc;
 
   if(data->set.max_filesize && (filesize > data->set.max_filesize)) {
   struct ftp_conn *ftpc = &conn->proto.ftpc;
 
   if(data->set.max_filesize && (filesize > data->set.max_filesize)) {
@@ -2283,8 +2295,8 @@ static CURLcode ftp_state_retr(struct connectdata *conn,
       if(data->state.resume_from< 0) {
         /* We're supposed to download the last abs(from) bytes */
         if(filesize < -data->state.resume_from) {
       if(data->state.resume_from< 0) {
         /* We're supposed to download the last abs(from) bytes */
         if(filesize < -data->state.resume_from) {
-          failf(data, "Offset (%" FORMAT_OFF_T
-                ") was beyond file size (%" FORMAT_OFF_T ")",
+          failf(data, "Offset (%" CURL_FORMAT_CURL_OFF_T
+                ") was beyond file size (%" CURL_FORMAT_CURL_OFF_T ")",
                 data->state.resume_from, filesize);
           return CURLE_BAD_DOWNLOAD_RESUME;
         }
                 data->state.resume_from, filesize);
           return CURLE_BAD_DOWNLOAD_RESUME;
         }
@@ -2295,8 +2307,8 @@ static CURLcode ftp_state_retr(struct connectdata *conn,
       }
       else {
         if(filesize < data->state.resume_from) {
       }
       else {
         if(filesize < data->state.resume_from) {
-          failf(data, "Offset (%" FORMAT_OFF_T
-                ") was beyond file size (%" FORMAT_OFF_T ")",
+          failf(data, "Offset (%" CURL_FORMAT_CURL_OFF_T
+                ") was beyond file size (%" CURL_FORMAT_CURL_OFF_T ")",
                 data->state.resume_from, filesize);
           return CURLE_BAD_DOWNLOAD_RESUME;
         }
                 data->state.resume_from, filesize);
           return CURLE_BAD_DOWNLOAD_RESUME;
         }
@@ -2318,13 +2330,13 @@ static CURLcode ftp_state_retr(struct connectdata *conn,
     }
 
     /* Set resume file transfer offset */
     }
 
     /* Set resume file transfer offset */
-    infof(data, "Instructs server to resume from offset %" FORMAT_OFF_T
-          "\n", data->state.resume_from);
+    infof(data, "Instructs server to resume from offset %"
+          CURL_FORMAT_CURL_OFF_T "\n", data->state.resume_from);
 
 
-    PPSENDF(&ftpc->pp, "REST %" FORMAT_OFF_T, data->state.resume_from);
+    PPSENDF(&ftpc->pp, "REST %" CURL_FORMAT_CURL_OFF_T,
+            data->state.resume_from);
 
     state(conn, FTP_RETR_REST);
 
     state(conn, FTP_RETR_REST);
-
   }
   else {
     /* no resume */
   }
   else {
     /* no resume */
@@ -2351,7 +2363,7 @@ static CURLcode ftp_state_size_resp(struct connectdata *conn,
 #ifdef CURL_FTP_HTTPSTYLE_HEAD
     if(-1 != filesize) {
       snprintf(buf, sizeof(data->state.buffer),
 #ifdef CURL_FTP_HTTPSTYLE_HEAD
     if(-1 != filesize) {
       snprintf(buf, sizeof(data->state.buffer),
-               "Content-Length: %" FORMAT_OFF_T "\r\n", filesize);
+               "Content-Length: %" CURL_FORMAT_CURL_OFF_T "\r\n", filesize);
       result = Curl_client_write(conn, CLIENTWRITE_BOTH, buf, 0);
       if(result)
         return result;
       result = Curl_client_write(conn, CLIENTWRITE_BOTH, buf, 0);
       if(result)
         return result;
@@ -2427,6 +2439,8 @@ static CURLcode ftp_state_stor_resp(struct connectdata *conn,
   if(data->set.ftp_use_port) {
     bool connected;
 
   if(data->set.ftp_use_port) {
     bool connected;
 
+    state(conn, FTP_STOP); /* no longer in STOR state */
+
     result = AllowServerConnect(conn, &connected);
     if(result)
       return result;
     result = AllowServerConnect(conn, &connected);
     if(result)
       return result;
@@ -2450,7 +2464,7 @@ static CURLcode ftp_state_get_resp(struct connectdata *conn,
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
-  struct FTP *ftp = data->state.proto.ftp;
+  struct FTP *ftp = data->req.protop;
   char *buf = data->state.buffer;
 
   if((ftpcode == 150) || (ftpcode == 125)) {
   char *buf = data->state.buffer;
 
   if((ftpcode == 150) || (ftpcode == 125)) {
@@ -2526,10 +2540,12 @@ static CURLcode ftp_state_get_resp(struct connectdata *conn,
     else if((instate != FTP_LIST) && (data->set.prefer_ascii))
       size = -1; /* kludge for servers that understate ASCII mode file size */
 
     else if((instate != FTP_LIST) && (data->set.prefer_ascii))
       size = -1; /* kludge for servers that understate ASCII mode file size */
 
-    infof(data, "Maxdownload = %" FORMAT_OFF_T "\n", data->req.maxdownload);
+    infof(data, "Maxdownload = %" CURL_FORMAT_CURL_OFF_T "\n",
+          data->req.maxdownload);
 
     if(instate != FTP_LIST)
 
     if(instate != FTP_LIST)
-      infof(data, "Getting file with size: %" FORMAT_OFF_T "\n", size);
+      infof(data, "Getting file with size: %" CURL_FORMAT_CURL_OFF_T "\n",
+            size);
 
     /* FTP download: */
     conn->proto.ftpc.state_saved = instate;
 
     /* FTP download: */
     conn->proto.ftpc.state_saved = instate;
@@ -2574,19 +2590,6 @@ static CURLcode ftp_state_loggedin(struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
 
 {
   CURLcode result = CURLE_OK;
 
-#ifdef HAVE_KRB4
-  if(conn->data->set.krb) {
-    /* We may need to issue a KAUTH here to have access to the files
-     * do it if user supplied a password
-     */
-    if(conn->passwd && *conn->passwd) {
-      /* BLOCKING */
-      result = Curl_krb_kauth(conn);
-      if(result)
-        return result;
-    }
-  }
-#endif
   if(conn->ssl[FIRSTSOCKET].use) {
     /* PBSZ = PROTECTION BUFFER SIZE.
 
   if(conn->ssl[FIRSTSOCKET].use) {
     /* PBSZ = PROTECTION BUFFER SIZE.
 
@@ -2618,7 +2621,7 @@ static CURLcode ftp_state_user_resp(struct connectdata *conn,
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
-  struct FTP *ftp = data->state.proto.ftp;
+  struct FTP *ftp = data->req.protop;
   struct ftp_conn *ftpc = &conn->proto.ftpc;
   (void)instate; /* no use for this yet */
 
   struct ftp_conn *ftpc = &conn->proto.ftpc;
   (void)instate; /* no use for this yet */
 
@@ -2716,7 +2719,7 @@ static CURLcode ftp_statemach_act(struct connectdata *conn)
       }
 
       /* We have received a 220 response fine, now we proceed. */
       }
 
       /* We have received a 220 response fine, now we proceed. */
-#if defined(HAVE_KRB4) || defined(HAVE_GSSAPI)
+#ifdef HAVE_GSSAPI
       if(data->set.krb) {
         /* If not anonymous login, try a secure login. Note that this
            procedure is still BLOCKING. */
       if(data->set.krb) {
         /* If not anonymous login, try a secure login. Note that this
            procedure is still BLOCKING. */
@@ -2726,7 +2729,7 @@ static CURLcode ftp_statemach_act(struct connectdata *conn)
            set a valid level */
         Curl_sec_request_prot(conn, data->set.str[STRING_KRB_LEVEL]);
 
            set a valid level */
         Curl_sec_request_prot(conn, data->set.str[STRING_KRB_LEVEL]);
 
-        if(Curl_sec_login(conn) != CURLE_OK)
+        if(Curl_sec_login(conn))
           infof(data, "Logging in with password in cleartext!\n");
         else
           infof(data, "Authentication successful\n");
           infof(data, "Logging in with password in cleartext!\n");
         else
           infof(data, "Authentication successful\n");
@@ -2777,7 +2780,7 @@ static CURLcode ftp_statemach_act(struct connectdata *conn)
       if((ftpcode == 234) || (ftpcode == 334)) {
         /* Curl_ssl_connect is BLOCKING */
         result = Curl_ssl_connect(conn, FIRSTSOCKET);
       if((ftpcode == 234) || (ftpcode == 334)) {
         /* Curl_ssl_connect is BLOCKING */
         result = Curl_ssl_connect(conn, FIRSTSOCKET);
-        if(CURLE_OK == result) {
+        if(!result) {
           conn->ssl[SECONDARYSOCKET].use = FALSE; /* clear-text data */
           result = ftp_state_user(conn);
         }
           conn->ssl[SECONDARYSOCKET].use = FALSE; /* clear-text data */
           result = ftp_state_user(conn);
         }
@@ -2919,7 +2922,7 @@ static CURLcode ftp_statemach_act(struct connectdata *conn)
           if(!ftpc->server_os && dir[0] != '/') {
 
             result = Curl_pp_sendf(&ftpc->pp, "%s", "SYST");
           if(!ftpc->server_os && dir[0] != '/') {
 
             result = Curl_pp_sendf(&ftpc->pp, "%s", "SYST");
-            if(result != CURLE_OK) {
+            if(result) {
               free(dir);
               return result;
             }
               free(dir);
               return result;
             }
@@ -2972,7 +2975,7 @@ static CURLcode ftp_statemach_act(struct connectdata *conn)
         if(strequal(os, "OS/400")) {
           /* Force OS400 name format 1. */
           result = Curl_pp_sendf(&ftpc->pp, "%s", "SITE NAMEFMT 1");
         if(strequal(os, "OS/400")) {
           /* Force OS400 name format 1. */
           result = Curl_pp_sendf(&ftpc->pp, "%s", "SITE NAMEFMT 1");
-          if(result != CURLE_OK) {
+          if(result) {
             free(os);
             return result;
           }
             free(os);
             return result;
           }
@@ -3159,56 +3162,6 @@ static CURLcode ftp_block_statemach(struct connectdata *conn)
 }
 
 /*
 }
 
 /*
- * Allocate and initialize the struct FTP for the current SessionHandle.  If
- * need be.
- */
-
-#if defined(__INTEL_COMPILER) && (__INTEL_COMPILER == 910) && \
-    defined(__OPTIMIZE__) && defined(__unix__) && defined(__i386__)
-  /* workaround icc 9.1 optimizer issue */
-#pragma optimize("", off)
-#endif
-
-static CURLcode ftp_init(struct connectdata *conn)
-{
-  struct FTP *ftp;
-
-  if(NULL == conn->data->state.proto.ftp) {
-    conn->data->state.proto.ftp = malloc(sizeof(struct FTP));
-    if(NULL == conn->data->state.proto.ftp)
-      return CURLE_OUT_OF_MEMORY;
-  }
-
-  ftp = conn->data->state.proto.ftp;
-
-  /* get some initial data into the ftp struct */
-  ftp->bytecountp = &conn->data->req.bytecount;
-  ftp->transfer = FTPTRANSFER_BODY;
-  ftp->downloadsize = 0;
-
-  /* No need to duplicate user+password, the connectdata struct won't change
-     during a session, but we re-init them here since on subsequent inits
-     since the conn struct may have changed or been replaced.
-  */
-  ftp->user = conn->user;
-  ftp->passwd = conn->passwd;
-  if(isBadFtpString(ftp->user))
-    return CURLE_URL_MALFORMAT;
-  if(isBadFtpString(ftp->passwd))
-    return CURLE_URL_MALFORMAT;
-
-  conn->proto.ftpc.known_filesize = -1; /* unknown size for now */
-
-  return CURLE_OK;
-}
-
-#if defined(__INTEL_COMPILER) && (__INTEL_COMPILER == 910) && \
-    defined(__OPTIMIZE__) && defined(__unix__) && defined(__i386__)
-  /* workaround icc 9.1 optimizer issue */
-#pragma optimize("", on)
-#endif
-
-/*
  * ftp_connect() should do everything that is to be considered a part of
  * the connection phase.
  *
  * ftp_connect() should do everything that is to be considered a part of
  * the connection phase.
  *
@@ -3225,16 +3178,8 @@ static CURLcode ftp_connect(struct connectdata *conn,
 
   *done = FALSE; /* default to not done yet */
 
 
   *done = FALSE; /* default to not done yet */
 
-  /* If there already is a protocol-specific struct allocated for this
-     sessionhandle, deal with it */
-  Curl_reset_reqproto(conn);
-
-  result = ftp_init(conn);
-  if(CURLE_OK != result)
-    return result;
-
   /* We always support persistent connections on ftp */
   /* We always support persistent connections on ftp */
-  conn->bits.close = FALSE;
+  connkeep(conn, "FTP default");
 
   pp->response_time = RESP_TIMEOUT; /* set default response time-out */
   pp->statemach_act = ftp_statemach_act;
 
   pp->response_time = RESP_TIMEOUT; /* set default response time-out */
   pp->statemach_act = ftp_statemach_act;
@@ -3272,7 +3217,7 @@ static CURLcode ftp_done(struct connectdata *conn, CURLcode status,
                               bool premature)
 {
   struct SessionHandle *data = conn->data;
                               bool premature)
 {
   struct SessionHandle *data = conn->data;
-  struct FTP *ftp = data->state.proto.ftp;
+  struct FTP *ftp = data->req.protop;
   struct ftp_conn *ftpc = &conn->proto.ftpc;
   struct pingpong *pp = &ftpc->pp;
   ssize_t nread;
   struct ftp_conn *ftpc = &conn->proto.ftpc;
   struct pingpong *pp = &ftpc->pp;
   ssize_t nread;
@@ -3318,7 +3263,7 @@ static CURLcode ftp_done(struct connectdata *conn, CURLcode status,
     ftpc->ctl_valid = FALSE;
     ftpc->cwdfail = TRUE; /* set this TRUE to prevent us to remember the
                              current path, as this connection is going */
     ftpc->ctl_valid = FALSE;
     ftpc->cwdfail = TRUE; /* set this TRUE to prevent us to remember the
                              current path, as this connection is going */
-    conn->bits.close = TRUE; /* marked for closure */
+    connclose(conn, "FTP ended with bad error code");
     result = status;      /* use the already set error code */
     break;
   }
     result = status;      /* use the already set error code */
     break;
   }
@@ -3342,7 +3287,7 @@ static CURLcode ftp_done(struct connectdata *conn, CURLcode status,
     if(!result)
       result = CURLE_OUT_OF_MEMORY;
     ftpc->ctl_valid = FALSE; /* mark control connection as bad */
     if(!result)
       result = CURLE_OUT_OF_MEMORY;
     ftpc->ctl_valid = FALSE; /* mark control connection as bad */
-    conn->bits.close = TRUE; /* mark for connection closure */
+    connclose(conn, "FTP: out of memory!"); /* mark for connection closure */
     ftpc->prevpath = NULL; /* no path remembering */
   }
   else {
     ftpc->prevpath = NULL; /* no path remembering */
   }
   else {
@@ -3385,7 +3330,7 @@ static CURLcode ftp_done(struct connectdata *conn, CURLcode status,
         failf(data, "Failure sending ABOR command: %s",
               curl_easy_strerror(result));
         ftpc->ctl_valid = FALSE; /* mark control connection as bad */
         failf(data, "Failure sending ABOR command: %s",
               curl_easy_strerror(result));
         ftpc->ctl_valid = FALSE; /* mark control connection as bad */
-        conn->bits.close = TRUE; /* mark for connection closure */
+        connclose(conn, "ABOR command failed"); /* connection closure */
       }
     }
 
       }
     }
 
@@ -3424,7 +3369,7 @@ static CURLcode ftp_done(struct connectdata *conn, CURLcode status,
     if(!nread && (CURLE_OPERATION_TIMEDOUT == result)) {
       failf(data, "control connection looks dead");
       ftpc->ctl_valid = FALSE; /* mark control connection as bad */
     if(!nread && (CURLE_OPERATION_TIMEDOUT == result)) {
       failf(data, "control connection looks dead");
       ftpc->ctl_valid = FALSE; /* mark control connection as bad */
-      conn->bits.close = TRUE; /* mark for closure */
+      connclose(conn, "Timeout or similar in FTP DONE operation"); /* close */
     }
 
     if(result)
     }
 
     if(result)
@@ -3434,7 +3379,7 @@ static CURLcode ftp_done(struct connectdata *conn, CURLcode status,
       /* we have just sent ABOR and there is no reliable way to check if it was
        * successful or not; we have to close the connection now */
       infof(data, "partial download completed, closing connection\n");
       /* we have just sent ABOR and there is no reliable way to check if it was
        * successful or not; we have to close the connection now */
       infof(data, "partial download completed, closing connection\n");
-      conn->bits.close = TRUE; /* mark for closure */
+      connclose(conn, "Partial download with no ability to check");
       return result;
     }
 
       return result;
     }
 
@@ -3452,13 +3397,13 @@ static CURLcode ftp_done(struct connectdata *conn, CURLcode status,
        use checking further */
     ;
   else if(data->set.upload) {
        use checking further */
     ;
   else if(data->set.upload) {
-    if((-1 != data->set.infilesize) &&
-       (data->set.infilesize != *ftp->bytecountp) &&
+    if((-1 != data->state.infilesize) &&
+       (data->state.infilesize != *ftp->bytecountp) &&
        !data->set.crlf &&
        (ftp->transfer == FTPTRANSFER_BODY)) {
        !data->set.crlf &&
        (ftp->transfer == FTPTRANSFER_BODY)) {
-      failf(data, "Uploaded unaligned file size (%" FORMAT_OFF_T
-            " out of %" FORMAT_OFF_T " bytes)",
-            *ftp->bytecountp, data->set.infilesize);
+      failf(data, "Uploaded unaligned file size (%" CURL_FORMAT_CURL_OFF_T
+            " out of %" CURL_FORMAT_CURL_OFF_T " bytes)",
+            *ftp->bytecountp, data->state.infilesize);
       result = CURLE_PARTIAL_FILE;
     }
   }
       result = CURLE_PARTIAL_FILE;
     }
   }
@@ -3474,8 +3419,8 @@ static CURLcode ftp_done(struct connectdata *conn, CURLcode status,
         *ftp->bytecountp) &&
 #endif /* CURL_DO_LINEEND_CONV */
        (data->req.maxdownload != *ftp->bytecountp)) {
         *ftp->bytecountp) &&
 #endif /* CURL_DO_LINEEND_CONV */
        (data->req.maxdownload != *ftp->bytecountp)) {
-      failf(data, "Received only partial file: %" FORMAT_OFF_T " bytes",
-            *ftp->bytecountp);
+      failf(data, "Received only partial file: %" CURL_FORMAT_CURL_OFF_T
+            " bytes", *ftp->bytecountp);
       result = CURLE_PARTIAL_FILE;
     }
     else if(!ftpc->dont_check &&
       result = CURLE_PARTIAL_FILE;
     }
     else if(!ftpc->dont_check &&
@@ -3640,26 +3585,27 @@ static CURLcode ftp_range(struct connectdata *conn)
     if((-1 == to) && (from>=0)) {
       /* X - */
       data->state.resume_from = from;
     if((-1 == to) && (from>=0)) {
       /* X - */
       data->state.resume_from = from;
-      DEBUGF(infof(conn->data, "FTP RANGE %" FORMAT_OFF_T " to end of file\n",
-                   from));
+      DEBUGF(infof(conn->data, "FTP RANGE %" CURL_FORMAT_CURL_OFF_T
+                   " to end of file\n", from));
     }
     else if(from < 0) {
       /* -Y */
       data->req.maxdownload = -from;
       data->state.resume_from = from;
     }
     else if(from < 0) {
       /* -Y */
       data->req.maxdownload = -from;
       data->state.resume_from = from;
-      DEBUGF(infof(conn->data, "FTP RANGE the last %" FORMAT_OFF_T " bytes\n",
-                   -from));
+      DEBUGF(infof(conn->data, "FTP RANGE the last %" CURL_FORMAT_CURL_OFF_T
+                   " bytes\n", -from));
     }
     else {
       /* X-Y */
       data->req.maxdownload = (to-from)+1; /* include last byte */
       data->state.resume_from = from;
     }
     else {
       /* X-Y */
       data->req.maxdownload = (to-from)+1; /* include last byte */
       data->state.resume_from = from;
-      DEBUGF(infof(conn->data, "FTP RANGE from %" FORMAT_OFF_T
-                   " getting %" FORMAT_OFF_T " bytes\n",
+      DEBUGF(infof(conn->data, "FTP RANGE from %" CURL_FORMAT_CURL_OFF_T
+                   " getting %" CURL_FORMAT_CURL_OFF_T " bytes\n",
                    from, data->req.maxdownload));
     }
                    from, data->req.maxdownload));
     }
-    DEBUGF(infof(conn->data, "range-download from %" FORMAT_OFF_T
-                 " to %" FORMAT_OFF_T ", totally %" FORMAT_OFF_T " bytes\n",
+    DEBUGF(infof(conn->data, "range-download from %" CURL_FORMAT_CURL_OFF_T
+                 " to %" CURL_FORMAT_CURL_OFF_T ", totally %"
+                 CURL_FORMAT_CURL_OFF_T " bytes\n",
                  from, to, data->req.maxdownload));
     ftpc->dont_check = TRUE; /* dont check for successful transfer */
   }
                  from, to, data->req.maxdownload));
     ftpc->dont_check = TRUE; /* dont check for successful transfer */
   }
@@ -3689,7 +3635,7 @@ static CURLcode ftp_do_more(struct connectdata *conn, int *completep)
   bool complete = FALSE;
 
   /* the ftp struct is inited in ftp_connect() */
   bool complete = FALSE;
 
   /* the ftp struct is inited in ftp_connect() */
-  struct FTP *ftp = data->state.proto.ftp;
+  struct FTP *ftp = data->req.protop;
 
   /* if the second connection isn't done yet, wait for it */
   if(!conn->bits.tcpconnect[SECONDARYSOCKET]) {
 
   /* if the second connection isn't done yet, wait for it */
   if(!conn->bits.tcpconnect[SECONDARYSOCKET]) {
@@ -3706,6 +3652,10 @@ static CURLcode ftp_do_more(struct connectdata *conn, int *completep)
     /* Ready to do more? */
     if(connected) {
       DEBUGF(infof(data, "DO-MORE connected phase starts\n"));
     /* Ready to do more? */
     if(connected) {
       DEBUGF(infof(data, "DO-MORE connected phase starts\n"));
+      if(conn->bits.proxy) {
+        infof(data, "Connection to proxy confirmed\n");
+        result = proxy_magic(conn, ftpc->newhost, ftpc->newport, &connected);
+      }
     }
     else {
       if(result && (ftpc->count1 == 0)) {
     }
     else {
       if(result && (ftpc->count1 == 0)) {
@@ -3801,7 +3751,7 @@ static CURLcode ftp_do_more(struct connectdata *conn, int *completep)
     return result;
   }
 
     return result;
   }
 
-  if((result == CURLE_OK) && (ftp->transfer != FTPTRANSFER_BODY))
+  if(!result && (ftp->transfer != FTPTRANSFER_BODY))
     /* no data to transfer. FIX: it feels like a kludge to have this here
        too! */
     Curl_setup_transfer(conn, -1, -1, FALSE, NULL, -1, NULL);
     /* no data to transfer. FIX: it feels like a kludge to have this here
        too! */
     Curl_setup_transfer(conn, -1, -1, FALSE, NULL, -1, NULL);
@@ -3837,7 +3787,7 @@ CURLcode ftp_perform(struct connectdata *conn,
 
   if(conn->data->set.opt_no_body) {
     /* requested no body means no transfer... */
 
   if(conn->data->set.opt_no_body) {
     /* requested no body means no transfer... */
-    struct FTP *ftp = conn->data->state.proto.ftp;
+    struct FTP *ftp = conn->data->req.protop;
     ftp->transfer = FTPTRANSFER_INFO;
   }
 
     ftp->transfer = FTPTRANSFER_INFO;
   }
 
@@ -3874,7 +3824,7 @@ static CURLcode init_wc_data(struct connectdata *conn)
   char *last_slash;
   char *path = conn->data->state.path;
   struct WildcardData *wildcard = &(conn->data->wildcard);
   char *last_slash;
   char *path = conn->data->state.path;
   struct WildcardData *wildcard = &(conn->data->wildcard);
-  CURLcode ret = CURLE_OK;
+  CURLcode result = CURLE_OK;
   struct ftp_wc_tmpdata *ftp_tmp;
 
   last_slash = strrchr(conn->data->state.path, '/');
   struct ftp_wc_tmpdata *ftp_tmp;
 
   last_slash = strrchr(conn->data->state.path, '/');
@@ -3882,8 +3832,8 @@ static CURLcode init_wc_data(struct connectdata *conn)
     last_slash++;
     if(last_slash[0] == '\0') {
       wildcard->state = CURLWC_CLEAN;
     last_slash++;
     if(last_slash[0] == '\0') {
       wildcard->state = CURLWC_CLEAN;
-      ret = ftp_parse_url_path(conn);
-      return ret;
+      result = ftp_parse_url_path(conn);
+      return result;
     }
     else {
       wildcard->pattern = strdup(last_slash);
     }
     else {
       wildcard->pattern = strdup(last_slash);
@@ -3901,8 +3851,8 @@ static CURLcode init_wc_data(struct connectdata *conn)
     }
     else { /* only list */
       wildcard->state = CURLWC_CLEAN;
     }
     else { /* only list */
       wildcard->state = CURLWC_CLEAN;
-      ret = ftp_parse_url_path(conn);
-      return ret;
+      result = ftp_parse_url_path(conn);
+      return result;
     }
   }
 
     }
   }
 
@@ -3932,13 +3882,13 @@ static CURLcode init_wc_data(struct connectdata *conn)
     conn->data->set.ftp_filemethod = FTPFILE_MULTICWD;
 
   /* try to parse ftp url */
     conn->data->set.ftp_filemethod = FTPFILE_MULTICWD;
 
   /* try to parse ftp url */
-  ret = ftp_parse_url_path(conn);
-  if(ret) {
+  result = ftp_parse_url_path(conn);
+  if(result) {
     Curl_safefree(wildcard->pattern);
     wildcard->tmp_dtor(wildcard->tmp);
     wildcard->tmp_dtor = ZERO_NULL;
     wildcard->tmp = NULL;
     Curl_safefree(wildcard->pattern);
     wildcard->tmp_dtor(wildcard->tmp);
     wildcard->tmp_dtor = ZERO_NULL;
     wildcard->tmp = NULL;
-    return ret;
+    return result;
   }
 
   wildcard->path = strdup(conn->data->state.path);
   }
 
   wildcard->path = strdup(conn->data->state.path);
@@ -3967,16 +3917,16 @@ static CURLcode init_wc_data(struct connectdata *conn)
 static CURLcode wc_statemach(struct connectdata *conn)
 {
   struct WildcardData * const wildcard = &(conn->data->wildcard);
 static CURLcode wc_statemach(struct connectdata *conn)
 {
   struct WildcardData * const wildcard = &(conn->data->wildcard);
-  CURLcode ret = CURLE_OK;
+  CURLcode result = CURLE_OK;
 
   switch (wildcard->state) {
   case CURLWC_INIT:
 
   switch (wildcard->state) {
   case CURLWC_INIT:
-    ret = init_wc_data(conn);
+    result = init_wc_data(conn);
     if(wildcard->state == CURLWC_CLEAN)
       /* only listing! */
       break;
     else
     if(wildcard->state == CURLWC_CLEAN)
       /* only listing! */
       break;
     else
-      wildcard->state = ret ? CURLWC_ERROR : CURLWC_MATCHING;
+      wildcard->state = result ? CURLWC_ERROR : CURLWC_MATCHING;
     break;
 
   case CURLWC_MATCHING: {
     break;
 
   case CURLWC_MATCHING: {
@@ -4040,10 +3990,9 @@ static CURLcode wc_statemach(struct connectdata *conn)
     if(finfo->flags & CURLFINFOFLAG_KNOWN_SIZE)
       ftpc->known_filesize = finfo->size;
 
     if(finfo->flags & CURLFINFOFLAG_KNOWN_SIZE)
       ftpc->known_filesize = finfo->size;
 
-    ret = ftp_parse_url_path(conn);
-    if(ret) {
-      return ret;
-    }
+    result = ftp_parse_url_path(conn);
+    if(result)
+      return result;
 
     /* we don't need the Curl_fileinfo of first file anymore */
     Curl_llist_remove(wildcard->filelist, wildcard->filelist->head, NULL);
 
     /* we don't need the Curl_fileinfo of first file anymore */
     Curl_llist_remove(wildcard->filelist, wildcard->filelist->head, NULL);
@@ -4067,11 +4016,11 @@ static CURLcode wc_statemach(struct connectdata *conn)
 
   case CURLWC_CLEAN: {
     struct ftp_wc_tmpdata *ftp_tmp = wildcard->tmp;
 
   case CURLWC_CLEAN: {
     struct ftp_wc_tmpdata *ftp_tmp = wildcard->tmp;
-    ret = CURLE_OK;
-    if(ftp_tmp) {
-      ret = Curl_ftp_parselist_geterror(ftp_tmp->parser);
-    }
-    wildcard->state = ret ? CURLWC_ERROR : CURLWC_DONE;
+    result = CURLE_OK;
+    if(ftp_tmp)
+      result = Curl_ftp_parselist_geterror(ftp_tmp->parser);
+
+    wildcard->state = result ? CURLWC_ERROR : CURLWC_DONE;
   } break;
 
   case CURLWC_DONE:
   } break;
 
   case CURLWC_DONE:
@@ -4079,7 +4028,7 @@ static CURLcode wc_statemach(struct connectdata *conn)
     break;
   }
 
     break;
   }
 
-  return ret;
+  return result;
 }
 
 /***********************************************************************
 }
 
 /***********************************************************************
@@ -4093,42 +4042,31 @@ static CURLcode wc_statemach(struct connectdata *conn)
  */
 static CURLcode ftp_do(struct connectdata *conn, bool *done)
 {
  */
 static CURLcode ftp_do(struct connectdata *conn, bool *done)
 {
-  CURLcode retcode = CURLE_OK;
+  CURLcode result = CURLE_OK;
   struct ftp_conn *ftpc = &conn->proto.ftpc;
 
   *done = FALSE; /* default to false */
   ftpc->wait_data_conn = FALSE; /* default to no such wait */
 
   struct ftp_conn *ftpc = &conn->proto.ftpc;
 
   *done = FALSE; /* default to false */
   ftpc->wait_data_conn = FALSE; /* default to no such wait */
 
-  /*
-    Since connections can be re-used between SessionHandles, this might be a
-    connection already existing but on a fresh SessionHandle struct so we must
-    make sure we have a good 'struct FTP' to play with. For new connections,
-    the struct FTP is allocated and setup in the ftp_connect() function.
-  */
-  Curl_reset_reqproto(conn);
-  retcode = ftp_init(conn);
-  if(retcode)
-    return retcode;
-
   if(conn->data->set.wildcardmatch) {
   if(conn->data->set.wildcardmatch) {
-    retcode = wc_statemach(conn);
+    result = wc_statemach(conn);
     if(conn->data->wildcard.state == CURLWC_SKIP ||
       conn->data->wildcard.state == CURLWC_DONE) {
       /* do not call ftp_regular_transfer */
       return CURLE_OK;
     }
     if(conn->data->wildcard.state == CURLWC_SKIP ||
       conn->data->wildcard.state == CURLWC_DONE) {
       /* do not call ftp_regular_transfer */
       return CURLE_OK;
     }
-    if(retcode) /* error, loop or skipping the file */
-      return retcode;
+    if(result) /* error, loop or skipping the file */
+      return result;
   }
   else { /* no wildcard FSM needed */
   }
   else { /* no wildcard FSM needed */
-    retcode = ftp_parse_url_path(conn);
-    if(retcode)
-      return retcode;
+    result = ftp_parse_url_path(conn);
+    if(result)
+      return result;
   }
 
   }
 
-  retcode = ftp_regular_transfer(conn, done);
+  result = ftp_regular_transfer(conn, done);
 
 
-  return retcode;
+  return result;
 }
 
 
 }
 
 
@@ -4140,8 +4078,8 @@ CURLcode Curl_ftpsendf(struct connectdata *conn,
   char s[SBUF_SIZE];
   size_t write_len;
   char *sptr=s;
   char s[SBUF_SIZE];
   size_t write_len;
   char *sptr=s;
-  CURLcode res = CURLE_OK;
-#if defined(HAVE_KRB4) || defined(HAVE_GSSAPI)
+  CURLcode result = CURLE_OK;
+#ifdef HAVE_GSSAPI
   enum protection_level data_sec = conn->data_prot;
 #endif
 
   enum protection_level data_sec = conn->data_prot;
 #endif
 
@@ -4155,23 +4093,23 @@ CURLcode Curl_ftpsendf(struct connectdata *conn,
 
   bytes_written=0;
 
 
   bytes_written=0;
 
-  res = Curl_convert_to_network(conn->data, s, write_len);
+  result = Curl_convert_to_network(conn->data, s, write_len);
   /* Curl_convert_to_network calls failf if unsuccessful */
   /* Curl_convert_to_network calls failf if unsuccessful */
-  if(res)
-    return(res);
+  if(result)
+    return(result);
 
   for(;;) {
 
   for(;;) {
-#if defined(HAVE_KRB4) || defined(HAVE_GSSAPI)
+#ifdef HAVE_GSSAPI
     conn->data_prot = PROT_CMD;
 #endif
     conn->data_prot = PROT_CMD;
 #endif
-    res = Curl_write(conn, conn->sock[FIRSTSOCKET], sptr, write_len,
-                     &bytes_written);
-#if defined(HAVE_KRB4) || defined(HAVE_GSSAPI)
+    result = Curl_write(conn, conn->sock[FIRSTSOCKET], sptr, write_len,
+                        &bytes_written);
+#ifdef HAVE_GSSAPI
     DEBUGASSERT(data_sec > PROT_NONE && data_sec < PROT_LAST);
     conn->data_prot = data_sec;
 #endif
 
     DEBUGASSERT(data_sec > PROT_NONE && data_sec < PROT_LAST);
     conn->data_prot = data_sec;
 #endif
 
-    if(CURLE_OK != res)
+    if(result)
       break;
 
     if(conn->data->set.verbose)
       break;
 
     if(conn->data->set.verbose)
@@ -4186,7 +4124,7 @@ CURLcode Curl_ftpsendf(struct connectdata *conn,
       break;
   }
 
       break;
   }
 
-  return res;
+  return result;
 }
 
 /***********************************************************************
 }
 
 /***********************************************************************
@@ -4209,7 +4147,7 @@ static CURLcode ftp_quit(struct connectdata *conn)
       failf(conn->data, "Failure sending QUIT command: %s",
             curl_easy_strerror(result));
       conn->proto.ftpc.ctl_valid = FALSE; /* mark control connection as bad */
       failf(conn->data, "Failure sending QUIT command: %s",
             curl_easy_strerror(result));
       conn->proto.ftpc.ctl_valid = FALSE; /* mark control connection as bad */
-      conn->bits.close = TRUE; /* mark for connection closure */
+      connclose(conn, "QUIT command failed"); /* mark for connection closure */
       state(conn, FTP_STOP);
       return result;
     }
       state(conn, FTP_STOP);
       return result;
     }
@@ -4268,7 +4206,7 @@ static CURLcode ftp_disconnect(struct connectdata *conn, bool dead_connection)
 
   Curl_pp_disconnect(pp);
 
 
   Curl_pp_disconnect(pp);
 
-#if defined(HAVE_KRB4) || defined(HAVE_GSSAPI)
+#ifdef HAVE_GSSAPI
   Curl_sec_end(conn);
 #endif
 
   Curl_sec_end(conn);
 #endif
 
@@ -4287,7 +4225,7 @@ CURLcode ftp_parse_url_path(struct connectdata *conn)
 {
   struct SessionHandle *data = conn->data;
   /* the ftp struct is already inited in ftp_connect() */
 {
   struct SessionHandle *data = conn->data;
   /* the ftp struct is already inited in ftp_connect() */
-  struct FTP *ftp = data->state.proto.ftp;
+  struct FTP *ftp = data->req.protop;
   struct ftp_conn *ftpc = &conn->proto.ftpc;
   const char *slash_pos;  /* position of the first '/' char in curpos */
   const char *path_to_use = data->state.path;
   struct ftp_conn *ftpc = &conn->proto.ftpc;
   const char *slash_pos;  /* position of the first '/' char in curpos */
   const char *path_to_use = data->state.path;
@@ -4342,7 +4280,7 @@ CURLcode ftp_parse_url_path(struct connectdata *conn)
         dirlen++;
 
       ftpc->dirs[0] = curl_easy_unescape(conn->data, slash_pos ? cur_pos : "/",
         dirlen++;
 
       ftpc->dirs[0] = curl_easy_unescape(conn->data, slash_pos ? cur_pos : "/",
-                                         slash_pos ? curlx_sztosi(dirlen) : 1,
+                                         slash_pos ? curlx_uztosi(dirlen) : 1,
                                          NULL);
       if(!ftpc->dirs[0]) {
         freedirs(ftpc);
                                          NULL);
       if(!ftpc->dirs[0]) {
         freedirs(ftpc);
@@ -4477,7 +4415,7 @@ CURLcode ftp_parse_url_path(struct connectdata *conn)
 static CURLcode ftp_dophase_done(struct connectdata *conn,
                                  bool connected)
 {
 static CURLcode ftp_dophase_done(struct connectdata *conn,
                                  bool connected)
 {
-  struct FTP *ftp = conn->data->state.proto.ftp;
+  struct FTP *ftp = conn->data->req.protop;
   struct ftp_conn *ftpc = &conn->proto.ftpc;
 
   if(connected) {
   struct ftp_conn *ftpc = &conn->proto.ftpc;
 
   if(connected) {
@@ -4546,8 +4484,8 @@ CURLcode ftp_regular_transfer(struct connectdata *conn,
 
   Curl_pgrsSetUploadCounter(data, 0);
   Curl_pgrsSetDownloadCounter(data, 0);
 
   Curl_pgrsSetUploadCounter(data, 0);
   Curl_pgrsSetDownloadCounter(data, 0);
-  Curl_pgrsSetUploadSize(data, 0);
-  Curl_pgrsSetDownloadSize(data, 0);
+  Curl_pgrsSetUploadSize(data, -1);
+  Curl_pgrsSetDownloadSize(data, -1);
 
   ftpc->ctl_valid = TRUE; /* starts good */
 
 
   ftpc->ctl_valid = TRUE; /* starts good */
 
@@ -4555,7 +4493,7 @@ CURLcode ftp_regular_transfer(struct connectdata *conn,
                        &connected, /* have we connected after PASV/PORT */
                        dophase_done); /* all commands in the DO-phase done? */
 
                        &connected, /* have we connected after PASV/PORT */
                        dophase_done); /* all commands in the DO-phase done? */
 
-  if(CURLE_OK == result) {
+  if(!result) {
 
     if(!*dophase_done)
       /* the DO phase has not completed yet */
 
     if(!*dophase_done)
       /* the DO phase has not completed yet */
@@ -4572,11 +4510,12 @@ CURLcode ftp_regular_transfer(struct connectdata *conn,
   return result;
 }
 
   return result;
 }
 
-static CURLcode ftp_setup_connection(struct connectdata * conn)
+static CURLcode ftp_setup_connection(struct connectdata *conn)
 {
   struct SessionHandle *data = conn->data;
 {
   struct SessionHandle *data = conn->data;
-  char * type;
+  char *type;
   char command;
   char command;
+  struct FTP *ftp;
 
   if(conn->bits.httpproxy && !data->set.tunnel_thru_httpproxy) {
     /* Unless we have asked to tunnel ftp operations through the proxy, we
 
   if(conn->bits.httpproxy && !data->set.tunnel_thru_httpproxy) {
     /* Unless we have asked to tunnel ftp operations through the proxy, we
@@ -4592,18 +4531,18 @@ static CURLcode ftp_setup_connection(struct connectdata * conn)
       return CURLE_UNSUPPORTED_PROTOCOL;
 #endif
     }
       return CURLE_UNSUPPORTED_PROTOCOL;
 #endif
     }
-    /*
-     * We explicitly mark this connection as persistent here as we're doing
-     * FTP over HTTP and thus we accidentally avoid setting this value
-     * otherwise.
-     */
-    conn->bits.close = FALSE;
+    /* set it up as a HTTP connection instead */
+    return conn->handler->setup_connection(conn);
 #else
     failf(data, "FTP over http proxy requires HTTP support built-in!");
     return CURLE_UNSUPPORTED_PROTOCOL;
 #endif
   }
 
 #else
     failf(data, "FTP over http proxy requires HTTP support built-in!");
     return CURLE_UNSUPPORTED_PROTOCOL;
 #endif
   }
 
+  conn->data->req.protop = ftp = malloc(sizeof(struct FTP));
+  if(NULL == ftp)
+    return CURLE_OUT_OF_MEMORY;
+
   data->state.path++;   /* don't include the initial slash */
   data->state.slash_removed = TRUE; /* we've skipped the slash */
 
   data->state.path++;   /* don't include the initial slash */
   data->state.slash_removed = TRUE; /* we've skipped the slash */
 
@@ -4636,6 +4575,24 @@ static CURLcode ftp_setup_connection(struct connectdata * conn)
     }
   }
 
     }
   }
 
+  /* get some initial data into the ftp struct */
+  ftp->bytecountp = &conn->data->req.bytecount;
+  ftp->transfer = FTPTRANSFER_BODY;
+  ftp->downloadsize = 0;
+
+  /* No need to duplicate user+password, the connectdata struct won't change
+     during a session, but we re-init them here since on subsequent inits
+     since the conn struct may have changed or been replaced.
+  */
+  ftp->user = conn->user;
+  ftp->passwd = conn->passwd;
+  if(isBadFtpString(ftp->user))
+    return CURLE_URL_MALFORMAT;
+  if(isBadFtpString(ftp->passwd))
+    return CURLE_URL_MALFORMAT;
+
+  conn->proto.ftpc.known_filesize = -1; /* unknown size for now */
+
   return CURLE_OK;
 }
 
   return CURLE_OK;
 }
 
index bdd59c9..b6bfc02 100644 (file)
--- a/lib/ftp.h
+++ b/lib/ftp.h
@@ -147,6 +147,12 @@ struct ftp_conn {
   curl_off_t known_filesize; /* file size is different from -1, if wildcard
                                 LIST parsing was done and wc_statemach set
                                 it */
   curl_off_t known_filesize; /* file size is different from -1, if wildcard
                                 LIST parsing was done and wc_statemach set
                                 it */
+  /* newhost must be able to hold a full IP-style address in ASCII, which
+     in the IPv6 case means 5*8-1 = 39 letters */
+#define NEWHOST_BUFSIZE 48
+  char newhost[NEWHOST_BUFSIZE]; /* this is the pair to connect the DATA... */
+  unsigned short newport;        /* connection to */
+
 };
 
 #define DEFAULT_ACCEPT_TIMEOUT   60000 /* milliseconds == one minute */
 };
 
 #define DEFAULT_ACCEPT_TIMEOUT   60000 /* milliseconds == one minute */
index cb3601f..9aacad9 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 /**
  * Now implemented:
  *
 /**
  * Now implemented:
  *
- * 1) UNIX version 1
+ * 1) Unix version 1
  * drwxr-xr-x 1 user01 ftp  512 Jan 29 23:32 prog
  * drwxr-xr-x 1 user01 ftp  512 Jan 29 23:32 prog
- * 2) UNIX version 2
+ * 2) Unix version 2
  * drwxr-xr-x 1 user01 ftp  512 Jan 29 1997  prog
  * drwxr-xr-x 1 user01 ftp  512 Jan 29 1997  prog
- * 3) UNIX version 3
+ * 3) Unix version 3
  * drwxr-xr-x 1      1   1  512 Jan 29 23:32 prog
  * drwxr-xr-x 1      1   1  512 Jan 29 23:32 prog
- * 4) UNIX symlink
+ * 4) Unix symlink
  * lrwxr-xr-x 1 user01 ftp  512 Jan 29 23:32 prog -> prog2000
  * 5) DOS style
  * 01-29-97 11:32PM <DIR> prog
  * lrwxr-xr-x 1 user01 ftp  512 Jan 29 23:32 prog -> prog2000
  * 5) DOS style
  * 01-29-97 11:32PM <DIR> prog
@@ -365,7 +365,7 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
   struct ftp_parselist_data *parser = tmpdata->parser;
   struct curl_fileinfo *finfo;
   unsigned long i = 0;
   struct ftp_parselist_data *parser = tmpdata->parser;
   struct curl_fileinfo *finfo;
   unsigned long i = 0;
-  CURLcode rc;
+  CURLcode result;
 
   if(parser->error) { /* error in previous call */
     /* scenario:
 
   if(parser->error) { /* error in previous call */
     /* scenario:
@@ -449,9 +449,12 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
             finfo->b_data[parser->item_length - 1] = 0;
             if(strncmp("total ", finfo->b_data, 6) == 0) {
               char *endptr = finfo->b_data+6;
             finfo->b_data[parser->item_length - 1] = 0;
             if(strncmp("total ", finfo->b_data, 6) == 0) {
               char *endptr = finfo->b_data+6;
-              /* here we can deal with directory size */
+              /* here we can deal with directory size, pass the leading white
+                 spaces and then the digits */
               while(ISSPACE(*endptr))
                 endptr++;
               while(ISSPACE(*endptr))
                 endptr++;
+              while(ISDIGIT(*endptr))
+                endptr++;
               if(*endptr != 0) {
                 PL_ERROR(conn, CURLE_FTP_BAD_FILE_LIST);
                 return bufflen;
               if(*endptr != 0) {
                 PL_ERROR(conn, CURLE_FTP_BAD_FILE_LIST);
                 return bufflen;
@@ -755,9 +758,9 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
             finfo->b_data[parser->item_offset + parser->item_length - 1] = 0;
             parser->offsets.filename = parser->item_offset;
             parser->state.UNIX.main = PL_UNIX_FILETYPE;
             finfo->b_data[parser->item_offset + parser->item_length - 1] = 0;
             parser->offsets.filename = parser->item_offset;
             parser->state.UNIX.main = PL_UNIX_FILETYPE;
-            rc = ftp_pl_insert_finfo(conn, finfo);
-            if(rc) {
-              PL_ERROR(conn, rc);
+            result = ftp_pl_insert_finfo(conn, finfo);
+            if(result) {
+              PL_ERROR(conn, result);
               return bufflen;
             }
           }
               return bufflen;
             }
           }
@@ -767,9 +770,9 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
             finfo->b_data[parser->item_offset + parser->item_length] = 0;
             parser->offsets.filename = parser->item_offset;
             parser->state.UNIX.main = PL_UNIX_FILETYPE;
             finfo->b_data[parser->item_offset + parser->item_length] = 0;
             parser->offsets.filename = parser->item_offset;
             parser->state.UNIX.main = PL_UNIX_FILETYPE;
-            rc = ftp_pl_insert_finfo(conn, finfo);
-            if(rc) {
-              PL_ERROR(conn, rc);
+            result = ftp_pl_insert_finfo(conn, finfo);
+            if(result) {
+              PL_ERROR(conn, result);
               return bufflen;
             }
           }
               return bufflen;
             }
           }
@@ -863,9 +866,9 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
           else if(c == '\n') {
             finfo->b_data[parser->item_offset + parser->item_length - 1] = 0;
             parser->offsets.symlink_target = parser->item_offset;
           else if(c == '\n') {
             finfo->b_data[parser->item_offset + parser->item_length - 1] = 0;
             parser->offsets.symlink_target = parser->item_offset;
-            rc = ftp_pl_insert_finfo(conn, finfo);
-            if(rc) {
-              PL_ERROR(conn, rc);
+            result = ftp_pl_insert_finfo(conn, finfo);
+            if(result) {
+              PL_ERROR(conn, result);
               return bufflen;
             }
             parser->state.UNIX.main = PL_UNIX_FILETYPE;
               return bufflen;
             }
             parser->state.UNIX.main = PL_UNIX_FILETYPE;
@@ -875,9 +878,9 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
           if(c == '\n') {
             finfo->b_data[parser->item_offset + parser->item_length - 1] = 0;
             parser->offsets.symlink_target = parser->item_offset;
           if(c == '\n') {
             finfo->b_data[parser->item_offset + parser->item_length - 1] = 0;
             parser->offsets.symlink_target = parser->item_offset;
-            rc = ftp_pl_insert_finfo(conn, finfo);
-            if(rc) {
-              PL_ERROR(conn, rc);
+            result = ftp_pl_insert_finfo(conn, finfo);
+            if(result) {
+              PL_ERROR(conn, result);
               return bufflen;
             }
             parser->state.UNIX.main = PL_UNIX_FILETYPE;
               return bufflen;
             }
             parser->state.UNIX.main = PL_UNIX_FILETYPE;
@@ -1008,9 +1011,9 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
             parser->offsets.filename = parser->item_offset;
             finfo->b_data[finfo->b_used - 1] = 0;
             parser->offsets.filename = parser->item_offset;
             parser->offsets.filename = parser->item_offset;
             finfo->b_data[finfo->b_used - 1] = 0;
             parser->offsets.filename = parser->item_offset;
-            rc = ftp_pl_insert_finfo(conn, finfo);
-            if(rc) {
-              PL_ERROR(conn, rc);
+            result = ftp_pl_insert_finfo(conn, finfo);
+            if(result) {
+              PL_ERROR(conn, result);
               return bufflen;
             }
             parser->state.NT.main = PL_WINNT_DATE;
               return bufflen;
             }
             parser->state.NT.main = PL_WINNT_DATE;
@@ -1020,9 +1023,9 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
         case PL_WINNT_FILENAME_WINEOL:
           if(c == '\n') {
             parser->offsets.filename = parser->item_offset;
         case PL_WINNT_FILENAME_WINEOL:
           if(c == '\n') {
             parser->offsets.filename = parser->item_offset;
-            rc = ftp_pl_insert_finfo(conn, finfo);
-            if(rc) {
-              PL_ERROR(conn, rc);
+            result = ftp_pl_insert_finfo(conn, finfo);
+            if(result) {
+              PL_ERROR(conn, result);
               return bufflen;
             }
             parser->state.NT.main = PL_WINNT_DATE;
               return bufflen;
             }
             parser->state.NT.main = PL_WINNT_DATE;
@@ -1038,7 +1041,7 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
       }
       break;
     default:
       }
       break;
     default:
-      return bufflen+1;
+      return bufflen + 1;
     }
 
     i++;
     }
 
     i++;
index 3d09dc6..0ffdd74 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -28,7 +28,7 @@
 #include "getinfo.h"
 
 #include "curl_memory.h"
 #include "getinfo.h"
 
 #include "curl_memory.h"
-#include "sslgen.h"
+#include "vtls/vtls.h"
 #include "connect.h" /* Curl_getconnectinfo() */
 #include "progress.h"
 
 #include "connect.h" /* Curl_getconnectinfo() */
 #include "progress.h"
 
@@ -42,7 +42,7 @@
 CURLcode Curl_initinfo(struct SessionHandle *data)
 {
   struct Progress *pro = &data->progress;
 CURLcode Curl_initinfo(struct SessionHandle *data)
 {
   struct Progress *pro = &data->progress;
-  struct PureInfo *info =&data->info;
+  struct PureInfo *info = &data->info;
 
   pro->t_nslookup = 0;
   pro->t_connect = 0;
 
   pro->t_nslookup = 0;
   pro->t_connect = 0;
@@ -53,6 +53,7 @@ CURLcode Curl_initinfo(struct SessionHandle *data)
   pro->t_redirect = 0;
 
   info->httpcode = 0;
   pro->t_redirect = 0;
 
   info->httpcode = 0;
+  info->httpproxycode = 0;
   info->httpversion = 0;
   info->filetime = -1; /* -1 is an illegal time and thus means unknown */
   info->timecond = FALSE;
   info->httpversion = 0;
   info->filetime = -1; /* -1 is an illegal time and thus means unknown */
   info->timecond = FALSE;
@@ -115,6 +116,7 @@ static CURLcode getinfo_char(struct SessionHandle *data, CURLINFO info,
   default:
     return CURLE_BAD_FUNCTION_ARGUMENT;
   }
   default:
     return CURLE_BAD_FUNCTION_ARGUMENT;
   }
+
   return CURLE_OK;
 }
 
   return CURLE_OK;
 }
 
@@ -201,6 +203,7 @@ static CURLcode getinfo_long(struct SessionHandle *data, CURLINFO info,
   default:
     return CURLE_BAD_FUNCTION_ARGUMENT;
   }
   default:
     return CURLE_BAD_FUNCTION_ARGUMENT;
   }
+
   return CURLE_OK;
 }
 
   return CURLE_OK;
 }
 
@@ -253,6 +256,7 @@ static CURLcode getinfo_double(struct SessionHandle *data, CURLINFO info,
   default:
     return CURLE_BAD_FUNCTION_ARGUMENT;
   }
   default:
     return CURLE_BAD_FUNCTION_ARGUMENT;
   }
+
   return CURLE_OK;
 }
 
   return CURLE_OK;
 }
 
@@ -260,8 +264,8 @@ static CURLcode getinfo_slist(struct SessionHandle *data, CURLINFO info,
                               struct curl_slist **param_slistp)
 {
   union {
                               struct curl_slist **param_slistp)
 {
   union {
-    struct curl_certinfo * to_certinfo;
-    struct curl_slist    * to_slist;
+    struct curl_certinfo *to_certinfo;
+    struct curl_slist    *to_slist;
   } ptr;
 
   switch(info) {
   } ptr;
 
   switch(info) {
@@ -277,26 +281,73 @@ static CURLcode getinfo_slist(struct SessionHandle *data, CURLINFO info,
     ptr.to_certinfo = &data->info.certs;
     *param_slistp = ptr.to_slist;
     break;
     ptr.to_certinfo = &data->info.certs;
     *param_slistp = ptr.to_slist;
     break;
+  case CURLINFO_TLS_SESSION:
+    {
+      struct curl_tlssessioninfo **tsip = (struct curl_tlssessioninfo **)
+                                          param_slistp;
+      struct curl_tlssessioninfo *tsi = &data->tsi;
+      struct connectdata *conn = data->easy_conn;
+      unsigned int sockindex = 0;
+      void *internals = NULL;
+
+      *tsip = tsi;
+      tsi->backend = CURLSSLBACKEND_NONE;
+      tsi->internals = NULL;
+
+      if(!conn)
+        break;
 
 
+      /* Find the active ("in use") SSL connection, if any */
+      while((sockindex < sizeof(conn->ssl) / sizeof(conn->ssl[0])) &&
+            (!conn->ssl[sockindex].use))
+        sockindex++;
+
+      if(sockindex == sizeof(conn->ssl) / sizeof(conn->ssl[0]))
+        break; /* no SSL session found */
+
+      /* Return the TLS session information from the relevant backend */
+#ifdef USE_SSLEAY
+      internals = conn->ssl[sockindex].ctx;
+#endif
+#ifdef USE_GNUTLS
+      internals = conn->ssl[sockindex].session;
+#endif
+#ifdef USE_NSS
+      internals = conn->ssl[sockindex].handle;
+#endif
+#ifdef USE_GSKIT
+      internals = conn->ssl[sockindex].handle;
+#endif
+      if(internals) {
+        tsi->backend = Curl_ssl_backend();
+        tsi->internals = internals;
+      }
+      /* NOTE: For other SSL backends, it is not immediately clear what data
+         to return from 'struct ssl_connect_data'; thus, for now we keep the
+         backend as CURLSSLBACKEND_NONE in those cases, which should be
+         interpreted as "not supported" */
+    }
+    break;
   default:
     return CURLE_BAD_FUNCTION_ARGUMENT;
   }
   default:
     return CURLE_BAD_FUNCTION_ARGUMENT;
   }
+
   return CURLE_OK;
 }
 
 CURLcode Curl_getinfo(struct SessionHandle *data, CURLINFO info, ...)
 {
   va_list arg;
   return CURLE_OK;
 }
 
 CURLcode Curl_getinfo(struct SessionHandle *data, CURLINFO info, ...)
 {
   va_list arg;
-  long *param_longp=NULL;
-  double *param_doublep=NULL;
-  char **param_charp=NULL;
-  struct curl_slist **param_slistp=NULL;
+  long *param_longp = NULL;
+  double *param_doublep = NULL;
+  char **param_charp = NULL;
+  struct curl_slist **param_slistp = NULL;
   int type;
   /* default return code is to error out! */
   int type;
   /* default return code is to error out! */
-  CURLcode ret = CURLE_BAD_FUNCTION_ARGUMENT;
+  CURLcode result = CURLE_BAD_FUNCTION_ARGUMENT;
 
   if(!data)
 
   if(!data)
-    return ret;
+    return result;
 
   va_start(arg, info);
 
 
   va_start(arg, info);
 
@@ -304,28 +355,29 @@ CURLcode Curl_getinfo(struct SessionHandle *data, CURLINFO info, ...)
   switch(type) {
   case CURLINFO_STRING:
     param_charp = va_arg(arg, char **);
   switch(type) {
   case CURLINFO_STRING:
     param_charp = va_arg(arg, char **);
-    if(NULL != param_charp)
-      ret = getinfo_char(data, info, param_charp);
+    if(param_charp)
+      result = getinfo_char(data, info, param_charp);
     break;
   case CURLINFO_LONG:
     param_longp = va_arg(arg, long *);
     break;
   case CURLINFO_LONG:
     param_longp = va_arg(arg, long *);
-    if(NULL != param_longp)
-      ret = getinfo_long(data, info, param_longp);
+    if(param_longp)
+      result = getinfo_long(data, info, param_longp);
     break;
   case CURLINFO_DOUBLE:
     param_doublep = va_arg(arg, double *);
     break;
   case CURLINFO_DOUBLE:
     param_doublep = va_arg(arg, double *);
-    if(NULL != param_doublep)
-      ret = getinfo_double(data, info, param_doublep);
+    if(param_doublep)
+      result = getinfo_double(data, info, param_doublep);
     break;
   case CURLINFO_SLIST:
     param_slistp = va_arg(arg, struct curl_slist **);
     break;
   case CURLINFO_SLIST:
     param_slistp = va_arg(arg, struct curl_slist **);
-    if(NULL != param_slistp)
-      ret = getinfo_slist(data, info, param_slistp);
+    if(param_slistp)
+      result = getinfo_slist(data, info, param_slistp);
     break;
   default:
     break;
   }
 
   va_end(arg);
     break;
   default:
     break;
   }
 
   va_end(arg);
-  return ret;
+
+  return result;
 }
 }
index b1dd65f..f3fd065 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -121,7 +121,7 @@ static CURLcode gopher_do(struct connectdata *conn, bool *done)
 
   for(;;) {
     result = Curl_write(conn, sockfd, sel, k, &amount);
 
   for(;;) {
     result = Curl_write(conn, sockfd, sel, k, &amount);
-    if(CURLE_OK == result) { /* Which may not have written it all! */
+    if(!result) { /* Which may not have written it all! */
       result = Curl_client_write(conn, CLIENTWRITE_HEADER, sel, amount);
       if(result) {
         Curl_safefree(sel_org);
       result = Curl_client_write(conn, CLIENTWRITE_HEADER, sel, amount);
       if(result) {
         Curl_safefree(sel_org);
@@ -154,7 +154,7 @@ static CURLcode gopher_do(struct connectdata *conn, bool *done)
   /* We can use Curl_sendf to send the terminal \r\n relatively safely and
      save allocing another string/doing another _write loop. */
   result = Curl_sendf(sockfd, conn, "\r\n");
   /* We can use Curl_sendf to send the terminal \r\n relatively safely and
      save allocing another string/doing another _write loop. */
   result = Curl_sendf(sockfd, conn, "\r\n");
-  if(result != CURLE_OK) {
+  if(result) {
     failf(data, "Failed sending Gopher request");
     return result;
   }
     failf(data, "Failed sending Gopher request");
     return result;
   }
diff --git a/lib/gskit.c b/lib/gskit.c
deleted file mode 100644 (file)
index 5cda85b..0000000
+++ /dev/null
@@ -1,906 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at http://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-#include "curl_setup.h"
-
-#ifdef USE_GSKIT
-
-#include <gskssl.h>
-#include <qsoasync.h>
-
-/* Some symbols are undefined/unsupported on OS400 versions < V7R1. */
-#ifndef GSK_SSL_EXTN_SERVERNAME_REQUEST
-#define GSK_SSL_EXTN_SERVERNAME_REQUEST                 230
-#endif
-
-#ifdef HAVE_LIMITS_H
-#  include <limits.h>
-#endif
-
-#include <curl/curl.h>
-#include "urldata.h"
-#include "sendf.h"
-#include "gskit.h"
-#include "sslgen.h"
-#include "connect.h" /* for the connect timeout */
-#include "select.h"
-#include "strequal.h"
-#include "x509asn1.h"
-
-#define _MPRINTF_REPLACE /* use our functions only */
-#include <curl/mprintf.h>
-
-#include "curl_memory.h"
-/* The last #include file should be: */
-#include "memdebug.h"
-
-
-/* Supported ciphers. */
-typedef struct {
-  const char *  name;           /* Cipher name. */
-  const char *  gsktoken;       /* Corresponding token for GSKit String. */
-  int           sslver;         /* SSL version. */
-}  gskit_cipher;
-
-static const gskit_cipher  ciphertable[] = {
-  { "null-md5",         "01",   CURL_SSLVERSION_SSLv3 },
-  { "null-sha",         "02",   CURL_SSLVERSION_SSLv3 },
-  { "exp-rc4-md5",      "03",   CURL_SSLVERSION_SSLv3 },
-  { "rc4-md5",          "04",   CURL_SSLVERSION_SSLv3 },
-  { "rc4-sha",          "05",   CURL_SSLVERSION_SSLv3 },
-  { "exp-rc2-cbc-md5",  "06",   CURL_SSLVERSION_SSLv3 },
-  { "exp-des-cbc-sha",  "09",   CURL_SSLVERSION_SSLv3 },
-  { "des-cbc3-sha",     "0A",   CURL_SSLVERSION_SSLv3 },
-  { "aes128-sha",       "2F",   CURL_SSLVERSION_TLSv1 },
-  { "aes256-sha",       "35",   CURL_SSLVERSION_TLSv1 },
-  { "rc4-md5",          "1",    CURL_SSLVERSION_SSLv2 },
-  { "exp-rc4-md5",      "2",    CURL_SSLVERSION_SSLv2 },
-  { "rc2-md5",          "3",    CURL_SSLVERSION_SSLv2 },
-  { "exp-rc2-md5",      "4",    CURL_SSLVERSION_SSLv2 },
-  { "des-cbc-md5",      "6",    CURL_SSLVERSION_SSLv2 },
-  { "des-cbc3-md5",     "7",    CURL_SSLVERSION_SSLv2 },
-  { (const char *) NULL, (const char *) NULL, 0       }
-};
-
-
-static bool is_separator(char c)
-{
-  /* Return whether character is a cipher list separator. */
-  switch (c) {
-  case ' ':
-  case '\t':
-  case ':':
-  case ',':
-  case ';':
-    return true;
-  }
-  return false;
-}
-
-
-static CURLcode gskit_status(struct SessionHandle * data, int rc,
-                             const char * procname, CURLcode defcode)
-{
-  CURLcode cc;
-
-  /* Process GSKit status and map it to a CURLcode. */
-  switch (rc) {
-  case GSK_OK:
-  case GSK_OS400_ASYNCHRONOUS_SOC_INIT:
-    return CURLE_OK;
-  case GSK_KEYRING_OPEN_ERROR:
-  case GSK_OS400_ERROR_NO_ACCESS:
-    return CURLE_SSL_CACERT_BADFILE;
-  case GSK_INSUFFICIENT_STORAGE:
-    return CURLE_OUT_OF_MEMORY;
-  case GSK_ERROR_BAD_V2_CIPHER:
-  case GSK_ERROR_BAD_V3_CIPHER:
-  case GSK_ERROR_NO_CIPHERS:
-    return CURLE_SSL_CIPHER;
-  case GSK_OS400_ERROR_NOT_TRUSTED_ROOT:
-  case GSK_ERROR_CERT_VALIDATION:
-    return CURLE_PEER_FAILED_VERIFICATION;
-  case GSK_OS400_ERROR_TIMED_OUT:
-    return CURLE_OPERATION_TIMEDOUT;
-  case GSK_WOULD_BLOCK:
-    return CURLE_AGAIN;
-  case GSK_OS400_ERROR_NOT_REGISTERED:
-    break;
-  case GSK_ERROR_IO:
-    switch (errno) {
-    case ENOMEM:
-      return CURLE_OUT_OF_MEMORY;
-    default:
-      failf(data, "%s I/O error: %s", procname, strerror(errno));
-      break;
-    }
-    break;
-  default:
-    failf(data, "%s: %s", procname, gsk_strerror(rc));
-    break;
-    }
-  return defcode;
-}
-
-
-static CURLcode set_enum(struct SessionHandle * data,
-                         gsk_handle h, GSK_ENUM_ID id, GSK_ENUM_VALUE value)
-{
-  int rc = gsk_attribute_set_enum(h, id, value);
-
-  switch (rc) {
-  case GSK_OK:
-    return CURLE_OK;
-  case GSK_ERROR_IO:
-    failf(data, "gsk_attribute_set_enum() I/O error: %s", strerror(errno));
-    break;
-  default:
-    failf(data, "gsk_attribute_set_enum(): %s", gsk_strerror(rc));
-    break;
-  }
-  return CURLE_SSL_CONNECT_ERROR;
-}
-
-
-static CURLcode set_buffer(struct SessionHandle * data,
-                           gsk_handle h, GSK_BUF_ID id, const char * buffer)
-{
-  int rc = gsk_attribute_set_buffer(h, id, buffer, 0);
-
-  switch (rc) {
-  case GSK_OK:
-    return CURLE_OK;
-  case GSK_ERROR_IO:
-    failf(data, "gsk_attribute_set_buffer() I/O error: %s", strerror(errno));
-    break;
-  default:
-    failf(data, "gsk_attribute_set_buffer(): %s", gsk_strerror(rc));
-    break;
-  }
-  return CURLE_SSL_CONNECT_ERROR;
-}
-
-
-static CURLcode set_numeric(struct SessionHandle * data,
-                            gsk_handle h, GSK_NUM_ID id, int value)
-{
-  int rc = gsk_attribute_set_numeric_value(h, id, value);
-
-  switch (rc) {
-  case GSK_OK:
-    return CURLE_OK;
-  case GSK_ERROR_IO:
-    failf(data, "gsk_attribute_set_numeric_value() I/O error: %s",
-          strerror(errno));
-    break;
-  default:
-    failf(data, "gsk_attribute_set_numeric_value(): %s", gsk_strerror(rc));
-    break;
-  }
-  return CURLE_SSL_CONNECT_ERROR;
-}
-
-
-static CURLcode set_callback(struct SessionHandle * data,
-                             gsk_handle h, GSK_CALLBACK_ID id, void * info)
-{
-  int rc = gsk_attribute_set_callback(h, id, info);
-
-  switch (rc) {
-  case GSK_OK:
-    return CURLE_OK;
-  case GSK_ERROR_IO:
-    failf(data, "gsk_attribute_set_callback() I/O error: %s", strerror(errno));
-    break;
-  default:
-    failf(data, "gsk_attribute_set_callback(): %s", gsk_strerror(rc));
-    break;
-  }
-  return CURLE_SSL_CONNECT_ERROR;
-}
-
-
-static CURLcode set_ciphers(struct SessionHandle * data, gsk_handle h)
-{
-  const char * cipherlist = data->set.str[STRING_SSL_CIPHER_LIST];
-  char * sslv2ciphers;
-  char * sslv3ciphers;
-  const char * clp;
-  const gskit_cipher * ctp;
-  char * v2p;
-  char * v3p;
-  int i;
-  CURLcode cc;
-
-  /* Compile cipher list into GSKit-compatible cipher lists. */
-
-  if(!cipherlist)
-    return CURLE_OK;
-  while(is_separator(*cipherlist))     /* Skip initial separators. */
-    cipherlist++;
-  if(!*cipherlist)
-    return CURLE_OK;
-
-  /* We allocate GSKit buffers of the same size as the input string: since
-     GSKit tokens are always shorter than their cipher names, allocated buffers
-     will always be large enough to accomodate the result. */
-  i = strlen(cipherlist) + 1;
-  v2p = malloc(i);
-  if(!v2p)
-    return CURLE_OUT_OF_MEMORY;
-  v3p = malloc(i);
-  if(!v3p) {
-    free(v2p);
-    return CURLE_OUT_OF_MEMORY;
-  }
-  sslv2ciphers = v2p;
-  sslv3ciphers = v3p;
-
-  /* Process each cipher in input string. */
-  for(;;) {
-    for(clp = cipherlist; *cipherlist && !is_separator(*cipherlist);)
-      cipherlist++;
-    i = cipherlist - clp;
-    if(!i)
-      break;
-    /* Search the cipher in our table. */
-    for(ctp = ciphertable; ctp->name; ctp++)
-      if(strnequal(ctp->name, clp, i) && !ctp->name[i])
-        break;
-    if(!ctp->name)
-      failf(data, "Unknown cipher %.*s: ignored", i, clp);
-    else {
-      switch (ctp->sslver) {
-      case CURL_SSLVERSION_SSLv2:
-        strcpy(v2p, ctp->gsktoken);
-        v2p += strlen(v2p);
-        break;
-      default:
-        /* GSKit wants TLSv1 ciphers with SSLv3 ciphers. */
-        strcpy(v3p, ctp->gsktoken);
-        v3p += strlen(v3p);
-        break;
-      }
-    }
-
-   /* Advance to next cipher name or end of string. */
-    while(is_separator(*cipherlist))
-      cipherlist++;
-  }
-  *v2p = '\0';
-  *v3p = '\0';
-  cc = set_buffer(data, h, GSK_V2_CIPHER_SPECS, sslv2ciphers);
-  if(cc == CURLE_OK)
-    cc = set_buffer(data, h, GSK_V3_CIPHER_SPECS, sslv3ciphers);
-  free(sslv2ciphers);
-  free(sslv3ciphers);
-  return cc;
-}
-
-
-int Curl_gskit_init(void)
-{
-  /* No initialisation needed. */
-
-  return 1;
-}
-
-
-void Curl_gskit_cleanup(void)
-{
-  /* Nothing to do. */
-}
-
-
-static CURLcode init_environment(struct SessionHandle * data,
-                                 gsk_handle * envir, const char * appid,
-                                 const char * file, const char * label,
-                                 const char * password)
-{
-  int rc;
-  CURLcode c;
-  gsk_handle h;
-
-  /* Creates the GSKit environment. */
-
-  rc = gsk_environment_open(&h);
-  switch (rc) {
-  case GSK_OK:
-    break;
-  case GSK_INSUFFICIENT_STORAGE:
-    return CURLE_OUT_OF_MEMORY;
-  default:
-    failf(data, "gsk_environment_open(): %s", gsk_strerror(rc));
-    return CURLE_SSL_CONNECT_ERROR;
-  }
-
-  c = set_enum(data, h, GSK_SESSION_TYPE, GSK_CLIENT_SESSION);
-  if(c == CURLE_OK && appid)
-    c = set_buffer(data, h, GSK_OS400_APPLICATION_ID, appid);
-  if(c == CURLE_OK && file)
-    c = set_buffer(data, h, GSK_KEYRING_FILE, file);
-  if(c == CURLE_OK && label)
-    c = set_buffer(data, h, GSK_KEYRING_LABEL, label);
-  if(c == CURLE_OK && password)
-    c = set_buffer(data, h, GSK_KEYRING_PW, password);
-
-  if(c == CURLE_OK) {
-    /* Locate CAs, Client certificate and key according to our settings.
-       Note: this call may be blocking for some tenths of seconds. */
-    c = gskit_status(data, gsk_environment_init(h),
-                     "gsk_environment_init()", CURLE_SSL_CERTPROBLEM);
-    if(c == CURLE_OK) {
-      *envir = h;
-      return c;
-    }
-  }
-  /* Error: rollback. */
-  gsk_environment_close(&h);
-  return c;
-}
-
-
-static void cancel_async_handshake(struct connectdata * conn, int sockindex)
-{
-  struct ssl_connect_data * connssl = &conn->ssl[sockindex];
-  Qso_OverlappedIO_t cstat;
-
-  if(QsoCancelOperation(conn->sock[sockindex], 0) > 0)
-    QsoWaitForIOCompletion(connssl->iocport, &cstat, (struct timeval *) NULL);
-}
-
-
-static void close_async_handshake(struct ssl_connect_data * connssl)
-{
-  QsoDestroyIOCompletionPort(connssl->iocport);
-  connssl->iocport = -1;
-}
-
-
-static void close_one(struct ssl_connect_data * conn,
-                      struct SessionHandle * data)
-{
-  if(conn->handle) {
-    gskit_status(data, gsk_secure_soc_close(&conn->handle),
-              "gsk_secure_soc_close()", 0);
-    conn->handle = (gsk_handle) NULL;
-  }
-  if(conn->iocport >= 0)
-    close_async_handshake(conn);
-}
-
-
-static ssize_t gskit_send(struct connectdata * conn, int sockindex,
-                           const void * mem, size_t len, CURLcode * curlcode)
-{
-  struct SessionHandle * data = conn->data;
-  CURLcode cc;
-  int written;
-
-  cc = gskit_status(data,
-                    gsk_secure_soc_write(conn->ssl[sockindex].handle,
-                                         (char *) mem, (int) len, &written),
-                    "gsk_secure_soc_write()", CURLE_SEND_ERROR);
-  if(cc != CURLE_OK) {
-    *curlcode = cc;
-    written = -1;
-  }
-  return (ssize_t) written; /* number of bytes */
-}
-
-
-static ssize_t gskit_recv(struct connectdata * conn, int num, char * buf,
-                           size_t buffersize, CURLcode * curlcode)
-{
-  struct SessionHandle * data = conn->data;
-  int buffsize;
-  int nread;
-  CURLcode cc;
-
-  buffsize = buffersize > (size_t) INT_MAX? INT_MAX: (int) buffersize;
-  cc = gskit_status(data, gsk_secure_soc_read(conn->ssl[num].handle,
-                                              buf, buffsize, &nread),
-                    "gsk_secure_soc_read()", CURLE_RECV_ERROR);
-  if(cc != CURLE_OK) {
-    *curlcode = cc;
-    nread = -1;
-  }
-  return (ssize_t) nread;
-}
-
-
-static CURLcode gskit_connect_step1(struct connectdata * conn, int sockindex)
-{
-  struct SessionHandle * data = conn->data;
-  struct ssl_connect_data * connssl = &conn->ssl[sockindex];
-  gsk_handle envir;
-  CURLcode cc;
-  int rc;
-  char * keyringfile;
-  char * keyringpwd;
-  char * keyringlabel;
-  char * v2ciphers;
-  char * v3ciphers;
-  char * sni;
-  bool sslv2enable, sslv3enable, tlsv1enable;
-  long timeout;
-  Qso_OverlappedIO_t commarea;
-
-  /* Create SSL environment, start (preferably asynchronous) handshake. */
-
-  connssl->handle = (gsk_handle) NULL;
-  connssl->iocport = -1;
-
-  /* GSKit supports two ways of specifying an SSL context: either by
-   *  application identifier (that should have been defined at the system
-   *  level) or by keyring file, password and certificate label.
-   * Local certificate name (CURLOPT_SSLCERT) is used to hold either the
-   *  application identifier of the certificate label.
-   * Key password (CURLOPT_KEYPASSWD) holds the keyring password.
-   * It is not possible to have different keyrings for the CAs and the
-   *  local certificate. We thus use the CA file (CURLOPT_CAINFO) to identify
-   *  the keyring file.
-   * If no key password is given and the keyring is the system keyring,
-   *  application identifier mode is tried first, as recommended in IBM doc.
-   */
-
-  keyringfile = data->set.str[STRING_SSL_CAFILE];
-  keyringpwd = data->set.str[STRING_KEY_PASSWD];
-  keyringlabel = data->set.str[STRING_CERT];
-  envir = (gsk_handle) NULL;
-
-  if(keyringlabel && *keyringlabel && !keyringpwd &&
-      !strcmp(keyringfile, CURL_CA_BUNDLE)) {
-    /* Try application identifier mode. */
-    init_environment(data, &envir, keyringlabel, (const char *) NULL,
-                     (const char *) NULL, (const char *) NULL);
-  }
-
-  if(!envir) {
-    /* Use keyring mode. */
-    cc = init_environment(data, &envir, (const char *) NULL,
-                          keyringfile, keyringlabel, keyringpwd);
-    if(cc != CURLE_OK)
-      return cc;
-  }
-
-  /* Create secure session. */
-  cc = gskit_status(data, gsk_secure_soc_open(envir, &connssl->handle),
-                    "gsk_secure_soc_open()", CURLE_SSL_CONNECT_ERROR);
-  gsk_environment_close(&envir);
-  if(cc != CURLE_OK)
-    return cc;
-
-  /* Determine which SSL/TLS version should be enabled. */
-  sslv2enable = sslv3enable = tlsv1enable = false;
-  sni = conn->host.name;
-  switch (data->set.ssl.version) {
-  case CURL_SSLVERSION_SSLv2:
-    sslv2enable = true;
-    sni = (char *) NULL;
-    break;
-  case CURL_SSLVERSION_SSLv3:
-    sslv3enable = true;
-    sni = (char *) NULL;
-    break;
-  case CURL_SSLVERSION_TLSv1:
-    tlsv1enable = true;
-    break;
-  default:              /* CURL_SSLVERSION_DEFAULT. */
-    sslv3enable = true;
-    tlsv1enable = true;
-    break;
-  }
-
-  /* Process SNI. Ignore if not supported (on OS400 < V7R1). */
-  if(sni) {
-    rc = gsk_attribute_set_buffer(connssl->handle,
-                                  GSK_SSL_EXTN_SERVERNAME_REQUEST, sni, 0);
-    switch (rc) {
-    case GSK_OK:
-    case GSK_ATTRIBUTE_INVALID_ID:
-      break;
-    case GSK_ERROR_IO:
-      failf(data, "gsk_attribute_set_buffer() I/O error: %s", strerror(errno));
-      cc = CURLE_SSL_CONNECT_ERROR;
-      break;
-    default:
-      failf(data, "gsk_attribute_set_buffer(): %s", gsk_strerror(rc));
-      cc = CURLE_SSL_CONNECT_ERROR;
-      break;
-    }
-  }
-
-  /* Set session parameters. */
-  if(cc == CURLE_OK) {
-    /* Compute the handshake timeout. Since GSKit granularity is 1 second,
-       we round up the required value. */
-    timeout = Curl_timeleft(data, NULL, TRUE);
-    if(timeout < 0)
-      cc = CURLE_OPERATION_TIMEDOUT;
-    else
-      cc = set_numeric(data, connssl->handle, GSK_HANDSHAKE_TIMEOUT,
-                       (timeout + 999) / 1000);
-  }
-  if(cc == CURLE_OK)
-    cc = set_numeric(data, connssl->handle, GSK_FD, conn->sock[sockindex]);
-  if(cc == CURLE_OK)
-    cc = set_ciphers(data, connssl->handle);
-  if(cc == CURLE_OK)
-      cc = set_enum(data, connssl->handle, GSK_PROTOCOL_SSLV2,
-                    sslv2enable? GSK_PROTOCOL_SSLV2_ON:
-                    GSK_PROTOCOL_SSLV2_OFF);
-  if(cc == CURLE_OK)
-    cc = set_enum(data, connssl->handle, GSK_PROTOCOL_SSLV3,
-                  sslv3enable? GSK_PROTOCOL_SSLV3_ON:
-                  GSK_PROTOCOL_SSLV3_OFF);
-  if(cc == CURLE_OK)
-    cc = set_enum(data, connssl->handle, GSK_PROTOCOL_TLSV1,
-                  sslv3enable?  GSK_PROTOCOL_TLSV1_ON:
-                  GSK_PROTOCOL_TLSV1_OFF);
-  if(cc == CURLE_OK)
-    cc = set_enum(data, connssl->handle, GSK_SERVER_AUTH_TYPE,
-                  data->set.ssl.verifypeer? GSK_SERVER_AUTH_FULL:
-                  GSK_SERVER_AUTH_PASSTHRU);
-
-  if(cc == CURLE_OK) {
-    /* Start handshake. Try asynchronous first. */
-    memset(&commarea, 0, sizeof commarea);
-    connssl->iocport = QsoCreateIOCompletionPort();
-    if(connssl->iocport != -1) {
-      cc = gskit_status(data, gsk_secure_soc_startInit(connssl->handle,
-                        connssl->iocport, &commarea),
-                        "gsk_secure_soc_startInit()", CURLE_SSL_CONNECT_ERROR);
-      if(cc == CURLE_OK) {
-        connssl->connecting_state = ssl_connect_2;
-        return CURLE_OK;
-      }
-      else
-        close_async_handshake(connssl);
-    }
-    else if(errno != ENOBUFS)
-      cc = gskit_status(data, GSK_ERROR_IO, "QsoCreateIOCompletionPort()", 0);
-    else {
-      /* No more completion port available. Use synchronous IO. */
-      cc = gskit_status(data, gsk_secure_soc_init(connssl->handle),
-                       "gsk_secure_soc_init()", CURLE_SSL_CONNECT_ERROR);
-      if(cc == CURLE_OK) {
-        connssl->connecting_state = ssl_connect_3;
-        return CURLE_OK;
-      }
-    }
-  }
-
-  /* Error: rollback. */
-  close_one(connssl, data);
-  return cc;
-}
-
-
-static CURLcode gskit_connect_step2(struct connectdata * conn, int sockindex,
-                                    bool nonblocking)
-{
-  struct SessionHandle * data = conn->data;
-  struct ssl_connect_data * connssl = &conn->ssl[sockindex];
-  Qso_OverlappedIO_t cstat;
-  long timeout_ms;
-  struct timeval stmv;
-  CURLcode cc;
-
-  /* Poll or wait for end of SSL asynchronous handshake. */
-
-  for(;;) {
-    timeout_ms = nonblocking? 0: Curl_timeleft(data, NULL, TRUE);
-    if(timeout_ms < 0)
-      timeout_ms = 0;
-    stmv.tv_sec = timeout_ms / 1000;
-    stmv.tv_usec = (timeout_ms - stmv.tv_sec * 1000) * 1000;
-    switch (QsoWaitForIOCompletion(connssl->iocport, &cstat, &stmv)) {
-    case 1:             /* Operation complete. */
-      break;
-    case -1:            /* An error occurred: handshake still in progress. */
-      if(errno == EINTR) {
-        if(nonblocking)
-          return CURLE_OK;
-        continue;       /* Retry. */
-      }
-      if(errno != ETIME) {
-        failf(data, "QsoWaitForIOCompletion() I/O error: %s", strerror(errno));
-        cancel_async_handshake(conn, sockindex);
-        close_async_handshake(connssl);
-        return CURLE_SSL_CONNECT_ERROR;
-      }
-      /* FALL INTO... */
-    case 0:             /* Handshake in progress, timeout occurred. */
-      if(nonblocking)
-        return CURLE_OK;
-      cancel_async_handshake(conn, sockindex);
-      close_async_handshake(connssl);
-      return CURLE_OPERATION_TIMEDOUT;
-    }
-    break;
-  }
-  cc = gskit_status(data, cstat.returnValue, "SSL handshake",
-                    CURLE_SSL_CONNECT_ERROR);
-  if(cc == CURLE_OK)
-    connssl->connecting_state = ssl_connect_3;
-  close_async_handshake(connssl);
-  return cc;
-}
-
-
-static CURLcode gskit_connect_step3(struct connectdata * conn, int sockindex)
-{
-  struct SessionHandle * data = conn->data;
-  struct ssl_connect_data * connssl = &conn->ssl[sockindex];
-  const gsk_cert_data_elem * cdev;
-  int cdec;
-  const gsk_cert_data_elem * p;
-  const char * cert = (const char *) NULL;
-  const char * certend;
-  int i;
-  CURLcode cc;
-
-  /* SSL handshake done: gather certificate info and verify host. */
-
-  if(gskit_status(data, gsk_attribute_get_cert_info(connssl->handle,
-                                                    GSK_PARTNER_CERT_INFO,
-                                                    &cdev, &cdec),
-                  "gsk_attribute_get_cert_info()", CURLE_SSL_CONNECT_ERROR) ==
-     CURLE_OK) {
-    infof(data, "Server certificate:\n");
-    p = cdev;
-    for(i = 0; i++ < cdec; p++)
-      switch (p->cert_data_id) {
-      case CERT_BODY_DER:
-        cert = p->cert_data_p;
-        certend = cert + cdev->cert_data_l;
-        break;
-      case CERT_DN_PRINTABLE:
-        infof(data, "\t subject: %.*s\n", p->cert_data_l, p->cert_data_p);
-        break;
-      case CERT_ISSUER_DN_PRINTABLE:
-        infof(data, "\t issuer: %.*s\n", p->cert_data_l, p->cert_data_p);
-        break;
-      case CERT_VALID_FROM:
-        infof(data, "\t start date: %.*s\n", p->cert_data_l, p->cert_data_p);
-        break;
-      case CERT_VALID_TO:
-        infof(data, "\t expire date: %.*s\n", p->cert_data_l, p->cert_data_p);
-        break;
-    }
-  }
-
-  /* Verify host. */
-  cc = Curl_verifyhost(conn, cert, certend);
-  if(cc != CURLE_OK)
-    return cc;
-
-  /* The only place GSKit can get the whole CA chain is a validation
-     callback where no user data pointer is available. Therefore it's not
-     possible to copy this chain into our structures for CAINFO.
-     However the server certificate may be available, thus we can return
-     info about it. */
-  if(data->set.ssl.certinfo) {
-    if(Curl_ssl_init_certinfo(data, 1))
-      return CURLE_OUT_OF_MEMORY;
-    if(cert) {
-      cc = Curl_extract_certinfo(conn, 0, cert, certend);
-      if(cc != CURLE_OK)
-        return cc;
-    }
-  }
-
-  connssl->connecting_state = ssl_connect_done;
-  return CURLE_OK;
-}
-
-
-static CURLcode gskit_connect_common(struct connectdata * conn, int sockindex,
-                                     bool nonblocking, bool * done)
-{
-  struct SessionHandle * data = conn->data;
-  struct ssl_connect_data * connssl = &conn->ssl[sockindex];
-  long timeout_ms;
-  Qso_OverlappedIO_t cstat;
-  CURLcode cc = CURLE_OK;
-
-  *done = connssl->state == ssl_connection_complete;
-  if(*done)
-    return CURLE_OK;
-
-  /* Step 1: create session, start handshake. */
-  if(connssl->connecting_state == ssl_connect_1) {
-    /* check allowed time left */
-    timeout_ms = Curl_timeleft(data, NULL, TRUE);
-
-    if(timeout_ms < 0) {
-      /* no need to continue if time already is up */
-      failf(data, "SSL connection timeout");
-      cc = CURLE_OPERATION_TIMEDOUT;
-    }
-    else
-      cc = gskit_connect_step1(conn, sockindex);
-  }
-
-  /* Step 2: check if handshake is over. */
-  if(cc == CURLE_OK && connssl->connecting_state == ssl_connect_2) {
-    /* check allowed time left */
-    timeout_ms = Curl_timeleft(data, NULL, TRUE);
-
-    if(timeout_ms < 0) {
-      /* no need to continue if time already is up */
-      failf(data, "SSL connection timeout");
-      cc = CURLE_OPERATION_TIMEDOUT;
-    }
-    else
-      cc = gskit_connect_step2(conn, sockindex, nonblocking);
-  }
-
-  /* Step 3: gather certificate info, verify host. */
-  if(cc == CURLE_OK && connssl->connecting_state == ssl_connect_3)
-    cc = gskit_connect_step3(conn, sockindex);
-
-  if(cc != CURLE_OK)
-    close_one(connssl, data);
-  else if(connssl->connecting_state == ssl_connect_done) {
-    connssl->state = ssl_connection_complete;
-    connssl->connecting_state = ssl_connect_1;
-    conn->recv[sockindex] = gskit_recv;
-    conn->send[sockindex] = gskit_send;
-    *done = TRUE;
-  }
-
-  return cc;
-}
-
-
-CURLcode Curl_gskit_connect_nonblocking(struct connectdata * conn,
-                                        int sockindex,
-                                        bool * done)
-{
-  CURLcode cc;
-
-  cc = gskit_connect_common(conn, sockindex, TRUE, done);
-  if(*done || cc != CURLE_OK)
-    conn->ssl[sockindex].connecting_state = ssl_connect_1;
-  return cc;
-}
-
-
-CURLcode Curl_gskit_connect(struct connectdata * conn, int sockindex)
-{
-  CURLcode retcode;
-  bool done;
-
-  conn->ssl[sockindex].connecting_state = ssl_connect_1;
-  retcode = gskit_connect_common(conn, sockindex, FALSE, &done);
-  if(retcode)
-    return retcode;
-
-  DEBUGASSERT(done);
-
-  return CURLE_OK;
-}
-
-
-void Curl_gskit_close(struct connectdata * conn, int sockindex)
-{
-  struct SessionHandle * data = conn->data;
-  struct ssl_connect_data * connssl = &conn->ssl[sockindex];
-
-  if(connssl->use)
-    close_one(connssl, data);
-}
-
-
-int Curl_gskit_close_all(struct SessionHandle * data)
-{
-  /* Unimplemented. */
-  (void) data;
-  return 0;
-}
-
-
-int Curl_gskit_shutdown(struct connectdata * conn, int sockindex)
-{
-  struct ssl_connect_data * connssl = &conn->ssl[sockindex];
-  struct SessionHandle * data = conn->data;
-  ssize_t nread;
-  int what;
-  int rc;
-  char buf[120];
-
-  if(!connssl->handle)
-    return 0;
-
-  if(data->set.ftp_ccc != CURLFTPSSL_CCC_ACTIVE)
-    return 0;
-
-  close_one(connssl, data);
-  rc = 0;
-  what = Curl_socket_ready(conn->sock[sockindex],
-                           CURL_SOCKET_BAD, SSL_SHUTDOWN_TIMEOUT);
-
-  for(;;) {
-    if(what < 0) {
-      /* anything that gets here is fatally bad */
-      failf(data, "select/poll on SSL socket, errno: %d", SOCKERRNO);
-      rc = -1;
-      break;
-    }
-
-    if(!what) {                                /* timeout */
-      failf(data, "SSL shutdown timeout");
-      break;
-    }
-
-    /* Something to read, let's do it and hope that it is the close
-       notify alert from the server. No way to gsk_secure_soc_read() now, so
-       use read(). */
-
-    nread = read(conn->sock[sockindex], buf, sizeof(buf));
-
-    if(nread < 0) {
-      failf(data, "read: %s", strerror(errno));
-      rc = -1;
-    }
-
-    if(nread <= 0)
-      break;
-
-    what = Curl_socket_ready(conn->sock[sockindex], CURL_SOCKET_BAD, 0);
-  }
-
-  return rc;
-}
-
-
-size_t Curl_gskit_version(char * buffer, size_t size)
-{
-  strncpy(buffer, "GSKit", size);
-  return strlen(buffer);
-}
-
-
-int Curl_gskit_check_cxn(struct connectdata * cxn)
-{
-  int err;
-  int errlen;
-
-  /* The only thing that can be tested here is at the socket level. */
-
-  if(!cxn->ssl[FIRSTSOCKET].handle)
-    return 0; /* connection has been closed */
-
-  err = 0;
-  errlen = sizeof err;
-
-  if(getsockopt(cxn->sock[FIRSTSOCKET], SOL_SOCKET, SO_ERROR,
-                 (unsigned char *) &err, &errlen) ||
-     errlen != sizeof err || err)
-    return 0; /* connection has been closed */
-
-  return -1;  /* connection status unknown */
-}
-
-#endif /* USE_GSKIT */
index 8151b67..3cf8004 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -75,7 +75,7 @@ CURLcode Curl_addrinfo_callback(struct connectdata *conn,
                                 struct Curl_addrinfo *ai)
 {
   struct Curl_dns_entry *dns = NULL;
                                 struct Curl_addrinfo *ai)
 {
   struct Curl_dns_entry *dns = NULL;
-  CURLcode rc = CURLE_OK;
+  CURLcode result = CURLE_OK;
 
   conn->async.status = status;
 
 
   conn->async.status = status;
 
@@ -92,14 +92,14 @@ CURLcode Curl_addrinfo_callback(struct connectdata *conn,
       if(!dns) {
         /* failed to store, cleanup and return error */
         Curl_freeaddrinfo(ai);
       if(!dns) {
         /* failed to store, cleanup and return error */
         Curl_freeaddrinfo(ai);
-        rc = CURLE_OUT_OF_MEMORY;
+        result = CURLE_OUT_OF_MEMORY;
       }
 
       if(data->share)
         Curl_share_unlock(data, CURL_LOCK_DATA_DNS);
     }
     else {
       }
 
       if(data->share)
         Curl_share_unlock(data, CURL_LOCK_DATA_DNS);
     }
     else {
-      rc = CURLE_OUT_OF_MEMORY;
+      result = CURLE_OUT_OF_MEMORY;
     }
   }
 
     }
   }
 
@@ -110,9 +110,9 @@ CURLcode Curl_addrinfo_callback(struct connectdata *conn,
     async struct */
   conn->async.done = TRUE;
 
     async struct */
   conn->async.done = TRUE;
 
-  /* ipv4: The input hostent struct will be freed by ares when we return from
+  /* IPv4: The input hostent struct will be freed by ares when we return from
      this function */
      this function */
-  return rc;
+  return result;
 }
 
 /* Call this function after Curl_connect() has returned async=TRUE and
 }
 
 /* Call this function after Curl_connect() has returned async=TRUE and
index abd1fa0..21af8fa 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 
 #include "curl_setup.h"
 
 
 #include "curl_setup.h"
 
-#if defined(USE_SSLEAY) || defined(USE_AXTLS) || defined(USE_QSOSSL) || \
-    defined(USE_GSKIT)
+#if defined(USE_SSLEAY) || defined(USE_AXTLS) || defined(USE_GSKIT)
 /* these backends use functions from this file */
 
 /* these backends use functions from this file */
 
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+
 #include "hostcheck.h"
 #include "rawstr.h"
 #include "hostcheck.h"
 #include "rawstr.h"
+#include "inet_pton.h"
+
+#include "curl_memory.h"
+/* The last #include file should be: */
+#include "memdebug.h"
 
 /*
  * Match a hostname against a wildcard pattern.
 
 /*
  * Match a hostname against a wildcard pattern.
  *
  * We use the matching rule described in RFC6125, section 6.4.3.
  * http://tools.ietf.org/html/rfc6125#section-6.4.3
  *
  * We use the matching rule described in RFC6125, section 6.4.3.
  * http://tools.ietf.org/html/rfc6125#section-6.4.3
+ *
+ * In addition: ignore trailing dots in the host names and wildcards, so that
+ * the names are used normalized. This is what the browsers do.
+ *
+ * Do not allow wildcard matching on IP numbers. There are apparently
+ * certificates being used with an IP address in the CN field, thus making no
+ * apparent distinction between a name and an IP. We need to detect the use of
+ * an IP address and not wildcard match on such names.
+ *
+ * NOTE: hostmatch() gets called with copied buffers so that it can modify the
+ * contents at will.
  */
 
  */
 
-static int hostmatch(const char *hostname, const char *pattern)
+static int hostmatch(char *hostname, char *pattern)
 {
   const char *pattern_label_end, *pattern_wildcard, *hostname_label_end;
   int wildcard_enabled;
   size_t prefixlen, suffixlen;
 {
   const char *pattern_label_end, *pattern_wildcard, *hostname_label_end;
   int wildcard_enabled;
   size_t prefixlen, suffixlen;
+  struct in_addr ignored;
+#ifdef ENABLE_IPV6
+  struct sockaddr_in6 si6;
+#endif
+
+  /* normalize pattern and hostname by stripping off trailing dots */
+  size_t len = strlen(hostname);
+  if(hostname[len-1]=='.')
+    hostname[len-1]=0;
+  len = strlen(pattern);
+  if(pattern[len-1]=='.')
+    pattern[len-1]=0;
+
   pattern_wildcard = strchr(pattern, '*');
   if(pattern_wildcard == NULL)
     return Curl_raw_equal(pattern, hostname) ?
       CURL_HOST_MATCH : CURL_HOST_NOMATCH;
 
   pattern_wildcard = strchr(pattern, '*');
   if(pattern_wildcard == NULL)
     return Curl_raw_equal(pattern, hostname) ?
       CURL_HOST_MATCH : CURL_HOST_NOMATCH;
 
+  /* detect IP address as hostname and fail the match if so */
+  if(Curl_inet_pton(AF_INET, hostname, &ignored) > 0)
+    return CURL_HOST_NOMATCH;
+#ifdef ENABLE_IPV6
+  else if(Curl_inet_pton(AF_INET6, hostname, &si6.sin6_addr) > 0)
+    return CURL_HOST_NOMATCH;
+#endif
+
   /* We require at least 2 dots in pattern to avoid too wide wildcard
      match. */
   wildcard_enabled = 1;
   /* We require at least 2 dots in pattern to avoid too wide wildcard
      match. */
   wildcard_enabled = 1;
@@ -82,16 +122,26 @@ static int hostmatch(const char *hostname, const char *pattern)
 
 int Curl_cert_hostcheck(const char *match_pattern, const char *hostname)
 {
 
 int Curl_cert_hostcheck(const char *match_pattern, const char *hostname)
 {
+  char *matchp;
+  char *hostp;
+  int res = 0;
   if(!match_pattern || !*match_pattern ||
       !hostname || !*hostname) /* sanity check */
   if(!match_pattern || !*match_pattern ||
       !hostname || !*hostname) /* sanity check */
-    return 0;
-
-  if(Curl_raw_equal(hostname, match_pattern)) /* trivial case */
-    return 1;
+    ;
+  else {
+    matchp = strdup(match_pattern);
+    if(matchp) {
+      hostp = strdup(hostname);
+      if(hostp) {
+        if(hostmatch(hostp, matchp) == CURL_HOST_MATCH)
+          res= 1;
+        free(hostp);
+      }
+      free(matchp);
+    }
+  }
 
 
-  if(hostmatch(hostname,match_pattern) == CURL_HOST_MATCH)
-    return 1;
-  return 0;
+  return res;
 }
 
 }
 
-#endif /* SSLEAY or AXTLS or QSOSSL or GSKIT */
+#endif /* SSLEAY or AXTLS or GSKIT */
index f37b492..2ea0ab6 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -98,8 +98,8 @@
  * hostip.c   - method-independent resolver functions and utility functions
  * hostasyn.c - functions for asynchronous name resolves
  * hostsyn.c  - functions for synchronous name resolves
  * hostip.c   - method-independent resolver functions and utility functions
  * hostasyn.c - functions for asynchronous name resolves
  * hostsyn.c  - functions for synchronous name resolves
- * hostip4.c  - ipv4-specific functions
- * hostip6.c  - ipv6-specific functions
+ * hostip4.c  - IPv4 specific functions
+ * hostip6.c  - IPv6 specific functions
  *
  * The two asynchronous name resolver backends are implemented in:
  * asyn-ares.c   - functions for ares-using name resolves
  *
  * The two asynchronous name resolver backends are implemented in:
  * asyn-ares.c   - functions for ares-using name resolves
@@ -237,7 +237,7 @@ hostcache_timestamp_remove(void *datap, void *hc)
     (struct hostcache_prune_data *) datap;
   struct Curl_dns_entry *c = (struct Curl_dns_entry *) hc;
 
     (struct hostcache_prune_data *) datap;
   struct Curl_dns_entry *c = (struct Curl_dns_entry *) hc;
 
-  return (data->now - c->timestamp >= data->cache_timeout);
+  return !c->inuse && (data->now - c->timestamp >= data->cache_timeout);
 }
 
 /*
 }
 
 /*
@@ -291,9 +291,10 @@ remove_entry_if_stale(struct SessionHandle *data, struct Curl_dns_entry *dns)
 {
   struct hostcache_prune_data user;
 
 {
   struct hostcache_prune_data user;
 
-  if(!dns || (data->set.dns_cache_timeout == -1) || !data->dns.hostcache)
-    /* cache forever means never prune, and NULL hostcache means
-       we can't do it */
+  if(!dns || (data->set.dns_cache_timeout == -1) || !data->dns.hostcache ||
+     dns->inuse)
+    /* cache forever means never prune, and NULL hostcache means we can't do
+       it, if it still is in use then we leave it */
     return 0;
 
   time(&user.now);
     return 0;
 
   time(&user.now);
@@ -317,6 +318,51 @@ remove_entry_if_stale(struct SessionHandle *data, struct Curl_dns_entry *dns)
 sigjmp_buf curl_jmpenv;
 #endif
 
 sigjmp_buf curl_jmpenv;
 #endif
 
+/*
+ * Curl_fetch_addr() fetches a 'Curl_dns_entry' already in the DNS cache.
+ *
+ * Curl_resolv() checks initially and multi_runsingle() checks each time
+ * it discovers the handle in the state WAITRESOLVE whether the hostname
+ * has already been resolved and the address has already been stored in
+ * the DNS cache. This short circuits waiting for a lot of pending
+ * lookups for the same hostname requested by different handles.
+ *
+ * Returns the Curl_dns_entry entry pointer or NULL if not in the cache.
+ */
+struct Curl_dns_entry *
+Curl_fetch_addr(struct connectdata *conn,
+                const char *hostname,
+                int port)
+{
+  char *entry_id = NULL;
+  struct Curl_dns_entry *dns = NULL;
+  size_t entry_len;
+  struct SessionHandle *data = conn->data;
+  int stale;
+
+  /* Create an entry id, based upon the hostname and port */
+  entry_id = create_hostcache_id(hostname, port);
+  /* If we can't create the entry id, fail */
+  if(!entry_id)
+    return dns;
+
+  entry_len = strlen(entry_id);
+
+  /* See if its already in our dns cache */
+  dns = Curl_hash_pick(data->dns.hostcache, entry_id, entry_len+1);
+
+  /* free the allocated entry_id again */
+  free(entry_id);
+
+  /* See whether the returned entry is stale. Done before we release lock */
+  stale = remove_entry_if_stale(data, dns);
+  if(stale) {
+    infof(data, "Hostname in DNS cache was stale, zapped\n");
+    dns = NULL; /* the memory deallocation is being handled by the hash */
+  }
+
+  return dns;
+}
 
 /*
  * Curl_cache_addr() stores a 'Curl_addrinfo' struct in the DNS cache.
 
 /*
  * Curl_cache_addr() stores a 'Curl_addrinfo' struct in the DNS cache.
@@ -402,37 +448,20 @@ int Curl_resolv(struct connectdata *conn,
                 int port,
                 struct Curl_dns_entry **entry)
 {
                 int port,
                 struct Curl_dns_entry **entry)
 {
-  char *entry_id = NULL;
   struct Curl_dns_entry *dns = NULL;
   struct Curl_dns_entry *dns = NULL;
-  size_t entry_len;
   struct SessionHandle *data = conn->data;
   CURLcode result;
   int rc = CURLRESOLV_ERROR; /* default to failure */
 
   *entry = NULL;
 
   struct SessionHandle *data = conn->data;
   CURLcode result;
   int rc = CURLRESOLV_ERROR; /* default to failure */
 
   *entry = NULL;
 
-  /* Create an entry id, based upon the hostname and port */
-  entry_id = create_hostcache_id(hostname, port);
-  /* If we can't create the entry id, fail */
-  if(!entry_id)
-    return rc;
-
-  entry_len = strlen(entry_id);
-
   if(data->share)
     Curl_share_lock(data, CURL_LOCK_DATA_DNS, CURL_LOCK_ACCESS_SINGLE);
 
   if(data->share)
     Curl_share_lock(data, CURL_LOCK_DATA_DNS, CURL_LOCK_ACCESS_SINGLE);
 
-  /* See if its already in our dns cache */
-  dns = Curl_hash_pick(data->dns.hostcache, entry_id, entry_len+1);
-
-  /* free the allocated entry_id again */
-  free(entry_id);
-
-  /* See whether the returned entry is stale. Done before we release lock */
-  if(remove_entry_if_stale(data, dns))
-    dns = NULL; /* the memory deallocation is being handled by the hash */
+  dns = Curl_fetch_addr(conn, hostname, port);
 
   if(dns) {
 
   if(dns) {
+    infof(data, "Hostname %s was found in DNS cache\n", hostname);
     dns->inuse++; /* we use it! */
     rc = CURLRESOLV_RESOLVED;
   }
     dns->inuse++; /* we use it! */
     rc = CURLRESOLV_RESOLVED;
   }
index a38f732..e1e880e 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -92,7 +92,7 @@ int Curl_resolv_timeout(struct connectdata *conn, const char *hostname,
 
 #ifdef CURLRES_IPV6
 /*
 
 #ifdef CURLRES_IPV6
 /*
- * Curl_ipv6works() returns TRUE if ipv6 seems to work.
+ * Curl_ipv6works() returns TRUE if IPv6 seems to work.
  */
 bool Curl_ipv6works(void);
 #else
  */
 bool Curl_ipv6works(void);
 #else
@@ -172,6 +172,15 @@ const char *Curl_printable_address(const Curl_addrinfo *ip,
                                    char *buf, size_t bufsize);
 
 /*
                                    char *buf, size_t bufsize);
 
 /*
+ * Curl_fetch_addr() fetches a 'Curl_dns_entry' already in the DNS cache.
+ *
+ * Returns the Curl_dns_entry entry pointer or NULL if not in the cache.
+ */
+struct Curl_dns_entry *
+Curl_fetch_addr(struct connectdata *conn,
+                const char *hostname,
+                int port);
+/*
  * Curl_cache_addr() stores a 'Curl_addrinfo' struct in the DNS cache.
  *
  * Returns the Curl_dns_entry entry pointer or NULL if the storage failed.
  * Curl_cache_addr() stores a 'Curl_addrinfo' struct in the DNS cache.
  *
  * Returns the Curl_dns_entry entry pointer or NULL if the storage failed.
@@ -201,6 +210,27 @@ extern sigjmp_buf curl_jmpenv;
 CURLcode Curl_set_dns_servers(struct SessionHandle *data, char *servers);
 
 /*
 CURLcode Curl_set_dns_servers(struct SessionHandle *data, char *servers);
 
 /*
+ * Function provided by the resolver backend to set
+ * outgoing interface to use for DNS requests
+ */
+CURLcode Curl_set_dns_interface(struct SessionHandle *data,
+                                const char *interf);
+
+/*
+ * Function provided by the resolver backend to set
+ * local IPv4 address to use as source address for DNS requests
+ */
+CURLcode Curl_set_dns_local_ip4(struct SessionHandle *data,
+                                const char *local_ip4);
+
+/*
+ * Function provided by the resolver backend to set
+ * local IPv6 address to use as source address for DNS requests
+ */
+CURLcode Curl_set_dns_local_ip6(struct SessionHandle *data,
+                                const char *local_ip6);
+
+/*
  * Clean off entries from the cache
  */
 void Curl_hostcache_clean(struct SessionHandle *data, struct curl_hash *hash);
  * Clean off entries from the cache
  */
 void Curl_hostcache_clean(struct SessionHandle *data, struct curl_hash *hash);
index 3a38b32..3a05d10 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -57,9 +57,9 @@
 #include "memdebug.h"
 
 /***********************************************************************
 #include "memdebug.h"
 
 /***********************************************************************
- * Only for plain-ipv4 builds
+ * Only for plain IPv4 builds
  **********************************************************************/
  **********************************************************************/
-#ifdef CURLRES_IPV4 /* plain ipv4 code coming up */
+#ifdef CURLRES_IPV4 /* plain IPv4 code coming up */
 /*
  * Curl_ipvalid() checks what CURL_IPRESOLVE_* requirements that might've
  * been set and returns TRUE if they are OK.
 /*
  * Curl_ipvalid() checks what CURL_IPRESOLVE_* requirements that might've
  * been set and returns TRUE if they are OK.
@@ -67,7 +67,7 @@
 bool Curl_ipvalid(struct connectdata *conn)
 {
   if(conn->ip_version == CURL_IPRESOLVE_V6)
 bool Curl_ipvalid(struct connectdata *conn)
 {
   if(conn->ip_version == CURL_IPRESOLVE_V6)
-    /* an ipv6 address was requested and we can't get/use one */
+    /* An IPv6 address was requested and we can't get/use one */
     return FALSE;
 
   return TRUE; /* OK, proceed */
     return FALSE;
 
   return TRUE; /* OK, proceed */
@@ -76,7 +76,7 @@ bool Curl_ipvalid(struct connectdata *conn)
 #ifdef CURLRES_SYNCH
 
 /*
 #ifdef CURLRES_SYNCH
 
 /*
- * Curl_getaddrinfo() - the ipv4 synchronous version.
+ * Curl_getaddrinfo() - the IPv4 synchronous version.
  *
  * The original code to this function was from the Dancer source code, written
  * by Bjorn Reese, it has since been patched and modified considerably.
  *
  * The original code to this function was from the Dancer source code, written
  * by Bjorn Reese, it has since been patched and modified considerably.
@@ -140,7 +140,7 @@ Curl_addrinfo *Curl_ipv4_resolve_r(const char *hostname,
 #if defined(HAVE_GETADDRINFO_THREADSAFE)
   else {
     struct addrinfo hints;
 #if defined(HAVE_GETADDRINFO_THREADSAFE)
   else {
     struct addrinfo hints;
-    char sbuf[NI_MAXSERV];
+    char sbuf[12];
     char *sbufptr = NULL;
 
     memset(&hints, 0, sizeof(hints));
     char *sbufptr = NULL;
 
     memset(&hints, 0, sizeof(hints));
index c42760a..bb72391 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -58,7 +58,7 @@
 #include "memdebug.h"
 
 /***********************************************************************
 #include "memdebug.h"
 
 /***********************************************************************
- * Only for ipv6-enabled builds
+ * Only for IPv6-enabled builds
  **********************************************************************/
 #ifdef CURLRES_IPV6
 
  **********************************************************************/
 #ifdef CURLRES_IPV6
 
@@ -97,7 +97,7 @@ int curl_dogetnameinfo(GETNAMEINFO_QUAL_ARG1 GETNAMEINFO_TYPE_ARG1 sa,
 #endif /* defined(CURLDEBUG) && defined(HAVE_GETNAMEINFO) */
 
 /*
 #endif /* defined(CURLDEBUG) && defined(HAVE_GETNAMEINFO) */
 
 /*
- * Curl_ipv6works() returns TRUE if ipv6 seems to work.
+ * Curl_ipv6works() returns TRUE if IPv6 seems to work.
  */
 bool Curl_ipv6works(void)
 {
  */
 bool Curl_ipv6works(void)
 {
@@ -109,7 +109,7 @@ bool Curl_ipv6works(void)
     /* probe to see if we have a working IPv6 stack */
     curl_socket_t s = socket(PF_INET6, SOCK_DGRAM, 0);
     if(s == CURL_SOCKET_BAD)
     /* probe to see if we have a working IPv6 stack */
     curl_socket_t s = socket(PF_INET6, SOCK_DGRAM, 0);
     if(s == CURL_SOCKET_BAD)
-      /* an ipv6 address was requested but we can't get/use one */
+      /* an IPv6 address was requested but we can't get/use one */
       ipv6_works = 0;
     else {
       ipv6_works = 1;
       ipv6_works = 0;
     else {
       ipv6_works = 1;
@@ -152,7 +152,7 @@ static void dump_addrinfo(struct connectdata *conn, const Curl_addrinfo *ai)
 #endif
 
 /*
 #endif
 
 /*
- * Curl_getaddrinfo() when built ipv6-enabled (non-threading and
+ * Curl_getaddrinfo() when built IPv6-enabled (non-threading and
  * non-ares version).
  *
  * Returns name information about the given hostname and port number. If
  * non-ares version).
  *
  * Returns name information about the given hostname and port number. If
@@ -168,7 +168,7 @@ Curl_addrinfo *Curl_getaddrinfo(struct connectdata *conn,
   struct addrinfo hints;
   Curl_addrinfo *res;
   int error;
   struct addrinfo hints;
   Curl_addrinfo *res;
   int error;
-  char sbuf[NI_MAXSERV];
+  char sbuf[12];
   char *sbufptr = NULL;
   char addrbuf[128];
   int pf;
   char *sbufptr = NULL;
   char addrbuf[128];
   int pf;
@@ -192,7 +192,7 @@ Curl_addrinfo *Curl_getaddrinfo(struct connectdata *conn,
   }
 
   if((pf != PF_INET) && !Curl_ipv6works())
   }
 
   if((pf != PF_INET) && !Curl_ipv6works())
-    /* the stack seems to be a non-ipv6 one */
+    /* The stack seems to be a non-IPv6 one */
     pf = PF_INET;
 
   memset(&hints, 0, sizeof(hints));
     pf = PF_INET;
 
   memset(&hints, 0, sizeof(hints));
index 65a4035..4ad3c63 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -72,4 +72,40 @@ CURLcode Curl_set_dns_servers(struct SessionHandle *data,
 
 }
 
 
 }
 
+/*
+ * Function provided by the resolver backend to set
+ * outgoing interface to use for DNS requests
+ */
+CURLcode Curl_set_dns_interface(struct SessionHandle *data,
+                                const char *interf)
+{
+  (void)data;
+  (void)interf;
+  return CURLE_NOT_BUILT_IN;
+}
+
+/*
+ * Function provided by the resolver backend to set
+ * local IPv4 address to use as source address for DNS requests
+ */
+CURLcode Curl_set_dns_local_ip4(struct SessionHandle *data,
+                                const char *local_ip4)
+{
+  (void)data;
+  (void)local_ip4;
+  return CURLE_NOT_BUILT_IN;
+}
+
+/*
+ * Function provided by the resolver backend to set
+ * local IPv6 address to use as source address for DNS requests
+ */
+CURLcode Curl_set_dns_local_ip6(struct SessionHandle *data,
+                                const char *local_ip6)
+{
+  (void)data;
+  (void)local_ip6;
+  return CURLE_NOT_BUILT_IN;
+}
+
 #endif /* truly sync */
 #endif /* truly sync */
index f4b7a48..ee0a9a4 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -54,7 +54,7 @@
 #include "curl_base64.h"
 #include "cookie.h"
 #include "strequal.h"
 #include "curl_base64.h"
 #include "cookie.h"
 #include "strequal.h"
-#include "sslgen.h"
+#include "vtls/vtls.h"
 #include "http_digest.h"
 #include "curl_ntlm.h"
 #include "curl_ntlm_wb.h"
 #include "http_digest.h"
 #include "curl_ntlm.h"
 #include "curl_ntlm_wb.h"
@@ -75,6 +75,8 @@
 #include "non-ascii.h"
 #include "bundles.h"
 #include "pipeline.h"
 #include "non-ascii.h"
 #include "bundles.h"
 #include "pipeline.h"
+#include "http2.h"
+#include "connect.h"
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
@@ -105,7 +107,7 @@ static int https_getsock(struct connectdata *conn,
  */
 const struct Curl_handler Curl_handler_http = {
   "HTTP",                               /* scheme */
  */
 const struct Curl_handler Curl_handler_http = {
   "HTTP",                               /* scheme */
-  ZERO_NULL,                            /* setup_connection */
+  Curl_http_setup_conn,                 /* setup_connection */
   Curl_http,                            /* do_it */
   Curl_http_done,                       /* done */
   ZERO_NULL,                            /* do_more */
   Curl_http,                            /* do_it */
   Curl_http_done,                       /* done */
   ZERO_NULL,                            /* do_more */
@@ -120,7 +122,7 @@ const struct Curl_handler Curl_handler_http = {
   ZERO_NULL,                            /* readwrite */
   PORT_HTTP,                            /* defport */
   CURLPROTO_HTTP,                       /* protocol */
   ZERO_NULL,                            /* readwrite */
   PORT_HTTP,                            /* defport */
   CURLPROTO_HTTP,                       /* protocol */
-  PROTOPT_NONE                          /* flags */
+  PROTOPT_CREDSPERREQUEST               /* flags */
 };
 
 #ifdef USE_SSL
 };
 
 #ifdef USE_SSL
@@ -129,7 +131,7 @@ const struct Curl_handler Curl_handler_http = {
  */
 const struct Curl_handler Curl_handler_https = {
   "HTTPS",                              /* scheme */
  */
 const struct Curl_handler Curl_handler_https = {
   "HTTPS",                              /* scheme */
-  ZERO_NULL,                            /* setup_connection */
+  Curl_http_setup_conn,                 /* setup_connection */
   Curl_http,                            /* do_it */
   Curl_http_done,                       /* done */
   ZERO_NULL,                            /* do_more */
   Curl_http,                            /* do_it */
   Curl_http_done,                       /* done */
   ZERO_NULL,                            /* do_more */
@@ -143,24 +145,65 @@ const struct Curl_handler Curl_handler_https = {
   ZERO_NULL,                            /* disconnect */
   ZERO_NULL,                            /* readwrite */
   PORT_HTTPS,                           /* defport */
   ZERO_NULL,                            /* disconnect */
   ZERO_NULL,                            /* readwrite */
   PORT_HTTPS,                           /* defport */
-  CURLPROTO_HTTP | CURLPROTO_HTTPS,     /* protocol */
-  PROTOPT_SSL                           /* flags */
+  CURLPROTO_HTTPS,                      /* protocol */
+  PROTOPT_SSL | PROTOPT_CREDSPERREQUEST /* flags */
 };
 #endif
 
 
 };
 #endif
 
 
+CURLcode Curl_http_setup_conn(struct connectdata *conn)
+{
+  /* allocate the HTTP-specific struct for the SessionHandle, only to survive
+     during this request */
+  DEBUGASSERT(conn->data->req.protop == NULL);
+
+  conn->data->req.protop = calloc(1, sizeof(struct HTTP));
+  if(!conn->data->req.protop)
+    return CURLE_OUT_OF_MEMORY;
+
+  return CURLE_OK;
+}
+
 /*
  * checkheaders() checks the linked list of custom HTTP headers for a
  * particular header (prefix).
  *
  * Returns a pointer to the first matching header or NULL if none matched.
  */
 /*
  * checkheaders() checks the linked list of custom HTTP headers for a
  * particular header (prefix).
  *
  * Returns a pointer to the first matching header or NULL if none matched.
  */
-char *Curl_checkheaders(struct SessionHandle *data, const char *thisheader)
+char *Curl_checkheaders(const struct connectdata *conn,
+                        const char *thisheader)
 {
   struct curl_slist *head;
   size_t thislen = strlen(thisheader);
 {
   struct curl_slist *head;
   size_t thislen = strlen(thisheader);
+  struct SessionHandle *data = conn->data;
 
 
-  for(head = data->set.headers; head; head=head->next) {
+  for(head = data->set.headers;head; head=head->next) {
+    if(Curl_raw_nequal(head->data, thisheader, thislen))
+      return head->data;
+  }
+  return NULL;
+}
+
+/*
+ * checkProxyHeaders() checks the linked list of custom proxy headers
+ * if proxy headers are not available, then it will lookup into http header
+ * link list
+ *
+ * It takes a connectdata struct as input instead of the SessionHandle simply
+ * to know if this is a proxy request or not, as it then might check a
+ * different header list.
+ *
+ */
+char *Curl_checkProxyheaders(const struct connectdata *conn,
+                             const char *thisheader)
+{
+  struct curl_slist *head;
+  size_t thislen = strlen(thisheader);
+  struct SessionHandle *data = conn->data;
+
+  for(head = (conn->bits.proxy && data->set.sep_headers)?
+        data->set.proxyheaders:data->set.headers;
+      head; head=head->next) {
     if(Curl_raw_nequal(head->data, thisheader, thislen))
       return head->data;
   }
     if(Curl_raw_nequal(head->data, thisheader, thislen))
       return head->data;
   }
@@ -173,25 +216,25 @@ char *Curl_checkheaders(struct SessionHandle *data, const char *thisheader)
  * case of allocation failure. Returns an empty string if the header value
  * consists entirely of whitespace.
  */
  * case of allocation failure. Returns an empty string if the header value
  * consists entirely of whitespace.
  */
-static char *copy_header_value(const char *h)
+char *Curl_copy_header_value(const char *header)
 {
   const char *start;
   const char *end;
   char *value;
   size_t len;
 
 {
   const char *start;
   const char *end;
   char *value;
   size_t len;
 
-  DEBUGASSERT(h);
+  DEBUGASSERT(header);
 
   /* Find the end of the header name */
 
   /* Find the end of the header name */
-  while(*h && (*h != ':'))
-    ++h;
+  while(*header && (*header != ':'))
+    ++header;
 
 
-  if(*h)
+  if(*header)
     /* Skip over colon */
     /* Skip over colon */
-    ++h;
+    ++header;
 
   /* Find the first non-space letter */
 
   /* Find the first non-space letter */
-  start = h;
+  start = header;
   while(*start && ISSPACE(*start))
     start++;
 
   while(*start && ISSPACE(*start))
     start++;
 
@@ -210,7 +253,7 @@ static char *copy_header_value(const char *h)
     end--;
 
   /* get length of the type */
     end--;
 
   /* get length of the type */
-  len = end-start+1;
+  len = end - start + 1;
 
   value = malloc(len + 1);
   if(!value)
 
   value = malloc(len + 1);
   if(!value)
@@ -236,7 +279,7 @@ static CURLcode http_output_basic(struct connectdata *conn, bool proxy)
   char **userp;
   const char *user;
   const char *pwd;
   char **userp;
   const char *user;
   const char *pwd;
-  CURLcode error;
+  CURLcode result;
 
   if(proxy) {
     userp = &conn->allocptr.proxyuserpwd;
 
   if(proxy) {
     userp = &conn->allocptr.proxyuserpwd;
@@ -251,11 +294,11 @@ static CURLcode http_output_basic(struct connectdata *conn, bool proxy)
 
   snprintf(data->state.buffer, sizeof(data->state.buffer), "%s:%s", user, pwd);
 
 
   snprintf(data->state.buffer, sizeof(data->state.buffer), "%s:%s", user, pwd);
 
-  error = Curl_base64_encode(data,
-                             data->state.buffer, strlen(data->state.buffer),
-                             &authorization, &size);
-  if(error)
-    return error;
+  result = Curl_base64_encode(data,
+                              data->state.buffer, strlen(data->state.buffer),
+                              &authorization, &size);
+  if(result)
+    return result;
 
   if(!authorization)
     return CURLE_REMOTE_ACCESS_DENIED;
 
   if(!authorization)
     return CURLE_REMOTE_ACCESS_DENIED;
@@ -285,8 +328,8 @@ static bool pickoneauth(struct auth *pick)
 
   /* The order of these checks is highly relevant, as this will be the order
      of preference in case of the existence of multiple accepted types. */
 
   /* The order of these checks is highly relevant, as this will be the order
      of preference in case of the existence of multiple accepted types. */
-  if(avail & CURLAUTH_GSSNEGOTIATE)
-    pick->picked = CURLAUTH_GSSNEGOTIATE;
+  if(avail & CURLAUTH_NEGOTIATE)
+    pick->picked = CURLAUTH_NEGOTIATE;
   else if(avail & CURLAUTH_DIGEST)
     pick->picked = CURLAUTH_DIGEST;
   else if(avail & CURLAUTH_NTLM)
   else if(avail & CURLAUTH_DIGEST)
     pick->picked = CURLAUTH_DIGEST;
   else if(avail & CURLAUTH_NTLM)
@@ -304,6 +347,82 @@ static bool pickoneauth(struct auth *pick)
   return picked;
 }
 
   return picked;
 }
 
+/* whether to complete request (for authentication) in current connection */
+static bool complete_request(struct connectdata *conn,
+                             curl_off_t remaining_bytes)
+{
+#if defined(USE_NTLM) || defined(USE_SPNEGO)
+  struct SessionHandle *data = conn->data;
+  bool have_ntlm_or_negotiate = FALSE;
+  bool auth_started = FALSE;
+
+  /* don't reset connection when we're in NTLM or Negotiate authentication;
+   * those authenticate the connection - creating a new connection breaks the
+   * authentication.
+   */
+
+#if defined(USE_NTLM)
+  /* proxy NTLM authentication */
+  if((data->state.authproxy.picked == CURLAUTH_NTLM) ||
+      (data->state.authproxy.picked == CURLAUTH_NTLM_WB)) {
+    have_ntlm_or_negotiate = TRUE;
+    auth_started = auth_started
+                 || (conn->proxyntlm.state != NTLMSTATE_NONE);
+  }
+
+  /* normal NTLM authentication */
+  if((data->state.authhost.picked == CURLAUTH_NTLM) ||
+      (data->state.authhost.picked == CURLAUTH_NTLM_WB)) {
+    have_ntlm_or_negotiate = TRUE;
+    auth_started = auth_started
+                 || (conn->ntlm.state != NTLMSTATE_NONE);
+  }
+#endif
+
+#if defined(USE_SPNEGO)
+  /* proxy Negotiate authentication */
+  if(data->state.authproxy.picked == CURLAUTH_NEGOTIATE) {
+    have_ntlm_or_negotiate = TRUE;
+    auth_started = auth_started
+                 || (data->state.proxyneg.state != GSS_AUTHNONE);
+  }
+
+  /* normal Negotiate authentication */
+  if(data->state.authhost.picked == CURLAUTH_NEGOTIATE) {
+    have_ntlm_or_negotiate = TRUE;
+    auth_started = auth_started
+                 || (data->state.negotiate.state != GSS_AUTHNONE);
+  }
+#endif
+
+  if(have_ntlm_or_negotiate) {
+    if(remaining_bytes < 2000 || auth_started) {
+      /* NTLM/Negotiation has started *OR* there is just a little (<2K)
+       * data left to send, keep on sending.
+       */
+
+      /* rewind data when completely done sending! */
+      if(!conn->bits.authneg) {
+        conn->bits.rewindaftersend = TRUE;
+        infof(data, "Rewind stream after send\n");
+      }
+
+      return TRUE;
+    }
+
+    infof(data, "NTLM/Negotiate send, close instead of sending %"
+          CURL_FORMAT_CURL_OFF_T " bytes\n",
+          remaining_bytes);
+  }
+#else
+  /* unused parameters: */
+  (void)conn;
+  (void)remaining_bytes;
+#endif
+
+  return FALSE;
+}
+
 /*
  * Curl_http_perhapsrewind()
  *
 /*
  * Curl_http_perhapsrewind()
  *
@@ -330,7 +449,7 @@ static bool pickoneauth(struct auth *pick)
 static CURLcode http_perhapsrewind(struct connectdata *conn)
 {
   struct SessionHandle *data = conn->data;
 static CURLcode http_perhapsrewind(struct connectdata *conn)
 {
   struct SessionHandle *data = conn->data;
-  struct HTTP *http = data->state.proto.http;
+  struct HTTP *http = data->req.protop;
   curl_off_t bytessent;
   curl_off_t expectsend = -1; /* default is unknown */
 
   curl_off_t bytessent;
   curl_off_t expectsend = -1; /* default is unknown */
 
@@ -349,10 +468,15 @@ static CURLcode http_perhapsrewind(struct connectdata *conn)
 
   bytessent = http->writebytecount;
 
 
   bytessent = http->writebytecount;
 
-  if(conn->bits.authneg)
+  if(conn->bits.authneg) {
     /* This is a state where we are known to be negotiating and we don't send
        any data then. */
     expectsend = 0;
     /* This is a state where we are known to be negotiating and we don't send
        any data then. */
     expectsend = 0;
+  }
+  else if(!conn->bits.protoconnstart) {
+    /* HTTP CONNECT in progress: there is no body */
+    expectsend = 0;
+  }
   else {
     /* figure out how much data we are expected to send */
     switch(data->set.httpreq) {
   else {
     /* figure out how much data we are expected to send */
     switch(data->set.httpreq) {
@@ -363,8 +487,8 @@ static CURLcode http_perhapsrewind(struct connectdata *conn)
         expectsend = (curl_off_t)strlen(data->set.postfields);
       break;
     case HTTPREQ_PUT:
         expectsend = (curl_off_t)strlen(data->set.postfields);
       break;
     case HTTPREQ_PUT:
-      if(data->set.infilesize != -1)
-        expectsend = data->set.infilesize;
+      if(data->state.infilesize != -1)
+        expectsend = data->state.infilesize;
       break;
     case HTTPREQ_POST_FORM:
       expectsend = http->postsize;
       break;
     case HTTPREQ_POST_FORM:
       expectsend = http->postsize;
@@ -377,36 +501,15 @@ static CURLcode http_perhapsrewind(struct connectdata *conn)
   conn->bits.rewindaftersend = FALSE; /* default */
 
   if((expectsend == -1) || (expectsend > bytessent)) {
   conn->bits.rewindaftersend = FALSE; /* default */
 
   if((expectsend == -1) || (expectsend > bytessent)) {
-    /* There is still data left to send */
-    if((data->state.authproxy.picked == CURLAUTH_NTLM) ||
-       (data->state.authhost.picked == CURLAUTH_NTLM) ||
-       (data->state.authproxy.picked == CURLAUTH_NTLM_WB) ||
-       (data->state.authhost.picked == CURLAUTH_NTLM_WB)) {
-      if(((expectsend - bytessent) < 2000) ||
-         (conn->ntlm.state != NTLMSTATE_NONE) ||
-         (conn->proxyntlm.state != NTLMSTATE_NONE)) {
-        /* The NTLM-negotiation has started *OR* there is just a little (<2K)
-           data left to send, keep on sending. */
-
-        /* rewind data when completely done sending! */
-        if(!conn->bits.authneg) {
-          conn->bits.rewindaftersend = TRUE;
-          infof(data, "Rewind stream after send\n");
-        }
+    if(conn->bits.close)
+      /* this is already marked to get closed */
+      return CURLE_OK;
 
 
-        return CURLE_OK;
-      }
-      if(conn->bits.close)
-        /* this is already marked to get closed */
-        return CURLE_OK;
-
-      infof(data, "NTLM send, close instead of sending %" FORMAT_OFF_T
-            " bytes\n", (curl_off_t)(expectsend - bytessent));
-    }
+    if(complete_request(conn, (curl_off_t)(expectsend - bytessent)))
+      return CURLE_OK;
 
 
-    /* This is not NTLM or many bytes left to send: close
-     */
-    conn->bits.close = TRUE;
+    /* This is not NTLM or many bytes left to send: close */
+    connclose(conn, "Mid-auth HTTP and much data left to send");
     data->req.size = 0; /* don't download any more than 0 bytes */
 
     /* There still is data left to send, but this connection is marked for
     data->req.size = 0; /* don't download any more than 0 bytes */
 
     /* There still is data left to send, but this connection is marked for
@@ -414,7 +517,7 @@ static CURLcode http_perhapsrewind(struct connectdata *conn)
   }
 
   if(bytessent)
   }
 
   if(bytessent)
-    /* we rewind now at once since if we already sent something */
+    /* we rewind now at once since we already sent something */
     return Curl_readrewind(conn);
 
   return CURLE_OK;
     return Curl_readrewind(conn);
 
   return CURLE_OK;
@@ -432,7 +535,7 @@ CURLcode Curl_http_auth_act(struct connectdata *conn)
   struct SessionHandle *data = conn->data;
   bool pickhost = FALSE;
   bool pickproxy = FALSE;
   struct SessionHandle *data = conn->data;
   bool pickhost = FALSE;
   bool pickproxy = FALSE;
-  CURLcode code = CURLE_OK;
+  CURLcode result = CURLE_OK;
 
   if(100 <= data->req.httpcode && 199 >= data->req.httpcode)
     /* this is a transient response code, ignore */
 
   if(100 <= data->req.httpcode && 199 >= data->req.httpcode)
     /* this is a transient response code, ignore */
@@ -468,9 +571,9 @@ CURLcode Curl_http_auth_act(struct connectdata *conn)
     if((data->set.httpreq != HTTPREQ_GET) &&
        (data->set.httpreq != HTTPREQ_HEAD) &&
        !conn->bits.rewindaftersend) {
     if((data->set.httpreq != HTTPREQ_GET) &&
        (data->set.httpreq != HTTPREQ_HEAD) &&
        !conn->bits.rewindaftersend) {
-      code = http_perhapsrewind(conn);
-      if(code)
-        return code;
+      result = http_perhapsrewind(conn);
+      if(result)
+        return result;
     }
   }
 
     }
   }
 
@@ -492,10 +595,10 @@ CURLcode Curl_http_auth_act(struct connectdata *conn)
   if(http_should_fail(conn)) {
     failf (data, "The requested URL returned error: %d",
            data->req.httpcode);
   if(http_should_fail(conn)) {
     failf (data, "The requested URL returned error: %d",
            data->req.httpcode);
-    code = CURLE_HTTP_RETURNED_ERROR;
+    result = CURLE_HTTP_RETURNED_ERROR;
   }
 
   }
 
-  return code;
+  return result;
 }
 
 
 }
 
 
@@ -510,10 +613,12 @@ output_auth_headers(struct connectdata *conn,
                     const char *path,
                     bool proxy)
 {
                     const char *path,
                     bool proxy)
 {
-  struct SessionHandle *data = conn->data;
-  const char *auth=NULL;
+  const char *auth = NULL;
   CURLcode result = CURLE_OK;
   CURLcode result = CURLE_OK;
-#ifdef USE_HTTP_NEGOTIATE
+#if defined(USE_SPNEGO) || !defined(CURL_DISABLE_VERBOSE_STRINGS)
+  struct SessionHandle *data = conn->data;
+#endif
+#ifdef USE_SPNEGO
   struct negotiatedata *negdata = proxy?
     &data->state.proxyneg:&data->state.negotiate;
 #endif
   struct negotiatedata *negdata = proxy?
     &data->state.proxyneg:&data->state.negotiate;
 #endif
@@ -523,11 +628,11 @@ output_auth_headers(struct connectdata *conn,
   (void)path;
 #endif
 
   (void)path;
 #endif
 
-#ifdef USE_HTTP_NEGOTIATE
+#ifdef USE_SPNEGO
   negdata->state = GSS_AUTHNONE;
   negdata->state = GSS_AUTHNONE;
-  if((authstatus->picked == CURLAUTH_GSSNEGOTIATE) &&
+  if((authstatus->picked == CURLAUTH_NEGOTIATE) &&
      negdata->context && !GSS_ERROR(negdata->status)) {
      negdata->context && !GSS_ERROR(negdata->status)) {
-    auth="GSS-Negotiate";
+    auth="Negotiate";
     result = Curl_output_negotiate(conn, proxy);
     if(result)
       return result;
     result = Curl_output_negotiate(conn, proxy);
     if(result)
       return result;
@@ -569,9 +674,9 @@ output_auth_headers(struct connectdata *conn,
   if(authstatus->picked == CURLAUTH_BASIC) {
     /* Basic */
     if((proxy && conn->bits.proxy_user_passwd &&
   if(authstatus->picked == CURLAUTH_BASIC) {
     /* Basic */
     if((proxy && conn->bits.proxy_user_passwd &&
-       !Curl_checkheaders(data, "Proxy-authorization:")) ||
+        !Curl_checkProxyheaders(conn, "Proxy-authorization:")) ||
        (!proxy && conn->bits.user_passwd &&
        (!proxy && conn->bits.user_passwd &&
-       !Curl_checkheaders(data, "Authorization:"))) {
+        !Curl_checkheaders(conn, "Authorization:"))) {
       auth="Basic";
       result = http_output_basic(conn, proxy);
       if(result)
       auth="Basic";
       result = http_output_basic(conn, proxy);
       if(result)
@@ -685,34 +790,30 @@ Curl_http_output_auth(struct connectdata *conn,
  * proxy CONNECT loop.
  */
 
  * proxy CONNECT loop.
  */
 
-CURLcode Curl_http_input_auth(struct connectdata *conn,
-                              int httpcode,
-                              const char *header) /* the first non-space */
+CURLcode Curl_http_input_auth(struct connectdata *conn, bool proxy,
+                              const char *auth) /* the first non-space */
 {
   /*
    * This resource requires authentication
    */
   struct SessionHandle *data = conn->data;
 
 {
   /*
    * This resource requires authentication
    */
   struct SessionHandle *data = conn->data;
 
+#ifdef USE_SPNEGO
+  struct negotiatedata *negdata = proxy?
+    &data->state.proxyneg:&data->state.negotiate;
+#endif
   unsigned long *availp;
   unsigned long *availp;
-  const char *start;
   struct auth *authp;
 
   struct auth *authp;
 
-  if(httpcode == 407) {
-    start = header+strlen("Proxy-authenticate:");
+  if(proxy) {
     availp = &data->info.proxyauthavail;
     authp = &data->state.authproxy;
   }
   else {
     availp = &data->info.proxyauthavail;
     authp = &data->state.authproxy;
   }
   else {
-    start = header+strlen("WWW-Authenticate:");
     availp = &data->info.httpauthavail;
     authp = &data->state.authhost;
   }
 
     availp = &data->info.httpauthavail;
     authp = &data->state.authhost;
   }
 
-  /* pass all white spaces */
-  while(*start && ISSPACE(*start))
-    start++;
-
   /*
    * Here we check if we want the specific single authentication (using ==) and
    * if we do, we initiate usage of it.
   /*
    * Here we check if we want the specific single authentication (using ==) and
    * if we do, we initiate usage of it.
@@ -730,31 +831,24 @@ CURLcode Curl_http_input_auth(struct connectdata *conn,
    *
    */
 
    *
    */
 
-  while(*start) {
-#ifdef USE_HTTP_NEGOTIATE
-    if(checkprefix("GSS-Negotiate", start) ||
-       checkprefix("Negotiate", start)) {
+  while(*auth) {
+#ifdef USE_SPNEGO
+    if(checkprefix("Negotiate", auth)) {
       int neg;
       int neg;
-      *availp |= CURLAUTH_GSSNEGOTIATE;
-      authp->avail |= CURLAUTH_GSSNEGOTIATE;
-
-      if(authp->picked == CURLAUTH_GSSNEGOTIATE) {
-        if(data->state.negotiate.state == GSS_AUTHSENT) {
-          /* if we sent GSS authentication in the outgoing request and we get
-             this back, we're in trouble */
-          infof(data, "Authentication problem. Ignoring this.\n");
-          data->state.authproblem = TRUE;
-        }
-        else {
-          neg = Curl_input_negotiate(conn, (bool)(httpcode == 407), start);
+      *availp |= CURLAUTH_NEGOTIATE;
+      authp->avail |= CURLAUTH_NEGOTIATE;
+
+      if(authp->picked == CURLAUTH_NEGOTIATE) {
+        if(negdata->state == GSS_AUTHSENT || negdata->state == GSS_AUTHNONE) {
+          neg = Curl_input_negotiate(conn, proxy, auth);
           if(neg == 0) {
             DEBUGASSERT(!data->req.newurl);
             data->req.newurl = strdup(data->change.url);
             if(!data->req.newurl)
               return CURLE_OUT_OF_MEMORY;
             data->state.authproblem = FALSE;
           if(neg == 0) {
             DEBUGASSERT(!data->req.newurl);
             data->req.newurl = strdup(data->change.url);
             if(!data->req.newurl)
               return CURLE_OUT_OF_MEMORY;
             data->state.authproblem = FALSE;
-            /* we received GSS auth info and we dealt with it fine */
-            data->state.negotiate.state = GSS_AUTHRECV;
+            /* we received a GSS auth token and we dealt with it fine */
+            negdata->state = GSS_AUTHRECV;
           }
           else
             data->state.authproblem = TRUE;
           }
           else
             data->state.authproblem = TRUE;
@@ -765,15 +859,14 @@ CURLcode Curl_http_input_auth(struct connectdata *conn,
 #endif
 #ifdef USE_NTLM
       /* NTLM support requires the SSL crypto libs */
 #endif
 #ifdef USE_NTLM
       /* NTLM support requires the SSL crypto libs */
-      if(checkprefix("NTLM", start)) {
+      if(checkprefix("NTLM", auth)) {
         *availp |= CURLAUTH_NTLM;
         authp->avail |= CURLAUTH_NTLM;
         if(authp->picked == CURLAUTH_NTLM ||
            authp->picked == CURLAUTH_NTLM_WB) {
           /* NTLM authentication is picked and activated */
         *availp |= CURLAUTH_NTLM;
         authp->avail |= CURLAUTH_NTLM;
         if(authp->picked == CURLAUTH_NTLM ||
            authp->picked == CURLAUTH_NTLM_WB) {
           /* NTLM authentication is picked and activated */
-          CURLcode ntlm =
-            Curl_input_ntlm(conn, (httpcode == 407)?TRUE:FALSE, start);
-          if(CURLE_OK == ntlm) {
+          CURLcode result = Curl_input_ntlm(conn, proxy, auth);
+          if(!result) {
             data->state.authproblem = FALSE;
 #ifdef NTLM_WB_ENABLED
             if(authp->picked == CURLAUTH_NTLM_WB) {
             data->state.authproblem = FALSE;
 #ifdef NTLM_WB_ENABLED
             if(authp->picked == CURLAUTH_NTLM_WB) {
@@ -784,14 +877,14 @@ CURLcode Curl_http_input_auth(struct connectdata *conn,
 
               /* Get the challenge-message which will be passed to
                * ntlm_auth for generating the type 3 message later */
 
               /* Get the challenge-message which will be passed to
                * ntlm_auth for generating the type 3 message later */
-              while(*start && ISSPACE(*start))
-                start++;
-              if(checkprefix("NTLM", start)) {
-                start += strlen("NTLM");
-                while(*start && ISSPACE(*start))
-                  start++;
-                if(*start)
-                  if((conn->challenge_header = strdup(start)) == NULL)
+              while(*auth && ISSPACE(*auth))
+                auth++;
+              if(checkprefix("NTLM", auth)) {
+                auth += strlen("NTLM");
+                while(*auth && ISSPACE(*auth))
+                  auth++;
+                if(*auth)
+                  if((conn->challenge_header = strdup(auth)) == NULL)
                     return CURLE_OUT_OF_MEMORY;
               }
             }
                     return CURLE_OUT_OF_MEMORY;
               }
             }
@@ -806,12 +899,12 @@ CURLcode Curl_http_input_auth(struct connectdata *conn,
       else
 #endif
 #ifndef CURL_DISABLE_CRYPTO_AUTH
       else
 #endif
 #ifndef CURL_DISABLE_CRYPTO_AUTH
-        if(checkprefix("Digest", start)) {
+        if(checkprefix("Digest", auth)) {
           if((authp->avail & CURLAUTH_DIGEST) != 0) {
             infof(data, "Ignoring duplicate digest auth header.\n");
           }
           else {
           if((authp->avail & CURLAUTH_DIGEST) != 0) {
             infof(data, "Ignoring duplicate digest auth header.\n");
           }
           else {
-            CURLdigest dig;
+            CURLcode result;
             *availp |= CURLAUTH_DIGEST;
             authp->avail |= CURLAUTH_DIGEST;
 
             *availp |= CURLAUTH_DIGEST;
             authp->avail |= CURLAUTH_DIGEST;
 
@@ -819,9 +912,8 @@ CURLcode Curl_http_input_auth(struct connectdata *conn,
              * authentication isn't activated yet, as we need to store the
              * incoming data from this header in case we are gonna use
              * Digest. */
              * authentication isn't activated yet, as we need to store the
              * incoming data from this header in case we are gonna use
              * Digest. */
-            dig = Curl_input_digest(conn, (httpcode == 407)?TRUE:FALSE, start);
-
-            if(CURLDIGEST_FINE != dig) {
+            result = Curl_input_digest(conn, proxy, auth);
+            if(result) {
               infof(data, "Authentication problem. Ignoring this.\n");
               data->state.authproblem = TRUE;
             }
               infof(data, "Authentication problem. Ignoring this.\n");
               data->state.authproblem = TRUE;
             }
@@ -829,7 +921,7 @@ CURLcode Curl_http_input_auth(struct connectdata *conn,
         }
         else
 #endif
         }
         else
 #endif
-          if(checkprefix("Basic", start)) {
+          if(checkprefix("Basic", auth)) {
             *availp |= CURLAUTH_BASIC;
             authp->avail |= CURLAUTH_BASIC;
             if(authp->picked == CURLAUTH_BASIC) {
             *availp |= CURLAUTH_BASIC;
             authp->avail |= CURLAUTH_BASIC;
             if(authp->picked == CURLAUTH_BASIC) {
@@ -843,12 +935,12 @@ CURLcode Curl_http_input_auth(struct connectdata *conn,
           }
 
     /* there may be multiple methods on one line, so keep reading */
           }
 
     /* there may be multiple methods on one line, so keep reading */
-    while(*start && *start != ',') /* read up to the next comma */
-      start++;
-    if(*start == ',') /* if we're on a comma, skip it */
-      start++;
-    while(*start && ISSPACE(*start))
-      start++;
+    while(*auth && *auth != ',') /* read up to the next comma */
+      auth++;
+    if(*auth == ',') /* if we're on a comma, skip it */
+      auth++;
+    while(*auth && ISSPACE(*auth))
+      auth++;
   }
   return CURLE_OK;
 }
   }
   return CURLE_OK;
 }
@@ -887,14 +979,6 @@ static int http_should_fail(struct connectdata *conn)
   if(httpcode < 400)
     return 0;
 
   if(httpcode < 400)
     return 0;
 
-  if(data->state.resume_from &&
-     (data->set.httpreq==HTTPREQ_GET) &&
-     (httpcode == 416)) {
-    /* "Requested Range Not Satisfiable", just proceed and
-       pretend this is no error */
-    return 0;
-  }
-
   /*
   ** Any code >= 400 that's not 401 or 407 is always
   ** a terminal error
   /*
   ** Any code >= 400 that's not 401 or 407 is always
   ** a terminal error
@@ -948,7 +1032,7 @@ static size_t readmoredata(char *buffer,
                            void *userp)
 {
   struct connectdata *conn = (struct connectdata *)userp;
                            void *userp)
 {
   struct connectdata *conn = (struct connectdata *)userp;
-  struct HTTP *http = conn->data->state.proto.http;
+  struct HTTP *http = conn->data->req.protop;
   size_t fullsize = size * nitems;
 
   if(0 == http->postsize)
   size_t fullsize = size * nitems;
 
   if(0 == http->postsize)
@@ -1016,10 +1100,10 @@ CURLcode Curl_add_buffer_send(Curl_send_buffer *in,
 
 {
   ssize_t amount;
 
 {
   ssize_t amount;
-  CURLcode res;
+  CURLcode result;
   char *ptr;
   size_t size;
   char *ptr;
   size_t size;
-  struct HTTP *http = conn->data->state.proto.http;
+  struct HTTP *http = conn->data->req.protop;
   size_t sendsize;
   curl_socket_t sockfd;
   size_t headersize;
   size_t sendsize;
   curl_socket_t sockfd;
   size_t headersize;
@@ -1039,16 +1123,17 @@ CURLcode Curl_add_buffer_send(Curl_send_buffer *in,
 
   DEBUGASSERT(size > included_body_bytes);
 
 
   DEBUGASSERT(size > included_body_bytes);
 
-  res = Curl_convert_to_network(conn->data, ptr, headersize);
+  result = Curl_convert_to_network(conn->data, ptr, headersize);
   /* Curl_convert_to_network calls failf if unsuccessful */
   /* Curl_convert_to_network calls failf if unsuccessful */
-  if(res) {
+  if(result) {
     /* conversion failed, free memory and return to the caller */
     if(in->buffer)
       free(in->buffer);
     free(in);
     /* conversion failed, free memory and return to the caller */
     if(in->buffer)
       free(in->buffer);
     free(in);
-    return res;
+    return result;
   }
 
   }
 
+
   if(conn->handler->flags & PROTOPT_SSL) {
     /* We never send more than CURL_MAX_WRITE_SIZE bytes in one single chunk
        when we speak HTTPS, as if only a fraction of it is sent now, this data
   if(conn->handler->flags & PROTOPT_SSL) {
     /* We never send more than CURL_MAX_WRITE_SIZE bytes in one single chunk
        when we speak HTTPS, as if only a fraction of it is sent now, this data
@@ -1070,9 +1155,9 @@ CURLcode Curl_add_buffer_send(Curl_send_buffer *in,
   else
     sendsize = size;
 
   else
     sendsize = size;
 
-  res = Curl_write(conn, sockfd, ptr, sendsize, &amount);
+  result = Curl_write(conn, sockfd, ptr, sendsize, &amount);
 
 
-  if(CURLE_OK == res) {
+  if(!result) {
     /*
      * Note that we may not send the entire chunk at once, and we have a set
      * number of data bytes at the end of the big buffer (out of which we may
     /*
      * Note that we may not send the entire chunk at once, and we have a set
      * number of data bytes at the end of the big buffer (out of which we may
@@ -1150,7 +1235,7 @@ CURLcode Curl_add_buffer_send(Curl_send_buffer *in,
     free(in->buffer);
   free(in);
 
     free(in->buffer);
   free(in);
 
-  return res;
+  return result;
 }
 
 
 }
 
 
@@ -1301,7 +1386,7 @@ CURLcode Curl_http_connect(struct connectdata *conn, bool *done)
 
   /* We default to persistent connections. We set this already in this connect
      function to make the re-use checks properly be able to check this bit. */
 
   /* We default to persistent connections. We set this already in this connect
      function to make the re-use checks properly be able to check this bit. */
-  conn->bits.close = FALSE;
+  connkeep(conn, "HTTP default");
 
   /* the CONNECT procedure might not have been completed */
   result = Curl_proxy_connect(conn);
 
   /* the CONNECT procedure might not have been completed */
   result = Curl_proxy_connect(conn);
@@ -1346,15 +1431,15 @@ static CURLcode https_connecting(struct connectdata *conn, bool *done)
   /* perform SSL initialization for this socket */
   result = Curl_ssl_connect_nonblocking(conn, FIRSTSOCKET, done);
   if(result)
   /* perform SSL initialization for this socket */
   result = Curl_ssl_connect_nonblocking(conn, FIRSTSOCKET, done);
   if(result)
-    conn->bits.close = TRUE; /* a failed connection is marked for closure
-                                to prevent (bad) re-use or similar */
+    connclose(conn, "Failed HTTPS connection");
+
   return result;
 }
 #endif
 
 #if defined(USE_SSLEAY) || defined(USE_GNUTLS) || defined(USE_SCHANNEL) || \
   return result;
 }
 #endif
 
 #if defined(USE_SSLEAY) || defined(USE_GNUTLS) || defined(USE_SCHANNEL) || \
-    defined(USE_DARWINSSL)
-/* This function is for OpenSSL, GnuTLS, darwinssl, and schannel only.
+    defined(USE_DARWINSSL) || defined(USE_POLARSSL) || defined(USE_NSS)
+/* This function is for OpenSSL, GnuTLS, darwinssl, schannel and polarssl only.
    It should be made to query the generic SSL layer instead. */
 static int https_getsock(struct connectdata *conn,
                          curl_socket_t *socks,
    It should be made to query the generic SSL layer instead. */
 static int https_getsock(struct connectdata *conn,
                          curl_socket_t *socks,
@@ -1402,10 +1487,16 @@ CURLcode Curl_http_done(struct connectdata *conn,
                         CURLcode status, bool premature)
 {
   struct SessionHandle *data = conn->data;
                         CURLcode status, bool premature)
 {
   struct SessionHandle *data = conn->data;
-  struct HTTP *http =data->state.proto.http;
+  struct HTTP *http =data->req.protop;
 
   Curl_unencode_cleanup(conn);
 
 
   Curl_unencode_cleanup(conn);
 
+#ifdef USE_SPNEGO
+  if(data->state.proxyneg.state == GSS_AUTHSENT ||
+      data->state.negotiate.state == GSS_AUTHSENT)
+    Curl_cleanup_negotiate(data);
+#endif
+
   /* set the proper values (possibly modified on POST) */
   conn->fread_func = data->set.fread_func; /* restore */
   conn->fread_in = data->set.in; /* restore */
   /* set the proper values (possibly modified on POST) */
   conn->fread_func = data->set.fread_func; /* restore */
   conn->fread_in = data->set.in; /* restore */
@@ -1436,12 +1527,13 @@ CURLcode Curl_http_done(struct connectdata *conn,
   else if(HTTPREQ_PUT == data->set.httpreq)
     data->req.bytecount = http->readbytecount + http->writebytecount;
 
   else if(HTTPREQ_PUT == data->set.httpreq)
     data->req.bytecount = http->readbytecount + http->writebytecount;
 
-  if(status != CURLE_OK)
-    return (status);
+  if(status)
+    return status;
 
   if(!premature && /* this check is pointless when DONE is called before the
                       entire operation is complete */
      !conn->bits.retry &&
 
   if(!premature && /* this check is pointless when DONE is called before the
                       entire operation is complete */
      !conn->bits.retry &&
+     !data->set.connect_only &&
      ((http->readbytecount +
        data->req.headerbytecount -
        data->req.deductheadercount)) <= 0) {
      ((http->readbytecount +
        data->req.headerbytecount -
        data->req.deductheadercount)) <= 0) {
@@ -1456,14 +1548,19 @@ CURLcode Curl_http_done(struct connectdata *conn,
 }
 
 
 }
 
 
-/* Determine if we should use HTTP 1.1 for this request. Reasons to avoid it
-   are if the user specifically requested HTTP 1.0, if the server we are
-   connected to only supports 1.0, or if any server previously contacted to
-   handle this request only supports 1.0. */
-static bool use_http_1_1(const struct SessionHandle *data,
-                         const struct connectdata *conn)
+/*
+ * Determine if we should use HTTP 1.1 (OR BETTER) for this request. Reasons
+ * to avoid it include:
+ *
+ * - if the user specifically requested HTTP 1.0
+ * - if the server we are connected to only supports 1.0
+ * - if any server previously contacted to handle this request only supports
+ * 1.0.
+ */
+static bool use_http_1_1plus(const struct SessionHandle *data,
+                             const struct connectdata *conn)
 {
 {
-  return ((data->set.httpversion == CURL_HTTP_VERSION_1_1) ||
+  return ((data->set.httpversion >= CURL_HTTP_VERSION_1_1) ||
          ((data->set.httpversion != CURL_HTTP_VERSION_1_0) &&
           ((conn->httpversion == 11) ||
            ((conn->httpversion != 10) &&
          ((data->set.httpversion != CURL_HTTP_VERSION_1_0) &&
           ((conn->httpversion == 11) ||
            ((conn->httpversion != 10) &&
@@ -1479,11 +1576,11 @@ static CURLcode expect100(struct SessionHandle *data,
   const char *ptr;
   data->state.expect100header = FALSE; /* default to false unless it is set
                                           to TRUE below */
   const char *ptr;
   data->state.expect100header = FALSE; /* default to false unless it is set
                                           to TRUE below */
-  if(use_http_1_1(data, conn)) {
+  if(use_http_1_1plus(data, conn)) {
     /* if not doing HTTP 1.0 or disabled explicitly, we add a Expect:
        100-continue to the headers which actually speeds up post operations
        (as there is one packet coming back from the web server) */
     /* if not doing HTTP 1.0 or disabled explicitly, we add a Expect:
        100-continue to the headers which actually speeds up post operations
        (as there is one packet coming back from the web server) */
-    ptr = Curl_checkheaders(data, "Expect:");
+    ptr = Curl_checkheaders(conn, "Expect:");
     if(ptr) {
       data->state.expect100header =
         Curl_compareheader(ptr, "Expect:", "100-continue");
     if(ptr) {
       data->state.expect100header =
         Curl_compareheader(ptr, "Expect:", "100-continue");
@@ -1491,84 +1588,127 @@ static CURLcode expect100(struct SessionHandle *data,
     else {
       result = Curl_add_bufferf(req_buffer,
                          "Expect: 100-continue\r\n");
     else {
       result = Curl_add_bufferf(req_buffer,
                          "Expect: 100-continue\r\n");
-      if(result == CURLE_OK)
+      if(!result)
         data->state.expect100header = TRUE;
     }
   }
   return result;
 }
 
         data->state.expect100header = TRUE;
     }
   }
   return result;
 }
 
+enum proxy_use {
+  HEADER_SERVER,  /* direct to server */
+  HEADER_PROXY,   /* regular request to proxy */
+  HEADER_CONNECT  /* sending CONNECT to a proxy */
+};
+
 CURLcode Curl_add_custom_headers(struct connectdata *conn,
 CURLcode Curl_add_custom_headers(struct connectdata *conn,
-                                   Curl_send_buffer *req_buffer)
+                                 bool is_connect,
+                                 Curl_send_buffer *req_buffer)
 {
   char *ptr;
 {
   char *ptr;
-  struct curl_slist *headers=conn->data->set.headers;
-
-  while(headers) {
-    ptr = strchr(headers->data, ':');
-    if(ptr) {
-      /* we require a colon for this to be a true header */
+  struct curl_slist *h[2];
+  struct curl_slist *headers;
+  int numlists=1; /* by default */
+  struct SessionHandle *data = conn->data;
+  int i;
 
 
-      ptr++; /* pass the colon */
-      while(*ptr && ISSPACE(*ptr))
-        ptr++;
+  enum proxy_use proxy;
 
 
-      if(*ptr) {
-        /* only send this if the contents was non-blank */
+  if(is_connect)
+    proxy = HEADER_CONNECT;
+  else
+    proxy = conn->bits.httpproxy && !conn->bits.tunnel_proxy?
+      HEADER_PROXY:HEADER_SERVER;
 
 
-        if(conn->allocptr.host &&
-           /* a Host: header was sent already, don't pass on any custom Host:
-              header as that will produce *two* in the same request! */
-           checkprefix("Host:", headers->data))
-          ;
-        else if(conn->data->set.httpreq == HTTPREQ_POST_FORM &&
-                /* this header (extended by formdata.c) is sent later */
-                checkprefix("Content-Type:", headers->data))
-          ;
-        else if(conn->bits.authneg &&
-                /* while doing auth neg, don't allow the custom length since
-                   we will force length zero then */
-                checkprefix("Content-Length", headers->data))
-          ;
-        else if(conn->allocptr.te &&
-                /* when asking for Transfer-Encoding, don't pass on a custom
-                   Connection: */
-                checkprefix("Connection", headers->data))
-          ;
-        else {
-          CURLcode result = Curl_add_bufferf(req_buffer, "%s\r\n",
-                                             headers->data);
-          if(result)
-            return result;
-        }
-      }
+  switch(proxy) {
+  case HEADER_SERVER:
+    h[0] = data->set.headers;
+    break;
+  case HEADER_PROXY:
+    h[0] = data->set.headers;
+    if(data->set.sep_headers) {
+      h[1] = data->set.proxyheaders;
+      numlists++;
     }
     }
-    else {
-      ptr = strchr(headers->data, ';');
+    break;
+  case HEADER_CONNECT:
+    if(data->set.sep_headers)
+      h[0] = data->set.proxyheaders;
+    else
+      h[0] = data->set.headers;
+    break;
+  }
+
+  /* loop through one or two lists */
+  for(i=0; i < numlists; i++) {
+    headers = h[i];
+
+    while(headers) {
+      ptr = strchr(headers->data, ':');
       if(ptr) {
       if(ptr) {
+        /* we require a colon for this to be a true header */
 
 
-        ptr++; /* pass the semicolon */
+        ptr++; /* pass the colon */
         while(*ptr && ISSPACE(*ptr))
           ptr++;
 
         if(*ptr) {
         while(*ptr && ISSPACE(*ptr))
           ptr++;
 
         if(*ptr) {
-          /* this may be used for something else in the future */
-        }
-        else {
-          if(*(--ptr) == ';') {
-            CURLcode result;
-
-            /* send no-value custom header if terminated by semicolon */
-            *ptr = ':';
-            result = Curl_add_bufferf(req_buffer, "%s\r\n",
-                                             headers->data);
+          /* only send this if the contents was non-blank */
+
+          if(conn->allocptr.host &&
+             /* a Host: header was sent already, don't pass on any custom Host:
+                header as that will produce *two* in the same request! */
+             checkprefix("Host:", headers->data))
+            ;
+          else if(data->set.httpreq == HTTPREQ_POST_FORM &&
+                  /* this header (extended by formdata.c) is sent later */
+                  checkprefix("Content-Type:", headers->data))
+            ;
+          else if(conn->bits.authneg &&
+                  /* while doing auth neg, don't allow the custom length since
+                     we will force length zero then */
+                  checkprefix("Content-Length", headers->data))
+            ;
+          else if(conn->allocptr.te &&
+                  /* when asking for Transfer-Encoding, don't pass on a custom
+                     Connection: */
+                  checkprefix("Connection", headers->data))
+            ;
+          else {
+            CURLcode result = Curl_add_bufferf(req_buffer, "%s\r\n",
+                                               headers->data);
             if(result)
               return result;
           }
         }
       }
             if(result)
               return result;
           }
         }
       }
+      else {
+        ptr = strchr(headers->data, ';');
+        if(ptr) {
+
+          ptr++; /* pass the semicolon */
+          while(*ptr && ISSPACE(*ptr))
+            ptr++;
+
+          if(*ptr) {
+            /* this may be used for something else in the future */
+          }
+          else {
+            if(*(--ptr) == ';') {
+              CURLcode result;
+
+              /* send no-value custom header if terminated by semicolon */
+              *ptr = ':';
+              result = Curl_add_bufferf(req_buffer, "%s\r\n",
+                                        headers->data);
+              if(result)
+                return result;
+            }
+          }
+        }
+      }
+      headers = headers->next;
     }
     }
-    headers = headers->next;
   }
   return CURLE_OK;
 }
   }
   return CURLE_OK;
 }
@@ -1578,10 +1718,8 @@ CURLcode Curl_add_timecondition(struct SessionHandle *data,
 {
   const struct tm *tm;
   char *buf = data->state.buffer;
 {
   const struct tm *tm;
   char *buf = data->state.buffer;
-  CURLcode result = CURLE_OK;
   struct tm keeptime;
   struct tm keeptime;
-
-  result = Curl_gmtime(data->set.timevalue, &keeptime);
+  CURLcode result = Curl_gmtime(data->set.timevalue, &keeptime);
   if(result) {
     failf(data, "Invalid TIMEVALUE");
     return result;
   if(result) {
     failf(data, "Invalid TIMEVALUE");
     return result;
@@ -1632,8 +1770,8 @@ CURLcode Curl_add_timecondition(struct SessionHandle *data,
  */
 CURLcode Curl_http(struct connectdata *conn, bool *done)
 {
  */
 CURLcode Curl_http(struct connectdata *conn, bool *done)
 {
-  struct SessionHandle *data=conn->data;
-  CURLcode result=CURLE_OK;
+  struct SessionHandle *data = conn->data;
+  CURLcode result = CURLE_OK;
   struct HTTP *http;
   const char *ppath = data->state.path;
   bool paste_ftp_userpwd = FALSE;
   struct HTTP *http;
   const char *ppath = data->state.path;
   bool paste_ftp_userpwd = FALSE;
@@ -1643,7 +1781,9 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
   const char *ptr;
   const char *request;
   Curl_HttpReq httpreq = data->set.httpreq;
   const char *ptr;
   const char *request;
   Curl_HttpReq httpreq = data->set.httpreq;
+#if !defined(CURL_DISABLE_COOKIES)
   char *addcookies = NULL;
   char *addcookies = NULL;
+#endif
   curl_off_t included_body = 0;
   const char *httpstring;
   Curl_send_buffer *req_buffer;
   curl_off_t included_body = 0;
   const char *httpstring;
   Curl_send_buffer *req_buffer;
@@ -1655,20 +1795,38 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
      the rest of the request in the PERFORM phase. */
   *done = TRUE;
 
      the rest of the request in the PERFORM phase. */
   *done = TRUE;
 
-  /* If there already is a protocol-specific struct allocated for this
-     sessionhandle, deal with it */
-  Curl_reset_reqproto(conn);
+  if(conn->httpversion < 20) { /* unless the connection is re-used and already
+                                  http2 */
+    switch(conn->negnpn) {
+    case NPN_HTTP2:
+      result = Curl_http2_init(conn);
+      if(result)
+        return result;
 
 
-  if(!data->state.proto.http) {
-    /* Only allocate this struct if we don't already have it! */
+      result = Curl_http2_setup(conn);
+      if(result)
+        return result;
 
 
-    http = calloc(1, sizeof(struct HTTP));
-    if(!http)
-      return CURLE_OUT_OF_MEMORY;
-    data->state.proto.http = http;
+      result = Curl_http2_switched(conn, NULL, 0);
+      if(result)
+        return result;
+      break;
+    case NPN_HTTP1_1:
+      /* continue with HTTP/1.1 when explicitly requested */
+      break;
+    default:
+      /* and as fallback */
+      break;
+    }
   }
   }
-  else
-    http = data->state.proto.http;
+  else {
+    /* prepare for a http2 request */
+    result = Curl_http2_setup(conn);
+    if(result)
+      return result;
+  }
+
+  http = data->req.protop;
 
   if(!data->state.this_is_a_follow) {
     /* this is not a followed location, get the original host name */
 
   if(!data->state.this_is_a_follow) {
     /* this is not a followed location, get the original host name */
@@ -1682,7 +1840,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
   }
   http->writebytecount = http->readbytecount = 0;
 
   }
   http->writebytecount = http->readbytecount = 0;
 
-  if((conn->handler->protocol&(CURLPROTO_HTTP|CURLPROTO_FTP)) &&
+  if((conn->handler->protocol&(PROTO_FAMILY_HTTP|CURLPROTO_FTP)) &&
      data->set.upload) {
     httpreq = HTTPREQ_PUT;
   }
      data->set.upload) {
     httpreq = HTTPREQ_PUT;
   }
@@ -1718,7 +1876,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
      it might have been used in the proxy connect, but if we have got a header
      with the user-agent string specified, we erase the previously made string
      here. */
      it might have been used in the proxy connect, but if we have got a header
      with the user-agent string specified, we erase the previously made string
      here. */
-  if(Curl_checkheaders(data, "User-Agent:") && conn->allocptr.uagent) {
+  if(Curl_checkheaders(conn, "User-Agent:") && conn->allocptr.uagent) {
     free(conn->allocptr.uagent);
     conn->allocptr.uagent=NULL;
   }
     free(conn->allocptr.uagent);
     conn->allocptr.uagent=NULL;
   }
@@ -1739,7 +1897,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
     conn->bits.authneg = FALSE;
 
   Curl_safefree(conn->allocptr.ref);
     conn->bits.authneg = FALSE;
 
   Curl_safefree(conn->allocptr.ref);
-  if(data->change.referer && !Curl_checkheaders(data, "Referer:")) {
+  if(data->change.referer && !Curl_checkheaders(conn, "Referer:")) {
     conn->allocptr.ref = aprintf("Referer: %s\r\n", data->change.referer);
     if(!conn->allocptr.ref)
       return CURLE_OUT_OF_MEMORY;
     conn->allocptr.ref = aprintf("Referer: %s\r\n", data->change.referer);
     if(!conn->allocptr.ref)
       return CURLE_OUT_OF_MEMORY;
@@ -1747,10 +1905,12 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
   else
     conn->allocptr.ref = NULL;
 
   else
     conn->allocptr.ref = NULL;
 
-  if(data->set.str[STRING_COOKIE] && !Curl_checkheaders(data, "Cookie:"))
+#if !defined(CURL_DISABLE_COOKIES)
+  if(data->set.str[STRING_COOKIE] && !Curl_checkheaders(conn, "Cookie:"))
     addcookies = data->set.str[STRING_COOKIE];
     addcookies = data->set.str[STRING_COOKIE];
+#endif
 
 
-  if(!Curl_checkheaders(data, "Accept-Encoding:") &&
+  if(!Curl_checkheaders(conn, "Accept-Encoding:") &&
      data->set.str[STRING_ENCODING]) {
     Curl_safefree(conn->allocptr.accept_encoding);
     conn->allocptr.accept_encoding =
      data->set.str[STRING_ENCODING]) {
     Curl_safefree(conn->allocptr.accept_encoding);
     conn->allocptr.accept_encoding =
@@ -1762,13 +1922,14 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
 #ifdef HAVE_LIBZ
   /* we only consider transfer-encoding magic if libz support is built-in */
 
 #ifdef HAVE_LIBZ
   /* we only consider transfer-encoding magic if libz support is built-in */
 
-  if(!Curl_checkheaders(data, "TE:") && data->set.http_transfer_encoding) {
+  if(!Curl_checkheaders(conn, "TE:") &&
+     data->set.http_transfer_encoding) {
     /* When we are to insert a TE: header in the request, we must also insert
        TE in a Connection: header, so we need to merge the custom provided
        Connection: header and prevent the original to get sent. Note that if
        the user has inserted his/hers own TE: header we don't do this magic
        but then assume that the user will handle it all! */
     /* When we are to insert a TE: header in the request, we must also insert
        TE in a Connection: header, so we need to merge the custom provided
        Connection: header and prevent the original to get sent. Note that if
        the user has inserted his/hers own TE: header we don't do this magic
        but then assume that the user will handle it all! */
-    char *cptr = Curl_checkheaders(data, "Connection:");
+    char *cptr = Curl_checkheaders(conn, "Connection:");
 #define TE_HEADER "TE: gzip\r\n"
 
     Curl_safefree(conn->allocptr.te);
 #define TE_HEADER "TE: gzip\r\n"
 
     Curl_safefree(conn->allocptr.te);
@@ -1782,40 +1943,45 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
   }
 #endif
 
   }
 #endif
 
-  ptr = Curl_checkheaders(data, "Transfer-Encoding:");
-  if(ptr) {
-    /* Some kind of TE is requested, check if 'chunked' is chosen */
-    data->req.upload_chunky =
-      Curl_compareheader(ptr, "Transfer-Encoding:", "chunked");
-  }
+  if(conn->httpversion == 20)
+    /* In HTTP2 forbids Transfer-Encoding: chunked */
+    ptr = NULL;
   else {
   else {
-    if((conn->handler->protocol&CURLPROTO_HTTP) &&
-       data->set.upload &&
-       (data->set.infilesize == -1)) {
-      if(conn->bits.authneg)
-        /* don't enable chunked during auth neg */
-        ;
-      else if(use_http_1_1(data, conn)) {
-        /* HTTP, upload, unknown file size and not HTTP 1.0 */
-        data->req.upload_chunky = TRUE;
+    ptr = Curl_checkheaders(conn, "Transfer-Encoding:");
+    if(ptr) {
+      /* Some kind of TE is requested, check if 'chunked' is chosen */
+      data->req.upload_chunky =
+        Curl_compareheader(ptr, "Transfer-Encoding:", "chunked");
+    }
+    else {
+      if((conn->handler->protocol&PROTO_FAMILY_HTTP) &&
+         data->set.upload &&
+         (data->state.infilesize == -1)) {
+        if(conn->bits.authneg)
+          /* don't enable chunked during auth neg */
+          ;
+        else if(use_http_1_1plus(data, conn)) {
+          /* HTTP, upload, unknown file size and not HTTP 1.0 */
+          data->req.upload_chunky = TRUE;
+        }
+        else {
+          failf(data, "Chunky upload is not supported by HTTP 1.0");
+          return CURLE_UPLOAD_FAILED;
+        }
       }
       else {
       }
       else {
-        failf(data, "Chunky upload is not supported by HTTP 1.0");
-        return CURLE_UPLOAD_FAILED;
+        /* else, no chunky upload */
+        data->req.upload_chunky = FALSE;
       }
       }
-    }
-    else {
-      /* else, no chunky upload */
-      data->req.upload_chunky = FALSE;
-    }
 
 
-    if(data->req.upload_chunky)
-      te = "Transfer-Encoding: chunked\r\n";
+      if(data->req.upload_chunky)
+        te = "Transfer-Encoding: chunked\r\n";
+    }
   }
 
   Curl_safefree(conn->allocptr.host);
 
   }
 
   Curl_safefree(conn->allocptr.host);
 
-  ptr = Curl_checkheaders(data, "Host:");
+  ptr = Curl_checkheaders(conn, "Host:");
   if(ptr && (!data->state.this_is_a_follow ||
              Curl_raw_equal(data->state.first_host, conn->host.name))) {
 #if !defined(CURL_DISABLE_COOKIES)
   if(ptr && (!data->state.this_is_a_follow ||
              Curl_raw_equal(data->state.first_host, conn->host.name))) {
 #if !defined(CURL_DISABLE_COOKIES)
@@ -1824,7 +1990,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
        custom Host: header if this is NOT a redirect, as setting Host: in the
        redirected request is being out on thin ice. Except if the host name
        is the same as the first one! */
        custom Host: header if this is NOT a redirect, as setting Host: in the
        redirected request is being out on thin ice. Except if the host name
        is the same as the first one! */
-    char *cookiehost = copy_header_value(ptr);
+    char *cookiehost = Curl_copy_header_value(ptr);
     if(!cookiehost)
       return CURLE_OUT_OF_MEMORY;
     if(!*cookiehost)
     if(!cookiehost)
       return CURLE_OUT_OF_MEMORY;
     if(!*cookiehost)
@@ -1960,13 +2126,13 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
     /* we must build the whole post sequence first, so that we have a size of
        the whole transfer before we start to send it */
     result = Curl_getformdata(data, &http->sendit, data->set.httppost,
     /* we must build the whole post sequence first, so that we have a size of
        the whole transfer before we start to send it */
     result = Curl_getformdata(data, &http->sendit, data->set.httppost,
-                              Curl_checkheaders(data, "Content-Type:"),
+                              Curl_checkheaders(conn, "Content-Type:"),
                               &http->postsize);
     if(result)
       return result;
   }
 
                               &http->postsize);
     if(result)
       return result;
   }
 
-  http->p_accept = Curl_checkheaders(data, "Accept:")?NULL:"Accept: */*\r\n";
+  http->p_accept = Curl_checkheaders(conn, "Accept:")?NULL:"Accept: */*\r\n";
 
   if(( (HTTPREQ_POST == httpreq) ||
        (HTTPREQ_POST_FORM == httpreq) ||
 
   if(( (HTTPREQ_POST == httpreq) ||
        (HTTPREQ_POST_FORM == httpreq) ||
@@ -2019,9 +2185,8 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
             if((actuallyread == 0) || (actuallyread > readthisamountnow)) {
               /* this checks for greater-than only to make sure that the
                  CURL_READFUNC_ABORT return code still aborts */
             if((actuallyread == 0) || (actuallyread > readthisamountnow)) {
               /* this checks for greater-than only to make sure that the
                  CURL_READFUNC_ABORT return code still aborts */
-              failf(data, "Could only read %" FORMAT_OFF_T
-                    " bytes from the input",
-                    passed);
+              failf(data, "Could only read %" CURL_FORMAT_CURL_OFF_T
+                    " bytes from the input", passed);
               return CURLE_READ_ERROR;
             }
           } while(passed < data->state.resume_from);
               return CURLE_READ_ERROR;
             }
           } while(passed < data->state.resume_from);
@@ -2029,10 +2194,10 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
       }
 
       /* now, decrease the size of the read */
       }
 
       /* now, decrease the size of the read */
-      if(data->set.infilesize>0) {
-        data->set.infilesize -= data->state.resume_from;
+      if(data->state.infilesize>0) {
+        data->state.infilesize -= data->state.resume_from;
 
 
-        if(data->set.infilesize <= 0) {
+        if(data->state.infilesize <= 0) {
           failf(data, "File already completely uploaded");
           return CURLE_PARTIAL_FILE;
         }
           failf(data, "File already completely uploaded");
           return CURLE_PARTIAL_FILE;
         }
@@ -2047,7 +2212,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
      * ones if any such are specified.
      */
     if(((httpreq == HTTPREQ_GET) || (httpreq == HTTPREQ_HEAD)) &&
      * ones if any such are specified.
      */
     if(((httpreq == HTTPREQ_GET) || (httpreq == HTTPREQ_HEAD)) &&
-       !Curl_checkheaders(data, "Range:")) {
+       !Curl_checkheaders(conn, "Range:")) {
       /* if a line like this was already allocated, free the previous one */
       if(conn->allocptr.rangeline)
         free(conn->allocptr.rangeline);
       /* if a line like this was already allocated, free the previous one */
       if(conn->allocptr.rangeline)
         free(conn->allocptr.rangeline);
@@ -2055,7 +2220,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
                                          data->state.range);
     }
     else if((httpreq != HTTPREQ_GET) &&
                                          data->state.range);
     }
     else if((httpreq != HTTPREQ_GET) &&
-            !Curl_checkheaders(data, "Content-Range:")) {
+            !Curl_checkheaders(conn, "Content-Range:")) {
 
       /* if a line like this was already allocated, free the previous one */
       if(conn->allocptr.rangeline)
 
       /* if a line like this was already allocated, free the previous one */
       if(conn->allocptr.rangeline)
@@ -2066,18 +2231,18 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
            remote part so we tell the server (and act accordingly) that we
            upload the whole file (again) */
         conn->allocptr.rangeline =
            remote part so we tell the server (and act accordingly) that we
            upload the whole file (again) */
         conn->allocptr.rangeline =
-          aprintf("Content-Range: bytes 0-%" FORMAT_OFF_T
-                  "/%" FORMAT_OFF_T "\r\n",
-                  data->set.infilesize - 1, data->set.infilesize);
+          aprintf("Content-Range: bytes 0-%" CURL_FORMAT_CURL_OFF_T
+                  "/%" CURL_FORMAT_CURL_OFF_T "\r\n",
+                  data->state.infilesize - 1, data->state.infilesize);
 
       }
       else if(data->state.resume_from) {
         /* This is because "resume" was selected */
         curl_off_t total_expected_size=
 
       }
       else if(data->state.resume_from) {
         /* This is because "resume" was selected */
         curl_off_t total_expected_size=
-          data->state.resume_from + data->set.infilesize;
+          data->state.resume_from + data->state.infilesize;
         conn->allocptr.rangeline =
         conn->allocptr.rangeline =
-          aprintf("Content-Range: bytes %s%" FORMAT_OFF_T
-                  "/%" FORMAT_OFF_T "\r\n",
+          aprintf("Content-Range: bytes %s%" CURL_FORMAT_CURL_OFF_T
+                  "/%" CURL_FORMAT_CURL_OFF_T "\r\n",
                   data->state.range, total_expected_size-1,
                   total_expected_size);
       }
                   data->state.range, total_expected_size-1,
                   total_expected_size);
       }
@@ -2085,8 +2250,8 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
         /* Range was selected and then we just pass the incoming range and
            append total size */
         conn->allocptr.rangeline =
         /* Range was selected and then we just pass the incoming range and
            append total size */
         conn->allocptr.rangeline =
-          aprintf("Content-Range: bytes %s/%" FORMAT_OFF_T "\r\n",
-                  data->state.range, data->set.infilesize);
+          aprintf("Content-Range: bytes %s/%" CURL_FORMAT_CURL_OFF_T "\r\n",
+                  data->state.range, data->state.infilesize);
       }
       if(!conn->allocptr.rangeline)
         return CURLE_OUT_OF_MEMORY;
       }
       if(!conn->allocptr.rangeline)
         return CURLE_OUT_OF_MEMORY;
@@ -2095,7 +2260,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
 
   /* Use 1.1 unless the user specifically asked for 1.0 or the server only
      supports 1.0 */
 
   /* Use 1.1 unless the user specifically asked for 1.0 or the server only
      supports 1.0 */
-  httpstring= use_http_1_1(data, conn)?"1.1":"1.0";
+  httpstring= use_http_1_1plus(data, conn)?"1.1":"1.0";
 
   /* initialize a dynamic send-buffer */
   req_buffer = Curl_add_buffer_init();
 
   /* initialize a dynamic send-buffer */
   req_buffer = Curl_add_buffer_init();
@@ -2157,22 +2322,47 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
                      conn->allocptr.ref:"" /* Referer: <data> */,
                      (conn->bits.httpproxy &&
                       !conn->bits.tunnel_proxy &&
                      conn->allocptr.ref:"" /* Referer: <data> */,
                      (conn->bits.httpproxy &&
                       !conn->bits.tunnel_proxy &&
-                      !Curl_checkheaders(data, "Proxy-Connection:"))?
+                      !Curl_checkProxyheaders(conn, "Proxy-Connection:"))?
                      "Proxy-Connection: Keep-Alive\r\n":"",
                      te
       );
 
   /*
                      "Proxy-Connection: Keep-Alive\r\n":"",
                      te
       );
 
   /*
-   * Free userpwd now --- cannot reuse this for Negotiate and possibly NTLM
-   * with basic and digest, it will be freed anyway by the next request
+   * Free userpwd for Negotiate/NTLM. Cannot reuse as it is associated with
+   * the connection and shouldn't be repeated over it either.
    */
    */
+  switch (data->state.authhost.picked) {
+  case CURLAUTH_NEGOTIATE:
+  case CURLAUTH_NTLM:
+  case CURLAUTH_NTLM_WB:
+    Curl_safefree(conn->allocptr.userpwd);
+    break;
+  }
 
 
-  Curl_safefree (conn->allocptr.userpwd);
-  conn->allocptr.userpwd = NULL;
+  /*
+   * Same for proxyuserpwd
+   */
+  switch (data->state.authproxy.picked) {
+  case CURLAUTH_NEGOTIATE:
+  case CURLAUTH_NTLM:
+  case CURLAUTH_NTLM_WB:
+    Curl_safefree(conn->allocptr.proxyuserpwd);
+    break;
+  }
 
   if(result)
     return result;
 
 
   if(result)
     return result;
 
+  if(!(conn->handler->flags&PROTOPT_SSL) &&
+     conn->httpversion != 20 &&
+     (data->set.httpversion == CURL_HTTP_VERSION_2_0)) {
+    /* append HTTP2 upgrade magic stuff to the HTTP request if it isn't done
+       over SSL */
+    result = Curl_http2_request_upgrade(req_buffer, conn);
+    if(result)
+      return result;
+  }
+
 #if !defined(CURL_DISABLE_COOKIES)
   if(data->cookies || addcookies) {
     struct Cookie *co=NULL; /* no cookies from start */
 #if !defined(CURL_DISABLE_COOKIES)
   if(data->cookies || addcookies) {
     struct Cookie *co=NULL; /* no cookies from start */
@@ -2209,17 +2399,16 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
       }
       Curl_cookie_freelist(store, FALSE); /* free the cookie list */
     }
       }
       Curl_cookie_freelist(store, FALSE); /* free the cookie list */
     }
-    if(addcookies && (CURLE_OK == result)) {
+    if(addcookies && !result) {
       if(!count)
         result = Curl_add_bufferf(req_buffer, "Cookie: ");
       if(!count)
         result = Curl_add_bufferf(req_buffer, "Cookie: ");
-      if(CURLE_OK == result) {
-        result = Curl_add_bufferf(req_buffer, "%s%s",
-                                  count?"; ":"",
+      if(!result) {
+        result = Curl_add_bufferf(req_buffer, "%s%s", count?"; ":"",
                                   addcookies);
         count++;
       }
     }
                                   addcookies);
         count++;
       }
     }
-    if(count && (CURLE_OK == result))
+    if(count && !result)
       result = Curl_add_buffer(req_buffer, "\r\n", 2);
 
     if(result)
       result = Curl_add_buffer(req_buffer, "\r\n", 2);
 
     if(result)
@@ -2233,12 +2422,12 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
       return result;
   }
 
       return result;
   }
 
-  result = Curl_add_custom_headers(conn, req_buffer);
+  result = Curl_add_custom_headers(conn, FALSE, req_buffer);
   if(result)
     return result;
 
   http->postdata = NULL;  /* nothing to post at this point */
   if(result)
     return result;
 
   http->postdata = NULL;  /* nothing to post at this point */
-  Curl_pgrsSetUploadSize(data, 0); /* upload size is 0 atm */
+  Curl_pgrsSetUploadSize(data, -1); /* upload size is unknown atm */
 
   /* If 'authdone' is FALSE, we must not set the write socket index to the
      Curl_transfer() call below, as we're not ready to actually upload any
 
   /* If 'authdone' is FALSE, we must not set the write socket index to the
      Curl_transfer() call below, as we're not ready to actually upload any
@@ -2283,11 +2472,11 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
     http->sending = HTTPSEND_BODY;
 
     if(!data->req.upload_chunky &&
     http->sending = HTTPSEND_BODY;
 
     if(!data->req.upload_chunky &&
-       !Curl_checkheaders(data, "Content-Length:")) {
+       !Curl_checkheaders(conn, "Content-Length:")) {
       /* only add Content-Length if not uploading chunked */
       result = Curl_add_bufferf(req_buffer,
       /* only add Content-Length if not uploading chunked */
       result = Curl_add_bufferf(req_buffer,
-                                "Content-Length: %" FORMAT_OFF_T "\r\n",
-                                http->postsize);
+                                "Content-Length: %" CURL_FORMAT_CURL_OFF_T
+                                "\r\n", http->postsize);
       if(result)
         return result;
     }
       if(result)
         return result;
     }
@@ -2352,21 +2541,23 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
     if(conn->bits.authneg)
       postsize = 0;
     else
     if(conn->bits.authneg)
       postsize = 0;
     else
-      postsize = data->set.infilesize;
+      postsize = data->state.infilesize;
 
     if((postsize != -1) && !data->req.upload_chunky &&
 
     if((postsize != -1) && !data->req.upload_chunky &&
-       !Curl_checkheaders(data, "Content-Length:")) {
+       !Curl_checkheaders(conn, "Content-Length:")) {
       /* only add Content-Length if not uploading chunked */
       result = Curl_add_bufferf(req_buffer,
       /* only add Content-Length if not uploading chunked */
       result = Curl_add_bufferf(req_buffer,
-                                "Content-Length: %" FORMAT_OFF_T "\r\n",
-                                postsize );
+                                "Content-Length: %" CURL_FORMAT_CURL_OFF_T
+                                "\r\n", postsize);
       if(result)
         return result;
     }
 
       if(result)
         return result;
     }
 
-    result = expect100(data, conn, req_buffer);
-    if(result)
-      return result;
+    if(postsize != 0) {
+      result = expect100(data, conn, req_buffer);
+      if(result)
+        return result;
+    }
 
     result = Curl_add_buffer(req_buffer, "\r\n", 2); /* end of headers */
     if(result)
 
     result = Curl_add_buffer(req_buffer, "\r\n", 2); /* end of headers */
     if(result)
@@ -2400,23 +2591,22 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
         data->set.postfieldsize:
         (data->set.postfields? (curl_off_t)strlen(data->set.postfields):-1);
     }
         data->set.postfieldsize:
         (data->set.postfields? (curl_off_t)strlen(data->set.postfields):-1);
     }
-    if(!data->req.upload_chunky) {
-      /* We only set Content-Length and allow a custom Content-Length if
-         we don't upload data chunked, as RFC2616 forbids us to set both
-         kinds of headers (Transfer-Encoding: chunked and Content-Length) */
-
-      if(conn->bits.authneg || !Curl_checkheaders(data, "Content-Length:")) {
-        /* we allow replacing this header if not during auth negotiation,
-           although it isn't very wise to actually set your own */
-        result = Curl_add_bufferf(req_buffer,
-                                  "Content-Length: %" FORMAT_OFF_T"\r\n",
-                                  postsize);
-        if(result)
-          return result;
-      }
+
+    /* We only set Content-Length and allow a custom Content-Length if
+       we don't upload data chunked, as RFC2616 forbids us to set both
+       kinds of headers (Transfer-Encoding: chunked and Content-Length) */
+    if((postsize != -1) && !data->req.upload_chunky &&
+       !Curl_checkheaders(conn, "Content-Length:")) {
+      /* we allow replacing this header if not during auth negotiation,
+         although it isn't very wise to actually set your own */
+      result = Curl_add_bufferf(req_buffer,
+                                "Content-Length: %" CURL_FORMAT_CURL_OFF_T
+                                "\r\n", postsize);
+      if(result)
+        return result;
     }
 
     }
 
-    if(!Curl_checkheaders(data, "Content-Type:")) {
+    if(!Curl_checkheaders(conn, "Content-Type:")) {
       result = Curl_add_bufferf(req_buffer,
                                 "Content-Type: application/"
                                 "x-www-form-urlencoded\r\n");
       result = Curl_add_bufferf(req_buffer,
                                 "Content-Type: application/"
                                 "x-www-form-urlencoded\r\n");
@@ -2428,7 +2618,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
        the somewhat bigger ones we allow the app to disable it. Just make
        sure that the expect100header is always set to the preferred value
        here. */
        the somewhat bigger ones we allow the app to disable it. Just make
        sure that the expect100header is always set to the preferred value
        here. */
-    ptr = Curl_checkheaders(data, "Expect:");
+    ptr = Curl_checkheaders(conn, "Expect:");
     if(ptr) {
       data->state.expect100header =
         Curl_compareheader(ptr, "Expect:", "100-continue");
     if(ptr) {
       data->state.expect100header =
         Curl_compareheader(ptr, "Expect:", "100-continue");
@@ -2443,7 +2633,10 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
 
     if(data->set.postfields) {
 
 
     if(data->set.postfields) {
 
-      if(!data->state.expect100header &&
+      /* In HTTP2, we send request body in DATA frame regardless of
+         its size. */
+      if(conn->httpversion != 20 &&
+         !data->state.expect100header &&
          (postsize < MAX_INITIAL_POST_SIZE))  {
         /* if we don't use expect: 100  AND
            postsize is less than MAX_INITIAL_POST_SIZE
          (postsize < MAX_INITIAL_POST_SIZE))  {
         /* if we don't use expect: 100  AND
            postsize is less than MAX_INITIAL_POST_SIZE
@@ -2467,17 +2660,16 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
           if(postsize) {
             /* Append the POST data chunky-style */
             result = Curl_add_bufferf(req_buffer, "%x\r\n", (int)postsize);
           if(postsize) {
             /* Append the POST data chunky-style */
             result = Curl_add_bufferf(req_buffer, "%x\r\n", (int)postsize);
-            if(CURLE_OK == result) {
+            if(!result) {
               result = Curl_add_buffer(req_buffer, data->set.postfields,
                                        (size_t)postsize);
               result = Curl_add_buffer(req_buffer, data->set.postfields,
                                        (size_t)postsize);
-              if(CURLE_OK == result)
-                 result = Curl_add_buffer(req_buffer, "\r\n", 2);
+              if(!result)
+                result = Curl_add_buffer(req_buffer, "\r\n", 2);
               included_body = postsize + 2;
             }
           }
               included_body = postsize + 2;
             }
           }
-          if(CURLE_OK == result)
-            result = Curl_add_buffer(req_buffer,
-                                     "\x30\x0d\x0a\x0d\x0a", 5);
+          if(!result)
+            result = Curl_add_buffer(req_buffer, "\x30\x0d\x0a\x0d\x0a", 5);
           /* 0  CR  LF  CR  LF */
           included_body += 5;
         }
           /* 0  CR  LF  CR  LF */
           included_body += 5;
         }
@@ -2574,8 +2766,8 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
     if(http->writebytecount >= postsize) {
       /* already sent the entire request body, mark the "upload" as
          complete */
     if(http->writebytecount >= postsize) {
       /* already sent the entire request body, mark the "upload" as
          complete */
-      infof(data, "upload completely sent off: %" FORMAT_OFF_T " out of "
-            "%" FORMAT_OFF_T " bytes\n",
+      infof(data, "upload completely sent off: %" CURL_FORMAT_CURL_OFF_T
+            " out of %" CURL_FORMAT_CURL_OFF_T " bytes\n",
             http->writebytecount, postsize);
       data->req.upload_done = TRUE;
       data->req.keepon &= ~KEEP_SEND; /* we're done writing */
             http->writebytecount, postsize);
       data->req.upload_done = TRUE;
       data->req.keepon &= ~KEEP_SEND; /* we're done writing */
@@ -2865,17 +3057,38 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
         k->header = TRUE;
         k->headerline = 0; /* restart the header line counter */
 
         k->header = TRUE;
         k->headerline = 0; /* restart the header line counter */
 
-        /* if we did wait for this do enable write now! */
-        if(k->exp100) {
-          k->exp100 = EXP100_SEND_DATA;
-          k->keepon |= KEEP_SEND;
+        /* "A user agent MAY ignore unexpected 1xx status responses." */
+        switch(k->httpcode) {
+        case 100:
+          /* if we did wait for this do enable write now! */
+          if(k->exp100) {
+            k->exp100 = EXP100_SEND_DATA;
+            k->keepon |= KEEP_SEND;
+          }
+          break;
+        case 101:
+          /* Switching Protocols */
+          if(k->upgr101 == UPGR101_REQUESTED) {
+            infof(data, "Received 101\n");
+            k->upgr101 = UPGR101_RECEIVED;
+
+            /* switch to http2 now. The bytes after response headers
+               are also processed here, otherwise they are lost. */
+            result = Curl_http2_switched(conn, k->str, *nread);
+            if(result)
+              return result;
+            *nread = 0;
+          }
+          break;
+        default:
+          break;
         }
       }
       else {
         k->header = FALSE; /* no more header to parse! */
 
         if((k->size == -1) && !k->chunk && !conn->bits.close &&
         }
       }
       else {
         k->header = FALSE; /* no more header to parse! */
 
         if((k->size == -1) && !k->chunk && !conn->bits.close &&
-           (conn->httpversion >= 11) &&
+           (conn->httpversion == 11) &&
            !(conn->handler->protocol & CURLPROTO_RTSP) &&
            data->set.httpreq != HTTPREQ_HEAD) {
           /* On HTTP 1.1, when connection is not to get closed, but no
            !(conn->handler->protocol & CURLPROTO_RTSP) &&
            data->set.httpreq != HTTPREQ_HEAD) {
           /* On HTTP 1.1, when connection is not to get closed, but no
@@ -2885,7 +3098,7 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
              signal the end of the document. */
           infof(data, "no chunk, no close, no size. Assume close to "
                 "signal end\n");
              signal the end of the document. */
           infof(data, "no chunk, no close, no size. Assume close to "
                 "signal end\n");
-          conn->bits.close = TRUE;
+          connclose(conn, "HTTP: No end-of-message indicator");
         }
       }
 
         }
       }
 
@@ -2954,7 +3167,7 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
                */
               if(!k->upload_done) {
                 infof(data, "HTTP error before end of send, stop sending\n");
                */
               if(!k->upload_done) {
                 infof(data, "HTTP error before end of send, stop sending\n");
-                conn->bits.close = TRUE; /* close after this */
+                connclose(conn, "Stop sending data before everything sent");
                 k->upload_done = TRUE;
                 k->keepon &= ~KEEP_SEND; /* don't send */
                 if(data->state.expect100header)
                 k->upload_done = TRUE;
                 k->keepon &= ~KEEP_SEND; /* don't send */
                 if(data->state.expect100header)
@@ -3066,14 +3279,27 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
 #define HEADER1 k->p /* no conversion needed, just use k->p */
 #endif /* CURL_DOES_CONVERSIONS */
 
 #define HEADER1 k->p /* no conversion needed, just use k->p */
 #endif /* CURL_DOES_CONVERSIONS */
 
-      if(conn->handler->protocol & CURLPROTO_HTTP) {
+      if(conn->handler->protocol & PROTO_FAMILY_HTTP) {
+        /*
+         * https://tools.ietf.org/html/rfc7230#section-3.1.2
+         *
+         * The reponse code is always a three-digit number in HTTP as the spec
+         * says. We try to allow any number here, but we cannot make
+         * guarantees on future behaviors since it isn't within the protocol.
+         */
         nc = sscanf(HEADER1,
         nc = sscanf(HEADER1,
-                    " HTTP/%d.%d %3d",
+                    " HTTP/%d.%d %d",
                     &httpversion_major,
                     &conn->httpversion,
                     &k->httpcode);
         if(nc==3) {
           conn->httpversion += 10 * httpversion_major;
                     &httpversion_major,
                     &conn->httpversion,
                     &k->httpcode);
         if(nc==3) {
           conn->httpversion += 10 * httpversion_major;
+
+          if(k->upgr101 == UPGR101_RECEIVED) {
+            /* supposedly upgraded to http2 now */
+            if(conn->httpversion != 20)
+              infof(data, "Lying server, not serving HTTP/2\n");
+          }
         }
         else {
           /* this is the real world, not a Nirvana
         }
         else {
           /* this is the real world, not a Nirvana
@@ -3149,7 +3375,17 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
              we get one of those fancy headers that tell us the
              server keeps it open for us! */
           infof(data, "HTTP 1.0, assume close after body\n");
              we get one of those fancy headers that tell us the
              server keeps it open for us! */
           infof(data, "HTTP 1.0, assume close after body\n");
-          conn->bits.close = TRUE;
+          connclose(conn, "HTTP/1.0 close after body");
+        }
+        else if(conn->httpversion == 20 ||
+                (k->upgr101 == UPGR101_REQUESTED && k->httpcode == 101)) {
+          /* Don't enable pipelining for HTTP/2 or upgraded connection. For
+             HTTP/2, we do not support multiplexing. In general, requests
+             cannot be pipelined in upgraded connection, since it is now
+             different protocol. */
+          DEBUGF(infof(data,
+                       "HTTP 2 or upgraded connection do not support "
+                       "pipelining for now\n"));
         }
         else if(conn->httpversion >= 11 &&
                 !conn->bits.close) {
         }
         else if(conn->httpversion >= 11 &&
                 !conn->bits.close) {
@@ -3224,14 +3460,14 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
         /* Negative Content-Length is really odd, and we know it
            happens for example when older Apache servers send large
            files */
         /* Negative Content-Length is really odd, and we know it
            happens for example when older Apache servers send large
            files */
-        conn->bits.close = TRUE;
-        infof(data, "Negative content-length: %" FORMAT_OFF_T
+        connclose(conn, "negative content-length");
+        infof(data, "Negative content-length: %" CURL_FORMAT_CURL_OFF_T
               ", closing after transfer\n", contentlength);
       }
     }
     /* check for Content-Type: header lines to get the MIME-type */
     else if(checkprefix("Content-Type:", k->p)) {
               ", closing after transfer\n", contentlength);
       }
     }
     /* check for Content-Type: header lines to get the MIME-type */
     else if(checkprefix("Content-Type:", k->p)) {
-      char *contenttype = copy_header_value(k->p);
+      char *contenttype = Curl_copy_header_value(k->p);
       if(!contenttype)
         return CURLE_OUT_OF_MEMORY;
       if(!*contenttype)
       if(!contenttype)
         return CURLE_OUT_OF_MEMORY;
       if(!*contenttype)
@@ -3243,7 +3479,7 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
       }
     }
     else if(checkprefix("Server:", k->p)) {
       }
     }
     else if(checkprefix("Server:", k->p)) {
-      char *server_name = copy_header_value(k->p);
+      char *server_name = Curl_copy_header_value(k->p);
 
       /* Turn off pipelining if the server version is blacklisted */
       if(conn->bundle && conn->bundle->server_supports_pipelining) {
 
       /* Turn off pipelining if the server version is blacklisted */
       if(conn->bundle && conn->bundle->server_supports_pipelining) {
@@ -3262,7 +3498,7 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
        * connection will be kept alive for our pleasure.
        * Default action for 1.0 is to close.
        */
        * connection will be kept alive for our pleasure.
        * Default action for 1.0 is to close.
        */
-      conn->bits.close = FALSE; /* don't close when done */
+      connkeep(conn, "Proxy-Connection keep-alive"); /* don't close */
       infof(data, "HTTP/1.0 proxy connection set to keep alive!\n");
     }
     else if((conn->httpversion == 11) &&
       infof(data, "HTTP/1.0 proxy connection set to keep alive!\n");
     }
     else if((conn->httpversion == 11) &&
@@ -3273,7 +3509,7 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
        * We get a HTTP/1.1 response from a proxy and it says it'll
        * close down after this transfer.
        */
        * We get a HTTP/1.1 response from a proxy and it says it'll
        * close down after this transfer.
        */
-      conn->bits.close = TRUE; /* close when done */
+      connclose(conn, "Proxy-Connection: asked to close after done");
       infof(data, "HTTP/1.1 proxy connection set close!\n");
     }
     else if((conn->httpversion == 10) &&
       infof(data, "HTTP/1.1 proxy connection set close!\n");
     }
     else if((conn->httpversion == 10) &&
@@ -3284,7 +3520,7 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
        * pleasure.  Default action for 1.0 is to close.
        *
        * [RFC2068, section 19.7.1] */
        * pleasure.  Default action for 1.0 is to close.
        *
        * [RFC2068, section 19.7.1] */
-      conn->bits.close = FALSE; /* don't close when done */
+      connkeep(conn, "Connection keep-alive");
       infof(data, "HTTP/1.0 connection set to keep alive!\n");
     }
     else if(Curl_compareheader(k->p, "Connection:", "close")) {
       infof(data, "HTTP/1.0 connection set to keep alive!\n");
     }
     else if(Curl_compareheader(k->p, "Connection:", "close")) {
@@ -3294,7 +3530,7 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
        * the connection will close when this request has been
        * served.
        */
        * the connection will close when this request has been
        * served.
        */
-      conn->bits.close = TRUE; /* close when done */
+      connclose(conn, "Connection: close used");
     }
     else if(checkprefix("Transfer-Encoding:", k->p)) {
       /* One or more encodings. We check for chunked and/or a compression
     }
     else if(checkprefix("Transfer-Encoding:", k->p)) {
       /* One or more encodings. We check for chunked and/or a compression
@@ -3363,7 +3599,8 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
 
     }
     else if(checkprefix("Content-Encoding:", k->p) &&
 
     }
     else if(checkprefix("Content-Encoding:", k->p) &&
-            data->set.str[STRING_ENCODING]) {
+            (data->set.str[STRING_ENCODING] ||
+             conn->httpversion == 20)) {
       /*
        * Process Content-Encoding. Look for the values: identity,
        * gzip, deflate, compress, x-gzip and x-compress. x-gzip and
       /*
        * Process Content-Encoding. Look for the values: identity,
        * gzip, deflate, compress, x-gzip and x-compress. x-gzip and
@@ -3394,23 +3631,30 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
       /* Content-Range: bytes [num]-
          Content-Range: bytes: [num]-
          Content-Range: [num]-
       /* Content-Range: bytes [num]-
          Content-Range: bytes: [num]-
          Content-Range: [num]-
+         Content-Range: [asterisk]/[total]
 
          The second format was added since Sun's webserver
          JavaWebServer/1.1.1 obviously sends the header this way!
          The third added since some servers use that!
 
          The second format was added since Sun's webserver
          JavaWebServer/1.1.1 obviously sends the header this way!
          The third added since some servers use that!
+         The forth means the requested range was unsatisfied.
       */
 
       char *ptr = k->p + 14;
 
       */
 
       char *ptr = k->p + 14;
 
-      /* Move forward until first digit */
-      while(*ptr && !ISDIGIT(*ptr))
+      /* Move forward until first digit or asterisk */
+      while(*ptr && !ISDIGIT(*ptr) && *ptr != '*')
         ptr++;
 
         ptr++;
 
-      k->offset = curlx_strtoofft(ptr, NULL, 10);
+      /* if it truly stopped on a digit */
+      if(ISDIGIT(*ptr)) {
+        k->offset = curlx_strtoofft(ptr, NULL, 10);
 
 
-      if(data->state.resume_from == k->offset)
-        /* we asked for a resume and we got it */
-        k->content_range = TRUE;
+        if(data->state.resume_from == k->offset)
+          /* we asked for a resume and we got it */
+          k->content_range = TRUE;
+      }
+      else
+        data->state.resume_from = 0; /* get everything */
     }
 #if !defined(CURL_DISABLE_COOKIES)
     else if(data->cookies &&
     }
 #if !defined(CURL_DISABLE_COOKIES)
     else if(data->cookies &&
@@ -3439,7 +3683,16 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
              (401 == k->httpcode)) ||
             (checkprefix("Proxy-authenticate:", k->p) &&
              (407 == k->httpcode))) {
              (401 == k->httpcode)) ||
             (checkprefix("Proxy-authenticate:", k->p) &&
              (407 == k->httpcode))) {
-      result = Curl_http_input_auth(conn, k->httpcode, k->p);
+
+      bool proxy = (k->httpcode == 407) ? TRUE : FALSE;
+      char *auth = Curl_copy_header_value(k->p);
+      if(!auth)
+        return CURLE_OUT_OF_MEMORY;
+
+      result = Curl_http_input_auth(conn, proxy, auth);
+
+      Curl_safefree(auth);
+
       if(result)
         return result;
     }
       if(result)
         return result;
     }
@@ -3447,7 +3700,7 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
             checkprefix("Location:", k->p) &&
             !data->req.location) {
       /* this is the URL that the server advises us to use instead */
             checkprefix("Location:", k->p) &&
             !data->req.location) {
       /* this is the URL that the server advises us to use instead */
-      char *location = copy_header_value(k->p);
+      char *location = Curl_copy_header_value(k->p);
       if(!location)
         return CURLE_OUT_OF_MEMORY;
       if(!*location)
       if(!location)
         return CURLE_OUT_OF_MEMORY;
       if(!*location)
index 7236dd8..907755a 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
  * KIND, either express or implied.
  *
  ***************************************************************************/
+#include "curl_setup.h"
+
 #ifndef CURL_DISABLE_HTTP
 
 #ifndef CURL_DISABLE_HTTP
 
+#ifdef USE_NGHTTP2
+#include <nghttp2/nghttp2.h>
+#endif
+
 extern const struct Curl_handler Curl_handler_http;
 
 #ifdef USE_SSL
 extern const struct Curl_handler Curl_handler_https;
 #endif
 
 extern const struct Curl_handler Curl_handler_http;
 
 #ifdef USE_SSL
 extern const struct Curl_handler Curl_handler_https;
 #endif
 
+/* Header specific functions */
 bool Curl_compareheader(const char *headerline,  /* line to check */
                         const char *header,   /* header keyword _with_ colon */
                         const char *content); /* content string to find */
 
 bool Curl_compareheader(const char *headerline,  /* line to check */
                         const char *header,   /* header keyword _with_ colon */
                         const char *content); /* content string to find */
 
-char *Curl_checkheaders(struct SessionHandle *data, const char *thisheader);
+char *Curl_checkheaders(const struct connectdata *conn,
+                        const char *thisheader);
+char *Curl_copy_header_value(const char *header);
 
 
+char *Curl_checkProxyheaders(const struct connectdata *conn,
+                             const char *thisheader);
 /* ------------------------------------------------------------------------- */
 /*
  * The add_buffer series of functions are used to build one large memory chunk
 /* ------------------------------------------------------------------------- */
 /*
  * The add_buffer series of functions are used to build one large memory chunk
@@ -60,12 +71,14 @@ CURLcode Curl_add_buffer_send(Curl_send_buffer *in,
 CURLcode Curl_add_timecondition(struct SessionHandle *data,
                                 Curl_send_buffer *buf);
 CURLcode Curl_add_custom_headers(struct connectdata *conn,
 CURLcode Curl_add_timecondition(struct SessionHandle *data,
                                 Curl_send_buffer *buf);
 CURLcode Curl_add_custom_headers(struct connectdata *conn,
-                                   Curl_send_buffer *req_buffer);
+                                 bool is_connect,
+                                 Curl_send_buffer *req_buffer);
 
 /* protocol-specific functions set up to be called by the main engine */
 CURLcode Curl_http(struct connectdata *conn, bool *done);
 CURLcode Curl_http_done(struct connectdata *, CURLcode, bool premature);
 CURLcode Curl_http_connect(struct connectdata *conn, bool *done);
 
 /* protocol-specific functions set up to be called by the main engine */
 CURLcode Curl_http(struct connectdata *conn, bool *done);
 CURLcode Curl_http_done(struct connectdata *, CURLcode, bool premature);
 CURLcode Curl_http_connect(struct connectdata *conn, bool *done);
+CURLcode Curl_http_setup_conn(struct connectdata *conn);
 
 /* The following functions are defined in http_chunks.c */
 void Curl_httpchunk_init(struct connectdata *conn);
 
 /* The following functions are defined in http_chunks.c */
 void Curl_httpchunk_init(struct connectdata *conn);
@@ -74,8 +87,8 @@ CHUNKcode Curl_httpchunk_read(struct connectdata *conn, char *datap,
 
 /* These functions are in http.c */
 void Curl_http_auth_stage(struct SessionHandle *data, int stage);
 
 /* These functions are in http.c */
 void Curl_http_auth_stage(struct SessionHandle *data, int stage);
-CURLcode Curl_http_input_auth(struct connectdata *conn,
-                              int httpcode, const char *header);
+CURLcode Curl_http_input_auth(struct connectdata *conn, bool proxy,
+                              const char *auth);
 CURLcode Curl_http_auth_act(struct connectdata *conn);
 CURLcode Curl_http_perhapsrewind(struct connectdata *conn);
 
 CURLcode Curl_http_auth_act(struct connectdata *conn);
 CURLcode Curl_http_perhapsrewind(struct connectdata *conn);
 
@@ -141,6 +154,45 @@ struct HTTP {
                         points to an allocated send_buffer struct */
 };
 
                         points to an allocated send_buffer struct */
 };
 
+typedef int (*sending)(void); /* Curl_send */
+typedef int (*recving)(void); /* Curl_recv */
+
+struct http_conn {
+#ifdef USE_NGHTTP2
+#define H2_BINSETTINGS_LEN 80
+  nghttp2_session *h2;
+  uint8_t binsettings[H2_BINSETTINGS_LEN];
+  size_t  binlen; /* length of the binsettings data */
+  char *mem;     /* points to a buffer in memory to store */
+  size_t len;    /* size of the buffer 'mem' points to */
+  bool bodystarted;
+  sending send_underlying; /* underlying send Curl_send callback */
+  recving recv_underlying; /* underlying recv Curl_recv callback */
+  bool closed; /* TRUE on HTTP2 stream close */
+  Curl_send_buffer *header_recvbuf; /* store response headers.  We
+                                       store non-final and final
+                                       response headers into it. */
+  size_t nread_header_recvbuf; /* number of bytes in header_recvbuf
+                                  fed into upper layer */
+  int32_t stream_id; /* stream we are interested in */
+  const uint8_t *data; /* pointer to data chunk, received in
+                          on_data_chunk */
+  size_t datalen; /* the number of bytes left in data */
+  char *inbuf; /* buffer to receive data from underlying socket */
+  /* We need separate buffer for transmission and reception because we
+     may call nghttp2_session_send() after the
+     nghttp2_session_mem_recv() but mem buffer is still not full. In
+     this case, we wrongly sends the content of mem buffer if we share
+     them for both cases. */
+  const uint8_t *upload_mem; /* points to a buffer to read from */
+  size_t upload_len; /* size of the buffer 'upload_mem' points to */
+  size_t upload_left; /* number of bytes left to upload */
+  int status_code; /* HTTP status code */
+#else
+  int unused; /* prevent a compiler warning */
+#endif
+};
+
 CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
                                      struct connectdata *conn,
                                      ssize_t *nread,
 CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
                                      struct connectdata *conn,
                                      ssize_t *nread,
diff --git a/lib/http2.c b/lib/http2.c
new file mode 100644 (file)
index 0000000..dac9ab4
--- /dev/null
@@ -0,0 +1,1051 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+
+#include "curl_setup.h"
+
+#ifdef USE_NGHTTP2
+#define _MPRINTF_REPLACE
+#include <curl/mprintf.h>
+
+#include <nghttp2/nghttp2.h>
+#include "urldata.h"
+#include "http2.h"
+#include "http.h"
+#include "sendf.h"
+#include "curl_base64.h"
+#include "curl_memory.h"
+#include "rawstr.h"
+#include "multiif.h"
+
+/* include memdebug.h last */
+#include "memdebug.h"
+
+#if (NGHTTP2_VERSION_NUM < 0x000600)
+#error too old nghttp2 version, upgrade!
+#endif
+
+static int http2_perform_getsock(const struct connectdata *conn,
+                                 curl_socket_t *sock, /* points to
+                                                         numsocks
+                                                         number of
+                                                         sockets */
+                                 int numsocks)
+{
+  const struct http_conn *httpc = &conn->proto.httpc;
+  int bitmap = GETSOCK_BLANK;
+  (void)numsocks;
+
+  /* TODO We should check underlying socket state if it is SSL socket
+     because of renegotiation. */
+  sock[0] = conn->sock[FIRSTSOCKET];
+
+  if(nghttp2_session_want_read(httpc->h2))
+    bitmap |= GETSOCK_READSOCK(FIRSTSOCKET);
+
+  if(nghttp2_session_want_write(httpc->h2))
+    bitmap |= GETSOCK_WRITESOCK(FIRSTSOCKET);
+
+  return bitmap;
+}
+
+static int http2_getsock(struct connectdata *conn,
+                         curl_socket_t *sock, /* points to numsocks
+                                                 number of sockets */
+                         int numsocks)
+{
+  return http2_perform_getsock(conn, sock, numsocks);
+}
+
+static CURLcode http2_disconnect(struct connectdata *conn,
+                                 bool dead_connection)
+{
+  struct http_conn *httpc = &conn->proto.httpc;
+  (void)dead_connection;
+
+  infof(conn->data, "HTTP/2 DISCONNECT starts now\n");
+
+  nghttp2_session_del(httpc->h2);
+
+  Curl_safefree(httpc->header_recvbuf->buffer);
+  Curl_safefree(httpc->header_recvbuf);
+
+  Curl_safefree(httpc->inbuf);
+
+  infof(conn->data, "HTTP/2 DISCONNECT done\n");
+
+  return CURLE_OK;
+}
+
+/*
+ * HTTP2 handler interface. This isn't added to the general list of protocols
+ * but will be used at run-time when the protocol is dynamically switched from
+ * HTTP to HTTP2.
+ */
+const struct Curl_handler Curl_handler_http2 = {
+  "HTTP2",                              /* scheme */
+  ZERO_NULL,                            /* setup_connection */
+  Curl_http,                            /* do_it */
+  ZERO_NULL,                            /* done */
+  ZERO_NULL,                            /* do_more */
+  ZERO_NULL,                            /* connect_it */
+  ZERO_NULL,                            /* connecting */
+  ZERO_NULL,                            /* doing */
+  http2_getsock,                        /* proto_getsock */
+  http2_getsock,                        /* doing_getsock */
+  ZERO_NULL,                            /* domore_getsock */
+  http2_perform_getsock,                /* perform_getsock */
+  http2_disconnect,                     /* disconnect */
+  ZERO_NULL,                            /* readwrite */
+  PORT_HTTP,                            /* defport */
+  CURLPROTO_HTTP,                       /* protocol */
+  PROTOPT_NONE                          /* flags */
+};
+
+const struct Curl_handler Curl_handler_http2_ssl = {
+  "HTTP2",                              /* scheme */
+  ZERO_NULL,                            /* setup_connection */
+  Curl_http,                            /* do_it */
+  ZERO_NULL,                            /* done */
+  ZERO_NULL,                            /* do_more */
+  ZERO_NULL,                            /* connect_it */
+  ZERO_NULL,                            /* connecting */
+  ZERO_NULL,                            /* doing */
+  http2_getsock,                        /* proto_getsock */
+  http2_getsock,                        /* doing_getsock */
+  ZERO_NULL,                            /* domore_getsock */
+  http2_perform_getsock,                /* perform_getsock */
+  http2_disconnect,                     /* disconnect */
+  ZERO_NULL,                            /* readwrite */
+  PORT_HTTP,                            /* defport */
+  CURLPROTO_HTTPS,                      /* protocol */
+  PROTOPT_SSL                           /* flags */
+};
+
+/*
+ * Store nghttp2 version info in this buffer, Prefix with a space.  Return
+ * total length written.
+ */
+int Curl_http2_ver(char *p, size_t len)
+{
+  nghttp2_info *h2 = nghttp2_version(0);
+  return snprintf(p, len, " nghttp2/%s", h2->version_str);
+}
+
+/*
+ * The implementation of nghttp2_send_callback type. Here we write |data| with
+ * size |length| to the network and return the number of bytes actually
+ * written. See the documentation of nghttp2_send_callback for the details.
+ */
+static ssize_t send_callback(nghttp2_session *h2,
+                             const uint8_t *data, size_t length, int flags,
+                             void *userp)
+{
+  struct connectdata *conn = (struct connectdata *)userp;
+  struct http_conn *httpc = &conn->proto.httpc;
+  ssize_t written;
+  CURLcode result = CURLE_OK;
+
+  (void)h2;
+  (void)flags;
+
+  written = ((Curl_send*)httpc->send_underlying)(conn, FIRSTSOCKET,
+                                                 data, length, &result);
+
+  if(result == CURLE_AGAIN) {
+    return NGHTTP2_ERR_WOULDBLOCK;
+  }
+
+  if(written == -1) {
+    failf(conn->data, "Failed sending HTTP2 data");
+    return NGHTTP2_ERR_CALLBACK_FAILURE;
+  }
+
+  if(!written)
+    return NGHTTP2_ERR_WOULDBLOCK;
+
+  return written;
+}
+
+static int on_frame_recv(nghttp2_session *session, const nghttp2_frame *frame,
+                         void *userp)
+{
+  struct connectdata *conn = (struct connectdata *)userp;
+  struct http_conn *c = &conn->proto.httpc;
+  int rv;
+  size_t left, ncopy;
+
+  (void)session;
+  (void)frame;
+  infof(conn->data, "on_frame_recv() was called with header %x\n",
+        frame->hd.type);
+  switch(frame->hd.type) {
+  case NGHTTP2_DATA:
+    /* If body started, then receiving DATA is illegal. */
+    if(!c->bodystarted) {
+      rv = nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE,
+                                     frame->hd.stream_id,
+                                     NGHTTP2_PROTOCOL_ERROR);
+
+      if(nghttp2_is_fatal(rv)) {
+        return NGHTTP2_ERR_CALLBACK_FAILURE;
+      }
+    }
+    break;
+  case NGHTTP2_HEADERS:
+    if(frame->headers.cat == NGHTTP2_HCAT_REQUEST)
+      break;
+
+    if(c->bodystarted) {
+      /* Only valid HEADERS after body started is trailer header,
+         which is not fully supported in this code.  If HEADERS is not
+         trailer, then it is a PROTOCOL_ERROR. */
+      if((frame->hd.flags & NGHTTP2_FLAG_END_STREAM) == 0) {
+        rv = nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE,
+                                       frame->hd.stream_id,
+                                       NGHTTP2_PROTOCOL_ERROR);
+
+        if(nghttp2_is_fatal(rv)) {
+          return NGHTTP2_ERR_CALLBACK_FAILURE;
+        }
+      }
+      break;
+    }
+
+    if(c->status_code == -1) {
+      /* No :status header field means PROTOCOL_ERROR. */
+      rv = nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE,
+                                     frame->hd.stream_id,
+                                     NGHTTP2_PROTOCOL_ERROR);
+
+      if(nghttp2_is_fatal(rv)) {
+        return NGHTTP2_ERR_CALLBACK_FAILURE;
+      }
+
+      break;
+    }
+
+    /* Only final status code signals the end of header */
+    if(c->status_code / 100 != 1) {
+      c->bodystarted = TRUE;
+    }
+
+    c->status_code = -1;
+
+    Curl_add_buffer(c->header_recvbuf, "\r\n", 2);
+
+    left = c->header_recvbuf->size_used - c->nread_header_recvbuf;
+    ncopy = c->len < left ? c->len : left;
+
+    memcpy(c->mem, c->header_recvbuf->buffer + c->nread_header_recvbuf, ncopy);
+    c->nread_header_recvbuf += ncopy;
+
+    c->mem += ncopy;
+    c->len -= ncopy;
+    break;
+  case NGHTTP2_PUSH_PROMISE:
+    rv = nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE,
+                                   frame->push_promise.promised_stream_id,
+                                   NGHTTP2_CANCEL);
+    if(nghttp2_is_fatal(rv)) {
+      return rv;
+    }
+    break;
+  }
+  return 0;
+}
+
+static int on_invalid_frame_recv(nghttp2_session *session,
+                                 const nghttp2_frame *frame,
+                                 uint32_t error_code, void *userp)
+{
+  struct connectdata *conn = (struct connectdata *)userp;
+  (void)session;
+  (void)frame;
+  infof(conn->data, "on_invalid_frame_recv() was called, error_code = %d\n",
+        error_code);
+  return 0;
+}
+
+static int on_data_chunk_recv(nghttp2_session *session, uint8_t flags,
+                              int32_t stream_id,
+                              const uint8_t *data, size_t len, void *userp)
+{
+  struct connectdata *conn = (struct connectdata *)userp;
+  struct http_conn *c = &conn->proto.httpc;
+  size_t nread;
+  (void)session;
+  (void)flags;
+  (void)data;
+  infof(conn->data, "on_data_chunk_recv() "
+        "len = %u, stream = %x\n", len, stream_id);
+
+  if(stream_id != c->stream_id) {
+    return 0;
+  }
+
+  nread = c->len < len ? c->len : len;
+  memcpy(c->mem, data, nread);
+
+  c->mem += nread;
+  c->len -= nread;
+
+  infof(conn->data, "%zu data written\n", nread);
+
+  if(nread < len) {
+    c->data = data + nread;
+    c->datalen = len - nread;
+    return NGHTTP2_ERR_PAUSE;
+  }
+  return 0;
+}
+
+static int before_frame_send(nghttp2_session *session,
+                             const nghttp2_frame *frame,
+                             void *userp)
+{
+  struct connectdata *conn = (struct connectdata *)userp;
+  (void)session;
+  (void)frame;
+  infof(conn->data, "before_frame_send() was called\n");
+  return 0;
+}
+static int on_frame_send(nghttp2_session *session,
+                         const nghttp2_frame *frame,
+                         void *userp)
+{
+  struct connectdata *conn = (struct connectdata *)userp;
+  (void)session;
+  (void)frame;
+  infof(conn->data, "on_frame_send() was called\n");
+  return 0;
+}
+static int on_frame_not_send(nghttp2_session *session,
+                             const nghttp2_frame *frame,
+                             int lib_error_code, void *userp)
+{
+  struct connectdata *conn = (struct connectdata *)userp;
+  (void)session;
+  (void)frame;
+  infof(conn->data, "on_frame_not_send() was called, lib_error_code = %d\n",
+        lib_error_code);
+  return 0;
+}
+static int on_stream_close(nghttp2_session *session, int32_t stream_id,
+                           uint32_t error_code, void *userp)
+{
+  struct connectdata *conn = (struct connectdata *)userp;
+  struct http_conn *c = &conn->proto.httpc;
+  (void)session;
+  (void)stream_id;
+  infof(conn->data, "on_stream_close() was called, error_code = %d\n",
+        error_code);
+
+  if(stream_id != c->stream_id) {
+    return 0;
+  }
+
+  c->closed = TRUE;
+
+  return 0;
+}
+
+static int on_begin_headers(nghttp2_session *session,
+                            const nghttp2_frame *frame, void *userp)
+{
+  struct connectdata *conn = (struct connectdata *)userp;
+  (void)session;
+  (void)frame;
+  infof(conn->data, "on_begin_headers() was called\n");
+  return 0;
+}
+
+/* Decode HTTP status code.  Returns -1 if no valid status code was
+   decoded. */
+static int decode_status_code(const uint8_t *value, size_t len)
+{
+  int i;
+  int res;
+
+  if(len != 3) {
+    return -1;
+  }
+
+  res = 0;
+
+  for(i = 0; i < 3; ++i) {
+    char c = value[i];
+
+    if(c < '0' || c > '9') {
+      return -1;
+    }
+
+    res *= 10;
+    res += c - '0';
+  }
+
+  return res;
+}
+
+static const char STATUS[] = ":status";
+
+/* frame->hd.type is either NGHTTP2_HEADERS or NGHTTP2_PUSH_PROMISE */
+static int on_header(nghttp2_session *session, const nghttp2_frame *frame,
+                     const uint8_t *name, size_t namelen,
+                     const uint8_t *value, size_t valuelen,
+                     uint8_t flags,
+                     void *userp)
+{
+  struct connectdata *conn = (struct connectdata *)userp;
+  struct http_conn *c = &conn->proto.httpc;
+  int rv;
+  int goodname;
+  int goodheader;
+
+  (void)session;
+  (void)frame;
+  (void)flags;
+
+  if(frame->hd.stream_id != c->stream_id) {
+    return 0;
+  }
+
+  if(c->bodystarted) {
+    /* Ignore trailer or HEADERS not mapped to HTTP semantics.  The
+       consequence is handled in on_frame_recv(). */
+    return 0;
+  }
+
+  goodname = nghttp2_check_header_name(name, namelen);
+  goodheader = nghttp2_check_header_value(value, valuelen);
+
+  if(!goodname || !goodheader) {
+
+    infof(conn->data, "Detected bad incoming header %s%s, reset stream!\n",
+          goodname?"":"name",
+          goodheader?"":"value");
+
+    rv = nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE,
+                                   frame->hd.stream_id,
+                                   NGHTTP2_PROTOCOL_ERROR);
+
+    if(nghttp2_is_fatal(rv)) {
+      return NGHTTP2_ERR_CALLBACK_FAILURE;
+    }
+
+    return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
+  }
+
+  if(namelen == sizeof(":status") - 1 &&
+     memcmp(STATUS, name, namelen) == 0) {
+
+    /* :status must appear exactly once. */
+    if(c->status_code != -1 ||
+       (c->status_code = decode_status_code(value, valuelen)) == -1) {
+
+      rv = nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE,
+                                     frame->hd.stream_id,
+                                     NGHTTP2_PROTOCOL_ERROR);
+      if(nghttp2_is_fatal(rv)) {
+        return NGHTTP2_ERR_CALLBACK_FAILURE;
+      }
+
+      return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
+    }
+
+    Curl_add_buffer(c->header_recvbuf, "HTTP/2.0 ", 9);
+    Curl_add_buffer(c->header_recvbuf, value, valuelen);
+    Curl_add_buffer(c->header_recvbuf, "\r\n", 2);
+
+    return 0;
+  }
+  else {
+    /* Here we are sure that namelen > 0 because of
+       nghttp2_check_header_name().  Pseudo header other than :status
+       is illegal. */
+    if(c->status_code == -1 || name[0] == ':') {
+      rv = nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE,
+                                     frame->hd.stream_id,
+                                     NGHTTP2_PROTOCOL_ERROR);
+      if(nghttp2_is_fatal(rv)) {
+        return NGHTTP2_ERR_CALLBACK_FAILURE;
+      }
+
+      return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
+    }
+
+    /* convert to a HTTP1-style header */
+    Curl_add_buffer(c->header_recvbuf, name, namelen);
+    Curl_add_buffer(c->header_recvbuf, ":", 1);
+    Curl_add_buffer(c->header_recvbuf, value, valuelen);
+    Curl_add_buffer(c->header_recvbuf, "\r\n", 2);
+
+    infof(conn->data, "got http2 header: %.*s: %.*s\n",
+          namelen, name, valuelen, value);
+  }
+
+  return 0; /* 0 is successful */
+}
+
+static ssize_t data_source_read_callback(nghttp2_session *session,
+                                         int32_t stream_id,
+                                         uint8_t *buf, size_t length,
+                                         uint32_t *data_flags,
+                                         nghttp2_data_source *source,
+                                         void *userp)
+{
+  struct connectdata *conn = (struct connectdata *)userp;
+  struct http_conn *c = &conn->proto.httpc;
+  size_t nread;
+  (void)session;
+  (void)stream_id;
+  (void)source;
+
+  nread = c->upload_len < length ? c->upload_len : length;
+  if(nread > 0) {
+    memcpy(buf, c->upload_mem, nread);
+    c->upload_mem += nread;
+    c->upload_len -= nread;
+    c->upload_left -= nread;
+  }
+
+  if(c->upload_left == 0)
+    *data_flags = 1;
+  else if(nread == 0)
+    return NGHTTP2_ERR_DEFERRED;
+
+  return nread;
+}
+
+/*
+ * The HTTP2 settings we send in the Upgrade request
+ */
+static nghttp2_settings_entry settings[] = {
+  { NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS, 100 },
+  { NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE, NGHTTP2_INITIAL_WINDOW_SIZE },
+};
+
+#define H2_BUFSIZE 4096
+
+/*
+ * Initialize nghttp2 for a Curl connection
+ */
+CURLcode Curl_http2_init(struct connectdata *conn)
+{
+  if(!conn->proto.httpc.h2) {
+    int rc;
+    nghttp2_session_callbacks *callbacks;
+
+    conn->proto.httpc.inbuf = malloc(H2_BUFSIZE);
+    if(conn->proto.httpc.inbuf == NULL)
+      return CURLE_OUT_OF_MEMORY;
+
+    rc = nghttp2_session_callbacks_new(&callbacks);
+
+    if(rc) {
+      failf(conn->data, "Couldn't initialize nghttp2 callbacks!");
+      return CURLE_OUT_OF_MEMORY; /* most likely at least */
+    }
+
+    /* nghttp2_send_callback */
+    nghttp2_session_callbacks_set_send_callback(callbacks, send_callback);
+    /* nghttp2_on_frame_recv_callback */
+    nghttp2_session_callbacks_set_on_frame_recv_callback
+      (callbacks, on_frame_recv);
+    /* nghttp2_on_invalid_frame_recv_callback */
+    nghttp2_session_callbacks_set_on_invalid_frame_recv_callback
+      (callbacks, on_invalid_frame_recv);
+    /* nghttp2_on_data_chunk_recv_callback */
+    nghttp2_session_callbacks_set_on_data_chunk_recv_callback
+      (callbacks, on_data_chunk_recv);
+    /* nghttp2_before_frame_send_callback */
+    nghttp2_session_callbacks_set_before_frame_send_callback
+      (callbacks, before_frame_send);
+    /* nghttp2_on_frame_send_callback */
+    nghttp2_session_callbacks_set_on_frame_send_callback
+      (callbacks, on_frame_send);
+    /* nghttp2_on_frame_not_send_callback */
+    nghttp2_session_callbacks_set_on_frame_not_send_callback
+      (callbacks, on_frame_not_send);
+    /* nghttp2_on_stream_close_callback */
+    nghttp2_session_callbacks_set_on_stream_close_callback
+      (callbacks, on_stream_close);
+    /* nghttp2_on_begin_headers_callback */
+    nghttp2_session_callbacks_set_on_begin_headers_callback
+      (callbacks, on_begin_headers);
+    /* nghttp2_on_header_callback */
+    nghttp2_session_callbacks_set_on_header_callback(callbacks, on_header);
+
+    /* The nghttp2 session is not yet setup, do it */
+    rc = nghttp2_session_client_new(&conn->proto.httpc.h2,
+                                    callbacks, conn);
+
+    nghttp2_session_callbacks_del(callbacks);
+
+    if(rc) {
+      failf(conn->data, "Couldn't initialize nghttp2!");
+      return CURLE_OUT_OF_MEMORY; /* most likely at least */
+    }
+  }
+  return CURLE_OK;
+}
+
+/*
+ * Send a request using http2
+ */
+CURLcode Curl_http2_send_request(struct connectdata *conn)
+{
+  (void)conn;
+  return CURLE_OK;
+}
+
+/*
+ * Append headers to ask for a HTTP1.1 to HTTP2 upgrade.
+ */
+CURLcode Curl_http2_request_upgrade(Curl_send_buffer *req,
+                                    struct connectdata *conn)
+{
+  CURLcode result;
+  ssize_t binlen;
+  char *base64;
+  size_t blen;
+  struct SingleRequest *k = &conn->data->req;
+  uint8_t *binsettings = conn->proto.httpc.binsettings;
+
+  result = Curl_http2_init(conn);
+  if(result)
+    return result;
+
+  result = Curl_http2_setup(conn);
+  if(result)
+    return result;
+
+  /* As long as we have a fixed set of settings, we don't have to dynamically
+   * figure out the base64 strings since it'll always be the same. However,
+   * the settings will likely not be fixed every time in the future.
+   */
+
+  /* this returns number of bytes it wrote */
+  binlen = nghttp2_pack_settings_payload(binsettings, H2_BINSETTINGS_LEN,
+                                         settings,
+                                         sizeof(settings)/sizeof(settings[0]));
+  if(!binlen) {
+    failf(conn->data, "nghttp2 unexpectedly failed on pack_settings_payload");
+    return CURLE_FAILED_INIT;
+  }
+  conn->proto.httpc.binlen = binlen;
+
+  result = Curl_base64url_encode(conn->data, (const char *)binsettings, binlen,
+                                 &base64, &blen);
+  if(result)
+    return result;
+
+  result = Curl_add_bufferf(req,
+                            "Connection: Upgrade, HTTP2-Settings\r\n"
+                            "Upgrade: %s\r\n"
+                            "HTTP2-Settings: %s\r\n",
+                            NGHTTP2_CLEARTEXT_PROTO_VERSION_ID, base64);
+  Curl_safefree(base64);
+
+  k->upgr101 = UPGR101_REQUESTED;
+
+  return result;
+}
+
+/*
+ * If the read would block (EWOULDBLOCK) we return -1. Otherwise we return
+ * a regular CURLcode value.
+ */
+static ssize_t http2_recv(struct connectdata *conn, int sockindex,
+                          char *mem, size_t len, CURLcode *err)
+{
+  CURLcode result = CURLE_OK;
+  ssize_t rv;
+  ssize_t nread;
+  struct http_conn *httpc = &conn->proto.httpc;
+
+  (void)sockindex; /* we always do HTTP2 on sockindex 0 */
+
+  if(httpc->closed) {
+    /* Reset to FALSE to prevent infinite loop in readwrite_data
+       function. */
+    httpc->closed = FALSE;
+    return 0;
+  }
+
+  /* Nullify here because we call nghttp2_session_send() and they
+     might refer to the old buffer. */
+  httpc->upload_mem = NULL;
+  httpc->upload_len = 0;
+
+  if(httpc->bodystarted &&
+     httpc->nread_header_recvbuf < httpc->header_recvbuf->size_used) {
+    size_t left =
+      httpc->header_recvbuf->size_used - httpc->nread_header_recvbuf;
+    size_t ncopy = len < left ? len : left;
+    memcpy(mem, httpc->header_recvbuf->buffer + httpc->nread_header_recvbuf,
+           ncopy);
+    httpc->nread_header_recvbuf += ncopy;
+    return ncopy;
+  }
+
+  if(httpc->data) {
+    nread = len < httpc->datalen ? len : httpc->datalen;
+    memcpy(mem, httpc->data, nread);
+
+    httpc->data += nread;
+    httpc->datalen -= nread;
+
+    infof(conn->data, "%zu data written\n", nread);
+    if(httpc->datalen == 0) {
+      httpc->data = NULL;
+      httpc->datalen = 0;
+    }
+    return nread;
+  }
+
+  conn->proto.httpc.mem = mem;
+  conn->proto.httpc.len = len;
+
+  infof(conn->data, "http2_recv: %d bytes buffer\n",
+        conn->proto.httpc.len);
+
+  nread = ((Curl_recv*)httpc->recv_underlying)(conn, FIRSTSOCKET,
+                                               httpc->inbuf, H2_BUFSIZE,
+                                               &result);
+  if(result == CURLE_AGAIN) {
+    *err = result;
+    return -1;
+  }
+
+  if(nread == -1) {
+    failf(conn->data, "Failed receiving HTTP2 data");
+    *err = result;
+    return 0;
+  }
+
+  infof(conn->data, "nread=%zd\n", nread);
+
+  if(nread == 0) {
+    failf(conn->data, "EOF");
+    return 0;
+  }
+
+  rv = nghttp2_session_mem_recv(httpc->h2,
+                                (const uint8_t *)httpc->inbuf, nread);
+
+  if(nghttp2_is_fatal((int)rv)) {
+    failf(conn->data, "nghttp2_session_mem_recv() returned %d:%s\n",
+          rv, nghttp2_strerror((int)rv));
+    *err = CURLE_RECV_ERROR;
+    return 0;
+  }
+  infof(conn->data, "nghttp2_session_mem_recv() returns %zd\n", rv);
+  /* Always send pending frames in nghttp2 session, because
+     nghttp2_session_mem_recv() may queue new frame */
+  rv = nghttp2_session_send(httpc->h2);
+  if(rv != 0) {
+    *err = CURLE_SEND_ERROR;
+    return 0;
+  }
+  if(len != httpc->len) {
+    return len - conn->proto.httpc.len;
+  }
+  /* If stream is closed, return 0 to signal the http routine to close
+     the connection */
+  if(httpc->closed) {
+    /* Reset to FALSE to prevent infinite loop in readwrite_data
+       function. */
+    httpc->closed = FALSE;
+    return 0;
+  }
+  *err = CURLE_AGAIN;
+  return -1;
+}
+
+/* Index where :authority header field will appear in request header
+   field list. */
+#define AUTHORITY_DST_IDX 3
+
+/* return number of received (decrypted) bytes */
+static ssize_t http2_send(struct connectdata *conn, int sockindex,
+                          const void *mem, size_t len, CURLcode *err)
+{
+  /*
+   * BIG TODO: Currently, we send request in this function, but this
+   * function is also used to send request body. It would be nice to
+   * add dedicated function for request.
+   */
+  int rv;
+  struct http_conn *httpc = &conn->proto.httpc;
+  nghttp2_nv *nva;
+  size_t nheader;
+  size_t i;
+  size_t authority_idx;
+  char *hdbuf = (char*)mem;
+  char *end;
+  nghttp2_data_provider data_prd;
+  int32_t stream_id;
+
+  (void)sockindex;
+
+  infof(conn->data, "http2_send len=%zu\n", len);
+
+  if(httpc->stream_id != -1) {
+    /* If stream_id != -1, we have dispatched request HEADERS, and now
+       are going to send or sending request body in DATA frame */
+    httpc->upload_mem = mem;
+    httpc->upload_len = len;
+    nghttp2_session_resume_data(httpc->h2, httpc->stream_id);
+    rv = nghttp2_session_send(httpc->h2);
+    if(nghttp2_is_fatal(rv)) {
+      *err = CURLE_SEND_ERROR;
+      return -1;
+    }
+    return len - httpc->upload_len;
+  }
+
+  /* Calculate number of headers contained in [mem, mem + len) */
+  /* Here, we assume the curl http code generate *correct* HTTP header
+     field block */
+  nheader = 0;
+  for(i = 0; i < len; ++i) {
+    if(hdbuf[i] == 0x0a) {
+      ++nheader;
+    }
+  }
+  /* We counted additional 2 \n in the first and last line. We need 3
+     new headers: :method, :path and :scheme. Therefore we need one
+     more space. */
+  nheader += 1;
+  nva = malloc(sizeof(nghttp2_nv) * nheader);
+  if(nva == NULL) {
+    *err = CURLE_OUT_OF_MEMORY;
+    return -1;
+  }
+  /* Extract :method, :path from request line */
+  end = strchr(hdbuf, ' ');
+  nva[0].name = (unsigned char *)":method";
+  nva[0].namelen = (uint16_t)strlen((char *)nva[0].name);
+  nva[0].value = (unsigned char *)hdbuf;
+  nva[0].valuelen = (uint16_t)(end - hdbuf);
+  nva[0].flags = NGHTTP2_NV_FLAG_NONE;
+
+  hdbuf = end + 1;
+
+  end = strchr(hdbuf, ' ');
+  nva[1].name = (unsigned char *)":path";
+  nva[1].namelen = (uint16_t)strlen((char *)nva[1].name);
+  nva[1].value = (unsigned char *)hdbuf;
+  nva[1].valuelen = (uint16_t)(end - hdbuf);
+  nva[1].flags = NGHTTP2_NV_FLAG_NONE;
+
+  nva[2].name = (unsigned char *)":scheme";
+  nva[2].namelen = (uint16_t)strlen((char *)nva[2].name);
+  if(conn->handler->flags & PROTOPT_SSL)
+    nva[2].value = (unsigned char *)"https";
+  else
+    nva[2].value = (unsigned char *)"http";
+  nva[2].valuelen = (uint16_t)strlen((char *)nva[2].value);
+  nva[2].flags = NGHTTP2_NV_FLAG_NONE;
+
+  hdbuf = strchr(hdbuf, 0x0a);
+  ++hdbuf;
+
+  authority_idx = 0;
+
+  for(i = 3; i < nheader; ++i) {
+    end = strchr(hdbuf, ':');
+    assert(end);
+    if(end - hdbuf == 4 && Curl_raw_nequal("host", hdbuf, 4)) {
+      authority_idx = i;
+      nva[i].name = (unsigned char *)":authority";
+      nva[i].namelen = (uint16_t)strlen((char *)nva[i].name);
+    }
+    else {
+      nva[i].name = (unsigned char *)hdbuf;
+      nva[i].namelen = (uint16_t)(end - hdbuf);
+    }
+    hdbuf = end + 1;
+    for(; *hdbuf == ' '; ++hdbuf);
+    end = strchr(hdbuf, 0x0d);
+    assert(end);
+    nva[i].value = (unsigned char *)hdbuf;
+    nva[i].valuelen = (uint16_t)(end - hdbuf);
+    nva[i].flags = NGHTTP2_NV_FLAG_NONE;
+
+    hdbuf = end + 2;
+    /* Inspect Content-Length header field and retrieve the request
+       entity length so that we can set END_STREAM to the last DATA
+       frame. */
+    if(nva[i].namelen == 14 &&
+       Curl_raw_nequal("content-length", (char*)nva[i].name, 14)) {
+      size_t j;
+      for(j = 0; j < nva[i].valuelen; ++j) {
+        httpc->upload_left *= 10;
+        httpc->upload_left += nva[i].value[j] - '0';
+      }
+      infof(conn->data, "request content-length=%zu\n", httpc->upload_left);
+    }
+  }
+
+  /* :authority must come before non-pseudo header fields */
+  if(authority_idx != 0 && authority_idx != AUTHORITY_DST_IDX) {
+    nghttp2_nv authority = nva[authority_idx];
+    for(i = authority_idx; i > AUTHORITY_DST_IDX; --i) {
+      nva[i] = nva[i - 1];
+    }
+    nva[i] = authority;
+  }
+
+  switch(conn->data->set.httpreq) {
+  case HTTPREQ_POST:
+  case HTTPREQ_POST_FORM:
+  case HTTPREQ_PUT:
+    data_prd.read_callback = data_source_read_callback;
+    data_prd.source.ptr = NULL;
+    stream_id = nghttp2_submit_request(httpc->h2, NULL, nva, nheader,
+                                       &data_prd, NULL);
+    break;
+  default:
+    stream_id = nghttp2_submit_request(httpc->h2, NULL, nva, nheader,
+                                       NULL, NULL);
+  }
+
+  Curl_safefree(nva);
+
+  if(stream_id < 0) {
+    *err = CURLE_SEND_ERROR;
+    return -1;
+  }
+
+  httpc->stream_id = stream_id;
+
+  rv = nghttp2_session_send(httpc->h2);
+
+  if(rv != 0) {
+    *err = CURLE_SEND_ERROR;
+    return -1;
+  }
+
+  if(httpc->stream_id != -1) {
+    /* If whole HEADERS frame was sent off to the underlying socket,
+       the nghttp2 library calls data_source_read_callback. But only
+       it found that no data available, so it deferred the DATA
+       transmission. Which means that nghttp2_session_want_write()
+       returns 0 on http2_perform_getsock(), which results that no
+       writable socket check is performed. To workaround this, we
+       issue nghttp2_session_resume_data() here to bring back DATA
+       transmission from deferred state. */
+    nghttp2_session_resume_data(httpc->h2, httpc->stream_id);
+  }
+
+  return len;
+}
+
+CURLcode Curl_http2_setup(struct connectdata *conn)
+{
+  struct http_conn *httpc = &conn->proto.httpc;
+  if(conn->handler->flags & PROTOPT_SSL)
+    conn->handler = &Curl_handler_http2_ssl;
+  else
+    conn->handler = &Curl_handler_http2;
+
+  infof(conn->data, "Using HTTP2\n");
+  httpc->bodystarted = FALSE;
+  httpc->closed = FALSE;
+  httpc->header_recvbuf = Curl_add_buffer_init();
+  httpc->nread_header_recvbuf = 0;
+  httpc->data = NULL;
+  httpc->datalen = 0;
+  httpc->upload_left = 0;
+  httpc->upload_mem = NULL;
+  httpc->upload_len = 0;
+  httpc->stream_id = -1;
+  httpc->status_code = -1;
+
+  conn->httpversion = 20;
+
+  return 0;
+}
+
+CURLcode Curl_http2_switched(struct connectdata *conn,
+                             const char *mem, size_t nread)
+{
+  CURLcode result;
+  struct http_conn *httpc = &conn->proto.httpc;
+  int rv;
+  struct SessionHandle *data = conn->data;
+
+  httpc->recv_underlying = (recving)conn->recv[FIRSTSOCKET];
+  httpc->send_underlying = (sending)conn->send[FIRSTSOCKET];
+  conn->recv[FIRSTSOCKET] = http2_recv;
+  conn->send[FIRSTSOCKET] = http2_send;
+
+  rv = (int) ((Curl_send*)httpc->send_underlying)
+    (conn, FIRSTSOCKET,
+     NGHTTP2_CLIENT_CONNECTION_PREFACE,
+     NGHTTP2_CLIENT_CONNECTION_PREFACE_LEN,
+     &result);
+  if(result)
+    /* TODO: This may get CURLE_AGAIN */
+    return result;
+
+  if(rv != 24) {
+    failf(data, "Only sent partial HTTP2 packet");
+    return CURLE_SEND_ERROR;
+  }
+
+  if(conn->data->req.upgr101 == UPGR101_RECEIVED) {
+    /* stream 1 is opened implicitly on upgrade */
+    httpc->stream_id = 1;
+    /* queue SETTINGS frame (again) */
+    rv = nghttp2_session_upgrade(httpc->h2, httpc->binsettings,
+                                 httpc->binlen, NULL);
+    if(rv != 0) {
+      failf(data, "nghttp2_session_upgrade() failed: %s(%d)",
+            nghttp2_strerror(rv), rv);
+      return CURLE_HTTP2;
+    }
+  }
+  else {
+    /* stream ID is unknown at this point */
+    httpc->stream_id = -1;
+    rv = nghttp2_submit_settings(httpc->h2, NGHTTP2_FLAG_NONE, NULL, 0);
+    if(rv != 0) {
+      failf(data, "nghttp2_submit_settings() failed: %s(%d)",
+            nghttp2_strerror(rv), rv);
+      return CURLE_HTTP2;
+    }
+  }
+
+  rv = (int)nghttp2_session_mem_recv(httpc->h2, (const uint8_t*)mem, nread);
+
+  if(rv != (int)nread) {
+    failf(data, "nghttp2_session_mem_recv() failed: %s(%d)",
+          nghttp2_strerror(rv), rv);
+    return CURLE_HTTP2;
+  }
+
+  return CURLE_OK;
+}
+
+#endif
diff --git a/lib/http2.h b/lib/http2.h
new file mode 100644 (file)
index 0000000..a2e4eb7
--- /dev/null
@@ -0,0 +1,51 @@
+#ifndef HEADER_CURL_HTTP2_H
+#define HEADER_CURL_HTTP2_H
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+
+#include "curl_setup.h"
+
+#ifdef USE_NGHTTP2
+#include "http.h"
+/*
+ * Store nghttp2 version info in this buffer, Prefix with a space.  Return
+ * total length written.
+ */
+int Curl_http2_ver(char *p, size_t len);
+
+CURLcode Curl_http2_init(struct connectdata *conn);
+CURLcode Curl_http2_send_request(struct connectdata *conn);
+CURLcode Curl_http2_request_upgrade(Curl_send_buffer *req,
+                                    struct connectdata *conn);
+CURLcode Curl_http2_setup(struct connectdata *conn);
+CURLcode Curl_http2_switched(struct connectdata *conn,
+                             const char *data, size_t nread);
+#else /* USE_NGHTTP2 */
+#define Curl_http2_init(x) CURLE_UNSUPPORTED_PROTOCOL
+#define Curl_http2_send_request(x) CURLE_UNSUPPORTED_PROTOCOL
+#define Curl_http2_request_upgrade(x,y) CURLE_UNSUPPORTED_PROTOCOL
+#define Curl_http2_setup(x) CURLE_UNSUPPORTED_PROTOCOL
+#define Curl_http2_switched(x,y,z) CURLE_UNSUPPORTED_PROTOCOL
+#endif
+
+#endif /* HEADER_CURL_HTTP2_H */
+
index e9fddf5..61a6098 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -31,6 +31,8 @@
 #include "http.h"
 #include "curl_memory.h"
 #include "non-ascii.h" /* for Curl_convert_to_network prototype */
 #include "http.h"
 #include "curl_memory.h"
 #include "non-ascii.h" /* for Curl_convert_to_network prototype */
+#include "strtoofft.h"
+#include "warnless.h"
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
@@ -87,8 +89,8 @@ static bool Curl_isxdigit(char digit)
 void Curl_httpchunk_init(struct connectdata *conn)
 {
   struct Curl_chunker *chunk = &conn->chunk;
 void Curl_httpchunk_init(struct connectdata *conn)
 {
   struct Curl_chunker *chunk = &conn->chunk;
-  chunk->hexindex=0; /* start at 0 */
-  chunk->dataleft=0; /* no data left yet! */
+  chunk->hexindex=0;        /* start at 0 */
+  chunk->dataleft=0;        /* no data left yet! */
   chunk->state = CHUNK_HEX; /* we get hex first! */
 }
 
   chunk->state = CHUNK_HEX; /* we get hex first! */
 }
 
@@ -113,7 +115,7 @@ CHUNKcode Curl_httpchunk_read(struct connectdata *conn,
   struct Curl_chunker *ch = &conn->chunk;
   struct SingleRequest *k = &data->req;
   size_t piece;
   struct Curl_chunker *ch = &conn->chunk;
   struct SingleRequest *k = &data->req;
   size_t piece;
-  size_t length = (size_t)datalen;
+  curl_off_t length = (curl_off_t)datalen;
   size_t *wrote = (size_t *)wrotep;
 
   *wrote = 0; /* nothing's written yet */
   size_t *wrote = (size_t *)wrotep;
 
   *wrote = 0; /* nothing's written yet */
@@ -141,11 +143,12 @@ CHUNKcode Curl_httpchunk_read(struct connectdata *conn,
         }
       }
       else {
         }
       }
       else {
-        if(0 == ch->hexindex) {
+        char *endptr;
+        if(0 == ch->hexindex)
           /* This is illegal data, we received junk where we expected
              a hexadecimal digit. */
           return CHUNKE_ILLEGAL_HEX;
           /* This is illegal data, we received junk where we expected
              a hexadecimal digit. */
           return CHUNKE_ILLEGAL_HEX;
-        }
+
         /* length and datap are unmodified */
         ch->hexbuffer[ch->hexindex]=0;
 
         /* length and datap are unmodified */
         ch->hexbuffer[ch->hexindex]=0;
 
@@ -155,50 +158,38 @@ CHUNKcode Curl_httpchunk_read(struct connectdata *conn,
         if(result) {
           /* Curl_convert_from_network calls failf if unsuccessful */
           /* Treat it as a bad hex character */
         if(result) {
           /* Curl_convert_from_network calls failf if unsuccessful */
           /* Treat it as a bad hex character */
-          return(CHUNKE_ILLEGAL_HEX);
+          return CHUNKE_ILLEGAL_HEX ;
         }
 
         }
 
-        ch->datasize=strtoul(ch->hexbuffer, NULL, 16);
-        ch->state = CHUNK_POSTHEX;
+        ch->datasize=curlx_strtoofft(ch->hexbuffer, &endptr, 16);
+        if((ch->datasize == CURL_OFF_T_MAX) && (errno == ERANGE))
+          /* overflow is an error */
+          return CHUNKE_ILLEGAL_HEX;
+        ch->state = CHUNK_LF; /* now wait for the CRLF */
       }
       break;
 
       }
       break;
 
-    case CHUNK_POSTHEX:
-      /* In this state, we're waiting for CRLF to arrive. We support
-         this to allow so called chunk-extensions to show up here
-         before the CRLF comes. */
-      if(*datap == 0x0d)
-        ch->state = CHUNK_CR;
-      length--;
-      datap++;
-      break;
-
-    case CHUNK_CR:
-      /* waiting for the LF */
+    case CHUNK_LF:
+      /* waiting for the LF after a chunk size */
       if(*datap == 0x0a) {
         /* we're now expecting data to come, unless size was zero! */
         if(0 == ch->datasize) {
           ch->state = CHUNK_TRAILER; /* now check for trailers */
           conn->trlPos=0;
         }
       if(*datap == 0x0a) {
         /* we're now expecting data to come, unless size was zero! */
         if(0 == ch->datasize) {
           ch->state = CHUNK_TRAILER; /* now check for trailers */
           conn->trlPos=0;
         }
-        else {
+        else
           ch->state = CHUNK_DATA;
           ch->state = CHUNK_DATA;
-        }
       }
       }
-      else
-        /* previously we got a fake CR, go back to CR waiting! */
-        ch->state = CHUNK_CR;
+
       datap++;
       length--;
       break;
 
     case CHUNK_DATA:
       datap++;
       length--;
       break;
 
     case CHUNK_DATA:
-      /* we get pure and fine data
-
-         We expect another 'datasize' of data. We have 'length' right now,
-         it can be more or less than 'datasize'. Get the smallest piece.
+      /* We expect 'datasize' of data. We have 'length' right now, it can be
+         more or less than 'datasize'. Get the smallest piece.
       */
       */
-      piece = (ch->datasize >= length)?length:ch->datasize;
+      piece = curlx_sotouz((ch->datasize >= length)?length:ch->datasize);
 
       /* Write the data portion available */
 #ifdef HAVE_LIBZ
 
       /* Write the data portion available */
 #ifdef HAVE_LIBZ
@@ -251,37 +242,22 @@ CHUNKcode Curl_httpchunk_read(struct connectdata *conn,
 
       if(0 == ch->datasize)
         /* end of data this round, we now expect a trailing CRLF */
 
       if(0 == ch->datasize)
         /* end of data this round, we now expect a trailing CRLF */
-        ch->state = CHUNK_POSTCR;
-      break;
-
-    case CHUNK_POSTCR:
-      if(*datap == 0x0d) {
         ch->state = CHUNK_POSTLF;
         ch->state = CHUNK_POSTLF;
-        datap++;
-        length--;
-      }
-      else
-        return CHUNKE_BAD_CHUNK;
-
       break;
 
     case CHUNK_POSTLF:
       if(*datap == 0x0a) {
       break;
 
     case CHUNK_POSTLF:
       if(*datap == 0x0a) {
-        /*
-         * The last one before we go back to hex state and start all
-         * over.
-         */
-        Curl_httpchunk_init(conn);
-        datap++;
-        length--;
+        /* The last one before we go back to hex state and start all over. */
+        Curl_httpchunk_init(conn); /* sets state back to CHUNK_HEX */
       }
       }
-      else
+      else if(*datap != 0x0d)
         return CHUNKE_BAD_CHUNK;
         return CHUNKE_BAD_CHUNK;
-
+      datap++;
+      length--;
       break;
 
     case CHUNK_TRAILER:
       break;
 
     case CHUNK_TRAILER:
-      if(*datap == 0x0d) {
+      if((*datap == 0x0d) || (*datap == 0x0a)) {
         /* this is the end of a trailer, but if the trailer was zero bytes
            there was no trailer and we move on */
 
         /* this is the end of a trailer, but if the trailer was zero bytes
            there was no trailer and we move on */
 
@@ -307,6 +283,9 @@ CHUNKcode Curl_httpchunk_read(struct connectdata *conn,
           }
           conn->trlPos=0;
           ch->state = CHUNK_TRAILER_CR;
           }
           conn->trlPos=0;
           ch->state = CHUNK_TRAILER_CR;
+          if(*datap == 0x0a)
+            /* already on the LF */
+            break;
         }
         else {
           /* no trailer, we're on the final CRLF pair */
         }
         else {
           /* no trailer, we're on the final CRLF pair */
@@ -352,27 +331,18 @@ CHUNKcode Curl_httpchunk_read(struct connectdata *conn,
     case CHUNK_TRAILER_POSTCR:
       /* We enter this state when a CR should arrive so we expect to
          have to first pass a CR before we wait for LF */
     case CHUNK_TRAILER_POSTCR:
       /* We enter this state when a CR should arrive so we expect to
          have to first pass a CR before we wait for LF */
-      if(*datap != 0x0d) {
+      if((*datap != 0x0d) && (*datap != 0x0a)) {
         /* not a CR then it must be another header in the trailer */
         ch->state = CHUNK_TRAILER;
         break;
       }
         /* not a CR then it must be another header in the trailer */
         ch->state = CHUNK_TRAILER;
         break;
       }
-      datap++;
-      length--;
-      /* now wait for the final LF */
-      ch->state = CHUNK_STOP;
-      break;
-
-    case CHUNK_STOPCR:
-      /* Read the final CRLF that ends all chunk bodies */
-
       if(*datap == 0x0d) {
       if(*datap == 0x0d) {
-        ch->state = CHUNK_STOP;
+        /* skip if CR */
         datap++;
         length--;
       }
         datap++;
         length--;
       }
-      else
-        return CHUNKE_BAD_CHUNK;
+      /* now wait for the final LF */
+      ch->state = CHUNK_STOP;
       break;
 
     case CHUNK_STOP:
       break;
 
     case CHUNK_STOP:
@@ -381,17 +351,35 @@ CHUNKcode Curl_httpchunk_read(struct connectdata *conn,
 
         /* Record the length of any data left in the end of the buffer
            even if there's no more chunks to read */
 
         /* Record the length of any data left in the end of the buffer
            even if there's no more chunks to read */
+        ch->dataleft = curlx_sotouz(length);
 
 
-        ch->dataleft = length;
         return CHUNKE_STOP; /* return stop */
       }
       else
         return CHUNKE_BAD_CHUNK;
         return CHUNKE_STOP; /* return stop */
       }
       else
         return CHUNKE_BAD_CHUNK;
-
-    default:
-      return CHUNKE_STATE_ERROR;
     }
   }
   return CHUNKE_OK;
 }
     }
   }
   return CHUNKE_OK;
 }
+
+const char *Curl_chunked_strerror(CHUNKcode code)
+{
+  switch (code) {
+  default:
+    return "OK";
+  case CHUNKE_TOO_LONG_HEX:
+    return "Too long hexadecimal number";
+  case CHUNKE_ILLEGAL_HEX:
+    return "Illegal or missing hexadecimal sequence";
+  case CHUNKE_BAD_CHUNK:
+    return "Malformed encoding found";
+  case CHUNKE_WRITE_ERROR:
+    return "Write error";
+  case CHUNKE_BAD_ENCODING:
+    return "Bad content-encoding found";
+  case CHUNKE_OUT_OF_MEMORY:
+    return "Out of memory";
+  }
+}
+
 #endif /* CURL_DISABLE_HTTP */
 #endif /* CURL_DISABLE_HTTP */
index b999ab5..0489eb8 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2007, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #define MAXNUM_SIZE 16
 
 typedef enum {
 #define MAXNUM_SIZE 16
 
 typedef enum {
-  CHUNK_FIRST, /* never use */
-
-  /* In this we await and buffer all hexadecimal digits until we get one
-     that isn't a hexadecimal digit. When done, we go POSTHEX */
+  /* await and buffer all hexadecimal digits until we get one that isn't a
+     hexadecimal digit. When done, we go CHUNK_LF */
   CHUNK_HEX,
 
   CHUNK_HEX,
 
-  /* We have received the hexadecimal digit and we eat all characters until
-     we get a CRLF pair. When we see a CR we go to the CR state. */
-  CHUNK_POSTHEX,
-
-  /* A single CR has been found and we should get a LF right away in this
-     state or we go back to POSTHEX. When LF is received, we go to DATA.
-     If the size given was zero, we set state to STOP and return. */
-  CHUNK_CR,
+  /* wait for LF, ignore all else */
+  CHUNK_LF,
 
   /* We eat the amount of data specified. When done, we move on to the
      POST_CR state. */
   CHUNK_DATA,
 
 
   /* We eat the amount of data specified. When done, we move on to the
      POST_CR state. */
   CHUNK_DATA,
 
-  /* POSTCR should get a CR and nothing else, then move to POSTLF */
-  CHUNK_POSTCR,
-
-  /* POSTLF should get a LF and nothing else, then move back to HEX as the
-     CRLF combination marks the end of a chunk */
+  /* POSTLF should get a CR and then a LF and nothing else, then move back to
+     HEX as the CRLF combination marks the end of a chunk. A missing CR is no
+     big deal. */
   CHUNK_POSTLF,
 
   CHUNK_POSTLF,
 
-  /* Each Chunk body should end with a CRLF.  Read a CR and nothing else,
-     then move to CHUNK_STOP */
-  CHUNK_STOPCR,
-
-  /* This is mainly used to really mark that we're out of the game.
-     NOTE: that there's a 'dataleft' field in the struct that will tell how
-     many bytes that were not passed to the client in the end of the last
-     buffer! */
+  /* Used to mark that we're out of the game.  NOTE: that there's a 'dataleft'
+     field in the struct that will tell how many bytes that were not passed to
+     the client in the end of the last buffer! */
   CHUNK_STOP,
 
   /* At this point optional trailer headers can be found, unless the next line
   CHUNK_STOP,
 
   /* At this point optional trailer headers can be found, unless the next line
@@ -77,10 +62,7 @@ typedef enum {
      signalled If this is an empty trailer CHUNKE_STOP will be signalled.
      Otherwise the trailer will be broadcasted via Curl_client_write() and the
      next state will be CHUNK_TRAILER */
      signalled If this is an empty trailer CHUNKE_STOP will be signalled.
      Otherwise the trailer will be broadcasted via Curl_client_write() and the
      next state will be CHUNK_TRAILER */
-  CHUNK_TRAILER_POSTCR,
-
-  CHUNK_LAST /* never use */
-
+  CHUNK_TRAILER_POSTCR
 } ChunkyState;
 
 typedef enum {
 } ChunkyState;
 
 typedef enum {
@@ -90,17 +72,18 @@ typedef enum {
   CHUNKE_ILLEGAL_HEX,
   CHUNKE_BAD_CHUNK,
   CHUNKE_WRITE_ERROR,
   CHUNKE_ILLEGAL_HEX,
   CHUNKE_BAD_CHUNK,
   CHUNKE_WRITE_ERROR,
-  CHUNKE_STATE_ERROR,
   CHUNKE_BAD_ENCODING,
   CHUNKE_OUT_OF_MEMORY,
   CHUNKE_LAST
 } CHUNKcode;
 
   CHUNKE_BAD_ENCODING,
   CHUNKE_OUT_OF_MEMORY,
   CHUNKE_LAST
 } CHUNKcode;
 
+const char *Curl_chunked_strerror(CHUNKcode code);
+
 struct Curl_chunker {
   char hexbuffer[ MAXNUM_SIZE + 1];
   int hexindex;
   ChunkyState state;
 struct Curl_chunker {
   char hexbuffer[ MAXNUM_SIZE + 1];
   int hexindex;
   ChunkyState state;
-  size_t datasize;
+  curl_off_t datasize;
   size_t dataleft; /* untouched data amount at the end of the last buffer */
 };
 
   size_t dataleft; /* untouched data amount at the end of the last buffer */
 };
 
index f50f803..ba59e5d 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 
 #include "urldata.h"
 #include "rawstr.h"
 
 #include "urldata.h"
 #include "rawstr.h"
-#include "curl_base64.h"
-#include "curl_md5.h"
+#include "curl_sasl.h"
 #include "http_digest.h"
 #include "http_digest.h"
-#include "strtok.h"
 #include "curl_memory.h"
 #include "curl_memory.h"
-#include "sslgen.h" /* for Curl_rand() */
-#include "non-ascii.h" /* included for Curl_convert_... prototypes */
-#include "warnless.h"
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
 /* The last #include file should be: */
 #include "memdebug.h"
 
 /* The last #include file should be: */
 #include "memdebug.h"
 
-#define MAX_VALUE_LENGTH 256
-#define MAX_CONTENT_LENGTH 1024
-
-static void digest_cleanup_one(struct digestdata *dig);
-
-/*
- * Return 0 on success and then the buffers are filled in fine.
- *
- * Non-zero means failure to parse.
- */
-static int get_pair(const char *str, char *value, char *content,
-                    const char **endptr)
-{
-  int c;
-  bool starts_with_quote = FALSE;
-  bool escape = FALSE;
-
-  for(c=MAX_VALUE_LENGTH-1; (*str && (*str != '=') && c--); )
-    *value++ = *str++;
-  *value=0;
-
-  if('=' != *str++)
-    /* eek, no match */
-    return 1;
-
-  if('\"' == *str) {
-    /* this starts with a quote so it must end with one as well! */
-    str++;
-    starts_with_quote = TRUE;
-  }
-
-  for(c=MAX_CONTENT_LENGTH-1; *str && c--; str++) {
-    switch(*str) {
-    case '\\':
-      if(!escape) {
-        /* possibly the start of an escaped quote */
-        escape = TRUE;
-        *content++ = '\\'; /* even though this is an escape character, we still
-                              store it as-is in the target buffer */
-        continue;
-      }
-      break;
-    case ',':
-      if(!starts_with_quote) {
-        /* this signals the end of the content if we didn't get a starting
-           quote and then we do "sloppy" parsing */
-        c=0; /* the end */
-        continue;
-      }
-      break;
-    case '\r':
-    case '\n':
-      /* end of string */
-      c=0;
-      continue;
-    case '\"':
-      if(!escape && starts_with_quote) {
-        /* end of string */
-        c=0;
-        continue;
-      }
-      break;
-    }
-    escape = FALSE;
-    *content++ = *str;
-  }
-  *content=0;
-
-  *endptr = str;
-
-  return 0; /* all is fine! */
-}
-
 /* Test example headers:
 
 WWW-Authenticate: Digest realm="testrealm", nonce="1053604598"
 /* Test example headers:
 
 WWW-Authenticate: Digest realm="testrealm", nonce="1053604598"
@@ -121,181 +43,31 @@ Proxy-Authenticate: Digest realm="testrealm", nonce="1053604598"
 
 */
 
 
 */
 
-CURLdigest Curl_input_digest(struct connectdata *conn,
-                             bool proxy,
-                             const char *header) /* rest of the *-authenticate:
-                                                    header */
+CURLcode Curl_input_digest(struct connectdata *conn,
+                           bool proxy,
+                           const char *header) /* rest of the *-authenticate:
+                                                  header */
 {
 {
-  char *token = NULL;
-  char *tmp = NULL;
-  bool foundAuth = FALSE;
-  bool foundAuthInt = FALSE;
-  struct SessionHandle *data=conn->data;
-  bool before = FALSE; /* got a nonce before */
-  struct digestdata *d;
+  struct SessionHandle *data = conn->data;
+
+  /* Point to the correct struct with this */
+  struct digestdata *digest;
 
   if(proxy) {
 
   if(proxy) {
-    d = &data->state.proxydigest;
+    digest = &data->state.proxydigest;
   }
   else {
   }
   else {
-    d = &data->state.digest;
+    digest = &data->state.digest;
   }
 
   }
 
-  /* skip initial whitespaces */
+  if(!checkprefix("Digest", header))
+    return CURLE_BAD_CONTENT_ENCODING;
+
+  header += strlen("Digest");
   while(*header && ISSPACE(*header))
     header++;
 
   while(*header && ISSPACE(*header))
     header++;
 
-  if(checkprefix("Digest", header)) {
-    header += strlen("Digest");
-
-    /* If we already have received a nonce, keep that in mind */
-    if(d->nonce)
-      before = TRUE;
-
-    /* clear off any former leftovers and init to defaults */
-    digest_cleanup_one(d);
-
-    for(;;) {
-      char value[MAX_VALUE_LENGTH];
-      char content[MAX_CONTENT_LENGTH];
-
-      while(*header && ISSPACE(*header))
-        header++;
-
-      /* extract a value=content pair */
-      if(!get_pair(header, value, content, &header)) {
-        if(Curl_raw_equal(value, "nonce")) {
-          d->nonce = strdup(content);
-          if(!d->nonce)
-            return CURLDIGEST_NOMEM;
-        }
-        else if(Curl_raw_equal(value, "stale")) {
-          if(Curl_raw_equal(content, "true")) {
-            d->stale = TRUE;
-            d->nc = 1; /* we make a new nonce now */
-          }
-        }
-        else if(Curl_raw_equal(value, "realm")) {
-          d->realm = strdup(content);
-          if(!d->realm)
-            return CURLDIGEST_NOMEM;
-        }
-        else if(Curl_raw_equal(value, "opaque")) {
-          d->opaque = strdup(content);
-          if(!d->opaque)
-            return CURLDIGEST_NOMEM;
-        }
-        else if(Curl_raw_equal(value, "qop")) {
-          char *tok_buf;
-          /* tokenize the list and choose auth if possible, use a temporary
-             clone of the buffer since strtok_r() ruins it */
-          tmp = strdup(content);
-          if(!tmp)
-            return CURLDIGEST_NOMEM;
-          token = strtok_r(tmp, ",", &tok_buf);
-          while(token != NULL) {
-            if(Curl_raw_equal(token, "auth")) {
-              foundAuth = TRUE;
-            }
-            else if(Curl_raw_equal(token, "auth-int")) {
-              foundAuthInt = TRUE;
-            }
-            token = strtok_r(NULL, ",", &tok_buf);
-          }
-          free(tmp);
-          /*select only auth o auth-int. Otherwise, ignore*/
-          if(foundAuth) {
-            d->qop = strdup("auth");
-            if(!d->qop)
-              return CURLDIGEST_NOMEM;
-          }
-          else if(foundAuthInt) {
-            d->qop = strdup("auth-int");
-            if(!d->qop)
-              return CURLDIGEST_NOMEM;
-          }
-        }
-        else if(Curl_raw_equal(value, "algorithm")) {
-          d->algorithm = strdup(content);
-          if(!d->algorithm)
-            return CURLDIGEST_NOMEM;
-          if(Curl_raw_equal(content, "MD5-sess"))
-            d->algo = CURLDIGESTALGO_MD5SESS;
-          else if(Curl_raw_equal(content, "MD5"))
-            d->algo = CURLDIGESTALGO_MD5;
-          else
-            return CURLDIGEST_BADALGO;
-        }
-        else {
-          /* unknown specifier, ignore it! */
-        }
-      }
-      else
-        break; /* we're done here */
-
-      /* pass all additional spaces here */
-      while(*header && ISSPACE(*header))
-        header++;
-      if(',' == *header)
-        /* allow the list to be comma-separated */
-        header++;
-    }
-    /* We had a nonce since before, and we got another one now without
-       'stale=true'. This means we provided bad credentials in the previous
-       request */
-    if(before && !d->stale)
-      return CURLDIGEST_BAD;
-
-    /* We got this header without a nonce, that's a bad Digest line! */
-    if(!d->nonce)
-      return CURLDIGEST_BAD;
-  }
-  else
-    /* else not a digest, get out */
-    return CURLDIGEST_NONE;
-
-  return CURLDIGEST_FINE;
-}
-
-/* convert md5 chunk to RFC2617 (section 3.1.3) -suitable ascii string*/
-static void md5_to_ascii(unsigned char *source, /* 16 bytes */
-                         unsigned char *dest) /* 33 bytes */
-{
-  int i;
-  for(i=0; i<16; i++)
-    snprintf((char *)&dest[i*2], 3, "%02x", source[i]);
-}
-
-/* Perform quoted-string escaping as described in RFC2616 and its errata */
-static char *string_quoted(const char *source)
-{
-  char *dest, *d;
-  const char *s = source;
-  size_t n = 1; /* null terminator */
-
-  /* Calculate size needed */
-  while(*s) {
-    ++n;
-    if(*s == '"' || *s == '\\') {
-      ++n;
-    }
-    ++s;
-  }
-
-  dest = malloc(n);
-  if(dest) {
-    s = source;
-    d = dest;
-    while(*s) {
-      if(*s == '"' || *s == '\\') {
-        *d++ = '\\';
-      }
-      *d++ = *s++;
-    }
-    *d = 0;
-  }
-
-  return dest;
+  return Curl_sasl_decode_digest_http_message(header, digest);
 }
 
 CURLcode Curl_output_digest(struct connectdata *conn,
 }
 
 CURLcode Curl_output_digest(struct connectdata *conn,
@@ -303,48 +75,35 @@ CURLcode Curl_output_digest(struct connectdata *conn,
                             const unsigned char *request,
                             const unsigned char *uripath)
 {
                             const unsigned char *request,
                             const unsigned char *uripath)
 {
-  /* We have a Digest setup for this, use it!  Now, to get all the details for
-     this sorted out, I must urge you dear friend to read up on the RFC2617
-     section 3.2.2, */
-  unsigned char md5buf[16]; /* 16 bytes/128 bits */
-  unsigned char request_digest[33];
-  unsigned char *md5this;
-  unsigned char ha1[33];/* 32 digits and 1 zero byte */
-  unsigned char ha2[33];/* 32 digits and 1 zero byte */
-  char cnoncebuf[33];
-  char *cnonce = NULL;
-  size_t cnonce_sz = 0;
-  char *tmp = NULL;
+  CURLcode result;
+  struct SessionHandle *data = conn->data;
+  unsigned char *path;
+  char *tmp;
+  char *response;
+  size_t len;
+  bool have_chlg;
+
+  /* Point to the address of the pointer that holds the string to send to the
+     server, which is for a plain host or for a HTTP proxy */
   char **allocuserpwd;
   char **allocuserpwd;
-  size_t userlen;
+
+  /* Point to the name and password for this */
   const char *userp;
   const char *userp;
-  char *userp_quoted;
   const char *passwdp;
   const char *passwdp;
-  struct auth *authp;
 
 
-  struct SessionHandle *data = conn->data;
-  struct digestdata *d;
-  CURLcode rc;
-/* The CURL_OUTPUT_DIGEST_CONV macro below is for non-ASCII machines.
-   It converts digest text to ASCII so the MD5 will be correct for
-   what ultimately goes over the network.
-*/
-#define CURL_OUTPUT_DIGEST_CONV(a, b) \
-  rc = Curl_convert_to_network(a, (char *)b, strlen((const char*)b)); \
-  if(rc != CURLE_OK) { \
-    free(b); \
-    return rc; \
-  }
+  /* Point to the correct struct with this */
+  struct digestdata *digest;
+  struct auth *authp;
 
   if(proxy) {
 
   if(proxy) {
-    d = &data->state.proxydigest;
+    digest = &data->state.proxydigest;
     allocuserpwd = &conn->allocptr.proxyuserpwd;
     userp = conn->proxyuser;
     passwdp = conn->proxypasswd;
     authp = &data->state.authproxy;
   }
   else {
     allocuserpwd = &conn->allocptr.proxyuserpwd;
     userp = conn->proxyuser;
     passwdp = conn->proxypasswd;
     authp = &data->state.authproxy;
   }
   else {
-    d = &data->state.digest;
+    digest = &data->state.digest;
     allocuserpwd = &conn->allocptr.userpwd;
     userp = conn->user;
     passwdp = conn->passwd;
     allocuserpwd = &conn->allocptr.userpwd;
     userp = conn->user;
     passwdp = conn->passwd;
@@ -355,78 +114,21 @@ CURLcode Curl_output_digest(struct connectdata *conn,
 
   /* not set means empty */
   if(!userp)
 
   /* not set means empty */
   if(!userp)
-    userp="";
+    userp = "";
 
   if(!passwdp)
 
   if(!passwdp)
-    passwdp="";
+    passwdp = "";
+
+#if defined(USE_WINDOWS_SSPI)
+  have_chlg = digest->input_token ? TRUE : FALSE;
+#else
+  have_chlg = digest->nonce ? TRUE : FALSE;
+#endif
 
 
-  if(!d->nonce) {
+  if(!have_chlg) {
     authp->done = FALSE;
     return CURLE_OK;
   }
     authp->done = FALSE;
     return CURLE_OK;
   }
-  authp->done = TRUE;
-
-  if(!d->nc)
-    d->nc = 1;
-
-  if(!d->cnonce) {
-    struct timeval now = Curl_tvnow();
-    snprintf(cnoncebuf, sizeof(cnoncebuf), "%08x%08x%08x%08x",
-             Curl_rand(data), Curl_rand(data),
-             (unsigned int)now.tv_sec,
-             (unsigned int)now.tv_usec);
-
-    rc = Curl_base64_encode(data, cnoncebuf, strlen(cnoncebuf),
-                            &cnonce, &cnonce_sz);
-    if(rc)
-      return rc;
-    d->cnonce = cnonce;
-  }
-
-  /*
-    if the algorithm is "MD5" or unspecified (which then defaults to MD5):
-
-    A1 = unq(username-value) ":" unq(realm-value) ":" passwd
-
-    if the algorithm is "MD5-sess" then:
-
-    A1 = H( unq(username-value) ":" unq(realm-value) ":" passwd )
-         ":" unq(nonce-value) ":" unq(cnonce-value)
-  */
-
-  md5this = (unsigned char *)
-    aprintf("%s:%s:%s", userp, d->realm, passwdp);
-  if(!md5this)
-    return CURLE_OUT_OF_MEMORY;
-
-  CURL_OUTPUT_DIGEST_CONV(data, md5this); /* convert on non-ASCII machines */
-  Curl_md5it(md5buf, md5this);
-  Curl_safefree(md5this);
-  md5_to_ascii(md5buf, ha1);
-
-  if(d->algo == CURLDIGESTALGO_MD5SESS) {
-    /* nonce and cnonce are OUTSIDE the hash */
-    tmp = aprintf("%s:%s:%s", ha1, d->nonce, d->cnonce);
-    if(!tmp)
-      return CURLE_OUT_OF_MEMORY;
-    CURL_OUTPUT_DIGEST_CONV(data, tmp); /* convert on non-ASCII machines */
-    Curl_md5it(md5buf, (unsigned char *)tmp);
-    Curl_safefree(tmp);
-    md5_to_ascii(md5buf, ha1);
-  }
-
-  /*
-    If the "qop" directive's value is "auth" or is unspecified, then A2 is:
-
-      A2       = Method ":" digest-uri-value
-
-          If the "qop" value is "auth-int", then A2 is:
-
-      A2       = Method ":" digest-uri-value ":" H(entity-body)
-
-    (The "Method" value is the HTTP request method as specified in section
-    5.1.1 of RFC 2616)
-  */
 
   /* So IE browsers < v7 cut off the URI part at the query part when they
      evaluate the MD5 and some (IIS?) servers work with them so we may need to
 
   /* So IE browsers < v7 cut off the URI part at the query part when they
      evaluate the MD5 and some (IIS?) servers work with them so we may need to
@@ -440,165 +142,40 @@ CURLcode Curl_output_digest(struct connectdata *conn,
      Further details on Digest implementation differences:
      http://www.fngtps.com/2006/09/http-authentication
   */
      Further details on Digest implementation differences:
      http://www.fngtps.com/2006/09/http-authentication
   */
+
   if(authp->iestyle && ((tmp = strchr((char *)uripath, '?')) != NULL)) {
   if(authp->iestyle && ((tmp = strchr((char *)uripath, '?')) != NULL)) {
-    md5this = (unsigned char *)aprintf("%s:%.*s", request,
-                                       curlx_sztosi(tmp - (char *)uripath),
-                                       uripath);
+    size_t urilen = tmp - (char *)uripath;
+
+    path = (unsigned char *) aprintf("%.*s", urilen, uripath);
   }
   else
   }
   else
-    md5this = (unsigned char *)aprintf("%s:%s", request, uripath);
-
-  if(d->qop && Curl_raw_equal(d->qop, "auth-int")) {
-    /* We don't support auth-int for PUT or POST at the moment.
-       TODO: replace md5 of empty string with entity-body for PUT/POST */
-    unsigned char *md5this2 = (unsigned char *)
-      aprintf("%s:%s", md5this, "d41d8cd98f00b204e9800998ecf8427e");
-    Curl_safefree(md5this);
-    md5this = md5this2;
-  }
+    path = (unsigned char *) strdup((char *) uripath);
 
 
-  if(!md5this)
-    return CURLE_OUT_OF_MEMORY;
-
-  CURL_OUTPUT_DIGEST_CONV(data, md5this); /* convert on non-ASCII machines */
-  Curl_md5it(md5buf, md5this);
-  Curl_safefree(md5this);
-  md5_to_ascii(md5buf, ha2);
-
-  if(d->qop) {
-    md5this = (unsigned char *)aprintf("%s:%s:%08x:%s:%s:%s",
-                                       ha1,
-                                       d->nonce,
-                                       d->nc,
-                                       d->cnonce,
-                                       d->qop,
-                                       ha2);
-  }
-  else {
-    md5this = (unsigned char *)aprintf("%s:%s:%s",
-                                       ha1,
-                                       d->nonce,
-                                       ha2);
-  }
-  if(!md5this)
+  if(!path)
     return CURLE_OUT_OF_MEMORY;
 
     return CURLE_OUT_OF_MEMORY;
 
-  CURL_OUTPUT_DIGEST_CONV(data, md5this); /* convert on non-ASCII machines */
-  Curl_md5it(md5buf, md5this);
-  Curl_safefree(md5this);
-  md5_to_ascii(md5buf, request_digest);
-
-  /* for test case 64 (snooped from a Mozilla 1.3a request)
-
-    Authorization: Digest username="testuser", realm="testrealm", \
-    nonce="1053604145", uri="/64", response="c55f7f30d83d774a3d2dcacf725abaca"
-
-    Digest parameters are all quoted strings.  Username which is provided by
-    the user will need double quotes and backslashes within it escaped.  For
-    the other fields, this shouldn't be an issue.  realm, nonce, and opaque
-    are copied as is from the server, escapes and all.  cnonce is generated
-    with web-safe characters.  uri is already percent encoded.  nc is 8 hex
-    characters.  algorithm and qop with standard values only contain web-safe
-    chracters.
-  */
-  userp_quoted = string_quoted(userp);
-  if(!userp_quoted)
-    return CURLE_OUT_OF_MEMORY;
+  result = Curl_sasl_create_digest_http_message(data, userp, passwdp, request,
+                                                path, digest, &response, &len);
+  free(path);
+  if(result)
+    return result;
 
 
-  if(d->qop) {
-    *allocuserpwd =
-      aprintf( "%sAuthorization: Digest "
-               "username=\"%s\", "
-               "realm=\"%s\", "
-               "nonce=\"%s\", "
-               "uri=\"%s\", "
-               "cnonce=\"%s\", "
-               "nc=%08x, "
-               "qop=%s, "
-               "response=\"%s\"",
-               proxy?"Proxy-":"",
-               userp_quoted,
-               d->realm,
-               d->nonce,
-               uripath, /* this is the PATH part of the URL */
-               d->cnonce,
-               d->nc,
-               d->qop,
-               request_digest);
-
-    if(Curl_raw_equal(d->qop, "auth"))
-      d->nc++; /* The nc (from RFC) has to be a 8 hex digit number 0 padded
-                  which tells to the server how many times you are using the
-                  same nonce in the qop=auth mode. */
-  }
-  else {
-    *allocuserpwd =
-      aprintf( "%sAuthorization: Digest "
-               "username=\"%s\", "
-               "realm=\"%s\", "
-               "nonce=\"%s\", "
-               "uri=\"%s\", "
-               "response=\"%s\"",
-               proxy?"Proxy-":"",
-               userp_quoted,
-               d->realm,
-               d->nonce,
-               uripath, /* this is the PATH part of the URL */
-               request_digest);
-  }
-  Curl_safefree(userp_quoted);
+  *allocuserpwd = aprintf("%sAuthorization: Digest %s\r\n",
+                          proxy ? "Proxy-" : "",
+                          response);
+  free(response);
   if(!*allocuserpwd)
     return CURLE_OUT_OF_MEMORY;
 
   if(!*allocuserpwd)
     return CURLE_OUT_OF_MEMORY;
 
-  /* Add optional fields */
-  if(d->opaque) {
-    /* append opaque */
-    tmp = aprintf("%s, opaque=\"%s\"", *allocuserpwd, d->opaque);
-    if(!tmp)
-      return CURLE_OUT_OF_MEMORY;
-    free(*allocuserpwd);
-    *allocuserpwd = tmp;
-  }
-
-  if(d->algorithm) {
-    /* append algorithm */
-    tmp = aprintf("%s, algorithm=\"%s\"", *allocuserpwd, d->algorithm);
-    if(!tmp)
-      return CURLE_OUT_OF_MEMORY;
-    free(*allocuserpwd);
-    *allocuserpwd = tmp;
-  }
-
-  /* append CRLF + zero (3 bytes) to the userpwd header */
-  userlen = strlen(*allocuserpwd);
-  tmp = realloc(*allocuserpwd, userlen + 3);
-  if(!tmp)
-    return CURLE_OUT_OF_MEMORY;
-  strcpy(&tmp[userlen], "\r\n"); /* append the data */
-  *allocuserpwd = tmp;
+  authp->done = TRUE;
 
   return CURLE_OK;
 }
 
 
   return CURLE_OK;
 }
 
-static void digest_cleanup_one(struct digestdata *d)
-{
-  Curl_safefree(d->nonce);
-  Curl_safefree(d->cnonce);
-  Curl_safefree(d->realm);
-  Curl_safefree(d->opaque);
-  Curl_safefree(d->qop);
-  Curl_safefree(d->algorithm);
-
-  d->nc = 0;
-  d->algo = CURLDIGESTALGO_MD5; /* default algorithm */
-  d->stale = FALSE; /* default means normal, not stale */
-}
-
-
 void Curl_digest_cleanup(struct SessionHandle *data)
 {
 void Curl_digest_cleanup(struct SessionHandle *data)
 {
-  digest_cleanup_one(&data->state.digest);
-  digest_cleanup_one(&data->state.proxydigest);
+  Curl_sasl_digest_cleanup(&data->state.digest);
+  Curl_sasl_digest_cleanup(&data->state.proxydigest);
 }
 
 #endif
 }
 
 #endif
index c6a4e91..d13d563 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  ***************************************************************************/
 #include "curl_setup.h"
 
  ***************************************************************************/
 #include "curl_setup.h"
 
-typedef enum {
-  CURLDIGEST_NONE, /* not a digest */
-  CURLDIGEST_BAD,  /* a digest, but one we don't like */
-  CURLDIGEST_BADALGO, /* unsupported algorithm requested */
-  CURLDIGEST_NOMEM,
-  CURLDIGEST_FINE, /* a digest we act on */
-
-  CURLDIGEST_LAST  /* last entry in this enum, don't use */
-} CURLdigest;
-
-enum {
-  CURLDIGESTALGO_MD5,
-  CURLDIGESTALGO_MD5SESS
-};
-
 /* this is for digest header input */
 /* this is for digest header input */
-CURLdigest Curl_input_digest(struct connectdata *conn,
-                             bool proxy, const char *header);
+CURLcode Curl_input_digest(struct connectdata *conn,
+                           bool proxy, const char *header);
 
 /* this is for creating digest header output */
 CURLcode Curl_output_digest(struct connectdata *conn,
 
 /* this is for creating digest header output */
 CURLcode Curl_output_digest(struct connectdata *conn,
index 9b981b3..97d0cb7 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "curl_setup.h"
 
 #ifdef HAVE_GSSAPI
 #include "curl_setup.h"
 
 #ifdef HAVE_GSSAPI
+
+#if !defined(CURL_DISABLE_HTTP) && defined(USE_SPNEGO)
+
 #ifdef HAVE_OLD_GSSMIT
 #define GSS_C_NT_HOSTBASED_SERVICE gss_nt_service_name
 #define NCOMPAT 1
 #endif
 
 #ifdef HAVE_OLD_GSSMIT
 #define GSS_C_NT_HOSTBASED_SERVICE gss_nt_service_name
 #define NCOMPAT 1
 #endif
 
-#ifndef CURL_DISABLE_HTTP
-
 #include "urldata.h"
 #include "sendf.h"
 #include "curl_gssapi.h"
 #include "urldata.h"
 #include "sendf.h"
 #include "curl_gssapi.h"
 #include "curl_memory.h"
 #include "url.h"
 
 #include "curl_memory.h"
 #include "url.h"
 
-#ifdef HAVE_SPNEGO
-#  include <spnegohelp.h>
-#  ifdef USE_SSLEAY
-#    ifdef USE_OPENSSL
-#      include <openssl/objects.h>
-#    else
-#      include <objects.h>
-#    endif
-#  else
-#    error "Can't compile SPNEGO support without OpenSSL."
-#  endif
-#endif
-
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
 
 static int
 get_gss_name(struct connectdata *conn, bool proxy, gss_name_t *server)
 {
 static int
 get_gss_name(struct connectdata *conn, bool proxy, gss_name_t *server)
 {
-  struct negotiatedata *neg_ctx = proxy?&conn->data->state.proxyneg:
-    &conn->data->state.negotiate;
   OM_uint32 major_status, minor_status;
   gss_buffer_desc token = GSS_C_EMPTY_BUFFER;
   char name[2048];
   OM_uint32 major_status, minor_status;
   gss_buffer_desc token = GSS_C_EMPTY_BUFFER;
   char name[2048];
-  const char* service;
-
-  /* GSSAPI implementation by Globus (known as GSI) requires the name to be
-     of form "<service>/<fqdn>" instead of <service>@<fqdn> (ie. slash instead
-     of at-sign). Also GSI servers are often identified as 'host' not 'khttp'.
-     Change following lines if you want to use GSI */
-
-  /* IIS uses the <service>@<fqdn> form but uses 'http' as the service name */
-
-  if(neg_ctx->gss)
-    service = "KHTTP";
-  else
-    service = "HTTP";
+  const char* service = "HTTP";
 
   token.length = strlen(service) + 1 + strlen(proxy ? conn->proxy.name :
                                               conn->host.name) + 1;
 
   token.length = strlen(service) + 1 + strlen(proxy ? conn->proxy.name :
                                               conn->host.name) + 1;
@@ -97,36 +71,6 @@ get_gss_name(struct connectdata *conn, bool proxy, gss_name_t *server)
   return GSS_ERROR(major_status) ? -1 : 0;
 }
 
   return GSS_ERROR(major_status) ? -1 : 0;
 }
 
-static void
-log_gss_error(struct connectdata *conn, OM_uint32 error_status,
-              const char *prefix)
-{
-  OM_uint32 maj_stat, min_stat;
-  OM_uint32 msg_ctx = 0;
-  gss_buffer_desc status_string;
-  char buf[1024];
-  size_t len;
-
-  snprintf(buf, sizeof(buf), "%s", prefix);
-  len = strlen(buf);
-  do {
-    maj_stat = gss_display_status(&min_stat,
-                                  error_status,
-                                  GSS_C_MECH_CODE,
-                                  GSS_C_NO_OID,
-                                  &msg_ctx,
-                                  &status_string);
-      if(sizeof(buf) > len + status_string.length + 1) {
-        snprintf(buf + len, sizeof(buf) - len,
-                 ": %s", (char*) status_string.value);
-      len += status_string.length;
-    }
-    gss_release_buffer(&min_stat, &status_string);
-  } while(!GSS_ERROR(maj_stat) && msg_ctx != 0);
-
-  infof(conn->data, "%s\n", buf);
-}
-
 /* returning zero (0) means success, everything else is treated as "failure"
    with no care exactly what the failure was */
 int Curl_input_negotiate(struct connectdata *conn, bool proxy,
 /* returning zero (0) means success, everything else is treated as "failure"
    with no care exactly what the failure was */
 int Curl_input_negotiate(struct connectdata *conn, bool proxy,
@@ -141,32 +85,7 @@ int Curl_input_negotiate(struct connectdata *conn, bool proxy,
   int ret;
   size_t len;
   size_t rawlen = 0;
   int ret;
   size_t len;
   size_t rawlen = 0;
-  bool gss;
-  const char* protocol;
-  CURLcode error;
-
-  while(*header && ISSPACE(*header))
-    header++;
-  if(checkprefix("GSS-Negotiate", header)) {
-    protocol = "GSS-Negotiate";
-    gss = TRUE;
-  }
-  else if(checkprefix("Negotiate", header)) {
-    protocol = "Negotiate";
-    gss = FALSE;
-  }
-  else
-    return -1;
-
-  if(neg_ctx->context) {
-    if(neg_ctx->gss != gss) {
-      return -1;
-    }
-  }
-  else {
-    neg_ctx->protocol = protocol;
-    neg_ctx->gss = gss;
-  }
+  CURLcode result;
 
   if(neg_ctx->context && neg_ctx->status == GSS_S_COMPLETE) {
     /* We finished successfully our part of authentication, but server
 
   if(neg_ctx->context && neg_ctx->status == GSS_S_COMPLETE) {
     /* We finished successfully our part of authentication, but server
@@ -180,75 +99,30 @@ int Curl_input_negotiate(struct connectdata *conn, bool proxy,
       (ret = get_gss_name(conn, proxy, &neg_ctx->server_name)))
     return ret;
 
       (ret = get_gss_name(conn, proxy, &neg_ctx->server_name)))
     return ret;
 
-  header += strlen(neg_ctx->protocol);
+  header += strlen("Negotiate");
   while(*header && ISSPACE(*header))
     header++;
 
   len = strlen(header);
   if(len > 0) {
   while(*header && ISSPACE(*header))
     header++;
 
   len = strlen(header);
   if(len > 0) {
-    error = Curl_base64_decode(header,
-                               (unsigned char **)&input_token.value, &rawlen);
-    if(error || rawlen == 0)
+    result = Curl_base64_decode(header, (unsigned char **)&input_token.value,
+                                &rawlen);
+    if(result || rawlen == 0)
       return -1;
     input_token.length = rawlen;
 
     DEBUGASSERT(input_token.value != NULL);
       return -1;
     input_token.length = rawlen;
 
     DEBUGASSERT(input_token.value != NULL);
-
-#ifdef HAVE_SPNEGO /* Handle SPNEGO */
-    if(checkprefix("Negotiate", header)) {
-      unsigned char  *spnegoToken       = NULL;
-      size_t          spnegoTokenLength = 0;
-      gss_buffer_desc mechToken         = GSS_C_EMPTY_BUFFER;
-
-      spnegoToken = malloc(input_token.length);
-      if(spnegoToken == NULL) {
-        Curl_safefree(input_token.value);
-        return CURLE_OUT_OF_MEMORY;
-      }
-      memcpy(spnegoToken, input_token.value, input_token.length);
-      spnegoTokenLength = input_token.length;
-
-      if(!parseSpnegoTargetToken(spnegoToken,
-                                 spnegoTokenLength,
-                                 NULL,
-                                 NULL,
-                                 (unsigned char**)&mechToken.value,
-                                 &mechToken.length,
-                                 NULL,
-                                 NULL)) {
-        Curl_safefree(spnegoToken);
-        infof(data, "Parse SPNEGO Target Token failed\n");
-      }
-      else if(!mechToken.value || !mechToken.length) {
-        Curl_safefree(spnegoToken);
-        if(mechToken.value)
-          gss_release_buffer(&discard_st, &mechToken);
-        infof(data, "Parse SPNEGO Target Token succeeded (NULL token)\n");
-      }
-      else {
-        Curl_safefree(spnegoToken);
-        Curl_safefree(input_token.value);
-        input_token.value = malloc(mechToken.length);
-        if(input_token.value == NULL) {
-          gss_release_buffer(&discard_st, &mechToken);
-          return CURLE_OUT_OF_MEMORY;
-        }
-        memcpy(input_token.value, mechToken.value, mechToken.length);
-        input_token.length = mechToken.length;
-        gss_release_buffer(&discard_st, &mechToken);
-        infof(data, "Parse SPNEGO Target Token succeeded\n");
-      }
-    }
-#endif
   }
 
   major_status = Curl_gss_init_sec_context(data,
                                            &minor_status,
                                            &neg_ctx->context,
                                            neg_ctx->server_name,
   }
 
   major_status = Curl_gss_init_sec_context(data,
                                            &minor_status,
                                            &neg_ctx->context,
                                            neg_ctx->server_name,
+                                           &Curl_spnego_mech_oid,
                                            GSS_C_NO_CHANNEL_BINDINGS,
                                            &input_token,
                                            &output_token,
                                            GSS_C_NO_CHANNEL_BINDINGS,
                                            &input_token,
                                            &output_token,
+                                           TRUE,
                                            NULL);
   Curl_safefree(input_token.value);
 
                                            NULL);
   Curl_safefree(input_token.value);
 
@@ -256,7 +130,8 @@ int Curl_input_negotiate(struct connectdata *conn, bool proxy,
   if(GSS_ERROR(major_status)) {
     if(output_token.value)
       gss_release_buffer(&discard_st, &output_token);
   if(GSS_ERROR(major_status)) {
     if(output_token.value)
       gss_release_buffer(&discard_st, &output_token);
-    log_gss_error(conn, minor_status, "gss_init_sec_context() failed: ");
+    Curl_gss_log_error(conn->data, minor_status,
+                       "gss_init_sec_context() failed: ");
     return -1;
   }
 
     return -1;
   }
 
@@ -278,64 +153,18 @@ CURLcode Curl_output_negotiate(struct connectdata *conn, bool proxy)
   char *encoded = NULL;
   size_t len = 0;
   char *userp;
   char *encoded = NULL;
   size_t len = 0;
   char *userp;
-  CURLcode error;
+  CURLcode result;
   OM_uint32 discard_st;
 
   OM_uint32 discard_st;
 
-#ifdef HAVE_SPNEGO /* Handle SPNEGO */
-  if(checkprefix("Negotiate", neg_ctx->protocol)) {
-    ASN1_OBJECT    *object              = NULL;
-    unsigned char  *responseToken       = NULL;
-    size_t          responseTokenLength = 0;
-    gss_buffer_desc spnegoToken         = GSS_C_EMPTY_BUFFER;
-
-    responseToken = malloc(neg_ctx->output_token.length);
-    if(responseToken == NULL)
-      return CURLE_OUT_OF_MEMORY;
-    memcpy(responseToken, neg_ctx->output_token.value,
-           neg_ctx->output_token.length);
-    responseTokenLength = neg_ctx->output_token.length;
-
-    object = OBJ_txt2obj("1.2.840.113554.1.2.2", 1);
-    if(!object) {
-      Curl_safefree(responseToken);
-      return CURLE_OUT_OF_MEMORY;
-    }
-
-    if(!makeSpnegoInitialToken(object,
-                               responseToken,
-                               responseTokenLength,
-                               (unsigned char**)&spnegoToken.value,
-                               &spnegoToken.length)) {
-      Curl_safefree(responseToken);
-      ASN1_OBJECT_free(object);
-      infof(conn->data, "Make SPNEGO Initial Token failed\n");
-    }
-    else if(!spnegoToken.value || !spnegoToken.length) {
-      Curl_safefree(responseToken);
-      ASN1_OBJECT_free(object);
-      if(spnegoToken.value)
-        gss_release_buffer(&discard_st, &spnegoToken);
-      infof(conn->data, "Make SPNEGO Initial Token succeeded (NULL token)\n");
-    }
-    else {
-      Curl_safefree(responseToken);
-      ASN1_OBJECT_free(object);
-      gss_release_buffer(&discard_st, &neg_ctx->output_token);
-      neg_ctx->output_token.value = spnegoToken.value;
-      neg_ctx->output_token.length = spnegoToken.length;
-      infof(conn->data, "Make SPNEGO Initial Token succeeded\n");
-    }
-  }
-#endif
-  error = Curl_base64_encode(conn->data,
-                             neg_ctx->output_token.value,
-                             neg_ctx->output_token.length,
-                             &encoded, &len);
-  if(error) {
+  result = Curl_base64_encode(conn->data,
+                              neg_ctx->output_token.value,
+                              neg_ctx->output_token.length,
+                              &encoded, &len);
+  if(result) {
     gss_release_buffer(&discard_st, &neg_ctx->output_token);
     neg_ctx->output_token.value = NULL;
     neg_ctx->output_token.length = 0;
     gss_release_buffer(&discard_st, &neg_ctx->output_token);
     neg_ctx->output_token.value = NULL;
     neg_ctx->output_token.length = 0;
-    return error;
+    return result;
   }
 
   if(!encoded || !len) {
   }
 
   if(!encoded || !len) {
@@ -345,8 +174,8 @@ CURLcode Curl_output_negotiate(struct connectdata *conn, bool proxy)
     return CURLE_REMOTE_ACCESS_DENIED;
   }
 
     return CURLE_REMOTE_ACCESS_DENIED;
   }
 
-  userp = aprintf("%sAuthorization: %s %s\r\n", proxy ? "Proxy-" : "",
-                  neg_ctx->protocol, encoded);
+  userp = aprintf("%sAuthorization: Negotiate %s\r\n", proxy ? "Proxy-" : "",
+                  encoded);
   if(proxy) {
     Curl_safefree(conn->allocptr.proxyuserpwd);
     conn->allocptr.proxyuserpwd = userp;
   if(proxy) {
     Curl_safefree(conn->allocptr.proxyuserpwd);
     conn->allocptr.proxyuserpwd = userp;
@@ -357,7 +186,6 @@ CURLcode Curl_output_negotiate(struct connectdata *conn, bool proxy)
   }
 
   Curl_safefree(encoded);
   }
 
   Curl_safefree(encoded);
-  Curl_cleanup_negotiate(conn->data);
 
   return (userp == NULL) ? CURLE_OUT_OF_MEMORY : CURLE_OK;
 }
 
   return (userp == NULL) ? CURLE_OUT_OF_MEMORY : CURLE_OK;
 }
@@ -383,6 +211,6 @@ void Curl_cleanup_negotiate(struct SessionHandle *data)
   cleanup(&data->state.proxyneg);
 }
 
   cleanup(&data->state.proxyneg);
 }
 
+#endif /* !CURL_DISABLE_HTTP && USE_SPNEGO */
 
 
-#endif
-#endif
+#endif /* HAVE_GSSAPI */
index e584d76..f7efe8c 100644 (file)
@@ -22,7 +22,7 @@
  *
  ***************************************************************************/
 
  *
  ***************************************************************************/
 
-#ifdef USE_HTTP_NEGOTIATE
+#ifdef USE_SPNEGO
 
 /* this is for Negotiate header input */
 int Curl_input_negotiate(struct connectdata *conn, bool proxy,
 
 /* this is for Negotiate header input */
 int Curl_input_negotiate(struct connectdata *conn, bool proxy,
@@ -37,6 +37,6 @@ void Curl_cleanup_negotiate(struct SessionHandle *data);
 #define GSS_ERROR(status) (status & 0x80000000)
 #endif
 
 #define GSS_ERROR(status) (status & 0x80000000)
 #endif
 
-#endif /* USE_HTTP_NEGOTIATE */
+#endif /* USE_SPNEGO */
 
 #endif /* HEADER_CURL_HTTP_NEGOTIATE_H */
 
 #endif /* HEADER_CURL_HTTP_NEGOTIATE_H */
index 1381d52..d651ac9 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 
 #ifdef USE_WINDOWS_SSPI
 
 
 #ifdef USE_WINDOWS_SSPI
 
-#ifndef CURL_DISABLE_HTTP
+#if !defined(CURL_DISABLE_HTTP) && defined(USE_SPNEGO)
 
 #include "urldata.h"
 #include "sendf.h"
 #include "rawstr.h"
 #include "warnless.h"
 #include "curl_base64.h"
 
 #include "urldata.h"
 #include "sendf.h"
 #include "rawstr.h"
 #include "warnless.h"
 #include "curl_base64.h"
+#include "curl_sasl.h"
 #include "http_negotiate.h"
 #include "curl_memory.h"
 #include "curl_multibyte.h"
 #include "http_negotiate.h"
 #include "curl_memory.h"
 #include "curl_multibyte.h"
 /* The last #include file should be: */
 #include "memdebug.h"
 
 /* The last #include file should be: */
 #include "memdebug.h"
 
-static int
-get_gss_name(struct connectdata *conn, bool proxy,
-             struct negotiatedata *neg_ctx)
-{
-  const char* service;
-  size_t length;
-
-  if(proxy && !conn->proxy.name)
-    /* proxy auth requested but no given proxy name, error out! */
-    return -1;
-
-  /* GSSAPI implementation by Globus (known as GSI) requires the name to be
-     of form "<service>/<fqdn>" instead of <service>@<fqdn> (ie. slash instead
-     of at-sign). Also GSI servers are often identified as 'host' not 'khttp'.
-     Change following lines if you want to use GSI */
-
-  /* IIS uses the <service>@<fqdn> form but uses 'http' as the service name,
-     and SSPI then generates an NTLM token. When using <service>/<fqdn> a
-     Kerberos token is generated. */
-
-  if(neg_ctx->gss)
-    service = "KHTTP";
-  else
-    service = "HTTP";
-
-  length = strlen(service) + 1 + strlen(proxy ? conn->proxy.name :
-                                        conn->host.name) + 1;
-  if(length + 1 > sizeof(neg_ctx->server_name))
-    return EMSGSIZE;
-
-  snprintf(neg_ctx->server_name, sizeof(neg_ctx->server_name), "%s/%s",
-           service, proxy ? conn->proxy.name : conn->host.name);
-
-  return 0;
-}
-
 /* returning zero (0) means success, everything else is treated as "failure"
    with no care exactly what the failure was */
 int Curl_input_negotiate(struct connectdata *conn, bool proxy,
                          const char *header)
 {
 /* returning zero (0) means success, everything else is treated as "failure"
    with no care exactly what the failure was */
 int Curl_input_negotiate(struct connectdata *conn, bool proxy,
                          const char *header)
 {
-  struct negotiatedata *neg_ctx = proxy?&conn->data->state.proxyneg:
-    &conn->data->state.negotiate;
-  BYTE              *input_token = 0;
+  BYTE              *input_token = NULL;
   SecBufferDesc     out_buff_desc;
   SecBuffer         out_sec_buff;
   SecBufferDesc     in_buff_desc;
   SecBuffer         in_sec_buff;
   unsigned long     context_attributes;
   SecBufferDesc     out_buff_desc;
   SecBuffer         out_sec_buff;
   SecBufferDesc     in_buff_desc;
   SecBuffer         in_sec_buff;
   unsigned long     context_attributes;
-  TimeStamp         lifetime;
-  TCHAR             *sname;
+  TimeStamp         expiry;
   int ret;
   size_t len = 0, input_token_len = 0;
   int ret;
   size_t len = 0, input_token_len = 0;
-  bool gss = FALSE;
-  const char* protocol;
   CURLcode error;
 
   CURLcode error;
 
-  while(*header && ISSPACE(*header))
-    header++;
+  /* Point to the username and password */
+  const char *userp;
+  const char *passwdp;
 
 
-  if(checkprefix("GSS-Negotiate", header)) {
-    protocol = "GSS-Negotiate";
-    gss = TRUE;
-  }
-  else if(checkprefix("Negotiate", header)) {
-    protocol = "Negotiate";
-    gss = FALSE;
-  }
-  else
-    return -1;
+  /* Point to the correct struct with this */
+  struct negotiatedata *neg_ctx;
 
 
-  if(neg_ctx->context) {
-    if(neg_ctx->gss != gss) {
-      return -1;
-    }
+  if(proxy) {
+    userp = conn->proxyuser;
+    passwdp = conn->proxypasswd;
+    neg_ctx = &conn->data->state.proxyneg;
   }
   else {
   }
   else {
-    neg_ctx->protocol = protocol;
-    neg_ctx->gss = gss;
+    userp = conn->user;
+    passwdp = conn->passwd;
+    neg_ctx = &conn->data->state.negotiate;
   }
 
   }
 
+  /* Not set means empty */
+  if(!userp)
+    userp = "";
+
+  if(!passwdp)
+    passwdp = "";
+
   if(neg_ctx->context && neg_ctx->status == SEC_E_OK) {
     /* We finished successfully our part of authentication, but server
      * rejected it (since we're again here). Exit with an error since we
   if(neg_ctx->context && neg_ctx->status == SEC_E_OK) {
     /* We finished successfully our part of authentication, but server
      * rejected it (since we're again here). Exit with an error since we
@@ -130,102 +91,119 @@ int Curl_input_negotiate(struct connectdata *conn, bool proxy,
     return -1;
   }
 
     return -1;
   }
 
-  if(0 == strlen(neg_ctx->server_name)) {
-    ret = get_gss_name(conn, proxy, neg_ctx);
-    if(ret)
-      return ret;
+  if(!neg_ctx->server_name) {
+    /* Check proxy auth requested but no given proxy name */
+    if(proxy && !conn->proxy.name)
+      return -1;
+
+    /* Generate our SPN */
+    neg_ctx->server_name = Curl_sasl_build_spn("HTTP",
+                                                proxy ? conn->proxy.name :
+                                                        conn->host.name);
+    if(!neg_ctx->server_name)
+      return -1;
   }
 
   if(!neg_ctx->output_token) {
     PSecPkgInfo SecurityPackage;
   }
 
   if(!neg_ctx->output_token) {
     PSecPkgInfo SecurityPackage;
-    ret = s_pSecFn->QuerySecurityPackageInfo((TCHAR *) TEXT("Negotiate"),
+    ret = s_pSecFn->QuerySecurityPackageInfo((TCHAR *) TEXT(SP_NAME_NEGOTIATE),
                                              &SecurityPackage);
     if(ret != SEC_E_OK)
       return -1;
 
     /* Allocate input and output buffers according to the max token size
        as indicated by the security package */
                                              &SecurityPackage);
     if(ret != SEC_E_OK)
       return -1;
 
     /* Allocate input and output buffers according to the max token size
        as indicated by the security package */
-    neg_ctx->max_token_length = SecurityPackage->cbMaxToken;
-    neg_ctx->output_token = malloc(neg_ctx->max_token_length);
+    neg_ctx->token_max = SecurityPackage->cbMaxToken;
+    neg_ctx->output_token = malloc(neg_ctx->token_max);
     s_pSecFn->FreeContextBuffer(SecurityPackage);
   }
 
   /* Obtain the input token, if any */
     s_pSecFn->FreeContextBuffer(SecurityPackage);
   }
 
   /* Obtain the input token, if any */
-  header += strlen(neg_ctx->protocol);
+  header += strlen("Negotiate");
   while(*header && ISSPACE(*header))
     header++;
 
   len = strlen(header);
   if(!len) {
   while(*header && ISSPACE(*header))
     header++;
 
   len = strlen(header);
   if(!len) {
-    /* first call in a new negotation, we have to acquire credentials,
-       and allocate memory for the context */
+    /* Is this the first call in a new negotiation? */
+    if(neg_ctx->context) {
+      /* The server rejected our authentication and hasn't suppled any more
+         negotiation mechanisms */
+      return -1;
+    }
 
 
+    /* We have to acquire credentials and allocate memory for the context */
     neg_ctx->credentials = malloc(sizeof(CredHandle));
     neg_ctx->context = malloc(sizeof(CtxtHandle));
 
     if(!neg_ctx->credentials || !neg_ctx->context)
       return -1;
 
     neg_ctx->credentials = malloc(sizeof(CredHandle));
     neg_ctx->context = malloc(sizeof(CtxtHandle));
 
     if(!neg_ctx->credentials || !neg_ctx->context)
       return -1;
 
+    if(userp && *userp) {
+      /* Populate our identity structure */
+      error = Curl_create_sspi_identity(userp, passwdp, &neg_ctx->identity);
+      if(error)
+        return -1;
+
+      /* Allow proper cleanup of the identity structure */
+      neg_ctx->p_identity = &neg_ctx->identity;
+    }
+    else
+      /* Use the current Windows user */
+      neg_ctx->p_identity = NULL;
+
+    /* Acquire our credientials handle */
     neg_ctx->status =
       s_pSecFn->AcquireCredentialsHandle(NULL,
     neg_ctx->status =
       s_pSecFn->AcquireCredentialsHandle(NULL,
-                                         (TCHAR *) TEXT("Negotiate"),
-                                         SECPKG_CRED_OUTBOUND, NULL, NULL,
-                                         NULL, NULL, neg_ctx->credentials,
-                                         &lifetime);
+                                         (TCHAR *) TEXT(SP_NAME_NEGOTIATE),
+                                         SECPKG_CRED_OUTBOUND, NULL,
+                                         neg_ctx->p_identity, NULL, NULL,
+                                         neg_ctx->credentials, &expiry);
     if(neg_ctx->status != SEC_E_OK)
       return -1;
   }
   else {
     if(neg_ctx->status != SEC_E_OK)
       return -1;
   }
   else {
-    input_token = malloc(neg_ctx->max_token_length);
-    if(!input_token)
-      return -1;
-
     error = Curl_base64_decode(header,
                                (unsigned char **)&input_token,
                                &input_token_len);
     error = Curl_base64_decode(header,
                                (unsigned char **)&input_token,
                                &input_token_len);
-    if(error || input_token_len == 0)
+    if(error || !input_token_len)
       return -1;
   }
 
       return -1;
   }
 
-  /* prepare the output buffers, and input buffers if present */
-  out_buff_desc.ulVersion = 0;
+  /* Setup the "output" security buffer */
+  out_buff_desc.ulVersion = SECBUFFER_VERSION;
   out_buff_desc.cBuffers  = 1;
   out_buff_desc.pBuffers  = &out_sec_buff;
   out_buff_desc.cBuffers  = 1;
   out_buff_desc.pBuffers  = &out_sec_buff;
-
-  out_sec_buff.cbBuffer   = curlx_uztoul(neg_ctx->max_token_length);
   out_sec_buff.BufferType = SECBUFFER_TOKEN;
   out_sec_buff.pvBuffer   = neg_ctx->output_token;
   out_sec_buff.BufferType = SECBUFFER_TOKEN;
   out_sec_buff.pvBuffer   = neg_ctx->output_token;
+  out_sec_buff.cbBuffer   = curlx_uztoul(neg_ctx->token_max);
 
 
-
+  /* Setup the "input" security buffer if present */
   if(input_token) {
   if(input_token) {
-    in_buff_desc.ulVersion = 0;
+    in_buff_desc.ulVersion = SECBUFFER_VERSION;
     in_buff_desc.cBuffers  = 1;
     in_buff_desc.pBuffers  = &in_sec_buff;
     in_buff_desc.cBuffers  = 1;
     in_buff_desc.pBuffers  = &in_sec_buff;
-
-    in_sec_buff.cbBuffer   = curlx_uztoul(input_token_len);
     in_sec_buff.BufferType = SECBUFFER_TOKEN;
     in_sec_buff.pvBuffer   = input_token;
     in_sec_buff.BufferType = SECBUFFER_TOKEN;
     in_sec_buff.pvBuffer   = input_token;
+    in_sec_buff.cbBuffer   = curlx_uztoul(input_token_len);
   }
 
   }
 
-  sname = Curl_convert_UTF8_to_tchar(neg_ctx->server_name);
-  if(!sname)
-    return CURLE_OUT_OF_MEMORY;
-
+  /* Generate our message */
   neg_ctx->status = s_pSecFn->InitializeSecurityContext(
     neg_ctx->credentials,
   neg_ctx->status = s_pSecFn->InitializeSecurityContext(
     neg_ctx->credentials,
-    input_token ? neg_ctx->context : 0,
-    sname,
+    input_token ? neg_ctx->context : NULL,
+    neg_ctx->server_name,
     ISC_REQ_CONFIDENTIALITY,
     0,
     SECURITY_NATIVE_DREP,
     ISC_REQ_CONFIDENTIALITY,
     0,
     SECURITY_NATIVE_DREP,
-    input_token ? &in_buff_desc : 0,
+    input_token ? &in_buff_desc : NULL,
     0,
     neg_ctx->context,
     &out_buff_desc,
     &context_attributes,
     0,
     neg_ctx->context,
     &out_buff_desc,
     &context_attributes,
-    &lifetime);
+    &expiry);
 
 
-  Curl_unicodefree(sname);
+  Curl_safefree(input_token);
 
   if(GSS_ERROR(neg_ctx->status))
     return -1;
 
   if(GSS_ERROR(neg_ctx->status))
     return -1;
@@ -260,41 +238,50 @@ CURLcode Curl_output_negotiate(struct connectdata *conn, bool proxy)
   if(error)
     return error;
 
   if(error)
     return error;
 
-  if(len == 0)
+  if(!len)
     return CURLE_REMOTE_ACCESS_DENIED;
 
     return CURLE_REMOTE_ACCESS_DENIED;
 
-  userp = aprintf("%sAuthorization: %s %s\r\n", proxy ? "Proxy-" : "",
-                  neg_ctx->protocol, encoded);
+  userp = aprintf("%sAuthorization: Negotiate %s\r\n", proxy ? "Proxy-" : "",
+                  encoded);
 
 
-  if(proxy)
+  if(proxy) {
+    Curl_safefree(conn->allocptr.proxyuserpwd);
     conn->allocptr.proxyuserpwd = userp;
     conn->allocptr.proxyuserpwd = userp;
-  else
+  }
+  else {
+    Curl_safefree(conn->allocptr.userpwd);
     conn->allocptr.userpwd = userp;
     conn->allocptr.userpwd = userp;
+  }
   free(encoded);
   free(encoded);
-  Curl_cleanup_negotiate (conn->data);
   return (userp == NULL) ? CURLE_OUT_OF_MEMORY : CURLE_OK;
 }
 
 static void cleanup(struct negotiatedata *neg_ctx)
 {
   return (userp == NULL) ? CURLE_OUT_OF_MEMORY : CURLE_OK;
 }
 
 static void cleanup(struct negotiatedata *neg_ctx)
 {
+  /* Free our security context */
   if(neg_ctx->context) {
     s_pSecFn->DeleteSecurityContext(neg_ctx->context);
     free(neg_ctx->context);
   if(neg_ctx->context) {
     s_pSecFn->DeleteSecurityContext(neg_ctx->context);
     free(neg_ctx->context);
-    neg_ctx->context = 0;
+    neg_ctx->context = NULL;
   }
 
   }
 
+  /* Free our credentials handle */
   if(neg_ctx->credentials) {
     s_pSecFn->FreeCredentialsHandle(neg_ctx->credentials);
     free(neg_ctx->credentials);
   if(neg_ctx->credentials) {
     s_pSecFn->FreeCredentialsHandle(neg_ctx->credentials);
     free(neg_ctx->credentials);
-    neg_ctx->credentials = 0;
+    neg_ctx->credentials = NULL;
   }
 
   }
 
-  if(neg_ctx->output_token) {
-    free(neg_ctx->output_token);
-    neg_ctx->output_token = 0;
-  }
+  /* Free our identity */
+  Curl_sspi_free_identity(neg_ctx->p_identity);
+  neg_ctx->p_identity = NULL;
+
+  /* Free the SPN and output token */
+  Curl_safefree(neg_ctx->server_name);
+  Curl_safefree(neg_ctx->output_token);
 
 
-  neg_ctx->max_token_length = 0;
+  /* Reset any variables */
+  neg_ctx->token_max = 0;
 }
 
 void Curl_cleanup_negotiate(struct SessionHandle *data)
 }
 
 void Curl_cleanup_negotiate(struct SessionHandle *data)
@@ -303,6 +290,6 @@ void Curl_cleanup_negotiate(struct SessionHandle *data)
   cleanup(&data->state.proxyneg);
 }
 
   cleanup(&data->state.proxyneg);
 }
 
+#endif /* !CURL_DISABLE_HTTP && USE_SPNEGO */
 
 
-#endif
-#endif
+#endif /* USE_WINDOWS_SSPI */
index 7c60e95..72123ed 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -66,13 +66,13 @@ CURLcode Curl_proxy_connect(struct connectdata *conn)
      * This function might be called several times in the multi interface case
      * if the proxy's CONNTECT response is not instant.
      */
      * This function might be called several times in the multi interface case
      * if the proxy's CONNTECT response is not instant.
      */
-    prot_save = conn->data->state.proto.generic;
+    prot_save = conn->data->req.protop;
     memset(&http_proxy, 0, sizeof(http_proxy));
     memset(&http_proxy, 0, sizeof(http_proxy));
-    conn->data->state.proto.http = &http_proxy;
-    conn->bits.close = FALSE;
+    conn->data->req.protop = &http_proxy;
+    connkeep(conn, "HTTP proxy CONNECT");
     result = Curl_proxyCONNECT(conn, FIRSTSOCKET,
                                conn->host.name, conn->remote_port);
     result = Curl_proxyCONNECT(conn, FIRSTSOCKET,
                                conn->host.name, conn->remote_port);
-    conn->data->state.proto.generic = prot_save;
+    conn->data->req.protop = prot_save;
     if(CURLE_OK != result)
       return result;
 #else
     if(CURLE_OK != result)
       return result;
 #else
@@ -92,14 +92,12 @@ CURLcode Curl_proxy_connect(struct connectdata *conn)
 CURLcode Curl_proxyCONNECT(struct connectdata *conn,
                            int sockindex,
                            const char *hostname,
 CURLcode Curl_proxyCONNECT(struct connectdata *conn,
                            int sockindex,
                            const char *hostname,
-                           unsigned short remote_port)
+                           int remote_port)
 {
   int subversion=0;
   struct SessionHandle *data=conn->data;
   struct SingleRequest *k = &data->req;
   CURLcode result;
 {
   int subversion=0;
   struct SessionHandle *data=conn->data;
   struct SingleRequest *k = &data->req;
   CURLcode result;
-  long timeout =
-    data->set.timeout?data->set.timeout:PROXY_TIMEOUT; /* in milliseconds */
   curl_socket_t tunnelsocket = conn->sock[sockindex];
   curl_off_t cl=0;
   bool closeConnection = FALSE;
   curl_socket_t tunnelsocket = conn->sock[sockindex];
   curl_off_t cl=0;
   bool closeConnection = FALSE;
@@ -150,7 +148,7 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn,
 
       free(host_port);
 
 
       free(host_port);
 
-      if(CURLE_OK == result) {
+      if(!result) {
         char *host=(char *)"";
         const char *proxyconn="";
         const char *useragent="";
         char *host=(char *)"";
         const char *proxyconn="";
         const char *useragent="";
@@ -165,7 +163,7 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn,
           return CURLE_OUT_OF_MEMORY;
         }
 
           return CURLE_OUT_OF_MEMORY;
         }
 
-        if(!Curl_checkheaders(data, "Host:")) {
+        if(!Curl_checkProxyheaders(conn, "Host:")) {
           host = aprintf("Host: %s\r\n", hostheader);
           if(!host) {
             free(hostheader);
           host = aprintf("Host: %s\r\n", hostheader);
           if(!host) {
             free(hostheader);
@@ -173,10 +171,10 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn,
             return CURLE_OUT_OF_MEMORY;
           }
         }
             return CURLE_OUT_OF_MEMORY;
           }
         }
-        if(!Curl_checkheaders(data, "Proxy-Connection:"))
+        if(!Curl_checkProxyheaders(conn, "Proxy-Connection:"))
           proxyconn = "Proxy-Connection: Keep-Alive\r\n";
 
           proxyconn = "Proxy-Connection: Keep-Alive\r\n";
 
-        if(!Curl_checkheaders(data, "User-Agent:") &&
+        if(!Curl_checkProxyheaders(conn, "User-Agent:") &&
            data->set.str[STRING_USERAGENT])
           useragent = conn->allocptr.uagent;
 
            data->set.str[STRING_USERAGENT])
           useragent = conn->allocptr.uagent;
 
@@ -199,14 +197,14 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn,
           free(host);
         free(hostheader);
 
           free(host);
         free(hostheader);
 
-        if(CURLE_OK == result)
-          result = Curl_add_custom_headers(conn, req_buffer);
+        if(!result)
+          result = Curl_add_custom_headers(conn, TRUE, req_buffer);
 
 
-        if(CURLE_OK == result)
+        if(!result)
           /* CRLF terminate the request */
           result = Curl_add_bufferf(req_buffer, "\r\n");
 
           /* CRLF terminate the request */
           result = Curl_add_bufferf(req_buffer, "\r\n");
 
-        if(CURLE_OK == result) {
+        if(!result) {
           /* Send the connect request to the proxy */
           /* BLOCKING */
           result =
           /* Send the connect request to the proxy */
           /* BLOCKING */
           result =
@@ -223,14 +221,25 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn,
         return result;
 
       conn->tunnel_state[sockindex] = TUNNEL_CONNECT;
         return result;
 
       conn->tunnel_state[sockindex] = TUNNEL_CONNECT;
+    } /* END CONNECT PHASE */
+
+    check = Curl_timeleft(data, NULL, TRUE);
+    if(check <= 0) {
+      failf(data, "Proxy CONNECT aborted due to timeout");
+      return CURLE_RECV_ERROR;
+    }
 
 
-      /* now we've issued the CONNECT and we're waiting to hear back, return
-         and get called again polling-style */
+    if(0 == Curl_socket_ready(tunnelsocket, CURL_SOCKET_BAD, 0))
+      /* return so we'll be called again polling-style */
       return CURLE_OK;
       return CURLE_OK;
+    else {
+      DEBUGF(infof(data,
+                   "Read response immediately from proxy CONNECT\n"));
+    }
 
 
-    } /* END CONNECT PHASE */
+    /* at this point, the tunnel_connecting phase is over. */
 
 
-    { /* BEGIN NEGOTIATION PHASE */
+    { /* READING RESPONSE PHASE */
       size_t nread;   /* total size read */
       int perline; /* count bytes per line */
       int keepon=TRUE;
       size_t nread;   /* total size read */
       int perline; /* count bytes per line */
       int keepon=TRUE;
@@ -243,13 +252,10 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn,
 
       nread=0;
       perline=0;
 
       nread=0;
       perline=0;
-      keepon=TRUE;
 
       while((nread<BUFSIZE) && (keepon && !error)) {
 
 
       while((nread<BUFSIZE) && (keepon && !error)) {
 
-        /* if timeout is requested, find out how much remaining time we have */
-        check = timeout - /* timeout time */
-          Curl_tvdiff(Curl_tvnow(), conn->now); /* spent time */
+        check = Curl_timeleft(data, NULL, TRUE);
         if(check <= 0) {
           failf(data, "Proxy CONNECT aborted due to timeout");
           error = SELECT_TIMEOUT; /* already too little time */
         if(check <= 0) {
           failf(data, "Proxy CONNECT aborted due to timeout");
           error = SELECT_TIMEOUT; /* already too little time */
@@ -279,6 +285,7 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn,
               /* proxy auth was requested and there was proxy auth available,
                  then deem this as "mere" proxy disconnect */
               conn->bits.proxy_connect_closed = TRUE;
               /* proxy auth was requested and there was proxy auth available,
                  then deem this as "mere" proxy disconnect */
               conn->bits.proxy_connect_closed = TRUE;
+              infof(data, "Proxy CONNECT connection closed");
             }
             else {
               error = SELECT_ERROR;
             }
             else {
               error = SELECT_ERROR;
@@ -380,9 +387,9 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn,
                       keepon = 2;
 
                       if(cl) {
                       keepon = 2;
 
                       if(cl) {
-
-                        infof(data, "Ignore %" FORMAT_OFF_T
+                        infof(data, "Ignore %" CURL_FORMAT_CURL_OFF_T
                               " bytes of response-body\n", cl);
                               " bytes of response-body\n", cl);
+
                         /* remove the remaining chunk of what we already
                            read */
                         cl -= (gotbytes - i);
                         /* remove the remaining chunk of what we already
                            read */
                         cl -= (gotbytes - i);
@@ -452,8 +459,16 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn,
                       (401 == k->httpcode)) ||
                      (checkprefix("Proxy-authenticate:", line_start) &&
                       (407 == k->httpcode))) {
                       (401 == k->httpcode)) ||
                      (checkprefix("Proxy-authenticate:", line_start) &&
                       (407 == k->httpcode))) {
-                    result = Curl_http_input_auth(conn, k->httpcode,
-                                                  line_start);
+
+                    bool proxy = (k->httpcode == 407) ? TRUE : FALSE;
+                    char *auth = Curl_copy_header_value(line_start);
+                    if(!auth)
+                      return CURLE_OUT_OF_MEMORY;
+
+                    result = Curl_http_input_auth(conn, proxy, auth);
+
+                    Curl_safefree(auth);
+
                     if(result)
                       return result;
                   }
                     if(result)
                       return result;
                   }
@@ -519,7 +534,7 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn,
         conn->sock[sockindex] = CURL_SOCKET_BAD;
         break;
       }
         conn->sock[sockindex] = CURL_SOCKET_BAD;
         break;
       }
-    } /* END NEGOTIATION PHASE */
+    } /* END READING RESPONSE PHASE */
 
     /* If we are supposed to continue and request a new URL, which basically
      * means the HTTP authentication is still going on so if the tunnel
 
     /* If we are supposed to continue and request a new URL, which basically
      * means the HTTP authentication is still going on so if the tunnel
@@ -534,22 +549,33 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn,
   } while(data->req.newurl);
 
   if(200 != data->req.httpcode) {
   } while(data->req.newurl);
 
   if(200 != data->req.httpcode) {
-    failf(data, "Received HTTP code %d from proxy after CONNECT",
-          data->req.httpcode);
-
-    if(closeConnection && data->req.newurl)
+    if(closeConnection && data->req.newurl) {
       conn->bits.proxy_connect_closed = TRUE;
       conn->bits.proxy_connect_closed = TRUE;
-
-    if(data->req.newurl) {
-      /* this won't be used anymore for the CONNECT so free it now */
-      free(data->req.newurl);
-      data->req.newurl = NULL;
+      infof(data, "Connect me again please\n");
+    }
+    else {
+      if(data->req.newurl) {
+        /* this won't be used anymore for the CONNECT so free it now */
+        free(data->req.newurl);
+        data->req.newurl = NULL;
+      }
+      /* failure, close this connection to avoid re-use */
+      connclose(conn, "proxy CONNECT failure");
+      Curl_closesocket(conn, conn->sock[sockindex]);
+      conn->sock[sockindex] = CURL_SOCKET_BAD;
     }
 
     /* to back to init state */
     conn->tunnel_state[sockindex] = TUNNEL_INIT;
 
     }
 
     /* to back to init state */
     conn->tunnel_state[sockindex] = TUNNEL_INIT;
 
-    return CURLE_RECV_ERROR;
+    if(conn->bits.proxy_connect_closed)
+      /* this is not an error, just part of the connection negotiation */
+      return CURLE_OK;
+    else {
+      failf(data, "Received HTTP code %d from proxy after CONNECT",
+            data->req.httpcode);
+      return CURLE_RECV_ERROR;
+    }
   }
 
   conn->tunnel_state[sockindex] = TUNNEL_COMPLETE;
   }
 
   conn->tunnel_state[sockindex] = TUNNEL_COMPLETE;
index 518c093..2b5e9c9 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -26,7 +26,7 @@
 /* ftp can use this as well */
 CURLcode Curl_proxyCONNECT(struct connectdata *conn,
                            int tunnelsocket,
 /* ftp can use this as well */
 CURLcode Curl_proxyCONNECT(struct connectdata *conn,
                            int tunnelsocket,
-                           const char *hostname, unsigned short remote_port);
+                           const char *hostname, int remote_port);
 
 /* Default proxy timeout in milliseconds */
 #define PROXY_TIMEOUT (3600*1000)
 
 /* Default proxy timeout in milliseconds */
 #define PROXY_TIMEOUT (3600*1000)
index 464964b..b369723 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "memdebug.h"
 
 #ifdef WANT_IDN_PROTOTYPES
 #include "memdebug.h"
 
 #ifdef WANT_IDN_PROTOTYPES
-WINBASEAPI int WINAPI IdnToAscii(DWORD, const WCHAR *, int, WCHAR *, int);
-WINBASEAPI int WINAPI IdnToUnicode(DWORD, const WCHAR *, int, WCHAR *, int);
+#  if defined(_SAL_VERSION)
+WINNORMALIZEAPI int WINAPI
+IdnToAscii(_In_                           DWORD    dwFlags,
+           _In_reads_(cchUnicodeChar)     LPCWSTR  lpUnicodeCharStr,
+           _In_                           int      cchUnicodeChar,
+           _Out_writes_opt_(cchASCIIChar) LPWSTR   lpASCIICharStr,
+           _In_                           int      cchASCIIChar);
+WINNORMALIZEAPI int WINAPI
+IdnToUnicode(_In_                             DWORD   dwFlags,
+             _In_reads_(cchASCIIChar)         LPCWSTR lpASCIICharStr,
+             _In_                             int     cchASCIIChar,
+             _Out_writes_opt_(cchUnicodeChar) LPWSTR  lpUnicodeCharStr,
+             _In_                             int     cchUnicodeChar);
+#  else
+WINBASEAPI int WINAPI IdnToAscii(DWORD dwFlags,
+                                 const WCHAR *lpUnicodeCharStr,
+                                 int cchUnicodeChar,
+                                 WCHAR *lpASCIICharStr,
+                                 int cchASCIIChar);
+WINBASEAPI int WINAPI IdnToUnicode(DWORD dwFlags,
+                                   const WCHAR *lpASCIICharStr,
+                                   int cchASCIIChar,
+                                   WCHAR *lpUnicodeCharStr,
+                                   int cchUnicodeChar);
+#  endif
 #endif
 
 #define IDN_MAX_LENGTH 255
 #endif
 
 #define IDN_MAX_LENGTH 255
index 05ae7d6..389feed 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 
 /* ------------------------------------------------------------------ */
 
 
 /* ------------------------------------------------------------------ */
 
+/* Return the scope of the given address. */
+unsigned int Curl_ipv6_scope(const struct sockaddr *sa)
+{
+#ifndef ENABLE_IPV6
+  (void) sa;
+#else
+  if(sa->sa_family == AF_INET6) {
+    const struct sockaddr_in6 * sa6 = (const struct sockaddr_in6 *) sa;
+    const unsigned char * b = sa6->sin6_addr.s6_addr;
+    unsigned short w = (unsigned short) ((b[0] << 8) | b[1]);
+
+    switch(w & 0xFFC0) {
+    case 0xFE80:
+      return IPV6_SCOPE_LINKLOCAL;
+    case 0xFEC0:
+      return IPV6_SCOPE_SITELOCAL;
+    case 0x0000:
+      w = b[1] | b[2] | b[3] | b[4] | b[5] | b[6] | b[7] | b[8] | b[9] |
+          b[10] | b[11] | b[12] | b[13] | b[14];
+      if(w || b[15] != 0x01)
+        break;
+      return IPV6_SCOPE_NODELOCAL;
+    default:
+      break;
+    }
+  }
+#endif
+
+  return IPV6_SCOPE_GLOBAL;
+}
+
+
 #if defined(HAVE_GETIFADDRS)
 
 bool Curl_if_is_interface_name(const char *interf)
 #if defined(HAVE_GETIFADDRS)
 
 bool Curl_if_is_interface_name(const char *interf)
@@ -84,41 +116,58 @@ bool Curl_if_is_interface_name(const char *interf)
 }
 
 if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope,
 }
 
 if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope,
-                          const char *interf, char *buf, int buf_size)
+                          unsigned int remote_scope_id, const char *interf,
+                          char *buf, int buf_size)
 {
   struct ifaddrs *iface, *head;
   if2ip_result_t res = IF2IP_NOT_FOUND;
 
 #ifndef ENABLE_IPV6
   (void) remote_scope;
 {
   struct ifaddrs *iface, *head;
   if2ip_result_t res = IF2IP_NOT_FOUND;
 
 #ifndef ENABLE_IPV6
   (void) remote_scope;
+
+#ifndef HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID
+  (void) remote_scope_id;
+#endif
+
 #endif
 
   if(getifaddrs(&head) >= 0) {
 #endif
 
   if(getifaddrs(&head) >= 0) {
-    for(iface=head; iface != NULL; iface=iface->ifa_next) {
+    for(iface = head; iface != NULL; iface=iface->ifa_next) {
       if(iface->ifa_addr != NULL) {
         if(iface->ifa_addr->sa_family == af) {
           if(curl_strequal(iface->ifa_name, interf)) {
             void *addr;
             char *ip;
       if(iface->ifa_addr != NULL) {
         if(iface->ifa_addr->sa_family == af) {
           if(curl_strequal(iface->ifa_name, interf)) {
             void *addr;
             char *ip;
-            char scope[12]="";
+            char scope[12] = "";
             char ipstr[64];
 #ifdef ENABLE_IPV6
             if(af == AF_INET6) {
               unsigned int scopeid = 0;
             char ipstr[64];
 #ifdef ENABLE_IPV6
             if(af == AF_INET6) {
               unsigned int scopeid = 0;
+              unsigned int ifscope = Curl_ipv6_scope(iface->ifa_addr);
+
+              if(ifscope != remote_scope) {
+                /* We are interested only in interface addresses whose
+                   scope matches the remote address we want to
+                   connect to: global for global, link-local for
+                   link-local, etc... */
+                if(res == IF2IP_NOT_FOUND) res = IF2IP_AF_NOT_SUPPORTED;
+                continue;
+              }
+
               addr = &((struct sockaddr_in6 *)iface->ifa_addr)->sin6_addr;
 #ifdef HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID
               /* Include the scope of this interface as part of the address */
               scopeid =
                 ((struct sockaddr_in6 *)iface->ifa_addr)->sin6_scope_id;
               addr = &((struct sockaddr_in6 *)iface->ifa_addr)->sin6_addr;
 #ifdef HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID
               /* Include the scope of this interface as part of the address */
               scopeid =
                 ((struct sockaddr_in6 *)iface->ifa_addr)->sin6_scope_id;
-#endif
-              if(scopeid != remote_scope) {
-                /* We are interested only in interface addresses whose
-                   scope ID matches the remote address we want to
-                   connect to: global (0) for global, link-local for
-                   link-local, etc... */
-                if(res == IF2IP_NOT_FOUND) res = IF2IP_AF_NOT_SUPPORTED;
+
+              /* If given, scope id should match. */
+              if(remote_scope_id && scopeid != remote_scope_id) {
+                if(res == IF2IP_NOT_FOUND)
+                  res = IF2IP_AF_NOT_SUPPORTED;
+
                 continue;
               }
                 continue;
               }
+#endif
               if(scopeid)
                 snprintf(scope, sizeof(scope), "%%%u", scopeid);
             }
               if(scopeid)
                 snprintf(scope, sizeof(scope), "%%%u", scopeid);
             }
@@ -137,8 +186,10 @@ if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope,
         }
       }
     }
         }
       }
     }
+
     freeifaddrs(head);
   }
     freeifaddrs(head);
   }
+
   return res;
 }
 
   return res;
 }
 
@@ -149,12 +200,13 @@ bool Curl_if_is_interface_name(const char *interf)
   /* This is here just to support the old interfaces */
   char buf[256];
 
   /* This is here just to support the old interfaces */
   char buf[256];
 
-  return (Curl_if2ip(AF_INET, 0, interf, buf, sizeof(buf)) ==
+  return (Curl_if2ip(AF_INET, 0 /* unused */, 0, interf, buf, sizeof(buf)) ==
           IF2IP_NOT_FOUND) ? FALSE : TRUE;
 }
 
 if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope,
           IF2IP_NOT_FOUND) ? FALSE : TRUE;
 }
 
 if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope,
-                          const char *interf, char *buf, int buf_size)
+                          unsigned int remote_scope_id, const char *interf,
+                          char *buf, int buf_size)
 {
   struct ifreq req;
   struct in_addr in;
 {
   struct ifreq req;
   struct in_addr in;
@@ -163,6 +215,7 @@ if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope,
   size_t len;
 
   (void)remote_scope;
   size_t len;
 
   (void)remote_scope;
+  (void)remote_scope_id;
 
   if(!interf || (af != AF_INET))
     return IF2IP_NOT_FOUND;
 
   if(!interf || (af != AF_INET))
     return IF2IP_NOT_FOUND;
@@ -205,10 +258,12 @@ bool Curl_if_is_interface_name(const char *interf)
 }
 
 if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope,
 }
 
 if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope,
-                          const char *interf, char *buf, int buf_size)
+                          unsigned int remote_scope_id, const char *interf,
+                          char *buf, int buf_size)
 {
     (void) af;
     (void) remote_scope;
 {
     (void) af;
     (void) remote_scope;
+    (void) remote_scope_id;
     (void) interf;
     (void) buf;
     (void) buf_size;
     (void) interf;
     (void) buf;
     (void) buf_size;
index ac58752..78bb0bd 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  ***************************************************************************/
 #include "curl_setup.h"
 
  ***************************************************************************/
 #include "curl_setup.h"
 
+/* IPv6 address scopes. */
+#define IPV6_SCOPE_GLOBAL       0       /* Global scope. */
+#define IPV6_SCOPE_LINKLOCAL    1       /* Link-local scope. */
+#define IPV6_SCOPE_SITELOCAL    2       /* Site-local scope (deprecated). */
+#define IPV6_SCOPE_NODELOCAL    3       /* Loopback. */
+
+unsigned int Curl_ipv6_scope(const struct sockaddr *sa);
+
 bool Curl_if_is_interface_name(const char *interf);
 
 typedef enum {
 bool Curl_if_is_interface_name(const char *interf);
 
 typedef enum {
@@ -32,7 +40,8 @@ typedef enum {
 } if2ip_result_t;
 
 if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope,
 } if2ip_result_t;
 
 if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope,
-                          const char *interf, char *buf, int buf_size);
+                          unsigned int remote_scope_id, const char *interf,
+                          char *buf, int buf_size);
 
 #ifdef __INTERIX
 
 
 #ifdef __INTERIX
 
index 13e9784..767ac80 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * RFC3501 IMAPv4 protocol
  * RFC4422 Simple Authentication and Security Layer (SASL)
  * RFC4616 PLAIN authentication
  * RFC3501 IMAPv4 protocol
  * RFC4422 Simple Authentication and Security Layer (SASL)
  * RFC4616 PLAIN authentication
+ * RFC4752 The Kerberos V5 ("GSSAPI") SASL Mechanism
  * RFC4959 IMAP Extension for SASL Initial Client Response
  * RFC5092 IMAP URL Scheme
  * RFC4959 IMAP Extension for SASL Initial Client Response
  * RFC5092 IMAP URL Scheme
+ * RFC6749 OAuth 2.0 Authorization Framework
+ * Draft   LOGIN SASL Mechanism <draft-murchison-sasl-login-00.txt>
  *
  ***************************************************************************/
 
  *
  ***************************************************************************/
 
@@ -58,7 +61,6 @@
 #include <curl/curl.h>
 #include "urldata.h"
 #include "sendf.h"
 #include <curl/curl.h>
 #include "urldata.h"
 #include "sendf.h"
-#include "if2ip.h"
 #include "hostip.h"
 #include "progress.h"
 #include "transfer.h"
 #include "hostip.h"
 #include "progress.h"
 #include "transfer.h"
@@ -69,7 +71,7 @@
 
 #include "strtoofft.h"
 #include "strequal.h"
 
 #include "strtoofft.h"
 #include "strequal.h"
-#include "sslgen.h"
+#include "vtls/vtls.h"
 #include "connect.h"
 #include "strerror.h"
 #include "select.h"
 #include "connect.h"
 #include "strerror.h"
 #include "select.h"
@@ -103,6 +105,10 @@ static CURLcode imap_sendf(struct connectdata *conn, const char *fmt, ...);
 static CURLcode imap_parse_url_options(struct connectdata *conn);
 static CURLcode imap_parse_url_path(struct connectdata *conn);
 static CURLcode imap_parse_custom_request(struct connectdata *conn);
 static CURLcode imap_parse_url_options(struct connectdata *conn);
 static CURLcode imap_parse_url_path(struct connectdata *conn);
 static CURLcode imap_parse_custom_request(struct connectdata *conn);
+static CURLcode imap_calc_sasl_details(struct connectdata *conn,
+                                       const char **mech,
+                                       char **initresp, size_t *len,
+                                       imapstate *state1, imapstate *state2);
 
 /*
  * IMAP protocol handler.
 
 /*
  * IMAP protocol handler.
@@ -125,8 +131,7 @@ const struct Curl_handler Curl_handler_imap = {
   ZERO_NULL,                        /* readwrite */
   PORT_IMAP,                        /* defport */
   CURLPROTO_IMAP,                   /* protocol */
   ZERO_NULL,                        /* readwrite */
   PORT_IMAP,                        /* defport */
   CURLPROTO_IMAP,                   /* protocol */
-  PROTOPT_CLOSEACTION | PROTOPT_NEEDSPWD
-  | PROTOPT_NOURLQUERY              /* flags */
+  PROTOPT_CLOSEACTION | PROTOPT_NEEDSPWD  /* flags */
 };
 
 #ifdef USE_SSL
 };
 
 #ifdef USE_SSL
@@ -150,9 +155,9 @@ const struct Curl_handler Curl_handler_imaps = {
   imap_disconnect,                  /* disconnect */
   ZERO_NULL,                        /* readwrite */
   PORT_IMAPS,                       /* defport */
   imap_disconnect,                  /* disconnect */
   ZERO_NULL,                        /* readwrite */
   PORT_IMAPS,                       /* defport */
-  CURLPROTO_IMAP | CURLPROTO_IMAPS, /* protocol */
-  PROTOPT_CLOSEACTION | PROTOPT_SSL | PROTOPT_NEEDSPWD
-  | PROTOPT_NOURLQUERY              /* flags */
+  CURLPROTO_IMAPS,                  /* protocol */
+  PROTOPT_CLOSEACTION | PROTOPT_SSL |
+  PROTOPT_NEEDSPWD                  /* flags */
 };
 #endif
 
 };
 #endif
 
@@ -163,7 +168,7 @@ const struct Curl_handler Curl_handler_imaps = {
 
 static const struct Curl_handler Curl_handler_imap_proxy = {
   "IMAP",                               /* scheme */
 
 static const struct Curl_handler Curl_handler_imap_proxy = {
   "IMAP",                               /* scheme */
-  ZERO_NULL,                            /* setup_connection */
+  Curl_http_setup_conn,                 /* setup_connection */
   Curl_http,                            /* do_it */
   Curl_http_done,                       /* done */
   ZERO_NULL,                            /* do_more */
   Curl_http,                            /* do_it */
   Curl_http_done,                       /* done */
   ZERO_NULL,                            /* do_more */
@@ -188,7 +193,7 @@ static const struct Curl_handler Curl_handler_imap_proxy = {
 
 static const struct Curl_handler Curl_handler_imaps_proxy = {
   "IMAPS",                              /* scheme */
 
 static const struct Curl_handler Curl_handler_imaps_proxy = {
   "IMAPS",                              /* scheme */
-  ZERO_NULL,                            /* setup_connection */
+  Curl_http_setup_conn,                 /* setup_connection */
   Curl_http,                            /* do_it */
   Curl_http_done,                       /* done */
   ZERO_NULL,                            /* do_more */
   Curl_http,                            /* do_it */
   Curl_http_done,                       /* done */
   ZERO_NULL,                            /* do_more */
@@ -252,7 +257,7 @@ static bool imap_matchresp(const char *line, size_t len, const char *cmd)
   /* Does the command name match and is it followed by a space character or at
      the end of line? */
   if(line + cmd_len <= end && Curl_raw_nequal(line, cmd, cmd_len) &&
   /* Does the command name match and is it followed by a space character or at
      the end of line? */
   if(line + cmd_len <= end && Curl_raw_nequal(line, cmd, cmd_len) &&
-     (line[cmd_len] == ' ' || line + cmd_len == end))
+     (line[cmd_len] == ' ' || line + cmd_len + 2 == end))
     return TRUE;
 
   return FALSE;
     return TRUE;
 
   return FALSE;
@@ -268,7 +273,7 @@ static bool imap_matchresp(const char *line, size_t len, const char *cmd)
 static bool imap_endofresp(struct connectdata *conn, char *line, size_t len,
                            int *resp)
 {
 static bool imap_endofresp(struct connectdata *conn, char *line, size_t len,
                            int *resp)
 {
-  struct IMAP *imap = conn->data->state.proto.imap;
+  struct IMAP *imap = conn->data->req.protop;
   struct imap_conn *imapc = &conn->proto.imapc;
   const char *id = imapc->resptag;
   size_t id_len = strlen(id);
   struct imap_conn *imapc = &conn->proto.imapc;
   const char *id = imapc->resptag;
   size_t id_len = strlen(id);
@@ -307,7 +312,12 @@ static bool imap_endofresp(struct connectdata *conn, char *line, size_t len,
            (strcmp(imap->custom, "STORE") ||
             !imap_matchresp(line, len, "FETCH")) &&
            strcmp(imap->custom, "SELECT") &&
            (strcmp(imap->custom, "STORE") ||
             !imap_matchresp(line, len, "FETCH")) &&
            strcmp(imap->custom, "SELECT") &&
-           strcmp(imap->custom, "EXAMINE")))
+           strcmp(imap->custom, "EXAMINE") &&
+           strcmp(imap->custom, "SEARCH") &&
+           strcmp(imap->custom, "EXPUNGE") &&
+           strcmp(imap->custom, "LSUB") &&
+           strcmp(imap->custom, "UID") &&
+           strcmp(imap->custom, "NOOP")))
           return FALSE;
         break;
 
           return FALSE;
         break;
 
@@ -321,6 +331,11 @@ static bool imap_endofresp(struct connectdata *conn, char *line, size_t len,
           return FALSE;
         break;
 
           return FALSE;
         break;
 
+      case IMAP_SEARCH:
+        if(!imap_matchresp(line, len, "SEARCH"))
+          return FALSE;
+        break;
+
       /* Ignore other untagged responses */
       default:
         return FALSE;
       /* Ignore other untagged responses */
       default:
         return FALSE;
@@ -330,7 +345,10 @@ static bool imap_endofresp(struct connectdata *conn, char *line, size_t len,
     return TRUE;
   }
 
     return TRUE;
   }
 
-  /* Do we have a continuation response? */
+  /* Do we have a continuation response? This should be a + symbol followed by
+     a space and optionally some text as per RFC-3501 for the AUTHENTICATE and
+     APPEND commands and as outlined in Section 4. Examples of RFC-4959 but
+     some e-mail servers ignore this and only send a single + instead. */
   if((len == 3 && !memcmp("+", line, 1)) ||
      (len >= 2 && !memcmp("+ ", line, 2))) {
     switch(imapc->state) {
   if((len == 3 && !memcmp("+", line, 1)) ||
      (len >= 2 && !memcmp("+ ", line, 2))) {
     switch(imapc->state) {
@@ -343,6 +361,7 @@ static bool imap_endofresp(struct connectdata *conn, char *line, size_t len,
       case IMAP_AUTHENTICATE_DIGESTMD5_RESP:
       case IMAP_AUTHENTICATE_NTLM:
       case IMAP_AUTHENTICATE_NTLM_TYPE2MSG:
       case IMAP_AUTHENTICATE_DIGESTMD5_RESP:
       case IMAP_AUTHENTICATE_NTLM:
       case IMAP_AUTHENTICATE_NTLM_TYPE2MSG:
+      case IMAP_AUTHENTICATE_XOAUTH2:
       case IMAP_AUTHENTICATE_FINAL:
       case IMAP_APPEND:
         *resp = '+';
       case IMAP_AUTHENTICATE_FINAL:
       case IMAP_APPEND:
         *resp = '+';
@@ -362,6 +381,35 @@ static bool imap_endofresp(struct connectdata *conn, char *line, size_t len,
 
 /***********************************************************************
  *
 
 /***********************************************************************
  *
+ * imap_get_message()
+ *
+ * Gets the authentication message from the response buffer.
+ */
+static void imap_get_message(char *buffer, char** outptr)
+{
+  size_t len = 0;
+  char* message = NULL;
+
+  /* Find the start of the message */
+  for(message = buffer + 2; *message == ' ' || *message == '\t'; message++)
+    ;
+
+  /* Find the end of the message */
+  for(len = strlen(message); len--;)
+    if(message[len] != '\r' && message[len] != '\n' && message[len] != ' ' &&
+        message[len] != '\t')
+      break;
+
+  /* Terminate the message */
+  if(++len) {
+    message[len] = '\0';
+  }
+
+  *outptr = message;
+}
+
+/***********************************************************************
+ *
  * state()
  *
  * This is the ONLY way to change IMAP state!
  * state()
  *
  * This is the ONLY way to change IMAP state!
@@ -385,6 +433,11 @@ static void state(struct connectdata *conn, imapstate newstate)
     "AUTHENTICATE_DIGESTMD5_RESP",
     "AUTHENTICATE_NTLM",
     "AUTHENTICATE_NTLM_TYPE2MSG",
     "AUTHENTICATE_DIGESTMD5_RESP",
     "AUTHENTICATE_NTLM",
     "AUTHENTICATE_NTLM_TYPE2MSG",
+    "AUTHENTICATE_GSSAPI",
+    "AUTHENTICATE_GSSAPI_TOKEN",
+    "AUTHENTICATE_GSSAPI_NO_DATA",
+    "AUTHENTICATE_XOAUTH2",
+    "AUTHENTICATE_CANCEL",
     "AUTHENTICATE_FINAL",
     "LOGIN",
     "LIST",
     "AUTHENTICATE_FINAL",
     "LOGIN",
     "LIST",
@@ -393,6 +446,7 @@ static void state(struct connectdata *conn, imapstate newstate)
     "FETCH_FINAL",
     "APPEND",
     "APPEND_FINAL",
     "FETCH_FINAL",
     "APPEND",
     "APPEND_FINAL",
+    "SEARCH",
     "LOGOUT",
     /* LAST */
   };
     "LOGOUT",
     /* LAST */
   };
@@ -517,16 +571,45 @@ static CURLcode imap_perform_login(struct connectdata *conn)
  *
  * imap_perform_authenticate()
  *
  *
  * imap_perform_authenticate()
  *
- * Sends an AUTHENTICATE command allowing the client to login with the
- * appropriate SASL authentication mechanism.
+ * Sends an AUTHENTICATE command allowing the client to login with the given
+ * SASL authentication mechanism.
+ */
+static CURLcode imap_perform_authenticate(struct connectdata *conn,
+                                          const char *mech,
+                                          const char *initresp,
+                                          imapstate state1, imapstate state2)
+{
+  CURLcode result = CURLE_OK;
+
+  if(initresp) {
+    /* Send the AUTHENTICATE command with the initial response */
+    result = imap_sendf(conn, "AUTHENTICATE %s %s", mech, initresp);
+
+    if(!result)
+      state(conn, state2);
+  }
+  else {
+    /* Send the AUTHENTICATE command */
+    result = imap_sendf(conn, "AUTHENTICATE %s", mech);
+
+    if(!result)
+      state(conn, state1);
+  }
+
+  return result;
+}
+
+/***********************************************************************
+ *
+ * imap_perform_authentication()
  *
  *
- * Additionally, the function will perform fallback to the LOGIN command
- * should a common mechanism not be available between the client and server.
+ * Initiates the authentication sequence, with the appropriate SASL
+ * authentication mechanism, falling back to clear text should a common
+ * mechanism not be available between the client and server.
  */
  */
-static CURLcode imap_perform_authenticate(struct connectdata *conn)
+static CURLcode imap_perform_authentication(struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
 {
   CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
   struct imap_conn *imapc = &conn->proto.imapc;
   const char *mech = NULL;
   char *initresp = NULL;
   struct imap_conn *imapc = &conn->proto.imapc;
   const char *mech = NULL;
   char *initresp = NULL;
@@ -542,80 +625,17 @@ static CURLcode imap_perform_authenticate(struct connectdata *conn)
     return result;
   }
 
     return result;
   }
 
-  /* Calculate the supported authentication mechanism by decreasing order of
-     security */
-#ifndef CURL_DISABLE_CRYPTO_AUTH
-  if((imapc->authmechs & SASL_MECH_DIGEST_MD5) &&
-     (imapc->prefmech & SASL_MECH_DIGEST_MD5)) {
-    mech = "DIGEST-MD5";
-    state1 = IMAP_AUTHENTICATE_DIGESTMD5;
-    imapc->authused = SASL_MECH_DIGEST_MD5;
-  }
-  else if((imapc->authmechs & SASL_MECH_CRAM_MD5) &&
-          (imapc->prefmech & SASL_MECH_CRAM_MD5)) {
-    mech = "CRAM-MD5";
-    state1 = IMAP_AUTHENTICATE_CRAMMD5;
-    imapc->authused = SASL_MECH_CRAM_MD5;
-  }
-  else
-#endif
-#ifdef USE_NTLM
-    if((imapc->authmechs & SASL_MECH_NTLM) &&
-       (imapc->prefmech & SASL_MECH_NTLM)) {
-    mech = "NTLM";
-    state1 = IMAP_AUTHENTICATE_NTLM;
-    state2 = IMAP_AUTHENTICATE_NTLM_TYPE2MSG;
-    imapc->authused = SASL_MECH_NTLM;
-
-    if(imapc->ir_supported || data->set.sasl_ir)
-      result = Curl_sasl_create_ntlm_type1_message(conn->user, conn->passwd,
-                                                   &conn->ntlm,
-                                                   &initresp, &len);
-  }
-  else
-#endif
-  if((imapc->authmechs & SASL_MECH_LOGIN) &&
-     (imapc->prefmech & SASL_MECH_LOGIN)) {
-    mech = "LOGIN";
-    state1 = IMAP_AUTHENTICATE_LOGIN;
-    state2 = IMAP_AUTHENTICATE_LOGIN_PASSWD;
-    imapc->authused = SASL_MECH_LOGIN;
-
-    if(imapc->ir_supported || data->set.sasl_ir)
-      result = Curl_sasl_create_login_message(conn->data, conn->user,
-                                              &initresp, &len);
-  }
-  else if((imapc->authmechs & SASL_MECH_PLAIN) &&
-          (imapc->prefmech & SASL_MECH_PLAIN)) {
-    mech = "PLAIN";
-    state1 = IMAP_AUTHENTICATE_PLAIN;
-    state2 = IMAP_AUTHENTICATE_FINAL;
-    imapc->authused = SASL_MECH_PLAIN;
-
-    if(imapc->ir_supported || data->set.sasl_ir)
-      result = Curl_sasl_create_plain_message(conn->data, conn->user,
-                                              conn->passwd, &initresp, &len);
-  }
+  /* Calculate the SASL login details */
+  result = imap_calc_sasl_details(conn, &mech, &initresp, &len, &state1,
+                                  &state2);
 
   if(!result) {
 
   if(!result) {
-    if(mech) {
+    if(mech && (imapc->preftype & IMAP_TYPE_SASL)) {
       /* Perform SASL based authentication */
       /* Perform SASL based authentication */
-      if(initresp) {
-        result = imap_sendf(conn, "AUTHENTICATE %s %s", mech, initresp);
-
-        if(!result)
-          state(conn, state2);
-      }
-      else {
-        result = imap_sendf(conn, "AUTHENTICATE %s", mech);
-
-        if(!result)
-          state(conn, state1);
-      }
-
-      Curl_safefree(initresp);
+      result = imap_perform_authenticate(conn, mech, initresp, state1, state2);
     }
     }
-    else if(!imapc->login_disabled)
+    else if((!imapc->login_disabled) &&
+            (imapc->preftype & IMAP_TYPE_CLEARTEXT))
       /* Perform clear text authentication */
       result = imap_perform_login(conn);
     else {
       /* Perform clear text authentication */
       result = imap_perform_login(conn);
     else {
@@ -625,6 +645,8 @@ static CURLcode imap_perform_authenticate(struct connectdata *conn)
     }
   }
 
     }
   }
 
+  Curl_safefree(initresp);
+
   return result;
 }
 
   return result;
 }
 
@@ -638,7 +660,7 @@ static CURLcode imap_perform_list(struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
-  struct IMAP *imap = data->state.proto.imap;
+  struct IMAP *imap = data->req.protop;
   char *mailbox;
 
   if(imap->custom)
   char *mailbox;
 
   if(imap->custom)
@@ -673,7 +695,7 @@ static CURLcode imap_perform_select(struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
-  struct IMAP *imap = data->state.proto.imap;
+  struct IMAP *imap = data->req.protop;
   struct imap_conn *imapc = &conn->proto.imapc;
   char *mailbox;
 
   struct imap_conn *imapc = &conn->proto.imapc;
   char *mailbox;
 
@@ -712,7 +734,7 @@ static CURLcode imap_perform_select(struct connectdata *conn)
 static CURLcode imap_perform_fetch(struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
 static CURLcode imap_perform_fetch(struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
-  struct IMAP *imap = conn->data->state.proto.imap;
+  struct IMAP *imap = conn->data->req.protop;
 
   /* Check we have a UID */
   if(!imap->uid) {
 
   /* Check we have a UID */
   if(!imap->uid) {
@@ -721,9 +743,15 @@ static CURLcode imap_perform_fetch(struct connectdata *conn)
   }
 
   /* Send the FETCH command */
   }
 
   /* Send the FETCH command */
-  result = imap_sendf(conn, "FETCH %s BODY[%s]",
-                      imap->uid,
-                      imap->section ? imap->section : "");
+  if(imap->partial)
+    result = imap_sendf(conn, "FETCH %s BODY[%s]<%s>",
+                        imap->uid,
+                        imap->section ? imap->section : "",
+                        imap->partial);
+  else
+    result = imap_sendf(conn, "FETCH %s BODY[%s]",
+                        imap->uid,
+                        imap->section ? imap->section : "");
 
   if(!result)
     state(conn, IMAP_FETCH);
 
   if(!result)
     state(conn, IMAP_FETCH);
@@ -740,7 +768,7 @@ static CURLcode imap_perform_fetch(struct connectdata *conn)
 static CURLcode imap_perform_append(struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
 static CURLcode imap_perform_append(struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
-  struct IMAP *imap = conn->data->state.proto.imap;
+  struct IMAP *imap = conn->data->req.protop;
   char *mailbox;
 
   /* Check we have a mailbox */
   char *mailbox;
 
   /* Check we have a mailbox */
@@ -750,7 +778,7 @@ static CURLcode imap_perform_append(struct connectdata *conn)
   }
 
   /* Check we know the size of the upload */
   }
 
   /* Check we know the size of the upload */
-  if(conn->data->set.infilesize < 0) {
+  if(conn->data->state.infilesize < 0) {
     failf(conn->data, "Cannot APPEND with unknown input file size\n");
     return CURLE_UPLOAD_FAILED;
   }
     failf(conn->data, "Cannot APPEND with unknown input file size\n");
     return CURLE_UPLOAD_FAILED;
   }
@@ -761,8 +789,8 @@ static CURLcode imap_perform_append(struct connectdata *conn)
     return CURLE_OUT_OF_MEMORY;
 
   /* Send the APPEND command */
     return CURLE_OUT_OF_MEMORY;
 
   /* Send the APPEND command */
-  result = imap_sendf(conn, "APPEND %s (\\Seen) {%" FORMAT_OFF_T "}",
-                      mailbox, conn->data->set.infilesize);
+  result = imap_sendf(conn, "APPEND %s (\\Seen) {%" CURL_FORMAT_CURL_OFF_T "}",
+                      mailbox, conn->data->state.infilesize);
 
   Curl_safefree(mailbox);
 
 
   Curl_safefree(mailbox);
 
@@ -774,6 +802,32 @@ static CURLcode imap_perform_append(struct connectdata *conn)
 
 /***********************************************************************
  *
 
 /***********************************************************************
  *
+ * imap_perform_search()
+ *
+ * Sends a SEARCH command.
+ */
+static CURLcode imap_perform_search(struct connectdata *conn)
+{
+  CURLcode result = CURLE_OK;
+  struct IMAP *imap = conn->data->req.protop;
+
+  /* Check we have a query string */
+  if(!imap->query) {
+    failf(conn->data, "Cannot SEARCH without a query string.");
+    return CURLE_URL_MALFORMAT;
+  }
+
+  /* Send the SEARCH command */
+  result = imap_sendf(conn, "SEARCH %s", imap->query);
+
+  if(!result)
+    state(conn, IMAP_SEARCH);
+
+  return result;
+}
+
+/***********************************************************************
+ *
  * imap_perform_logout()
  *
  * Performs the logout action prior to sclose() being called.
  * imap_perform_logout()
  *
  * Performs the logout action prior to sclose() being called.
@@ -864,20 +918,22 @@ static CURLcode imap_state_capability_resp(struct connectdata *conn,
         wordlen -= 5;
 
         /* Test the word for a matching authentication mechanism */
         wordlen -= 5;
 
         /* Test the word for a matching authentication mechanism */
-        if(wordlen == 5 && !memcmp(line, "LOGIN", 5))
+        if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_LOGIN))
           imapc->authmechs |= SASL_MECH_LOGIN;
           imapc->authmechs |= SASL_MECH_LOGIN;
-        if(wordlen == 5 && !memcmp(line, "PLAIN", 5))
+        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_PLAIN))
           imapc->authmechs |= SASL_MECH_PLAIN;
           imapc->authmechs |= SASL_MECH_PLAIN;
-        else if(wordlen == 8 && !memcmp(line, "CRAM-MD5", 8))
+        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_CRAM_MD5))
           imapc->authmechs |= SASL_MECH_CRAM_MD5;
           imapc->authmechs |= SASL_MECH_CRAM_MD5;
-        else if(wordlen == 10 && !memcmp(line, "DIGEST-MD5", 10))
+        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_DIGEST_MD5))
           imapc->authmechs |= SASL_MECH_DIGEST_MD5;
           imapc->authmechs |= SASL_MECH_DIGEST_MD5;
-        else if(wordlen == 6 && !memcmp(line, "GSSAPI", 6))
+        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_GSSAPI))
           imapc->authmechs |= SASL_MECH_GSSAPI;
           imapc->authmechs |= SASL_MECH_GSSAPI;
-        else if(wordlen == 8 && !memcmp(line, "EXTERNAL", 8))
+        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_EXTERNAL))
           imapc->authmechs |= SASL_MECH_EXTERNAL;
           imapc->authmechs |= SASL_MECH_EXTERNAL;
-        else if(wordlen == 4 && !memcmp(line, "NTLM", 4))
+        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_NTLM))
           imapc->authmechs |= SASL_MECH_NTLM;
           imapc->authmechs |= SASL_MECH_NTLM;
+        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_XOAUTH2))
+          imapc->authmechs |= SASL_MECH_XOAUTH2;
       }
 
       line += wordlen;
       }
 
       line += wordlen;
@@ -891,17 +947,17 @@ static CURLcode imap_state_capability_resp(struct connectdata *conn,
         result = imap_perform_starttls(conn);
       else if(data->set.use_ssl == CURLUSESSL_TRY)
         /* Fallback and carry on with authentication */
         result = imap_perform_starttls(conn);
       else if(data->set.use_ssl == CURLUSESSL_TRY)
         /* Fallback and carry on with authentication */
-        result = imap_perform_authenticate(conn);
+        result = imap_perform_authentication(conn);
       else {
         failf(data, "STARTTLS not supported.");
         result = CURLE_USE_SSL_FAILED;
       }
     }
     else
       else {
         failf(data, "STARTTLS not supported.");
         result = CURLE_USE_SSL_FAILED;
       }
     }
     else
-      result = imap_perform_authenticate(conn);
+      result = imap_perform_authentication(conn);
   }
   else
   }
   else
-    result = imap_perform_login(conn);
+    result = imap_perform_authentication(conn);
 
   return result;
 }
 
   return result;
 }
@@ -922,7 +978,7 @@ static CURLcode imap_state_starttls_resp(struct connectdata *conn,
       result = CURLE_USE_SSL_FAILED;
     }
     else
       result = CURLE_USE_SSL_FAILED;
     }
     else
-      result = imap_perform_authenticate(conn);
+      result = imap_perform_authentication(conn);
   }
   else
     result = imap_perform_upgrade_tls(conn);
   }
   else
     result = imap_perform_upgrade_tls(conn);
@@ -950,20 +1006,17 @@ static CURLcode imap_state_auth_plain_resp(struct connectdata *conn,
     /* Create the authorisation message */
     result = Curl_sasl_create_plain_message(data, conn->user, conn->passwd,
                                             &plainauth, &len);
     /* Create the authorisation message */
     result = Curl_sasl_create_plain_message(data, conn->user, conn->passwd,
                                             &plainauth, &len);
+    if(!result && plainauth) {
+      /* Send the message */
+      result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", plainauth);
 
 
-    /* Send the message */
-    if(!result) {
-      if(plainauth) {
-        result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", plainauth);
-
-        if(!result)
-          state(conn, IMAP_AUTHENTICATE_FINAL);
-      }
-
-      Curl_safefree(plainauth);
+      if(!result)
+        state(conn, IMAP_AUTHENTICATE_FINAL);
     }
   }
 
     }
   }
 
+  Curl_safefree(plainauth);
+
   return result;
 }
 
   return result;
 }
 
@@ -987,20 +1040,17 @@ static CURLcode imap_state_auth_login_resp(struct connectdata *conn,
     /* Create the user message */
     result = Curl_sasl_create_login_message(data, conn->user,
                                             &authuser, &len);
     /* Create the user message */
     result = Curl_sasl_create_login_message(data, conn->user,
                                             &authuser, &len);
+    if(!result && authuser) {
+      /* Send the user */
+      result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", authuser);
 
 
-    /* Send the user */
-    if(!result) {
-      if(authuser) {
-        result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", authuser);
-
-        if(!result)
-          state(conn, IMAP_AUTHENTICATE_LOGIN_PASSWD);
-      }
-
-      Curl_safefree(authuser);
+      if(!result)
+        state(conn, IMAP_AUTHENTICATE_LOGIN_PASSWD);
     }
   }
 
     }
   }
 
+  Curl_safefree(authuser);
+
   return result;
 }
 
   return result;
 }
 
@@ -1024,20 +1074,17 @@ static CURLcode imap_state_auth_login_password_resp(struct connectdata *conn,
     /* Create the password message */
     result = Curl_sasl_create_login_message(data, conn->passwd,
                                             &authpasswd, &len);
     /* Create the password message */
     result = Curl_sasl_create_login_message(data, conn->passwd,
                                             &authpasswd, &len);
+    if(!result && authpasswd) {
+      /* Send the password */
+      result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", authpasswd);
 
 
-    /* Send the password */
-    if(!result) {
-      if(authpasswd) {
-        result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", authpasswd);
-
-        if(!result)
-          state(conn, IMAP_AUTHENTICATE_FINAL);
-      }
-
-      Curl_safefree(authpasswd);
+      if(!result)
+        state(conn, IMAP_AUTHENTICATE_FINAL);
     }
   }
 
     }
   }
 
+  Curl_safefree(authpasswd);
+
   return result;
 }
 
   return result;
 }
 
@@ -1049,9 +1096,10 @@ static CURLcode imap_state_auth_cram_resp(struct connectdata *conn,
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
-  char *chlg64 = data->state.buffer;
-  size_t len = 0;
+  char *chlg = NULL;
+  char *chlg64 = NULL;
   char *rplyb64 = NULL;
   char *rplyb64 = NULL;
+  size_t len = 0;
 
   (void)instate; /* no use for this yet */
 
 
   (void)instate; /* no use for this yet */
 
@@ -1060,38 +1108,34 @@ static CURLcode imap_state_auth_cram_resp(struct connectdata *conn,
     return CURLE_LOGIN_DENIED;
   }
 
     return CURLE_LOGIN_DENIED;
   }
 
-  /* Get the challenge */
-  for(chlg64 += 2; *chlg64 == ' ' || *chlg64 == '\t'; chlg64++)
-    ;
+  /* Get the challenge message */
+  imap_get_message(data->state.buffer, &chlg64);
 
 
-  /* Terminate the challenge */
-  if(*chlg64 != '=') {
-    for(len = strlen(chlg64); len--;)
-      if(chlg64[len] != '\r' && chlg64[len] != '\n' && chlg64[len] != ' ' &&
-         chlg64[len] != '\t')
-        break;
+  /* Decode the challenge message */
+  result = Curl_sasl_decode_cram_md5_message(chlg64, &chlg, &len);
+  if(result) {
+    /* Send the cancellation */
+    result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", "*");
 
 
-    if(++len) {
-      chlg64[len] = '\0';
-    }
+    if(!result)
+      state(conn, IMAP_AUTHENTICATE_CANCEL);
   }
   }
-
-  /* Create the response message */
-  result = Curl_sasl_create_cram_md5_message(data, chlg64, conn->user,
-                                             conn->passwd, &rplyb64, &len);
-
-  /* Send the response */
-  if(!result) {
-    if(rplyb64) {
+  else {
+    /* Create the response message */
+    result = Curl_sasl_create_cram_md5_message(data, chlg, conn->user,
+                                               conn->passwd, &rplyb64, &len);
+    if(!result && rplyb64) {
+      /* Send the response */
       result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", rplyb64);
 
       if(!result)
         state(conn, IMAP_AUTHENTICATE_FINAL);
     }
       result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", rplyb64);
 
       if(!result)
         state(conn, IMAP_AUTHENTICATE_FINAL);
     }
-
-    Curl_safefree(rplyb64);
   }
 
   }
 
+  Curl_safefree(chlg);
+  Curl_safefree(rplyb64);
+
   return result;
 }
 
   return result;
 }
 
@@ -1102,9 +1146,9 @@ static CURLcode imap_state_auth_digest_resp(struct connectdata *conn,
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
-  char *chlg64 = data->state.buffer;
-  size_t len = 0;
+  char *chlg64 = NULL;
   char *rplyb64 = NULL;
   char *rplyb64 = NULL;
+  size_t len = 0;
 
   (void)instate; /* no use for this yet */
 
 
   (void)instate; /* no use for this yet */
 
@@ -1113,27 +1157,32 @@ static CURLcode imap_state_auth_digest_resp(struct connectdata *conn,
     return CURLE_LOGIN_DENIED;
   }
 
     return CURLE_LOGIN_DENIED;
   }
 
-  /* Get the challenge */
-  for(chlg64 += 2; *chlg64 == ' ' || *chlg64 == '\t'; chlg64++)
-    ;
+  /* Get the challenge message */
+  imap_get_message(data->state.buffer, &chlg64);
 
   /* Create the response message */
 
   /* Create the response message */
-  result = Curl_sasl_create_digest_md5_message(data, chlg64, conn->user,
-                                               conn->passwd, "imap",
-                                               &rplyb64, &len);
-
-  /* Send the response */
-  if(!result) {
-    if(rplyb64) {
-      result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", rplyb64);
+  result = Curl_sasl_create_digest_md5_message(data, chlg64,
+                                               conn->user, conn->passwd,
+                                               "imap", &rplyb64, &len);
+  if(result) {
+    if(result == CURLE_BAD_CONTENT_ENCODING) {
+      /* Send the cancellation */
+      result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", "*");
 
       if(!result)
 
       if(!result)
-        state(conn, IMAP_AUTHENTICATE_DIGESTMD5_RESP);
+        state(conn, IMAP_AUTHENTICATE_CANCEL);
     }
     }
+  }
+  else {
+    /* Send the response */
+    result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", rplyb64);
 
 
-    Curl_safefree(rplyb64);
+    if(!result)
+      state(conn, IMAP_AUTHENTICATE_DIGESTMD5_RESP);
   }
 
   }
 
+  Curl_safefree(rplyb64);
+
   return result;
 }
 
   return result;
 }
 
@@ -1185,20 +1234,17 @@ static CURLcode imap_state_auth_ntlm_resp(struct connectdata *conn,
     result = Curl_sasl_create_ntlm_type1_message(conn->user, conn->passwd,
                                                  &conn->ntlm,
                                                  &type1msg, &len);
     result = Curl_sasl_create_ntlm_type1_message(conn->user, conn->passwd,
                                                  &conn->ntlm,
                                                  &type1msg, &len);
+    if(!result && type1msg) {
+      /* Send the message */
+      result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", type1msg);
 
 
-    /* Send the message */
-    if(!result) {
-      if(type1msg) {
-        result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", type1msg);
-
-        if(!result)
-          state(conn, IMAP_AUTHENTICATE_NTLM_TYPE2MSG);
-      }
-
-      Curl_safefree(type1msg);
+      if(!result)
+        state(conn, IMAP_AUTHENTICATE_NTLM_TYPE2MSG);
     }
   }
 
     }
   }
 
+  Curl_safefree(type1msg);
+
   return result;
 }
 
   return result;
 }
 
@@ -1209,8 +1255,9 @@ static CURLcode imap_state_auth_ntlm_type2msg_resp(struct connectdata *conn,
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
-  size_t len = 0;
+  char *type2msg = NULL;
   char *type3msg = NULL;
   char *type3msg = NULL;
+  size_t len = 0;
 
   (void)instate; /* no use for this yet */
 
 
   (void)instate; /* no use for this yet */
 
@@ -1219,31 +1266,273 @@ static CURLcode imap_state_auth_ntlm_type2msg_resp(struct connectdata *conn,
     result = CURLE_LOGIN_DENIED;
   }
   else {
     result = CURLE_LOGIN_DENIED;
   }
   else {
-    /* Create the type-3 message */
-    result = Curl_sasl_create_ntlm_type3_message(data,
-                                                 data->state.buffer + 2,
-                                                 conn->user, conn->passwd,
-                                                 &conn->ntlm,
-                                                 &type3msg, &len);
+    /* Get the challenge message */
+    imap_get_message(data->state.buffer, &type2msg);
 
 
-    /* Send the message */
-    if(!result) {
-      if(type3msg) {
+    /* Decode the type-2 message */
+    result = Curl_sasl_decode_ntlm_type2_message(data, type2msg, &conn->ntlm);
+    if(result) {
+      /* Send the cancellation */
+      result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", "*");
+
+      if(!result)
+        state(conn, IMAP_AUTHENTICATE_CANCEL);
+    }
+    else {
+      /* Create the type-3 message */
+      result = Curl_sasl_create_ntlm_type3_message(data, conn->user,
+                                                   conn->passwd, &conn->ntlm,
+                                                   &type3msg, &len);
+      if(!result && type3msg) {
+        /* Send the message */
         result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", type3msg);
 
         if(!result)
           state(conn, IMAP_AUTHENTICATE_FINAL);
       }
         result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", type3msg);
 
         if(!result)
           state(conn, IMAP_AUTHENTICATE_FINAL);
       }
+    }
+  }
+
+  Curl_safefree(type3msg);
+
+  return result;
+}
+#endif
+
+#if defined(USE_KERBEROS5)
+/* For AUTHENTICATE GSSAPI (without initial response) responses */
+static CURLcode imap_state_auth_gssapi_resp(struct connectdata *conn,
+                                            int imapcode,
+                                            imapstate instate)
+{
+  CURLcode result = CURLE_OK;
+  struct SessionHandle *data = conn->data;
+  struct imap_conn *imapc = &conn->proto.imapc;
+  size_t len = 0;
+  char *respmsg = NULL;
+
+  (void)instate; /* no use for this yet */
+
+  if(imapcode != '+') {
+    failf(data, "Access denied: %d", imapcode);
+    result = CURLE_LOGIN_DENIED;
+  }
+  else {
+    /* Create the initial response message */
+    result = Curl_sasl_create_gssapi_user_message(data, conn->user,
+                                                  conn->passwd, "imap",
+                                                  imapc->mutual_auth,
+                                                  NULL, &conn->krb5,
+                                                  &respmsg, &len);
+    if(!result && respmsg) {
+      /* Send the message */
+      result = Curl_pp_sendf(&imapc->pp, "%s", respmsg);
+
+      if(!result)
+        state(conn, IMAP_AUTHENTICATE_GSSAPI_TOKEN);
+    }
+  }
+
+  Curl_safefree(respmsg);
+
+  return result;
+}
+
+/* For AUTHENTICATE GSSAPI user token responses */
+static CURLcode imap_state_auth_gssapi_token_resp(struct connectdata *conn,
+                                                  int imapcode,
+                                                  imapstate instate)
+{
+  CURLcode result = CURLE_OK;
+  struct SessionHandle *data = conn->data;
+  struct imap_conn *imapc = &conn->proto.imapc;
+  char *chlgmsg = NULL;
+  char *respmsg = NULL;
+  size_t len = 0;
+
+  (void)instate; /* no use for this yet */
+
+  if(imapcode != '+') {
+    failf(data, "Access denied: %d", imapcode);
+    result = CURLE_LOGIN_DENIED;
+  }
+  else {
+    /* Get the challenge message */
+    imap_get_message(data->state.buffer, &chlgmsg);
+
+    if(imapc->mutual_auth)
+      /* Decode the user token challenge and create the optional response
+         message */
+      result = Curl_sasl_create_gssapi_user_message(data, NULL, NULL, NULL,
+                                                    imapc->mutual_auth,
+                                                    chlgmsg, &conn->krb5,
+                                                    &respmsg, &len);
+    else
+      /* Decode the security challenge and create the response message */
+      result = Curl_sasl_create_gssapi_security_message(data, chlgmsg,
+                                                        &conn->krb5,
+                                                        &respmsg, &len);
+
+    if(result) {
+      if(result == CURLE_BAD_CONTENT_ENCODING) {
+        /* Send the cancellation */
+        result = Curl_pp_sendf(&imapc->pp, "%s", "*");
+
+        if(!result)
+          state(conn, IMAP_AUTHENTICATE_CANCEL);
+      }
+    }
+    else {
+      /* Send the response */
+      if(respmsg)
+        result = Curl_pp_sendf(&imapc->pp, "%s", respmsg);
+      else
+        result = Curl_pp_sendf(&imapc->pp, "%s", "");
+
+      if(!result)
+        state(conn, (imapc->mutual_auth ? IMAP_AUTHENTICATE_GSSAPI_NO_DATA :
+                                          IMAP_AUTHENTICATE_FINAL));
+    }
+  }
+
+  Curl_safefree(respmsg);
+
+  return result;
+}
+
+/* For AUTHENTICATE GSSAPI no data responses */
+static CURLcode imap_state_auth_gssapi_no_data_resp(struct connectdata *conn,
+                                                    int imapcode,
+                                                    imapstate instate)
+{
+  CURLcode result = CURLE_OK;
+  struct SessionHandle *data = conn->data;
+  char *chlgmsg = NULL;
+  char *respmsg = NULL;
+  size_t len = 0;
+
+  (void)instate; /* no use for this yet */
+
+  if(imapcode != '+') {
+    failf(data, "Access denied: %d", imapcode);
+    result = CURLE_LOGIN_DENIED;
+  }
+  else {
+    /* Get the challenge message */
+    imap_get_message(data->state.buffer, &chlgmsg);
+
+    /* Decode the security challenge and create the response message */
+    result = Curl_sasl_create_gssapi_security_message(data, chlgmsg,
+                                                      &conn->krb5,
+                                                      &respmsg, &len);
+    if(result) {
+      if(result == CURLE_BAD_CONTENT_ENCODING) {
+        /* Send the cancellation */
+        result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", "*");
+
+        if(!result)
+          state(conn, IMAP_AUTHENTICATE_CANCEL);
+      }
+    }
+    else {
+      /* Send the response */
+      if(respmsg) {
+        result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", respmsg);
 
 
-      Curl_safefree(type3msg);
+        if(!result)
+          state(conn, IMAP_AUTHENTICATE_FINAL);
+      }
     }
   }
 
     }
   }
 
+  Curl_safefree(respmsg);
+
   return result;
 }
 #endif
 
   return result;
 }
 #endif
 
-/* For final responses to the AUTHENTICATE sequence */
+/* For AUTHENTICATE XOAUTH2 (without initial response) responses */
+static CURLcode imap_state_auth_xoauth2_resp(struct connectdata *conn,
+                                             int imapcode,
+                                             imapstate instate)
+{
+  CURLcode result = CURLE_OK;
+  struct SessionHandle *data = conn->data;
+  size_t len = 0;
+  char *xoauth = NULL;
+
+  (void)instate; /* no use for this yet */
+
+  if(imapcode != '+') {
+    failf(data, "Access denied: %d", imapcode);
+    result = CURLE_LOGIN_DENIED;
+  }
+  else {
+    /* Create the authorisation message */
+    result = Curl_sasl_create_xoauth2_message(conn->data, conn->user,
+                                              conn->xoauth2_bearer,
+                                              &xoauth, &len);
+    if(!result && xoauth) {
+      /* Send the message */
+      result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", xoauth);
+
+      if(!result)
+        state(conn, IMAP_AUTHENTICATE_FINAL);
+    }
+  }
+
+  Curl_safefree(xoauth);
+
+  return result;
+}
+
+/* For AUTHENTICATE cancellation responses */
+static CURLcode imap_state_auth_cancel_resp(struct connectdata *conn,
+                                            int imapcode,
+                                            imapstate instate)
+{
+  CURLcode result = CURLE_OK;
+  struct SessionHandle *data = conn->data;
+  struct imap_conn *imapc = &conn->proto.imapc;
+  const char *mech = NULL;
+  char *initresp = NULL;
+  size_t len = 0;
+  imapstate state1 = IMAP_STOP;
+  imapstate state2 = IMAP_STOP;
+
+  (void)imapcode;
+  (void)instate; /* no use for this yet */
+
+  /* Remove the offending mechanism from the supported list */
+  imapc->authmechs ^= imapc->authused;
+
+  /* Calculate alternative SASL login details */
+  result = imap_calc_sasl_details(conn, &mech, &initresp, &len, &state1,
+                                  &state2);
+
+  if(!result) {
+    /* Do we have any mechanisms left or can we fallback to clear text? */
+    if(mech) {
+      /* Retry SASL based authentication */
+      result = imap_perform_authenticate(conn, mech, initresp, state1, state2);
+
+      Curl_safefree(initresp);
+    }
+    else if((!imapc->login_disabled) &&
+            (imapc->preftype & IMAP_TYPE_CLEARTEXT))
+      /* Perform clear text authentication */
+      result = imap_perform_login(conn);
+    else {
+      failf(data, "Authentication cancelled");
+
+      result = CURLE_LOGIN_DENIED;
+    }
+  }
+
+  return result;
+}
+
+/* For final responses in the AUTHENTICATE sequence */
 static CURLcode imap_state_auth_final_resp(struct connectdata *conn,
                                            int imapcode,
                                            imapstate instate)
 static CURLcode imap_state_auth_final_resp(struct connectdata *conn,
                                            int imapcode,
                                            imapstate instate)
@@ -1316,7 +1605,7 @@ static CURLcode imap_state_select_resp(struct connectdata *conn, int imapcode,
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
-  struct IMAP *imap = conn->data->state.proto.imap;
+  struct IMAP *imap = conn->data->req.protop;
   struct imap_conn *imapc = &conn->proto.imapc;
   const char *line = data->state.buffer;
   char tmp[20];
   struct imap_conn *imapc = &conn->proto.imapc;
   const char *line = data->state.buffer;
   char tmp[20];
@@ -1343,6 +1632,8 @@ static CURLcode imap_state_select_resp(struct connectdata *conn, int imapcode,
 
       if(imap->custom)
         result = imap_perform_list(conn);
 
       if(imap->custom)
         result = imap_perform_list(conn);
+      else if(imap->query)
+        result = imap_perform_search(conn);
       else
         result = imap_perform_fetch(conn);
     }
       else
         result = imap_perform_fetch(conn);
     }
@@ -1370,7 +1661,7 @@ static CURLcode imap_state_fetch_resp(struct connectdata *conn, int imapcode,
   (void)instate; /* no use for this yet */
 
   if(imapcode != '*') {
   (void)instate; /* no use for this yet */
 
   if(imapcode != '*') {
-    Curl_pgrsSetDownloadSize(data, 0);
+    Curl_pgrsSetDownloadSize(data, -1);
     state(conn, IMAP_STOP);
     return CURLE_REMOTE_FILE_NOT_FOUND; /* TODO: Fix error code */
   }
     state(conn, IMAP_STOP);
     return CURLE_REMOTE_FILE_NOT_FOUND; /* TODO: Fix error code */
   }
@@ -1389,7 +1680,8 @@ static CURLcode imap_state_fetch_resp(struct connectdata *conn, int imapcode,
   }
 
   if(parsed) {
   }
 
   if(parsed) {
-    infof(data, "Found %" FORMAT_OFF_TU " bytes to download\n", size);
+    infof(data, "Found %" CURL_FORMAT_CURL_OFF_TU " bytes to download\n",
+          size);
     Curl_pgrsSetDownloadSize(data, size);
 
     if(pp->cache) {
     Curl_pgrsSetDownloadSize(data, size);
 
     if(pp->cache) {
@@ -1407,10 +1699,11 @@ static CURLcode imap_state_fetch_resp(struct connectdata *conn, int imapcode,
         return result;
 
       data->req.bytecount += chunk;
         return result;
 
       data->req.bytecount += chunk;
-      size -= chunk;
 
 
-      infof(data, "Written %" FORMAT_OFF_TU " bytes, %" FORMAT_OFF_TU
-            " bytes are left for transfer\n", (curl_off_t)chunk, size);
+      infof(data, "Written %" CURL_FORMAT_CURL_OFF_TU
+            " bytes, %" CURL_FORMAT_CURL_OFF_TU
+            " bytes are left for transfer\n", (curl_off_t)chunk,
+            size - chunk);
 
       /* Have we used the entire cache or just part of it?*/
       if(pp->cache_size > chunk) {
 
       /* Have we used the entire cache or just part of it?*/
       if(pp->cache_size > chunk) {
@@ -1427,7 +1720,7 @@ static CURLcode imap_state_fetch_resp(struct connectdata *conn, int imapcode,
       }
     }
 
       }
     }
 
-    if(!size)
+    if(data->req.bytecount == size)
       /* The entire data is already transferred! */
       Curl_setup_transfer(conn, -1, -1, FALSE, NULL, -1, NULL);
     else {
       /* The entire data is already transferred! */
       Curl_setup_transfer(conn, -1, -1, FALSE, NULL, -1, NULL);
     else {
@@ -1480,7 +1773,7 @@ static CURLcode imap_state_append_resp(struct connectdata *conn, int imapcode,
   }
   else {
     /* Set the progress upload size */
   }
   else {
     /* Set the progress upload size */
-    Curl_pgrsSetUploadSize(data, data->set.infilesize);
+    Curl_pgrsSetUploadSize(data, data->state.infilesize);
 
     /* IMAP upload */
     Curl_setup_transfer(conn, -1, -1, FALSE, NULL, FIRSTSOCKET, NULL);
 
     /* IMAP upload */
     Curl_setup_transfer(conn, -1, -1, FALSE, NULL, FIRSTSOCKET, NULL);
@@ -1510,6 +1803,31 @@ static CURLcode imap_state_append_final_resp(struct connectdata *conn,
   return result;
 }
 
   return result;
 }
 
+/* For SEARCH responses */
+static CURLcode imap_state_search_resp(struct connectdata *conn, int imapcode,
+                                       imapstate instate)
+{
+  CURLcode result = CURLE_OK;
+  char *line = conn->data->state.buffer;
+  size_t len = strlen(line);
+
+  (void)instate; /* No use for this yet */
+
+  if(imapcode == '*') {
+    /* Temporarily add the LF character back and send as body to the client */
+    line[len] = '\n';
+    result = Curl_client_write(conn, CLIENTWRITE_BODY, line, len + 1);
+    line[len] = '\0';
+  }
+  else if(imapcode != 'O')
+    result = CURLE_QUOTE_ERROR; /* TODO: Fix error code */
+  else
+    /* End of DO phase */
+    state(conn, IMAP_STOP);
+
+  return result;
+}
+
 static CURLcode imap_statemach_act(struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
 static CURLcode imap_statemach_act(struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
@@ -1592,6 +1910,29 @@ static CURLcode imap_statemach_act(struct connectdata *conn)
       break;
 #endif
 
       break;
 #endif
 
+#if defined(USE_KERBEROS5)
+    case IMAP_AUTHENTICATE_GSSAPI:
+      result = imap_state_auth_gssapi_resp(conn, imapcode, imapc->state);
+      break;
+
+    case IMAP_AUTHENTICATE_GSSAPI_TOKEN:
+      result = imap_state_auth_gssapi_token_resp(conn, imapcode, imapc->state);
+      break;
+
+    case IMAP_AUTHENTICATE_GSSAPI_NO_DATA:
+      result = imap_state_auth_gssapi_no_data_resp(conn, imapcode,
+                                                   imapc->state);
+      break;
+#endif
+
+    case IMAP_AUTHENTICATE_XOAUTH2:
+      result = imap_state_auth_xoauth2_resp(conn, imapcode, imapc->state);
+      break;
+
+    case IMAP_AUTHENTICATE_CANCEL:
+      result = imap_state_auth_cancel_resp(conn, imapcode, imapc->state);
+      break;
+
     case IMAP_AUTHENTICATE_FINAL:
       result = imap_state_auth_final_resp(conn, imapcode, imapc->state);
       break;
     case IMAP_AUTHENTICATE_FINAL:
       result = imap_state_auth_final_resp(conn, imapcode, imapc->state);
       break;
@@ -1624,6 +1965,10 @@ static CURLcode imap_statemach_act(struct connectdata *conn)
       result = imap_state_append_final_resp(conn, imapcode, imapc->state);
       break;
 
       result = imap_state_append_final_resp(conn, imapcode, imapc->state);
       break;
 
+    case IMAP_SEARCH:
+      result = imap_state_search_resp(conn, imapcode, imapc->state);
+      break;
+
     case IMAP_LOGOUT:
       /* fallthrough, just stop! */
     default:
     case IMAP_LOGOUT:
       /* fallthrough, just stop! */
     default:
@@ -1642,11 +1987,13 @@ static CURLcode imap_multi_statemach(struct connectdata *conn, bool *done)
   CURLcode result = CURLE_OK;
   struct imap_conn *imapc = &conn->proto.imapc;
 
   CURLcode result = CURLE_OK;
   struct imap_conn *imapc = &conn->proto.imapc;
 
-  if((conn->handler->flags & PROTOPT_SSL) && !imapc->ssldone)
+  if((conn->handler->flags & PROTOPT_SSL) && !imapc->ssldone) {
     result = Curl_ssl_connect_nonblocking(conn, FIRSTSOCKET, &imapc->ssldone);
     result = Curl_ssl_connect_nonblocking(conn, FIRSTSOCKET, &imapc->ssldone);
-  else
-    result = Curl_pp_statemach(&imapc->pp, FALSE);
+    if(result || !imapc->ssldone)
+      return result;
+  }
 
 
+  result = Curl_pp_statemach(&imapc->pp, FALSE);
   *done = (imapc->state == IMAP_STOP) ? TRUE : FALSE;
 
   return result;
   *done = (imapc->state == IMAP_STOP) ? TRUE : FALSE;
 
   return result;
@@ -1669,13 +2016,11 @@ static CURLcode imap_init(struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
-  struct IMAP *imap = data->state.proto.imap;
+  struct IMAP *imap;
 
 
-  if(!imap) {
-    imap = data->state.proto.imap = calloc(sizeof(struct IMAP), 1);
-    if(!imap)
-      result = CURLE_OUT_OF_MEMORY;
-  }
+  imap = data->req.protop = calloc(sizeof(struct IMAP), 1);
+  if(!imap)
+    result = CURLE_OUT_OF_MEMORY;
 
   return result;
 }
 
   return result;
 }
@@ -1705,17 +2050,8 @@ static CURLcode imap_connect(struct connectdata *conn, bool *done)
 
   *done = FALSE; /* default to not done yet */
 
 
   *done = FALSE; /* default to not done yet */
 
-  /* If there already is a protocol-specific struct allocated for this
-     sessionhandle, deal with it */
-  Curl_reset_reqproto(conn);
-
-  /* Initialise the IMAP layer */
-  result = imap_init(conn);
-  if(result)
-    return result;
-
   /* We always support persistent connections in IMAP */
   /* We always support persistent connections in IMAP */
-  conn->bits.close = FALSE;
+  connkeep(conn, "IMAP default");
 
   /* Set the default response time-out */
   pp->response_time = RESP_TIMEOUT;
 
   /* Set the default response time-out */
   pp->response_time = RESP_TIMEOUT;
@@ -1723,7 +2059,8 @@ static CURLcode imap_connect(struct connectdata *conn, bool *done)
   pp->endofresp = imap_endofresp;
   pp->conn = conn;
 
   pp->endofresp = imap_endofresp;
   pp->conn = conn;
 
-  /* Set the default preferred authentication mechanism */
+  /* Set the default preferred authentication type and mechanism */
+  imapc->preftype = IMAP_TYPE_ANY;
   imapc->prefmech = SASL_AUTH_ANY;
 
   /* Initialise the pingpong layer */
   imapc->prefmech = SASL_AUTH_ANY;
 
   /* Initialise the pingpong layer */
@@ -1759,7 +2096,7 @@ static CURLcode imap_done(struct connectdata *conn, CURLcode status,
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
-  struct IMAP *imap = data->state.proto.imap;
+  struct IMAP *imap = data->req.protop;
 
   (void)premature;
 
 
   (void)premature;
 
@@ -1771,7 +2108,7 @@ static CURLcode imap_done(struct connectdata *conn, CURLcode status,
     return CURLE_OK;
 
   if(status) {
     return CURLE_OK;
 
   if(status) {
-    conn->bits.close = TRUE; /* marked for closure */
+    connclose(conn, "IMAP done with bad status"); /* marked for closure */
     result = status;         /* use the already set error code */
   }
   else if(!data->set.connect_only && !imap->custom &&
     result = status;         /* use the already set error code */
   }
   else if(!data->set.connect_only && !imap->custom &&
@@ -1802,6 +2139,8 @@ static CURLcode imap_done(struct connectdata *conn, CURLcode status,
   Curl_safefree(imap->uidvalidity);
   Curl_safefree(imap->uid);
   Curl_safefree(imap->section);
   Curl_safefree(imap->uidvalidity);
   Curl_safefree(imap->uid);
   Curl_safefree(imap->section);
+  Curl_safefree(imap->partial);
+  Curl_safefree(imap->query);
   Curl_safefree(imap->custom);
   Curl_safefree(imap->custom_params);
 
   Curl_safefree(imap->custom);
   Curl_safefree(imap->custom_params);
 
@@ -1824,7 +2163,7 @@ static CURLcode imap_perform(struct connectdata *conn, bool *connected,
   /* This is IMAP and no proxy */
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
   /* This is IMAP and no proxy */
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
-  struct IMAP *imap = data->state.proto.imap;
+  struct IMAP *imap = data->req.protop;
   struct imap_conn *imapc = &conn->proto.imapc;
   bool selected = FALSE;
 
   struct imap_conn *imapc = &conn->proto.imapc;
   bool selected = FALSE;
 
@@ -1855,7 +2194,11 @@ static CURLcode imap_perform(struct connectdata *conn, bool *connected,
   else if(!imap->custom && selected && imap->uid)
     /* FETCH from the same mailbox */
     result = imap_perform_fetch(conn);
   else if(!imap->custom && selected && imap->uid)
     /* FETCH from the same mailbox */
     result = imap_perform_fetch(conn);
-  else if(imap->mailbox && !selected && (imap->custom || imap->uid))
+  else if(!imap->custom && selected && imap->query)
+    /* SEARCH the current mailbox */
+    result = imap_perform_search(conn);
+  else if(imap->mailbox && !selected &&
+         (imap->custom || imap->uid || imap->query))
     /* SELECT the mailbox */
     result = imap_perform_select(conn);
   else
     /* SELECT the mailbox */
     result = imap_perform_select(conn);
   else
@@ -1891,15 +2234,6 @@ static CURLcode imap_do(struct connectdata *conn, bool *done)
 
   *done = FALSE; /* default to false */
 
 
   *done = FALSE; /* default to false */
 
-  /* Since connections can be re-used between SessionHandles, there might be a
-     connection already existing but on a fresh SessionHandle struct. As such
-     we make sure we have a good IMAP struct to play with. For new connections
-     the IMAP struct is allocated and setup in the imap_connect() function. */
-  Curl_reset_reqproto(conn);
-  result = imap_init(conn);
-  if(result)
-    return result;
-
   /* Parse the URL path */
   result = imap_parse_url_path(conn);
   if(result)
   /* Parse the URL path */
   result = imap_parse_url_path(conn);
   if(result)
@@ -1932,7 +2266,7 @@ static CURLcode imap_disconnect(struct connectdata *conn, bool dead_connection)
 
   /* The IMAP session may or may not have been allocated/setup at this
      point! */
 
   /* The IMAP session may or may not have been allocated/setup at this
      point! */
-  if(!dead_connection && imapc->pp.conn)
+  if(!dead_connection && imapc->pp.conn && imapc->pp.conn->bits.protoconnstart)
     if(!imap_perform_logout(conn))
       (void)imap_block_statemach(conn); /* ignore errors on LOGOUT */
 
     if(!imap_perform_logout(conn))
       (void)imap_block_statemach(conn); /* ignore errors on LOGOUT */
 
@@ -1952,7 +2286,7 @@ static CURLcode imap_disconnect(struct connectdata *conn, bool dead_connection)
 /* Call this when the DO phase has completed */
 static CURLcode imap_dophase_done(struct connectdata *conn, bool connected)
 {
 /* Call this when the DO phase has completed */
 static CURLcode imap_dophase_done(struct connectdata *conn, bool connected)
 {
-  struct IMAP *imap = conn->data->state.proto.imap;
+  struct IMAP *imap = conn->data->req.protop;
 
   (void)connected;
 
 
   (void)connected;
 
@@ -2001,8 +2335,8 @@ static CURLcode imap_regular_transfer(struct connectdata *conn,
   /* Set the progress data */
   Curl_pgrsSetUploadCounter(data, 0);
   Curl_pgrsSetDownloadCounter(data, 0);
   /* Set the progress data */
   Curl_pgrsSetUploadCounter(data, 0);
   Curl_pgrsSetDownloadCounter(data, 0);
-  Curl_pgrsSetUploadSize(data, 0);
-  Curl_pgrsSetDownloadSize(data, 0);
+  Curl_pgrsSetUploadSize(data, -1);
+  Curl_pgrsSetDownloadSize(data, -1);
 
   /* Carry out the perform */
   result = imap_perform(conn, &connected, dophase_done);
 
   /* Carry out the perform */
   result = imap_perform(conn, &connected, dophase_done);
@@ -2018,6 +2352,11 @@ static CURLcode imap_setup_connection(struct connectdata *conn)
 {
   struct SessionHandle *data = conn->data;
 
 {
   struct SessionHandle *data = conn->data;
 
+  /* Initialise the IMAP layer */
+  CURLcode result = imap_init(conn);
+  if(result)
+    return result;
+
   if(conn->bits.httpproxy && !data->set.tunnel_thru_httpproxy) {
     /* Unless we have asked to tunnel IMAP operations through the proxy, we
        switch and use HTTP operations only */
   if(conn->bits.httpproxy && !data->set.tunnel_thru_httpproxy) {
     /* Unless we have asked to tunnel IMAP operations through the proxy, we
        switch and use HTTP operations only */
@@ -2033,10 +2372,8 @@ static CURLcode imap_setup_connection(struct connectdata *conn)
 #endif
     }
 
 #endif
     }
 
-    /* We explicitly mark this connection as persistent here as we're doing
-       IMAP over HTTP and thus we accidentally avoid setting this value
-       otherwise */
-    conn->bits.close = FALSE;
+    /* set it up as an HTTP connection instead */
+    return conn->handler->setup_connection(conn);
 #else
     failf(data, "IMAP over http proxy requires HTTP support built-in!");
     return CURLE_UNSUPPORTED_PROTOCOL;
 #else
     failf(data, "IMAP over http proxy requires HTTP support built-in!");
     return CURLE_UNSUPPORTED_PROTOCOL;
@@ -2110,7 +2447,7 @@ static char *imap_atom(const char *str)
   if(!str)
     return NULL;
 
   if(!str)
     return NULL;
 
-  /* Count any unescapped characters */
+  /* Count any unescaped characters */
   p1 = str;
   while(*p1) {
     if(*p1 == '\\')
   p1 = str;
   while(*p1) {
     if(*p1 == '\\')
@@ -2123,7 +2460,7 @@ static char *imap_atom(const char *str)
     p1++;
   }
 
     p1++;
   }
 
-  /* Does the input contain any unescapped characters? */
+  /* Does the input contain any unescaped characters? */
   if(!backsp_count && !quote_count && !space_exists)
     return strdup(str);
 
   if(!backsp_count && !quote_count && !space_exists)
     return strdup(str);
 
@@ -2213,32 +2550,64 @@ static CURLcode imap_parse_url_options(struct connectdata *conn)
   struct imap_conn *imapc = &conn->proto.imapc;
   const char *options = conn->options;
   const char *ptr = options;
   struct imap_conn *imapc = &conn->proto.imapc;
   const char *options = conn->options;
   const char *ptr = options;
+  bool reset = TRUE;
 
 
-  if(options) {
+  while(ptr && *ptr) {
     const char *key = ptr;
 
     while(*ptr && *ptr != '=')
         ptr++;
 
     if(strnequal(key, "AUTH", 4)) {
     const char *key = ptr;
 
     while(*ptr && *ptr != '=')
         ptr++;
 
     if(strnequal(key, "AUTH", 4)) {
-      const char *value = ptr + 1;
+      size_t len = 0;
+      const char *value = ++ptr;
 
 
-      if(strequal(value, "*"))
-        imapc->prefmech = SASL_AUTH_ANY;
-      else if(strequal(value, "LOGIN"))
-        imapc->prefmech = SASL_MECH_LOGIN;
-      else if(strequal(value, "PLAIN"))
-        imapc->prefmech = SASL_MECH_PLAIN;
-      else if(strequal(value, "CRAM-MD5"))
-        imapc->prefmech = SASL_MECH_CRAM_MD5;
-      else if(strequal(value, "DIGEST-MD5"))
-        imapc->prefmech = SASL_MECH_DIGEST_MD5;
-      else if(strequal(value, "GSSAPI"))
-        imapc->prefmech = SASL_MECH_GSSAPI;
-      else if(strequal(value, "NTLM"))
-        imapc->prefmech = SASL_MECH_NTLM;
-      else
+      if(reset) {
+        reset = FALSE;
+        imapc->preftype = IMAP_TYPE_NONE;
         imapc->prefmech = SASL_AUTH_NONE;
         imapc->prefmech = SASL_AUTH_NONE;
+      }
+
+      while(*ptr && *ptr != ';') {
+        ptr++;
+        len++;
+      }
+
+      if(strnequal(value, "*", len)) {
+        imapc->preftype = IMAP_TYPE_ANY;
+        imapc->prefmech = SASL_AUTH_ANY;
+      }
+      else if(strnequal(value, SASL_MECH_STRING_LOGIN, len)) {
+        imapc->preftype = IMAP_TYPE_SASL;
+        imapc->prefmech |= SASL_MECH_LOGIN;
+      }
+      else if(strnequal(value, SASL_MECH_STRING_PLAIN, len)) {
+        imapc->preftype = IMAP_TYPE_SASL;
+        imapc->prefmech |= SASL_MECH_PLAIN;
+      }
+      else if(strnequal(value, SASL_MECH_STRING_CRAM_MD5, len)) {
+        imapc->preftype = IMAP_TYPE_SASL;
+        imapc->prefmech |= SASL_MECH_CRAM_MD5;
+      }
+      else if(strnequal(value, SASL_MECH_STRING_DIGEST_MD5, len)) {
+        imapc->preftype = IMAP_TYPE_SASL;
+        imapc->prefmech |= SASL_MECH_DIGEST_MD5;
+      }
+      else if(strnequal(value, SASL_MECH_STRING_GSSAPI, len)) {
+        imapc->preftype = IMAP_TYPE_SASL;
+        imapc->prefmech |= SASL_MECH_GSSAPI;
+      }
+      else if(strnequal(value, SASL_MECH_STRING_NTLM, len)) {
+        imapc->preftype = IMAP_TYPE_SASL;
+        imapc->prefmech |= SASL_MECH_NTLM;
+      }
+      else if(strnequal(value, SASL_MECH_STRING_XOAUTH2, len)) {
+        imapc->preftype = IMAP_TYPE_SASL;
+        imapc->prefmech |= SASL_MECH_XOAUTH2;
+      }
+
+      if(*ptr == ';')
+        ptr++;
     }
     else
       result = CURLE_URL_MALFORMAT;
     }
     else
       result = CURLE_URL_MALFORMAT;
@@ -2259,7 +2628,7 @@ static CURLcode imap_parse_url_path(struct connectdata *conn)
   /* The imap struct is already initialised in imap_connect() */
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
   /* The imap struct is already initialised in imap_connect() */
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
-  struct IMAP *imap = data->state.proto.imap;
+  struct IMAP *imap = data->req.protop;
   const char *begin = data->state.path;
   const char *ptr = begin;
 
   const char *begin = data->state.path;
   const char *ptr = begin;
 
@@ -2314,8 +2683,8 @@ static CURLcode imap_parse_url_path(struct connectdata *conn)
 
     DEBUGF(infof(conn->data, "IMAP URL parameter '%s' = '%s'\n", name, value));
 
 
     DEBUGF(infof(conn->data, "IMAP URL parameter '%s' = '%s'\n", name, value));
 
-    /* Process the known hierarchical parameters (UIDVALIDITY, UID and SECTION)
-       stripping of the trailing slash character if it is present.
+    /* Process the known hierarchical parameters (UIDVALIDITY, UID, SECTION and
+       PARTIAL) stripping of the trailing slash character if it is present.
 
        Note: Unknown parameters trigger a URL_MALFORMAT error. */
     if(Curl_raw_equal(name, "UIDVALIDITY") && !imap->uidvalidity) {
 
        Note: Unknown parameters trigger a URL_MALFORMAT error. */
     if(Curl_raw_equal(name, "UIDVALIDITY") && !imap->uidvalidity) {
@@ -2339,6 +2708,13 @@ static CURLcode imap_parse_url_path(struct connectdata *conn)
       imap->section = value;
       value = NULL;
     }
       imap->section = value;
       value = NULL;
     }
+    else if(Curl_raw_equal(name, "PARTIAL") && !imap->partial) {
+      if(valuelen > 0 && value[valuelen - 1] == '/')
+        value[valuelen - 1] = '\0';
+
+      imap->partial = value;
+      value = NULL;
+    }
     else {
       Curl_safefree(name);
       Curl_safefree(value);
     else {
       Curl_safefree(name);
       Curl_safefree(value);
@@ -2350,6 +2726,21 @@ static CURLcode imap_parse_url_path(struct connectdata *conn)
     Curl_safefree(value);
   }
 
     Curl_safefree(value);
   }
 
+  /* Does the URL contain a query parameter? Only valid when we have a mailbox
+     and no UID as per RFC-5092 */
+  if(imap->mailbox && !imap->uid && *ptr == '?') {
+    /* Find the length of the query parameter */
+    begin = ++ptr;
+    while(imap_is_bchar(*ptr))
+      ptr++;
+
+    /* Decode the query parameter */
+    result = Curl_urldecode(data, begin, ptr - begin, &imap->query, NULL,
+                            TRUE);
+    if(result)
+      return result;
+  }
+
   /* Any extra stuff at the end of the URL is an error */
   if(*ptr)
     return CURLE_URL_MALFORMAT;
   /* Any extra stuff at the end of the URL is an error */
   if(*ptr)
     return CURLE_URL_MALFORMAT;
@@ -2367,7 +2758,7 @@ static CURLcode imap_parse_custom_request(struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
-  struct IMAP *imap = data->state.proto.imap;
+  struct IMAP *imap = data->req.protop;
   const char *custom = data->set.str[STRING_CUSTOMREQUEST];
 
   if(custom) {
   const char *custom = data->set.str[STRING_CUSTOMREQUEST];
 
   if(custom) {
@@ -2394,4 +2785,108 @@ static CURLcode imap_parse_custom_request(struct connectdata *conn)
   return result;
 }
 
   return result;
 }
 
+/***********************************************************************
+ *
+ * imap_calc_sasl_details()
+ *
+ * Calculate the required login details for SASL authentication.
+ */
+static CURLcode imap_calc_sasl_details(struct connectdata *conn,
+                                       const char **mech,
+                                       char **initresp, size_t *len,
+                                       imapstate *state1, imapstate *state2)
+{
+  CURLcode result = CURLE_OK;
+  struct SessionHandle *data = conn->data;
+  struct imap_conn *imapc = &conn->proto.imapc;
+
+  /* Calculate the supported authentication mechanism, by decreasing order of
+     security, as well as the initial response where appropriate */
+#if defined(USE_KERBEROS5)
+    if((imapc->authmechs & SASL_MECH_GSSAPI) &&
+       (imapc->prefmech & SASL_MECH_GSSAPI)) {
+    imapc->mutual_auth = FALSE; /* TODO: Calculate mutual authentication */
+
+    *mech = SASL_MECH_STRING_GSSAPI;
+    *state1 = IMAP_AUTHENTICATE_GSSAPI;
+    *state2 = IMAP_AUTHENTICATE_GSSAPI_TOKEN;
+    imapc->authused = SASL_MECH_GSSAPI;
+
+    if(imapc->ir_supported || data->set.sasl_ir)
+      result = Curl_sasl_create_gssapi_user_message(data, conn->user,
+                                                    conn->passwd, "imap",
+                                                    imapc->mutual_auth,
+                                                    NULL, &conn->krb5,
+                                                    initresp, len);
+  }
+  else
+#endif
+#ifndef CURL_DISABLE_CRYPTO_AUTH
+  if((imapc->authmechs & SASL_MECH_DIGEST_MD5) &&
+     (imapc->prefmech & SASL_MECH_DIGEST_MD5)) {
+    *mech = SASL_MECH_STRING_DIGEST_MD5;
+    *state1 = IMAP_AUTHENTICATE_DIGESTMD5;
+    imapc->authused = SASL_MECH_DIGEST_MD5;
+  }
+  else if((imapc->authmechs & SASL_MECH_CRAM_MD5) &&
+          (imapc->prefmech & SASL_MECH_CRAM_MD5)) {
+    *mech = SASL_MECH_STRING_CRAM_MD5;
+    *state1 = IMAP_AUTHENTICATE_CRAMMD5;
+    imapc->authused = SASL_MECH_CRAM_MD5;
+  }
+  else
+#endif
+#ifdef USE_NTLM
+    if((imapc->authmechs & SASL_MECH_NTLM) &&
+       (imapc->prefmech & SASL_MECH_NTLM)) {
+    *mech = SASL_MECH_STRING_NTLM;
+    *state1 = IMAP_AUTHENTICATE_NTLM;
+    *state2 = IMAP_AUTHENTICATE_NTLM_TYPE2MSG;
+    imapc->authused = SASL_MECH_NTLM;
+
+    if(imapc->ir_supported || data->set.sasl_ir)
+      result = Curl_sasl_create_ntlm_type1_message(conn->user, conn->passwd,
+                                                   &conn->ntlm,
+                                                   initresp, len);
+  }
+  else
+#endif
+  if(((imapc->authmechs & SASL_MECH_XOAUTH2) &&
+      (imapc->prefmech & SASL_MECH_XOAUTH2) &&
+      (imapc->prefmech != SASL_AUTH_ANY)) || conn->xoauth2_bearer) {
+    *mech = SASL_MECH_STRING_XOAUTH2;
+    *state1 = IMAP_AUTHENTICATE_XOAUTH2;
+    *state2 = IMAP_AUTHENTICATE_FINAL;
+    imapc->authused = SASL_MECH_XOAUTH2;
+
+    if(imapc->ir_supported || data->set.sasl_ir)
+      result = Curl_sasl_create_xoauth2_message(data, conn->user,
+                                                conn->xoauth2_bearer,
+                                                initresp, len);
+  }
+  else if((imapc->authmechs & SASL_MECH_LOGIN) &&
+          (imapc->prefmech & SASL_MECH_LOGIN)) {
+    *mech = SASL_MECH_STRING_LOGIN;
+    *state1 = IMAP_AUTHENTICATE_LOGIN;
+    *state2 = IMAP_AUTHENTICATE_LOGIN_PASSWD;
+    imapc->authused = SASL_MECH_LOGIN;
+
+    if(imapc->ir_supported || data->set.sasl_ir)
+      result = Curl_sasl_create_login_message(data, conn->user, initresp, len);
+  }
+  else if((imapc->authmechs & SASL_MECH_PLAIN) &&
+          (imapc->prefmech & SASL_MECH_PLAIN)) {
+    *mech = SASL_MECH_STRING_PLAIN;
+    *state1 = IMAP_AUTHENTICATE_PLAIN;
+    *state2 = IMAP_AUTHENTICATE_FINAL;
+    imapc->authused = SASL_MECH_PLAIN;
+
+    if(imapc->ir_supported || data->set.sasl_ir)
+      result = Curl_sasl_create_plain_message(data, conn->user, conn->passwd,
+                                              initresp, len);
+  }
+
+  return result;
+}
+
 #endif /* CURL_DISABLE_IMAP */
 #endif /* CURL_DISABLE_IMAP */
index bc0a83d..768fc4b 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2009 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2009 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -43,6 +43,11 @@ typedef enum {
   IMAP_AUTHENTICATE_DIGESTMD5_RESP,
   IMAP_AUTHENTICATE_NTLM,
   IMAP_AUTHENTICATE_NTLM_TYPE2MSG,
   IMAP_AUTHENTICATE_DIGESTMD5_RESP,
   IMAP_AUTHENTICATE_NTLM,
   IMAP_AUTHENTICATE_NTLM_TYPE2MSG,
+  IMAP_AUTHENTICATE_GSSAPI,
+  IMAP_AUTHENTICATE_GSSAPI_TOKEN,
+  IMAP_AUTHENTICATE_GSSAPI_NO_DATA,
+  IMAP_AUTHENTICATE_XOAUTH2,
+  IMAP_AUTHENTICATE_CANCEL,
   IMAP_AUTHENTICATE_FINAL,
   IMAP_LOGIN,
   IMAP_LIST,
   IMAP_AUTHENTICATE_FINAL,
   IMAP_LOGIN,
   IMAP_LIST,
@@ -51,6 +56,7 @@ typedef enum {
   IMAP_FETCH_FINAL,
   IMAP_APPEND,
   IMAP_APPEND_FINAL,
   IMAP_FETCH_FINAL,
   IMAP_APPEND,
   IMAP_APPEND_FINAL,
+  IMAP_SEARCH,
   IMAP_LOGOUT,
   IMAP_LAST          /* never used */
 } imapstate;
   IMAP_LOGOUT,
   IMAP_LAST          /* never used */
 } imapstate;
@@ -65,6 +71,8 @@ struct IMAP {
   char *uidvalidity;      /* UIDVALIDITY to check in select */
   char *uid;              /* Message UID to fetch */
   char *section;          /* Message SECTION to fetch */
   char *uidvalidity;      /* UIDVALIDITY to check in select */
   char *uid;              /* Message UID to fetch */
   char *section;          /* Message SECTION to fetch */
+  char *partial;          /* Message PARTIAL to fetch */
+  char *query;            /* Query to search for */
   char *custom;           /* Custom request */
   char *custom_params;    /* Parameters for the custom request */
 };
   char *custom;           /* Custom request */
   char *custom_params;    /* Parameters for the custom request */
 };
@@ -76,6 +84,7 @@ struct imap_conn {
   imapstate state;            /* Always use imap.c:state() to change state! */
   bool ssldone;               /* Is connect() over SSL done? */
   unsigned int authmechs;     /* Accepted authentication mechanisms */
   imapstate state;            /* Always use imap.c:state() to change state! */
   bool ssldone;               /* Is connect() over SSL done? */
   unsigned int authmechs;     /* Accepted authentication mechanisms */
+  unsigned int preftype;      /* Preferred authentication type */
   unsigned int prefmech;      /* Preferred authentication mechanism */
   unsigned int authused;      /* Auth mechanism used for the connection */
   int cmdid;                  /* Last used command ID */
   unsigned int prefmech;      /* Preferred authentication mechanism */
   unsigned int authused;      /* Auth mechanism used for the connection */
   int cmdid;                  /* Last used command ID */
@@ -83,6 +92,7 @@ struct imap_conn {
   bool tls_supported;         /* StartTLS capability supported by server */
   bool login_disabled;        /* LOGIN command disabled by server */
   bool ir_supported;          /* Initial response supported by server */
   bool tls_supported;         /* StartTLS capability supported by server */
   bool login_disabled;        /* LOGIN command disabled by server */
   bool ir_supported;          /* Initial response supported by server */
+  bool mutual_auth;           /* Mutual authentication enabled (GSSAPI only) */
   char *mailbox;              /* The last selected mailbox */
   char *mailbox_uidvalidity;  /* UIDVALIDITY parsed from select response */
 };
   char *mailbox;              /* The last selected mailbox */
   char *mailbox_uidvalidity;  /* UIDVALIDITY parsed from select response */
 };
@@ -90,4 +100,12 @@ struct imap_conn {
 extern const struct Curl_handler Curl_handler_imap;
 extern const struct Curl_handler Curl_handler_imaps;
 
 extern const struct Curl_handler Curl_handler_imap;
 extern const struct Curl_handler Curl_handler_imaps;
 
+/* Authentication type flags */
+#define IMAP_TYPE_CLEARTEXT (1 << 0)
+#define IMAP_TYPE_SASL      (1 << 1)
+
+/* Authentication type values */
+#define IMAP_TYPE_NONE      0
+#define IMAP_TYPE_ANY       ~0U
+
 #endif /* HEADER_CURL_IMAP_H */
 #endif /* HEADER_CURL_IMAP_H */
diff --git a/lib/krb4.c b/lib/krb4.c
deleted file mode 100644 (file)
index 3d78962..0000000
+++ /dev/null
@@ -1,440 +0,0 @@
-/* This source code was modified by Martin Hedenfalk <mhe@stacken.kth.se> for
- * use in Curl. Martin's latest changes were done 2000-09-18.
- *
- * It has since been patched away like a madman by Daniel Stenberg to make it
- * better applied to curl conditions, and to make it not use globals, pollute
- * name space and more.
- *
- * Copyright (c) 1995, 1996, 1997, 1998, 1999 Kungliga Tekniska Högskolan
- * (Royal Institute of Technology, Stockholm, Sweden).
- * Copyright (c) 2004 - 2011 Daniel Stenberg
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * 3. Neither the name of the Institute nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- */
-
-#include "curl_setup.h"
-
-#ifndef CURL_DISABLE_FTP
-#ifdef HAVE_KRB4
-
-#ifdef HAVE_NETDB_H
-#include <netdb.h>
-#endif
-#include <krb.h>
-#include <des.h>
-
-#include "urldata.h"
-#include "curl_base64.h"
-#include "ftp.h"
-#include "sendf.h"
-#include "krb4.h"
-#include "inet_ntop.h"
-#include "curl_memory.h"
-
-/* The last #include file should be: */
-#include "memdebug.h"
-
-#define LOCAL_ADDR (&conn->local_addr)
-#define REMOTE_ADDR conn->ip_addr->ai_addr
-#define myctladdr LOCAL_ADDR
-#define hisctladdr REMOTE_ADDR
-
-struct krb4_data {
-  des_cblock key;
-  des_key_schedule schedule;
-  char name[ANAME_SZ];
-  char instance[INST_SZ];
-  char realm[REALM_SZ];
-};
-
-#ifndef HAVE_STRLCPY
-/* if it ever goes non-static, make it Curl_ prefixed! */
-static size_t
-strlcpy (char *dst, const char *src, size_t dst_sz)
-{
-  size_t n;
-  char *p;
-
-  for(p = dst, n = 0;
-      n + 1 < dst_sz && *src != '\0';
-      ++p, ++src, ++n)
-    *p = *src;
-  *p = '\0';
-  if(*src == '\0')
-    return n;
-  else
-    return n + strlen (src);
-}
-#else
-size_t strlcpy (char *dst, const char *src, size_t dst_sz);
-#endif
-
-static int
-krb4_check_prot(void *app_data, int level)
-{
-  app_data = NULL; /* prevent compiler warning */
-  if(level == PROT_CONFIDENTIAL)
-    return -1;
-  return 0;
-}
-
-static int
-krb4_decode(void *app_data, void *buf, int len, int level,
-            struct connectdata *conn)
-{
-  MSG_DAT m;
-  int e;
-  struct krb4_data *d = app_data;
-
-  if(level == PROT_SAFE)
-    e = krb_rd_safe(buf, len, &d->key,
-                    (struct sockaddr_in *)REMOTE_ADDR,
-                    (struct sockaddr_in *)LOCAL_ADDR, &m);
-  else
-    e = krb_rd_priv(buf, len, d->schedule, &d->key,
-                    (struct sockaddr_in *)REMOTE_ADDR,
-                    (struct sockaddr_in *)LOCAL_ADDR, &m);
-  if(e) {
-    struct SessionHandle *data = conn->data;
-    infof(data, "krb4_decode: %s\n", krb_get_err_text(e));
-    return -1;
-  }
-  memmove(buf, m.app_data, m.app_length);
-  return m.app_length;
-}
-
-static int
-krb4_overhead(void *app_data, int level, int len)
-{
-  /* no arguments are used, just init them to prevent compiler warnings */
-  app_data = NULL;
-  level = 0;
-  len = 0;
-  return 31;
-}
-
-static int
-krb4_encode(void *app_data, const void *from, int length, int level, void **to,
-            struct connectdata *conn)
-{
-  struct krb4_data *d = app_data;
-  *to = malloc(length + 31);
-  if(!*to)
-    return -1;
-  if(level == PROT_SAFE)
-    /* NOTE that the void* cast is safe, krb_mk_safe/priv don't modify the
-     * input buffer
-     */
-    return krb_mk_safe((void*)from, *to, length, &d->key,
-                       (struct sockaddr_in *)LOCAL_ADDR,
-                       (struct sockaddr_in *)REMOTE_ADDR);
-  else if(level == PROT_PRIVATE)
-    return krb_mk_priv((void*)from, *to, length, d->schedule, &d->key,
-                       (struct sockaddr_in *)LOCAL_ADDR,
-                       (struct sockaddr_in *)REMOTE_ADDR);
-  else
-    return -1;
-}
-
-static int
-mk_auth(struct krb4_data *d, KTEXT adat,
-        const char *service, char *host, int checksum)
-{
-  int ret;
-  CREDENTIALS cred;
-  char sname[SNAME_SZ], inst[INST_SZ], realm[REALM_SZ];
-
-  strlcpy(sname, service, sizeof(sname));
-  strlcpy(inst, krb_get_phost(host), sizeof(inst));
-  strlcpy(realm, krb_realmofhost(host), sizeof(realm));
-  ret = krb_mk_req(adat, sname, inst, realm, checksum);
-  if(ret)
-    return ret;
-  strlcpy(sname, service, sizeof(sname));
-  strlcpy(inst, krb_get_phost(host), sizeof(inst));
-  strlcpy(realm, krb_realmofhost(host), sizeof(realm));
-  ret = krb_get_cred(sname, inst, realm, &cred);
-  memmove(&d->key, &cred.session, sizeof(des_cblock));
-  des_key_sched(&d->key, d->schedule);
-  memset(&cred, 0, sizeof(cred));
-  return ret;
-}
-
-#ifdef HAVE_KRB_GET_OUR_IP_FOR_REALM
-int krb_get_our_ip_for_realm(char *, struct in_addr *);
-#endif
-
-static int
-krb4_auth(void *app_data, struct connectdata *conn)
-{
-  int ret;
-  char *p;
-  unsigned char *ptr;
-  size_t len = 0;
-  KTEXT_ST adat;
-  MSG_DAT msg_data;
-  int checksum;
-  u_int32_t cs;
-  struct krb4_data *d = app_data;
-  char *host = conn->host.name;
-  ssize_t nread;
-  int l = sizeof(conn->local_addr);
-  struct SessionHandle *data = conn->data;
-  CURLcode result;
-  size_t base64_sz = 0;
-
-  if(getsockname(conn->sock[FIRSTSOCKET],
-                 (struct sockaddr *)LOCAL_ADDR, &l) < 0)
-    perror("getsockname()");
-
-  checksum = getpid();
-  ret = mk_auth(d, &adat, "ftp", host, checksum);
-  if(ret == KDC_PR_UNKNOWN)
-    ret = mk_auth(d, &adat, "rcmd", host, checksum);
-  if(ret) {
-    infof(data, "%s\n", krb_get_err_text(ret));
-    return AUTH_CONTINUE;
-  }
-
-#ifdef HAVE_KRB_GET_OUR_IP_FOR_REALM
-  if(krb_get_config_bool("nat_in_use")) {
-    struct sockaddr_in *localaddr  = (struct sockaddr_in *)LOCAL_ADDR;
-    struct in_addr natAddr;
-
-    if(krb_get_our_ip_for_realm(krb_realmofhost(host),
-                                 &natAddr) != KSUCCESS
-        && krb_get_our_ip_for_realm(NULL, &natAddr) != KSUCCESS)
-      infof(data, "Can't get address for realm %s\n",
-                 krb_realmofhost(host));
-    else {
-      if(natAddr.s_addr != localaddr->sin_addr.s_addr) {
-        char addr_buf[128];
-        if(Curl_inet_ntop(AF_INET, natAddr, addr_buf, sizeof(addr_buf)))
-          infof(data, "Using NAT IP address (%s) for kerberos 4\n", addr_buf);
-        localaddr->sin_addr = natAddr;
-      }
-    }
-  }
-#endif
-
-  result = Curl_base64_encode(conn->data, (char *)adat.dat, adat.length,
-                              &p, &base64_sz);
-  if(result) {
-    Curl_failf(data, "base64-encoding: %s", curl_easy_strerror(result));
-    return AUTH_CONTINUE;
-  }
-
-  result = Curl_ftpsendf(conn, "ADAT %s", p);
-
-  free(p);
-
-  if(result)
-    return -2;
-
-  if(Curl_GetFTPResponse(&nread, conn, NULL))
-    return -1;
-
-  if(data->state.buffer[0] != '2') {
-    Curl_failf(data, "Server didn't accept auth data");
-    return AUTH_ERROR;
-  }
-
-  p = strstr(data->state.buffer, "ADAT=");
-  if(!p) {
-    Curl_failf(data, "Remote host didn't send adat reply");
-    return AUTH_ERROR;
-  }
-  p += 5;
-  result = Curl_base64_decode(p, &ptr, &len);
-  if(result) {
-    Curl_failf(data, "base64-decoding: %s", curl_easy_strerror(result));
-    return AUTH_ERROR;
-  }
-  if(len > sizeof(adat.dat)-1) {
-    free(ptr);
-    ptr = NULL;
-    len = 0;
-  }
-  if(!len || !ptr) {
-    Curl_failf(data, "Failed to decode base64 from server");
-    return AUTH_ERROR;
-  }
-  memcpy((char *)adat.dat, ptr, len);
-  free(ptr);
-  adat.length = len;
-  ret = krb_rd_safe(adat.dat, adat.length, &d->key,
-                    (struct sockaddr_in *)hisctladdr,
-                    (struct sockaddr_in *)myctladdr, &msg_data);
-  if(ret) {
-    Curl_failf(data, "Error reading reply from server: %s",
-               krb_get_err_text(ret));
-    return AUTH_ERROR;
-  }
-  krb_get_int(msg_data.app_data, &cs, 4, 0);
-  if(cs - checksum != 1) {
-    Curl_failf(data, "Bad checksum returned from server");
-    return AUTH_ERROR;
-  }
-  return AUTH_OK;
-}
-
-struct Curl_sec_client_mech Curl_krb4_client_mech = {
-    "KERBEROS_V4",
-    sizeof(struct krb4_data),
-    NULL, /* init */
-    krb4_auth,
-    NULL, /* end */
-    krb4_check_prot,
-    krb4_overhead,
-    krb4_encode,
-    krb4_decode
-};
-
-static enum protection_level
-krb4_set_command_prot(struct connectdata *conn, enum protection_level level)
-{
-  enum protection_level old = conn->command_prot;
-  DEBUGASSERT(level > PROT_NONE && level < PROT_LAST);
-  conn->command_prot = level;
-  return old;
-}
-
-CURLcode Curl_krb_kauth(struct connectdata *conn)
-{
-  des_cblock key;
-  des_key_schedule schedule;
-  KTEXT_ST tkt, tktcopy;
-  char *name;
-  char *p;
-  char passwd[100];
-  size_t tmp = 0;
-  ssize_t nread;
-  enum protection_level save;
-  CURLcode result;
-  unsigned char *ptr;
-  size_t base64_sz = 0;
-
-  save = krb4_set_command_prot(conn, PROT_PRIVATE);
-
-  result = Curl_ftpsendf(conn, "SITE KAUTH %s", conn->user);
-
-  if(result)
-    return result;
-
-  result = Curl_GetFTPResponse(&nread, conn, NULL);
-  if(result)
-    return result;
-
-  if(conn->data->state.buffer[0] != '3') {
-    krb4_set_command_prot(conn, save);
-    return CURLE_FTP_WEIRD_SERVER_REPLY;
-  }
-
-  p = strstr(conn->data->state.buffer, "T=");
-  if(!p) {
-    Curl_failf(conn->data, "Bad reply from server");
-    krb4_set_command_prot(conn, save);
-    return CURLE_FTP_WEIRD_SERVER_REPLY;
-  }
-
-  p += 2;
-  result = Curl_base64_decode(p, &ptr, &tmp);
-  if(result) {
-    Curl_failf(conn->data, "base64-decoding: %s", curl_easy_strerror(result));
-    return result;
-  }
-  if(tmp >= sizeof(tkt.dat)) {
-    free(ptr);
-    ptr = NULL;
-    tmp = 0;
-  }
-  if(!tmp || !ptr) {
-    Curl_failf(conn->data, "Failed to decode base64 in reply");
-    krb4_set_command_prot(conn, save);
-    return CURLE_FTP_WEIRD_SERVER_REPLY;
-  }
-  memcpy((char *)tkt.dat, ptr, tmp);
-  free(ptr);
-  tkt.length = tmp;
-  tktcopy.length = tkt.length;
-
-  p = strstr(conn->data->state.buffer, "P=");
-  if(!p) {
-    Curl_failf(conn->data, "Bad reply from server");
-    krb4_set_command_prot(conn, save);
-    return CURLE_FTP_WEIRD_SERVER_REPLY;
-  }
-  name = p + 2;
-  for(; *p && *p != ' ' && *p != '\r' && *p != '\n'; p++);
-  *p = 0;
-
-  des_string_to_key (conn->passwd, &key);
-  des_key_sched(&key, schedule);
-
-  des_pcbc_encrypt((void *)tkt.dat, (void *)tktcopy.dat,
-                   tkt.length,
-                   schedule, &key, DES_DECRYPT);
-  if(strcmp ((char*)tktcopy.dat + 8,
-              KRB_TICKET_GRANTING_TICKET) != 0) {
-    afs_string_to_key(passwd,
-                      krb_realmofhost(conn->host.name),
-                      &key);
-    des_key_sched(&key, schedule);
-    des_pcbc_encrypt((void *)tkt.dat, (void *)tktcopy.dat,
-                     tkt.length,
-                     schedule, &key, DES_DECRYPT);
-  }
-  memset(key, 0, sizeof(key));
-  memset(schedule, 0, sizeof(schedule));
-  memset(passwd, 0, sizeof(passwd));
-  result = Curl_base64_encode(conn->data, (char *)tktcopy.dat, tktcopy.length,
-                              &p, &base64_sz);
-  if(result) {
-    Curl_failf(conn->data, "base64-encoding: %s", curl_easy_strerror(result));
-    krb4_set_command_prot(conn, save);
-    return result;
-  }
-  memset (tktcopy.dat, 0, tktcopy.length);
-
-  result = Curl_ftpsendf(conn, "SITE KAUTH %s %s", name, p);
-  free(p);
-  if(result)
-    return result;
-
-  result = Curl_GetFTPResponse(&nread, conn, NULL);
-  if(result)
-    return result;
-  krb4_set_command_prot(conn, save);
-
-  return CURLE_OK;
-}
-
-#endif /* HAVE_KRB4 */
-#endif /* CURL_DISABLE_FTP */
index 1e99c70..a0d7bb4 100644 (file)
@@ -1,8 +1,8 @@
 /* GSSAPI/krb5 support for FTP - loosely based on old krb4.c
  *
 /* GSSAPI/krb5 support for FTP - loosely based on old krb4.c
  *
- * Copyright (c) 1995, 1996, 1997, 1998, 1999 Kungliga Tekniska Högskolan
+ * Copyright (c) 1995, 1996, 1997, 1998, 1999, 2013 Kungliga Tekniska Högskolan
  * (Royal Institute of Technology, Stockholm, Sweden).
  * (Royal Institute of Technology, Stockholm, Sweden).
- * Copyright (c) 2004 - 2012 Daniel Stenberg
+ * Copyright (c) 2004 - 2014 Daniel Stenberg
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -51,7 +51,7 @@
 #include "ftp.h"
 #include "curl_gssapi.h"
 #include "sendf.h"
 #include "ftp.h"
 #include "curl_gssapi.h"
 #include "sendf.h"
-#include "krb4.h"
+#include "curl_sec.h"
 #include "curl_memory.h"
 #include "warnless.h"
 
 #include "curl_memory.h"
 #include "warnless.h"
 
@@ -121,8 +121,7 @@ krb5_overhead(void *app_data, int level, int len)
 }
 
 static int
 }
 
 static int
-krb5_encode(void *app_data, const void *from, int length, int level, void **to,
-            struct connectdata *conn UNUSED_PARAM)
+krb5_encode(void *app_data, const void *from, int length, int level, void **to)
 {
   gss_ctx_id_t *context = app_data;
   gss_buffer_desc dec, enc;
 {
   gss_ctx_id_t *context = app_data;
   gss_buffer_desc dec, enc;
@@ -130,9 +129,6 @@ krb5_encode(void *app_data, const void *from, int length, int level, void **to,
   int state;
   int len;
 
   int state;
   int len;
 
-  /* shut gcc up */
-  conn = NULL;
-
   /* NOTE that the cast is safe, neither of the krb5, gnu gss and heimdal
    * libraries modify the input buffer in gss_seal()
    */
   /* NOTE that the cast is safe, neither of the krb5, gnu gss and heimdal
    * libraries modify the input buffer in gss_seal()
    */
@@ -236,9 +232,11 @@ krb5_auth(void *app_data, struct connectdata *conn)
                                       &min,
                                       context,
                                       gssname,
                                       &min,
                                       context,
                                       gssname,
+                                      &Curl_krb5_mech_oid,
                                       &chan,
                                       gssresp,
                                       &output_buffer,
                                       &chan,
                                       gssresp,
                                       &output_buffer,
+                                      TRUE,
                                       NULL);
 
       if(gssresp) {
                                       NULL);
 
       if(gssresp) {
index 2352715..f27fa90 100644 (file)
@@ -5,7 +5,7 @@
  *                | (__| |_| |  _ <| |___
  *                 \___|\___/|_| \_\_____|
  *
  *                | (__| |_| |  _ <| |___
  *                 \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "strtok.h"
 #include "curl_ldap.h"
 #include "curl_memory.h"
 #include "strtok.h"
 #include "curl_ldap.h"
 #include "curl_memory.h"
+#include "curl_multibyte.h"
 #include "curl_base64.h"
 #include "rawstr.h"
 #include "curl_base64.h"
 #include "rawstr.h"
+#include "connect.h"
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
 /* Use our own implementation. */
 
 typedef struct {
 /* Use our own implementation. */
 
 typedef struct {
-    char   *lud_host;
-    int     lud_port;
-    char   *lud_dn;
-    char  **lud_attrs;
-    int     lud_scope;
-    char   *lud_filter;
-    char  **lud_exts;
+  char   *lud_host;
+  int     lud_port;
+#if defined(CURL_LDAP_WIN)
+  TCHAR  *lud_dn;
+  TCHAR **lud_attrs;
+#else
+  char   *lud_dn;
+  char  **lud_attrs;
+#endif
+  int     lud_scope;
+#if defined(CURL_LDAP_WIN)
+  TCHAR  *lud_filter;
+#else
+  char   *lud_filter;
+#endif
+  char  **lud_exts;
+  size_t    lud_attrs_dups; /* how many were dup'ed, this field is not in the
+                               "real" struct so can only be used in code
+                               without HAVE_LDAP_URL_PARSE defined */
 } CURL_LDAPURLDesc;
 
 #undef LDAPURLDesc
 } CURL_LDAPURLDesc;
 
 #undef LDAPURLDesc
@@ -156,7 +170,7 @@ const struct Curl_handler Curl_handler_ldaps = {
   ZERO_NULL,                            /* disconnect */
   ZERO_NULL,                            /* readwrite */
   PORT_LDAPS,                           /* defport */
   ZERO_NULL,                            /* disconnect */
   ZERO_NULL,                            /* readwrite */
   PORT_LDAPS,                           /* defport */
-  CURLPROTO_LDAP | CURLPROTO_LDAPS,     /* protocol */
+  CURLPROTO_LDAPS,                      /* protocol */
   PROTOPT_SSL                           /* flags */
 };
 #endif
   PROTOPT_SSL                           /* flags */
 };
 #endif
@@ -164,11 +178,11 @@ const struct Curl_handler Curl_handler_ldaps = {
 
 static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
 {
 
 static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
 {
-  CURLcode status = CURLE_OK;
+  CURLcode result = CURLE_OK;
   int rc = 0;
   LDAP *server = NULL;
   LDAPURLDesc *ludp = NULL;
   int rc = 0;
   LDAP *server = NULL;
   LDAPURLDesc *ludp = NULL;
-  LDAPMessage *result = NULL;
+  LDAPMessage *ldapmsg = NULL;
   LDAPMessage *entryIterator;
   int num = 0;
   struct SessionHandle *data=conn->data;
   LDAPMessage *entryIterator;
   int num = 0;
   struct SessionHandle *data=conn->data;
@@ -180,6 +194,15 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
 #ifdef LDAP_OPT_NETWORK_TIMEOUT
   struct timeval ldap_timeout = {10,0}; /* 10 sec connection/search timeout */
 #endif
 #ifdef LDAP_OPT_NETWORK_TIMEOUT
   struct timeval ldap_timeout = {10,0}; /* 10 sec connection/search timeout */
 #endif
+#if defined(CURL_LDAP_WIN)
+  TCHAR *host = NULL;
+  TCHAR *user = NULL;
+  TCHAR *passwd = NULL;
+#else
+  char *host = NULL;
+  char *user = NULL;
+  char *passwd = NULL;
+#endif
 
   *done = TRUE; /* unconditionally */
   infof(data, "LDAP local: LDAP Vendor = %s ; LDAP Version = %d\n",
 
   *done = TRUE; /* unconditionally */
   infof(data, "LDAP local: LDAP Vendor = %s ; LDAP Version = %d\n",
@@ -193,7 +216,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
 #endif
   if(rc != 0) {
     failf(data, "LDAP local: %s", ldap_err2string(rc));
 #endif
   if(rc != 0) {
     failf(data, "LDAP local: %s", ldap_err2string(rc));
-    status = CURLE_LDAP_INVALID_URL;
+    result = CURLE_LDAP_INVALID_URL;
     goto quit;
   }
 
     goto quit;
   }
 
@@ -203,6 +226,32 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
   infof(data, "LDAP local: trying to establish %s connection\n",
           ldap_ssl ? "encrypted" : "cleartext");
 
   infof(data, "LDAP local: trying to establish %s connection\n",
           ldap_ssl ? "encrypted" : "cleartext");
 
+#if defined(CURL_LDAP_WIN)
+  host = Curl_convert_UTF8_to_tchar(conn->host.name);
+  if(!host) {
+    result = CURLE_OUT_OF_MEMORY;
+
+    goto quit;
+  }
+
+  if(conn->bits.user_passwd) {
+    user = Curl_convert_UTF8_to_tchar(conn->user);
+    passwd = Curl_convert_UTF8_to_tchar(conn->passwd);
+    if(!user || !passwd) {
+      result = CURLE_OUT_OF_MEMORY;
+
+      goto quit;
+    }
+  }
+#else
+  host = conn->host.name;
+
+  if(conn->bits.user_passwd) {
+    user = conn->user;
+    passwd = conn->passwd;
+  }
+#endif
+
 #ifdef LDAP_OPT_NETWORK_TIMEOUT
   ldap_set_option(NULL, LDAP_OPT_NETWORK_TIMEOUT, &ldap_timeout);
 #endif
 #ifdef LDAP_OPT_NETWORK_TIMEOUT
   ldap_set_option(NULL, LDAP_OPT_NETWORK_TIMEOUT, &ldap_timeout);
 #endif
@@ -212,7 +261,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
 #ifdef HAVE_LDAP_SSL
 #ifdef CURL_LDAP_WIN
     /* Win32 LDAP SDK doesn't support insecure mode without CA! */
 #ifdef HAVE_LDAP_SSL
 #ifdef CURL_LDAP_WIN
     /* Win32 LDAP SDK doesn't support insecure mode without CA! */
-    server = ldap_sslinit(conn->host.name, (int)conn->port, 1);
+    server = ldap_sslinit(host, (int)conn->port, 1);
     ldap_set_option(server, LDAP_OPT_SSL, LDAP_OPT_ON);
 #else
     int ldap_option;
     ldap_set_option(server, LDAP_OPT_SSL, LDAP_OPT_ON);
 #else
     int ldap_option;
@@ -221,7 +270,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
     rc = ldapssl_client_init(NULL, NULL);
     if(rc != LDAP_SUCCESS) {
       failf(data, "LDAP local: ldapssl_client_init %s", ldap_err2string(rc));
     rc = ldapssl_client_init(NULL, NULL);
     if(rc != LDAP_SUCCESS) {
       failf(data, "LDAP local: ldapssl_client_init %s", ldap_err2string(rc));
-      status = CURLE_SSL_CERTPROBLEM;
+      result = CURLE_SSL_CERTPROBLEM;
       goto quit;
     }
     if(data->set.ssl.verifypeer) {
       goto quit;
     }
     if(data->set.ssl.verifypeer) {
@@ -233,7 +282,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
       if(!ldap_ca) {
         failf(data, "LDAP local: ERROR %s CA cert not set!",
               (cert_type == LDAPSSL_CERT_FILETYPE_DER ? "DER" : "PEM"));
       if(!ldap_ca) {
         failf(data, "LDAP local: ERROR %s CA cert not set!",
               (cert_type == LDAPSSL_CERT_FILETYPE_DER ? "DER" : "PEM"));
-        status = CURLE_SSL_CERTPROBLEM;
+        result = CURLE_SSL_CERTPROBLEM;
         goto quit;
       }
       infof(data, "LDAP local: using %s CA cert '%s'\n",
         goto quit;
       }
       infof(data, "LDAP local: using %s CA cert '%s'\n",
@@ -244,7 +293,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
         failf(data, "LDAP local: ERROR setting %s CA cert: %s",
                 (cert_type == LDAPSSL_CERT_FILETYPE_DER ? "DER" : "PEM"),
                 ldap_err2string(rc));
         failf(data, "LDAP local: ERROR setting %s CA cert: %s",
                 (cert_type == LDAPSSL_CERT_FILETYPE_DER ? "DER" : "PEM"),
                 ldap_err2string(rc));
-        status = CURLE_SSL_CERTPROBLEM;
+        result = CURLE_SSL_CERTPROBLEM;
         goto quit;
       }
       ldap_option = LDAPSSL_VERIFY_SERVER;
         goto quit;
       }
       ldap_option = LDAPSSL_VERIFY_SERVER;
@@ -255,14 +304,14 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
     if(rc != LDAP_SUCCESS) {
       failf(data, "LDAP local: ERROR setting cert verify mode: %s",
               ldap_err2string(rc));
     if(rc != LDAP_SUCCESS) {
       failf(data, "LDAP local: ERROR setting cert verify mode: %s",
               ldap_err2string(rc));
-      status = CURLE_SSL_CERTPROBLEM;
+      result = CURLE_SSL_CERTPROBLEM;
       goto quit;
     }
       goto quit;
     }
-    server = ldapssl_init(conn->host.name, (int)conn->port, 1);
+    server = ldapssl_init(host, (int)conn->port, 1);
     if(server == NULL) {
       failf(data, "LDAP local: Cannot connect to %s:%ld",
     if(server == NULL) {
       failf(data, "LDAP local: Cannot connect to %s:%ld",
-              conn->host.name, conn->port);
-      status = CURLE_COULDNT_CONNECT;
+            conn->host.dispname, conn->port);
+      result = CURLE_COULDNT_CONNECT;
       goto quit;
     }
 #elif defined(LDAP_OPT_X_TLS)
       goto quit;
     }
 #elif defined(LDAP_OPT_X_TLS)
@@ -271,12 +320,12 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
       if((data->set.str[STRING_CERT_TYPE]) &&
          (!Curl_raw_equal(data->set.str[STRING_CERT_TYPE], "PEM"))) {
         failf(data, "LDAP local: ERROR OpenLDAP only supports PEM cert-type!");
       if((data->set.str[STRING_CERT_TYPE]) &&
          (!Curl_raw_equal(data->set.str[STRING_CERT_TYPE], "PEM"))) {
         failf(data, "LDAP local: ERROR OpenLDAP only supports PEM cert-type!");
-        status = CURLE_SSL_CERTPROBLEM;
+        result = CURLE_SSL_CERTPROBLEM;
         goto quit;
       }
       if(!ldap_ca) {
         failf(data, "LDAP local: ERROR PEM CA cert not set!");
         goto quit;
       }
       if(!ldap_ca) {
         failf(data, "LDAP local: ERROR PEM CA cert not set!");
-        status = CURLE_SSL_CERTPROBLEM;
+        result = CURLE_SSL_CERTPROBLEM;
         goto quit;
       }
       infof(data, "LDAP local: using PEM CA cert: %s\n", ldap_ca);
         goto quit;
       }
       infof(data, "LDAP local: using PEM CA cert: %s\n", ldap_ca);
@@ -284,7 +333,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
       if(rc != LDAP_SUCCESS) {
         failf(data, "LDAP local: ERROR setting PEM CA cert: %s",
                 ldap_err2string(rc));
       if(rc != LDAP_SUCCESS) {
         failf(data, "LDAP local: ERROR setting PEM CA cert: %s",
                 ldap_err2string(rc));
-        status = CURLE_SSL_CERTPROBLEM;
+        result = CURLE_SSL_CERTPROBLEM;
         goto quit;
       }
       ldap_option = LDAP_OPT_X_TLS_DEMAND;
         goto quit;
       }
       ldap_option = LDAP_OPT_X_TLS_DEMAND;
@@ -296,14 +345,14 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
     if(rc != LDAP_SUCCESS) {
       failf(data, "LDAP local: ERROR setting cert verify mode: %s",
               ldap_err2string(rc));
     if(rc != LDAP_SUCCESS) {
       failf(data, "LDAP local: ERROR setting cert verify mode: %s",
               ldap_err2string(rc));
-      status = CURLE_SSL_CERTPROBLEM;
+      result = CURLE_SSL_CERTPROBLEM;
       goto quit;
     }
       goto quit;
     }
-    server = ldap_init(conn->host.name, (int)conn->port);
+    server = ldap_init(host, (int)conn->port);
     if(server == NULL) {
       failf(data, "LDAP local: Cannot connect to %s:%ld",
     if(server == NULL) {
       failf(data, "LDAP local: Cannot connect to %s:%ld",
-              conn->host.name, conn->port);
-      status = CURLE_COULDNT_CONNECT;
+            conn->host.dispname, conn->port);
+      result = CURLE_COULDNT_CONNECT;
       goto quit;
     }
     ldap_option = LDAP_OPT_X_TLS_HARD;
       goto quit;
     }
     ldap_option = LDAP_OPT_X_TLS_HARD;
@@ -311,7 +360,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
     if(rc != LDAP_SUCCESS) {
       failf(data, "LDAP local: ERROR setting SSL/TLS mode: %s",
               ldap_err2string(rc));
     if(rc != LDAP_SUCCESS) {
       failf(data, "LDAP local: ERROR setting SSL/TLS mode: %s",
               ldap_err2string(rc));
-      status = CURLE_SSL_CERTPROBLEM;
+      result = CURLE_SSL_CERTPROBLEM;
       goto quit;
     }
 /*
       goto quit;
     }
 /*
@@ -319,7 +368,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
     if(rc != LDAP_SUCCESS) {
       failf(data, "LDAP local: ERROR starting SSL/TLS mode: %s",
               ldap_err2string(rc));
     if(rc != LDAP_SUCCESS) {
       failf(data, "LDAP local: ERROR starting SSL/TLS mode: %s",
               ldap_err2string(rc));
-      status = CURLE_SSL_CERTPROBLEM;
+      result = CURLE_SSL_CERTPROBLEM;
       goto quit;
     }
 */
       goto quit;
     }
 */
@@ -328,18 +377,18 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
        should check in first place if we can support LDAP SSL/TLS */
     failf(data, "LDAP local: SSL/TLS not supported with this version "
             "of the OpenLDAP toolkit\n");
        should check in first place if we can support LDAP SSL/TLS */
     failf(data, "LDAP local: SSL/TLS not supported with this version "
             "of the OpenLDAP toolkit\n");
-    status = CURLE_SSL_CERTPROBLEM;
+    result = CURLE_SSL_CERTPROBLEM;
     goto quit;
 #endif
 #endif
 #endif /* CURL_LDAP_USE_SSL */
   }
   else {
     goto quit;
 #endif
 #endif
 #endif /* CURL_LDAP_USE_SSL */
   }
   else {
-    server = ldap_init(conn->host.name, (int)conn->port);
+    server = ldap_init(host, (int)conn->port);
     if(server == NULL) {
       failf(data, "LDAP local: Cannot connect to %s:%ld",
     if(server == NULL) {
       failf(data, "LDAP local: Cannot connect to %s:%ld",
-              conn->host.name, conn->port);
-      status = CURLE_COULDNT_CONNECT;
+            conn->host.dispname, conn->port);
+      result = CURLE_COULDNT_CONNECT;
       goto quit;
     }
   }
       goto quit;
     }
   }
@@ -347,107 +396,259 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done)
   ldap_set_option(server, LDAP_OPT_PROTOCOL_VERSION, &ldap_proto);
 #endif
 
   ldap_set_option(server, LDAP_OPT_PROTOCOL_VERSION, &ldap_proto);
 #endif
 
-  rc = ldap_simple_bind_s(server,
-                          conn->bits.user_passwd ? conn->user : NULL,
-                          conn->bits.user_passwd ? conn->passwd : NULL);
+  rc = ldap_simple_bind_s(server, user, passwd);
   if(!ldap_ssl && rc != 0) {
     ldap_proto = LDAP_VERSION2;
     ldap_set_option(server, LDAP_OPT_PROTOCOL_VERSION, &ldap_proto);
   if(!ldap_ssl && rc != 0) {
     ldap_proto = LDAP_VERSION2;
     ldap_set_option(server, LDAP_OPT_PROTOCOL_VERSION, &ldap_proto);
-    rc = ldap_simple_bind_s(server,
-                            conn->bits.user_passwd ? conn->user : NULL,
-                            conn->bits.user_passwd ? conn->passwd : NULL);
+    rc = ldap_simple_bind_s(server, user, passwd);
   }
   if(rc != 0) {
     failf(data, "LDAP local: ldap_simple_bind_s %s", ldap_err2string(rc));
   }
   if(rc != 0) {
     failf(data, "LDAP local: ldap_simple_bind_s %s", ldap_err2string(rc));
-    status = CURLE_LDAP_CANNOT_BIND;
+    result = CURLE_LDAP_CANNOT_BIND;
     goto quit;
   }
 
   rc = ldap_search_s(server, ludp->lud_dn, ludp->lud_scope,
     goto quit;
   }
 
   rc = ldap_search_s(server, ludp->lud_dn, ludp->lud_scope,
-                     ludp->lud_filter, ludp->lud_attrs, 0, &result);
+                     ludp->lud_filter, ludp->lud_attrs, 0, &ldapmsg);
 
   if(rc != 0 && rc != LDAP_SIZELIMIT_EXCEEDED) {
     failf(data, "LDAP remote: %s", ldap_err2string(rc));
 
   if(rc != 0 && rc != LDAP_SIZELIMIT_EXCEEDED) {
     failf(data, "LDAP remote: %s", ldap_err2string(rc));
-    status = CURLE_LDAP_SEARCH_FAILED;
+    result = CURLE_LDAP_SEARCH_FAILED;
     goto quit;
   }
 
     goto quit;
   }
 
-  for(num = 0, entryIterator = ldap_first_entry(server, result);
+  for(num = 0, entryIterator = ldap_first_entry(server, ldapmsg);
       entryIterator;
       entryIterator = ldap_next_entry(server, entryIterator), num++) {
     BerElement *ber = NULL;
       entryIterator;
       entryIterator = ldap_next_entry(server, entryIterator), num++) {
     BerElement *ber = NULL;
+#if defined(CURL_LDAP_WIN)
+    TCHAR *attribute;
+#else
     char  *attribute;       /*! suspicious that this isn't 'const' */
     char  *attribute;       /*! suspicious that this isn't 'const' */
-    char  *dn = ldap_get_dn(server, entryIterator);
+#endif
     int i;
 
     int i;
 
-    Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"DN: ", 4);
-    Curl_client_write(conn, CLIENTWRITE_BODY, (char *)dn, 0);
-    Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\n", 1);
+    /* Get the DN and write it to the client */
+    {
+      char *name;
+      size_t name_len;
+#if defined(CURL_LDAP_WIN)
+      TCHAR *dn = ldap_get_dn(server, entryIterator);
+      name = Curl_convert_tchar_to_UTF8(dn);
+      if(!name) {
+        ldap_memfree(dn);
+
+        result = CURLE_OUT_OF_MEMORY;
+
+        goto quit;
+      }
+#else
+      char *dn = name = ldap_get_dn(server, entryIterator);
+#endif
+      name_len = strlen(name);
+
+      result = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"DN: ", 4);
+      if(result) {
+#if defined(CURL_LDAP_WIN)
+        Curl_unicodefree(name);
+#endif
+        ldap_memfree(dn);
 
 
-    dlsize += strlen(dn)+5;
+        goto quit;
+      }
+
+      result = Curl_client_write(conn, CLIENTWRITE_BODY, (char *) name,
+                                 name_len);
+      if(result) {
+#if defined(CURL_LDAP_WIN)
+        Curl_unicodefree(name);
+#endif
+        ldap_memfree(dn);
 
 
+        goto quit;
+      }
+
+      result = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\n", 1);
+      if(result) {
+#if defined(CURL_LDAP_WIN)
+        Curl_unicodefree(name);
+#endif
+        ldap_memfree(dn);
+
+        goto quit;
+      }
+
+      dlsize += name_len + 5;
+
+#if defined(CURL_LDAP_WIN)
+      Curl_unicodefree(name);
+#endif
+      ldap_memfree(dn);
+    }
+
+    /* Get the attributes and write them to the client */
     for(attribute = ldap_first_attribute(server, entryIterator, &ber);
         attribute;
         attribute = ldap_next_attribute(server, entryIterator, ber)) {
     for(attribute = ldap_first_attribute(server, entryIterator, &ber);
         attribute;
         attribute = ldap_next_attribute(server, entryIterator, ber)) {
-      BerValue **vals = ldap_get_values_len(server, entryIterator, attribute);
+      BerValue **vals;
+      size_t attr_len;
+#if defined(CURL_LDAP_WIN)
+      char *attr = Curl_convert_tchar_to_UTF8(attribute);
+      if(!attr) {
+        if(ber)
+          ber_free(ber, 0);
+
+        result = CURLE_OUT_OF_MEMORY;
 
 
+        goto quit;
+    }
+#else
+      char *attr = attribute;
+#endif
+      attr_len = strlen(attr);
+
+      vals = ldap_get_values_len(server, entryIterator, attribute);
       if(vals != NULL) {
         for(i = 0; (vals[i] != NULL); i++) {
       if(vals != NULL) {
         for(i = 0; (vals[i] != NULL); i++) {
-          Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\t", 1);
-          Curl_client_write(conn, CLIENTWRITE_BODY, (char *) attribute, 0);
-          Curl_client_write(conn, CLIENTWRITE_BODY, (char *)": ", 2);
-          dlsize += strlen(attribute)+3;
-
-          if((strlen(attribute) > 7) &&
-              (strcmp(";binary",
-                      (char *)attribute +
-                      (strlen((char *)attribute) - 7)) == 0)) {
+          result = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\t", 1);
+          if(result) {
+            ldap_value_free_len(vals);
+#if defined(CURL_LDAP_WIN)
+            Curl_unicodefree(attr);
+#endif
+            ldap_memfree(attribute);
+            if(ber)
+              ber_free(ber, 0);
+
+            goto quit;
+          }
+
+          result = Curl_client_write(conn, CLIENTWRITE_BODY,
+                                     (char *) attr, attr_len);
+          if(result) {
+            ldap_value_free_len(vals);
+#if defined(CURL_LDAP_WIN)
+            Curl_unicodefree(attr);
+#endif
+            ldap_memfree(attribute);
+            if(ber)
+              ber_free(ber, 0);
+
+            goto quit;
+          }
+
+          result = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)": ", 2);
+          if(result) {
+            ldap_value_free_len(vals);
+#if defined(CURL_LDAP_WIN)
+            Curl_unicodefree(attr);
+#endif
+            ldap_memfree(attribute);
+            if(ber)
+              ber_free(ber, 0);
+
+            goto quit;
+          }
+
+          dlsize += attr_len + 3;
+
+          if((attr_len > 7) &&
+             (strcmp(";binary", (char *) attr + (attr_len - 7)) == 0)) {
             /* Binary attribute, encode to base64. */
             /* Binary attribute, encode to base64. */
-            CURLcode error = Curl_base64_encode(data,
-                                                vals[i]->bv_val,
-                                                vals[i]->bv_len,
-                                                &val_b64,
-                                                &val_b64_sz);
-            if(error) {
+            result = Curl_base64_encode(data,
+                                        vals[i]->bv_val,
+                                        vals[i]->bv_len,
+                                        &val_b64,
+                                        &val_b64_sz);
+            if(result) {
               ldap_value_free_len(vals);
               ldap_value_free_len(vals);
+#if defined(CURL_LDAP_WIN)
+              Curl_unicodefree(attr);
+#endif
               ldap_memfree(attribute);
               ldap_memfree(attribute);
-              ldap_memfree(dn);
               if(ber)
                 ber_free(ber, 0);
               if(ber)
                 ber_free(ber, 0);
-              status = error;
+
               goto quit;
             }
               goto quit;
             }
+
             if(val_b64_sz > 0) {
             if(val_b64_sz > 0) {
-              Curl_client_write(conn, CLIENTWRITE_BODY, val_b64, val_b64_sz);
+              result = Curl_client_write(conn, CLIENTWRITE_BODY, val_b64,
+                                         val_b64_sz);
               free(val_b64);
               free(val_b64);
+              if(result) {
+                ldap_value_free_len(vals);
+#if defined(CURL_LDAP_WIN)
+                Curl_unicodefree(attr);
+#endif
+                ldap_memfree(attribute);
+                if(ber)
+                  ber_free(ber, 0);
+
+                goto quit;
+              }
+
               dlsize += val_b64_sz;
             }
           }
           else {
               dlsize += val_b64_sz;
             }
           }
           else {
-            Curl_client_write(conn, CLIENTWRITE_BODY, vals[i]->bv_val,
-                              vals[i]->bv_len);
+            result = Curl_client_write(conn, CLIENTWRITE_BODY, vals[i]->bv_val,
+                                       vals[i]->bv_len);
+            if(result) {
+              ldap_value_free_len(vals);
+#if defined(CURL_LDAP_WIN)
+              Curl_unicodefree(attr);
+#endif
+              ldap_memfree(attribute);
+              if(ber)
+                ber_free(ber, 0);
+
+              goto quit;
+            }
+
             dlsize += vals[i]->bv_len;
           }
             dlsize += vals[i]->bv_len;
           }
-          Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\n", 0);
+
+          result = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\n", 1);
+          if(result) {
+            ldap_value_free_len(vals);
+#if defined(CURL_LDAP_WIN)
+            Curl_unicodefree(attr);
+#endif
+            ldap_memfree(attribute);
+            if(ber)
+              ber_free(ber, 0);
+
+            goto quit;
+          }
+
           dlsize++;
         }
 
         /* Free memory used to store values */
         ldap_value_free_len(vals);
       }
           dlsize++;
         }
 
         /* Free memory used to store values */
         ldap_value_free_len(vals);
       }
-      Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\n", 1);
+
+      /* Free the attribute as we are done with it */
+#if defined(CURL_LDAP_WIN)
+      Curl_unicodefree(attr);
+#endif
+      ldap_memfree(attribute);
+
+      result = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\n", 1);
+      if(result)
+        goto quit;
       dlsize++;
       Curl_pgrsSetDownloadCounter(data, dlsize);
       dlsize++;
       Curl_pgrsSetDownloadCounter(data, dlsize);
-      ldap_memfree(attribute);
     }
     }
-    ldap_memfree(dn);
+
     if(ber)
        ber_free(ber, 0);
   }
 
 quit:
     if(ber)
        ber_free(ber, 0);
   }
 
 quit:
-  if(result) {
-    ldap_msgfree(result);
+  if(ldapmsg) {
+    ldap_msgfree(ldapmsg);
     LDAP_TRACE (("Received %d entries\n", num));
   }
   if(rc == LDAP_SIZELIMIT_EXCEEDED)
     LDAP_TRACE (("Received %d entries\n", num));
   }
   if(rc == LDAP_SIZELIMIT_EXCEEDED)
@@ -461,11 +662,17 @@ quit:
     ldapssl_client_deinit();
 #endif /* HAVE_LDAP_SSL && CURL_HAS_NOVELL_LDAPSDK */
 
     ldapssl_client_deinit();
 #endif /* HAVE_LDAP_SSL && CURL_HAS_NOVELL_LDAPSDK */
 
+#if defined(CURL_LDAP_WIN)
+  Curl_unicodefree(passwd);
+  Curl_unicodefree(user);
+  Curl_unicodefree(host);
+#endif
+
   /* no data to transfer */
   Curl_setup_transfer(conn, -1, -1, FALSE, NULL, -1, NULL);
   /* no data to transfer */
   Curl_setup_transfer(conn, -1, -1, FALSE, NULL, -1, NULL);
-  conn->bits.close = TRUE;
+  connclose(conn, "LDAP connection always disable re-use");
 
 
-  return status;
+  return result;
 }
 
 #ifdef DEBUG_LDAP
 }
 
 #ifdef DEBUG_LDAP
@@ -509,61 +716,34 @@ static int str2scope (const char *p)
 
 /*
  * Split 'str' into strings separated by commas.
 
 /*
  * Split 'str' into strings separated by commas.
- * Note: res[] points into 'str'.
+ * Note: out[] points into 'str'.
  */
  */
-static char **split_str (char *str)
+static bool split_str(char *str, char ***out, size_t *count)
 {
 {
-  char **res, *lasts, *s;
-  int  i;
-
-  for(i = 2, s = strchr(str,','); s; i++)
-    s = strchr(++s,',');
+  char **res;
+  char *lasts;
+  char *s;
+  size_t  i;
+  size_t items = 1;
+
+  s = strchr(str, ',');
+  while(s) {
+    items++;
+    s = strchr(++s, ',');
+  }
 
 
-  res = calloc(i, sizeof(char*));
+  res = calloc(items, sizeof(char *));
   if(!res)
   if(!res)
-    return NULL;
+    return FALSE;
 
 
-  for(i = 0, s = strtok_r(str, ",", &lasts); s;
+  for(i = 0, s = strtok_r(str, ",", &lasts); s && i < items;
       s = strtok_r(NULL, ",", &lasts), i++)
     res[i] = s;
       s = strtok_r(NULL, ",", &lasts), i++)
     res[i] = s;
-  return res;
-}
-
-/*
- * Unescape the LDAP-URL components
- */
-static bool unescape_elements (void *data, LDAPURLDesc *ludp)
-{
-  int i;
-
-  if(ludp->lud_filter) {
-    ludp->lud_filter = curl_easy_unescape(data, ludp->lud_filter, 0, NULL);
-    if(!ludp->lud_filter)
-       return (FALSE);
-  }
 
 
-  for(i = 0; ludp->lud_attrs && ludp->lud_attrs[i]; i++) {
-    ludp->lud_attrs[i] = curl_easy_unescape(data, ludp->lud_attrs[i], 0, NULL);
-    if(!ludp->lud_attrs[i])
-      return (FALSE);
-  }
+  *out = res;
+  *count = items;
 
 
-  for(i = 0; ludp->lud_exts && ludp->lud_exts[i]; i++) {
-    ludp->lud_exts[i] = curl_easy_unescape(data, ludp->lud_exts[i], 0, NULL);
-    if(!ludp->lud_exts[i])
-      return (FALSE);
-  }
-
-  if(ludp->lud_dn) {
-    char *dn = ludp->lud_dn;
-    char *new_dn = curl_easy_unescape(data, dn, 0, NULL);
-
-    free(dn);
-    ludp->lud_dn = new_dn;
-    if(!new_dn)
-       return (FALSE);
-  }
-  return (TRUE);
+  return TRUE;
 }
 
 /*
 }
 
 /*
@@ -582,8 +762,11 @@ static bool unescape_elements (void *data, LDAPURLDesc *ludp)
  */
 static int _ldap_url_parse2 (const struct connectdata *conn, LDAPURLDesc *ludp)
 {
  */
 static int _ldap_url_parse2 (const struct connectdata *conn, LDAPURLDesc *ludp)
 {
-  char *p, *q;
-  int i;
+  int rc = LDAP_SUCCESS;
+  char *path;
+  char *p;
+  char *q;
+  size_t i;
 
   if(!conn->data ||
       !conn->data->state.path ||
 
   if(!conn->data ||
       !conn->data->state.path ||
@@ -595,85 +778,190 @@ static int _ldap_url_parse2 (const struct connectdata *conn, LDAPURLDesc *ludp)
   ludp->lud_port  = conn->remote_port;
   ludp->lud_host  = conn->host.name;
 
   ludp->lud_port  = conn->remote_port;
   ludp->lud_host  = conn->host.name;
 
-  /* parse DN (Distinguished Name).
-   */
-  ludp->lud_dn = strdup(conn->data->state.path+1);
-  if(!ludp->lud_dn)
+  /* Duplicate the path */
+  p = path = strdup(conn->data->state.path + 1);
+  if(!path)
     return LDAP_NO_MEMORY;
 
     return LDAP_NO_MEMORY;
 
-  p = strchr(ludp->lud_dn, '?');
-  LDAP_TRACE (("DN '%.*s'\n", p ? (size_t)(p-ludp->lud_dn) :
-               strlen(ludp->lud_dn), ludp->lud_dn));
+  /* Parse the DN (Distinguished Name) */
+  q = strchr(p, '?');
+  if(q)
+    *q++ = '\0';
 
 
-  if(!p)
-    goto success;
+  if(*p) {
+    char *dn = p;
+    char *unescaped;
+
+    LDAP_TRACE (("DN '%s'\n", dn));
+
+    /* Unescape the DN */
+    unescaped = curl_easy_unescape(conn->data, dn, 0, NULL);
+    if(!unescaped) {
+      rc = LDAP_NO_MEMORY;
+
+      goto quit;
+    }
+
+#if defined(CURL_LDAP_WIN)
+    /* Convert the unescaped string to a tchar */
+    ludp->lud_dn = Curl_convert_UTF8_to_tchar(unescaped);
+
+    /* Free the unescaped string as we are done with it */
+    Curl_unicodefree(unescaped);
 
 
-  *p++ = '\0';
+    if(!ludp->lud_dn) {
+      rc = LDAP_NO_MEMORY;
+
+      goto quit;
+    }
+#else
+    ludp->lud_dn = unescaped;
+#endif
+  }
 
 
-  /* parse attributes. skip "??".
-   */
+  p = q;
+  if(!p)
+    goto quit;
+
+  /* Parse the attributes. skip "??" */
   q = strchr(p, '?');
   if(q)
     *q++ = '\0';
 
   q = strchr(p, '?');
   if(q)
     *q++ = '\0';
 
-  if(*p && *p != '?') {
-    ludp->lud_attrs = split_str(p);
-    if(!ludp->lud_attrs)
-      return LDAP_NO_MEMORY;
+  if(*p) {
+    char **attributes;
+    size_t count = 0;
+
+    /* Split the string into an array of attributes */
+    if(!split_str(p, &attributes, &count)) {
+      rc = LDAP_NO_MEMORY;
+
+      goto quit;
+    }
+
+    /* Allocate our array (+1 for the NULL entry) */
+#if defined(CURL_LDAP_WIN)
+    ludp->lud_attrs = calloc(count + 1, sizeof(TCHAR *));
+#else
+    ludp->lud_attrs = calloc(count + 1, sizeof(char *));
+#endif
+    if(!ludp->lud_attrs) {
+      Curl_safefree(attributes);
+
+      rc = LDAP_NO_MEMORY;
+
+      goto quit;
+    }
+
+    for(i = 0; i < count; i++) {
+      char *unescaped;
+
+      LDAP_TRACE (("attr[%d] '%s'\n", i, attributes[i]));
+
+      /* Unescape the attribute */
+      unescaped = curl_easy_unescape(conn->data, attributes[i], 0, NULL);
+      if(!unescaped) {
+        Curl_safefree(attributes);
+
+        rc = LDAP_NO_MEMORY;
+
+        goto quit;
+      }
+
+#if defined(CURL_LDAP_WIN)
+      /* Convert the unescaped string to a tchar */
+      ludp->lud_attrs[i] = Curl_convert_UTF8_to_tchar(unescaped);
+
+      /* Free the unescaped string as we are done with it */
+      Curl_unicodefree(unescaped);
+
+      if(!ludp->lud_attrs[i]) {
+        Curl_safefree(attributes);
+
+        rc = LDAP_NO_MEMORY;
 
 
-    for(i = 0; ludp->lud_attrs[i]; i++)
-      LDAP_TRACE (("attr[%d] '%s'\n", i, ludp->lud_attrs[i]));
+        goto quit;
+      }
+#else
+      ludp->lud_attrs[i] = unescaped;
+#endif
+
+      ludp->lud_attrs_dups++;
+    }
+
+    Curl_safefree(attributes);
   }
 
   p = q;
   if(!p)
   }
 
   p = q;
   if(!p)
-    goto success;
+    goto quit;
 
 
-  /* parse scope. skip "??"
-   */
+  /* Parse the scope. skip "??" */
   q = strchr(p, '?');
   if(q)
     *q++ = '\0';
 
   q = strchr(p, '?');
   if(q)
     *q++ = '\0';
 
-  if(*p && *p != '?') {
+  if(*p) {
     ludp->lud_scope = str2scope(p);
     ludp->lud_scope = str2scope(p);
-    if(ludp->lud_scope == -1)
-      return LDAP_INVALID_SYNTAX;
+    if(ludp->lud_scope == -1) {
+      rc = LDAP_INVALID_SYNTAX;
+
+      goto quit;
+    }
     LDAP_TRACE (("scope %d\n", ludp->lud_scope));
   }
 
   p = q;
   if(!p)
     LDAP_TRACE (("scope %d\n", ludp->lud_scope));
   }
 
   p = q;
   if(!p)
-    goto success;
+    goto quit;
 
 
-  /* parse filter
-   */
+  /* Parse the filter */
   q = strchr(p, '?');
   if(q)
     *q++ = '\0';
   q = strchr(p, '?');
   if(q)
     *q++ = '\0';
-  if(!*p)
-    return LDAP_INVALID_SYNTAX;
 
 
-  ludp->lud_filter = p;
-  LDAP_TRACE (("filter '%s'\n", ludp->lud_filter));
+  if(*p) {
+    char *filter = p;
+    char *unescaped;
+
+    LDAP_TRACE (("filter '%s'\n", filter));
+
+    /* Unescape the filter */
+    unescaped = curl_easy_unescape(conn->data, filter, 0, NULL);
+    if(!unescaped) {
+      rc = LDAP_NO_MEMORY;
+
+      goto quit;
+    }
+
+#if defined(CURL_LDAP_WIN)
+    /* Convert the unescaped string to a tchar */
+    ludp->lud_filter = Curl_convert_UTF8_to_tchar(unescaped);
+
+    /* Free the unescaped string as we are done with it */
+    Curl_unicodefree(unescaped);
+
+    if(!ludp->lud_filter) {
+      rc = LDAP_NO_MEMORY;
+
+      goto quit;
+    }
+#else
+    ludp->lud_filter = unescaped;
+#endif
+  }
 
   p = q;
 
   p = q;
-  if(!p)
-    goto success;
+  if(p && !*p) {
+    rc = LDAP_INVALID_SYNTAX;
 
 
-  /* parse extensions
-   */
-  ludp->lud_exts = split_str(p);
-  if(!ludp->lud_exts)
-    return LDAP_NO_MEMORY;
+    goto quit;
+  }
 
 
-  for(i = 0; ludp->lud_exts[i]; i++)
-    LDAP_TRACE (("exts[%d] '%s'\n", i, ludp->lud_exts[i]));
+quit:
+  Curl_safefree(path);
 
 
-  success:
-  if(!unescape_elements(conn->data, ludp))
-    return LDAP_NO_MEMORY;
-  return LDAP_SUCCESS;
+  return rc;
 }
 
 static int _ldap_url_parse (const struct connectdata *conn,
 }
 
 static int _ldap_url_parse (const struct connectdata *conn,
@@ -697,7 +985,7 @@ static int _ldap_url_parse (const struct connectdata *conn,
 
 static void _ldap_free_urldesc (LDAPURLDesc *ludp)
 {
 
 static void _ldap_free_urldesc (LDAPURLDesc *ludp)
 {
-  int i;
+  size_t i;
 
   if(!ludp)
     return;
 
   if(!ludp)
     return;
@@ -709,16 +997,11 @@ static void _ldap_free_urldesc (LDAPURLDesc *ludp)
     free(ludp->lud_filter);
 
   if(ludp->lud_attrs) {
     free(ludp->lud_filter);
 
   if(ludp->lud_attrs) {
-    for(i = 0; ludp->lud_attrs[i]; i++)
+    for(i = 0; i < ludp->lud_attrs_dups; i++)
       free(ludp->lud_attrs[i]);
     free(ludp->lud_attrs);
   }
 
       free(ludp->lud_attrs[i]);
     free(ludp->lud_attrs);
   }
 
-  if(ludp->lud_exts) {
-    for(i = 0; ludp->lud_exts[i]; i++)
-      free(ludp->lud_exts[i]);
-    free(ludp->lud_exts);
-  }
   free (ludp);
 }
 #endif  /* !HAVE_LDAP_URL_PARSE */
   free (ludp);
 }
 #endif  /* !HAVE_LDAP_URL_PARSE */
index da77c22..cb60271 100644 (file)
@@ -15,7 +15,7 @@
        <string>se.haxx.curl.libcurl</string>
 
        <key>CFBundleVersion</key>
        <string>se.haxx.curl.libcurl</string>
 
        <key>CFBundleVersion</key>
-       <string>7.32.0</string>
+       <string>7.40.0</string>
 
        <key>CFBundleName</key>
        <string>libcurl</string>
 
        <key>CFBundleName</key>
        <string>libcurl</string>
@@ -27,9 +27,9 @@
        <string>????</string>
 
        <key>CFBundleShortVersionString</key>
        <string>????</string>
 
        <key>CFBundleShortVersionString</key>
-       <string>libcurl 7.32.0</string>
+       <string>libcurl 7.40.0</string>
 
        <key>CFBundleGetInfoString</key>
 
        <key>CFBundleGetInfoString</key>
-       <string>libcurl.plist 7.32.0</string>
+       <string>libcurl.plist 7.40.0</string>
 </dict>
 </plist>
 </dict>
 </plist>
index 6930e02..fd0c6d4 100644 (file)
--- a/lib/md4.c
+++ b/lib/md4.c
@@ -22,9 +22,9 @@
 
 #include "curl_setup.h"
 
 
 #include "curl_setup.h"
 
-/* NSS crypto library does not provide the MD4 hash algorithm, so that we have
- * a local implementation of it */
-#ifdef USE_NSS
+/* NSS and OS/400 crypto library do not provide the MD4 hash algorithm, so
+ * that we have a local implementation of it */
+#if defined(USE_NSS) || defined(USE_OS400CRYPTO)
 
 #include "curl_md4.h"
 #include "warnless.h"
 
 #include "curl_md4.h"
 #include "warnless.h"
@@ -279,4 +279,4 @@ void Curl_md4it(unsigned char *output, const unsigned char *input, size_t len)
   MD4Update(&ctx, input, curlx_uztoui(len));
   MD4Final(output, &ctx);
 }
   MD4Update(&ctx, input, curlx_uztoui(len));
   MD4Final(output, &ctx);
 }
-#endif /* USE_NSS */
+#endif /* defined(USE_NSS) || defined(USE_OS400CRYPTO) */
index d8344db..af39fd4 100644 (file)
--- a/lib/md5.c
+++ b/lib/md5.c
@@ -147,7 +147,7 @@ static void MD5_Update(MD5_CTX *ctx,
 
 static void MD5_Final(unsigned char digest[16], MD5_CTX *ctx)
 {
 
 static void MD5_Final(unsigned char digest[16], MD5_CTX *ctx)
 {
-  unsigned long length;
+  unsigned long length = 0;
   CryptGetHashParam(ctx->hHash, HP_HASHVAL, NULL, &length, 0);
   if(length == 16)
     CryptGetHashParam(ctx->hHash, HP_HASHVAL, digest, &length, 0);
   CryptGetHashParam(ctx->hHash, HP_HASHVAL, NULL, &length, 0);
   if(length == 16)
     CryptGetHashParam(ctx->hHash, HP_HASHVAL, digest, &length, 0);
index 7d68af8..4afa620 100644 (file)
@@ -314,7 +314,7 @@ void curl_dofree(void *ptr, int line, const char *source)
 {
   struct memdebug *mem;
 
 {
   struct memdebug *mem;
 
-  assert(ptr != NULL);
+  if(ptr) {
 
 #ifdef __INTEL_COMPILER
 #  pragma warning(push)
 
 #ifdef __INTEL_COMPILER
 #  pragma warning(push)
@@ -322,17 +322,18 @@ void curl_dofree(void *ptr, int line, const char *source)
    /* 1684: conversion from pointer to same-sized integral type */
 #endif
 
    /* 1684: conversion from pointer to same-sized integral type */
 #endif
 
-  mem = (void *)((char *)ptr - offsetof(struct memdebug, mem));
+    mem = (void *)((char *)ptr - offsetof(struct memdebug, mem));
 
 #ifdef __INTEL_COMPILER
 #  pragma warning(pop)
 #endif
 
 
 #ifdef __INTEL_COMPILER
 #  pragma warning(pop)
 #endif
 
-  /* destroy */
-  mt_free_fill(mem->mem, mem->size);
+    /* destroy */
+    mt_free_fill(mem->mem, mem->size);
 
 
-  /* free for real */
-  (Curl_cfree)(mem);
+    /* free for real */
+    (Curl_cfree)(mem);
+  }
 
   if(source)
     curl_memlog("MEM %s:%d free(%p)\n", source, line, (void *)ptr);
 
   if(source)
     curl_memlog("MEM %s:%d free(%p)\n", source, line, (void *)ptr);
index 1a9c859..0b13318 100755 (executable)
@@ -6,7 +6,7 @@
 # *                            | (__| |_| |  _ <| |___
 # *                             \___|\___/|_| \_\_____|
 # *
 # *                            | (__| |_| |  _ <| |___
 # *                             \___|\___/|_| \_\_____|
 # *
-# * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+# * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 # *
 # * This software is licensed as described in the file COPYING, which
 # * you should have received as part of this distribution. The terms
 # *
 # * This software is licensed as described in the file COPYING, which
 # * you should have received as part of this distribution. The terms
@@ -34,40 +34,143 @@ use Getopt::Std;
 use MIME::Base64;
 use LWP::UserAgent;
 use strict;
 use MIME::Base64;
 use LWP::UserAgent;
 use strict;
-use vars qw($opt_b $opt_f $opt_h $opt_i $opt_l $opt_n $opt_q $opt_t $opt_u $opt_v $opt_w);
+use vars qw($opt_b $opt_d $opt_f $opt_h $opt_i $opt_l $opt_n $opt_p $opt_q $opt_s $opt_t $opt_u $opt_v $opt_w);
+use List::Util;
+use Text::Wrap;
+my $MOD_SHA = "Digest::SHA";
+eval "require $MOD_SHA";
+if ($@) {
+  $MOD_SHA = "Digest::SHA::PurePerl";
+  eval "require $MOD_SHA";
+}
+
+my %urls = (
+  'nss' =>
+    'http://hg.mozilla.org/projects/nss/raw-file/tip/lib/ckfw/builtins/certdata.txt',
+  'central' =>
+    'http://hg.mozilla.org/mozilla-central/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt',
+  'aurora' =>
+    'http://hg.mozilla.org/releases/mozilla-aurora/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt',
+  'beta' =>
+    'http://hg.mozilla.org/releases/mozilla-beta/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt',
+  'release' =>
+    'http://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt',
+);
+
+$opt_d = 'release';
 
 
-my $url = 'http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1';
 # If the OpenSSL commandline is not in search path you can configure it here!
 my $openssl = 'openssl';
 
 # If the OpenSSL commandline is not in search path you can configure it here!
 my $openssl = 'openssl';
 
-my $version = '1.19';
+my $version = '1.25';
 
 $opt_w = 76; # default base64 encoded lines length
 
 
 $opt_w = 76; # default base64 encoded lines length
 
+# default cert types to include in the output (default is to include CAs which may issue SSL server certs)
+my $default_mozilla_trust_purposes = "SERVER_AUTH";
+my $default_mozilla_trust_levels = "TRUSTED_DELEGATOR";
+$opt_p = $default_mozilla_trust_purposes . ":" . $default_mozilla_trust_levels;
+
+my @valid_mozilla_trust_purposes = (
+  "DIGITAL_SIGNATURE",
+  "NON_REPUDIATION",
+  "KEY_ENCIPHERMENT",
+  "DATA_ENCIPHERMENT",
+  "KEY_AGREEMENT",
+  "KEY_CERT_SIGN",
+  "CRL_SIGN",
+  "SERVER_AUTH",
+  "CLIENT_AUTH",
+  "CODE_SIGNING",
+  "EMAIL_PROTECTION",
+  "IPSEC_END_SYSTEM",
+  "IPSEC_TUNNEL",
+  "IPSEC_USER",
+  "TIME_STAMPING",
+  "STEP_UP_APPROVED"
+);
+
+my @valid_mozilla_trust_levels = (
+  "TRUSTED_DELEGATOR",    # CAs
+  "NOT_TRUSTED",          # Don't trust these certs.
+  "MUST_VERIFY_TRUST",    # This explicitly tells us that it ISN'T a CA but is otherwise ok. In other words, this should tell the app to ignore any other sources that claim this is a CA.
+  "TRUSTED"               # This cert is trusted, but only for itself and not for delegates (i.e. it is not a CA).
+);
+
+my $default_signature_algorithms = $opt_s = "MD5";
+
+my @valid_signature_algorithms = (
+  "MD5",
+  "SHA1",
+  "SHA256",
+  "SHA384",
+  "SHA512"
+);
+
 $0 =~ s@.*(/|\\)@@;
 $Getopt::Std::STANDARD_HELP_VERSION = 1;
 $0 =~ s@.*(/|\\)@@;
 $Getopt::Std::STANDARD_HELP_VERSION = 1;
-getopts('bfhilnqtuvw:');
+getopts('bd:fhilnp:qs:tuvw:');
+
+if(!defined($opt_d)) {
+    # to make plain "-d" use not cause warnings, and actually still work
+    $opt_d = 'release';
+}
+
+# Use predefined URL or else custom URL specified on command line.
+my $url = ( defined( $urls{$opt_d} ) ) ? $urls{$opt_d} : $opt_d;
+
+my $curl = `curl -V`;
 
 if ($opt_i) {
   print ("=" x 78 . "\n");
 
 if ($opt_i) {
   print ("=" x 78 . "\n");
-  print "Script Version            : $version\n";
-  print "Perl Version              : $]\n";
-  print "Operating System Name     : $^O\n";
-  print "Getopt::Std.pm Version    : ${Getopt::Std::VERSION}\n";
-  print "MIME::Base64.pm Version   : ${MIME::Base64::VERSION}\n";
-  print "LWP::UserAgent.pm Version : ${LWP::UserAgent::VERSION}\n";
-  print "LWP.pm Version            : ${LWP::VERSION}\n";
+  print "Script Version                   : $version\n";
+  print "Perl Version                     : $]\n";
+  print "Operating System Name            : $^O\n";
+  print "Getopt::Std.pm Version           : ${Getopt::Std::VERSION}\n";
+  print "MIME::Base64.pm Version          : ${MIME::Base64::VERSION}\n";
+  print "LWP::UserAgent.pm Version        : ${LWP::UserAgent::VERSION}\n";
+  print "LWP.pm Version                   : ${LWP::VERSION}\n";
+  print "Digest::SHA.pm Version           : ${Digest::SHA::VERSION}\n" if ($Digest::SHA::VERSION);
+  print "Digest::SHA::PurePerl.pm Version : ${Digest::SHA::PurePerl::VERSION}\n" if ($Digest::SHA::PurePerl::VERSION);
   print ("=" x 78 . "\n");
 }
 
   print ("=" x 78 . "\n");
 }
 
+sub warning_message() {
+  if ( $opt_d =~ m/^risk$/i ) { # Long Form Warning and Exit
+    print "Warning: Use of this script may pose some risk:\n";
+    print "\n";
+    print "  1) Using http is subject to man in the middle attack of certdata content\n";
+    print "  2) Default to 'release', but more recent updates may be found in other trees\n";
+    print "  3) certdata.txt file format may change, lag time to update this script\n";
+    print "  4) Generally unwise to blindly trust CAs without manual review & verification\n";
+    print "  5) Mozilla apps use additional security checks aren't represented in certdata\n";
+    print "  6) Use of this script will make a security engineer grind his teeth and\n";
+    print "     swear at you.  ;)\n";
+    exit;
+  } else { # Short Form Warning
+    print "Warning: Use of this script may pose some risk, -d risk for more details.\n";
+  }
+}
+
 sub HELP_MESSAGE() {
 sub HELP_MESSAGE() {
-  print "Usage:\t${0} [-b] [-f] [-i] [-l] [-n] [-q] [-t] [-u] [-v] [-w<l>] [<outputfile>]\n";
+  print "Usage:\t${0} [-b] [-d<certdata>] [-f] [-i] [-l] [-n] [-p<purposes:levels>] [-q] [-s<algorithms>] [-t] [-u] [-v] [-w<l>] [<outputfile>]\n";
   print "\t-b\tbackup an existing version of ca-bundle.crt\n";
   print "\t-b\tbackup an existing version of ca-bundle.crt\n";
+  print "\t-d\tspecify Mozilla tree to pull certdata.txt or custom URL\n";
+  print "\t\t  Valid names are:\n";
+  print "\t\t    ", join( ", ", map { ( $_ =~ m/$opt_d/ ) ? "$_ (default)" : "$_" } sort keys %urls ), "\n";
   print "\t-f\tforce rebuild even if certdata.txt is current\n";
   print "\t-i\tprint version info about used modules\n";
   print "\t-l\tprint license info about certdata.txt\n";
   print "\t-n\tno download of certdata.txt (to use existing)\n";
   print "\t-f\tforce rebuild even if certdata.txt is current\n";
   print "\t-i\tprint version info about used modules\n";
   print "\t-l\tprint license info about certdata.txt\n";
   print "\t-n\tno download of certdata.txt (to use existing)\n";
+  print wrap("\t","\t\t", "-p\tlist of Mozilla trust purposes and levels for certificates to include in output. Takes the form of a comma separated list of purposes, a colon, and a comma separated list of levels. (default: $default_mozilla_trust_purposes:$default_mozilla_trust_levels)"), "\n";
+  print "\t\t  Valid purposes are:\n";
+  print wrap("\t\t    ","\t\t    ", join( ", ", "ALL", @valid_mozilla_trust_purposes ) ), "\n";
+  print "\t\t  Valid levels are:\n";
+  print wrap("\t\t    ","\t\t    ", join( ", ", "ALL", @valid_mozilla_trust_levels ) ), "\n";
   print "\t-q\tbe really quiet (no progress output at all)\n";
   print "\t-q\tbe really quiet (no progress output at all)\n";
+  print wrap("\t","\t\t", "-s\tcomma separated list of certificate signatures/hashes to output in plain text mode. (default: $default_signature_algorithms)\n");
+  print "\t\t  Valid signature algorithms are:\n";
+  print wrap("\t\t    ","\t\t    ", join( ", ", "ALL", @valid_signature_algorithms ) ), "\n";
   print "\t-t\tinclude plain text listing of certificates\n";
   print "\t-u\tunlink (remove) certdata.txt after processing\n";
   print "\t-v\tbe verbose and print out processed CAs\n";
   print "\t-t\tinclude plain text listing of certificates\n";
   print "\t-u\tunlink (remove) certdata.txt after processing\n";
   print "\t-v\tbe verbose and print out processed CAs\n";
@@ -79,8 +182,93 @@ sub VERSION_MESSAGE() {
   print "${0} version ${version} running Perl ${]} on ${^O}\n";
 }
 
   print "${0} version ${version} running Perl ${]} on ${^O}\n";
 }
 
+warning_message() unless ($opt_q || $url =~ m/^(ht|f)tps:/i );
 HELP_MESSAGE() if ($opt_h);
 
 HELP_MESSAGE() if ($opt_h);
 
+sub is_in_list($@) {
+  my $target = shift;
+
+  return defined(List::Util::first { $target eq $_ } @_);
+}
+
+# Parses $param_string as a case insensitive comma separated list with optional whitespace
+# validates that only allowed parameters are supplied
+sub parse_csv_param($$@) {
+  my $description = shift;
+  my $param_string = shift;
+  my @valid_values = @_;
+
+  my @values = map {
+    s/^\s+//;  # strip leading spaces
+    s/\s+$//;  # strip trailing spaces
+    uc $_      # return the modified string as upper case
+  } split( ',', $param_string );
+
+  # Find all values which are not in the list of valid values or "ALL"
+  my @invalid = grep { !is_in_list($_,"ALL",@valid_values) } @values;
+
+  if ( scalar(@invalid) > 0 ) {
+    # Tell the user which parameters were invalid and print the standard help message which will exit
+    print "Error: Invalid ", $description, scalar(@invalid) == 1 ? ": " : "s: ", join( ", ", map { "\"$_\"" } @invalid ), "\n";
+    HELP_MESSAGE();
+  }
+
+  @values = @valid_values if ( is_in_list("ALL",@values) );
+
+  return @values;
+}
+
+sub sha1 {
+  my $result;
+  if ($Digest::SHA::VERSION || $Digest::SHA::PurePerl::VERSION) {
+    open(FILE, $_[0]) or die "Can't open '$_[0]': $!";
+    binmode(FILE);
+    $result = $MOD_SHA->new(1)->addfile(*FILE)->hexdigest;
+    close(FILE);
+  } else {
+    # Use OpenSSL command if Perl Digest::SHA modules not available
+    $result = (split(/ |\r|\n/,`$openssl dgst -sha1 $_[0]`))[1];
+  }
+  return $result;
+}
+
+
+sub oldsha1 {
+  my $sha1 = "";
+  open(C, "<$_[0]") || return 0;
+  while(<C>) {
+    chomp;
+    if($_ =~ /^\#\# SHA1: (.*)/) {
+      $sha1 = $1;
+      last;
+    }
+  }
+  close(C);
+  return $sha1;
+}
+
+if ( $opt_p !~ m/:/ ) {
+  print "Error: Mozilla trust identifier list must include both purposes and levels\n";
+  HELP_MESSAGE();
+}
+
+(my $included_mozilla_trust_purposes_string, my $included_mozilla_trust_levels_string) = split( ':', $opt_p );
+my @included_mozilla_trust_purposes = parse_csv_param( "trust purpose", $included_mozilla_trust_purposes_string, @valid_mozilla_trust_purposes );
+my @included_mozilla_trust_levels = parse_csv_param( "trust level", $included_mozilla_trust_levels_string, @valid_mozilla_trust_levels );
+
+my @included_signature_algorithms = parse_csv_param( "signature algorithm", $opt_s, @valid_signature_algorithms );
+
+sub should_output_cert(%) {
+  my %trust_purposes_by_level = @_;
+
+  foreach my $level (@included_mozilla_trust_levels) {
+    # for each level we want to output, see if any of our desired purposes are included
+    return 1 if ( defined( List::Util::first { is_in_list( $_, @included_mozilla_trust_purposes ) } @{$trust_purposes_by_level{$level}} ) );
+  }
+
+  return 0;
+}
+
 my $crt = $ARGV[0] || 'ca-bundle.crt';
 (my $txt = $url) =~ s@(.*/|\?.*)@@g;
 
 my $crt = $ARGV[0] || 'ca-bundle.crt';
 (my $txt = $url) =~ s@(.*/|\?.*)@@g;
 
@@ -88,8 +276,26 @@ my $stdout = $crt eq '-';
 my $resp;
 my $fetched;
 
 my $resp;
 my $fetched;
 
-unless ($opt_n and -e $txt) {
-  print STDERR "Downloading '$txt' ...\n" if (!$opt_q);
+my $oldsha1 = oldsha1($crt);
+
+print STDERR "SHA1 of old file: $oldsha1\n" if (!$opt_q);
+
+print STDERR "Downloading '$txt' ...\n" if (!$opt_q);
+
+if($curl && !$opt_n) {
+  my $https = $url;
+  $https =~ s/^http:/https:/;
+  print STDERR "Get certdata over HTTPS with curl!\n" if (!$opt_q);
+  my $quiet = $opt_q ? "-s" : "";
+  my @out = `curl -w %{response_code} $quiet -O $https`;
+  if(@out && $out[0] == 200) {
+    $fetched = 1;
+  } else {
+    print STDERR "Failed downloading HTTPS with curl, trying HTTP with LWP\n" if (!$opt_q);
+  }
+}
+
+unless ($fetched || ($opt_n and -e $txt)) {
   my $ua  = new LWP::UserAgent(agent => "$0/$version");
   $ua->env_proxy();
   $resp = $ua->mirror($url, $txt);
   my $ua  = new LWP::UserAgent(agent => "$0/$version");
   $ua->env_proxy();
   $resp = $ua->mirror($url, $txt);
@@ -107,7 +313,25 @@ unless ($opt_n and -e $txt) {
   }
 }
 
   }
 }
 
-my $currentdate = scalar gmtime($fetched ? $resp->last_modified : (stat($txt))[9]);
+my $filedate = $resp ? $resp->last_modified : (stat($txt))[9];
+my $datesrc = "as of";
+if(!$filedate) {
+    # mxr.mozilla.org gave us a time, hg.mozilla.org does not!
+    $filedate = time();
+    $datesrc="downloaded on";
+}
+
+# get the hash from the download file
+my $newsha1= sha1($txt);
+
+if(!$opt_f && $oldsha1 eq $newsha1) {
+    print STDERR "Downloaded file identical to previous run\'s source file. Exiting\n";
+    exit;
+}
+
+print STDERR "SHA1 of new file: $newsha1\n";
+
+my $currentdate = scalar gmtime($filedate);
 
 my $format = $opt_t ? "plain text and " : "";
 if( $stdout ) {
 
 my $format = $opt_t ? "plain text and " : "";
 if( $stdout ) {
@@ -117,9 +341,9 @@ if( $stdout ) {
 }
 print CRT <<EOT;
 ##
 }
 print CRT <<EOT;
 ##
-## $crt -- Bundle of CA Root Certificates
+## Bundle of CA Root Certificates
 ##
 ##
-## Certificate data from Mozilla as of: ${currentdate}
+## Certificate data from Mozilla ${datesrc}: ${currentdate}
 ##
 ## This is a bundle of X.509 certificates of public Certificate Authorities
 ## (CA). These were automatically extracted from Mozilla's root certificates
 ##
 ## This is a bundle of X.509 certificates of public Certificate Authorities
 ## (CA). These were automatically extracted from Mozilla's root certificates
@@ -131,6 +355,9 @@ print CRT <<EOT;
 ## an Apache+mod_ssl webserver for SSL client authentication.
 ## Just configure this file as the SSLCACertificateFile.
 ##
 ## an Apache+mod_ssl webserver for SSL client authentication.
 ## Just configure this file as the SSLCACertificateFile.
 ##
+## Conversion done with mk-ca-bundle.pl version $version.
+## SHA1: $newsha1
+##
 
 EOT
 
 
 EOT
 
@@ -164,7 +391,7 @@ while (<TXT>) {
   if ($start_of_cert && /^CKA_LABEL UTF8 \"(.*)\"/) {
     $caname = $1;
   }
   if ($start_of_cert && /^CKA_LABEL UTF8 \"(.*)\"/) {
     $caname = $1;
   }
-  my $untrusted = 1;
+  my %trust_purposes_by_level;
   if ($start_of_cert && /^CKA_VALUE MULTILINE_OCTAL/) {
     my $data;
     while (<TXT>) {
   if ($start_of_cert && /^CKA_VALUE MULTILINE_OCTAL/) {
     my $data;
     while (<TXT>) {
@@ -181,14 +408,21 @@ while (<TXT>) {
       last if (/^CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST/);
       chomp;
     }
       last if (/^CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST/);
       chomp;
     }
-    # now scan the trust part for untrusted certs
+    # now scan the trust part to determine how we should trust this cert
     while (<TXT>) {
       last if (/^#/);
     while (<TXT>) {
       last if (/^#/);
-      if (/^CKA_TRUST_SERVER_AUTH\s+CK_TRUST\s+CKT_NSS_TRUSTED_DELEGATOR$/) {
-          $untrusted = 0;
+      if (/^CKA_TRUST_([A-Z_]+)\s+CK_TRUST\s+CKT_NSS_([A-Z_]+)\s*$/) {
+        if ( !is_in_list($1,@valid_mozilla_trust_purposes) ) {
+          print STDERR "Warning: Unrecognized trust purpose for cert: $caname. Trust purpose: $1. Trust Level: $2\n" if (!$opt_q);
+        } elsif ( !is_in_list($2,@valid_mozilla_trust_levels) ) {
+          print STDERR "Warning: Unrecognized trust level for cert: $caname. Trust purpose: $1. Trust Level: $2\n" if (!$opt_q);
+        } else {
+          push @{$trust_purposes_by_level{$2}}, $1;
+        }
       }
     }
       }
     }
-    if ($untrusted) {
+
+    if ( !should_output_cert(%trust_purposes_by_level) ) {
       $skipnum ++;
     } else {
       my $encoded = MIME::Base64::encode_base64($data, '');
       $skipnum ++;
     } else {
       my $encoded = MIME::Base64::encode_base64($data, '');
@@ -197,11 +431,34 @@ while (<TXT>) {
               . $encoded
               . "-----END CERTIFICATE-----\n";
       print CRT "\n$caname\n";
               . $encoded
               . "-----END CERTIFICATE-----\n";
       print CRT "\n$caname\n";
-      print CRT ("=" x length($caname) . "\n");
+
+      my $maxStringLength = length($caname);
+      if ($opt_t) {
+        foreach my $key (keys %trust_purposes_by_level) {
+           my $string = $key . ": " . join(", ", @{$trust_purposes_by_level{$key}});
+           $maxStringLength = List::Util::max( length($string), $maxStringLength );
+           print CRT $string . "\n";
+        }
+      }
+      print CRT ("=" x $maxStringLength . "\n");
       if (!$opt_t) {
         print CRT $pem;
       } else {
       if (!$opt_t) {
         print CRT $pem;
       } else {
-        my $pipe = "|$openssl x509 -md5 -fingerprint -text -inform PEM";
+        my $pipe = "";
+        foreach my $hash (@included_signature_algorithms) {
+          $pipe = "|$openssl x509 -" . $hash . " -fingerprint -noout -inform PEM";
+          if (!$stdout) {
+            $pipe .= " >> $crt.~";
+            close(CRT) or die "Couldn't close $crt.~: $!";
+          }
+          open(TMP, $pipe) or die "Couldn't open openssl pipe: $!";
+          print TMP $pem;
+          close(TMP) or die "Couldn't close openssl pipe: $!";
+          if (!$stdout) {
+            open(CRT, ">>$crt.~") or die "Couldn't open $crt.~: $!";
+          }
+        }
+        $pipe = "|$openssl x509 -text -inform PEM";
         if (!$stdout) {
           $pipe .= " >> $crt.~";
           close(CRT) or die "Couldn't close $crt.~: $!";
         if (!$stdout) {
           $pipe .= " >> $crt.~";
           close(CRT) or die "Couldn't close $crt.~: $!";
@@ -234,8 +491,4 @@ unless( $stdout ) {
     rename "$crt.~", $crt or die "Failed to rename $crt.~ to $crt: $!\n";
 }
 unlink $txt if ($opt_u);
     rename "$crt.~", $crt or die "Failed to rename $crt.~ to $crt: $!\n";
 }
 unlink $txt if ($opt_u);
-print STDERR "Done ($certnum CA certs processed, $skipnum untrusted skipped).\n" if (!$opt_q);
-
-exit;
-
-
+print STDERR "Done ($certnum CA certs processed, $skipnum skipped).\n" if (!$opt_q);
index d868079..2d82e7d 100755 (executable)
@@ -5,7 +5,7 @@
 '*                            | (__| |_| |  _ <| |___\r
 '*                             \___|\___/|_| \_\_____|\r
 '*\r
 '*                            | (__| |_| |  _ <| |___\r
 '*                             \___|\___/|_| \_\_____|\r
 '*\r
-'* Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.\r
+'* Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.\r
 '*\r
 '* This software is licensed as described in the file COPYING, which\r
 '* you should have received as part of this distribution. The terms\r
 '*\r
 '* This software is licensed as described in the file COPYING, which\r
 '* you should have received as part of this distribution. The terms\r
 '* Hacked by Guenter Knauf\r
 '***************************************************************************\r
 Option Explicit\r
 '* Hacked by Guenter Knauf\r
 '***************************************************************************\r
 Option Explicit\r
-Const myVersion = "0.3.8"\r
-\r
-Const myUrl = "http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1"\r
+Const myVersion = "0.3.9"\r
 \r
 \r
+Const myUrl = "http://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt"\r
 Const myOpenssl = "openssl.exe"\r
 \r
 Const myCdSavF = FALSE       ' Flag: save downloaded data to file certdata.txt\r
 Const myOpenssl = "openssl.exe"\r
 \r
 Const myCdSavF = FALSE       ' Flag: save downloaded data to file certdata.txt\r
@@ -48,7 +47,7 @@ Set objHttp = WScript.CreateObject("WinHttp.WinHttpRequest.5.1")
 If objHttp Is Nothing Then Set objHttp = WScript.CreateObject("WinHttp.WinHttpRequest")\r
 myBase = Left(WScript.ScriptFullName, InstrRev(WScript.ScriptFullName, "\"))\r
 mySelf = Left(WScript.ScriptName, InstrRev(WScript.ScriptName, ".") - 1) & " " & myVersion\r
 If objHttp Is Nothing Then Set objHttp = WScript.CreateObject("WinHttp.WinHttpRequest")\r
 myBase = Left(WScript.ScriptFullName, InstrRev(WScript.ScriptFullName, "\"))\r
 mySelf = Left(WScript.ScriptName, InstrRev(WScript.ScriptName, ".") - 1) & " " & myVersion\r
-myCdFile = Mid(myUrl, InstrRev(myUrl, "/") + 1, InstrRev(myUrl, "?") - InstrRev(myUrl, "/") - 1)\r
+myCdFile = Mid(myUrl, InstrRev(myUrl, "/") + 1)\r
 myCaFile = "ca-bundle.crt"\r
 myTmpName = InputBox("Enter output filename:", mySelf, myCaFile)\r
 If Not (myTmpName = "") Then\r
 myCaFile = "ca-bundle.crt"\r
 myTmpName = InputBox("Enter output filename:", mySelf, myCaFile)\r
 If Not (myTmpName = "") Then\r
@@ -60,8 +59,8 @@ objHttp.SetTimeouts 0, 5000, 10000, 10000
 objHttp.Open "GET", myUrl, FALSE\r
 objHttp.setRequestHeader "User-Agent", WScript.ScriptName & "/" & myVersion\r
 objHttp.Send ""\r
 objHttp.Open "GET", myUrl, FALSE\r
 objHttp.setRequestHeader "User-Agent", WScript.ScriptName & "/" & myVersion\r
 objHttp.Send ""\r
-If Not (objHttp.statusText = "OK") Then\r
-  MsgBox("Failed to download '" & myCdFile & "': " & objHttp.statusText), vbCritical, mySelf\r
+If Not (objHttp.Status = 200) Then\r
+  MsgBox("Failed to download '" & myCdFile & "': " & objHttp.Status & " - " & objHttp.StatusText), vbCritical, mySelf\r
   WScript.Quit 1\r
 End If\r
 ' Convert data from ResponseBody instead of using ResponseText because of UTF-8\r
   WScript.Quit 1\r
 End If\r
 ' Convert data from ResponseBody instead of using ResponseText because of UTF-8\r
index 8f392c7..23070a7 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1999 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1999 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #endif
 
 /*
 #endif
 
 /*
+ * Non-ANSI integer extensions
+ */
+
+#if (defined(__BORLANDC__) && (__BORLANDC__ >= 0x520)) || \
+    (defined(__WATCOMC__) && defined(__386__)) || \
+    (defined(__POCC__) && defined(_MSC_VER)) || \
+    (defined(_WIN32_WCE)) || \
+    (defined(__MINGW32__)) || \
+    (defined(_MSC_VER) && (_MSC_VER >= 900) && (_INTEGRAL_MAX_BITS >= 64))
+#  define MP_HAVE_INT_EXTENSIONS
+#endif
+
+/*
  * Max integer data types that mprintf.c is capable
  */
 
  * Max integer data types that mprintf.c is capable
  */
 
@@ -189,17 +202,27 @@ static long dprintf_DollarString(char *input, char **end)
   return 0;
 }
 
   return 0;
 }
 
-static int dprintf_IsQualifierNoDollar(char c)
+static bool dprintf_IsQualifierNoDollar(const char *fmt)
 {
 {
-  switch (c) {
+#if defined(MP_HAVE_INT_EXTENSIONS)
+  if(!strncmp(fmt, "I32", 3) || !strncmp(fmt, "I64", 3)) {
+    return TRUE;
+  }
+#endif
+
+  switch(*fmt) {
   case '-': case '+': case ' ': case '#': case '.':
   case '0': case '1': case '2': case '3': case '4':
   case '5': case '6': case '7': case '8': case '9':
   case 'h': case 'l': case 'L': case 'z': case 'q':
   case '*': case 'O':
   case '-': case '+': case ' ': case '#': case '.':
   case '0': case '1': case '2': case '3': case '4':
   case '5': case '6': case '7': case '8': case '9':
   case 'h': case 'l': case 'L': case 'z': case 'q':
   case '*': case 'O':
-    return 1; /* true */
+#if defined(MP_HAVE_INT_EXTENSIONS)
+  case 'I':
+#endif
+    return TRUE;
+
   default:
   default:
-    return 0; /* false */
+    return FALSE;
   }
 }
 
   }
 }
 
@@ -255,8 +278,20 @@ static long dprintf_Pass1(const char *format, va_stack_t *vto, char **endpos,
 
       /* Handle the flags */
 
 
       /* Handle the flags */
 
-      while(dprintf_IsQualifierNoDollar(*fmt)) {
-        switch (*fmt++) {
+      while(dprintf_IsQualifierNoDollar(fmt)) {
+#if defined(MP_HAVE_INT_EXTENSIONS)
+        if(!strncmp(fmt, "I32", 3)) {
+          flags |= FLAGS_LONG;
+          fmt += 3;
+        }
+        else if(!strncmp(fmt, "I64", 3)) {
+          flags |= FLAGS_LONGLONG;
+          fmt += 3;
+        }
+        else
+#endif
+
+        switch(*fmt++) {
         case ' ':
           flags |= FLAGS_SPACE;
           break;
         case ' ':
           flags |= FLAGS_SPACE;
           break;
@@ -296,6 +331,15 @@ static long dprintf_Pass1(const char *format, va_stack_t *vto, char **endpos,
         case 'h':
           flags |= FLAGS_SHORT;
           break;
         case 'h':
           flags |= FLAGS_SHORT;
           break;
+#if defined(MP_HAVE_INT_EXTENSIONS)
+        case 'I':
+#if (CURL_SIZEOF_CURL_OFF_T > CURL_SIZEOF_LONG)
+          flags |= FLAGS_LONGLONG;
+#else
+          flags |= FLAGS_LONG;
+#endif
+          break;
+#endif
         case 'l':
           if(flags & FLAGS_LONG)
             flags |= FLAGS_LONGLONG;
         case 'l':
           if(flags & FLAGS_LONG)
             flags |= FLAGS_LONGLONG;
@@ -760,11 +804,11 @@ static int dprintf_formatf(
             len = 0;
           }
         }
             len = 0;
           }
         }
+        else if(prec != -1)
+          len = (size_t)prec;
         else
           len = strlen(str);
 
         else
           len = strlen(str);
 
-        if(prec != -1 && (size_t) prec < len)
-          len = (size_t)prec;
         width -= (long)len;
 
         if(p->flags & FLAGS_ALT)
         width -= (long)len;
 
         if(p->flags & FLAGS_ALT)
@@ -774,7 +818,7 @@ static int dprintf_formatf(
           while(width-- > 0)
             OUTCHAR(' ');
 
           while(width-- > 0)
             OUTCHAR(' ');
 
-        while(len-- > 0)
+        while((len-- > 0) && *str)
           OUTCHAR(*str++);
         if(p->flags&FLAGS_LEFT)
           while(width-- > 0)
           OUTCHAR(*str++);
         if(p->flags&FLAGS_LEFT)
           while(width-- > 0)
index 476f058..97c9e65 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -30,6 +30,7 @@
 #include "connect.h"
 #include "progress.h"
 #include "easyif.h"
 #include "connect.h"
 #include "progress.h"
 #include "easyif.h"
+#include "share.h"
 #include "multiif.h"
 #include "sendf.h"
 #include "timeval.h"
 #include "multiif.h"
 #include "sendf.h"
 #include "timeval.h"
@@ -41,6 +42,7 @@
 #include "bundles.h"
 #include "multihandle.h"
 #include "pipeline.h"
 #include "bundles.h"
 #include "multihandle.h"
 #include "pipeline.h"
+#include "sigpipe.h"
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
@@ -68,7 +70,7 @@
   ((x) && (((struct SessionHandle *)(x))->magic == CURLEASY_MAGIC_NUMBER))
 
 static void singlesocket(struct Curl_multi *multi,
   ((x) && (((struct SessionHandle *)(x))->magic == CURLEASY_MAGIC_NUMBER))
 
 static void singlesocket(struct Curl_multi *multi,
-                         struct SessionHandle *easy);
+                         struct SessionHandle *data);
 static int update_timer(struct Curl_multi *multi);
 
 static bool isHandleAtHead(struct SessionHandle *handle,
 static int update_timer(struct Curl_multi *multi);
 
 static bool isHandleAtHead(struct SessionHandle *handle,
@@ -105,38 +107,42 @@ static const char * const statename[]={
 static void multi_freetimeout(void *a, void *b);
 
 /* always use this function to change state, to make debugging easier */
 static void multi_freetimeout(void *a, void *b);
 
 /* always use this function to change state, to make debugging easier */
-static void mstate(struct SessionHandle *easy, CURLMstate state
+static void mstate(struct SessionHandle *data, CURLMstate state
 #ifdef DEBUGBUILD
                    , int lineno
 #endif
 )
 {
 #ifdef DEBUGBUILD
                    , int lineno
 #endif
 )
 {
-#ifdef DEBUGBUILD
-  long connection_id = -5000;
+  CURLMstate oldstate = data->mstate;
+
+#if defined(DEBUGBUILD) && defined(CURL_DISABLE_VERBOSE_STRINGS)
+  (void) lineno;
 #endif
 #endif
-  CURLMstate oldstate = easy->mstate;
 
   if(oldstate == state)
     /* don't bother when the new state is the same as the old state */
     return;
 
 
   if(oldstate == state)
     /* don't bother when the new state is the same as the old state */
     return;
 
-  easy->mstate = state;
+  data->mstate = state;
 
 
-#ifdef DEBUGBUILD
-  if(easy->mstate >= CURLM_STATE_CONNECT_PEND &&
-     easy->mstate < CURLM_STATE_COMPLETED) {
-    if(easy->easy_conn)
-      connection_id = easy->easy_conn->connection_id;
+#if defined(DEBUGBUILD) && !defined(CURL_DISABLE_VERBOSE_STRINGS)
+  if(data->mstate >= CURLM_STATE_CONNECT_PEND &&
+     data->mstate < CURLM_STATE_COMPLETED) {
+    long connection_id = -5000;
 
 
-    infof(easy,
+    if(data->easy_conn)
+      connection_id = data->easy_conn->connection_id;
+
+    infof(data,
           "STATE: %s => %s handle %p; line %d (connection #%ld) \n",
           "STATE: %s => %s handle %p; line %d (connection #%ld) \n",
-          statename[oldstate], statename[easy->mstate],
-          (void *)easy, lineno, connection_id);
+          statename[oldstate], statename[data->mstate],
+          (void *)data, lineno, connection_id);
   }
 #endif
   }
 #endif
+
   if(state == CURLM_STATE_COMPLETED)
     /* changing to COMPLETED means there's one less easy handle 'alive' */
   if(state == CURLM_STATE_COMPLETED)
     /* changing to COMPLETED means there's one less easy handle 'alive' */
-    easy->multi->num_alive--;
+    data->multi->num_alive--;
 }
 
 #ifndef DEBUGBUILD
 }
 
 #ifndef DEBUGBUILD
@@ -178,11 +184,12 @@ static struct Curl_sh_entry *sh_addentry(struct curl_hash *sh,
   check = calloc(1, sizeof(struct Curl_sh_entry));
   if(!check)
     return NULL; /* major failure */
   check = calloc(1, sizeof(struct Curl_sh_entry));
   if(!check)
     return NULL; /* major failure */
+
   check->easy = data;
   check->socket = s;
 
   /* make/add new hash entry */
   check->easy = data;
   check->socket = s;
 
   /* make/add new hash entry */
-  if(NULL == Curl_hash_add(sh, (char *)&s, sizeof(curl_socket_t), check)) {
+  if(!Curl_hash_add(sh, (char *)&s, sizeof(curl_socket_t), check)) {
     free(check);
     return NULL; /* major failure */
   }
     free(check);
     return NULL; /* major failure */
   }
@@ -307,7 +314,22 @@ struct Curl_multi *Curl_multi_handle(int hashsize, /* socket hash */
   if(!multi->msglist)
     goto error;
 
   if(!multi->msglist)
     goto error;
 
+  multi->pending = Curl_llist_alloc(multi_freeamsg);
+  if(!multi->pending)
+    goto error;
+
+  /* allocate a new easy handle to use when closing cached connections */
+  multi->closure_handle = curl_easy_init();
+  if(!multi->closure_handle)
+    goto error;
+
+  multi->closure_handle->multi = multi;
+  multi->closure_handle->state.conn_cache = multi->conn_cache;
+
   multi->max_pipeline_length = 5;
   multi->max_pipeline_length = 5;
+
+  /* -1 means it not set by user, use the default value */
+  multi->maxconnects = -1;
   return (CURLM *) multi;
 
   error:
   return (CURLM *) multi;
 
   error:
@@ -318,6 +340,10 @@ struct Curl_multi *Curl_multi_handle(int hashsize, /* socket hash */
   multi->hostcache = NULL;
   Curl_conncache_destroy(multi->conn_cache);
   multi->conn_cache = NULL;
   multi->hostcache = NULL;
   Curl_conncache_destroy(multi->conn_cache);
   multi->conn_cache = NULL;
+  Curl_close(multi->closure_handle);
+  multi->closure_handle = NULL;
+  Curl_llist_destroy(multi->msglist, NULL);
+  Curl_llist_destroy(multi->pending, NULL);
 
   free(multi);
   return NULL;
 
   free(multi);
   return NULL;
@@ -329,15 +355,12 @@ CURLM *curl_multi_init(void)
                            CURL_CONNECTION_HASH_SIZE);
 }
 
                            CURL_CONNECTION_HASH_SIZE);
 }
 
-
 CURLMcode curl_multi_add_handle(CURLM *multi_handle,
                                 CURL *easy_handle)
 {
   struct curl_llist *timeoutlist;
   struct Curl_multi *multi = (struct Curl_multi *)multi_handle;
   struct SessionHandle *data = (struct SessionHandle *)easy_handle;
 CURLMcode curl_multi_add_handle(CURLM *multi_handle,
                                 CURL *easy_handle)
 {
   struct curl_llist *timeoutlist;
   struct Curl_multi *multi = (struct Curl_multi *)multi_handle;
   struct SessionHandle *data = (struct SessionHandle *)easy_handle;
-  struct SessionHandle *new_closure = NULL;
-  struct curl_hash *hostcache = NULL;
 
   /* First, make some basic checks that the CURLM handle is a good handle */
   if(!GOOD_MULTI_HANDLE(multi))
 
   /* First, make some basic checks that the CURLM handle is a good handle */
   if(!GOOD_MULTI_HANDLE(multi))
@@ -350,55 +373,19 @@ CURLMcode curl_multi_add_handle(CURLM *multi_handle,
   /* Prevent users from adding same easy handle more than once and prevent
      adding to more than one multi stack */
   if(data->multi)
   /* Prevent users from adding same easy handle more than once and prevent
      adding to more than one multi stack */
   if(data->multi)
-    /* possibly we should create a new unique error code for this condition */
-    return CURLM_BAD_EASY_HANDLE;
+    return CURLM_ADDED_ALREADY;
 
   /* Allocate and initialize timeout list for easy handle */
   timeoutlist = Curl_llist_alloc(multi_freetimeout);
   if(!timeoutlist)
     return CURLM_OUT_OF_MEMORY;
 
 
   /* Allocate and initialize timeout list for easy handle */
   timeoutlist = Curl_llist_alloc(multi_freetimeout);
   if(!timeoutlist)
     return CURLM_OUT_OF_MEMORY;
 
-  /* In case multi handle has no hostcache yet, allocate one */
-  if(!multi->hostcache) {
-    hostcache = Curl_mk_dnscache();
-    if(!hostcache) {
-      free(data);
-      Curl_llist_destroy(timeoutlist, NULL);
-      return CURLM_OUT_OF_MEMORY;
-    }
-  }
-
-  /* In case multi handle has no closure_handle yet, allocate
-     a new easy handle to use when closing cached connections */
-  if(!multi->closure_handle) {
-    new_closure = (struct SessionHandle *)curl_easy_init();
-    if(!new_closure) {
-      Curl_hash_destroy(hostcache);
-      free(data);
-      Curl_llist_destroy(timeoutlist, NULL);
-      return CURLM_OUT_OF_MEMORY;
-    }
-  }
-
   /*
   /*
-  ** No failure allowed in this function beyond this point. And
-  ** no modification of easy nor multi handle allowed before this
-  ** except for potential multi's connection cache growing which
-  ** won't be undone in this function no matter what.
-  */
-
-  /* In case a new closure handle has been initialized above, it
-     is associated now with the multi handle which lacked one. */
-  if(new_closure) {
-    multi->closure_handle = new_closure;
-    Curl_easy_addmulti(multi->closure_handle, multi_handle);
-    multi->closure_handle->state.conn_cache = multi->conn_cache;
-  }
-
-  /* In case hostcache has been allocated above,
-     it is associated now with the multi handle. */
-  if(hostcache)
-    multi->hostcache = hostcache;
+   * No failure allowed in this function beyond this point. And no
+   * modification of easy nor multi handle allowed before this except for
+   * potential multi's connection cache growing which won't be undone in this
+   * function no matter what.
+   */
 
   /* Make easy handle use timeout list initialized above */
   data->state.timeoutlist = timeoutlist;
 
   /* Make easy handle use timeout list initialized above */
   data->state.timeoutlist = timeoutlist;
@@ -428,6 +415,8 @@ CURLMcode curl_multi_add_handle(CURLM *multi_handle,
   /* Point to the multi's connection cache */
   data->state.conn_cache = multi->conn_cache;
 
   /* Point to the multi's connection cache */
   data->state.conn_cache = multi->conn_cache;
 
+  data->state.infilesize = data->set.filesize;
+
   /* This adds the new entry at the 'end' of the doubly-linked circular
      list of SessionHandle structs to try and maintain a FIFO queue so
      the pipelined requests are in order. */
   /* This adds the new entry at the 'end' of the doubly-linked circular
      list of SessionHandle structs to try and maintain a FIFO queue so
      the pipelined requests are in order. */
@@ -449,7 +438,7 @@ CURLMcode curl_multi_add_handle(CURLM *multi_handle,
   }
 
   /* make the SessionHandle refer back to this multi handle */
   }
 
   /* make the SessionHandle refer back to this multi handle */
-  Curl_easy_addmulti(data, multi_handle);
+  data->multi = multi_handle;
 
   /* Set the timeout for this handle to expire really soon so that it will
      be taken care of even when this handle is added in the midst of operation
 
   /* Set the timeout for this handle to expire really soon so that it will
      be taken care of even when this handle is added in the midst of operation
@@ -493,7 +482,7 @@ static void debug_print_sock_hash(void *p)
   struct Curl_sh_entry *sh = (struct Curl_sh_entry *)p;
 
   fprintf(stderr, " [easy %p/magic %x/socket %d]",
   struct Curl_sh_entry *sh = (struct Curl_sh_entry *)p;
 
   fprintf(stderr, " [easy %p/magic %x/socket %d]",
-          (void *)sh->easy, sh->easy->magic, (int)sh->socket);
+          (void *)sh->data, sh->data->magic, (int)sh->socket);
 }
 #endif
 
 }
 #endif
 
@@ -503,6 +492,9 @@ CURLMcode curl_multi_remove_handle(CURLM *multi_handle,
   struct Curl_multi *multi=(struct Curl_multi *)multi_handle;
   struct SessionHandle *easy = curl_handle;
   struct SessionHandle *data = easy;
   struct Curl_multi *multi=(struct Curl_multi *)multi_handle;
   struct SessionHandle *easy = curl_handle;
   struct SessionHandle *data = easy;
+  bool premature;
+  bool easy_owns_conn;
+  struct curl_llist_element *e;
 
   /* First, make some basic checks that the CURLM handle is a good handle */
   if(!GOOD_MULTI_HANDLE(multi))
 
   /* First, make some basic checks that the CURLM handle is a good handle */
   if(!GOOD_MULTI_HANDLE(multi))
@@ -512,125 +504,121 @@ CURLMcode curl_multi_remove_handle(CURLM *multi_handle,
   if(!GOOD_EASY_HANDLE(curl_handle))
     return CURLM_BAD_EASY_HANDLE;
 
   if(!GOOD_EASY_HANDLE(curl_handle))
     return CURLM_BAD_EASY_HANDLE;
 
-  if(easy) {
-    bool premature = (easy->mstate < CURLM_STATE_COMPLETED) ? TRUE : FALSE;
-    bool easy_owns_conn = (easy->easy_conn &&
-                           (easy->easy_conn->data == easy)) ?
-                           TRUE : FALSE;
-
-    /* If the 'state' is not INIT or COMPLETED, we might need to do something
-       nice to put the easy_handle in a good known state when this returns. */
-    if(premature)
-      /* this handle is "alive" so we need to count down the total number of
-         alive connections when this is removed */
-      multi->num_alive--;
-
-    if(easy->easy_conn &&
-       (easy->easy_conn->send_pipe->size +
-        easy->easy_conn->recv_pipe->size > 1) &&
-       easy->mstate > CURLM_STATE_WAITDO &&
-       easy->mstate < CURLM_STATE_COMPLETED) {
-      /* If the handle is in a pipeline and has started sending off its
-         request but not received its response yet, we need to close
-         connection. */
-      easy->easy_conn->bits.close = TRUE;
-      /* Set connection owner so that Curl_done() closes it.
-         We can sefely do this here since connection is killed. */
-      easy->easy_conn->data = easy;
-    }
+  /* Prevent users from trying to remove same easy handle more than once */
+  if(!data->multi)
+    return CURLM_OK; /* it is already removed so let's say it is fine! */
+
+
+  premature = (data->mstate < CURLM_STATE_COMPLETED) ? TRUE : FALSE;
+  easy_owns_conn = (data->easy_conn && (data->easy_conn->data == easy)) ?
+    TRUE : FALSE;
+
+  /* If the 'state' is not INIT or COMPLETED, we might need to do something
+     nice to put the easy_handle in a good known state when this returns. */
+  if(premature)
+    /* this handle is "alive" so we need to count down the total number of
+       alive connections when this is removed */
+    multi->num_alive--;
+
+  if(data->easy_conn &&
+     data->mstate > CURLM_STATE_DO &&
+     data->mstate < CURLM_STATE_COMPLETED) {
+    /* If the handle is in a pipeline and has started sending off its
+       request but not received its response yet, we need to close
+       connection. */
+    connclose(data->easy_conn, "Removed with partial response");
+    /* Set connection owner so that Curl_done() closes it.
+       We can safely do this here since connection is killed. */
+    data->easy_conn->data = easy;
+    easy_owns_conn = TRUE;
+  }
 
 
-    /* The timer must be shut down before easy->multi is set to NULL,
-       else the timenode will remain in the splay tree after
-       curl_easy_cleanup is called. */
-    Curl_expire(easy, 0);
+  /* The timer must be shut down before data->multi is set to NULL,
+     else the timenode will remain in the splay tree after
+     curl_easy_cleanup is called. */
+  Curl_expire(data, 0);
 
 
-    /* destroy the timeout list that is held in the easy handle */
-    if(data->state.timeoutlist) {
-      Curl_llist_destroy(data->state.timeoutlist, NULL);
-      data->state.timeoutlist = NULL;
-    }
+  /* destroy the timeout list that is held in the easy handle */
+  if(data->state.timeoutlist) {
+    Curl_llist_destroy(data->state.timeoutlist, NULL);
+    data->state.timeoutlist = NULL;
+  }
 
 
-    if(easy->dns.hostcachetype == HCACHE_MULTI) {
-      /* stop using the multi handle's DNS cache */
-      easy->dns.hostcache = NULL;
-      easy->dns.hostcachetype = HCACHE_NONE;
-    }
+  if(data->dns.hostcachetype == HCACHE_MULTI) {
+    /* stop using the multi handle's DNS cache */
+    data->dns.hostcache = NULL;
+    data->dns.hostcachetype = HCACHE_NONE;
+  }
 
 
-    if(easy->easy_conn) {
+  if(data->easy_conn) {
 
 
-      /* we must call Curl_done() here (if we still "own it") so that we don't
-         leave a half-baked one around */
-      if(easy_owns_conn) {
+    /* we must call Curl_done() here (if we still "own it") so that we don't
+       leave a half-baked one around */
+    if(easy_owns_conn) {
 
 
-        /* Curl_done() clears the conn->data field to lose the association
-           between the easy handle and the connection
+      /* Curl_done() clears the conn->data field to lose the association
+         between the easy handle and the connection
 
 
-           Note that this ignores the return code simply because there's
-           nothing really useful to do with it anyway! */
-        (void)Curl_done(&easy->easy_conn, easy->result, premature);
-      }
-      else
-        /* Clear connection pipelines, if Curl_done above was not called */
-        Curl_getoff_all_pipelines(easy, easy->easy_conn);
+         Note that this ignores the return code simply because there's
+         nothing really useful to do with it anyway! */
+      (void)Curl_done(&data->easy_conn, data->result, premature);
     }
     }
+    else
+      /* Clear connection pipelines, if Curl_done above was not called */
+      Curl_getoff_all_pipelines(data, data->easy_conn);
+  }
 
 
-    /* as this was using a shared connection cache we clear the pointer
-       to that since we're not part of that multi handle anymore */
-      easy->state.conn_cache = NULL;
+  Curl_wildcard_dtor(&data->wildcard);
 
 
-    /* change state without using multistate(), only to make singlesocket() do
-       what we want */
-    easy->mstate = CURLM_STATE_COMPLETED;
-    singlesocket(multi, easy); /* to let the application know what sockets
-                                  that vanish with this handle */
+  /* as this was using a shared connection cache we clear the pointer to that
+     since we're not part of that multi handle anymore */
+  data->state.conn_cache = NULL;
 
 
-    /* Remove the association between the connection and the handle */
-    if(easy->easy_conn) {
-      easy->easy_conn->data = NULL;
-      easy->easy_conn = NULL;
-    }
+  /* change state without using multistate(), only to make singlesocket() do
+     what we want */
+  data->mstate = CURLM_STATE_COMPLETED;
+  singlesocket(multi, easy); /* to let the application know what sockets that
+                                vanish with this handle */
 
 
-    Curl_easy_addmulti(easy, NULL); /* clear the association
-                                                    to this multi handle */
+  /* Remove the association between the connection and the handle */
+  if(data->easy_conn) {
+    data->easy_conn->data = NULL;
+    data->easy_conn = NULL;
+  }
 
 
-    {
-      /* make sure there's no pending message in the queue sent from this easy
-         handle */
-      struct curl_llist_element *e;
+  data->multi = NULL; /* clear the association to this multi handle */
 
 
-      for(e = multi->msglist->head; e; e = e->next) {
-        struct Curl_message *msg = e->ptr;
+  /* make sure there's no pending message in the queue sent from this easy
+     handle */
 
 
-        if(msg->extmsg.easy_handle == easy) {
-          Curl_llist_remove(multi->msglist, e, NULL);
-          /* there can only be one from this specific handle */
-          break;
-        }
-      }
-    }
+  for(e = multi->msglist->head; e; e = e->next) {
+    struct Curl_message *msg = e->ptr;
 
 
-    /* make the previous node point to our next */
-    if(easy->prev)
-      easy->prev->next = easy->next;
-    else
-      multi->easyp = easy->next; /* point to first node */
+    if(msg->extmsg.easy_handle == easy) {
+      Curl_llist_remove(multi->msglist, e, NULL);
+      /* there can only be one from this specific handle */
+      break;
+    }
+  }
 
 
-    /* make our next point to our previous node */
-    if(easy->next)
-      easy->next->prev = easy->prev;
-    else
-      multi->easylp = easy->prev; /* point to last node */
+  /* make the previous node point to our next */
+  if(data->prev)
+    data->prev->next = data->next;
+  else
+    multi->easyp = data->next; /* point to first node */
 
 
-    /* NOTE NOTE NOTE
-       We do not touch the easy handle here! */
+  /* make our next point to our previous node */
+  if(data->next)
+    data->next->prev = data->prev;
+  else
+    multi->easylp = data->prev; /* point to last node */
 
 
-    multi->num_easy--; /* one less to care about now */
+  /* NOTE NOTE NOTE
+     We do not touch the easy handle here! */
+  multi->num_easy--; /* one less to care about now */
 
 
-    update_timer(multi);
-    return CURLM_OK;
-  }
-  else
-    return CURLM_BAD_EASY_HANDLE; /* twasn't found */
+  update_timer(multi);
+  return CURLM_OK;
 }
 
 bool Curl_multi_pipeline_enabled(const struct Curl_multi *multi)
 }
 
 bool Curl_multi_pipeline_enabled(const struct Curl_multi *multi)
@@ -647,17 +635,28 @@ static int waitconnect_getsock(struct connectdata *conn,
                                curl_socket_t *sock,
                                int numsocks)
 {
                                curl_socket_t *sock,
                                int numsocks)
 {
+  int i;
+  int s=0;
+  int rc=0;
+
   if(!numsocks)
     return GETSOCK_BLANK;
 
   if(!numsocks)
     return GETSOCK_BLANK;
 
-  sock[0] = conn->sock[FIRSTSOCKET];
+  for(i=0; i<2; i++) {
+    if(conn->tempsock[i] != CURL_SOCKET_BAD) {
+      sock[s] = conn->tempsock[i];
+      rc |= GETSOCK_WRITESOCK(s++);
+    }
+  }
 
   /* when we've sent a CONNECT to a proxy, we should rather wait for the
      socket to become readable to be able to get the response headers */
 
   /* when we've sent a CONNECT to a proxy, we should rather wait for the
      socket to become readable to be able to get the response headers */
-  if(conn->tunnel_state[FIRSTSOCKET] == TUNNEL_CONNECT)
-    return GETSOCK_READSOCK(0);
+  if(conn->tunnel_state[FIRSTSOCKET] == TUNNEL_CONNECT) {
+    sock[0] = conn->sock[FIRSTSOCKET];
+    rc = GETSOCK_READSOCK(0);
+  }
 
 
-  return GETSOCK_WRITESOCK(0);
+  return rc;
 }
 
 static int domore_getsock(struct connectdata *conn,
 }
 
 static int domore_getsock(struct connectdata *conn,
@@ -670,7 +669,7 @@ static int domore_getsock(struct connectdata *conn,
 }
 
 /* returns bitmapped flags for this handle and its sockets */
 }
 
 /* returns bitmapped flags for this handle and its sockets */
-static int multi_getsock(struct SessionHandle *easy,
+static int multi_getsock(struct SessionHandle *data,
                          curl_socket_t *socks, /* points to numsocks number
                                                   of sockets */
                          int numsocks)
                          curl_socket_t *socks, /* points to numsocks number
                                                   of sockets */
                          int numsocks)
@@ -680,16 +679,16 @@ static int multi_getsock(struct SessionHandle *easy,
      happen when this is called from curl_multi_remove_handle() =>
      singlesocket() => multi_getsock().
   */
      happen when this is called from curl_multi_remove_handle() =>
      singlesocket() => multi_getsock().
   */
-  if(easy->state.pipe_broke || !easy->easy_conn)
+  if(data->state.pipe_broke || !data->easy_conn)
     return 0;
 
     return 0;
 
-  if(easy->mstate > CURLM_STATE_CONNECT &&
-     easy->mstate < CURLM_STATE_COMPLETED) {
+  if(data->mstate > CURLM_STATE_CONNECT &&
+     data->mstate < CURLM_STATE_COMPLETED) {
     /* Set up ownership correctly */
     /* Set up ownership correctly */
-    easy->easy_conn->data = easy;
+    data->easy_conn->data = data;
   }
 
   }
 
-  switch(easy->mstate) {
+  switch(data->mstate) {
   default:
 #if 0 /* switch back on these cases to get the compiler to check for all enums
          to be present */
   default:
 #if 0 /* switch back on these cases to get the compiler to check for all enums
          to be present */
@@ -707,28 +706,28 @@ static int multi_getsock(struct SessionHandle *easy,
     return 0;
 
   case CURLM_STATE_WAITRESOLVE:
     return 0;
 
   case CURLM_STATE_WAITRESOLVE:
-    return Curl_resolver_getsock(easy->easy_conn, socks, numsocks);
+    return Curl_resolver_getsock(data->easy_conn, socks, numsocks);
 
   case CURLM_STATE_PROTOCONNECT:
 
   case CURLM_STATE_PROTOCONNECT:
-    return Curl_protocol_getsock(easy->easy_conn, socks, numsocks);
+    return Curl_protocol_getsock(data->easy_conn, socks, numsocks);
 
   case CURLM_STATE_DO:
   case CURLM_STATE_DOING:
 
   case CURLM_STATE_DO:
   case CURLM_STATE_DOING:
-    return Curl_doing_getsock(easy->easy_conn, socks, numsocks);
+    return Curl_doing_getsock(data->easy_conn, socks, numsocks);
 
   case CURLM_STATE_WAITPROXYCONNECT:
   case CURLM_STATE_WAITCONNECT:
 
   case CURLM_STATE_WAITPROXYCONNECT:
   case CURLM_STATE_WAITCONNECT:
-    return waitconnect_getsock(easy->easy_conn, socks, numsocks);
+    return waitconnect_getsock(data->easy_conn, socks, numsocks);
 
   case CURLM_STATE_DO_MORE:
 
   case CURLM_STATE_DO_MORE:
-    return domore_getsock(easy->easy_conn, socks, numsocks);
+    return domore_getsock(data->easy_conn, socks, numsocks);
 
   case CURLM_STATE_DO_DONE: /* since is set after DO is completed, we switch
                                to waiting for the same as the *PERFORM
                                states */
   case CURLM_STATE_PERFORM:
   case CURLM_STATE_WAITPERFORM:
 
   case CURLM_STATE_DO_DONE: /* since is set after DO is completed, we switch
                                to waiting for the same as the *PERFORM
                                states */
   case CURLM_STATE_PERFORM:
   case CURLM_STATE_WAITPERFORM:
-    return Curl_single_getsock(easy->easy_conn, socks, numsocks);
+    return Curl_single_getsock(data->easy_conn, socks, numsocks);
   }
 
 }
   }
 
 }
@@ -741,7 +740,7 @@ CURLMcode curl_multi_fdset(CURLM *multi_handle,
      Some easy handles may not have connected to the remote host yet,
      and then we must make sure that is done. */
   struct Curl_multi *multi=(struct Curl_multi *)multi_handle;
      Some easy handles may not have connected to the remote host yet,
      and then we must make sure that is done. */
   struct Curl_multi *multi=(struct Curl_multi *)multi_handle;
-  struct SessionHandle *easy;
+  struct SessionHandle *data;
   int this_max_fd=-1;
   curl_socket_t sockbunch[MAX_SOCKSPEREASYHANDLE];
   int bitmap;
   int this_max_fd=-1;
   curl_socket_t sockbunch[MAX_SOCKSPEREASYHANDLE];
   int bitmap;
@@ -751,9 +750,9 @@ CURLMcode curl_multi_fdset(CURLM *multi_handle,
   if(!GOOD_MULTI_HANDLE(multi))
     return CURLM_BAD_HANDLE;
 
   if(!GOOD_MULTI_HANDLE(multi))
     return CURLM_BAD_HANDLE;
 
-  easy=multi->easyp;
-  while(easy) {
-    bitmap = multi_getsock(easy, sockbunch, MAX_SOCKSPEREASYHANDLE);
+  data=multi->easyp;
+  while(data) {
+    bitmap = multi_getsock(data, sockbunch, MAX_SOCKSPEREASYHANDLE);
 
     for(i=0; i< MAX_SOCKSPEREASYHANDLE; i++) {
       curl_socket_t s = CURL_SOCKET_BAD;
 
     for(i=0; i< MAX_SOCKSPEREASYHANDLE; i++) {
       curl_socket_t s = CURL_SOCKET_BAD;
@@ -775,7 +774,7 @@ CURLMcode curl_multi_fdset(CURLM *multi_handle,
       }
     }
 
       }
     }
 
-    easy = easy->next; /* check next handle */
+    data = data->next; /* check next handle */
   }
 
   *max_fd = this_max_fd;
   }
 
   *max_fd = this_max_fd;
@@ -790,7 +789,7 @@ CURLMcode curl_multi_wait(CURLM *multi_handle,
                           int *ret)
 {
   struct Curl_multi *multi=(struct Curl_multi *)multi_handle;
                           int *ret)
 {
   struct Curl_multi *multi=(struct Curl_multi *)multi_handle;
-  struct SessionHandle *easy;
+  struct SessionHandle *data;
   curl_socket_t sockbunch[MAX_SOCKSPEREASYHANDLE];
   int bitmap;
   unsigned int i;
   curl_socket_t sockbunch[MAX_SOCKSPEREASYHANDLE];
   int bitmap;
   unsigned int i;
@@ -804,15 +803,15 @@ CURLMcode curl_multi_wait(CURLM *multi_handle,
 
   /* If the internally desired timeout is actually shorter than requested from
      the outside, then use the shorter time! But only if the internal timer
 
   /* If the internally desired timeout is actually shorter than requested from
      the outside, then use the shorter time! But only if the internal timer
-     is actually larger than 0! */
+     is actually larger than -1! */
   (void)multi_timeout(multi, &timeout_internal);
   (void)multi_timeout(multi, &timeout_internal);
-  if((timeout_internal > 0) && (timeout_internal < (long)timeout_ms))
+  if((timeout_internal >= 0) && (timeout_internal < (long)timeout_ms))
     timeout_ms = (int)timeout_internal;
 
   /* Count up how many fds we have from the multi handle */
     timeout_ms = (int)timeout_internal;
 
   /* Count up how many fds we have from the multi handle */
-  easy=multi->easyp;
-  while(easy) {
-    bitmap = multi_getsock(easy, sockbunch, MAX_SOCKSPEREASYHANDLE);
+  data=multi->easyp;
+  while(data) {
+    bitmap = multi_getsock(data, sockbunch, MAX_SOCKSPEREASYHANDLE);
 
     for(i=0; i< MAX_SOCKSPEREASYHANDLE; i++) {
       curl_socket_t s = CURL_SOCKET_BAD;
 
     for(i=0; i< MAX_SOCKSPEREASYHANDLE; i++) {
       curl_socket_t s = CURL_SOCKET_BAD;
@@ -830,13 +829,13 @@ CURLMcode curl_multi_wait(CURLM *multi_handle,
       }
     }
 
       }
     }
 
-    easy = easy->next; /* check next handle */
+    data = data->next; /* check next handle */
   }
 
   curlfds = nfds; /* number of internal file descriptors */
   nfds += extra_nfds; /* add the externally provided ones */
 
   }
 
   curlfds = nfds; /* number of internal file descriptors */
   nfds += extra_nfds; /* add the externally provided ones */
 
-  if(nfds) {
+  if(nfds || extra_nfds) {
     ufds = malloc(nfds * sizeof(struct pollfd));
     if(!ufds)
       return CURLM_OUT_OF_MEMORY;
     ufds = malloc(nfds * sizeof(struct pollfd));
     if(!ufds)
       return CURLM_OUT_OF_MEMORY;
@@ -848,9 +847,9 @@ CURLMcode curl_multi_wait(CURLM *multi_handle,
 
   if(curlfds) {
     /* Add the curl handles to our pollfds first */
 
   if(curlfds) {
     /* Add the curl handles to our pollfds first */
-    easy=multi->easyp;
-    while(easy) {
-      bitmap = multi_getsock(easy, sockbunch, MAX_SOCKSPEREASYHANDLE);
+    data=multi->easyp;
+    while(data) {
+      bitmap = multi_getsock(data, sockbunch, MAX_SOCKSPEREASYHANDLE);
 
       for(i=0; i< MAX_SOCKSPEREASYHANDLE; i++) {
         curl_socket_t s = CURL_SOCKET_BAD;
 
       for(i=0; i< MAX_SOCKSPEREASYHANDLE; i++) {
         curl_socket_t s = CURL_SOCKET_BAD;
@@ -872,7 +871,7 @@ CURLMcode curl_multi_wait(CURLM *multi_handle,
         }
       }
 
         }
       }
 
-      easy = easy->next; /* check next handle */
+      data = data->next; /* check next handle */
     }
   }
 
     }
   }
 
@@ -891,6 +890,7 @@ CURLMcode curl_multi_wait(CURLM *multi_handle,
 
   if(nfds) {
     /* wait... */
 
   if(nfds) {
     /* wait... */
+    infof(data, "Curl_poll(%d ds, %d ms)\n", nfds, timeout_ms);
     i = Curl_poll(ufds, nfds, timeout_ms);
 
     if(i) {
     i = Curl_poll(ufds, nfds, timeout_ms);
 
     if(i) {
@@ -924,7 +924,7 @@ CURLMcode curl_multi_wait(CURLM *multi_handle,
 
 static CURLMcode multi_runsingle(struct Curl_multi *multi,
                                  struct timeval now,
 
 static CURLMcode multi_runsingle(struct Curl_multi *multi,
                                  struct timeval now,
-                                 struct SessionHandle *easy)
+                                 struct SessionHandle *data)
 {
   struct Curl_message *msg = NULL;
   bool connected;
 {
   struct Curl_message *msg = NULL;
   bool connected;
@@ -932,100 +932,108 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
   bool protocol_connect = FALSE;
   bool dophase_done = FALSE;
   bool done = FALSE;
   bool protocol_connect = FALSE;
   bool dophase_done = FALSE;
   bool done = FALSE;
-  CURLMcode result = CURLM_OK;
+  CURLMcode rc;
+  CURLcode result = CURLE_OK;
   struct SingleRequest *k;
   struct SingleRequest *k;
-  struct SessionHandle *data;
   long timeout_ms;
   int control;
 
   long timeout_ms;
   int control;
 
-  if(!GOOD_EASY_HANDLE(easy))
+  if(!GOOD_EASY_HANDLE(data))
     return CURLM_BAD_EASY_HANDLE;
 
     return CURLM_BAD_EASY_HANDLE;
 
-  data = easy;
-
   do {
   do {
-    /* this is a single-iteration do-while loop just to allow a
-       break to skip to the end of it */
     bool disconnect_conn = FALSE;
     bool disconnect_conn = FALSE;
+    rc = CURLM_OK;
 
     /* Handle the case when the pipe breaks, i.e., the connection
        we're using gets cleaned up and we're left with nothing. */
     if(data->state.pipe_broke) {
 
     /* Handle the case when the pipe breaks, i.e., the connection
        we're using gets cleaned up and we're left with nothing. */
     if(data->state.pipe_broke) {
-      infof(data, "Pipe broke: handle 0x%p, url = %s\n",
-            (void *)easy, data->state.path);
+      infof(data, "Pipe broke: handle %p, url = %s\n",
+            (void *)data, data->state.path);
 
 
-      if(easy->mstate < CURLM_STATE_COMPLETED) {
+      if(data->mstate < CURLM_STATE_COMPLETED) {
         /* Head back to the CONNECT state */
         /* Head back to the CONNECT state */
-        multistate(easy, CURLM_STATE_CONNECT);
-        result = CURLM_CALL_MULTI_PERFORM;
-        easy->result = CURLE_OK;
+        multistate(data, CURLM_STATE_CONNECT);
+        rc = CURLM_CALL_MULTI_PERFORM;
+        result = CURLE_OK;
       }
 
       data->state.pipe_broke = FALSE;
       }
 
       data->state.pipe_broke = FALSE;
-      easy->easy_conn = NULL;
-      break;
+      data->easy_conn = NULL;
+      continue;
     }
 
     }
 
-    if(!easy->easy_conn &&
-       easy->mstate > CURLM_STATE_CONNECT &&
-       easy->mstate < CURLM_STATE_DONE) {
-      /* In all these states, the code will blindly access 'easy->easy_conn'
+    if(!data->easy_conn &&
+       data->mstate > CURLM_STATE_CONNECT &&
+       data->mstate < CURLM_STATE_DONE) {
+      /* In all these states, the code will blindly access 'data->easy_conn'
          so this is precaution that it isn't NULL. And it silences static
          analyzers. */
          so this is precaution that it isn't NULL. And it silences static
          analyzers. */
-      failf(data, "In state %d with no easy_conn, bail out!\n", easy->mstate);
+      failf(data, "In state %d with no easy_conn, bail out!\n", data->mstate);
       return CURLM_INTERNAL_ERROR;
     }
 
       return CURLM_INTERNAL_ERROR;
     }
 
-    if(easy->easy_conn && easy->mstate > CURLM_STATE_CONNECT &&
-       easy->mstate < CURLM_STATE_COMPLETED)
+    if(data->easy_conn && data->mstate > CURLM_STATE_CONNECT &&
+       data->mstate < CURLM_STATE_COMPLETED)
       /* Make sure we set the connection's current owner */
       /* Make sure we set the connection's current owner */
-      easy->easy_conn->data = data;
+      data->easy_conn->data = data;
 
 
-    if(easy->easy_conn &&
-       (easy->mstate >= CURLM_STATE_CONNECT) &&
-       (easy->mstate < CURLM_STATE_COMPLETED)) {
+    if(data->easy_conn &&
+       (data->mstate >= CURLM_STATE_CONNECT) &&
+       (data->mstate < CURLM_STATE_COMPLETED)) {
       /* we need to wait for the connect state as only then is the start time
          stored, but we must not check already completed handles */
 
       timeout_ms = Curl_timeleft(data, &now,
       /* we need to wait for the connect state as only then is the start time
          stored, but we must not check already completed handles */
 
       timeout_ms = Curl_timeleft(data, &now,
-                                 (easy->mstate <= CURLM_STATE_WAITDO)?
+                                 (data->mstate <= CURLM_STATE_WAITDO)?
                                  TRUE:FALSE);
 
       if(timeout_ms < 0) {
         /* Handle timed out */
                                  TRUE:FALSE);
 
       if(timeout_ms < 0) {
         /* Handle timed out */
-        if(easy->mstate == CURLM_STATE_WAITRESOLVE)
+        if(data->mstate == CURLM_STATE_WAITRESOLVE)
           failf(data, "Resolving timed out after %ld milliseconds",
                 Curl_tvdiff(now, data->progress.t_startsingle));
           failf(data, "Resolving timed out after %ld milliseconds",
                 Curl_tvdiff(now, data->progress.t_startsingle));
-        else if(easy->mstate == CURLM_STATE_WAITCONNECT)
+        else if(data->mstate == CURLM_STATE_WAITCONNECT)
           failf(data, "Connection timed out after %ld milliseconds",
                 Curl_tvdiff(now, data->progress.t_startsingle));
         else {
           k = &data->req;
           failf(data, "Connection timed out after %ld milliseconds",
                 Curl_tvdiff(now, data->progress.t_startsingle));
         else {
           k = &data->req;
-          failf(data, "Operation timed out after %ld milliseconds with %"
-                FORMAT_OFF_T " out of %" FORMAT_OFF_T " bytes received",
-                Curl_tvdiff(now, data->progress.t_startsingle), k->bytecount,
-                k->size);
+          if(k->size != -1) {
+            failf(data, "Operation timed out after %ld milliseconds with %"
+                  CURL_FORMAT_CURL_OFF_T " out of %"
+                  CURL_FORMAT_CURL_OFF_T " bytes received",
+                  Curl_tvdiff(k->now, data->progress.t_startsingle),
+                  k->bytecount, k->size);
+          }
+          else {
+            failf(data, "Operation timed out after %ld milliseconds with %"
+                  CURL_FORMAT_CURL_OFF_T " bytes received",
+                  Curl_tvdiff(now, data->progress.t_startsingle),
+                  k->bytecount);
+          }
         }
 
         }
 
-        /* Force the connection closed because the server could continue to
-           send us stuff at any time. (The disconnect_conn logic used below
-           doesn't work at this point). */
-        easy->easy_conn->bits.close = TRUE;
-        easy->result = CURLE_OPERATION_TIMEDOUT;
-        multistate(easy, CURLM_STATE_COMPLETED);
-        break;
+        /* Force connection closed if the connection has indeed been used */
+        if(data->mstate > CURLM_STATE_DO) {
+          connclose(data->easy_conn, "Disconnected with pending data");
+          disconnect_conn = TRUE;
+        }
+        result = CURLE_OPERATION_TIMEDOUT;
+        /* Skip the statemachine and go directly to error handling section. */
+        goto statemachine_end;
       }
     }
 
       }
     }
 
-    switch(easy->mstate) {
+    switch(data->mstate) {
     case CURLM_STATE_INIT:
       /* init this transfer. */
     case CURLM_STATE_INIT:
       /* init this transfer. */
-      easy->result=Curl_pretransfer(data);
+      result=Curl_pretransfer(data);
 
 
-      if(CURLE_OK == easy->result) {
+      if(!result) {
         /* after init, go CONNECT */
         /* after init, go CONNECT */
-        multistate(easy, CURLM_STATE_CONNECT);
-        result = CURLM_CALL_MULTI_PERFORM;
+        multistate(data, CURLM_STATE_CONNECT);
+        Curl_pgrsTime(data, TIMER_STARTOP);
+        rc = CURLM_CALL_MULTI_PERFORM;
       }
       break;
 
       }
       break;
 
@@ -1037,41 +1045,46 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
     case CURLM_STATE_CONNECT:
       /* Connect. We want to get a connection identifier filled in. */
       Curl_pgrsTime(data, TIMER_STARTSINGLE);
     case CURLM_STATE_CONNECT:
       /* Connect. We want to get a connection identifier filled in. */
       Curl_pgrsTime(data, TIMER_STARTSINGLE);
-      easy->result = Curl_connect(data, &easy->easy_conn,
-                                  &async, &protocol_connect);
-      if(CURLE_NO_CONNECTION_AVAILABLE == easy->result) {
+      result = Curl_connect(data, &data->easy_conn,
+                            &async, &protocol_connect);
+      if(CURLE_NO_CONNECTION_AVAILABLE == result) {
         /* There was no connection available. We will go to the pending
            state and wait for an available connection. */
         /* There was no connection available. We will go to the pending
            state and wait for an available connection. */
-        multistate(easy, CURLM_STATE_CONNECT_PEND);
-        easy->result = CURLE_OK;
+        multistate(data, CURLM_STATE_CONNECT_PEND);
+
+        /* add this handle to the list of connect-pending handles */
+        if(!Curl_llist_insert_next(multi->pending, multi->pending->tail, data))
+          result = CURLE_OUT_OF_MEMORY;
+        else
+          result = CURLE_OK;
         break;
       }
 
         break;
       }
 
-      if(CURLE_OK == easy->result) {
+      if(!result) {
         /* Add this handle to the send or pend pipeline */
         /* Add this handle to the send or pend pipeline */
-        easy->result = Curl_add_handle_to_pipeline(data, easy->easy_conn);
-        if(CURLE_OK != easy->result)
+        result = Curl_add_handle_to_pipeline(data, data->easy_conn);
+        if(result)
           disconnect_conn = TRUE;
         else {
           if(async)
             /* We're now waiting for an asynchronous name lookup */
           disconnect_conn = TRUE;
         else {
           if(async)
             /* We're now waiting for an asynchronous name lookup */
-            multistate(easy, CURLM_STATE_WAITRESOLVE);
+            multistate(data, CURLM_STATE_WAITRESOLVE);
           else {
             /* after the connect has been sent off, go WAITCONNECT unless the
                protocol connect is already done and we can go directly to
                WAITDO or DO! */
           else {
             /* after the connect has been sent off, go WAITCONNECT unless the
                protocol connect is already done and we can go directly to
                WAITDO or DO! */
-            result = CURLM_CALL_MULTI_PERFORM;
+            rc = CURLM_CALL_MULTI_PERFORM;
 
             if(protocol_connect)
 
             if(protocol_connect)
-              multistate(easy, multi->pipelining_enabled?
+              multistate(data, multi->pipelining_enabled?
                          CURLM_STATE_WAITDO:CURLM_STATE_DO);
             else {
 #ifndef CURL_DISABLE_HTTP
                          CURLM_STATE_WAITDO:CURLM_STATE_DO);
             else {
 #ifndef CURL_DISABLE_HTTP
-              if(easy->easy_conn->tunnel_state[FIRSTSOCKET] == TUNNEL_CONNECT)
-                multistate(easy, CURLM_STATE_WAITPROXYCONNECT);
+              if(data->easy_conn->tunnel_state[FIRSTSOCKET] == TUNNEL_CONNECT)
+                multistate(data, CURLM_STATE_WAITPROXYCONNECT);
               else
 #endif
               else
 #endif
-                multistate(easy, CURLM_STATE_WAITCONNECT);
+                multistate(data, CURLM_STATE_WAITCONNECT);
             }
           }
         }
             }
           }
         }
@@ -1082,9 +1095,29 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
       /* awaiting an asynch name resolve to complete */
     {
       struct Curl_dns_entry *dns = NULL;
       /* awaiting an asynch name resolve to complete */
     {
       struct Curl_dns_entry *dns = NULL;
+      struct connectdata *conn = data->easy_conn;
 
       /* check if we have the name resolved by now */
 
       /* check if we have the name resolved by now */
-      easy->result = Curl_resolver_is_resolved(easy->easy_conn, &dns);
+      if(data->share)
+        Curl_share_lock(data, CURL_LOCK_DATA_DNS, CURL_LOCK_ACCESS_SINGLE);
+
+      dns = Curl_fetch_addr(conn, conn->host.name, (int)conn->port);
+
+      if(dns) {
+        dns->inuse++; /* we use it! */
+#ifdef CURLRES_ASYNCH
+        conn->async.dns = dns;
+        conn->async.done = TRUE;
+#endif
+        result = CURLE_OK;
+        infof(data, "Hostname was found in DNS cache\n");
+      }
+
+      if(data->share)
+        Curl_share_unlock(data, CURL_LOCK_DATA_DNS);
+
+      if(!dns)
+        result = Curl_resolver_is_resolved(data->easy_conn, &dns);
 
       /* Update sockets here, because the socket(s) may have been
          closed and the application thus needs to be told, even if it
 
       /* Update sockets here, because the socket(s) may have been
          closed and the application thus needs to be told, even if it
@@ -1092,36 +1125,35 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
          down.  If the name has not yet been resolved, it is likely
          that new sockets have been opened in an attempt to contact
          another resolver. */
          down.  If the name has not yet been resolved, it is likely
          that new sockets have been opened in an attempt to contact
          another resolver. */
-      singlesocket(multi, easy);
+      singlesocket(multi, data);
 
       if(dns) {
         /* Perform the next step in the connection phase, and then move on
            to the WAITCONNECT state */
 
       if(dns) {
         /* Perform the next step in the connection phase, and then move on
            to the WAITCONNECT state */
-        easy->result = Curl_async_resolved(easy->easy_conn,
-                                           &protocol_connect);
+        result = Curl_async_resolved(data->easy_conn, &protocol_connect);
 
 
-        if(CURLE_OK != easy->result)
+        if(result)
           /* if Curl_async_resolved() returns failure, the connection struct
              is already freed and gone */
           /* if Curl_async_resolved() returns failure, the connection struct
              is already freed and gone */
-          easy->easy_conn = NULL;           /* no more connection */
+          data->easy_conn = NULL;           /* no more connection */
         else {
           /* call again please so that we get the next socket setup */
         else {
           /* call again please so that we get the next socket setup */
-          result = CURLM_CALL_MULTI_PERFORM;
+          rc = CURLM_CALL_MULTI_PERFORM;
           if(protocol_connect)
           if(protocol_connect)
-            multistate(easy, multi->pipelining_enabled?
+            multistate(data, multi->pipelining_enabled?
                        CURLM_STATE_WAITDO:CURLM_STATE_DO);
           else {
 #ifndef CURL_DISABLE_HTTP
                        CURLM_STATE_WAITDO:CURLM_STATE_DO);
           else {
 #ifndef CURL_DISABLE_HTTP
-            if(easy->easy_conn->tunnel_state[FIRSTSOCKET] == TUNNEL_CONNECT)
-              multistate(easy, CURLM_STATE_WAITPROXYCONNECT);
+            if(data->easy_conn->tunnel_state[FIRSTSOCKET] == TUNNEL_CONNECT)
+              multistate(data, CURLM_STATE_WAITPROXYCONNECT);
             else
 #endif
             else
 #endif
-              multistate(easy, CURLM_STATE_WAITCONNECT);
+              multistate(data, CURLM_STATE_WAITCONNECT);
           }
         }
       }
 
           }
         }
       }
 
-      if(CURLE_OK != easy->result) {
+      if(result) {
         /* failure detected */
         disconnect_conn = TRUE;
         break;
         /* failure detected */
         disconnect_conn = TRUE;
         break;
@@ -1132,40 +1164,44 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
 #ifndef CURL_DISABLE_HTTP
     case CURLM_STATE_WAITPROXYCONNECT:
       /* this is HTTP-specific, but sending CONNECT to a proxy is HTTP... */
 #ifndef CURL_DISABLE_HTTP
     case CURLM_STATE_WAITPROXYCONNECT:
       /* this is HTTP-specific, but sending CONNECT to a proxy is HTTP... */
-      easy->result = Curl_http_connect(easy->easy_conn, &protocol_connect);
+      result = Curl_http_connect(data->easy_conn, &protocol_connect);
 
 
-      if(easy->easy_conn->bits.proxy_connect_closed) {
-        /* reset the error buffer */
-        if(data->set.errorbuffer)
-          data->set.errorbuffer[0] = '\0';
-        data->state.errorbuf = FALSE;
-
-        easy->result = CURLE_OK;
-        result = CURLM_CALL_MULTI_PERFORM;
-        multistate(easy, CURLM_STATE_CONNECT);
+      if(data->easy_conn->bits.proxy_connect_closed) {
+        /* connect back to proxy again */
+        result = CURLE_OK;
+        rc = CURLM_CALL_MULTI_PERFORM;
+        multistate(data, CURLM_STATE_CONNECT);
       }
       }
-      else if(CURLE_OK == easy->result) {
-        if(easy->easy_conn->tunnel_state[FIRSTSOCKET] == TUNNEL_COMPLETE)
-          multistate(easy, CURLM_STATE_WAITCONNECT);
+      else if(!result) {
+        if(data->easy_conn->tunnel_state[FIRSTSOCKET] == TUNNEL_COMPLETE)
+          multistate(data, CURLM_STATE_WAITCONNECT);
       }
       break;
 #endif
 
     case CURLM_STATE_WAITCONNECT:
       /* awaiting a completion of an asynch connect */
       }
       break;
 #endif
 
     case CURLM_STATE_WAITCONNECT:
       /* awaiting a completion of an asynch connect */
-      easy->result = Curl_is_connected(easy->easy_conn,
-                                       FIRSTSOCKET,
-                                       &connected);
+      result = Curl_is_connected(data->easy_conn,
+                                 FIRSTSOCKET,
+                                 &connected);
       if(connected) {
 
       if(connected) {
 
-        if(!easy->result)
+        if(!result)
           /* if everything is still fine we do the protocol-specific connect
              setup */
           /* if everything is still fine we do the protocol-specific connect
              setup */
-          easy->result = Curl_protocol_connect(easy->easy_conn,
-                                               &protocol_connect);
+          result = Curl_protocol_connect(data->easy_conn,
+                                         &protocol_connect);
       }
 
       }
 
-      if(CURLE_OK != easy->result) {
+      if(data->easy_conn->bits.proxy_connect_closed) {
+        /* connect back to proxy again since it was closed in a proxy CONNECT
+           setup */
+        result = CURLE_OK;
+        rc = CURLM_CALL_MULTI_PERFORM;
+        multistate(data, CURLM_STATE_CONNECT);
+        break;
+      }
+      else if(result) {
         /* failure detected */
         /* Just break, the cleaning up is handled all in one place */
         disconnect_conn = TRUE;
         /* failure detected */
         /* Just break, the cleaning up is handled all in one place */
         disconnect_conn = TRUE;
@@ -1180,36 +1216,35 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
              BUT if we are using a proxy we must change to WAITPROXYCONNECT
           */
 #ifndef CURL_DISABLE_HTTP
              BUT if we are using a proxy we must change to WAITPROXYCONNECT
           */
 #ifndef CURL_DISABLE_HTTP
-          if(easy->easy_conn->tunnel_state[FIRSTSOCKET] == TUNNEL_CONNECT)
-            multistate(easy, CURLM_STATE_WAITPROXYCONNECT);
+          if(data->easy_conn->tunnel_state[FIRSTSOCKET] == TUNNEL_CONNECT)
+            multistate(data, CURLM_STATE_WAITPROXYCONNECT);
           else
 #endif
           else
 #endif
-            multistate(easy, CURLM_STATE_PROTOCONNECT);
+            multistate(data, CURLM_STATE_PROTOCONNECT);
 
         }
         else
           /* after the connect has completed, go WAITDO or DO */
 
         }
         else
           /* after the connect has completed, go WAITDO or DO */
-          multistate(easy, multi->pipelining_enabled?
+          multistate(data, multi->pipelining_enabled?
                      CURLM_STATE_WAITDO:CURLM_STATE_DO);
 
                      CURLM_STATE_WAITDO:CURLM_STATE_DO);
 
-        result = CURLM_CALL_MULTI_PERFORM;
+        rc = CURLM_CALL_MULTI_PERFORM;
       }
       break;
 
     case CURLM_STATE_PROTOCONNECT:
       /* protocol-specific connect phase */
       }
       break;
 
     case CURLM_STATE_PROTOCONNECT:
       /* protocol-specific connect phase */
-      easy->result = Curl_protocol_connecting(easy->easy_conn,
-                                              &protocol_connect);
-      if((easy->result == CURLE_OK) && protocol_connect) {
+      result = Curl_protocol_connecting(data->easy_conn, &protocol_connect);
+      if(!result && protocol_connect) {
         /* after the connect has completed, go WAITDO or DO */
         /* after the connect has completed, go WAITDO or DO */
-        multistate(easy, multi->pipelining_enabled?
+        multistate(data, multi->pipelining_enabled?
                    CURLM_STATE_WAITDO:CURLM_STATE_DO);
                    CURLM_STATE_WAITDO:CURLM_STATE_DO);
-        result = CURLM_CALL_MULTI_PERFORM;
+        rc = CURLM_CALL_MULTI_PERFORM;
       }
       }
-      else if(easy->result) {
+      else if(result) {
         /* failure detected */
         Curl_posttransfer(data);
         /* failure detected */
         Curl_posttransfer(data);
-        Curl_done(&easy->easy_conn, easy->result, TRUE);
+        Curl_done(&data->easy_conn, result, TRUE);
         disconnect_conn = TRUE;
       }
       break;
         disconnect_conn = TRUE;
       }
       break;
@@ -1218,70 +1253,70 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
       /* Wait for our turn to DO when we're pipelining requests */
 #ifdef DEBUGBUILD
       infof(data, "WAITDO: Conn %ld send pipe %zu inuse %s athead %s\n",
       /* Wait for our turn to DO when we're pipelining requests */
 #ifdef DEBUGBUILD
       infof(data, "WAITDO: Conn %ld send pipe %zu inuse %s athead %s\n",
-            easy->easy_conn->connection_id,
-            easy->easy_conn->send_pipe->size,
-            easy->easy_conn->writechannel_inuse?"TRUE":"FALSE",
+            data->easy_conn->connection_id,
+            data->easy_conn->send_pipe->size,
+            data->easy_conn->writechannel_inuse?"TRUE":"FALSE",
             isHandleAtHead(data,
             isHandleAtHead(data,
-                           easy->easy_conn->send_pipe)?"TRUE":"FALSE");
+                           data->easy_conn->send_pipe)?"TRUE":"FALSE");
 #endif
 #endif
-      if(!easy->easy_conn->writechannel_inuse &&
+      if(!data->easy_conn->writechannel_inuse &&
          isHandleAtHead(data,
          isHandleAtHead(data,
-                        easy->easy_conn->send_pipe)) {
+                        data->easy_conn->send_pipe)) {
         /* Grab the channel */
         /* Grab the channel */
-        easy->easy_conn->writechannel_inuse = TRUE;
-        multistate(easy, CURLM_STATE_DO);
-        result = CURLM_CALL_MULTI_PERFORM;
+        data->easy_conn->writechannel_inuse = TRUE;
+        multistate(data, CURLM_STATE_DO);
+        rc = CURLM_CALL_MULTI_PERFORM;
       }
       break;
 
     case CURLM_STATE_DO:
       if(data->set.connect_only) {
         /* keep connection open for application to use the socket */
       }
       break;
 
     case CURLM_STATE_DO:
       if(data->set.connect_only) {
         /* keep connection open for application to use the socket */
-        easy->easy_conn->bits.close = FALSE;
-        multistate(easy, CURLM_STATE_DONE);
-        easy->result = CURLE_OK;
-        result = CURLM_CALL_MULTI_PERFORM;
+        connkeep(data->easy_conn, "CONNECT_ONLY");
+        multistate(data, CURLM_STATE_DONE);
+        result = CURLE_OK;
+        rc = CURLM_CALL_MULTI_PERFORM;
       }
       else {
         /* Perform the protocol's DO action */
       }
       else {
         /* Perform the protocol's DO action */
-        easy->result = Curl_do(&easy->easy_conn, &dophase_done);
+        result = Curl_do(&data->easy_conn, &dophase_done);
 
 
-        /* When Curl_do() returns failure, easy->easy_conn might be NULL! */
+        /* When Curl_do() returns failure, data->easy_conn might be NULL! */
 
 
-        if(CURLE_OK == easy->result) {
+        if(!result) {
           if(!dophase_done) {
             /* some steps needed for wildcard matching */
             if(data->set.wildcardmatch) {
               struct WildcardData *wc = &data->wildcard;
               if(wc->state == CURLWC_DONE || wc->state == CURLWC_SKIP) {
                 /* skip some states if it is important */
           if(!dophase_done) {
             /* some steps needed for wildcard matching */
             if(data->set.wildcardmatch) {
               struct WildcardData *wc = &data->wildcard;
               if(wc->state == CURLWC_DONE || wc->state == CURLWC_SKIP) {
                 /* skip some states if it is important */
-                Curl_done(&easy->easy_conn, CURLE_OK, FALSE);
-                multistate(easy, CURLM_STATE_DONE);
-                result = CURLM_CALL_MULTI_PERFORM;
+                Curl_done(&data->easy_conn, CURLE_OK, FALSE);
+                multistate(data, CURLM_STATE_DONE);
+                rc = CURLM_CALL_MULTI_PERFORM;
                 break;
               }
             }
             /* DO was not completed in one function call, we must continue
                DOING... */
                 break;
               }
             }
             /* DO was not completed in one function call, we must continue
                DOING... */
-            multistate(easy, CURLM_STATE_DOING);
-            result = CURLM_OK;
+            multistate(data, CURLM_STATE_DOING);
+            rc = CURLM_OK;
           }
 
           /* after DO, go DO_DONE... or DO_MORE */
           }
 
           /* after DO, go DO_DONE... or DO_MORE */
-          else if(easy->easy_conn->bits.do_more) {
+          else if(data->easy_conn->bits.do_more) {
             /* we're supposed to do more, but we need to sit down, relax
                and wait a little while first */
             /* we're supposed to do more, but we need to sit down, relax
                and wait a little while first */
-            multistate(easy, CURLM_STATE_DO_MORE);
-            result = CURLM_OK;
+            multistate(data, CURLM_STATE_DO_MORE);
+            rc = CURLM_OK;
           }
           else {
             /* we're done with the DO, now DO_DONE */
           }
           else {
             /* we're done with the DO, now DO_DONE */
-            multistate(easy, CURLM_STATE_DO_DONE);
-            result = CURLM_CALL_MULTI_PERFORM;
+            multistate(data, CURLM_STATE_DO_DONE);
+            rc = CURLM_CALL_MULTI_PERFORM;
           }
         }
           }
         }
-        else if((CURLE_SEND_ERROR == easy->result) &&
-                easy->easy_conn->bits.reuse) {
+        else if((CURLE_SEND_ERROR == result) &&
+                data->easy_conn->bits.reuse) {
           /*
            * In this situation, a connection that we were trying to use
            * may have unexpectedly died.  If possible, send the connection
           /*
            * In this situation, a connection that we were trying to use
            * may have unexpectedly died.  If possible, send the connection
@@ -1292,51 +1327,52 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
           CURLcode drc;
           bool retry = FALSE;
 
           CURLcode drc;
           bool retry = FALSE;
 
-          drc = Curl_retry_request(easy->easy_conn, &newurl);
+          drc = Curl_retry_request(data->easy_conn, &newurl);
           if(drc) {
             /* a failure here pretty much implies an out of memory */
           if(drc) {
             /* a failure here pretty much implies an out of memory */
-            easy->result = drc;
+            result = drc;
             disconnect_conn = TRUE;
           }
           else
             retry = (newurl)?TRUE:FALSE;
 
           Curl_posttransfer(data);
             disconnect_conn = TRUE;
           }
           else
             retry = (newurl)?TRUE:FALSE;
 
           Curl_posttransfer(data);
-          drc = Curl_done(&easy->easy_conn, easy->result, FALSE);
+          drc = Curl_done(&data->easy_conn, result, FALSE);
 
           /* When set to retry the connection, we must to go back to
            * the CONNECT state */
           if(retry) {
 
           /* When set to retry the connection, we must to go back to
            * the CONNECT state */
           if(retry) {
-            if((drc == CURLE_OK) || (drc == CURLE_SEND_ERROR)) {
+            if(!drc || (drc == CURLE_SEND_ERROR)) {
               follow = FOLLOW_RETRY;
               drc = Curl_follow(data, newurl, follow);
               follow = FOLLOW_RETRY;
               drc = Curl_follow(data, newurl, follow);
-              if(drc == CURLE_OK) {
-                multistate(easy, CURLM_STATE_CONNECT);
-                result = CURLM_CALL_MULTI_PERFORM;
-                easy->result = CURLE_OK;
+              if(!drc) {
+                multistate(data, CURLM_STATE_CONNECT);
+                rc = CURLM_CALL_MULTI_PERFORM;
+                result = CURLE_OK;
               }
               else {
                 /* Follow failed */
               }
               else {
                 /* Follow failed */
-                easy->result = drc;
+                result = drc;
                 free(newurl);
               }
             }
             else {
               /* done didn't return OK or SEND_ERROR */
                 free(newurl);
               }
             }
             else {
               /* done didn't return OK or SEND_ERROR */
-              easy->result = drc;
+              result = drc;
               free(newurl);
             }
           }
           else {
             /* Have error handler disconnect conn if we can't retry */
             disconnect_conn = TRUE;
               free(newurl);
             }
           }
           else {
             /* Have error handler disconnect conn if we can't retry */
             disconnect_conn = TRUE;
+            free(newurl);
           }
         }
         else {
           /* failure detected */
           Curl_posttransfer(data);
           }
         }
         else {
           /* failure detected */
           Curl_posttransfer(data);
-          if(easy->easy_conn)
-            Curl_done(&easy->easy_conn, easy->result, FALSE);
+          if(data->easy_conn)
+            Curl_done(&data->easy_conn, result, FALSE);
           disconnect_conn = TRUE;
         }
       }
           disconnect_conn = TRUE;
         }
       }
@@ -1344,21 +1380,21 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
 
     case CURLM_STATE_DOING:
       /* we continue DOING until the DO phase is complete */
 
     case CURLM_STATE_DOING:
       /* we continue DOING until the DO phase is complete */
-      easy->result = Curl_protocol_doing(easy->easy_conn,
-                                         &dophase_done);
-      if(CURLE_OK == easy->result) {
+      result = Curl_protocol_doing(data->easy_conn,
+                                   &dophase_done);
+      if(!result) {
         if(dophase_done) {
           /* after DO, go DO_DONE or DO_MORE */
         if(dophase_done) {
           /* after DO, go DO_DONE or DO_MORE */
-          multistate(easy, easy->easy_conn->bits.do_more?
+          multistate(data, data->easy_conn->bits.do_more?
                      CURLM_STATE_DO_MORE:
                      CURLM_STATE_DO_DONE);
                      CURLM_STATE_DO_MORE:
                      CURLM_STATE_DO_DONE);
-          result = CURLM_CALL_MULTI_PERFORM;
+          rc = CURLM_CALL_MULTI_PERFORM;
         } /* dophase_done */
       }
       else {
         /* failure detected */
         Curl_posttransfer(data);
         } /* dophase_done */
       }
       else {
         /* failure detected */
         Curl_posttransfer(data);
-        Curl_done(&easy->easy_conn, easy->result, FALSE);
+        Curl_done(&data->easy_conn, result, FALSE);
         disconnect_conn = TRUE;
       }
       break;
         disconnect_conn = TRUE;
       }
       break;
@@ -1367,78 +1403,85 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
       /*
        * When we are connected, DO MORE and then go DO_DONE
        */
       /*
        * When we are connected, DO MORE and then go DO_DONE
        */
-      easy->result = Curl_do_more(easy->easy_conn, &control);
+      result = Curl_do_more(data->easy_conn, &control);
 
       /* No need to remove this handle from the send pipeline here since that
          is done in Curl_done() */
 
       /* No need to remove this handle from the send pipeline here since that
          is done in Curl_done() */
-      if(CURLE_OK == easy->result) {
+      if(!result) {
         if(control) {
           /* if positive, advance to DO_DONE
              if negative, go back to DOING */
         if(control) {
           /* if positive, advance to DO_DONE
              if negative, go back to DOING */
-          multistate(easy, control==1?
+          multistate(data, control==1?
                      CURLM_STATE_DO_DONE:
                      CURLM_STATE_DOING);
                      CURLM_STATE_DO_DONE:
                      CURLM_STATE_DOING);
-          result = CURLM_CALL_MULTI_PERFORM;
+          rc = CURLM_CALL_MULTI_PERFORM;
         }
         else
           /* stay in DO_MORE */
         }
         else
           /* stay in DO_MORE */
-          result = CURLM_OK;
+          rc = CURLM_OK;
       }
       else {
         /* failure detected */
         Curl_posttransfer(data);
       }
       else {
         /* failure detected */
         Curl_posttransfer(data);
-        Curl_done(&easy->easy_conn, easy->result, FALSE);
+        Curl_done(&data->easy_conn, result, FALSE);
         disconnect_conn = TRUE;
       }
       break;
 
     case CURLM_STATE_DO_DONE:
       /* Move ourselves from the send to recv pipeline */
         disconnect_conn = TRUE;
       }
       break;
 
     case CURLM_STATE_DO_DONE:
       /* Move ourselves from the send to recv pipeline */
-      Curl_move_handle_from_send_to_recv_pipe(data, easy->easy_conn);
+      Curl_move_handle_from_send_to_recv_pipe(data, data->easy_conn);
       /* Check if we can move pending requests to send pipe */
       Curl_multi_process_pending_handles(multi);
       /* Check if we can move pending requests to send pipe */
       Curl_multi_process_pending_handles(multi);
-      multistate(easy, CURLM_STATE_WAITPERFORM);
-      result = CURLM_CALL_MULTI_PERFORM;
+
+      /* Only perform the transfer if there's a good socket to work with.
+         Having both BAD is a signal to skip immediately to DONE */
+      if((data->easy_conn->sockfd != CURL_SOCKET_BAD) ||
+         (data->easy_conn->writesockfd != CURL_SOCKET_BAD))
+        multistate(data, CURLM_STATE_WAITPERFORM);
+      else
+        multistate(data, CURLM_STATE_DONE);
+      rc = CURLM_CALL_MULTI_PERFORM;
       break;
 
     case CURLM_STATE_WAITPERFORM:
       /* Wait for our turn to PERFORM */
       break;
 
     case CURLM_STATE_WAITPERFORM:
       /* Wait for our turn to PERFORM */
-      if(!easy->easy_conn->readchannel_inuse &&
+      if(!data->easy_conn->readchannel_inuse &&
          isHandleAtHead(data,
          isHandleAtHead(data,
-                        easy->easy_conn->recv_pipe)) {
+                        data->easy_conn->recv_pipe)) {
         /* Grab the channel */
         /* Grab the channel */
-        easy->easy_conn->readchannel_inuse = TRUE;
-        multistate(easy, CURLM_STATE_PERFORM);
-        result = CURLM_CALL_MULTI_PERFORM;
+        data->easy_conn->readchannel_inuse = TRUE;
+        multistate(data, CURLM_STATE_PERFORM);
+        rc = CURLM_CALL_MULTI_PERFORM;
       }
 #ifdef DEBUGBUILD
       else {
         infof(data, "WAITPERFORM: Conn %ld recv pipe %zu inuse %s athead %s\n",
       }
 #ifdef DEBUGBUILD
       else {
         infof(data, "WAITPERFORM: Conn %ld recv pipe %zu inuse %s athead %s\n",
-              easy->easy_conn->connection_id,
-              easy->easy_conn->recv_pipe->size,
-              easy->easy_conn->readchannel_inuse?"TRUE":"FALSE",
+              data->easy_conn->connection_id,
+              data->easy_conn->recv_pipe->size,
+              data->easy_conn->readchannel_inuse?"TRUE":"FALSE",
               isHandleAtHead(data,
               isHandleAtHead(data,
-                             easy->easy_conn->recv_pipe)?"TRUE":"FALSE");
+                             data->easy_conn->recv_pipe)?"TRUE":"FALSE");
       }
 #endif
       break;
 
     case CURLM_STATE_TOOFAST: /* limit-rate exceeded in either direction */
       /* if both rates are within spec, resume transfer */
       }
 #endif
       break;
 
     case CURLM_STATE_TOOFAST: /* limit-rate exceeded in either direction */
       /* if both rates are within spec, resume transfer */
-      if(Curl_pgrsUpdate(easy->easy_conn))
-        easy->result = CURLE_ABORTED_BY_CALLBACK;
+      if(Curl_pgrsUpdate(data->easy_conn))
+        result = CURLE_ABORTED_BY_CALLBACK;
       else
       else
-        easy->result = Curl_speedcheck(data, now);
+        result = Curl_speedcheck(data, now);
 
       if(( (data->set.max_send_speed == 0) ||
            (data->progress.ulspeed < data->set.max_send_speed ))  &&
          ( (data->set.max_recv_speed == 0) ||
            (data->progress.dlspeed < data->set.max_recv_speed)))
 
       if(( (data->set.max_send_speed == 0) ||
            (data->progress.ulspeed < data->set.max_send_speed ))  &&
          ( (data->set.max_recv_speed == 0) ||
            (data->progress.dlspeed < data->set.max_recv_speed)))
-        multistate(easy, CURLM_STATE_PERFORM);
+        multistate(data, CURLM_STATE_PERFORM);
       break;
 
     case CURLM_STATE_PERFORM:
       break;
 
     case CURLM_STATE_PERFORM:
-      {
+    {
       char *newurl = NULL;
       bool retry = FALSE;
 
       char *newurl = NULL;
       bool retry = FALSE;
 
@@ -1447,14 +1490,14 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
          (data->progress.ulspeed > data->set.max_send_speed)) {
         int buffersize;
 
          (data->progress.ulspeed > data->set.max_send_speed)) {
         int buffersize;
 
-        multistate(easy, CURLM_STATE_TOOFAST);
+        multistate(data, CURLM_STATE_TOOFAST);
 
         /* calculate upload rate-limitation timeout. */
         buffersize = (int)(data->set.buffer_size ?
                            data->set.buffer_size : BUFSIZE);
         timeout_ms = Curl_sleep_time(data->set.max_send_speed,
                                      data->progress.ulspeed, buffersize);
 
         /* calculate upload rate-limitation timeout. */
         buffersize = (int)(data->set.buffer_size ?
                            data->set.buffer_size : BUFSIZE);
         timeout_ms = Curl_sleep_time(data->set.max_send_speed,
                                      data->progress.ulspeed, buffersize);
-        Curl_expire(data, timeout_ms);
+        Curl_expire_latest(data, timeout_ms);
         break;
       }
 
         break;
       }
 
@@ -1463,50 +1506,50 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
          (data->progress.dlspeed > data->set.max_recv_speed)) {
         int buffersize;
 
          (data->progress.dlspeed > data->set.max_recv_speed)) {
         int buffersize;
 
-        multistate(easy, CURLM_STATE_TOOFAST);
+        multistate(data, CURLM_STATE_TOOFAST);
 
 
-         /* Calculate download rate-limitation timeout. */
+        /* Calculate download rate-limitation timeout. */
         buffersize = (int)(data->set.buffer_size ?
                            data->set.buffer_size : BUFSIZE);
         timeout_ms = Curl_sleep_time(data->set.max_recv_speed,
                                      data->progress.dlspeed, buffersize);
         buffersize = (int)(data->set.buffer_size ?
                            data->set.buffer_size : BUFSIZE);
         timeout_ms = Curl_sleep_time(data->set.max_recv_speed,
                                      data->progress.dlspeed, buffersize);
-        Curl_expire(data, timeout_ms);
+        Curl_expire_latest(data, timeout_ms);
         break;
       }
 
       /* read/write data if it is ready to do so */
         break;
       }
 
       /* read/write data if it is ready to do so */
-      easy->result = Curl_readwrite(easy->easy_conn, &done);
+      result = Curl_readwrite(data->easy_conn, &done);
 
       k = &data->req;
 
       if(!(k->keepon & KEEP_RECV)) {
         /* We're done receiving */
 
       k = &data->req;
 
       if(!(k->keepon & KEEP_RECV)) {
         /* We're done receiving */
-        easy->easy_conn->readchannel_inuse = FALSE;
+        data->easy_conn->readchannel_inuse = FALSE;
       }
 
       if(!(k->keepon & KEEP_SEND)) {
         /* We're done sending */
       }
 
       if(!(k->keepon & KEEP_SEND)) {
         /* We're done sending */
-        easy->easy_conn->writechannel_inuse = FALSE;
+        data->easy_conn->writechannel_inuse = FALSE;
       }
 
       }
 
-      if(done || (easy->result == CURLE_RECV_ERROR)) {
+      if(done || (result == CURLE_RECV_ERROR)) {
         /* If CURLE_RECV_ERROR happens early enough, we assume it was a race
          * condition and the server closed the re-used connection exactly when
          * we wanted to use it, so figure out if that is indeed the case.
          */
         /* If CURLE_RECV_ERROR happens early enough, we assume it was a race
          * condition and the server closed the re-used connection exactly when
          * we wanted to use it, so figure out if that is indeed the case.
          */
-        CURLcode ret = Curl_retry_request(easy->easy_conn, &newurl);
+        CURLcode ret = Curl_retry_request(data->easy_conn, &newurl);
         if(!ret)
           retry = (newurl)?TRUE:FALSE;
 
         if(retry) {
           /* if we are to retry, set the result to OK and consider the
              request as done */
         if(!ret)
           retry = (newurl)?TRUE:FALSE;
 
         if(retry) {
           /* if we are to retry, set the result to OK and consider the
              request as done */
-          easy->result = CURLE_OK;
+          result = CURLE_OK;
           done = TRUE;
         }
       }
 
           done = TRUE;
         }
       }
 
-      if(easy->result) {
+      if(result) {
         /*
          * The transfer phase returned error, we mark the connection to get
          * closed to prevent being re-used. This is because we can't possibly
         /*
          * The transfer phase returned error, we mark the connection to get
          * closed to prevent being re-used. This is because we can't possibly
@@ -1515,11 +1558,11 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
          * happened in the data connection.
          */
 
          * happened in the data connection.
          */
 
-        if(!(easy->easy_conn->handler->flags & PROTOPT_DUAL))
-          easy->easy_conn->bits.close = TRUE;
+        if(!(data->easy_conn->handler->flags & PROTOPT_DUAL))
+          connclose(data->easy_conn, "Transfer returned error");
 
         Curl_posttransfer(data);
 
         Curl_posttransfer(data);
-        Curl_done(&easy->easy_conn, easy->result, FALSE);
+        Curl_done(&data->easy_conn, result, FALSE);
       }
       else if(done) {
         followtype follow=FOLLOW_NONE;
       }
       else if(done) {
         followtype follow=FOLLOW_NONE;
@@ -1528,11 +1571,11 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
         Curl_posttransfer(data);
 
         /* we're no longer receiving */
         Curl_posttransfer(data);
 
         /* we're no longer receiving */
-        Curl_removeHandleFromPipeline(data, easy->easy_conn->recv_pipe);
+        Curl_removeHandleFromPipeline(data, data->easy_conn->recv_pipe);
 
         /* expire the new receiving pipeline head */
 
         /* expire the new receiving pipeline head */
-        if(easy->easy_conn->recv_pipe->head)
-          Curl_expire(easy->easy_conn->recv_pipe->head->ptr, 1);
+        if(data->easy_conn->recv_pipe->head)
+          Curl_expire_latest(data->easy_conn->recv_pipe->head->ptr, 1);
 
         /* Check if we can move pending requests to send pipe */
         Curl_multi_process_pending_handles(multi);
 
         /* Check if we can move pending requests to send pipe */
         Curl_multi_process_pending_handles(multi);
@@ -1543,18 +1586,20 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
           if(!retry) {
             /* if the URL is a follow-location and not just a retried request
                then figure out the URL here */
           if(!retry) {
             /* if the URL is a follow-location and not just a retried request
                then figure out the URL here */
+            if(newurl)
+              free(newurl);
             newurl = data->req.newurl;
             data->req.newurl = NULL;
             follow = FOLLOW_REDIR;
           }
           else
             follow = FOLLOW_RETRY;
             newurl = data->req.newurl;
             data->req.newurl = NULL;
             follow = FOLLOW_REDIR;
           }
           else
             follow = FOLLOW_RETRY;
-          easy->result = Curl_done(&easy->easy_conn, CURLE_OK, FALSE);
-          if(CURLE_OK == easy->result) {
-            easy->result = Curl_follow(data, newurl, follow);
-            if(CURLE_OK == easy->result) {
-              multistate(easy, CURLM_STATE_CONNECT);
-              result = CURLM_CALL_MULTI_PERFORM;
+          result = Curl_done(&data->easy_conn, CURLE_OK, FALSE);
+          if(!result) {
+            result = Curl_follow(data, newurl, follow);
+            if(!result) {
+              multistate(data, CURLM_STATE_CONNECT);
+              rc = CURLM_CALL_MULTI_PERFORM;
               newurl = NULL; /* handed over the memory ownership to
                                 Curl_follow(), make sure we don't free() it
                                 here */
               newurl = NULL; /* handed over the memory ownership to
                                 Curl_follow(), make sure we don't free() it
                                 here */
@@ -1571,65 +1616,64 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
               free(newurl);
             newurl = data->req.location;
             data->req.location = NULL;
               free(newurl);
             newurl = data->req.location;
             data->req.location = NULL;
-            easy->result = Curl_follow(data, newurl, FOLLOW_FAKE);
-            if(CURLE_OK == easy->result)
+            result = Curl_follow(data, newurl, FOLLOW_FAKE);
+            if(!result)
               newurl = NULL; /* allocation was handed over Curl_follow() */
             else
               disconnect_conn = TRUE;
           }
 
               newurl = NULL; /* allocation was handed over Curl_follow() */
             else
               disconnect_conn = TRUE;
           }
 
-          multistate(easy, CURLM_STATE_DONE);
-          result = CURLM_CALL_MULTI_PERFORM;
+          multistate(data, CURLM_STATE_DONE);
+          rc = CURLM_CALL_MULTI_PERFORM;
         }
       }
 
       if(newurl)
         free(newurl);
       break;
         }
       }
 
       if(newurl)
         free(newurl);
       break;
-      }
+    }
 
     case CURLM_STATE_DONE:
 
     case CURLM_STATE_DONE:
+      /* this state is highly transient, so run another loop after this */
+      rc = CURLM_CALL_MULTI_PERFORM;
+
+      if(data->easy_conn) {
+        CURLcode res;
 
 
-      if(easy->easy_conn) {
         /* Remove ourselves from the receive pipeline, if we are there. */
         /* Remove ourselves from the receive pipeline, if we are there. */
-        Curl_removeHandleFromPipeline(data,
-                                      easy->easy_conn->recv_pipe);
+        Curl_removeHandleFromPipeline(data, data->easy_conn->recv_pipe);
         /* Check if we can move pending requests to send pipe */
         Curl_multi_process_pending_handles(multi);
 
         /* Check if we can move pending requests to send pipe */
         Curl_multi_process_pending_handles(multi);
 
-        if(easy->easy_conn->bits.stream_was_rewound) {
-          /* This request read past its response boundary so we quickly let
-             the other requests consume those bytes since there is no
-             guarantee that the socket will become active again */
-          result = CURLM_CALL_MULTI_PERFORM;
-        }
-
         /* post-transfer command */
         /* post-transfer command */
-        easy->result = Curl_done(&easy->easy_conn, CURLE_OK, FALSE);
+        res = Curl_done(&data->easy_conn, result, FALSE);
+
+        /* allow a previously set error code take precedence */
+        if(!result)
+          result = res;
+
         /*
          * If there are other handles on the pipeline, Curl_done won't set
          * easy_conn to NULL.  In such a case, curl_multi_remove_handle() can
          * access free'd data, if the connection is free'd and the handle
          * removed before we perform the processing in CURLM_STATE_COMPLETED
          */
         /*
          * If there are other handles on the pipeline, Curl_done won't set
          * easy_conn to NULL.  In such a case, curl_multi_remove_handle() can
          * access free'd data, if the connection is free'd and the handle
          * removed before we perform the processing in CURLM_STATE_COMPLETED
          */
-        if(easy->easy_conn)
-          easy->easy_conn = NULL;
+        if(data->easy_conn)
+          data->easy_conn = NULL;
       }
 
       if(data->set.wildcardmatch) {
         if(data->wildcard.state != CURLWC_DONE) {
           /* if a wildcard is set and we are not ending -> lets start again
              with CURLM_STATE_INIT */
       }
 
       if(data->set.wildcardmatch) {
         if(data->wildcard.state != CURLWC_DONE) {
           /* if a wildcard is set and we are not ending -> lets start again
              with CURLM_STATE_INIT */
-          result = CURLM_CALL_MULTI_PERFORM;
-          multistate(easy, CURLM_STATE_INIT);
+          multistate(data, CURLM_STATE_INIT);
           break;
         }
       }
 
       /* after we have DONE what we're supposed to do, go COMPLETED, and
          it doesn't matter what the Curl_done() returned! */
           break;
         }
       }
 
       /* after we have DONE what we're supposed to do, go COMPLETED, and
          it doesn't matter what the Curl_done() returned! */
-      multistate(easy, CURLM_STATE_COMPLETED);
-
+      multistate(data, CURLM_STATE_COMPLETED);
       break;
 
     case CURLM_STATE_COMPLETED:
       break;
 
     case CURLM_STATE_COMPLETED:
@@ -1640,20 +1684,22 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
 
       /* Important: reset the conn pointer so that we don't point to memory
          that could be freed anytime */
 
       /* Important: reset the conn pointer so that we don't point to memory
          that could be freed anytime */
-      easy->easy_conn = NULL;
+      data->easy_conn = NULL;
 
       Curl_expire(data, 0); /* stop all timers */
       break;
 
     case CURLM_STATE_MSGSENT:
 
       Curl_expire(data, 0); /* stop all timers */
       break;
 
     case CURLM_STATE_MSGSENT:
+      data->result = result;
       return CURLM_OK; /* do nothing */
 
     default:
       return CURLM_INTERNAL_ERROR;
     }
       return CURLM_OK; /* do nothing */
 
     default:
       return CURLM_INTERNAL_ERROR;
     }
+    statemachine_end:
 
 
-    if(easy->mstate < CURLM_STATE_COMPLETED) {
-      if(CURLE_OK != easy->result) {
+    if(data->mstate < CURLM_STATE_COMPLETED) {
+      if(result) {
         /*
          * If an error was returned, and we aren't in completed state now,
          * then we go to completed and consider this transfer aborted.
         /*
          * If an error was returned, and we aren't in completed state now,
          * then we go to completed and consider this transfer aborted.
@@ -1664,69 +1710,73 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
 
         data->state.pipe_broke = FALSE;
 
 
         data->state.pipe_broke = FALSE;
 
-        if(easy->easy_conn) {
+        if(data->easy_conn) {
           /* if this has a connection, unsubscribe from the pipelines */
           /* if this has a connection, unsubscribe from the pipelines */
-          easy->easy_conn->writechannel_inuse = FALSE;
-          easy->easy_conn->readchannel_inuse = FALSE;
-          Curl_removeHandleFromPipeline(data,
-                                        easy->easy_conn->send_pipe);
-          Curl_removeHandleFromPipeline(data,
-                                        easy->easy_conn->recv_pipe);
+          data->easy_conn->writechannel_inuse = FALSE;
+          data->easy_conn->readchannel_inuse = FALSE;
+          Curl_removeHandleFromPipeline(data, data->easy_conn->send_pipe);
+          Curl_removeHandleFromPipeline(data, data->easy_conn->recv_pipe);
           /* Check if we can move pending requests to send pipe */
           Curl_multi_process_pending_handles(multi);
 
           if(disconnect_conn) {
           /* Check if we can move pending requests to send pipe */
           Curl_multi_process_pending_handles(multi);
 
           if(disconnect_conn) {
+            /* Don't attempt to send data over a connection that timed out */
+            bool dead_connection = result == CURLE_OPERATION_TIMEDOUT;
             /* disconnect properly */
             /* disconnect properly */
-            Curl_disconnect(easy->easy_conn, /* dead_connection */ FALSE);
+            Curl_disconnect(data->easy_conn, dead_connection);
 
             /* This is where we make sure that the easy_conn pointer is reset.
                We don't have to do this in every case block above where a
                failure is detected */
 
             /* This is where we make sure that the easy_conn pointer is reset.
                We don't have to do this in every case block above where a
                failure is detected */
-            easy->easy_conn = NULL;
+            data->easy_conn = NULL;
           }
         }
           }
         }
-        else if(easy->mstate == CURLM_STATE_CONNECT) {
+        else if(data->mstate == CURLM_STATE_CONNECT) {
           /* Curl_connect() failed */
           (void)Curl_posttransfer(data);
         }
 
           /* Curl_connect() failed */
           (void)Curl_posttransfer(data);
         }
 
-        multistate(easy, CURLM_STATE_COMPLETED);
+        multistate(data, CURLM_STATE_COMPLETED);
       }
       /* if there's still a connection to use, call the progress function */
       }
       /* if there's still a connection to use, call the progress function */
-      else if(easy->easy_conn && Curl_pgrsUpdate(easy->easy_conn)) {
+      else if(data->easy_conn && Curl_pgrsUpdate(data->easy_conn)) {
         /* aborted due to progress callback return code must close the
            connection */
         /* aborted due to progress callback return code must close the
            connection */
-        easy->easy_conn->bits.close = TRUE;
+        result = CURLE_ABORTED_BY_CALLBACK;
+        connclose(data->easy_conn, "Aborted by callback");
 
         /* if not yet in DONE state, go there, otherwise COMPLETED */
 
         /* if not yet in DONE state, go there, otherwise COMPLETED */
-        multistate(easy, (easy->mstate < CURLM_STATE_DONE)?
+        multistate(data, (data->mstate < CURLM_STATE_DONE)?
                    CURLM_STATE_DONE: CURLM_STATE_COMPLETED);
                    CURLM_STATE_DONE: CURLM_STATE_COMPLETED);
-        result = CURLM_CALL_MULTI_PERFORM;
+        rc = CURLM_CALL_MULTI_PERFORM;
       }
     }
       }
     }
-  } WHILE_FALSE; /* just to break out from! */
 
 
-  if(CURLM_STATE_COMPLETED == easy->mstate) {
-    /* now fill in the Curl_message with this info */
-    msg = &easy->msg;
+    if(CURLM_STATE_COMPLETED == data->mstate) {
+      /* now fill in the Curl_message with this info */
+      msg = &data->msg;
 
 
-    msg->extmsg.msg = CURLMSG_DONE;
-    msg->extmsg.easy_handle = data;
-    msg->extmsg.data.result = easy->result;
+      msg->extmsg.msg = CURLMSG_DONE;
+      msg->extmsg.easy_handle = data;
+      msg->extmsg.data.result = result;
 
 
-    result = multi_addmsg(multi, msg);
+      rc = multi_addmsg(multi, msg);
 
 
-    multistate(easy, CURLM_STATE_MSGSENT);
-  }
+      multistate(data, CURLM_STATE_MSGSENT);
+    }
+  } while(rc == CURLM_CALL_MULTI_PERFORM);
 
 
-  return result;
+  data->result = result;
+
+
+  return rc;
 }
 
 
 CURLMcode curl_multi_perform(CURLM *multi_handle, int *running_handles)
 {
   struct Curl_multi *multi=(struct Curl_multi *)multi_handle;
 }
 
 
 CURLMcode curl_multi_perform(CURLM *multi_handle, int *running_handles)
 {
   struct Curl_multi *multi=(struct Curl_multi *)multi_handle;
-  struct SessionHandle *easy;
+  struct SessionHandle *data;
   CURLMcode returncode=CURLM_OK;
   struct Curl_tree *t;
   struct timeval now = Curl_tvnow();
   CURLMcode returncode=CURLM_OK;
   struct Curl_tree *t;
   struct timeval now = Curl_tvnow();
@@ -1734,12 +1784,13 @@ CURLMcode curl_multi_perform(CURLM *multi_handle, int *running_handles)
   if(!GOOD_MULTI_HANDLE(multi))
     return CURLM_BAD_HANDLE;
 
   if(!GOOD_MULTI_HANDLE(multi))
     return CURLM_BAD_HANDLE;
 
-  easy=multi->easyp;
-  while(easy) {
+  data=multi->easyp;
+  while(data) {
     CURLMcode result;
     CURLMcode result;
-    struct WildcardData *wc = &easy->wildcard;
+    struct WildcardData *wc = &data->wildcard;
+    SIGPIPE_VARIABLE(pipe_st);
 
 
-    if(easy->set.wildcardmatch) {
+    if(data->set.wildcardmatch) {
       if(!wc->filelist) {
         CURLcode ret = Curl_wildcard_init(wc); /* init wildcard structures */
         if(ret)
       if(!wc->filelist) {
         CURLcode ret = Curl_wildcard_init(wc); /* init wildcard structures */
         if(ret)
@@ -1747,11 +1798,11 @@ CURLMcode curl_multi_perform(CURLM *multi_handle, int *running_handles)
       }
     }
 
       }
     }
 
-    do
-      result = multi_runsingle(multi, now, easy);
-    while(CURLM_CALL_MULTI_PERFORM == result);
+    sigpipe_ignore(data, &pipe_st);
+    result = multi_runsingle(multi, now, data);
+    sigpipe_restore(&pipe_st);
 
 
-    if(easy->set.wildcardmatch) {
+    if(data->set.wildcardmatch) {
       /* destruct wildcard structures if it is needed */
       if(wc->state == CURLWC_DONE || result)
         Curl_wildcard_dtor(wc);
       /* destruct wildcard structures if it is needed */
       if(wc->state == CURLWC_DONE || result)
         Curl_wildcard_dtor(wc);
@@ -1760,7 +1811,7 @@ CURLMcode curl_multi_perform(CURLM *multi_handle, int *running_handles)
     if(result)
       returncode = result;
 
     if(result)
       returncode = result;
 
-    easy = easy->next; /* operate on next handle */
+    data = data->next; /* operate on next handle */
   }
 
   /*
   }
 
   /*
@@ -1795,10 +1846,13 @@ static void close_all_connections(struct Curl_multi *multi)
 
   conn = Curl_conncache_find_first_connection(multi->conn_cache);
   while(conn) {
 
   conn = Curl_conncache_find_first_connection(multi->conn_cache);
   while(conn) {
+    SIGPIPE_VARIABLE(pipe_st);
     conn->data = multi->closure_handle;
 
     conn->data = multi->closure_handle;
 
+    sigpipe_ignore(conn->data, &pipe_st);
     /* This will remove the connection from the cache */
     (void)Curl_disconnect(conn, FALSE);
     /* This will remove the connection from the cache */
     (void)Curl_disconnect(conn, FALSE);
+    sigpipe_restore(&pipe_st);
 
     conn = Curl_conncache_find_first_connection(multi->conn_cache);
   }
 
     conn = Curl_conncache_find_first_connection(multi->conn_cache);
   }
@@ -1807,61 +1861,61 @@ static void close_all_connections(struct Curl_multi *multi)
 CURLMcode curl_multi_cleanup(CURLM *multi_handle)
 {
   struct Curl_multi *multi=(struct Curl_multi *)multi_handle;
 CURLMcode curl_multi_cleanup(CURLM *multi_handle)
 {
   struct Curl_multi *multi=(struct Curl_multi *)multi_handle;
-  struct SessionHandle *easy;
-  struct SessionHandle *nexteasy;
+  struct SessionHandle *data;
+  struct SessionHandle *nextdata;
 
   if(GOOD_MULTI_HANDLE(multi)) {
 
   if(GOOD_MULTI_HANDLE(multi)) {
+    bool restore_pipe = FALSE;
+    SIGPIPE_VARIABLE(pipe_st);
+
     multi->type = 0; /* not good anymore */
 
     /* Close all the connections in the connection cache */
     close_all_connections(multi);
 
     if(multi->closure_handle) {
     multi->type = 0; /* not good anymore */
 
     /* Close all the connections in the connection cache */
     close_all_connections(multi);
 
     if(multi->closure_handle) {
+      sigpipe_ignore(multi->closure_handle, &pipe_st);
+      restore_pipe = TRUE;
+
       multi->closure_handle->dns.hostcache = multi->hostcache;
       Curl_hostcache_clean(multi->closure_handle,
                            multi->closure_handle->dns.hostcache);
 
       Curl_close(multi->closure_handle);
       multi->closure_handle->dns.hostcache = multi->hostcache;
       Curl_hostcache_clean(multi->closure_handle,
                            multi->closure_handle->dns.hostcache);
 
       Curl_close(multi->closure_handle);
-      multi->closure_handle = NULL;
     }
 
     Curl_hash_destroy(multi->sockhash);
     }
 
     Curl_hash_destroy(multi->sockhash);
-    multi->sockhash = NULL;
-
     Curl_conncache_destroy(multi->conn_cache);
     Curl_conncache_destroy(multi->conn_cache);
-    multi->conn_cache = NULL;
-
-    /* remove the pending list of messages */
     Curl_llist_destroy(multi->msglist, NULL);
     Curl_llist_destroy(multi->msglist, NULL);
-    multi->msglist = NULL;
+    Curl_llist_destroy(multi->pending, NULL);
 
     /* remove all easy handles */
 
     /* remove all easy handles */
-    easy = multi->easyp;
-    while(easy) {
-      nexteasy=easy->next;
-      if(easy->dns.hostcachetype == HCACHE_MULTI) {
+    data = multi->easyp;
+    while(data) {
+      nextdata=data->next;
+      if(data->dns.hostcachetype == HCACHE_MULTI) {
         /* clear out the usage of the shared DNS cache */
         /* clear out the usage of the shared DNS cache */
-        Curl_hostcache_clean(easy, easy->dns.hostcache);
-        easy->dns.hostcache = NULL;
-        easy->dns.hostcachetype = HCACHE_NONE;
+        Curl_hostcache_clean(data, data->dns.hostcache);
+        data->dns.hostcache = NULL;
+        data->dns.hostcachetype = HCACHE_NONE;
       }
 
       /* Clear the pointer to the connection cache */
       }
 
       /* Clear the pointer to the connection cache */
-      easy->state.conn_cache = NULL;
+      data->state.conn_cache = NULL;
+      data->multi = NULL; /* clear the association */
 
 
-      Curl_easy_addmulti(easy, NULL); /* clear the association */
-
-      easy = nexteasy;
+      data = nextdata;
     }
 
     Curl_hash_destroy(multi->hostcache);
     }
 
     Curl_hash_destroy(multi->hostcache);
-    multi->hostcache = NULL;
 
     /* Free the blacklists by setting them to NULL */
     Curl_pipeline_set_site_blacklist(NULL, &multi->pipelining_site_bl);
     Curl_pipeline_set_server_blacklist(NULL, &multi->pipelining_server_bl);
 
     free(multi);
 
     /* Free the blacklists by setting them to NULL */
     Curl_pipeline_set_site_blacklist(NULL, &multi->pipelining_site_bl);
     Curl_pipeline_set_server_blacklist(NULL, &multi->pipelining_server_bl);
 
     free(multi);
+    if(restore_pipe)
+      sigpipe_restore(&pipe_st);
 
     return CURLM_OK;
   }
 
     return CURLM_OK;
   }
@@ -1912,7 +1966,7 @@ CURLMsg *curl_multi_info_read(CURLM *multi_handle, int *msgs_in_queue)
  * call the callback accordingly.
  */
 static void singlesocket(struct Curl_multi *multi,
  * call the callback accordingly.
  */
 static void singlesocket(struct Curl_multi *multi,
-                         struct SessionHandle *easy)
+                         struct SessionHandle *data)
 {
   curl_socket_t socks[MAX_SOCKSPEREASYHANDLE];
   int i;
 {
   curl_socket_t socks[MAX_SOCKSPEREASYHANDLE];
   int i;
@@ -1927,7 +1981,7 @@ static void singlesocket(struct Curl_multi *multi,
 
   /* Fill in the 'current' struct with the state as it is now: what sockets to
      supervise and for what actions */
 
   /* Fill in the 'current' struct with the state as it is now: what sockets to
      supervise and for what actions */
-  curraction = multi_getsock(easy, socks, MAX_SOCKSPEREASYHANDLE);
+  curraction = multi_getsock(data, socks, MAX_SOCKSPEREASYHANDLE);
 
   /* We have 0 .. N sockets already and we get to know about the 0 .. M
      sockets we should have from now on. Detect the differences, remove no
 
   /* We have 0 .. N sockets already and we get to know about the 0 .. M
      sockets we should have from now on. Detect the differences, remove no
@@ -1957,7 +2011,7 @@ static void singlesocket(struct Curl_multi *multi,
     }
     else {
       /* this is a socket we didn't have before, add it! */
     }
     else {
       /* this is a socket we didn't have before, add it! */
-      entry = sh_addentry(multi->sockhash, s, easy);
+      entry = sh_addentry(multi->sockhash, s, data);
       if(!entry)
         /* fatal */
         return;
       if(!entry)
         /* fatal */
         return;
@@ -1965,7 +2019,7 @@ static void singlesocket(struct Curl_multi *multi,
 
     /* we know (entry != NULL) at this point, see the logic above */
     if(multi->socket_cb)
 
     /* we know (entry != NULL) at this point, see the logic above */
     if(multi->socket_cb)
-      multi->socket_cb(easy,
+      multi->socket_cb(data,
                        s,
                        action,
                        multi->socket_userp,
                        s,
                        action,
                        multi->socket_userp,
@@ -1978,9 +2032,9 @@ static void singlesocket(struct Curl_multi *multi,
 
   /* when we've walked over all the sockets we should have right now, we must
      make sure to detect sockets that are removed */
 
   /* when we've walked over all the sockets we should have right now, we must
      make sure to detect sockets that are removed */
-  for(i=0; i< easy->numsocks; i++) {
+  for(i=0; i< data->numsocks; i++) {
     int j;
     int j;
-    s = easy->sockets[i];
+    s = data->sockets[i];
     for(j=0; j<num; j++) {
       if(s == socks[j]) {
         /* this is still supervised */
     for(j=0; j<num; j++) {
       if(s == socks[j]) {
         /* this is still supervised */
@@ -1998,7 +2052,7 @@ static void singlesocket(struct Curl_multi *multi,
         /* check if the socket to be removed serves a connection which has
            other easy-s in a pipeline. In this case the socket should not be
            removed. */
         /* check if the socket to be removed serves a connection which has
            other easy-s in a pipeline. In this case the socket should not be
            removed. */
-        struct connectdata *easy_conn = easy->easy_conn;
+        struct connectdata *easy_conn = data->easy_conn;
         if(easy_conn) {
           if(easy_conn->recv_pipe && easy_conn->recv_pipe->size > 1) {
             /* the handle should not be removed from the pipe yet */
         if(easy_conn) {
           if(easy_conn->recv_pipe && easy_conn->recv_pipe->size > 1) {
             /* the handle should not be removed from the pipe yet */
@@ -2007,8 +2061,8 @@ static void singlesocket(struct Curl_multi *multi,
             /* Update the sockhash entry to instead point to the next in line
                for the recv_pipe, or the first (in case this particular easy
                isn't already) */
             /* Update the sockhash entry to instead point to the next in line
                for the recv_pipe, or the first (in case this particular easy
                isn't already) */
-            if(entry->easy == easy) {
-              if(isHandleAtHead(easy, easy_conn->recv_pipe))
+            if(entry->easy == data) {
+              if(isHandleAtHead(data, easy_conn->recv_pipe))
                 entry->easy = easy_conn->recv_pipe->head->next->ptr;
               else
                 entry->easy = easy_conn->recv_pipe->head->ptr;
                 entry->easy = easy_conn->recv_pipe->head->next->ptr;
               else
                 entry->easy = easy_conn->recv_pipe->head->ptr;
@@ -2021,8 +2075,8 @@ static void singlesocket(struct Curl_multi *multi,
             /* Update the sockhash entry to instead point to the next in line
                for the send_pipe, or the first (in case this particular easy
                isn't already) */
             /* Update the sockhash entry to instead point to the next in line
                for the send_pipe, or the first (in case this particular easy
                isn't already) */
-            if(entry->easy == easy) {
-              if(isHandleAtHead(easy, easy_conn->send_pipe))
+            if(entry->easy == data) {
+              if(isHandleAtHead(data, easy_conn->send_pipe))
                 entry->easy = easy_conn->send_pipe->head->next->ptr;
               else
                 entry->easy = easy_conn->send_pipe->head->ptr;
                 entry->easy = easy_conn->send_pipe->head->next->ptr;
               else
                 entry->easy = easy_conn->send_pipe->head->ptr;
@@ -2043,7 +2097,7 @@ static void singlesocket(struct Curl_multi *multi,
       if(remove_sock_from_hash) {
         /* in this case 'entry' is always non-NULL */
         if(multi->socket_cb)
       if(remove_sock_from_hash) {
         /* in this case 'entry' is always non-NULL */
         if(multi->socket_cb)
-          multi->socket_cb(easy,
+          multi->socket_cb(data,
                            s,
                            CURL_POLL_REMOVE,
                            multi->socket_userp,
                            s,
                            CURL_POLL_REMOVE,
                            multi->socket_userp,
@@ -2054,15 +2108,15 @@ static void singlesocket(struct Curl_multi *multi,
     }
   }
 
     }
   }
 
-  memcpy(easy->sockets, socks, num*sizeof(curl_socket_t));
-  easy->numsocks = num;
+  memcpy(data->sockets, socks, num*sizeof(curl_socket_t));
+  data->numsocks = num;
 }
 
 /*
  * Curl_multi_closed()
  *
  * Used by the connect code to tell the multi_socket code that one of the
 }
 
 /*
  * Curl_multi_closed()
  *
  * Used by the connect code to tell the multi_socket code that one of the
- * sockets we were using have just been closed.  This function will then
+ * sockets we were using is about to be closed.  This function will then
  * remove it from the sockethash for this handle to make the multi_socket API
  * behave properly, especially for the case when libcurl will create another
  * socket again and it gets the same file descriptor number.
  * remove it from the sockethash for this handle to make the multi_socket API
  * behave properly, especially for the case when libcurl will create another
  * socket again and it gets the same file descriptor number.
@@ -2146,12 +2200,6 @@ static CURLMcode add_next_timeout(struct timeval now,
   return CURLM_OK;
 }
 
   return CURLM_OK;
 }
 
-#ifdef WIN32
-#define TIMEOUT_INACCURACY 40000
-#else
-#define TIMEOUT_INACCURACY 3000
-#endif
-
 static CURLMcode multi_socket(struct Curl_multi *multi,
                               bool checkall,
                               curl_socket_t s,
 static CURLMcode multi_socket(struct Curl_multi *multi,
                               bool checkall,
                               curl_socket_t s,
@@ -2164,16 +2212,17 @@ static CURLMcode multi_socket(struct Curl_multi *multi,
   struct timeval now = Curl_tvnow();
 
   if(checkall) {
   struct timeval now = Curl_tvnow();
 
   if(checkall) {
-    struct SessionHandle *easy;
     /* *perform() deals with running_handles on its own */
     result = curl_multi_perform(multi, running_handles);
 
     /* walk through each easy handle and do the socket state change magic
        and callbacks */
     /* *perform() deals with running_handles on its own */
     result = curl_multi_perform(multi, running_handles);
 
     /* walk through each easy handle and do the socket state change magic
        and callbacks */
-    easy=multi->easyp;
-    while(easy) {
-      singlesocket(multi, easy);
-      easy = easy->next;
+    if(result != CURLM_BAD_HANDLE) {
+      data=multi->easyp;
+      while(data) {
+        singlesocket(multi, data);
+        data = data->next;
+      }
     }
 
     /* or should we fall-through and do the timer-based stuff? */
     }
 
     /* or should we fall-through and do the timer-based stuff? */
@@ -2192,6 +2241,8 @@ static CURLMcode multi_socket(struct Curl_multi *multi,
          and just move on. */
       ;
     else {
          and just move on. */
       ;
     else {
+      SIGPIPE_VARIABLE(pipe_st);
+
       data = entry->easy;
 
       if(data->magic != CURLEASY_MAGIC_NUMBER)
       data = entry->easy;
 
       if(data->magic != CURLEASY_MAGIC_NUMBER)
@@ -2217,9 +2268,9 @@ static CURLMcode multi_socket(struct Curl_multi *multi,
         /* set socket event bitmask if they're not locked */
         data->easy_conn->cselect_bits = ev_bitmask;
 
         /* set socket event bitmask if they're not locked */
         data->easy_conn->cselect_bits = ev_bitmask;
 
-      do
-        result = multi_runsingle(multi, now, data);
-      while(CURLM_CALL_MULTI_PERFORM == result);
+      sigpipe_ignore(data, &pipe_st);
+      result = multi_runsingle(multi, now, data);
+      sigpipe_restore(&pipe_st);
 
       if(data->easy_conn &&
          !(data->easy_conn->handler->flags & PROTOPT_DIRLOCK))
 
       if(data->easy_conn &&
          !(data->easy_conn->handler->flags & PROTOPT_DIRLOCK))
@@ -2237,31 +2288,16 @@ static CURLMcode multi_socket(struct Curl_multi *multi,
 
       data = NULL; /* set data to NULL again to avoid calling
                       multi_runsingle() in case there's no need to */
 
       data = NULL; /* set data to NULL again to avoid calling
                       multi_runsingle() in case there's no need to */
+      now = Curl_tvnow(); /* get a newer time since the multi_runsingle() loop
+                             may have taken some time */
     }
   }
     }
   }
-
-  /* Compensate for bad precision timers that might've triggered too early.
-
-     This precaution was added in commit 2c72732ebf3da5e as a result of bad
-     resolution in the windows function use(d).
-
-     The problematic case here is when using the multi_socket API and libcurl
-     has told the application about a timeout, and that timeout is what fires
-     off a bit early. As we don't have any IDs associated with the timeout we
-     can't tell which timeout that fired off but we only have the times to use
-     to check what to do. If it fires off too early, we don't run the correct
-     actions and we don't tell the application again about the same timeout as
-     was already first in the queue...
-
-     Originally we made the timeouts run 40 milliseconds early on all systems,
-     but now we have an #ifdef setup to provide a decent precaution inaccuracy
-     margin.
-  */
-
-  now.tv_usec += TIMEOUT_INACCURACY;
-  if(now.tv_usec >= 1000000) {
-    now.tv_sec++;
-    now.tv_usec -= 1000000;
+  else {
+    /* Asked to run due to time-out. Clear the 'lastcall' variable to force
+       update_timer() to trigger a callback to the app again even if the same
+       timeout is still the one to run after this call. That handles the case
+       when the application asks libcurl to run the timeout prematurely. */
+    memset(&multi->timer_lastcall, 0, sizeof(multi->timer_lastcall));
   }
 
   /*
   }
 
   /*
@@ -2272,9 +2308,11 @@ static CURLMcode multi_socket(struct Curl_multi *multi,
   do {
     /* the first loop lap 'data' can be NULL */
     if(data) {
   do {
     /* the first loop lap 'data' can be NULL */
     if(data) {
-      do
-        result = multi_runsingle(multi, now, data);
-      while(CURLM_CALL_MULTI_PERFORM == result);
+      SIGPIPE_VARIABLE(pipe_st);
+
+      sigpipe_ignore(data, &pipe_st);
+      result = multi_runsingle(multi, now, data);
+      sigpipe_restore(&pipe_st);
 
       if(CURLM_OK >= result)
         /* get the socket(s) and check if the state has been changed since
 
       if(CURLM_OK >= result)
         /* get the socket(s) and check if the state has been changed since
@@ -2476,12 +2514,6 @@ static int update_timer(struct Curl_multi *multi)
   return multi->timer_cb((CURLM*)multi, timeout_ms, multi->timer_userp);
 }
 
   return multi->timer_cb((CURLM*)multi, timeout_ms, multi->timer_userp);
 }
 
-void Curl_multi_set_easy_connection(struct SessionHandle *handle,
-                                    struct connectdata *conn)
-{
-  handle->easy_conn = conn;
-}
-
 static bool isHandleAtHead(struct SessionHandle *handle,
                            struct curl_llist *pipeline)
 {
 static bool isHandleAtHead(struct SessionHandle *handle,
                            struct curl_llist *pipeline)
 {
@@ -2644,6 +2676,46 @@ void Curl_expire(struct SessionHandle *data, long milli)
 #endif
 }
 
 #endif
 }
 
+/*
+ * Curl_expire_latest()
+ *
+ * This is like Curl_expire() but will only add a timeout node to the list of
+ * timers if there is no timeout that will expire before the given time.
+ *
+ * Use this function if the code logic risks calling this function many times
+ * or if there's no particular conditional wait in the code for this specific
+ * time-out period to expire.
+ *
+ */
+void Curl_expire_latest(struct SessionHandle *data, long milli)
+{
+  struct timeval *expire = &data->state.expiretime;
+
+  struct timeval set;
+
+  set = Curl_tvnow();
+  set.tv_sec += milli / 1000;
+  set.tv_usec += (milli % 1000) * 1000;
+
+  if(set.tv_usec >= 1000000) {
+    set.tv_sec++;
+    set.tv_usec -= 1000000;
+  }
+
+  if(expire->tv_sec || expire->tv_usec) {
+    /* This means that the struct is added as a node in the splay tree.
+       Compare if the new time is earlier, and only remove-old/add-new if it
+         is. */
+    long diff = curlx_tvdiff(set, *expire);
+    if(diff > 0)
+      /* the new expire time was later than the top time, so just skip this */
+      return;
+  }
+
+  /* Just add the timeout like normal */
+  Curl_expire(data, milli);
+}
+
 CURLMcode curl_multi_assign(CURLM *multi_handle,
                             curl_socket_t s, void *hashp)
 {
 CURLMcode curl_multi_assign(CURLM *multi_handle,
                             curl_socket_t s, void *hashp)
 {
@@ -2698,16 +2770,23 @@ struct curl_llist *Curl_multi_pipelining_server_bl(struct Curl_multi *multi)
 
 void Curl_multi_process_pending_handles(struct Curl_multi *multi)
 {
 
 void Curl_multi_process_pending_handles(struct Curl_multi *multi)
 {
-  struct SessionHandle *easy;
+  struct curl_llist_element *e = multi->pending->head;
+
+  while(e) {
+    struct SessionHandle *data = e->ptr;
+    struct curl_llist_element *next = e->next;
+
+    if(data->mstate == CURLM_STATE_CONNECT_PEND) {
+      multistate(data, CURLM_STATE_CONNECT);
+
+      /* Remove this node from the list */
+      Curl_llist_remove(multi->pending, e, NULL);
 
 
-  easy=multi->easyp;
-  while(easy) {
-    if(easy->mstate == CURLM_STATE_CONNECT_PEND) {
-      multistate(easy, CURLM_STATE_CONNECT);
       /* Make sure that the handle will be processed soonish. */
       /* Make sure that the handle will be processed soonish. */
-      Curl_expire(easy, 1);
+      Curl_expire_latest(data, 1);
     }
     }
-    easy = easy->next; /* operate on next handle */
+
+    e = next; /* operate on next handle */
   }
 }
 
   }
 }
 
@@ -2715,18 +2794,18 @@ void Curl_multi_process_pending_handles(struct Curl_multi *multi)
 void Curl_multi_dump(const struct Curl_multi *multi_handle)
 {
   struct Curl_multi *multi=(struct Curl_multi *)multi_handle;
 void Curl_multi_dump(const struct Curl_multi *multi_handle)
 {
   struct Curl_multi *multi=(struct Curl_multi *)multi_handle;
-  struct SessionHandle *easy;
+  struct SessionHandle *data;
   int i;
   fprintf(stderr, "* Multi status: %d handles, %d alive\n",
           multi->num_easy, multi->num_alive);
   int i;
   fprintf(stderr, "* Multi status: %d handles, %d alive\n",
           multi->num_easy, multi->num_alive);
-  for(easy=multi->easyp; easy; easy = easy->next) {
-    if(easy->mstate < CURLM_STATE_COMPLETED) {
+  for(data=multi->easyp; data; data = data->next) {
+    if(data->mstate < CURLM_STATE_COMPLETED) {
       /* only display handles that are not completed */
       fprintf(stderr, "handle %p, state %s, %d sockets\n",
       /* only display handles that are not completed */
       fprintf(stderr, "handle %p, state %s, %d sockets\n",
-              (void *)easy,
-              statename[easy->mstate], easy->numsocks);
-      for(i=0; i < easy->numsocks; i++) {
-        curl_socket_t s = easy->sockets[i];
+              (void *)data,
+              statename[data->mstate], data->numsocks);
+      for(i=0; i < data->numsocks; i++) {
+        curl_socket_t s = data->sockets[i];
         struct Curl_sh_entry *entry =
           Curl_hash_pick(multi->sockhash, (char *)&s, sizeof(s));
 
         struct Curl_sh_entry *entry =
           Curl_hash_pick(multi->sockhash, (char *)&s, sizeof(s));
 
@@ -2739,7 +2818,7 @@ void Curl_multi_dump(const struct Curl_multi *multi_handle)
                 entry->action&CURL_POLL_IN?"RECVING":"",
                 entry->action&CURL_POLL_OUT?"SENDING":"");
       }
                 entry->action&CURL_POLL_IN?"RECVING":"",
                 entry->action&CURL_POLL_OUT?"SENDING":"");
       }
-      if(easy->numsocks)
+      if(data->numsocks)
         fprintf(stderr, "\n");
     }
   }
         fprintf(stderr, "\n");
     }
   }
index 552aa93..1a4b1d9 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -75,6 +75,9 @@ struct Curl_multi {
 
   struct curl_llist *msglist; /* a list of messages from completed transfers */
 
 
   struct curl_llist *msglist; /* a list of messages from completed transfers */
 
+  struct curl_llist *pending; /* SessionHandles that are in the
+                                 CURLM_STATE_CONNECT_PEND state */
+
   /* callback function and user data pointer for the *socket() API */
   curl_socket_callback socket_cb;
   void *socket_userp;
   /* callback function and user data pointer for the *socket() API */
   curl_socket_callback socket_cb;
   void *socket_userp;
index d1b0e2f..d8acfca 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  ***************************************************************************/
 
  *
  ***************************************************************************/
 
-
-
 /*
  * Prototypes for library-wide functions provided by multi.c
  */
 void Curl_expire(struct SessionHandle *data, long milli);
 /*
  * Prototypes for library-wide functions provided by multi.c
  */
 void Curl_expire(struct SessionHandle *data, long milli);
+void Curl_expire_latest(struct SessionHandle *data, long milli);
 
 bool Curl_multi_pipeline_enabled(const struct Curl_multi* multi);
 void Curl_multi_handlePipeBreak(struct SessionHandle *data);
 
 bool Curl_multi_pipeline_enabled(const struct Curl_multi* multi);
 void Curl_multi_handlePipeBreak(struct SessionHandle *data);
@@ -56,10 +55,6 @@ struct Curl_multi *Curl_multi_handle(int hashsize, int chashsize);
 void Curl_multi_dump(const struct Curl_multi *multi_handle);
 #endif
 
 void Curl_multi_dump(const struct Curl_multi *multi_handle);
 #endif
 
-/* Update the current connection of a One_Easy handle */
-void Curl_multi_set_easy_connection(struct SessionHandle *handle,
-                                    struct connectdata *conn);
-
 void Curl_multi_process_pending_handles(struct Curl_multi *multi);
 
 /* Return the value of the CURLMOPT_MAX_HOST_CONNECTIONS option */
 void Curl_multi_process_pending_handles(struct Curl_multi *multi);
 
 /* Return the value of the CURLMOPT_MAX_HOST_CONNECTIONS option */
@@ -87,7 +82,7 @@ size_t Curl_multi_max_total_connections(struct Curl_multi *multi);
  * Curl_multi_closed()
  *
  * Used by the connect code to tell the multi_socket code that one of the
  * Curl_multi_closed()
  *
  * Used by the connect code to tell the multi_socket code that one of the
- * sockets we were using have just been closed.  This function will then
+ * sockets we were using is about to be closed.  This function will then
  * remove it from the sockethash for this handle to make the multi_socket API
  * behave properly, especially for the case when libcurl will create another
  * socket again and it gets the same file descriptor number.
  * remove it from the sockethash for this handle to make the multi_socket API
  * behave properly, especially for the case when libcurl will create another
  * socket again and it gets the same file descriptor number.
index 2c5942a..7435d94 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -50,17 +50,18 @@ enum host_lookup_state {
 
 /*
  * @unittest: 1304
 
 /*
  * @unittest: 1304
+ *
+ * *loginp and *passwordp MUST be allocated if they aren't NULL when passed
+ * in.
  */
 int Curl_parsenetrc(const char *host,
  */
 int Curl_parsenetrc(const char *host,
-                    char *login,
-                    char *password,
+                    char **loginp,
+                    char **passwordp,
                     char *netrcfile)
 {
   FILE *file;
   int retcode=1;
                     char *netrcfile)
 {
   FILE *file;
   int retcode=1;
-  int specific_login = (login[0] != 0);
-  char *home = NULL;
-  bool home_alloc = FALSE;
+  int specific_login = (*loginp && **loginp != 0);
   bool netrc_alloc = FALSE;
   enum host_lookup_state state=NOTHING;
 
   bool netrc_alloc = FALSE;
   enum host_lookup_state state=NOTHING;
 
@@ -71,10 +72,23 @@ int Curl_parsenetrc(const char *host,
 #define NETRC DOT_CHAR "netrc"
 
   if(!netrcfile) {
 #define NETRC DOT_CHAR "netrc"
 
   if(!netrcfile) {
-    home = curl_getenv("HOME"); /* portable environment reader */
+    bool home_alloc = FALSE;
+    char *home = curl_getenv("HOME"); /* portable environment reader */
     if(home) {
       home_alloc = TRUE;
     if(home) {
       home_alloc = TRUE;
-#if defined(HAVE_GETPWUID) && defined(HAVE_GETEUID)
+#if defined(HAVE_GETPWUID_R) && defined(HAVE_GETEUID)
+    }
+    else {
+      struct passwd pw, *pw_res;
+      char pwbuf[1024];
+      if(!getpwuid_r(geteuid(), &pw, pwbuf, sizeof(pwbuf), &pw_res)
+         && pw_res) {
+        home = strdup(pw.pw_dir);
+        if(!home)
+          return CURLE_OUT_OF_MEMORY;
+        home_alloc = TRUE;
+      }
+#elif defined(HAVE_GETPWUID) && defined(HAVE_GETEUID)
     }
     else {
       struct passwd *pw;
     }
     else {
       struct passwd *pw;
@@ -86,18 +100,20 @@ int Curl_parsenetrc(const char *host,
     }
 
     if(!home)
     }
 
     if(!home)
-      return -1;
+      return retcode; /* no home directory found (or possibly out of memory) */
 
     netrcfile = curl_maprintf("%s%s%s", home, DIR_CHAR, NETRC);
 
     netrcfile = curl_maprintf("%s%s%s", home, DIR_CHAR, NETRC);
+    if(home_alloc)
+      Curl_safefree(home);
     if(!netrcfile) {
     if(!netrcfile) {
-      if(home_alloc)
-        free(home);
       return -1;
     }
     netrc_alloc = TRUE;
   }
 
   file = fopen(netrcfile, "r");
       return -1;
     }
     netrc_alloc = TRUE;
   }
 
   file = fopen(netrcfile, "r");
+  if(netrc_alloc)
+    Curl_safefree(netrcfile);
   if(file) {
     char *tok;
     char *tok_buf;
   if(file) {
     char *tok;
     char *tok_buf;
@@ -109,7 +125,7 @@ int Curl_parsenetrc(const char *host,
       tok=strtok_r(netrcbuffer, " \t\n", &tok_buf);
       while(!done && tok) {
 
       tok=strtok_r(netrcbuffer, " \t\n", &tok_buf);
       while(!done && tok) {
 
-        if(login[0] && password[0]) {
+        if((*loginp && **loginp) && (*passwordp && **passwordp)) {
           done=TRUE;
           break;
         }
           done=TRUE;
           break;
         }
@@ -138,16 +154,26 @@ int Curl_parsenetrc(const char *host,
           /* we are now parsing sub-keywords concerning "our" host */
           if(state_login) {
             if(specific_login) {
           /* we are now parsing sub-keywords concerning "our" host */
           if(state_login) {
             if(specific_login) {
-              state_our_login = Curl_raw_equal(login, tok);
+              state_our_login = Curl_raw_equal(*loginp, tok);
             }
             else {
             }
             else {
-              strncpy(login, tok, LOGINSIZE-1);
+              free(*loginp);
+              *loginp = strdup(tok);
+              if(!*loginp) {
+                retcode = -1; /* allocation failed */
+                goto out;
+              }
             }
             state_login=0;
           }
           else if(state_password) {
             if(state_our_login || !specific_login) {
             }
             state_login=0;
           }
           else if(state_password) {
             if(state_our_login || !specific_login) {
-              strncpy(password, tok, PASSWORDSIZE-1);
+              free(*passwordp);
+              *passwordp = strdup(tok);
+              if(!*passwordp) {
+                retcode = -1; /* allocation failed */
+                goto out;
+              }
             }
             state_password=0;
           }
             }
             state_password=0;
           }
@@ -167,13 +193,9 @@ int Curl_parsenetrc(const char *host,
       } /* while(tok) */
     } /* while fgets() */
 
       } /* while(tok) */
     } /* while fgets() */
 
+    out:
     fclose(file);
   }
 
     fclose(file);
   }
 
-  if(home_alloc)
-    free(home);
-  if(netrc_alloc)
-    free(netrcfile);
-
   return retcode;
 }
   return retcode;
 }
index 4db764d..a145601 100644 (file)
  *
  ***************************************************************************/
 
  *
  ***************************************************************************/
 
-/* Make sure we have room for at least this size: */
-#define LOGINSIZE 64
-#define PASSWORDSIZE 64
-
 /* returns -1 on failure, 0 if the host is found, 1 is the host isn't found */
 int Curl_parsenetrc(const char *host,
 /* returns -1 on failure, 0 if the host is found, 1 is the host isn't found */
 int Curl_parsenetrc(const char *host,
-                    char *login,
-                    char *password,
+                    char **loginp,
+                    char **passwordp,
                     char *filename);
                     char *filename);
-  /* Assume: password[0]=0, host[0] != 0.
-   * If login[0] = 0, search for login and password within a machine section
-   * in the netrc.
-   * If login[0] != 0, search for password within machine and login.
+  /* Assume: (*passwordp)[0]=0, host[0] != 0.
+   * If (*loginp)[0] = 0, search for login and password within a machine
+   * section in the netrc.
+   * If (*loginp)[0] != 0, search for password within machine and login.
    */
 
 #endif /* HEADER_CURL_NETRC_H */
    */
 
 #endif /* HEADER_CURL_NETRC_H */
index 91d6a54..6ccb449 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -82,17 +82,16 @@ CURLcode Curl_convert_clone(struct SessionHandle *data,
 CURLcode Curl_convert_to_network(struct SessionHandle *data,
                                  char *buffer, size_t length)
 {
 CURLcode Curl_convert_to_network(struct SessionHandle *data,
                                  char *buffer, size_t length)
 {
-  CURLcode rc;
-
   if(data->set.convtonetwork) {
     /* use translation callback */
   if(data->set.convtonetwork) {
     /* use translation callback */
-    rc = data->set.convtonetwork(buffer, length);
-    if(rc != CURLE_OK) {
+    CURLcode result = data->set.convtonetwork(buffer, length);
+    if(result) {
       failf(data,
             "CURLOPT_CONV_TO_NETWORK_FUNCTION callback returned %d: %s",
       failf(data,
             "CURLOPT_CONV_TO_NETWORK_FUNCTION callback returned %d: %s",
-            (int)rc, curl_easy_strerror(rc));
+            (int)result, curl_easy_strerror(result));
     }
     }
-    return rc;
+
+    return result;
   }
   else {
 #ifdef HAVE_ICONV
   }
   else {
 #ifdef HAVE_ICONV
@@ -143,17 +142,16 @@ CURLcode Curl_convert_to_network(struct SessionHandle *data,
 CURLcode Curl_convert_from_network(struct SessionHandle *data,
                                    char *buffer, size_t length)
 {
 CURLcode Curl_convert_from_network(struct SessionHandle *data,
                                    char *buffer, size_t length)
 {
-  CURLcode rc;
-
   if(data->set.convfromnetwork) {
     /* use translation callback */
   if(data->set.convfromnetwork) {
     /* use translation callback */
-    rc = data->set.convfromnetwork(buffer, length);
-    if(rc != CURLE_OK) {
+    CURLcode result = data->set.convfromnetwork(buffer, length);
+    if(result) {
       failf(data,
             "CURLOPT_CONV_FROM_NETWORK_FUNCTION callback returned %d: %s",
       failf(data,
             "CURLOPT_CONV_FROM_NETWORK_FUNCTION callback returned %d: %s",
-            (int)rc, curl_easy_strerror(rc));
+            (int)result, curl_easy_strerror(result));
     }
     }
-    return rc;
+
+    return result;
   }
   else {
 #ifdef HAVE_ICONV
   }
   else {
 #ifdef HAVE_ICONV
@@ -204,17 +202,16 @@ CURLcode Curl_convert_from_network(struct SessionHandle *data,
 CURLcode Curl_convert_from_utf8(struct SessionHandle *data,
                                 char *buffer, size_t length)
 {
 CURLcode Curl_convert_from_utf8(struct SessionHandle *data,
                                 char *buffer, size_t length)
 {
-  CURLcode rc;
-
   if(data->set.convfromutf8) {
     /* use translation callback */
   if(data->set.convfromutf8) {
     /* use translation callback */
-    rc = data->set.convfromutf8(buffer, length);
-    if(rc != CURLE_OK) {
+    CURLcode result = data->set.convfromutf8(buffer, length);
+    if(result) {
       failf(data,
             "CURLOPT_CONV_FROM_UTF8_FUNCTION callback returned %d: %s",
       failf(data,
             "CURLOPT_CONV_FROM_UTF8_FUNCTION callback returned %d: %s",
-            (int)rc, curl_easy_strerror(rc));
+            (int)result, curl_easy_strerror(result));
     }
     }
-    return rc;
+
+    return result;
   }
   else {
 #ifdef HAVE_ICONV
   }
   else {
 #ifdef HAVE_ICONV
@@ -319,24 +316,22 @@ void Curl_convert_close(struct SessionHandle *data)
  */
 CURLcode Curl_convert_form(struct SessionHandle *data, struct FormData *form)
 {
  */
 CURLcode Curl_convert_form(struct SessionHandle *data, struct FormData *form)
 {
-  struct FormData *next;
-  CURLcode rc;
-
-  if(!form)
-    return CURLE_OK;
+  CURLcode result;
 
   if(!data)
     return CURLE_BAD_FUNCTION_ARGUMENT;
 
 
   if(!data)
     return CURLE_BAD_FUNCTION_ARGUMENT;
 
-  do {
-    next=form->next;  /* the following form line */
+  while(form) {
     if(form->type == FORM_DATA) {
     if(form->type == FORM_DATA) {
-      rc = Curl_convert_to_network(data, form->line, form->length);
+      result = Curl_convert_to_network(data, form->line, form->length);
       /* Curl_convert_to_network calls failf if unsuccessful */
       /* Curl_convert_to_network calls failf if unsuccessful */
-      if(rc != CURLE_OK)
-        return rc;
+      if(result)
+        return result;
     }
     }
-  } while((form = next) != NULL); /* continue */
+
+    form = form->next;
+  }
+
   return CURLE_OK;
 }
 
   return CURLE_OK;
 }
 
index cb3b420..b94c034 100644 (file)
@@ -5,8 +5,8 @@
  *                | (__| |_| |  _ <| |___
  *                 \___|\___/|_| \_\_____|
  *
  *                | (__| |_| |  _ <| |___
  *                 \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2010, Howard Chu, <hyc@openldap.org>
- * Copyright (C) 2011 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2010, 2013, Howard Chu, <hyc@openldap.org>
+ * Copyright (C) 2011 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "urldata.h"
 #include <curl/curl.h>
 #include "sendf.h"
 #include "urldata.h"
 #include <curl/curl.h>
 #include "sendf.h"
-#include "sslgen.h"
+#include "vtls/vtls.h"
 #include "transfer.h"
 #include "curl_ldap.h"
 #include "curl_memory.h"
 #include "curl_base64.h"
 #include "transfer.h"
 #include "curl_ldap.h"
 #include "curl_memory.h"
 #include "curl_base64.h"
+#include "connect.h"
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
@@ -58,7 +59,7 @@ extern int ldap_init_fd(ber_socket_t fd, int proto, const char *url,
                         LDAP **ld);
 #endif
 
                         LDAP **ld);
 #endif
 
-static CURLcode ldap_setup(struct connectdata *conn);
+static CURLcode ldap_setup_connection(struct connectdata *conn);
 static CURLcode ldap_do(struct connectdata *conn, bool *done);
 static CURLcode ldap_done(struct connectdata *conn, CURLcode, bool);
 static CURLcode ldap_connect(struct connectdata *conn, bool *done);
 static CURLcode ldap_do(struct connectdata *conn, bool *done);
 static CURLcode ldap_done(struct connectdata *conn, CURLcode, bool);
 static CURLcode ldap_connect(struct connectdata *conn, bool *done);
@@ -73,7 +74,7 @@ static Curl_recv ldap_recv;
 
 const struct Curl_handler Curl_handler_ldap = {
   "LDAP",                               /* scheme */
 
 const struct Curl_handler Curl_handler_ldap = {
   "LDAP",                               /* scheme */
-  ldap_setup,                           /* setup_connection */
+  ldap_setup_connection,                /* setup_connection */
   ldap_do,                              /* do_it */
   ldap_done,                            /* done */
   ZERO_NULL,                            /* do_more */
   ldap_do,                              /* do_it */
   ldap_done,                            /* done */
   ZERO_NULL,                            /* do_more */
@@ -98,7 +99,7 @@ const struct Curl_handler Curl_handler_ldap = {
 
 const struct Curl_handler Curl_handler_ldaps = {
   "LDAPS",                              /* scheme */
 
 const struct Curl_handler Curl_handler_ldaps = {
   "LDAPS",                              /* scheme */
-  ldap_setup,                           /* setup_connection */
+  ldap_setup_connection,                /* setup_connection */
   ldap_do,                              /* do_it */
   ldap_done,                            /* done */
   ZERO_NULL,                            /* do_more */
   ldap_do,                              /* do_it */
   ldap_done,                            /* done */
   ZERO_NULL,                            /* do_more */
@@ -147,7 +148,7 @@ typedef struct ldapreqinfo {
   int nument;
 } ldapreqinfo;
 
   int nument;
 } ldapreqinfo;
 
-static CURLcode ldap_setup(struct connectdata *conn)
+static CURLcode ldap_setup_connection(struct connectdata *conn)
 {
   ldapconninfo *li;
   LDAPURLDesc *lud;
 {
   ldapconninfo *li;
   LDAPURLDesc *lud;
@@ -175,7 +176,7 @@ static CURLcode ldap_setup(struct connectdata *conn)
     return CURLE_OUT_OF_MEMORY;
   li->proto = proto;
   conn->proto.generic = li;
     return CURLE_OUT_OF_MEMORY;
   li->proto = proto;
   conn->proto.generic = li;
-  conn->bits.close = FALSE;
+  connkeep(conn, "OpenLDAP default");
   /* TODO:
    * - provide option to choose SASL Binds instead of Simple
    */
   /* TODO:
    * - provide option to choose SASL Binds instead of Simple
    */
@@ -189,9 +190,11 @@ static Sockbuf_IO ldapsb_tls;
 static CURLcode ldap_connect(struct connectdata *conn, bool *done)
 {
   ldapconninfo *li = conn->proto.generic;
 static CURLcode ldap_connect(struct connectdata *conn, bool *done)
 {
   ldapconninfo *li = conn->proto.generic;
-  struct SessionHandle *data=conn->data;
+  struct SessionHandle *data = conn->data;
   int rc, proto = LDAP_VERSION3;
   int rc, proto = LDAP_VERSION3;
-  char hosturl[1024], *ptr;
+  char hosturl[1024];
+  char *ptr;
+
   (void)done;
 
   strcpy(hosturl, "ldap");
   (void)done;
 
   strcpy(hosturl, "ldap");
@@ -212,10 +215,10 @@ static CURLcode ldap_connect(struct connectdata *conn, bool *done)
 
 #ifdef USE_SSL
   if(conn->handler->flags & PROTOPT_SSL) {
 
 #ifdef USE_SSL
   if(conn->handler->flags & PROTOPT_SSL) {
-    CURLcode res;
-    res = Curl_ssl_connect_nonblocking(conn, FIRSTSOCKET, &li->ssldone);
-    if(res)
-      return res;
+    CURLcode result;
+    result = Curl_ssl_connect_nonblocking(conn, FIRSTSOCKET, &li->ssldone);
+    if(result)
+      return result;
   }
 #endif
 
   }
 #endif
 
@@ -225,8 +228,8 @@ static CURLcode ldap_connect(struct connectdata *conn, bool *done)
 static CURLcode ldap_connecting(struct connectdata *conn, bool *done)
 {
   ldapconninfo *li = conn->proto.generic;
 static CURLcode ldap_connecting(struct connectdata *conn, bool *done)
 {
   ldapconninfo *li = conn->proto.generic;
-  struct SessionHandle *data=conn->data;
-  LDAPMessage *result = NULL;
+  struct SessionHandle *data = conn->data;
+  LDAPMessage *msg = NULL;
   struct timeval tv = {0,1}, *tvp;
   int rc, err;
   char *info = NULL;
   struct timeval tv = {0,1}, *tvp;
   int rc, err;
   char *info = NULL;
@@ -235,11 +238,12 @@ static CURLcode ldap_connecting(struct connectdata *conn, bool *done)
   if(conn->handler->flags & PROTOPT_SSL) {
     /* Is the SSL handshake complete yet? */
     if(!li->ssldone) {
   if(conn->handler->flags & PROTOPT_SSL) {
     /* Is the SSL handshake complete yet? */
     if(!li->ssldone) {
-      CURLcode res = Curl_ssl_connect_nonblocking(conn, FIRSTSOCKET,
-                                                  &li->ssldone);
-      if(res || !li->ssldone)
-        return res;
+      CURLcode result = Curl_ssl_connect_nonblocking(conn, FIRSTSOCKET,
+                                                     &li->ssldone);
+      if(result || !li->ssldone)
+        return result;
     }
     }
+
     /* Have we installed the libcurl SSL handlers into the sockbuf yet? */
     if(!li->sslinst) {
       Sockbuf *sb;
     /* Have we installed the libcurl SSL handlers into the sockbuf yet? */
     if(!li->sslinst) {
       Sockbuf *sb;
@@ -278,7 +282,7 @@ retry:
       return CURLE_OK;
   }
 
       return CURLE_OK;
   }
 
-  rc = ldap_result(li->ld, li->msgid, LDAP_MSG_ONE, tvp, &result);
+  rc = ldap_result(li->ld, li->msgid, LDAP_MSG_ONE, tvp, &msg);
   if(rc < 0) {
     failf(data, "LDAP local: bind ldap_result %s", ldap_err2string(rc));
     return CURLE_LDAP_CANNOT_BIND;
   if(rc < 0) {
     failf(data, "LDAP local: bind ldap_result %s", ldap_err2string(rc));
     return CURLE_LDAP_CANNOT_BIND;
@@ -287,11 +291,13 @@ retry:
     /* timed out */
     return CURLE_OK;
   }
     /* timed out */
     return CURLE_OK;
   }
-  rc = ldap_parse_result(li->ld, result, &err, NULL, &info, NULL, NULL, 1);
+
+  rc = ldap_parse_result(li->ld, msg, &err, NULL, &info, NULL, NULL, 1);
   if(rc) {
     failf(data, "LDAP local: bind ldap_parse_result %s", ldap_err2string(rc));
     return CURLE_LDAP_CANNOT_BIND;
   }
   if(rc) {
     failf(data, "LDAP local: bind ldap_parse_result %s", ldap_err2string(rc));
     return CURLE_LDAP_CANNOT_BIND;
   }
+
   /* Try to fallback to LDAPv2? */
   if(err == LDAP_PROTOCOL_ERROR) {
     int proto;
   /* Try to fallback to LDAPv2? */
   if(err == LDAP_PROTOCOL_ERROR) {
     int proto;
@@ -320,6 +326,7 @@ retry:
     ldap_memfree(info);
   conn->recv[FIRSTSOCKET] = ldap_recv;
   *done = TRUE;
     ldap_memfree(info);
   conn->recv[FIRSTSOCKET] = ldap_recv;
   *done = TRUE;
+
   return CURLE_OK;
 }
 
   return CURLE_OK;
 }
 
@@ -349,7 +356,7 @@ static CURLcode ldap_do(struct connectdata *conn, bool *done)
   int msgid;
   struct SessionHandle *data=conn->data;
 
   int msgid;
   struct SessionHandle *data=conn->data;
 
-  conn->bits.close = FALSE;
+  connkeep(conn, "OpenLDAP do");
 
   infof(data, "LDAP local: %s\n", data->change.url);
 
 
   infof(data, "LDAP local: %s\n", data->change.url);
 
@@ -378,7 +385,7 @@ static CURLcode ldap_do(struct connectdata *conn, bool *done)
   if(!lr)
     return CURLE_OUT_OF_MEMORY;
   lr->msgid = msgid;
   if(!lr)
     return CURLE_OUT_OF_MEMORY;
   lr->msgid = msgid;
-  data->state.proto.generic = lr;
+  data->req.protop = lr;
   Curl_setup_transfer(conn, FIRSTSOCKET, -1, FALSE, NULL, -1, NULL);
   *done = TRUE;
   return CURLE_OK;
   Curl_setup_transfer(conn, FIRSTSOCKET, -1, FALSE, NULL, -1, NULL);
   *done = TRUE;
   return CURLE_OK;
@@ -387,7 +394,8 @@ static CURLcode ldap_do(struct connectdata *conn, bool *done)
 static CURLcode ldap_done(struct connectdata *conn, CURLcode res,
                           bool premature)
 {
 static CURLcode ldap_done(struct connectdata *conn, CURLcode res,
                           bool premature)
 {
-  ldapreqinfo *lr = conn->data->state.proto.generic;
+  ldapreqinfo *lr = conn->data->req.protop;
+
   (void)res;
   (void)premature;
 
   (void)res;
   (void)premature;
 
@@ -398,9 +406,10 @@ static CURLcode ldap_done(struct connectdata *conn, CURLcode res,
       ldap_abandon_ext(li->ld, lr->msgid, NULL, NULL);
       lr->msgid = 0;
     }
       ldap_abandon_ext(li->ld, lr->msgid, NULL, NULL);
       lr->msgid = 0;
     }
-    conn->data->state.proto.generic = NULL;
+    conn->data->req.protop = NULL;
     free(lr);
   }
     free(lr);
   }
+
   return CURLE_OK;
 }
 
   return CURLE_OK;
 }
 
@@ -408,18 +417,19 @@ static ssize_t ldap_recv(struct connectdata *conn, int sockindex, char *buf,
                          size_t len, CURLcode *err)
 {
   ldapconninfo *li = conn->proto.generic;
                          size_t len, CURLcode *err)
 {
   ldapconninfo *li = conn->proto.generic;
-  struct SessionHandle *data=conn->data;
-  ldapreqinfo *lr = data->state.proto.generic;
+  struct SessionHandle *data = conn->data;
+  ldapreqinfo *lr = data->req.protop;
   int rc, ret;
   int rc, ret;
-  LDAPMessage *result = NULL;
+  LDAPMessage *msg = NULL;
   LDAPMessage *ent;
   BerElement *ber = NULL;
   struct timeval tv = {0,1};
   LDAPMessage *ent;
   BerElement *ber = NULL;
   struct timeval tv = {0,1};
+
   (void)len;
   (void)buf;
   (void)sockindex;
 
   (void)len;
   (void)buf;
   (void)sockindex;
 
-  rc = ldap_result(li->ld, lr->msgid, LDAP_MSG_RECEIVED, &tv, &result);
+  rc = ldap_result(li->ld, lr->msgid, LDAP_MSG_RECEIVED, &tv, &msg);
   if(rc < 0) {
     failf(data, "LDAP local: search ldap_result %s", ldap_err2string(rc));
     *err = CURLE_RECV_ERROR;
   if(rc < 0) {
     failf(data, "LDAP local: search ldap_result %s", ldap_err2string(rc));
     *err = CURLE_RECV_ERROR;
@@ -430,10 +440,10 @@ static ssize_t ldap_recv(struct connectdata *conn, int sockindex, char *buf,
   ret = -1;
 
   /* timed out */
   ret = -1;
 
   /* timed out */
-  if(result == NULL)
+  if(!msg)
     return ret;
 
     return ret;
 
-  for(ent = ldap_first_message(li->ld, result); ent;
+  for(ent = ldap_first_message(li->ld, msg); ent;
     ent = ldap_next_message(li->ld, ent)) {
     struct berval bv, *bvals, **bvp = &bvals;
     int binary = 0, msgtype;
     ent = ldap_next_message(li->ld, ent)) {
     struct berval bv, *bvals, **bvp = &bvals;
     int binary = 0, msgtype;
@@ -476,9 +486,18 @@ static ssize_t ldap_recv(struct connectdata *conn, int sockindex, char *buf,
       *err = CURLE_RECV_ERROR;
       return -1;
     }
       *err = CURLE_RECV_ERROR;
       return -1;
     }
-    Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"DN: ", 4);
-    Curl_client_write(conn, CLIENTWRITE_BODY, (char *)bv.bv_val, bv.bv_len);
-    Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\n", 1);
+    *err = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"DN: ", 4);
+    if(*err)
+      return -1;
+
+    *err = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)bv.bv_val,
+                             bv.bv_len);
+    if(*err)
+      return -1;
+
+    *err = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\n", 1);
+    if(*err)
+      return -1;
     data->req.bytecount += bv.bv_len + 5;
 
     for(rc = ldap_get_attribute_ber(li->ld, ent, ber, &bv, bvp);
     data->req.bytecount += bv.bv_len + 5;
 
     for(rc = ldap_get_attribute_ber(li->ld, ent, ber, &bv, bvp);
@@ -495,10 +514,18 @@ static ssize_t ldap_recv(struct connectdata *conn, int sockindex, char *buf,
 
       for(i=0; bvals[i].bv_val != NULL; i++) {
         int binval = 0;
 
       for(i=0; bvals[i].bv_val != NULL; i++) {
         int binval = 0;
-        Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\t", 1);
-        Curl_client_write(conn, CLIENTWRITE_BODY, (char *)bv.bv_val,
-                          bv.bv_len);
-        Curl_client_write(conn, CLIENTWRITE_BODY, (char *)":", 1);
+        *err = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\t", 1);
+        if(*err)
+          return -1;
+
+        *err = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)bv.bv_val,
+                                 bv.bv_len);
+        if(*err)
+          return -1;
+
+        *err = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)":", 1);
+        if(*err)
+          return -1;
         data->req.bytecount += bv.bv_len + 2;
 
         if(!binary) {
         data->req.bytecount += bv.bv_len + 2;
 
         if(!binary) {
@@ -528,36 +555,55 @@ static ssize_t ldap_recv(struct connectdata *conn, int sockindex, char *buf,
           if(error) {
             ber_memfree(bvals);
             ber_free(ber, 0);
           if(error) {
             ber_memfree(bvals);
             ber_free(ber, 0);
-            ldap_msgfree(result);
+            ldap_msgfree(msg);
             *err = error;
             return -1;
           }
             *err = error;
             return -1;
           }
-          Curl_client_write(conn, CLIENTWRITE_BODY, (char *)": ", 2);
+          *err = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)": ", 2);
+          if(*err)
+            return -1;
+
           data->req.bytecount += 2;
           if(val_b64_sz > 0) {
           data->req.bytecount += 2;
           if(val_b64_sz > 0) {
-            Curl_client_write(conn, CLIENTWRITE_BODY, val_b64, val_b64_sz);
+            *err = Curl_client_write(conn, CLIENTWRITE_BODY, val_b64,
+                                     val_b64_sz);
+            if(*err)
+              return -1;
             free(val_b64);
             data->req.bytecount += val_b64_sz;
           }
         }
         else {
             free(val_b64);
             data->req.bytecount += val_b64_sz;
           }
         }
         else {
-          Curl_client_write(conn, CLIENTWRITE_BODY, (char *)" ", 1);
-          Curl_client_write(conn, CLIENTWRITE_BODY, bvals[i].bv_val,
-                            bvals[i].bv_len);
+          *err = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)" ", 1);
+          if(*err)
+            return -1;
+
+          *err = Curl_client_write(conn, CLIENTWRITE_BODY, bvals[i].bv_val,
+                                   bvals[i].bv_len);
+          if(*err)
+            return -1;
+
           data->req.bytecount += bvals[i].bv_len + 1;
         }
           data->req.bytecount += bvals[i].bv_len + 1;
         }
-        Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\n", 0);
+        *err = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\n", 0);
+        if(*err)
+          return -1;
+
         data->req.bytecount++;
       }
       ber_memfree(bvals);
         data->req.bytecount++;
       }
       ber_memfree(bvals);
-      Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\n", 0);
+      *err = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\n", 0);
+      if(*err)
+        return -1;
       data->req.bytecount++;
     }
       data->req.bytecount++;
     }
-    Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\n", 0);
+    *err = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\n", 0);
+    if(*err)
+      return -1;
     data->req.bytecount++;
     ber_free(ber, 0);
   }
     data->req.bytecount++;
     ber_free(ber, 0);
   }
-  ldap_msgfree(result);
+  ldap_msgfree(msg);
   return ret;
 }
 
   return ret;
 }
 
index 1ddd008..3e168f5 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -353,9 +353,11 @@ static int parsedate(const char *date, time_t *output)
       /* a name coming up */
       char buf[32]="";
       size_t len;
       /* a name coming up */
       char buf[32]="";
       size_t len;
-      sscanf(date, "%31[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]",
-             buf);
-      len = strlen(buf);
+      if(sscanf(date, "%31[ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+                          "abcdefghijklmnopqrstuvwxyz]", buf))
+        len = strlen(buf);
+      else
+        len = 0;
 
       if(wdaynum == -1) {
         wdaynum = checkday(buf, len);
 
       if(wdaynum == -1) {
         wdaynum = checkday(buf, len);
@@ -410,8 +412,10 @@ static int parsedate(const char *date, time_t *output)
         if(error)
           return PARSEDATE_FAIL;
 
         if(error)
           return PARSEDATE_FAIL;
 
+#if LONG_MAX != INT_MAX
         if((lval > (long)INT_MAX) || (lval < (long)INT_MIN))
           return PARSEDATE_FAIL;
         if((lval > (long)INT_MAX) || (lval < (long)INT_MIN))
           return PARSEDATE_FAIL;
+#endif
 
         val = curlx_sltosi(lval);
 
 
         val = curlx_sltosi(lval);
 
@@ -526,8 +530,10 @@ static int parsedate(const char *date, time_t *output)
     /* Add the time zone diff between local time zone and GMT. */
     long delta = (long)(tzoff!=-1?tzoff:0);
 
     /* Add the time zone diff between local time zone and GMT. */
     long delta = (long)(tzoff!=-1?tzoff:0);
 
-    if((delta>0) && (t + delta < t))
-      return -1; /* time_t overflow */
+    if((delta>0) && (t > LONG_MAX - delta)) {
+      *output = 0x7fffffff;
+      return PARSEDATE_LATER; /* time_t overflow */
+    }
 
     t += delta;
   }
 
     t += delta;
   }
@@ -539,7 +545,7 @@ static int parsedate(const char *date, time_t *output)
 
 time_t curl_getdate(const char *p, const time_t *now)
 {
 
 time_t curl_getdate(const char *p, const time_t *now)
 {
-  time_t parsed;
+  time_t parsed = -1;
   int rc = parsedate(p, &parsed);
   (void)now; /* legacy argument from the past that we ignore */
 
   int rc = parsedate(p, &parsed);
   (void)now; /* legacy argument from the past that we ignore */
 
@@ -557,9 +563,6 @@ time_t curl_getdate(const char *p, const time_t *now)
  * Curl_gmtime() is a gmtime() replacement for portability. Do not use the
  * gmtime_r() or gmtime() functions anywhere else but here.
  *
  * Curl_gmtime() is a gmtime() replacement for portability. Do not use the
  * gmtime_r() or gmtime() functions anywhere else but here.
  *
- * To make sure no such function calls slip in, we define them to cause build
- * errors, which is why we use the name within parentheses in this function.
- *
  */
 
 CURLcode Curl_gmtime(time_t intime, struct tm *store)
  */
 
 CURLcode Curl_gmtime(time_t intime, struct tm *store)
index 0040b3f..2c2741f 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -33,6 +33,7 @@
 #include "pingpong.h"
 #include "multiif.h"
 #include "non-ascii.h"
 #include "pingpong.h"
 #include "multiif.h"
 #include "non-ascii.h"
+#include "vtls/vtls.h"
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
@@ -105,6 +106,9 @@ CURLcode Curl_pp_statemach(struct pingpong *pp, bool block)
   if(Curl_pp_moredata(pp))
     /* We are receiving and there is data in the cache so just read it */
     rc = 1;
   if(Curl_pp_moredata(pp))
     /* We are receiving and there is data in the cache so just read it */
     rc = 1;
+  else if(!pp->sendleft && Curl_ssl_data_pending(conn, FIRSTSOCKET))
+    /* We are receiving and there is data ready in the SSL library */
+    rc = 1;
   else
     rc = Curl_socket_ready(pp->sendleft?CURL_SOCKET_BAD:sock, /* reading */
                            pp->sendleft?sock:CURL_SOCKET_BAD, /* writing */
   else
     rc = Curl_socket_ready(pp->sendleft?CURL_SOCKET_BAD:sock, /* reading */
                            pp->sendleft?sock:CURL_SOCKET_BAD, /* writing */
@@ -161,11 +165,11 @@ CURLcode Curl_pp_vsendf(struct pingpong *pp,
   size_t write_len;
   char *fmt_crlf;
   char *s;
   size_t write_len;
   char *fmt_crlf;
   char *s;
-  CURLcode error;
+  CURLcode result;
   struct connectdata *conn = pp->conn;
   struct SessionHandle *data = conn->data;
 
   struct connectdata *conn = pp->conn;
   struct SessionHandle *data = conn->data;
 
-#if defined(HAVE_KRB4) || defined(HAVE_GSSAPI)
+#ifdef HAVE_GSSAPI
   enum protection_level data_sec = conn->data_prot;
 #endif
 
   enum protection_level data_sec = conn->data_prot;
 #endif
 
@@ -187,26 +191,26 @@ CURLcode Curl_pp_vsendf(struct pingpong *pp,
 
   Curl_pp_init(pp);
 
 
   Curl_pp_init(pp);
 
-  error = Curl_convert_to_network(data, s, write_len);
+  result = Curl_convert_to_network(data, s, write_len);
   /* Curl_convert_to_network calls failf if unsuccessful */
   /* Curl_convert_to_network calls failf if unsuccessful */
-  if(error) {
+  if(result) {
     free(s);
     free(s);
-    return error;
+    return result;
   }
 
   }
 
-#if defined(HAVE_KRB4) || defined(HAVE_GSSAPI)
+#ifdef HAVE_GSSAPI
   conn->data_prot = PROT_CMD;
 #endif
   conn->data_prot = PROT_CMD;
 #endif
-  error = Curl_write(conn, conn->sock[FIRSTSOCKET], s, write_len,
+  result = Curl_write(conn, conn->sock[FIRSTSOCKET], s, write_len,
                      &bytes_written);
                      &bytes_written);
-#if defined(HAVE_KRB4) || defined(HAVE_GSSAPI)
+#ifdef HAVE_GSSAPI
   DEBUGASSERT(data_sec > PROT_NONE && data_sec < PROT_LAST);
   conn->data_prot = data_sec;
 #endif
 
   DEBUGASSERT(data_sec > PROT_NONE && data_sec < PROT_LAST);
   conn->data_prot = data_sec;
 #endif
 
-  if(error) {
+  if(result) {
     free(s);
     free(s);
-    return error;
+    return result;
   }
 
   if(conn->data->set.verbose)
   }
 
   if(conn->data->set.verbose)
@@ -243,15 +247,15 @@ CURLcode Curl_pp_vsendf(struct pingpong *pp,
 CURLcode Curl_pp_sendf(struct pingpong *pp,
                        const char *fmt, ...)
 {
 CURLcode Curl_pp_sendf(struct pingpong *pp,
                        const char *fmt, ...)
 {
-  CURLcode res;
+  CURLcode result;
   va_list ap;
   va_start(ap, fmt);
 
   va_list ap;
   va_start(ap, fmt);
 
-  res = Curl_pp_vsendf(pp, fmt, ap);
+  result = Curl_pp_vsendf(pp, fmt, ap);
 
   va_end(ap);
 
 
   va_end(ap);
 
-  return res;
+  return result;
 }
 
 /*
 }
 
 /*
@@ -281,8 +285,6 @@ CURLcode Curl_pp_readresp(curl_socket_t sockfd,
   /* number of bytes in the current line, so far */
   perline = (ssize_t)(ptr-pp->linestart_resp);
 
   /* number of bytes in the current line, so far */
   perline = (ssize_t)(ptr-pp->linestart_resp);
 
-  keepon=TRUE;
-
   while((pp->nread_resp<BUFSIZE) && (keepon && !result)) {
 
     if(pp->cache) {
   while((pp->nread_resp<BUFSIZE) && (keepon && !result)) {
 
     if(pp->cache) {
@@ -301,30 +303,28 @@ CURLcode Curl_pp_readresp(curl_socket_t sockfd,
       pp->cache_size = 0; /* zero the size just in case */
     }
     else {
       pp->cache_size = 0; /* zero the size just in case */
     }
     else {
-      int res;
-#if defined(HAVE_KRB4) || defined(HAVE_GSSAPI)
+#ifdef HAVE_GSSAPI
       enum protection_level prot = conn->data_prot;
       conn->data_prot = PROT_CLEAR;
 #endif
       DEBUGASSERT((ptr+BUFSIZE-pp->nread_resp) <= (buf+BUFSIZE+1));
       enum protection_level prot = conn->data_prot;
       conn->data_prot = PROT_CLEAR;
 #endif
       DEBUGASSERT((ptr+BUFSIZE-pp->nread_resp) <= (buf+BUFSIZE+1));
-      res = Curl_read(conn, sockfd, ptr, BUFSIZE-pp->nread_resp,
-                      &gotbytes);
-#if defined(HAVE_KRB4) || defined(HAVE_GSSAPI)
+      result = Curl_read(conn, sockfd, ptr, BUFSIZE-pp->nread_resp,
+                         &gotbytes);
+#ifdef HAVE_GSSAPI
       DEBUGASSERT(prot  > PROT_NONE && prot < PROT_LAST);
       conn->data_prot = prot;
 #endif
       DEBUGASSERT(prot  > PROT_NONE && prot < PROT_LAST);
       conn->data_prot = prot;
 #endif
-      if(res == CURLE_AGAIN)
+      if(result == CURLE_AGAIN)
         return CURLE_OK; /* return */
 
         return CURLE_OK; /* return */
 
-      if((res == CURLE_OK) && (gotbytes > 0))
+      if(!result && (gotbytes > 0))
         /* convert from the network encoding */
         /* convert from the network encoding */
-        res = Curl_convert_from_network(data, ptr, gotbytes);
+        result = Curl_convert_from_network(data, ptr, gotbytes);
       /* Curl_convert_from_network calls failf if unsuccessful */
 
       /* Curl_convert_from_network calls failf if unsuccessful */
 
-      if(CURLE_OK != res) {
-        result = (CURLcode)res; /* Set outer result variable to this error. */
+      if(result)
+        /* Set outer result variable to this error. */
         keepon = FALSE;
         keepon = FALSE;
-      }
     }
 
     if(!keepon)
     }
 
     if(!keepon)
@@ -352,7 +352,7 @@ CURLcode Curl_pp_readresp(curl_socket_t sockfd,
              the line isn't really terminated until the LF comes */
 
           /* output debug output if that is requested */
              the line isn't really terminated until the LF comes */
 
           /* output debug output if that is requested */
-#if defined(HAVE_KRB4) || defined(HAVE_GSSAPI)
+#ifdef HAVE_GSSAPI
           if(!conn->sec_complete)
 #endif
             if(data->set.verbose)
           if(!conn->sec_complete)
 #endif
             if(data->set.verbose)
@@ -371,13 +371,10 @@ CURLcode Curl_pp_readresp(curl_socket_t sockfd,
 
           if(pp->endofresp(conn, pp->linestart_resp, perline, code)) {
             /* This is the end of the last line, copy the last line to the
 
           if(pp->endofresp(conn, pp->linestart_resp, perline, code)) {
             /* This is the end of the last line, copy the last line to the
-               start of the buffer and zero terminate, for old times sake (and
-               krb4)! */
-            char *meow;
-            int n;
-            for(meow=pp->linestart_resp, n=0; meow<ptr; meow++, n++)
-              buf[n] = *meow;
-            *meow=0; /* zero terminate */
+               start of the buffer and zero terminate, for old times sake */
+            size_t n = ptr - pp->linestart_resp;
+            memmove(buf, pp->linestart_resp, n);
+            buf[n]=0; /* zero terminate */
             keepon=FALSE;
             pp->linestart_resp = ptr+1; /* advance pointer */
             i++; /* skip this before getting out */
             keepon=FALSE;
             pp->linestart_resp = ptr+1; /* advance pointer */
             i++; /* skip this before getting out */
@@ -477,11 +474,9 @@ CURLcode Curl_pp_flushsend(struct pingpong *pp)
   /* we have a piece of a command still left to send */
   struct connectdata *conn = pp->conn;
   ssize_t written;
   /* we have a piece of a command still left to send */
   struct connectdata *conn = pp->conn;
   ssize_t written;
-  CURLcode result = CURLE_OK;
   curl_socket_t sock = conn->sock[FIRSTSOCKET];
   curl_socket_t sock = conn->sock[FIRSTSOCKET];
-
-  result = Curl_write(conn, sock, pp->sendthis + pp->sendsize -
-                      pp->sendleft, pp->sendleft, &written);
+  CURLcode result = Curl_write(conn, sock, pp->sendthis + pp->sendsize -
+                               pp->sendleft, pp->sendleft, &written);
   if(result)
     return result;
 
   if(result)
     return result;
 
index 418058a..2645fdb 100644 (file)
@@ -6,7 +6,7 @@
  *                             \___|\___/|_| \_\_____|
  *
  * Copyright (C) 2013, Linus Nielsen Feltzing, <linus@haxx.se>
  *                             \___|\___/|_| \_\_____|
  *
  * Copyright (C) 2013, Linus Nielsen Feltzing, <linus@haxx.se>
- * Copyright (C) 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2013-2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -85,8 +85,8 @@ bool Curl_pipeline_penalized(struct SessionHandle *data,
        (curl_off_t)conn->chunk.datasize > chunk_penalty_size)
       penalized = TRUE;
 
        (curl_off_t)conn->chunk.datasize > chunk_penalty_size)
       penalized = TRUE;
 
-    infof(data, "Conn: %ld (%p) Receive pipe weight: (%" FORMAT_OFF_T
-          "/%zu), penalized: %s\n",
+    infof(data, "Conn: %ld (%p) Receive pipe weight: (%"
+          CURL_FORMAT_CURL_OFF_T "/%zu), penalized: %s\n",
           conn->connection_id, (void *)conn, recv_size,
           conn->chunk.datasize, penalized?"TRUE":"FALSE");
     return penalized;
           conn->connection_id, (void *)conn, recv_size,
           conn->chunk.datasize, penalized?"TRUE":"FALSE");
     return penalized;
@@ -99,28 +99,23 @@ CURLcode Curl_add_handle_to_pipeline(struct SessionHandle *handle,
 {
   struct curl_llist_element *sendhead = conn->send_pipe->head;
   struct curl_llist *pipeline;
 {
   struct curl_llist_element *sendhead = conn->send_pipe->head;
   struct curl_llist *pipeline;
-  CURLcode rc;
+  CURLcode result;
 
   pipeline = conn->send_pipe;
 
 
   pipeline = conn->send_pipe;
 
-  infof(conn->data, "Adding handle: conn: %p\n", (void *)conn);
-  infof(conn->data, "Adding handle: send: %d\n", conn->send_pipe->size);
-  infof(conn->data, "Adding handle: recv: %d\n", conn->recv_pipe->size);
-  rc = Curl_addHandleToPipeline(handle, pipeline);
+  result = Curl_addHandleToPipeline(handle, pipeline);
 
   if(pipeline == conn->send_pipe && sendhead != conn->send_pipe->head) {
     /* this is a new one as head, expire it */
     conn->writechannel_inuse = FALSE; /* not in use yet */
 
   if(pipeline == conn->send_pipe && sendhead != conn->send_pipe->head) {
     /* this is a new one as head, expire it */
     conn->writechannel_inuse = FALSE; /* not in use yet */
-#ifdef DEBUGBUILD
-    infof(conn->data, "%p is at send pipe head!\n",
-          (void *)conn->send_pipe->head->ptr);
-#endif
     Curl_expire(conn->send_pipe->head->ptr, 1);
   }
 
     Curl_expire(conn->send_pipe->head->ptr, 1);
   }
 
+#if 0 /* enable for pipeline debugging */
   print_pipeline(conn);
   print_pipeline(conn);
+#endif
 
 
-  return rc;
+  return result;
 }
 
 /* Move this transfer from the sending list to the receiving list.
 }
 
 /* Move this transfer from the sending list to the receiving list.
@@ -206,11 +201,18 @@ CURLMcode Curl_pipeline_set_site_blacklist(char **sites,
       char *port;
       struct site_blacklist_entry *entry;
 
       char *port;
       struct site_blacklist_entry *entry;
 
-      entry = malloc(sizeof(struct site_blacklist_entry));
-
       hostname = strdup(*sites);
       hostname = strdup(*sites);
-      if(!hostname)
+      if(!hostname) {
+        Curl_llist_destroy(new_list, NULL);
         return CURLM_OUT_OF_MEMORY;
         return CURLM_OUT_OF_MEMORY;
+      }
+
+      entry = malloc(sizeof(struct site_blacklist_entry));
+      if(!entry) {
+        free(hostname);
+        Curl_llist_destroy(new_list, NULL);
+        return CURLM_OUT_OF_MEMORY;
+      }
 
       port = strchr(hostname, ':');
       if(port) {
 
       port = strchr(hostname, ':');
       if(port) {
@@ -225,8 +227,11 @@ CURLMcode Curl_pipeline_set_site_blacklist(char **sites,
 
       entry->hostname = hostname;
 
 
       entry->hostname = hostname;
 
-      if(!Curl_llist_insert_next(new_list, new_list->tail, entry))
+      if(!Curl_llist_insert_next(new_list, new_list->tail, entry)) {
+        site_blacklist_llist_dtor(NULL, entry);
+        Curl_llist_destroy(new_list, NULL);
         return CURLM_OUT_OF_MEMORY;
         return CURLM_OUT_OF_MEMORY;
+      }
 
       sites++;
     }
 
       sites++;
     }
@@ -246,7 +251,7 @@ CURLMcode Curl_pipeline_set_site_blacklist(char **sites,
 bool Curl_pipeline_server_blacklisted(struct SessionHandle *handle,
                                       char *server_name)
 {
 bool Curl_pipeline_server_blacklisted(struct SessionHandle *handle,
                                       char *server_name)
 {
-  if(handle->multi) {
+  if(handle->multi && server_name) {
     struct curl_llist *blacklist =
       Curl_multi_pipelining_server_bl(handle->multi);
 
     struct curl_llist *blacklist =
       Curl_multi_pipelining_server_bl(handle->multi);
 
@@ -267,7 +272,7 @@ bool Curl_pipeline_server_blacklisted(struct SessionHandle *handle,
       }
     }
 
       }
     }
 
-    infof(handle, "Server %s is not blacklisted\n", server_name);
+    DEBUGF(infof(handle, "Server %s is not blacklisted\n", server_name));
   }
   return FALSE;
 }
   }
   return FALSE;
 }
@@ -309,7 +314,7 @@ CURLMcode Curl_pipeline_set_server_blacklist(char **servers,
   return CURLM_OK;
 }
 
   return CURLM_OK;
 }
 
-
+#if 0
 void print_pipeline(struct connectdata *conn)
 {
   struct curl_llist_element *curr;
 void print_pipeline(struct connectdata *conn)
 {
   struct curl_llist_element *curr;
@@ -331,3 +336,5 @@ void print_pipeline(struct connectdata *conn)
     }
   }
 }
     }
   }
 }
+
+#endif
index 1df9589..96c4c33 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2013, Linus Nielsen Feltzing, <linus@haxx.se>
+ * Copyright (C) 2013 - 2014, Linus Nielsen Feltzing, <linus@haxx.se>
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -41,6 +41,4 @@ bool Curl_pipeline_server_blacklisted(struct SessionHandle *handle,
 CURLMcode Curl_pipeline_set_server_blacklist(char **servers,
                                              struct curl_llist **list_ptr);
 
 CURLMcode Curl_pipeline_set_server_blacklist(char **servers,
                                              struct curl_llist **list_ptr);
 
-void print_pipeline(struct connectdata *conn);
-
 #endif /* HEADER_CURL_PIPELINE_H */
 #endif /* HEADER_CURL_PIPELINE_H */
index 876987f..6600459 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * RFC2831 DIGEST-MD5 authentication
  * RFC4422 Simple Authentication and Security Layer (SASL)
  * RFC4616 PLAIN authentication
  * RFC2831 DIGEST-MD5 authentication
  * RFC4422 Simple Authentication and Security Layer (SASL)
  * RFC4616 PLAIN authentication
+ * RFC4752 The Kerberos V5 ("GSSAPI") SASL Mechanism
  * RFC5034 POP3 SASL Authentication Mechanism
  * RFC5034 POP3 SASL Authentication Mechanism
+ * RFC6749 OAuth 2.0 Authorization Framework
+ * Draft   LOGIN SASL Mechanism <draft-murchison-sasl-login-00.txt>
  *
  ***************************************************************************/
 
  *
  ***************************************************************************/
 
@@ -60,7 +63,6 @@
 #include <curl/curl.h>
 #include "urldata.h"
 #include "sendf.h"
 #include <curl/curl.h>
 #include "urldata.h"
 #include "sendf.h"
-#include "if2ip.h"
 #include "hostip.h"
 #include "progress.h"
 #include "transfer.h"
 #include "hostip.h"
 #include "progress.h"
 #include "transfer.h"
@@ -71,7 +73,7 @@
 
 #include "strtoofft.h"
 #include "strequal.h"
 
 #include "strtoofft.h"
 #include "strequal.h"
-#include "sslgen.h"
+#include "vtls/vtls.h"
 #include "connect.h"
 #include "strerror.h"
 #include "select.h"
 #include "connect.h"
 #include "strerror.h"
 #include "select.h"
@@ -104,6 +106,10 @@ static CURLcode pop3_setup_connection(struct connectdata *conn);
 static CURLcode pop3_parse_url_options(struct connectdata *conn);
 static CURLcode pop3_parse_url_path(struct connectdata *conn);
 static CURLcode pop3_parse_custom_request(struct connectdata *conn);
 static CURLcode pop3_parse_url_options(struct connectdata *conn);
 static CURLcode pop3_parse_url_path(struct connectdata *conn);
 static CURLcode pop3_parse_custom_request(struct connectdata *conn);
+static CURLcode pop3_calc_sasl_details(struct connectdata *conn,
+                                       const char **mech,
+                                       char **initresp, size_t *len,
+                                       pop3state *state1, pop3state *state2);
 
 /*
  * POP3 protocol handler.
 
 /*
  * POP3 protocol handler.
@@ -150,7 +156,7 @@ const struct Curl_handler Curl_handler_pop3s = {
   pop3_disconnect,                  /* disconnect */
   ZERO_NULL,                        /* readwrite */
   PORT_POP3S,                       /* defport */
   pop3_disconnect,                  /* disconnect */
   ZERO_NULL,                        /* readwrite */
   PORT_POP3S,                       /* defport */
-  CURLPROTO_POP3 | CURLPROTO_POP3S, /* protocol */
+  CURLPROTO_POP3S,                  /* protocol */
   PROTOPT_CLOSEACTION | PROTOPT_SSL
   | PROTOPT_NOURLQUERY              /* flags */
 };
   PROTOPT_CLOSEACTION | PROTOPT_SSL
   | PROTOPT_NOURLQUERY              /* flags */
 };
@@ -163,7 +169,7 @@ const struct Curl_handler Curl_handler_pop3s = {
 
 static const struct Curl_handler Curl_handler_pop3_proxy = {
   "POP3",                               /* scheme */
 
 static const struct Curl_handler Curl_handler_pop3_proxy = {
   "POP3",                               /* scheme */
-  ZERO_NULL,                            /* setup_connection */
+  Curl_http_setup_conn,                 /* setup_connection */
   Curl_http,                            /* do_it */
   Curl_http_done,                       /* done */
   ZERO_NULL,                            /* do_more */
   Curl_http,                            /* do_it */
   Curl_http_done,                       /* done */
   ZERO_NULL,                            /* do_more */
@@ -188,7 +194,7 @@ static const struct Curl_handler Curl_handler_pop3_proxy = {
 
 static const struct Curl_handler Curl_handler_pop3s_proxy = {
   "POP3S",                              /* scheme */
 
 static const struct Curl_handler Curl_handler_pop3s_proxy = {
   "POP3S",                              /* scheme */
-  ZERO_NULL,                            /* setup_connection */
+  Curl_http_setup_conn,                 /* setup_connection */
   Curl_http,                            /* do_it */
   Curl_http_done,                       /* done */
   ZERO_NULL,                            /* do_more */
   Curl_http,                            /* do_it */
   Curl_http_done,                       /* done */
   ZERO_NULL,                            /* do_more */
@@ -230,8 +236,6 @@ static bool pop3_endofresp(struct connectdata *conn, char *line, size_t len,
                            int *resp)
 {
   struct pop3_conn *pop3c = &conn->proto.pop3c;
                            int *resp)
 {
   struct pop3_conn *pop3c = &conn->proto.pop3c;
-  size_t wordlen;
-  size_t i;
 
   /* Do we have an error response? */
   if(len >= 4 && !memcmp("-ERR", line, 4)) {
 
   /* Do we have an error response? */
   if(len >= 4 && !memcmp("-ERR", line, 4)) {
@@ -240,99 +244,15 @@ static bool pop3_endofresp(struct connectdata *conn, char *line, size_t len,
     return TRUE;
   }
 
     return TRUE;
   }
 
-  /* Are we processing servergreet responses? */
-  if(pop3c->state == POP3_SERVERGREET) {
-    /* Look for the APOP timestamp */
-    if(len >= 3 && line[len - 3] == '>') {
-      for(i = 0; i < len - 3; ++i) {
-        if(line[i] == '<') {
-          /* Calculate the length of the timestamp */
-          size_t timestamplen = len - 2 - i;
-
-          /* Allocate some memory for the timestamp */
-          pop3c->apoptimestamp = (char *)calloc(1, timestamplen + 1);
-
-          if(!pop3c->apoptimestamp)
-            break;
-
-          /* Copy the timestamp */
-          memcpy(pop3c->apoptimestamp, line + i, timestamplen);
-          pop3c->apoptimestamp[timestamplen] = '\0';
-          break;
-        }
-      }
-    }
-  }
   /* Are we processing CAPA command responses? */
   /* Are we processing CAPA command responses? */
-  else if(pop3c->state == POP3_CAPA) {
+  if(pop3c->state == POP3_CAPA) {
     /* Do we have the terminating line? */
     /* Do we have the terminating line? */
-    if(len >= 1 && !memcmp(line, ".", 1)) {
+    if(len >= 1 && !memcmp(line, ".", 1))
       *resp = '+';
       *resp = '+';
+    else
+      *resp = '*';
 
 
-      return TRUE;
-    }
-
-    /* Does the server support the STLS capability? */
-    if(len >= 4 && !memcmp(line, "STLS", 4))
-      pop3c->tls_supported = TRUE;
-
-    /* Does the server support clear text authentication? */
-    else if(len >= 4 && !memcmp(line, "USER", 4))
-      pop3c->authtypes |= POP3_TYPE_CLEARTEXT;
-
-    /* Does the server support APOP authentication? */
-    else if(len >= 4 && !memcmp(line, "APOP", 4))
-      pop3c->authtypes |= POP3_TYPE_APOP;
-
-    /* Does the server support SASL based authentication? */
-    else if(len >= 5 && !memcmp(line, "SASL ", 5)) {
-      pop3c->authtypes |= POP3_TYPE_SASL;
-
-      /* Advance past the SASL keyword */
-      line += 5;
-      len -= 5;
-
-      /* Loop through the data line */
-      for(;;) {
-        while(len &&
-              (*line == ' ' || *line == '\t' ||
-               *line == '\r' || *line == '\n')) {
-
-          line++;
-          len--;
-        }
-
-        if(!len)
-          break;
-
-        /* Extract the word */
-        for(wordlen = 0; wordlen < len && line[wordlen] != ' ' &&
-              line[wordlen] != '\t' && line[wordlen] != '\r' &&
-              line[wordlen] != '\n';)
-          wordlen++;
-
-        /* Test the word for a matching authentication mechanism */
-        if(wordlen == 5 && !memcmp(line, "LOGIN", 5))
-          pop3c->authmechs |= SASL_MECH_LOGIN;
-        else if(wordlen == 5 && !memcmp(line, "PLAIN", 5))
-          pop3c->authmechs |= SASL_MECH_PLAIN;
-        else if(wordlen == 8 && !memcmp(line, "CRAM-MD5", 8))
-          pop3c->authmechs |= SASL_MECH_CRAM_MD5;
-        else if(wordlen == 10 && !memcmp(line, "DIGEST-MD5", 10))
-          pop3c->authmechs |= SASL_MECH_DIGEST_MD5;
-        else if(wordlen == 6 && !memcmp(line, "GSSAPI", 6))
-          pop3c->authmechs |= SASL_MECH_GSSAPI;
-        else if(wordlen == 8 && !memcmp(line, "EXTERNAL", 8))
-          pop3c->authmechs |= SASL_MECH_EXTERNAL;
-        else if(wordlen == 4 && !memcmp(line, "NTLM", 4))
-          pop3c->authmechs |= SASL_MECH_NTLM;
-
-        line += wordlen;
-        len -= wordlen;
-      }
-    }
-
-    return FALSE;
+    return TRUE;
   }
 
   /* Do we have a command or continuation response? */
   }
 
   /* Do we have a command or continuation response? */
@@ -348,6 +268,35 @@ static bool pop3_endofresp(struct connectdata *conn, char *line, size_t len,
 
 /***********************************************************************
  *
 
 /***********************************************************************
  *
+ * pop3_get_message()
+ *
+ * Gets the authentication message from the response buffer.
+ */
+static void pop3_get_message(char *buffer, char** outptr)
+{
+  size_t len = 0;
+  char* message = NULL;
+
+  /* Find the start of the message */
+  for(message = buffer + 2; *message == ' ' || *message == '\t'; message++)
+    ;
+
+  /* Find the end of the message */
+  for(len = strlen(message); len--;)
+    if(message[len] != '\r' && message[len] != '\n' && message[len] != ' ' &&
+        message[len] != '\t')
+      break;
+
+  /* Terminate the message */
+  if(++len) {
+    message[len] = '\0';
+  }
+
+  *outptr = message;
+}
+
+/***********************************************************************
+ *
  * state()
  *
  * This is the ONLY way to change POP3 state!
  * state()
  *
  * This is the ONLY way to change POP3 state!
@@ -371,6 +320,11 @@ static void state(struct connectdata *conn, pop3state newstate)
     "AUTH_DIGESTMD5_RESP",
     "AUTH_NTLM",
     "AUTH_NTLM_TYPE2MSG",
     "AUTH_DIGESTMD5_RESP",
     "AUTH_NTLM",
     "AUTH_NTLM_TYPE2MSG",
+    "AUTH_GSSAPI",
+    "AUTH_GSSAPI_TOKEN",
+    "AUTH_GSSAPI_NO_DATA",
+    "AUTH_XOAUTH2",
+    "AUTH_CANCEL",
     "AUTH_FINAL",
     "APOP",
     "USER",
     "AUTH_FINAL",
     "APOP",
     "USER",
@@ -539,18 +493,48 @@ static CURLcode pop3_perform_apop(struct connectdata *conn)
 
 /***********************************************************************
  *
 
 /***********************************************************************
  *
- * pop3_perform_authenticate()
+ * pop3_perform_auth()
  *
  *
- * Sends an AUTH command allowing the client to login with the appropriate
- * SASL authentication mechanism.
+ * Sends an AUTH command allowing the client to login with the given SASL
+ * authentication mechanism.
+ */
+static CURLcode pop3_perform_auth(struct connectdata *conn,
+                                  const char *mech,
+                                  const char *initresp, size_t len,
+                                  pop3state state1, pop3state state2)
+{
+  CURLcode result = CURLE_OK;
+  struct pop3_conn *pop3c = &conn->proto.pop3c;
+
+  if(initresp && 8 + strlen(mech) + len <= 255) { /* AUTH <mech> ...<crlf> */
+    /* Send the AUTH command with the initial response */
+    result = Curl_pp_sendf(&pop3c->pp, "AUTH %s %s", mech, initresp);
+
+    if(!result)
+      state(conn, state2);
+  }
+  else {
+    /* Send the AUTH command */
+    result = Curl_pp_sendf(&pop3c->pp, "AUTH %s", mech);
+
+    if(!result)
+      state(conn, state1);
+  }
+
+  return result;
+}
+
+/***********************************************************************
+ *
+ * pop3_perform_authentication()
  *
  *
- * Additionally, the function will perform fallback to APOP and USER commands
- * should a common mechanism not be available between the client and server.
+ * Initiates the authentication sequence, with the appropriate SASL
+ * authentication mechanism, falling back to APOP and clear text should a
+ * common mechanism not be available between the client and server.
  */
  */
-static CURLcode pop3_perform_authenticate(struct connectdata *conn)
+static CURLcode pop3_perform_authentication(struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
 {
   CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
   struct pop3_conn *pop3c = &conn->proto.pop3c;
   const char *mech = NULL;
   char *initresp = NULL;
   struct pop3_conn *pop3c = &conn->proto.pop3c;
   const char *mech = NULL;
   char *initresp = NULL;
@@ -566,82 +550,15 @@ static CURLcode pop3_perform_authenticate(struct connectdata *conn)
     return result;
   }
 
     return result;
   }
 
-  /* Calculate the supported authentication mechanism by decreasing order of
-     security */
-  if(pop3c->authtypes & POP3_TYPE_SASL) {
-#ifndef CURL_DISABLE_CRYPTO_AUTH
-    if((pop3c->authmechs & SASL_MECH_DIGEST_MD5) &&
-       (pop3c->prefmech & SASL_MECH_DIGEST_MD5)) {
-      mech = "DIGEST-MD5";
-      state1 = POP3_AUTH_DIGESTMD5;
-      pop3c->authused = SASL_MECH_DIGEST_MD5;
-    }
-    else if((pop3c->authmechs & SASL_MECH_CRAM_MD5) &&
-            (pop3c->prefmech & SASL_MECH_CRAM_MD5)) {
-      mech = "CRAM-MD5";
-      state1 = POP3_AUTH_CRAMMD5;
-      pop3c->authused = SASL_MECH_CRAM_MD5;
-    }
-    else
-#endif
-#ifdef USE_NTLM
-    if((pop3c->authmechs & SASL_MECH_NTLM) &&
-       (pop3c->prefmech & SASL_MECH_NTLM)) {
-      mech = "NTLM";
-      state1 = POP3_AUTH_NTLM;
-      state2 = POP3_AUTH_NTLM_TYPE2MSG;
-      pop3c->authused = SASL_MECH_NTLM;
-
-      if(data->set.sasl_ir)
-        result = Curl_sasl_create_ntlm_type1_message(conn->user, conn->passwd,
-                                                     &conn->ntlm,
-                                                     &initresp, &len);
-    }
-    else
-#endif
-    if((pop3c->authmechs & SASL_MECH_LOGIN) &&
-       (pop3c->prefmech & SASL_MECH_LOGIN)) {
-      mech = "LOGIN";
-      state1 = POP3_AUTH_LOGIN;
-      state2 = POP3_AUTH_LOGIN_PASSWD;
-      pop3c->authused = SASL_MECH_LOGIN;
-
-      if(data->set.sasl_ir)
-        result = Curl_sasl_create_login_message(conn->data, conn->user,
-                                                &initresp, &len);
-    }
-    else if((pop3c->authmechs & SASL_MECH_PLAIN) &&
-            (pop3c->prefmech & SASL_MECH_PLAIN)) {
-      mech = "PLAIN";
-      state1 = POP3_AUTH_PLAIN;
-      state2 = POP3_AUTH_FINAL;
-      pop3c->authused = SASL_MECH_PLAIN;
-
-      if(data->set.sasl_ir)
-        result = Curl_sasl_create_plain_message(conn->data, conn->user,
-                                                conn->passwd, &initresp,
-                                                &len);
-    }
-  }
+  /* Calculate the SASL login details */
+  if(pop3c->authtypes & POP3_TYPE_SASL)
+    result = pop3_calc_sasl_details(conn, &mech, &initresp, &len, &state1,
+                                    &state2);
 
   if(!result) {
     if(mech && (pop3c->preftype & POP3_TYPE_SASL)) {
       /* Perform SASL based authentication */
 
   if(!result) {
     if(mech && (pop3c->preftype & POP3_TYPE_SASL)) {
       /* Perform SASL based authentication */
-      if(initresp &&
-         8 + strlen(mech) + len <= 255) { /* AUTH <mech> ...<crlf> */
-        result = Curl_pp_sendf(&pop3c->pp, "AUTH %s %s", mech, initresp);
-
-        if(!result)
-          state(conn, state2);
-      }
-      else {
-        result = Curl_pp_sendf(&pop3c->pp, "AUTH %s", mech);
-
-        if(!result)
-          state(conn, state1);
-      }
-
-      Curl_safefree(initresp);
+      result = pop3_perform_auth(conn, mech, initresp, len, state1, state2);
     }
 #ifndef CURL_DISABLE_CRYPTO_AUTH
     else if((pop3c->authtypes & POP3_TYPE_APOP) &&
     }
 #ifndef CURL_DISABLE_CRYPTO_AUTH
     else if((pop3c->authtypes & POP3_TYPE_APOP) &&
@@ -660,6 +577,8 @@ static CURLcode pop3_perform_authenticate(struct connectdata *conn)
     }
   }
 
     }
   }
 
+  Curl_safefree(initresp);
+
   return result;
 }
 
   return result;
 }
 
@@ -673,7 +592,7 @@ static CURLcode pop3_perform_command(struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
-  struct POP3 *pop3 = data->state.proto.pop3;
+  struct POP3 *pop3 = data->req.protop;
   const char *command = NULL;
 
   /* Calculate the default command */
   const char *command = NULL;
 
   /* Calculate the default command */
@@ -729,6 +648,10 @@ static CURLcode pop3_state_servergreet_resp(struct connectdata *conn,
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
+  struct pop3_conn *pop3c = &conn->proto.pop3c;
+  const char *line = data->state.buffer;
+  size_t len = strlen(line);
+  size_t i;
 
   (void)instate; /* no use for this yet */
 
 
   (void)instate; /* no use for this yet */
 
@@ -736,8 +659,36 @@ static CURLcode pop3_state_servergreet_resp(struct connectdata *conn,
     failf(data, "Got unexpected pop3-server response");
     result = CURLE_FTP_WEIRD_SERVER_REPLY;
   }
     failf(data, "Got unexpected pop3-server response");
     result = CURLE_FTP_WEIRD_SERVER_REPLY;
   }
-  else
+  else {
+    /* Does the server support APOP authentication? */
+    if(len >= 4 && line[len - 2] == '>') {
+      /* Look for the APOP timestamp */
+      for(i = 3; i < len - 2; ++i) {
+        if(line[i] == '<') {
+          /* Calculate the length of the timestamp */
+          size_t timestamplen = len - 1 - i;
+          if(!timestamplen)
+            break;
+
+          /* Allocate some memory for the timestamp */
+          pop3c->apoptimestamp = (char *)calloc(1, timestamplen + 1);
+
+          if(!pop3c->apoptimestamp)
+            break;
+
+          /* Copy the timestamp */
+          memcpy(pop3c->apoptimestamp, line + i, timestamplen);
+          pop3c->apoptimestamp[timestamplen] = '\0';
+
+          /* Store the APOP capability */
+          pop3c->authtypes |= POP3_TYPE_APOP;
+          break;
+        }
+      }
+    }
+
     result = pop3_perform_capa(conn);
     result = pop3_perform_capa(conn);
+  }
 
   return result;
 }
 
   return result;
 }
@@ -749,26 +700,95 @@ static CURLcode pop3_state_capa_resp(struct connectdata *conn, int pop3code,
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
   struct pop3_conn *pop3c = &conn->proto.pop3c;
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
   struct pop3_conn *pop3c = &conn->proto.pop3c;
+  const char *line = data->state.buffer;
+  size_t len = strlen(line);
+  size_t wordlen;
 
   (void)instate; /* no use for this yet */
 
 
   (void)instate; /* no use for this yet */
 
-  if(pop3code != '+')
-    result = pop3_perform_user(conn);
-  else if(data->set.use_ssl && !conn->ssl[FIRSTSOCKET].use) {
-    /* We don't have a SSL/TLS connection yet, but SSL is requested */
-    if(pop3c->tls_supported)
-      /* Switch to TLS connection now */
-      result = pop3_perform_starttls(conn);
-    else if(data->set.use_ssl == CURLUSESSL_TRY)
-      /* Fallback and carry on with authentication */
-      result = pop3_perform_authenticate(conn);
-    else {
-      failf(data, "STLS not supported.");
-      result = CURLE_USE_SSL_FAILED;
+  /* Do we have a untagged response? */
+  if(pop3code == '*') {
+    /* Does the server support the STLS capability? */
+    if(len >= 4 && !memcmp(line, "STLS", 4))
+      pop3c->tls_supported = TRUE;
+
+    /* Does the server support clear text authentication? */
+    else if(len >= 4 && !memcmp(line, "USER", 4))
+      pop3c->authtypes |= POP3_TYPE_CLEARTEXT;
+
+    /* Does the server support SASL based authentication? */
+    else if(len >= 5 && !memcmp(line, "SASL ", 5)) {
+      pop3c->authtypes |= POP3_TYPE_SASL;
+
+      /* Advance past the SASL keyword */
+      line += 5;
+      len -= 5;
+
+      /* Loop through the data line */
+      for(;;) {
+        while(len &&
+              (*line == ' ' || *line == '\t' ||
+               *line == '\r' || *line == '\n')) {
+
+          line++;
+          len--;
+        }
+
+        if(!len)
+          break;
+
+        /* Extract the word */
+        for(wordlen = 0; wordlen < len && line[wordlen] != ' ' &&
+              line[wordlen] != '\t' && line[wordlen] != '\r' &&
+              line[wordlen] != '\n';)
+          wordlen++;
+
+        /* Test the word for a matching authentication mechanism */
+        if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_LOGIN))
+          pop3c->authmechs |= SASL_MECH_LOGIN;
+        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_PLAIN))
+          pop3c->authmechs |= SASL_MECH_PLAIN;
+        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_CRAM_MD5))
+          pop3c->authmechs |= SASL_MECH_CRAM_MD5;
+        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_DIGEST_MD5))
+          pop3c->authmechs |= SASL_MECH_DIGEST_MD5;
+        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_GSSAPI))
+          pop3c->authmechs |= SASL_MECH_GSSAPI;
+        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_EXTERNAL))
+          pop3c->authmechs |= SASL_MECH_EXTERNAL;
+        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_NTLM))
+          pop3c->authmechs |= SASL_MECH_NTLM;
+        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_XOAUTH2))
+          pop3c->authmechs |= SASL_MECH_XOAUTH2;
+
+        line += wordlen;
+        len -= wordlen;
+      }
     }
   }
     }
   }
-  else
-    result = pop3_perform_authenticate(conn);
+  else if(pop3code == '+') {
+    if(data->set.use_ssl && !conn->ssl[FIRSTSOCKET].use) {
+      /* We don't have a SSL/TLS connection yet, but SSL is requested */
+      if(pop3c->tls_supported)
+        /* Switch to TLS connection now */
+        result = pop3_perform_starttls(conn);
+      else if(data->set.use_ssl == CURLUSESSL_TRY)
+        /* Fallback and carry on with authentication */
+        result = pop3_perform_authentication(conn);
+      else {
+        failf(data, "STLS not supported.");
+        result = CURLE_USE_SSL_FAILED;
+      }
+    }
+    else
+      result = pop3_perform_authentication(conn);
+  }
+  else {
+    /* Clear text is supported when CAPA isn't recognised */
+    pop3c->authtypes |= POP3_TYPE_CLEARTEXT;
+
+    result = pop3_perform_authentication(conn);
+  }
 
   return result;
 }
 
   return result;
 }
@@ -789,7 +809,7 @@ static CURLcode pop3_state_starttls_resp(struct connectdata *conn,
       result = CURLE_USE_SSL_FAILED;
     }
     else
       result = CURLE_USE_SSL_FAILED;
     }
     else
-      result = pop3_perform_authenticate(conn);
+      result = pop3_perform_authentication(conn);
   }
   else
     result = pop3_perform_upgrade_tls(conn);
   }
   else
     result = pop3_perform_upgrade_tls(conn);
@@ -817,20 +837,17 @@ static CURLcode pop3_state_auth_plain_resp(struct connectdata *conn,
     /* Create the authorisation message */
     result = Curl_sasl_create_plain_message(data, conn->user, conn->passwd,
                                             &plainauth, &len);
     /* Create the authorisation message */
     result = Curl_sasl_create_plain_message(data, conn->user, conn->passwd,
                                             &plainauth, &len);
+    if(!result && plainauth) {
+      /* Send the message */
+      result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", plainauth);
 
 
-    /* Send the message */
-    if(!result) {
-      if(plainauth) {
-        result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", plainauth);
-
-        if(!result)
-          state(conn, POP3_AUTH_FINAL);
-      }
-
-      Curl_safefree(plainauth);
+      if(!result)
+        state(conn, POP3_AUTH_FINAL);
     }
   }
 
     }
   }
 
+  Curl_safefree(plainauth);
+
   return result;
 }
 
   return result;
 }
 
@@ -854,20 +871,17 @@ static CURLcode pop3_state_auth_login_resp(struct connectdata *conn,
     /* Create the user message */
     result = Curl_sasl_create_login_message(data, conn->user,
                                             &authuser, &len);
     /* Create the user message */
     result = Curl_sasl_create_login_message(data, conn->user,
                                             &authuser, &len);
+    if(!result && authuser) {
+      /* Send the user */
+      result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", authuser);
 
 
-    /* Send the user */
-    if(!result) {
-      if(authuser) {
-        result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", authuser);
-
-        if(!result)
-          state(conn, POP3_AUTH_LOGIN_PASSWD);
-      }
-
-      Curl_safefree(authuser);
+      if(!result)
+        state(conn, POP3_AUTH_LOGIN_PASSWD);
     }
   }
 
     }
   }
 
+  Curl_safefree(authuser);
+
   return result;
 }
 
   return result;
 }
 
@@ -891,20 +905,17 @@ static CURLcode pop3_state_auth_login_password_resp(struct connectdata *conn,
     /* Create the password message */
     result = Curl_sasl_create_login_message(data, conn->passwd,
                                             &authpasswd, &len);
     /* Create the password message */
     result = Curl_sasl_create_login_message(data, conn->passwd,
                                             &authpasswd, &len);
+    if(!result && authpasswd) {
+      /* Send the password */
+      result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", authpasswd);
 
 
-    /* Send the password */
-    if(!result) {
-      if(authpasswd) {
-        result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", authpasswd);
-
-        if(!result)
-          state(conn, POP3_AUTH_FINAL);
-      }
-
-      Curl_safefree(authpasswd);
+      if(!result)
+        state(conn, POP3_AUTH_FINAL);
     }
   }
 
     }
   }
 
+  Curl_safefree(authpasswd);
+
   return result;
 }
 
   return result;
 }
 
@@ -916,9 +927,10 @@ static CURLcode pop3_state_auth_cram_resp(struct connectdata *conn,
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
-  char *chlg64 = data->state.buffer;
-  size_t len = 0;
+  char *chlg = NULL;
+  char *chlg64 = NULL;
   char *rplyb64 = NULL;
   char *rplyb64 = NULL;
+  size_t len = 0;
 
   (void)instate; /* no use for this yet */
 
 
   (void)instate; /* no use for this yet */
 
@@ -927,38 +939,34 @@ static CURLcode pop3_state_auth_cram_resp(struct connectdata *conn,
     return CURLE_LOGIN_DENIED;
   }
 
     return CURLE_LOGIN_DENIED;
   }
 
-  /* Get the challenge */
-  for(chlg64 += 2; *chlg64 == ' ' || *chlg64 == '\t'; chlg64++)
-    ;
+  /* Get the challenge message */
+  pop3_get_message(data->state.buffer, &chlg64);
 
 
-  /* Terminate the challenge */
-  if(*chlg64 != '=') {
-    for(len = strlen(chlg64); len--;)
-      if(chlg64[len] != '\r' && chlg64[len] != '\n' && chlg64[len] != ' ' &&
-         chlg64[len] != '\t')
-        break;
+  /* Decode the challenge message */
+  result = Curl_sasl_decode_cram_md5_message(chlg64, &chlg, &len);
+  if(result) {
+    /* Send the cancellation */
+    result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", "*");
 
 
-    if(++len) {
-      chlg64[len] = '\0';
-    }
+    if(!result)
+      state(conn, POP3_AUTH_CANCEL);
   }
   }
-
-  /* Create the response message */
-  result = Curl_sasl_create_cram_md5_message(data, chlg64, conn->user,
-                                             conn->passwd, &rplyb64, &len);
-
-  /* Send the response */
-  if(!result) {
-    if(rplyb64) {
+  else {
+    /* Create the response message */
+    result = Curl_sasl_create_cram_md5_message(data, chlg, conn->user,
+                                               conn->passwd, &rplyb64, &len);
+    if(!result && rplyb64) {
+      /* Send the response */
       result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", rplyb64);
 
       if(!result)
         state(conn, POP3_AUTH_FINAL);
     }
       result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", rplyb64);
 
       if(!result)
         state(conn, POP3_AUTH_FINAL);
     }
-
-    Curl_safefree(rplyb64);
   }
 
   }
 
+  Curl_safefree(chlg);
+  Curl_safefree(rplyb64);
+
   return result;
 }
 
   return result;
 }
 
@@ -969,9 +977,9 @@ static CURLcode pop3_state_auth_digest_resp(struct connectdata *conn,
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
-  char *chlg64 = data->state.buffer;
-  size_t len = 0;
+  char *chlg64 = NULL;
   char *rplyb64 = NULL;
   char *rplyb64 = NULL;
+  size_t len = 0;
 
   (void)instate; /* no use for this yet */
 
 
   (void)instate; /* no use for this yet */
 
@@ -980,27 +988,32 @@ static CURLcode pop3_state_auth_digest_resp(struct connectdata *conn,
     return CURLE_LOGIN_DENIED;
   }
 
     return CURLE_LOGIN_DENIED;
   }
 
-  /* Get the challenge */
-  for(chlg64 += 2; *chlg64 == ' ' || *chlg64 == '\t'; chlg64++)
-    ;
+  /* Get the challenge message */
+  pop3_get_message(data->state.buffer, &chlg64);
 
   /* Create the response message */
 
   /* Create the response message */
-  result = Curl_sasl_create_digest_md5_message(data, chlg64, conn->user,
-                                               conn->passwd, "pop",
-                                               &rplyb64, &len);
-
-  /* Send the response */
-  if(!result) {
-    if(rplyb64) {
-      result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", rplyb64);
+  result = Curl_sasl_create_digest_md5_message(data, chlg64,
+                                               conn->user, conn->passwd,
+                                               "pop", &rplyb64, &len);
+  if(result) {
+    if(result == CURLE_BAD_CONTENT_ENCODING) {
+      /* Send the cancellation */
+      result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", "*");
 
       if(!result)
 
       if(!result)
-        state(conn, POP3_AUTH_DIGESTMD5_RESP);
+        state(conn, POP3_AUTH_CANCEL);
     }
     }
+  }
+  else {
+    /* Send the response */
+    result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", rplyb64);
 
 
-    Curl_safefree(rplyb64);
+    if(!result)
+      state(conn, POP3_AUTH_DIGESTMD5_RESP);
   }
 
   }
 
+  Curl_safefree(rplyb64);
+
   return result;
 }
 
   return result;
 }
 
@@ -1052,20 +1065,17 @@ static CURLcode pop3_state_auth_ntlm_resp(struct connectdata *conn,
     result = Curl_sasl_create_ntlm_type1_message(conn->user, conn->passwd,
                                                  &conn->ntlm,
                                                  &type1msg, &len);
     result = Curl_sasl_create_ntlm_type1_message(conn->user, conn->passwd,
                                                  &conn->ntlm,
                                                  &type1msg, &len);
+    if(!result && type1msg) {
+      /* Send the message */
+      result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", type1msg);
 
 
-    /* Send the message */
-    if(!result) {
-      if(type1msg) {
-        result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", type1msg);
-
-        if(!result)
-          state(conn, POP3_AUTH_NTLM_TYPE2MSG);
-      }
-
-      Curl_safefree(type1msg);
+      if(!result)
+        state(conn, POP3_AUTH_NTLM_TYPE2MSG);
     }
   }
 
     }
   }
 
+  Curl_safefree(type1msg);
+
   return result;
 }
 
   return result;
 }
 
@@ -1076,8 +1086,9 @@ static CURLcode pop3_state_auth_ntlm_type2msg_resp(struct connectdata *conn,
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
-  size_t len = 0;
+  char *type2msg = NULL;
   char *type3msg = NULL;
   char *type3msg = NULL;
+  size_t len = 0;
 
   (void)instate; /* no use for this yet */
 
 
   (void)instate; /* no use for this yet */
 
@@ -1086,31 +1097,279 @@ static CURLcode pop3_state_auth_ntlm_type2msg_resp(struct connectdata *conn,
     result = CURLE_LOGIN_DENIED;
   }
   else {
     result = CURLE_LOGIN_DENIED;
   }
   else {
-    /* Create the type-3 message */
-    result = Curl_sasl_create_ntlm_type3_message(data,
-                                                 data->state.buffer + 2,
-                                                 conn->user, conn->passwd,
-                                                 &conn->ntlm,
-                                                 &type3msg, &len);
+    /* Get the type-2 message */
+    pop3_get_message(data->state.buffer, &type2msg);
+
+    /* Decode the type-2 message */
+    result = Curl_sasl_decode_ntlm_type2_message(data, type2msg, &conn->ntlm);
+    if(result) {
+      /* Send the cancellation */
+      result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", "*");
 
 
-    /* Send the message */
-    if(!result) {
-      if(type3msg) {
+      if(!result)
+        state(conn, POP3_AUTH_CANCEL);
+    }
+    else {
+      /* Create the type-3 message */
+      result = Curl_sasl_create_ntlm_type3_message(data, conn->user,
+                                                   conn->passwd, &conn->ntlm,
+                                                   &type3msg, &len);
+      if(!result && type3msg) {
+        /* Send the message */
         result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", type3msg);
 
         if(!result)
           state(conn, POP3_AUTH_FINAL);
       }
         result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", type3msg);
 
         if(!result)
           state(conn, POP3_AUTH_FINAL);
       }
+    }
+  }
+
+  Curl_safefree(type3msg);
+
+  return result;
+}
+#endif
+
+#if defined(USE_KERBEROS5)
+/* For AUTH GSSAPI (without initial response) responses */
+static CURLcode pop3_state_auth_gssapi_resp(struct connectdata *conn,
+                                            int pop3code,
+                                            pop3state instate)
+{
+  CURLcode result = CURLE_OK;
+  struct SessionHandle *data = conn->data;
+  struct pop3_conn *pop3c = &conn->proto.pop3c;
+  size_t len = 0;
+  char *respmsg = NULL;
+
+  (void)instate; /* no use for this yet */
+
+  if(pop3code != '+') {
+    failf(data, "Access denied: %d", pop3code);
+    result = CURLE_LOGIN_DENIED;
+  }
+  else {
+    /* Create the initial response message */
+    result = Curl_sasl_create_gssapi_user_message(data, conn->user,
+                                                  conn->passwd, "pop",
+                                                  pop3c->mutual_auth,
+                                                  NULL, &conn->krb5,
+                                                  &respmsg, &len);
+    if(!result && respmsg) {
+      /* Send the message */
+      result = Curl_pp_sendf(&pop3c->pp, "%s", respmsg);
+
+      if(!result)
+        state(conn, POP3_AUTH_GSSAPI_TOKEN);
+    }
+  }
+
+  Curl_safefree(respmsg);
+
+  return result;
+}
+
+/* For AUTH GSSAPI user token responses */
+static CURLcode pop3_state_auth_gssapi_token_resp(struct connectdata *conn,
+                                                  int pop3code,
+                                                  pop3state instate)
+{
+  CURLcode result = CURLE_OK;
+  struct SessionHandle *data = conn->data;
+  struct pop3_conn *pop3c = &conn->proto.pop3c;
+  char *chlgmsg = NULL;
+  char *respmsg = NULL;
+  size_t len = 0;
+
+  (void)instate; /* no use for this yet */
+
+  if(pop3code != '+') {
+    failf(data, "Access denied: %d", pop3code);
+    result = CURLE_LOGIN_DENIED;
+  }
+  else {
+    /* Get the challenge message */
+    pop3_get_message(data->state.buffer, &chlgmsg);
+
+    if(pop3c->mutual_auth)
+      /* Decode the user token challenge and create the optional response
+         message */
+      result = Curl_sasl_create_gssapi_user_message(data, NULL, NULL, NULL,
+                                                    pop3c->mutual_auth,
+                                                    chlgmsg, &conn->krb5,
+                                                    &respmsg, &len);
+    else
+      /* Decode the security challenge and create the response message */
+      result = Curl_sasl_create_gssapi_security_message(data, chlgmsg,
+                                                        &conn->krb5,
+                                                        &respmsg, &len);
+
+    if(result) {
+      if(result == CURLE_BAD_CONTENT_ENCODING) {
+        /* Send the cancellation */
+        result = Curl_pp_sendf(&pop3c->pp, "%s", "*");
+
+        if(!result)
+          state(conn, POP3_AUTH_CANCEL);
+      }
+    }
+    else {
+      /* Send the response */
+      if(respmsg)
+        result = Curl_pp_sendf(&pop3c->pp, "%s", respmsg);
+      else
+        result = Curl_pp_sendf(&pop3c->pp, "%s", "");
+
+      if(!result)
+        state(conn, (pop3c->mutual_auth ? POP3_AUTH_GSSAPI_NO_DATA :
+                                          POP3_AUTH_FINAL));
+    }
+  }
+
+  Curl_safefree(respmsg);
+
+  return result;
+}
+
+/* For AUTH GSSAPI no data responses */
+static CURLcode pop3_state_auth_gssapi_no_data_resp(struct connectdata *conn,
+                                                    int pop3code,
+                                                    pop3state instate)
+{
+  CURLcode result = CURLE_OK;
+  struct SessionHandle *data = conn->data;
+  char *chlgmsg = NULL;
+  char *respmsg = NULL;
+  size_t len = 0;
+
+  (void)instate; /* no use for this yet */
+
+  if(pop3code != '+') {
+    failf(data, "Access denied: %d", pop3code);
+    result = CURLE_LOGIN_DENIED;
+  }
+  else {
+    /* Get the challenge message */
+    pop3_get_message(data->state.buffer, &chlgmsg);
+
+    /* Decode the security challenge and create the security message */
+    result = Curl_sasl_create_gssapi_security_message(data, chlgmsg,
+                                                      &conn->krb5,
+                                                      &respmsg, &len);
+    if(result) {
+      if(result == CURLE_BAD_CONTENT_ENCODING) {
+        /* Send the cancellation */
+        result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", "*");
+
+        if(!result)
+          state(conn, POP3_AUTH_CANCEL);
+      }
+    }
+    else {
+      /* Send the response */
+      if(respmsg) {
+        result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", respmsg);
+
+        if(!result)
+          state(conn, POP3_AUTH_FINAL);
+      }
+    }
+  }
+
+  Curl_safefree(respmsg);
+
+  return result;
+}
+#endif
+
+/* For AUTH XOAUTH2 (without initial response) responses */
+static CURLcode pop3_state_auth_xoauth2_resp(struct connectdata *conn,
+                                             int pop3code, pop3state instate)
+{
+  CURLcode result = CURLE_OK;
+  struct SessionHandle *data = conn->data;
+  size_t len = 0;
+  char *xoauth = NULL;
+
+  (void)instate; /* no use for this yet */
+
+  if(pop3code != '+') {
+    failf(data, "Access denied: %d", pop3code);
+    result = CURLE_LOGIN_DENIED;
+  }
+  else {
+    /* Create the authorisation message */
+    result = Curl_sasl_create_xoauth2_message(conn->data, conn->user,
+                                              conn->xoauth2_bearer,
+                                              &xoauth, &len);
+    if(!result && xoauth) {
+      /* Send the message */
+      result = Curl_pp_sendf(&conn->proto.pop3c.pp, "%s", xoauth);
 
 
-      Curl_safefree(type3msg);
+      if(!result)
+        state(conn, POP3_AUTH_FINAL);
     }
   }
 
     }
   }
 
+  Curl_safefree(xoauth);
+
   return result;
 }
   return result;
 }
+
+/* For AUTH cancellation responses */
+static CURLcode pop3_state_auth_cancel_resp(struct connectdata *conn,
+                                            int pop3code,
+                                            pop3state instate)
+{
+  CURLcode result = CURLE_OK;
+  struct SessionHandle *data = conn->data;
+  struct pop3_conn *pop3c = &conn->proto.pop3c;
+  const char *mech = NULL;
+  char *initresp = NULL;
+  size_t len = 0;
+  pop3state state1 = POP3_STOP;
+  pop3state state2 = POP3_STOP;
+
+  (void)pop3code;
+  (void)instate; /* no use for this yet */
+
+  /* Remove the offending mechanism from the supported list */
+  pop3c->authmechs ^= pop3c->authused;
+
+  /* Calculate alternative SASL login details */
+  result = pop3_calc_sasl_details(conn, &mech, &initresp, &len, &state1,
+                                  &state2);
+
+  if(!result) {
+    /* Do we have any mechanisms left or can we fallback to another
+       authentication type? */
+    if(mech) {
+      /* Retry SASL based authentication */
+      result = pop3_perform_auth(conn, mech, initresp, len, state1, state2);
+
+      Curl_safefree(initresp);
+    }
+#ifndef CURL_DISABLE_CRYPTO_AUTH
+    else if((pop3c->authtypes & POP3_TYPE_APOP) &&
+            (pop3c->preftype & POP3_TYPE_APOP))
+      /* Perform APOP authentication */
+      result = pop3_perform_apop(conn);
 #endif
 #endif
+    else if((pop3c->authtypes & POP3_TYPE_CLEARTEXT) &&
+            (pop3c->preftype & POP3_TYPE_CLEARTEXT))
+      /* Perform clear text authentication */
+      result = pop3_perform_user(conn);
+    else {
+      failf(data, "Authentication cancelled");
+
+      result = CURLE_LOGIN_DENIED;
+    }
+  }
 
 
-/* For final responses to the AUTH sequence */
+  return result;
+}
+
+/* For final responses in the AUTH sequence */
 static CURLcode pop3_state_auth_final_resp(struct connectdata *conn,
                                            int pop3code,
                                            pop3state instate)
 static CURLcode pop3_state_auth_final_resp(struct connectdata *conn,
                                            int pop3code,
                                            pop3state instate)
@@ -1203,7 +1462,7 @@ static CURLcode pop3_state_command_resp(struct connectdata *conn,
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
-  struct POP3 *pop3 = data->state.proto.pop3;
+  struct POP3 *pop3 = data->req.protop;
   struct pop3_conn *pop3c = &conn->proto.pop3c;
   struct pingpong *pp = &pop3c->pp;
 
   struct pop3_conn *pop3c = &conn->proto.pop3c;
   struct pingpong *pp = &pop3c->pp;
 
@@ -1270,12 +1529,15 @@ static CURLcode pop3_statemach_act(struct connectdata *conn)
   if(pp->sendleft)
     return Curl_pp_flushsend(pp);
 
   if(pp->sendleft)
     return Curl_pp_flushsend(pp);
 
-  /* Read the response from the server */
-  result = Curl_pp_readresp(sock, pp, &pop3code, &nread);
-  if(result)
-    return result;
+ do {
+    /* Read the response from the server */
+    result = Curl_pp_readresp(sock, pp, &pop3code, &nread);
+    if(result)
+      return result;
+
+    if(!pop3code)
+      break;
 
 
-  if(pop3code) {
     /* We have now received a full POP3 server response */
     switch(pop3c->state) {
     case POP3_SERVERGREET:
     /* We have now received a full POP3 server response */
     switch(pop3c->state) {
     case POP3_SERVERGREET:
@@ -1328,6 +1590,29 @@ static CURLcode pop3_statemach_act(struct connectdata *conn)
       break;
 #endif
 
       break;
 #endif
 
+#if defined(USE_KERBEROS5)
+    case POP3_AUTH_GSSAPI:
+      result = pop3_state_auth_gssapi_resp(conn, pop3code, pop3c->state);
+      break;
+
+    case POP3_AUTH_GSSAPI_TOKEN:
+      result = pop3_state_auth_gssapi_token_resp(conn, pop3code, pop3c->state);
+      break;
+
+    case POP3_AUTH_GSSAPI_NO_DATA:
+      result = pop3_state_auth_gssapi_no_data_resp(conn, pop3code,
+                                                   pop3c->state);
+      break;
+#endif
+
+    case POP3_AUTH_XOAUTH2:
+      result = pop3_state_auth_xoauth2_resp(conn, pop3code, pop3c->state);
+      break;
+
+    case POP3_AUTH_CANCEL:
+      result = pop3_state_auth_cancel_resp(conn, pop3code, pop3c->state);
+      break;
+
     case POP3_AUTH_FINAL:
       result = pop3_state_auth_final_resp(conn, pop3code, pop3c->state);
       break;
     case POP3_AUTH_FINAL:
       result = pop3_state_auth_final_resp(conn, pop3code, pop3c->state);
       break;
@@ -1357,7 +1642,7 @@ static CURLcode pop3_statemach_act(struct connectdata *conn)
       state(conn, POP3_STOP);
       break;
     }
       state(conn, POP3_STOP);
       break;
     }
-  }
+  } while(!result && pop3c->state != POP3_STOP && Curl_pp_moredata(pp));
 
   return result;
 }
 
   return result;
 }
@@ -1368,11 +1653,13 @@ static CURLcode pop3_multi_statemach(struct connectdata *conn, bool *done)
   CURLcode result = CURLE_OK;
   struct pop3_conn *pop3c = &conn->proto.pop3c;
 
   CURLcode result = CURLE_OK;
   struct pop3_conn *pop3c = &conn->proto.pop3c;
 
-  if((conn->handler->flags & PROTOPT_SSL) && !pop3c->ssldone)
+  if((conn->handler->flags & PROTOPT_SSL) && !pop3c->ssldone) {
     result = Curl_ssl_connect_nonblocking(conn, FIRSTSOCKET, &pop3c->ssldone);
     result = Curl_ssl_connect_nonblocking(conn, FIRSTSOCKET, &pop3c->ssldone);
-  else
-    result = Curl_pp_statemach(&pop3c->pp, FALSE);
+    if(result || !pop3c->ssldone)
+      return result;
+  }
 
 
+  result = Curl_pp_statemach(&pop3c->pp, FALSE);
   *done = (pop3c->state == POP3_STOP) ? TRUE : FALSE;
 
   return result;
   *done = (pop3c->state == POP3_STOP) ? TRUE : FALSE;
 
   return result;
@@ -1395,13 +1682,11 @@ static CURLcode pop3_init(struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
-  struct POP3 *pop3 = data->state.proto.pop3;
+  struct POP3 *pop3;
 
 
-  if(!pop3) {
-    pop3 = data->state.proto.pop3 = calloc(sizeof(struct POP3), 1);
-    if(!pop3)
-      result = CURLE_OUT_OF_MEMORY;
-  }
+  pop3 = data->req.protop = calloc(sizeof(struct POP3), 1);
+  if(!pop3)
+    result = CURLE_OUT_OF_MEMORY;
 
   return result;
 }
 
   return result;
 }
@@ -1431,17 +1716,8 @@ static CURLcode pop3_connect(struct connectdata *conn, bool *done)
 
   *done = FALSE; /* default to not done yet */
 
 
   *done = FALSE; /* default to not done yet */
 
-  /* If there already is a protocol-specific struct allocated for this
-     sessionhandle, deal with it */
-  Curl_reset_reqproto(conn);
-
-  /* Initialise the POP3 layer */
-  result = pop3_init(conn);
-  if(result)
-    return result;
-
   /* We always support persistent connections in POP3 */
   /* We always support persistent connections in POP3 */
-  conn->bits.close = FALSE;
+  connkeep(conn, "POP3 default");
 
   /* Set the default response time-out */
   pp->response_time = RESP_TIMEOUT;
 
   /* Set the default response time-out */
   pp->response_time = RESP_TIMEOUT;
@@ -1483,7 +1759,7 @@ static CURLcode pop3_done(struct connectdata *conn, CURLcode status,
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
-  struct POP3 *pop3 = data->state.proto.pop3;
+  struct POP3 *pop3 = data->req.protop;
 
   (void)premature;
 
 
   (void)premature;
 
@@ -1495,7 +1771,7 @@ static CURLcode pop3_done(struct connectdata *conn, CURLcode status,
     return CURLE_OK;
 
   if(status) {
     return CURLE_OK;
 
   if(status) {
-    conn->bits.close = TRUE; /* marked for closure */
+    connclose(conn, "POP3 done with bad status");
     result = status;         /* use the already set error code */
   }
 
     result = status;         /* use the already set error code */
   }
 
@@ -1521,12 +1797,12 @@ static CURLcode pop3_perform(struct connectdata *conn, bool *connected,
 {
   /* This is POP3 and no proxy */
   CURLcode result = CURLE_OK;
 {
   /* This is POP3 and no proxy */
   CURLcode result = CURLE_OK;
+  struct POP3 *pop3 = conn->data->req.protop;
 
   DEBUGF(infof(conn->data, "DO phase starts\n"));
 
   if(conn->data->set.opt_no_body) {
     /* Requested no body means no transfer */
 
   DEBUGF(infof(conn->data, "DO phase starts\n"));
 
   if(conn->data->set.opt_no_body) {
     /* Requested no body means no transfer */
-    struct POP3 *pop3 = conn->data->state.proto.pop3;
     pop3->transfer = FTPTRANSFER_INFO;
   }
 
     pop3->transfer = FTPTRANSFER_INFO;
   }
 
@@ -1563,15 +1839,6 @@ static CURLcode pop3_do(struct connectdata *conn, bool *done)
 
   *done = FALSE; /* default to false */
 
 
   *done = FALSE; /* default to false */
 
-  /* Since connections can be re-used between SessionHandles, there might be a
-     connection already existing but on a fresh SessionHandle struct. As such
-     we make sure we have a good POP3 struct to play with. For new connections
-     the POP3 struct is allocated and setup in the pop3_connect() function. */
-  Curl_reset_reqproto(conn);
-  result = pop3_init(conn);
-  if(result)
-    return result;
-
   /* Parse the URL path */
   result = pop3_parse_url_path(conn);
   if(result)
   /* Parse the URL path */
   result = pop3_parse_url_path(conn);
   if(result)
@@ -1594,8 +1861,7 @@ static CURLcode pop3_do(struct connectdata *conn, bool *done)
  * Disconnect from an POP3 server. Cleanup protocol-specific per-connection
  * resources. BLOCKING.
  */
  * Disconnect from an POP3 server. Cleanup protocol-specific per-connection
  * resources. BLOCKING.
  */
-static CURLcode pop3_disconnect(struct connectdata *conn,
-                                bool dead_connection)
+static CURLcode pop3_disconnect(struct connectdata *conn, bool dead_connection)
 {
   struct pop3_conn *pop3c = &conn->proto.pop3c;
 
 {
   struct pop3_conn *pop3c = &conn->proto.pop3c;
 
@@ -1605,7 +1871,7 @@ static CURLcode pop3_disconnect(struct connectdata *conn,
 
   /* The POP3 session may or may not have been allocated/setup at this
      point! */
 
   /* The POP3 session may or may not have been allocated/setup at this
      point! */
-  if(!dead_connection && pop3c->pp.conn)
+  if(!dead_connection && pop3c->pp.conn && pop3c->pp.conn->bits.protoconnstart)
     if(!pop3_perform_quit(conn))
       (void)pop3_block_statemach(conn); /* ignore errors on QUIT */
 
     if(!pop3_perform_quit(conn))
       (void)pop3_block_statemach(conn); /* ignore errors on QUIT */
 
@@ -1668,8 +1934,8 @@ static CURLcode pop3_regular_transfer(struct connectdata *conn,
   /* Set the progress data */
   Curl_pgrsSetUploadCounter(data, 0);
   Curl_pgrsSetDownloadCounter(data, 0);
   /* Set the progress data */
   Curl_pgrsSetUploadCounter(data, 0);
   Curl_pgrsSetDownloadCounter(data, 0);
-  Curl_pgrsSetUploadSize(data, 0);
-  Curl_pgrsSetDownloadSize(data, 0);
+  Curl_pgrsSetUploadSize(data, -1);
+  Curl_pgrsSetDownloadSize(data, -1);
 
   /* Carry out the perform */
   result = pop3_perform(conn, &connected, dophase_done);
 
   /* Carry out the perform */
   result = pop3_perform(conn, &connected, dophase_done);
@@ -1685,6 +1951,11 @@ static CURLcode pop3_setup_connection(struct connectdata *conn)
 {
   struct SessionHandle *data = conn->data;
 
 {
   struct SessionHandle *data = conn->data;
 
+  /* Initialise the POP3 layer */
+  CURLcode result = pop3_init(conn);
+  if(result)
+    return result;
+
   if(conn->bits.httpproxy && !data->set.tunnel_thru_httpproxy) {
     /* Unless we have asked to tunnel POP3 operations through the proxy, we
        switch and use HTTP operations only */
   if(conn->bits.httpproxy && !data->set.tunnel_thru_httpproxy) {
     /* Unless we have asked to tunnel POP3 operations through the proxy, we
        switch and use HTTP operations only */
@@ -1700,10 +1971,8 @@ static CURLcode pop3_setup_connection(struct connectdata *conn)
 #endif
     }
 
 #endif
     }
 
-    /* We explicitly mark this connection as persistent here as we're doing
-       POP3 over HTTP and thus we accidentally avoid setting this value
-       otherwise */
-    conn->bits.close = FALSE;
+    /* set it up as an HTTP connection instead */
+    return conn->handler->setup_connection(conn);
 #else
     failf(data, "POP3 over http proxy requires HTTP support built-in!");
     return CURLE_UNSUPPORTED_PROTOCOL;
 #else
     failf(data, "POP3 over http proxy requires HTTP support built-in!");
     return CURLE_UNSUPPORTED_PROTOCOL;
@@ -1727,52 +1996,68 @@ static CURLcode pop3_parse_url_options(struct connectdata *conn)
   struct pop3_conn *pop3c = &conn->proto.pop3c;
   const char *options = conn->options;
   const char *ptr = options;
   struct pop3_conn *pop3c = &conn->proto.pop3c;
   const char *options = conn->options;
   const char *ptr = options;
+  bool reset = TRUE;
 
 
-  if(options) {
+  while(ptr && *ptr) {
     const char *key = ptr;
 
     while(*ptr && *ptr != '=')
         ptr++;
 
     if(strnequal(key, "AUTH", 4)) {
     const char *key = ptr;
 
     while(*ptr && *ptr != '=')
         ptr++;
 
     if(strnequal(key, "AUTH", 4)) {
-      const char *value = ptr + 1;
+      size_t len = 0;
+      const char *value = ++ptr;
+
+      if(reset) {
+        reset = FALSE;
+        pop3c->preftype = POP3_TYPE_NONE;
+        pop3c->prefmech = SASL_AUTH_NONE;
+      }
 
 
-      if(strequal(value, "*")) {
+      while(*ptr && *ptr != ';') {
+        ptr++;
+        len++;
+      }
+
+      if(strnequal(value, "*", len)) {
         pop3c->preftype = POP3_TYPE_ANY;
         pop3c->prefmech = SASL_AUTH_ANY;
       }
         pop3c->preftype = POP3_TYPE_ANY;
         pop3c->prefmech = SASL_AUTH_ANY;
       }
-      else if(strequal(value, "+APOP")) {
+      else if(strnequal(value, "+APOP", len)) {
         pop3c->preftype = POP3_TYPE_APOP;
         pop3c->prefmech = SASL_AUTH_NONE;
       }
         pop3c->preftype = POP3_TYPE_APOP;
         pop3c->prefmech = SASL_AUTH_NONE;
       }
-      else if(strequal(value, "LOGIN")) {
+      else if(strnequal(value, SASL_MECH_STRING_LOGIN, len)) {
         pop3c->preftype = POP3_TYPE_SASL;
         pop3c->preftype = POP3_TYPE_SASL;
-        pop3c->prefmech = SASL_MECH_LOGIN;
+        pop3c->prefmech |= SASL_MECH_LOGIN;
       }
       }
-      else if(strequal(value, "PLAIN")) {
+      else if(strnequal(value, SASL_MECH_STRING_PLAIN, len)) {
         pop3c->preftype = POP3_TYPE_SASL;
         pop3c->preftype = POP3_TYPE_SASL;
-        pop3c->prefmech = SASL_MECH_PLAIN;
+        pop3c->prefmech |= SASL_MECH_PLAIN;
       }
       }
-      else if(strequal(value, "CRAM-MD5")) {
+      else if(strnequal(value, SASL_MECH_STRING_CRAM_MD5, len)) {
         pop3c->preftype = POP3_TYPE_SASL;
         pop3c->preftype = POP3_TYPE_SASL;
-        pop3c->prefmech = SASL_MECH_CRAM_MD5;
+        pop3c->prefmech |= SASL_MECH_CRAM_MD5;
       }
       }
-      else if(strequal(value, "DIGEST-MD5")) {
+      else if(strnequal(value, SASL_MECH_STRING_DIGEST_MD5, len)) {
         pop3c->preftype = POP3_TYPE_SASL;
         pop3c->preftype = POP3_TYPE_SASL;
-        pop3c->prefmech = SASL_MECH_DIGEST_MD5;
+        pop3c->prefmech |= SASL_MECH_DIGEST_MD5;
       }
       }
-      else if(strequal(value, "GSSAPI")) {
+      else if(strnequal(value, SASL_MECH_STRING_GSSAPI, len)) {
         pop3c->preftype = POP3_TYPE_SASL;
         pop3c->preftype = POP3_TYPE_SASL;
-        pop3c->prefmech = SASL_MECH_GSSAPI;
+        pop3c->prefmech |= SASL_MECH_GSSAPI;
       }
       }
-      else if(strequal(value, "NTLM")) {
+      else if(strnequal(value, SASL_MECH_STRING_NTLM, len)) {
         pop3c->preftype = POP3_TYPE_SASL;
         pop3c->preftype = POP3_TYPE_SASL;
-        pop3c->prefmech = SASL_MECH_NTLM;
+        pop3c->prefmech |= SASL_MECH_NTLM;
       }
       }
-      else {
-        pop3c->preftype = POP3_TYPE_NONE;
-        pop3c->prefmech = SASL_AUTH_NONE;
+      else if(strnequal(value, SASL_MECH_STRING_XOAUTH2, len)) {
+        pop3c->preftype = POP3_TYPE_SASL;
+        pop3c->prefmech |= SASL_MECH_XOAUTH2;
       }
       }
+
+      if(*ptr == ';')
+        ptr++;
     }
     else
       result = CURLE_URL_MALFORMAT;
     }
     else
       result = CURLE_URL_MALFORMAT;
@@ -1791,7 +2076,7 @@ static CURLcode pop3_parse_url_path(struct connectdata *conn)
 {
   /* The POP3 struct is already initialised in pop3_connect() */
   struct SessionHandle *data = conn->data;
 {
   /* The POP3 struct is already initialised in pop3_connect() */
   struct SessionHandle *data = conn->data;
-  struct POP3 *pop3 = data->state.proto.pop3;
+  struct POP3 *pop3 = data->req.protop;
   const char *path = data->state.path;
 
   /* URL decode the path for the message ID */
   const char *path = data->state.path;
 
   /* URL decode the path for the message ID */
@@ -1808,7 +2093,7 @@ static CURLcode pop3_parse_custom_request(struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
-  struct POP3 *pop3 = data->state.proto.pop3;
+  struct POP3 *pop3 = data->req.protop;
   const char *custom = data->set.str[STRING_CUSTOMREQUEST];
 
   /* URL decode the custom request */
   const char *custom = data->set.str[STRING_CUSTOMREQUEST];
 
   /* URL decode the custom request */
@@ -1820,6 +2105,110 @@ static CURLcode pop3_parse_custom_request(struct connectdata *conn)
 
 /***********************************************************************
  *
 
 /***********************************************************************
  *
+ * pop3_calc_sasl_details()
+ *
+ * Calculate the required login details for SASL authentication.
+ */
+static CURLcode pop3_calc_sasl_details(struct connectdata *conn,
+                                       const char **mech,
+                                       char **initresp, size_t *len,
+                                       pop3state *state1, pop3state *state2)
+{
+  CURLcode result = CURLE_OK;
+  struct SessionHandle *data = conn->data;
+  struct pop3_conn *pop3c = &conn->proto.pop3c;
+
+  /* Calculate the supported authentication mechanism, by decreasing order of
+     security, as well as the initial response where appropriate */
+#if defined(USE_KERBEROS5)
+  if((pop3c->authmechs & SASL_MECH_GSSAPI) &&
+      (pop3c->prefmech & SASL_MECH_GSSAPI)) {
+    pop3c->mutual_auth = FALSE; /* TODO: Calculate mutual authentication */
+
+    *mech = SASL_MECH_STRING_GSSAPI;
+    *state1 = POP3_AUTH_GSSAPI;
+    *state2 = POP3_AUTH_GSSAPI_TOKEN;
+    pop3c->authused = SASL_MECH_GSSAPI;
+
+    if(data->set.sasl_ir)
+      result = Curl_sasl_create_gssapi_user_message(data, conn->user,
+                                                    conn->passwd, "pop",
+                                                    pop3c->mutual_auth,
+                                                    NULL, &conn->krb5,
+                                                    initresp, len);
+  }
+  else
+#endif
+#ifndef CURL_DISABLE_CRYPTO_AUTH
+  if((pop3c->authmechs & SASL_MECH_DIGEST_MD5) &&
+      (pop3c->prefmech & SASL_MECH_DIGEST_MD5)) {
+    *mech = SASL_MECH_STRING_DIGEST_MD5;
+    *state1 = POP3_AUTH_DIGESTMD5;
+    pop3c->authused = SASL_MECH_DIGEST_MD5;
+  }
+  else if((pop3c->authmechs & SASL_MECH_CRAM_MD5) &&
+          (pop3c->prefmech & SASL_MECH_CRAM_MD5)) {
+    *mech = SASL_MECH_STRING_CRAM_MD5;
+    *state1 = POP3_AUTH_CRAMMD5;
+    pop3c->authused = SASL_MECH_CRAM_MD5;
+  }
+  else
+#endif
+#ifdef USE_NTLM
+  if((pop3c->authmechs & SASL_MECH_NTLM) &&
+      (pop3c->prefmech & SASL_MECH_NTLM)) {
+    *mech = SASL_MECH_STRING_NTLM;
+    *state1 = POP3_AUTH_NTLM;
+    *state2 = POP3_AUTH_NTLM_TYPE2MSG;
+    pop3c->authused = SASL_MECH_NTLM;
+
+    if(data->set.sasl_ir)
+      result = Curl_sasl_create_ntlm_type1_message(conn->user, conn->passwd,
+                                                    &conn->ntlm,
+                                                    initresp, len);
+  }
+  else
+#endif
+  if(((pop3c->authmechs & SASL_MECH_XOAUTH2) &&
+      (pop3c->prefmech & SASL_MECH_XOAUTH2) &&
+      (pop3c->prefmech != SASL_AUTH_ANY)) || conn->xoauth2_bearer) {
+    *mech = SASL_MECH_STRING_XOAUTH2;
+    *state1 = POP3_AUTH_XOAUTH2;
+    *state2 = POP3_AUTH_FINAL;
+    pop3c->authused = SASL_MECH_XOAUTH2;
+
+    if(data->set.sasl_ir)
+      result = Curl_sasl_create_xoauth2_message(data, conn->user,
+                                                conn->xoauth2_bearer,
+                                                initresp, len);
+  }
+  else if((pop3c->authmechs & SASL_MECH_LOGIN) &&
+          (pop3c->prefmech & SASL_MECH_LOGIN)) {
+    *mech = SASL_MECH_STRING_LOGIN;
+    *state1 = POP3_AUTH_LOGIN;
+    *state2 = POP3_AUTH_LOGIN_PASSWD;
+    pop3c->authused = SASL_MECH_LOGIN;
+
+    if(data->set.sasl_ir)
+      result = Curl_sasl_create_login_message(data, conn->user, initresp, len);
+  }
+  else if((pop3c->authmechs & SASL_MECH_PLAIN) &&
+          (pop3c->prefmech & SASL_MECH_PLAIN)) {
+    *mech = SASL_MECH_STRING_PLAIN;
+    *state1 = POP3_AUTH_PLAIN;
+    *state2 = POP3_AUTH_FINAL;
+    pop3c->authused = SASL_MECH_PLAIN;
+
+    if(data->set.sasl_ir)
+      result = Curl_sasl_create_plain_message(data, conn->user, conn->passwd,
+                                              initresp, len);
+  }
+
+  return result;
+}
+
+/***********************************************************************
+ *
  * Curl_pop3_write()
  *
  * This function scans the body after the end-of-body and writes everything
  * Curl_pop3_write()
  *
  * This function scans the body after the end-of-body and writes everything
index 0186e04..729a55a 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2009 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2009 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -43,6 +43,11 @@ typedef enum {
   POP3_AUTH_DIGESTMD5_RESP,
   POP3_AUTH_NTLM,
   POP3_AUTH_NTLM_TYPE2MSG,
   POP3_AUTH_DIGESTMD5_RESP,
   POP3_AUTH_NTLM,
   POP3_AUTH_NTLM_TYPE2MSG,
+  POP3_AUTH_GSSAPI,
+  POP3_AUTH_GSSAPI_TOKEN,
+  POP3_AUTH_GSSAPI_NO_DATA,
+  POP3_AUTH_XOAUTH2,
+  POP3_AUTH_CANCEL,
   POP3_AUTH_FINAL,
   POP3_APOP,
   POP3_USER,
   POP3_AUTH_FINAL,
   POP3_APOP,
   POP3_USER,
@@ -79,6 +84,7 @@ struct pop3_conn {
   unsigned int authused;  /* SASL auth mechanism used for the connection */
   char *apoptimestamp;    /* APOP timestamp from the server greeting */
   bool tls_supported;     /* StartTLS capability supported by server */
   unsigned int authused;  /* SASL auth mechanism used for the connection */
   char *apoptimestamp;    /* APOP timestamp from the server greeting */
   bool tls_supported;     /* StartTLS capability supported by server */
+  bool mutual_auth;       /* Mutual authentication enabled (GSSAPI only) */
 };
 
 extern const struct Curl_handler Curl_handler_pop3;
 };
 
 extern const struct Curl_handler Curl_handler_pop3;
@@ -91,7 +97,7 @@ extern const struct Curl_handler Curl_handler_pop3s;
 
 /* Authentication type values */
 #define POP3_TYPE_NONE      0
 
 /* Authentication type values */
 #define POP3_TYPE_NONE      0
-#define POP3_TYPE_ANY       ~0
+#define POP3_TYPE_ANY       ~0U
 
 /* This is the 5-bytes End-Of-Body marker for POP3 */
 #define POP3_EOB "\x0d\x0a\x2e\x0d\x0a"
 
 /* This is the 5-bytes End-Of-Body marker for POP3 */
 #define POP3_EOB "\x0d\x0a\x2e\x0d\x0a"
index dac7f8d..f147ce7 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -42,8 +42,8 @@ static void time2str(char *r, curl_off_t seconds)
   if(h <= CURL_OFF_T_C(99)) {
     m = (seconds - (h*CURL_OFF_T_C(3600))) / CURL_OFF_T_C(60);
     s = (seconds - (h*CURL_OFF_T_C(3600))) - (m*CURL_OFF_T_C(60));
   if(h <= CURL_OFF_T_C(99)) {
     m = (seconds - (h*CURL_OFF_T_C(3600))) / CURL_OFF_T_C(60);
     s = (seconds - (h*CURL_OFF_T_C(3600))) - (m*CURL_OFF_T_C(60));
-    snprintf(r, 9, "%2" FORMAT_OFF_T ":%02" FORMAT_OFF_T ":%02" FORMAT_OFF_T,
-             h, m, s);
+    snprintf(r, 9, "%2" CURL_FORMAT_CURL_OFF_T ":%02" CURL_FORMAT_CURL_OFF_T
+             ":%02" CURL_FORMAT_CURL_OFF_T, h, m, s);
   }
   else {
     /* this equals to more than 99 hours, switch to a more suitable output
   }
   else {
     /* this equals to more than 99 hours, switch to a more suitable output
@@ -51,9 +51,10 @@ static void time2str(char *r, curl_off_t seconds)
     d = seconds / CURL_OFF_T_C(86400);
     h = (seconds - (d*CURL_OFF_T_C(86400))) / CURL_OFF_T_C(3600);
     if(d <= CURL_OFF_T_C(999))
     d = seconds / CURL_OFF_T_C(86400);
     h = (seconds - (d*CURL_OFF_T_C(86400))) / CURL_OFF_T_C(3600);
     if(d <= CURL_OFF_T_C(999))
-      snprintf(r, 9, "%3" FORMAT_OFF_T "d %02" FORMAT_OFF_T "h", d, h);
+      snprintf(r, 9, "%3" CURL_FORMAT_CURL_OFF_T
+               "d %02" CURL_FORMAT_CURL_OFF_T "h", d, h);
     else
     else
-      snprintf(r, 9, "%7" FORMAT_OFF_T "d", d);
+      snprintf(r, 9, "%7" CURL_FORMAT_CURL_OFF_T "d", d);
   }
 }
 
   }
 }
 
@@ -69,40 +70,40 @@ static char *max5data(curl_off_t bytes, char *max5)
 #define ONE_PETABYTE (CURL_OFF_T_C(1024) * ONE_TERABYTE)
 
   if(bytes < CURL_OFF_T_C(100000))
 #define ONE_PETABYTE (CURL_OFF_T_C(1024) * ONE_TERABYTE)
 
   if(bytes < CURL_OFF_T_C(100000))
-    snprintf(max5, 6, "%5" FORMAT_OFF_T, bytes);
+    snprintf(max5, 6, "%5" CURL_FORMAT_CURL_OFF_T, bytes);
 
   else if(bytes < CURL_OFF_T_C(10000) * ONE_KILOBYTE)
 
   else if(bytes < CURL_OFF_T_C(10000) * ONE_KILOBYTE)
-    snprintf(max5, 6, "%4" FORMAT_OFF_T "k", bytes/ONE_KILOBYTE);
+    snprintf(max5, 6, "%4" CURL_FORMAT_CURL_OFF_T "k", bytes/ONE_KILOBYTE);
 
   else if(bytes < CURL_OFF_T_C(100) * ONE_MEGABYTE)
     /* 'XX.XM' is good as long as we're less than 100 megs */
 
   else if(bytes < CURL_OFF_T_C(100) * ONE_MEGABYTE)
     /* 'XX.XM' is good as long as we're less than 100 megs */
-    snprintf(max5, 6, "%2" FORMAT_OFF_T ".%0" FORMAT_OFF_T "M",
-              bytes/ONE_MEGABYTE,
+    snprintf(max5, 6, "%2" CURL_FORMAT_CURL_OFF_T ".%0"
+             CURL_FORMAT_CURL_OFF_T "M", bytes/ONE_MEGABYTE,
              (bytes%ONE_MEGABYTE) / (ONE_MEGABYTE/CURL_OFF_T_C(10)) );
 
 #if (CURL_SIZEOF_CURL_OFF_T > 4)
 
   else if(bytes < CURL_OFF_T_C(10000) * ONE_MEGABYTE)
     /* 'XXXXM' is good until we're at 10000MB or above */
              (bytes%ONE_MEGABYTE) / (ONE_MEGABYTE/CURL_OFF_T_C(10)) );
 
 #if (CURL_SIZEOF_CURL_OFF_T > 4)
 
   else if(bytes < CURL_OFF_T_C(10000) * ONE_MEGABYTE)
     /* 'XXXXM' is good until we're at 10000MB or above */
-    snprintf(max5, 6, "%4" FORMAT_OFF_T "M", bytes/ONE_MEGABYTE);
+    snprintf(max5, 6, "%4" CURL_FORMAT_CURL_OFF_T "M", bytes/ONE_MEGABYTE);
 
   else if(bytes < CURL_OFF_T_C(100) * ONE_GIGABYTE)
     /* 10000 MB - 100 GB, we show it as XX.XG */
 
   else if(bytes < CURL_OFF_T_C(100) * ONE_GIGABYTE)
     /* 10000 MB - 100 GB, we show it as XX.XG */
-    snprintf(max5, 6, "%2" FORMAT_OFF_T ".%0" FORMAT_OFF_T "G",
-              bytes/ONE_GIGABYTE,
+    snprintf(max5, 6, "%2" CURL_FORMAT_CURL_OFF_T ".%0"
+             CURL_FORMAT_CURL_OFF_T "G", bytes/ONE_GIGABYTE,
              (bytes%ONE_GIGABYTE) / (ONE_GIGABYTE/CURL_OFF_T_C(10)) );
 
   else if(bytes < CURL_OFF_T_C(10000) * ONE_GIGABYTE)
     /* up to 10000GB, display without decimal: XXXXG */
              (bytes%ONE_GIGABYTE) / (ONE_GIGABYTE/CURL_OFF_T_C(10)) );
 
   else if(bytes < CURL_OFF_T_C(10000) * ONE_GIGABYTE)
     /* up to 10000GB, display without decimal: XXXXG */
-    snprintf(max5, 6, "%4" FORMAT_OFF_T "G", bytes/ONE_GIGABYTE);
+    snprintf(max5, 6, "%4" CURL_FORMAT_CURL_OFF_T "G", bytes/ONE_GIGABYTE);
 
   else if(bytes < CURL_OFF_T_C(10000) * ONE_TERABYTE)
     /* up to 10000TB, display without decimal: XXXXT */
 
   else if(bytes < CURL_OFF_T_C(10000) * ONE_TERABYTE)
     /* up to 10000TB, display without decimal: XXXXT */
-    snprintf(max5, 6, "%4" FORMAT_OFF_T "T", bytes/ONE_TERABYTE);
+    snprintf(max5, 6, "%4" CURL_FORMAT_CURL_OFF_T "T", bytes/ONE_TERABYTE);
 
   else
     /* up to 10000PB, display without decimal: XXXXP */
 
   else
     /* up to 10000PB, display without decimal: XXXXP */
-    snprintf(max5, 6, "%4" FORMAT_OFF_T "P", bytes/ONE_PETABYTE);
+    snprintf(max5, 6, "%4" CURL_FORMAT_CURL_OFF_T "P", bytes/ONE_PETABYTE);
 
     /* 16384 petabytes (16 exabytes) is the maximum a 64 bit unsigned number
        can hold, but our data type is signed so 8192PB will be the maximum. */
 
     /* 16384 petabytes (16 exabytes) is the maximum a 64 bit unsigned number
        can hold, but our data type is signed so 8192PB will be the maximum. */
@@ -110,7 +111,7 @@ static char *max5data(curl_off_t bytes, char *max5)
 #else
 
   else
 #else
 
   else
-    snprintf(max5, 6, "%4" FORMAT_OFF_T "M", bytes/ONE_MEGABYTE);
+    snprintf(max5, 6, "%4" CURL_FORMAT_CURL_OFF_T "M", bytes/ONE_MEGABYTE);
 
 #endif
 
 
 #endif
 
@@ -158,8 +159,8 @@ void Curl_pgrsResetTimesSizes(struct SessionHandle *data)
   data->progress.t_pretransfer = 0.0;
   data->progress.t_starttransfer = 0.0;
 
   data->progress.t_pretransfer = 0.0;
   data->progress.t_starttransfer = 0.0;
 
-  Curl_pgrsSetDownloadSize(data, 0);
-  Curl_pgrsSetUploadSize(data, 0);
+  Curl_pgrsSetDownloadSize(data, -1);
+  Curl_pgrsSetUploadSize(data, -1);
 }
 
 void Curl_pgrsTime(struct SessionHandle *data, timerid timer)
 }
 
 void Curl_pgrsTime(struct SessionHandle *data, timerid timer)
@@ -171,8 +172,12 @@ void Curl_pgrsTime(struct SessionHandle *data, timerid timer)
   case TIMER_NONE:
     /* mistake filter */
     break;
   case TIMER_NONE:
     /* mistake filter */
     break;
+  case TIMER_STARTOP:
+    /* This is set at the start of a transfer */
+    data->progress.t_startop = now;
+    break;
   case TIMER_STARTSINGLE:
   case TIMER_STARTSINGLE:
-    /* This is set at the start of a single fetch */
+    /* This is set at the start of each single fetch */
     data->progress.t_startsingle = now;
     break;
 
     data->progress.t_startsingle = now;
     break;
 
@@ -229,20 +234,26 @@ void Curl_pgrsSetUploadCounter(struct SessionHandle *data, curl_off_t size)
 
 void Curl_pgrsSetDownloadSize(struct SessionHandle *data, curl_off_t size)
 {
 
 void Curl_pgrsSetDownloadSize(struct SessionHandle *data, curl_off_t size)
 {
-  data->progress.size_dl = size;
-  if(size >= 0)
+  if(size >= 0) {
+    data->progress.size_dl = size;
     data->progress.flags |= PGRS_DL_SIZE_KNOWN;
     data->progress.flags |= PGRS_DL_SIZE_KNOWN;
-  else
+  }
+  else {
+    data->progress.size_dl = 0;
     data->progress.flags &= ~PGRS_DL_SIZE_KNOWN;
     data->progress.flags &= ~PGRS_DL_SIZE_KNOWN;
+  }
 }
 
 void Curl_pgrsSetUploadSize(struct SessionHandle *data, curl_off_t size)
 {
 }
 
 void Curl_pgrsSetUploadSize(struct SessionHandle *data, curl_off_t size)
 {
-  data->progress.size_ul = size;
-  if(size >= 0)
+  if(size >= 0) {
+    data->progress.size_ul = size;
     data->progress.flags |= PGRS_UL_SIZE_KNOWN;
     data->progress.flags |= PGRS_UL_SIZE_KNOWN;
-  else
+  }
+  else {
+    data->progress.size_ul = 0;
     data->progress.flags &= ~PGRS_UL_SIZE_KNOWN;
     data->progress.flags &= ~PGRS_UL_SIZE_KNOWN;
+  }
 }
 
 /*
 }
 
 /*
@@ -392,8 +403,8 @@ int Curl_pgrsUpdate(struct connectdata *conn)
     if(!(data->progress.flags & PGRS_HEADERS_OUT)) {
       if(data->state.resume_from) {
         fprintf(data->set.err,
     if(!(data->progress.flags & PGRS_HEADERS_OUT)) {
       if(data->state.resume_from) {
         fprintf(data->set.err,
-                "** Resuming transfer from byte position %" FORMAT_OFF_T "\n",
-                data->state.resume_from);
+                "** Resuming transfer from byte position %"
+                CURL_FORMAT_CURL_OFF_T "\n", data->state.resume_from);
       }
       fprintf(data->set.err,
               "  %% Total    %% Received %% Xferd  Average Speed   "
       }
       fprintf(data->set.err,
               "  %% Total    %% Received %% Xferd  Average Speed   "
@@ -457,9 +468,9 @@ int Curl_pgrsUpdate(struct connectdata *conn)
 
     fprintf(data->set.err,
             "\r"
 
     fprintf(data->set.err,
             "\r"
-            "%3" FORMAT_OFF_T " %s  "
-            "%3" FORMAT_OFF_T " %s  "
-            "%3" FORMAT_OFF_T " %s  %s  %s %s %s %s %s",
+            "%3" CURL_FORMAT_CURL_OFF_T " %s  "
+            "%3" CURL_FORMAT_CURL_OFF_T " %s  "
+            "%3" CURL_FORMAT_CURL_OFF_T " %s  %s  %s %s %s %s %s",
             total_percen,  /* 3 letters */                /* total % */
             max5data(total_expected_transfer, max5[2]),   /* total size */
             dlpercen,      /* 3 letters */                /* rcvd % */
             total_percen,  /* 3 letters */                /* total % */
             max5data(total_expected_transfer, max5[2]),   /* total size */
             dlpercen,      /* 3 letters */                /* rcvd % */
index f97fef9..a1e6f1a 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 
 typedef enum {
   TIMER_NONE,
 
 typedef enum {
   TIMER_NONE,
+  TIMER_STARTOP,
+  TIMER_STARTSINGLE,
   TIMER_NAMELOOKUP,
   TIMER_CONNECT,
   TIMER_APPCONNECT,
   TIMER_PRETRANSFER,
   TIMER_STARTTRANSFER,
   TIMER_POSTRANSFER,
   TIMER_NAMELOOKUP,
   TIMER_CONNECT,
   TIMER_APPCONNECT,
   TIMER_PRETRANSFER,
   TIMER_STARTTRANSFER,
   TIMER_POSTRANSFER,
-  TIMER_STARTSINGLE,
   TIMER_STARTACCEPT,
   TIMER_REDIRECT,
   TIMER_LAST /* must be last */
   TIMER_STARTACCEPT,
   TIMER_REDIRECT,
   TIMER_LAST /* must be last */
diff --git a/lib/qssl.c b/lib/qssl.c
deleted file mode 100644 (file)
index b8a8dae..0000000
+++ /dev/null
@@ -1,521 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at http://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-#include "curl_setup.h"
-
-#ifdef USE_QSOSSL
-
-#include <qsossl.h>
-
-#ifdef HAVE_LIMITS_H
-#  include <limits.h>
-#endif
-
-#include <curl/curl.h>
-#include "urldata.h"
-#include "sendf.h"
-#include "qssl.h"
-#include "sslgen.h"
-#include "connect.h" /* for the connect timeout */
-#include "select.h"
-#include "x509asn1.h"
-#include "curl_memory.h"
-/* The last #include file should be: */
-#include "memdebug.h"
-
-
-int Curl_qsossl_init(void)
-
-{
-  /* Nothing to do here. We must have connection data to initialize ssl, so
-   * defer.
-   */
-
-  return 1;
-}
-
-
-void Curl_qsossl_cleanup(void)
-
-{
-  /* Nothing to do. */
-}
-
-
-static CURLcode Curl_qsossl_init_session(struct SessionHandle * data)
-
-{
-  int rc;
-  char * certname;
-  SSLInit initstr;
-  SSLInitApp initappstr;
-
-  /* Initialize the job for SSL according to the current parameters.
-   * QsoSSL offers two ways to do it: SSL_Init_Application() that uses an
-   *  application identifier to select certificates in the main certificate
-   *  store, and SSL_Init() that uses named keyring files and a password.
-   * It is not possible to have different keyrings for the CAs and the
-   *  local certificate. We thus use the certificate name to identify the
-   *  keyring if given, else the CA file name.
-   * If the key file name is given, it is taken as the password for the
-   *  keyring in certificate file.
-   * We first try to SSL_Init_Application(), then SSL_Init() if it failed.
-   */
-
-  certname = data->set.str[STRING_CERT];
-
-  if(!certname) {
-    certname = data->set.str[STRING_SSL_CAFILE];
-
-    if(!certname)
-      return CURLE_OK;          /* Use previous setup. */
-    }
-
-  memset((char *) &initappstr, 0, sizeof initappstr);
-  initappstr.applicationID = certname;
-  initappstr.applicationIDLen = strlen(certname);
-  initappstr.protocol = SSL_VERSION_CURRENT;    /* TLSV1 compat. SSLV[23]. */
-  initappstr.sessionType = SSL_REGISTERED_AS_CLIENT;
-  rc = SSL_Init_Application(&initappstr);
-
-  if(rc == SSL_ERROR_NOT_REGISTERED) {
-    initstr.keyringFileName = certname;
-    initstr.keyringPassword = data->set.str[STRING_KEY];
-    initstr.cipherSuiteList = NULL;    /* Use default. */
-    initstr.cipherSuiteListLen = 0;
-    rc = SSL_Init(&initstr);
-    }
-
-  switch (rc) {
-
-  case 0:                             /* No error. */
-    break;
-
-  case SSL_ERROR_IO:
-    failf(data, "SSL_Init() I/O error: %s", strerror(errno));
-    return CURLE_SSL_CONNECT_ERROR;
-
-  case SSL_ERROR_BAD_CIPHER_SUITE:
-    return CURLE_SSL_CIPHER;
-
-  case SSL_ERROR_KEYPASSWORD_EXPIRED:
-  case SSL_ERROR_NOT_REGISTERED:
-    return CURLE_SSL_CONNECT_ERROR;
-
-  case SSL_ERROR_NO_KEYRING:
-    return CURLE_SSL_CACERT;
-
-  case SSL_ERROR_CERT_EXPIRED:
-    return CURLE_SSL_CERTPROBLEM;
-
-  default:
-    failf(data, "SSL_Init(): %s", SSL_Strerror(rc, NULL));
-    return CURLE_SSL_CONNECT_ERROR;
-  }
-
-  return CURLE_OK;
-}
-
-
-static CURLcode Curl_qsossl_create(struct connectdata * conn, int sockindex)
-
-{
-  SSLHandle * h;
-  struct ssl_connect_data * connssl = &conn->ssl[sockindex];
-
-  h = SSL_Create(conn->sock[sockindex], SSL_ENCRYPT);
-
-  if(!h) {
-    failf(conn->data, "SSL_Create() I/O error: %s", strerror(errno));
-    return CURLE_SSL_CONNECT_ERROR;
-  }
-
-  connssl->handle = h;
-  return CURLE_OK;
-}
-
-
-static int Curl_qsossl_trap_cert(SSLHandle * h)
-
-{
-  return 1;       /* Accept certificate. */
-}
-
-
-static CURLcode Curl_qsossl_handshake(struct connectdata * conn, int sockindex)
-
-{
-  int rc;
-  struct SessionHandle * data = conn->data;
-  struct ssl_connect_data * connssl = &conn->ssl[sockindex];
-  SSLHandle * h = connssl->handle;
-  long timeout_ms;
-
-  h->exitPgm = data->set.ssl.verifypeer? NULL: Curl_qsossl_trap_cert;
-
-  /* figure out how long time we should wait at maximum */
-  timeout_ms = Curl_timeleft(data, NULL, TRUE);
-
-  if(timeout_ms < 0) {
-    /* time-out, bail out, go home */
-    failf(data, "Connection time-out");
-    return CURLE_OPERATION_TIMEDOUT;
-  }
-
-  /* SSL_Handshake() timeout resolution is second, so round up. */
-  h->timeout = (timeout_ms + 1000 - 1) / 1000;
-
-  /* Set-up protocol. */
-
-  switch (data->set.ssl.version) {
-
-  default:
-  case CURL_SSLVERSION_DEFAULT:
-    h->protocol = SSL_VERSION_CURRENT;          /* TLSV1 compat. SSLV[23]. */
-    break;
-
-  case CURL_SSLVERSION_TLSv1:
-    h->protocol = TLS_VERSION_1;
-    break;
-
-  case CURL_SSLVERSION_SSLv2:
-    h->protocol = SSL_VERSION_2;
-    break;
-
-  case CURL_SSLVERSION_SSLv3:
-    h->protocol = SSL_VERSION_3;
-    break;
-  }
-
-  h->peerCert = NULL;
-  h->peerCertLen = 0;
-  rc = SSL_Handshake(h, SSL_HANDSHAKE_AS_CLIENT);
-
-  switch (rc) {
-
-  case 0:                             /* No error. */
-    break;
-
-  case SSL_ERROR_BAD_CERTIFICATE:
-  case SSL_ERROR_BAD_CERT_SIG:
-  case SSL_ERROR_NOT_TRUSTED_ROOT:
-    return CURLE_PEER_FAILED_VERIFICATION;
-
-  case SSL_ERROR_BAD_CIPHER_SUITE:
-  case SSL_ERROR_NO_CIPHERS:
-    return CURLE_SSL_CIPHER;
-
-  case SSL_ERROR_CERTIFICATE_REJECTED:
-  case SSL_ERROR_CERT_EXPIRED:
-  case SSL_ERROR_NO_CERTIFICATE:
-    return CURLE_SSL_CERTPROBLEM;
-
-  case SSL_ERROR_IO:
-    failf(data, "SSL_Handshake() I/O error: %s", strerror(errno));
-    return CURLE_SSL_CONNECT_ERROR;
-
-  default:
-    failf(data, "SSL_Handshake(): %s", SSL_Strerror(rc, NULL));
-    return CURLE_SSL_CONNECT_ERROR;
-  }
-
-  /* Verify host. */
-  rc = Curl_verifyhost(conn, h->peerCert, h->peerCert + h->peerCertLen);
-  if(rc != CURLE_OK)
-    return rc;
-
-  /* Gather certificate info. */
-  if(data->set.ssl.certinfo) {
-    if(Curl_ssl_init_certinfo(data, 1))
-      return CURLE_OUT_OF_MEMORY;
-    if(h->peerCert) {
-      rc = Curl_extract_certinfo(conn, 0, h->peerCert,
-                                 h->peerCert + h->peerCertLen);
-      if(rc != CURLE_OK)
-        return rc;
-    }
-  }
-
-  return CURLE_OK;
-}
-
-
-static Curl_recv qsossl_recv;
-static Curl_send qsossl_send;
-
-CURLcode Curl_qsossl_connect(struct connectdata * conn, int sockindex)
-
-{
-  struct SessionHandle * data = conn->data;
-  struct ssl_connect_data * connssl = &conn->ssl[sockindex];
-  int rc;
-
-  rc = Curl_qsossl_init_session(data);
-
-  if(rc == CURLE_OK) {
-    rc = Curl_qsossl_create(conn, sockindex);
-
-    if(rc == CURLE_OK) {
-      rc = Curl_qsossl_handshake(conn, sockindex);
-      if(rc != CURLE_OK)
-        SSL_Destroy(connssl->handle);
-    }
-  }
-
-  if(rc == CURLE_OK) {
-    conn->recv[sockindex] = qsossl_recv;
-    conn->send[sockindex] = qsossl_send;
-    connssl->state = ssl_connection_complete;
-  }
-  else {
-    connssl->handle = NULL;
-    connssl->use = FALSE;
-    connssl->state = ssl_connection_none;
-  }
-
-  return rc;
-}
-
-
-static int Curl_qsossl_close_one(struct ssl_connect_data * conn,
-                                 struct SessionHandle * data)
-
-{
-  int rc;
-
-  if(!conn->handle)
-    return 0;
-
-  rc = SSL_Destroy(conn->handle);
-
-  if(rc) {
-    if(rc == SSL_ERROR_IO) {
-      failf(data, "SSL_Destroy() I/O error: %s", strerror(errno));
-      return -1;
-    }
-
-    /* An SSL error. */
-    failf(data, "SSL_Destroy() returned error %s", SSL_Strerror(rc, NULL));
-    return -1;
-  }
-
-  conn->handle = NULL;
-  return 0;
-}
-
-
-void Curl_qsossl_close(struct connectdata *conn, int sockindex)
-
-{
-  struct SessionHandle *data = conn->data;
-  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
-
-  if(connssl->use)
-    (void) Curl_qsossl_close_one(connssl, data);
-}
-
-
-int Curl_qsossl_close_all(struct SessionHandle * data)
-
-{
-  /* Unimplemented. */
-  (void) data;
-  return 0;
-}
-
-
-int Curl_qsossl_shutdown(struct connectdata * conn, int sockindex)
-
-{
-  struct ssl_connect_data * connssl = &conn->ssl[sockindex];
-  struct SessionHandle *data = conn->data;
-  ssize_t nread;
-  int what;
-  int rc;
-  char buf[120];
-
-  if(!connssl->handle)
-    return 0;
-
-  if(data->set.ftp_ccc != CURLFTPSSL_CCC_ACTIVE)
-    return 0;
-
-  if(Curl_qsossl_close_one(connssl, data))
-    return -1;
-
-  rc = 0;
-
-  what = Curl_socket_ready(conn->sock[sockindex],
-                           CURL_SOCKET_BAD, SSL_SHUTDOWN_TIMEOUT);
-
-  for(;;) {
-    if(what < 0) {
-      /* anything that gets here is fatally bad */
-      failf(data, "select/poll on SSL socket, errno: %d", SOCKERRNO);
-      rc = -1;
-      break;
-    }
-
-    if(!what) {                                /* timeout */
-      failf(data, "SSL shutdown timeout");
-      break;
-    }
-
-    /* Something to read, let's do it and hope that it is the close
-       notify alert from the server. No way to SSL_Read now, so use read(). */
-
-    nread = read(conn->sock[sockindex], buf, sizeof(buf));
-
-    if(nread < 0) {
-      failf(data, "read: %s", strerror(errno));
-      rc = -1;
-    }
-
-    if(nread <= 0)
-      break;
-
-    what = Curl_socket_ready(conn->sock[sockindex], CURL_SOCKET_BAD, 0);
-  }
-
-  return rc;
-}
-
-
-static ssize_t qsossl_send(struct connectdata * conn, int sockindex,
-                           const void * mem, size_t len, CURLcode * curlcode)
-
-{
-  /* SSL_Write() is said to return 'int' while write() and send() returns
-     'size_t' */
-  int rc;
-
-  rc = SSL_Write(conn->ssl[sockindex].handle, (void *) mem, (int) len);
-
-  if(rc < 0) {
-    switch(rc) {
-
-    case SSL_ERROR_BAD_STATE:
-      /* The operation did not complete; the same SSL I/O function
-         should be called again later. This is basically an EWOULDBLOCK
-         equivalent. */
-      *curlcode = CURLE_AGAIN;
-      return -1;
-
-    case SSL_ERROR_IO:
-      switch (errno) {
-      case EWOULDBLOCK:
-      case EINTR:
-        *curlcode = CURLE_AGAIN;
-        return -1;
-        }
-
-      failf(conn->data, "SSL_Write() I/O error: %s", strerror(errno));
-      *curlcode = CURLE_SEND_ERROR;
-      return -1;
-    }
-
-    /* An SSL error. */
-    failf(conn->data, "SSL_Write() returned error %s",
-          SSL_Strerror(rc, NULL));
-    *curlcode = CURLE_SEND_ERROR;
-    return -1;
-  }
-
-  return (ssize_t) rc; /* number of bytes */
-}
-
-
-static ssize_t qsossl_recv(struct connectdata * conn, int num, char * buf,
-                           size_t buffersize, CURLcode * curlcode)
-
-{
-  char error_buffer[120]; /* OpenSSL documents that this must be at
-                             least 120 bytes long. */
-  unsigned long sslerror;
-  int buffsize;
-  int nread;
-
-  buffsize = (buffersize > (size_t)INT_MAX) ? INT_MAX : (int)buffersize;
-  nread = SSL_Read(conn->ssl[num].handle, buf, buffsize);
-
-  if(nread < 0) {
-    /* failed SSL_read */
-
-    switch (nread) {
-
-    case SSL_ERROR_BAD_STATE:
-      /* there's data pending, re-invoke SSL_Read(). */
-      *curlcode = CURLE_AGAIN;
-      return -1;
-
-    case SSL_ERROR_IO:
-      switch (errno) {
-      case EWOULDBLOCK:
-        *curlcode = CURLE_AGAIN;
-        return -1;
-        }
-
-      failf(conn->data, "SSL_Read() I/O error: %s", strerror(errno));
-      *curlcode = CURLE_RECV_ERROR;
-      return -1;
-
-    default:
-      failf(conn->data, "SSL read error: %s", SSL_Strerror(nread, NULL));
-      *curlcode = CURLE_RECV_ERROR;
-      return -1;
-    }
-  }
-  return (ssize_t) nread;
-}
-
-
-size_t Curl_qsossl_version(char * buffer, size_t size)
-
-{
-  strncpy(buffer, "IBM OS/400 SSL", size);
-  return strlen(buffer);
-}
-
-
-int Curl_qsossl_check_cxn(struct connectdata * cxn)
-
-{
-  int err;
-  int errlen;
-
-  /* The only thing that can be tested here is at the socket level. */
-
-  if(!cxn->ssl[FIRSTSOCKET].handle)
-    return 0; /* connection has been closed */
-
-  err = 0;
-  errlen = sizeof err;
-
-  if(getsockopt(cxn->sock[FIRSTSOCKET], SOL_SOCKET, SO_ERROR,
-                 (unsigned char *) &err, &errlen) ||
-      errlen != sizeof err || err)
-    return 0; /* connection has been closed */
-
-  return -1;  /* connection status unknown */
-}
-
-#endif /* USE_QSOSSL */
diff --git a/lib/qssl.h b/lib/qssl.h
deleted file mode 100644 (file)
index 1fb47b8..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-#ifndef HEADER_CURL_QSSL_H
-#define HEADER_CURL_QSSL_H
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at http://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-#include "curl_setup.h"
-
-/*
- * This header should only be needed to get included by sslgen.c and qssl.c
- */
-
-#include "urldata.h"
-
-#ifdef USE_QSOSSL
-int Curl_qsossl_init(void);
-void Curl_qsossl_cleanup(void);
-CURLcode Curl_qsossl_connect(struct connectdata * conn, int sockindex);
-void Curl_qsossl_close(struct connectdata *conn, int sockindex);
-int Curl_qsossl_close_all(struct SessionHandle * data);
-int Curl_qsossl_shutdown(struct connectdata * conn, int sockindex);
-
-size_t Curl_qsossl_version(char * buffer, size_t size);
-int Curl_qsossl_check_cxn(struct connectdata * cxn);
-
-/* API setup for QsoSSL */
-#define curlssl_init Curl_qsossl_init
-#define curlssl_cleanup Curl_qsossl_cleanup
-#define curlssl_connect Curl_qsossl_connect
-
-/*  No session handling for QsoSSL */
-#define curlssl_session_free(x) Curl_nop_stmt
-#define curlssl_close_all Curl_qsossl_close_all
-#define curlssl_close Curl_qsossl_close
-#define curlssl_shutdown(x,y) Curl_qsossl_shutdown(x,y)
-#define curlssl_set_engine(x,y) CURLE_NOT_BUILT_IN
-#define curlssl_set_engine_default(x) CURLE_NOT_BUILT_IN
-#define curlssl_engines_list(x) NULL
-#define curlssl_version Curl_qsossl_version
-#define curlssl_check_cxn(x) Curl_qsossl_check_cxn(x)
-#define curlssl_data_pending(x,y) 0
-#endif /* USE_QSOSSL */
-
-#endif /* HEADER_CURL_QSSL_H */
index 3dc1490..029738d 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -81,6 +81,8 @@ static CURLcode rtsp_rtp_readwrite(struct SessionHandle *data,
                                    ssize_t *nread,
                                    bool *readmore);
 
                                    ssize_t *nread,
                                    bool *readmore);
 
+static CURLcode rtsp_setup_connection(struct connectdata *conn);
+
 
 /* this returns the socket to wait for in the DO and DOING state for the multi
    interface and then we're always _sending_ a request and thus we wait for
 
 /* this returns the socket to wait for in the DO and DOING state for the multi
    interface and then we're always _sending_ a request and thus we wait for
@@ -104,7 +106,7 @@ CURLcode rtp_client_write(struct connectdata *conn, char *ptr, size_t len);
  */
 const struct Curl_handler Curl_handler_rtsp = {
   "RTSP",                               /* scheme */
  */
 const struct Curl_handler Curl_handler_rtsp = {
   "RTSP",                               /* scheme */
-  ZERO_NULL,                            /* setup_connection */
+  rtsp_setup_connection,                /* setup_connection */
   rtsp_do,                              /* do_it */
   rtsp_done,                            /* done */
   ZERO_NULL,                            /* do_more */
   rtsp_do,                              /* do_it */
   rtsp_done,                            /* done */
   ZERO_NULL,                            /* do_more */
@@ -122,6 +124,19 @@ const struct Curl_handler Curl_handler_rtsp = {
   PROTOPT_NONE                          /* flags */
 };
 
   PROTOPT_NONE                          /* flags */
 };
 
+
+static CURLcode rtsp_setup_connection(struct connectdata *conn)
+{
+  struct RTSP *rtsp;
+
+  conn->data->req.protop = rtsp = calloc(1, sizeof(struct RTSP));
+  if(!rtsp)
+    return CURLE_OUT_OF_MEMORY;
+
+  return CURLE_OK;
+}
+
+
 /*
  * The server may send us RTP data at any point, and RTSPREQ_RECEIVE does not
  * want to block the application forever while receiving a stream. Therefore,
 /*
  * The server may send us RTP data at any point, and RTSPREQ_RECEIVE does not
  * want to block the application forever while receiving a stream. Therefore,
@@ -185,7 +200,7 @@ static CURLcode rtsp_done(struct connectdata *conn,
                           CURLcode status, bool premature)
 {
   struct SessionHandle *data = conn->data;
                           CURLcode status, bool premature)
 {
   struct SessionHandle *data = conn->data;
-  struct RTSP *rtsp = data->state.proto.rtsp;
+  struct RTSP *rtsp = data->req.protop;
   CURLcode httpStatus;
   long CSeq_sent;
   long CSeq_recv;
   CURLcode httpStatus;
   long CSeq_sent;
   long CSeq_recv;
@@ -221,7 +236,7 @@ static CURLcode rtsp_do(struct connectdata *conn, bool *done)
   struct SessionHandle *data = conn->data;
   CURLcode result=CURLE_OK;
   Curl_RtspReq rtspreq = data->set.rtspreq;
   struct SessionHandle *data = conn->data;
   CURLcode result=CURLE_OK;
   Curl_RtspReq rtspreq = data->set.rtspreq;
-  struct RTSP *rtsp;
+  struct RTSP *rtsp = data->req.protop;
   struct HTTP *http;
   Curl_send_buffer *req_buffer;
   curl_off_t postsize = 0; /* for ANNOUNCE and SET_PARAMETER */
   struct HTTP *http;
   Curl_send_buffer *req_buffer;
   curl_off_t postsize = 0; /* for ANNOUNCE and SET_PARAMETER */
@@ -239,20 +254,6 @@ static CURLcode rtsp_do(struct connectdata *conn, bool *done)
 
   *done = TRUE;
 
 
   *done = TRUE;
 
-  Curl_reset_reqproto(conn);
-
-  if(!data->state.proto.rtsp) {
-    /* Only allocate this struct if we don't already have it! */
-
-    rtsp = calloc(1, sizeof(struct RTSP));
-    if(!rtsp)
-      return CURLE_OUT_OF_MEMORY;
-    data->state.proto.rtsp = rtsp;
-  }
-  else {
-    rtsp = data->state.proto.rtsp;
-  }
-
   http = &(rtsp->http_wrapper);
   /* Assert that no one has changed the RTSP struct in an evil way */
   DEBUGASSERT((void *)http == (void *)rtsp);
   http = &(rtsp->http_wrapper);
   /* Assert that no one has changed the RTSP struct in an evil way */
   DEBUGASSERT((void *)http == (void *)rtsp);
@@ -340,7 +341,7 @@ static CURLcode rtsp_do(struct connectdata *conn, bool *done)
   }
 
   /* Transport Header for SETUP requests */
   }
 
   /* Transport Header for SETUP requests */
-  p_transport = Curl_checkheaders(data, "Transport:");
+  p_transport = Curl_checkheaders(conn, "Transport:");
   if(rtspreq == RTSPREQ_SETUP && !p_transport) {
     /* New Transport: setting? */
     if(data->set.str[STRING_RTSP_TRANSPORT]) {
   if(rtspreq == RTSPREQ_SETUP && !p_transport) {
     /* New Transport: setting? */
     if(data->set.str[STRING_RTSP_TRANSPORT]) {
@@ -364,11 +365,11 @@ static CURLcode rtsp_do(struct connectdata *conn, bool *done)
   /* Accept Headers for DESCRIBE requests */
   if(rtspreq == RTSPREQ_DESCRIBE) {
     /* Accept Header */
   /* Accept Headers for DESCRIBE requests */
   if(rtspreq == RTSPREQ_DESCRIBE) {
     /* Accept Header */
-    p_accept = Curl_checkheaders(data, "Accept:")?
+    p_accept = Curl_checkheaders(conn, "Accept:")?
       NULL:"Accept: application/sdp\r\n";
 
     /* Accept-Encoding header */
       NULL:"Accept: application/sdp\r\n";
 
     /* Accept-Encoding header */
-    if(!Curl_checkheaders(data, "Accept-Encoding:") &&
+    if(!Curl_checkheaders(conn, "Accept-Encoding:") &&
        data->set.str[STRING_ENCODING]) {
       Curl_safefree(conn->allocptr.accept_encoding);
       conn->allocptr.accept_encoding =
        data->set.str[STRING_ENCODING]) {
       Curl_safefree(conn->allocptr.accept_encoding);
       conn->allocptr.accept_encoding =
@@ -385,18 +386,18 @@ static CURLcode rtsp_do(struct connectdata *conn, bool *done)
      it might have been used in the proxy connect, but if we have got a header
      with the user-agent string specified, we erase the previously made string
      here. */
      it might have been used in the proxy connect, but if we have got a header
      with the user-agent string specified, we erase the previously made string
      here. */
-  if(Curl_checkheaders(data, "User-Agent:") && conn->allocptr.uagent) {
+  if(Curl_checkheaders(conn, "User-Agent:") && conn->allocptr.uagent) {
     Curl_safefree(conn->allocptr.uagent);
     conn->allocptr.uagent = NULL;
   }
     Curl_safefree(conn->allocptr.uagent);
     conn->allocptr.uagent = NULL;
   }
-  else if(!Curl_checkheaders(data, "User-Agent:") &&
+  else if(!Curl_checkheaders(conn, "User-Agent:") &&
           data->set.str[STRING_USERAGENT]) {
     p_uagent = conn->allocptr.uagent;
   }
 
   /* Referrer */
   Curl_safefree(conn->allocptr.ref);
           data->set.str[STRING_USERAGENT]) {
     p_uagent = conn->allocptr.uagent;
   }
 
   /* Referrer */
   Curl_safefree(conn->allocptr.ref);
-  if(data->change.referer && !Curl_checkheaders(data, "Referer:"))
+  if(data->change.referer && !Curl_checkheaders(conn, "Referer:"))
     conn->allocptr.ref = aprintf("Referer: %s\r\n", data->change.referer);
   else
     conn->allocptr.ref = NULL;
     conn->allocptr.ref = aprintf("Referer: %s\r\n", data->change.referer);
   else
     conn->allocptr.ref = NULL;
@@ -413,7 +414,7 @@ static CURLcode rtsp_do(struct connectdata *conn, bool *done)
      (rtspreq  & (RTSPREQ_PLAY | RTSPREQ_PAUSE | RTSPREQ_RECORD))) {
 
     /* Check to see if there is a range set in the custom headers */
      (rtspreq  & (RTSPREQ_PLAY | RTSPREQ_PAUSE | RTSPREQ_RECORD))) {
 
     /* Check to see if there is a range set in the custom headers */
-    if(!Curl_checkheaders(data, "Range:") && data->state.range) {
+    if(!Curl_checkheaders(conn, "Range:") && data->state.range) {
       Curl_safefree(conn->allocptr.rangeline);
       conn->allocptr.rangeline = aprintf("Range: %s\r\n", data->state.range);
       p_range = conn->allocptr.rangeline;
       Curl_safefree(conn->allocptr.rangeline);
       conn->allocptr.rangeline = aprintf("Range: %s\r\n", data->state.range);
       p_range = conn->allocptr.rangeline;
@@ -423,11 +424,11 @@ static CURLcode rtsp_do(struct connectdata *conn, bool *done)
   /*
    * Sanity check the custom headers
    */
   /*
    * Sanity check the custom headers
    */
-  if(Curl_checkheaders(data, "CSeq:")) {
+  if(Curl_checkheaders(conn, "CSeq:")) {
     failf(data, "CSeq cannot be set as a custom header.");
     return CURLE_RTSP_CSEQ_ERROR;
   }
     failf(data, "CSeq cannot be set as a custom header.");
     return CURLE_RTSP_CSEQ_ERROR;
   }
-  if(Curl_checkheaders(data, "Session:")) {
+  if(Curl_checkheaders(conn, "Session:")) {
     failf(data, "Session ID cannot be set as a custom header.");
     return CURLE_BAD_FUNCTION_ARGUMENT;
   }
     failf(data, "Session ID cannot be set as a custom header.");
     return CURLE_BAD_FUNCTION_ARGUMENT;
   }
@@ -483,7 +484,7 @@ static CURLcode rtsp_do(struct connectdata *conn, bool *done)
       return result;
   }
 
       return result;
   }
 
-  result = Curl_add_custom_headers(conn, req_buffer);
+  result = Curl_add_custom_headers(conn, FALSE, req_buffer);
   if(result)
     return result;
 
   if(result)
     return result;
 
@@ -492,7 +493,7 @@ static CURLcode rtsp_do(struct connectdata *conn, bool *done)
      rtspreq == RTSPREQ_GET_PARAMETER) {
 
     if(data->set.upload) {
      rtspreq == RTSPREQ_GET_PARAMETER) {
 
     if(data->set.upload) {
-      putsize = data->set.infilesize;
+      putsize = data->state.infilesize;
       data->set.httpreq = HTTPREQ_PUT;
 
     }
       data->set.httpreq = HTTPREQ_PUT;
 
     }
@@ -506,9 +507,9 @@ static CURLcode rtsp_do(struct connectdata *conn, bool *done)
     if(putsize > 0 || postsize > 0) {
       /* As stated in the http comments, it is probably not wise to
        * actually set a custom Content-Length in the headers */
     if(putsize > 0 || postsize > 0) {
       /* As stated in the http comments, it is probably not wise to
        * actually set a custom Content-Length in the headers */
-      if(!Curl_checkheaders(data, "Content-Length:")) {
+      if(!Curl_checkheaders(conn, "Content-Length:")) {
         result = Curl_add_bufferf(req_buffer,
         result = Curl_add_bufferf(req_buffer,
-            "Content-Length: %" FORMAT_OFF_T"\r\n",
+            "Content-Length: %" CURL_FORMAT_CURL_OFF_T"\r\n",
             (data->set.upload ? putsize : postsize));
         if(result)
           return result;
             (data->set.upload ? putsize : postsize));
         if(result)
           return result;
@@ -516,7 +517,7 @@ static CURLcode rtsp_do(struct connectdata *conn, bool *done)
 
       if(rtspreq == RTSPREQ_SET_PARAMETER ||
          rtspreq == RTSPREQ_GET_PARAMETER) {
 
       if(rtspreq == RTSPREQ_SET_PARAMETER ||
          rtspreq == RTSPREQ_GET_PARAMETER) {
-        if(!Curl_checkheaders(data, "Content-Type:")) {
+        if(!Curl_checkheaders(conn, "Content-Type:")) {
           result = Curl_add_bufferf(req_buffer,
               "Content-Type: text/parameters\r\n");
           if(result)
           result = Curl_add_bufferf(req_buffer,
               "Content-Type: text/parameters\r\n");
           if(result)
@@ -525,7 +526,7 @@ static CURLcode rtsp_do(struct connectdata *conn, bool *done)
       }
 
       if(rtspreq == RTSPREQ_ANNOUNCE) {
       }
 
       if(rtspreq == RTSPREQ_ANNOUNCE) {
-        if(!Curl_checkheaders(data, "Content-Type:")) {
+        if(!Curl_checkheaders(conn, "Content-Type:")) {
           result = Curl_add_bufferf(req_buffer,
               "Content-Type: application/sdp\r\n");
           if(result)
           result = Curl_add_bufferf(req_buffer,
               "Content-Type: application/sdp\r\n");
           if(result)
@@ -749,7 +750,8 @@ CURLcode Curl_rtsp_parseheader(struct connectdata *conn,
     /* Store the received CSeq. Match is verified in rtsp_done */
     int nc = sscanf(&header[4], ": %ld", &CSeq);
     if(nc == 1) {
     /* Store the received CSeq. Match is verified in rtsp_done */
     int nc = sscanf(&header[4], ": %ld", &CSeq);
     if(nc == 1) {
-      data->state.proto.rtsp->CSeq_recv = CSeq; /* mark the request */
+      struct RTSP *rtsp = data->req.protop;
+      rtsp->CSeq_recv = CSeq; /* mark the request */
       data->state.rtsp_CSeq_recv = CSeq; /* update the handle */
     }
     else {
       data->state.rtsp_CSeq_recv = CSeq; /* update the handle */
     }
     else {
@@ -761,7 +763,7 @@ CURLcode Curl_rtsp_parseheader(struct connectdata *conn,
     char *start;
 
     /* Find the first non-space letter */
     char *start;
 
     /* Find the first non-space letter */
-    start = header + 9;
+    start = header + 8;
     while(*start && ISSPACE(*start))
       start++;
 
     while(*start && ISSPACE(*start))
       start++;
 
index 495a496..607048c 100644 (file)
@@ -7,10 +7,10 @@
  * rewrite to work around the paragraph 2 in the BSD licenses as explained
  * below.
  *
  * rewrite to work around the paragraph 2 in the BSD licenses as explained
  * below.
  *
- * Copyright (c) 1998, 1999 Kungliga Tekniska Högskolan
+ * Copyright (c) 1998, 1999, 2013 Kungliga Tekniska Högskolan
  * (Royal Institute of Technology, Stockholm, Sweden).
  *
  * (Royal Institute of Technology, Stockholm, Sweden).
  *
- * Copyright (C) 2001 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2001 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * All rights reserved.
  *
  *
  * All rights reserved.
  *
@@ -44,7 +44,7 @@
 #include "curl_setup.h"
 
 #ifndef CURL_DISABLE_FTP
 #include "curl_setup.h"
 
 #ifndef CURL_DISABLE_FTP
-#if defined(HAVE_KRB4) || defined(HAVE_GSSAPI)
+#ifdef HAVE_GSSAPI
 
 #ifdef HAVE_NETDB_H
 #include <netdb.h>
 
 #ifdef HAVE_NETDB_H
 #include <netdb.h>
@@ -57,7 +57,7 @@
 #include "urldata.h"
 #include "curl_base64.h"
 #include "curl_memory.h"
 #include "urldata.h"
 #include "curl_base64.h"
 #include "curl_memory.h"
-#include "krb4.h"
+#include "curl_sec.h"
 #include "ftp.h"
 #include "sendf.h"
 #include "rawstr.h"
 #include "ftp.h"
 #include "sendf.h"
 #include "rawstr.h"
@@ -110,12 +110,9 @@ static char level_to_char(int level) {
 }
 
 static const struct Curl_sec_client_mech * const mechs[] = {
 }
 
 static const struct Curl_sec_client_mech * const mechs[] = {
-#if defined(HAVE_GSSAPI)
+#ifdef HAVE_GSSAPI
   &Curl_krb5_client_mech,
 #endif
   &Curl_krb5_client_mech,
 #endif
-#if defined(HAVE_KRB4)
-  &Curl_krb4_client_mech,
-#endif
   NULL
 };
 
   NULL
 };
 
@@ -132,11 +129,11 @@ static int ftp_send_command(struct connectdata *conn, const char *message, ...)
   vsnprintf(print_buffer, sizeof(print_buffer), message, args);
   va_end(args);
 
   vsnprintf(print_buffer, sizeof(print_buffer), message, args);
   va_end(args);
 
-  if(Curl_ftpsendf(conn, print_buffer) != CURLE_OK) {
+  if(Curl_ftpsendf(conn, print_buffer)) {
     ftp_code = -1;
   }
   else {
     ftp_code = -1;
   }
   else {
-    if(Curl_GetFTPResponse(&nread, conn, &ftp_code) != CURLE_OK)
+    if(Curl_GetFTPResponse(&nread, conn, &ftp_code))
       ftp_code = -1;
   }
 
       ftp_code = -1;
   }
 
@@ -150,20 +147,20 @@ static CURLcode
 socket_read(curl_socket_t fd, void *to, size_t len)
 {
   char *to_p = to;
 socket_read(curl_socket_t fd, void *to, size_t len)
 {
   char *to_p = to;
-  CURLcode code;
+  CURLcode result;
   ssize_t nread;
 
   while(len > 0) {
   ssize_t nread;
 
   while(len > 0) {
-    code = Curl_read_plain(fd, to_p, len, &nread);
-    if(code == CURLE_OK) {
+    result = Curl_read_plain(fd, to_p, len, &nread);
+    if(!result) {
       len -= nread;
       to_p += nread;
     }
     else {
       /* FIXME: We are doing a busy wait */
       len -= nread;
       to_p += nread;
     }
     else {
       /* FIXME: We are doing a busy wait */
-      if(code == CURLE_AGAIN)
+      if(result == CURLE_AGAIN)
         continue;
         continue;
-      return code;
+      return result;
     }
   }
   return CURLE_OK;
     }
   }
   return CURLE_OK;
@@ -178,20 +175,20 @@ socket_write(struct connectdata *conn, curl_socket_t fd, const void *to,
              size_t len)
 {
   const char *to_p = to;
              size_t len)
 {
   const char *to_p = to;
-  CURLcode code;
+  CURLcode result;
   ssize_t written;
 
   while(len > 0) {
   ssize_t written;
 
   while(len > 0) {
-    code = Curl_write_plain(conn, fd, to_p, len, &written);
-    if(code == CURLE_OK) {
+    result = Curl_write_plain(conn, fd, to_p, len, &written);
+    if(!result) {
       len -= written;
       to_p += written;
     }
     else {
       /* FIXME: We are doing a busy wait */
       len -= written;
       to_p += written;
     }
     else {
       /* FIXME: We are doing a busy wait */
-      if(code == CURLE_AGAIN)
+      if(result == CURLE_AGAIN)
         continue;
         continue;
-      return code;
+      return result;
     }
   }
   return CURLE_OK;
     }
   }
   return CURLE_OK;
@@ -199,15 +196,15 @@ socket_write(struct connectdata *conn, curl_socket_t fd, const void *to,
 
 static CURLcode read_data(struct connectdata *conn,
                           curl_socket_t fd,
 
 static CURLcode read_data(struct connectdata *conn,
                           curl_socket_t fd,
-                          struct krb4buffer *buf)
+                          struct krb5buffer *buf)
 {
   int len;
   void* tmp;
 {
   int len;
   void* tmp;
-  CURLcode ret;
+  CURLcode result;
 
 
-  ret = socket_read(fd, &len, sizeof(len));
-  if(ret != CURLE_OK)
-    return ret;
+  result = socket_read(fd, &len, sizeof(len));
+  if(result)
+    return result;
 
   len = ntohl(len);
   tmp = realloc(buf->data, len);
 
   len = ntohl(len);
   tmp = realloc(buf->data, len);
@@ -215,9 +212,9 @@ static CURLcode read_data(struct connectdata *conn,
     return CURLE_OUT_OF_MEMORY;
 
   buf->data = tmp;
     return CURLE_OUT_OF_MEMORY;
 
   buf->data = tmp;
-  ret = socket_read(fd, buf->data, len);
-  if(ret != CURLE_OK)
-    return ret;
+  result = socket_read(fd, buf->data, len);
+  if(result)
+    return result;
   buf->size = conn->mech->decode(conn->app_data, buf->data, len,
                                  conn->data_prot, conn);
   buf->index = 0;
   buf->size = conn->mech->decode(conn->app_data, buf->data, len,
                                  conn->data_prot, conn);
   buf->index = 0;
@@ -225,7 +222,7 @@ static CURLcode read_data(struct connectdata *conn,
 }
 
 static size_t
 }
 
 static size_t
-buffer_read(struct krb4buffer *buf, void *data, size_t len)
+buffer_read(struct krb5buffer *buf, void *data, size_t len)
 {
   if(buf->size - buf->index < len)
     len = buf->size - buf->index;
 {
   if(buf->size - buf->index < len)
     len = buf->size - buf->index;
@@ -259,7 +256,7 @@ static ssize_t sec_recv(struct connectdata *conn, int sockindex,
   buffer += bytes_read;
 
   while(len > 0) {
   buffer += bytes_read;
 
   while(len > 0) {
-    if(read_data(conn, fd, &conn->in_buffer) != CURLE_OK)
+    if(read_data(conn, fd, &conn->in_buffer))
       return -1;
     if(conn->in_buffer.size == 0) {
       if(bytes_read > 0)
       return -1;
     if(conn->in_buffer.size == 0) {
       if(bytes_read > 0)
@@ -298,7 +295,7 @@ static void do_sec_send(struct connectdata *conn, curl_socket_t fd,
       prot_level = conn->command_prot;
   }
   bytes = conn->mech->encode(conn->app_data, from, length, prot_level,
       prot_level = conn->command_prot;
   }
   bytes = conn->mech->encode(conn->app_data, from, length, prot_level,
-                             (void**)&buffer, conn);
+                             (void**)&buffer);
   if(!buffer || bytes <= 0)
     return; /* error */
 
   if(!buffer || bytes <= 0)
     return; /* error */
 
@@ -335,7 +332,6 @@ static void do_sec_send(struct connectdata *conn, curl_socket_t fd,
 static ssize_t sec_write(struct connectdata *conn, curl_socket_t fd,
                          const char *buffer, size_t length)
 {
 static ssize_t sec_write(struct connectdata *conn, curl_socket_t fd,
                          const char *buffer, size_t length)
 {
-  /* FIXME: Check for overflow */
   ssize_t tx = 0, len = conn->buffer_size;
 
   len -= conn->mech->overhead(conn->app_data, conn->data_prot,
   ssize_t tx = 0, len = conn->buffer_size;
 
   len -= conn->mech->overhead(conn->app_data, conn->data_prot,
@@ -343,10 +339,9 @@ static ssize_t sec_write(struct connectdata *conn, curl_socket_t fd,
   if(len <= 0)
     len = length;
   while(length) {
   if(len <= 0)
     len = length;
   while(length) {
-    if(len >= 0 || length < (size_t)len) {
-      /* FIXME: Check for overflow. */
+    if(length < (size_t)len)
       len = length;
       len = length;
-    }
+
     do_sec_send(conn, fd, buffer, curlx_sztosi(len));
     length -= len;
     buffer += len;
     do_sec_send(conn, fd, buffer, curlx_sztosi(len));
     length -= len;
     buffer += len;
@@ -405,7 +400,7 @@ int Curl_sec_read_msg(struct connectdata *conn, char *buffer,
     ret_code = 0;
   else {
     /* Check for error? */
     ret_code = 0;
   else {
     /* Check for error? */
-    sscanf(buf, "%d", &ret_code);
+    (void)sscanf(buf, "%d", &ret_code);
   }
 
   if(buf[decoded_len - 1] == '\n')
   }
 
   if(buf[decoded_len - 1] == '\n')
@@ -567,7 +562,7 @@ static CURLcode choose_mech(struct connectdata *conn)
     break;
   }
 
     break;
   }
 
-  return mech != NULL ? CURLE_OK : CURLE_FAILED_INIT;
+  return *mech != NULL ? CURLE_OK : CURLE_FAILED_INIT;
 }
 
 CURLcode
 }
 
 CURLcode
@@ -599,6 +594,6 @@ Curl_sec_end(struct connectdata *conn)
   conn->mech = NULL;
 }
 
   conn->mech = NULL;
 }
 
-#endif /* HAVE_KRB4 || HAVE_GSSAPI */
+#endif /* HAVE_GSSAPI */
 
 #endif /* CURL_DISABLE_FTP */
 
 #endif /* CURL_DISABLE_FTP */
index db7fb6d..1c6481c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include <dos.h>  /* delay() */
 #endif
 
 #include <dos.h>  /* delay() */
 #endif
 
+#ifdef __VXWORKS__
+#include <strings.h>  /* bzero() in FD_SET */
+#endif
+
 #include <curl/curl.h>
 
 #include "urldata.h"
 #include <curl/curl.h>
 
 #include "urldata.h"
@@ -108,8 +112,10 @@ int Curl_wait_ms(int timeout_ms)
     if(error && error_not_EINTR)
       break;
     pending_ms = timeout_ms - elapsed_ms;
     if(error && error_not_EINTR)
       break;
     pending_ms = timeout_ms - elapsed_ms;
-    if(pending_ms <= 0)
+    if(pending_ms <= 0) {
+      r = 0;  /* Simulate a "call timed out" case */
       break;
       break;
+    }
   } while(r == -1);
 #endif /* USE_WINSOCK */
   if(r)
   } while(r == -1);
 #endif /* USE_WINSOCK */
   if(r)
@@ -288,7 +294,37 @@ int Curl_socket_check(curl_socket_t readfd0, /* two sockets to read from */
       pending_tv.tv_sec = 0;
       pending_tv.tv_usec = 0;
     }
       pending_tv.tv_sec = 0;
       pending_tv.tv_usec = 0;
     }
-    r = select((int)maxfd + 1, &fds_read, &fds_write, &fds_err, ptimeout);
+
+    /* WinSock select() must not be called with an fd_set that contains zero
+       fd flags, or it will return WSAEINVAL.  But, it also can't be called
+       with no fd_sets at all!  From the documentation:
+
+         Any two of the parameters, readfds, writefds, or exceptfds, can be
+         given as null. At least one must be non-null, and any non-null
+         descriptor set must contain at least one handle to a socket.
+
+       We know that we have at least one bit set in at least two fd_sets in
+       this case, but we may have no bits set in either fds_read or fd_write,
+       so check for that and handle it.  Luckily, with WinSock, we can _also_
+       ask how many bits are set on an fd_set.
+
+       It is unclear why WinSock doesn't just handle this for us instead of
+       calling this an error.
+
+       Note also that WinSock ignores the first argument, so we don't worry
+       about the fact that maxfd is computed incorrectly with WinSock (since
+       curl_socket_t is unsigned in such cases and thus -1 is the largest
+       value).
+    */
+    r = select((int)maxfd + 1,
+#ifndef USE_WINSOCK
+               &fds_read,
+               &fds_write,
+#else
+               fds_read.fd_count ? &fds_read : NULL,
+               fds_write.fd_count ? &fds_write : NULL,
+#endif
+               &fds_err, ptimeout);
     if(r != -1)
       break;
     error = SOCKERRNO;
     if(r != -1)
       break;
     error = SOCKERRNO;
@@ -402,8 +438,10 @@ int Curl_poll(struct pollfd ufds[], unsigned int nfds, int timeout_ms)
       break;
     if(timeout_ms > 0) {
       pending_ms = timeout_ms - elapsed_ms;
       break;
     if(timeout_ms > 0) {
       pending_ms = timeout_ms - elapsed_ms;
-      if(pending_ms <= 0)
+      if(pending_ms <= 0) {
+        r = 0;  /* Simulate a "call timed out" case */
         break;
         break;
+      }
     }
   } while(r == -1);
 
     }
   } while(r == -1);
 
@@ -446,6 +484,16 @@ int Curl_poll(struct pollfd ufds[], unsigned int nfds, int timeout_ms)
     }
   }
 
     }
   }
 
+#ifdef USE_WINSOCK
+  /* WinSock select() can't handle zero events.  See the comment about this in
+     Curl_check_socket(). */
+  if(fds_read.fd_count == 0 && fds_write.fd_count == 0
+     && fds_err.fd_count == 0) {
+    r = Curl_wait_ms(timeout_ms);
+    return r;
+  }
+#endif
+
   ptimeout = (timeout_ms < 0) ? NULL : &pending_tv;
 
   do {
   ptimeout = (timeout_ms < 0) ? NULL : &pending_tv;
 
   do {
@@ -457,7 +505,19 @@ int Curl_poll(struct pollfd ufds[], unsigned int nfds, int timeout_ms)
       pending_tv.tv_sec = 0;
       pending_tv.tv_usec = 0;
     }
       pending_tv.tv_sec = 0;
       pending_tv.tv_usec = 0;
     }
-    r = select((int)maxfd + 1, &fds_read, &fds_write, &fds_err, ptimeout);
+    r = select((int)maxfd + 1,
+#ifndef USE_WINSOCK
+               &fds_read, &fds_write, &fds_err,
+#else
+               /* WinSock select() can't handle fd_sets with zero bits set, so
+                  don't give it such arguments.  See the comment about this in
+                  Curl_check_socket().
+               */
+               fds_read.fd_count ? &fds_read : NULL,
+               fds_write.fd_count ? &fds_write : NULL,
+               fds_err.fd_count ? &fds_err : NULL,
+#endif
+               ptimeout);
     if(r != -1)
       break;
     error = SOCKERRNO;
     if(r != -1)
       break;
     error = SOCKERRNO;
@@ -465,8 +525,10 @@ int Curl_poll(struct pollfd ufds[], unsigned int nfds, int timeout_ms)
       break;
     if(timeout_ms > 0) {
       pending_ms = timeout_ms - elapsed_ms;
       break;
     if(timeout_ms > 0) {
       pending_ms = timeout_ms - elapsed_ms;
-      if(pending_ms <= 0)
+      if(pending_ms <= 0) {
+        r = 0;  /* Simulate a "call timed out" case */
         break;
         break;
+      }
     }
   } while(r == -1);
 
     }
   } while(r == -1);
 
index d5bf172..2d1a166 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -27,7 +27,7 @@
 #include "urldata.h"
 #include "sendf.h"
 #include "connect.h"
 #include "urldata.h"
 #include "sendf.h"
 #include "connect.h"
-#include "sslgen.h"
+#include "vtls/vtls.h"
 #include "ssh.h"
 #include "multiif.h"
 #include "non-ascii.h"
 #include "ssh.h"
 #include "multiif.h"
 #include "non-ascii.h"
 #define _MPRINTF_REPLACE /* use the internal *printf() functions */
 #include <curl/mprintf.h>
 
 #define _MPRINTF_REPLACE /* use the internal *printf() functions */
 #include <curl/mprintf.h>
 
-/* the krb4 functions only exists for FTP and if krb4 or gssapi is defined */
-#if !defined(CURL_DISABLE_FTP) && (defined(HAVE_KRB4) || defined(HAVE_GSSAPI))
-#include "krb4.h"
-#else
-#define Curl_sec_send(a,b,c,d) -1
-#define Curl_sec_read(a,b,c,d) -1
-#endif
-
 #include "curl_memory.h"
 #include "strerror.h"
 
 #include "curl_memory.h"
 #include "strerror.h"
 
@@ -182,7 +174,7 @@ CURLcode Curl_sendf(curl_socket_t sockfd, struct connectdata *conn,
   struct SessionHandle *data = conn->data;
   ssize_t bytes_written;
   size_t write_len;
   struct SessionHandle *data = conn->data;
   ssize_t bytes_written;
   size_t write_len;
-  CURLcode res = CURLE_OK;
+  CURLcode result = CURLE_OK;
   char *s;
   char *sptr;
   va_list ap;
   char *s;
   char *sptr;
   va_list ap;
@@ -198,9 +190,9 @@ CURLcode Curl_sendf(curl_socket_t sockfd, struct connectdata *conn,
 
   for(;;) {
     /* Write the buffer to the socket */
 
   for(;;) {
     /* Write the buffer to the socket */
-    res = Curl_write(conn, sockfd, sptr, write_len, &bytes_written);
+    result = Curl_write(conn, sockfd, sptr, write_len, &bytes_written);
 
 
-    if(CURLE_OK != res)
+    if(result)
       break;
 
     if(data->set.verbose)
       break;
 
     if(data->set.verbose)
@@ -218,7 +210,7 @@ CURLcode Curl_sendf(curl_socket_t sockfd, struct connectdata *conn,
 
   free(s); /* free the output string */
 
 
   free(s); /* free the output string */
 
-  return res;
+  return result;
 }
 
 /*
 }
 
 /*
@@ -235,10 +227,10 @@ CURLcode Curl_write(struct connectdata *conn,
                     ssize_t *written)
 {
   ssize_t bytes_written;
                     ssize_t *written)
 {
   ssize_t bytes_written;
-  CURLcode curlcode = CURLE_OK;
+  CURLcode result = CURLE_OK;
   int num = (sockfd == conn->sock[SECONDARYSOCKET]);
 
   int num = (sockfd == conn->sock[SECONDARYSOCKET]);
 
-  bytes_written = conn->send[num](conn, num, mem, len, &curlcode);
+  bytes_written = conn->send[num](conn, num, mem, len, &result);
 
   *written = bytes_written;
   if(bytes_written >= 0)
 
   *written = bytes_written;
   if(bytes_written >= 0)
@@ -246,7 +238,7 @@ CURLcode Curl_write(struct connectdata *conn,
     return CURLE_OK;
 
   /* handle CURLE_AGAIN or a send failure */
     return CURLE_OK;
 
   /* handle CURLE_AGAIN or a send failure */
-  switch(curlcode) {
+  switch(result) {
   case CURLE_AGAIN:
     *written = 0;
     return CURLE_OK;
   case CURLE_AGAIN:
     *written = 0;
     return CURLE_OK;
@@ -257,7 +249,7 @@ CURLcode Curl_write(struct connectdata *conn,
 
   default:
     /* we got a specific curlcode, forward it */
 
   default:
     /* we got a specific curlcode, forward it */
-    return curlcode;
+    return result;
   }
 }
 
   }
 }
 
@@ -308,14 +300,14 @@ CURLcode Curl_write_plain(struct connectdata *conn,
                           ssize_t *written)
 {
   ssize_t bytes_written;
                           ssize_t *written)
 {
   ssize_t bytes_written;
-  CURLcode retcode;
+  CURLcode result;
   int num = (sockfd == conn->sock[SECONDARYSOCKET]);
 
   int num = (sockfd == conn->sock[SECONDARYSOCKET]);
 
-  bytes_written = Curl_send_plain(conn, num, mem, len, &retcode);
+  bytes_written = Curl_send_plain(conn, num, mem, len, &result);
 
   *written = bytes_written;
 
 
   *written = bytes_written;
 
-  return retcode;
+  return result;
 }
 
 ssize_t Curl_recv_plain(struct connectdata *conn, int num, char *buf,
 }
 
 ssize_t Curl_recv_plain(struct connectdata *conn, int num, char *buf,
@@ -382,25 +374,21 @@ static CURLcode pausewrite(struct SessionHandle *data,
 }
 
 
 }
 
 
-/* Curl_client_write() sends data to the write callback(s)
-
-   The bit pattern defines to what "streams" to write to. Body and/or header.
-   The defines are in sendf.h of course.
-
-   If CURL_DO_LINEEND_CONV is enabled, data is converted IN PLACE to the
-   local character encoding.  This is a problem and should be changed in
-   the future to leave the original data alone.
+/* Curl_client_chop_write() writes chunks of data not larger than
+ * CURL_MAX_WRITE_SIZE via client write callback(s) and
+ * takes care of pause requests from the callbacks.
  */
  */
-CURLcode Curl_client_write(struct connectdata *conn,
-                           int type,
-                           char *ptr,
-                           size_t len)
+CURLcode Curl_client_chop_write(struct connectdata *conn,
+                                int type,
+                                char * ptr,
+                                size_t len)
 {
   struct SessionHandle *data = conn->data;
 {
   struct SessionHandle *data = conn->data;
-  size_t wrote;
+  curl_write_callback writeheader = NULL;
+  curl_write_callback writebody = NULL;
 
 
-  if(0 == len)
-    len = strlen(ptr);
+  if(!len)
+    return CURLE_OK;
 
   /* If reading is actually paused, we're forced to append this chunk of data
      to the already held data, but only if it is the same type as otherwise it
 
   /* If reading is actually paused, we're forced to append this chunk of data
      to the already held data, but only if it is the same type as otherwise it
@@ -425,70 +413,107 @@ CURLcode Curl_client_write(struct connectdata *conn,
     /* update the pointer and the size */
     data->state.tempwrite = newptr;
     data->state.tempwritesize = newlen;
     /* update the pointer and the size */
     data->state.tempwrite = newptr;
     data->state.tempwritesize = newlen;
-
     return CURLE_OK;
   }
 
     return CURLE_OK;
   }
 
-  if(type & CLIENTWRITE_BODY) {
-    if((conn->handler->protocol&CURLPROTO_FTP) &&
-       conn->proto.ftpc.transfertype == 'A') {
-      /* convert from the network encoding */
-      CURLcode rc = Curl_convert_from_network(data, ptr, len);
-      /* Curl_convert_from_network calls failf if unsuccessful */
-      if(rc)
-        return rc;
-
-#ifdef CURL_DO_LINEEND_CONV
-      /* convert end-of-line markers */
-      len = convert_lineends(data, ptr, len);
-#endif /* CURL_DO_LINEEND_CONV */
-    }
-    /* If the previous block of data ended with CR and this block of data is
-       just a NL, then the length might be zero */
-    if(len) {
-      wrote = data->set.fwrite_func(ptr, 1, len, data->set.out);
-    }
-    else {
-      wrote = len;
-    }
-
-    if(CURL_WRITEFUNC_PAUSE == wrote)
-      return pausewrite(data, type, ptr, len);
-
-    if(wrote != len) {
-      failf(data, "Failed writing body (%zu != %zu)", wrote, len);
-      return CURLE_WRITE_ERROR;
-    }
-  }
-
+  /* Determine the callback(s) to use. */
+  if(type & CLIENTWRITE_BODY)
+    writebody = data->set.fwrite_func;
   if((type & CLIENTWRITE_HEADER) &&
   if((type & CLIENTWRITE_HEADER) &&
-     (data->set.fwrite_header || data->set.writeheader) ) {
+     (data->set.fwrite_header || data->set.writeheader)) {
     /*
      * Write headers to the same callback or to the especially setup
      * header callback function (added after version 7.7.1).
      */
     /*
      * Write headers to the same callback or to the especially setup
      * header callback function (added after version 7.7.1).
      */
-    curl_write_callback writeit=
-      data->set.fwrite_header?data->set.fwrite_header:data->set.fwrite_func;
-
-    /* Note: The header is in the host encoding
-       regardless of the ftp transfer mode (ASCII/Image) */
-
-    wrote = writeit(ptr, 1, len, data->set.writeheader);
-    if(CURL_WRITEFUNC_PAUSE == wrote)
-      /* here we pass in the HEADER bit only since if this was body as well
-         then it was passed already and clearly that didn't trigger the pause,
-         so this is saved for later with the HEADER bit only */
-      return pausewrite(data, CLIENTWRITE_HEADER, ptr, len);
-
-    if(wrote != len) {
-      failf (data, "Failed writing header");
-      return CURLE_WRITE_ERROR;
+    writeheader =
+      data->set.fwrite_header? data->set.fwrite_header: data->set.fwrite_func;
+  }
+
+  /* Chop data, write chunks. */
+  while(len) {
+    size_t chunklen = len <= CURL_MAX_WRITE_SIZE? len: CURL_MAX_WRITE_SIZE;
+
+    if(writebody) {
+      size_t wrote = writebody(ptr, 1, chunklen, data->set.out);
+
+      if(CURL_WRITEFUNC_PAUSE == wrote) {
+        if(conn->handler->flags & PROTOPT_NONETWORK) {
+          /* Protocols that work without network cannot be paused. This is
+             actually only FILE:// just now, and it can't pause since the
+             transfer isn't done using the "normal" procedure. */
+          failf(data, "Write callback asked for PAUSE when not supported!");
+          return CURLE_WRITE_ERROR;
+        }
+        else
+          return pausewrite(data, type, ptr, len);
+      }
+      else if(wrote != chunklen) {
+        failf(data, "Failed writing body (%zu != %zu)", wrote, chunklen);
+        return CURLE_WRITE_ERROR;
+      }
+    }
+
+    if(writeheader) {
+      size_t wrote = writeheader(ptr, 1, chunklen, data->set.writeheader);
+
+      if(CURL_WRITEFUNC_PAUSE == wrote)
+        /* here we pass in the HEADER bit only since if this was body as well
+           then it was passed already and clearly that didn't trigger the
+           pause, so this is saved for later with the HEADER bit only */
+        return pausewrite(data, CLIENTWRITE_HEADER, ptr, len);
+
+      if(wrote != chunklen) {
+        failf (data, "Failed writing header");
+        return CURLE_WRITE_ERROR;
+      }
     }
     }
+
+    ptr += chunklen;
+    len -= chunklen;
   }
 
   return CURLE_OK;
 }
 
   }
 
   return CURLE_OK;
 }
 
+
+/* Curl_client_write() sends data to the write callback(s)
+
+   The bit pattern defines to what "streams" to write to. Body and/or header.
+   The defines are in sendf.h of course.
+
+   If CURL_DO_LINEEND_CONV is enabled, data is converted IN PLACE to the
+   local character encoding.  This is a problem and should be changed in
+   the future to leave the original data alone.
+ */
+CURLcode Curl_client_write(struct connectdata *conn,
+                           int type,
+                           char *ptr,
+                           size_t len)
+{
+  struct SessionHandle *data = conn->data;
+
+  if(0 == len)
+    len = strlen(ptr);
+
+  /* FTP data may need conversion. */
+  if((type & CLIENTWRITE_BODY) &&
+    (conn->handler->protocol & PROTO_FAMILY_FTP) &&
+    conn->proto.ftpc.transfertype == 'A') {
+    /* convert from the network encoding */
+    CURLcode result = Curl_convert_from_network(data, ptr, len);
+    /* Curl_convert_from_network calls failf if unsuccessful */
+    if(result)
+      return result;
+
+#ifdef CURL_DO_LINEEND_CONV
+    /* convert end-of-line markers */
+    len = convert_lineends(data, ptr, len);
+#endif /* CURL_DO_LINEEND_CONV */
+    }
+
+  return Curl_client_chop_write(conn, type, ptr, len);
+}
+
 CURLcode Curl_read_plain(curl_socket_t sockfd,
                          char *buf,
                          size_t bytesfromsocket,
 CURLcode Curl_read_plain(curl_socket_t sockfd,
                          char *buf,
                          size_t bytesfromsocket,
@@ -525,7 +550,7 @@ CURLcode Curl_read(struct connectdata *conn, /* connection data */
                    size_t sizerequested,     /* max amount to read */
                    ssize_t *n)               /* amount bytes read */
 {
                    size_t sizerequested,     /* max amount to read */
                    ssize_t *n)               /* amount bytes read */
 {
-  CURLcode curlcode = CURLE_RECV_ERROR;
+  CURLcode result = CURLE_RECV_ERROR;
   ssize_t nread = 0;
   size_t bytesfromsocket = 0;
   char *buffertofill = NULL;
   ssize_t nread = 0;
   size_t bytesfromsocket = 0;
   char *buffertofill = NULL;
@@ -564,9 +589,9 @@ CURLcode Curl_read(struct connectdata *conn, /* connection data */
     buffertofill = buf;
   }
 
     buffertofill = buf;
   }
 
-  nread = conn->recv[num](conn, num, buffertofill, bytesfromsocket, &curlcode);
+  nread = conn->recv[num](conn, num, buffertofill, bytesfromsocket, &result);
   if(nread < 0)
   if(nread < 0)
-    return curlcode;
+    return result;
 
   if(pipelining) {
     memcpy(buf, conn->master_buffer, nread);
 
   if(pipelining) {
     memcpy(buf, conn->master_buffer, nread);
@@ -661,11 +686,13 @@ int Curl_debug(struct SessionHandle *data, curl_infotype type,
     switch (type) {
     case CURLINFO_HEADER_IN:
       w = "Header";
     switch (type) {
     case CURLINFO_HEADER_IN:
       w = "Header";
+      /* FALLTHROUGH */
     case CURLINFO_DATA_IN:
       t = "from";
       break;
     case CURLINFO_HEADER_OUT:
       w = "Header";
     case CURLINFO_DATA_IN:
       t = "from";
       break;
     case CURLINFO_HEADER_OUT:
       w = "Header";
+      /* FALLTHROUGH */
     case CURLINFO_DATA_OUT:
       t = "to";
       break;
     case CURLINFO_DATA_OUT:
       t = "to";
       break;
index 39489e4..86f06cf 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -51,8 +51,10 @@ void Curl_failf(struct SessionHandle *, const char *fmt, ...);
 #define CLIENTWRITE_HEADER (1<<1)
 #define CLIENTWRITE_BOTH   (CLIENTWRITE_BODY|CLIENTWRITE_HEADER)
 
 #define CLIENTWRITE_HEADER (1<<1)
 #define CLIENTWRITE_BOTH   (CLIENTWRITE_BODY|CLIENTWRITE_HEADER)
 
+CURLcode Curl_client_chop_write(struct connectdata *conn, int type, char *ptr,
+                                size_t len) WARN_UNUSED_RESULT;
 CURLcode Curl_client_write(struct connectdata *conn, int type, char *ptr,
 CURLcode Curl_client_write(struct connectdata *conn, int type, char *ptr,
-                           size_t len);
+                           size_t len) WARN_UNUSED_RESULT;
 
 /* internal read-function, does plain socket only */
 CURLcode Curl_read_plain(curl_socket_t sockfd,
 
 /* internal read-function, does plain socket only */
 CURLcode Curl_read_plain(curl_socket_t sockfd,
index 319efec..fae8567 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 typedef unsigned long   u_int32_t;
 
 
 typedef unsigned long   u_int32_t;
 
 
-/* System API wrapper prototypes and definitions to support ASCII parameters. */
+/* System API wrapper prototypes & definitions to support ASCII parameters. */
 
 #include <sys/socket.h>
 #include <netdb.h>
 
 #include <sys/socket.h>
 #include <netdb.h>
-#include <qsossl.h>
 #include <gskssl.h>
 #include <qsoasync.h>
 #include <gssapi.h>
 
 #include <gskssl.h>
 #include <qsoasync.h>
 #include <gssapi.h>
 
-extern int      Curl_getaddrinfo_a(const char * nodename, const char * servname,
+extern int      Curl_getaddrinfo_a(const char * nodename,
+                                   const char * servname,
                                    const struct addrinfo * hints,
                                    struct addrinfo * * res);
 #define getaddrinfo             Curl_getaddrinfo_a
                                    const struct addrinfo * hints,
                                    struct addrinfo * * res);
 #define getaddrinfo             Curl_getaddrinfo_a
@@ -56,20 +56,6 @@ extern int      Curl_getnameinfo_a(const struct sockaddr * sa,
 #define getnameinfo             Curl_getnameinfo_a
 
 
 #define getnameinfo             Curl_getnameinfo_a
 
 
-/* SSL wrappers. */
-
-extern int      Curl_SSL_Init_Application_a(SSLInitApp * init_app);
-#define SSL_Init_Application    Curl_SSL_Init_Application_a
-
-
-extern int      Curl_SSL_Init_a(SSLInit * init);
-#define SSL_Init                Curl_SSL_Init_a
-
-
-extern char *   Curl_SSL_Strerror_a(int sslreturnvalue, SSLErrorMsg * serrmsgp);
-#define SSL_Strerror            Curl_SSL_Strerror_a
-
-
 /* GSKit wrappers. */
 
 extern int      Curl_gsk_environment_open(gsk_handle * my_env_handle);
 /* GSKit wrappers. */
 
 extern int      Curl_gsk_environment_open(gsk_handle * my_env_handle);
@@ -226,5 +212,12 @@ extern int Curl_os400_recvfrom(int sd, char * buffer, int buflen, int flags,
 #define sendto                  Curl_os400_sendto
 #define recvfrom                Curl_os400_recvfrom
 
 #define sendto                  Curl_os400_sendto
 #define recvfrom                Curl_os400_recvfrom
 
+#ifdef HAVE_LIBZ
+#define zlibVersion             Curl_os400_zlibVersion
+#define inflateInit_            Curl_os400_inflateInit_
+#define inflateInit2_           Curl_os400_inflateInit2_
+#define inflate                 Curl_os400_inflate
+#define inflateEnd              Curl_os400_inflateEnd
+#endif
 
 #endif /* HEADER_CURL_SETUP_OS400_H */
 
 #endif /* HEADER_CURL_SETUP_OS400_H */
index f5eedf7..4b3dded 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -203,6 +203,19 @@ char * unix_path;
 #define CRYPTO_cleanup_all_ex_data CRYPTO_CLEANUP_ALL_EX_DATA
 #define CRYPTO_free CRYPTO_FREE
 #define CRYPTO_malloc CRYPTO_MALLOC
 #define CRYPTO_cleanup_all_ex_data CRYPTO_CLEANUP_ALL_EX_DATA
 #define CRYPTO_free CRYPTO_FREE
 #define CRYPTO_malloc CRYPTO_MALLOC
+#define CONF_modules_load_file CONF_MODULES_LOAD_FILE
+#ifdef __VAX
+#  ifdef VMS_OLD_SSL
+  /* Ancient OpenSSL on VAX/VMS missing this constant */
+#    define CONF_MFLAGS_IGNORE_MISSING_FILE 0x10
+#    undef CONF_modules_load_file
+     static int CONF_modules_load_file(const char *filename,
+                                       const char *appname,
+                                       unsigned long flags) {
+             return 1;
+     }
+#  endif
+#endif
 #define DES_ecb_encrypt DES_ECB_ENCRYPT
 #define DES_set_key DES_SET_KEY
 #define DES_set_odd_parity DES_SET_ODD_PARITY
 #define DES_ecb_encrypt DES_ECB_ENCRYPT
 #define DES_set_key DES_SET_KEY
 #define DES_set_odd_parity DES_SET_ODD_PARITY
@@ -228,6 +241,7 @@ char * unix_path;
 #define EVP_PKEY_free EVP_PKEY_FREE
 #define EVP_cleanup EVP_CLEANUP
 #define GENERAL_NAMES_free GENERAL_NAMES_FREE
 #define EVP_PKEY_free EVP_PKEY_FREE
 #define EVP_cleanup EVP_CLEANUP
 #define GENERAL_NAMES_free GENERAL_NAMES_FREE
+#define i2d_X509_PUBKEY I2D_X509_PUBKEY
 #define MD4_Final MD4_FINAL
 #define MD4_Init MD4_INIT
 #define MD4_Update MD4_UPDATE
 #define MD4_Final MD4_FINAL
 #define MD4_Init MD4_INIT
 #define MD4_Update MD4_UPDATE
@@ -274,6 +288,7 @@ char * unix_path;
 #define SSL_get_peer_cert_chain SSL_GET_PEER_CERT_CHAIN
 #define SSL_get_peer_certificate SSL_GET_PEER_CERTIFICATE
 #define SSL_get_privatekey SSL_GET_PRIVATEKEY
 #define SSL_get_peer_cert_chain SSL_GET_PEER_CERT_CHAIN
 #define SSL_get_peer_certificate SSL_GET_PEER_CERTIFICATE
 #define SSL_get_privatekey SSL_GET_PRIVATEKEY
+#define SSL_get_session SSL_GET_SESSION
 #define SSL_get_shutdown SSL_GET_SHUTDOWN
 #define SSL_get_verify_result SSL_GET_VERIFY_RESULT
 #define SSL_library_init SSL_LIBRARY_INIT
 #define SSL_get_shutdown SSL_GET_SHUTDOWN
 #define SSL_get_verify_result SSL_GET_VERIFY_RESULT
 #define SSL_library_init SSL_LIBRARY_INIT
@@ -291,7 +306,23 @@ char * unix_path;
 #define SSLv23_client_method SSLV23_CLIENT_METHOD
 #define SSLv3_client_method SSLV3_CLIENT_METHOD
 #define TLSv1_client_method TLSV1_CLIENT_METHOD
 #define SSLv23_client_method SSLV23_CLIENT_METHOD
 #define SSLv3_client_method SSLV3_CLIENT_METHOD
 #define TLSv1_client_method TLSV1_CLIENT_METHOD
+#define UI_create_method UI_CREATE_METHOD
+#define UI_destroy_method UI_DESTROY_METHOD
+#define UI_get0_user_data UI_GET0_USER_DATA
+#define UI_get_input_flags UI_GET_INPUT_FLAGS
+#define UI_get_string_type UI_GET_STRING_TYPE
+#define UI_create_method UI_CREATE_METHOD
+#define UI_destroy_method UI_DESTROY_METHOD
+#define UI_method_get_closer UI_METHOD_GET_CLOSER
+#define UI_method_get_opener UI_METHOD_GET_OPENER
+#define UI_method_get_reader UI_METHOD_GET_READER
+#define UI_method_get_writer UI_METHOD_GET_WRITER
+#define UI_method_set_closer UI_METHOD_SET_CLOSER
+#define UI_method_set_opener UI_METHOD_SET_OPENER
+#define UI_method_set_reader UI_METHOD_SET_READER
+#define UI_method_set_writer UI_METHOD_SET_WRITER
 #define UI_OpenSSL UI_OPENSSL
 #define UI_OpenSSL UI_OPENSSL
+#define UI_set_result UI_SET_RESULT
 #define X509V3_EXT_print X509V3_EXT_PRINT
 #define X509_EXTENSION_get_critical X509_EXTENSION_GET_CRITICAL
 #define X509_EXTENSION_get_object X509_EXTENSION_GET_OBJECT
 #define X509V3_EXT_print X509V3_EXT_PRINT
 #define X509_EXTENSION_get_critical X509_EXTENSION_GET_CRITICAL
 #define X509_EXTENSION_get_object X509_EXTENSION_GET_OBJECT
index b21c9f6..b8b6bee 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -25,7 +25,7 @@
 #include <curl/curl.h>
 #include "urldata.h"
 #include "share.h"
 #include <curl/curl.h>
 #include "urldata.h"
 #include "share.h"
-#include "sslgen.h"
+#include "vtls/vtls.h"
 #include "curl_memory.h"
 
 /* The last #include file should be: */
 #include "curl_memory.h"
 
 /* The last #include file should be: */
diff --git a/lib/sigpipe.h b/lib/sigpipe.h
new file mode 100644 (file)
index 0000000..e8d2acd
--- /dev/null
@@ -0,0 +1,78 @@
+#ifndef HEADER_CURL_SIGPIPE_H
+#define HEADER_CURL_SIGPIPE_H
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include "curl_setup.h"
+
+#if defined(HAVE_SIGNAL_H) && defined(HAVE_SIGACTION) && defined(USE_OPENSSL)
+#include <signal.h>
+
+struct sigpipe_ignore {
+  struct sigaction old_pipe_act;
+  bool no_signal;
+};
+
+#define SIGPIPE_VARIABLE(x) struct sigpipe_ignore x
+
+/*
+ * sigpipe_ignore() makes sure we ignore SIGPIPE while running libcurl
+ * internals, and then sigpipe_restore() will restore the situation when we
+ * return from libcurl again.
+ */
+static void sigpipe_ignore(struct SessionHandle *data,
+                           struct sigpipe_ignore *ig)
+{
+  /* get a local copy of no_signal because the SessionHandle might not be
+     around when we restore */
+  ig->no_signal = data->set.no_signal;
+  if(!data->set.no_signal) {
+    struct sigaction action;
+    /* first, extract the existing situation */
+    memset(&ig->old_pipe_act, 0, sizeof(struct sigaction));
+    sigaction(SIGPIPE, NULL, &ig->old_pipe_act);
+    action = ig->old_pipe_act;
+    /* ignore this signal */
+    action.sa_handler = SIG_IGN;
+    sigaction(SIGPIPE, &action, NULL);
+  }
+}
+
+/*
+ * sigpipe_restore() puts back the outside world's opinion of signal handler
+ * and SIGPIPE handling. It MUST only be called after a corresponding
+ * sigpipe_ignore() was used.
+ */
+static void sigpipe_restore(struct sigpipe_ignore *ig)
+{
+  if(!ig->no_signal)
+    /* restore the outside state */
+    sigaction(SIGPIPE, &ig->old_pipe_act, NULL);
+}
+
+#else
+/* for systems without sigaction */
+#define sigpipe_ignore(x,y) Curl_nop_stmt
+#define sigpipe_restore(x)  Curl_nop_stmt
+#define SIGPIPE_VARIABLE(x)
+#endif
+
+#endif /* HEADER_CURL_SIGPIPE_H */
diff --git a/lib/smb.c b/lib/smb.c
new file mode 100644 (file)
index 0000000..e66427b
--- /dev/null
+++ b/lib/smb.c
@@ -0,0 +1,970 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 2014, Bill Nagel <wnagel@tycoint.com>, Exacq Technologies
+ * Copyright (C) 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+
+#include "curl_setup.h"
+
+#if !defined(CURL_DISABLE_SMB) && defined(USE_NTLM) && \
+    (CURL_SIZEOF_CURL_OFF_T > 4)
+
+#if !defined(USE_WINDOWS_SSPI) || defined(USE_WIN32_CRYPTO)
+
+#define BUILDING_CURL_SMB_C
+
+#ifdef HAVE_PROCESS_H
+#include <process.h>
+#define getpid _getpid
+#endif
+
+#include "smb.h"
+#include "urldata.h"
+#include "sendf.h"
+#include "multiif.h"
+#include "connect.h"
+#include "progress.h"
+#include "transfer.h"
+#include "vtls/vtls.h"
+#include "curl_ntlm_core.h"
+#include "curl_memory.h"
+#include "escape.h"
+#include "curl_endian.h"
+
+/* The last #include file should be: */
+#include "memdebug.h"
+
+/* Local API functions */
+static CURLcode smb_setup_connection(struct connectdata *conn);
+static CURLcode smb_connect(struct connectdata *conn, bool *done);
+static CURLcode smb_connection_state(struct connectdata *conn, bool *done);
+static CURLcode smb_request_state(struct connectdata *conn, bool *done);
+static CURLcode smb_done(struct connectdata *conn, CURLcode status,
+                         bool premature);
+static CURLcode smb_disconnect(struct connectdata *conn, bool dead);
+static int smb_getsock(struct connectdata *conn, curl_socket_t *socks,
+                       int numsocks);
+static CURLcode smb_parse_url_path(struct connectdata *conn);
+
+/*
+ * SMB handler interface
+ */
+const struct Curl_handler Curl_handler_smb = {
+  "SMB",                                /* scheme */
+  smb_setup_connection,                 /* setup_connection */
+  ZERO_NULL,                            /* do_it */
+  smb_done,                             /* done */
+  ZERO_NULL,                            /* do_more */
+  smb_connect,                          /* connect_it */
+  smb_connection_state,                 /* connecting */
+  smb_request_state,                    /* doing */
+  smb_getsock,                          /* proto_getsock */
+  smb_getsock,                          /* doing_getsock */
+  ZERO_NULL,                            /* domore_getsock */
+  ZERO_NULL,                            /* perform_getsock */
+  smb_disconnect,                       /* disconnect */
+  ZERO_NULL,                            /* readwrite */
+  PORT_SMB,                             /* defport */
+  CURLPROTO_SMB,                        /* protocol */
+  PROTOPT_NONE                          /* flags */
+};
+
+#ifdef USE_SSL
+/*
+ * SMBS handler interface
+ */
+const struct Curl_handler Curl_handler_smbs = {
+  "SMBS",                               /* scheme */
+  smb_setup_connection,                 /* setup_connection */
+  ZERO_NULL,                            /* do_it */
+  smb_done,                             /* done */
+  ZERO_NULL,                            /* do_more */
+  smb_connect,                          /* connect_it */
+  smb_connection_state,                 /* connecting */
+  smb_request_state,                    /* doing */
+  smb_getsock,                          /* proto_getsock */
+  smb_getsock,                          /* doing_getsock */
+  ZERO_NULL,                            /* domore_getsock */
+  ZERO_NULL,                            /* perform_getsock */
+  smb_disconnect,                       /* disconnect */
+  ZERO_NULL,                            /* readwrite */
+  PORT_SMBS,                            /* defport */
+  CURLPROTO_SMBS,                       /* protocol */
+  PROTOPT_SSL                           /* flags */
+};
+#endif
+
+#define MAX_PAYLOAD_SIZE  0x8000
+#define MAX_MESSAGE_SIZE  (MAX_PAYLOAD_SIZE + 0x1000)
+#define CLIENTNAME        "curl"
+#define SERVICENAME       "?????"
+
+/* Append a string to an SMB message */
+#define MSGCAT(str) \
+  strcpy(p, (str)); \
+  p += strlen(str);
+
+/* Append a null-terminated string to an SMB message */
+#define MSGCATNULL(str) \
+  strcpy(p, (str)); \
+  p += strlen(str) + 1;
+
+/* SMB is mostly little endian */
+#if (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) || \
+   defined(__OS400__)
+static unsigned short smb_swap16(unsigned short x)
+{
+  return (x << 8) | ((x >> 8) & 0xff);
+}
+
+static unsigned int smb_swap32(unsigned int x)
+{
+  return (x << 24) | ((x << 8) & 0xff0000) | ((x >> 8) & 0xff00) |
+         ((x >> 24) & 0xff);
+}
+
+#ifdef HAVE_LONGLONG
+static unsigned long long smb_swap64(unsigned long long x)
+{
+  return ((unsigned long long)smb_swap32(x) << 32) | smb_swap32(x >> 32);
+}
+#else
+static unsigned __int64 smb_swap64(unsigned __int64 x)
+{
+  return ((unsigned __int64)smb_swap32(x) << 32) | smb_swap32(x >> 32);
+}
+#endif
+#else
+#  define smb_swap16(x) (x)
+#  define smb_swap32(x) (x)
+#  define smb_swap64(x) (x)
+#endif
+
+/* SMB request state */
+enum smb_req_state {
+  SMB_REQUESTING,
+  SMB_TREE_CONNECT,
+  SMB_OPEN,
+  SMB_DOWNLOAD,
+  SMB_UPLOAD,
+  SMB_CLOSE,
+  SMB_TREE_DISCONNECT,
+  SMB_DONE
+};
+
+/* SMB request data */
+struct smb_request {
+  enum smb_req_state state;
+  char *share;
+  char *path;
+  unsigned short tid; /* Even if we connect to the same tree as another */
+  unsigned short fid; /* request, the tid will be different */
+  CURLcode result;
+};
+
+static void conn_state(struct connectdata *conn, enum smb_conn_state newstate)
+{
+  struct smb_conn *smb = &conn->proto.smbc;
+#if defined(DEBUGBUILD) && !defined(CURL_DISABLE_VERBOSE_STRINGS)
+  /* For debug purposes */
+  static const char * const names[] = {
+    "SMB_NOT_CONNECTED",
+    "SMB_CONNECTING",
+    "SMB_NEGOTIATE",
+    "SMB_SETUP",
+    "SMB_CONNECTED",
+    /* LAST */
+  };
+
+  if(smb->state != newstate)
+    infof(conn->data, "SMB conn %p state change from %s to %s\n",
+    (void *)smb, names[smb->state], names[newstate]);
+#endif
+
+  smb->state = newstate;
+}
+
+static void request_state(struct connectdata *conn,
+                          enum smb_req_state newstate)
+{
+  struct smb_request *req = conn->data->req.protop;
+#if defined(DEBUGBUILD) && !defined(CURL_DISABLE_VERBOSE_STRINGS)
+  /* For debug purposes */
+  static const char * const names[] = {
+    "SMB_REQUESTING",
+    "SMB_TREE_CONNECT",
+    "SMB_OPEN",
+    "SMB_DOWNLOAD",
+    "SMB_UPLOAD",
+    "SMB_CLOSE",
+    "SMB_TREE_DISCONNECT",
+    "SMB_DONE",
+    /* LAST */
+  };
+
+  if(req->state != newstate)
+    infof(conn->data, "SMB request %p state change from %s to %s\n",
+    (void *)req, names[req->state], names[newstate]);
+#endif
+
+  req->state = newstate;
+}
+
+static CURLcode smb_setup_connection(struct connectdata *conn)
+{
+  struct smb_request *req;
+
+  /* Initialize the request state */
+  conn->data->req.protop = req = calloc(1, sizeof(struct smb_request));
+  if(!req)
+    return CURLE_OUT_OF_MEMORY;
+
+  /* Parse the URL path */
+  return smb_parse_url_path(conn);
+}
+
+static CURLcode smb_connect(struct connectdata *conn, bool *done)
+{
+  struct smb_conn *smbc = &conn->proto.smbc;
+  char *slash;
+
+  (void) done;
+
+  /* Check we have a username and password to authenticate with */
+  if(!conn->bits.user_passwd)
+    return CURLE_LOGIN_DENIED;
+
+  /* Initialize the connection state */
+  memset(smbc, 0, sizeof(*smbc));
+  smbc->state = SMB_CONNECTING;
+  smbc->recv_buf = malloc(MAX_MESSAGE_SIZE);
+  if(!smbc->recv_buf)
+    return CURLE_OUT_OF_MEMORY;
+
+  /* Multiple requests are allowed with this connection */
+  connkeep(conn, "SMB default");
+
+  /* Parse the username, domain, and password */
+  slash = strchr(conn->user, '/');
+  if(!slash)
+    slash = strchr(conn->user, '\\');
+
+  if(slash) {
+    smbc->user = slash + 1;
+    smbc->domain = strdup(conn->user);
+    if(!smbc->domain)
+      return CURLE_OUT_OF_MEMORY;
+    smbc->domain[slash - conn->user] = 0;
+  }
+  else {
+    smbc->user = conn->user;
+    smbc->domain = strdup(conn->host.name);
+    if(!smbc->domain)
+      return CURLE_OUT_OF_MEMORY;
+  }
+
+  return CURLE_OK;
+}
+
+static CURLcode smb_recv_message(struct connectdata *conn, void **msg)
+{
+  struct smb_conn *smbc = &conn->proto.smbc;
+  char *buf = smbc->recv_buf;
+  ssize_t bytes_read;
+  size_t nbt_size;
+  size_t msg_size;
+  size_t len = MAX_MESSAGE_SIZE - smbc->got;
+  CURLcode result;
+
+  result = Curl_read(conn, FIRSTSOCKET, buf + smbc->got, len, &bytes_read);
+  if(result)
+    return result;
+
+  if(!bytes_read)
+    return CURLE_OK;
+
+  smbc->got += bytes_read;
+
+  /* Check for a 32-bit nbt header */
+  if(smbc->got < sizeof(unsigned int))
+    return CURLE_OK;
+
+  nbt_size = Curl_read16_be((unsigned char *)(buf + sizeof(unsigned short))) +
+             sizeof(unsigned int);
+  if(smbc->got < nbt_size)
+    return CURLE_OK;
+
+  msg_size = sizeof(struct smb_header);
+  if(nbt_size >= msg_size + 1) {
+    /* Add the word count */
+    msg_size += 1 + ((unsigned char) buf[msg_size]) * sizeof(unsigned short);
+    if(nbt_size >= msg_size + sizeof(unsigned short)) {
+      /* Add the byte count */
+      msg_size += sizeof(unsigned short) +
+                  Curl_read16_le((unsigned char *)&buf[msg_size]);
+      if(nbt_size < msg_size)
+        return CURLE_READ_ERROR;
+    }
+  }
+
+  *msg = buf;
+
+  return CURLE_OK;
+}
+
+static void smb_pop_message(struct connectdata *conn)
+{
+  struct smb_conn *smbc = &conn->proto.smbc;
+
+  smbc->got = 0;
+}
+
+static void smb_format_message(struct connectdata *conn, struct smb_header *h,
+                               unsigned char cmd, size_t len)
+{
+  struct smb_conn *smbc = &conn->proto.smbc;
+  struct smb_request *req = conn->data->req.protop;
+  unsigned int pid;
+
+  memset(h, 0, sizeof(*h));
+  h->nbt_length = htons((unsigned short) (sizeof(*h) - sizeof(unsigned int) +
+                                          len));
+  memcpy((char *)h->magic, "\xffSMB", 4);
+  h->command = cmd;
+  h->flags = SMB_FLAGS_CANONICAL_PATHNAMES | SMB_FLAGS_CASELESS_PATHNAMES;
+  h->flags2 = smb_swap16(SMB_FLAGS2_IS_LONG_NAME | SMB_FLAGS2_KNOWS_LONG_NAME);
+  h->uid = smb_swap16(smbc->uid);
+  h->tid = smb_swap16(req->tid);
+  pid = getpid();
+  h->pid_high = smb_swap16((unsigned short)(pid >> 16));
+  h->pid = smb_swap16((unsigned short) pid);
+}
+
+static CURLcode smb_send(struct connectdata *conn, ssize_t len,
+                         size_t upload_size)
+{
+  struct smb_conn *smbc = &conn->proto.smbc;
+  ssize_t bytes_written;
+  CURLcode result;
+
+  result = Curl_write(conn, FIRSTSOCKET, conn->data->state.uploadbuffer,
+                      len, &bytes_written);
+  if(result)
+    return result;
+
+  if(bytes_written != len) {
+    smbc->send_size = len;
+    smbc->sent = bytes_written;
+  }
+
+  smbc->upload_size = upload_size;
+
+  return CURLE_OK;
+}
+
+static CURLcode smb_flush(struct connectdata *conn)
+{
+  struct smb_conn *smbc = &conn->proto.smbc;
+  ssize_t bytes_written;
+  ssize_t len = smbc->send_size - smbc->sent;
+  CURLcode result;
+
+  if(!smbc->send_size)
+    return CURLE_OK;
+
+  result = Curl_write(conn, FIRSTSOCKET,
+                      conn->data->state.uploadbuffer + smbc->sent,
+                      len, &bytes_written);
+  if(result)
+    return result;
+
+  if(bytes_written != len)
+    smbc->sent += bytes_written;
+  else
+    smbc->send_size = 0;
+
+  return CURLE_OK;
+}
+
+static CURLcode smb_send_message(struct connectdata *conn, unsigned char cmd,
+                                 const void *msg, size_t msg_len)
+{
+  smb_format_message(conn, (struct smb_header *)conn->data->state.uploadbuffer,
+                     cmd, msg_len);
+  memcpy(conn->data->state.uploadbuffer + sizeof(struct smb_header),
+         msg, msg_len);
+
+  return smb_send(conn, sizeof(struct smb_header) + msg_len, 0);
+}
+
+static CURLcode smb_send_negotiate(struct connectdata *conn)
+{
+  const char *msg = "\x00\x0c\x00\x02NT LM 0.12";
+
+  return smb_send_message(conn, SMB_COM_NEGOTIATE, msg, 15);
+}
+
+static CURLcode smb_send_setup(struct connectdata *conn)
+{
+  struct smb_conn *smbc = &conn->proto.smbc;
+  struct smb_setup msg;
+  char *p = msg.bytes;
+  unsigned char lm_hash[21];
+  unsigned char lm[24];
+  unsigned char nt_hash[21];
+  unsigned char nt[24];
+
+  size_t byte_count = sizeof(lm) + sizeof(nt);
+  byte_count += strlen(smbc->user) + strlen(smbc->domain);
+  byte_count += strlen(OS) + strlen(CLIENTNAME) + 4; /* 4 null chars */
+  if(byte_count > sizeof(msg.bytes))
+    return CURLE_FILESIZE_EXCEEDED;
+
+  Curl_ntlm_core_mk_lm_hash(conn->data, conn->passwd, lm_hash);
+  Curl_ntlm_core_lm_resp(lm_hash, smbc->challenge, lm);
+#if USE_NTRESPONSES
+  Curl_ntlm_core_mk_nt_hash(conn->data, conn->passwd, nt_hash);
+  Curl_ntlm_core_lm_resp(nt_hash, smbc->challenge, nt);
+#else
+  memset(nt, 0, sizeof(nt));
+#endif
+
+  memset(&msg, 0, sizeof(msg));
+  msg.word_count = SMB_WC_SETUP_ANDX;
+  msg.andx.command = SMB_COM_NO_ANDX_COMMAND;
+  msg.max_buffer_size = smb_swap16(MAX_MESSAGE_SIZE);
+  msg.max_mpx_count = smb_swap16(1);
+  msg.vc_number = smb_swap16(1);
+  msg.session_key = smb_swap32(smbc->session_key);
+  msg.capabilities = smb_swap32(SMB_CAP_LARGE_FILES);
+  msg.lengths[0] = smb_swap16(sizeof(lm));
+  msg.lengths[1] = smb_swap16(sizeof(nt));
+  memcpy(p, lm, sizeof(lm));
+  p += sizeof(lm);
+  memcpy(p, nt, sizeof(nt));
+  p += sizeof(nt);
+  MSGCATNULL(smbc->user);
+  MSGCATNULL(smbc->domain);
+  MSGCATNULL(OS);
+  MSGCATNULL(CLIENTNAME);
+  byte_count = p - msg.bytes;
+  msg.byte_count = smb_swap16((unsigned short)byte_count);
+
+  return smb_send_message(conn, SMB_COM_SETUP_ANDX, &msg,
+                          sizeof(msg) - sizeof(msg.bytes) + byte_count);
+}
+
+static CURLcode smb_send_tree_connect(struct connectdata *conn)
+{
+  struct smb_request *req = conn->data->req.protop;
+  struct smb_tree_connect msg;
+  char *p = msg.bytes;
+
+  size_t byte_count = strlen(conn->host.name) + strlen(req->share);
+  byte_count += strlen(SERVICENAME) + 5; /* 2 nulls and 3 backslashes */
+  if(byte_count > sizeof(msg.bytes))
+    return CURLE_FILESIZE_EXCEEDED;
+
+  memset(&msg, 0, sizeof(msg));
+  msg.word_count = SMB_WC_TREE_CONNECT_ANDX;
+  msg.andx.command = SMB_COM_NO_ANDX_COMMAND;
+  msg.pw_len = 0;
+  MSGCAT("\\\\");
+  MSGCAT(conn->host.name);
+  MSGCAT("\\");
+  MSGCATNULL(req->share);
+  MSGCATNULL(SERVICENAME); /* Match any type of service */
+  byte_count = p - msg.bytes;
+  msg.byte_count = smb_swap16((unsigned short)byte_count);
+
+  return smb_send_message(conn, SMB_COM_TREE_CONNECT_ANDX, &msg,
+                          sizeof(msg) - sizeof(msg.bytes) + byte_count);
+}
+
+static CURLcode smb_send_open(struct connectdata *conn)
+{
+  struct smb_request *req = conn->data->req.protop;
+  struct smb_nt_create msg;
+  size_t byte_count;
+
+  if((strlen(req->path) + 1) > sizeof(msg.bytes))
+    return CURLE_FILESIZE_EXCEEDED;
+
+  memset(&msg, 0, sizeof(msg));
+  msg.word_count = SMB_WC_NT_CREATE_ANDX;
+  msg.andx.command = SMB_COM_NO_ANDX_COMMAND;
+  byte_count = strlen(req->path);
+  msg.name_length = smb_swap16((unsigned short)byte_count);
+  msg.share_access = smb_swap32(SMB_FILE_SHARE_ALL);
+  if(conn->data->set.upload) {
+    msg.access = smb_swap32(SMB_GENERIC_READ | SMB_GENERIC_WRITE);
+    msg.create_disposition = smb_swap32(SMB_FILE_OVERWRITE_IF);
+  }
+  else {
+    msg.access = smb_swap32(SMB_GENERIC_READ);
+    msg.create_disposition = smb_swap32(SMB_FILE_OPEN);
+  }
+  msg.byte_count = smb_swap16((unsigned short) ++byte_count);
+  strcpy(msg.bytes, req->path);
+
+  return smb_send_message(conn, SMB_COM_NT_CREATE_ANDX, &msg,
+                          sizeof(msg) - sizeof(msg.bytes) + byte_count);
+}
+
+static CURLcode smb_send_close(struct connectdata *conn)
+{
+  struct smb_request *req = conn->data->req.protop;
+  struct smb_close msg;
+
+  memset(&msg, 0, sizeof(msg));
+  msg.word_count = SMB_WC_CLOSE;
+  msg.fid = smb_swap16(req->fid);
+
+  return smb_send_message(conn, SMB_COM_CLOSE, &msg, sizeof(msg));
+}
+
+static CURLcode smb_send_tree_disconnect(struct connectdata *conn)
+{
+  struct smb_tree_disconnect msg;
+
+  memset(&msg, 0, sizeof(msg));
+
+  return smb_send_message(conn, SMB_COM_TREE_DISCONNECT, &msg, sizeof(msg));
+}
+
+static CURLcode smb_send_read(struct connectdata *conn)
+{
+  struct smb_request *req = conn->data->req.protop;
+  curl_off_t offset = conn->data->req.offset;
+  struct smb_read msg;
+
+  memset(&msg, 0, sizeof(msg));
+  msg.word_count = SMB_WC_READ_ANDX;
+  msg.andx.command = SMB_COM_NO_ANDX_COMMAND;
+  msg.fid = smb_swap16(req->fid);
+  msg.offset = smb_swap32((unsigned int) offset);
+  msg.offset_high = smb_swap32((unsigned int) (offset >> 32));
+  msg.min_bytes = smb_swap16(MAX_PAYLOAD_SIZE);
+  msg.max_bytes = smb_swap16(MAX_PAYLOAD_SIZE);
+
+  return smb_send_message(conn, SMB_COM_READ_ANDX, &msg, sizeof(msg));
+}
+
+static CURLcode smb_send_write(struct connectdata *conn)
+{
+  struct smb_write *msg = (struct smb_write *)conn->data->state.uploadbuffer;
+  struct smb_request *req = conn->data->req.protop;
+  curl_off_t offset = conn->data->req.offset;
+
+  curl_off_t upload_size = conn->data->req.size - conn->data->req.bytecount;
+  if(upload_size >= MAX_PAYLOAD_SIZE - 1) /* There is one byte of padding */
+    upload_size = MAX_PAYLOAD_SIZE - 1;
+
+  memset(msg, 0, sizeof(*msg));
+  msg->word_count = SMB_WC_WRITE_ANDX;
+  msg->andx.command = SMB_COM_NO_ANDX_COMMAND;
+  msg->fid = smb_swap16(req->fid);
+  msg->offset = smb_swap32((unsigned int) offset);
+  msg->offset_high = smb_swap32((unsigned int) (offset >> 32));
+  msg->data_length = smb_swap16((unsigned short) upload_size);
+  msg->data_offset = smb_swap16(sizeof(*msg) - sizeof(unsigned int));
+  msg->byte_count = smb_swap16((unsigned short) (upload_size + 1));
+
+  smb_format_message(conn, &msg->h, SMB_COM_WRITE_ANDX,
+                     sizeof(*msg) - sizeof(msg->h) + (size_t) upload_size);
+
+  return smb_send(conn, sizeof(*msg), (size_t) upload_size);
+}
+
+static CURLcode smb_send_and_recv(struct connectdata *conn, void **msg)
+{
+  struct smb_conn *smbc = &conn->proto.smbc;
+  CURLcode result;
+
+  /* Check if there is data in the transfer buffer */
+  if(!smbc->send_size && smbc->upload_size) {
+    int nread = smbc->upload_size > BUFSIZE ? BUFSIZE :
+                                              (int) smbc->upload_size;
+    conn->data->req.upload_fromhere = conn->data->state.uploadbuffer;
+    result = Curl_fillreadbuffer(conn, nread, &nread);
+    if(result && result != CURLE_AGAIN)
+      return result;
+    if(!nread)
+      return CURLE_OK;
+
+    smbc->upload_size -= nread;
+    smbc->send_size = nread;
+    smbc->sent = 0;
+  }
+
+  /* Check if there is data to send */
+  if(smbc->send_size) {
+    result = smb_flush(conn);
+    if(result)
+      return result;
+  }
+
+  /* Check if there is still data to be sent */
+  if(smbc->send_size || smbc->upload_size)
+    return CURLE_AGAIN;
+
+  return smb_recv_message(conn, msg);
+}
+
+static CURLcode smb_connection_state(struct connectdata *conn, bool *done)
+{
+  struct smb_conn *smbc = &conn->proto.smbc;
+  struct smb_negotiate_response *nrsp;
+  struct smb_header *h;
+  CURLcode result;
+  void *msg = NULL;
+
+  if(smbc->state == SMB_CONNECTING) {
+#ifdef USE_SSL
+    if((conn->handler->flags & PROTOPT_SSL)) {
+      bool ssl_done;
+      result = Curl_ssl_connect_nonblocking(conn, FIRSTSOCKET, &ssl_done);
+      if(result && result != CURLE_AGAIN)
+        return result;
+      if(!ssl_done)
+        return CURLE_OK;
+    }
+#endif
+
+    result = smb_send_negotiate(conn);
+    if(result) {
+      connclose(conn, "SMB: failed to send negotiate message");
+      return result;
+    }
+
+    conn_state(conn, SMB_NEGOTIATE);
+  }
+
+  /* Send the previous message and check for a response */
+  result = smb_send_and_recv(conn, &msg);
+  if(result && result != CURLE_AGAIN) {
+    connclose(conn, "SMB: failed to communicate");
+    return result;
+  }
+
+  if(!msg)
+    return CURLE_OK;
+
+  h = msg;
+
+  switch(smbc->state) {
+  case SMB_NEGOTIATE:
+    if(h->status) {
+      connclose(conn, "SMB: negotiation failed");
+      return CURLE_COULDNT_CONNECT;
+    }
+    nrsp = msg;
+    memcpy(smbc->challenge, nrsp->bytes, sizeof(smbc->challenge));
+    smbc->session_key = smb_swap32(nrsp->session_key);
+    result = smb_send_setup(conn);
+    if(result) {
+      connclose(conn, "SMB: failed to send setup message");
+      return result;
+    }
+    conn_state(conn, SMB_SETUP);
+    break;
+
+  case SMB_SETUP:
+    if(h->status) {
+      connclose(conn, "SMB: authentication failed");
+      return CURLE_LOGIN_DENIED;
+    }
+    smbc->uid = smb_swap16(h->uid);
+    conn_state(conn, SMB_CONNECTED);
+    *done = true;
+    break;
+
+  default:
+    smb_pop_message(conn);
+    return CURLE_OK; /* ignore */
+  }
+
+  smb_pop_message(conn);
+
+  return CURLE_OK;
+}
+
+static CURLcode smb_request_state(struct connectdata *conn, bool *done)
+{
+  struct smb_request *req = conn->data->req.protop;
+  struct smb_header *h;
+  enum smb_req_state next_state = SMB_DONE;
+  unsigned short len;
+  unsigned short off;
+  CURLcode result;
+  void *msg = NULL;
+
+  /* Start the request */
+  if(req->state == SMB_REQUESTING) {
+    result = smb_send_tree_connect(conn);
+    if(result) {
+      connclose(conn, "SMB: failed to send tree connect message");
+      return result;
+    }
+
+    request_state(conn, SMB_TREE_CONNECT);
+  }
+
+  /* Send the previous message and check for a response */
+  result = smb_send_and_recv(conn, &msg);
+  if(result && result != CURLE_AGAIN) {
+    connclose(conn, "SMB: failed to communicate");
+    return result;
+  }
+
+  if(!msg)
+    return CURLE_OK;
+
+  h = msg;
+
+  switch(req->state) {
+  case SMB_TREE_CONNECT:
+    if(h->status) {
+      req->result = CURLE_REMOTE_FILE_NOT_FOUND;
+      if(h->status == smb_swap32(SMB_ERR_NOACCESS))
+        req->result = CURLE_REMOTE_ACCESS_DENIED;
+      break;
+    }
+    req->tid = smb_swap16(h->tid);
+    next_state = SMB_OPEN;
+    break;
+
+  case SMB_OPEN:
+    if(h->status) {
+      req->result = CURLE_REMOTE_FILE_NOT_FOUND;
+      next_state = SMB_TREE_DISCONNECT;
+      break;
+    }
+    req->fid = smb_swap16(((struct smb_nt_create_response *)msg)->fid);
+    conn->data->req.offset = 0;
+    if(conn->data->set.upload) {
+      conn->data->req.size = conn->data->state.infilesize;
+      Curl_pgrsSetUploadSize(conn->data, conn->data->req.size);
+      next_state = SMB_UPLOAD;
+    }
+    else {
+      conn->data->req.size =
+        smb_swap64(((struct smb_nt_create_response *)msg)->end_of_file);
+      Curl_pgrsSetDownloadSize(conn->data, conn->data->req.size);
+      next_state = SMB_DOWNLOAD;
+    }
+    break;
+
+  case SMB_DOWNLOAD:
+    if(h->status) {
+      req->result = CURLE_RECV_ERROR;
+      next_state = SMB_CLOSE;
+      break;
+    }
+    len = Curl_read16_le(((unsigned char *) msg) +
+                         sizeof(struct smb_header) + 11);
+    off = Curl_read16_le(((unsigned char *) msg) +
+                         sizeof(struct smb_header) + 13);
+    if(len > 0) {
+      result = Curl_client_write(conn, CLIENTWRITE_BODY,
+                                 (char *)msg + off + sizeof(unsigned int),
+                                 len);
+      if(result) {
+        req->result = result;
+        next_state = SMB_CLOSE;
+        break;
+      }
+    }
+    conn->data->req.bytecount += len;
+    conn->data->req.offset += len;
+    Curl_pgrsSetDownloadCounter(conn->data, conn->data->req.bytecount);
+    next_state = (len < MAX_PAYLOAD_SIZE) ? SMB_CLOSE : SMB_DOWNLOAD;
+    break;
+
+  case SMB_UPLOAD:
+    if(h->status) {
+      req->result = CURLE_UPLOAD_FAILED;
+      next_state = SMB_CLOSE;
+      break;
+    }
+    len = Curl_read16_le(((unsigned char *) msg) +
+                         sizeof(struct smb_header) + 5);
+    conn->data->req.bytecount += len;
+    conn->data->req.offset += len;
+    Curl_pgrsSetUploadCounter(conn->data, conn->data->req.bytecount);
+    if(conn->data->req.bytecount >= conn->data->req.size)
+      next_state = SMB_CLOSE;
+    else
+      next_state = SMB_UPLOAD;
+    break;
+
+  case SMB_CLOSE:
+    /* We don't care if the close failed, proceed to tree disconnect anyway */
+    next_state = SMB_TREE_DISCONNECT;
+    break;
+
+  case SMB_TREE_DISCONNECT:
+    next_state = SMB_DONE;
+    break;
+
+  default:
+    smb_pop_message(conn);
+    return CURLE_OK; /* ignore */
+  }
+
+  smb_pop_message(conn);
+
+  switch(next_state) {
+  case SMB_OPEN:
+    result = smb_send_open(conn);
+    break;
+
+  case SMB_DOWNLOAD:
+    result = smb_send_read(conn);
+    break;
+
+  case SMB_UPLOAD:
+    result = smb_send_write(conn);
+    break;
+
+  case SMB_CLOSE:
+    result = smb_send_close(conn);
+    break;
+
+  case SMB_TREE_DISCONNECT:
+    result = smb_send_tree_disconnect(conn);
+    break;
+
+  case SMB_DONE:
+    result = req->result;
+    *done = true;
+    break;
+
+  default:
+    break;
+  }
+
+  if(result) {
+    connclose(conn, "SMB: failed to send message");
+    return result;
+  }
+
+  request_state(conn, next_state);
+
+  return CURLE_OK;
+}
+
+static CURLcode smb_done(struct connectdata *conn, CURLcode status,
+                         bool premature)
+{
+  struct smb_request *req = conn->data->req.protop;
+
+  (void) premature;
+
+  Curl_safefree(req->share);
+  Curl_safefree(conn->data->req.protop);
+
+  return status;
+}
+
+static CURLcode smb_disconnect(struct connectdata *conn, bool dead)
+{
+  struct smb_conn *smbc = &conn->proto.smbc;
+  struct smb_request *req = conn->data->req.protop;
+
+  (void) dead;
+
+  Curl_safefree(smbc->domain);
+  Curl_safefree(smbc->recv_buf);
+
+  /* smb_done is not always called, so cleanup the request */
+  if(req) {
+    Curl_safefree(req->share);
+    Curl_safefree(conn->data->req.protop);
+  }
+
+  return CURLE_OK;
+}
+
+static int smb_getsock(struct connectdata *conn, curl_socket_t *socks,
+                       int numsocks)
+{
+  struct smb_conn *smbc = &conn->proto.smbc;
+
+  if(!numsocks)
+    return GETSOCK_BLANK;
+
+  socks[0] = conn->sock[FIRSTSOCKET];
+
+  if(smbc->send_size || smbc->upload_size)
+    return GETSOCK_WRITESOCK(0);
+
+  return GETSOCK_READSOCK(0);
+}
+
+static CURLcode smb_parse_url_path(struct connectdata *conn)
+{
+  CURLcode result = CURLE_OK;
+  struct SessionHandle *data = conn->data;
+  struct smb_request *req = data->req.protop;
+  char *path;
+  char *slash;
+
+  /* URL decode the path */
+  result = Curl_urldecode(data, data->state.path, 0, &path, NULL, TRUE);
+  if(result)
+    return result;
+
+  /* Parse the path for the share */
+  req->share = strdup((*path == '/' || *path == '\\') ? path + 1 : path);
+  if(!req->share) {
+    Curl_safefree(path);
+
+    return CURLE_OUT_OF_MEMORY;
+  }
+
+  slash = strchr(req->share, '/');
+  if(!slash)
+    slash = strchr(req->share, '\\');
+
+  /* The share must be present */
+  if(!slash) {
+    Curl_safefree(path);
+
+    return CURLE_URL_MALFORMAT;
+  }
+
+  /* Parse the path for the file path converting any forward slashes into
+     backslashes */
+  *slash++ = 0;
+  req->path = slash;
+  for(; *slash; slash++) {
+    if(*slash == '/')
+      *slash = '\\';
+  }
+
+  Curl_safefree(path);
+
+  return CURLE_OK;
+}
+
+#endif /* !USE_WINDOWS_SSPI || USE_WIN32_CRYPTO */
+
+#endif /* CURL_DISABLE_SMB && USE_NTLM && CURL_SIZEOF_CURL_OFF_T > 4 */
diff --git a/lib/smb.h b/lib/smb.h
new file mode 100644 (file)
index 0000000..7852fa1
--- /dev/null
+++ b/lib/smb.h
@@ -0,0 +1,271 @@
+#ifndef HEADER_CURL_SMB_H
+#define HEADER_CURL_SMB_H
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 2014, Bill Nagel <wnagel@tycoint.com>, Exacq Technologies
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+
+enum smb_conn_state {
+  SMB_NOT_CONNECTED = 0,
+  SMB_CONNECTING,
+  SMB_NEGOTIATE,
+  SMB_SETUP,
+  SMB_CONNECTED
+};
+
+struct smb_conn {
+  enum smb_conn_state state;
+  char *user;
+  char *domain;
+  unsigned char challenge[8];
+  unsigned int session_key;
+  unsigned short uid;
+  char *recv_buf;
+  size_t upload_size;
+  size_t send_size;
+  size_t sent;
+  size_t got;
+};
+
+/*
+ * Definitions for SMB protocol data structures
+ */
+#ifdef BUILDING_CURL_SMB_C
+
+#if defined(_MSC_VER) || defined(__ILEC400__)
+#  define PACK
+#  pragma pack(push)
+#  pragma pack(1)
+#elif defined(__GNUC__)
+#  define PACK __attribute__((packed))
+#else
+#  define PACK
+#endif
+
+#define SMB_COM_CLOSE                 0x04
+#define SMB_COM_READ_ANDX             0x2e
+#define SMB_COM_WRITE_ANDX            0x2f
+#define SMB_COM_TREE_DISCONNECT       0x71
+#define SMB_COM_NEGOTIATE             0x72
+#define SMB_COM_SETUP_ANDX            0x73
+#define SMB_COM_TREE_CONNECT_ANDX     0x75
+#define SMB_COM_NT_CREATE_ANDX        0xa2
+#define SMB_COM_NO_ANDX_COMMAND       0xff
+
+#define SMB_WC_CLOSE                  0x03
+#define SMB_WC_READ_ANDX              0x0c
+#define SMB_WC_WRITE_ANDX             0x0e
+#define SMB_WC_SETUP_ANDX             0x0d
+#define SMB_WC_TREE_CONNECT_ANDX      0x04
+#define SMB_WC_NT_CREATE_ANDX         0x18
+
+#define SMB_FLAGS_CANONICAL_PATHNAMES 0x10
+#define SMB_FLAGS_CASELESS_PATHNAMES  0x08
+#define SMB_FLAGS2_UNICODE_STRINGS    0x8000
+#define SMB_FLAGS2_IS_LONG_NAME       0x0040
+#define SMB_FLAGS2_KNOWS_LONG_NAME    0x0001
+
+#define SMB_CAP_LARGE_FILES           0x08
+#define SMB_GENERIC_WRITE             0x40000000
+#define SMB_GENERIC_READ              0x80000000
+#define SMB_FILE_SHARE_ALL            0x07
+#define SMB_FILE_OPEN                 0x01
+#define SMB_FILE_OVERWRITE_IF         0x05
+
+#define SMB_ERR_NOACCESS              0x00050001
+
+struct smb_header {
+  unsigned char nbt_type;
+  unsigned char nbt_flags;
+  unsigned short nbt_length;
+  unsigned char magic[4];
+  unsigned char command;
+  unsigned int status;
+  unsigned char flags;
+  unsigned short flags2;
+  unsigned short pid_high;
+  unsigned char signature[8];
+  unsigned short pad;
+  unsigned short tid;
+  unsigned short pid;
+  unsigned short uid;
+  unsigned short mid;
+} PACK;
+
+struct smb_negotiate_response {
+  struct smb_header h;
+  unsigned char word_count;
+  unsigned short dialect_index;
+  unsigned char security_mode;
+  unsigned short max_mpx_count;
+  unsigned short max_number_vcs;
+  unsigned int max_buffer_size;
+  unsigned int max_raw_size;
+  unsigned int session_key;
+  unsigned int capabilities;
+  unsigned int system_time_low;
+  unsigned int system_time_high;
+  unsigned short server_time_zone;
+  unsigned char encryption_key_length;
+  unsigned short byte_count;
+  char bytes[1];
+} PACK;
+
+struct andx {
+  unsigned char command;
+  unsigned char pad;
+  unsigned short offset;
+} PACK;
+
+struct smb_setup {
+  unsigned char word_count;
+  struct andx andx;
+  unsigned short max_buffer_size;
+  unsigned short max_mpx_count;
+  unsigned short vc_number;
+  unsigned int session_key;
+  unsigned short lengths[2];
+  unsigned int pad;
+  unsigned int capabilities;
+  unsigned short byte_count;
+  char bytes[1024];
+} PACK;
+
+struct smb_tree_connect {
+  unsigned char word_count;
+  struct andx andx;
+  unsigned short flags;
+  unsigned short pw_len;
+  unsigned short byte_count;
+  char bytes[1024];
+} PACK;
+
+struct smb_nt_create {
+  unsigned char word_count;
+  struct andx andx;
+  unsigned char pad;
+  unsigned short name_length;
+  unsigned int flags;
+  unsigned int root_fid;
+  unsigned int access;
+#ifdef HAVE_LONGLONG
+  unsigned long long allocation_size;
+#else
+  unsigned __int64 allocation_size;
+#endif
+  unsigned int ext_file_attributes;
+  unsigned int share_access;
+  unsigned int create_disposition;
+  unsigned int create_options;
+  unsigned int impersonation_level;
+  unsigned char security_flags;
+  unsigned short byte_count;
+  char bytes[1024];
+} PACK;
+
+struct smb_nt_create_response {
+  struct smb_header h;
+  unsigned char word_count;
+  struct andx andx;
+  unsigned char op_lock_level;
+  unsigned short fid;
+  unsigned int create_disposition;
+#ifdef HAVE_LONGLONG
+  unsigned long long create_time;
+  unsigned long long last_access_time;
+  unsigned long long last_write_time;
+  unsigned long long last_change_time;
+#else
+  unsigned __int64 create_time;
+  unsigned __int64 last_access_time;
+  unsigned __int64 last_write_time;
+  unsigned __int64 last_change_time;
+#endif
+  unsigned int ext_file_attributes;
+#ifdef HAVE_LONGLONG
+  unsigned long long allocation_size;
+  unsigned long long end_of_file;
+#else
+  unsigned __int64 allocation_size;
+  unsigned __int64 end_of_file;
+#endif
+} PACK;
+
+struct smb_read {
+  unsigned char word_count;
+  struct andx andx;
+  unsigned short fid;
+  unsigned int offset;
+  unsigned short max_bytes;
+  unsigned short min_bytes;
+  unsigned int timeout;
+  unsigned short remaining;
+  unsigned int offset_high;
+  unsigned short byte_count;
+} PACK;
+
+struct smb_write {
+  struct smb_header h;
+  unsigned char word_count;
+  struct andx andx;
+  unsigned short fid;
+  unsigned int offset;
+  unsigned int timeout;
+  unsigned short write_mode;
+  unsigned short remaining;
+  unsigned short pad;
+  unsigned short data_length;
+  unsigned short data_offset;
+  unsigned int offset_high;
+  unsigned short byte_count;
+  unsigned char pad2;
+} PACK;
+
+struct smb_close {
+  unsigned char word_count;
+  unsigned short fid;
+  unsigned int last_mtime;
+  unsigned short byte_count;
+} PACK;
+
+struct smb_tree_disconnect {
+  unsigned char word_count;
+  unsigned short byte_count;
+} PACK;
+
+#if defined(_MSC_VER) || defined(__ILEC400__)
+#  pragma pack(pop)
+#endif
+
+#endif /* BUILDING_CURL_SMB_C */
+
+#if !defined(CURL_DISABLE_SMB) && defined(USE_NTLM) && \
+    (CURL_SIZEOF_CURL_OFF_T > 4)
+
+#if !defined(USE_WINDOWS_SSPI) || defined(USE_WIN32_CRYPTO)
+
+extern const struct Curl_handler Curl_handler_smb;
+extern const struct Curl_handler Curl_handler_smbs;
+
+#endif /* !USE_WINDOWS_SSPI || USE_WIN32_CRYPTO */
+
+#endif /* CURL_DISABLE_SMB && USE_NTLM && CURL_SIZEOF_CURL_OFF_T > 4 */
+
+#endif /* HEADER_CURL_SMB_H */
index 83fb9ec..7bd5158 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * RFC3207 SMTP over TLS
  * RFC4422 Simple Authentication and Security Layer (SASL)
  * RFC4616 PLAIN authentication
  * RFC3207 SMTP over TLS
  * RFC4422 Simple Authentication and Security Layer (SASL)
  * RFC4616 PLAIN authentication
+ * RFC4752 The Kerberos V5 ("GSSAPI") SASL Mechanism
  * RFC4954 SMTP Authentication
  * RFC5321 SMTP protocol
  * RFC4954 SMTP Authentication
  * RFC5321 SMTP protocol
- * Draft   SMTP URL Interface
+ * RFC6749 OAuth 2.0 Authorization Framework
+ * Draft   SMTP URL Interface   <draft-earhart-url-smtp-00.txt>
+ * Draft   LOGIN SASL Mechanism <draft-murchison-sasl-login-00.txt>
  *
  ***************************************************************************/
 
  *
  ***************************************************************************/
 
@@ -59,7 +62,6 @@
 #include <curl/curl.h>
 #include "urldata.h"
 #include "sendf.h"
 #include <curl/curl.h>
 #include "urldata.h"
 #include "sendf.h"
-#include "if2ip.h"
 #include "hostip.h"
 #include "progress.h"
 #include "transfer.h"
 #include "hostip.h"
 #include "progress.h"
 #include "transfer.h"
@@ -70,7 +72,7 @@
 
 #include "strtoofft.h"
 #include "strequal.h"
 
 #include "strtoofft.h"
 #include "strequal.h"
-#include "sslgen.h"
+#include "vtls/vtls.h"
 #include "connect.h"
 #include "strerror.h"
 #include "select.h"
 #include "connect.h"
 #include "strerror.h"
 #include "select.h"
@@ -102,6 +104,11 @@ static CURLcode smtp_doing(struct connectdata *conn, bool *dophase_done);
 static CURLcode smtp_setup_connection(struct connectdata *conn);
 static CURLcode smtp_parse_url_options(struct connectdata *conn);
 static CURLcode smtp_parse_url_path(struct connectdata *conn);
 static CURLcode smtp_setup_connection(struct connectdata *conn);
 static CURLcode smtp_parse_url_options(struct connectdata *conn);
 static CURLcode smtp_parse_url_path(struct connectdata *conn);
+static CURLcode smtp_parse_custom_request(struct connectdata *conn);
+static CURLcode smtp_calc_sasl_details(struct connectdata *conn,
+                                       const char **mech,
+                                       char **initresp, size_t *len,
+                                       smtpstate *state1, smtpstate *state2);
 
 /*
  * SMTP protocol handler.
 
 /*
  * SMTP protocol handler.
@@ -148,7 +155,7 @@ const struct Curl_handler Curl_handler_smtps = {
   smtp_disconnect,                  /* disconnect */
   ZERO_NULL,                        /* readwrite */
   PORT_SMTPS,                       /* defport */
   smtp_disconnect,                  /* disconnect */
   ZERO_NULL,                        /* readwrite */
   PORT_SMTPS,                       /* defport */
-  CURLPROTO_SMTP | CURLPROTO_SMTPS, /* protocol */
+  CURLPROTO_SMTPS,                  /* protocol */
   PROTOPT_CLOSEACTION | PROTOPT_SSL
   | PROTOPT_NOURLQUERY              /* flags */
 };
   PROTOPT_CLOSEACTION | PROTOPT_SSL
   | PROTOPT_NOURLQUERY              /* flags */
 };
@@ -161,7 +168,7 @@ const struct Curl_handler Curl_handler_smtps = {
 
 static const struct Curl_handler Curl_handler_smtp_proxy = {
   "SMTP",                               /* scheme */
 
 static const struct Curl_handler Curl_handler_smtp_proxy = {
   "SMTP",                               /* scheme */
-  ZERO_NULL,                            /* setup_connection */
+  Curl_http_setup_conn,                 /* setup_connection */
   Curl_http,                            /* do_it */
   Curl_http_done,                       /* done */
   ZERO_NULL,                            /* do_more */
   Curl_http,                            /* do_it */
   Curl_http_done,                       /* done */
   ZERO_NULL,                            /* do_more */
@@ -186,7 +193,7 @@ static const struct Curl_handler Curl_handler_smtp_proxy = {
 
 static const struct Curl_handler Curl_handler_smtps_proxy = {
   "SMTPS",                              /* scheme */
 
 static const struct Curl_handler Curl_handler_smtps_proxy = {
   "SMTPS",                              /* scheme */
-  ZERO_NULL,                            /* setup_connection */
+  Curl_http_setup_conn,                 /* setup_connection */
   Curl_http,                            /* do_it */
   Curl_http_done,                       /* done */
   ZERO_NULL,                            /* do_more */
   Curl_http,                            /* do_it */
   Curl_http_done,                       /* done */
   ZERO_NULL,                            /* do_more */
@@ -217,7 +224,7 @@ static void smtp_to_smtps(struct connectdata *conn)
 
 /***********************************************************************
  *
 
 /***********************************************************************
  *
- * pop3_endofresp()
+ * smtp_endofresp()
  *
  * Checks for an ending SMTP status code at the start of the given string, but
  * also detects various capabilities from the EHLO response including the
  *
  * Checks for an ending SMTP status code at the start of the given string, but
  * also detects various capabilities from the EHLO response including the
@@ -228,76 +235,60 @@ static bool smtp_endofresp(struct connectdata *conn, char *line, size_t len,
 {
   struct smtp_conn *smtpc = &conn->proto.smtpc;
   bool result = FALSE;
 {
   struct smtp_conn *smtpc = &conn->proto.smtpc;
   bool result = FALSE;
-  size_t wordlen;
 
 
+  /* Nothing for us */
   if(len < 4 || !ISDIGIT(line[0]) || !ISDIGIT(line[1]) || !ISDIGIT(line[2]))
   if(len < 4 || !ISDIGIT(line[0]) || !ISDIGIT(line[1]) || !ISDIGIT(line[2]))
-    return FALSE;       /* Nothing for us */
-
-  /* Do we have a command response? */
-  result = (line[3] == ' ') ? TRUE : FALSE;
-  if(result)
+    return FALSE;
+
+  /* Do we have a command response? This should be the response code followed
+     by a space and optionally some text as per RFC-5321 and as outlined in
+     Section 4. Examples of RFC-4954 but some e-mail servers ignore this and
+     only send the response code instead as per Section 4.2. */
+  if(line[3] == ' ' || len == 5) {
+    result = TRUE;
     *resp = curlx_sltosi(strtol(line, NULL, 10));
 
     *resp = curlx_sltosi(strtol(line, NULL, 10));
 
-  /* Are we processing EHLO command data? */
-  if(smtpc->state == SMTP_EHLO && (!result || (result && *resp/100 == 2))) {
-    line += 4;
-    len -= 4;
-
-    /* Does the server support the STARTTLS capability? */
-    if(len >= 8 && !memcmp(line, "STARTTLS", 8))
-      smtpc->tls_supported = TRUE;
-
-    /* Does the server support the SIZE capability? */
-    else if(len >= 4 && !memcmp(line, "SIZE", 4))
-      smtpc->size_supported = TRUE;
-
-    /* Do we have the authentication mechanism list? */
-    else if(len >= 5 && !memcmp(line, "AUTH ", 5)) {
-      line += 5;
-      len -= 5;
-
-      /* Loop through the data line */
-      for(;;) {
-        while(len &&
-              (*line == ' ' || *line == '\t' ||
-               *line == '\r' || *line == '\n')) {
+    /* Make sure real server never sends internal value */
+    if(*resp == 1)
+      *resp = 0;
+  }
+  /* Do we have a multiline (continuation) response? */
+  else if(line[3] == '-' &&
+          (smtpc->state == SMTP_EHLO || smtpc->state == SMTP_COMMAND)) {
+    result = TRUE;
+    *resp = 1;  /* Internal response code */
+  }
 
 
-          line++;
-          len--;
-        }
+  return result;
+}
 
 
-        if(!len)
-          break;
+/***********************************************************************
+ *
+ * smtp_get_message()
+ *
+ * Gets the authentication message from the response buffer.
+ */
+static void smtp_get_message(char *buffer, char** outptr)
+{
+  size_t len = 0;
+  char* message = NULL;
 
 
-        /* Extract the word */
-        for(wordlen = 0; wordlen < len && line[wordlen] != ' ' &&
-              line[wordlen] != '\t' && line[wordlen] != '\r' &&
-              line[wordlen] != '\n';)
-          wordlen++;
+  /* Find the start of the message */
+  for(message = buffer + 4; *message == ' ' || *message == '\t'; message++)
+    ;
 
 
-        /* Test the word for a matching authentication mechanism */
-        if(wordlen == 5 && !memcmp(line, "LOGIN", 5))
-          smtpc->authmechs |= SASL_MECH_LOGIN;
-        else if(wordlen == 5 && !memcmp(line, "PLAIN", 5))
-          smtpc->authmechs |= SASL_MECH_PLAIN;
-        else if(wordlen == 8 && !memcmp(line, "CRAM-MD5", 8))
-          smtpc->authmechs |= SASL_MECH_CRAM_MD5;
-        else if(wordlen == 10 && !memcmp(line, "DIGEST-MD5", 10))
-          smtpc->authmechs |= SASL_MECH_DIGEST_MD5;
-        else if(wordlen == 6 && !memcmp(line, "GSSAPI", 6))
-          smtpc->authmechs |= SASL_MECH_GSSAPI;
-        else if(wordlen == 8 && !memcmp(line, "EXTERNAL", 8))
-          smtpc->authmechs |= SASL_MECH_EXTERNAL;
-        else if(wordlen == 4 && !memcmp(line, "NTLM", 4))
-          smtpc->authmechs |= SASL_MECH_NTLM;
+  /* Find the end of the message */
+  for(len = strlen(message); len--;)
+    if(message[len] != '\r' && message[len] != '\n' && message[len] != ' ' &&
+        message[len] != '\t')
+      break;
 
 
-        line += wordlen;
-        len -= wordlen;
-      }
-    }
+  /* Terminate the message */
+  if(++len) {
+    message[len] = '\0';
   }
 
   }
 
-  return result;
+  *outptr = message;
 }
 
 /***********************************************************************
 }
 
 /***********************************************************************
@@ -326,7 +317,13 @@ static void state(struct connectdata *conn, smtpstate newstate)
     "AUTH_DIGESTMD5_RESP",
     "AUTH_NTLM",
     "AUTH_NTLM_TYPE2MSG",
     "AUTH_DIGESTMD5_RESP",
     "AUTH_NTLM",
     "AUTH_NTLM_TYPE2MSG",
+    "AUTH_GSSAPI",
+    "AUTH_GSSAPI_TOKEN",
+    "AUTH_GSSAPI_NO_DATA",
+    "AUTH_XOAUTH2",
+    "AUTH_CANCEL",
     "AUTH_FINAL",
     "AUTH_FINAL",
+    "COMMAND",
     "MAIL",
     "RCPT",
     "DATA",
     "MAIL",
     "RCPT",
     "DATA",
@@ -355,10 +352,11 @@ static CURLcode smtp_perform_ehlo(struct connectdata *conn)
   CURLcode result = CURLE_OK;
   struct smtp_conn *smtpc = &conn->proto.smtpc;
 
   CURLcode result = CURLE_OK;
   struct smtp_conn *smtpc = &conn->proto.smtpc;
 
-  smtpc->authmechs = 0;         /* No known authentication mechanisms yet */
-  smtpc->authused = 0;          /* Clear the authentication mechanism used
-                                   for esmtp connections */
-  smtpc->tls_supported = FALSE; /* Clear the TLS capability */
+  smtpc->authmechs = 0;           /* No known authentication mechanisms yet */
+  smtpc->authused = 0;            /* Clear the authentication mechanism used
+                                     for esmtp connections */
+  smtpc->tls_supported = FALSE;   /* Clear the TLS capability */
+  smtpc->auth_supported = FALSE;  /* Clear the AUTH capability */
 
   /* Send the EHLO command */
   result = Curl_pp_sendf(&smtpc->pp, "EHLO %s", smtpc->domain);
 
   /* Send the EHLO command */
   result = Curl_pp_sendf(&smtpc->pp, "EHLO %s", smtpc->domain);
@@ -440,15 +438,47 @@ static CURLcode smtp_perform_upgrade_tls(struct connectdata *conn)
 
 /***********************************************************************
  *
 
 /***********************************************************************
  *
- * smtp_perform_authenticate()
+ * smtp_perform_auth()
  *
  *
- * Sends an AUTH command allowing the client to login with the appropriate
- * SASL authentication mechanism.
+ * Sends an AUTH command allowing the client to login with the given SASL
+ * authentication mechanism.
  */
  */
-static CURLcode smtp_perform_authenticate(struct connectdata *conn)
+static CURLcode smtp_perform_auth(struct connectdata *conn,
+                                  const char *mech,
+                                  const char *initresp, size_t len,
+                                  smtpstate state1, smtpstate state2)
+{
+  CURLcode result = CURLE_OK;
+  struct smtp_conn *smtpc = &conn->proto.smtpc;
+
+  if(initresp && 8 + strlen(mech) + len <= 512) { /* AUTH <mech> ...<crlf> */
+    /* Send the AUTH command with the initial response */
+    result = Curl_pp_sendf(&smtpc->pp, "AUTH %s %s", mech, initresp);
+
+    if(!result)
+      state(conn, state2);
+  }
+  else {
+    /* Send the AUTH command */
+    result = Curl_pp_sendf(&smtpc->pp, "AUTH %s", mech);
+
+    if(!result)
+      state(conn, state1);
+  }
+
+  return result;
+}
+
+/***********************************************************************
+ *
+ * smtp_perform_authentication()
+ *
+ * Initiates the authentication sequence, with the appropriate SASL
+ * authentication mechanism.
+ */
+static CURLcode smtp_perform_authentication(struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
 {
   CURLcode result = CURLE_OK;
-  struct SessionHandle *data = conn->data;
   struct smtp_conn *smtpc = &conn->proto.smtpc;
   const char *mech = NULL;
   char *initresp = NULL;
   struct smtp_conn *smtpc = &conn->proto.smtpc;
   const char *mech = NULL;
   char *initresp = NULL;
@@ -456,85 +486,22 @@ static CURLcode smtp_perform_authenticate(struct connectdata *conn)
   smtpstate state1 = SMTP_STOP;
   smtpstate state2 = SMTP_STOP;
 
   smtpstate state1 = SMTP_STOP;
   smtpstate state2 = SMTP_STOP;
 
-  /* Check we have a username and password to authenticate with and end the
-     connect phase if we don't */
-  if(!conn->bits.user_passwd) {
+  /* Check we have a username and password to authenticate with, and the
+     server supports authentiation, and end the connect phase if not */
+  if(!conn->bits.user_passwd || !smtpc->auth_supported) {
     state(conn, SMTP_STOP);
 
     return result;
   }
 
     state(conn, SMTP_STOP);
 
     return result;
   }
 
-  /* Calculate the supported authentication mechanism, by decreasing order of
-     security, as well as the initial response where appropriate */
-#ifndef CURL_DISABLE_CRYPTO_AUTH
-  if((smtpc->authmechs & SASL_MECH_DIGEST_MD5) &&
-     (smtpc->prefmech & SASL_MECH_DIGEST_MD5)) {
-    mech = "DIGEST-MD5";
-    state1 = SMTP_AUTH_DIGESTMD5;
-    smtpc->authused = SASL_MECH_DIGEST_MD5;
-  }
-  else if((smtpc->authmechs & SASL_MECH_CRAM_MD5) &&
-          (smtpc->prefmech & SASL_MECH_CRAM_MD5)) {
-    mech = "CRAM-MD5";
-    state1 = SMTP_AUTH_CRAMMD5;
-    smtpc->authused = SASL_MECH_CRAM_MD5;
-  }
-  else
-#endif
-#ifdef USE_NTLM
-  if((smtpc->authmechs & SASL_MECH_NTLM) &&
-     (smtpc->prefmech & SASL_MECH_NTLM)) {
-    mech = "NTLM";
-    state1 = SMTP_AUTH_NTLM;
-    state2 = SMTP_AUTH_NTLM_TYPE2MSG;
-    smtpc->authused = SASL_MECH_NTLM;
-
-    if(data->set.sasl_ir)
-      result = Curl_sasl_create_ntlm_type1_message(conn->user, conn->passwd,
-                                                   &conn->ntlm,
-                                                   &initresp, &len);
-    }
-  else
-#endif
-  if((smtpc->authmechs & SASL_MECH_LOGIN) &&
-     (smtpc->prefmech & SASL_MECH_LOGIN)) {
-    mech = "LOGIN";
-    state1 = SMTP_AUTH_LOGIN;
-    state2 = SMTP_AUTH_LOGIN_PASSWD;
-    smtpc->authused = SASL_MECH_LOGIN;
-
-    if(data->set.sasl_ir)
-      result = Curl_sasl_create_login_message(conn->data, conn->user,
-                                              &initresp, &len);
-  }
-  else if((smtpc->authmechs & SASL_MECH_PLAIN) &&
-          (smtpc->prefmech & SASL_MECH_PLAIN)) {
-    mech = "PLAIN";
-    state1 = SMTP_AUTH_PLAIN;
-    state2 = SMTP_AUTH_FINAL;
-    smtpc->authused = SASL_MECH_PLAIN;
-
-    if(data->set.sasl_ir)
-      result = Curl_sasl_create_plain_message(conn->data, conn->user,
-                                              conn->passwd, &initresp, &len);
-  }
+  /* Calculate the SASL login details */
+  result = smtp_calc_sasl_details(conn, &mech, &initresp, &len, &state1,
+                                  &state2);
 
   if(!result) {
     if(mech) {
       /* Perform SASL based authentication */
 
   if(!result) {
     if(mech) {
       /* Perform SASL based authentication */
-      if(initresp &&
-         8 + strlen(mech) + len <= 512) { /* AUTH <mech> ...<crlf> */
-        result = Curl_pp_sendf(&smtpc->pp, "AUTH %s %s", mech, initresp);
-
-        if(!result)
-          state(conn, state2);
-      }
-      else {
-        result = Curl_pp_sendf(&smtpc->pp, "AUTH %s", mech);
-
-        if(!result)
-          state(conn, state1);
-      }
+      result = smtp_perform_auth(conn, mech, initresp, len, state1, state2);
 
       Curl_safefree(initresp);
     }
 
       Curl_safefree(initresp);
     }
@@ -550,6 +517,35 @@ static CURLcode smtp_perform_authenticate(struct connectdata *conn)
 
 /***********************************************************************
  *
 
 /***********************************************************************
  *
+ * smtp_perform_command()
+ *
+ * Sends a SMTP based command.
+ */
+static CURLcode smtp_perform_command(struct connectdata *conn)
+{
+  CURLcode result = CURLE_OK;
+  struct SessionHandle *data = conn->data;
+  struct SMTP *smtp = data->req.protop;
+
+  /* Send the command */
+  if(smtp->rcpt)
+    result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s %s",
+                            smtp->custom && smtp->custom[0] != '\0' ?
+                            smtp->custom : "VRFY",
+                            smtp->rcpt->data);
+  else
+    result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s",
+                           smtp->custom && smtp->custom[0] != '\0' ?
+                           smtp->custom : "HELP");
+
+  if(!result)
+    state(conn, SMTP_COMMAND);
+
+  return result;
+}
+
+/***********************************************************************
+ *
  * smtp_perform_mail()
  *
  * Sends an MAIL command to initiate the upload of a message.
  * smtp_perform_mail()
  *
  * Sends an MAIL command to initiate the upload of a message.
@@ -590,8 +586,8 @@ static CURLcode smtp_perform_mail(struct connectdata *conn)
   }
 
   /* Calculate the optional SIZE parameter */
   }
 
   /* Calculate the optional SIZE parameter */
-  if(conn->proto.smtpc.size_supported && conn->data->set.infilesize > 0) {
-    size = aprintf("%" FORMAT_OFF_T, data->set.infilesize);
+  if(conn->proto.smtpc.size_supported && conn->data->state.infilesize > 0) {
+    size = aprintf("%" CURL_FORMAT_CURL_OFF_T, data->state.infilesize);
 
     if(!size) {
       Curl_safefree(from);
 
     if(!size) {
       Curl_safefree(from);
@@ -636,19 +632,17 @@ static CURLcode smtp_perform_rcpt_to(struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
-  struct SMTP *smtp = data->state.proto.smtp;
+  struct SMTP *smtp = data->req.protop;
 
   /* Send the RCPT TO command */
 
   /* Send the RCPT TO command */
-  if(smtp->rcpt) {
-    if(smtp->rcpt->data[0] == '<')
-      result = Curl_pp_sendf(&conn->proto.smtpc.pp, "RCPT TO:%s",
-                             smtp->rcpt->data);
-    else
-      result = Curl_pp_sendf(&conn->proto.smtpc.pp, "RCPT TO:<%s>",
-                             smtp->rcpt->data);
-    if(!result)
-      state(conn, SMTP_RCPT);
-  }
+  if(smtp->rcpt->data[0] == '<')
+    result = Curl_pp_sendf(&conn->proto.smtpc.pp, "RCPT TO:%s",
+                            smtp->rcpt->data);
+  else
+    result = Curl_pp_sendf(&conn->proto.smtpc.pp, "RCPT TO:<%s>",
+                            smtp->rcpt->data);
+  if(!result)
+    state(conn, SMTP_RCPT);
 
   return result;
 }
 
   return result;
 }
@@ -708,7 +702,7 @@ static CURLcode smtp_state_starttls_resp(struct connectdata *conn,
       result = CURLE_USE_SSL_FAILED;
     }
     else
       result = CURLE_USE_SSL_FAILED;
     }
     else
-      result = smtp_perform_authenticate(conn);
+      result = smtp_perform_authentication(conn);
   }
   else
     result = smtp_perform_upgrade_tls(conn);
   }
   else
     result = smtp_perform_upgrade_tls(conn);
@@ -723,33 +717,100 @@ static CURLcode smtp_state_ehlo_resp(struct connectdata *conn, int smtpcode,
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
   struct smtp_conn *smtpc = &conn->proto.smtpc;
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
   struct smtp_conn *smtpc = &conn->proto.smtpc;
+  const char *line = data->state.buffer;
+  size_t len = strlen(line);
+  size_t wordlen;
 
   (void)instate; /* no use for this yet */
 
 
   (void)instate; /* no use for this yet */
 
-  if(smtpcode/100 != 2) {
-    if((data->set.use_ssl <= CURLUSESSL_TRY || conn->ssl[FIRSTSOCKET].use) &&
-     !conn->bits.user_passwd)
+  if(smtpcode/100 != 2 && smtpcode != 1) {
+    if(data->set.use_ssl <= CURLUSESSL_TRY || conn->ssl[FIRSTSOCKET].use)
       result = smtp_perform_helo(conn);
     else {
       failf(data, "Remote access denied: %d", smtpcode);
       result = CURLE_REMOTE_ACCESS_DENIED;
     }
   }
       result = smtp_perform_helo(conn);
     else {
       failf(data, "Remote access denied: %d", smtpcode);
       result = CURLE_REMOTE_ACCESS_DENIED;
     }
   }
-  else if(data->set.use_ssl && !conn->ssl[FIRSTSOCKET].use) {
-    /* We don't have a SSL/TLS connection yet, but SSL is requested */
-    if(smtpc->tls_supported)
-      /* Switch to TLS connection now */
-      result = smtp_perform_starttls(conn);
-    else if(data->set.use_ssl == CURLUSESSL_TRY)
-      /* Fallback and carry on with authentication */
-      result = smtp_perform_authenticate(conn);
-    else {
-      failf(data, "STARTTLS not supported.");
-      result = CURLE_USE_SSL_FAILED;
+  else {
+    line += 4;
+    len -= 4;
+
+    /* Does the server support the STARTTLS capability? */
+    if(len >= 8 && !memcmp(line, "STARTTLS", 8))
+      smtpc->tls_supported = TRUE;
+
+    /* Does the server support the SIZE capability? */
+    else if(len >= 4 && !memcmp(line, "SIZE", 4))
+      smtpc->size_supported = TRUE;
+
+    /* Does the server support authentication? */
+    else if(len >= 5 && !memcmp(line, "AUTH ", 5)) {
+      smtpc->auth_supported = TRUE;
+
+      /* Advance past the AUTH keyword */
+      line += 5;
+      len -= 5;
+
+      /* Loop through the data line */
+      for(;;) {
+        while(len &&
+              (*line == ' ' || *line == '\t' ||
+               *line == '\r' || *line == '\n')) {
+
+          line++;
+          len--;
+        }
+
+        if(!len)
+          break;
+
+        /* Extract the word */
+        for(wordlen = 0; wordlen < len && line[wordlen] != ' ' &&
+              line[wordlen] != '\t' && line[wordlen] != '\r' &&
+              line[wordlen] != '\n';)
+          wordlen++;
+
+        /* Test the word for a matching authentication mechanism */
+        if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_LOGIN))
+          smtpc->authmechs |= SASL_MECH_LOGIN;
+        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_PLAIN))
+          smtpc->authmechs |= SASL_MECH_PLAIN;
+        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_CRAM_MD5))
+          smtpc->authmechs |= SASL_MECH_CRAM_MD5;
+        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_DIGEST_MD5))
+          smtpc->authmechs |= SASL_MECH_DIGEST_MD5;
+        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_GSSAPI))
+          smtpc->authmechs |= SASL_MECH_GSSAPI;
+        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_EXTERNAL))
+          smtpc->authmechs |= SASL_MECH_EXTERNAL;
+        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_NTLM))
+          smtpc->authmechs |= SASL_MECH_NTLM;
+        else if(sasl_mech_equal(line, wordlen, SASL_MECH_STRING_XOAUTH2))
+          smtpc->authmechs |= SASL_MECH_XOAUTH2;
+
+        line += wordlen;
+        len -= wordlen;
+      }
+    }
+
+    if(smtpcode != 1) {
+      if(data->set.use_ssl && !conn->ssl[FIRSTSOCKET].use) {
+        /* We don't have a SSL/TLS connection yet, but SSL is requested */
+        if(smtpc->tls_supported)
+          /* Switch to TLS connection now */
+          result = smtp_perform_starttls(conn);
+        else if(data->set.use_ssl == CURLUSESSL_TRY)
+          /* Fallback and carry on with authentication */
+          result = smtp_perform_authentication(conn);
+        else {
+          failf(data, "STARTTLS not supported.");
+          result = CURLE_USE_SSL_FAILED;
+        }
+      }
+      else
+        result = smtp_perform_authentication(conn);
     }
   }
     }
   }
-  else
-    result = smtp_perform_authenticate(conn);
 
   return result;
 }
 
   return result;
 }
@@ -794,20 +855,17 @@ static CURLcode smtp_state_auth_plain_resp(struct connectdata *conn,
     /* Create the authorisation message */
     result = Curl_sasl_create_plain_message(conn->data, conn->user,
                                             conn->passwd, &plainauth, &len);
     /* Create the authorisation message */
     result = Curl_sasl_create_plain_message(conn->data, conn->user,
                                             conn->passwd, &plainauth, &len);
+    if(!result && plainauth) {
+      /* Send the message */
+      result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", plainauth);
 
 
-    /* Send the message */
-    if(!result) {
-      if(plainauth) {
-        result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", plainauth);
-
-        if(!result)
-          state(conn, SMTP_AUTH_FINAL);
-      }
-
-      Curl_safefree(plainauth);
+      if(!result)
+        state(conn, SMTP_AUTH_FINAL);
     }
   }
 
     }
   }
 
+  Curl_safefree(plainauth);
+
   return result;
 }
 
   return result;
 }
 
@@ -831,20 +889,17 @@ static CURLcode smtp_state_auth_login_resp(struct connectdata *conn,
     /* Create the user message */
     result = Curl_sasl_create_login_message(conn->data, conn->user,
                                             &authuser, &len);
     /* Create the user message */
     result = Curl_sasl_create_login_message(conn->data, conn->user,
                                             &authuser, &len);
+    if(!result && authuser) {
+      /* Send the user */
+      result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", authuser);
 
 
-    /* Send the user */
-    if(!result) {
-      if(authuser) {
-        result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", authuser);
-
-        if(!result)
-          state(conn, SMTP_AUTH_LOGIN_PASSWD);
-      }
-
-      Curl_safefree(authuser);
+      if(!result)
+        state(conn, SMTP_AUTH_LOGIN_PASSWD);
     }
   }
 
     }
   }
 
+  Curl_safefree(authuser);
+
   return result;
 }
 
   return result;
 }
 
@@ -868,20 +923,17 @@ static CURLcode smtp_state_auth_login_password_resp(struct connectdata *conn,
     /* Create the password message */
     result = Curl_sasl_create_login_message(conn->data, conn->passwd,
                                             &authpasswd, &len);
     /* Create the password message */
     result = Curl_sasl_create_login_message(conn->data, conn->passwd,
                                             &authpasswd, &len);
+    if(!result && authpasswd) {
+      /* Send the password */
+      result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", authpasswd);
 
 
-    /* Send the password */
-    if(!result) {
-      if(authpasswd) {
-        result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", authpasswd);
-
-        if(!result)
-          state(conn, SMTP_AUTH_FINAL);
-      }
-
-      Curl_safefree(authpasswd);
+      if(!result)
+        state(conn, SMTP_AUTH_FINAL);
     }
   }
 
     }
   }
 
+  Curl_safefree(authpasswd);
+
   return result;
 }
 
   return result;
 }
 
@@ -893,9 +945,10 @@ static CURLcode smtp_state_auth_cram_resp(struct connectdata *conn,
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
-  char *chlg64 = data->state.buffer;
-  size_t len = 0;
+  char *chlg = NULL;
+  char *chlg64 = NULL;
   char *rplyb64 = NULL;
   char *rplyb64 = NULL;
+  size_t len = 0;
 
   (void)instate; /* no use for this yet */
 
 
   (void)instate; /* no use for this yet */
 
@@ -904,38 +957,34 @@ static CURLcode smtp_state_auth_cram_resp(struct connectdata *conn,
     return CURLE_LOGIN_DENIED;
   }
 
     return CURLE_LOGIN_DENIED;
   }
 
-  /* Get the challenge */
-  for(chlg64 += 4; *chlg64 == ' ' || *chlg64 == '\t'; chlg64++)
-    ;
+  /* Get the challenge message */
+  smtp_get_message(data->state.buffer, &chlg64);
 
 
-  /* Terminate the challenge */
-  if(*chlg64 != '=') {
-    for(len = strlen(chlg64); len--;)
-      if(chlg64[len] != '\r' && chlg64[len] != '\n' && chlg64[len] != ' ' &&
-         chlg64[len] != '\t')
-        break;
+  /* Decode the challenge message */
+  result = Curl_sasl_decode_cram_md5_message(chlg64, &chlg, &len);
+  if(result) {
+    /* Send the cancellation */
+    result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", "*");
 
 
-    if(++len) {
-      chlg64[len] = '\0';
-    }
+    if(!result)
+      state(conn, SMTP_AUTH_CANCEL);
   }
   }
-
-  /* Create the response message */
-  result = Curl_sasl_create_cram_md5_message(data, chlg64, conn->user,
-                                             conn->passwd, &rplyb64, &len);
-
-  /* Send the response */
-  if(!result) {
-    if(rplyb64) {
+  else {
+    /* Create the response message */
+    result = Curl_sasl_create_cram_md5_message(data, chlg, conn->user,
+                                               conn->passwd, &rplyb64, &len);
+    if(!result && rplyb64) {
+      /* Send the response */
       result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", rplyb64);
 
       if(!result)
         state(conn, SMTP_AUTH_FINAL);
     }
       result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", rplyb64);
 
       if(!result)
         state(conn, SMTP_AUTH_FINAL);
     }
-
-    Curl_safefree(rplyb64);
   }
 
   }
 
+  Curl_safefree(chlg);
+  Curl_safefree(rplyb64);
+
   return result;
 }
 
   return result;
 }
 
@@ -946,9 +995,9 @@ static CURLcode smtp_state_auth_digest_resp(struct connectdata *conn,
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
-  char *chlg64 = data->state.buffer;
-  size_t len = 0;
+  char *chlg64 = NULL;
   char *rplyb64 = NULL;
   char *rplyb64 = NULL;
+  size_t len = 0;
 
   (void)instate; /* no use for this yet */
 
 
   (void)instate; /* no use for this yet */
 
@@ -957,67 +1006,309 @@ static CURLcode smtp_state_auth_digest_resp(struct connectdata *conn,
     return CURLE_LOGIN_DENIED;
   }
 
     return CURLE_LOGIN_DENIED;
   }
 
-  /* Get the challenge */
-  for(chlg64 += 4; *chlg64 == ' ' || *chlg64 == '\t'; chlg64++)
-    ;
+  /* Get the challenge message */
+  smtp_get_message(data->state.buffer, &chlg64);
 
   /* Create the response message */
 
   /* Create the response message */
-  result = Curl_sasl_create_digest_md5_message(data, chlg64, conn->user,
-                                               conn->passwd, "smtp",
-                                               &rplyb64, &len);
+  result = Curl_sasl_create_digest_md5_message(data, chlg64,
+                                               conn->user, conn->passwd,
+                                               "smtp", &rplyb64, &len);
+  if(result) {
+    if(result == CURLE_BAD_CONTENT_ENCODING) {
+      /* Send the cancellation */
+      result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", "*");
 
 
-  /* Send the response */
-  if(!result) {
-    if(rplyb64) {
-      result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", rplyb64);
+      if(!result)
+        state(conn, SMTP_AUTH_CANCEL);
+    }
+  }
+  else {
+    /* Send the response */
+    result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", rplyb64);
+
+    if(!result)
+      state(conn, SMTP_AUTH_DIGESTMD5_RESP);
+  }
+
+  Curl_safefree(rplyb64);
+
+  return result;
+}
+
+/* For AUTH DIGEST-MD5 challenge-response responses */
+static CURLcode smtp_state_auth_digest_resp_resp(struct connectdata *conn,
+                                                 int smtpcode,
+                                                 smtpstate instate)
+{
+  CURLcode result = CURLE_OK;
+  struct SessionHandle *data = conn->data;
+
+  (void)instate; /* no use for this yet */
+
+  if(smtpcode != 334) {
+    failf(data, "Authentication failed: %d", smtpcode);
+    result = CURLE_LOGIN_DENIED;
+  }
+  else {
+    /* Send an empty response */
+    result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", "");
+
+    if(!result)
+      state(conn, SMTP_AUTH_FINAL);
+  }
+
+  return result;
+}
+
+#endif
+
+#ifdef USE_NTLM
+/* For AUTH NTLM (without initial response) responses */
+static CURLcode smtp_state_auth_ntlm_resp(struct connectdata *conn,
+                                          int smtpcode,
+                                          smtpstate instate)
+{
+  CURLcode result = CURLE_OK;
+  struct SessionHandle *data = conn->data;
+  char *type1msg = NULL;
+  size_t len = 0;
+
+  (void)instate; /* no use for this yet */
+
+  if(smtpcode != 334) {
+    failf(data, "Access denied: %d", smtpcode);
+    result = CURLE_LOGIN_DENIED;
+  }
+  else {
+    /* Create the type-1 message */
+    result = Curl_sasl_create_ntlm_type1_message(conn->user, conn->passwd,
+                                                 &conn->ntlm,
+                                                 &type1msg, &len);
+    if(!result && type1msg) {
+      /* Send the message */
+      result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", type1msg);
+
+      if(!result)
+        state(conn, SMTP_AUTH_NTLM_TYPE2MSG);
+    }
+  }
+
+  Curl_safefree(type1msg);
+
+  return result;
+}
+
+/* For NTLM type-2 responses (sent in reponse to our type-1 message) */
+static CURLcode smtp_state_auth_ntlm_type2msg_resp(struct connectdata *conn,
+                                                   int smtpcode,
+                                                   smtpstate instate)
+{
+  CURLcode result = CURLE_OK;
+  struct SessionHandle *data = conn->data;
+  char *type2msg = NULL;
+  char *type3msg = NULL;
+  size_t len = 0;
+
+  (void)instate; /* no use for this yet */
+
+  if(smtpcode != 334) {
+    failf(data, "Access denied: %d", smtpcode);
+    result = CURLE_LOGIN_DENIED;
+  }
+  else {
+    /* Get the type-2 message */
+    smtp_get_message(data->state.buffer, &type2msg);
+
+    /* Decode the type-2 message */
+    result = Curl_sasl_decode_ntlm_type2_message(data, type2msg, &conn->ntlm);
+    if(result) {
+      /* Send the cancellation */
+      result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", "*");
+
+      if(!result)
+        state(conn, SMTP_AUTH_CANCEL);
+    }
+    else {
+      /* Create the type-3 message */
+      result = Curl_sasl_create_ntlm_type3_message(data, conn->user,
+                                                   conn->passwd, &conn->ntlm,
+                                                   &type3msg, &len);
+      if(!result && type3msg) {
+        /* Send the message */
+        result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", type3msg);
+
+        if(!result)
+          state(conn, SMTP_AUTH_FINAL);
+      }
+    }
+  }
+
+  Curl_safefree(type3msg);
+
+  return result;
+}
+#endif
+
+#if defined(USE_KERBEROS5)
+/* For AUTH GSSAPI (without initial response) responses */
+static CURLcode smtp_state_auth_gssapi_resp(struct connectdata *conn,
+                                            int smtpcode,
+                                            smtpstate instate)
+{
+  CURLcode result = CURLE_OK;
+  struct SessionHandle *data = conn->data;
+  struct smtp_conn *smtpc = &conn->proto.smtpc;
+  char *respmsg = NULL;
+  size_t len = 0;
+
+  (void)instate; /* no use for this yet */
+
+  if(smtpcode != 334) {
+    failf(data, "Access denied: %d", smtpcode);
+    result = CURLE_LOGIN_DENIED;
+  }
+  else {
+    /* Create the initial response message */
+    result = Curl_sasl_create_gssapi_user_message(data, conn->user,
+                                                  conn->passwd, "smtp",
+                                                  smtpc->mutual_auth, NULL,
+                                                  &conn->krb5,
+                                                  &respmsg, &len);
+    if(!result && respmsg) {
+      /* Send the message */
+      result = Curl_pp_sendf(&smtpc->pp, "%s", respmsg);
+
+      if(!result)
+        state(conn, SMTP_AUTH_GSSAPI_TOKEN);
+    }
+  }
+
+  Curl_safefree(respmsg);
+
+  return result;
+}
+
+/* For AUTH GSSAPI user token responses */
+static CURLcode smtp_state_auth_gssapi_token_resp(struct connectdata *conn,
+                                                  int smtpcode,
+                                                  smtpstate instate)
+{
+  CURLcode result = CURLE_OK;
+  struct SessionHandle *data = conn->data;
+  struct smtp_conn *smtpc = &conn->proto.smtpc;
+  char *chlgmsg = NULL;
+  char *respmsg = NULL;
+  size_t len = 0;
+
+  (void)instate; /* no use for this yet */
+
+  if(smtpcode != 334) {
+    failf(data, "Access denied: %d", smtpcode);
+    result = CURLE_LOGIN_DENIED;
+  }
+  else {
+    /* Get the challenge message */
+    smtp_get_message(data->state.buffer, &chlgmsg);
+
+    if(smtpc->mutual_auth)
+      /* Decode the user token challenge and create the optional response
+         message */
+      result = Curl_sasl_create_gssapi_user_message(data, NULL, NULL, NULL,
+                                                    smtpc->mutual_auth,
+                                                    chlgmsg, &conn->krb5,
+                                                    &respmsg, &len);
+    else
+      /* Decode the security challenge and create the response message */
+      result = Curl_sasl_create_gssapi_security_message(data, chlgmsg,
+                                                        &conn->krb5,
+                                                        &respmsg, &len);
+
+    if(result) {
+      if(result == CURLE_BAD_CONTENT_ENCODING) {
+        /* Send the cancellation */
+        result = Curl_pp_sendf(&smtpc->pp, "%s", "*");
+
+        if(!result)
+          state(conn, SMTP_AUTH_CANCEL);
+      }
+    }
+    else {
+      /* Send the response */
+      if(respmsg)
+        result = Curl_pp_sendf(&smtpc->pp, "%s", respmsg);
+      else
+        result = Curl_pp_sendf(&smtpc->pp, "%s", "");
 
       if(!result)
 
       if(!result)
-        state(conn, SMTP_AUTH_DIGESTMD5_RESP);
+        state(conn, (smtpc->mutual_auth ? SMTP_AUTH_GSSAPI_NO_DATA :
+                                          SMTP_AUTH_FINAL));
     }
     }
-
-    Curl_safefree(rplyb64);
   }
 
   }
 
+  Curl_safefree(respmsg);
+
   return result;
 }
 
   return result;
 }
 
-/* For AUTH DIGEST-MD5 challenge-response responses */
-static CURLcode smtp_state_auth_digest_resp_resp(struct connectdata *conn,
-                                                 int smtpcode,
-                                                 smtpstate instate)
+/* For AUTH GSSAPI no data responses */
+static CURLcode smtp_state_auth_gssapi_no_data_resp(struct connectdata *conn,
+                                                    int smtpcode,
+                                                    smtpstate instate)
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
+  char *chlgmsg = NULL;
+  char *respmsg = NULL;
+  size_t len = 0;
 
   (void)instate; /* no use for this yet */
 
   if(smtpcode != 334) {
 
   (void)instate; /* no use for this yet */
 
   if(smtpcode != 334) {
-    failf(data, "Authentication failed: %d", smtpcode);
+    failf(data, "Access denied: %d", smtpcode);
     result = CURLE_LOGIN_DENIED;
   }
   else {
     result = CURLE_LOGIN_DENIED;
   }
   else {
-    /* Send an empty response */
-    result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", "");
+    /* Get the challenge message */
+    smtp_get_message(data->state.buffer, &chlgmsg);
+
+    /* Decode the security challenge and create the response message */
+    result = Curl_sasl_create_gssapi_security_message(data, chlgmsg,
+                                                      &conn->krb5,
+                                                      &respmsg, &len);
+    if(result) {
+      if(result == CURLE_BAD_CONTENT_ENCODING) {
+        /* Send the cancellation */
+        result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", "*");
 
 
-    if(!result)
-      state(conn, SMTP_AUTH_FINAL);
+        if(!result)
+          state(conn, SMTP_AUTH_CANCEL);
+      }
+    }
+    else {
+      /* Send the response */
+      if(respmsg) {
+        result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", respmsg);
+
+        if(!result)
+          state(conn, SMTP_AUTH_FINAL);
+      }
+    }
   }
 
   }
 
+  Curl_safefree(respmsg);
+
   return result;
 }
   return result;
 }
-
 #endif
 
 #endif
 
-#ifdef USE_NTLM
-/* For AUTH NTLM (without initial response) responses */
-static CURLcode smtp_state_auth_ntlm_resp(struct connectdata *conn,
-                                          int smtpcode,
-                                          smtpstate instate)
+/* For AUTH XOAUTH2 (without initial response) responses */
+static CURLcode smtp_state_auth_xoauth2_resp(struct connectdata *conn,
+                                             int smtpcode, smtpstate instate)
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
-  char *type1msg = NULL;
   size_t len = 0;
   size_t len = 0;
+  char *xoauth = NULL;
 
   (void)instate; /* no use for this yet */
 
 
   (void)instate; /* no use for this yet */
 
@@ -1026,69 +1317,67 @@ static CURLcode smtp_state_auth_ntlm_resp(struct connectdata *conn,
     result = CURLE_LOGIN_DENIED;
   }
   else {
     result = CURLE_LOGIN_DENIED;
   }
   else {
-    /* Create the type-1 message */
-    result = Curl_sasl_create_ntlm_type1_message(conn->user, conn->passwd,
-                                                 &conn->ntlm,
-                                                 &type1msg, &len);
-
-    /* Send the message */
-    if(!result) {
-      if(type1msg) {
-        result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", type1msg);
-
-        if(!result)
-          state(conn, SMTP_AUTH_NTLM_TYPE2MSG);
-      }
+    /* Create the authorisation message */
+    result = Curl_sasl_create_xoauth2_message(conn->data, conn->user,
+                                              conn->xoauth2_bearer,
+                                              &xoauth, &len);
+    if(!result && xoauth) {
+      /* Send the message */
+      result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", xoauth);
 
 
-      Curl_safefree(type1msg);
+      if(!result)
+        state(conn, SMTP_AUTH_FINAL);
     }
   }
 
     }
   }
 
+  Curl_safefree(xoauth);
+
   return result;
 }
 
   return result;
 }
 
-/* For NTLM type-2 responses (sent in reponse to our type-1 message) */
-static CURLcode smtp_state_auth_ntlm_type2msg_resp(struct connectdata *conn,
-                                                   int smtpcode,
-                                                   smtpstate instate)
+/* For AUTH cancellation responses */
+static CURLcode smtp_state_auth_cancel_resp(struct connectdata *conn,
+                                            int smtpcode,
+                                            smtpstate instate)
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
-  char *type3msg = NULL;
+  struct smtp_conn *smtpc = &conn->proto.smtpc;
+  const char *mech = NULL;
+  char *initresp = NULL;
   size_t len = 0;
   size_t len = 0;
+  smtpstate state1 = SMTP_STOP;
+  smtpstate state2 = SMTP_STOP;
 
 
+  (void)smtpcode;
   (void)instate; /* no use for this yet */
 
   (void)instate; /* no use for this yet */
 
-  if(smtpcode != 334) {
-    failf(data, "Access denied: %d", smtpcode);
-    result = CURLE_LOGIN_DENIED;
-  }
-  else {
-    /* Create the type-3 message */
-    result = Curl_sasl_create_ntlm_type3_message(data,
-                                                 data->state.buffer + 4,
-                                                 conn->user, conn->passwd,
-                                                 &conn->ntlm,
-                                                 &type3msg, &len);
+  /* Remove the offending mechanism from the supported list */
+  smtpc->authmechs ^= smtpc->authused;
 
 
-    /* Send the message */
-    if(!result) {
-      if(type3msg) {
-        result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", type3msg);
+  /* Calculate alternative SASL login details */
+  result = smtp_calc_sasl_details(conn, &mech, &initresp, &len, &state1,
+                                  &state2);
 
 
-        if(!result)
-          state(conn, SMTP_AUTH_FINAL);
-      }
+  if(!result) {
+    /* Do we have any mechanisms left? */
+    if(mech) {
+      /* Retry SASL based authentication */
+      result = smtp_perform_auth(conn, mech, initresp, len, state1, state2);
+
+      Curl_safefree(initresp);
+    }
+    else {
+      failf(data, "Authentication cancelled");
 
 
-      Curl_safefree(type3msg);
+      result = CURLE_LOGIN_DENIED;
     }
   }
 
   return result;
 }
     }
   }
 
   return result;
 }
-#endif
 
 
-/* For the final responses to the AUTH sequence */
+/* For final responses in the AUTH sequence */
 static CURLcode smtp_state_auth_final_resp(struct connectdata *conn,
                                            int smtpcode,
                                            smtpstate instate)
 static CURLcode smtp_state_auth_final_resp(struct connectdata *conn,
                                            int smtpcode,
                                            smtpstate instate)
@@ -1109,26 +1398,68 @@ static CURLcode smtp_state_auth_final_resp(struct connectdata *conn,
   return result;
 }
 
   return result;
 }
 
+/* For command responses */
+static CURLcode smtp_state_command_resp(struct connectdata *conn, int smtpcode,
+                                        smtpstate instate)
+{
+  CURLcode result = CURLE_OK;
+  struct SessionHandle *data = conn->data;
+  struct SMTP *smtp = data->req.protop;
+  char *line = data->state.buffer;
+  size_t len = strlen(line);
+
+  (void)instate; /* no use for this yet */
+
+  if((smtp->rcpt && smtpcode/100 != 2 && smtpcode != 553 && smtpcode != 1) ||
+     (!smtp->rcpt && smtpcode/100 != 2 && smtpcode != 1)) {
+    failf(data, "Command failed: %d", smtpcode);
+    result = CURLE_RECV_ERROR;
+  }
+  else {
+    /* Temporarily add the LF character back and send as body to the client */
+    if(!data->set.opt_no_body) {
+      line[len] = '\n';
+      result = Curl_client_write(conn, CLIENTWRITE_BODY, line, len + 1);
+      line[len] = '\0';
+    }
+
+    if(smtpcode != 1) {
+      if(smtp->rcpt) {
+        smtp->rcpt = smtp->rcpt->next;
+
+        if(smtp->rcpt) {
+          /* Send the next command */
+          result = smtp_perform_command(conn);
+        }
+        else
+          /* End of DO phase */
+          state(conn, SMTP_STOP);
+      }
+      else
+        /* End of DO phase */
+        state(conn, SMTP_STOP);
+    }
+  }
+
+  return result;
+}
+
 /* For MAIL responses */
 static CURLcode smtp_state_mail_resp(struct connectdata *conn, int smtpcode,
                                      smtpstate instate)
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
 /* For MAIL responses */
 static CURLcode smtp_state_mail_resp(struct connectdata *conn, int smtpcode,
                                      smtpstate instate)
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
-  struct SMTP *smtp = data->state.proto.smtp;
 
   (void)instate; /* no use for this yet */
 
   if(smtpcode/100 != 2) {
     failf(data, "MAIL failed: %d", smtpcode);
     result = CURLE_SEND_ERROR;
 
   (void)instate; /* no use for this yet */
 
   if(smtpcode/100 != 2) {
     failf(data, "MAIL failed: %d", smtpcode);
     result = CURLE_SEND_ERROR;
-    state(conn, SMTP_STOP);
   }
   }
-  else {
-    smtp->rcpt = data->set.mail_rcpt;
-
+  else
+    /* Start the RCPT TO command */
     result = smtp_perform_rcpt_to(conn);
     result = smtp_perform_rcpt_to(conn);
-  }
 
   return result;
 }
 
   return result;
 }
@@ -1139,30 +1470,27 @@ static CURLcode smtp_state_rcpt_resp(struct connectdata *conn, int smtpcode,
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
-  struct SMTP *smtp = data->state.proto.smtp;
+  struct SMTP *smtp = data->req.protop;
 
   (void)instate; /* no use for this yet */
 
   if(smtpcode/100 != 2) {
     failf(data, "RCPT failed: %d", smtpcode);
     result = CURLE_SEND_ERROR;
 
   (void)instate; /* no use for this yet */
 
   if(smtpcode/100 != 2) {
     failf(data, "RCPT failed: %d", smtpcode);
     result = CURLE_SEND_ERROR;
-    state(conn, SMTP_STOP);
   }
   else {
   }
   else {
-    if(smtp->rcpt) {
-      smtp->rcpt = smtp->rcpt->next;
+    smtp->rcpt = smtp->rcpt->next;
+
+    if(smtp->rcpt)
+      /* Send the next RCPT TO command */
       result = smtp_perform_rcpt_to(conn);
       result = smtp_perform_rcpt_to(conn);
+    else {
+      /* Send the DATA command */
+      result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", "DATA");
 
 
-      /* If we failed or still are sending RCPT data then return */
-      if(result || smtp->rcpt)
-        return result;
+      if(!result)
+        state(conn, SMTP_DATA);
     }
     }
-
-    /* Send the DATA command */
-    result = Curl_pp_sendf(&conn->proto.smtpc.pp, "%s", "DATA");
-
-    if(!result)
-      state(conn, SMTP_DATA);
   }
 
   return result;
   }
 
   return result;
@@ -1172,25 +1500,27 @@ static CURLcode smtp_state_rcpt_resp(struct connectdata *conn, int smtpcode,
 static CURLcode smtp_state_data_resp(struct connectdata *conn, int smtpcode,
                                      smtpstate instate)
 {
 static CURLcode smtp_state_data_resp(struct connectdata *conn, int smtpcode,
                                      smtpstate instate)
 {
+  CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
 
   (void)instate; /* no use for this yet */
 
   if(smtpcode != 354) {
   struct SessionHandle *data = conn->data;
 
   (void)instate; /* no use for this yet */
 
   if(smtpcode != 354) {
-    state(conn, SMTP_STOP);
-    return CURLE_SEND_ERROR;
+    failf(data, "DATA failed: %d", smtpcode);
+    result = CURLE_SEND_ERROR;
   }
   }
+  else {
+    /* Set the progress upload size */
+    Curl_pgrsSetUploadSize(data, data->state.infilesize);
 
 
-  /* Set the progress upload size */
-  Curl_pgrsSetUploadSize(data, data->set.infilesize);
-
-  /* SMTP upload */
-  Curl_setup_transfer(conn, -1, -1, FALSE, NULL, FIRSTSOCKET, NULL);
+    /* SMTP upload */
+    Curl_setup_transfer(conn, -1, -1, FALSE, NULL, FIRSTSOCKET, NULL);
 
 
-  /* End of DO phase */
-  state(conn, SMTP_STOP);
+    /* End of DO phase */
+    state(conn, SMTP_STOP);
+  }
 
 
-  return CURLE_OK;
+  return result;
 }
 
 /* For POSTDATA responses, which are received after the entire DATA
 }
 
 /* For POSTDATA responses, which are received after the entire DATA
@@ -1230,16 +1560,19 @@ static CURLcode smtp_statemach_act(struct connectdata *conn)
   if(pp->sendleft)
     return Curl_pp_flushsend(pp);
 
   if(pp->sendleft)
     return Curl_pp_flushsend(pp);
 
-  /* Read the response from the server */
-  result = Curl_pp_readresp(sock, pp, &smtpcode, &nread);
-  if(result)
-    return result;
+  do {
+    /* Read the response from the server */
+    result = Curl_pp_readresp(sock, pp, &smtpcode, &nread);
+    if(result)
+      return result;
 
 
-  /* Store the latest response for later retrieval */
-  if(smtpc->state != SMTP_QUIT)
-    data->info.httpcode = smtpcode;
+    /* Store the latest response for later retrieval if necessary */
+    if(smtpc->state != SMTP_QUIT && smtpcode != 1)
+      data->info.httpcode = smtpcode;
+
+    if(!smtpcode)
+      break;
 
 
-  if(smtpcode) {
     /* We have now received a full SMTP server response */
     switch(smtpc->state) {
     case SMTP_SERVERGREET:
     /* We have now received a full SMTP server response */
     switch(smtpc->state) {
     case SMTP_SERVERGREET:
@@ -1296,10 +1629,37 @@ static CURLcode smtp_statemach_act(struct connectdata *conn)
       break;
 #endif
 
       break;
 #endif
 
+#if defined(USE_KERBEROS5)
+    case SMTP_AUTH_GSSAPI:
+      result = smtp_state_auth_gssapi_resp(conn, smtpcode, smtpc->state);
+      break;
+
+    case SMTP_AUTH_GSSAPI_TOKEN:
+      result = smtp_state_auth_gssapi_token_resp(conn, smtpcode, smtpc->state);
+      break;
+
+    case SMTP_AUTH_GSSAPI_NO_DATA:
+      result = smtp_state_auth_gssapi_no_data_resp(conn, smtpcode,
+                                                   smtpc->state);
+      break;
+#endif
+
+    case SMTP_AUTH_XOAUTH2:
+      result = smtp_state_auth_xoauth2_resp(conn, smtpcode, smtpc->state);
+      break;
+
+    case SMTP_AUTH_CANCEL:
+      result = smtp_state_auth_cancel_resp(conn, smtpcode, smtpc->state);
+      break;
+
     case SMTP_AUTH_FINAL:
       result = smtp_state_auth_final_resp(conn, smtpcode, smtpc->state);
       break;
 
     case SMTP_AUTH_FINAL:
       result = smtp_state_auth_final_resp(conn, smtpcode, smtpc->state);
       break;
 
+    case SMTP_COMMAND:
+      result = smtp_state_command_resp(conn, smtpcode, smtpc->state);
+      break;
+
     case SMTP_MAIL:
       result = smtp_state_mail_resp(conn, smtpcode, smtpc->state);
       break;
     case SMTP_MAIL:
       result = smtp_state_mail_resp(conn, smtpcode, smtpc->state);
       break;
@@ -1323,7 +1683,7 @@ static CURLcode smtp_statemach_act(struct connectdata *conn)
       state(conn, SMTP_STOP);
       break;
     }
       state(conn, SMTP_STOP);
       break;
     }
-  }
+  } while(!result && smtpc->state != SMTP_STOP && Curl_pp_moredata(pp));
 
   return result;
 }
 
   return result;
 }
@@ -1334,11 +1694,13 @@ static CURLcode smtp_multi_statemach(struct connectdata *conn, bool *done)
   CURLcode result = CURLE_OK;
   struct smtp_conn *smtpc = &conn->proto.smtpc;
 
   CURLcode result = CURLE_OK;
   struct smtp_conn *smtpc = &conn->proto.smtpc;
 
-  if((conn->handler->flags & PROTOPT_SSL) && !smtpc->ssldone)
+  if((conn->handler->flags & PROTOPT_SSL) && !smtpc->ssldone) {
     result = Curl_ssl_connect_nonblocking(conn, FIRSTSOCKET, &smtpc->ssldone);
     result = Curl_ssl_connect_nonblocking(conn, FIRSTSOCKET, &smtpc->ssldone);
-  else
-    result = Curl_pp_statemach(&smtpc->pp, FALSE);
+    if(result || !smtpc->ssldone)
+      return result;
+  }
 
 
+  result = Curl_pp_statemach(&smtpc->pp, FALSE);
   *done = (smtpc->state == SMTP_STOP) ? TRUE : FALSE;
 
   return result;
   *done = (smtpc->state == SMTP_STOP) ? TRUE : FALSE;
 
   return result;
@@ -1361,13 +1723,11 @@ static CURLcode smtp_init(struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
-  struct SMTP *smtp = data->state.proto.smtp;
+  struct SMTP *smtp;
 
 
-  if(!smtp) {
-    smtp = data->state.proto.smtp = calloc(sizeof(struct SMTP), 1);
-    if(!smtp)
-      result = CURLE_OUT_OF_MEMORY;
-  }
+  smtp = data->req.protop = calloc(sizeof(struct SMTP), 1);
+  if(!smtp)
+    result = CURLE_OUT_OF_MEMORY;
 
   return result;
 }
 
   return result;
 }
@@ -1397,17 +1757,8 @@ static CURLcode smtp_connect(struct connectdata *conn, bool *done)
 
   *done = FALSE; /* default to not done yet */
 
 
   *done = FALSE; /* default to not done yet */
 
-  /* If there already is a protocol-specific struct allocated for this
-     sessionhandle, deal with it */
-  Curl_reset_reqproto(conn);
-
-  /* Initialise the SMTP layer */
-  result = smtp_init(conn);
-  if(result)
-    return result;
-
   /* We always support persistent connections in SMTP */
   /* We always support persistent connections in SMTP */
-  conn->bits.close = FALSE;
+  connkeep(conn, "SMTP default");
 
   /* Set the default response time-out */
   pp->response_time = RESP_TIMEOUT;
 
   /* Set the default response time-out */
   pp->response_time = RESP_TIMEOUT;
@@ -1453,15 +1804,15 @@ static CURLcode smtp_done(struct connectdata *conn, CURLcode status,
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
-  struct SMTP *smtp = data->state.proto.smtp;
+  struct SMTP *smtp = data->req.protop;
   struct pingpong *pp = &conn->proto.smtpc.pp;
   struct pingpong *pp = &conn->proto.smtpc.pp;
-  const char *eob;
+  char *eob;
   ssize_t len;
   ssize_t bytes_written;
 
   (void)premature;
 
   ssize_t len;
   ssize_t bytes_written;
 
   (void)premature;
 
-  if(!smtp)
+  if(!smtp || !pp->conn)
     /* When the easy handle is removed from the multi interface while libcurl
        is still trying to resolve the host name, the SMTP struct is not yet
        initialized. However, the removal action calls Curl_done() which in
     /* When the easy handle is removed from the multi interface while libcurl
        is still trying to resolve the host name, the SMTP struct is not yet
        initialized. However, the removal action calls Curl_done() which in
@@ -1469,36 +1820,51 @@ static CURLcode smtp_done(struct connectdata *conn, CURLcode status,
     return CURLE_OK;
 
   if(status) {
     return CURLE_OK;
 
   if(status) {
-    conn->bits.close = TRUE; /* marked for closure */
+    connclose(conn, "SMTP done with bad status"); /* marked for closure */
     result = status;         /* use the already set error code */
   }
     result = status;         /* use the already set error code */
   }
-  else if(!data->set.connect_only) {
+  else if(!data->set.connect_only && data->set.upload && data->set.mail_rcpt) {
     /* Calculate the EOB taking into account any terminating CRLF from the
        previous line of the email or the CRLF of the DATA command when there
     /* Calculate the EOB taking into account any terminating CRLF from the
        previous line of the email or the CRLF of the DATA command when there
-       is "no mail data". RFC-5321, sect. 4.1.1.4. */
-    eob = SMTP_EOB;
-    len = SMTP_EOB_LEN;
-    if(smtp->trailing_crlf || !conn->data->set.infilesize) {
-      eob += 2;
-      len -= 2;
+       is "no mail data". RFC-5321, sect. 4.1.1.4.
+
+       Note: As some SSL backends, such as OpenSSL, will cause Curl_write() to
+       fail when using a different pointer following a previous write, that
+       returned CURLE_AGAIN, we duplicate the EOB now rather than when the
+       bytes written doesn't equal len. */
+    if(smtp->trailing_crlf || !conn->data->state.infilesize) {
+      eob = strdup(SMTP_EOB + 2);
+      len = SMTP_EOB_LEN - 2;
+    }
+    else {
+      eob = strdup(SMTP_EOB);
+      len = SMTP_EOB_LEN;
     }
 
     }
 
+    if(!eob)
+      return CURLE_OUT_OF_MEMORY;
+
     /* Send the end of block data */
     result = Curl_write(conn, conn->writesockfd, eob, len, &bytes_written);
     /* Send the end of block data */
     result = Curl_write(conn, conn->writesockfd, eob, len, &bytes_written);
-    if(result)
+    if(result) {
+      free(eob);
       return result;
       return result;
+    }
 
     if(bytes_written != len) {
       /* The whole chunk was not sent so keep it around and adjust the
          pingpong structure accordingly */
 
     if(bytes_written != len) {
       /* The whole chunk was not sent so keep it around and adjust the
          pingpong structure accordingly */
-      pp->sendthis = strdup(eob);
+      pp->sendthis = eob;
       pp->sendsize = len;
       pp->sendleft = len - bytes_written;
     }
       pp->sendsize = len;
       pp->sendleft = len - bytes_written;
     }
-    else
+    else {
       /* Successfully sent so adjust the response timeout relative to now */
       pp->response = Curl_tvnow();
 
       /* Successfully sent so adjust the response timeout relative to now */
       pp->response = Curl_tvnow();
 
+      free(eob);
+    }
+
     state(conn, SMTP_POSTDATA);
 
     /* Run the state-machine
     state(conn, SMTP_POSTDATA);
 
     /* Run the state-machine
@@ -1511,6 +1877,9 @@ static CURLcode smtp_done(struct connectdata *conn, CURLcode status,
     result = smtp_block_statemach(conn);
   }
 
     result = smtp_block_statemach(conn);
   }
 
+  /* Cleanup our per-request based variables */
+  Curl_safefree(smtp->custom);
+
   /* Clear the transfer mode for the next request */
   smtp->transfer = FTPTRANSFER_BODY;
 
   /* Clear the transfer mode for the next request */
   smtp->transfer = FTPTRANSFER_BODY;
 
@@ -1521,31 +1890,41 @@ static CURLcode smtp_done(struct connectdata *conn, CURLcode status,
  *
  * smtp_perform()
  *
  *
  * smtp_perform()
  *
- * This is the actual DO function for SMTP. Send a mail according to the
- * options previously setup.
+ * This is the actual DO function for SMTP. Transfer a mail, send a command
+ * or get some data according to the options previously setup.
  */
 static CURLcode smtp_perform(struct connectdata *conn, bool *connected,
                              bool *dophase_done)
 {
   /* This is SMTP and no proxy */
   CURLcode result = CURLE_OK;
  */
 static CURLcode smtp_perform(struct connectdata *conn, bool *connected,
                              bool *dophase_done)
 {
   /* This is SMTP and no proxy */
   CURLcode result = CURLE_OK;
+  struct SessionHandle *data = conn->data;
+  struct SMTP *smtp = data->req.protop;
 
   DEBUGF(infof(conn->data, "DO phase starts\n"));
 
 
   DEBUGF(infof(conn->data, "DO phase starts\n"));
 
-  if(conn->data->set.opt_no_body) {
+  if(data->set.opt_no_body) {
     /* Requested no body means no transfer */
     /* Requested no body means no transfer */
-    struct SMTP *smtp = conn->data->state.proto.smtp;
     smtp->transfer = FTPTRANSFER_INFO;
   }
 
   *dophase_done = FALSE; /* not done yet */
 
     smtp->transfer = FTPTRANSFER_INFO;
   }
 
   *dophase_done = FALSE; /* not done yet */
 
+  /* Store the first recipient (or NULL if not specified) */
+  smtp->rcpt = data->set.mail_rcpt;
+
   /* Start the first command in the DO phase */
   /* Start the first command in the DO phase */
-  result = smtp_perform_mail(conn);
+  if(data->set.upload && data->set.mail_rcpt)
+    /* MAIL transfer */
+    result = smtp_perform_mail(conn);
+  else
+    /* SMTP based command (VRFY, EXPN, NOOP, RSET or HELP) */
+    result = smtp_perform_command(conn);
+
   if(result)
     return result;
 
   if(result)
     return result;
 
-  /* run the state-machine */
+  /* Run the state-machine */
   result = smtp_multi_statemach(conn, dophase_done);
 
   *connected = conn->bits.tcpconnect[FIRSTSOCKET];
   result = smtp_multi_statemach(conn, dophase_done);
 
   *connected = conn->bits.tcpconnect[FIRSTSOCKET];
@@ -1571,12 +1950,8 @@ static CURLcode smtp_do(struct connectdata *conn, bool *done)
 
   *done = FALSE; /* default to false */
 
 
   *done = FALSE; /* default to false */
 
-  /* Since connections can be re-used between SessionHandles, there might be a
-     connection already existing but on a fresh SessionHandle struct. As such
-     we make sure we have a good SMTP struct to play with. For new connections
-     the SMTP struct is allocated and setup in the smtp_connect() function. */
-  Curl_reset_reqproto(conn);
-  result = smtp_init(conn);
+  /* Parse the custom request */
+  result = smtp_parse_custom_request(conn);
   if(result)
     return result;
 
   if(result)
     return result;
 
@@ -1592,8 +1967,7 @@ static CURLcode smtp_do(struct connectdata *conn, bool *done)
  * Disconnect from an SMTP server. Cleanup protocol-specific per-connection
  * resources. BLOCKING.
  */
  * Disconnect from an SMTP server. Cleanup protocol-specific per-connection
  * resources. BLOCKING.
  */
-static CURLcode smtp_disconnect(struct connectdata *conn,
-                                bool dead_connection)
+static CURLcode smtp_disconnect(struct connectdata *conn, bool dead_connection)
 {
   struct smtp_conn *smtpc = &conn->proto.smtpc;
 
 {
   struct smtp_conn *smtpc = &conn->proto.smtpc;
 
@@ -1603,7 +1977,7 @@ static CURLcode smtp_disconnect(struct connectdata *conn,
 
   /* The SMTP session may or may not have been allocated/setup at this
      point! */
 
   /* The SMTP session may or may not have been allocated/setup at this
      point! */
-  if(!dead_connection && smtpc->pp.conn)
+  if(!dead_connection && smtpc->pp.conn && smtpc->pp.conn->bits.protoconnstart)
     if(!smtp_perform_quit(conn))
       (void)smtp_block_statemach(conn); /* ignore errors on QUIT */
 
     if(!smtp_perform_quit(conn))
       (void)smtp_block_statemach(conn); /* ignore errors on QUIT */
 
@@ -1622,7 +1996,7 @@ static CURLcode smtp_disconnect(struct connectdata *conn,
 /* Call this when the DO phase has completed */
 static CURLcode smtp_dophase_done(struct connectdata *conn, bool connected)
 {
 /* Call this when the DO phase has completed */
 static CURLcode smtp_dophase_done(struct connectdata *conn, bool connected)
 {
-  struct SMTP *smtp = conn->data->state.proto.smtp;
+  struct SMTP *smtp = conn->data->req.protop;
 
   (void)connected;
 
 
   (void)connected;
 
@@ -1671,8 +2045,8 @@ static CURLcode smtp_regular_transfer(struct connectdata *conn,
   /* Set the progress data */
   Curl_pgrsSetUploadCounter(data, 0);
   Curl_pgrsSetDownloadCounter(data, 0);
   /* Set the progress data */
   Curl_pgrsSetUploadCounter(data, 0);
   Curl_pgrsSetDownloadCounter(data, 0);
-  Curl_pgrsSetUploadSize(data, 0);
-  Curl_pgrsSetDownloadSize(data, 0);
+  Curl_pgrsSetUploadSize(data, -1);
+  Curl_pgrsSetDownloadSize(data, -1);
 
   /* Carry out the perform */
   result = smtp_perform(conn, &connected, dophase_done);
 
   /* Carry out the perform */
   result = smtp_perform(conn, &connected, dophase_done);
@@ -1687,6 +2061,7 @@ static CURLcode smtp_regular_transfer(struct connectdata *conn,
 static CURLcode smtp_setup_connection(struct connectdata *conn)
 {
   struct SessionHandle *data = conn->data;
 static CURLcode smtp_setup_connection(struct connectdata *conn)
 {
   struct SessionHandle *data = conn->data;
+  CURLcode result;
 
   if(conn->bits.httpproxy && !data->set.tunnel_thru_httpproxy) {
     /* Unless we have asked to tunnel SMTP operations through the proxy, we
 
   if(conn->bits.httpproxy && !data->set.tunnel_thru_httpproxy) {
     /* Unless we have asked to tunnel SMTP operations through the proxy, we
@@ -1702,17 +2077,20 @@ static CURLcode smtp_setup_connection(struct connectdata *conn)
       return CURLE_UNSUPPORTED_PROTOCOL;
 #endif
     }
       return CURLE_UNSUPPORTED_PROTOCOL;
 #endif
     }
+    /* set it up as a HTTP connection instead */
+    return conn->handler->setup_connection(conn);
 
 
-    /* We explicitly mark this connection as persistent here as we're doing
-       SMTP over HTTP and thus we accidentally avoid setting this value
-       otherwise */
-    conn->bits.close = FALSE;
 #else
     failf(data, "SMTP over http proxy requires HTTP support built-in!");
     return CURLE_UNSUPPORTED_PROTOCOL;
 #endif
   }
 
 #else
     failf(data, "SMTP over http proxy requires HTTP support built-in!");
     return CURLE_UNSUPPORTED_PROTOCOL;
 #endif
   }
 
+  /* Initialise the SMTP layer */
+  result = smtp_init(conn);
+  if(result)
+    return result;
+
   data->state.path++;   /* don't include the initial slash */
 
   return CURLE_OK;
   data->state.path++;   /* don't include the initial slash */
 
   return CURLE_OK;
@@ -1730,32 +2108,47 @@ static CURLcode smtp_parse_url_options(struct connectdata *conn)
   struct smtp_conn *smtpc = &conn->proto.smtpc;
   const char *options = conn->options;
   const char *ptr = options;
   struct smtp_conn *smtpc = &conn->proto.smtpc;
   const char *options = conn->options;
   const char *ptr = options;
+  bool reset = TRUE;
 
 
-  if(options) {
+  while(ptr && *ptr) {
     const char *key = ptr;
 
     while(*ptr && *ptr != '=')
         ptr++;
 
     if(strnequal(key, "AUTH", 4)) {
     const char *key = ptr;
 
     while(*ptr && *ptr != '=')
         ptr++;
 
     if(strnequal(key, "AUTH", 4)) {
-      const char *value = ptr + 1;
+      size_t len = 0;
+      const char *value = ++ptr;
 
 
-      if(strequal(value, "*"))
-        smtpc->prefmech = SASL_AUTH_ANY;
-      else if(strequal(value, "LOGIN"))
-        smtpc->prefmech = SASL_MECH_LOGIN;
-      else if(strequal(value, "PLAIN"))
-        smtpc->prefmech = SASL_MECH_PLAIN;
-      else if(strequal(value, "CRAM-MD5"))
-        smtpc->prefmech = SASL_MECH_CRAM_MD5;
-      else if(strequal(value, "DIGEST-MD5"))
-        smtpc->prefmech = SASL_MECH_DIGEST_MD5;
-      else if(strequal(value, "GSSAPI"))
-        smtpc->prefmech = SASL_MECH_GSSAPI;
-      else if(strequal(value, "NTLM"))
-        smtpc->prefmech = SASL_MECH_NTLM;
-      else
+      if(reset) {
+        reset = FALSE;
         smtpc->prefmech = SASL_AUTH_NONE;
         smtpc->prefmech = SASL_AUTH_NONE;
+      }
+
+      while(*ptr && *ptr != ';') {
+        ptr++;
+        len++;
+      }
+
+      if(strnequal(value, "*", len))
+        smtpc->prefmech = SASL_AUTH_ANY;
+      else if(strnequal(value, SASL_MECH_STRING_LOGIN, len))
+        smtpc->prefmech |= SASL_MECH_LOGIN;
+      else if(strnequal(value, SASL_MECH_STRING_PLAIN, len))
+        smtpc->prefmech |= SASL_MECH_PLAIN;
+      else if(strnequal(value, SASL_MECH_STRING_CRAM_MD5, len))
+        smtpc->prefmech |= SASL_MECH_CRAM_MD5;
+      else if(strnequal(value, SASL_MECH_STRING_DIGEST_MD5, len))
+        smtpc->prefmech |= SASL_MECH_DIGEST_MD5;
+      else if(strnequal(value, SASL_MECH_STRING_GSSAPI, len))
+        smtpc->prefmech |= SASL_MECH_GSSAPI;
+      else if(strnequal(value, SASL_MECH_STRING_NTLM, len))
+        smtpc->prefmech |= SASL_MECH_NTLM;
+      else if(strnequal(value, SASL_MECH_STRING_XOAUTH2, len))
+        smtpc->prefmech |= SASL_MECH_XOAUTH2;
+
+      if(*ptr == ';')
+        ptr++;
     }
     else
       result = CURLE_URL_MALFORMAT;
     }
     else
       result = CURLE_URL_MALFORMAT;
@@ -1790,7 +2183,131 @@ static CURLcode smtp_parse_url_path(struct connectdata *conn)
   return Curl_urldecode(conn->data, path, 0, &smtpc->domain, NULL, TRUE);
 }
 
   return Curl_urldecode(conn->data, path, 0, &smtpc->domain, NULL, TRUE);
 }
 
-CURLcode Curl_smtp_escape_eob(struct connectdata *conn, ssize_t nread)
+/***********************************************************************
+ *
+ * smtp_parse_custom_request()
+ *
+ * Parse the custom request.
+ */
+static CURLcode smtp_parse_custom_request(struct connectdata *conn)
+{
+  CURLcode result = CURLE_OK;
+  struct SessionHandle *data = conn->data;
+  struct SMTP *smtp = data->req.protop;
+  const char *custom = data->set.str[STRING_CUSTOMREQUEST];
+
+  /* URL decode the custom request */
+  if(custom)
+    result = Curl_urldecode(data, custom, 0, &smtp->custom, NULL, TRUE);
+
+  return result;
+}
+
+/***********************************************************************
+ *
+ * smtp_calc_sasl_details()
+ *
+ * Calculate the required login details for SASL authentication.
+ */
+static CURLcode smtp_calc_sasl_details(struct connectdata *conn,
+                                       const char **mech,
+                                       char **initresp, size_t *len,
+                                       smtpstate *state1, smtpstate *state2)
+{
+  CURLcode result = CURLE_OK;
+  struct SessionHandle *data = conn->data;
+  struct smtp_conn *smtpc = &conn->proto.smtpc;
+
+  /* Calculate the supported authentication mechanism, by decreasing order of
+     security, as well as the initial response where appropriate */
+#if defined(USE_KERBEROS5)
+  if((smtpc->authmechs & SASL_MECH_GSSAPI) &&
+     (smtpc->prefmech & SASL_MECH_GSSAPI)) {
+    smtpc->mutual_auth = FALSE; /* TODO: Calculate mutual authentication */
+
+    *mech = SASL_MECH_STRING_GSSAPI;
+    *state1 = SMTP_AUTH_GSSAPI;
+    *state2 = SMTP_AUTH_GSSAPI_TOKEN;
+    smtpc->authused = SASL_MECH_GSSAPI;
+
+    if(data->set.sasl_ir)
+      result = Curl_sasl_create_gssapi_user_message(data, conn->user,
+                                                    conn->passwd, "smtp",
+                                                    smtpc->mutual_auth,
+                                                    NULL, &conn->krb5,
+                                                    initresp, len);
+    }
+  else
+#endif
+#ifndef CURL_DISABLE_CRYPTO_AUTH
+  if((smtpc->authmechs & SASL_MECH_DIGEST_MD5) &&
+     (smtpc->prefmech & SASL_MECH_DIGEST_MD5)) {
+    *mech = SASL_MECH_STRING_DIGEST_MD5;
+    *state1 = SMTP_AUTH_DIGESTMD5;
+    smtpc->authused = SASL_MECH_DIGEST_MD5;
+  }
+  else if((smtpc->authmechs & SASL_MECH_CRAM_MD5) &&
+          (smtpc->prefmech & SASL_MECH_CRAM_MD5)) {
+    *mech = SASL_MECH_STRING_CRAM_MD5;
+    *state1 = SMTP_AUTH_CRAMMD5;
+    smtpc->authused = SASL_MECH_CRAM_MD5;
+  }
+  else
+#endif
+#ifdef USE_NTLM
+  if((smtpc->authmechs & SASL_MECH_NTLM) &&
+     (smtpc->prefmech & SASL_MECH_NTLM)) {
+    *mech = SASL_MECH_STRING_NTLM;
+    *state1 = SMTP_AUTH_NTLM;
+    *state2 = SMTP_AUTH_NTLM_TYPE2MSG;
+    smtpc->authused = SASL_MECH_NTLM;
+
+    if(data->set.sasl_ir)
+      result = Curl_sasl_create_ntlm_type1_message(conn->user, conn->passwd,
+                                                   &conn->ntlm,
+                                                   initresp, len);
+    }
+  else
+#endif
+  if(((smtpc->authmechs & SASL_MECH_XOAUTH2) &&
+      (smtpc->prefmech & SASL_MECH_XOAUTH2) &&
+      (smtpc->prefmech != SASL_AUTH_ANY)) || conn->xoauth2_bearer) {
+    *mech = SASL_MECH_STRING_XOAUTH2;
+    *state1 = SMTP_AUTH_XOAUTH2;
+    *state2 = SMTP_AUTH_FINAL;
+    smtpc->authused = SASL_MECH_XOAUTH2;
+
+    if(data->set.sasl_ir)
+      result = Curl_sasl_create_xoauth2_message(data, conn->user,
+                                                conn->xoauth2_bearer,
+                                                initresp, len);
+  }
+  else if((smtpc->authmechs & SASL_MECH_LOGIN) &&
+          (smtpc->prefmech & SASL_MECH_LOGIN)) {
+    *mech = SASL_MECH_STRING_LOGIN;
+    *state1 = SMTP_AUTH_LOGIN;
+    *state2 = SMTP_AUTH_LOGIN_PASSWD;
+    smtpc->authused = SASL_MECH_LOGIN;
+
+    if(data->set.sasl_ir)
+      result = Curl_sasl_create_login_message(data, conn->user, initresp, len);
+  }
+  else if((smtpc->authmechs & SASL_MECH_PLAIN) &&
+          (smtpc->prefmech & SASL_MECH_PLAIN)) {
+    *mech = SASL_MECH_STRING_PLAIN;
+    *state1 = SMTP_AUTH_PLAIN;
+    *state2 = SMTP_AUTH_FINAL;
+    smtpc->authused = SASL_MECH_PLAIN;
+
+    if(data->set.sasl_ir)
+      result = Curl_sasl_create_plain_message(data, conn->user, conn->passwd,
+                                              initresp, len);
+  }
+
+  return result;
+}
+
+CURLcode Curl_smtp_escape_eob(struct connectdata *conn, const ssize_t nread)
 {
   /* When sending a SMTP payload we must detect CRLF. sequences making sure
      they are sent as CRLF.. instead, as a . on the beginning of a line will
 {
   /* When sending a SMTP payload we must detect CRLF. sequences making sure
      they are sent as CRLF.. instead, as a . on the beginning of a line will
@@ -1801,18 +2318,27 @@ CURLcode Curl_smtp_escape_eob(struct connectdata *conn, ssize_t nread)
   ssize_t i;
   ssize_t si;
   struct SessionHandle *data = conn->data;
   ssize_t i;
   ssize_t si;
   struct SessionHandle *data = conn->data;
-  struct SMTP *smtp = data->state.proto.smtp;
+  struct SMTP *smtp = data->req.protop;
+  char *scratch = data->state.scratch;
+  char *newscratch = NULL;
+  char *oldscratch = NULL;
+  size_t eob_sent;
+
+  /* Do we need to allocate a scratch buffer? */
+  if(!scratch || data->set.crlf) {
+    oldscratch = scratch;
 
 
-  /* Do we need to allocate the scatch buffer? */
-  if(!data->state.scratch) {
-    data->state.scratch = malloc(2 * BUFSIZE);
+    scratch = newscratch = malloc(2 * BUFSIZE);
+    if(!newscratch) {
+      failf(data, "Failed to alloc scratch buffer!");
 
 
-    if(!data->state.scratch) {
-      failf (data, "Failed to alloc scratch buffer!");
       return CURLE_OUT_OF_MEMORY;
     }
   }
 
       return CURLE_OUT_OF_MEMORY;
     }
   }
 
+  /* Have we already sent part of the EOB? */
+  eob_sent = smtp->eob;
+
   /* This loop can be improved by some kind of Boyer-Moore style of
      approach but that is saved for later... */
   for(i = 0, si = 0; i < nread; i++) {
   /* This loop can be improved by some kind of Boyer-Moore style of
      approach but that is saved for later... */
   for(i = 0, si = 0; i < nread; i++) {
@@ -1827,8 +2353,8 @@ CURLcode Curl_smtp_escape_eob(struct connectdata *conn, ssize_t nread)
     }
     else if(smtp->eob) {
       /* A previous substring matched so output that first */
     }
     else if(smtp->eob) {
       /* A previous substring matched so output that first */
-      memcpy(&data->state.scratch[si], SMTP_EOB, smtp->eob);
-      si += smtp->eob;
+      memcpy(&scratch[si], &SMTP_EOB[eob_sent], smtp->eob - eob_sent);
+      si += smtp->eob - eob_sent;
 
       /* Then compare the first byte */
       if(SMTP_EOB[0] == data->req.upload_fromhere[i])
 
       /* Then compare the first byte */
       if(SMTP_EOB[0] == data->req.upload_fromhere[i])
@@ -1836,6 +2362,8 @@ CURLcode Curl_smtp_escape_eob(struct connectdata *conn, ssize_t nread)
       else
         smtp->eob = 0;
 
       else
         smtp->eob = 0;
 
+      eob_sent = 0;
+
       /* Reset the trailing CRLF flag as there was more data */
       smtp->trailing_crlf = FALSE;
     }
       /* Reset the trailing CRLF flag as there was more data */
       smtp->trailing_crlf = FALSE;
     }
@@ -1843,31 +2371,38 @@ CURLcode Curl_smtp_escape_eob(struct connectdata *conn, ssize_t nread)
     /* Do we have a match for CRLF. as per RFC-5321, sect. 4.5.2 */
     if(SMTP_EOB_FIND_LEN == smtp->eob) {
       /* Copy the replacement data to the target buffer */
     /* Do we have a match for CRLF. as per RFC-5321, sect. 4.5.2 */
     if(SMTP_EOB_FIND_LEN == smtp->eob) {
       /* Copy the replacement data to the target buffer */
-      memcpy(&data->state.scratch[si], SMTP_EOB_REPL, SMTP_EOB_REPL_LEN);
-      si += SMTP_EOB_REPL_LEN;
+      memcpy(&scratch[si], &SMTP_EOB_REPL[eob_sent],
+             SMTP_EOB_REPL_LEN - eob_sent);
+      si += SMTP_EOB_REPL_LEN - eob_sent;
       smtp->eob = 0;
       smtp->eob = 0;
+      eob_sent = 0;
     }
     else if(!smtp->eob)
     }
     else if(!smtp->eob)
-      data->state.scratch[si++] = data->req.upload_fromhere[i];
+      scratch[si++] = data->req.upload_fromhere[i];
   }
 
   }
 
-  if(smtp->eob) {
+  if(smtp->eob - eob_sent) {
     /* A substring matched before processing ended so output that now */
     /* A substring matched before processing ended so output that now */
-    memcpy(&data->state.scratch[si], SMTP_EOB, smtp->eob);
-    si += smtp->eob;
-    smtp->eob = 0;
+    memcpy(&scratch[si], &SMTP_EOB[eob_sent], smtp->eob - eob_sent);
+    si += smtp->eob - eob_sent;
   }
 
   }
 
+  /* Only use the new buffer if we replaced something */
   if(si != nread) {
   if(si != nread) {
-    /* Only use the new buffer if we replaced something */
-    nread = si;
-
     /* Upload from the new (replaced) buffer instead */
     /* Upload from the new (replaced) buffer instead */
-    data->req.upload_fromhere = data->state.scratch;
+    data->req.upload_fromhere = scratch;
+
+    /* Save the buffer so it can be freed later */
+    data->state.scratch = scratch;
+
+    /* Free the old scratch buffer */
+    Curl_safefree(oldscratch);
 
     /* Set the new amount too */
 
     /* Set the new amount too */
-    data->req.upload_present = nread;
+    data->req.upload_present = si;
   }
   }
+  else
+    Curl_safefree(newscratch);
 
   return CURLE_OK;
 }
 
   return CURLE_OK;
 }
index 4aff0c5..7a95efe 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2009 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2009 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -44,7 +44,13 @@ typedef enum {
   SMTP_AUTH_DIGESTMD5_RESP,
   SMTP_AUTH_NTLM,
   SMTP_AUTH_NTLM_TYPE2MSG,
   SMTP_AUTH_DIGESTMD5_RESP,
   SMTP_AUTH_NTLM,
   SMTP_AUTH_NTLM_TYPE2MSG,
+  SMTP_AUTH_GSSAPI,
+  SMTP_AUTH_GSSAPI_TOKEN,
+  SMTP_AUTH_GSSAPI_NO_DATA,
+  SMTP_AUTH_XOAUTH2,
+  SMTP_AUTH_CANCEL,
   SMTP_AUTH_FINAL,
   SMTP_AUTH_FINAL,
+  SMTP_COMMAND,     /* VRFY, EXPN, NOOP, RSET and HELP */
   SMTP_MAIL,        /* MAIL FROM */
   SMTP_RCPT,        /* RCPT TO */
   SMTP_DATA,
   SMTP_MAIL,        /* MAIL FROM */
   SMTP_RCPT,        /* RCPT TO */
   SMTP_DATA,
@@ -59,6 +65,7 @@ typedef enum {
    used. */
 struct SMTP {
   curl_pp_transfer transfer;
    used. */
 struct SMTP {
   curl_pp_transfer transfer;
+  char *custom;            /* Custom Request */
   struct curl_slist *rcpt; /* Recipient list */
   size_t eob;              /* Number of bytes of the EOB (End Of Body) that
                               have been received so far */
   struct curl_slist *rcpt; /* Recipient list */
   size_t eob;              /* Number of bytes of the EOB (End Of Body) that
                               have been received so far */
@@ -78,6 +85,8 @@ struct smtp_conn {
   bool tls_supported;      /* StartTLS capability supported by server */
   bool size_supported;     /* If server supports SIZE extension according to
                               RFC 1870 */
   bool tls_supported;      /* StartTLS capability supported by server */
   bool size_supported;     /* If server supports SIZE extension according to
                               RFC 1870 */
+  bool auth_supported;     /* AUTH capability supported by server */
+  bool mutual_auth;        /* Mutual authentication enabled (GSSAPI only) */
 };
 
 extern const struct Curl_handler Curl_handler_smtp;
 };
 
 extern const struct Curl_handler Curl_handler_smtp;
@@ -92,6 +101,6 @@ extern const struct Curl_handler Curl_handler_smtps;
 #define SMTP_EOB_REPL "\x0d\x0a\x2e\x2e"
 #define SMTP_EOB_REPL_LEN 4
 
 #define SMTP_EOB_REPL "\x0d\x0a\x2e\x2e"
 #define SMTP_EOB_REPL_LEN 4
 
-CURLcode Curl_smtp_escape_eob(struct connectdata *conn, ssize_t nread);
+CURLcode Curl_smtp_escape_eob(struct connectdata *conn, const ssize_t nread);
 
 #endif /* HEADER_CURL_SMTP_H */
 
 #endif /* HEADER_CURL_SMTP_H */
index b101a0d..6c6585b 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -127,7 +127,9 @@ CURLcode Curl_SOCKS4(const char *proxy_name,
     return CURLE_OPERATION_TIMEDOUT;
   }
 
     return CURLE_OPERATION_TIMEDOUT;
   }
 
-  curlx_nonblock(sock, FALSE);
+  (void)curlx_nonblock(sock, FALSE);
+
+  infof(data, "SOCKS4 communication to %s:%d\n", hostname, remote_port);
 
   /*
    * Compose socks4 request
 
   /*
    * Compose socks4 request
@@ -182,6 +184,8 @@ CURLcode Curl_SOCKS4(const char *proxy_name,
       else
         hp = NULL; /* fail! */
 
       else
         hp = NULL; /* fail! */
 
+      infof(data, "SOCKS4 connect to %s (locally resolved)\n", buf);
+
       Curl_resolv_unlock(data, dns); /* not used anymore from now on */
 
     }
       Curl_resolv_unlock(data, dns); /* not used anymore from now on */
 
     }
@@ -234,7 +238,7 @@ CURLcode Curl_SOCKS4(const char *proxy_name,
     code = Curl_write_plain(conn, sock, (char *)socksreq,
                             packetsize + hostnamelen,
                             &written);
     code = Curl_write_plain(conn, sock, (char *)socksreq,
                             packetsize + hostnamelen,
                             &written);
-    if((code != CURLE_OK) || (written != packetsize + hostnamelen)) {
+    if(code || (written != packetsize + hostnamelen)) {
       failf(data, "Failed to send SOCKS4 connect request.");
       return CURLE_COULDNT_CONNECT;
     }
       failf(data, "Failed to send SOCKS4 connect request.");
       return CURLE_COULDNT_CONNECT;
     }
@@ -243,7 +247,7 @@ CURLcode Curl_SOCKS4(const char *proxy_name,
       hostnamelen = (ssize_t)strlen(hostname) + 1;
       code = Curl_write_plain(conn, sock, (char *)hostname, hostnamelen,
                               &written);
       hostnamelen = (ssize_t)strlen(hostname) + 1;
       code = Curl_write_plain(conn, sock, (char *)hostname, hostnamelen,
                               &written);
-      if((code != CURLE_OK) || (written != hostnamelen)) {
+      if(code || (written != hostnamelen)) {
         failf(data, "Failed to send SOCKS4 connect request.");
         return CURLE_COULDNT_CONNECT;
       }
         failf(data, "Failed to send SOCKS4 connect request.");
         return CURLE_COULDNT_CONNECT;
       }
@@ -254,7 +258,7 @@ CURLcode Curl_SOCKS4(const char *proxy_name,
     /* Receive response */
     result = Curl_blockread_all(conn, sock, (char *)socksreq, packetsize,
                                 &actualread);
     /* Receive response */
     result = Curl_blockread_all(conn, sock, (char *)socksreq, packetsize,
                                 &actualread);
-    if((result != CURLE_OK) || (actualread != packetsize)) {
+    if(result || (actualread != packetsize)) {
       failf(data, "Failed to receive SOCKS4 connect request ack.");
       return CURLE_COULDNT_CONNECT;
     }
       failf(data, "Failed to receive SOCKS4 connect request ack.");
       return CURLE_COULDNT_CONNECT;
     }
@@ -331,7 +335,7 @@ CURLcode Curl_SOCKS4(const char *proxy_name,
     }
   }
 
     }
   }
 
-  curlx_nonblock(sock, TRUE);
+  (void)curlx_nonblock(sock, TRUE);
 
   return CURLE_OK; /* Proxy was successful! */
 }
 
   return CURLE_OK; /* Proxy was successful! */
 }
@@ -392,7 +396,7 @@ CURLcode Curl_SOCKS5(const char *proxy_name,
     return CURLE_OPERATION_TIMEDOUT;
   }
 
     return CURLE_OPERATION_TIMEDOUT;
   }
 
-  curlx_nonblock(sock, TRUE);
+  (void)curlx_nonblock(sock, TRUE);
 
   /* wait until socket gets connected */
   result = Curl_socket_ready(CURL_SOCKET_BAD, sock, timeout);
 
   /* wait until socket gets connected */
   result = Curl_socket_ready(CURL_SOCKET_BAD, sock, timeout);
@@ -415,7 +419,7 @@ CURLcode Curl_SOCKS5(const char *proxy_name,
 #if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
   socksreq[1] = (char)(proxy_name ? 3 : 2); /* number of methods (below) */
   socksreq[2] = 0; /* no authentication */
 #if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
   socksreq[1] = (char)(proxy_name ? 3 : 2); /* number of methods (below) */
   socksreq[2] = 0; /* no authentication */
-  socksreq[3] = 1; /* gssapi */
+  socksreq[3] = 1; /* GSS-API */
   socksreq[4] = 2; /* username/password */
 #else
   socksreq[1] = (char)(proxy_name ? 2 : 1); /* number of methods (below) */
   socksreq[4] = 2; /* username/password */
 #else
   socksreq[1] = (char)(proxy_name ? 2 : 1); /* number of methods (below) */
@@ -423,16 +427,16 @@ CURLcode Curl_SOCKS5(const char *proxy_name,
   socksreq[3] = 2; /* username/password */
 #endif
 
   socksreq[3] = 2; /* username/password */
 #endif
 
-  curlx_nonblock(sock, FALSE);
+  (void)curlx_nonblock(sock, FALSE);
 
   code = Curl_write_plain(conn, sock, (char *)socksreq, (2 + (int)socksreq[1]),
                           &written);
 
   code = Curl_write_plain(conn, sock, (char *)socksreq, (2 + (int)socksreq[1]),
                           &written);
-  if((code != CURLE_OK) || (written != (2 + (int)socksreq[1]))) {
+  if(code || (written != (2 + (int)socksreq[1]))) {
     failf(data, "Unable to send initial SOCKS5 request.");
     return CURLE_COULDNT_CONNECT;
   }
 
     failf(data, "Unable to send initial SOCKS5 request.");
     return CURLE_COULDNT_CONNECT;
   }
 
-  curlx_nonblock(sock, TRUE);
+  (void)curlx_nonblock(sock, TRUE);
 
   result = Curl_socket_ready(sock, CURL_SOCKET_BAD, timeout);
 
 
   result = Curl_socket_ready(sock, CURL_SOCKET_BAD, timeout);
 
@@ -450,10 +454,10 @@ CURLcode Curl_SOCKS5(const char *proxy_name,
     return CURLE_RECV_ERROR;
   }
 
     return CURLE_RECV_ERROR;
   }
 
-  curlx_nonblock(sock, FALSE);
+  (void)curlx_nonblock(sock, FALSE);
 
   result=Curl_blockread_all(conn, sock, (char *)socksreq, 2, &actualread);
 
   result=Curl_blockread_all(conn, sock, (char *)socksreq, 2, &actualread);
-  if((result != CURLE_OK) || (actualread != 2)) {
+  if(result || (actualread != 2)) {
     failf(data, "Unable to receive initial SOCKS5 response.");
     return CURLE_COULDNT_CONNECT;
   }
     failf(data, "Unable to receive initial SOCKS5 response.");
     return CURLE_COULDNT_CONNECT;
   }
@@ -469,8 +473,8 @@ CURLcode Curl_SOCKS5(const char *proxy_name,
 #if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
   else if(socksreq[1] == 1) {
     code = Curl_SOCKS5_gssapi_negotiate(sockindex, conn);
 #if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
   else if(socksreq[1] == 1) {
     code = Curl_SOCKS5_gssapi_negotiate(sockindex, conn);
-    if(code != CURLE_OK) {
-      failf(data, "Unable to negotiate SOCKS5 gssapi context.");
+    if(code) {
+      failf(data, "Unable to negotiate SOCKS5 GSS-API context.");
       return CURLE_COULDNT_CONNECT;
     }
   }
       return CURLE_COULDNT_CONNECT;
     }
   }
@@ -506,13 +510,13 @@ CURLcode Curl_SOCKS5(const char *proxy_name,
     len += proxy_password_len;
 
     code = Curl_write_plain(conn, sock, (char *)socksreq, len, &written);
     len += proxy_password_len;
 
     code = Curl_write_plain(conn, sock, (char *)socksreq, len, &written);
-    if((code != CURLE_OK) || (len != written)) {
+    if(code || (len != written)) {
       failf(data, "Failed to send SOCKS5 sub-negotiation request.");
       return CURLE_COULDNT_CONNECT;
     }
 
     result=Curl_blockread_all(conn, sock, (char *)socksreq, 2, &actualread);
       failf(data, "Failed to send SOCKS5 sub-negotiation request.");
       return CURLE_COULDNT_CONNECT;
     }
 
     result=Curl_blockread_all(conn, sock, (char *)socksreq, 2, &actualread);
-    if((result != CURLE_OK) || (actualread != 2)) {
+    if(result || (actualread != 2)) {
       failf(data, "Unable to receive SOCKS5 sub-negotiation response.");
       return CURLE_COULDNT_CONNECT;
     }
       failf(data, "Unable to receive SOCKS5 sub-negotiation response.");
       return CURLE_COULDNT_CONNECT;
     }
@@ -579,7 +583,7 @@ CURLcode Curl_SOCKS5(const char *proxy_name,
     if(rc == CURLRESOLV_PENDING) {
       /* this requires that we're in "wait for resolve" state */
       code = Curl_resolver_wait_resolv(conn, &dns);
     if(rc == CURLRESOLV_PENDING) {
       /* this requires that we're in "wait for resolve" state */
       code = Curl_resolver_wait_resolv(conn, &dns);
-      if(code != CURLE_OK)
+      if(code)
         return code;
     }
 
         return code;
     }
 
@@ -632,13 +636,13 @@ CURLcode Curl_SOCKS5(const char *proxy_name,
 
 #if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
   if(conn->socks5_gssapi_enctype) {
 
 #if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
   if(conn->socks5_gssapi_enctype) {
-    failf(data, "SOCKS5 gssapi protection not yet implemented.");
+    failf(data, "SOCKS5 GSS-API protection not yet implemented.");
   }
   else
 #endif
     code = Curl_write_plain(conn, sock, (char *)socksreq, len, &written);
 
   }
   else
 #endif
     code = Curl_write_plain(conn, sock, (char *)socksreq, len, &written);
 
-  if((code != CURLE_OK) || (len != written)) {
+  if(code || (len != written)) {
     failf(data, "Failed to send SOCKS5 connect request.");
     return CURLE_COULDNT_CONNECT;
   }
     failf(data, "Failed to send SOCKS5 connect request.");
     return CURLE_COULDNT_CONNECT;
   }
@@ -647,14 +651,14 @@ CURLcode Curl_SOCKS5(const char *proxy_name,
 
 #if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
   if(conn->socks5_gssapi_enctype) {
 
 #if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
   if(conn->socks5_gssapi_enctype) {
-    failf(data, "SOCKS5 gssapi protection not yet implemented.");
+    failf(data, "SOCKS5 GSS-API protection not yet implemented.");
   }
   else
 #endif
     result = Curl_blockread_all(conn, sock, (char *)socksreq,
                                 len, &actualread);
 
   }
   else
 #endif
     result = Curl_blockread_all(conn, sock, (char *)socksreq,
                                 len, &actualread);
 
-  if((result != CURLE_OK) || (len != actualread)) {
+  if(result || (len != actualread)) {
     failf(data, "Failed to receive SOCKS5 connect request ack.");
     return CURLE_COULDNT_CONNECT;
   }
     failf(data, "Failed to receive SOCKS5 connect request ack.");
     return CURLE_COULDNT_CONNECT;
   }
@@ -734,7 +738,7 @@ CURLcode Curl_SOCKS5(const char *proxy_name,
       len -= 10;
       result = Curl_blockread_all(conn, sock, (char *)&socksreq[10],
                                   len, &actualread);
       len -= 10;
       result = Curl_blockread_all(conn, sock, (char *)&socksreq[10],
                                   len, &actualread);
-      if((result != CURLE_OK) || (len != actualread)) {
+      if(result || (len != actualread)) {
         failf(data, "Failed to receive SOCKS5 connect request ack.");
         return CURLE_COULDNT_CONNECT;
       }
         failf(data, "Failed to receive SOCKS5 connect request ack.");
         return CURLE_COULDNT_CONNECT;
       }
@@ -743,7 +747,7 @@ CURLcode Curl_SOCKS5(const char *proxy_name,
   }
 #endif
 
   }
 #endif
 
-  curlx_nonblock(sock, TRUE);
+  (void)curlx_nonblock(sock, TRUE);
   return CURLE_OK; /* Proxy was successful! */
 }
 
   return CURLE_OK; /* Proxy was successful! */
 }
 
index dc4670b..29e3bf0 100644 (file)
@@ -65,7 +65,7 @@ CURLcode Curl_SOCKS5(const char *proxy_name,
 
 #if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
 /*
 
 #if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
 /*
- * This function handles the sockss5 gssapie negotiation and initialisation
+ * This function handles the SOCKS5 GSS-API negotiation and initialisation
  */
 CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
                                       struct connectdata *conn);
  */
 CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
                                       struct connectdata *conn);
index 1f840bd..f195c1a 100644 (file)
@@ -6,7 +6,7 @@
  *                             \___|\___/|_| \_\_____|
  *
  * Copyright (C) 2009, 2011, Markus Moeller, <markus_moeller@compuserve.com>
  *                             \___|\___/|_| \_\_____|
  *
  * Copyright (C) 2009, 2011, Markus Moeller, <markus_moeller@compuserve.com>
- * Copyright (C) 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -52,7 +52,7 @@
 static gss_ctx_id_t gss_context = GSS_C_NO_CONTEXT;
 
 /*
 static gss_ctx_id_t gss_context = GSS_C_NO_CONTEXT;
 
 /*
- * Helper gssapi error functions.
+ * Helper GSS-API error functions.
  */
 static int check_gss_err(struct SessionHandle *data,
                          OM_uint32 major_status,
  */
 static int check_gss_err(struct SessionHandle *data,
                          OM_uint32 major_status,
@@ -103,7 +103,7 @@ static int check_gss_err(struct SessionHandle *data,
       }
       gss_release_buffer(&min_stat, &status_string);
     }
       }
       gss_release_buffer(&min_stat, &status_string);
     }
-    failf(data, "GSSAPI error: %s failed:\n%s", function, buf);
+    failf(data, "GSS-API error: %s failed:\n%s", function, buf);
     return(1);
   }
 
     return(1);
   }
 
@@ -131,10 +131,10 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
   gss_name_t       gss_client_name = GSS_C_NO_NAME;
   unsigned short   us_length;
   char             *user=NULL;
   gss_name_t       gss_client_name = GSS_C_NO_NAME;
   unsigned short   us_length;
   char             *user=NULL;
-  unsigned char socksreq[4]; /* room for gssapi exchange header only */
+  unsigned char socksreq[4]; /* room for GSS-API exchange header only */
   char *serviceptr = data->set.str[STRING_SOCKS5_GSSAPI_SERVICE];
 
   char *serviceptr = data->set.str[STRING_SOCKS5_GSSAPI_SERVICE];
 
-  /*   GSSAPI request looks like
+  /*   GSS-API request looks like
    * +----+------+-----+----------------+
    * |VER | MTYP | LEN |     TOKEN      |
    * +----+------+----------------------+
    * +----+------+-----+----------------+
    * |VER | MTYP | LEN |     TOKEN      |
    * +----+------+----------------------+
@@ -181,9 +181,11 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
                                                  &gss_minor_status,
                                                  &gss_context,
                                                  server,
                                                  &gss_minor_status,
                                                  &gss_context,
                                                  server,
+                                                 &Curl_krb5_mech_oid,
                                                  NULL,
                                                  gss_token,
                                                  &gss_send_token,
                                                  NULL,
                                                  gss_token,
                                                  &gss_send_token,
+                                                 TRUE,
                                                  &gss_ret_flags);
 
     if(gss_token != GSS_C_NO_BUFFER)
                                                  &gss_ret_flags);
 
     if(gss_token != GSS_C_NO_BUFFER)
@@ -194,19 +196,19 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
       gss_release_buffer(&gss_status, &gss_recv_token);
       gss_release_buffer(&gss_status, &gss_send_token);
       gss_delete_sec_context(&gss_status, &gss_context, NULL);
       gss_release_buffer(&gss_status, &gss_recv_token);
       gss_release_buffer(&gss_status, &gss_send_token);
       gss_delete_sec_context(&gss_status, &gss_context, NULL);
-      failf(data, "Failed to initial GSSAPI token.");
+      failf(data, "Failed to initial GSS-API token.");
       return CURLE_COULDNT_CONNECT;
     }
 
     if(gss_send_token.length != 0) {
       return CURLE_COULDNT_CONNECT;
     }
 
     if(gss_send_token.length != 0) {
-      socksreq[0] = 1;    /* gssapi subnegotiation version */
+      socksreq[0] = 1;    /* GSS-API subnegotiation version */
       socksreq[1] = 1;    /* authentication message type */
       us_length = htons((short)gss_send_token.length);
       memcpy(socksreq+2,&us_length,sizeof(short));
 
       code = Curl_write_plain(conn, sock, (char *)socksreq, 4, &written);
       socksreq[1] = 1;    /* authentication message type */
       us_length = htons((short)gss_send_token.length);
       memcpy(socksreq+2,&us_length,sizeof(short));
 
       code = Curl_write_plain(conn, sock, (char *)socksreq, 4, &written);
-      if((code != CURLE_OK) || (4 != written)) {
-        failf(data, "Failed to send GSSAPI authentication request.");
+      if(code || (4 != written)) {
+        failf(data, "Failed to send GSS-API authentication request.");
         gss_release_name(&gss_status, &server);
         gss_release_buffer(&gss_status, &gss_recv_token);
         gss_release_buffer(&gss_status, &gss_send_token);
         gss_release_name(&gss_status, &server);
         gss_release_buffer(&gss_status, &gss_recv_token);
         gss_release_buffer(&gss_status, &gss_send_token);
@@ -217,8 +219,8 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
       code = Curl_write_plain(conn, sock, (char *)gss_send_token.value,
                               gss_send_token.length, &written);
 
       code = Curl_write_plain(conn, sock, (char *)gss_send_token.value,
                               gss_send_token.length, &written);
 
-      if((code != CURLE_OK) || ((ssize_t)gss_send_token.length != written)) {
-        failf(data, "Failed to send GSSAPI authentication token.");
+      if(code || ((ssize_t)gss_send_token.length != written)) {
+        failf(data, "Failed to send GSS-API authentication token.");
         gss_release_name(&gss_status, &server);
         gss_release_buffer(&gss_status, &gss_recv_token);
         gss_release_buffer(&gss_status, &gss_send_token);
         gss_release_name(&gss_status, &server);
         gss_release_buffer(&gss_status, &gss_recv_token);
         gss_release_buffer(&gss_status, &gss_send_token);
@@ -234,7 +236,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
 
     /* analyse response */
 
 
     /* analyse response */
 
-    /*   GSSAPI response looks like
+    /*   GSS-API response looks like
      * +----+------+-----+----------------+
      * |VER | MTYP | LEN |     TOKEN      |
      * +----+------+----------------------+
      * +----+------+-----+----------------+
      * |VER | MTYP | LEN |     TOKEN      |
      * +----+------+----------------------+
@@ -243,8 +245,8 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
      */
 
     result=Curl_blockread_all(conn, sock, (char *)socksreq, 4, &actualread);
      */
 
     result=Curl_blockread_all(conn, sock, (char *)socksreq, 4, &actualread);
-    if(result != CURLE_OK || actualread != 4) {
-      failf(data, "Failed to receive GSSAPI authentication response.");
+    if(result || (actualread != 4)) {
+      failf(data, "Failed to receive GSS-API authentication response.");
       gss_release_name(&gss_status, &server);
       gss_delete_sec_context(&gss_status, &gss_context, NULL);
       return CURLE_COULDNT_CONNECT;
       gss_release_name(&gss_status, &server);
       gss_delete_sec_context(&gss_status, &gss_context, NULL);
       return CURLE_COULDNT_CONNECT;
@@ -260,7 +262,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
     }
 
     if(socksreq[1] != 1) { /* status / messgae type */
     }
 
     if(socksreq[1] != 1) { /* status / messgae type */
-      failf(data, "Invalid GSSAPI authentication response type (%d %d).",
+      failf(data, "Invalid GSS-API authentication response type (%d %d).",
             socksreq[0], socksreq[1]);
       gss_release_name(&gss_status, &server);
       gss_delete_sec_context(&gss_status, &gss_context, NULL);
             socksreq[0], socksreq[1]);
       gss_release_name(&gss_status, &server);
       gss_delete_sec_context(&gss_status, &gss_context, NULL);
@@ -274,7 +276,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
     gss_recv_token.value=malloc(us_length);
     if(!gss_recv_token.value) {
       failf(data,
     gss_recv_token.value=malloc(us_length);
     if(!gss_recv_token.value) {
       failf(data,
-            "Could not allocate memory for GSSAPI authentication "
+            "Could not allocate memory for GSS-API authentication "
             "response token.");
       gss_release_name(&gss_status, &server);
       gss_delete_sec_context(&gss_status, &gss_context, NULL);
             "response token.");
       gss_release_name(&gss_status, &server);
       gss_delete_sec_context(&gss_status, &gss_context, NULL);
@@ -284,8 +286,8 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
     result=Curl_blockread_all(conn, sock, (char *)gss_recv_token.value,
                               gss_recv_token.length, &actualread);
 
     result=Curl_blockread_all(conn, sock, (char *)gss_recv_token.value,
                               gss_recv_token.length, &actualread);
 
-    if(result != CURLE_OK || actualread != us_length) {
-      failf(data, "Failed to receive GSSAPI authentication token.");
+    if(result || (actualread != us_length)) {
+      failf(data, "Failed to receive GSS-API authentication token.");
       gss_release_name(&gss_status, &server);
       gss_release_buffer(&gss_status, &gss_recv_token);
       gss_delete_sec_context(&gss_status, &gss_context, NULL);
       gss_release_name(&gss_status, &server);
       gss_release_buffer(&gss_status, &gss_recv_token);
       gss_delete_sec_context(&gss_status, &gss_context, NULL);
@@ -330,12 +332,12 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
   user[gss_send_token.length] = '\0';
   gss_release_name(&gss_status, &gss_client_name);
   gss_release_buffer(&gss_status, &gss_send_token);
   user[gss_send_token.length] = '\0';
   gss_release_name(&gss_status, &gss_client_name);
   gss_release_buffer(&gss_status, &gss_send_token);
-  infof(data, "SOCKS5 server authencticated user %s with gssapi.\n",user);
+  infof(data, "SOCKS5 server authencticated user %s with GSS-API.\n",user);
   free(user);
   user=NULL;
 
   /* Do encryption */
   free(user);
   user=NULL;
 
   /* Do encryption */
-  socksreq[0] = 1;    /* gssapi subnegotiation version */
+  socksreq[0] = 1;    /* GSS-API subnegotiation version */
   socksreq[1] = 2;    /* encryption message type */
 
   gss_enc = 0; /* no data protection */
   socksreq[1] = 2;    /* encryption message type */
 
   gss_enc = 0; /* no data protection */
@@ -346,7 +348,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
   else if(gss_ret_flags & GSS_C_INTEG_FLAG)
     gss_enc = 1;
 
   else if(gss_ret_flags & GSS_C_INTEG_FLAG)
     gss_enc = 1;
 
-  infof(data, "SOCKS5 server supports gssapi %s data protection.\n",
+  infof(data, "SOCKS5 server supports GSS-API %s data protection.\n",
         (gss_enc==0)?"no":((gss_enc==1)?"integrity":"confidentiality"));
   /* force for the moment to no data protection */
   gss_enc = 0;
         (gss_enc==0)?"no":((gss_enc==1)?"integrity":"confidentiality"));
   /* force for the moment to no data protection */
   gss_enc = 0;
@@ -401,7 +403,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
       gss_release_buffer(&gss_status, &gss_send_token);
       gss_release_buffer(&gss_status, &gss_w_token);
       gss_delete_sec_context(&gss_status, &gss_context, NULL);
       gss_release_buffer(&gss_status, &gss_send_token);
       gss_release_buffer(&gss_status, &gss_w_token);
       gss_delete_sec_context(&gss_status, &gss_context, NULL);
-      failf(data, "Failed to wrap GSSAPI encryption value into token.");
+      failf(data, "Failed to wrap GSS-API encryption value into token.");
       return CURLE_COULDNT_CONNECT;
     }
     gss_release_buffer(&gss_status, &gss_send_token);
       return CURLE_COULDNT_CONNECT;
     }
     gss_release_buffer(&gss_status, &gss_send_token);
@@ -411,8 +413,8 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
   }
 
   code = Curl_write_plain(conn, sock, (char *)socksreq, 4, &written);
   }
 
   code = Curl_write_plain(conn, sock, (char *)socksreq, 4, &written);
-  if((code != CURLE_OK) || (4 != written)) {
-    failf(data, "Failed to send GSSAPI encryption request.");
+  if(code  || (4 != written)) {
+    failf(data, "Failed to send GSS-API encryption request.");
     gss_release_buffer(&gss_status, &gss_w_token);
     gss_delete_sec_context(&gss_status, &gss_context, NULL);
     return CURLE_COULDNT_CONNECT;
     gss_release_buffer(&gss_status, &gss_w_token);
     gss_delete_sec_context(&gss_status, &gss_context, NULL);
     return CURLE_COULDNT_CONNECT;
@@ -421,8 +423,8 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
   if(data->set.socks5_gssapi_nec) {
     memcpy(socksreq, &gss_enc, 1);
     code = Curl_write_plain(conn, sock, socksreq, 1, &written);
   if(data->set.socks5_gssapi_nec) {
     memcpy(socksreq, &gss_enc, 1);
     code = Curl_write_plain(conn, sock, socksreq, 1, &written);
-    if((code != CURLE_OK) || ( 1 != written)) {
-      failf(data, "Failed to send GSSAPI encryption type.");
+    if(code || ( 1 != written)) {
+      failf(data, "Failed to send GSS-API encryption type.");
       gss_delete_sec_context(&gss_status, &gss_context, NULL);
       return CURLE_COULDNT_CONNECT;
     }
       gss_delete_sec_context(&gss_status, &gss_context, NULL);
       return CURLE_COULDNT_CONNECT;
     }
@@ -430,8 +432,8 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
   else {
     code = Curl_write_plain(conn, sock, (char *)gss_w_token.value,
                             gss_w_token.length, &written);
   else {
     code = Curl_write_plain(conn, sock, (char *)gss_w_token.value,
                             gss_w_token.length, &written);
-    if((code != CURLE_OK) || ((ssize_t)gss_w_token.length != written)) {
-      failf(data, "Failed to send GSSAPI encryption type.");
+    if(code || ((ssize_t)gss_w_token.length != written)) {
+      failf(data, "Failed to send GSS-API encryption type.");
       gss_release_buffer(&gss_status, &gss_w_token);
       gss_delete_sec_context(&gss_status, &gss_context, NULL);
       return CURLE_COULDNT_CONNECT;
       gss_release_buffer(&gss_status, &gss_w_token);
       gss_delete_sec_context(&gss_status, &gss_context, NULL);
       return CURLE_COULDNT_CONNECT;
@@ -440,8 +442,8 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
   }
 
   result=Curl_blockread_all(conn, sock, (char *)socksreq, 4, &actualread);
   }
 
   result=Curl_blockread_all(conn, sock, (char *)socksreq, 4, &actualread);
-  if(result != CURLE_OK || actualread != 4) {
-    failf(data, "Failed to receive GSSAPI encryption response.");
+  if(result || (actualread != 4)) {
+    failf(data, "Failed to receive GSS-API encryption response.");
     gss_delete_sec_context(&gss_status, &gss_context, NULL);
     return CURLE_COULDNT_CONNECT;
   }
     gss_delete_sec_context(&gss_status, &gss_context, NULL);
     return CURLE_COULDNT_CONNECT;
   }
@@ -455,7 +457,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
   }
 
   if(socksreq[1] != 2) { /* status / messgae type */
   }
 
   if(socksreq[1] != 2) { /* status / messgae type */
-    failf(data, "Invalid GSSAPI encryption response type (%d %d).",
+    failf(data, "Invalid GSS-API encryption response type (%d %d).",
           socksreq[0], socksreq[1]);
     gss_delete_sec_context(&gss_status, &gss_context, NULL);
     return CURLE_COULDNT_CONNECT;
           socksreq[0], socksreq[1]);
     gss_delete_sec_context(&gss_status, &gss_context, NULL);
     return CURLE_COULDNT_CONNECT;
@@ -473,8 +475,8 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
   result=Curl_blockread_all(conn, sock, (char *)gss_recv_token.value,
                             gss_recv_token.length, &actualread);
 
   result=Curl_blockread_all(conn, sock, (char *)gss_recv_token.value,
                             gss_recv_token.length, &actualread);
 
-  if(result != CURLE_OK || actualread != us_length) {
-    failf(data, "Failed to receive GSSAPI encryptrion type.");
+  if(result || (actualread != us_length)) {
+    failf(data, "Failed to receive GSS-API encryptrion type.");
     gss_release_buffer(&gss_status, &gss_recv_token);
     gss_delete_sec_context(&gss_status, &gss_context, NULL);
     return CURLE_COULDNT_CONNECT;
     gss_release_buffer(&gss_status, &gss_recv_token);
     gss_delete_sec_context(&gss_status, &gss_context, NULL);
     return CURLE_COULDNT_CONNECT;
@@ -489,13 +491,13 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
       gss_release_buffer(&gss_status, &gss_recv_token);
       gss_release_buffer(&gss_status, &gss_w_token);
       gss_delete_sec_context(&gss_status, &gss_context, NULL);
       gss_release_buffer(&gss_status, &gss_recv_token);
       gss_release_buffer(&gss_status, &gss_w_token);
       gss_delete_sec_context(&gss_status, &gss_context, NULL);
-      failf(data, "Failed to unwrap GSSAPI encryption value into token.");
+      failf(data, "Failed to unwrap GSS-API encryption value into token.");
       return CURLE_COULDNT_CONNECT;
     }
     gss_release_buffer(&gss_status, &gss_recv_token);
 
     if(gss_w_token.length != 1) {
       return CURLE_COULDNT_CONNECT;
     }
     gss_release_buffer(&gss_status, &gss_recv_token);
 
     if(gss_w_token.length != 1) {
-      failf(data, "Invalid GSSAPI encryption response length (%d).",
+      failf(data, "Invalid GSS-API encryption response length (%d).",
             gss_w_token.length);
       gss_release_buffer(&gss_status, &gss_w_token);
       gss_delete_sec_context(&gss_status, &gss_context, NULL);
             gss_w_token.length);
       gss_release_buffer(&gss_status, &gss_w_token);
       gss_delete_sec_context(&gss_status, &gss_context, NULL);
@@ -507,7 +509,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
   }
   else {
     if(gss_recv_token.length != 1) {
   }
   else {
     if(gss_recv_token.length != 1) {
-      failf(data, "Invalid GSSAPI encryption response length (%d).",
+      failf(data, "Invalid GSS-API encryption response length (%d).",
             gss_recv_token.length);
       gss_release_buffer(&gss_status, &gss_recv_token);
       gss_delete_sec_context(&gss_status, &gss_context, NULL);
             gss_recv_token.length);
       gss_release_buffer(&gss_status, &gss_recv_token);
       gss_delete_sec_context(&gss_status, &gss_context, NULL);
@@ -519,8 +521,8 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
   }
 
   infof(data, "SOCKS5 access with%s protection granted.\n",
   }
 
   infof(data, "SOCKS5 access with%s protection granted.\n",
-        (socksreq[0]==0)?"out gssapi data":
-        ((socksreq[0]==1)?" gssapi integrity":" gssapi confidentiality"));
+        (socksreq[0]==0)?"out GSS-API data":
+        ((socksreq[0]==1)?" GSS-API integrity":" GSS-API confidentiality"));
 
   conn->socks5_gssapi_enctype = socksreq[0];
   if(socksreq[0] == 0)
 
   conn->socks5_gssapi_enctype = socksreq[0];
   if(socksreq[0] == 0)
index 0313de3..0158627 100644 (file)
@@ -6,7 +6,7 @@
  *                             \___|\___/|_| \_\_____|
  *
  * Copyright (C) 2009, 2011, Markus Moeller, <markus_moeller@compuserve.com>
  *                             \___|\___/|_| \_\_____|
  *
  * Copyright (C) 2009, 2011, Markus Moeller, <markus_moeller@compuserve.com>
- * Copyright (C) 2012 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "memdebug.h"
 
 /*
 #include "memdebug.h"
 
 /*
- * Definitions required from ntsecapi.h are directly provided below this point
- * to avoid including ntsecapi.h due to a conflict with OpenSSL's safestack.h
- */
-#define KERB_WRAP_NO_ENCRYPT 0x80000001
-
-/*
  * Helper sspi error functions.
  */
 static int check_sspi_err(struct connectdata *conn,
  * Helper sspi error functions.
  */
 static int check_sspi_err(struct connectdata *conn,
@@ -76,7 +70,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
   ssize_t actualread;
   ssize_t written;
   int result;
   ssize_t actualread;
   ssize_t written;
   int result;
-  /* Needs GSSAPI authentication */
+  /* Needs GSS-API authentication */
   SECURITY_STATUS status;
   unsigned long sspi_ret_flags = 0;
   int gss_enc;
   SECURITY_STATUS status;
   unsigned long sspi_ret_flags = 0;
   int gss_enc;
@@ -91,10 +85,10 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
   char *service_name = NULL;
   unsigned short us_length;
   unsigned long qop;
   char *service_name = NULL;
   unsigned short us_length;
   unsigned long qop;
-  unsigned char socksreq[4]; /* room for gssapi exchange header only */
+  unsigned char socksreq[4]; /* room for GSS-API exchange header only */
   char *service = data->set.str[STRING_SOCKS5_GSSAPI_SERVICE];
 
   char *service = data->set.str[STRING_SOCKS5_GSSAPI_SERVICE];
 
-  /*   GSSAPI request looks like
+  /*   GSS-API request looks like
    * +----+------+-----+----------------+
    * |VER | MTYP | LEN |     TOKEN      |
    * +----+------+----------------------+
    * +----+------+-----+----------------+
    * |VER | MTYP | LEN |     TOKEN      |
    * +----+------+----------------------+
@@ -194,23 +188,26 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
       Curl_safefree(service_name);
       s_pSecFn->FreeCredentialsHandle(&cred_handle);
       s_pSecFn->DeleteSecurityContext(&sspi_context);
       Curl_safefree(service_name);
       s_pSecFn->FreeCredentialsHandle(&cred_handle);
       s_pSecFn->DeleteSecurityContext(&sspi_context);
-      s_pSecFn->FreeContextBuffer(sspi_recv_token.pvBuffer);
+      if(sspi_recv_token.pvBuffer)
+        s_pSecFn->FreeContextBuffer(sspi_recv_token.pvBuffer);
       failf(data, "Failed to initialise security context.");
       return CURLE_COULDNT_CONNECT;
     }
 
     if(sspi_send_token.cbBuffer != 0) {
       failf(data, "Failed to initialise security context.");
       return CURLE_COULDNT_CONNECT;
     }
 
     if(sspi_send_token.cbBuffer != 0) {
-      socksreq[0] = 1;    /* gssapi subnegotiation version */
+      socksreq[0] = 1;    /* GSS-API subnegotiation version */
       socksreq[1] = 1;    /* authentication message type */
       us_length = htons((short)sspi_send_token.cbBuffer);
       memcpy(socksreq+2, &us_length, sizeof(short));
 
       code = Curl_write_plain(conn, sock, (char *)socksreq, 4, &written);
       socksreq[1] = 1;    /* authentication message type */
       us_length = htons((short)sspi_send_token.cbBuffer);
       memcpy(socksreq+2, &us_length, sizeof(short));
 
       code = Curl_write_plain(conn, sock, (char *)socksreq, 4, &written);
-      if((code != CURLE_OK) || (4 != written)) {
+      if(code || (4 != written)) {
         failf(data, "Failed to send SSPI authentication request.");
         Curl_safefree(service_name);
         failf(data, "Failed to send SSPI authentication request.");
         Curl_safefree(service_name);
-        s_pSecFn->FreeContextBuffer(sspi_send_token.pvBuffer);
-        s_pSecFn->FreeContextBuffer(sspi_recv_token.pvBuffer);
+        if(sspi_send_token.pvBuffer)
+          s_pSecFn->FreeContextBuffer(sspi_send_token.pvBuffer);
+        if(sspi_recv_token.pvBuffer)
+          s_pSecFn->FreeContextBuffer(sspi_recv_token.pvBuffer);
         s_pSecFn->FreeCredentialsHandle(&cred_handle);
         s_pSecFn->DeleteSecurityContext(&sspi_context);
         return CURLE_COULDNT_CONNECT;
         s_pSecFn->FreeCredentialsHandle(&cred_handle);
         s_pSecFn->DeleteSecurityContext(&sspi_context);
         return CURLE_COULDNT_CONNECT;
@@ -218,11 +215,13 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
 
       code = Curl_write_plain(conn, sock, (char *)sspi_send_token.pvBuffer,
                               sspi_send_token.cbBuffer, &written);
 
       code = Curl_write_plain(conn, sock, (char *)sspi_send_token.pvBuffer,
                               sspi_send_token.cbBuffer, &written);
-      if((code != CURLE_OK) || (sspi_send_token.cbBuffer != (size_t)written)) {
+      if(code || (sspi_send_token.cbBuffer != (size_t)written)) {
         failf(data, "Failed to send SSPI authentication token.");
         Curl_safefree(service_name);
         failf(data, "Failed to send SSPI authentication token.");
         Curl_safefree(service_name);
-        s_pSecFn->FreeContextBuffer(sspi_send_token.pvBuffer);
-        s_pSecFn->FreeContextBuffer(sspi_recv_token.pvBuffer);
+        if(sspi_send_token.pvBuffer)
+          s_pSecFn->FreeContextBuffer(sspi_send_token.pvBuffer);
+        if(sspi_recv_token.pvBuffer)
+          s_pSecFn->FreeContextBuffer(sspi_recv_token.pvBuffer);
         s_pSecFn->FreeCredentialsHandle(&cred_handle);
         s_pSecFn->DeleteSecurityContext(&sspi_context);
         return CURLE_COULDNT_CONNECT;
         s_pSecFn->FreeCredentialsHandle(&cred_handle);
         s_pSecFn->DeleteSecurityContext(&sspi_context);
         return CURLE_COULDNT_CONNECT;
@@ -230,18 +229,24 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
 
     }
 
 
     }
 
-    s_pSecFn->FreeContextBuffer(sspi_send_token.pvBuffer);
-    sspi_send_token.pvBuffer = NULL;
+    if(sspi_send_token.pvBuffer) {
+      s_pSecFn->FreeContextBuffer(sspi_send_token.pvBuffer);
+      sspi_send_token.pvBuffer = NULL;
+    }
     sspi_send_token.cbBuffer = 0;
     sspi_send_token.cbBuffer = 0;
-    s_pSecFn->FreeContextBuffer(sspi_recv_token.pvBuffer);
-    sspi_recv_token.pvBuffer = NULL;
+
+    if(sspi_recv_token.pvBuffer) {
+      s_pSecFn->FreeContextBuffer(sspi_recv_token.pvBuffer);
+      sspi_recv_token.pvBuffer = NULL;
+    }
     sspi_recv_token.cbBuffer = 0;
     sspi_recv_token.cbBuffer = 0;
+
     if(status != SEC_I_CONTINUE_NEEDED)
       break;
 
     /* analyse response */
 
     if(status != SEC_I_CONTINUE_NEEDED)
       break;
 
     /* analyse response */
 
-    /*   GSSAPI response looks like
+    /*   GSS-API response looks like
      * +----+------+-----+----------------+
      * |VER | MTYP | LEN |     TOKEN      |
      * +----+------+----------------------+
      * +----+------+-----+----------------+
      * |VER | MTYP | LEN |     TOKEN      |
      * +----+------+----------------------+
@@ -250,7 +255,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
      */
 
     result = Curl_blockread_all(conn, sock, (char *)socksreq, 4, &actualread);
      */
 
     result = Curl_blockread_all(conn, sock, (char *)socksreq, 4, &actualread);
-    if(result != CURLE_OK || actualread != 4) {
+    if(result || (actualread != 4)) {
       failf(data, "Failed to receive SSPI authentication response.");
       Curl_safefree(service_name);
       s_pSecFn->FreeCredentialsHandle(&cred_handle);
       failf(data, "Failed to receive SSPI authentication response.");
       Curl_safefree(service_name);
       s_pSecFn->FreeCredentialsHandle(&cred_handle);
@@ -292,10 +297,11 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
     result = Curl_blockread_all(conn, sock, (char *)sspi_recv_token.pvBuffer,
                                 sspi_recv_token.cbBuffer, &actualread);
 
     result = Curl_blockread_all(conn, sock, (char *)sspi_recv_token.pvBuffer,
                                 sspi_recv_token.cbBuffer, &actualread);
 
-    if(result != CURLE_OK || actualread != us_length) {
+    if(result || (actualread != us_length)) {
       failf(data, "Failed to receive SSPI authentication token.");
       Curl_safefree(service_name);
       failf(data, "Failed to receive SSPI authentication token.");
       Curl_safefree(service_name);
-      s_pSecFn->FreeContextBuffer(sspi_recv_token.pvBuffer);
+      if(sspi_recv_token.pvBuffer)
+        s_pSecFn->FreeContextBuffer(sspi_recv_token.pvBuffer);
       s_pSecFn->FreeCredentialsHandle(&cred_handle);
       s_pSecFn->DeleteSecurityContext(&sspi_context);
       return CURLE_COULDNT_CONNECT;
       s_pSecFn->FreeCredentialsHandle(&cred_handle);
       s_pSecFn->DeleteSecurityContext(&sspi_context);
       return CURLE_COULDNT_CONNECT;
@@ -317,12 +323,12 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
     failf(data, "Failed to determine user name.");
     return CURLE_COULDNT_CONNECT;
   }
     failf(data, "Failed to determine user name.");
     return CURLE_COULDNT_CONNECT;
   }
-  infof(data, "SOCKS5 server authencticated user %s with gssapi.\n",
+  infof(data, "SOCKS5 server authencticated user %s with GSS-API.\n",
         names.sUserName);
   s_pSecFn->FreeContextBuffer(names.sUserName);
 
   /* Do encryption */
         names.sUserName);
   s_pSecFn->FreeContextBuffer(names.sUserName);
 
   /* Do encryption */
-  socksreq[0] = 1;    /* gssapi subnegotiation version */
+  socksreq[0] = 1;    /* GSS-API subnegotiation version */
   socksreq[1] = 2;    /* encryption message type */
 
   gss_enc = 0; /* no data protection */
   socksreq[1] = 2;    /* encryption message type */
 
   gss_enc = 0; /* no data protection */
@@ -333,7 +339,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
   else if(sspi_ret_flags & ISC_REQ_INTEGRITY)
     gss_enc = 1;
 
   else if(sspi_ret_flags & ISC_REQ_INTEGRITY)
     gss_enc = 1;
 
-  infof(data, "SOCKS5 server supports gssapi %s data protection.\n",
+  infof(data, "SOCKS5 server supports GSS-API %s data protection.\n",
         (gss_enc==0)?"no":((gss_enc==1)?"integrity":"confidentiality") );
   /* force to no data protection, avoid encryption/decryption for now */
   gss_enc = 0;
         (gss_enc==0)?"no":((gss_enc==1)?"integrity":"confidentiality") );
   /* force to no data protection, avoid encryption/decryption for now */
   gss_enc = 0;
@@ -457,9 +463,10 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
   }
 
   code = Curl_write_plain(conn, sock, (char *)socksreq, 4, &written);
   }
 
   code = Curl_write_plain(conn, sock, (char *)socksreq, 4, &written);
-  if((code != CURLE_OK) || (4 != written)) {
+  if(code || (4 != written)) {
     failf(data, "Failed to send SSPI encryption request.");
     failf(data, "Failed to send SSPI encryption request.");
-    s_pSecFn->FreeContextBuffer(sspi_send_token.pvBuffer);
+    if(sspi_send_token.pvBuffer)
+      s_pSecFn->FreeContextBuffer(sspi_send_token.pvBuffer);
     s_pSecFn->DeleteSecurityContext(&sspi_context);
     return CURLE_COULDNT_CONNECT;
   }
     s_pSecFn->DeleteSecurityContext(&sspi_context);
     return CURLE_COULDNT_CONNECT;
   }
@@ -467,7 +474,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
   if(data->set.socks5_gssapi_nec) {
     memcpy(socksreq,&gss_enc,1);
     code = Curl_write_plain(conn, sock, (char *)socksreq, 1, &written);
   if(data->set.socks5_gssapi_nec) {
     memcpy(socksreq,&gss_enc,1);
     code = Curl_write_plain(conn, sock, (char *)socksreq, 1, &written);
-    if((code != CURLE_OK) || (1 != written)) {
+    if(code || (1 != written)) {
       failf(data, "Failed to send SSPI encryption type.");
       s_pSecFn->DeleteSecurityContext(&sspi_context);
       return CURLE_COULDNT_CONNECT;
       failf(data, "Failed to send SSPI encryption type.");
       s_pSecFn->DeleteSecurityContext(&sspi_context);
       return CURLE_COULDNT_CONNECT;
@@ -476,17 +483,19 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
   else {
     code = Curl_write_plain(conn, sock, (char *)sspi_send_token.pvBuffer,
                             sspi_send_token.cbBuffer, &written);
   else {
     code = Curl_write_plain(conn, sock, (char *)sspi_send_token.pvBuffer,
                             sspi_send_token.cbBuffer, &written);
-    if((code != CURLE_OK) || (sspi_send_token.cbBuffer != (size_t)written)) {
+    if(code || (sspi_send_token.cbBuffer != (size_t)written)) {
       failf(data, "Failed to send SSPI encryption type.");
       failf(data, "Failed to send SSPI encryption type.");
-      s_pSecFn->FreeContextBuffer(sspi_send_token.pvBuffer);
+      if(sspi_send_token.pvBuffer)
+        s_pSecFn->FreeContextBuffer(sspi_send_token.pvBuffer);
       s_pSecFn->DeleteSecurityContext(&sspi_context);
       return CURLE_COULDNT_CONNECT;
     }
       s_pSecFn->DeleteSecurityContext(&sspi_context);
       return CURLE_COULDNT_CONNECT;
     }
-    s_pSecFn->FreeContextBuffer(sspi_send_token.pvBuffer);
+    if(sspi_send_token.pvBuffer)
+      s_pSecFn->FreeContextBuffer(sspi_send_token.pvBuffer);
   }
 
   result = Curl_blockread_all(conn, sock, (char *)socksreq, 4, &actualread);
   }
 
   result = Curl_blockread_all(conn, sock, (char *)socksreq, 4, &actualread);
-  if(result != CURLE_OK || actualread != 4) {
+  if(result || (actualread != 4)) {
     failf(data, "Failed to receive SSPI encryption response.");
     s_pSecFn->DeleteSecurityContext(&sspi_context);
     return CURLE_COULDNT_CONNECT;
     failf(data, "Failed to receive SSPI encryption response.");
     s_pSecFn->DeleteSecurityContext(&sspi_context);
     return CURLE_COULDNT_CONNECT;
@@ -520,7 +529,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
   result = Curl_blockread_all(conn, sock, (char *)sspi_w_token[0].pvBuffer,
                               sspi_w_token[0].cbBuffer, &actualread);
 
   result = Curl_blockread_all(conn, sock, (char *)sspi_w_token[0].pvBuffer,
                               sspi_w_token[0].cbBuffer, &actualread);
 
-  if(result != CURLE_OK || actualread != us_length) {
+  if(result || (actualread != us_length)) {
     failf(data, "Failed to receive SSPI encryption type.");
     s_pSecFn->FreeContextBuffer(sspi_w_token[0].pvBuffer);
     s_pSecFn->DeleteSecurityContext(&sspi_context);
     failf(data, "Failed to receive SSPI encryption type.");
     s_pSecFn->FreeContextBuffer(sspi_w_token[0].pvBuffer);
     s_pSecFn->DeleteSecurityContext(&sspi_context);
@@ -541,8 +550,10 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
                                       &qop);
 
     if(check_sspi_err(conn, status, "DecryptMessage")) {
                                       &qop);
 
     if(check_sspi_err(conn, status, "DecryptMessage")) {
-      s_pSecFn->FreeContextBuffer(sspi_w_token[0].pvBuffer);
-      s_pSecFn->FreeContextBuffer(sspi_w_token[1].pvBuffer);
+      if(sspi_w_token[0].pvBuffer)
+        s_pSecFn->FreeContextBuffer(sspi_w_token[0].pvBuffer);
+      if(sspi_w_token[1].pvBuffer)
+        s_pSecFn->FreeContextBuffer(sspi_w_token[1].pvBuffer);
       s_pSecFn->DeleteSecurityContext(&sspi_context);
       failf(data, "Failed to query security context attributes.");
       return CURLE_COULDNT_CONNECT;
       s_pSecFn->DeleteSecurityContext(&sspi_context);
       failf(data, "Failed to query security context attributes.");
       return CURLE_COULDNT_CONNECT;
@@ -551,8 +562,10 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
     if(sspi_w_token[1].cbBuffer != 1) {
       failf(data, "Invalid SSPI encryption response length (%lu).",
             (unsigned long)sspi_w_token[1].cbBuffer);
     if(sspi_w_token[1].cbBuffer != 1) {
       failf(data, "Invalid SSPI encryption response length (%lu).",
             (unsigned long)sspi_w_token[1].cbBuffer);
-      s_pSecFn->FreeContextBuffer(sspi_w_token[0].pvBuffer);
-      s_pSecFn->FreeContextBuffer(sspi_w_token[1].pvBuffer);
+      if(sspi_w_token[0].pvBuffer)
+        s_pSecFn->FreeContextBuffer(sspi_w_token[0].pvBuffer);
+      if(sspi_w_token[1].pvBuffer)
+        s_pSecFn->FreeContextBuffer(sspi_w_token[1].pvBuffer);
       s_pSecFn->DeleteSecurityContext(&sspi_context);
       return CURLE_COULDNT_CONNECT;
     }
       s_pSecFn->DeleteSecurityContext(&sspi_context);
       return CURLE_COULDNT_CONNECT;
     }
@@ -574,8 +587,8 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
   }
 
   infof(data, "SOCKS5 access with%s protection granted.\n",
   }
 
   infof(data, "SOCKS5 access with%s protection granted.\n",
-        (socksreq[0]==0)?"out gssapi data":
-        ((socksreq[0]==1)?" gssapi integrity":" gssapi confidentiality"));
+        (socksreq[0]==0)?"out GSS-API data":
+        ((socksreq[0]==1)?" GSS-API integrity":" GSS-API confidentiality"));
 
   /* For later use if encryption is required
      conn->socks5_gssapi_enctype = socksreq[0];
 
   /* For later use if encryption is required
      conn->socks5_gssapi_enctype = socksreq[0];
index ea17a59..ac7447c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -57,7 +57,7 @@ CURLcode Curl_speedcheck(struct SessionHandle *data,
     }
     else {
       /* wait complete low_speed_time */
     }
     else {
       /* wait complete low_speed_time */
-      Curl_expire(data, nextcheck);
+      Curl_expire_latest(data, nextcheck);
     }
   }
   else {
     }
   }
   else {
@@ -68,7 +68,7 @@ CURLcode Curl_speedcheck(struct SessionHandle *data,
       /* if there is a low speed limit enabled, we set the expire timer to
          make this connection's speed get checked again no later than when
          this time is up */
       /* if there is a low speed limit enabled, we set the expire timer to
          make this connection's speed get checked again no later than when
          this time is up */
-      Curl_expire(data, data->set.low_speed_time*1000);
+      Curl_expire_latest(data, data->set.low_speed_time*1000);
   }
   return CURLE_OK;
 }
   }
   return CURLE_OK;
 }
index 3570712..5bb7065 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1997 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1997 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -101,7 +101,7 @@ struct Curl_tree *Curl_splayinsert(struct timeval i,
                                    struct Curl_tree *t,
                                    struct Curl_tree *node)
 {
                                    struct Curl_tree *t,
                                    struct Curl_tree *node)
 {
-  static struct timeval KEY_NOTUSED = {-1,-1}; /* will *NEVER* appear */
+  static const struct timeval KEY_NOTUSED = {-1,-1}; /* will *NEVER* appear */
 
   if(node == NULL)
     return t;
 
   if(node == NULL)
     return t;
@@ -223,7 +223,7 @@ int Curl_splayremovebyaddr(struct Curl_tree *t,
                            struct Curl_tree *removenode,
                            struct Curl_tree **newroot)
 {
                            struct Curl_tree *removenode,
                            struct Curl_tree **newroot)
 {
-  static struct timeval KEY_NOTUSED = {-1,-1}; /* will *NEVER* appear */
+  static const struct timeval KEY_NOTUSED = {-1,-1}; /* will *NEVER* appear */
   struct Curl_tree *x;
 
   if(!t || !removenode)
   struct Curl_tree *x;
 
   if(!t || !removenode)
index 422357b..d7e88c6 100644 (file)
--- a/lib/ssh.c
+++ b/lib/ssh.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -73,7 +73,7 @@
 #include "getinfo.h"
 
 #include "strequal.h"
 #include "getinfo.h"
 
 #include "strequal.h"
-#include "sslgen.h"
+#include "vtls/vtls.h"
 #include "connect.h"
 #include "strerror.h"
 #include "inet_ntop.h"
 #include "connect.h"
 #include "strerror.h"
 #include "inet_ntop.h"
@@ -94,6 +94,9 @@
 #ifdef WIN32
 #  undef  PATH_MAX
 #  define PATH_MAX MAX_PATH
 #ifdef WIN32
 #  undef  PATH_MAX
 #  define PATH_MAX MAX_PATH
+#  ifndef R_OK
+#    define R_OK 4
+#  endif
 #endif
 
 #ifndef PATH_MAX
 #endif
 
 #ifndef PATH_MAX
@@ -149,13 +152,15 @@ static int ssh_perform_getsock(const struct connectdata *conn,
                                                        number of sockets */
                                int numsocks);
 
                                                        number of sockets */
                                int numsocks);
 
+static CURLcode ssh_setup_connection(struct connectdata *conn);
+
 /*
  * SCP protocol handler.
  */
 
 const struct Curl_handler Curl_handler_scp = {
   "SCP",                                /* scheme */
 /*
  * SCP protocol handler.
  */
 
 const struct Curl_handler Curl_handler_scp = {
   "SCP",                                /* scheme */
-  ZERO_NULL,                            /* setup_connection */
+  ssh_setup_connection,                 /* setup_connection */
   ssh_do,                               /* do_it */
   scp_done,                             /* done */
   ZERO_NULL,                            /* do_more */
   ssh_do,                               /* do_it */
   scp_done,                             /* done */
   ZERO_NULL,                            /* do_more */
@@ -181,7 +186,7 @@ const struct Curl_handler Curl_handler_scp = {
 
 const struct Curl_handler Curl_handler_sftp = {
   "SFTP",                               /* scheme */
 
 const struct Curl_handler Curl_handler_sftp = {
   "SFTP",                               /* scheme */
-  ZERO_NULL,                            /* setup_connection */
+  ssh_setup_connection,                 /* setup_connection */
   ssh_do,                               /* do_it */
   sftp_done,                            /* done */
   ZERO_NULL,                            /* do_more */
   ssh_do,                               /* do_it */
   sftp_done,                            /* done */
   ZERO_NULL,                            /* do_more */
@@ -200,7 +205,6 @@ const struct Curl_handler Curl_handler_sftp = {
   | PROTOPT_NOURLQUERY                  /* flags */
 };
 
   | PROTOPT_NOURLQUERY                  /* flags */
 };
 
-
 static void
 kbd_callback(const char *name, int name_len, const char *instruction,
              int instruction_len, int num_prompts,
 static void
 kbd_callback(const char *name, int name_len, const char *instruction,
              int instruction_len, int num_prompts,
@@ -327,6 +331,7 @@ static LIBSSH2_FREE_FUNC(my_libssh2_free)
 /* This is the ONLY way to change SSH state! */
 static void state(struct connectdata *conn, sshstate nowstate)
 {
 /* This is the ONLY way to change SSH state! */
 static void state(struct connectdata *conn, sshstate nowstate)
 {
+  struct ssh_conn *sshc = &conn->proto.sshc;
 #if defined(DEBUGBUILD) && !defined(CURL_DISABLE_VERBOSE_STRINGS)
   /* for debug purposes */
   static const char * const names[] = {
 #if defined(DEBUGBUILD) && !defined(CURL_DISABLE_VERBOSE_STRINGS)
   /* for debug purposes */
   static const char * const names[] = {
@@ -386,10 +391,7 @@ static void state(struct connectdata *conn, sshstate nowstate)
     "SSH_SESSION_FREE",
     "QUIT"
   };
     "SSH_SESSION_FREE",
     "QUIT"
   };
-#endif
-  struct ssh_conn *sshc = &conn->proto.sshc;
 
 
-#if defined(DEBUGBUILD) && !defined(CURL_DISABLE_VERBOSE_STRINGS)
   if(sshc->state != nowstate) {
     infof(conn->data, "SFTP %p state change from %s to %s\n",
           (void *)sshc, names[sshc->state], names[nowstate]);
   if(sshc->state != nowstate) {
     infof(conn->data, "SFTP %p state change from %s to %s\n",
           (void *)sshc, names[sshc->state], names[nowstate]);
@@ -544,6 +546,17 @@ static CURLcode ssh_knownhost(struct connectdata *conn)
       keybit = (keytype == LIBSSH2_HOSTKEY_TYPE_RSA)?
         LIBSSH2_KNOWNHOST_KEY_SSHRSA:LIBSSH2_KNOWNHOST_KEY_SSHDSS;
 
       keybit = (keytype == LIBSSH2_HOSTKEY_TYPE_RSA)?
         LIBSSH2_KNOWNHOST_KEY_SSHRSA:LIBSSH2_KNOWNHOST_KEY_SSHDSS;
 
+#ifdef HAVE_LIBSSH2_KNOWNHOST_CHECKP
+      keycheck = libssh2_knownhost_checkp(sshc->kh,
+                                          conn->host.name,
+                                          (conn->remote_port != PORT_SSH)?
+                                          conn->remote_port:-1,
+                                          remotekey, keylen,
+                                          LIBSSH2_KNOWNHOST_TYPE_PLAIN|
+                                          LIBSSH2_KNOWNHOST_KEYENC_RAW|
+                                          keybit,
+                                          &host);
+#else
       keycheck = libssh2_knownhost_check(sshc->kh,
                                          conn->host.name,
                                          remotekey, keylen,
       keycheck = libssh2_knownhost_check(sshc->kh,
                                          conn->host.name,
                                          remotekey, keylen,
@@ -551,6 +564,7 @@ static CURLcode ssh_knownhost(struct connectdata *conn)
                                          LIBSSH2_KNOWNHOST_KEYENC_RAW|
                                          keybit,
                                          &host);
                                          LIBSSH2_KNOWNHOST_KEYENC_RAW|
                                          keybit,
                                          &host);
+#endif
 
       infof(data, "SSH host check: %d, key: %s\n", keycheck,
             (keycheck <= LIBSSH2_KNOWNHOST_CHECK_MISMATCH)?
 
       infof(data, "SSH host check: %d, key: %s\n", keycheck,
             (keycheck <= LIBSSH2_KNOWNHOST_CHECK_MISMATCH)?
@@ -589,8 +603,10 @@ static CURLcode ssh_knownhost(struct connectdata *conn)
 
     switch(rc) {
     default: /* unknown return codes will equal reject */
 
     switch(rc) {
     default: /* unknown return codes will equal reject */
+      /* FALLTHROUGH */
     case CURLKHSTAT_REJECT:
       state(conn, SSH_SESSION_FREE);
     case CURLKHSTAT_REJECT:
       state(conn, SSH_SESSION_FREE);
+      /* FALLTHROUGH */
     case CURLKHSTAT_DEFER:
       /* DEFER means bail out but keep the SSH_HOSTKEY state */
       result = sshc->actualcode = CURLE_PEER_FAILED_VERIFICATION;
     case CURLKHSTAT_DEFER:
       /* DEFER means bail out but keep the SSH_HOSTKEY state */
       result = sshc->actualcode = CURLE_PEER_FAILED_VERIFICATION;
@@ -687,7 +703,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
-  struct SSHPROTO *sftp_scp = data->state.proto.ssh;
+  struct SSHPROTO *sftp_scp = data->req.protop;
   struct ssh_conn *sshc = &conn->proto.sshc;
   curl_socket_t sock = conn->sock[FIRSTSOCKET];
   char *new_readdir_line;
   struct ssh_conn *sshc = &conn->proto.sshc;
   curl_socket_t sock = conn->sock[FIRSTSOCKET];
   char *new_readdir_line;
@@ -733,8 +749,9 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
        * whatever) is up to us.
        */
       result = ssh_check_fingerprint(conn);
        * whatever) is up to us.
        */
       result = ssh_check_fingerprint(conn);
-      if(result == CURLE_OK)
+      if(!result)
         state(conn, SSH_AUTHLIST);
         state(conn, SSH_AUTHLIST);
+      /* ssh_check_fingerprint sets state appropriately on error */
       break;
 
     case SSH_AUTHLIST:
       break;
 
     case SSH_AUTHLIST:
@@ -753,7 +770,13 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
                                              curlx_uztoui(strlen(conn->user)));
 
       if(!sshc->authlist) {
                                              curlx_uztoui(strlen(conn->user)));
 
       if(!sshc->authlist) {
-        if((err = libssh2_session_last_errno(sshc->ssh_session)) ==
+        if(libssh2_userauth_authenticated(sshc->ssh_session)) {
+          sshc->authed = TRUE;
+          infof(data, "SSH user accepted with no authentication\n");
+          state(conn, SSH_AUTH_DONE);
+          break;
+        }
+        else if((err = libssh2_session_last_errno(sshc->ssh_session)) ==
            LIBSSH2_ERROR_EAGAIN) {
           rc = LIBSSH2_ERROR_EAGAIN;
           break;
            LIBSSH2_ERROR_EAGAIN) {
           rc = LIBSSH2_ERROR_EAGAIN;
           break;
@@ -780,7 +803,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
       if((data->set.ssh_auth_types & CURLSSH_AUTH_PUBLICKEY) &&
          (strstr(sshc->authlist, "publickey") != NULL)) {
         char *home = NULL;
       if((data->set.ssh_auth_types & CURLSSH_AUTH_PUBLICKEY) &&
          (strstr(sshc->authlist, "publickey") != NULL)) {
         char *home = NULL;
-        bool rsa_pub_empty_but_ok = FALSE;
+        bool out_of_memory = FALSE;
 
         sshc->rsa_pub = sshc->rsa = NULL;
 
 
         sshc->rsa_pub = sshc->rsa = NULL;
 
@@ -788,34 +811,55 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
            HOME environment variable etc? */
         home = curl_getenv("HOME");
 
            HOME environment variable etc? */
         home = curl_getenv("HOME");
 
-        if(data->set.str[STRING_SSH_PUBLIC_KEY] &&
-           !*data->set.str[STRING_SSH_PUBLIC_KEY])
-           rsa_pub_empty_but_ok = true;
-        else if(data->set.str[STRING_SSH_PUBLIC_KEY])
-          sshc->rsa_pub = aprintf("%s", data->set.str[STRING_SSH_PUBLIC_KEY]);
-        else if(home)
-          sshc->rsa_pub = aprintf("%s/.ssh/id_dsa.pub", home);
-        else
-          /* as a final resort, try current dir! */
-          sshc->rsa_pub = strdup("id_dsa.pub");
-
-        if(!rsa_pub_empty_but_ok && (sshc->rsa_pub == NULL)) {
-          Curl_safefree(home);
-          state(conn, SSH_SESSION_FREE);
-          sshc->actualcode = CURLE_OUT_OF_MEMORY;
-          break;
+        if(data->set.str[STRING_SSH_PRIVATE_KEY])
+          sshc->rsa = strdup(data->set.str[STRING_SSH_PRIVATE_KEY]);
+        else {
+          /* If no private key file is specified, try some common paths. */
+          if(home) {
+            /* Try ~/.ssh first. */
+            sshc->rsa = aprintf("%s/.ssh/id_rsa", home);
+            if(!sshc->rsa)
+              out_of_memory = TRUE;
+            else if(access(sshc->rsa, R_OK) != 0) {
+              Curl_safefree(sshc->rsa);
+              sshc->rsa = aprintf("%s/.ssh/id_dsa", home);
+              if(!sshc->rsa)
+                out_of_memory = TRUE;
+              else if(access(sshc->rsa, R_OK) != 0) {
+                Curl_safefree(sshc->rsa);
+              }
+            }
+          }
+          if(!out_of_memory && !sshc->rsa) {
+            /* Nothing found; try the current dir. */
+            sshc->rsa = strdup("id_rsa");
+            if(sshc->rsa && access(sshc->rsa, R_OK) != 0) {
+              Curl_safefree(sshc->rsa);
+              sshc->rsa = strdup("id_dsa");
+              if(sshc->rsa && access(sshc->rsa, R_OK) != 0) {
+                Curl_safefree(sshc->rsa);
+                /* Out of guesses. Set to the empty string to avoid
+                 * surprising info messages. */
+                sshc->rsa = strdup("");
+              }
+            }
+          }
         }
 
         }
 
-        if(data->set.str[STRING_SSH_PRIVATE_KEY])
-          sshc->rsa = aprintf("%s", data->set.str[STRING_SSH_PRIVATE_KEY]);
-        else if(home)
-          sshc->rsa = aprintf("%s/.ssh/id_dsa", home);
-        else
-          /* as a final resort, try current dir! */
-          sshc->rsa = strdup("id_dsa");
+        /*
+         * Unless the user explicitly specifies a public key file, let
+         * libssh2 extract the public key from the private key file.
+         * This is done by simply passing sshc->rsa_pub = NULL.
+         */
+        if(data->set.str[STRING_SSH_PUBLIC_KEY]) {
+          sshc->rsa_pub = strdup(data->set.str[STRING_SSH_PUBLIC_KEY]);
+          if(!sshc->rsa_pub)
+            out_of_memory = TRUE;
+        }
 
 
-        if(sshc->rsa == NULL) {
+        if(out_of_memory || sshc->rsa == NULL) {
           Curl_safefree(home);
           Curl_safefree(home);
+          Curl_safefree(sshc->rsa);
           Curl_safefree(sshc->rsa_pub);
           state(conn, SSH_SESSION_FREE);
           sshc->actualcode = CURLE_OUT_OF_MEMORY;
           Curl_safefree(sshc->rsa_pub);
           state(conn, SSH_SESSION_FREE);
           sshc->actualcode = CURLE_OUT_OF_MEMORY;
@@ -828,8 +872,8 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
 
         Curl_safefree(home);
 
 
         Curl_safefree(home);
 
-        infof(data, "Using ssh public key file %s\n", sshc->rsa_pub);
-        infof(data, "Using ssh private key file %s\n", sshc->rsa);
+        infof(data, "Using SSH public key file '%s'\n", sshc->rsa_pub);
+        infof(data, "Using SSH private key file '%s'\n", sshc->rsa);
 
         state(conn, SSH_AUTH_PKEY);
       }
 
         state(conn, SSH_AUTH_PKEY);
       }
@@ -925,6 +969,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
             infof(data, "Could not create agent object\n");
 
             state(conn, SSH_AUTH_KEY_INIT);
             infof(data, "Could not create agent object\n");
 
             state(conn, SSH_AUTH_KEY_INIT);
+            break;
           }
         }
 
           }
         }
 
@@ -1190,7 +1235,13 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
            using ordinary FTP. */
         result = Curl_client_write(conn, CLIENTWRITE_HEADER, tmp, strlen(tmp));
         free(tmp);
            using ordinary FTP. */
         result = Curl_client_write(conn, CLIENTWRITE_HEADER, tmp, strlen(tmp));
         free(tmp);
-        state(conn, SSH_SFTP_NEXT_QUOTE);
+        if(result) {
+          state(conn, SSH_SFTP_CLOSE);
+          sshc->nextstate = SSH_NO_STATE;
+          sshc->actualcode = result;
+        }
+        else
+          state(conn, SSH_SFTP_NEXT_QUOTE);
         break;
       }
       else if(cmd) {
         break;
       }
       else if(cmd) {
@@ -1224,8 +1275,8 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
         }
 
         /*
         }
 
         /*
-         * SFTP is a binary protocol, so we don't send text commands to
-         * the server. Instead, we scan for commands for commands used by
+         * SFTP is a binary protocol, so we don't send text commands
+         * to the server. Instead, we scan for commands used by
          * OpenSSH's sftp program and call the appropriate libssh2
          * functions.
          */
          * OpenSSH's sftp program and call the appropriate libssh2
          * functions.
          */
@@ -1561,9 +1612,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
       if(data->set.upload)
         state(conn, SSH_SFTP_UPLOAD_INIT);
       else {
       if(data->set.upload)
         state(conn, SSH_SFTP_UPLOAD_INIT);
       else {
-        if(data->set.opt_no_body)
-          state(conn, SSH_STOP);
-        else if(sftp_scp->path[strlen(sftp_scp->path)-1] == '/')
+        if(sftp_scp->path[strlen(sftp_scp->path)-1] == '/')
           state(conn, SSH_SFTP_READDIR_INIT);
         else
           state(conn, SSH_SFTP_DOWNLOAD_INIT);
           state(conn, SSH_SFTP_READDIR_INIT);
         else
           state(conn, SSH_SFTP_DOWNLOAD_INIT);
@@ -1595,7 +1644,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
           else {
             curl_off_t size = attrs.filesize;
             if(size < 0) {
           else {
             curl_off_t size = attrs.filesize;
             if(size < 0) {
-              failf(data, "Bad file size (%" FORMAT_OFF_T ")", size);
+              failf(data, "Bad file size (%" CURL_FORMAT_CURL_OFF_T ")", size);
               return CURLE_BAD_DOWNLOAD_RESUME;
             }
             data->state.resume_from = attrs.filesize;
               return CURLE_BAD_DOWNLOAD_RESUME;
             }
             data->state.resume_from = attrs.filesize;
@@ -1667,7 +1716,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
         }
       }
 
         }
       }
 
-      /* If we have restart point then we need to seek to the correct
+      /* If we have restart point then we need to seek to the correct
          position. */
       if(data->state.resume_from > 0) {
         /* Let's read off the proper amount of bytes from the input. */
          position. */
       if(data->state.resume_from > 0) {
         /* Let's read off the proper amount of bytes from the input. */
@@ -1706,17 +1755,17 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
         }
 
         /* now, decrease the size of the read */
         }
 
         /* now, decrease the size of the read */
-        if(data->set.infilesize > 0) {
-          data->set.infilesize -= data->state.resume_from;
-          data->req.size = data->set.infilesize;
-          Curl_pgrsSetUploadSize(data, data->set.infilesize);
+        if(data->state.infilesize > 0) {
+          data->state.infilesize -= data->state.resume_from;
+          data->req.size = data->state.infilesize;
+          Curl_pgrsSetUploadSize(data, data->state.infilesize);
         }
 
         SFTP_SEEK(sshc->sftp_handle, data->state.resume_from);
       }
         }
 
         SFTP_SEEK(sshc->sftp_handle, data->state.resume_from);
       }
-      if(data->set.infilesize > 0) {
-        data->req.size = data->set.infilesize;
-        Curl_pgrsSetUploadSize(data, data->set.infilesize);
+      if(data->state.infilesize > 0) {
+        data->req.size = data->state.infilesize;
+        Curl_pgrsSetUploadSize(data, data->state.infilesize);
       }
       /* upload data */
       Curl_setup_transfer(conn, -1, -1, FALSE, NULL, FIRSTSOCKET, NULL);
       }
       /* upload data */
       Curl_setup_transfer(conn, -1, -1, FALSE, NULL, FIRSTSOCKET, NULL);
@@ -1759,7 +1808,8 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
       break;
 
     case SSH_SFTP_CREATE_DIRS:
       break;
 
     case SSH_SFTP_CREATE_DIRS:
-      if((sshc->slash_pos = strchr(sshc->slash_pos, '/')) != NULL) {
+      sshc->slash_pos = strchr(sshc->slash_pos, '/');
+      if(sshc->slash_pos) {
         *sshc->slash_pos = 0;
 
         infof(data, "Creating directory '%s'\n", sftp_scp->path);
         *sshc->slash_pos = 0;
 
         infof(data, "Creating directory '%s'\n", sftp_scp->path);
@@ -1801,6 +1851,12 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
       break;
 
     case SSH_SFTP_READDIR_INIT:
       break;
 
     case SSH_SFTP_READDIR_INIT:
+      Curl_pgrsSetDownloadSize(data, -1);
+      if(data->set.opt_no_body) {
+        state(conn, SSH_STOP);
+        break;
+      }
+
       /*
        * This is a directory that we are trying to get, so produce a directory
        * listing
       /*
        * This is a directory that we are trying to get, so produce a directory
        * listing
@@ -1981,7 +2037,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
                                  sshc->readdir_line,
                                  sshc->readdir_currLen);
 
                                  sshc->readdir_line,
                                  sshc->readdir_currLen);
 
-      if(result == CURLE_OK) {
+      if(!result) {
 
         /* output debug output if that is requested */
         if(data->set.verbose) {
 
         /* output debug output if that is requested */
         if(data->set.verbose) {
@@ -2051,19 +2107,24 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
       if(rc == LIBSSH2_ERROR_EAGAIN) {
         break;
       }
       if(rc == LIBSSH2_ERROR_EAGAIN) {
         break;
       }
-      else if(rc) {
+      else if(rc ||
+              !(attrs.flags & LIBSSH2_SFTP_ATTR_SIZE) ||
+              (attrs.filesize == 0)) {
         /*
          * libssh2_sftp_open() didn't return an error, so maybe the server
          * just doesn't support stat()
         /*
          * libssh2_sftp_open() didn't return an error, so maybe the server
          * just doesn't support stat()
+         * OR the server doesn't return a file size with a stat()
+         * OR file size is 0
          */
         data->req.size = -1;
         data->req.maxdownload = -1;
          */
         data->req.size = -1;
         data->req.maxdownload = -1;
+        Curl_pgrsSetDownloadSize(data, -1);
       }
       else {
         curl_off_t size = attrs.filesize;
 
         if(size < 0) {
       }
       else {
         curl_off_t size = attrs.filesize;
 
         if(size < 0) {
-          failf(data, "Bad file size (%" FORMAT_OFF_T ")", size);
+          failf(data, "Bad file size (%" CURL_FORMAT_CURL_OFF_T ")", size);
           return CURLE_BAD_DOWNLOAD_RESUME;
         }
         if(conn->data->state.use_range) {
           return CURLE_BAD_DOWNLOAD_RESUME;
         }
         if(conn->data->state.use_range) {
@@ -2085,8 +2146,8 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
           }
           if(from >= size) {
             failf(data, "Offset (%"
           }
           if(from >= size) {
             failf(data, "Offset (%"
-                  FORMAT_OFF_T ") was beyond file size (%" FORMAT_OFF_T ")",
-                  from, attrs.filesize);
+                  CURL_FORMAT_CURL_OFF_T ") was beyond file size (%"
+                  CURL_FORMAT_CURL_OFF_T ")", from, attrs.filesize);
             return CURLE_BAD_DOWNLOAD_RESUME;
           }
           if(from > to) {
             return CURLE_BAD_DOWNLOAD_RESUME;
           }
           if(from > to) {
@@ -2110,7 +2171,8 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
           /* We're supposed to download the last abs(from) bytes */
           if((curl_off_t)attrs.filesize < -data->state.resume_from) {
             failf(data, "Offset (%"
           /* We're supposed to download the last abs(from) bytes */
           if((curl_off_t)attrs.filesize < -data->state.resume_from) {
             failf(data, "Offset (%"
-                  FORMAT_OFF_T ") was beyond file size (%" FORMAT_OFF_T ")",
+                  CURL_FORMAT_CURL_OFF_T ") was beyond file size (%"
+                  CURL_FORMAT_CURL_OFF_T ")",
                   data->state.resume_from, attrs.filesize);
             return CURLE_BAD_DOWNLOAD_RESUME;
           }
                   data->state.resume_from, attrs.filesize);
             return CURLE_BAD_DOWNLOAD_RESUME;
           }
@@ -2119,8 +2181,8 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
         }
         else {
           if((curl_off_t)attrs.filesize < data->state.resume_from) {
         }
         else {
           if((curl_off_t)attrs.filesize < data->state.resume_from) {
-            failf(data, "Offset (%" FORMAT_OFF_T
-                  ") was beyond file size (%" FORMAT_OFF_T ")",
+            failf(data, "Offset (%" CURL_FORMAT_CURL_OFF_T
+                  ") was beyond file size (%" CURL_FORMAT_CURL_OFF_T ")",
                   data->state.resume_from, attrs.filesize);
             return CURLE_BAD_DOWNLOAD_RESUME;
           }
                   data->state.resume_from, attrs.filesize);
             return CURLE_BAD_DOWNLOAD_RESUME;
           }
@@ -2134,6 +2196,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
         SFTP_SEEK(sshc->sftp_handle, data->state.resume_from);
       }
     }
         SFTP_SEEK(sshc->sftp_handle, data->state.resume_from);
       }
     }
+
     /* Setup the actual download */
     if(data->req.size == 0) {
       /* no data to transfer */
     /* Setup the actual download */
     if(data->req.size == 0) {
       /* no data to transfer */
@@ -2155,6 +2218,8 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
       conn->cselect_bits = CURL_CSELECT_IN;
     }
     if(result) {
       conn->cselect_bits = CURL_CSELECT_IN;
     }
     if(result) {
+      /* this should never occur; the close state should be entered
+         at the time the error occurs */
       state(conn, SSH_SFTP_CLOSE);
       sshc->actualcode = result;
     }
       state(conn, SSH_SFTP_CLOSE);
       sshc->actualcode = result;
     }
@@ -2182,7 +2247,8 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
       /* Check if nextstate is set and move .nextstate could be POSTQUOTE_INIT
          After nextstate is executed,the control should come back to
          SSH_SFTP_CLOSE to pass the correct result back  */
       /* Check if nextstate is set and move .nextstate could be POSTQUOTE_INIT
          After nextstate is executed,the control should come back to
          SSH_SFTP_CLOSE to pass the correct result back  */
-      if(sshc->nextstate != SSH_NO_STATE) {
+      if(sshc->nextstate != SSH_NO_STATE &&
+         sshc->nextstate != SSH_SFTP_CLOSE) {
         state(conn, sshc->nextstate);
         sshc->nextstate = SSH_SFTP_CLOSE;
       }
         state(conn, sshc->nextstate);
         sshc->nextstate = SSH_SFTP_CLOSE;
       }
@@ -2233,7 +2299,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
       }
 
       if(data->set.upload) {
       }
 
       if(data->set.upload) {
-        if(data->set.infilesize < 0) {
+        if(data->state.infilesize < 0) {
           failf(data, "SCP requires a known file size for upload");
           sshc->actualcode = CURLE_UPLOAD_FAILED;
           state(conn, SSH_SCP_CHANNEL_FREE);
           failf(data, "SCP requires a known file size for upload");
           sshc->actualcode = CURLE_UPLOAD_FAILED;
           state(conn, SSH_SCP_CHANNEL_FREE);
@@ -2255,7 +2321,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
        */
       sshc->ssh_channel =
         SCP_SEND(sshc->ssh_session, sftp_scp->path, data->set.new_file_perms,
        */
       sshc->ssh_channel =
         SCP_SEND(sshc->ssh_session, sftp_scp->path, data->set.new_file_perms,
-                 data->set.infilesize);
+                 data->state.infilesize);
       if(!sshc->ssh_channel) {
         if(libssh2_session_last_errno(sshc->ssh_session) ==
            LIBSSH2_ERROR_EAGAIN) {
       if(!sshc->ssh_channel) {
         if(libssh2_session_last_errno(sshc->ssh_session) ==
            LIBSSH2_ERROR_EAGAIN) {
@@ -2287,6 +2353,10 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
         sshc->actualcode = result;
       }
       else {
         sshc->actualcode = result;
       }
       else {
+        /* store this original bitmask setup to use later on if we can't
+           figure out a "real" bitmask */
+        sshc->orig_waitfor = data->req.keepon;
+
         /* we want to use the _sending_ function even when the socket turns
            out readable as the underlying libssh2 scp send function will deal
            with both accordingly */
         /* we want to use the _sending_ function even when the socket turns
            out readable as the underlying libssh2 scp send function will deal
            with both accordingly */
@@ -2517,7 +2587,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
 
       memset(sshc, 0, sizeof(struct ssh_conn));
 
 
       memset(sshc, 0, sizeof(struct ssh_conn));
 
-      conn->bits.close = TRUE;
+      connclose(conn, "SSH session free");
       sshc->state = SSH_SESSION_FREE; /* current */
       sshc->nextstate = SSH_NO_STATE;
       state(conn, SSH_STOP);
       sshc->state = SSH_SESSION_FREE; /* current */
       sshc->nextstate = SSH_NO_STATE;
       state(conn, SSH_STOP);
@@ -2603,9 +2673,7 @@ static void ssh_block2waitfor(struct connectdata *conn, bool block)
 {
   struct ssh_conn *sshc = &conn->proto.sshc;
   int dir;
 {
   struct ssh_conn *sshc = &conn->proto.sshc;
   int dir;
-  if(!block)
-    conn->waitfor = 0;
-  else if((dir = libssh2_session_block_directions(sshc->ssh_session))) {
+  if(block && (dir = libssh2_session_block_directions(sshc->ssh_session))) {
     /* translate the libssh2 define bits into our own bit defines */
     conn->waitfor = ((dir&LIBSSH2_SESSION_BLOCK_INBOUND)?KEEP_RECV:0) |
       ((dir&LIBSSH2_SESSION_BLOCK_OUTBOUND)?KEEP_SEND:0);
     /* translate the libssh2 define bits into our own bit defines */
     conn->waitfor = ((dir&LIBSSH2_SESSION_BLOCK_INBOUND)?KEEP_RECV:0) |
       ((dir&LIBSSH2_SESSION_BLOCK_OUTBOUND)?KEEP_SEND:0);
@@ -2666,7 +2734,7 @@ static CURLcode ssh_block_statemach(struct connectdata *conn,
     }
 
 #ifdef HAVE_LIBSSH2_SESSION_BLOCK_DIRECTION
     }
 
 #ifdef HAVE_LIBSSH2_SESSION_BLOCK_DIRECTION
-    if((CURLE_OK == result) && block) {
+    if(!result && block) {
       int dir = libssh2_session_block_directions(sshc->ssh_session);
       curl_socket_t sock = conn->sock[FIRSTSOCKET];
       curl_socket_t fd_read = CURL_SOCKET_BAD;
       int dir = libssh2_session_block_directions(sshc->ssh_session);
       curl_socket_t sock = conn->sock[FIRSTSOCKET];
       curl_socket_t fd_read = CURL_SOCKET_BAD;
@@ -2689,25 +2757,14 @@ static CURLcode ssh_block_statemach(struct connectdata *conn,
 /*
  * SSH setup and connection
  */
 /*
  * SSH setup and connection
  */
-static CURLcode ssh_init(struct connectdata *conn)
+static CURLcode ssh_setup_connection(struct connectdata *conn)
 {
 {
-  struct SessionHandle *data = conn->data;
   struct SSHPROTO *ssh;
   struct SSHPROTO *ssh;
-  struct ssh_conn *sshc = &conn->proto.sshc;
-
-  sshc->actualcode = CURLE_OK; /* reset error code */
-  sshc->secondCreateDirs =0;   /* reset the create dir attempt state
-                                  variable */
-
-  if(data->state.proto.ssh)
-    return CURLE_OK;
 
 
-  ssh = calloc(1, sizeof(struct SSHPROTO));
+  conn->data->req.protop = ssh = calloc(1, sizeof(struct SSHPROTO));
   if(!ssh)
     return CURLE_OUT_OF_MEMORY;
 
   if(!ssh)
     return CURLE_OUT_OF_MEMORY;
 
-  data->state.proto.ssh = ssh;
-
   return CURLE_OK;
 }
 
   return CURLE_OK;
 }
 
@@ -2727,17 +2784,13 @@ static CURLcode ssh_connect(struct connectdata *conn, bool *done)
   CURLcode result;
   struct SessionHandle *data = conn->data;
 
   CURLcode result;
   struct SessionHandle *data = conn->data;
 
+  /* initialize per-handle data if not already */
+  if(!data->req.protop)
+    ssh_setup_connection(conn);
+
   /* We default to persistent connections. We set this already in this connect
      function to make the re-use checks properly be able to check this bit. */
   /* We default to persistent connections. We set this already in this connect
      function to make the re-use checks properly be able to check this bit. */
-  conn->bits.close = FALSE;
-
-  /* If there already is a protocol-specific struct allocated for this
-     sessionhandle, deal with it */
-  Curl_reset_reqproto(conn);
-
-  result = ssh_init(conn);
-  if(result)
-    return result;
+  connkeep(conn, "SSH default");
 
   if(conn->handler->protocol & CURLPROTO_SCP) {
     conn->recv[FIRSTSOCKET] = scp_recv;
 
   if(conn->handler->protocol & CURLPROTO_SCP) {
     conn->recv[FIRSTSOCKET] = scp_recv;
@@ -2853,37 +2906,30 @@ static CURLcode scp_doing(struct connectdata *conn,
 
 static CURLcode ssh_do(struct connectdata *conn, bool *done)
 {
 
 static CURLcode ssh_do(struct connectdata *conn, bool *done)
 {
-  CURLcode res;
+  CURLcode result;
   bool connected = 0;
   struct SessionHandle *data = conn->data;
   bool connected = 0;
   struct SessionHandle *data = conn->data;
+  struct ssh_conn *sshc = &conn->proto.sshc;
 
   *done = FALSE; /* default to false */
 
 
   *done = FALSE; /* default to false */
 
-  /*
-    Since connections can be re-used between SessionHandles, this might be a
-    connection already existing but on a fresh SessionHandle struct so we must
-    make sure we have a good 'struct SSHPROTO' to play with. For new
-    connections, the struct SSHPROTO is allocated and setup in the
-    ssh_connect() function.
-  */
-  Curl_reset_reqproto(conn);
-  res = ssh_init(conn);
-  if(res)
-    return res;
-
   data->req.size = -1; /* make sure this is unknown at this point */
 
   data->req.size = -1; /* make sure this is unknown at this point */
 
+  sshc->actualcode = CURLE_OK; /* reset error code */
+  sshc->secondCreateDirs =0;   /* reset the create dir attempt state
+                                  variable */
+
   Curl_pgrsSetUploadCounter(data, 0);
   Curl_pgrsSetDownloadCounter(data, 0);
   Curl_pgrsSetUploadCounter(data, 0);
   Curl_pgrsSetDownloadCounter(data, 0);
-  Curl_pgrsSetUploadSize(data, 0);
-  Curl_pgrsSetDownloadSize(data, 0);
+  Curl_pgrsSetUploadSize(data, -1);
+  Curl_pgrsSetDownloadSize(data, -1);
 
   if(conn->handler->protocol & CURLPROTO_SCP)
 
   if(conn->handler->protocol & CURLPROTO_SCP)
-    res = scp_perform(conn, &connected,  done);
+    result = scp_perform(conn, &connected,  done);
   else
   else
-    res = sftp_perform(conn, &connected,  done);
+    result = sftp_perform(conn, &connected,  done);
 
 
-  return res;
+  return result;
 }
 
 /* BLOCKING, but the function is using the state machine so the only reason
 }
 
 /* BLOCKING, but the function is using the state machine so the only reason
@@ -2895,7 +2941,7 @@ static CURLcode scp_disconnect(struct connectdata *conn, bool dead_connection)
   struct ssh_conn *ssh = &conn->proto.sshc;
   (void) dead_connection;
 
   struct ssh_conn *ssh = &conn->proto.sshc;
   (void) dead_connection;
 
-  Curl_safefree(conn->data->state.proto.ssh);
+  Curl_safefree(conn->data->req.protop);
 
   if(ssh->ssh_session) {
     /* only if there's a session still around to use! */
 
   if(ssh->ssh_session) {
     /* only if there's a session still around to use! */
@@ -2913,9 +2959,9 @@ static CURLcode scp_disconnect(struct connectdata *conn, bool dead_connection)
 static CURLcode ssh_done(struct connectdata *conn, CURLcode status)
 {
   CURLcode result = CURLE_OK;
 static CURLcode ssh_done(struct connectdata *conn, CURLcode status)
 {
   CURLcode result = CURLE_OK;
-  struct SSHPROTO *sftp_scp = conn->data->state.proto.ssh;
+  struct SSHPROTO *sftp_scp = conn->data->req.protop;
 
 
-  if(status == CURLE_OK) {
+  if(!status) {
     /* run the state-machine
 
        TODO: when the multi interface is used, this _really_ should be using
     /* run the state-machine
 
        TODO: when the multi interface is used, this _really_ should be using
@@ -2943,7 +2989,7 @@ static CURLcode scp_done(struct connectdata *conn, CURLcode status,
 {
   (void)premature; /* not used */
 
 {
   (void)premature; /* not used */
 
-  if(status == CURLE_OK)
+  if(!status)
     state(conn, SSH_SCP_DONE);
 
   return ssh_done(conn, status);
     state(conn, SSH_SCP_DONE);
 
   return ssh_done(conn, status);
@@ -3041,8 +3087,7 @@ CURLcode sftp_perform(struct connectdata *conn,
 static CURLcode sftp_doing(struct connectdata *conn,
                            bool *dophase_done)
 {
 static CURLcode sftp_doing(struct connectdata *conn,
                            bool *dophase_done)
 {
-  CURLcode result;
-  result = ssh_multi_statemach(conn, dophase_done);
+  CURLcode result = ssh_multi_statemach(conn, dophase_done);
 
   if(*dophase_done) {
     DEBUGF(infof(conn->data, "DO phase is complete\n"));
 
   if(*dophase_done) {
     DEBUGF(infof(conn->data, "DO phase is complete\n"));
@@ -3060,7 +3105,7 @@ static CURLcode sftp_disconnect(struct connectdata *conn, bool dead_connection)
 
   DEBUGF(infof(conn->data, "SSH DISCONNECT starts now\n"));
 
 
   DEBUGF(infof(conn->data, "SSH DISCONNECT starts now\n"));
 
-  Curl_safefree(conn->data->state.proto.ssh);
+  Curl_safefree(conn->data->req.protop);
 
   if(conn->proto.sshc.ssh_session) {
     /* only if there's a session still around to use! */
 
   if(conn->proto.sshc.ssh_session) {
     /* only if there's a session still around to use! */
@@ -3079,7 +3124,7 @@ static CURLcode sftp_done(struct connectdata *conn, CURLcode status,
 {
   struct ssh_conn *sshc = &conn->proto.sshc;
 
 {
   struct ssh_conn *sshc = &conn->proto.sshc;
 
-  if(status == CURLE_OK) {
+  if(!status) {
     /* Post quote commands are executed after the SFTP_CLOSE state to avoid
        errors that could happen due to open file handles during POSTQUOTE
        operation */
     /* Post quote commands are executed after the SFTP_CLOSE state to avoid
        errors that could happen due to open file handles during POSTQUOTE
        operation */
@@ -3120,6 +3165,7 @@ static ssize_t sftp_send(struct connectdata *conn, int sockindex,
 
 /*
  * Return number of received (decrypted) bytes
 
 /*
  * Return number of received (decrypted) bytes
+ * or <0 on error
  */
 static ssize_t sftp_recv(struct connectdata *conn, int sockindex,
                          char *mem, size_t len, CURLcode *err)
  */
 static ssize_t sftp_recv(struct connectdata *conn, int sockindex,
                          char *mem, size_t len, CURLcode *err)
@@ -3134,6 +3180,10 @@ static ssize_t sftp_recv(struct connectdata *conn, int sockindex,
   if(nread == LIBSSH2_ERROR_EAGAIN) {
     *err = CURLE_AGAIN;
     nread = -1;
   if(nread == LIBSSH2_ERROR_EAGAIN) {
     *err = CURLE_AGAIN;
     nread = -1;
+
+  }
+  else if(nread < 0) {
+    *err = libssh2_session_error_to_CURLE((int)nread);
   }
   return nread;
 }
   }
   return nread;
 }
index ff2e16b..1bc3348 100644 (file)
--- a/lib/ssh.h
+++ b/lib/ssh.h
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -158,22 +158,34 @@ struct ssh_conn {
 
 #ifdef USE_LIBSSH2
 
 
 #ifdef USE_LIBSSH2
 
+/* Feature detection based on version numbers to better work with
+   non-configure platforms */
+
 #if !defined(LIBSSH2_VERSION_NUM) || (LIBSSH2_VERSION_NUM < 0x001000)
 #  error "SCP/SFTP protocols require libssh2 0.16 or later"
 #endif
 
 #if !defined(LIBSSH2_VERSION_NUM) || (LIBSSH2_VERSION_NUM < 0x001000)
 #  error "SCP/SFTP protocols require libssh2 0.16 or later"
 #endif
 
-#if defined(LIBSSH2_VERSION_NUM) && (LIBSSH2_VERSION_NUM >= 0x010000)
-#  define HAVE_LIBSSH2_SFTP_SEEK64 1
-#else
-#  undef HAVE_LIBSSH2_SFTP_SEEK64
+#if LIBSSH2_VERSION_NUM >= 0x010000
+#define HAVE_LIBSSH2_SFTP_SEEK64 1
+#endif
+
+#if LIBSSH2_VERSION_NUM >= 0x010100
+#define HAVE_LIBSSH2_VERSION 1
 #endif
 
 #endif
 
-#if defined(LIBSSH2_VERSION_NUM) && (LIBSSH2_VERSION_NUM >= 0x010206)
-#  define HAVE_LIBSSH2_SCP_SEND64 1
-#else
-#  undef HAVE_LIBSSH2_SCP_SEND64
+#if LIBSSH2_VERSION_NUM >= 0x010205
+#define HAVE_LIBSSH2_INIT 1
+#define HAVE_LIBSSH2_EXIT 1
 #endif
 
 #endif
 
+#if LIBSSH2_VERSION_NUM >= 0x010206
+#define HAVE_LIBSSH2_KNOWNHOST_CHECKP 1
+#define HAVE_LIBSSH2_SCP_SEND64 1
+#endif
+
+#if LIBSSH2_VERSION_NUM >= 0x010208
+#define HAVE_LIBSSH2_SESSION_HANDSHAKE 1
+#endif
 
 extern const struct Curl_handler Curl_handler_scp;
 extern const struct Curl_handler Curl_handler_sftp;
 
 extern const struct Curl_handler Curl_handler_scp;
 extern const struct Curl_handler Curl_handler_sftp;
index 3b776b1..a997b12 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
  * KIND, either express or implied.
  *
  ***************************************************************************/
-/*
- * This file is 'mem-include-scan' clean. See test 1132.
- */
 #include "curl_setup.h"
 #include "curl_setup.h"
-
 #include "strdup.h"
 #include "strdup.h"
+#include "curl_memory.h"
+
+/* The last #include file should be: */
+#include "memdebug.h"
 
 #ifndef HAVE_STRDUP
 char *curlx_strdup(const char *str)
 
 #ifndef HAVE_STRDUP
 char *curlx_strdup(const char *str)
@@ -50,3 +50,24 @@ char *curlx_strdup(const char *str)
 
 }
 #endif
 
 }
 #endif
+
+/***************************************************************************
+ *
+ * Curl_memdup(source, length)
+ *
+ * Copies the 'source' data to a newly allocated buffer (that is
+ * returned). Copies 'length' bytes.
+ *
+ * Returns the new pointer or NULL on failure.
+ *
+ ***************************************************************************/
+char *Curl_memdup(const char *src, size_t length)
+{
+  char *buffer = malloc(length);
+  if(!buffer)
+    return NULL; /* fail */
+
+  memcpy(buffer, src, length);
+
+  return buffer;
+}
index 49af911..23a71f8 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -26,5 +26,6 @@
 #ifndef HAVE_STRDUP
 extern char *curlx_strdup(const char *str);
 #endif
 #ifndef HAVE_STRDUP
 extern char *curlx_strdup(const char *str);
 #endif
+char *Curl_memdup(const char *src, size_t buffer_length);
 
 #endif /* HEADER_CURL_STRDUP_H */
 
 #endif /* HEADER_CURL_STRDUP_H */
index a385f55..b85b568 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2004 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2004 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -105,6 +105,9 @@ curl_easy_strerror(CURLcode error)
   case CURLE_FTP_CANT_GET_HOST:
     return "FTP: can't figure out the host in the PASV response";
 
   case CURLE_FTP_CANT_GET_HOST:
     return "FTP: can't figure out the host in the PASV response";
 
+  case CURLE_HTTP2:
+    return "Error in the HTTP2 framing layer";
+
   case CURLE_FTP_COULDNT_SET_TYPE:
     return "FTP: couldn't set file type";
 
   case CURLE_FTP_COULDNT_SET_TYPE:
     return "FTP: couldn't set file type";
 
@@ -295,8 +298,10 @@ curl_easy_strerror(CURLcode error)
   case CURLE_NO_CONNECTION_AVAILABLE:
     return "The max connection limit is reached";
 
   case CURLE_NO_CONNECTION_AVAILABLE:
     return "The max connection limit is reached";
 
+  case CURLE_SSL_PINNEDPUBKEYNOTMATCH:
+    return "SSL public key does not match pinned public key";
+
     /* error codes not used by current libcurl */
     /* error codes not used by current libcurl */
-  case CURLE_OBSOLETE16:
   case CURLE_OBSOLETE20:
   case CURLE_OBSOLETE24:
   case CURLE_OBSOLETE29:
   case CURLE_OBSOLETE20:
   case CURLE_OBSOLETE24:
   case CURLE_OBSOLETE29:
@@ -325,7 +330,7 @@ curl_easy_strerror(CURLcode error)
    */
   return "Unknown error";
 #else
    */
   return "Unknown error";
 #else
-  if(error == CURLE_OK)
+  if(!error)
     return "No error";
   else
     return "Error";
     return "No error";
   else
     return "Error";
@@ -361,6 +366,9 @@ curl_multi_strerror(CURLMcode error)
   case CURLM_UNKNOWN_OPTION:
     return "Unknown option";
 
   case CURLM_UNKNOWN_OPTION:
     return "Unknown option";
 
+  case CURLM_ADDED_ALREADY:
+    return "The easy handle is already added to a multi handle";
+
   case CURLM_LAST:
     break;
   }
   case CURLM_LAST:
     break;
   }
@@ -589,7 +597,7 @@ get_winsock_error (int err, char *buf, size_t len)
     return NULL;
   }
 #else
     return NULL;
   }
 #else
-  if(err == CURLE_OK)
+  if(!err)
     return NULL;
   else
     p = "error";
     return NULL;
   else
     p = "error";
@@ -676,7 +684,7 @@ const char *Curl_strerror(struct connectdata *conn, int err)
 #elif defined(HAVE_STRERROR_R) && defined(HAVE_VXWORKS_STRERROR_R)
  /*
   * The vxworks-style strerror_r() does use the buffer we pass to the function.
 #elif defined(HAVE_STRERROR_R) && defined(HAVE_VXWORKS_STRERROR_R)
  /*
   * The vxworks-style strerror_r() does use the buffer we pass to the function.
-  * The buffer size should be at least MAXERRSTR_SIZE (150) defined in rtsold.h
+  * The buffer size should be at least NAME_MAX (256)
   */
   {
     char buffer[256];
   */
   {
     char buffer[256];
index b812a67..75c73d4 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #    define curlx_strtoofft strtoll
 #  else
 #    if defined(_MSC_VER) && (_MSC_VER >= 1300) && (_INTEGRAL_MAX_BITS >= 64)
 #    define curlx_strtoofft strtoll
 #  else
 #    if defined(_MSC_VER) && (_MSC_VER >= 1300) && (_INTEGRAL_MAX_BITS >= 64)
-       _CRTIMP __int64 __cdecl _strtoi64(const char *, char **, int);
+#      if defined(_SAL_VERSION)
+         _Check_return_ _CRTIMP __int64 __cdecl _strtoi64(
+             _In_z_ const char *_String,
+             _Out_opt_ _Deref_post_z_ char **_EndPtr, _In_ int _Radix);
+#      else
+         _CRTIMP __int64 __cdecl _strtoi64(const char *_String,
+                                           char **_EndPtr, int _Radix);
+#      endif
 #      define curlx_strtoofft _strtoi64
 #    else
        curl_off_t curlx_strtoll(const char *nptr, char **endptr, int base);
 #      define curlx_strtoofft _strtoi64
 #    else
        curl_off_t curlx_strtoll(const char *nptr, char **endptr, int base);
index 77d8b7b..176e994 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -247,7 +247,7 @@ CURLcode init_telnet(struct connectdata *conn)
   if(!tn)
     return CURLE_OUT_OF_MEMORY;
 
   if(!tn)
     return CURLE_OUT_OF_MEMORY;
 
-  conn->data->state.proto.telnet = (void *)tn; /* make us known */
+  conn->data->req.protop = tn; /* make us known */
 
   tn->telrcv_state = CURL_TS_DATA;
 
 
   tn->telrcv_state = CURL_TS_DATA;
 
@@ -292,7 +292,7 @@ CURLcode init_telnet(struct connectdata *conn)
 static void negotiate(struct connectdata *conn)
 {
   int i;
 static void negotiate(struct connectdata *conn)
 {
   int i;
-  struct TELNET *tn = (struct TELNET *) conn->data->state.proto.telnet;
+  struct TELNET *tn = (struct TELNET *) conn->data->req.protop;
 
   for(i = 0;i < CURL_NTELOPTS;i++) {
     if(i==CURL_TELOPT_ECHO)
 
   for(i = 0;i < CURL_NTELOPTS;i++) {
     if(i==CURL_TELOPT_ECHO)
@@ -366,7 +366,7 @@ static void send_negotiation(struct connectdata *conn, int cmd, int option)
 static
 void set_remote_option(struct connectdata *conn, int option, int newstate)
 {
 static
 void set_remote_option(struct connectdata *conn, int option, int newstate)
 {
-  struct TELNET *tn = (struct TELNET *)conn->data->state.proto.telnet;
+  struct TELNET *tn = (struct TELNET *)conn->data->req.protop;
   if(newstate == CURL_YES) {
     switch(tn->him[option]) {
     case CURL_NO:
   if(newstate == CURL_YES) {
     switch(tn->him[option]) {
     case CURL_NO:
@@ -440,7 +440,7 @@ void set_remote_option(struct connectdata *conn, int option, int newstate)
 static
 void rec_will(struct connectdata *conn, int option)
 {
 static
 void rec_will(struct connectdata *conn, int option)
 {
-  struct TELNET *tn = (struct TELNET *)conn->data->state.proto.telnet;
+  struct TELNET *tn = (struct TELNET *)conn->data->req.protop;
   switch(tn->him[option]) {
   case CURL_NO:
     if(tn->him_preferred[option] == CURL_YES) {
   switch(tn->him[option]) {
   case CURL_NO:
     if(tn->him_preferred[option] == CURL_YES) {
@@ -488,7 +488,7 @@ void rec_will(struct connectdata *conn, int option)
 static
 void rec_wont(struct connectdata *conn, int option)
 {
 static
 void rec_wont(struct connectdata *conn, int option)
 {
-  struct TELNET *tn = (struct TELNET *)conn->data->state.proto.telnet;
+  struct TELNET *tn = (struct TELNET *)conn->data->req.protop;
   switch(tn->him[option]) {
   case CURL_NO:
     /* Already disabled */
   switch(tn->him[option]) {
   case CURL_NO:
     /* Already disabled */
@@ -530,7 +530,7 @@ void rec_wont(struct connectdata *conn, int option)
 static void
 set_local_option(struct connectdata *conn, int option, int newstate)
 {
 static void
 set_local_option(struct connectdata *conn, int option, int newstate)
 {
-  struct TELNET *tn = (struct TELNET *)conn->data->state.proto.telnet;
+  struct TELNET *tn = (struct TELNET *)conn->data->req.protop;
   if(newstate == CURL_YES) {
     switch(tn->us[option]) {
     case CURL_NO:
   if(newstate == CURL_YES) {
     switch(tn->us[option]) {
     case CURL_NO:
@@ -604,7 +604,7 @@ set_local_option(struct connectdata *conn, int option, int newstate)
 static
 void rec_do(struct connectdata *conn, int option)
 {
 static
 void rec_do(struct connectdata *conn, int option)
 {
-  struct TELNET *tn = (struct TELNET *)conn->data->state.proto.telnet;
+  struct TELNET *tn = (struct TELNET *)conn->data->req.protop;
   switch(tn->us[option]) {
   case CURL_NO:
     if(tn->us_preferred[option] == CURL_YES) {
   switch(tn->us[option]) {
   case CURL_NO:
     if(tn->us_preferred[option] == CURL_YES) {
@@ -664,7 +664,7 @@ void rec_do(struct connectdata *conn, int option)
 static
 void rec_dont(struct connectdata *conn, int option)
 {
 static
 void rec_dont(struct connectdata *conn, int option)
 {
-  struct TELNET *tn = (struct TELNET *)conn->data->state.proto.telnet;
+  struct TELNET *tn = (struct TELNET *)conn->data->req.protop;
   switch(tn->us[option]) {
   case CURL_NO:
     /* Already disabled */
   switch(tn->us[option]) {
   case CURL_NO:
     /* Already disabled */
@@ -710,7 +710,6 @@ static void printsub(struct SessionHandle *data,
                      size_t length)             /* length of suboption data */
 {
   unsigned int i = 0;
                      size_t length)             /* length of suboption data */
 {
   unsigned int i = 0;
-  unsigned short *pval;
 
   if(data->set.verbose) {
     if(direction) {
 
   if(data->set.verbose) {
     if(direction) {
@@ -763,9 +762,9 @@ static void printsub(struct SessionHandle *data,
 
     switch(pointer[0]) {
     case CURL_TELOPT_NAWS:
 
     switch(pointer[0]) {
     case CURL_TELOPT_NAWS:
-      pval = (unsigned short*)(pointer+1);
-      infof(data, "Width: %hu ; Height: %hu",
-            ntohs(pval[0]), ntohs(pval[1]));
+      if(length > 4)
+        infof(data, "Width: %hu ; Height: %hu", (pointer[1]<<8) | pointer[2],
+              (pointer[3]<<8) | pointer[4]);
       break;
     default:
       switch(pointer[1]) {
       break;
     default:
       switch(pointer[1]) {
@@ -822,10 +821,10 @@ static CURLcode check_telnet_options(struct connectdata *conn)
 {
   struct curl_slist *head;
   struct curl_slist *beg;
 {
   struct curl_slist *head;
   struct curl_slist *beg;
-  char option_keyword[128];
-  char option_arg[256];
+  char option_keyword[128] = "";
+  char option_arg[256] = "";
   struct SessionHandle *data = conn->data;
   struct SessionHandle *data = conn->data;
-  struct TELNET *tn = (struct TELNET *)conn->data->state.proto.telnet;
+  struct TELNET *tn = (struct TELNET *)conn->data->req.protop;
   CURLcode result = CURLE_OK;
   int binary_option;
 
   CURLcode result = CURLE_OK;
   int binary_option;
 
@@ -932,10 +931,10 @@ static void suboption(struct connectdata *conn)
   size_t len;
   size_t tmplen;
   int err;
   size_t len;
   size_t tmplen;
   int err;
-  char varname[128];
-  char varval[128];
+  char varname[128] = "";
+  char varval[128] = "";
   struct SessionHandle *data = conn->data;
   struct SessionHandle *data = conn->data;
-  struct TELNET *tn = (struct TELNET *)data->state.proto.telnet;
+  struct TELNET *tn = (struct TELNET *)data->req.protop;
 
   printsub(data, '<', (unsigned char *)tn->subbuffer, CURL_SB_LEN(tn)+2);
   switch (CURL_SB_GET(tn)) {
 
   printsub(data, '<', (unsigned char *)tn->subbuffer, CURL_SB_LEN(tn)+2);
   switch (CURL_SB_GET(tn)) {
@@ -973,11 +972,12 @@ static void suboption(struct connectdata *conn)
         tmplen = (strlen(v->data) + 1);
         /* Add the variable only if it fits */
         if(len + tmplen < (int)sizeof(temp)-6) {
         tmplen = (strlen(v->data) + 1);
         /* Add the variable only if it fits */
         if(len + tmplen < (int)sizeof(temp)-6) {
-          sscanf(v->data, "%127[^,],%127s", varname, varval);
-          snprintf((char *)&temp[len], sizeof(temp) - len,
-                   "%c%s%c%s", CURL_NEW_ENV_VAR, varname,
-                   CURL_NEW_ENV_VALUE, varval);
-          len += tmplen;
+          if(sscanf(v->data, "%127[^,],%127s", varname, varval)) {
+            snprintf((char *)&temp[len], sizeof(temp) - len,
+                     "%c%s%c%s", CURL_NEW_ENV_VAR, varname,
+                     CURL_NEW_ENV_VALUE, varval);
+            len += tmplen;
+          }
         }
       }
       snprintf((char *)&temp[len], sizeof(temp) - len,
         }
       }
       snprintf((char *)&temp[len], sizeof(temp) - len,
@@ -1009,7 +1009,7 @@ static void sendsuboption(struct connectdata *conn, int option)
   unsigned char*uc1, *uc2;
 
   struct SessionHandle *data = conn->data;
   unsigned char*uc1, *uc2;
 
   struct SessionHandle *data = conn->data;
-  struct TELNET *tn = (struct TELNET *)data->state.proto.telnet;
+  struct TELNET *tn = (struct TELNET *)data->req.protop;
 
   switch (option) {
   case CURL_TELOPT_NAWS:
 
   switch (option) {
   case CURL_TELOPT_NAWS:
@@ -1067,7 +1067,7 @@ CURLcode telrcv(struct connectdata *conn,
   int in = 0;
   int startwrite=-1;
   struct SessionHandle *data = conn->data;
   int in = 0;
   int startwrite=-1;
   struct SessionHandle *data = conn->data;
-  struct TELNET *tn = (struct TELNET *)data->state.proto.telnet;
+  struct TELNET *tn = (struct TELNET *)data->req.protop;
 
 #define startskipping()                                       \
   if(startwrite >= 0) {                                       \
 
 #define startskipping()                                       \
   if(startwrite >= 0) {                                       \
@@ -1075,7 +1075,7 @@ CURLcode telrcv(struct connectdata *conn,
                                CLIENTWRITE_BODY,              \
                                (char *)&inbuf[startwrite],    \
                                in-startwrite);                \
                                CLIENTWRITE_BODY,              \
                                (char *)&inbuf[startwrite],    \
                                in-startwrite);                \
-    if(result != CURLE_OK)                                    \
+    if(result)                                                \
       return result;                                          \
   }                                                           \
   startwrite = -1
       return result;                                          \
   }                                                           \
   startwrite = -1
@@ -1229,9 +1229,9 @@ static CURLcode send_telnet_data(struct connectdata *conn,
   unsigned char outbuf[2];
   ssize_t bytes_written, total_written;
   int out_count;
   unsigned char outbuf[2];
   ssize_t bytes_written, total_written;
   int out_count;
-  CURLcode rc = CURLE_OK;
+  CURLcode result = CURLE_OK;
 
 
-  while(rc == CURLE_OK && nread--) {
+  while(!result && nread--) {
     outbuf[0] = *buffer++;
     out_count = 1;
     if(outbuf[0] == CURL_IAC)
     outbuf[0] = *buffer++;
     out_count = 1;
     if(outbuf[0] == CURL_IAC)
@@ -1246,25 +1246,26 @@ static CURLcode send_telnet_data(struct connectdata *conn,
       switch (Curl_poll(pfd, 1, -1)) {
         case -1:                    /* error, abort writing */
         case 0:                     /* timeout (will never happen) */
       switch (Curl_poll(pfd, 1, -1)) {
         case -1:                    /* error, abort writing */
         case 0:                     /* timeout (will never happen) */
-          rc = CURLE_SEND_ERROR;
+          result = CURLE_SEND_ERROR;
           break;
         default:                    /* write! */
           bytes_written = 0;
           break;
         default:                    /* write! */
           bytes_written = 0;
-          rc = Curl_write(conn, conn->sock[FIRSTSOCKET], outbuf+total_written,
-                          out_count-total_written, &bytes_written);
+          result = Curl_write(conn, conn->sock[FIRSTSOCKET],
+                              outbuf+total_written, out_count-total_written,
+                              &bytes_written);
           total_written += bytes_written;
           break;
       }
           total_written += bytes_written;
           break;
       }
-    /* handle partial write */
-    } while(rc == CURLE_OK && total_written < out_count);
+      /* handle partial write */
+    } while(!result && total_written < out_count);
   }
   }
-  return rc;
+  return result;
 }
 
 static CURLcode telnet_done(struct connectdata *conn,
                                  CURLcode status, bool premature)
 {
 }
 
 static CURLcode telnet_done(struct connectdata *conn,
                                  CURLcode status, bool premature)
 {
-  struct TELNET *tn = (struct TELNET *)conn->data->state.proto.telnet;
+  struct TELNET *tn = (struct TELNET *)conn->data->req.protop;
   (void)status; /* unused */
   (void)premature; /* not used */
 
   (void)status; /* unused */
   (void)premature; /* not used */
 
@@ -1274,7 +1275,7 @@ static CURLcode telnet_done(struct connectdata *conn,
   curl_slist_free_all(tn->telnet_vars);
   tn->telnet_vars = NULL;
 
   curl_slist_free_all(tn->telnet_vars);
   tn->telnet_vars = NULL;
 
-  Curl_safefree(conn->data->state.proto.telnet);
+  Curl_safefree(conn->data->req.protop);
 
   return CURLE_OK;
 }
 
   return CURLE_OK;
 }
@@ -1318,7 +1319,7 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done)
   if(code)
     return code;
 
   if(code)
     return code;
 
-  tn = (struct TELNET *)data->state.proto.telnet;
+  tn = (struct TELNET *)data->req.protop;
 
   code = check_telnet_options(conn);
   if(code)
 
   code = check_telnet_options(conn);
   if(code)
@@ -1491,6 +1492,7 @@ static CURLcode telnet_do(struct connectdata *conn, bool *done)
 
     case WAIT_OBJECT_0:
 
 
     case WAIT_OBJECT_0:
 
+      events.lNetworkEvents = 0;
       if(SOCKET_ERROR == enum_netevents_func(sockfd, event_handle, &events)) {
         if((err = SOCKERRNO) != EINPROGRESS) {
           infof(data,"WSAEnumNetworkEvents failed (%d)", err);
       if(SOCKET_ERROR == enum_netevents_func(sockfd, event_handle, &events)) {
         if((err = SOCKERRNO) != EINPROGRESS) {
           infof(data,"WSAEnumNetworkEvents failed (%d)", err);
index ef740b8..b9723c0 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -56,6 +56,7 @@
 #include "multiif.h"
 #include "url.h"
 #include "rawstr.h"
 #include "multiif.h"
 #include "url.h"
 #include "rawstr.h"
+#include "speedcheck.h"
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
@@ -416,32 +417,32 @@ static size_t tftp_option_add(tftp_state_data_t *state, size_t csize,
 static CURLcode tftp_connect_for_tx(tftp_state_data_t *state,
                                     tftp_event_t event)
 {
 static CURLcode tftp_connect_for_tx(tftp_state_data_t *state,
                                     tftp_event_t event)
 {
-  CURLcode res;
+  CURLcode result;
 #ifndef CURL_DISABLE_VERBOSE_STRINGS
   struct SessionHandle *data = state->conn->data;
 
   infof(data, "%s\n", "Connected for transmit");
 #endif
   state->state = TFTP_STATE_TX;
 #ifndef CURL_DISABLE_VERBOSE_STRINGS
   struct SessionHandle *data = state->conn->data;
 
   infof(data, "%s\n", "Connected for transmit");
 #endif
   state->state = TFTP_STATE_TX;
-  res = tftp_set_timeouts(state);
-  if(res != CURLE_OK)
-    return(res);
+  result = tftp_set_timeouts(state);
+  if(result)
+    return(result);
   return tftp_tx(state, event);
 }
 
 static CURLcode tftp_connect_for_rx(tftp_state_data_t *state,
                                     tftp_event_t event)
 {
   return tftp_tx(state, event);
 }
 
 static CURLcode tftp_connect_for_rx(tftp_state_data_t *state,
                                     tftp_event_t event)
 {
-  CURLcode res;
+  CURLcode result;
 #ifndef CURL_DISABLE_VERBOSE_STRINGS
   struct SessionHandle *data = state->conn->data;
 
   infof(data, "%s\n", "Connected for receive");
 #endif
   state->state = TFTP_STATE_RX;
 #ifndef CURL_DISABLE_VERBOSE_STRINGS
   struct SessionHandle *data = state->conn->data;
 
   infof(data, "%s\n", "Connected for receive");
 #endif
   state->state = TFTP_STATE_RX;
-  res = tftp_set_timeouts(state);
-  if(res != CURLE_OK)
-    return(res);
+  result = tftp_set_timeouts(state);
+  if(result)
+    return(result);
   return tftp_rx(state, event);
 }
 
   return tftp_rx(state, event);
 }
 
@@ -476,8 +477,8 @@ static CURLcode tftp_send_first(tftp_state_data_t *state, tftp_event_t event)
       setpacketevent(&state->spacket, TFTP_EVENT_WRQ);
       state->conn->data->req.upload_fromhere =
         (char *)state->spacket.data+4;
       setpacketevent(&state->spacket, TFTP_EVENT_WRQ);
       state->conn->data->req.upload_fromhere =
         (char *)state->spacket.data+4;
-      if(data->set.infilesize != -1)
-        Curl_pgrsSetUploadSize(data, data->set.infilesize);
+      if(data->state.infilesize != -1)
+        Curl_pgrsSetUploadSize(data, data->state.infilesize);
     }
     else {
       /* If we are downloading, send an RRQ */
     }
     else {
       /* If we are downloading, send an RRQ */
@@ -497,8 +498,9 @@ static CURLcode tftp_send_first(tftp_state_data_t *state, tftp_event_t event)
     sbytes = 4 + strlen(filename) + strlen(mode);
 
     /* add tsize option */
     sbytes = 4 + strlen(filename) + strlen(mode);
 
     /* add tsize option */
-    if(data->set.upload && (data->set.infilesize != -1))
-      snprintf( buf, sizeof(buf), "%" FORMAT_OFF_T, data->set.infilesize );
+    if(data->set.upload && (data->state.infilesize != -1))
+      snprintf(buf, sizeof(buf), "%" CURL_FORMAT_CURL_OFF_T,
+               data->state.infilesize);
     else
       strcpy(buf, "0"); /* the destination is large enough */
 
     else
       strcpy(buf, "0"); /* the destination is large enough */
 
@@ -947,10 +949,6 @@ static CURLcode tftp_connect(struct connectdata *conn, bool *done)
 
   blksize = TFTP_BLKSIZE_DEFAULT;
 
 
   blksize = TFTP_BLKSIZE_DEFAULT;
 
-  /* If there already is a protocol-specific struct allocated for this
-     sessionhandle, deal with it */
-  Curl_reset_reqproto(conn);
-
   state = conn->proto.tftpc = calloc(1, sizeof(tftp_state_data_t));
   if(!state)
     return CURLE_OUT_OF_MEMORY;
   state = conn->proto.tftpc = calloc(1, sizeof(tftp_state_data_t));
   if(!state)
     return CURLE_OUT_OF_MEMORY;
@@ -976,9 +974,9 @@ static CURLcode tftp_connect(struct connectdata *conn, bool *done)
       return CURLE_OUT_OF_MEMORY;
   }
 
       return CURLE_OUT_OF_MEMORY;
   }
 
-  conn->bits.close = TRUE; /* we don't keep TFTP connections up bascially
-                              because there's none or very little gain for UDP
-                           */
+  /* we don't keep TFTP connections up bascially because there's none or very
+   * little gain for UDP */
+  connclose(conn, "TFTP");
 
   state->conn = conn;
   state->sockfd = state->conn->sock[FIRSTSOCKET];
 
   state->conn = conn;
   state->sockfd = state->conn->sock[FIRSTSOCKET];
@@ -1043,7 +1041,8 @@ static CURLcode tftp_done(struct connectdata *conn, CURLcode status,
     return CURLE_ABORTED_BY_CALLBACK;
 
   /* If we have encountered an error */
     return CURLE_ABORTED_BY_CALLBACK;
 
   /* If we have encountered an error */
-  code = tftp_translate_code(state->error);
+  if(state)
+    code = tftp_translate_code(state->error);
 
   return code;
 }
 
   return code;
 }
@@ -1209,7 +1208,7 @@ static CURLcode tftp_multi_statemach(struct connectdata *conn, bool *done)
   }
   else if(event != TFTP_EVENT_NONE) {
     result = tftp_state_machine(state, event);
   }
   else if(event != TFTP_EVENT_NONE) {
     result = tftp_state_machine(state, event);
-    if(result != CURLE_OK)
+    if(result)
       return(result);
     *done = (state->state == TFTP_STATE_FIN) ? TRUE : FALSE;
     if(*done)
       return(result);
     *done = (state->state == TFTP_STATE_FIN) ? TRUE : FALSE;
     if(*done)
@@ -1228,10 +1227,10 @@ static CURLcode tftp_multi_statemach(struct connectdata *conn, bool *done)
     }
     else if(rc != 0) {
       result = tftp_receive_packet(conn);
     }
     else if(rc != 0) {
       result = tftp_receive_packet(conn);
-      if(result != CURLE_OK)
+      if(result)
         return(result);
       result = tftp_state_machine(state, state->event);
         return(result);
       result = tftp_state_machine(state, state->event);
-      if(result != CURLE_OK)
+      if(result)
         return(result);
       *done = (state->state == TFTP_STATE_FIN) ? TRUE : FALSE;
       if(*done)
         return(result);
       *done = (state->state == TFTP_STATE_FIN) ? TRUE : FALSE;
       if(*done)
@@ -1259,6 +1258,15 @@ static CURLcode tftp_doing(struct connectdata *conn, bool *dophase_done)
   if(*dophase_done) {
     DEBUGF(infof(conn->data, "DO phase is complete\n"));
   }
   if(*dophase_done) {
     DEBUGF(infof(conn->data, "DO phase is complete\n"));
   }
+  else if(!result) {
+    /* The multi code doesn't have this logic for the DOING state so we
+       provide it for TFTP since it may do the entire transfer in this
+       state. */
+    if(Curl_pgrsUpdate(conn))
+      result = CURLE_ABORTED_BY_CALLBACK;
+    else
+      result = Curl_speedcheck(conn->data, Curl_tvnow());
+  }
   return result;
 }
 
   return result;
 }
 
@@ -1278,8 +1286,8 @@ static CURLcode tftp_perform(struct connectdata *conn, bool *dophase_done)
 
   result = tftp_state_machine(state, TFTP_EVENT_INIT);
 
 
   result = tftp_state_machine(state, TFTP_EVENT_INIT);
 
-  if(state->state == TFTP_STATE_FIN || result != CURLE_OK)
-    return(result);
+  if((state->state == TFTP_STATE_FIN) || result)
+    return result;
 
   tftp_multi_statemach(conn, dophase_done);
 
 
   tftp_multi_statemach(conn, dophase_done);
 
@@ -1302,35 +1310,30 @@ static CURLcode tftp_perform(struct connectdata *conn, bool *dophase_done)
 
 static CURLcode tftp_do(struct connectdata *conn, bool *done)
 {
 
 static CURLcode tftp_do(struct connectdata *conn, bool *done)
 {
-  tftp_state_data_t     *state;
-  CURLcode              code;
+  tftp_state_data_t *state;
+  CURLcode result;
 
   *done = FALSE;
 
 
   *done = FALSE;
 
-  /*
-    Since connections can be re-used between SessionHandles, this might be a
-    connection already existing but on a fresh SessionHandle struct so we must
-    make sure we have a good 'struct TFTP' to play with. For new connections,
-    the struct TFTP is allocated and setup in the tftp_connect() function.
-  */
-  Curl_reset_reqproto(conn);
-
   if(!conn->proto.tftpc) {
   if(!conn->proto.tftpc) {
-    code = tftp_connect(conn, done);
-    if(code)
-      return code;
+    result = tftp_connect(conn, done);
+    if(result)
+      return result;
   }
   }
+
   state = (tftp_state_data_t *)conn->proto.tftpc;
   state = (tftp_state_data_t *)conn->proto.tftpc;
+  if(!state)
+    return CURLE_BAD_CALLING_ORDER;
 
 
-  code = tftp_perform(conn, done);
+  result = tftp_perform(conn, done);
 
   /* If tftp_perform() returned an error, use that for return code. If it
      was OK, see if tftp_translate_code() has an error. */
 
   /* If tftp_perform() returned an error, use that for return code. If it
      was OK, see if tftp_translate_code() has an error. */
-  if(code == CURLE_OK)
+  if(!result)
     /* If we have encountered an internal tftp error, translate it. */
     /* If we have encountered an internal tftp error, translate it. */
-    code = tftp_translate_code(state->error);
+    result = tftp_translate_code(state->error);
 
 
-  return code;
+  return result;
 }
 
 static CURLcode tftp_setup_connection(struct connectdata * conn)
 }
 
 static CURLcode tftp_setup_connection(struct connectdata * conn)
index 2fd7201..769eb3c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -32,9 +32,17 @@ struct timeval curlx_tvnow(void)
   ** increases monotonically and wraps once 49.7 days have elapsed.
   */
   struct timeval now;
   ** increases monotonically and wraps once 49.7 days have elapsed.
   */
   struct timeval now;
+#if !defined(_WIN32_WINNT) || !defined(_WIN32_WINNT_VISTA) || \
+    (_WIN32_WINNT < _WIN32_WINNT_VISTA)
   DWORD milliseconds = GetTickCount();
   now.tv_sec = milliseconds / 1000;
   now.tv_usec = (milliseconds % 1000) * 1000;
   DWORD milliseconds = GetTickCount();
   now.tv_sec = milliseconds / 1000;
   now.tv_usec = (milliseconds % 1000) * 1000;
+#else
+  ULONGLONG milliseconds = GetTickCount64();
+  now.tv_sec = (long) (milliseconds / 1000);
+  now.tv_usec = (long) (milliseconds % 1000) * 1000;
+#endif
+
   return now;
 }
 
   return now;
 }
 
index db0318d..a7ab08e 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -70,7 +70,7 @@
 #include "http.h"
 #include "url.h"
 #include "getinfo.h"
 #include "http.h"
 #include "url.h"
 #include "getinfo.h"
-#include "sslgen.h"
+#include "vtls/vtls.h"
 #include "http_digest.h"
 #include "curl_ntlm.h"
 #include "http_negotiate.h"
 #include "http_digest.h"
 #include "curl_ntlm.h"
 #include "http_negotiate.h"
@@ -87,8 +87,6 @@
 /* The last #include file should be: */
 #include "memdebug.h"
 
 /* The last #include file should be: */
 #include "memdebug.h"
 
-#define CURL_TIMEOUT_EXPECT_100 1000 /* counting ms here */
-
 /*
  * This function will call the read callback to fill our buffer with data
  * to upload.
 /*
  * This function will call the read callback to fill our buffer with data
  * to upload.
@@ -101,11 +99,13 @@ CURLcode Curl_fillreadbuffer(struct connectdata *conn, int bytes, int *nreadp)
 #ifdef CURL_DOES_CONVERSIONS
   bool sending_http_headers = FALSE;
 
 #ifdef CURL_DOES_CONVERSIONS
   bool sending_http_headers = FALSE;
 
-  if((conn->handler->protocol&(CURLPROTO_HTTP|CURLPROTO_RTSP)) &&
-     (data->state.proto.http->sending == HTTPSEND_REQUEST)) {
-    /* We're sending the HTTP request headers, not the data.
-       Remember that so we don't re-translate them into garbage. */
-    sending_http_headers = TRUE;
+  if(conn->handler->protocol&(PROTO_FAMILY_HTTP|CURLPROTO_RTSP)) {
+    const struct HTTP *http = data->req.protop;
+
+    if(http->sending == HTTPSEND_REQUEST)
+      /* We're sending the HTTP request headers, not the data.
+         Remember that so we don't re-translate them into garbage. */
+      sending_http_headers = TRUE;
   }
 #endif
 
   }
 #endif
 
@@ -126,14 +126,24 @@ CURLcode Curl_fillreadbuffer(struct connectdata *conn, int bytes, int *nreadp)
     return CURLE_ABORTED_BY_CALLBACK;
   }
   else if(nread == CURL_READFUNC_PAUSE) {
     return CURLE_ABORTED_BY_CALLBACK;
   }
   else if(nread == CURL_READFUNC_PAUSE) {
-    struct SingleRequest *k = &data->req;
-    /* CURL_READFUNC_PAUSE pauses read callbacks that feed socket writes */
-    k->keepon |= KEEP_SEND_PAUSE; /* mark socket send as paused */
-    if(data->req.upload_chunky) {
-      /* Back out the preallocation done above */
-      data->req.upload_fromhere -= (8 + 2);
+
+    if(conn->handler->flags & PROTOPT_NONETWORK) {
+      /* protocols that work without network cannot be paused. This is
+         actually only FILE:// just now, and it can't pause since the transfer
+         isn't done using the "normal" procedure. */
+      failf(data, "Read callback asked for PAUSE when not supported!");
+      return CURLE_READ_ERROR;
+    }
+    else {
+      struct SingleRequest *k = &data->req;
+      /* CURL_READFUNC_PAUSE pauses read callbacks that feed socket writes */
+      k->keepon |= KEEP_SEND_PAUSE; /* mark socket send as paused */
+      if(data->req.upload_chunky) {
+        /* Back out the preallocation done above */
+        data->req.upload_fromhere -= (8 + 2);
+      }
+      *nreadp = 0;
     }
     }
-    *nreadp = 0;
     return CURLE_OK; /* nothing was read */
   }
   else if((size_t)nread > buffersize) {
     return CURLE_OK; /* nothing was read */
   }
   else if((size_t)nread > buffersize) {
@@ -193,7 +203,7 @@ CURLcode Curl_fillreadbuffer(struct connectdata *conn, int bytes, int *nreadp)
            strlen(endofline_network));
 
 #ifdef CURL_DOES_CONVERSIONS
            strlen(endofline_network));
 
 #ifdef CURL_DOES_CONVERSIONS
-    CURLcode res;
+    CURLcode result;
     int length;
     if(data->set.prefer_ascii) {
       /* translate the protocol and data */
     int length;
     if(data->set.prefer_ascii) {
       /* translate the protocol and data */
@@ -203,10 +213,10 @@ CURLcode Curl_fillreadbuffer(struct connectdata *conn, int bytes, int *nreadp)
       /* just translate the protocol portion */
       length = strlen(hexbuffer);
     }
       /* just translate the protocol portion */
       length = strlen(hexbuffer);
     }
-    res = Curl_convert_to_network(data, data->req.upload_fromhere, length);
+    result = Curl_convert_to_network(data, data->req.upload_fromhere, length);
     /* Curl_convert_to_network calls failf if unsuccessful */
     /* Curl_convert_to_network calls failf if unsuccessful */
-    if(res)
-      return(res);
+    if(result)
+      return(result);
 #endif /* CURL_DOES_CONVERSIONS */
 
     if((nread - hexlen) == 0)
 #endif /* CURL_DOES_CONVERSIONS */
 
     if((nread - hexlen) == 0)
@@ -217,11 +227,11 @@ CURLcode Curl_fillreadbuffer(struct connectdata *conn, int bytes, int *nreadp)
   }
 #ifdef CURL_DOES_CONVERSIONS
   else if((data->set.prefer_ascii) && (!sending_http_headers)) {
   }
 #ifdef CURL_DOES_CONVERSIONS
   else if((data->set.prefer_ascii) && (!sending_http_headers)) {
-    CURLcode res;
-    res = Curl_convert_to_network(data, data->req.upload_fromhere, nread);
+    CURLcode result;
+    result = Curl_convert_to_network(data, data->req.upload_fromhere, nread);
     /* Curl_convert_to_network calls failf if unsuccessful */
     /* Curl_convert_to_network calls failf if unsuccessful */
-    if(res != CURLE_OK)
-      return(res);
+    if(result)
+      return result;
   }
 #endif /* CURL_DOES_CONVERSIONS */
 
   }
 #endif /* CURL_DOES_CONVERSIONS */
 
@@ -300,7 +310,20 @@ static int data_pending(const struct connectdata *conn)
   /* in the case of libssh2, we can never be really sure that we have emptied
      its internal buffers so we MUST always try until we get EAGAIN back */
   return conn->handler->protocol&(CURLPROTO_SCP|CURLPROTO_SFTP) ||
   /* in the case of libssh2, we can never be really sure that we have emptied
      its internal buffers so we MUST always try until we get EAGAIN back */
   return conn->handler->protocol&(CURLPROTO_SCP|CURLPROTO_SFTP) ||
+#if defined(USE_NGHTTP2)
+    Curl_ssl_data_pending(conn, FIRSTSOCKET) ||
+    /* For HTTP/2, we may read up everything including responde body
+       with header fields in Curl_http_readwrite_headers. If no
+       content-length is provided, curl waits for the connection
+       close, which we emulate it using conn->proto.httpc.closed =
+       TRUE. The thing is if we read everything, then http2_recv won't
+       be called and we cannot signal the HTTP/2 stream has closed. As
+       a workaround, we return nonzero here to call http2_recv. */
+    ((conn->handler->protocol&PROTO_FAMILY_HTTP) && conn->httpversion == 20 &&
+     conn->proto.httpc.closed);
+#else
     Curl_ssl_data_pending(conn, FIRSTSOCKET);
     Curl_ssl_data_pending(conn, FIRSTSOCKET);
+#endif
 }
 
 static void read_rewind(struct connectdata *conn,
 }
 
 static void read_rewind(struct connectdata *conn,
@@ -504,7 +527,7 @@ static CURLcode readwrite_data(struct SessionHandle *data,
       if(0 == k->bodywrites && !is_empty_data) {
         /* These checks are only made the first time we are about to
            write a piece of the body */
       if(0 == k->bodywrites && !is_empty_data) {
         /* These checks are only made the first time we are about to
            write a piece of the body */
-        if(conn->handler->protocol&(CURLPROTO_HTTP|CURLPROTO_RTSP)) {
+        if(conn->handler->protocol&(PROTO_FAMILY_HTTP|CURLPROTO_RTSP)) {
           /* HTTP-only checks */
 
           if(data->req.newurl) {
           /* HTTP-only checks */
 
           if(data->req.newurl) {
@@ -524,6 +547,18 @@ static CURLcode readwrite_data(struct SessionHandle *data,
           if(data->state.resume_from && !k->content_range &&
              (data->set.httpreq==HTTPREQ_GET) &&
              !k->ignorebody) {
           if(data->state.resume_from && !k->content_range &&
              (data->set.httpreq==HTTPREQ_GET) &&
              !k->ignorebody) {
+
+            if(k->size == data->state.resume_from) {
+              /* The resume point is at the end of file, consider this fine
+                 even if it doesn't allow resume from here. */
+              infof(data, "The entire document is already downloaded");
+              connclose(conn, "already downloaded");
+              /* Abort download */
+              k->keepon &= ~KEEP_RECV;
+              *done = TRUE;
+              return CURLE_OK;
+            }
+
             /* we wanted to resume a download, although the server doesn't
              * seem to support this and we did this with a GET (if it
              * wasn't a GET we did a POST or PUT resume) */
             /* we wanted to resume a download, although the server doesn't
              * seem to support this and we did this with a GET (if it
              * wasn't a GET we did a POST or PUT resume) */
@@ -540,9 +575,13 @@ static CURLcode readwrite_data(struct SessionHandle *data,
 
             if(!Curl_meets_timecondition(data, k->timeofdoc)) {
               *done = TRUE;
 
             if(!Curl_meets_timecondition(data, k->timeofdoc)) {
               *done = TRUE;
+              /* We're simulating a http 304 from server so we return
+                 what should have been returned from the server */
+              data->info.httpcode = 304;
+              infof(data, "Simulate a HTTP 304 response!\n");
               /* we abort the transfer before it is completed == we ruin the
                  re-use ability. Close the connection */
               /* we abort the transfer before it is completed == we ruin the
                  re-use ability. Close the connection */
-              conn->bits.close = TRUE;
+              connclose(conn, "Simulated 304 handling");
               return CURLE_OK;
             }
           } /* we have a time condition */
               return CURLE_OK;
             }
           } /* we have a time condition */
@@ -584,7 +623,7 @@ static CURLcode readwrite_data(struct SessionHandle *data,
             failf(data, "Failed writing data");
             return CURLE_WRITE_ERROR;
           }
             failf(data, "Failed writing data");
             return CURLE_WRITE_ERROR;
           }
-          failf(data, "Problem (%d) in the Chunked-Encoded data", (int)res);
+          failf(data, "%s in chunked-encoding", Curl_chunked_strerror(res));
           return CURLE_RECV_ERROR;
         }
         else if(CHUNKE_STOP == res) {
           return CURLE_RECV_ERROR;
         }
         else if(CHUNKE_STOP == res) {
@@ -630,9 +669,9 @@ static CURLcode readwrite_data(struct SessionHandle *data,
                always will fit in a size_t */
             infof(data,
                   "Rewinding stream by : %zu"
                always will fit in a size_t */
             infof(data,
                   "Rewinding stream by : %zu"
-                  " bytes on url %s (size = %" FORMAT_OFF_T
-                  ", maxdownload = %" FORMAT_OFF_T
-                  ", bytecount = %" FORMAT_OFF_T ", nread = %zd)\n",
+                  " bytes on url %s (size = %" CURL_FORMAT_CURL_OFF_T
+                  ", maxdownload = %" CURL_FORMAT_CURL_OFF_T
+                  ", bytecount = %" CURL_FORMAT_CURL_OFF_T ", nread = %zd)\n",
                   excess, data->state.path,
                   k->size, k->maxdownload, k->bytecount, nread);
             read_rewind(conn, excess);
                   excess, data->state.path,
                   k->size, k->maxdownload, k->bytecount, nread);
             read_rewind(conn, excess);
@@ -641,9 +680,9 @@ static CURLcode readwrite_data(struct SessionHandle *data,
             infof(data,
                   "Excess found in a non pipelined read:"
                   " excess = %zu"
             infof(data,
                   "Excess found in a non pipelined read:"
                   " excess = %zu"
-                  ", size = %" FORMAT_OFF_T
-                  ", maxdownload = %" FORMAT_OFF_T
-                  ", bytecount = %" FORMAT_OFF_T "\n",
+                  ", size = %" CURL_FORMAT_CURL_OFF_T
+                  ", maxdownload = %" CURL_FORMAT_CURL_OFF_T
+                  ", bytecount = %" CURL_FORMAT_CURL_OFF_T "\n",
                   excess, k->size, k->maxdownload, k->bytecount);
           }
         }
                   excess, k->size, k->maxdownload, k->bytecount);
           }
         }
@@ -696,7 +735,7 @@ static CURLcode readwrite_data(struct SessionHandle *data,
             if(!k->ignorebody) {
 
 #ifndef CURL_DISABLE_POP3
             if(!k->ignorebody) {
 
 #ifndef CURL_DISABLE_POP3
-              if(conn->handler->protocol&CURLPROTO_POP3)
+              if(conn->handler->protocol&PROTO_FAMILY_POP3)
                 result = Curl_pop3_write(conn, k->str, nread);
               else
 #endif /* CURL_DISABLE_POP3 */
                 result = Curl_pop3_write(conn, k->str, nread);
               else
 #endif /* CURL_DISABLE_POP3 */
@@ -810,9 +849,10 @@ static CURLcode readwrite_upload(struct SessionHandle *data,
         /* HTTP pollution, this should be written nicer to become more
            protocol agnostic. */
         int fillcount;
         /* HTTP pollution, this should be written nicer to become more
            protocol agnostic. */
         int fillcount;
+        struct HTTP *http = data->req.protop;
 
         if((k->exp100 == EXP100_SENDING_REQUEST) &&
 
         if((k->exp100 == EXP100_SENDING_REQUEST) &&
-           (data->state.proto.http->sending == HTTPSEND_BODY)) {
+           (http->sending == HTTPSEND_BODY)) {
           /* If this call is to send body data, we must take some action:
              We have sent off the full HTTP 1.1 request, and we shall now
              go into the Expect: 100 state and await such a header */
           /* If this call is to send body data, we must take some action:
              We have sent off the full HTTP 1.1 request, and we shall now
              go into the Expect: 100 state and await such a header */
@@ -822,12 +862,12 @@ static CURLcode readwrite_upload(struct SessionHandle *data,
           *didwhat &= ~KEEP_SEND;  /* we didn't write anything actually */
 
           /* set a timeout for the multi interface */
           *didwhat &= ~KEEP_SEND;  /* we didn't write anything actually */
 
           /* set a timeout for the multi interface */
-          Curl_expire(data, CURL_TIMEOUT_EXPECT_100);
+          Curl_expire(data, data->set.expect_100_timeout);
           break;
         }
 
           break;
         }
 
-        if(conn->handler->protocol&(CURLPROTO_HTTP|CURLPROTO_RTSP)) {
-          if(data->state.proto.http->sending == HTTPSEND_REQUEST)
+        if(conn->handler->protocol&(PROTO_FAMILY_HTTP|CURLPROTO_RTSP)) {
+          if(http->sending == HTTPSEND_REQUEST)
             /* We're sending the HTTP request headers, not the data.
                Remember that so we don't change the line endings. */
             sending_http_headers = TRUE;
             /* We're sending the HTTP request headers, not the data.
                Remember that so we don't change the line endings. */
             sending_http_headers = TRUE;
@@ -863,15 +903,6 @@ static CURLcode readwrite_upload(struct SessionHandle *data,
       /* store number of bytes available for upload */
       data->req.upload_present = nread;
 
       /* store number of bytes available for upload */
       data->req.upload_present = nread;
 
-#ifndef CURL_DISABLE_SMTP
-      if(conn->handler->protocol & CURLPROTO_SMTP) {
-        result = Curl_smtp_escape_eob(conn, nread);
-        if(result)
-          return result;
-      }
-      else
-#endif /* CURL_DISABLE_SMTP */
-
       /* convert LF to CRLF if so asked */
       if((!sending_http_headers) && (
 #ifdef CURL_DO_LINEEND_CONV
       /* convert LF to CRLF if so asked */
       if((!sending_http_headers) && (
 #ifdef CURL_DO_LINEEND_CONV
@@ -879,12 +910,16 @@ static CURLcode readwrite_upload(struct SessionHandle *data,
          (data->set.prefer_ascii) ||
 #endif
          (data->set.crlf))) {
          (data->set.prefer_ascii) ||
 #endif
          (data->set.crlf))) {
-        if(data->state.scratch == NULL)
-          data->state.scratch = malloc(2*BUFSIZE);
-        if(data->state.scratch == NULL) {
-          failf (data, "Failed to alloc scratch buffer!");
-          return CURLE_OUT_OF_MEMORY;
+        /* Do we need to allocate a scratch buffer? */
+        if(!data->state.scratch) {
+          data->state.scratch = malloc(2 * BUFSIZE);
+          if(!data->state.scratch) {
+            failf(data, "Failed to alloc scratch buffer!");
+
+            return CURLE_OUT_OF_MEMORY;
+          }
         }
         }
+
         /*
          * ASCII/EBCDIC Note: This is presumably a text (not binary)
          * transfer so the data should already be in ASCII.
         /*
          * ASCII/EBCDIC Note: This is presumably a text (not binary)
          * transfer so the data should already be in ASCII.
@@ -898,12 +933,13 @@ static CURLcode readwrite_upload(struct SessionHandle *data,
             if(!data->set.crlf) {
               /* we're here only because FTP is in ASCII mode...
                  bump infilesize for the LF we just added */
             if(!data->set.crlf) {
               /* we're here only because FTP is in ASCII mode...
                  bump infilesize for the LF we just added */
-              data->set.infilesize++;
+              data->state.infilesize++;
             }
           }
           else
             data->state.scratch[si] = data->req.upload_fromhere[i];
         }
             }
           }
           else
             data->state.scratch[si] = data->req.upload_fromhere[i];
         }
+
         if(si != nread) {
           /* only perform the special operation if we really did replace
              anything */
         if(si != nread) {
           /* only perform the special operation if we really did replace
              anything */
@@ -916,6 +952,14 @@ static CURLcode readwrite_upload(struct SessionHandle *data,
           data->req.upload_present = nread;
         }
       }
           data->req.upload_present = nread;
         }
       }
+
+#ifndef CURL_DISABLE_SMTP
+      if(conn->handler->protocol & PROTO_FAMILY_SMTP) {
+        result = Curl_smtp_escape_eob(conn, nread);
+        if(result)
+          return result;
+      }
+#endif /* CURL_DISABLE_SMTP */
     } /* if 0 == data->req.upload_present */
     else {
       /* We have a partial buffer left from a previous "round". Use
     } /* if 0 == data->req.upload_present */
     else {
       /* We have a partial buffer left from a previous "round". Use
@@ -939,7 +983,7 @@ static CURLcode readwrite_upload(struct SessionHandle *data,
 
     k->writebytecount += bytes_written;
 
 
     k->writebytecount += bytes_written;
 
-    if(k->writebytecount == data->set.infilesize) {
+    if(k->writebytecount == data->state.infilesize) {
       /* we have sent all data we were supposed to */
       k->upload_done = TRUE;
       infof(data, "We are completely uploaded and fine\n");
       /* we have sent all data we were supposed to */
       k->upload_done = TRUE;
       infof(data, "We are completely uploaded and fine\n");
@@ -1058,7 +1102,7 @@ CURLcode Curl_readwrite(struct connectdata *conn,
       */
 
       long ms = Curl_tvdiff(k->now, k->start100);
       */
 
       long ms = Curl_tvdiff(k->now, k->start100);
-      if(ms > CURL_TIMEOUT_EXPECT_100) {
+      if(ms >= data->set.expect_100_timeout) {
         /* we've waited long enough, continue anyway */
         k->exp100 = EXP100_SEND_DATA;
         k->keepon |= KEEP_SEND;
         /* we've waited long enough, continue anyway */
         k->exp100 = EXP100_SEND_DATA;
         k->keepon |= KEEP_SEND;
@@ -1078,13 +1122,14 @@ CURLcode Curl_readwrite(struct connectdata *conn,
     if(0 > Curl_timeleft(data, &k->now, FALSE)) {
       if(k->size != -1) {
         failf(data, "Operation timed out after %ld milliseconds with %"
     if(0 > Curl_timeleft(data, &k->now, FALSE)) {
       if(k->size != -1) {
         failf(data, "Operation timed out after %ld milliseconds with %"
-              FORMAT_OFF_T " out of %" FORMAT_OFF_T " bytes received",
+              CURL_FORMAT_CURL_OFF_T " out of %"
+              CURL_FORMAT_CURL_OFF_T " bytes received",
               Curl_tvdiff(k->now, data->progress.t_startsingle), k->bytecount,
               k->size);
       }
       else {
         failf(data, "Operation timed out after %ld milliseconds with %"
               Curl_tvdiff(k->now, data->progress.t_startsingle), k->bytecount,
               k->size);
       }
       else {
         failf(data, "Operation timed out after %ld milliseconds with %"
-              FORMAT_OFF_T " bytes received",
+              CURL_FORMAT_CURL_OFF_T " bytes received",
               Curl_tvdiff(k->now, data->progress.t_startsingle), k->bytecount);
       }
       return CURLE_OPERATION_TIMEDOUT;
               Curl_tvdiff(k->now, data->progress.t_startsingle), k->bytecount);
       }
       return CURLE_OPERATION_TIMEDOUT;
@@ -1106,7 +1151,7 @@ CURLcode Curl_readwrite(struct connectdata *conn,
        (k->bytecount != (k->size + data->state.crlf_conversions)) &&
 #endif /* CURL_DO_LINEEND_CONV */
        !data->req.newurl) {
        (k->bytecount != (k->size + data->state.crlf_conversions)) &&
 #endif /* CURL_DO_LINEEND_CONV */
        !data->req.newurl) {
-      failf(data, "transfer closed with %" FORMAT_OFF_T
+      failf(data, "transfer closed with %" CURL_FORMAT_CURL_OFF_T
             " bytes remaining to read",
             k->size - k->bytecount);
       return CURLE_PARTIAL_FILE;
             " bytes remaining to read",
             k->size - k->bytecount);
       return CURLE_PARTIAL_FILE;
@@ -1173,10 +1218,10 @@ int Curl_single_getsock(const struct connectdata *conn,
   if((data->req.keepon & KEEP_SENDBITS) == KEEP_SEND) {
 
     if((conn->sockfd != conn->writesockfd) ||
   if((data->req.keepon & KEEP_SENDBITS) == KEEP_SEND) {
 
     if((conn->sockfd != conn->writesockfd) ||
-       !(data->req.keepon & KEEP_RECV)) {
-      /* only if they are not the same socket or we didn't have a readable
+       bitmap == GETSOCK_BLANK) {
+      /* only if they are not the same socket and we have a readable
          one, we increase index */
          one, we increase index */
-      if(data->req.keepon & KEEP_RECV)
+      if(bitmap != GETSOCK_BLANK)
         sockindex++; /* increase index if we need two entries */
 
       DEBUGASSERT(conn->writesockfd != CURL_SOCKET_BAD);
         sockindex++; /* increase index if we need two entries */
 
       DEBUGASSERT(conn->writesockfd != CURL_SOCKET_BAD);
@@ -1249,7 +1294,7 @@ long Curl_sleep_time(curl_off_t rate_bps, curl_off_t cur_rate_bps,
  */
 CURLcode Curl_pretransfer(struct SessionHandle *data)
 {
  */
 CURLcode Curl_pretransfer(struct SessionHandle *data)
 {
-  CURLcode res;
+  CURLcode result;
   if(!data->change.url) {
     /* we can't do anything without URL */
     failf(data, "No URL set!");
   if(!data->change.url) {
     /* we can't do anything without URL */
     failf(data, "No URL set!");
@@ -1259,17 +1304,15 @@ CURLcode Curl_pretransfer(struct SessionHandle *data)
   /* Init the SSL session ID cache here. We do it here since we want to do it
      after the *_setopt() calls (that could specify the size of the cache) but
      before any transfer takes place. */
   /* Init the SSL session ID cache here. We do it here since we want to do it
      after the *_setopt() calls (that could specify the size of the cache) but
      before any transfer takes place. */
-  res = Curl_ssl_initsessions(data, data->set.ssl.max_ssl_sessions);
-  if(res)
-    return res;
+  result = Curl_ssl_initsessions(data, data->set.ssl.max_ssl_sessions);
+  if(result)
+    return result;
 
   data->set.followlocation=0; /* reset the location-follow counter */
   data->state.this_is_a_follow = FALSE; /* reset this */
   data->state.errorbuf = FALSE; /* no error has occurred */
   data->state.httpversion = 0; /* don't assume any particular server version */
 
 
   data->set.followlocation=0; /* reset the location-follow counter */
   data->state.this_is_a_follow = FALSE; /* reset this */
   data->state.errorbuf = FALSE; /* no error has occurred */
   data->state.httpversion = 0; /* don't assume any particular server version */
 
-  data->state.ssl_connect_retry = FALSE;
-
   data->state.authproblem = FALSE;
   data->state.authhost.want = data->set.httpauth;
   data->state.authproxy.want = data->set.proxyauth;
   data->state.authproblem = FALSE;
   data->state.authhost.want = data->set.httpauth;
   data->state.authproxy.want = data->set.proxyauth;
@@ -1282,9 +1325,9 @@ CURLcode Curl_pretransfer(struct SessionHandle *data)
 
   /* If there is a list of host pairs to deal with */
   if(data->change.resolve)
 
   /* If there is a list of host pairs to deal with */
   if(data->change.resolve)
-    res = Curl_loadhostpairs(data);
+    result = Curl_loadhostpairs(data);
 
 
-  if(!res) {
+  if(!result) {
     /* Allow data->set.use_port to set which port to use. This needs to be
      * disabled for example when we follow Location: headers to URLs using
      * different ports! */
     /* Allow data->set.use_port to set which port to use. This needs to be
      * disabled for example when we follow Location: headers to URLs using
      * different ports! */
@@ -1314,7 +1357,7 @@ CURLcode Curl_pretransfer(struct SessionHandle *data)
     data->state.authproxy.picked &= data->state.authproxy.want;
   }
 
     data->state.authproxy.picked &= data->state.authproxy.want;
   }
 
-  return res;
+  return result;
 }
 
 /*
 }
 
 /*
@@ -1690,54 +1733,50 @@ CURLcode Curl_follow(struct SessionHandle *data,
      */
     break;
   case 301: /* Moved Permanently */
      */
     break;
   case 301: /* Moved Permanently */
-    /* (quote from RFC2616, section 10.3.2):
+    /* (quote from RFC7231, section 6.4.2)
      *
      *
-     * When automatically redirecting a POST request after receiving a 301
-     * status code, some existing HTTP/1.0 user agents will erroneously change
-     * it into a GET request.
+     * Note: For historical reasons, a user agent MAY change the request
+     * method from POST to GET for the subsequent request.  If this
+     * behavior is undesired, the 307 (Temporary Redirect) status code
+     * can be used instead.
      *
      * ----
      *
      *
      * ----
      *
-     * As most of the important user agents do this obvious RFC2616 violation,
-     * many webservers expect this. So these servers often answers to a POST
-     * request with an error page.  To be sure that libcurl gets the page that
+     * Many webservers expect this, so these servers often answers to a POST
+     * request with an error page. To be sure that libcurl gets the page that
      * most user agents would get, libcurl has to force GET.
      *
      * most user agents would get, libcurl has to force GET.
      *
-     * This behavior can be overridden with CURLOPT_POSTREDIR.
+     * This behaviour is forbidden by RFC1945 and the obsolete RFC2616, and
+     * can be overridden with CURLOPT_POSTREDIR.
      */
     if((data->set.httpreq == HTTPREQ_POST
         || data->set.httpreq == HTTPREQ_POST_FORM)
        && !(data->set.keep_post & CURL_REDIR_POST_301)) {
      */
     if((data->set.httpreq == HTTPREQ_POST
         || data->set.httpreq == HTTPREQ_POST_FORM)
        && !(data->set.keep_post & CURL_REDIR_POST_301)) {
-      infof(data,
-            "Violate RFC 2616/10.3.2 and switch from POST to GET\n");
+      infof(data, "Switch from POST to GET\n");
       data->set.httpreq = HTTPREQ_GET;
     }
     break;
   case 302: /* Found */
       data->set.httpreq = HTTPREQ_GET;
     }
     break;
   case 302: /* Found */
-    /* (From 10.3.3)
-
-    Note: RFC 1945 and RFC 2068 specify that the client is not allowed
-    to change the method on the redirected request.  However, most
-    existing user agent implementations treat 302 as if it were a 303
-    response, performing a GET on the Location field-value regardless
-    of the original request method. The status codes 303 and 307 have
-    been added for servers that wish to make unambiguously clear which
-    kind of reaction is expected of the client.
-
-    (From 10.3.4)
-
-    Note: Many pre-HTTP/1.1 user agents do not understand the 303
-    status. When interoperability with such clients is a concern, the
-    302 status code may be used instead, since most user agents react
-    to a 302 response as described here for 303.
-
-    This behavior can be overridden with CURLOPT_POSTREDIR
-    */
+    /* (quote from RFC7231, section 6.4.3)
+     *
+     * Note: For historical reasons, a user agent MAY change the request
+     * method from POST to GET for the subsequent request.  If this
+     * behavior is undesired, the 307 (Temporary Redirect) status code
+     * can be used instead.
+     *
+     * ----
+     *
+     * Many webservers expect this, so these servers often answers to a POST
+     * request with an error page. To be sure that libcurl gets the page that
+     * most user agents would get, libcurl has to force GET.
+     *
+     * This behaviour is forbidden by RFC1945 and the obsolete RFC2616, and
+     * can be overridden with CURLOPT_POSTREDIR.
+     */
     if((data->set.httpreq == HTTPREQ_POST
         || data->set.httpreq == HTTPREQ_POST_FORM)
        && !(data->set.keep_post & CURL_REDIR_POST_302)) {
     if((data->set.httpreq == HTTPREQ_POST
         || data->set.httpreq == HTTPREQ_POST_FORM)
        && !(data->set.keep_post & CURL_REDIR_POST_302)) {
-      infof(data,
-            "Violate RFC 2616/10.3.3 and switch from POST to GET\n");
+      infof(data, "Switch from POST to GET\n");
       data->set.httpreq = HTTPREQ_GET;
     }
     break;
       data->set.httpreq = HTTPREQ_GET;
     }
     break;
@@ -1789,7 +1828,7 @@ Curl_reconnect_request(struct connectdata **connp)
 
   infof(data, "Re-used connection seems dead, get a new one\n");
 
 
   infof(data, "Re-used connection seems dead, get a new one\n");
 
-  conn->bits.close = TRUE; /* enforce close of this connection */
+  connclose(conn, "Reconnect dead connection"); /* enforce close */
   result = Curl_done(&conn, result, FALSE); /* we are so done with this */
 
   /* conn may no longer be a good pointer, clear it to avoid mistakes by
   result = Curl_done(&conn, result, FALSE); /* we are so done with this */
 
   /* conn may no longer be a good pointer, clear it to avoid mistakes by
@@ -1803,13 +1842,13 @@ Curl_reconnect_request(struct connectdata **connp)
    * (again). Slight Lack of feedback in the report, but I don't think this
    * extra check can do much harm.
    */
    * (again). Slight Lack of feedback in the report, but I don't think this
    * extra check can do much harm.
    */
-  if((CURLE_OK == result) || (CURLE_SEND_ERROR == result)) {
+  if(!result || (CURLE_SEND_ERROR == result)) {
     bool async;
     bool protocol_done = TRUE;
 
     /* Now, redo the connect and get a new connection */
     result = Curl_connect(data, connp, &async, &protocol_done);
     bool async;
     bool protocol_done = TRUE;
 
     /* Now, redo the connect and get a new connection */
     result = Curl_connect(data, connp, &async, &protocol_done);
-    if(CURLE_OK == result) {
+    if(!result) {
       /* We have connected or sent away a name resolve query fine */
 
       conn = *connp; /* setup conn to again point to something nice */
       /* We have connected or sent away a name resolve query fine */
 
       conn = *connp; /* setup conn to again point to something nice */
@@ -1844,15 +1883,13 @@ CURLcode Curl_retry_request(struct connectdata *conn,
   /* if we're talking upload, we can't do the checks below, unless the protocol
      is HTTP as when uploading over HTTP we will still get a response */
   if(data->set.upload &&
   /* if we're talking upload, we can't do the checks below, unless the protocol
      is HTTP as when uploading over HTTP we will still get a response */
   if(data->set.upload &&
-     !(conn->handler->protocol&(CURLPROTO_HTTP|CURLPROTO_RTSP)))
+     !(conn->handler->protocol&(PROTO_FAMILY_HTTP|CURLPROTO_RTSP)))
     return CURLE_OK;
 
     return CURLE_OK;
 
-  if(/* workaround for broken TLS servers */ data->state.ssl_connect_retry ||
-      ((data->req.bytecount +
-        data->req.headerbytecount == 0) &&
-        conn->bits.reuse &&
-        !data->set.opt_no_body &&
-        data->set.rtspreq != RTSPREQ_RECEIVE)) {
+  if((data->req.bytecount + data->req.headerbytecount == 0) &&
+      conn->bits.reuse &&
+      !data->set.opt_no_body &&
+      (data->set.rtspreq != RTSPREQ_RECEIVE)) {
     /* We got no data, we attempted to re-use a connection and yet we want a
        "body". This might happen if the connection was left alive when we were
        done using it before, but that was closed when we wanted to read from
     /* We got no data, we attempted to re-use a connection and yet we want a
        "body". This might happen if the connection was left alive when we were
        done using it before, but that was closed when we wanted to read from
@@ -1862,7 +1899,7 @@ CURLcode Curl_retry_request(struct connectdata *conn,
     if(!*url)
       return CURLE_OUT_OF_MEMORY;
 
     if(!*url)
       return CURLE_OUT_OF_MEMORY;
 
-    conn->bits.close = TRUE; /* close this connection */
+    connclose(conn, "retry"); /* close this connection */
     conn->bits.retry = TRUE; /* mark this as a connection we're about
                                 to retry. Marking it this way should
                                 prevent i.e HTTP transfers to return
     conn->bits.retry = TRUE; /* mark this as a connection we're about
                                 to retry. Marking it this way should
                                 prevent i.e HTTP transfers to return
@@ -1870,9 +1907,11 @@ CURLcode Curl_retry_request(struct connectdata *conn,
                                 transferred! */
 
 
                                 transferred! */
 
 
-    if((conn->handler->protocol&CURLPROTO_HTTP) &&
-       data->state.proto.http->writebytecount)
-      return Curl_readrewind(conn);
+    if(conn->handler->protocol&PROTO_FAMILY_HTTP) {
+      struct HTTP *http = data->req.protop;
+      if(http->writebytecount)
+        return Curl_readrewind(conn);
+    }
   }
   return CURLE_OK;
 }
   }
   return CURLE_OK;
 }
@@ -1930,6 +1969,7 @@ Curl_setup_transfer(
       k->keepon |= KEEP_RECV;
 
     if(conn->writesockfd != CURL_SOCKET_BAD) {
       k->keepon |= KEEP_RECV;
 
     if(conn->writesockfd != CURL_SOCKET_BAD) {
+      struct HTTP *http = data->req.protop;
       /* HTTP 1.1 magic:
 
          Even if we require a 100-return code before uploading data, we might
       /* HTTP 1.1 magic:
 
          Even if we require a 100-return code before uploading data, we might
@@ -1940,13 +1980,15 @@ Curl_setup_transfer(
          state info where we wait for the 100-return code
       */
       if((data->state.expect100header) &&
          state info where we wait for the 100-return code
       */
       if((data->state.expect100header) &&
-         (data->state.proto.http->sending == HTTPSEND_BODY)) {
+         (conn->handler->protocol&PROTO_FAMILY_HTTP) &&
+         (http->sending == HTTPSEND_BODY)) {
         /* wait with write until we either got 100-continue or a timeout */
         k->exp100 = EXP100_AWAITING_CONTINUE;
         k->start100 = Curl_tvnow();
 
         /* wait with write until we either got 100-continue or a timeout */
         k->exp100 = EXP100_AWAITING_CONTINUE;
         k->start100 = Curl_tvnow();
 
-        /* set a timeout for the multi interface */
-        Curl_expire(data, CURL_TIMEOUT_EXPECT_100);
+        /* Set a timeout for the multi interface. Add the inaccuracy margin so
+           that we don't fire slightly too early and get denied to run. */
+        Curl_expire(data, data->set.expect_100_timeout);
       }
       else {
         if(data->state.expect100header)
       }
       else {
         if(data->state.expect100header)
index 7cec5bc..d3bb5e0 100644 (file)
--- a/lib/url.c
+++ b/lib/url.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include <inet.h>
 #endif
 
 #include <inet.h>
 #endif
 
+#ifdef HAVE_SYS_UN_H
+#include <sys/un.h>
+#endif
+
 #ifndef HAVE_SOCKET
 #error "We can't compile without socket() support!"
 #endif
 #ifndef HAVE_SOCKET
 #error "We can't compile without socket() support!"
 #endif
@@ -78,7 +82,7 @@ int curl_win32_idn_to_ascii(const char *in, char **out);
 #include "netrc.h"
 
 #include "formdata.h"
 #include "netrc.h"
 
 #include "formdata.h"
-#include "sslgen.h"
+#include "vtls/vtls.h"
 #include "hostip.h"
 #include "transfer.h"
 #include "sendf.h"
 #include "hostip.h"
 #include "transfer.h"
 #include "sendf.h"
@@ -125,6 +129,7 @@ int curl_win32_idn_to_ascii(const char *in, char **out);
 #include "multihandle.h"
 #include "pipeline.h"
 #include "dotdot.h"
 #include "multihandle.h"
 #include "pipeline.h"
 #include "dotdot.h"
+#include "strdup.h"
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
@@ -144,7 +149,8 @@ static void signalPipeClose(struct curl_llist *pipeline, bool pipe_broke);
 static CURLcode do_init(struct connectdata *conn);
 static CURLcode parse_url_login(struct SessionHandle *data,
                                 struct connectdata *conn,
 static CURLcode do_init(struct connectdata *conn);
 static CURLcode parse_url_login(struct SessionHandle *data,
                                 struct connectdata *conn,
-                                char *user, char *passwd, char *options);
+                                char **userptr, char **passwdptr,
+                                char **optionsptr);
 static CURLcode parse_login_details(const char *login, const size_t len,
                                     char **userptr, char **passwdptr,
                                     char **optionsptr);
 static CURLcode parse_login_details(const char *login, const size_t len,
                                     char **userptr, char **passwdptr,
                                     char **optionsptr);
@@ -214,6 +220,15 @@ static const struct Curl_handler * const protocols[] = {
 #endif
 #endif
 
 #endif
 #endif
 
+#if !defined(CURL_DISABLE_SMB) && defined(USE_NTLM) && \
+   (CURL_SIZEOF_CURL_OFF_T > 4) && \
+   (!defined(USE_WINDOWS_SSPI) || defined(USE_WIN32_CRYPTO))
+  &Curl_handler_smb,
+#ifdef USE_SSL
+  &Curl_handler_smbs,
+#endif
+#endif
+
 #ifndef CURL_DISABLE_SMTP
   &Curl_handler_smtp,
 #ifdef USE_SSL
 #ifndef CURL_DISABLE_SMTP
   &Curl_handler_smtp,
 #ifdef USE_SSL
@@ -269,14 +284,20 @@ void Curl_freeset(struct SessionHandle *data)
 {
   /* Free all dynamic strings stored in the data->set substructure. */
   enum dupstring i;
 {
   /* Free all dynamic strings stored in the data->set substructure. */
   enum dupstring i;
-  for(i=(enum dupstring)0; i < STRING_LAST; i++)
+  for(i=(enum dupstring)0; i < STRING_LAST; i++) {
     Curl_safefree(data->set.str[i]);
     Curl_safefree(data->set.str[i]);
+  }
 
   if(data->change.referer_alloc) {
     Curl_safefree(data->change.referer);
     data->change.referer_alloc = FALSE;
   }
   data->change.referer = NULL;
 
   if(data->change.referer_alloc) {
     Curl_safefree(data->change.referer);
     data->change.referer_alloc = FALSE;
   }
   data->change.referer = NULL;
+  if(data->change.url_alloc) {
+    Curl_safefree(data->change.url);
+    data->change.url_alloc = FALSE;
+  }
+  data->change.url = NULL;
 }
 
 static CURLcode setstropt(char **charp, char *s)
 }
 
 static CURLcode setstropt(char **charp, char *s)
@@ -298,13 +319,11 @@ static CURLcode setstropt(char **charp, char *s)
   return CURLE_OK;
 }
 
   return CURLE_OK;
 }
 
-static CURLcode setstropt_userpwd(char *option, char **userp, char **passwdp,
-                                  char **optionsp)
+static CURLcode setstropt_userpwd(char *option, char **userp, char **passwdp)
 {
   CURLcode result = CURLE_OK;
   char *user = NULL;
   char *passwd = NULL;
 {
   CURLcode result = CURLE_OK;
   char *user = NULL;
   char *passwd = NULL;
-  char *options = NULL;
 
   /* Parse the login details if specified. It not then we treat NULL as a hint
      to clear the existing data */
 
   /* Parse the login details if specified. It not then we treat NULL as a hint
      to clear the existing data */
@@ -312,7 +331,7 @@ static CURLcode setstropt_userpwd(char *option, char **userp, char **passwdp,
     result = parse_login_details(option, strlen(option),
                                  (userp ? &user : NULL),
                                  (passwdp ? &passwd : NULL),
     result = parse_login_details(option, strlen(option),
                                  (userp ? &user : NULL),
                                  (passwdp ? &passwd : NULL),
-                                 (optionsp ? &options : NULL));
+                                 NULL);
   }
 
   if(!result) {
   }
 
   if(!result) {
@@ -334,12 +353,6 @@ static CURLcode setstropt_userpwd(char *option, char **userp, char **passwdp,
       Curl_safefree(*passwdp);
       *passwdp = passwd;
     }
       Curl_safefree(*passwdp);
       *passwdp = passwd;
     }
-
-    /* Store the options part of option if required */
-    if(optionsp) {
-      Curl_safefree(*optionsp);
-      *optionsp = options;
-    }
   }
 
   return result;
   }
 
   return result;
@@ -347,7 +360,7 @@ static CURLcode setstropt_userpwd(char *option, char **userp, char **passwdp,
 
 CURLcode Curl_dupset(struct SessionHandle *dst, struct SessionHandle *src)
 {
 
 CURLcode Curl_dupset(struct SessionHandle *dst, struct SessionHandle *src)
 {
-  CURLcode r = CURLE_OK;
+  CURLcode result = CURLE_OK;
   enum dupstring i;
 
   /* Copy src->set into dst->set first, then deal with the strings
   enum dupstring i;
 
   /* Copy src->set into dst->set first, then deal with the strings
@@ -358,14 +371,25 @@ CURLcode Curl_dupset(struct SessionHandle *dst, struct SessionHandle *src)
   memset(dst->set.str, 0, STRING_LAST * sizeof(char *));
 
   /* duplicate all strings */
   memset(dst->set.str, 0, STRING_LAST * sizeof(char *));
 
   /* duplicate all strings */
-  for(i=(enum dupstring)0; i< STRING_LAST; i++) {
-    r = setstropt(&dst->set.str[i], src->set.str[i]);
-    if(r != CURLE_OK)
-      break;
+  for(i=(enum dupstring)0; i< STRING_LASTZEROTERMINATED; i++) {
+    result = setstropt(&dst->set.str[i], src->set.str[i]);
+    if(result)
+      return result;
   }
 
   }
 
-  /* If a failure occurred, freeing has to be performed externally. */
-  return r;
+  /* duplicate memory areas pointed to */
+  i = STRING_COPYPOSTFIELDS;
+  if(src->set.postfieldsize && src->set.str[i]) {
+    /* postfieldsize is curl_off_t, Curl_memdup() takes a size_t ... */
+    dst->set.str[i] = Curl_memdup(src->set.str[i],
+                                  curlx_sotouz(src->set.postfieldsize));
+    if(!dst->set.str[i])
+      return CURLE_OUT_OF_MEMORY;
+    /* point to the new copy */
+    dst->set.postfields = dst->set.str[i];
+  }
+
+  return CURLE_OK;
 }
 
 /*
 }
 
 /*
@@ -417,7 +441,8 @@ CURLcode Curl_close(struct SessionHandle *data)
   Curl_safefree(data->state.pathbuffer);
   data->state.path = NULL;
 
   Curl_safefree(data->state.pathbuffer);
   data->state.path = NULL;
 
-  Curl_safefree(data->state.proto.generic);
+  /* freed here just in case DONE wasn't called */
+  Curl_free_request_state(data);
 
   /* Close down all open SSL info and sessions */
   Curl_ssl_close_all(data);
 
   /* Close down all open SSL info and sessions */
   Curl_ssl_close_all(data);
@@ -425,6 +450,12 @@ CURLcode Curl_close(struct SessionHandle *data)
   Curl_safefree(data->state.scratch);
   Curl_ssl_free_certinfo(data);
 
   Curl_safefree(data->state.scratch);
   Curl_ssl_free_certinfo(data);
 
+  /* Cleanup possible redirect junk */
+  if(data->req.newurl) {
+    free(data->req.newurl);
+    data->req.newurl = NULL;
+  }
+
   if(data->change.referer_alloc) {
     Curl_safefree(data->change.referer);
     data->change.referer_alloc = FALSE;
   if(data->change.referer_alloc) {
     Curl_safefree(data->change.referer);
     data->change.referer_alloc = FALSE;
@@ -469,7 +500,7 @@ CURLcode Curl_close(struct SessionHandle *data)
  */
 CURLcode Curl_init_userdefined(struct UserDefined *set)
 {
  */
 CURLcode Curl_init_userdefined(struct UserDefined *set)
 {
-  CURLcode res = CURLE_OK;
+  CURLcode result = CURLE_OK;
 
   set->out = stdout; /* default output to stdout */
   set->in  = stdin;  /* default input from stdin */
 
   set->out = stdout; /* default output to stdout */
   set->in  = stdin;  /* default input from stdin */
@@ -491,7 +522,7 @@ CURLcode Curl_init_userdefined(struct UserDefined *set)
   set->convtonetwork   = ZERO_NULL;
   set->convfromutf8    = ZERO_NULL;
 
   set->convtonetwork   = ZERO_NULL;
   set->convfromutf8    = ZERO_NULL;
 
-  set->infilesize = -1;      /* we don't know any size */
+  set->filesize = -1;        /* we don't know the size */
   set->postfieldsize = -1;   /* unknown size */
   set->maxredirs = -1;       /* allow any amount by default */
 
   set->postfieldsize = -1;   /* unknown size */
   set->maxredirs = -1;       /* allow any amount by default */
 
@@ -535,8 +566,9 @@ CURLcode Curl_init_userdefined(struct UserDefined *set)
      define since we internally only use the lower 16 bits for the passed
      in bitmask to not conflict with the private bits */
   set->allowed_protocols = CURLPROTO_ALL;
      define since we internally only use the lower 16 bits for the passed
      in bitmask to not conflict with the private bits */
   set->allowed_protocols = CURLPROTO_ALL;
-  set->redir_protocols =
-    CURLPROTO_ALL & ~(CURLPROTO_FILE|CURLPROTO_SCP); /* not FILE or SCP */
+  set->redir_protocols = CURLPROTO_ALL &  /* All except FILE, SCP and SMB */
+                          ~(CURLPROTO_FILE | CURLPROTO_SCP | CURLPROTO_SMB |
+                            CURLPROTO_SMBS);
 
 #if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
   /*
 
 #if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
   /*
@@ -544,18 +576,18 @@ CURLcode Curl_init_userdefined(struct UserDefined *set)
    * seem not to follow rfc1961 section 4.3/4.4
    */
   set->socks5_gssapi_nec = FALSE;
    * seem not to follow rfc1961 section 4.3/4.4
    */
   set->socks5_gssapi_nec = FALSE;
-  /* set default gssapi service name */
-  res = setstropt(&set->str[STRING_SOCKS5_GSSAPI_SERVICE],
-                  (char *) CURL_DEFAULT_SOCKS5_GSSAPI_SERVICE);
-  if(res != CURLE_OK)
-    return res;
+  /* set default GSS-API service name */
+  result = setstropt(&set->str[STRING_SOCKS5_GSSAPI_SERVICE],
+                     (char *) CURL_DEFAULT_SOCKS5_GSSAPI_SERVICE);
+  if(result)
+    return result;
 #endif
 
   /* This is our preferred CA cert bundle/path since install time */
 #if defined(CURL_CA_BUNDLE)
 #endif
 
   /* This is our preferred CA cert bundle/path since install time */
 #if defined(CURL_CA_BUNDLE)
-  res = setstropt(&set->str[STRING_SSL_CAFILE], (char *) CURL_CA_BUNDLE);
+  result = setstropt(&set->str[STRING_SSL_CAFILE], (char *) CURL_CA_BUNDLE);
 #elif defined(CURL_CA_PATH)
 #elif defined(CURL_CA_PATH)
-  res = setstropt(&set->str[STRING_SSL_CAPATH], (char *) CURL_CA_PATH);
+  result = setstropt(&set->str[STRING_SSL_CAPATH], (char *) CURL_CA_PATH);
 #endif
 
   set->wildcardmatch  = FALSE;
 #endif
 
   set->wildcardmatch  = FALSE;
@@ -569,7 +601,11 @@ CURLcode Curl_init_userdefined(struct UserDefined *set)
   set->tcp_keepintvl = 60;
   set->tcp_keepidle = 60;
 
   set->tcp_keepintvl = 60;
   set->tcp_keepidle = 60;
 
-  return res;
+  set->ssl_enable_npn = TRUE;
+  set->ssl_enable_alpn = TRUE;
+
+  set->expect_100_timeout = 1000L; /* Wait for a second by default. */
+  return result;
 }
 
 /**
 }
 
 /**
@@ -582,9 +618,8 @@ CURLcode Curl_init_userdefined(struct UserDefined *set)
 
 CURLcode Curl_open(struct SessionHandle **curl)
 {
 
 CURLcode Curl_open(struct SessionHandle **curl)
 {
-  CURLcode res = CURLE_OK;
+  CURLcode result;
   struct SessionHandle *data;
   struct SessionHandle *data;
-  CURLcode status;
 
   /* Very simple start-up: alloc the struct, init it with zeroes and return */
   data = calloc(1, sizeof(struct SessionHandle));
 
   /* Very simple start-up: alloc the struct, init it with zeroes and return */
   data = calloc(1, sizeof(struct SessionHandle));
@@ -596,11 +631,11 @@ CURLcode Curl_open(struct SessionHandle **curl)
 
   data->magic = CURLEASY_MAGIC_NUMBER;
 
 
   data->magic = CURLEASY_MAGIC_NUMBER;
 
-  status = Curl_resolver_init(&data->state.resolver);
-  if(status) {
+  result = Curl_resolver_init(&data->state.resolver);
+  if(result) {
     DEBUGF(fprintf(stderr, "Error: resolver_init failed\n"));
     free(data);
     DEBUGF(fprintf(stderr, "Error: resolver_init failed\n"));
     free(data);
-    return status;
+    return result;
   }
 
   /* We do some initial setup here, all those fields that can't be just 0 */
   }
 
   /* We do some initial setup here, all those fields that can't be just 0 */
@@ -608,11 +643,10 @@ CURLcode Curl_open(struct SessionHandle **curl)
   data->state.headerbuff = malloc(HEADERSIZE);
   if(!data->state.headerbuff) {
     DEBUGF(fprintf(stderr, "Error: malloc of headerbuff failed\n"));
   data->state.headerbuff = malloc(HEADERSIZE);
   if(!data->state.headerbuff) {
     DEBUGF(fprintf(stderr, "Error: malloc of headerbuff failed\n"));
-    res = CURLE_OUT_OF_MEMORY;
+    result = CURLE_OUT_OF_MEMORY;
   }
   else {
   }
   else {
-    Curl_easy_initHandleData(data);
-    res = Curl_init_userdefined(&data->set);
+    result = Curl_init_userdefined(&data->set);
 
     data->state.headersize=HEADERSIZE;
 
 
     data->state.headersize=HEADERSIZE;
 
@@ -630,7 +664,7 @@ CURLcode Curl_open(struct SessionHandle **curl)
     data->set.maxconnects = DEFAULT_CONNCACHE_SIZE; /* for easy handles */
   }
 
     data->set.maxconnects = DEFAULT_CONNCACHE_SIZE; /* for easy handles */
   }
 
-  if(res) {
+  if(result) {
     Curl_resolver_cleanup(data->state.resolver);
     if(data->state.headerbuff)
       free(data->state.headerbuff);
     Curl_resolver_cleanup(data->state.resolver);
     if(data->state.headerbuff)
       free(data->state.headerbuff);
@@ -641,7 +675,7 @@ CURLcode Curl_open(struct SessionHandle **curl)
   else
     *curl = data;
 
   else
     *curl = data;
 
-  return res;
+  return result;
 }
 
 CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
 }
 
 CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
@@ -736,7 +770,7 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
     break;
   case CURLOPT_FAILONERROR:
     /*
     break;
   case CURLOPT_FAILONERROR:
     /*
-     * Don't output the >=300 error code HTML-page, but instead only
+     * Don't output the >=400 error code HTML-page, but instead only
      * return error.
      */
     data->set.http_fail_on_error = (0 != va_arg(param, long))?TRUE:FALSE;
      * return error.
      */
     data->set.http_fail_on_error = (0 != va_arg(param, long))?TRUE:FALSE;
@@ -1070,6 +1104,28 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
     data->set.headers = va_arg(param, struct curl_slist *);
     break;
 
     data->set.headers = va_arg(param, struct curl_slist *);
     break;
 
+  case CURLOPT_PROXYHEADER:
+    /*
+     * Set a list with proxy headers to use (or replace internals with)
+     *
+     * Since CURLOPT_HTTPHEADER was the only way to set HTTP headers for a
+     * long time we remain doing it this way until CURLOPT_PROXYHEADER is
+     * used. As soon as this option has been used, if set to anything but
+     * NULL, custom headers for proxies are only picked from this list.
+     *
+     * Set this option to NULL to restore the previous behavior.
+     */
+    data->set.proxyheaders = va_arg(param, struct curl_slist *);
+    break;
+
+  case CURLOPT_HEADEROPT:
+    /*
+     * Set header option.
+     */
+    arg = va_arg(param, long);
+    data->set.sep_headers = (arg & CURLHEADER_SEPARATE)? TRUE: FALSE;
+    break;
+
   case CURLOPT_HTTP200ALIASES:
     /*
      * Set a list of aliases for HTTP 200 in response header
   case CURLOPT_HTTP200ALIASES:
     /*
      * Set a list of aliases for HTTP 200 in response header
@@ -1109,6 +1165,8 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
     /*
      * Set cookie file name to dump all cookies to when we're done.
      */
     /*
      * Set cookie file name to dump all cookies to when we're done.
      */
+  {
+    struct CookieInfo *newcookies;
     result = setstropt(&data->set.str[STRING_COOKIEJAR],
                        va_arg(param, char *));
 
     result = setstropt(&data->set.str[STRING_COOKIEJAR],
                        va_arg(param, char *));
 
@@ -1116,8 +1174,12 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
      * Activate the cookie parser. This may or may not already
      * have been made.
      */
      * Activate the cookie parser. This may or may not already
      * have been made.
      */
-    data->cookies = Curl_cookie_init(data, NULL, data->cookies,
-                                     data->set.cookiesession);
+    newcookies = Curl_cookie_init(data, NULL, data->cookies,
+                                  data->set.cookiesession);
+    if(!newcookies)
+      result = CURLE_OUT_OF_MEMORY;
+    data->cookies = newcookies;
+  }
     break;
 
   case CURLOPT_COOKIESESSION:
     break;
 
   case CURLOPT_COOKIESESSION:
@@ -1145,30 +1207,39 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
     if(argptr == NULL)
       break;
 
     if(argptr == NULL)
       break;
 
-    Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE);
-
     if(Curl_raw_equal(argptr, "ALL")) {
       /* clear all cookies */
     if(Curl_raw_equal(argptr, "ALL")) {
       /* clear all cookies */
+      Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE);
       Curl_cookie_clearall(data->cookies);
       Curl_cookie_clearall(data->cookies);
+      Curl_share_unlock(data, CURL_LOCK_DATA_COOKIE);
     }
     else if(Curl_raw_equal(argptr, "SESS")) {
       /* clear session cookies */
     }
     else if(Curl_raw_equal(argptr, "SESS")) {
       /* clear session cookies */
+      Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE);
       Curl_cookie_clearsess(data->cookies);
       Curl_cookie_clearsess(data->cookies);
+      Curl_share_unlock(data, CURL_LOCK_DATA_COOKIE);
     }
     else if(Curl_raw_equal(argptr, "FLUSH")) {
     }
     else if(Curl_raw_equal(argptr, "FLUSH")) {
-      /* flush cookies to file */
+      /* flush cookies to file, takes care of the locking */
       Curl_flush_cookies(data, 0);
     }
       Curl_flush_cookies(data, 0);
     }
+    else if(Curl_raw_equal(argptr, "RELOAD")) {
+      /* reload cookies from file */
+      Curl_cookie_loadfiles(data);
+      break;
+    }
     else {
       if(!data->cookies)
         /* if cookie engine was not running, activate it */
         data->cookies = Curl_cookie_init(data, NULL, NULL, TRUE);
 
       argptr = strdup(argptr);
     else {
       if(!data->cookies)
         /* if cookie engine was not running, activate it */
         data->cookies = Curl_cookie_init(data, NULL, NULL, TRUE);
 
       argptr = strdup(argptr);
-      if(!argptr) {
+      if(!argptr || !data->cookies) {
         result = CURLE_OUT_OF_MEMORY;
         result = CURLE_OUT_OF_MEMORY;
+        Curl_safefree(argptr);
       }
       else {
       }
       else {
+        Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE);
 
         if(checkprefix("Set-Cookie:", argptr))
           /* HTTP Header format line */
 
         if(checkprefix("Set-Cookie:", argptr))
           /* HTTP Header format line */
@@ -1178,10 +1249,10 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
           /* Netscape format line */
           Curl_cookie_add(data, data->cookies, FALSE, argptr, NULL, NULL);
 
           /* Netscape format line */
           Curl_cookie_add(data, data->cookies, FALSE, argptr, NULL, NULL);
 
+        Curl_share_unlock(data, CURL_LOCK_DATA_COOKIE);
         free(argptr);
       }
     }
         free(argptr);
       }
     }
-    Curl_share_unlock(data, CURL_LOCK_DATA_COOKIE);
 
     break;
 #endif /* CURL_DISABLE_COOKIES */
 
     break;
 #endif /* CURL_DISABLE_COOKIES */
@@ -1202,7 +1273,12 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
      * This sets a requested HTTP version to be used. The value is one of
      * the listed enums in curl/curl.h.
      */
      * This sets a requested HTTP version to be used. The value is one of
      * the listed enums in curl/curl.h.
      */
-    data->set.httpversion = va_arg(param, long);
+    arg = va_arg(param, long);
+#ifndef USE_NGHTTP2
+    if(arg == CURL_HTTP_VERSION_2_0)
+      return CURLE_UNSUPPORTED_PROTOCOL;
+#endif
+    data->set.httpversion = arg;
     break;
 
   case CURLOPT_HTTPAUTH:
     break;
 
   case CURLOPT_HTTPAUTH:
@@ -1235,9 +1311,9 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
 #elif !defined(NTLM_WB_ENABLED)
     auth &= ~CURLAUTH_NTLM_WB; /* no NTLM_WB support */
 #endif
 #elif !defined(NTLM_WB_ENABLED)
     auth &= ~CURLAUTH_NTLM_WB; /* no NTLM_WB support */
 #endif
-#ifndef USE_HTTP_NEGOTIATE
-    auth &= ~CURLAUTH_GSSNEGOTIATE; /* no GSS-Negotiate without GSSAPI or
-                                       WINDOWS_SSPI */
+#ifndef USE_SPNEGO
+    auth &= ~CURLAUTH_NEGOTIATE; /* no Negotiate (SPNEGO) auth without
+                                    GSS-API or SSPI */
 #endif
 
     /* check if any auth bit lower than CURLAUTH_ONLY is still set */
 #endif
 
     /* check if any auth bit lower than CURLAUTH_ONLY is still set */
@@ -1256,6 +1332,14 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
   }
   break;
 
   }
   break;
 
+  case CURLOPT_EXPECT_100_TIMEOUT_MS:
+    /*
+     * Time to wait for a response to a HTTP request containing an
+     * Expect: 100-continue header before sending the data anyway.
+     */
+    data->set.expect_100_timeout = va_arg(param, long);
+    break;
+
 #endif   /* CURL_DISABLE_HTTP */
 
   case CURLOPT_CUSTOMREQUEST:
 #endif   /* CURL_DISABLE_HTTP */
 
   case CURLOPT_CUSTOMREQUEST:
@@ -1315,9 +1399,9 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
 #elif !defined(NTLM_WB_ENABLED)
     auth &= ~CURLAUTH_NTLM_WB; /* no NTLM_WB support */
 #endif
 #elif !defined(NTLM_WB_ENABLED)
     auth &= ~CURLAUTH_NTLM_WB; /* no NTLM_WB support */
 #endif
-#ifndef USE_HTTP_NEGOTIATE
-    auth &= ~CURLAUTH_GSSNEGOTIATE; /* no GSS-Negotiate without GSSAPI or
-                                       WINDOWS_SSPI */
+#ifndef USE_SPNEGO
+    auth &= ~CURLAUTH_NEGOTIATE; /* no Negotiate (SPNEGO) auth without
+                                    GSS-API or SSPI */
 #endif
 
     /* check if any auth bit lower than CURLAUTH_ONLY is still set */
 #endif
 
     /* check if any auth bit lower than CURLAUTH_ONLY is still set */
@@ -1379,7 +1463,7 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
 #if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
   case CURLOPT_SOCKS5_GSSAPI_SERVICE:
     /*
 #if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
   case CURLOPT_SOCKS5_GSSAPI_SERVICE:
     /*
-     * Set gssapi service name
+     * Set GSS-API service name
      */
     result = setstropt(&data->set.str[STRING_SOCKS5_GSSAPI_SERVICE],
                        va_arg(param, char *));
      */
     result = setstropt(&data->set.str[STRING_SOCKS5_GSSAPI_SERVICE],
                        va_arg(param, char *));
@@ -1393,7 +1477,7 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
     break;
 #endif
 
     break;
 #endif
 
-  case CURLOPT_WRITEHEADER:
+  case CURLOPT_HEADERDATA:
     /*
      * Custom pointer to pass the header write callback function
      */
     /*
      * Custom pointer to pass the header write callback function
      */
@@ -1406,7 +1490,7 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
      */
     data->set.errorbuffer = va_arg(param, char *);
     break;
      */
     data->set.errorbuffer = va_arg(param, char *);
     break;
-  case CURLOPT_FILE:
+  case CURLOPT_WRITEDATA:
     /*
      * FILE pointer to write to. Or possibly
      * used as argument to the write callback.
     /*
      * FILE pointer to write to. Or possibly
      * used as argument to the write callback.
@@ -1447,7 +1531,7 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
     data->set.ftp_skip_ip = (0 != va_arg(param, long))?TRUE:FALSE;
     break;
 
     data->set.ftp_skip_ip = (0 != va_arg(param, long))?TRUE:FALSE;
     break;
 
-  case CURLOPT_INFILE:
+  case CURLOPT_READDATA:
     /*
      * FILE pointer to read the file to be uploaded from. Or possibly
      * used as argument to the read callback.
     /*
      * FILE pointer to read the file to be uploaded from. Or possibly
      * used as argument to the read callback.
@@ -1459,14 +1543,14 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
      * If known, this should inform curl about the file size of the
      * to-be-uploaded file.
      */
      * If known, this should inform curl about the file size of the
      * to-be-uploaded file.
      */
-    data->set.infilesize = va_arg(param, long);
+    data->set.filesize = va_arg(param, long);
     break;
   case CURLOPT_INFILESIZE_LARGE:
     /*
      * If known, this should inform curl about the file size of the
      * to-be-uploaded file.
      */
     break;
   case CURLOPT_INFILESIZE_LARGE:
     /*
      * If known, this should inform curl about the file size of the
      * to-be-uploaded file.
      */
-    data->set.infilesize = va_arg(param, curl_off_t);
+    data->set.filesize = va_arg(param, curl_off_t);
     break;
   case CURLOPT_LOW_SPEED_LIMIT:
     /*
     break;
   case CURLOPT_LOW_SPEED_LIMIT:
     /*
@@ -1547,13 +1631,13 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
 
   case CURLOPT_USERPWD:
     /*
 
   case CURLOPT_USERPWD:
     /*
-     * user:password;options to use in the operation
+     * user:password to use in the operation
      */
     result = setstropt_userpwd(va_arg(param, char *),
                                &data->set.str[STRING_USERNAME],
      */
     result = setstropt_userpwd(va_arg(param, char *),
                                &data->set.str[STRING_USERNAME],
-                               &data->set.str[STRING_PASSWORD],
-                               &data->set.str[STRING_OPTIONS]);
+                               &data->set.str[STRING_PASSWORD]);
     break;
     break;
+
   case CURLOPT_USERNAME:
     /*
      * authentication user name to use in the operation
   case CURLOPT_USERNAME:
     /*
      * authentication user name to use in the operation
@@ -1561,6 +1645,7 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
     result = setstropt(&data->set.str[STRING_USERNAME],
                        va_arg(param, char *));
     break;
     result = setstropt(&data->set.str[STRING_USERNAME],
                        va_arg(param, char *));
     break;
+
   case CURLOPT_PASSWORD:
     /*
      * authentication password to use in the operation
   case CURLOPT_PASSWORD:
     /*
      * authentication password to use in the operation
@@ -1568,6 +1653,23 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
     result = setstropt(&data->set.str[STRING_PASSWORD],
                        va_arg(param, char *));
     break;
     result = setstropt(&data->set.str[STRING_PASSWORD],
                        va_arg(param, char *));
     break;
+
+  case CURLOPT_LOGIN_OPTIONS:
+    /*
+     * authentication options to use in the operation
+     */
+    result = setstropt(&data->set.str[STRING_OPTIONS],
+                       va_arg(param, char *));
+    break;
+
+  case CURLOPT_XOAUTH2_BEARER:
+    /*
+     * XOAUTH2 bearer token to use in the operation
+     */
+    result = setstropt(&data->set.str[STRING_BEARER],
+                       va_arg(param, char *));
+    break;
+
   case CURLOPT_POSTQUOTE:
     /*
      * List of RAW FTP commands to use after a transfer
   case CURLOPT_POSTQUOTE:
     /*
      * List of RAW FTP commands to use after a transfer
@@ -1637,7 +1739,7 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
      */
     result = setstropt_userpwd(va_arg(param, char *),
                                &data->set.str[STRING_PROXYUSERNAME],
      */
     result = setstropt_userpwd(va_arg(param, char *),
                                &data->set.str[STRING_PROXYUSERNAME],
-                               &data->set.str[STRING_PROXYPASSWORD], NULL);
+                               &data->set.str[STRING_PROXYPASSWORD]);
     break;
   case CURLOPT_PROXYUSERNAME:
     /*
     break;
   case CURLOPT_PROXYUSERNAME:
     /*
@@ -1867,7 +1969,7 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
     break;
   case CURLOPT_GSSAPI_DELEGATION:
     /*
     break;
   case CURLOPT_GSSAPI_DELEGATION:
     /*
-     * GSSAPI credential delegation
+     * GSS-API credential delegation
      */
     data->set.gssapi_delegation = va_arg(param, long);
     break;
      */
     data->set.gssapi_delegation = va_arg(param, long);
     break;
@@ -1895,29 +1997,41 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
 
     data->set.ssl.verifyhost = (0 != arg)?TRUE:FALSE;
     break;
 
     data->set.ssl.verifyhost = (0 != arg)?TRUE:FALSE;
     break;
-#ifdef USE_SSLEAY
-    /* since these two options are only possible to use on an OpenSSL-
-       powered libcurl we #ifdef them on this condition so that libcurls
-       built against other SSL libs will return a proper error when trying
-       to set this option! */
   case CURLOPT_SSL_CTX_FUNCTION:
   case CURLOPT_SSL_CTX_FUNCTION:
+#ifdef have_curlssl_ssl_ctx
     /*
      * Set a SSL_CTX callback
      */
     data->set.ssl.fsslctx = va_arg(param, curl_ssl_ctx_callback);
     /*
      * Set a SSL_CTX callback
      */
     data->set.ssl.fsslctx = va_arg(param, curl_ssl_ctx_callback);
+#else
+    result = CURLE_NOT_BUILT_IN;
+#endif
     break;
   case CURLOPT_SSL_CTX_DATA:
     break;
   case CURLOPT_SSL_CTX_DATA:
+#ifdef have_curlssl_ssl_ctx
     /*
      * Set a SSL_CTX callback parameter pointer
      */
     data->set.ssl.fsslctxp = va_arg(param, void *);
     /*
      * Set a SSL_CTX callback parameter pointer
      */
     data->set.ssl.fsslctxp = va_arg(param, void *);
-    break;
+#else
+    result = CURLE_NOT_BUILT_IN;
 #endif
 #endif
-#if defined(USE_SSLEAY) || defined(USE_QSOSSL) || defined(USE_GSKIT)
+    break;
   case CURLOPT_CERTINFO:
   case CURLOPT_CERTINFO:
+#ifdef have_curlssl_certinfo
     data->set.ssl.certinfo = (0 != va_arg(param, long))?TRUE:FALSE;
     data->set.ssl.certinfo = (0 != va_arg(param, long))?TRUE:FALSE;
-    break;
+#else
+    result = CURLE_NOT_BUILT_IN;
 #endif
 #endif
+    break;
+  case CURLOPT_PINNEDPUBLICKEY:
+    /*
+     * Set pinned public key for SSL connection.
+     * Specify file name of the public key in DER format.
+     */
+    result = setstropt(&data->set.str[STRING_SSL_PINNEDPUBLICKEY],
+                       va_arg(param, char *));
+    break;
   case CURLOPT_CAINFO:
     /*
      * Set CA info for SSL connection. Specify file name of the CA certificate
   case CURLOPT_CAINFO:
     /*
      * Set CA info for SSL connection. Specify file name of the CA certificate
@@ -1926,6 +2040,7 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
                        va_arg(param, char *));
     break;
   case CURLOPT_CAPATH:
                        va_arg(param, char *));
     break;
   case CURLOPT_CAPATH:
+#ifdef have_curlssl_ca_path /* not supported by all backends */
     /*
      * Set CA path info for SSL connection. Specify directory name of the CA
      * certificates which have been prepared using openssl c_rehash utility.
     /*
      * Set CA path info for SSL connection. Specify directory name of the CA
      * certificates which have been prepared using openssl c_rehash utility.
@@ -1933,6 +2048,9 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
     /* This does not work on windows. */
     result = setstropt(&data->set.str[STRING_SSL_CAPATH],
                        va_arg(param, char *));
     /* This does not work on windows. */
     result = setstropt(&data->set.str[STRING_SSL_CAPATH],
                        va_arg(param, char *));
+#else
+    result = CURLE_NOT_BUILT_IN;
+#endif
     break;
   case CURLOPT_CRLFILE:
     /*
     break;
   case CURLOPT_CRLFILE:
     /*
@@ -2251,7 +2369,7 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
      * know that an unsigned int will always hold the value so we blindly
      * typecast to this type
      */
      * know that an unsigned int will always hold the value so we blindly
      * typecast to this type
      */
-    data->set.scope = curlx_sltoui(va_arg(param, long));
+    data->set.scope_id = curlx_sltoui(va_arg(param, long));
     break;
 
   case CURLOPT_PROTOCOLS:
     break;
 
   case CURLOPT_PROTOCOLS:
@@ -2442,6 +2560,15 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
   case CURLOPT_DNS_SERVERS:
     result = Curl_set_dns_servers(data, va_arg(param, char *));
     break;
   case CURLOPT_DNS_SERVERS:
     result = Curl_set_dns_servers(data, va_arg(param, char *));
     break;
+  case CURLOPT_DNS_INTERFACE:
+    result = Curl_set_dns_interface(data, va_arg(param, char *));
+    break;
+  case CURLOPT_DNS_LOCAL_IP4:
+    result = Curl_set_dns_local_ip4(data, va_arg(param, char *));
+    break;
+  case CURLOPT_DNS_LOCAL_IP6:
+    result = Curl_set_dns_local_ip6(data, va_arg(param, char *));
+    break;
 
   case CURLOPT_TCP_KEEPALIVE:
     data->set.tcp_keepalive = (0 != va_arg(param, long))?TRUE:FALSE;
 
   case CURLOPT_TCP_KEEPALIVE:
     data->set.tcp_keepalive = (0 != va_arg(param, long))?TRUE:FALSE;
@@ -2452,6 +2579,19 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
   case CURLOPT_TCP_KEEPINTVL:
     data->set.tcp_keepintvl = va_arg(param, long);
     break;
   case CURLOPT_TCP_KEEPINTVL:
     data->set.tcp_keepintvl = va_arg(param, long);
     break;
+  case CURLOPT_SSL_ENABLE_NPN:
+    data->set.ssl_enable_npn = (0 != va_arg(param, long))?TRUE:FALSE;
+    break;
+  case CURLOPT_SSL_ENABLE_ALPN:
+    data->set.ssl_enable_alpn = (0 != va_arg(param, long))?TRUE:FALSE;
+    break;
+
+#ifdef USE_UNIX_SOCKETS
+  case CURLOPT_UNIX_SOCKET_PATH:
+    result = setstropt(&data->set.str[STRING_UNIX_SOCKET_PATH],
+                       va_arg(param, char *));
+    break;
+#endif
 
   default:
     /* unknown tag and its companion, just ignore: */
 
   default:
     /* unknown tag and its companion, just ignore: */
@@ -2480,13 +2620,19 @@ static void conn_free(struct connectdata *conn)
     Curl_closesocket(conn, conn->sock[SECONDARYSOCKET]);
   if(CURL_SOCKET_BAD != conn->sock[FIRSTSOCKET])
     Curl_closesocket(conn, conn->sock[FIRSTSOCKET]);
     Curl_closesocket(conn, conn->sock[SECONDARYSOCKET]);
   if(CURL_SOCKET_BAD != conn->sock[FIRSTSOCKET])
     Curl_closesocket(conn, conn->sock[FIRSTSOCKET]);
+  if(CURL_SOCKET_BAD != conn->tempsock[0])
+    Curl_closesocket(conn, conn->tempsock[0]);
+  if(CURL_SOCKET_BAD != conn->tempsock[1])
+    Curl_closesocket(conn, conn->tempsock[1]);
 
 
-#if defined(USE_NTLM) && defined(NTLM_WB_ENABLED)
+#if !defined(CURL_DISABLE_HTTP) && defined(USE_NTLM) && \
+    defined(NTLM_WB_ENABLED)
   Curl_ntlm_wb_cleanup(conn);
 #endif
 
   Curl_safefree(conn->user);
   Curl_safefree(conn->passwd);
   Curl_ntlm_wb_cleanup(conn);
 #endif
 
   Curl_safefree(conn->user);
   Curl_safefree(conn->passwd);
+  Curl_safefree(conn->xoauth2_bearer);
   Curl_safefree(conn->options);
   Curl_safefree(conn->proxyuser);
   Curl_safefree(conn->proxypasswd);
   Curl_safefree(conn->options);
   Curl_safefree(conn->proxyuser);
   Curl_safefree(conn->proxypasswd);
@@ -2517,6 +2663,16 @@ static void conn_free(struct connectdata *conn)
   free(conn); /* free all the connection oriented data */
 }
 
   free(conn); /* free all the connection oriented data */
 }
 
+/*
+ * Disconnects the given connection. Note the connection may not be the
+ * primary connection, like when freeing room in the connection cache or
+ * killing of a dead old connection.
+ *
+ * This function MUST NOT reset state in the SessionHandle struct if that
+ * isn't strictly bound to the life-time of *this* particular connection.
+ *
+ */
+
 CURLcode Curl_disconnect(struct connectdata *conn, bool dead_connection)
 {
   struct SessionHandle *data;
 CURLcode Curl_disconnect(struct connectdata *conn, bool dead_connection)
 {
   struct SessionHandle *data;
@@ -2536,38 +2692,10 @@ CURLcode Curl_disconnect(struct connectdata *conn, bool dead_connection)
 
   Curl_hostcache_prune(data); /* kill old DNS cache entries */
 
 
   Curl_hostcache_prune(data); /* kill old DNS cache entries */
 
-  {
-    int has_host_ntlm = (conn->ntlm.state != NTLMSTATE_NONE);
-    int has_proxy_ntlm = (conn->proxyntlm.state != NTLMSTATE_NONE);
-
-    /* Authentication data is a mix of connection-related and sessionhandle-
-       related stuff. NTLM is connection-related so when we close the shop
-       we shall forget. */
-
-    if(has_host_ntlm) {
-      data->state.authhost.done = FALSE;
-      data->state.authhost.picked =
-        data->state.authhost.want;
-    }
-
-    if(has_proxy_ntlm) {
-      data->state.authproxy.done = FALSE;
-      data->state.authproxy.picked =
-        data->state.authproxy.want;
-    }
-
-    if(has_host_ntlm || has_proxy_ntlm)
-      data->state.authproblem = FALSE;
-  }
-
+#if !defined(CURL_DISABLE_HTTP) && defined(USE_NTLM)
   /* Cleanup NTLM connection-related data */
   Curl_http_ntlm_cleanup(conn);
   /* Cleanup NTLM connection-related data */
   Curl_http_ntlm_cleanup(conn);
-
-  /* Cleanup possible redirect junk */
-  if(data->req.newurl) {
-    free(data->req.newurl);
-    data->req.newurl = NULL;
-  }
+#endif
 
   if(conn->handler->disconnect)
     /* This is set if protocol-specific cleanups should be made */
 
   if(conn->handler->disconnect)
     /* This is set if protocol-specific cleanups should be made */
@@ -2606,8 +2734,6 @@ CURLcode Curl_disconnect(struct connectdata *conn, bool dead_connection)
 
   conn_free(conn);
 
 
   conn_free(conn);
 
-  Curl_speedinit(data);
-
   return CURLE_OK;
 }
 
   return CURLE_OK;
 }
 
@@ -2632,7 +2758,7 @@ static bool SocketIsDead(curl_socket_t sock)
 static bool IsPipeliningPossible(const struct SessionHandle *handle,
                                  const struct connectdata *conn)
 {
 static bool IsPipeliningPossible(const struct SessionHandle *handle,
                                  const struct connectdata *conn)
 {
-  if((conn->handler->protocol & CURLPROTO_HTTP) &&
+  if((conn->handler->protocol & PROTO_FAMILY_HTTP) &&
      Curl_multi_pipeline_enabled(handle->multi) &&
      (handle->set.httpreq == HTTPREQ_GET ||
       handle->set.httpreq == HTTPREQ_HEAD) &&
      Curl_multi_pipeline_enabled(handle->multi) &&
      (handle->set.httpreq == HTTPREQ_GET ||
       handle->set.httpreq == HTTPREQ_HEAD) &&
@@ -2652,7 +2778,6 @@ CURLcode Curl_addHandleToPipeline(struct SessionHandle *data,
 {
   if(!Curl_llist_insert_next(pipeline, pipeline->tail, data))
     return CURLE_OUT_OF_MEMORY;
 {
   if(!Curl_llist_insert_next(pipeline, pipeline->tail, data))
     return CURLE_OUT_OF_MEMORY;
-  infof(data, "Curl_addHandleToPipeline: length: %d\n", pipeline->size);
   return CURLE_OK;
 }
 
   return CURLE_OK;
 }
 
@@ -2835,6 +2960,69 @@ find_oldest_idle_connection_in_bundle(struct SessionHandle *data,
 }
 
 /*
 }
 
 /*
+ * This function checks if given connection is dead and disconnects if so.
+ * (That also removes it from the connection cache.)
+ *
+ * Returns TRUE if the connection actually was dead and disconnected.
+ */
+static bool disconnect_if_dead(struct connectdata *conn,
+                               struct SessionHandle *data)
+{
+  size_t pipeLen = conn->send_pipe->size + conn->recv_pipe->size;
+  if(!pipeLen && !conn->inuse) {
+    /* The check for a dead socket makes sense only if there are no
+       handles in pipeline and the connection isn't already marked in
+       use */
+    bool dead;
+    if(conn->handler->protocol & CURLPROTO_RTSP)
+      /* RTSP is a special case due to RTP interleaving */
+      dead = Curl_rtsp_connisdead(conn);
+    else
+      dead = SocketIsDead(conn->sock[FIRSTSOCKET]);
+
+    if(dead) {
+      conn->data = data;
+      infof(data, "Connection %ld seems to be dead!\n", conn->connection_id);
+
+      /* disconnect resources */
+      Curl_disconnect(conn, /* dead_connection */TRUE);
+      return TRUE;
+    }
+  }
+  return FALSE;
+}
+
+/*
+ * Wrapper to use disconnect_if_dead() function in Curl_conncache_foreach()
+ *
+ * Returns always 0.
+ */
+static int call_disconnect_if_dead(struct connectdata *conn,
+                                      void *param)
+{
+  struct SessionHandle* data = (struct SessionHandle*)param;
+  disconnect_if_dead(conn, data);
+  return 0; /* continue iteration */
+}
+
+/*
+ * This function scans the connection cache for half-open/dead connections,
+ * closes and removes them.
+ * The cleanup is done at most once per second.
+ */
+static void prune_dead_connections(struct SessionHandle *data)
+{
+  struct timeval now = Curl_tvnow();
+  long elapsed = Curl_tvdiff(now, data->state.conn_cache->last_cleanup);
+
+  if(elapsed >= 1000L) {
+    Curl_conncache_foreach(data->state.conn_cache, data,
+                           call_disconnect_if_dead);
+    data->state.conn_cache->last_cleanup = now;
+  }
+}
+
+/*
  * Given one filled in connection struct (named needle), this function should
  * detect if there already is one that has all the significant details
  * exactly the same and thus should be used instead.
  * Given one filled in connection struct (named needle), this function should
  * detect if there already is one that has all the significant details
  * exactly the same and thus should be used instead.
@@ -2855,8 +3043,9 @@ ConnectionExists(struct SessionHandle *data,
   struct connectdata *check;
   struct connectdata *chosen = 0;
   bool canPipeline = IsPipeliningPossible(data, needle);
   struct connectdata *check;
   struct connectdata *chosen = 0;
   bool canPipeline = IsPipeliningPossible(data, needle);
-  bool wantNTLM = (data->state.authhost.want==CURLAUTH_NTLM) ||
-                  (data->state.authhost.want==CURLAUTH_NTLM_WB) ? TRUE : FALSE;
+  bool wantNTLMhttp = ((data->state.authhost.want & CURLAUTH_NTLM) ||
+                       (data->state.authhost.want & CURLAUTH_NTLM_WB)) &&
+    (needle->handler->protocol & PROTO_FAMILY_HTTP) ? TRUE : FALSE;
   struct connectbundle *bundle;
 
   *force_reuse = FALSE;
   struct connectbundle *bundle;
 
   *force_reuse = FALSE;
@@ -2887,7 +3076,9 @@ ConnectionExists(struct SessionHandle *data,
     curr = bundle->conn_list->head;
     while(curr) {
       bool match = FALSE;
     curr = bundle->conn_list->head;
     while(curr) {
       bool match = FALSE;
+#if defined(USE_NTLM)
       bool credentialsMatch = FALSE;
       bool credentialsMatch = FALSE;
+#endif
       size_t pipeLen;
 
       /*
       size_t pipeLen;
 
       /*
@@ -2897,29 +3088,10 @@ ConnectionExists(struct SessionHandle *data,
       check = curr->ptr;
       curr = curr->next;
 
       check = curr->ptr;
       curr = curr->next;
 
-      pipeLen = check->send_pipe->size + check->recv_pipe->size;
-
-      if(!pipeLen && !check->inuse) {
-        /* The check for a dead socket makes sense only if there are no
-           handles in pipeline and the connection isn't already marked in
-           use */
-        bool dead;
-        if(check->handler->protocol & CURLPROTO_RTSP)
-          /* RTSP is a special case due to RTP interleaving */
-          dead = Curl_rtsp_connisdead(check);
-        else
-          dead = SocketIsDead(check->sock[FIRSTSOCKET]);
-
-        if(dead) {
-          check->data = data;
-          infof(data, "Connection %ld seems to be dead!\n",
-                check->connection_id);
+      if(disconnect_if_dead(check, data))
+        continue;
 
 
-          /* disconnect resources */
-          Curl_disconnect(check, /* dead_connection */ TRUE);
-          continue;
-        }
-      }
+      pipeLen = check->send_pipe->size + check->recv_pipe->size;
 
       if(canPipeline) {
         /* Make sure the pipe has only GET requests */
 
       if(canPipeline) {
         /* Make sure the pipe has only GET requests */
@@ -3011,16 +3183,18 @@ ConnectionExists(struct SessionHandle *data,
           continue;
       }
 
           continue;
       }
 
-      if((needle->handler->protocol & CURLPROTO_FTP) ||
-         ((needle->handler->protocol & CURLPROTO_HTTP) && wantNTLM)) {
-         /* This is FTP or HTTP+NTLM, verify that we're using the same name
-            and password as well */
-         if(!strequal(needle->user, check->user) ||
-            !strequal(needle->passwd, check->passwd)) {
-            /* one of them was different */
-            continue;
-         }
-         credentialsMatch = TRUE;
+      if((!(needle->handler->flags & PROTOPT_CREDSPERREQUEST)) ||
+         wantNTLMhttp) {
+        /* This protocol requires credentials per connection or is HTTP+NTLM,
+           so verify that we're using the same name and password as well */
+        if(!strequal(needle->user, check->user) ||
+           !strequal(needle->passwd, check->passwd)) {
+          /* one of them was different */
+          continue;
+        }
+#if defined(USE_NTLM)
+        credentialsMatch = TRUE;
+#endif
       }
 
       if(!needle->bits.httpproxy || needle->handler->flags&PROTOPT_SSL ||
       }
 
       if(!needle->bits.httpproxy || needle->handler->flags&PROTOPT_SSL ||
@@ -3072,12 +3246,13 @@ ConnectionExists(struct SessionHandle *data,
       }
 
       if(match) {
       }
 
       if(match) {
-        /* If we are looking for an NTLM connection, check if this is already
-           authenticating with the right credentials. If not, keep looking so
-           that we can reuse NTLM connections if possible. (Especially we
-           must not reuse the same connection if partway through
-           a handshake!) */
-        if(wantNTLM) {
+#if defined(USE_NTLM)
+        /* If we are looking for an HTTP+NTLM connection, check if this is
+           already authenticating with the right credentials. If not, keep
+           looking so that we can reuse NTLM connections if
+           possible. (Especially we must not reuse the same connection if
+           partway through a handshake!) */
+        if(wantNTLMhttp) {
           if(credentialsMatch && check->ntlm.state != NTLMSTATE_NONE) {
             chosen = check;
 
           if(credentialsMatch && check->ntlm.state != NTLMSTATE_NONE) {
             chosen = check;
 
@@ -3085,9 +3260,12 @@ ConnectionExists(struct SessionHandle *data,
             *force_reuse = TRUE;
             break;
           }
             *force_reuse = TRUE;
             break;
           }
-          else
-            continue;
+          else if(credentialsMatch)
+            /* this is a backup choice */
+            chosen = check;
+          continue;
         }
         }
+#endif
 
         if(canPipeline) {
           /* We can pipeline if we want to. Let's continue looking for
 
         if(canPipeline) {
           /* We can pipeline if we want to. Let's continue looking for
@@ -3140,7 +3318,8 @@ ConnectionDone(struct SessionHandle *data, struct connectdata *conn)
 {
   /* data->multi->maxconnects can be negative, deal with it. */
   size_t maxconnects =
 {
   /* data->multi->maxconnects can be negative, deal with it. */
   size_t maxconnects =
-    (data->multi->maxconnects < 0) ? 0 : data->multi->maxconnects;
+    (data->multi->maxconnects < 0) ? data->multi->num_easy * 4:
+    data->multi->maxconnects;
   struct connectdata *conn_candidate = NULL;
 
   /* Mark the current connection as 'unused' */
   struct connectdata *conn_candidate = NULL;
 
   /* Mark the current connection as 'unused' */
@@ -3175,19 +3354,7 @@ ConnectionDone(struct SessionHandle *data, struct connectdata *conn)
 static CURLcode ConnectionStore(struct SessionHandle *data,
                                 struct connectdata *conn)
 {
 static CURLcode ConnectionStore(struct SessionHandle *data,
                                 struct connectdata *conn)
 {
-  static int connection_id_counter = 0;
-
-  CURLcode result;
-
-  /* Assign a number to the connection for easier tracking in the log
-     output */
-  conn->connection_id = connection_id_counter++;
-
-  result = Curl_conncache_add_conn(data->state.conn_cache, conn);
-  if(result != CURLE_OK)
-    conn->connection_id = -1;
-
-  return result;
+  return Curl_conncache_add_conn(data->state.conn_cache, conn);
 }
 
 /* after a TCP connection to the proxy has been verified, this function does
 }
 
 /* after a TCP connection to the proxy has been verified, this function does
@@ -3196,9 +3363,12 @@ static CURLcode ConnectionStore(struct SessionHandle *data,
    Note: this function's sub-functions call failf()
 
 */
    Note: this function's sub-functions call failf()
 
 */
-CURLcode Curl_connected_proxy(struct connectdata *conn)
+CURLcode Curl_connected_proxy(struct connectdata *conn,
+                              int sockindex)
 {
 {
-  if(!conn->bits.proxy)
+  if(!conn->bits.proxy || sockindex)
+    /* this magic only works for the primary socket as the secondary is used
+       for FTP only and it has FTP specific magic in ftp.c */
     return CURLE_OK;
 
   switch(conn->proxytype) {
     return CURLE_OK;
 
   switch(conn->proxytype) {
@@ -3229,49 +3399,6 @@ CURLcode Curl_connected_proxy(struct connectdata *conn)
   return CURLE_OK;
 }
 
   return CURLE_OK;
 }
 
-static CURLcode ConnectPlease(struct SessionHandle *data,
-                              struct connectdata *conn,
-                              bool *connected)
-{
-  CURLcode result;
-  Curl_addrinfo *addr;
-#ifndef CURL_DISABLE_VERBOSE_STRINGS
-  char *hostname = conn->bits.proxy?conn->proxy.name:conn->host.name;
-
-  infof(data, "About to connect() to %s%s port %ld (#%ld)\n",
-        conn->bits.proxy?"proxy ":"",
-        hostname, conn->port, conn->connection_id);
-#else
-  (void)data;
-#endif
-
-  /*************************************************************
-   * Connect to server/proxy
-   *************************************************************/
-  result= Curl_connecthost(conn,
-                           conn->dns_entry,
-                           &conn->sock[FIRSTSOCKET],
-                           &addr,
-                           connected);
-  if(CURLE_OK == result) {
-    /* All is cool, we store the current information */
-    conn->ip_addr = addr;
-
-    if(*connected) {
-      result = Curl_connected_proxy(conn);
-      if(!result) {
-        conn->bits.tcpconnect[FIRSTSOCKET] = TRUE;
-        Curl_pgrsTime(data, TIMER_CONNECT); /* connect done */
-      }
-    }
-  }
-
-  if(result)
-    *connected = FALSE; /* mark it as not connected */
-
-  return result;
-}
-
 /*
  * verboseconnect() displays verbose information after a connect
  */
 /*
  * verboseconnect() displays verbose information after a connect
  */
@@ -3462,6 +3589,8 @@ static bool tld_check_name(struct SessionHandle *data,
 static void fix_hostname(struct SessionHandle *data,
                          struct connectdata *conn, struct hostname *host)
 {
 static void fix_hostname(struct SessionHandle *data,
                          struct connectdata *conn, struct hostname *host)
 {
+  size_t len;
+
 #ifndef USE_LIBIDN
   (void)data;
   (void)conn;
 #ifndef USE_LIBIDN
   (void)data;
   (void)conn;
@@ -3471,6 +3600,13 @@ static void fix_hostname(struct SessionHandle *data,
 
   /* set the name we use to display the host name */
   host->dispname = host->name;
 
   /* set the name we use to display the host name */
   host->dispname = host->name;
+
+  len = strlen(host->name);
+  if(host->name[len-1] == '.')
+    /* strip off a single trailing dot if present, primarily for SNI but
+       there's no use for it */
+    host->name[len-1]=0;
+
   if(!is_ASCII_name(host->name)) {
 #ifdef USE_LIBIDN
   /*************************************************************
   if(!is_ASCII_name(host->name)) {
 #ifdef USE_LIBIDN
   /*************************************************************
@@ -3538,13 +3674,16 @@ static struct connectdata *allocate_conn(struct SessionHandle *data)
 
   conn->sock[FIRSTSOCKET] = CURL_SOCKET_BAD;     /* no file descriptor */
   conn->sock[SECONDARYSOCKET] = CURL_SOCKET_BAD; /* no file descriptor */
 
   conn->sock[FIRSTSOCKET] = CURL_SOCKET_BAD;     /* no file descriptor */
   conn->sock[SECONDARYSOCKET] = CURL_SOCKET_BAD; /* no file descriptor */
+  conn->tempsock[0] = CURL_SOCKET_BAD; /* no file descriptor */
+  conn->tempsock[1] = CURL_SOCKET_BAD; /* no file descriptor */
   conn->connection_id = -1;    /* no ID */
   conn->port = -1; /* unknown at this point */
   conn->connection_id = -1;    /* no ID */
   conn->port = -1; /* unknown at this point */
+  conn->remote_port = -1; /* unknown */
 
   /* Default protocol-independent behavior doesn't support persistent
      connections, so we set this to force-close. Protocols that support
      this need to set this to FALSE in their "curl_do" functions. */
 
   /* Default protocol-independent behavior doesn't support persistent
      connections, so we set this to force-close. Protocols that support
      this need to set this to FALSE in their "curl_do" functions. */
-  conn->bits.close = TRUE;
+  connclose(conn, "Default to force-close");
 
   /* Store creation time to help future close decision making */
   conn->created = Curl_tvnow();
 
   /* Store creation time to help future close decision making */
   conn->created = Curl_tvnow();
@@ -3585,7 +3724,8 @@ static struct connectdata *allocate_conn(struct SessionHandle *data)
 
   conn->ip_version = data->set.ipver;
 
 
   conn->ip_version = data->set.ipver;
 
-#if defined(USE_NTLM) && defined(NTLM_WB_ENABLED)
+#if !defined(CURL_DISABLE_HTTP) && defined(USE_NTLM) && \
+    defined(NTLM_WB_ENABLED)
   conn->ntlm_auth_hlpr_socket = CURL_SOCKET_BAD;
   conn->ntlm_auth_hlpr_pid = 0;
   conn->challenge_header = NULL;
   conn->ntlm_auth_hlpr_socket = CURL_SOCKET_BAD;
   conn->ntlm_auth_hlpr_pid = 0;
   conn->challenge_header = NULL;
@@ -3606,7 +3746,7 @@ static struct connectdata *allocate_conn(struct SessionHandle *data)
   if(!conn->send_pipe || !conn->recv_pipe)
     goto error;
 
   if(!conn->send_pipe || !conn->recv_pipe)
     goto error;
 
-#if defined(HAVE_KRB4) || defined(HAVE_GSSAPI)
+#ifdef HAVE_GSSAPI
   conn->data_prot = PROT_CLEAR;
 #endif
 
   conn->data_prot = PROT_CLEAR;
 #endif
 
@@ -3675,7 +3815,7 @@ static CURLcode findprotocol(struct SessionHandle *data,
   /* The protocol was not found in the table, but we don't have to assign it
      to anything since it is already assigned to a dummy-struct in the
      create_conn() function when the connectdata struct is allocated. */
   /* The protocol was not found in the table, but we don't have to assign it
      to anything since it is already assigned to a dummy-struct in the
      create_conn() function when the connectdata struct is allocated. */
-  failf(data, "Protocol %s not supported or disabled in " LIBCURL_NAME,
+  failf(data, "Protocol \"%s\" not supported or disabled in " LIBCURL_NAME,
         protostr);
 
   return CURLE_UNSUPPORTED_PROTOCOL;
         protostr);
 
   return CURLE_UNSUPPORTED_PROTOCOL;
@@ -3687,20 +3827,28 @@ static CURLcode findprotocol(struct SessionHandle *data,
 static CURLcode parseurlandfillconn(struct SessionHandle *data,
                                     struct connectdata *conn,
                                     bool *prot_missing,
 static CURLcode parseurlandfillconn(struct SessionHandle *data,
                                     struct connectdata *conn,
                                     bool *prot_missing,
-                                    char *user, char *passwd, char *options)
+                                    char **userp, char **passwdp,
+                                    char **optionsp)
 {
   char *at;
   char *fragment;
   char *path = data->state.path;
   char *query;
   int rc;
 {
   char *at;
   char *fragment;
   char *path = data->state.path;
   char *query;
   int rc;
-  char protobuf[16];
-  const char *protop;
+  char protobuf[16] = "";
+  const char *protop = "";
   CURLcode result;
   bool rebuild_url = FALSE;
 
   *prot_missing = FALSE;
 
   CURLcode result;
   bool rebuild_url = FALSE;
 
   *prot_missing = FALSE;
 
+  /* We might pass the entire URL into the request so we need to make sure
+   * there are no bad characters in there.*/
+  if(strpbrk(data->change.url, "\r\n")) {
+    failf(data, "Illegal characters found in URL");
+    return CURLE_URL_MALFORMAT;
+  }
+
   /*************************************************************
    * Parse the URL.
    *
   /*************************************************************
    * Parse the URL.
    *
@@ -3931,33 +4079,66 @@ static CURLcode parseurlandfillconn(struct SessionHandle *data,
    * Parse the login details from the URL and strip them out of
    * the host name
    */
    * Parse the login details from the URL and strip them out of
    * the host name
    */
-  result = parse_url_login(data, conn, user, passwd, options);
-  if(result != CURLE_OK)
+  result = parse_url_login(data, conn, userp, passwdp, optionsp);
+  if(result)
     return result;
 
   if(conn->host.name[0] == '[') {
     /* This looks like an IPv6 address literal.  See if there is an address
     return result;
 
   if(conn->host.name[0] == '[') {
     /* This looks like an IPv6 address literal.  See if there is an address
-       scope */
-    char *percent = strstr (conn->host.name, "%25");
+       scope if there is no location header */
+    char *percent = strchr(conn->host.name, '%');
     if(percent) {
     if(percent) {
+      unsigned int identifier_offset = 3;
       char *endp;
       char *endp;
-      unsigned long scope = strtoul (percent + 3, &endp, 10);
+      unsigned long scope;
+      if(strncmp("%25", percent, 3) != 0) {
+        infof(data,
+              "Please URL encode %% as %%25, see RFC 6874.\n");
+        identifier_offset = 1;
+      }
+      scope = strtoul(percent + identifier_offset, &endp, 10);
       if(*endp == ']') {
         /* The address scope was well formed.  Knock it out of the
            hostname. */
         memmove(percent, endp, strlen(endp)+1);
       if(*endp == ']') {
         /* The address scope was well formed.  Knock it out of the
            hostname. */
         memmove(percent, endp, strlen(endp)+1);
-        if(!data->state.this_is_a_follow)
-          /* Don't honour a scope given in a Location: header */
-          conn->scope = (unsigned int)scope;
+        conn->scope_id = (unsigned int)scope;
+      }
+      else {
+        /* Zone identifier is not numeric */
+#if defined(HAVE_NET_IF_H) && defined(IFNAMSIZ) && defined(HAVE_IF_NAMETOINDEX)
+        char ifname[IFNAMSIZ + 2];
+        char *square_bracket;
+        unsigned int scopeidx = 0;
+        strncpy(ifname, percent + identifier_offset, IFNAMSIZ + 2);
+        /* Ensure nullbyte termination */
+        ifname[IFNAMSIZ + 1] = '\0';
+        square_bracket = strchr(ifname, ']');
+        if(square_bracket) {
+          /* Remove ']' */
+          *square_bracket = '\0';
+          scopeidx = if_nametoindex(ifname);
+          if(scopeidx == 0) {
+            infof(data, "Invalid network interface: %s; %s\n", ifname,
+                  strerror(errno));
+          }
+        }
+        if(scopeidx > 0) {
+          char *p = percent + identifier_offset + strlen(ifname);
+
+          /* Remove zone identifier from hostname */
+          memmove(percent, p, strlen(p) + 1);
+          conn->scope_id = scopeidx;
+        }
+        else
+#endif /* HAVE_NET_IF_H && IFNAMSIZ */
+          infof(data, "Invalid IPv6 address format\n");
       }
       }
-      else
-        infof(data, "Invalid IPv6 address format\n");
     }
   }
 
     }
   }
 
-  if(data->set.scope)
+  if(data->set.scope_id)
     /* Override any scope that was set above.  */
     /* Override any scope that was set above.  */
-    conn->scope = data->set.scope;
+    conn->scope_id = data->set.scope_id;
 
   /* Remove the fragment part of the path. Per RFC 2396, this is always the
      last part of the URI. We are looking for the first '#' so that we deal
 
   /* Remove the fragment part of the path. Per RFC 2396, this is always the
      last part of the URI. We are looking for the first '#' so that we deal
@@ -3997,7 +4178,7 @@ static CURLcode setup_range(struct SessionHandle *data)
       free(s->range);
 
     if(s->resume_from)
       free(s->range);
 
     if(s->resume_from)
-      s->range = aprintf("%" FORMAT_OFF_TU "-", s->resume_from);
+      s->range = aprintf("%" CURL_FORMAT_CURL_OFF_TU "-", s->resume_from);
     else
       s->range = strdup(data->set.str[STRING_SET_RANGE]);
 
     else
       s->range = strdup(data->set.str[STRING_SET_RANGE]);
 
@@ -4016,18 +4197,32 @@ static CURLcode setup_range(struct SessionHandle *data)
 }
 
 
 }
 
 
-/***************************************************************
-* Setup connection internals specific to the requested protocol.
-* This MUST get called after proxy magic has been figured out.
-***************************************************************/
+/*
+ * setup_connection_internals() -
+ *
+ * Setup connection internals specific to the requested protocol in the
+ * SessionHandle. This is inited and setup before the connection is made but
+ * is about the particular protocol that is to be used.
+ *
+ * This MUST get called after proxy magic has been figured out.
+ */
 static CURLcode setup_connection_internals(struct connectdata *conn)
 {
   const struct Curl_handler * p;
   CURLcode result;
 static CURLcode setup_connection_internals(struct connectdata *conn)
 {
   const struct Curl_handler * p;
   CURLcode result;
+  struct SessionHandle *data = conn->data;
 
 
-  conn->socktype = SOCK_STREAM; /* most of them are TCP streams */
+  /* in some case in the multi state-machine, we go back to the CONNECT state
+     and then a second (or third or...) call to this function will be made
+     without doing a DISCONNECT or DONE in between (since the connection is
+     yet in place) and therefore this function needs to first make sure
+     there's no lingering previous data allocated. */
+  Curl_free_request_state(data);
+
+  memset(&data->req, 0, sizeof(struct SingleRequest));
+  data->req.maxdownload = -1;
 
 
-  /* Scan protocol handler table. */
+  conn->socktype = SOCK_STREAM; /* most of them are TCP streams */
 
   /* Perform setup complement if some. */
   p = conn->handler;
 
   /* Perform setup complement if some. */
   p = conn->handler;
@@ -4035,7 +4230,7 @@ static CURLcode setup_connection_internals(struct connectdata *conn)
   if(p->setup_connection) {
     result = (*p->setup_connection)(conn);
 
   if(p->setup_connection) {
     result = (*p->setup_connection)(conn);
 
-    if(result != CURLE_OK)
+    if(result)
       return result;
 
     p = conn->handler;              /* May have changed. */
       return result;
 
     p = conn->handler;              /* May have changed. */
@@ -4045,11 +4240,27 @@ static CURLcode setup_connection_internals(struct connectdata *conn)
     /* we check for -1 here since if proxy was detected already, this
        was very likely already set to the proxy port */
     conn->port = p->defport;
     /* we check for -1 here since if proxy was detected already, this
        was very likely already set to the proxy port */
     conn->port = p->defport;
-  conn->remote_port = (unsigned short)conn->given->defport;
+
+  /* only if remote_port was not already parsed off the URL we use the
+     default port number */
+  if(conn->remote_port < 0)
+    conn->remote_port = (unsigned short)conn->given->defport;
 
   return CURLE_OK;
 }
 
 
   return CURLE_OK;
 }
 
+/*
+ * Curl_free_request_state() should free temp data that was allocated in the
+ * SessionHandle for this single request.
+ */
+
+void Curl_free_request_state(struct SessionHandle *data)
+{
+  Curl_safefree(data->req.protop);
+  Curl_safefree(data->req.newurl);
+}
+
+
 #ifndef CURL_DISABLE_PROXY
 /****************************************************************
 * Checks if the host is in the noproxy list. returns true if it matches
 #ifndef CURL_DISABLE_PROXY
 /****************************************************************
 * Checks if the host is in the noproxy list. returns true if it matches
@@ -4193,9 +4404,8 @@ static char *detect_proxy(struct connectdata *conn)
       prox=curl_getenv(proxy_env);
     }
 
       prox=curl_getenv(proxy_env);
     }
 
-    if(prox && *prox) { /* don't count "" strings */
+    if(prox)
       proxy = prox; /* use this */
       proxy = prox; /* use this */
-    }
     else {
       proxy = curl_getenv("all_proxy"); /* default proxy to use */
       if(!proxy)
     else {
       proxy = curl_getenv("all_proxy"); /* default proxy to use */
       if(!proxy)
@@ -4255,13 +4465,12 @@ static CURLcode parse_proxy(struct SessionHandle *data,
   /* Is there a username and password given in this proxy url? */
   atsign = strchr(proxyptr, '@');
   if(atsign) {
   /* Is there a username and password given in this proxy url? */
   atsign = strchr(proxyptr, '@');
   if(atsign) {
-    CURLcode res = CURLE_OK;
     char *proxyuser = NULL;
     char *proxypasswd = NULL;
     char *proxyuser = NULL;
     char *proxypasswd = NULL;
-
-    res = parse_login_details(proxyptr, atsign - proxyptr,
-                              &proxyuser, &proxypasswd, NULL);
-    if(!res) {
+    CURLcode result =
+      parse_login_details(proxyptr, atsign - proxyptr,
+                          &proxyuser, &proxypasswd, NULL);
+    if(!result) {
       /* found user and password, rip them out.  note that we are
          unescaping them, as there is otherwise no way to have a
          username or password with reserved characters like ':' in
       /* found user and password, rip them out.  note that we are
          unescaping them, as there is otherwise no way to have a
          username or password with reserved characters like ':' in
@@ -4273,7 +4482,7 @@ static CURLcode parse_proxy(struct SessionHandle *data,
         conn->proxyuser = strdup("");
 
       if(!conn->proxyuser)
         conn->proxyuser = strdup("");
 
       if(!conn->proxyuser)
-        res = CURLE_OUT_OF_MEMORY;
+        result = CURLE_OUT_OF_MEMORY;
       else {
         Curl_safefree(conn->proxypasswd);
         if(proxypasswd && strlen(proxypasswd) < MAX_CURL_PASSWORD_LENGTH)
       else {
         Curl_safefree(conn->proxypasswd);
         if(proxypasswd && strlen(proxypasswd) < MAX_CURL_PASSWORD_LENGTH)
@@ -4282,36 +4491,42 @@ static CURLcode parse_proxy(struct SessionHandle *data,
           conn->proxypasswd = strdup("");
 
         if(!conn->proxypasswd)
           conn->proxypasswd = strdup("");
 
         if(!conn->proxypasswd)
-          res = CURLE_OUT_OF_MEMORY;
+          result = CURLE_OUT_OF_MEMORY;
       }
 
       }
 
-      if(!res) {
+      if(!result) {
         conn->bits.proxy_user_passwd = TRUE; /* enable it */
         atsign++; /* the right side of the @-letter */
 
         conn->bits.proxy_user_passwd = TRUE; /* enable it */
         atsign++; /* the right side of the @-letter */
 
-        if(atsign)
-          proxyptr = atsign; /* now use this instead */
-        else
-          res = CURLE_OUT_OF_MEMORY;
+        proxyptr = atsign; /* now use this instead */
       }
     }
 
     Curl_safefree(proxyuser);
     Curl_safefree(proxypasswd);
 
       }
     }
 
     Curl_safefree(proxyuser);
     Curl_safefree(proxypasswd);
 
-    if(res)
-      return res;
+    if(result)
+      return result;
   }
 
   /* start scanning for port number at this point */
   portptr = proxyptr;
 
   }
 
   /* start scanning for port number at this point */
   portptr = proxyptr;
 
-  /* detect and extract RFC2732-style IPv6-addresses */
+  /* detect and extract RFC6874-style IPv6-addresses */
   if(*proxyptr == '[') {
     char *ptr = ++proxyptr; /* advance beyond the initial bracket */
   if(*proxyptr == '[') {
     char *ptr = ++proxyptr; /* advance beyond the initial bracket */
-    while(*ptr && (ISXDIGIT(*ptr) || (*ptr == ':') || (*ptr == '%') ||
-                   (*ptr == '.')))
+    while(*ptr && (ISXDIGIT(*ptr) || (*ptr == ':') || (*ptr == '.')))
       ptr++;
       ptr++;
+    if(*ptr == '%') {
+      /* There might be a zone identifier */
+      if(strncmp("%25", ptr, 3))
+        infof(data, "Please URL encode %% as %%25, see RFC 6874.\n");
+      ptr++;
+      /* Allow unresered characters as defined in RFC 3986 */
+      while(*ptr && (ISALPHA(*ptr) || ISXDIGIT(*ptr) || (*ptr == '-') ||
+                     (*ptr == '.') || (*ptr == '_') || (*ptr == '~')))
+        ptr++;
+    }
     if(*ptr == ']')
       /* yeps, it ended nicely with a bracket as well */
       *ptr++ = 0;
     if(*ptr == ']')
       /* yeps, it ended nicely with a bracket as well */
       *ptr++ = 0;
@@ -4411,7 +4626,7 @@ static CURLcode parse_proxy_auth(struct SessionHandle *data,
  */
 static CURLcode parse_url_login(struct SessionHandle *data,
                                 struct connectdata *conn,
  */
 static CURLcode parse_url_login(struct SessionHandle *data,
                                 struct connectdata *conn,
-                                char *user, char *passwd, char *options)
+                                char **user, char **passwd, char **options)
 {
   CURLcode result = CURLE_OK;
   char *userp = NULL;
 {
   CURLcode result = CURLE_OK;
   char *userp = NULL;
@@ -4428,90 +4643,82 @@ static CURLcode parse_url_login(struct SessionHandle *data,
   char *ptr = strchr(conn->host.name, '@');
   char *login = conn->host.name;
 
   char *ptr = strchr(conn->host.name, '@');
   char *login = conn->host.name;
 
-  user[0] = 0;   /* to make everything well-defined */
-  passwd[0] = 0;
-  options[0] = 0;
+  DEBUGASSERT(!**user);
+  DEBUGASSERT(!**passwd);
+  DEBUGASSERT(!**options);
+
+  if(!ptr)
+    goto out;
 
   /* We will now try to extract the
    * possible login information in a string like:
    * ftp://user:password@ftp.my.site:8021/README */
 
   /* We will now try to extract the
    * possible login information in a string like:
    * ftp://user:password@ftp.my.site:8021/README */
-  if(ptr) {
-    /* There's login information to the left of the @ */
-
-    conn->host.name = ++ptr;
-
-    /* So the hostname is sane.  Only bother interpreting the
-     * results if we could care.  It could still be wasted
-     * work because it might be overtaken by the programmatically
-     * set user/passwd, but doing that first adds more cases here :-(
-     */
+  conn->host.name = ++ptr;
 
 
-    if(data->set.use_netrc != CURL_NETRC_REQUIRED) {
-      /* We could use the login information in the URL so extract it */
-      result = parse_login_details(login, ptr - login - 1,
-                                   &userp, &passwdp, &optionsp);
-      if(!result) {
-        if(userp) {
-          char *newname;
-
-          /* We have a user in the URL */
-          conn->bits.userpwd_in_url = TRUE;
-          conn->bits.user_passwd = TRUE; /* enable user+password */
-
-          /* Decode the user */
-          newname = curl_easy_unescape(data, userp, 0, NULL);
-          if(!newname) {
-            Curl_safefree(userp);
-            Curl_safefree(passwdp);
-            Curl_safefree(optionsp);
-            return CURLE_OUT_OF_MEMORY;
-          }
+  /* So the hostname is sane.  Only bother interpreting the
+   * results if we could care.  It could still be wasted
+   * work because it might be overtaken by the programmatically
+   * set user/passwd, but doing that first adds more cases here :-(
+   */
 
 
-          if(strlen(newname) < MAX_CURL_USER_LENGTH)
-            strcpy(user, newname);
+  if(data->set.use_netrc == CURL_NETRC_REQUIRED)
+    goto out;
 
 
-          free(newname);
-        }
+  /* We could use the login information in the URL so extract it */
+  result = parse_login_details(login, ptr - login - 1,
+                               &userp, &passwdp, &optionsp);
+  if(result)
+    goto out;
 
 
-        if(passwdp) {
-          /* We have a password in the URL so decode it */
-          char *newpasswd = curl_easy_unescape(data, passwdp, 0, NULL);
-          if(!newpasswd) {
-            Curl_safefree(userp);
-            Curl_safefree(passwdp);
-            Curl_safefree(optionsp);
-            return CURLE_OUT_OF_MEMORY;
-          }
+  if(userp) {
+    char *newname;
 
 
-          if(strlen(newpasswd) < MAX_CURL_PASSWORD_LENGTH)
-            strcpy(passwd, newpasswd);
+    /* We have a user in the URL */
+    conn->bits.userpwd_in_url = TRUE;
+    conn->bits.user_passwd = TRUE; /* enable user+password */
 
 
-          free(newpasswd);
-        }
+    /* Decode the user */
+    newname = curl_easy_unescape(data, userp, 0, NULL);
+    if(!newname) {
+      result = CURLE_OUT_OF_MEMORY;
+      goto out;
+    }
 
 
-        if(optionsp) {
-          /* We have an options list in the URL so decode it */
-          char *newoptions = curl_easy_unescape(data, optionsp, 0, NULL);
-          if(!newoptions) {
-            Curl_safefree(userp);
-            Curl_safefree(passwdp);
-            Curl_safefree(optionsp);
-            return CURLE_OUT_OF_MEMORY;
-          }
+    free(*user);
+    *user = newname;
+  }
 
 
-          if(strlen(newoptions) < MAX_CURL_OPTIONS_LENGTH)
-            strcpy(options, newoptions);
+  if(passwdp) {
+    /* We have a password in the URL so decode it */
+    char *newpasswd = curl_easy_unescape(data, passwdp, 0, NULL);
+    if(!newpasswd) {
+      result = CURLE_OUT_OF_MEMORY;
+      goto out;
+    }
 
 
-          free(newoptions);
-        }
-      }
+    free(*passwd);
+    *passwd = newpasswd;
+  }
 
 
-      Curl_safefree(userp);
-      Curl_safefree(passwdp);
-      Curl_safefree(optionsp);
+  if(optionsp) {
+    /* We have an options list in the URL so decode it */
+    char *newoptions = curl_easy_unescape(data, optionsp, 0, NULL);
+    if(!newoptions) {
+      result = CURLE_OUT_OF_MEMORY;
+      goto out;
     }
     }
+
+    free(*options);
+    *options = newoptions;
   }
 
   }
 
+
+  out:
+
+  Curl_safefree(userp);
+  Curl_safefree(passwdp);
+  Curl_safefree(optionsp);
+
   return result;
 }
 
   return result;
 }
 
@@ -4735,24 +4942,21 @@ static CURLcode parse_remote_port(struct SessionHandle *data,
     /* no CURLOPT_PORT given, extract the one from the URL */
 
     char *rest;
     /* no CURLOPT_PORT given, extract the one from the URL */
 
     char *rest;
-    unsigned long port;
-
-    port=strtoul(portptr+1, &rest, 10);  /* Port number must be decimal */
+    long port;
 
 
-    if(rest != (portptr+1) && *rest == '\0') {
-      /* The colon really did have only digits after it,
-       * so it is either a port number or a mistake */
+    port=strtol(portptr+1, &rest, 10);  /* Port number must be decimal */
 
 
-      if(port > 0xffff) {   /* Single unix standard says port numbers are
-                              * 16 bits long */
-        failf(data, "Port number too large: %lu", port);
-        return CURLE_URL_MALFORMAT;
-      }
+    if((port < 0) || (port > 0xffff)) {
+      /* Single unix standard says port numbers are 16 bits long */
+      failf(data, "Port number out of range");
+      return CURLE_URL_MALFORMAT;
+    }
 
 
+    else if(rest != &portptr[1]) {
       *portptr = '\0'; /* cut off the name there */
       conn->remote_port = curlx_ultous(port);
     }
       *portptr = '\0'; /* cut off the name there */
       conn->remote_port = curlx_ultous(port);
     }
-    else if(!port)
+    else
       /* Browser behavior adaptation. If there's a colon with no digits after,
          just cut off the name there which makes us ignore the colon and just
          use the default port. Firefox and Chrome both do that. */
       /* Browser behavior adaptation. If there's a colon with no digits after,
          just cut off the name there which makes us ignore the colon and just
          use the default port. Firefox and Chrome both do that. */
@@ -4765,34 +4969,44 @@ static CURLcode parse_remote_port(struct SessionHandle *data,
  * Override the login details from the URL with that in the CURLOPT_USERPWD
  * option or a .netrc file, if applicable.
  */
  * Override the login details from the URL with that in the CURLOPT_USERPWD
  * option or a .netrc file, if applicable.
  */
-static void override_login(struct SessionHandle *data,
-                           struct connectdata *conn,
-                           char *user, char *passwd, char *options)
+static CURLcode override_login(struct SessionHandle *data,
+                               struct connectdata *conn,
+                               char **userp, char **passwdp, char **optionsp)
 {
   if(data->set.str[STRING_USERNAME]) {
 {
   if(data->set.str[STRING_USERNAME]) {
-    strncpy(user, data->set.str[STRING_USERNAME], MAX_CURL_USER_LENGTH);
-    user[MAX_CURL_USER_LENGTH - 1] = '\0';   /* To be on safe side */
+    free(*userp);
+    *userp = strdup(data->set.str[STRING_USERNAME]);
+    if(!*userp)
+      return CURLE_OUT_OF_MEMORY;
   }
 
   if(data->set.str[STRING_PASSWORD]) {
   }
 
   if(data->set.str[STRING_PASSWORD]) {
-    strncpy(passwd, data->set.str[STRING_PASSWORD], MAX_CURL_PASSWORD_LENGTH);
-    passwd[MAX_CURL_PASSWORD_LENGTH - 1] = '\0'; /* To be on safe side */
+    free(*passwdp);
+    *passwdp = strdup(data->set.str[STRING_PASSWORD]);
+    if(!*passwdp)
+      return CURLE_OUT_OF_MEMORY;
   }
 
   if(data->set.str[STRING_OPTIONS]) {
   }
 
   if(data->set.str[STRING_OPTIONS]) {
-    strncpy(options, data->set.str[STRING_OPTIONS], MAX_CURL_OPTIONS_LENGTH);
-    options[MAX_CURL_OPTIONS_LENGTH - 1] = '\0'; /* To be on safe side */
+    free(*optionsp);
+    *optionsp = strdup(data->set.str[STRING_OPTIONS]);
+    if(!*optionsp)
+      return CURLE_OUT_OF_MEMORY;
   }
 
   conn->bits.netrc = FALSE;
   if(data->set.use_netrc != CURL_NETRC_IGNORED) {
   }
 
   conn->bits.netrc = FALSE;
   if(data->set.use_netrc != CURL_NETRC_IGNORED) {
-    if(Curl_parsenetrc(conn->host.name,
-                       user, passwd,
-                       data->set.str[STRING_NETRC_FILE])) {
+    int ret = Curl_parsenetrc(conn->host.name,
+                              userp, passwdp,
+                              data->set.str[STRING_NETRC_FILE]);
+    if(ret > 0) {
       infof(data, "Couldn't find host %s in the "
             DOT_CHAR "netrc file; using defaults\n",
             conn->host.name);
     }
       infof(data, "Couldn't find host %s in the "
             DOT_CHAR "netrc file; using defaults\n",
             conn->host.name);
     }
+    else if(ret < 0 ) {
+      return CURLE_OUT_OF_MEMORY;
+    }
     else {
       /* set bits.netrc TRUE to remember that we got the name from a .netrc
          file, so that it is safe to use even if we followed a Location: to a
     else {
       /* set bits.netrc TRUE to remember that we got the name from a .netrc
          file, so that it is safe to use even if we followed a Location: to a
@@ -4802,10 +5016,12 @@ static void override_login(struct SessionHandle *data,
       conn->bits.user_passwd = TRUE; /* enable user+password */
     }
   }
       conn->bits.user_passwd = TRUE; /* enable user+password */
     }
   }
+
+  return CURLE_OK;
 }
 
 /*
 }
 
 /*
- * Set password so it's available in the connection.
+ * Set the login details so they're available in the connection
  */
 static CURLcode set_login(struct connectdata *conn,
                           const char *user, const char *passwd,
  */
 static CURLcode set_login(struct connectdata *conn,
                           const char *user, const char *passwd,
@@ -4878,6 +5094,32 @@ static CURLcode resolve_server(struct SessionHandle *data,
     /* set a pointer to the hostname we display */
     fix_hostname(data, conn, &conn->host);
 
     /* set a pointer to the hostname we display */
     fix_hostname(data, conn, &conn->host);
 
+#ifdef USE_UNIX_SOCKETS
+    if(data->set.str[STRING_UNIX_SOCKET_PATH]) {
+      /* Unix domain sockets are local. The host gets ignored, just use the
+       * specified domain socket address. Do not cache "DNS entries". There is
+       * no DNS involved and we already have the filesystem path available */
+      const char *path = data->set.str[STRING_UNIX_SOCKET_PATH];
+
+      hostaddr = calloc(1, sizeof(struct Curl_dns_entry));
+      if(!hostaddr)
+        result = CURLE_OUT_OF_MEMORY;
+      else if((hostaddr->addr = Curl_unix2addr(path)) != NULL)
+        hostaddr->inuse++;
+      else {
+        /* Long paths are not supported for now */
+        if(strlen(path) >= sizeof(((struct sockaddr_un *)0)->sun_path)) {
+          failf(data, "Unix socket path too long: '%s'", path);
+          result = CURLE_COULDNT_RESOLVE_HOST;
+        }
+        else
+          result = CURLE_OUT_OF_MEMORY;
+        free(hostaddr);
+        hostaddr = NULL;
+      }
+    }
+    else
+#endif
     if(!conn->proxy.name || !*conn->proxy.name) {
       /* If not connecting via a proxy, extract the port from the URL, if it is
        * there, thus overriding any defaults that might have been set above. */
     if(!conn->proxy.name || !*conn->proxy.name) {
       /* If not connecting via a proxy, extract the port from the URL, if it is
        * there, thus overriding any defaults that might have been set above. */
@@ -5018,14 +5260,14 @@ static CURLcode create_conn(struct SessionHandle *data,
   struct connectdata *conn;
   struct connectdata *conn_temp = NULL;
   size_t urllen;
   struct connectdata *conn;
   struct connectdata *conn_temp = NULL;
   size_t urllen;
-  char user[MAX_CURL_USER_LENGTH];
-  char passwd[MAX_CURL_PASSWORD_LENGTH];
-  char options[MAX_CURL_OPTIONS_LENGTH];
+  char *user = NULL;
+  char *passwd = NULL;
+  char *options = NULL;
   bool reuse;
   char *proxy = NULL;
   bool prot_missing = FALSE;
   bool no_connections_available = FALSE;
   bool reuse;
   char *proxy = NULL;
   bool prot_missing = FALSE;
   bool no_connections_available = FALSE;
-  bool force_reuse;
+  bool force_reuse = FALSE;
   size_t max_host_connections = Curl_multi_max_host_connections(data->multi);
   size_t max_total_connections = Curl_multi_max_total_connections(data->multi);
 
   size_t max_host_connections = Curl_multi_max_host_connections(data->multi);
   size_t max_total_connections = Curl_multi_max_total_connections(data->multi);
 
@@ -5035,8 +5277,10 @@ static CURLcode create_conn(struct SessionHandle *data,
    * Check input data
    *************************************************************/
 
    * Check input data
    *************************************************************/
 
-  if(!data->change.url)
-    return CURLE_URL_MALFORMAT;
+  if(!data->change.url) {
+    result = CURLE_URL_MALFORMAT;
+    goto out;
+  }
 
   /* First, split up the current URL in parts so that we can use the
      parts for checking against the already present connections. In order
 
   /* First, split up the current URL in parts so that we can use the
      parts for checking against the already present connections. In order
@@ -5044,8 +5288,10 @@ static CURLcode create_conn(struct SessionHandle *data,
      connection data struct and fill in for comparison purposes. */
   conn = allocate_conn(data);
 
      connection data struct and fill in for comparison purposes. */
   conn = allocate_conn(data);
 
-  if(!conn)
-    return CURLE_OUT_OF_MEMORY;
+  if(!conn) {
+    result = CURLE_OUT_OF_MEMORY;
+    goto out;
+  }
 
   /* We must set the return variable as soon as possible, so that our
      parent can cleanup any possible allocs we may have done before
 
   /* We must set the return variable as soon as possible, so that our
      parent can cleanup any possible allocs we may have done before
@@ -5075,24 +5321,35 @@ static CURLcode create_conn(struct SessionHandle *data,
   data->state.path = NULL;
 
   data->state.pathbuffer = malloc(urllen+2);
   data->state.path = NULL;
 
   data->state.pathbuffer = malloc(urllen+2);
-  if(NULL == data->state.pathbuffer)
-    return CURLE_OUT_OF_MEMORY; /* really bad error */
+  if(NULL == data->state.pathbuffer) {
+    result = CURLE_OUT_OF_MEMORY; /* really bad error */
+    goto out;
+  }
   data->state.path = data->state.pathbuffer;
 
   conn->host.rawalloc = malloc(urllen+2);
   if(NULL == conn->host.rawalloc) {
     Curl_safefree(data->state.pathbuffer);
     data->state.path = NULL;
   data->state.path = data->state.pathbuffer;
 
   conn->host.rawalloc = malloc(urllen+2);
   if(NULL == conn->host.rawalloc) {
     Curl_safefree(data->state.pathbuffer);
     data->state.path = NULL;
-    return CURLE_OUT_OF_MEMORY;
+    result = CURLE_OUT_OF_MEMORY;
+    goto out;
   }
 
   conn->host.name = conn->host.rawalloc;
   conn->host.name[0] = 0;
 
   }
 
   conn->host.name = conn->host.rawalloc;
   conn->host.name[0] = 0;
 
-  result = parseurlandfillconn(data, conn, &prot_missing, user, passwd,
-                               options);
-  if(result != CURLE_OK)
-    return result;
+  user = strdup("");
+  passwd = strdup("");
+  options = strdup("");
+  if(!user || !passwd || !options) {
+    result = CURLE_OUT_OF_MEMORY;
+    goto out;
+  }
+
+  result = parseurlandfillconn(data, conn, &prot_missing, &user, &passwd,
+                               &options);
+  if(result)
+    goto out;
 
   /*************************************************************
    * No protocol part in URL was used, add it!
 
   /*************************************************************
    * No protocol part in URL was used, add it!
@@ -5106,8 +5363,8 @@ static CURLcode create_conn(struct SessionHandle *data,
     reurl = aprintf("%s://%s", conn->handler->scheme, data->change.url);
 
     if(!reurl) {
     reurl = aprintf("%s://%s", conn->handler->scheme, data->change.url);
 
     if(!reurl) {
-      Curl_safefree(proxy);
-      return CURLE_OUT_OF_MEMORY;
+      result = CURLE_OUT_OF_MEMORY;
+      goto out;
     }
 
     if(data->change.url_alloc) {
     }
 
     if(data->change.url_alloc) {
@@ -5121,7 +5378,7 @@ static CURLcode create_conn(struct SessionHandle *data,
 
   /*************************************************************
    * If the protocol can't handle url query strings, then cut
 
   /*************************************************************
    * If the protocol can't handle url query strings, then cut
-   * of the unhandable part
+   * off the unhandable part
    *************************************************************/
   if((conn->given->flags&PROTOPT_NOURLQUERY)) {
     char *path_q_sep = strchr(conn->data->state.path, '?');
    *************************************************************/
   if((conn->given->flags&PROTOPT_NOURLQUERY)) {
     char *path_q_sep = strchr(conn->data->state.path, '?');
@@ -5137,14 +5394,22 @@ static CURLcode create_conn(struct SessionHandle *data,
     }
   }
 
     }
   }
 
+  if(data->set.str[STRING_BEARER]) {
+    conn->xoauth2_bearer = strdup(data->set.str[STRING_BEARER]);
+    if(!conn->xoauth2_bearer) {
+      result = CURLE_OUT_OF_MEMORY;
+      goto out;
+    }
+  }
+
 #ifndef CURL_DISABLE_PROXY
   /*************************************************************
    * Extract the user and password from the authentication string
    *************************************************************/
   if(conn->bits.proxy_user_passwd) {
     result = parse_proxy_auth(data, conn);
 #ifndef CURL_DISABLE_PROXY
   /*************************************************************
    * Extract the user and password from the authentication string
    *************************************************************/
   if(conn->bits.proxy_user_passwd) {
     result = parse_proxy_auth(data, conn);
-    if(result != CURLE_OK)
-      return result;
+    if(result)
+      goto out;
   }
 
   /*************************************************************
   }
 
   /*************************************************************
@@ -5155,7 +5420,8 @@ static CURLcode create_conn(struct SessionHandle *data,
     /* if global proxy is set, this is it */
     if(NULL == proxy) {
       failf(data, "memory shortage");
     /* if global proxy is set, this is it */
     if(NULL == proxy) {
       failf(data, "memory shortage");
-      return CURLE_OUT_OF_MEMORY;
+      result = CURLE_OUT_OF_MEMORY;
+      goto out;
     }
   }
 
     }
   }
 
@@ -5169,6 +5435,13 @@ static CURLcode create_conn(struct SessionHandle *data,
   else if(!proxy)
     proxy = detect_proxy(conn);
 
   else if(!proxy)
     proxy = detect_proxy(conn);
 
+#ifdef USE_UNIX_SOCKETS
+  if(proxy && data->set.str[STRING_UNIX_SOCKET_PATH]) {
+    free(proxy);  /* Unix domain sockets cannot be proxied, so disable it */
+    proxy = NULL;
+  }
+#endif
+
   if(proxy && (!*proxy || (conn->handler->flags & PROTOPT_NONETWORK))) {
     free(proxy);  /* Don't bother with an empty proxy string or if the
                      protocol doesn't work with network */
   if(proxy && (!*proxy || (conn->handler->flags & PROTOPT_NONETWORK))) {
     free(proxy);  /* Don't bother with an empty proxy string or if the
                      protocol doesn't work with network */
@@ -5183,20 +5456,21 @@ static CURLcode create_conn(struct SessionHandle *data,
   if(proxy) {
     result = parse_proxy(data, conn, proxy);
 
   if(proxy) {
     result = parse_proxy(data, conn, proxy);
 
-    free(proxy); /* parse_proxy copies the proxy string */
+    Curl_safefree(proxy); /* parse_proxy copies the proxy string */
 
     if(result)
 
     if(result)
-      return result;
+      goto out;
 
     if((conn->proxytype == CURLPROXY_HTTP) ||
        (conn->proxytype == CURLPROXY_HTTP_1_0)) {
 #ifdef CURL_DISABLE_HTTP
       /* asking for a HTTP proxy is a bit funny when HTTP is disabled... */
 
     if((conn->proxytype == CURLPROXY_HTTP) ||
        (conn->proxytype == CURLPROXY_HTTP_1_0)) {
 #ifdef CURL_DISABLE_HTTP
       /* asking for a HTTP proxy is a bit funny when HTTP is disabled... */
-      return CURLE_UNSUPPORTED_PROTOCOL;
+      result = CURLE_UNSUPPORTED_PROTOCOL;
+      goto out;
 #else
       /* force this connection's protocol to become HTTP if not already
          compatible - if it isn't tunneling through */
 #else
       /* force this connection's protocol to become HTTP if not already
          compatible - if it isn't tunneling through */
-      if(!(conn->handler->protocol & CURLPROTO_HTTP) &&
+      if(!(conn->handler->protocol & PROTO_FAMILY_HTTP) &&
          !conn->bits.tunnel_proxy)
         conn->handler = &Curl_handler_http;
 
          !conn->bits.tunnel_proxy)
         conn->handler = &Curl_handler_http;
 
@@ -5218,14 +5492,35 @@ static CURLcode create_conn(struct SessionHandle *data,
 #endif /* CURL_DISABLE_PROXY */
 
   /*************************************************************
 #endif /* CURL_DISABLE_PROXY */
 
   /*************************************************************
+   * If the protocol is using SSL and HTTP proxy is used, we set
+   * the tunnel_proxy bit.
+   *************************************************************/
+  if((conn->given->flags&PROTOPT_SSL) && conn->bits.httpproxy)
+    conn->bits.tunnel_proxy = TRUE;
+
+  /*************************************************************
+   * Figure out the remote port number and fix it in the URL
+   *************************************************************/
+  result = parse_remote_port(data, conn);
+  if(result)
+    goto out;
+
+  /* Check for overridden login details and set them accordingly so they
+     they are known when protocol->setup_connection is called! */
+  result = override_login(data, conn, &user, &passwd, &options);
+  if(result)
+    goto out;
+  result = set_login(conn, user, passwd, options);
+  if(result)
+    goto out;
+
+  /*************************************************************
    * Setup internals depending on protocol. Needs to be done after
    * we figured out what/if proxy to use.
    *************************************************************/
   result = setup_connection_internals(conn);
    * Setup internals depending on protocol. Needs to be done after
    * we figured out what/if proxy to use.
    *************************************************************/
   result = setup_connection_internals(conn);
-  if(result != CURLE_OK) {
-    Curl_safefree(proxy);
-    return result;
-  }
+  if(result)
+    goto out;
 
   conn->recv[FIRSTSOCKET] = Curl_recv_plain;
   conn->send[FIRSTSOCKET] = Curl_send_plain;
 
   conn->recv[FIRSTSOCKET] = Curl_recv_plain;
   conn->send[FIRSTSOCKET] = Curl_send_plain;
@@ -5244,7 +5539,7 @@ static CURLcode create_conn(struct SessionHandle *data,
     result = conn->handler->connect_it(conn, &done);
 
     /* Setup a "faked" transfer that'll do nothing */
     result = conn->handler->connect_it(conn, &done);
 
     /* Setup a "faked" transfer that'll do nothing */
-    if(CURLE_OK == result) {
+    if(!result) {
       conn->data = data;
       conn->bits.tcpconnect[FIRSTSOCKET] = TRUE; /* we are "connected */
 
       conn->data = data;
       conn->bits.tcpconnect[FIRSTSOCKET] = TRUE; /* we are "connected */
 
@@ -5258,7 +5553,7 @@ static CURLcode create_conn(struct SessionHandle *data,
         DEBUGASSERT(conn->handler->done);
         /* we ignore the return code for the protocol-specific DONE */
         (void)conn->handler->done(conn, result, FALSE);
         DEBUGASSERT(conn->handler->done);
         /* we ignore the return code for the protocol-specific DONE */
         (void)conn->handler->done(conn, result, FALSE);
-        return result;
+        goto out;
       }
 
       Curl_setup_transfer(conn, -1, -1, FALSE, NULL, /* no download */
       }
 
       Curl_setup_transfer(conn, -1, -1, FALSE, NULL, /* no download */
@@ -5266,32 +5561,12 @@ static CURLcode create_conn(struct SessionHandle *data,
     }
 
     /* since we skip do_init() */
     }
 
     /* since we skip do_init() */
-    Curl_speedinit(data);
+    do_init(conn);
 
 
-    return result;
+    goto out;
   }
 #endif
 
   }
 #endif
 
-  /*************************************************************
-   * If the protocol is using SSL and HTTP proxy is used, we set
-   * the tunnel_proxy bit.
-   *************************************************************/
-  if((conn->given->flags&PROTOPT_SSL) && conn->bits.httpproxy)
-    conn->bits.tunnel_proxy = TRUE;
-
-  /*************************************************************
-   * Figure out the remote port number and fix it in the URL
-   *************************************************************/
-  result = parse_remote_port(data, conn);
-  if(result != CURLE_OK)
-    return result;
-
-  /* Check for overridden login details and set them accordingly */
-  override_login(data, conn, user, passwd, options);
-  result = set_login(conn, user, passwd, options);
-  if(result != CURLE_OK)
-    return result;
-
   /* Get a cloned copy of the SSL config situation stored in the
      connection struct. But to get this going nicely, we must first make
      sure that the strings in the master copy are pointing to the correct
   /* Get a cloned copy of the SSL config situation stored in the
      connection struct. But to get this going nicely, we must first make
      sure that the strings in the master copy are pointing to the correct
@@ -5313,8 +5588,12 @@ static CURLcode create_conn(struct SessionHandle *data,
   data->set.ssl.password = data->set.str[STRING_TLSAUTH_PASSWORD];
 #endif
 
   data->set.ssl.password = data->set.str[STRING_TLSAUTH_PASSWORD];
 #endif
 
-  if(!Curl_clone_ssl_config(&data->set.ssl, &conn->ssl_config))
-    return CURLE_OUT_OF_MEMORY;
+  if(!Curl_clone_ssl_config(&data->set.ssl, &conn->ssl_config)) {
+    result = CURLE_OUT_OF_MEMORY;
+    goto out;
+  }
+
+  prune_dead_connections(data);
 
   /*************************************************************
    * Check the current list of connections to see if we can
 
   /*************************************************************
    * Check the current list of connections to see if we can
@@ -5417,7 +5696,8 @@ static CURLcode create_conn(struct SessionHandle *data,
       conn_free(conn);
       *in_connect = NULL;
 
       conn_free(conn);
       *in_connect = NULL;
 
-      return CURLE_NO_CONNECTION_AVAILABLE;
+      result = CURLE_NO_CONNECTION_AVAILABLE;
+      goto out;
     }
     else {
       /*
     }
     else {
       /*
@@ -5426,6 +5706,23 @@ static CURLcode create_conn(struct SessionHandle *data,
        */
       ConnectionStore(data, conn);
     }
        */
       ConnectionStore(data, conn);
     }
+
+#if defined(USE_NTLM)
+    /* If NTLM is requested in a part of this connection, make sure we don't
+       assume the state is fine as this is a fresh connection and NTLM is
+       connection based. */
+    if((data->state.authhost.picked & (CURLAUTH_NTLM | CURLAUTH_NTLM_WB)) &&
+       data->state.authhost.done) {
+      infof(data, "NTLM picked AND auth done set, clear picked!\n");
+      data->state.authhost.picked = CURLAUTH_NONE;
+    }
+
+    if((data->state.authproxy.picked & (CURLAUTH_NTLM | CURLAUTH_NTLM_WB)) &&
+       data->state.authproxy.done) {
+      infof(data, "NTLM-proxy picked AND auth done set, clear picked!\n");
+      data->state.authproxy.picked = CURLAUTH_NONE;
+    }
+#endif
   }
 
   /* Mark the connection as used */
   }
 
   /* Mark the connection as used */
@@ -5439,7 +5736,7 @@ static CURLcode create_conn(struct SessionHandle *data,
    */
   result = setup_range(data);
   if(result)
    */
   result = setup_range(data);
   if(result)
-    return result;
+    goto out;
 
   /* Continue connectdata initialization here. */
 
 
   /* Continue connectdata initialization here. */
 
@@ -5457,6 +5754,12 @@ static CURLcode create_conn(struct SessionHandle *data,
    *************************************************************/
   result = resolve_server(data, conn, async);
 
    *************************************************************/
   result = resolve_server(data, conn, async);
 
+  out:
+
+  Curl_safefree(options);
+  Curl_safefree(passwd);
+  Curl_safefree(user);
+  Curl_safefree(proxy);
   return result;
 }
 
   return result;
 }
 
@@ -5512,53 +5815,19 @@ CURLcode Curl_setup_conn(struct connectdata *conn,
      is later set again for the progress meter purpose */
   conn->now = Curl_tvnow();
 
      is later set again for the progress meter purpose */
   conn->now = Curl_tvnow();
 
-  for(;;) {
-    /* loop for CURL_SERVER_CLOSED_CONNECTION */
-
-    if(CURL_SOCKET_BAD == conn->sock[FIRSTSOCKET]) {
-      /* Try to connect only if not already connected */
-      bool connected = FALSE;
-
-      result = ConnectPlease(data, conn, &connected);
-
-      if(result && !conn->ip_addr) {
-        /* transport connection failure not related with authentication */
-        conn->bits.tcpconnect[FIRSTSOCKET] = FALSE;
-        return result;
-      }
-
-      if(connected) {
-        result = Curl_protocol_connect(conn, protocol_done);
-        if(CURLE_OK == result)
-          conn->bits.tcpconnect[FIRSTSOCKET] = TRUE;
-      }
-      else
-        conn->bits.tcpconnect[FIRSTSOCKET] = FALSE;
-
-      /* if the connection was closed by the server while exchanging
-         authentication informations, retry with the new set
-         authentication information */
-      if(conn->bits.proxy_connect_closed) {
-        /* reset the error buffer */
-        if(data->set.errorbuffer)
-          data->set.errorbuffer[0] = '\0';
-        data->state.errorbuf = FALSE;
-        continue;
-      }
-
-      if(CURLE_OK != result)
-        return result;
-    }
-    else {
-      Curl_pgrsTime(data, TIMER_CONNECT); /* we're connected already */
-      Curl_pgrsTime(data, TIMER_APPCONNECT); /* we're connected already */
-      conn->bits.tcpconnect[FIRSTSOCKET] = TRUE;
-      *protocol_done = TRUE;
-      Curl_verboseconnect(conn);
-      Curl_updateconninfo(conn, conn->sock[FIRSTSOCKET]);
-    }
-    /* Stop the loop now */
-    break;
+  if(CURL_SOCKET_BAD == conn->sock[FIRSTSOCKET]) {
+    conn->bits.tcpconnect[FIRSTSOCKET] = FALSE;
+    result = Curl_connecthost(conn, conn->dns_entry);
+    if(result)
+      return result;
+  }
+  else {
+    Curl_pgrsTime(data, TIMER_CONNECT);    /* we're connected already */
+    Curl_pgrsTime(data, TIMER_APPCONNECT); /* we're connected already */
+    conn->bits.tcpconnect[FIRSTSOCKET] = TRUE;
+    *protocol_done = TRUE;
+    Curl_updateconninfo(conn, conn->sock[FIRSTSOCKET]);
+    Curl_verboseconnect(conn);
   }
 
   conn->now = Curl_tvnow(); /* time this *after* the connect is done, we
   }
 
   conn->now = Curl_tvnow(); /* time this *after* the connect is done, we
@@ -5585,14 +5854,14 @@ CURLcode Curl_connect(struct SessionHandle *data,
                       bool *asyncp,
                       bool *protocol_done)
 {
                       bool *asyncp,
                       bool *protocol_done)
 {
-  CURLcode code;
+  CURLcode result;
 
   *asyncp = FALSE; /* assume synchronous resolves by default */
 
   /* call the stuff that needs to be called */
 
   *asyncp = FALSE; /* assume synchronous resolves by default */
 
   /* call the stuff that needs to be called */
-  code = create_conn(data, in_connect, asyncp);
+  result = create_conn(data, in_connect, asyncp);
 
 
-  if(CURLE_OK == code) {
+  if(!result) {
     /* no error */
     if((*in_connect)->send_pipe->size || (*in_connect)->recv_pipe->size)
       /* pipelining */
     /* no error */
     if((*in_connect)->send_pipe->size || (*in_connect)->recv_pipe->size)
       /* pipelining */
@@ -5601,23 +5870,23 @@ CURLcode Curl_connect(struct SessionHandle *data,
       /* DNS resolution is done: that's either because this is a reused
          connection, in which case DNS was unnecessary, or because DNS
          really did finish already (synch resolver/fast async resolve) */
       /* DNS resolution is done: that's either because this is a reused
          connection, in which case DNS was unnecessary, or because DNS
          really did finish already (synch resolver/fast async resolve) */
-      code = Curl_setup_conn(*in_connect, protocol_done);
+      result = Curl_setup_conn(*in_connect, protocol_done);
     }
   }
 
     }
   }
 
-  if(code == CURLE_NO_CONNECTION_AVAILABLE) {
+  if(result == CURLE_NO_CONNECTION_AVAILABLE) {
     *in_connect = NULL;
     *in_connect = NULL;
-    return code;
+    return result;
   }
 
   }
 
-  if(code && *in_connect) {
+  if(result && *in_connect) {
     /* We're not allowed to return failure with memory left allocated
        in the connectdata struct, free those here */
     Curl_disconnect(*in_connect, FALSE); /* close the connection */
     *in_connect = NULL;           /* return a NULL */
   }
 
     /* We're not allowed to return failure with memory left allocated
        in the connectdata struct, free those here */
     Curl_disconnect(*in_connect, FALSE); /* close the connection */
     *in_connect = NULL;           /* return a NULL */
   }
 
-  return code;
+  return result;
 }
 
 CURLcode Curl_done(struct connectdata **connp,
 }
 
 CURLcode Curl_done(struct connectdata **connp,
@@ -5666,20 +5935,26 @@ CURLcode Curl_done(struct connectdata **connp,
     conn->dns_entry = NULL;
   }
 
     conn->dns_entry = NULL;
   }
 
-  if(status == CURLE_ABORTED_BY_CALLBACK)
+  switch(status) {
+  case CURLE_ABORTED_BY_CALLBACK:
+  case CURLE_READ_ERROR:
+  case CURLE_WRITE_ERROR:
     /* When we're aborted due to a callback return code it basically have to
        be counted as premature as there is trouble ahead if we don't. We have
        many callbacks and protocols work differently, we could potentially do
        this more fine-grained in the future. */
     premature = TRUE;
     /* When we're aborted due to a callback return code it basically have to
        be counted as premature as there is trouble ahead if we don't. We have
        many callbacks and protocols work differently, we could potentially do
        this more fine-grained in the future. */
     premature = TRUE;
+  default:
+    break;
+  }
 
   /* this calls the protocol-specific function pointer previously set */
   if(conn->handler->done)
     result = conn->handler->done(conn, status, premature);
   else
 
   /* this calls the protocol-specific function pointer previously set */
   if(conn->handler->done)
     result = conn->handler->done(conn, status, premature);
   else
-    result = CURLE_OK;
+    result = status;
 
 
-  if(Curl_pgrsDone(conn) && !result)
+  if(!result && Curl_pgrsDone(conn))
     result = CURLE_ABORTED_BY_CALLBACK;
 
   /* if the transfer was completed in a paused state there can be buffered
     result = CURLE_ABORTED_BY_CALLBACK;
 
   /* if the transfer was completed in a paused state there can be buffered
@@ -5690,7 +5965,8 @@ CURLcode Curl_done(struct connectdata **connp,
   }
 
   /* if data->set.reuse_forbid is TRUE, it means the libcurl client has
   }
 
   /* if data->set.reuse_forbid is TRUE, it means the libcurl client has
-     forced us to close this no matter what we think.
+     forced us to close this connection. This is ignored for requests taking
+     place in a NTLM authentication handshake
 
      if conn->bits.close is TRUE, it means that the connection should be
      closed in spite of all our efforts to be nice, due to protocol
 
      if conn->bits.close is TRUE, it means that the connection should be
      closed in spite of all our efforts to be nice, due to protocol
@@ -5702,7 +5978,13 @@ CURLcode Curl_done(struct connectdata **connp,
      we can add code that keep track of if we really must close it here or not,
      but currently we have no such detail knowledge.
   */
      we can add code that keep track of if we really must close it here or not,
      but currently we have no such detail knowledge.
   */
-  if(data->set.reuse_forbid || conn->bits.close || premature) {
+
+  if((data->set.reuse_forbid
+#if defined(USE_NTLM)
+      && !(conn->ntlm.state == NTLMSTATE_TYPE2 ||
+           conn->proxyntlm.state == NTLMSTATE_TYPE2)
+#endif
+     ) || conn->bits.close || premature) {
     CURLcode res2 = Curl_disconnect(conn, premature); /* close connection */
 
     /* If we had an error already, make sure we return that one. But
     CURLcode res2 = Curl_disconnect(conn, premature); /* close connection */
 
     /* If we had an error already, make sure we return that one. But
@@ -5728,6 +6010,7 @@ CURLcode Curl_done(struct connectdata **connp,
                     this was either closed or handed over to the connection
                     cache here, and therefore cannot be used from this point on
                  */
                     this was either closed or handed over to the connection
                     cache here, and therefore cannot be used from this point on
                  */
+  Curl_free_request_state(data);
 
   return result;
 }
 
   return result;
 }
@@ -5760,9 +6043,6 @@ static CURLcode do_init(struct connectdata *conn)
        HTTP. */
     data->set.httpreq = HTTPREQ_GET;
 
        HTTP. */
     data->set.httpreq = HTTPREQ_GET;
 
-  /* NB: the content encoding software depends on this initialization */
-  Curl_easy_initHandleData(data);
-
   k->start = Curl_tvnow(); /* start time */
   k->now = k->start;   /* current time is now */
   k->header = TRUE; /* assume header */
   k->start = Curl_tvnow(); /* start time */
   k->now = k->start;   /* current time is now */
   k->header = TRUE; /* assume header */
@@ -5816,7 +6096,7 @@ CURLcode Curl_do(struct connectdata **connp, bool *done)
       if(!data->multi) {
         result = Curl_reconnect_request(connp);
 
       if(!data->multi) {
         result = Curl_reconnect_request(connp);
 
-        if(result == CURLE_OK) {
+        if(!result) {
           /* ... finally back to actually retry the DO phase */
           conn = *connp; /* re-assign conn since Curl_reconnect_request
                             creates a new connection */
           /* ... finally back to actually retry the DO phase */
           conn = *connp; /* re-assign conn since Curl_reconnect_request
                             creates a new connection */
@@ -5827,7 +6107,7 @@ CURLcode Curl_do(struct connectdata **connp, bool *done)
         return result;
     }
 
         return result;
     }
 
-    if((result == CURLE_OK) && *done)
+    if(!result && *done)
       /* do_complete must be called after the protocol-specific DO function */
       do_complete(conn);
   }
       /* do_complete must be called after the protocol-specific DO function */
       do_complete(conn);
   }
@@ -5860,14 +6140,3 @@ CURLcode Curl_do_more(struct connectdata *conn, int *complete)
 
   return result;
 }
 
   return result;
 }
-
-/* Called on connect, and if there's already a protocol-specific struct
-   allocated for a different connection, this frees it that it can be setup
-   properly later on. */
-void Curl_reset_reqproto(struct connectdata *conn)
-{
-  struct SessionHandle *data = conn->data;
-
-  Curl_safefree(data->state.proto.generic);
-  data->state.proto.generic = NULL;
-}
index c0d9c38..cd46a92 100644 (file)
--- a/lib/url.h
+++ b/lib/url.h
@@ -45,6 +45,7 @@ CURLcode Curl_protocol_connecting(struct connectdata *conn, bool *done);
 CURLcode Curl_protocol_doing(struct connectdata *conn, bool *done);
 CURLcode Curl_setup_conn(struct connectdata *conn,
                          bool *protocol_done);
 CURLcode Curl_protocol_doing(struct connectdata *conn, bool *done);
 CURLcode Curl_setup_conn(struct connectdata *conn,
                          bool *protocol_done);
+void Curl_free_request_state(struct SessionHandle *data);
 
 int Curl_protocol_getsock(struct connectdata *conn,
                           curl_socket_t *socks,
 
 int Curl_protocol_getsock(struct connectdata *conn,
                           curl_socket_t *socks,
@@ -65,16 +66,11 @@ void Curl_getoff_all_pipelines(struct SessionHandle *data,
 
 void Curl_close_connections(struct SessionHandle *data);
 
 
 void Curl_close_connections(struct SessionHandle *data);
 
-/* Called on connect, and if there's already a protocol-specific struct
-   allocated for a different connection, this frees it that it can be setup
-   properly later on. */
-void Curl_reset_reqproto(struct connectdata *conn);
-
 #define CURL_DEFAULT_PROXY_PORT 1080 /* default proxy port unless specified */
 #define CURL_DEFAULT_SOCKS5_GSSAPI_SERVICE "rcmd" /* default socks5 gssapi
                                                      service */
 
 #define CURL_DEFAULT_PROXY_PORT 1080 /* default proxy port unless specified */
 #define CURL_DEFAULT_SOCKS5_GSSAPI_SERVICE "rcmd" /* default socks5 gssapi
                                                      service */
 
-CURLcode Curl_connected_proxy(struct connectdata *conn);
+CURLcode Curl_connected_proxy(struct connectdata *conn, int sockindex);
 
 #ifdef CURL_DISABLE_VERBOSE_STRINGS
 #define Curl_verboseconnect(x)  Curl_nop_stmt
 
 #ifdef CURL_DISABLE_VERBOSE_STRINGS
 #define Curl_verboseconnect(x)  Curl_nop_stmt
index d597c67..5f77470 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -40,6 +40,8 @@
 #define PORT_IMAPS 993
 #define PORT_POP3 110
 #define PORT_POP3S 995
 #define PORT_IMAPS 993
 #define PORT_POP3 110
 #define PORT_POP3S 995
+#define PORT_SMB 445
+#define PORT_SMBS 445
 #define PORT_SMTP 25
 #define PORT_SMTPS 465 /* sometimes called SSMTP */
 #define PORT_RTSP 554
 #define PORT_SMTP 25
 #define PORT_SMTPS 465 /* sometimes called SSMTP */
 #define PORT_RTSP 554
 #define CURL_DEFAULT_USER "anonymous"
 #define CURL_DEFAULT_PASSWORD "ftp@example.com"
 
 #define CURL_DEFAULT_USER "anonymous"
 #define CURL_DEFAULT_PASSWORD "ftp@example.com"
 
+/* Convenience defines for checking protocols or their SSL based version. Each
+   protocol handler should only ever have a single CURLPROTO_ in its protocol
+   field. */
+#define PROTO_FAMILY_HTTP (CURLPROTO_HTTP|CURLPROTO_HTTPS)
+#define PROTO_FAMILY_FTP  (CURLPROTO_FTP|CURLPROTO_FTPS)
+#define PROTO_FAMILY_POP3 (CURLPROTO_POP3|CURLPROTO_POP3S)
+#define PROTO_FAMILY_SMB  (CURLPROTO_SMB|CURLPROTO_SMBS)
+#define PROTO_FAMILY_SMTP (CURLPROTO_SMTP|CURLPROTO_SMTPS)
+
 #define DEFAULT_CONNCACHE_SIZE 5
 
 /* length of longest IPv6 address string including the trailing null */
 #define DEFAULT_CONNCACHE_SIZE 5
 
 /* length of longest IPv6 address string including the trailing null */
 #include <pk11pub.h>
 #endif
 
 #include <pk11pub.h>
 #endif
 
-#ifdef USE_QSOSSL
-#include <qsossl.h>
-#endif
-
 #ifdef USE_GSKIT
 #include <gskssl.h>
 #endif
 #ifdef USE_GSKIT
 #include <gskssl.h>
 #endif
 #include "ssh.h"
 #include "http.h"
 #include "rtsp.h"
 #include "ssh.h"
 #include "http.h"
 #include "rtsp.h"
+#include "smb.h"
 #include "wildcard.h"
 #include "multihandle.h"
 
 #include "wildcard.h"
 #include "multihandle.h"
 
 #define CURLMIN(x,y) ((x)<(y)?(x):(y))
 
 
 #define CURLMIN(x,y) ((x)<(y)?(x):(y))
 
 
-#if defined(HAVE_KRB4) || defined(HAVE_GSSAPI)
-/* Types needed for krb4/5-ftp connections */
-struct krb4buffer {
+#ifdef HAVE_GSSAPI
+/* Types needed for krb5-ftp connections */
+struct krb5buffer {
   void *data;
   size_t size;
   size_t index;
   void *data;
   size_t size;
   size_t index;
@@ -280,6 +288,9 @@ struct ssl_connect_data {
      current state of the connection. */
   bool use;
   ssl_connection_state state;
      current state of the connection. */
   bool use;
   ssl_connection_state state;
+#ifdef USE_NGHTTP2
+  bool asked_for_h2;
+#endif
 #ifdef USE_SSLEAY
   /* these ones requires specific SSL-types */
   SSL_CTX* ctx;
 #ifdef USE_SSLEAY
   /* these ones requires specific SSL-types */
   SSL_CTX* ctx;
@@ -288,26 +299,21 @@ struct ssl_connect_data {
   ssl_connect_state connecting_state;
 #endif /* USE_SSLEAY */
 #ifdef USE_GNUTLS
   ssl_connect_state connecting_state;
 #endif /* USE_SSLEAY */
 #ifdef USE_GNUTLS
-  gnutls_session session;
-  gnutls_certificate_credentials cred;
+  gnutls_session_t session;
+  gnutls_certificate_credentials_t cred;
 #ifdef USE_TLS_SRP
 #ifdef USE_TLS_SRP
-  gnutls_srp_client_credentials srp_client_cred;
+  gnutls_srp_client_credentials_t srp_client_cred;
 #endif
   ssl_connect_state connecting_state;
 #endif /* USE_GNUTLS */
 #ifdef USE_POLARSSL
 #endif
   ssl_connect_state connecting_state;
 #endif /* USE_GNUTLS */
 #ifdef USE_POLARSSL
-#if POLARSSL_VERSION_NUMBER<0x01010000
-  havege_state hs;
-#else
-  /* from v1.1.0, use ctr_drbg and entropy */
   ctr_drbg_context ctr_drbg;
   entropy_context entropy;
   ctr_drbg_context ctr_drbg;
   entropy_context entropy;
-#endif /* POLARSSL_VERSION_NUMBER<0x01010000 */
   ssl_context ssl;
   ssl_session ssn;
   int server_fd;
   ssl_context ssl;
   ssl_session ssn;
   int server_fd;
-  x509_cert cacert;
-  x509_cert clicert;
+  x509_crt cacert;
+  x509_crt clicert;
   x509_crl crl;
   rsa_context rsa;
   ssl_connect_state connecting_state;
   x509_crl crl;
   rsa_context rsa;
   ssl_connect_state connecting_state;
@@ -323,10 +329,8 @@ struct ssl_connect_data {
   struct SessionHandle *data;
   struct curl_llist *obj_list;
   PK11GenericObject *obj_clicert;
   struct SessionHandle *data;
   struct curl_llist *obj_list;
   PK11GenericObject *obj_clicert;
+  ssl_connect_state connecting_state;
 #endif /* USE_NSS */
 #endif /* USE_NSS */
-#ifdef USE_QSOSSL
-  SSLHandle *handle;
-#endif /* USE_QSOSSL */
 #ifdef USE_GSKIT
   gsk_handle handle;
   int iocport;
 #ifdef USE_GSKIT
   gsk_handle handle;
   int iocport;
@@ -388,12 +392,16 @@ struct curl_ssl_session {
   void *sessionid;  /* as returned from the SSL layer */
   size_t idsize;    /* if known, otherwise 0 */
   long age;         /* just a number, the higher the more recent */
   void *sessionid;  /* as returned from the SSL layer */
   size_t idsize;    /* if known, otherwise 0 */
   long age;         /* just a number, the higher the more recent */
-  unsigned short remote_port; /* remote port to connect to */
+  int remote_port;  /* remote port to connect to */
   struct ssl_config_data ssl_config; /* setup for this session */
 };
 
 /* Struct used for Digest challenge-response authentication */
 struct digestdata {
   struct ssl_config_data ssl_config; /* setup for this session */
 };
 
 /* Struct used for Digest challenge-response authentication */
 struct digestdata {
+#if defined(USE_WINDOWS_SSPI)
+  BYTE *input_token;
+  size_t input_token_len;
+#else
   char *nonce;
   char *cnonce;
   char *realm;
   char *nonce;
   char *cnonce;
   char *realm;
@@ -403,6 +411,7 @@ struct digestdata {
   char *qop;
   char *algorithm;
   int nc; /* nounce count */
   char *qop;
   char *algorithm;
   int nc; /* nounce count */
+#endif
 };
 
 typedef enum {
 };
 
 typedef enum {
@@ -421,30 +430,51 @@ typedef enum {
 #include <iconv.h>
 #endif
 
 #include <iconv.h>
 #endif
 
+/* Struct used for GSSAPI (Kerberos V5) authentication */
+#if defined(USE_KERBEROS5)
+struct kerberos5data {
+#if defined(USE_WINDOWS_SSPI)
+  CredHandle *credentials;
+  CtxtHandle *context;
+  TCHAR *spn;
+  SEC_WINNT_AUTH_IDENTITY identity;
+  SEC_WINNT_AUTH_IDENTITY *p_identity;
+  size_t token_max;
+  BYTE *output_token;
+#else
+  gss_ctx_id_t context;
+  gss_name_t spn;
+#endif
+};
+#endif
+
 /* Struct used for NTLM challenge-response authentication */
 /* Struct used for NTLM challenge-response authentication */
+#if defined(USE_NTLM)
 struct ntlmdata {
   curlntlm state;
 #ifdef USE_WINDOWS_SSPI
 struct ntlmdata {
   curlntlm state;
 #ifdef USE_WINDOWS_SSPI
-  CredHandle handle;
-  CtxtHandle c_handle;
+  CredHandle *credentials;
+  CtxtHandle *context;
   SEC_WINNT_AUTH_IDENTITY identity;
   SEC_WINNT_AUTH_IDENTITY *p_identity;
   SEC_WINNT_AUTH_IDENTITY identity;
   SEC_WINNT_AUTH_IDENTITY *p_identity;
-  int has_handles;
-  void *type_2;
-  unsigned long n_type_2;
+  size_t token_max;
+  BYTE *output_token;
+  BYTE *input_token;
+  size_t input_token_len;
 #else
   unsigned int flags;
   unsigned char nonce[8];
 #else
   unsigned int flags;
   unsigned char nonce[8];
+  void* target_info; /* TargetInfo received in the ntlm type-2 message */
+  unsigned int target_info_len;
 #endif
 };
 #endif
 };
+#endif
 
 
-#ifdef USE_HTTP_NEGOTIATE
+#ifdef USE_SPNEGO
 struct negotiatedata {
 struct negotiatedata {
-  /* when doing Negotiate we first need to receive an auth token and then we
-     need to send our header */
+  /* When doing Negotiate (SPNEGO) auth, we first need to send a token
+     and then validate the received one. */
   enum { GSS_AUTHNONE, GSS_AUTHRECV, GSS_AUTHSENT } state;
   enum { GSS_AUTHNONE, GSS_AUTHRECV, GSS_AUTHSENT } state;
-  bool gss; /* Whether we're processing GSS-Negotiate or Negotiate */
-  const char* protocol; /* "GSS-Negotiate" or "Negotiate" */
 #ifdef HAVE_GSSAPI
   OM_uint32 status;
   gss_ctx_id_t context;
 #ifdef HAVE_GSSAPI
   OM_uint32 status;
   gss_ctx_id_t context;
@@ -453,10 +483,12 @@ struct negotiatedata {
 #else
 #ifdef USE_WINDOWS_SSPI
   DWORD status;
 #else
 #ifdef USE_WINDOWS_SSPI
   DWORD status;
-  CtxtHandle *context;
   CredHandle *credentials;
   CredHandle *credentials;
-  char server_name[1024];
-  size_t max_token_length;
+  CtxtHandle *context;
+  SEC_WINNT_AUTH_IDENTITY identity;
+  SEC_WINNT_AUTH_IDENTITY *p_identity;
+  TCHAR *server_name;
+  size_t token_max;
   BYTE *output_token;
   size_t output_token_length;
 #endif
   BYTE *output_token;
   size_t output_token_length;
 #endif
@@ -469,6 +501,7 @@ struct negotiatedata {
  * Boolean values that concerns this connection.
  */
 struct ConnectBits {
  * Boolean values that concerns this connection.
  */
 struct ConnectBits {
+  /* always modify bits.close with the connclose() and connkeep() macros! */
   bool close; /* if set, we close the connection after this request */
   bool reuse; /* if set, this is a re-used connection */
   bool proxy; /* if set, this transfer is done through a proxy - any type */
   bool close; /* if set, we close the connection after this request */
   bool reuse; /* if set, this is a re-used connection */
   bool proxy; /* if set, this transfer is done through a proxy - any type */
@@ -580,7 +613,6 @@ struct Curl_async {
 typedef CURLcode (*Curl_do_more_func)(struct connectdata *, int *);
 typedef CURLcode (*Curl_done_func)(struct connectdata *, CURLcode, bool);
 
 typedef CURLcode (*Curl_do_more_func)(struct connectdata *, int *);
 typedef CURLcode (*Curl_done_func)(struct connectdata *, CURLcode, bool);
 
-
 enum expect100 {
   EXP100_SEND_DATA,           /* enough waiting, just send the body now */
   EXP100_AWAITING_CONTINUE,   /* waiting for the 100 Continue header */
 enum expect100 {
   EXP100_SEND_DATA,           /* enough waiting, just send the body now */
   EXP100_AWAITING_CONTINUE,   /* waiting for the 100 Continue header */
@@ -589,6 +621,19 @@ enum expect100 {
   EXP100_FAILED               /* used on 417 Expectation Failed */
 };
 
   EXP100_FAILED               /* used on 417 Expectation Failed */
 };
 
+enum upgrade101 {
+  UPGR101_INIT,               /* default state */
+  UPGR101_REQUESTED,          /* upgrade requested */
+  UPGR101_RECEIVED,           /* response received */
+  UPGR101_WORKING             /* talking upgraded protocol */
+};
+
+enum negotiatenpn {
+  NPN_INIT,                   /* default state */
+  NPN_HTTP1_1,                /* HTTP/1.1 negotiated */
+  NPN_HTTP2                   /* HTTP2 (draft-xx) negotiated */
+};
+
 /*
  * Request specific data in the easy handle (SessionHandle).  Previously,
  * these members were on the connectdata struct but since a conn struct may
 /*
  * Request specific data in the easy handle (SessionHandle).  Previously,
  * these members were on the connectdata struct but since a conn struct may
@@ -639,6 +684,7 @@ struct SingleRequest {
                                    'RTSP/1.? XXX' line */
   struct timeval start100;      /* time stamp to wait for the 100 code from */
   enum expect100 exp100;        /* expect 100 continue state */
                                    'RTSP/1.? XXX' line */
   struct timeval start100;      /* time stamp to wait for the 100 code from */
   enum expect100 exp100;        /* expect 100 continue state */
+  enum upgrade101 upgr101;      /* 101 upgrade state */
 
   int auto_decoding;            /* What content encoding. sec 3.5, RFC2616. */
 
 
   int auto_decoding;            /* What content encoding. sec 3.5, RFC2616. */
 
@@ -692,6 +738,9 @@ struct SingleRequest {
   bool forbidchunk;   /* used only to explicitly forbid chunk-upload for
                          specific upload buffers. See readmoredata() in
                          http.c for details. */
   bool forbidchunk;   /* used only to explicitly forbid chunk-upload for
                          specific upload buffers. See readmoredata() in
                          http.c for details. */
+
+  void *protop;       /* Allocated protocol-specific data. Each protocol
+                         handler makes sure this points to data it needs. */
 };
 
 /*
 };
 
 /*
@@ -764,7 +813,8 @@ struct Curl_handler {
                         ssize_t *nread, bool *readmore);
 
   long defport;           /* Default port. */
                         ssize_t *nread, bool *readmore);
 
   long defport;           /* Default port. */
-  unsigned int protocol;  /* See CURLPROTO_*  */
+  unsigned int protocol;  /* See CURLPROTO_* - this needs to be the single
+                             specific protocol bit */
   unsigned int flags;     /* Extra particular characteristics, see PROTOPT_* */
 };
 
   unsigned int flags;     /* Extra particular characteristics, see PROTOPT_* */
 };
 
@@ -782,6 +832,8 @@ struct Curl_handler {
                                       gets a default */
 #define PROTOPT_NOURLQUERY (1<<6)   /* protocol can't handle
                                         url query strings (?foo=bar) ! */
                                       gets a default */
 #define PROTOPT_NOURLQUERY (1<<6)   /* protocol can't handle
                                         url query strings (?foo=bar) ! */
+#define PROTOPT_CREDSPERREQUEST (1<<7) /* requires login credentials per
+                                          request instead of per connection */
 
 
 /* return the count of bytes sent, or -1 on error */
 
 
 /* return the count of bytes sent, or -1 on error */
@@ -835,13 +887,14 @@ struct connectdata {
      within the DNS cache, so this pointer is only valid as long as the DNS
      cache entry remains locked. It gets unlocked in Curl_done() */
   Curl_addrinfo *ip_addr;
      within the DNS cache, so this pointer is only valid as long as the DNS
      cache entry remains locked. It gets unlocked in Curl_done() */
   Curl_addrinfo *ip_addr;
+  Curl_addrinfo *tempaddr[2]; /* for happy eyeballs */
 
   /* 'ip_addr_str' is the ip_addr data as a human readable string.
      It remains available as long as the connection does, which is longer than
      the ip_addr itself. */
   char ip_addr_str[MAX_IPADR_LEN];
 
 
   /* 'ip_addr_str' is the ip_addr data as a human readable string.
      It remains available as long as the connection does, which is longer than
      the ip_addr itself. */
   char ip_addr_str[MAX_IPADR_LEN];
 
-  unsigned int scope;    /* address scope for IPv6 */
+  unsigned int scope_id;  /* Scope id for IPv6 */
 
   int socktype;  /* SOCK_STREAM or SOCK_DGRAM */
 
 
   int socktype;  /* SOCK_STREAM or SOCK_DGRAM */
 
@@ -849,8 +902,7 @@ struct connectdata {
   struct hostname proxy;
 
   long port;       /* which port to use locally */
   struct hostname proxy;
 
   long port;       /* which port to use locally */
-  unsigned short remote_port; /* what remote port to connect to,
-                                 not the proxy port! */
+  int remote_port; /* what remote port to connect to, not the proxy port! */
 
   /* 'primary_ip' and 'primary_port' get filled with peer's numerical
      ip address and port number whenever an outgoing connection is
 
   /* 'primary_ip' and 'primary_port' get filled with peer's numerical
      ip address and port number whenever an outgoing connection is
@@ -873,6 +925,8 @@ struct connectdata {
   char *passwd;  /* password string, allocated */
   char *options; /* options string, allocated */
 
   char *passwd;  /* password string, allocated */
   char *options; /* options string, allocated */
 
+  char *xoauth2_bearer; /* bearer token for xoauth2, allocated */
+
   char *proxyuser;    /* proxy user name string, allocated */
   char *proxypasswd;  /* proxy password string, allocated */
   curl_proxytype proxytype; /* what kind of proxy that is in use */
   char *proxyuser;    /* proxy user name string, allocated */
   char *proxypasswd;  /* proxy password string, allocated */
   curl_proxytype proxytype; /* what kind of proxy that is in use */
@@ -884,6 +938,7 @@ struct connectdata {
   struct timeval created; /* creation time */
   curl_socket_t sock[2]; /* two sockets, the second is used for the data
                             transfer when doing FTP */
   struct timeval created; /* creation time */
   curl_socket_t sock[2]; /* two sockets, the second is used for the data
                             transfer when doing FTP */
+  curl_socket_t tempsock[2]; /* temporary sockets for happy eyeballs */
   bool sock_accepted[2]; /* TRUE if the socket on this index was created with
                             accept() */
   Curl_recv *recv[2];
   bool sock_accepted[2]; /* TRUE if the socket on this index was created with
                             accept() */
   Curl_recv *recv[2];
@@ -930,18 +985,22 @@ struct connectdata {
     char *te; /* TE: request header */
   } allocptr;
 
     char *te; /* TE: request header */
   } allocptr;
 
-  int sec_complete; /* if kerberos is enabled for this connection */
-#if defined(HAVE_KRB4) || defined(HAVE_GSSAPI)
+#ifdef HAVE_GSSAPI
+  int sec_complete; /* if Kerberos is enabled for this connection */
   enum protection_level command_prot;
   enum protection_level data_prot;
   enum protection_level request_data_prot;
   size_t buffer_size;
   enum protection_level command_prot;
   enum protection_level data_prot;
   enum protection_level request_data_prot;
   size_t buffer_size;
-  struct krb4buffer in_buffer;
+  struct krb5buffer in_buffer;
   void *app_data;
   const struct Curl_sec_client_mech *mech;
   struct sockaddr_in local_addr;
 #endif
 
   void *app_data;
   const struct Curl_sec_client_mech *mech;
   struct sockaddr_in local_addr;
 #endif
 
+#if defined(USE_KERBEROS5)    /* Consider moving some of the above GSS-API */
+  struct kerberos5data krb5;  /* variables into the structure definition, */
+#endif                        /* however, some of them are ftp specific. */
+
   /* the two following *_inuse fields are only flags, not counters in any way.
      If TRUE it means the channel is in use, and if FALSE it means the channel
      is up for grabs by one. */
   /* the two following *_inuse fields are only flags, not counters in any way.
      If TRUE it means the channel is in use, and if FALSE it means the channel
      is up for grabs by one. */
@@ -969,18 +1028,20 @@ struct connectdata {
   curl_read_callback fread_func; /* function that reads the input */
   void *fread_in;           /* pointer to pass to the fread() above */
 
   curl_read_callback fread_func; /* function that reads the input */
   void *fread_in;           /* pointer to pass to the fread() above */
 
+#if defined(USE_NTLM)
   struct ntlmdata ntlm;     /* NTLM differs from other authentication schemes
                                because it authenticates connections, not
                                single requests! */
   struct ntlmdata proxyntlm; /* NTLM data for proxy */
 
   struct ntlmdata ntlm;     /* NTLM differs from other authentication schemes
                                because it authenticates connections, not
                                single requests! */
   struct ntlmdata proxyntlm; /* NTLM data for proxy */
 
-#if defined(USE_NTLM) && defined(NTLM_WB_ENABLED)
+#if defined(NTLM_WB_ENABLED)
   /* used for communication with Samba's winbind daemon helper ntlm_auth */
   curl_socket_t ntlm_auth_hlpr_socket;
   pid_t ntlm_auth_hlpr_pid;
   char* challenge_header;
   char* response_header;
 #endif
   /* used for communication with Samba's winbind daemon helper ntlm_auth */
   curl_socket_t ntlm_auth_hlpr_socket;
   pid_t ntlm_auth_hlpr_pid;
   char* challenge_header;
   char* response_header;
 #endif
+#endif
 
   char syserr_buf [256]; /* buffer for Curl_strerror() */
 
 
   char syserr_buf [256]; /* buffer for Curl_strerror() */
 
@@ -996,13 +1057,15 @@ struct connectdata {
 
   union {
     struct ftp_conn ftpc;
 
   union {
     struct ftp_conn ftpc;
+    struct http_conn httpc;
     struct ssh_conn sshc;
     struct tftp_state_data *tftpc;
     struct imap_conn imapc;
     struct pop3_conn pop3c;
     struct smtp_conn smtpc;
     struct rtsp_conn rtspc;
     struct ssh_conn sshc;
     struct tftp_state_data *tftpc;
     struct imap_conn imapc;
     struct pop3_conn pop3c;
     struct smtp_conn smtpc;
     struct rtsp_conn rtspc;
-    void *generic;
+    struct smb_conn smbc;
+    void *generic; /* RTMP and LDAP use this */
   } proto;
 
   int cselect_bits; /* bitmask of socket events */
   } proto;
 
   int cselect_bits; /* bitmask of socket events */
@@ -1031,6 +1094,8 @@ struct connectdata {
     TUNNEL_COMPLETE /* CONNECT response received completely */
   } tunnel_state[2]; /* two separate ones to allow FTP */
   struct connectbundle *bundle; /* The bundle we are member of */
     TUNNEL_COMPLETE /* CONNECT response received completely */
   } tunnel_state[2]; /* two separate ones to allow FTP */
   struct connectbundle *bundle; /* The bundle we are member of */
+
+  enum negotiatenpn negnpn;
 };
 
 /* The end of connectdata. */
 };
 
 /* The end of connectdata. */
@@ -1104,6 +1169,7 @@ struct Progress {
 
   struct timeval start;
   struct timeval t_startsingle;
 
   struct timeval start;
   struct timeval t_startsingle;
+  struct timeval t_startop;
   struct timeval t_acceptdata;
 #define CURR_TIME (5+1) /* 6 entries for 5 seconds */
 
   struct timeval t_acceptdata;
 #define CURR_TIME (5+1) /* 6 entries for 5 seconds */
 
@@ -1149,7 +1215,6 @@ typedef enum {
  * Session-data MUST be put in the connectdata struct and here.  */
 #define MAX_CURL_USER_LENGTH 256
 #define MAX_CURL_PASSWORD_LENGTH 256
  * Session-data MUST be put in the connectdata struct and here.  */
 #define MAX_CURL_USER_LENGTH 256
 #define MAX_CURL_PASSWORD_LENGTH 256
-#define MAX_CURL_OPTIONS_LENGTH 256
 
 struct auth {
   unsigned long want;  /* Bitmask set to the authentication methods wanted by
 
 struct auth {
   unsigned long want;  /* Bitmask set to the authentication methods wanted by
@@ -1215,7 +1280,7 @@ struct UrlState {
   struct digestdata digest;      /* state data for host Digest auth */
   struct digestdata proxydigest; /* state data for proxy Digest auth */
 
   struct digestdata digest;      /* state data for host Digest auth */
   struct digestdata proxydigest; /* state data for proxy Digest auth */
 
-#ifdef USE_HTTP_NEGOTIATE
+#ifdef USE_SPNEGO
   struct negotiatedata negotiate; /* state data for host Negotiate auth */
   struct negotiatedata proxyneg; /* state data for proxy Negotiate auth */
 #endif
   struct negotiatedata negotiate; /* state data for host Negotiate auth */
   struct negotiatedata proxyneg; /* state data for proxy Negotiate auth */
 #endif
@@ -1274,30 +1339,8 @@ struct UrlState {
   long rtsp_next_server_CSeq; /* the session's next server CSeq */
   long rtsp_CSeq_recv; /* most recent CSeq received */
 
   long rtsp_next_server_CSeq; /* the session's next server CSeq */
   long rtsp_CSeq_recv; /* most recent CSeq received */
 
-  /* Protocol specific data.
-   *
-   *************************************************************************
-   * Note that this data will be REMOVED after each request, so anything that
-   * should be kept/stored on a per-connection basis and thus live for the
-   * next request on the same connection MUST be put in the connectdata struct!
-   *************************************************************************/
-  union {
-    struct HTTP *http;
-    struct HTTP *https;  /* alias, just for the sake of being more readable */
-    struct RTSP *rtsp;
-    struct FTP *ftp;
-    /* void *tftp;    not used */
-    struct FILEPROTO *file;
-    void *telnet;        /* private for telnet.c-eyes only */
-    void *generic;
-    struct SSHPROTO *ssh;
-    struct IMAP *imap;
-    struct POP3 *pop3;
-    struct SMTP *smtp;
-  } proto;
-
-  /* if true, force SSL connection retry (workaround for certain servers) */
-  bool ssl_connect_retry;
+  curl_off_t infilesize; /* size of file to upload, -1 means unknown.
+                            Copied from set.filesize at start of operation */
 };
 
 
 };
 
 
@@ -1347,13 +1390,13 @@ enum dupstring {
   STRING_KRB_LEVEL,       /* krb security level */
   STRING_NETRC_FILE,      /* if not NULL, use this instead of trying to find
                              $HOME/.netrc */
   STRING_KRB_LEVEL,       /* krb security level */
   STRING_NETRC_FILE,      /* if not NULL, use this instead of trying to find
                              $HOME/.netrc */
-  STRING_COPYPOSTFIELDS,  /* if POST, set the fields' values here */
   STRING_PROXY,           /* proxy to use */
   STRING_SET_RANGE,       /* range, if used */
   STRING_SET_REFERER,     /* custom string for the HTTP referer field */
   STRING_SET_URL,         /* what original URL to work on */
   STRING_SSL_CAPATH,      /* CA directory name (doesn't work on windows) */
   STRING_SSL_CAFILE,      /* certificate file to verify peer against */
   STRING_PROXY,           /* proxy to use */
   STRING_SET_RANGE,       /* range, if used */
   STRING_SET_REFERER,     /* custom string for the HTTP referer field */
   STRING_SET_URL,         /* what original URL to work on */
   STRING_SSL_CAPATH,      /* CA directory name (doesn't work on windows) */
   STRING_SSL_CAFILE,      /* certificate file to verify peer against */
+  STRING_SSL_PINNEDPUBLICKEY, /* public key file to verify peer against */
   STRING_SSL_CIPHER_LIST, /* list of ciphers to use */
   STRING_SSL_EGDSOCKET,   /* path to file containing the EGD daemon socket */
   STRING_SSL_RANDOM_FILE, /* path to file containing "random" data */
   STRING_SSL_CIPHER_LIST, /* list of ciphers to use */
   STRING_SSL_EGDSOCKET,   /* path to file containing the EGD daemon socket */
   STRING_SSL_RANDOM_FILE, /* path to file containing "random" data */
@@ -1377,17 +1420,29 @@ enum dupstring {
   STRING_SSH_KNOWNHOSTS,  /* file name of knownhosts file */
 #endif
 #if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
   STRING_SSH_KNOWNHOSTS,  /* file name of knownhosts file */
 #endif
 #if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
-  STRING_SOCKS5_GSSAPI_SERVICE,  /* GSSAPI service name */
+  STRING_SOCKS5_GSSAPI_SERVICE, /* GSSAPI service name */
 #endif
   STRING_MAIL_FROM,
   STRING_MAIL_AUTH,
 
 #ifdef USE_TLS_SRP
 #endif
   STRING_MAIL_FROM,
   STRING_MAIL_AUTH,
 
 #ifdef USE_TLS_SRP
-  STRING_TLSAUTH_USERNAME,     /* TLS auth <username> */
-  STRING_TLSAUTH_PASSWORD,     /* TLS auth <password> */
+  STRING_TLSAUTH_USERNAME,      /* TLS auth <username> */
+  STRING_TLSAUTH_PASSWORD,      /* TLS auth <password> */
+#endif
+  STRING_BEARER,                /* <bearer>, if used */
+#ifdef USE_UNIX_SOCKETS
+  STRING_UNIX_SOCKET_PATH,      /* path to Unix socket, if used */
 #endif
 
 #endif
 
-  /* -- end of strings -- */
+  /* -- end of zero-terminated strings -- */
+
+  STRING_LASTZEROTERMINATED,
+
+  /* -- below this are pointers to binary data that cannot be strdup'ed.
+     Each such pointer must be added manually to Curl_dupset() --- */
+
+  STRING_COPYPOSTFIELDS,  /* if POST, set the fields' values here */
+
   STRING_LAST /* not used, just an end-of-list marker */
 };
 
   STRING_LAST /* not used, just an end-of-list marker */
 };
 
@@ -1457,7 +1512,7 @@ struct UserDefined {
   long accepttimeout;   /* in milliseconds, 0 means no timeout */
   long server_response_timeout; /* in milliseconds, 0 means no timeout */
   long tftp_blksize ; /* in bytes, 0 means use default */
   long accepttimeout;   /* in milliseconds, 0 means no timeout */
   long server_response_timeout; /* in milliseconds, 0 means no timeout */
   long tftp_blksize ; /* in bytes, 0 means use default */
-  curl_off_t infilesize;      /* size of file to upload, -1 means unknown */
+  curl_off_t filesize;  /* size of file to upload, -1 means unknown */
   long low_speed_limit; /* bytes/second */
   long low_speed_time;  /* number of seconds */
   curl_off_t max_send_speed; /* high speed limit in bytes/second for upload */
   long low_speed_limit; /* bytes/second */
   long low_speed_time;  /* number of seconds */
   curl_off_t max_send_speed; /* high speed limit in bytes/second for upload */
@@ -1465,7 +1520,9 @@ struct UserDefined {
                                 download */
   curl_off_t set_resume_from;  /* continue [ftp] transfer from here */
   struct curl_slist *headers; /* linked list of extra headers */
                                 download */
   curl_off_t set_resume_from;  /* continue [ftp] transfer from here */
   struct curl_slist *headers; /* linked list of extra headers */
+  struct curl_slist *proxyheaders; /* linked list of extra CONNECT headers */
   struct curl_httppost *httppost;  /* linked list of POST data */
   struct curl_httppost *httppost;  /* linked list of POST data */
+  bool sep_headers;     /* handle host and proxy headers separately */
   bool cookiesession;   /* new cookie session? */
   bool crlf;            /* convert crlf on ftp upload(?) */
   struct curl_slist *quote;     /* after connection is established */
   bool cookiesession;   /* new cookie session? */
   bool crlf;            /* convert crlf on ftp upload(?) */
   struct curl_slist *quote;     /* after connection is established */
@@ -1518,7 +1575,7 @@ struct UserDefined {
   bool ftp_list_only;    /* switch FTP command for listing directories */
   bool ftp_use_port;     /* use the FTP PORT command */
   bool hide_progress;    /* don't use the progress meter */
   bool ftp_list_only;    /* switch FTP command for listing directories */
   bool ftp_use_port;     /* use the FTP PORT command */
   bool hide_progress;    /* don't use the progress meter */
-  bool http_fail_on_error;  /* fail on HTTP error codes >= 300 */
+  bool http_fail_on_error;  /* fail on HTTP error codes >= 400 */
   bool http_follow_location; /* follow HTTP redirects */
   bool http_transfer_encoding; /* request compressed HTTP transfer-encoding */
   bool http_disable_hostname_check_before_authentication;
   bool http_follow_location; /* follow HTTP redirects */
   bool http_transfer_encoding; /* request compressed HTTP transfer-encoding */
   bool http_disable_hostname_check_before_authentication;
@@ -1531,7 +1588,7 @@ struct UserDefined {
   enum CURL_NETRC_OPTION
        use_netrc;        /* defined in include/curl.h */
   bool verbose;          /* output verbosity */
   enum CURL_NETRC_OPTION
        use_netrc;        /* defined in include/curl.h */
   bool verbose;          /* output verbosity */
-  bool krb;              /* kerberos connection requested */
+  bool krb;              /* Kerberos connection requested */
   bool reuse_forbid;     /* forbidden to be reused, close after use */
   bool reuse_fresh;      /* do not re-use an existing connection  */
   bool ftp_use_epsv;     /* if EPSV is to be attempted or not */
   bool reuse_forbid;     /* forbidden to be reused, close after use */
   bool reuse_fresh;      /* do not re-use an existing connection  */
   bool ftp_use_epsv;     /* if EPSV is to be attempted or not */
@@ -1561,7 +1618,7 @@ struct UserDefined {
   bool proxy_transfer_mode; /* set transfer mode (;type=<a|i>) when doing FTP
                                via an HTTP proxy */
   char *str[STRING_LAST]; /* array of strings, pointing to allocated memory */
   bool proxy_transfer_mode; /* set transfer mode (;type=<a|i>) when doing FTP
                                via an HTTP proxy */
   char *str[STRING_LAST]; /* array of strings, pointing to allocated memory */
-  unsigned int scope;    /* address scope for IPv6 */
+  unsigned int scope_id;  /* Scope id for IPv6 */
   long allowed_protocols;
   long redir_protocols;
 #if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
   long allowed_protocols;
   long redir_protocols;
 #if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
@@ -1581,7 +1638,7 @@ struct UserDefined {
                                     to pattern (e.g. if WILDCARDMATCH is on) */
   void *fnmatch_data;
 
                                     to pattern (e.g. if WILDCARDMATCH is on) */
   void *fnmatch_data;
 
-  long gssapi_delegation; /* GSSAPI credential delegation, see the
+  long gssapi_delegation; /* GSS-API credential delegation, see the
                              documentation of CURLOPT_GSSAPI_DELEGATION */
 
   bool tcp_keepalive;    /* use TCP keepalives */
                              documentation of CURLOPT_GSSAPI_DELEGATION */
 
   bool tcp_keepalive;    /* use TCP keepalives */
@@ -1589,6 +1646,11 @@ struct UserDefined {
   long tcp_keepintvl;    /* seconds between TCP keepalive probes */
 
   size_t maxconnects;  /* Max idle connections in the connection cache */
   long tcp_keepintvl;    /* seconds between TCP keepalive probes */
 
   size_t maxconnects;  /* Max idle connections in the connection cache */
+
+  bool ssl_enable_npn;  /* TLS NPN extension? */
+  bool ssl_enable_alpn; /* TLS ALPN extension? */
+
+  long expect_100_timeout; /* in milliseconds */
 };
 
 struct Names {
 };
 
 struct Names {
@@ -1650,6 +1712,8 @@ struct SessionHandle {
                                   other dynamic purposes */
   struct WildcardData wildcard; /* wildcard download state info */
   struct PureInfo info;        /* stats, reports and info data */
                                   other dynamic purposes */
   struct WildcardData wildcard; /* wildcard download state info */
   struct PureInfo info;        /* stats, reports and info data */
+  struct curl_tlssessioninfo tsi; /* Information about the TLS session, only
+                                     valid after a client has asked for it */
 #if defined(CURL_DOES_CONVERSIONS) && defined(HAVE_ICONV)
   iconv_t outbound_cd;         /* for translating to the network encoding */
   iconv_t inbound_cd;          /* for translating from the network encoding */
 #if defined(CURL_DOES_CONVERSIONS) && defined(HAVE_ICONV)
   iconv_t outbound_cd;         /* for translating to the network encoding */
   iconv_t inbound_cd;          /* for translating from the network encoding */
index d39fe0c..9ac9226 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -24,7 +24,8 @@
 
 #include <curl/curl.h>
 #include "urldata.h"
 
 #include <curl/curl.h>
 #include "urldata.h"
-#include "sslgen.h"
+#include "vtls/vtls.h"
+#include "http2.h"
 
 #define _MPRINTF_REPLACE /* use the internal *printf() functions */
 #include <curl/mprintf.h>
 
 #define _MPRINTF_REPLACE /* use the internal *printf() functions */
 #include <curl/mprintf.h>
@@ -122,6 +123,11 @@ char *curl_version(void)
   left -= len;
   ptr += len;
 #endif
   left -= len;
   ptr += len;
 #endif
+#ifdef USE_NGHTTP2
+  len = Curl_http2_ver(ptr, left);
+  left -= len;
+  ptr += len;
+#endif
 #ifdef USE_LIBRTMP
   {
     char suff[2];
 #ifdef USE_LIBRTMP
   {
     char suff[2];
@@ -210,6 +216,14 @@ static const char * const protocols[] = {
 #ifdef USE_LIBSSH2
   "sftp",
 #endif
 #ifdef USE_LIBSSH2
   "sftp",
 #endif
+#if !defined(CURL_DISABLE_SMB) && defined(USE_NTLM) && \
+   (CURL_SIZEOF_CURL_OFF_T > 4) && \
+   (!defined(USE_WINDOWS_SSPI) || defined(USE_WIN32_CRYPTO))
+  "smb",
+#  ifdef USE_SSL
+  "smbs",
+#  endif
+#endif
 #ifndef CURL_DISABLE_SMTP
   "smtp",
 #endif
 #ifndef CURL_DISABLE_SMTP
   "smtp",
 #endif
@@ -235,27 +249,31 @@ static curl_version_info_data version_info = {
 #ifdef ENABLE_IPV6
   | CURL_VERSION_IPV6
 #endif
 #ifdef ENABLE_IPV6
   | CURL_VERSION_IPV6
 #endif
-#ifdef HAVE_KRB4
-  | CURL_VERSION_KERBEROS4
-#endif
 #ifdef USE_SSL
   | CURL_VERSION_SSL
 #endif
 #ifdef USE_NTLM
   | CURL_VERSION_NTLM
 #endif
 #ifdef USE_SSL
   | CURL_VERSION_SSL
 #endif
 #ifdef USE_NTLM
   | CURL_VERSION_NTLM
 #endif
-#if defined(USE_NTLM) && defined(NTLM_WB_ENABLED)
+#if !defined(CURL_DISABLE_HTTP) && defined(USE_NTLM) && \
+  defined(NTLM_WB_ENABLED)
   | CURL_VERSION_NTLM_WB
 #endif
   | CURL_VERSION_NTLM_WB
 #endif
+#ifdef USE_SPNEGO
+  | CURL_VERSION_SPNEGO
+#endif
+#ifdef USE_KERBEROS5
+  | CURL_VERSION_KERBEROS5
+#endif
+#ifdef HAVE_GSSAPI
+  | CURL_VERSION_GSSAPI
+#endif
 #ifdef USE_WINDOWS_SSPI
   | CURL_VERSION_SSPI
 #endif
 #ifdef HAVE_LIBZ
   | CURL_VERSION_LIBZ
 #endif
 #ifdef USE_WINDOWS_SSPI
   | CURL_VERSION_SSPI
 #endif
 #ifdef HAVE_LIBZ
   | CURL_VERSION_LIBZ
 #endif
-#ifdef USE_HTTP_NEGOTIATE
-  | CURL_VERSION_GSSNEGOTIATE
-#endif
 #ifdef DEBUGBUILD
   | CURL_VERSION_DEBUG
 #endif
 #ifdef DEBUGBUILD
   | CURL_VERSION_DEBUG
 #endif
@@ -265,9 +283,6 @@ static curl_version_info_data version_info = {
 #ifdef CURLRES_ASYNCH
   | CURL_VERSION_ASYNCHDNS
 #endif
 #ifdef CURLRES_ASYNCH
   | CURL_VERSION_ASYNCHDNS
 #endif
-#ifdef HAVE_SPNEGO
-  | CURL_VERSION_SPNEGO
-#endif
 #if (CURL_SIZEOF_CURL_OFF_T > 4) && \
     ( (SIZEOF_OFF_T > 4) || defined(USE_WIN32_LARGE_FILES) )
   | CURL_VERSION_LARGEFILE
 #if (CURL_SIZEOF_CURL_OFF_T > 4) && \
     ( (SIZEOF_OFF_T > 4) || defined(USE_WIN32_LARGE_FILES) )
   | CURL_VERSION_LARGEFILE
@@ -278,6 +293,12 @@ static curl_version_info_data version_info = {
 #if defined(USE_TLS_SRP)
   | CURL_VERSION_TLSAUTH_SRP
 #endif
 #if defined(USE_TLS_SRP)
   | CURL_VERSION_TLSAUTH_SRP
 #endif
+#if defined(USE_NGHTTP2)
+  | CURL_VERSION_HTTP2
+#endif
+#if defined(USE_UNIX_SOCKETS)
+  | CURL_VERSION_UNIX_SOCKETS
+#endif
   ,
   NULL, /* ssl_version */
   0,    /* ssl_version_num, this is kept at zero */
   ,
   NULL, /* ssl_version */
   0,    /* ssl_version_num, this is kept at zero */
similarity index 91%
rename from lib/axtls.c
rename to lib/vtls/axtls.c
index 44e6b93..1b577b1 100644 (file)
@@ -5,8 +5,8 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2010, DirecTV
- * contact: Eric Hu <ehu@directv.com>
+ * Copyright (C) 2010, DirecTV, Contact: Eric Hu, <ehu@directv.com>.
+ * Copyright (C) 2010 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -23,7 +23,7 @@
 
 /*
  * Source file for all axTLS-specific code for the TLS/SSL layer. No code
 
 /*
  * Source file for all axTLS-specific code for the TLS/SSL layer. No code
- * but sslgen.c should ever call or use these functions.
+ * but vtls.c should ever call or use these functions.
  */
 
 #include "curl_setup.h"
  */
 
 #include "curl_setup.h"
@@ -34,7 +34,7 @@
 
 #include "sendf.h"
 #include "inet_pton.h"
 
 #include "sendf.h"
 #include "inet_pton.h"
-#include "sslgen.h"
+#include "vtls.h"
 #include "parsedate.h"
 #include "connect.h" /* for the connect timeout */
 #include "select.h"
 #include "parsedate.h"
 #include "connect.h" /* for the connect timeout */
 #include "select.h"
@@ -164,7 +164,8 @@ static CURLcode connect_prep(struct connectdata *conn, int sockindex)
   case CURL_SSLVERSION_TLSv1:
     break;
   default:
   case CURL_SSLVERSION_TLSv1:
     break;
   default:
-    failf(data, "axTLS only supports TLSv1");
+    failf(data, "axTLS only supports TLS 1.0 and 1.1, "
+          "and it cannot be specified which one to use");
     return CURLE_SSL_CONNECT_ERROR;
   }
 
     return CURLE_SSL_CONNECT_ERROR;
   }
 
@@ -389,7 +390,7 @@ static CURLcode connect_finish(struct connectdata *conn, int sockindex)
 /*
  * Use axTLS's non-blocking connection feature to open an SSL connection.
  * This is called after a TCP connection is already established.
 /*
  * Use axTLS's non-blocking connection feature to open an SSL connection.
  * This is called after a TCP connection is already established.
-*/
+ */
 CURLcode Curl_axtls_connect_nonblocking(
     struct connectdata *conn,
     int sockindex,
 CURLcode Curl_axtls_connect_nonblocking(
     struct connectdata *conn,
     int sockindex,
@@ -397,6 +398,7 @@ CURLcode Curl_axtls_connect_nonblocking(
 {
   CURLcode conn_step;
   int ssl_fcn_return;
 {
   CURLcode conn_step;
   int ssl_fcn_return;
+  int i;
 
  *done = FALSE;
   /* connectdata is calloc'd and connecting_state is only changed in this
 
  *done = FALSE;
   /* connectdata is calloc'd and connecting_state is only changed in this
@@ -413,14 +415,17 @@ CURLcode Curl_axtls_connect_nonblocking(
   if(conn->ssl[sockindex].connecting_state == ssl_connect_2) {
     /* Check to make sure handshake was ok. */
     if(ssl_handshake_status(conn->ssl[sockindex].ssl) != SSL_OK) {
   if(conn->ssl[sockindex].connecting_state == ssl_connect_2) {
     /* Check to make sure handshake was ok. */
     if(ssl_handshake_status(conn->ssl[sockindex].ssl) != SSL_OK) {
-      ssl_fcn_return = ssl_read(conn->ssl[sockindex].ssl, NULL);
-      if(ssl_fcn_return < 0) {
-        Curl_axtls_close(conn, sockindex);
-        ssl_display_error(ssl_fcn_return); /* goes to stdout. */
-        return map_error_to_curl(ssl_fcn_return);
-      }
-      else {
-        return CURLE_OK; /* Return control to caller for retries */
+      /* Loop to perform more work in between sleeps. This is work around the
+         fact that axtls does not expose any knowledge about when work needs
+         to be performed. This can save ~25% of time on SSL handshakes. */
+      for(i=0; i<5; i++) {
+        ssl_fcn_return = ssl_read(conn->ssl[sockindex].ssl, NULL);
+        if(ssl_fcn_return < 0) {
+          Curl_axtls_close(conn, sockindex);
+          ssl_display_error(ssl_fcn_return); /* goes to stdout. */
+          return map_error_to_curl(ssl_fcn_return);
+        }
+        return CURLE_OK;
       }
     }
     infof (conn->data, "handshake completed successfully\n");
       }
     }
     infof (conn->data, "handshake completed successfully\n");
@@ -476,6 +481,7 @@ Curl_axtls_connect(struct connectdata *conn,
       return map_error_to_curl(ssl_fcn_return);
     }
     usleep(10000);
       return map_error_to_curl(ssl_fcn_return);
     }
     usleep(10000);
+    /* TODO: check for timeout as this could hang indefinitely otherwise */
   }
   infof (conn->data, "handshake completed successfully\n");
 
   }
   infof (conn->data, "handshake completed successfully\n");
 
@@ -521,10 +527,10 @@ void Curl_axtls_close(struct connectdata *conn, int sockindex)
 
   infof(conn->data, "  Curl_axtls_close\n");
 
 
   infof(conn->data, "  Curl_axtls_close\n");
 
-    /* line from ssluse.c: (void)SSL_shutdown(connssl->ssl);
+    /* line from openssl.c: (void)SSL_shutdown(connssl->ssl);
        axTLS compat layer does nothing for SSL_shutdown */
 
        axTLS compat layer does nothing for SSL_shutdown */
 
-    /* The following line is from ssluse.c.  There seems to be no axTLS
+    /* The following line is from openssl.c.  There seems to be no axTLS
        equivalent.  ssl_free and ssl_ctx_free close things.
        SSL_set_connect_state(connssl->handle); */
 
        equivalent.  ssl_free and ssl_ctx_free close things.
        SSL_set_connect_state(connssl->handle); */
 
@@ -537,7 +543,7 @@ void Curl_axtls_close(struct connectdata *conn, int sockindex)
  */
 int Curl_axtls_shutdown(struct connectdata *conn, int sockindex)
 {
  */
 int Curl_axtls_shutdown(struct connectdata *conn, int sockindex)
 {
-  /* Outline taken from ssluse.c since functions are in axTLS compat layer.
+  /* Outline taken from openssl.c since functions are in axTLS compat layer.
      axTLS's error set is much smaller, so a lot of error-handling was removed.
    */
   int retval = 0;
      axTLS's error set is much smaller, so a lot of error-handling was removed.
    */
   int retval = 0;
@@ -621,7 +627,7 @@ static ssize_t axtls_recv(struct connectdata *conn, /* connection data */
     }
     else {
       failf(conn->data, "axTLS recv error (%d)", ret);
     }
     else {
       failf(conn->data, "axTLS recv error (%d)", ret);
-      *err = map_error_to_curl(ret);
+      *err = map_error_to_curl((int) ret);
       ret = -1;
     }
   }
       ret = -1;
     }
   }
@@ -637,7 +643,7 @@ static ssize_t axtls_recv(struct connectdata *conn, /* connection data */
  */
 int Curl_axtls_check_cxn(struct connectdata *conn)
 {
  */
 int Curl_axtls_check_cxn(struct connectdata *conn)
 {
-  /* ssluse.c line: rc = SSL_peek(conn->ssl[FIRSTSOCKET].ssl, (void*)&buf, 1);
+  /* openssl.c line: rc = SSL_peek(conn->ssl[FIRSTSOCKET].ssl, (void*)&buf, 1);
      axTLS compat layer always returns the last argument, so connection is
      always alive? */
 
      axTLS compat layer always returns the last argument, so connection is
      always alive? */
 
@@ -649,7 +655,7 @@ void Curl_axtls_session_free(void *ptr)
 {
   (void)ptr;
   /* free the ID */
 {
   (void)ptr;
   /* free the ID */
-  /* both ssluse.c and gtls.c do something here, but axTLS's OpenSSL
+  /* both openssl.c and gtls.c do something here, but axTLS's OpenSSL
      compatibility layer does nothing, so we do nothing too. */
 }
 
      compatibility layer does nothing, so we do nothing too. */
 }
 
@@ -658,4 +664,21 @@ size_t Curl_axtls_version(char *buffer, size_t size)
   return snprintf(buffer, size, "axTLS/%s", ssl_version());
 }
 
   return snprintf(buffer, size, "axTLS/%s", ssl_version());
 }
 
+int Curl_axtls_random(struct SessionHandle *data,
+                      unsigned char *entropy,
+                      size_t length)
+{
+  static bool ssl_seeded = FALSE;
+  (void)data;
+  if(!ssl_seeded) {
+    ssl_seeded = TRUE;
+    /* Initialize the seed if not already done. This call is not exactly thread
+     * safe (and neither is the ssl_seeded check), but the worst effect of a
+     * race condition is that some global resources will leak. */
+    RNG_initialize();
+  }
+  get_random(length, entropy);
+  return 0;
+}
+
 #endif /* USE_AXTLS */
 #endif /* USE_AXTLS */
similarity index 78%
rename from lib/axtls.h
rename to lib/vtls/axtls.h
index db91365..62b4ab0 100644 (file)
@@ -7,8 +7,8 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2010, DirecTV
- * contact: Eric Hu <ehu@directv.com>
+ * Copyright (C) 2010, DirecTV, Contact: Eric Hu <ehu@directv.com>
+ * Copyright (C) 2010 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -46,6 +46,9 @@ void Curl_axtls_session_free(void *ptr);
 size_t Curl_axtls_version(char *buffer, size_t size);
 int Curl_axtls_shutdown(struct connectdata *conn, int sockindex);
 int Curl_axtls_check_cxn(struct connectdata *conn);
 size_t Curl_axtls_version(char *buffer, size_t size);
 int Curl_axtls_shutdown(struct connectdata *conn, int sockindex);
 int Curl_axtls_check_cxn(struct connectdata *conn);
+int Curl_axtls_random(struct SessionHandle *data,
+                      unsigned char *entropy,
+                      size_t length);
 
 /* API setup for axTLS */
 #define curlssl_init Curl_axtls_init
 
 /* API setup for axTLS */
 #define curlssl_init Curl_axtls_init
@@ -56,12 +59,14 @@ int Curl_axtls_check_cxn(struct connectdata *conn);
 #define curlssl_close_all Curl_axtls_close_all
 #define curlssl_close Curl_axtls_close
 #define curlssl_shutdown(x,y) Curl_axtls_shutdown(x,y)
 #define curlssl_close_all Curl_axtls_close_all
 #define curlssl_close Curl_axtls_close
 #define curlssl_shutdown(x,y) Curl_axtls_shutdown(x,y)
-#define curlssl_set_engine(x,y) (x=x, y=y, CURLE_NOT_BUILT_IN)
-#define curlssl_set_engine_default(x) (x=x, CURLE_NOT_BUILT_IN)
-#define curlssl_engines_list(x) (x=x, (struct curl_slist *)NULL)
+#define curlssl_set_engine(x,y) ((void)x, (void)y, CURLE_NOT_BUILT_IN)
+#define curlssl_set_engine_default(x) ((void)x, CURLE_NOT_BUILT_IN)
+#define curlssl_engines_list(x) ((void)x, (struct curl_slist *)NULL)
 #define curlssl_version Curl_axtls_version
 #define curlssl_check_cxn(x) Curl_axtls_check_cxn(x)
 #define curlssl_version Curl_axtls_version
 #define curlssl_check_cxn(x) Curl_axtls_check_cxn(x)
-#define curlssl_data_pending(x,y) (x=x, y=y, 0)
+#define curlssl_data_pending(x,y) ((void)x, (void)y, 0)
+#define curlssl_random(x,y,z) Curl_axtls_random(x,y,z)
+#define CURL_SSL_BACKEND CURLSSLBACKEND_AXTLS
 
 #endif /* USE_AXTLS */
 #endif /* HEADER_CURL_AXTLS_H */
 
 #endif /* USE_AXTLS */
 #endif /* HEADER_CURL_AXTLS_H */
similarity index 74%
rename from lib/curl_darwinssl.c
rename to lib/vtls/curl_darwinssl.c
index 4ecf2d9..c056198 100644 (file)
@@ -5,8 +5,8 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2012-2013, Nick Zitzmann, <nickzman@gmail.com>.
- * Copyright (C) 2012-2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2014, Nick Zitzmann, <nickzman@gmail.com>.
+ * Copyright (C) 2012 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 
 /*
  * Source file for all iOS and Mac OS X SecureTransport-specific code for the
 
 /*
  * Source file for all iOS and Mac OS X SecureTransport-specific code for the
- * TLS/SSL layer. No code but sslgen.c should ever call or use these functions.
+ * TLS/SSL layer. No code but vtls.c should ever call or use these functions.
  */
 
 #include "curl_setup.h"
 
  */
 
 #include "curl_setup.h"
 
+#include "urldata.h" /* for the SessionHandle definition */
+#include "curl_base64.h"
+#include "strtok.h"
+
 #ifdef USE_DARWINSSL
 
 #ifdef HAVE_LIMITS_H
 #ifdef USE_DARWINSSL
 
 #ifdef HAVE_LIMITS_H
 #endif /* MAC_OS_X_VERSION_MAX_ALLOWED < 1050 */
 
 #define CURL_BUILD_IOS 0
 #endif /* MAC_OS_X_VERSION_MAX_ALLOWED < 1050 */
 
 #define CURL_BUILD_IOS 0
+#define CURL_BUILD_IOS_7 0
 #define CURL_BUILD_MAC 1
 /* This is the maximum API level we are allowed to use when building: */
 #define CURL_BUILD_MAC_10_5 MAC_OS_X_VERSION_MAX_ALLOWED >= 1050
 #define CURL_BUILD_MAC_10_6 MAC_OS_X_VERSION_MAX_ALLOWED >= 1060
 #define CURL_BUILD_MAC_10_7 MAC_OS_X_VERSION_MAX_ALLOWED >= 1070
 #define CURL_BUILD_MAC_10_8 MAC_OS_X_VERSION_MAX_ALLOWED >= 1080
 #define CURL_BUILD_MAC 1
 /* This is the maximum API level we are allowed to use when building: */
 #define CURL_BUILD_MAC_10_5 MAC_OS_X_VERSION_MAX_ALLOWED >= 1050
 #define CURL_BUILD_MAC_10_6 MAC_OS_X_VERSION_MAX_ALLOWED >= 1060
 #define CURL_BUILD_MAC_10_7 MAC_OS_X_VERSION_MAX_ALLOWED >= 1070
 #define CURL_BUILD_MAC_10_8 MAC_OS_X_VERSION_MAX_ALLOWED >= 1080
+#define CURL_BUILD_MAC_10_9 MAC_OS_X_VERSION_MAX_ALLOWED >= 1090
 /* These macros mean "the following code is present to allow runtime backward
    compatibility with at least this cat or earlier":
    (You set this at build-time by setting the MACOSX_DEPLOYMENT_TARGET
 /* These macros mean "the following code is present to allow runtime backward
    compatibility with at least this cat or earlier":
    (You set this at build-time by setting the MACOSX_DEPLOYMENT_TARGET
 #define CURL_SUPPORT_MAC_10_6 MAC_OS_X_VERSION_MIN_REQUIRED <= 1060
 #define CURL_SUPPORT_MAC_10_7 MAC_OS_X_VERSION_MIN_REQUIRED <= 1070
 #define CURL_SUPPORT_MAC_10_8 MAC_OS_X_VERSION_MIN_REQUIRED <= 1080
 #define CURL_SUPPORT_MAC_10_6 MAC_OS_X_VERSION_MIN_REQUIRED <= 1060
 #define CURL_SUPPORT_MAC_10_7 MAC_OS_X_VERSION_MIN_REQUIRED <= 1070
 #define CURL_SUPPORT_MAC_10_8 MAC_OS_X_VERSION_MIN_REQUIRED <= 1080
+#define CURL_SUPPORT_MAC_10_9 MAC_OS_X_VERSION_MIN_REQUIRED <= 1090
 
 #elif TARGET_OS_EMBEDDED || TARGET_OS_IPHONE
 #define CURL_BUILD_IOS 1
 
 #elif TARGET_OS_EMBEDDED || TARGET_OS_IPHONE
 #define CURL_BUILD_IOS 1
+#define CURL_BUILD_IOS_7 __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000
 #define CURL_BUILD_MAC 0
 #define CURL_BUILD_MAC_10_5 0
 #define CURL_BUILD_MAC_10_6 0
 #define CURL_BUILD_MAC 0
 #define CURL_BUILD_MAC_10_5 0
 #define CURL_BUILD_MAC_10_6 0
@@ -78,6 +86,7 @@
 #define CURL_SUPPORT_MAC_10_6 0
 #define CURL_SUPPORT_MAC_10_7 0
 #define CURL_SUPPORT_MAC_10_8 0
 #define CURL_SUPPORT_MAC_10_6 0
 #define CURL_SUPPORT_MAC_10_7 0
 #define CURL_SUPPORT_MAC_10_8 0
+#define CURL_SUPPORT_MAC_10_9 0
 
 #else
 #error "The darwinssl back-end requires iOS or OS X."
 
 #else
 #error "The darwinssl back-end requires iOS or OS X."
 #include "inet_pton.h"
 #include "connect.h"
 #include "select.h"
 #include "inet_pton.h"
 #include "connect.h"
 #include "select.h"
-#include "sslgen.h"
+#include "vtls.h"
 #include "curl_darwinssl.h"
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include "curl_darwinssl.h"
 
 #define _MPRINTF_REPLACE /* use our functions only */
@@ -660,6 +669,110 @@ CF_INLINE const char *TLSCipherNameForNumber(SSLCipherSuite cipher) {
       return "TLS_DH_anon_WITH_3DES_EDE_CBC_SHA";
       break;
 #endif /* CURL_BUILD_MAC_10_8 || CURL_BUILD_IOS */
       return "TLS_DH_anon_WITH_3DES_EDE_CBC_SHA";
       break;
 #endif /* CURL_BUILD_MAC_10_8 || CURL_BUILD_IOS */
+#if CURL_BUILD_MAC_10_9 || CURL_BUILD_IOS_7
+    /* TLS PSK (RFC 4279): */
+    case TLS_PSK_WITH_RC4_128_SHA:
+      return "TLS_PSK_WITH_RC4_128_SHA";
+      break;
+    case TLS_PSK_WITH_3DES_EDE_CBC_SHA:
+      return "TLS_PSK_WITH_3DES_EDE_CBC_SHA";
+      break;
+    case TLS_PSK_WITH_AES_128_CBC_SHA:
+      return "TLS_PSK_WITH_AES_128_CBC_SHA";
+      break;
+    case TLS_PSK_WITH_AES_256_CBC_SHA:
+      return "TLS_PSK_WITH_AES_256_CBC_SHA";
+      break;
+    case TLS_DHE_PSK_WITH_RC4_128_SHA:
+      return "TLS_DHE_PSK_WITH_RC4_128_SHA";
+      break;
+    case TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA:
+      return "TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA";
+      break;
+    case TLS_DHE_PSK_WITH_AES_128_CBC_SHA:
+      return "TLS_DHE_PSK_WITH_AES_128_CBC_SHA";
+      break;
+    case TLS_DHE_PSK_WITH_AES_256_CBC_SHA:
+      return "TLS_DHE_PSK_WITH_AES_256_CBC_SHA";
+      break;
+    case TLS_RSA_PSK_WITH_RC4_128_SHA:
+      return "TLS_RSA_PSK_WITH_RC4_128_SHA";
+      break;
+    case TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA:
+      return "TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA";
+      break;
+    case TLS_RSA_PSK_WITH_AES_128_CBC_SHA:
+      return "TLS_RSA_PSK_WITH_AES_128_CBC_SHA";
+      break;
+    case TLS_RSA_PSK_WITH_AES_256_CBC_SHA:
+      return "TLS_RSA_PSK_WITH_AES_256_CBC_SHA";
+      break;
+    /* More TLS PSK (RFC 4785): */
+    case TLS_PSK_WITH_NULL_SHA:
+      return "TLS_PSK_WITH_NULL_SHA";
+      break;
+    case TLS_DHE_PSK_WITH_NULL_SHA:
+      return "TLS_DHE_PSK_WITH_NULL_SHA";
+      break;
+    case TLS_RSA_PSK_WITH_NULL_SHA:
+      return "TLS_RSA_PSK_WITH_NULL_SHA";
+      break;
+    /* Even more TLS PSK (RFC 5487): */
+    case TLS_PSK_WITH_AES_128_GCM_SHA256:
+      return "TLS_PSK_WITH_AES_128_GCM_SHA256";
+      break;
+    case TLS_PSK_WITH_AES_256_GCM_SHA384:
+      return "TLS_PSK_WITH_AES_256_GCM_SHA384";
+      break;
+    case TLS_DHE_PSK_WITH_AES_128_GCM_SHA256:
+      return "TLS_DHE_PSK_WITH_AES_128_GCM_SHA256";
+      break;
+    case TLS_DHE_PSK_WITH_AES_256_GCM_SHA384:
+      return "TLS_DHE_PSK_WITH_AES_256_GCM_SHA384";
+      break;
+    case TLS_RSA_PSK_WITH_AES_128_GCM_SHA256:
+      return "TLS_RSA_PSK_WITH_AES_128_GCM_SHA256";
+      break;
+    case TLS_RSA_PSK_WITH_AES_256_GCM_SHA384:
+      return "TLS_PSK_WITH_AES_256_GCM_SHA384";
+      break;
+    case TLS_PSK_WITH_AES_128_CBC_SHA256:
+      return "TLS_PSK_WITH_AES_128_CBC_SHA256";
+      break;
+    case TLS_PSK_WITH_AES_256_CBC_SHA384:
+      return "TLS_PSK_WITH_AES_256_CBC_SHA384";
+      break;
+    case TLS_PSK_WITH_NULL_SHA256:
+      return "TLS_PSK_WITH_NULL_SHA256";
+      break;
+    case TLS_PSK_WITH_NULL_SHA384:
+      return "TLS_PSK_WITH_NULL_SHA384";
+      break;
+    case TLS_DHE_PSK_WITH_AES_128_CBC_SHA256:
+      return "TLS_DHE_PSK_WITH_AES_128_CBC_SHA256";
+      break;
+    case TLS_DHE_PSK_WITH_AES_256_CBC_SHA384:
+      return "TLS_DHE_PSK_WITH_AES_256_CBC_SHA384";
+      break;
+    case TLS_DHE_PSK_WITH_NULL_SHA256:
+      return "TLS_DHE_PSK_WITH_NULL_SHA256";
+      break;
+    case TLS_DHE_PSK_WITH_NULL_SHA384:
+      return "TLS_RSA_PSK_WITH_NULL_SHA384";
+      break;
+    case TLS_RSA_PSK_WITH_AES_128_CBC_SHA256:
+      return "TLS_RSA_PSK_WITH_AES_128_CBC_SHA256";
+      break;
+    case TLS_RSA_PSK_WITH_AES_256_CBC_SHA384:
+      return "TLS_RSA_PSK_WITH_AES_256_CBC_SHA384";
+      break;
+    case TLS_RSA_PSK_WITH_NULL_SHA256:
+      return "TLS_RSA_PSK_WITH_NULL_SHA256";
+      break;
+    case TLS_RSA_PSK_WITH_NULL_SHA384:
+      return "TLS_RSA_PSK_WITH_NULL_SHA384";
+      break;
+#endif /* CURL_BUILD_MAC_10_9 || CURL_BUILD_IOS_7 */
   }
   return "TLS_NULL_WITH_NULL_NULL";
 }
   }
   return "TLS_NULL_WITH_NULL_NULL";
 }
@@ -671,6 +784,7 @@ CF_INLINE void GetDarwinVersionNumber(int *major, int *minor)
   char *os_version;
   size_t os_version_len;
   char *os_version_major, *os_version_minor/*, *os_version_point*/;
   char *os_version;
   size_t os_version_len;
   char *os_version_major, *os_version_minor/*, *os_version_point*/;
+  char *tok_buf;
 
   /* Get the Darwin kernel version from the kernel using sysctl(): */
   mib[0] = CTL_KERN;
 
   /* Get the Darwin kernel version from the kernel using sysctl(): */
   mib[0] = CTL_KERN;
@@ -686,9 +800,9 @@ CF_INLINE void GetDarwinVersionNumber(int *major, int *minor)
   }
 
   /* Parse the version: */
   }
 
   /* Parse the version: */
-  os_version_major = strtok(os_version, ".");
-  os_version_minor = strtok(NULL, ".");
-  /*os_version_point = strtok(NULL, ".");*/
+  os_version_major = strtok_r(os_version, ".", &tok_buf);
+  os_version_minor = strtok_r(NULL, ".", &tok_buf);
+  /*os_version_point = strtok_r(NULL, ".", &tok_buf);*/
   *major = atoi(os_version_major);
   *minor = atoi(os_version_minor);
   free(os_version);
   *major = atoi(os_version_major);
   *minor = atoi(os_version_minor);
   free(os_version);
@@ -726,7 +840,7 @@ CF_INLINE CFStringRef CopyCertSubject(SecCertificateRef cert)
   return server_cert_summary;
 }
 
   return server_cert_summary;
 }
 
-#if CURL_SUPPORT_MAC_10_7
+#if CURL_SUPPORT_MAC_10_6
 /* The SecKeychainSearch API was deprecated in Lion, and using it will raise
    deprecation warnings, so let's not compile this unless it's necessary: */
 static OSStatus CopyIdentityWithLabelOldSchool(char *label,
 /* The SecKeychainSearch API was deprecated in Lion, and using it will raise
    deprecation warnings, so let's not compile this unless it's necessary: */
 static OSStatus CopyIdentityWithLabelOldSchool(char *label,
@@ -766,7 +880,7 @@ static OSStatus CopyIdentityWithLabelOldSchool(char *label,
     CFRelease(search);
   return status;
 }
     CFRelease(search);
   return status;
 }
-#endif /* CURL_SUPPORT_MAC_10_7 */
+#endif /* CURL_SUPPORT_MAC_10_6 */
 
 static OSStatus CopyIdentityWithLabel(char *label,
                                       SecIdentityRef *out_cert_and_key)
 
 static OSStatus CopyIdentityWithLabel(char *label,
                                       SecIdentityRef *out_cert_and_key)
@@ -806,12 +920,12 @@ static OSStatus CopyIdentityWithLabel(char *label,
     CFRelease(query_dict);
   }
   else {
     CFRelease(query_dict);
   }
   else {
-#if CURL_SUPPORT_MAC_10_7
+#if CURL_SUPPORT_MAC_10_6
     /* On Leopard and Snow Leopard, fall back to SecKeychainSearch. */
     status = CopyIdentityWithLabelOldSchool(label, out_cert_and_key);
 #endif /* CURL_SUPPORT_MAC_10_7 */
   }
     /* On Leopard and Snow Leopard, fall back to SecKeychainSearch. */
     status = CopyIdentityWithLabelOldSchool(label, out_cert_and_key);
 #endif /* CURL_SUPPORT_MAC_10_7 */
   }
-#elif CURL_SUPPORT_MAC_10_7
+#elif CURL_SUPPORT_MAC_10_6
   /* For developers building on older cats, we have no choice but to fall back
      to SecKeychainSearch. */
   status = CopyIdentityWithLabelOldSchool(label, out_cert_and_key);
   /* For developers building on older cats, we have no choice but to fall back
      to SecKeychainSearch. */
   status = CopyIdentityWithLabelOldSchool(label, out_cert_and_key);
@@ -819,6 +933,72 @@ static OSStatus CopyIdentityWithLabel(char *label,
   return status;
 }
 
   return status;
 }
 
+static OSStatus CopyIdentityFromPKCS12File(const char *cPath,
+                                           const char *cPassword,
+                                           SecIdentityRef *out_cert_and_key)
+{
+  OSStatus status = errSecItemNotFound;
+  CFURLRef pkcs_url = CFURLCreateFromFileSystemRepresentation(NULL,
+    (const UInt8 *)cPath, strlen(cPath), false);
+  CFStringRef password = cPassword ? CFStringCreateWithCString(NULL,
+    cPassword, kCFStringEncodingUTF8) : NULL;
+  CFDataRef pkcs_data = NULL;
+
+  /* We can import P12 files on iOS or OS X 10.7 or later: */
+  /* These constants are documented as having first appeared in 10.6 but they
+     raise linker errors when used on that cat for some reason. */
+#if CURL_BUILD_MAC_10_7 || CURL_BUILD_IOS
+  if(CFURLCreateDataAndPropertiesFromResource(NULL, pkcs_url, &pkcs_data,
+    NULL, NULL, &status)) {
+    const void *cKeys[] = {kSecImportExportPassphrase};
+    const void *cValues[] = {password};
+    CFDictionaryRef options = CFDictionaryCreate(NULL, cKeys, cValues,
+      password ? 1L : 0L, NULL, NULL);
+    CFArrayRef items = NULL;
+
+    /* Here we go: */
+    status = SecPKCS12Import(pkcs_data, options, &items);
+    if(status == noErr && items && CFArrayGetCount(items)) {
+      CFDictionaryRef identity_and_trust = CFArrayGetValueAtIndex(items, 0L);
+      const void *temp_identity = CFDictionaryGetValue(identity_and_trust,
+        kSecImportItemIdentity);
+
+      /* Retain the identity; we don't care about any other data... */
+      CFRetain(temp_identity);
+      *out_cert_and_key = (SecIdentityRef)temp_identity;
+    }
+
+    if(items)
+      CFRelease(items);
+    CFRelease(options);
+    CFRelease(pkcs_data);
+  }
+#endif /* CURL_BUILD_MAC_10_7 || CURL_BUILD_IOS */
+  if(password)
+    CFRelease(password);
+  CFRelease(pkcs_url);
+  return status;
+}
+
+/* This code was borrowed from nss.c, with some modifications:
+ * Determine whether the nickname passed in is a filename that needs to
+ * be loaded as a PEM or a regular NSS nickname.
+ *
+ * returns 1 for a file
+ * returns 0 for not a file
+ */
+CF_INLINE bool is_file(const char *filename)
+{
+  struct_stat st;
+
+  if(filename == NULL)
+    return false;
+
+  if(stat(filename, &st) == 0)
+    return S_ISREG(st.st_mode);
+  return false;
+}
+
 static CURLcode darwinssl_connect_step1(struct connectdata *conn,
                                         int sockindex)
 {
 static CURLcode darwinssl_connect_step1(struct connectdata *conn,
                                         int sockindex)
 {
@@ -878,16 +1058,30 @@ static CURLcode darwinssl_connect_step1(struct connectdata *conn,
 #if CURL_BUILD_MAC_10_8 || CURL_BUILD_IOS
   if(SSLSetProtocolVersionMax != NULL) {
     switch(data->set.ssl.version) {
 #if CURL_BUILD_MAC_10_8 || CURL_BUILD_IOS
   if(SSLSetProtocolVersionMax != NULL) {
     switch(data->set.ssl.version) {
-      case CURL_SSLVERSION_DEFAULT: default:
-        (void)SSLSetProtocolVersionMin(connssl->ssl_ctx, kSSLProtocol3);
+      default:
+      case CURL_SSLVERSION_DEFAULT:
+      case CURL_SSLVERSION_TLSv1:
+        (void)SSLSetProtocolVersionMin(connssl->ssl_ctx, kTLSProtocol1);
         (void)SSLSetProtocolVersionMax(connssl->ssl_ctx, kTLSProtocol12);
         break;
         (void)SSLSetProtocolVersionMax(connssl->ssl_ctx, kTLSProtocol12);
         break;
-      case CURL_SSLVERSION_TLSv1:
+      case CURL_SSLVERSION_TLSv1_0:
         (void)SSLSetProtocolVersionMin(connssl->ssl_ctx, kTLSProtocol1);
         (void)SSLSetProtocolVersionMin(connssl->ssl_ctx, kTLSProtocol1);
+        (void)SSLSetProtocolVersionMax(connssl->ssl_ctx, kTLSProtocol1);
+        break;
+      case CURL_SSLVERSION_TLSv1_1:
+        (void)SSLSetProtocolVersionMin(connssl->ssl_ctx, kTLSProtocol11);
+        (void)SSLSetProtocolVersionMax(connssl->ssl_ctx, kTLSProtocol11);
+        break;
+      case CURL_SSLVERSION_TLSv1_2:
+        (void)SSLSetProtocolVersionMin(connssl->ssl_ctx, kTLSProtocol12);
         (void)SSLSetProtocolVersionMax(connssl->ssl_ctx, kTLSProtocol12);
         break;
       case CURL_SSLVERSION_SSLv3:
         (void)SSLSetProtocolVersionMax(connssl->ssl_ctx, kTLSProtocol12);
         break;
       case CURL_SSLVERSION_SSLv3:
-        (void)SSLSetProtocolVersionMin(connssl->ssl_ctx, kSSLProtocol3);
+        err = SSLSetProtocolVersionMin(connssl->ssl_ctx, kSSLProtocol3);
+        if(err != noErr) {
+          failf(data, "Your version of the OS does not support SSLv3");
+          return CURLE_SSL_CONNECT_ERROR;
+        }
         (void)SSLSetProtocolVersionMax(connssl->ssl_ctx, kSSLProtocol3);
         break;
       case CURL_SSLVERSION_SSLv2:
         (void)SSLSetProtocolVersionMax(connssl->ssl_ctx, kSSLProtocol3);
         break;
       case CURL_SSLVERSION_SSLv2:
@@ -905,10 +1099,9 @@ static CURLcode darwinssl_connect_step1(struct connectdata *conn,
                                        kSSLProtocolAll,
                                        false);
     switch (data->set.ssl.version) {
                                        kSSLProtocolAll,
                                        false);
     switch (data->set.ssl.version) {
-      case CURL_SSLVERSION_DEFAULT: default:
-        (void)SSLSetProtocolVersionEnabled(connssl->ssl_ctx,
-                                           kSSLProtocol3,
-                                           true);
+      default:
+      case CURL_SSLVERSION_DEFAULT:
+      case CURL_SSLVERSION_TLSv1:
         (void)SSLSetProtocolVersionEnabled(connssl->ssl_ctx,
                                            kTLSProtocol1,
                                            true);
         (void)SSLSetProtocolVersionEnabled(connssl->ssl_ctx,
                                            kTLSProtocol1,
                                            true);
@@ -919,21 +1112,29 @@ static CURLcode darwinssl_connect_step1(struct connectdata *conn,
                                            kTLSProtocol12,
                                            true);
         break;
                                            kTLSProtocol12,
                                            true);
         break;
-      case CURL_SSLVERSION_TLSv1:
+      case CURL_SSLVERSION_TLSv1_0:
         (void)SSLSetProtocolVersionEnabled(connssl->ssl_ctx,
                                            kTLSProtocol1,
                                            true);
         (void)SSLSetProtocolVersionEnabled(connssl->ssl_ctx,
                                            kTLSProtocol1,
                                            true);
+        break;
+      case CURL_SSLVERSION_TLSv1_1:
         (void)SSLSetProtocolVersionEnabled(connssl->ssl_ctx,
                                            kTLSProtocol11,
                                            true);
         (void)SSLSetProtocolVersionEnabled(connssl->ssl_ctx,
                                            kTLSProtocol11,
                                            true);
+        break;
+      case CURL_SSLVERSION_TLSv1_2:
         (void)SSLSetProtocolVersionEnabled(connssl->ssl_ctx,
                                            kTLSProtocol12,
                                            true);
         break;
       case CURL_SSLVERSION_SSLv3:
         (void)SSLSetProtocolVersionEnabled(connssl->ssl_ctx,
                                            kTLSProtocol12,
                                            true);
         break;
       case CURL_SSLVERSION_SSLv3:
-        (void)SSLSetProtocolVersionEnabled(connssl->ssl_ctx,
+        err = SSLSetProtocolVersionEnabled(connssl->ssl_ctx,
                                            kSSLProtocol3,
                                            true);
                                            kSSLProtocol3,
                                            true);
+        if(err != noErr) {
+          failf(data, "Your version of the OS does not support SSLv3");
+          return CURLE_SSL_CONNECT_ERROR;
+        }
         break;
       case CURL_SSLVERSION_SSLv2:
         err = SSLSetProtocolVersionEnabled(connssl->ssl_ctx,
         break;
       case CURL_SSLVERSION_SSLv2:
         err = SSLSetProtocolVersionEnabled(connssl->ssl_ctx,
@@ -952,18 +1153,18 @@ static CURLcode darwinssl_connect_step1(struct connectdata *conn,
   switch(data->set.ssl.version) {
     default:
     case CURL_SSLVERSION_DEFAULT:
   switch(data->set.ssl.version) {
     default:
     case CURL_SSLVERSION_DEFAULT:
-      (void)SSLSetProtocolVersionEnabled(connssl->ssl_ctx,
-                                         kSSLProtocol3,
-                                         true);
-      (void)SSLSetProtocolVersionEnabled(connssl->ssl_ctx,
-                                         kTLSProtocol1,
-                                         true);
-      break;
     case CURL_SSLVERSION_TLSv1:
     case CURL_SSLVERSION_TLSv1:
+    case CURL_SSLVERSION_TLSv1_0:
       (void)SSLSetProtocolVersionEnabled(connssl->ssl_ctx,
                                          kTLSProtocol1,
                                          true);
       break;
       (void)SSLSetProtocolVersionEnabled(connssl->ssl_ctx,
                                          kTLSProtocol1,
                                          true);
       break;
+    case CURL_SSLVERSION_TLSv1_1:
+      failf(data, "Your version of the OS does not support TLSv1.1");
+      return CURLE_SSL_CONNECT_ERROR;
+    case CURL_SSLVERSION_TLSv1_2:
+      failf(data, "Your version of the OS does not support TLSv1.2");
+      return CURLE_SSL_CONNECT_ERROR;
     case CURL_SSLVERSION_SSLv2:
       err = SSLSetProtocolVersionEnabled(connssl->ssl_ctx,
                                          kSSLProtocol2,
     case CURL_SSLVERSION_SSLv2:
       err = SSLSetProtocolVersionEnabled(connssl->ssl_ctx,
                                          kSSLProtocol2,
@@ -974,9 +1175,13 @@ static CURLcode darwinssl_connect_step1(struct connectdata *conn,
       }
       break;
     case CURL_SSLVERSION_SSLv3:
       }
       break;
     case CURL_SSLVERSION_SSLv3:
-      (void)SSLSetProtocolVersionEnabled(connssl->ssl_ctx,
+      err = SSLSetProtocolVersionEnabled(connssl->ssl_ctx,
                                          kSSLProtocol3,
                                          true);
                                          kSSLProtocol3,
                                          true);
+      if(err != noErr) {
+        failf(data, "Your version of the OS does not support SSLv3");
+        return CURLE_SSL_CONNECT_ERROR;
+      }
       break;
   }
 #endif /* CURL_BUILD_MAC_10_8 || CURL_BUILD_IOS */
       break;
   }
 #endif /* CURL_BUILD_MAC_10_8 || CURL_BUILD_IOS */
@@ -988,9 +1193,27 @@ static CURLcode darwinssl_connect_step1(struct connectdata *conn,
 
   if(data->set.str[STRING_CERT]) {
     SecIdentityRef cert_and_key = NULL;
 
   if(data->set.str[STRING_CERT]) {
     SecIdentityRef cert_and_key = NULL;
+    bool is_cert_file = is_file(data->set.str[STRING_CERT]);
+
+    /* User wants to authenticate with a client cert. Look for it:
+       If we detect that this is a file on disk, then let's load it.
+       Otherwise, assume that the user wants to use an identity loaded
+       from the Keychain. */
+    if(is_cert_file) {
+      if(!data->set.str[STRING_CERT_TYPE])
+        infof(data, "WARNING: SSL: Certificate type not set, assuming "
+                    "PKCS#12 format.\n");
+      else if(strncmp(data->set.str[STRING_CERT_TYPE], "P12",
+        strlen(data->set.str[STRING_CERT_TYPE])) != 0)
+        infof(data, "WARNING: SSL: The Security framework only supports "
+                    "loading identities that are in PKCS#12 format.\n");
+
+      err = CopyIdentityFromPKCS12File(data->set.str[STRING_CERT],
+        data->set.str[STRING_KEY_PASSWD], &cert_and_key);
+    }
+    else
+      err = CopyIdentityWithLabel(data->set.str[STRING_CERT], &cert_and_key);
 
 
-    /* User wants to authenticate with a client cert. Look for it: */
-    err = CopyIdentityWithLabel(data->set.str[STRING_CERT], &cert_and_key);
     if(err == noErr) {
       SecCertificateRef cert = NULL;
       CFTypeRef certs_c[1];
     if(err == noErr) {
       SecCertificateRef cert = NULL;
       CFTypeRef certs_c[1];
@@ -1027,8 +1250,29 @@ static CURLcode darwinssl_connect_step1(struct connectdata *conn,
       CFRelease(cert_and_key);
     }
     else {
       CFRelease(cert_and_key);
     }
     else {
-      failf(data, "SSL: Can't find the certificate \"%s\" and its private key "
-                  "in the Keychain.", data->set.str[STRING_CERT]);
+      switch(err) {
+        case errSecAuthFailed: case -25264: /* errSecPkcs12VerifyFailure */
+          failf(data, "SSL: Incorrect password for the certificate \"%s\" "
+                      "and its private key.", data->set.str[STRING_CERT]);
+          break;
+        case -26275: /* errSecDecode */ case -25257: /* errSecUnknownFormat */
+          failf(data, "SSL: Couldn't make sense of the data in the "
+                      "certificate \"%s\" and its private key.",
+                      data->set.str[STRING_CERT]);
+          break;
+        case -25260: /* errSecPassphraseRequired */
+          failf(data, "SSL The certificate \"%s\" requires a password.",
+                      data->set.str[STRING_CERT]);
+          break;
+        case errSecItemNotFound:
+          failf(data, "SSL: Can't find the certificate \"%s\" and its private "
+                      "key in the Keychain.", data->set.str[STRING_CERT]);
+          break;
+        default:
+          failf(data, "SSL: Can't load the certificate \"%s\" and its private "
+                      "key: OSStatus %d", data->set.str[STRING_CERT], err);
+          break;
+      }
       return CURLE_SSL_CERTPROBLEM;
     }
   }
       return CURLE_SSL_CERTPROBLEM;
     }
   }
@@ -1051,9 +1295,11 @@ static CURLcode darwinssl_connect_step1(struct connectdata *conn,
 #else
   if(SSLSetSessionOption != NULL) {
 #endif /* CURL_BUILD_MAC */
 #else
   if(SSLSetSessionOption != NULL) {
 #endif /* CURL_BUILD_MAC */
+    bool break_on_auth = !data->set.ssl.verifypeer ||
+      data->set.str[STRING_SSL_CAFILE];
     err = SSLSetSessionOption(connssl->ssl_ctx,
                               kSSLSessionOptionBreakOnServerAuth,
     err = SSLSetSessionOption(connssl->ssl_ctx,
                               kSSLSessionOptionBreakOnServerAuth,
-                              data->set.ssl.verifypeer?false:true);
+                              break_on_auth);
     if(err != noErr) {
       failf(data, "SSL: SSLSetSessionOption() failed: OSStatus %d", err);
       return CURLE_SSL_CONNECT_ERROR;
     if(err != noErr) {
       failf(data, "SSL: SSLSetSessionOption() failed: OSStatus %d", err);
       return CURLE_SSL_CONNECT_ERROR;
@@ -1078,20 +1324,41 @@ static CURLcode darwinssl_connect_step1(struct connectdata *conn,
   }
 #endif /* CURL_BUILD_MAC_10_6 || CURL_BUILD_IOS */
 
   }
 #endif /* CURL_BUILD_MAC_10_6 || CURL_BUILD_IOS */
 
-  /* If this is a domain name and not an IP address, then configure SNI.
+  if(data->set.str[STRING_SSL_CAFILE]) {
+    bool is_cert_file = is_file(data->set.str[STRING_SSL_CAFILE]);
+
+    if(!is_cert_file) {
+      failf(data, "SSL: can't load CA certificate file %s",
+            data->set.str[STRING_SSL_CAFILE]);
+      return CURLE_SSL_CACERT_BADFILE;
+    }
+    if(!data->set.ssl.verifypeer) {
+      failf(data, "SSL: CA certificate set, but certificate verification "
+            "is disabled");
+      return CURLE_SSL_CONNECT_ERROR;
+    }
+  }
+
+  /* Configure hostname check. SNI is used if available.
+   * Both hostname check and SNI require SSLSetPeerDomainName().
    * Also: the verifyhost setting influences SNI usage */
    * Also: the verifyhost setting influences SNI usage */
-  /* If this is a domain name and not an IP address, then configure SNI: */
-  if((0 == Curl_inet_pton(AF_INET, conn->host.name, &addr)) &&
-#ifdef ENABLE_IPV6
-     (0 == Curl_inet_pton(AF_INET6, conn->host.name, &addr)) &&
-#endif
-     data->set.ssl.verifyhost) {
+  if(data->set.ssl.verifyhost) {
     err = SSLSetPeerDomainName(connssl->ssl_ctx, conn->host.name,
     err = SSLSetPeerDomainName(connssl->ssl_ctx, conn->host.name,
-                               strlen(conn->host.name));
+    strlen(conn->host.name));
+
     if(err != noErr) {
       infof(data, "WARNING: SSL: SSLSetPeerDomainName() failed: OSStatus %d\n",
             err);
     }
     if(err != noErr) {
       infof(data, "WARNING: SSL: SSLSetPeerDomainName() failed: OSStatus %d\n",
             err);
     }
+
+    if((Curl_inet_pton(AF_INET, conn->host.name, &addr))
+  #ifdef ENABLE_IPV6
+    || (Curl_inet_pton(AF_INET6, conn->host.name, &addr))
+  #endif
+       ) {
+         infof(data, "WARNING: using IP address, SNI is being disabled by "
+         "the OS.\n");
+    }
   }
 
   /* Disable cipher suites that ST supports but are not safe. These ciphers
   }
 
   /* Disable cipher suites that ST supports but are not safe. These ciphers
@@ -1121,11 +1388,21 @@ static CURLcode darwinssl_connect_step1(struct connectdata *conn,
         case SSL_NULL_WITH_NULL_NULL:
         case SSL_RSA_WITH_NULL_MD5:
         case SSL_RSA_WITH_NULL_SHA:
         case SSL_NULL_WITH_NULL_NULL:
         case SSL_RSA_WITH_NULL_MD5:
         case SSL_RSA_WITH_NULL_SHA:
+        case 0x003B: /* TLS_RSA_WITH_NULL_SHA256 */
         case SSL_FORTEZZA_DMS_WITH_NULL_SHA:
         case 0xC001: /* TLS_ECDH_ECDSA_WITH_NULL_SHA */
         case 0xC006: /* TLS_ECDHE_ECDSA_WITH_NULL_SHA */
         case 0xC00B: /* TLS_ECDH_RSA_WITH_NULL_SHA */
         case 0xC010: /* TLS_ECDHE_RSA_WITH_NULL_SHA */
         case SSL_FORTEZZA_DMS_WITH_NULL_SHA:
         case 0xC001: /* TLS_ECDH_ECDSA_WITH_NULL_SHA */
         case 0xC006: /* TLS_ECDHE_ECDSA_WITH_NULL_SHA */
         case 0xC00B: /* TLS_ECDH_RSA_WITH_NULL_SHA */
         case 0xC010: /* TLS_ECDHE_RSA_WITH_NULL_SHA */
+        case 0x002C: /* TLS_PSK_WITH_NULL_SHA */
+        case 0x002D: /* TLS_DHE_PSK_WITH_NULL_SHA */
+        case 0x002E: /* TLS_RSA_PSK_WITH_NULL_SHA */
+        case 0x00B0: /* TLS_PSK_WITH_NULL_SHA256 */
+        case 0x00B1: /* TLS_PSK_WITH_NULL_SHA384 */
+        case 0x00B4: /* TLS_DHE_PSK_WITH_NULL_SHA256 */
+        case 0x00B5: /* TLS_DHE_PSK_WITH_NULL_SHA384 */
+        case 0x00B8: /* TLS_RSA_PSK_WITH_NULL_SHA256 */
+        case 0x00B9: /* TLS_RSA_PSK_WITH_NULL_SHA384 */
         /* Disable anonymous ciphersuites: */
         case SSL_DH_anon_EXPORT_WITH_RC4_40_MD5:
         case SSL_DH_anon_WITH_RC4_128_MD5:
         /* Disable anonymous ciphersuites: */
         case SSL_DH_anon_EXPORT_WITH_RC4_40_MD5:
         case SSL_DH_anon_WITH_RC4_128_MD5:
@@ -1181,9 +1458,17 @@ static CURLcode darwinssl_connect_step1(struct connectdata *conn,
   Curl_safefree(all_ciphers);
   Curl_safefree(allowed_ciphers);
 
   Curl_safefree(all_ciphers);
   Curl_safefree(allowed_ciphers);
 
+#if CURL_BUILD_MAC_10_9 || CURL_BUILD_IOS_7
+  /* We want to enable 1/n-1 when using a CBC cipher unless the user
+     specifically doesn't want us doing that: */
+  if(SSLSetSessionOption != NULL)
+    SSLSetSessionOption(connssl->ssl_ctx, kSSLSessionOptionSendOneByteRecord,
+                      !data->set.ssl_enable_beast);
+#endif /* CURL_BUILD_MAC_10_9 || CURL_BUILD_IOS_7 */
+
   /* Check if there's a cached ID we can/should use here! */
   if(!Curl_ssl_getsessionid(conn, (void **)&ssl_sessionid,
   /* Check if there's a cached ID we can/should use here! */
   if(!Curl_ssl_getsessionid(conn, (void **)&ssl_sessionid,
-    &ssl_sessionid_len)) {
+                            &ssl_sessionid_len)) {
     /* we got a session id, use it! */
     err = SSLSetPeerID(connssl->ssl_ctx, ssl_sessionid, ssl_sessionid_len);
     if(err != noErr) {
     /* we got a session id, use it! */
     err = SSLSetPeerID(connssl->ssl_ctx, ssl_sessionid, ssl_sessionid_len);
     if(err != noErr) {
@@ -1196,20 +1481,23 @@ static CURLcode darwinssl_connect_step1(struct connectdata *conn,
   /* If there isn't one, then let's make one up! This has to be done prior
      to starting the handshake. */
   else {
   /* If there isn't one, then let's make one up! This has to be done prior
      to starting the handshake. */
   else {
-    CURLcode retcode;
+    CURLcode result;
+    ssl_sessionid =
+      aprintf("%s:%d:%d:%s:%hu", data->set.str[STRING_SSL_CAFILE],
+              data->set.ssl.verifypeer, data->set.ssl.verifyhost,
+              conn->host.name, conn->remote_port);
+    ssl_sessionid_len = strlen(ssl_sessionid);
 
 
-    ssl_sessionid = malloc(256*sizeof(char));
-    ssl_sessionid_len = snprintf(ssl_sessionid, 256, "curl:%s:%hu",
-      conn->host.name, conn->remote_port);
     err = SSLSetPeerID(connssl->ssl_ctx, ssl_sessionid, ssl_sessionid_len);
     if(err != noErr) {
       failf(data, "SSL: SSLSetPeerID() failed: OSStatus %d", err);
       return CURLE_SSL_CONNECT_ERROR;
     }
     err = SSLSetPeerID(connssl->ssl_ctx, ssl_sessionid, ssl_sessionid_len);
     if(err != noErr) {
       failf(data, "SSL: SSLSetPeerID() failed: OSStatus %d", err);
       return CURLE_SSL_CONNECT_ERROR;
     }
-    retcode = Curl_ssl_addsessionid(conn, ssl_sessionid, ssl_sessionid_len);
-    if(retcode!= CURLE_OK) {
+
+    result = Curl_ssl_addsessionid(conn, ssl_sessionid, ssl_sessionid_len);
+    if(result) {
       failf(data, "failed to store ssl session");
       failf(data, "failed to store ssl session");
-      return retcode;
+      return result;
     }
   }
 
     }
   }
 
@@ -1234,6 +1522,294 @@ static CURLcode darwinssl_connect_step1(struct connectdata *conn,
   return CURLE_OK;
 }
 
   return CURLE_OK;
 }
 
+static long pem_to_der(const char *in, unsigned char **out, size_t *outlen)
+{
+  char *sep_start, *sep_end, *cert_start, *cert_end;
+  size_t i, j, err;
+  size_t len;
+  unsigned char *b64;
+
+  /* Jump through the separators at the beginning of the certificate. */
+  sep_start = strstr(in, "-----");
+  if(sep_start == NULL)
+    return 0;
+  cert_start = strstr(sep_start + 1, "-----");
+  if(cert_start == NULL)
+    return -1;
+
+  cert_start += 5;
+
+  /* Find separator after the end of the certificate. */
+  cert_end = strstr(cert_start, "-----");
+  if(cert_end == NULL)
+    return -1;
+
+  sep_end = strstr(cert_end + 1, "-----");
+  if(sep_end == NULL)
+    return -1;
+  sep_end += 5;
+
+  len = cert_end - cert_start;
+  b64 = malloc(len + 1);
+  if(!b64)
+    return -1;
+
+  /* Create base64 string without linefeeds. */
+  for(i = 0, j = 0; i < len; i++) {
+    if(cert_start[i] != '\r' && cert_start[i] != '\n')
+      b64[j++] = cert_start[i];
+  }
+  b64[j] = '\0';
+
+  err = Curl_base64_decode((const char *)b64, out, outlen);
+  free(b64);
+  if(err) {
+    free(*out);
+    return -1;
+  }
+
+  return sep_end - in;
+}
+
+static int read_cert(const char *file, unsigned char **out, size_t *outlen)
+{
+  int fd;
+  ssize_t n, len = 0, cap = 512;
+  unsigned char buf[cap], *data;
+
+  fd = open(file, 0);
+  if(fd < 0)
+    return -1;
+
+  data = malloc(cap);
+  if(!data) {
+    close(fd);
+    return -1;
+  }
+
+  for(;;) {
+    n = read(fd, buf, sizeof(buf));
+    if(n < 0) {
+      close(fd);
+      free(data);
+      return -1;
+    }
+    else if(n == 0) {
+      close(fd);
+      break;
+    }
+
+    if(len + n >= cap) {
+      cap *= 2;
+      data = realloc(data, cap);
+      if(!data) {
+        close(fd);
+        return -1;
+      }
+    }
+
+    memcpy(data + len, buf, n);
+    len += n;
+  }
+  data[len] = '\0';
+
+  *out = data;
+  *outlen = len;
+
+  return 0;
+}
+
+static int sslerr_to_curlerr(struct SessionHandle *data, int err)
+{
+  switch(err) {
+    case errSSLXCertChainInvalid:
+      failf(data, "SSL certificate problem: Invalid certificate chain");
+      return CURLE_SSL_CACERT;
+    case errSSLUnknownRootCert:
+      failf(data, "SSL certificate problem: Untrusted root certificate");
+      return CURLE_SSL_CACERT;
+    case errSSLNoRootCert:
+      failf(data, "SSL certificate problem: No root certificate");
+      return CURLE_SSL_CACERT;
+    case errSSLCertExpired:
+      failf(data, "SSL certificate problem: Certificate chain had an "
+            "expired certificate");
+      return CURLE_SSL_CACERT;
+    case errSSLBadCert:
+      failf(data, "SSL certificate problem: Couldn't understand the server "
+            "certificate format");
+      return CURLE_SSL_CONNECT_ERROR;
+    case errSSLHostNameMismatch:
+      failf(data, "SSL certificate peer hostname mismatch");
+      return CURLE_PEER_FAILED_VERIFICATION;
+    default:
+      failf(data, "SSL unexpected certificate error %d", err);
+      return CURLE_SSL_CACERT;
+  }
+}
+
+static int append_cert_to_array(struct SessionHandle *data,
+                                unsigned char *buf, size_t buflen,
+                                CFMutableArrayRef array)
+{
+    CFDataRef certdata = CFDataCreate(kCFAllocatorDefault, buf, buflen);
+    if(!certdata) {
+      failf(data, "SSL: failed to allocate array for CA certificate");
+      return CURLE_OUT_OF_MEMORY;
+    }
+
+    SecCertificateRef cacert =
+      SecCertificateCreateWithData(kCFAllocatorDefault, certdata);
+    CFRelease(certdata);
+    if(!cacert) {
+      failf(data, "SSL: failed to create SecCertificate from CA certificate");
+      return CURLE_SSL_CACERT;
+    }
+
+    /* Check if cacert is valid. */
+    CFStringRef subject = CopyCertSubject(cacert);
+    if(subject) {
+      char subject_cbuf[128];
+      memset(subject_cbuf, 0, 128);
+      if(!CFStringGetCString(subject,
+                            subject_cbuf,
+                            128,
+                            kCFStringEncodingUTF8)) {
+        CFRelease(cacert);
+        failf(data, "SSL: invalid CA certificate subject");
+        return CURLE_SSL_CACERT;
+      }
+      CFRelease(subject);
+    }
+    else {
+      CFRelease(cacert);
+      failf(data, "SSL: invalid CA certificate");
+      return CURLE_SSL_CACERT;
+    }
+
+    CFArrayAppendValue(array, cacert);
+    CFRelease(cacert);
+
+    return CURLE_OK;
+}
+
+static int verify_cert(const char *cafile, struct SessionHandle *data,
+                       SSLContextRef ctx)
+{
+  int n = 0, rc;
+  long res;
+  unsigned char *certbuf, *der;
+  size_t buflen, derlen, offset = 0;
+
+  if(read_cert(cafile, &certbuf, &buflen) < 0) {
+    failf(data, "SSL: failed to read or invalid CA certificate");
+    return CURLE_SSL_CACERT;
+  }
+
+  /*
+   * Certbuf now contains the contents of the certificate file, which can be
+   * - a single DER certificate,
+   * - a single PEM certificate or
+   * - a bunch of PEM certificates (certificate bundle).
+   *
+   * Go through certbuf, and convert any PEM certificate in it into DER
+   * format.
+   */
+  CFMutableArrayRef array = CFArrayCreateMutable(kCFAllocatorDefault, 0,
+                                                 &kCFTypeArrayCallBacks);
+  if(array == NULL) {
+    free(certbuf);
+    failf(data, "SSL: out of memory creating CA certificate array");
+    return CURLE_OUT_OF_MEMORY;
+  }
+
+  while(offset < buflen) {
+    n++;
+
+    /*
+     * Check if the certificate is in PEM format, and convert it to DER. If
+     * this fails, we assume the certificate is in DER format.
+     */
+    res = pem_to_der((const char *)certbuf + offset, &der, &derlen);
+    if(res < 0) {
+      free(certbuf);
+      CFRelease(array);
+      failf(data, "SSL: invalid CA certificate #%d (offset %d) in bundle",
+            n, offset);
+      return CURLE_SSL_CACERT;
+    }
+    offset += res;
+
+    if(res == 0 && offset == 0) {
+      /* This is not a PEM file, probably a certificate in DER format. */
+      rc = append_cert_to_array(data, certbuf, buflen, array);
+      free(certbuf);
+      if(rc != CURLE_OK) {
+        CFRelease(array);
+        return rc;
+      }
+      break;
+    }
+    else if(res == 0) {
+      /* No more certificates in the bundle. */
+      free(certbuf);
+      break;
+    }
+
+    rc = append_cert_to_array(data, der, derlen, array);
+    free(der);
+    if(rc != CURLE_OK) {
+      free(certbuf);
+      CFRelease(array);
+      return rc;
+    }
+  }
+
+  SecTrustRef trust;
+  OSStatus ret = SSLCopyPeerTrust(ctx, &trust);
+  if(trust == NULL) {
+    failf(data, "SSL: error getting certificate chain");
+    CFRelease(array);
+    return CURLE_OUT_OF_MEMORY;
+  }
+  else if(ret != noErr) {
+    CFRelease(array);
+    return sslerr_to_curlerr(data, ret);
+  }
+
+  ret = SecTrustSetAnchorCertificates(trust, array);
+  if(ret != noErr) {
+    CFRelease(trust);
+    return sslerr_to_curlerr(data, ret);
+  }
+  ret = SecTrustSetAnchorCertificatesOnly(trust, true);
+  if(ret != noErr) {
+    CFRelease(trust);
+    return sslerr_to_curlerr(data, ret);
+  }
+
+  SecTrustResultType trust_eval = 0;
+  ret = SecTrustEvaluate(trust, &trust_eval);
+  CFRelease(array);
+  CFRelease(trust);
+  if(ret != noErr) {
+    return sslerr_to_curlerr(data, ret);
+  }
+
+  switch (trust_eval) {
+    case kSecTrustResultUnspecified:
+    case kSecTrustResultProceed:
+      return CURLE_OK;
+
+    case kSecTrustResultRecoverableTrustFailure:
+    case kSecTrustResultDeny:
+    default:
+      failf(data, "SSL: certificate verification failed (result: %d)",
+            trust_eval);
+      return CURLE_PEER_FAILED_VERIFICATION;
+  }
+}
+
 static CURLcode
 darwinssl_connect_step2(struct connectdata *conn, int sockindex)
 {
 static CURLcode
 darwinssl_connect_step2(struct connectdata *conn, int sockindex)
 {
@@ -1260,6 +1836,12 @@ darwinssl_connect_step2(struct connectdata *conn, int sockindex)
       /* The below is errSSLServerAuthCompleted; it's not defined in
         Leopard's headers */
       case -9841:
       /* The below is errSSLServerAuthCompleted; it's not defined in
         Leopard's headers */
       case -9841:
+        if(data->set.str[STRING_SSL_CAFILE]) {
+          int res = verify_cert(data->set.str[STRING_SSL_CAFILE], data,
+                                connssl->ssl_ctx);
+          if(res != CURLE_OK)
+            return res;
+        }
         /* the documentation says we need to call SSLHandshake() again */
         return darwinssl_connect_step2(conn, sockindex);
 
         /* the documentation says we need to call SSLHandshake() again */
         return darwinssl_connect_step2(conn, sockindex);
 
@@ -1494,7 +2076,7 @@ darwinssl_connect_common(struct connectdata *conn,
                          bool nonblocking,
                          bool *done)
 {
                          bool nonblocking,
                          bool *done)
 {
-  CURLcode retcode;
+  CURLcode result;
   struct SessionHandle *data = conn->data;
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
   curl_socket_t sockfd = conn->sock[sockindex];
   struct SessionHandle *data = conn->data;
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
   curl_socket_t sockfd = conn->sock[sockindex];
@@ -1516,9 +2098,10 @@ darwinssl_connect_common(struct connectdata *conn,
       failf(data, "SSL connection timeout");
       return CURLE_OPERATION_TIMEDOUT;
     }
       failf(data, "SSL connection timeout");
       return CURLE_OPERATION_TIMEDOUT;
     }
-    retcode = darwinssl_connect_step1(conn, sockindex);
-    if(retcode)
-      return retcode;
+
+    result = darwinssl_connect_step1(conn, sockindex);
+    if(result)
+      return result;
   }
 
   while(ssl_connect_2 == connssl->connecting_state ||
   }
 
   while(ssl_connect_2 == connssl->connecting_state ||
@@ -1535,8 +2118,8 @@ darwinssl_connect_common(struct connectdata *conn,
     }
 
     /* if ssl is expecting something, check if it's available. */
     }
 
     /* if ssl is expecting something, check if it's available. */
-    if(connssl->connecting_state == ssl_connect_2_reading
-       || connssl->connecting_state == ssl_connect_2_writing) {
+    if(connssl->connecting_state == ssl_connect_2_reading ||
+       connssl->connecting_state == ssl_connect_2_writing) {
 
       curl_socket_t writefd = ssl_connect_2_writing ==
       connssl->connecting_state?sockfd:CURL_SOCKET_BAD;
 
       curl_socket_t writefd = ssl_connect_2_writing ==
       connssl->connecting_state?sockfd:CURL_SOCKET_BAD;
@@ -1569,23 +2152,23 @@ darwinssl_connect_common(struct connectdata *conn,
      * before step2 has completed while ensuring that a client using select()
      * or epoll() will always have a valid fdset to wait on.
      */
      * before step2 has completed while ensuring that a client using select()
      * or epoll() will always have a valid fdset to wait on.
      */
-    retcode = darwinssl_connect_step2(conn, sockindex);
-    if(retcode || (nonblocking &&
-                   (ssl_connect_2 == connssl->connecting_state ||
-                    ssl_connect_2_reading == connssl->connecting_state ||
-                    ssl_connect_2_writing == connssl->connecting_state)))
-      return retcode;
+    result = darwinssl_connect_step2(conn, sockindex);
+    if(result || (nonblocking &&
+                  (ssl_connect_2 == connssl->connecting_state ||
+                   ssl_connect_2_reading == connssl->connecting_state ||
+                   ssl_connect_2_writing == connssl->connecting_state)))
+      return result;
 
   } /* repeat step2 until all transactions are done. */
 
 
 
   } /* repeat step2 until all transactions are done. */
 
 
-  if(ssl_connect_3==connssl->connecting_state) {
-    retcode = darwinssl_connect_step3(conn, sockindex);
-    if(retcode)
-      return retcode;
+  if(ssl_connect_3 == connssl->connecting_state) {
+    result = darwinssl_connect_step3(conn, sockindex);
+    if(result)
+      return result;
   }
 
   }
 
-  if(ssl_connect_done==connssl->connecting_state) {
+  if(ssl_connect_done == connssl->connecting_state) {
     connssl->state = ssl_connection_complete;
     conn->recv[sockindex] = darwinssl_recv;
     conn->send[sockindex] = darwinssl_send;
     connssl->state = ssl_connection_complete;
     conn->recv[sockindex] = darwinssl_recv;
     conn->send[sockindex] = darwinssl_send;
@@ -1612,13 +2195,13 @@ CURLcode
 Curl_darwinssl_connect(struct connectdata *conn,
                        int sockindex)
 {
 Curl_darwinssl_connect(struct connectdata *conn,
                        int sockindex)
 {
-  CURLcode retcode;
+  CURLcode result;
   bool done = FALSE;
 
   bool done = FALSE;
 
-  retcode = darwinssl_connect_common(conn, sockindex, FALSE, &done);
+  result = darwinssl_connect_common(conn, sockindex, FALSE, &done);
 
 
-  if(retcode)
-    return retcode;
+  if(result)
+    return result;
 
   DEBUGASSERT(done);
 
 
   DEBUGASSERT(done);
 
@@ -1762,9 +2345,8 @@ bool Curl_darwinssl_data_pending(const struct connectdata *conn,
     return false;
 }
 
     return false;
 }
 
-void Curl_darwinssl_random(struct SessionHandle *data,
-                           unsigned char *entropy,
-                           size_t length)
+int Curl_darwinssl_random(unsigned char *entropy,
+                          size_t length)
 {
   /* arc4random_buf() isn't available on cats older than Lion, so let's
      do this manually for the benefit of the older cats. */
 {
   /* arc4random_buf() isn't available on cats older than Lion, so let's
      do this manually for the benefit of the older cats. */
@@ -1778,7 +2360,7 @@ void Curl_darwinssl_random(struct SessionHandle *data,
     random_number >>= 8;
   }
   i = random_number = 0;
     random_number >>= 8;
   }
   i = random_number = 0;
-  (void)data;
+  return 0;
 }
 
 void Curl_darwinssl_md5sum(unsigned char *tmp, /* input */
 }
 
 void Curl_darwinssl_md5sum(unsigned char *tmp, /* input */
similarity index 83%
rename from lib/curl_darwinssl.h
rename to lib/vtls/curl_darwinssl.h
index 432d3d7..7c80edf 100644 (file)
@@ -7,7 +7,8 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2012 - 2013, Nick Zitzmann, <nickzman@gmail.com>.
+ * Copyright (C) 2012 - 2014, Nick Zitzmann, <nickzman@gmail.com>.
+ * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -44,18 +45,13 @@ int Curl_darwinssl_check_cxn(struct connectdata *conn);
 bool Curl_darwinssl_data_pending(const struct connectdata *conn,
                                  int connindex);
 
 bool Curl_darwinssl_data_pending(const struct connectdata *conn,
                                  int connindex);
 
-void Curl_darwinssl_random(struct SessionHandle *data,
-                           unsigned char *entropy,
-                           size_t length);
+int Curl_darwinssl_random(unsigned char *entropy,
+                          size_t length);
 void Curl_darwinssl_md5sum(unsigned char *tmp, /* input */
                            size_t tmplen,
                            unsigned char *md5sum, /* output */
                            size_t md5len);
 
 void Curl_darwinssl_md5sum(unsigned char *tmp, /* input */
                            size_t tmplen,
                            unsigned char *md5sum, /* output */
                            size_t md5len);
 
-/* this backend provides these functions: */
-#define have_curlssl_random 1
-#define have_curlssl_md5sum 1
-
 /* API setup for SecureTransport */
 #define curlssl_init() (1)
 #define curlssl_cleanup() Curl_nop_stmt
 /* API setup for SecureTransport */
 #define curlssl_init() (1)
 #define curlssl_cleanup() Curl_nop_stmt
@@ -65,14 +61,15 @@ void Curl_darwinssl_md5sum(unsigned char *tmp, /* input */
 #define curlssl_close_all Curl_darwinssl_close_all
 #define curlssl_close Curl_darwinssl_close
 #define curlssl_shutdown(x,y) 0
 #define curlssl_close_all Curl_darwinssl_close_all
 #define curlssl_close Curl_darwinssl_close
 #define curlssl_shutdown(x,y) 0
-#define curlssl_set_engine(x,y) (x=x, y=y, CURLE_NOT_BUILT_IN)
-#define curlssl_set_engine_default(x) (x=x, CURLE_NOT_BUILT_IN)
-#define curlssl_engines_list(x) (x=x, (struct curl_slist *)NULL)
+#define curlssl_set_engine(x,y) ((void)x, (void)y, CURLE_NOT_BUILT_IN)
+#define curlssl_set_engine_default(x) ((void)x, CURLE_NOT_BUILT_IN)
+#define curlssl_engines_list(x) ((void)x, (struct curl_slist *)NULL)
 #define curlssl_version Curl_darwinssl_version
 #define curlssl_check_cxn Curl_darwinssl_check_cxn
 #define curlssl_data_pending(x,y) Curl_darwinssl_data_pending(x, y)
 #define curlssl_version Curl_darwinssl_version
 #define curlssl_check_cxn Curl_darwinssl_check_cxn
 #define curlssl_data_pending(x,y) Curl_darwinssl_data_pending(x, y)
-#define curlssl_random(x,y,z) Curl_darwinssl_random(x,y,z)
+#define curlssl_random(x,y,z) ((void)x, Curl_darwinssl_random(y,z))
 #define curlssl_md5sum(a,b,c,d) Curl_darwinssl_md5sum(a,b,c,d)
 #define curlssl_md5sum(a,b,c,d) Curl_darwinssl_md5sum(a,b,c,d)
+#define CURL_SSL_BACKEND CURLSSLBACKEND_DARWINSSL
 
 #endif /* USE_DARWINSSL */
 #endif /* HEADER_CURL_DARWINSSL_H */
 
 #endif /* USE_DARWINSSL */
 #endif /* HEADER_CURL_DARWINSSL_H */
similarity index 88%
rename from lib/curl_schannel.c
rename to lib/vtls/curl_schannel.c
index 68139db..b3fe526 100644 (file)
@@ -5,9 +5,9 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2012 - 2013, Marc Hoersken, <info@marc-hoersken.de>
+ * Copyright (C) 2012 - 2014, Marc Hoersken, <info@marc-hoersken.de>
  * Copyright (C) 2012, Mark Salisbury, <mark.salisbury@hp.com>
  * Copyright (C) 2012, Mark Salisbury, <mark.salisbury@hp.com>
- * Copyright (C) 2012 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -24,7 +24,7 @@
 
 /*
  * Source file for all SChannel-specific code for the TLS/SSL layer. No code
 
 /*
  * Source file for all SChannel-specific code for the TLS/SSL layer. No code
- * but sslgen.c should ever call or use these functions.
+ * but vtls.c should ever call or use these functions.
  *
  */
 
  *
  */
 
@@ -61,7 +61,7 @@
 
 #include "curl_sspi.h"
 #include "curl_schannel.h"
 
 #include "curl_sspi.h"
 #include "curl_schannel.h"
-#include "sslgen.h"
+#include "vtls.h"
 #include "sendf.h"
 #include "connect.h" /* for the connect timeout */
 #include "strerror.h"
 #include "sendf.h"
 #include "connect.h" /* for the connect timeout */
 #include "strerror.h"
@@ -127,7 +127,7 @@ schannel_connect_step1(struct connectdata *conn, int sockindex)
         conn->host.name, conn->remote_port);
 
   /* check for an existing re-usable credential handle */
         conn->host.name, conn->remote_port);
 
   /* check for an existing re-usable credential handle */
-  if(!Curl_ssl_getsessionid(conn, (void**)&old_cred, NULL)) {
+  if(!Curl_ssl_getsessionid(conn, (void **)&old_cred, NULL)) {
     connssl->cred = old_cred;
     infof(data, "schannel: re-using existing credential handle\n");
   }
     connssl->cred = old_cred;
     infof(data, "schannel: re-using existing credential handle\n");
   }
@@ -156,17 +156,6 @@ schannel_connect_step1(struct connectdata *conn, int sockindex)
       infof(data, "schannel: disable server certificate revocation checks\n");
     }
 
       infof(data, "schannel: disable server certificate revocation checks\n");
     }
 
-    if(Curl_inet_pton(AF_INET, conn->host.name, &addr)
-#ifdef ENABLE_IPV6
-       || Curl_inet_pton(AF_INET6, conn->host.name, &addr6)
-#endif
-      ) {
-      schannel_cred.dwFlags |= SCH_CRED_NO_SERVERNAME_CHECK;
-      infof(data, "schannel: using IP address, SNI is being disabled by "
-                  "disabling the servername check against the "
-                  "subject names in server certificates.\n");
-    }
-
     if(!data->set.ssl.verifyhost) {
       schannel_cred.dwFlags |= SCH_CRED_NO_SERVERNAME_CHECK;
       infof(data, "schannel: verifyhost setting prevents Schannel from "
     if(!data->set.ssl.verifyhost) {
       schannel_cred.dwFlags |= SCH_CRED_NO_SERVERNAME_CHECK;
       infof(data, "schannel: verifyhost setting prevents Schannel from "
@@ -175,11 +164,22 @@ schannel_connect_step1(struct connectdata *conn, int sockindex)
     }
 
     switch(data->set.ssl.version) {
     }
 
     switch(data->set.ssl.version) {
+      default:
+      case CURL_SSLVERSION_DEFAULT:
       case CURL_SSLVERSION_TLSv1:
         schannel_cred.grbitEnabledProtocols = SP_PROT_TLS1_0_CLIENT |
                                               SP_PROT_TLS1_1_CLIENT |
                                               SP_PROT_TLS1_2_CLIENT;
         break;
       case CURL_SSLVERSION_TLSv1:
         schannel_cred.grbitEnabledProtocols = SP_PROT_TLS1_0_CLIENT |
                                               SP_PROT_TLS1_1_CLIENT |
                                               SP_PROT_TLS1_2_CLIENT;
         break;
+      case CURL_SSLVERSION_TLSv1_0:
+        schannel_cred.grbitEnabledProtocols = SP_PROT_TLS1_0_CLIENT;
+        break;
+      case CURL_SSLVERSION_TLSv1_1:
+        schannel_cred.grbitEnabledProtocols = SP_PROT_TLS1_1_CLIENT;
+        break;
+      case CURL_SSLVERSION_TLSv1_2:
+        schannel_cred.grbitEnabledProtocols = SP_PROT_TLS1_2_CLIENT;
+        break;
       case CURL_SSLVERSION_SSLv3:
         schannel_cred.grbitEnabledProtocols = SP_PROT_SSL3_CLIENT;
         break;
       case CURL_SSLVERSION_SSLv3:
         schannel_cred.grbitEnabledProtocols = SP_PROT_SSL3_CLIENT;
         break;
@@ -189,7 +189,8 @@ schannel_connect_step1(struct connectdata *conn, int sockindex)
     }
 
     /* allocate memory for the re-usable credential handle */
     }
 
     /* allocate memory for the re-usable credential handle */
-    connssl->cred = malloc(sizeof(struct curl_schannel_cred));
+    connssl->cred = (struct curl_schannel_cred *)
+                     malloc(sizeof(struct curl_schannel_cred));
     if(!connssl->cred) {
       failf(data, "schannel: unable to allocate memory");
       return CURLE_OUT_OF_MEMORY;
     if(!connssl->cred) {
       failf(data, "schannel: unable to allocate memory");
       return CURLE_OUT_OF_MEMORY;
@@ -213,6 +214,15 @@ schannel_connect_step1(struct connectdata *conn, int sockindex)
     }
   }
 
     }
   }
 
+  /* Warn if SNI is disabled due to use of an IP address */
+  if(Curl_inet_pton(AF_INET, conn->host.name, &addr)
+#ifdef ENABLE_IPV6
+     || Curl_inet_pton(AF_INET6, conn->host.name, &addr6)
+#endif
+    ) {
+    infof(data, "schannel: using IP address, SNI is not supported by OS.\n");
+  }
+
   /* setup output buffer */
   InitSecBuffer(&outbuf, SECBUFFER_EMPTY, NULL, 0);
   InitSecBufferDesc(&outbuf_desc, &outbuf, 1);
   /* setup output buffer */
   InitSecBuffer(&outbuf, SECBUFFER_EMPTY, NULL, 0);
   InitSecBufferDesc(&outbuf_desc, &outbuf, 1);
@@ -223,7 +233,8 @@ schannel_connect_step1(struct connectdata *conn, int sockindex)
                        ISC_REQ_STREAM;
 
   /* allocate memory for the security context handle */
                        ISC_REQ_STREAM;
 
   /* allocate memory for the security context handle */
-  connssl->ctxt = malloc(sizeof(struct curl_schannel_ctxt));
+  connssl->ctxt = (struct curl_schannel_ctxt *)
+                   malloc(sizeof(struct curl_schannel_ctxt));
   if(!connssl->ctxt) {
     failf(data, "schannel: unable to allocate memory");
     return CURLE_OUT_OF_MEMORY;
   if(!connssl->ctxt) {
     failf(data, "schannel: unable to allocate memory");
     return CURLE_OUT_OF_MEMORY;
@@ -283,6 +294,8 @@ schannel_connect_step2(struct connectdata *conn, int sockindex)
   ssize_t nread = -1, written = -1;
   struct SessionHandle *data = conn->data;
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
   ssize_t nread = -1, written = -1;
   struct SessionHandle *data = conn->data;
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
+  unsigned char *reallocated_buffer;
+  size_t reallocated_length;
   SecBuffer outbuf[2];
   SecBufferDesc outbuf_desc;
   SecBuffer inbuf[2];
   SecBuffer outbuf[2];
   SecBufferDesc outbuf_desc;
   SecBuffer inbuf[2];
@@ -297,6 +310,9 @@ schannel_connect_step2(struct connectdata *conn, int sockindex)
   infof(data, "schannel: SSL/TLS connection with %s port %hu (step 2/3)\n",
         conn->host.name, conn->remote_port);
 
   infof(data, "schannel: SSL/TLS connection with %s port %hu (step 2/3)\n",
         conn->host.name, conn->remote_port);
 
+  if(!connssl->cred || !connssl->ctxt)
+    return CURLE_SSL_CONNECT_ERROR;
+
   /* buffer to store previously received and encrypted data */
   if(connssl->encdata_buffer == NULL) {
     connssl->encdata_offset = 0;
   /* buffer to store previously received and encrypted data */
   if(connssl->encdata_buffer == NULL) {
     connssl->encdata_offset = 0;
@@ -312,14 +328,19 @@ schannel_connect_step2(struct connectdata *conn, int sockindex)
   if(connssl->encdata_length - connssl->encdata_offset <
      CURL_SCHANNEL_BUFFER_FREE_SIZE) {
     /* increase internal encrypted data buffer */
   if(connssl->encdata_length - connssl->encdata_offset <
      CURL_SCHANNEL_BUFFER_FREE_SIZE) {
     /* increase internal encrypted data buffer */
-    connssl->encdata_length *= CURL_SCHANNEL_BUFFER_STEP_FACTOR;
-    connssl->encdata_buffer = realloc(connssl->encdata_buffer,
-                                      connssl->encdata_length);
+    reallocated_length = connssl->encdata_offset +
+                         CURL_SCHANNEL_BUFFER_FREE_SIZE;
+    reallocated_buffer = realloc(connssl->encdata_buffer,
+                                 reallocated_length);
 
 
-    if(connssl->encdata_buffer == NULL) {
+    if(reallocated_buffer == NULL) {
       failf(data, "schannel: unable to re-allocate memory");
       return CURLE_OUT_OF_MEMORY;
     }
       failf(data, "schannel: unable to re-allocate memory");
       return CURLE_OUT_OF_MEMORY;
     }
+    else {
+      connssl->encdata_buffer = reallocated_buffer;
+      connssl->encdata_length = reallocated_length;
+    }
   }
 
   for(;;) {
   }
 
   for(;;) {
@@ -484,17 +505,20 @@ schannel_connect_step2(struct connectdata *conn, int sockindex)
 static CURLcode
 schannel_connect_step3(struct connectdata *conn, int sockindex)
 {
 static CURLcode
 schannel_connect_step3(struct connectdata *conn, int sockindex)
 {
-  CURLcode retcode = CURLE_OK;
+  CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
   struct curl_schannel_cred *old_cred = NULL;
   struct SessionHandle *data = conn->data;
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
   struct curl_schannel_cred *old_cred = NULL;
-  int incache;
+  bool incache;
 
   DEBUGASSERT(ssl_connect_3 == connssl->connecting_state);
 
   infof(data, "schannel: SSL/TLS connection with %s port %hu (step 3/3)\n",
         conn->host.name, conn->remote_port);
 
 
   DEBUGASSERT(ssl_connect_3 == connssl->connecting_state);
 
   infof(data, "schannel: SSL/TLS connection with %s port %hu (step 3/3)\n",
         conn->host.name, conn->remote_port);
 
+  if(!connssl->cred)
+    return CURLE_SSL_CONNECT_ERROR;
+
   /* check if the required context attributes are met */
   if(connssl->ret_flags != connssl->req_flags) {
     if(!(connssl->ret_flags & ISC_RET_SEQUENCE_DETECT))
   /* check if the required context attributes are met */
   if(connssl->ret_flags != connssl->req_flags) {
     if(!(connssl->ret_flags & ISC_RET_SEQUENCE_DETECT))
@@ -518,20 +542,21 @@ schannel_connect_step3(struct connectdata *conn, int sockindex)
   }
 
   /* save the current session data for possible re-use */
   }
 
   /* save the current session data for possible re-use */
-  incache = !(Curl_ssl_getsessionid(conn, (void**)&old_cred, NULL));
+  incache = !(Curl_ssl_getsessionid(conn, (void **)&old_cred, NULL));
   if(incache) {
     if(old_cred != connssl->cred) {
       infof(data, "schannel: old credential handle is stale, removing\n");
   if(incache) {
     if(old_cred != connssl->cred) {
       infof(data, "schannel: old credential handle is stale, removing\n");
-      Curl_ssl_delsessionid(conn, (void*)old_cred);
+      Curl_ssl_delsessionid(conn, (void *)old_cred);
       incache = FALSE;
     }
   }
       incache = FALSE;
     }
   }
+
   if(!incache) {
   if(!incache) {
-    retcode = Curl_ssl_addsessionid(conn, (void*)connssl->cred,
-                                    sizeof(struct curl_schannel_cred));
-    if(retcode) {
+    result = Curl_ssl_addsessionid(conn, (void *)connssl->cred,
+                                   sizeof(struct curl_schannel_cred));
+    if(result) {
       failf(data, "schannel: failed to store credential handle");
       failf(data, "schannel: failed to store credential handle");
-      return retcode;
+      return result;
     }
     else {
       connssl->cred->cached = TRUE;
     }
     else {
       connssl->cred->cached = TRUE;
@@ -548,7 +573,7 @@ static CURLcode
 schannel_connect_common(struct connectdata *conn, int sockindex,
                         bool nonblocking, bool *done)
 {
 schannel_connect_common(struct connectdata *conn, int sockindex,
                         bool nonblocking, bool *done)
 {
-  CURLcode retcode;
+  CURLcode result;
   struct SessionHandle *data = conn->data;
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
   curl_socket_t sockfd = conn->sock[sockindex];
   struct SessionHandle *data = conn->data;
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
   curl_socket_t sockfd = conn->sock[sockindex];
@@ -571,9 +596,9 @@ schannel_connect_common(struct connectdata *conn, int sockindex,
       return CURLE_OPERATION_TIMEDOUT;
     }
 
       return CURLE_OPERATION_TIMEDOUT;
     }
 
-    retcode = schannel_connect_step1(conn, sockindex);
-    if(retcode)
-      return retcode;
+    result = schannel_connect_step1(conn, sockindex);
+    if(result)
+      return result;
   }
 
   while(ssl_connect_2 == connssl->connecting_state ||
   }
 
   while(ssl_connect_2 == connssl->connecting_state ||
@@ -625,19 +650,19 @@ schannel_connect_common(struct connectdata *conn, int sockindex,
      * ensuring that a client using select() or epoll() will always
      * have a valid fdset to wait on.
      */
      * ensuring that a client using select() or epoll() will always
      * have a valid fdset to wait on.
      */
-    retcode = schannel_connect_step2(conn, sockindex);
-    if(retcode || (nonblocking &&
-                   (ssl_connect_2 == connssl->connecting_state ||
-                    ssl_connect_2_reading == connssl->connecting_state ||
-                    ssl_connect_2_writing == connssl->connecting_state)))
-      return retcode;
+    result = schannel_connect_step2(conn, sockindex);
+    if(result || (nonblocking &&
+                  (ssl_connect_2 == connssl->connecting_state ||
+                   ssl_connect_2_reading == connssl->connecting_state ||
+                   ssl_connect_2_writing == connssl->connecting_state)))
+      return result;
 
   } /* repeat step2 until all transactions are done. */
 
   if(ssl_connect_3 == connssl->connecting_state) {
 
   } /* repeat step2 until all transactions are done. */
 
   if(ssl_connect_3 == connssl->connecting_state) {
-    retcode = schannel_connect_step3(conn, sockindex);
-    if(retcode)
-      return retcode;
+    result = schannel_connect_step3(conn, sockindex);
+    if(result)
+      return result;
   }
 
   if(ssl_connect_done == connssl->connecting_state) {
   }
 
   if(ssl_connect_done == connssl->connecting_state) {
@@ -689,7 +714,7 @@ schannel_send(struct connectdata *conn, int sockindex,
   /* calculate the complete message length and allocate a buffer for it */
   data_len = connssl->stream_sizes.cbHeader + len +
               connssl->stream_sizes.cbTrailer;
   /* calculate the complete message length and allocate a buffer for it */
   data_len = connssl->stream_sizes.cbHeader + len +
               connssl->stream_sizes.cbTrailer;
-  data = (unsigned char*) malloc(data_len);
+  data = (unsigned char *) malloc(data_len);
   if(data == NULL) {
     *err = CURLE_OUT_OF_MEMORY;
     return -1;
   if(data == NULL) {
     *err = CURLE_OUT_OF_MEMORY;
     return -1;
@@ -744,7 +769,7 @@ schannel_send(struct connectdata *conn, int sockindex,
 
       this_write = 0;
 
 
       this_write = 0;
 
-      timeleft = Curl_timeleft(conn->data, NULL, TRUE);
+      timeleft = Curl_timeleft(conn->data, NULL, FALSE);
       if(timeleft < 0) {
         /* we already got the timeout */
         failf(conn->data, "schannel: timed out sending data "
       if(timeleft < 0) {
         /* we already got the timeout */
         failf(conn->data, "schannel: timed out sending data "
@@ -808,9 +833,11 @@ schannel_recv(struct connectdata *conn, int sockindex,
 {
   size_t size = 0;
   ssize_t nread = 0, ret = -1;
 {
   size_t size = 0;
   ssize_t nread = 0, ret = -1;
-  CURLcode retcode;
+  CURLcode result;
   struct SessionHandle *data = conn->data;
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
   struct SessionHandle *data = conn->data;
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
+  unsigned char *reallocated_buffer;
+  size_t reallocated_length;
   bool done = FALSE;
   SecBuffer inbuf[4];
   SecBufferDesc inbuf_desc;
   bool done = FALSE;
   SecBuffer inbuf[4];
   SecBufferDesc inbuf_desc;
@@ -832,18 +859,27 @@ schannel_recv(struct connectdata *conn, int sockindex,
   }
 
   /* increase buffer in order to fit the requested amount of data */
   }
 
   /* increase buffer in order to fit the requested amount of data */
-  while(connssl->encdata_length - connssl->encdata_offset <
-        CURL_SCHANNEL_BUFFER_FREE_SIZE || connssl->encdata_length < len) {
+  if(connssl->encdata_length - connssl->encdata_offset <
+     CURL_SCHANNEL_BUFFER_FREE_SIZE || connssl->encdata_length < len) {
     /* increase internal encrypted data buffer */
     /* increase internal encrypted data buffer */
-    connssl->encdata_length *= CURL_SCHANNEL_BUFFER_STEP_FACTOR;
-    connssl->encdata_buffer = realloc(connssl->encdata_buffer,
-                                      connssl->encdata_length);
+    reallocated_length = connssl->encdata_offset +
+                         CURL_SCHANNEL_BUFFER_FREE_SIZE;
+    /* make sure that the requested amount of data fits */
+    if(reallocated_length < len) {
+      reallocated_length = len;
+    }
+    reallocated_buffer = realloc(connssl->encdata_buffer,
+                                 reallocated_length);
 
 
-    if(connssl->encdata_buffer == NULL) {
+    if(reallocated_buffer == NULL) {
       failf(data, "schannel: unable to re-allocate memory");
       *err = CURLE_OUT_OF_MEMORY;
       return -1;
     }
       failf(data, "schannel: unable to re-allocate memory");
       *err = CURLE_OUT_OF_MEMORY;
       return -1;
     }
+    else {
+      connssl->encdata_buffer = reallocated_buffer;
+      connssl->encdata_length = reallocated_length;
+    }
   }
 
   /* read encrypted data from socket */
   }
 
   /* read encrypted data from socket */
@@ -895,10 +931,11 @@ schannel_recv(struct connectdata *conn, int sockindex,
     }
 
     /* check if everything went fine (server may want to renegotiate
     }
 
     /* check if everything went fine (server may want to renegotiate
-       context) */
+       or shutdown the connection context) */
     if(sspi_status == SEC_E_OK || sspi_status == SEC_I_RENEGOTIATE ||
                                   sspi_status == SEC_I_CONTEXT_EXPIRED) {
     if(sspi_status == SEC_E_OK || sspi_status == SEC_I_RENEGOTIATE ||
                                   sspi_status == SEC_I_CONTEXT_EXPIRED) {
-      /* check for successfully decrypted data */
+      /* check for successfully decrypted data, even before actual
+         renegotiation or shutdown of the connection context */
       if(inbuf[1].BufferType == SECBUFFER_DATA) {
         infof(data, "schannel: decrypted data length: %lu\n",
               inbuf[1].cbBuffer);
       if(inbuf[1].BufferType == SECBUFFER_DATA) {
         infof(data, "schannel: decrypted data length: %lu\n",
               inbuf[1].cbBuffer);
@@ -906,18 +943,26 @@ schannel_recv(struct connectdata *conn, int sockindex,
         /* increase buffer in order to fit the received amount of data */
         size = inbuf[1].cbBuffer > CURL_SCHANNEL_BUFFER_FREE_SIZE ?
                inbuf[1].cbBuffer : CURL_SCHANNEL_BUFFER_FREE_SIZE;
         /* increase buffer in order to fit the received amount of data */
         size = inbuf[1].cbBuffer > CURL_SCHANNEL_BUFFER_FREE_SIZE ?
                inbuf[1].cbBuffer : CURL_SCHANNEL_BUFFER_FREE_SIZE;
-        while(connssl->decdata_length - connssl->decdata_offset < size ||
-              connssl->decdata_length < len) {
+        if(connssl->decdata_length - connssl->decdata_offset < size ||
+           connssl->decdata_length < len) {
           /* increase internal decrypted data buffer */
           /* increase internal decrypted data buffer */
-          connssl->decdata_length *= CURL_SCHANNEL_BUFFER_STEP_FACTOR;
-          connssl->decdata_buffer = realloc(connssl->decdata_buffer,
-                                            connssl->decdata_length);
+          reallocated_length = connssl->decdata_offset + size;
+          /* make sure that the requested amount of data fits */
+          if(reallocated_length < len) {
+            reallocated_length = len;
+          }
+          reallocated_buffer = realloc(connssl->decdata_buffer,
+                                       reallocated_length);
 
 
-          if(connssl->decdata_buffer == NULL) {
+          if(reallocated_buffer == NULL) {
             failf(data, "schannel: unable to re-allocate memory");
             *err = CURLE_OUT_OF_MEMORY;
             return -1;
           }
             failf(data, "schannel: unable to re-allocate memory");
             *err = CURLE_OUT_OF_MEMORY;
             return -1;
           }
+          else {
+            connssl->decdata_buffer = reallocated_buffer;
+            connssl->decdata_length = reallocated_length;
+          }
         }
 
         /* copy decrypted data to internal buffer */
         }
 
         /* copy decrypted data to internal buffer */
@@ -967,9 +1012,9 @@ schannel_recv(struct connectdata *conn, int sockindex,
       infof(data, "schannel: renegotiating SSL/TLS connection\n");
       connssl->state = ssl_connection_negotiating;
       connssl->connecting_state = ssl_connect_2_writing;
       infof(data, "schannel: renegotiating SSL/TLS connection\n");
       connssl->state = ssl_connection_negotiating;
       connssl->connecting_state = ssl_connect_2_writing;
-      retcode = schannel_connect_common(conn, sockindex, FALSE, &done);
-      if(retcode)
-        *err = retcode;
+      result = schannel_connect_common(conn, sockindex, FALSE, &done);
+      if(result)
+        *err = result;
       else {
         infof(data, "schannel: SSL/TLS connection renegotiated\n");
         /* now retry receiving data */
       else {
         infof(data, "schannel: SSL/TLS connection renegotiated\n");
         /* now retry receiving data */
@@ -996,6 +1041,8 @@ schannel_recv(struct connectdata *conn, int sockindex,
     infof(data, "schannel: decrypted data buffer: offset %zu length %zu\n",
           connssl->decdata_offset, connssl->decdata_length);
   }
     infof(data, "schannel: decrypted data buffer: offset %zu length %zu\n",
           connssl->decdata_offset, connssl->decdata_length);
   }
+  else
+    ret = 0;
 
   /* check if the server closed the connection */
   if(ret <= 0 && ( /* special check for Windows 2000 Professional */
 
   /* check if the server closed the connection */
   if(ret <= 0 && ( /* special check for Windows 2000 Professional */
@@ -1027,12 +1074,12 @@ Curl_schannel_connect_nonblocking(struct connectdata *conn, int sockindex,
 CURLcode
 Curl_schannel_connect(struct connectdata *conn, int sockindex)
 {
 CURLcode
 Curl_schannel_connect(struct connectdata *conn, int sockindex)
 {
-  CURLcode retcode;
+  CURLcode result;
   bool done = FALSE;
 
   bool done = FALSE;
 
-  retcode = schannel_connect_common(conn, sockindex, FALSE, &done);
-  if(retcode)
-    return retcode;
+  result = schannel_connect_common(conn, sockindex, FALSE, &done);
+  if(result)
+    return result;
 
   DEBUGASSERT(done);
 
 
   DEBUGASSERT(done);
 
@@ -1124,29 +1171,29 @@ int Curl_schannel_shutdown(struct connectdata *conn, int sockindex)
               " (bytes written: %zd)\n", curl_easy_strerror(code), written);
       }
     }
               " (bytes written: %zd)\n", curl_easy_strerror(code), written);
       }
     }
+  }
 
 
-    /* free SSPI Schannel API security context handle */
-    if(connssl->ctxt) {
-      infof(data, "schannel: clear security context handle\n");
-      s_pSecFn->DeleteSecurityContext(&connssl->ctxt->ctxt_handle);
-      Curl_safefree(connssl->ctxt);
-    }
+  /* free SSPI Schannel API security context handle */
+  if(connssl->ctxt) {
+    infof(data, "schannel: clear security context handle\n");
+    s_pSecFn->DeleteSecurityContext(&connssl->ctxt->ctxt_handle);
+    Curl_safefree(connssl->ctxt);
+  }
 
 
-    /* free SSPI Schannel API credential handle */
-    if(connssl->cred) {
-      /* decrement the reference counter of the credential/session handle */
-      if(connssl->cred->refcount > 0) {
-        connssl->cred->refcount--;
-        infof(data, "schannel: decremented credential handle refcount = %d\n",
-              connssl->cred->refcount);
-      }
+  /* free SSPI Schannel API credential handle */
+  if(connssl->cred) {
+    /* decrement the reference counter of the credential/session handle */
+    if(connssl->cred->refcount > 0) {
+      connssl->cred->refcount--;
+      infof(data, "schannel: decremented credential handle refcount = %d\n",
+            connssl->cred->refcount);
+    }
 
 
-      /* if the handle was not cached and the refcount is zero */
-      if(!connssl->cred->cached && connssl->cred->refcount == 0) {
-        infof(data, "schannel: clear credential handle\n");
-        s_pSecFn->FreeCredentialsHandle(&connssl->cred->cred_handle);
-        Curl_safefree(connssl->cred);
-      }
+    /* if the handle was not cached and the refcount is zero */
+    if(!connssl->cred->cached && connssl->cred->refcount == 0) {
+      infof(data, "schannel: clear credential handle\n");
+      s_pSecFn->FreeCredentialsHandle(&connssl->cred->cred_handle);
+      Curl_safefree(connssl->cred);
     }
   }
 
     }
   }
 
@@ -1194,6 +1241,23 @@ size_t Curl_schannel_version(char *buffer, size_t size)
   return size;
 }
 
   return size;
 }
 
+int Curl_schannel_random(unsigned char *entropy, size_t length)
+{
+  HCRYPTPROV hCryptProv = 0;
+
+  if(!CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL,
+                          CRYPT_VERIFYCONTEXT | CRYPT_SILENT))
+    return 1;
+
+  if(!CryptGenRandom(hCryptProv, (DWORD)length, entropy)) {
+    CryptReleaseContext(hCryptProv, 0UL);
+    return 1;
+  }
+
+  CryptReleaseContext(hCryptProv, 0UL);
+  return 0;
+}
+
 #ifdef _WIN32_WCE
 static CURLcode verify_certificate(struct connectdata *conn, int sockindex)
 {
 #ifdef _WIN32_WCE
 static CURLcode verify_certificate(struct connectdata *conn, int sockindex)
 {
similarity index 80%
rename from lib/curl_schannel.h
rename to lib/vtls/curl_schannel.h
index b82c734..11e83f9 100644 (file)
@@ -8,7 +8,7 @@
  *                             \___|\___/|_| \_\_____|
  *
  * Copyright (C) 2012, Marc Hoersken, <info@marc-hoersken.de>, et al.
  *                             \___|\___/|_| \_\_____|
  *
  * Copyright (C) 2012, Marc Hoersken, <info@marc-hoersken.de>, et al.
- * Copyright (C) 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #define SECBUFFER_ALERT                 17
 #endif
 
 #define SECBUFFER_ALERT                 17
 #endif
 
-#ifndef ISC_RET_REPLAY_DETECT
-#define ISC_RET_REPLAY_DETECT           0x00000004
-#endif
-
-#ifndef ISC_RET_SEQUENCE_DETECT
-#define ISC_RET_SEQUENCE_DETECT         0x00000008
-#endif
-
-#ifndef ISC_RET_CONFIDENTIALITY
-#define ISC_RET_CONFIDENTIALITY         0x00000010
-#endif
-
-#ifndef ISC_RET_ALLOCATED_MEMORY
-#define ISC_RET_ALLOCATED_MEMORY        0x00000100
-#endif
-
-#ifndef ISC_RET_STREAM
-#define ISC_RET_STREAM                  0x00008000
-#endif
-
-
 #define CURL_SCHANNEL_BUFFER_INIT_SIZE   4096
 #define CURL_SCHANNEL_BUFFER_FREE_SIZE   1024
 #define CURL_SCHANNEL_BUFFER_INIT_SIZE   4096
 #define CURL_SCHANNEL_BUFFER_FREE_SIZE   1024
-#define CURL_SCHANNEL_BUFFER_STEP_FACTOR 2
 
 
 CURLcode Curl_schannel_connect(struct connectdata *conn, int sockindex);
 
 
 CURLcode Curl_schannel_connect(struct connectdata *conn, int sockindex);
@@ -113,20 +91,25 @@ int Curl_schannel_init(void);
 void Curl_schannel_cleanup(void);
 size_t Curl_schannel_version(char *buffer, size_t size);
 
 void Curl_schannel_cleanup(void);
 size_t Curl_schannel_version(char *buffer, size_t size);
 
+int Curl_schannel_random(unsigned char *entropy, size_t length);
+
 /* API setup for Schannel */
 #define curlssl_init Curl_schannel_init
 #define curlssl_cleanup Curl_schannel_cleanup
 #define curlssl_connect Curl_schannel_connect
 #define curlssl_connect_nonblocking Curl_schannel_connect_nonblocking
 #define curlssl_session_free Curl_schannel_session_free
 /* API setup for Schannel */
 #define curlssl_init Curl_schannel_init
 #define curlssl_cleanup Curl_schannel_cleanup
 #define curlssl_connect Curl_schannel_connect
 #define curlssl_connect_nonblocking Curl_schannel_connect_nonblocking
 #define curlssl_session_free Curl_schannel_session_free
-#define curlssl_close_all(x) (x=x, CURLE_NOT_BUILT_IN)
+#define curlssl_close_all(x) ((void)x)
 #define curlssl_close Curl_schannel_close
 #define curlssl_shutdown Curl_schannel_shutdown
 #define curlssl_close Curl_schannel_close
 #define curlssl_shutdown Curl_schannel_shutdown
-#define curlssl_set_engine(x,y) (x=x, y=y, CURLE_NOT_BUILT_IN)
-#define curlssl_set_engine_default(x) (x=x, CURLE_NOT_BUILT_IN)
-#define curlssl_engines_list(x) (x=x, (struct curl_slist *)NULL)
+#define curlssl_set_engine(x,y) ((void)x, (void)y, CURLE_NOT_BUILT_IN)
+#define curlssl_set_engine_default(x) ((void)x, CURLE_NOT_BUILT_IN)
+#define curlssl_engines_list(x) ((void)x, (struct curl_slist *)NULL)
 #define curlssl_version Curl_schannel_version
 #define curlssl_version Curl_schannel_version
-#define curlssl_check_cxn(x) (x=x, -1)
+#define curlssl_check_cxn(x) ((void)x, -1)
 #define curlssl_data_pending Curl_schannel_data_pending
 #define curlssl_data_pending Curl_schannel_data_pending
+#define CURL_SSL_BACKEND CURLSSLBACKEND_SCHANNEL
+#define curlssl_random(x,y,z) ((void)x, Curl_schannel_random(y,z))
+
 #endif /* USE_SCHANNEL */
 #endif /* HEADER_CURL_SCHANNEL_H */
 #endif /* USE_SCHANNEL */
 #endif /* HEADER_CURL_SCHANNEL_H */
similarity index 87%
rename from lib/cyassl.c
rename to lib/vtls/cyassl.c
index 7c78464..3333fc3 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -22,7 +22,7 @@
 
 /*
  * Source file for all CyaSSL-specific code for the TLS/SSL layer. No code
 
 /*
  * Source file for all CyaSSL-specific code for the TLS/SSL layer. No code
- * but sslgen.c should ever call or use these functions.
+ * but vtls.c should ever call or use these functions.
  *
  */
 
  *
  */
 
@@ -38,7 +38,7 @@
 #include "sendf.h"
 #include "inet_pton.h"
 #include "cyassl.h"
 #include "sendf.h"
 #include "inet_pton.h"
 #include "cyassl.h"
-#include "sslgen.h"
+#include "vtls.h"
 #include "parsedate.h"
 #include "connect.h" /* for the connect timeout */
 #include "select.h"
 #include "parsedate.h"
 #include "connect.h" /* for the connect timeout */
 #include "select.h"
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
 #include "curl_memory.h"
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
 #include "curl_memory.h"
-/* The last #include file should be: */
-#include "memdebug.h"
+
 #include <cyassl/ssl.h>
 #include <cyassl/ssl.h>
+#ifdef HAVE_CYASSL_ERROR_SSL_H
+#include <cyassl/error-ssl.h>
+#else
 #include <cyassl/error.h>
 #include <cyassl/error.h>
+#endif
+#include <cyassl/ctaocrypt/random.h>
 
 
+/* The last #include file should be: */
+#include "memdebug.h"
 
 static Curl_recv cyassl_recv;
 static Curl_send cyassl_send;
 
 static Curl_recv cyassl_recv;
 static Curl_send cyassl_send;
@@ -93,18 +99,25 @@ cyassl_connect_step1(struct connectdata *conn,
 
   /* check to see if we've been told to use an explicit SSL/TLS version */
   switch(data->set.ssl.version) {
 
   /* check to see if we've been told to use an explicit SSL/TLS version */
   switch(data->set.ssl.version) {
+  default:
   case CURL_SSLVERSION_DEFAULT:
   case CURL_SSLVERSION_DEFAULT:
-    /* we try to figure out version */
-    req_method = SSLv23_client_method();
-    break;
   case CURL_SSLVERSION_TLSv1:
   case CURL_SSLVERSION_TLSv1:
+    infof(data, "CyaSSL cannot be configured to use TLS 1.0-1.2, "
+          "TLS 1.0 is used exclusively\n");
+    req_method = TLSv1_client_method();
+    break;
+  case CURL_SSLVERSION_TLSv1_0:
     req_method = TLSv1_client_method();
     break;
     req_method = TLSv1_client_method();
     break;
+  case CURL_SSLVERSION_TLSv1_1:
+    req_method = TLSv1_1_client_method();
+    break;
+  case CURL_SSLVERSION_TLSv1_2:
+    req_method = TLSv1_2_client_method();
+    break;
   case CURL_SSLVERSION_SSLv3:
     req_method = SSLv3_client_method();
     break;
   case CURL_SSLVERSION_SSLv3:
     req_method = SSLv3_client_method();
     break;
-  default:
-    req_method = TLSv1_client_method();
   }
 
   if(!req_method) {
   }
 
   if(!req_method) {
@@ -128,7 +141,7 @@ cyassl_connect_step1(struct connectdata *conn,
                                       data->set.str[STRING_SSL_CAFILE],
                                       data->set.str[STRING_SSL_CAPATH])) {
       if(data->set.ssl.verifypeer) {
                                       data->set.str[STRING_SSL_CAFILE],
                                       data->set.str[STRING_SSL_CAPATH])) {
       if(data->set.ssl.verifypeer) {
-        /* Fail if we insiste on successfully verifying the server. */
+        /* Fail if we insist on successfully verifying the server. */
         failf(data,"error setting certificate verify locations:\n"
               "  CAfile: %s\n  CApath: %s",
               data->set.str[STRING_SSL_CAFILE]?
         failf(data,"error setting certificate verify locations:\n"
               "  CAfile: %s\n  CApath: %s",
               data->set.str[STRING_SSL_CAFILE]?
@@ -138,7 +151,7 @@ cyassl_connect_step1(struct connectdata *conn,
         return CURLE_SSL_CACERT_BADFILE;
       }
       else {
         return CURLE_SSL_CACERT_BADFILE;
       }
       else {
-        /* Just continue with a warning if no strict  certificate
+        /* Just continue with a warning if no strict certificate
            verification is required. */
         infof(data, "error setting certificate verify locations,"
               " continuing anyway:\n");
            verification is required. */
         infof(data, "error setting certificate verify locations,"
               " continuing anyway:\n");
@@ -283,6 +296,20 @@ cyassl_connect_step2(struct connectdata *conn,
       }
 #endif
     }
       }
 #endif
     }
+#if LIBCYASSL_VERSION_HEX >= 0x02007000 /* 2.7.0 */
+    else if(ASN_NO_SIGNER_E == detail) {
+      if(data->set.ssl.verifypeer) {
+        failf(data, "\tCA signer not available for verification\n");
+        return CURLE_SSL_CACERT_BADFILE;
+      }
+      else {
+        /* Just continue with a warning if no strict certificate
+           verification is required. */
+        infof(data, "CA signer not available for verification, "
+                    "continuing anyway\n");
+      }
+    }
+#endif
     else {
       failf(data, "SSL_connect failed with error %d: %s", detail,
           ERR_error_string(detail, error_buffer));
     else {
       failf(data, "SSL_connect failed with error %d: %s", detail,
           ERR_error_string(detail, error_buffer));
@@ -301,11 +328,11 @@ static CURLcode
 cyassl_connect_step3(struct connectdata *conn,
                      int sockindex)
 {
 cyassl_connect_step3(struct connectdata *conn,
                      int sockindex)
 {
-  CURLcode retcode = CURLE_OK;
+  CURLcode result = CURLE_OK;
   void *old_ssl_sessionid=NULL;
   struct SessionHandle *data = conn->data;
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
   void *old_ssl_sessionid=NULL;
   struct SessionHandle *data = conn->data;
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
-  int incache;
+  bool incache;
   SSL_SESSION *our_ssl_sessionid;
 
   DEBUGASSERT(ssl_connect_3 == connssl->connecting_state);
   SSL_SESSION *our_ssl_sessionid;
 
   DEBUGASSERT(ssl_connect_3 == connssl->connecting_state);
@@ -320,18 +347,19 @@ cyassl_connect_step3(struct connectdata *conn,
       incache = FALSE;
     }
   }
       incache = FALSE;
     }
   }
+
   if(!incache) {
   if(!incache) {
-    retcode = Curl_ssl_addsessionid(conn, our_ssl_sessionid,
-                                    0 /* unknown size */);
-    if(retcode) {
+    result = Curl_ssl_addsessionid(conn, our_ssl_sessionid,
+                                   0 /* unknown size */);
+    if(result) {
       failf(data, "failed to store ssl session");
       failf(data, "failed to store ssl session");
-      return retcode;
+      return result;
     }
   }
 
   connssl->connecting_state = ssl_connect_done;
 
     }
   }
 
   connssl->connecting_state = ssl_connect_done;
 
-  return retcode;
+  return result;
 }
 
 
 }
 
 
@@ -476,7 +504,7 @@ cyassl_connect_common(struct connectdata *conn,
                       bool nonblocking,
                       bool *done)
 {
                       bool nonblocking,
                       bool *done)
 {
-  CURLcode retcode;
+  CURLcode result;
   struct SessionHandle *data = conn->data;
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
   curl_socket_t sockfd = conn->sock[sockindex];
   struct SessionHandle *data = conn->data;
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
   curl_socket_t sockfd = conn->sock[sockindex];
@@ -498,9 +526,10 @@ cyassl_connect_common(struct connectdata *conn,
       failf(data, "SSL connection timeout");
       return CURLE_OPERATION_TIMEDOUT;
     }
       failf(data, "SSL connection timeout");
       return CURLE_OPERATION_TIMEDOUT;
     }
-    retcode = cyassl_connect_step1(conn, sockindex);
-    if(retcode)
-      return retcode;
+
+    result = cyassl_connect_step1(conn, sockindex);
+    if(result)
+      return result;
   }
 
   while(ssl_connect_2 == connssl->connecting_state ||
   }
 
   while(ssl_connect_2 == connssl->connecting_state ||
@@ -552,22 +581,21 @@ cyassl_connect_common(struct connectdata *conn,
      * ensuring that a client using select() or epoll() will always
      * have a valid fdset to wait on.
      */
      * ensuring that a client using select() or epoll() will always
      * have a valid fdset to wait on.
      */
-    retcode = cyassl_connect_step2(conn, sockindex);
-    if(retcode || (nonblocking &&
-                   (ssl_connect_2 == connssl->connecting_state ||
-                    ssl_connect_2_reading == connssl->connecting_state ||
-                    ssl_connect_2_writing == connssl->connecting_state)))
-      return retcode;
-
+    result = cyassl_connect_step2(conn, sockindex);
+    if(result || (nonblocking &&
+                  (ssl_connect_2 == connssl->connecting_state ||
+                   ssl_connect_2_reading == connssl->connecting_state ||
+                   ssl_connect_2_writing == connssl->connecting_state)))
+      return result;
   } /* repeat step2 until all transactions are done. */
 
   } /* repeat step2 until all transactions are done. */
 
-  if(ssl_connect_3==connssl->connecting_state) {
-    retcode = cyassl_connect_step3(conn, sockindex);
-    if(retcode)
-      return retcode;
+  if(ssl_connect_3 == connssl->connecting_state) {
+    result = cyassl_connect_step3(conn, sockindex);
+    if(result)
+      return result;
   }
 
   }
 
-  if(ssl_connect_done==connssl->connecting_state) {
+  if(ssl_connect_done == connssl->connecting_state) {
     connssl->state = ssl_connection_complete;
     conn->recv[sockindex] = cyassl_recv;
     conn->send[sockindex] = cyassl_send;
     connssl->state = ssl_connection_complete;
     conn->recv[sockindex] = cyassl_recv;
     conn->send[sockindex] = cyassl_send;
@@ -596,16 +624,29 @@ CURLcode
 Curl_cyassl_connect(struct connectdata *conn,
                     int sockindex)
 {
 Curl_cyassl_connect(struct connectdata *conn,
                     int sockindex)
 {
-  CURLcode retcode;
+  CURLcode result;
   bool done = FALSE;
 
   bool done = FALSE;
 
-  retcode = cyassl_connect_common(conn, sockindex, FALSE, &done);
-  if(retcode)
-    return retcode;
+  result = cyassl_connect_common(conn, sockindex, FALSE, &done);
+  if(result)
+    return result;
 
   DEBUGASSERT(done);
 
   return CURLE_OK;
 }
 
 
   DEBUGASSERT(done);
 
   return CURLE_OK;
 }
 
+int Curl_cyassl_random(struct SessionHandle *data,
+                       unsigned char *entropy,
+                       size_t length)
+{
+  RNG rng;
+  (void)data;
+  if(InitRng(&rng))
+    return 1;
+  if(RNG_GenerateBlock(&rng, entropy, length))
+    return 1;
+  return 0;
+}
+
 #endif
 #endif
similarity index 81%
rename from lib/cyassl.h
rename to lib/vtls/cyassl.h
index 7728a0c..a691e16 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -43,6 +43,9 @@ int Curl_cyassl_init(void);
 CURLcode Curl_cyassl_connect_nonblocking(struct connectdata *conn,
                                          int sockindex,
                                          bool *done);
 CURLcode Curl_cyassl_connect_nonblocking(struct connectdata *conn,
                                          int sockindex,
                                          bool *done);
+int Curl_cyassl_random(struct SessionHandle *data,
+                       unsigned char *entropy,
+                       size_t length);
 
 /* API setup for CyaSSL */
 #define curlssl_init Curl_cyassl_init
 
 /* API setup for CyaSSL */
 #define curlssl_init Curl_cyassl_init
@@ -53,12 +56,14 @@ CURLcode Curl_cyassl_connect_nonblocking(struct connectdata *conn,
 #define curlssl_close_all Curl_cyassl_close_all
 #define curlssl_close Curl_cyassl_close
 #define curlssl_shutdown(x,y) Curl_cyassl_shutdown(x,y)
 #define curlssl_close_all Curl_cyassl_close_all
 #define curlssl_close Curl_cyassl_close
 #define curlssl_shutdown(x,y) Curl_cyassl_shutdown(x,y)
-#define curlssl_set_engine(x,y) (x=x, y=y, CURLE_NOT_BUILT_IN)
-#define curlssl_set_engine_default(x) (x=x, CURLE_NOT_BUILT_IN)
-#define curlssl_engines_list(x) (x=x, (struct curl_slist *)NULL)
+#define curlssl_set_engine(x,y) ((void)x, (void)y, CURLE_NOT_BUILT_IN)
+#define curlssl_set_engine_default(x) ((void)x, CURLE_NOT_BUILT_IN)
+#define curlssl_engines_list(x) ((void)x, (struct curl_slist *)NULL)
 #define curlssl_version Curl_cyassl_version
 #define curlssl_version Curl_cyassl_version
-#define curlssl_check_cxn(x) (x=x, -1)
+#define curlssl_check_cxn(x) ((void)x, -1)
 #define curlssl_data_pending(x,y) Curl_cyassl_data_pending(x,y)
 #define curlssl_data_pending(x,y) Curl_cyassl_data_pending(x,y)
+#define curlssl_random(x,y,z) Curl_cyassl_random(x,y,z)
+#define CURL_SSL_BACKEND CURLSSLBACKEND_CYASSL
 
 #endif /* USE_CYASSL */
 #endif /* HEADER_CURL_CYASSL_H */
 
 #endif /* USE_CYASSL */
 #endif /* HEADER_CURL_CYASSL_H */
diff --git a/lib/vtls/gskit.c b/lib/vtls/gskit.c
new file mode 100644 (file)
index 0000000..ac05f05
--- /dev/null
@@ -0,0 +1,1078 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+
+#include "curl_setup.h"
+
+#ifdef USE_GSKIT
+
+#include <gskssl.h>
+#include <qsoasync.h>
+
+/* Some symbols are undefined/unsupported on OS400 versions < V7R1. */
+#ifndef GSK_SSL_EXTN_SERVERNAME_REQUEST
+#define GSK_SSL_EXTN_SERVERNAME_REQUEST         230
+#endif
+
+#ifndef GSK_TLSV10_CIPHER_SPECS
+#define GSK_TLSV10_CIPHER_SPECS                 236
+#endif
+
+#ifndef GSK_TLSV11_CIPHER_SPECS
+#define GSK_TLSV11_CIPHER_SPECS                 237
+#endif
+
+#ifndef GSK_TLSV12_CIPHER_SPECS
+#define GSK_TLSV12_CIPHER_SPECS                 238
+#endif
+
+#ifndef GSK_PROTOCOL_TLSV11
+#define GSK_PROTOCOL_TLSV11                     437
+#endif
+
+#ifndef GSK_PROTOCOL_TLSV12
+#define GSK_PROTOCOL_TLSV12                     438
+#endif
+
+#ifndef GSK_FALSE
+#define GSK_FALSE                               0
+#endif
+
+#ifndef GSK_TRUE
+#define GSK_TRUE                                1
+#endif
+
+
+#ifdef HAVE_LIMITS_H
+#  include <limits.h>
+#endif
+
+#include <curl/curl.h>
+#include "urldata.h"
+#include "sendf.h"
+#include "gskit.h"
+#include "vtls.h"
+#include "connect.h" /* for the connect timeout */
+#include "select.h"
+#include "strequal.h"
+#include "x509asn1.h"
+
+#define _MPRINTF_REPLACE /* use our functions only */
+#include <curl/mprintf.h>
+
+#include "curl_memory.h"
+/* The last #include file should be: */
+#include "memdebug.h"
+
+
+/* SSL version flags. */
+#define CURL_GSKPROTO_SSLV2     0
+#define CURL_GSKPROTO_SSLV2_MASK        (1 << CURL_GSKPROTO_SSLV2)
+#define CURL_GSKPROTO_SSLV3     1
+#define CURL_GSKPROTO_SSLV3_MASK        (1 << CURL_GSKPROTO_SSLV3)
+#define CURL_GSKPROTO_TLSV10    2
+#define CURL_GSKPROTO_TLSV10_MASK        (1 << CURL_GSKPROTO_TLSV10)
+#define CURL_GSKPROTO_TLSV11    3
+#define CURL_GSKPROTO_TLSV11_MASK        (1 << CURL_GSKPROTO_TLSV11)
+#define CURL_GSKPROTO_TLSV12    4
+#define CURL_GSKPROTO_TLSV12_MASK        (1 << CURL_GSKPROTO_TLSV12)
+#define CURL_GSKPROTO_LAST      5
+
+
+/* Supported ciphers. */
+typedef struct {
+  const char *name;            /* Cipher name. */
+  const char *gsktoken;        /* Corresponding token for GSKit String. */
+  unsigned int versions;       /* SSL version flags. */
+}  gskit_cipher;
+
+static const gskit_cipher  ciphertable[] = {
+  { "null-md5",         "01",
+      CURL_GSKPROTO_SSLV3_MASK | CURL_GSKPROTO_TLSV10_MASK |
+      CURL_GSKPROTO_TLSV11_MASK | CURL_GSKPROTO_TLSV12_MASK },
+  { "null-sha",         "02",
+      CURL_GSKPROTO_SSLV3_MASK | CURL_GSKPROTO_TLSV10_MASK |
+      CURL_GSKPROTO_TLSV11_MASK | CURL_GSKPROTO_TLSV12_MASK },
+  { "exp-rc4-md5",      "03",
+      CURL_GSKPROTO_SSLV3_MASK | CURL_GSKPROTO_TLSV10_MASK },
+  { "rc4-md5",          "04",
+      CURL_GSKPROTO_SSLV3_MASK | CURL_GSKPROTO_TLSV10_MASK |
+      CURL_GSKPROTO_TLSV11_MASK | CURL_GSKPROTO_TLSV12_MASK },
+  { "rc4-sha",          "05",
+      CURL_GSKPROTO_SSLV3_MASK | CURL_GSKPROTO_TLSV10_MASK |
+      CURL_GSKPROTO_TLSV11_MASK | CURL_GSKPROTO_TLSV12_MASK },
+  { "exp-rc2-cbc-md5",  "06",
+      CURL_GSKPROTO_SSLV3_MASK | CURL_GSKPROTO_TLSV10_MASK },
+  { "exp-des-cbc-sha",  "09",
+      CURL_GSKPROTO_SSLV3_MASK | CURL_GSKPROTO_TLSV10_MASK |
+      CURL_GSKPROTO_TLSV11_MASK },
+  { "des-cbc3-sha",     "0A",
+      CURL_GSKPROTO_SSLV3_MASK | CURL_GSKPROTO_TLSV10_MASK |
+      CURL_GSKPROTO_TLSV11_MASK | CURL_GSKPROTO_TLSV12_MASK },
+  { "aes128-sha",       "2F",
+      CURL_GSKPROTO_TLSV10_MASK | CURL_GSKPROTO_TLSV11_MASK |
+      CURL_GSKPROTO_TLSV12_MASK },
+  { "aes256-sha",       "35",
+      CURL_GSKPROTO_TLSV10_MASK | CURL_GSKPROTO_TLSV11_MASK |
+      CURL_GSKPROTO_TLSV12_MASK },
+  { "null-sha256",      "3B",   CURL_GSKPROTO_TLSV12_MASK },
+  { "aes128-sha256",    "3C",   CURL_GSKPROTO_TLSV12_MASK },
+  { "aes256-sha256",    "3D",   CURL_GSKPROTO_TLSV12_MASK },
+  { "aes128-gcm-sha256",
+                        "9C",   CURL_GSKPROTO_TLSV12_MASK },
+  { "aes256-gcm-sha384",
+                        "9D",   CURL_GSKPROTO_TLSV12_MASK },
+  { "rc4-md5",          "1",    CURL_GSKPROTO_SSLV2_MASK },
+  { "exp-rc4-md5",      "2",    CURL_GSKPROTO_SSLV2_MASK },
+  { "rc2-md5",          "3",    CURL_GSKPROTO_SSLV2_MASK },
+  { "exp-rc2-md5",      "4",    CURL_GSKPROTO_SSLV2_MASK },
+  { "des-cbc-md5",      "6",    CURL_GSKPROTO_SSLV2_MASK },
+  { "des-cbc3-md5",     "7",    CURL_GSKPROTO_SSLV2_MASK },
+  { (const char *) NULL, (const char *) NULL, 0       }
+};
+
+
+static bool is_separator(char c)
+{
+  /* Return whether character is a cipher list separator. */
+  switch (c) {
+  case ' ':
+  case '\t':
+  case ':':
+  case ',':
+  case ';':
+    return true;
+  }
+  return false;
+}
+
+
+static CURLcode gskit_status(struct SessionHandle *data, int rc,
+                             const char *procname, CURLcode defcode)
+{
+  /* Process GSKit status and map it to a CURLcode. */
+  switch (rc) {
+  case GSK_OK:
+  case GSK_OS400_ASYNCHRONOUS_SOC_INIT:
+    return CURLE_OK;
+  case GSK_KEYRING_OPEN_ERROR:
+  case GSK_OS400_ERROR_NO_ACCESS:
+    return CURLE_SSL_CACERT_BADFILE;
+  case GSK_INSUFFICIENT_STORAGE:
+    return CURLE_OUT_OF_MEMORY;
+  case GSK_ERROR_BAD_V2_CIPHER:
+  case GSK_ERROR_BAD_V3_CIPHER:
+  case GSK_ERROR_NO_CIPHERS:
+    return CURLE_SSL_CIPHER;
+  case GSK_OS400_ERROR_NOT_TRUSTED_ROOT:
+  case GSK_ERROR_CERT_VALIDATION:
+    return CURLE_PEER_FAILED_VERIFICATION;
+  case GSK_OS400_ERROR_TIMED_OUT:
+    return CURLE_OPERATION_TIMEDOUT;
+  case GSK_WOULD_BLOCK:
+    return CURLE_AGAIN;
+  case GSK_OS400_ERROR_NOT_REGISTERED:
+    break;
+  case GSK_ERROR_IO:
+    switch (errno) {
+    case ENOMEM:
+      return CURLE_OUT_OF_MEMORY;
+    default:
+      failf(data, "%s I/O error: %s", procname, strerror(errno));
+      break;
+    }
+    break;
+  default:
+    failf(data, "%s: %s", procname, gsk_strerror(rc));
+    break;
+  }
+  return defcode;
+}
+
+
+static CURLcode set_enum(struct SessionHandle *data, gsk_handle h,
+                GSK_ENUM_ID id, GSK_ENUM_VALUE value, bool unsupported_ok)
+{
+  int rc = gsk_attribute_set_enum(h, id, value);
+
+  switch (rc) {
+  case GSK_OK:
+    return CURLE_OK;
+  case GSK_ERROR_IO:
+    failf(data, "gsk_attribute_set_enum() I/O error: %s", strerror(errno));
+    break;
+  case GSK_ATTRIBUTE_INVALID_ID:
+    if(unsupported_ok)
+      return CURLE_UNSUPPORTED_PROTOCOL;
+  default:
+    failf(data, "gsk_attribute_set_enum(): %s", gsk_strerror(rc));
+    break;
+  }
+  return CURLE_SSL_CONNECT_ERROR;
+}
+
+
+static CURLcode set_buffer(struct SessionHandle *data, gsk_handle h,
+                        GSK_BUF_ID id, const char *buffer, bool unsupported_ok)
+{
+  int rc = gsk_attribute_set_buffer(h, id, buffer, 0);
+
+  switch (rc) {
+  case GSK_OK:
+    return CURLE_OK;
+  case GSK_ERROR_IO:
+    failf(data, "gsk_attribute_set_buffer() I/O error: %s", strerror(errno));
+    break;
+  case GSK_ATTRIBUTE_INVALID_ID:
+    if(unsupported_ok)
+      return CURLE_UNSUPPORTED_PROTOCOL;
+  default:
+    failf(data, "gsk_attribute_set_buffer(): %s", gsk_strerror(rc));
+    break;
+  }
+  return CURLE_SSL_CONNECT_ERROR;
+}
+
+
+static CURLcode set_numeric(struct SessionHandle *data,
+                            gsk_handle h, GSK_NUM_ID id, int value)
+{
+  int rc = gsk_attribute_set_numeric_value(h, id, value);
+
+  switch (rc) {
+  case GSK_OK:
+    return CURLE_OK;
+  case GSK_ERROR_IO:
+    failf(data, "gsk_attribute_set_numeric_value() I/O error: %s",
+          strerror(errno));
+    break;
+  default:
+    failf(data, "gsk_attribute_set_numeric_value(): %s", gsk_strerror(rc));
+    break;
+  }
+  return CURLE_SSL_CONNECT_ERROR;
+}
+
+
+static CURLcode set_callback(struct SessionHandle *data,
+                             gsk_handle h, GSK_CALLBACK_ID id, void *info)
+{
+  int rc = gsk_attribute_set_callback(h, id, info);
+
+  switch (rc) {
+  case GSK_OK:
+    return CURLE_OK;
+  case GSK_ERROR_IO:
+    failf(data, "gsk_attribute_set_callback() I/O error: %s", strerror(errno));
+    break;
+  default:
+    failf(data, "gsk_attribute_set_callback(): %s", gsk_strerror(rc));
+    break;
+  }
+  return CURLE_SSL_CONNECT_ERROR;
+}
+
+
+static CURLcode set_ciphers(struct SessionHandle *data,
+                                        gsk_handle h, unsigned int *protoflags)
+{
+  const char *cipherlist = data->set.str[STRING_SSL_CIPHER_LIST];
+  const char *clp;
+  const gskit_cipher *ctp;
+  int i;
+  int l;
+  bool unsupported;
+  CURLcode result;
+  struct {
+    char *buf;
+    char *ptr;
+  } ciphers[CURL_GSKPROTO_LAST];
+
+  /* Compile cipher list into GSKit-compatible cipher lists. */
+
+  if(!cipherlist)
+    return CURLE_OK;
+  while(is_separator(*cipherlist))     /* Skip initial separators. */
+    cipherlist++;
+  if(!*cipherlist)
+    return CURLE_OK;
+
+  /* We allocate GSKit buffers of the same size as the input string: since
+     GSKit tokens are always shorter than their cipher names, allocated buffers
+     will always be large enough to accomodate the result. */
+  l = strlen(cipherlist) + 1;
+  memset((char *) ciphers, 0, sizeof ciphers);
+  for(i = 0; i < CURL_GSKPROTO_LAST; i++) {
+    ciphers[i].buf = malloc(l);
+    if(!ciphers[i].buf) {
+      while(i--)
+        free(ciphers[i].buf);
+      return CURLE_OUT_OF_MEMORY;
+    }
+    ciphers[i].ptr = ciphers[i].buf;
+    *ciphers[i].ptr = '\0';
+  }
+
+  /* Process each cipher in input string. */
+  unsupported = FALSE;
+  result = CURLE_OK;
+  for(;;) {
+    for(clp = cipherlist; *cipherlist && !is_separator(*cipherlist);)
+      cipherlist++;
+    l = cipherlist - clp;
+    if(!l)
+      break;
+    /* Search the cipher in our table. */
+    for(ctp = ciphertable; ctp->name; ctp++)
+      if(strnequal(ctp->name, clp, l) && !ctp->name[l])
+        break;
+    if(!ctp->name) {
+      failf(data, "Unknown cipher %.*s", l, clp);
+      result = CURLE_SSL_CIPHER;
+    }
+    else {
+      unsupported |= !(ctp->versions & (CURL_GSKPROTO_SSLV2_MASK |
+                        CURL_GSKPROTO_SSLV3_MASK | CURL_GSKPROTO_TLSV10_MASK));
+      for(i = 0; i < CURL_GSKPROTO_LAST; i++) {
+        if(ctp->versions & (1 << i)) {
+          strcpy(ciphers[i].ptr, ctp->gsktoken);
+          ciphers[i].ptr += strlen(ctp->gsktoken);
+        }
+      }
+    }
+
+   /* Advance to next cipher name or end of string. */
+    while(is_separator(*cipherlist))
+      cipherlist++;
+  }
+
+  /* Disable protocols with empty cipher lists. */
+  for(i = 0; i < CURL_GSKPROTO_LAST; i++) {
+    if(!(*protoflags & (1 << i)) || !ciphers[i].buf[0]) {
+      *protoflags &= ~(1 << i);
+      ciphers[i].buf[0] = '\0';
+    }
+  }
+
+  /* Try to set-up TLSv1.1 and TLSv2.1 ciphers. */
+  if(*protoflags & CURL_GSKPROTO_TLSV11_MASK) {
+    result = set_buffer(data, h, GSK_TLSV11_CIPHER_SPECS,
+                        ciphers[CURL_GSKPROTO_TLSV11].buf, TRUE);
+    if(result == CURLE_UNSUPPORTED_PROTOCOL) {
+      result = CURLE_OK;
+      if(unsupported) {
+        failf(data, "TLSv1.1-only ciphers are not yet supported");
+        result = CURLE_SSL_CIPHER;
+      }
+    }
+  }
+  if(!result && (*protoflags & CURL_GSKPROTO_TLSV12_MASK)) {
+    result = set_buffer(data, h, GSK_TLSV12_CIPHER_SPECS,
+                        ciphers[CURL_GSKPROTO_TLSV12].buf, TRUE);
+    if(result == CURLE_UNSUPPORTED_PROTOCOL) {
+      result = CURLE_OK;
+      if(unsupported) {
+        failf(data, "TLSv1.2-only ciphers are not yet supported");
+        result = CURLE_SSL_CIPHER;
+      }
+    }
+  }
+
+  /* Try to set-up TLSv1.0 ciphers. If not successful, concatenate them to
+     the SSLv3 ciphers. OS/400 prior to version 7.1 will understand it. */
+  if(!result && (*protoflags & CURL_GSKPROTO_TLSV10_MASK)) {
+    result = set_buffer(data, h, GSK_TLSV10_CIPHER_SPECS,
+                        ciphers[CURL_GSKPROTO_TLSV10].buf, TRUE);
+    if(result == CURLE_UNSUPPORTED_PROTOCOL) {
+      result = CURLE_OK;
+      strcpy(ciphers[CURL_GSKPROTO_SSLV3].ptr,
+             ciphers[CURL_GSKPROTO_TLSV10].ptr);
+    }
+  }
+
+  /* Set-up other ciphers. */
+  if(!result && (*protoflags & CURL_GSKPROTO_SSLV3_MASK))
+    result = set_buffer(data, h, GSK_V3_CIPHER_SPECS,
+                        ciphers[CURL_GSKPROTO_SSLV3].buf, FALSE);
+  if(!result && (*protoflags & CURL_GSKPROTO_SSLV2_MASK))
+    result = set_buffer(data, h, GSK_V2_CIPHER_SPECS,
+                        ciphers[CURL_GSKPROTO_SSLV2].buf, FALSE);
+
+  /* Clean-up. */
+  for(i = 0; i < CURL_GSKPROTO_LAST; i++)
+    free(ciphers[i].buf);
+
+  return result;
+}
+
+
+int Curl_gskit_init(void)
+{
+  /* No initialisation needed. */
+
+  return 1;
+}
+
+
+void Curl_gskit_cleanup(void)
+{
+  /* Nothing to do. */
+}
+
+
+static CURLcode init_environment(struct SessionHandle *data,
+                                 gsk_handle *envir, const char *appid,
+                                 const char *file, const char *label,
+                                 const char *password)
+{
+  int rc;
+  CURLcode result;
+  gsk_handle h;
+
+  /* Creates the GSKit environment. */
+
+  rc = gsk_environment_open(&h);
+  switch (rc) {
+  case GSK_OK:
+    break;
+  case GSK_INSUFFICIENT_STORAGE:
+    return CURLE_OUT_OF_MEMORY;
+  default:
+    failf(data, "gsk_environment_open(): %s", gsk_strerror(rc));
+    return CURLE_SSL_CONNECT_ERROR;
+  }
+
+  result = set_enum(data, h, GSK_SESSION_TYPE, GSK_CLIENT_SESSION, FALSE);
+  if(!result && appid)
+    result = set_buffer(data, h, GSK_OS400_APPLICATION_ID, appid, FALSE);
+  if(!result && file)
+    result = set_buffer(data, h, GSK_KEYRING_FILE, file, FALSE);
+  if(!result && label)
+    result = set_buffer(data, h, GSK_KEYRING_LABEL, label, FALSE);
+  if(!result && password)
+    result = set_buffer(data, h, GSK_KEYRING_PW, password, FALSE);
+
+  if(!result) {
+    /* Locate CAs, Client certificate and key according to our settings.
+       Note: this call may be blocking for some tenths of seconds. */
+    result = gskit_status(data, gsk_environment_init(h),
+                          "gsk_environment_init()", CURLE_SSL_CERTPROBLEM);
+    if(!result) {
+      *envir = h;
+      return result;
+    }
+  }
+  /* Error: rollback. */
+  gsk_environment_close(&h);
+  return result;
+}
+
+
+static void cancel_async_handshake(struct connectdata *conn, int sockindex)
+{
+  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
+  Qso_OverlappedIO_t cstat;
+
+  if(QsoCancelOperation(conn->sock[sockindex], 0) > 0)
+    QsoWaitForIOCompletion(connssl->iocport, &cstat, (struct timeval *) NULL);
+}
+
+
+static void close_async_handshake(struct ssl_connect_data *connssl)
+{
+  QsoDestroyIOCompletionPort(connssl->iocport);
+  connssl->iocport = -1;
+}
+
+
+static void close_one(struct ssl_connect_data *conn,
+                      struct SessionHandle *data)
+{
+  if(conn->handle) {
+    gskit_status(data, gsk_secure_soc_close(&conn->handle),
+              "gsk_secure_soc_close()", 0);
+    conn->handle = (gsk_handle) NULL;
+  }
+  if(conn->iocport >= 0)
+    close_async_handshake(conn);
+}
+
+
+static ssize_t gskit_send(struct connectdata *conn, int sockindex,
+                           const void *mem, size_t len, CURLcode *curlcode)
+{
+  struct SessionHandle *data = conn->data;
+  CURLcode cc;
+  int written;
+
+  cc = gskit_status(data,
+                    gsk_secure_soc_write(conn->ssl[sockindex].handle,
+                                         (char *) mem, (int) len, &written),
+                    "gsk_secure_soc_write()", CURLE_SEND_ERROR);
+  if(cc != CURLE_OK) {
+    *curlcode = cc;
+    written = -1;
+  }
+  return (ssize_t) written; /* number of bytes */
+}
+
+
+static ssize_t gskit_recv(struct connectdata *conn, int num, char *buf,
+                           size_t buffersize, CURLcode *curlcode)
+{
+  struct SessionHandle *data = conn->data;
+  int buffsize;
+  int nread;
+  CURLcode cc;
+
+  buffsize = buffersize > (size_t) INT_MAX? INT_MAX: (int) buffersize;
+  cc = gskit_status(data, gsk_secure_soc_read(conn->ssl[num].handle,
+                                              buf, buffsize, &nread),
+                    "gsk_secure_soc_read()", CURLE_RECV_ERROR);
+  if(cc != CURLE_OK) {
+    *curlcode = cc;
+    nread = -1;
+  }
+  return (ssize_t) nread;
+}
+
+
+static CURLcode gskit_connect_step1(struct connectdata *conn, int sockindex)
+{
+  struct SessionHandle *data = conn->data;
+  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
+  gsk_handle envir;
+  CURLcode result;
+  int rc;
+  char *keyringfile;
+  char *keyringpwd;
+  char *keyringlabel;
+  char *sni;
+  unsigned int protoflags;
+  long timeout;
+  Qso_OverlappedIO_t commarea;
+
+  /* Create SSL environment, start (preferably asynchronous) handshake. */
+
+  connssl->handle = (gsk_handle) NULL;
+  connssl->iocport = -1;
+
+  /* GSKit supports two ways of specifying an SSL context: either by
+   *  application identifier (that should have been defined at the system
+   *  level) or by keyring file, password and certificate label.
+   * Local certificate name (CURLOPT_SSLCERT) is used to hold either the
+   *  application identifier of the certificate label.
+   * Key password (CURLOPT_KEYPASSWD) holds the keyring password.
+   * It is not possible to have different keyrings for the CAs and the
+   *  local certificate. We thus use the CA file (CURLOPT_CAINFO) to identify
+   *  the keyring file.
+   * If no key password is given and the keyring is the system keyring,
+   *  application identifier mode is tried first, as recommended in IBM doc.
+   */
+
+  keyringfile = data->set.str[STRING_SSL_CAFILE];
+  keyringpwd = data->set.str[STRING_KEY_PASSWD];
+  keyringlabel = data->set.str[STRING_CERT];
+  envir = (gsk_handle) NULL;
+
+  if(keyringlabel && *keyringlabel && !keyringpwd &&
+      !strcmp(keyringfile, CURL_CA_BUNDLE)) {
+    /* Try application identifier mode. */
+    init_environment(data, &envir, keyringlabel, (const char *) NULL,
+                     (const char *) NULL, (const char *) NULL);
+  }
+
+  if(!envir) {
+    /* Use keyring mode. */
+    result = init_environment(data, &envir, (const char *) NULL,
+                              keyringfile, keyringlabel, keyringpwd);
+    if(result)
+      return result;
+  }
+
+  /* Create secure session. */
+  result = gskit_status(data, gsk_secure_soc_open(envir, &connssl->handle),
+                        "gsk_secure_soc_open()", CURLE_SSL_CONNECT_ERROR);
+  gsk_environment_close(&envir);
+  if(result)
+    return result;
+
+  /* Determine which SSL/TLS version should be enabled. */
+  protoflags = CURL_GSKPROTO_TLSV10_MASK | CURL_GSKPROTO_TLSV11_MASK |
+               CURL_GSKPROTO_TLSV12_MASK;
+  sni = conn->host.name;
+  switch (data->set.ssl.version) {
+  case CURL_SSLVERSION_SSLv2:
+    protoflags = CURL_GSKPROTO_SSLV2_MASK;
+    sni = (char *) NULL;
+    break;
+  case CURL_SSLVERSION_SSLv3:
+    protoflags = CURL_GSKPROTO_SSLV2_MASK;
+    sni = (char *) NULL;
+    break;
+  case CURL_SSLVERSION_TLSv1:
+    protoflags = CURL_GSKPROTO_TLSV10_MASK |
+                 CURL_GSKPROTO_TLSV11_MASK | CURL_GSKPROTO_TLSV12_MASK;
+    break;
+  case CURL_SSLVERSION_TLSv1_0:
+    protoflags = CURL_GSKPROTO_TLSV10_MASK;
+    break;
+  case CURL_SSLVERSION_TLSv1_1:
+    protoflags = CURL_GSKPROTO_TLSV11_MASK;
+    break;
+  case CURL_SSLVERSION_TLSv1_2:
+    protoflags = CURL_GSKPROTO_TLSV12_MASK;
+    break;
+  }
+
+  /* Process SNI. Ignore if not supported (on OS400 < V7R1). */
+  if(sni) {
+    result = set_buffer(data, connssl->handle,
+                        GSK_SSL_EXTN_SERVERNAME_REQUEST, sni, TRUE);
+    if(result == CURLE_UNSUPPORTED_PROTOCOL)
+      result = CURLE_OK;
+  }
+
+  /* Set session parameters. */
+  if(!result) {
+    /* Compute the handshake timeout. Since GSKit granularity is 1 second,
+       we round up the required value. */
+    timeout = Curl_timeleft(data, NULL, TRUE);
+    if(timeout < 0)
+      result = CURLE_OPERATION_TIMEDOUT;
+    else
+      result = set_numeric(data, connssl->handle, GSK_HANDSHAKE_TIMEOUT,
+                           (timeout + 999) / 1000);
+  }
+  if(!result)
+    result = set_numeric(data, connssl->handle, GSK_FD, conn->sock[sockindex]);
+  if(!result)
+    result = set_ciphers(data, connssl->handle, &protoflags);
+  if(!protoflags) {
+    failf(data, "No SSL protocol/cipher combination enabled");
+    result = CURLE_SSL_CIPHER;
+  }
+  if(!result)
+    result = set_enum(data, connssl->handle, GSK_PROTOCOL_SSLV2,
+                      (protoflags & CURL_GSKPROTO_SSLV2_MASK)?
+                      GSK_PROTOCOL_SSLV2_ON: GSK_PROTOCOL_SSLV2_OFF, FALSE);
+  if(!result)
+    result = set_enum(data, connssl->handle, GSK_PROTOCOL_SSLV3,
+                      (protoflags & CURL_GSKPROTO_SSLV3_MASK)?
+                      GSK_PROTOCOL_SSLV3_ON: GSK_PROTOCOL_SSLV3_OFF, FALSE);
+  if(!result)
+    result = set_enum(data, connssl->handle, GSK_PROTOCOL_TLSV1,
+                      (protoflags & CURL_GSKPROTO_TLSV10_MASK)?
+                      GSK_PROTOCOL_TLSV1_ON: GSK_PROTOCOL_TLSV1_OFF, FALSE);
+  if(!result) {
+    result = set_enum(data, connssl->handle, GSK_PROTOCOL_TLSV11,
+                      (protoflags & CURL_GSKPROTO_TLSV11_MASK)?
+                      GSK_TRUE: GSK_FALSE, TRUE);
+    if(result == CURLE_UNSUPPORTED_PROTOCOL) {
+      result = CURLE_OK;
+      if(protoflags == CURL_GSKPROTO_TLSV11_MASK) {
+        failf(data, "TLS 1.1 not yet supported");
+        result = CURLE_SSL_CIPHER;
+      }
+    }
+  }
+  if(!result) {
+    result = set_enum(data, connssl->handle, GSK_PROTOCOL_TLSV12,
+                      (protoflags & CURL_GSKPROTO_TLSV12_MASK)?
+                      GSK_TRUE: GSK_FALSE, TRUE);
+    if(result == CURLE_UNSUPPORTED_PROTOCOL) {
+      result = CURLE_OK;
+      if(protoflags == CURL_GSKPROTO_TLSV12_MASK) {
+        failf(data, "TLS 1.2 not yet supported");
+        result = CURLE_SSL_CIPHER;
+      }
+    }
+  }
+  if(!result)
+    result = set_enum(data, connssl->handle, GSK_SERVER_AUTH_TYPE,
+                      data->set.ssl.verifypeer? GSK_SERVER_AUTH_FULL:
+                      GSK_SERVER_AUTH_PASSTHRU, FALSE);
+
+  if(!result) {
+    /* Start handshake. Try asynchronous first. */
+    memset(&commarea, 0, sizeof commarea);
+    connssl->iocport = QsoCreateIOCompletionPort();
+    if(connssl->iocport != -1) {
+      result = gskit_status(data,
+                            gsk_secure_soc_startInit(connssl->handle,
+                                                     connssl->iocport,
+                                                     &commarea),
+                            "gsk_secure_soc_startInit()",
+                            CURLE_SSL_CONNECT_ERROR);
+      if(!result) {
+        connssl->connecting_state = ssl_connect_2;
+        return CURLE_OK;
+      }
+      else
+        close_async_handshake(connssl);
+    }
+    else if(errno != ENOBUFS)
+      result = gskit_status(data, GSK_ERROR_IO,
+                            "QsoCreateIOCompletionPort()", 0);
+    else {
+      /* No more completion port available. Use synchronous IO. */
+      result = gskit_status(data, gsk_secure_soc_init(connssl->handle),
+                            "gsk_secure_soc_init()", CURLE_SSL_CONNECT_ERROR);
+      if(!result) {
+        connssl->connecting_state = ssl_connect_3;
+        return CURLE_OK;
+      }
+    }
+  }
+
+  /* Error: rollback. */
+  close_one(connssl, data);
+  return result;
+}
+
+
+static CURLcode gskit_connect_step2(struct connectdata *conn, int sockindex,
+                                    bool nonblocking)
+{
+  struct SessionHandle *data = conn->data;
+  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
+  Qso_OverlappedIO_t cstat;
+  long timeout_ms;
+  struct timeval stmv;
+  CURLcode result;
+
+  /* Poll or wait for end of SSL asynchronous handshake. */
+
+  for(;;) {
+    timeout_ms = nonblocking? 0: Curl_timeleft(data, NULL, TRUE);
+    if(timeout_ms < 0)
+      timeout_ms = 0;
+    stmv.tv_sec = timeout_ms / 1000;
+    stmv.tv_usec = (timeout_ms - stmv.tv_sec * 1000) * 1000;
+    switch (QsoWaitForIOCompletion(connssl->iocport, &cstat, &stmv)) {
+    case 1:             /* Operation complete. */
+      break;
+    case -1:            /* An error occurred: handshake still in progress. */
+      if(errno == EINTR) {
+        if(nonblocking)
+          return CURLE_OK;
+        continue;       /* Retry. */
+      }
+      if(errno != ETIME) {
+        failf(data, "QsoWaitForIOCompletion() I/O error: %s", strerror(errno));
+        cancel_async_handshake(conn, sockindex);
+        close_async_handshake(connssl);
+        return CURLE_SSL_CONNECT_ERROR;
+      }
+      /* FALL INTO... */
+    case 0:             /* Handshake in progress, timeout occurred. */
+      if(nonblocking)
+        return CURLE_OK;
+      cancel_async_handshake(conn, sockindex);
+      close_async_handshake(connssl);
+      return CURLE_OPERATION_TIMEDOUT;
+    }
+    break;
+  }
+  result = gskit_status(data, cstat.returnValue, "SSL handshake",
+                        CURLE_SSL_CONNECT_ERROR);
+  if(!result)
+    connssl->connecting_state = ssl_connect_3;
+  close_async_handshake(connssl);
+  return result;
+}
+
+
+static CURLcode gskit_connect_step3(struct connectdata *conn, int sockindex)
+{
+  struct SessionHandle *data = conn->data;
+  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
+  const gsk_cert_data_elem *cdev;
+  int cdec;
+  const gsk_cert_data_elem *p;
+  const char *cert = (const char *) NULL;
+  const char *certend;
+  const char *ptr;
+  int i;
+  CURLcode result;
+
+  /* SSL handshake done: gather certificate info and verify host. */
+
+  if(gskit_status(data, gsk_attribute_get_cert_info(connssl->handle,
+                                                    GSK_PARTNER_CERT_INFO,
+                                                    &cdev, &cdec),
+                  "gsk_attribute_get_cert_info()", CURLE_SSL_CONNECT_ERROR) ==
+     CURLE_OK) {
+    infof(data, "Server certificate:\n");
+    p = cdev;
+    for(i = 0; i++ < cdec; p++)
+      switch (p->cert_data_id) {
+      case CERT_BODY_DER:
+        cert = p->cert_data_p;
+        certend = cert + cdev->cert_data_l;
+        break;
+      case CERT_DN_PRINTABLE:
+        infof(data, "\t subject: %.*s\n", p->cert_data_l, p->cert_data_p);
+        break;
+      case CERT_ISSUER_DN_PRINTABLE:
+        infof(data, "\t issuer: %.*s\n", p->cert_data_l, p->cert_data_p);
+        break;
+      case CERT_VALID_FROM:
+        infof(data, "\t start date: %.*s\n", p->cert_data_l, p->cert_data_p);
+        break;
+      case CERT_VALID_TO:
+        infof(data, "\t expire date: %.*s\n", p->cert_data_l, p->cert_data_p);
+        break;
+    }
+  }
+
+  /* Verify host. */
+  result = Curl_verifyhost(conn, cert, certend);
+  if(result)
+    return result;
+
+  /* The only place GSKit can get the whole CA chain is a validation
+     callback where no user data pointer is available. Therefore it's not
+     possible to copy this chain into our structures for CAINFO.
+     However the server certificate may be available, thus we can return
+     info about it. */
+  if(data->set.ssl.certinfo) {
+    result = Curl_ssl_init_certinfo(data, 1);
+    if(result)
+      return result;
+
+    if(cert) {
+      result = Curl_extract_certinfo(conn, 0, cert, certend);
+      if(result)
+        return result;
+    }
+  }
+
+  /* Check pinned public key. */
+  ptr = data->set.str[STRING_SSL_PINNEDPUBLICKEY];
+  if(!result && ptr) {
+    curl_X509certificate x509;
+    curl_asn1Element *p;
+
+    if(!cert)
+      return CURLE_SSL_PINNEDPUBKEYNOTMATCH;
+    Curl_parseX509(&x509, cert, certend);
+    p = &x509.subjectPublicKeyInfo;
+    result = Curl_pin_peer_pubkey(ptr, p->header, p->end - p->header);
+    if(result) {
+      failf(data, "SSL: public key does not match pinned public key!");
+      return result;
+    }
+  }
+
+  connssl->connecting_state = ssl_connect_done;
+  return CURLE_OK;
+}
+
+
+static CURLcode gskit_connect_common(struct connectdata *conn, int sockindex,
+                                     bool nonblocking, bool *done)
+{
+  struct SessionHandle *data = conn->data;
+  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
+  long timeout_ms;
+  Qso_OverlappedIO_t cstat;
+  CURLcode result = CURLE_OK;
+
+  *done = connssl->state == ssl_connection_complete;
+  if(*done)
+    return CURLE_OK;
+
+  /* Step 1: create session, start handshake. */
+  if(connssl->connecting_state == ssl_connect_1) {
+    /* check allowed time left */
+    timeout_ms = Curl_timeleft(data, NULL, TRUE);
+
+    if(timeout_ms < 0) {
+      /* no need to continue if time already is up */
+      failf(data, "SSL connection timeout");
+      result = CURLE_OPERATION_TIMEDOUT;
+    }
+    else
+      result = gskit_connect_step1(conn, sockindex);
+  }
+
+  /* Step 2: check if handshake is over. */
+  if(!result && connssl->connecting_state == ssl_connect_2) {
+    /* check allowed time left */
+    timeout_ms = Curl_timeleft(data, NULL, TRUE);
+
+    if(timeout_ms < 0) {
+      /* no need to continue if time already is up */
+      failf(data, "SSL connection timeout");
+      result = CURLE_OPERATION_TIMEDOUT;
+    }
+    else
+      result = gskit_connect_step2(conn, sockindex, nonblocking);
+  }
+
+  /* Step 3: gather certificate info, verify host. */
+  if(!result && connssl->connecting_state == ssl_connect_3)
+    result = gskit_connect_step3(conn, sockindex);
+
+  if(result)
+    close_one(connssl, data);
+  else if(connssl->connecting_state == ssl_connect_done) {
+    connssl->state = ssl_connection_complete;
+    connssl->connecting_state = ssl_connect_1;
+    conn->recv[sockindex] = gskit_recv;
+    conn->send[sockindex] = gskit_send;
+    *done = TRUE;
+  }
+
+  return result;
+}
+
+
+CURLcode Curl_gskit_connect_nonblocking(struct connectdata *conn,
+                                        int sockindex,
+                                        bool *done)
+{
+  CURLcode result;
+
+  result = gskit_connect_common(conn, sockindex, TRUE, done);
+  if(*done || result)
+    conn->ssl[sockindex].connecting_state = ssl_connect_1;
+  return result;
+}
+
+
+CURLcode Curl_gskit_connect(struct connectdata *conn, int sockindex)
+{
+  CURLcode result;
+  bool done;
+
+  conn->ssl[sockindex].connecting_state = ssl_connect_1;
+  result = gskit_connect_common(conn, sockindex, FALSE, &done);
+  if(result)
+    return result;
+
+  DEBUGASSERT(done);
+
+  return CURLE_OK;
+}
+
+
+void Curl_gskit_close(struct connectdata *conn, int sockindex)
+{
+  struct SessionHandle *data = conn->data;
+  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
+
+  if(connssl->use)
+    close_one(connssl, data);
+}
+
+
+void Curl_gskit_close_all(struct SessionHandle *data)
+{
+  /* Unimplemented. */
+  (void) data;
+}
+
+
+int Curl_gskit_shutdown(struct connectdata *conn, int sockindex)
+{
+  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
+  struct SessionHandle *data = conn->data;
+  ssize_t nread;
+  int what;
+  int rc;
+  char buf[120];
+
+  if(!connssl->handle)
+    return 0;
+
+  if(data->set.ftp_ccc != CURLFTPSSL_CCC_ACTIVE)
+    return 0;
+
+  close_one(connssl, data);
+  rc = 0;
+  what = Curl_socket_ready(conn->sock[sockindex],
+                           CURL_SOCKET_BAD, SSL_SHUTDOWN_TIMEOUT);
+
+  for(;;) {
+    if(what < 0) {
+      /* anything that gets here is fatally bad */
+      failf(data, "select/poll on SSL socket, errno: %d", SOCKERRNO);
+      rc = -1;
+      break;
+    }
+
+    if(!what) {                                /* timeout */
+      failf(data, "SSL shutdown timeout");
+      break;
+    }
+
+    /* Something to read, let's do it and hope that it is the close
+       notify alert from the server. No way to gsk_secure_soc_read() now, so
+       use read(). */
+
+    nread = read(conn->sock[sockindex], buf, sizeof(buf));
+
+    if(nread < 0) {
+      failf(data, "read: %s", strerror(errno));
+      rc = -1;
+    }
+
+    if(nread <= 0)
+      break;
+
+    what = Curl_socket_ready(conn->sock[sockindex], CURL_SOCKET_BAD, 0);
+  }
+
+  return rc;
+}
+
+
+size_t Curl_gskit_version(char *buffer, size_t size)
+{
+  strncpy(buffer, "GSKit", size);
+  return strlen(buffer);
+}
+
+
+int Curl_gskit_check_cxn(struct connectdata *cxn)
+{
+  int err;
+  int errlen;
+
+  /* The only thing that can be tested here is at the socket level. */
+
+  if(!cxn->ssl[FIRSTSOCKET].handle)
+    return 0; /* connection has been closed */
+
+  err = 0;
+  errlen = sizeof err;
+
+  if(getsockopt(cxn->sock[FIRSTSOCKET], SOL_SOCKET, SO_ERROR,
+                 (unsigned char *) &err, &errlen) ||
+     errlen != sizeof err || err)
+    return 0; /* connection has been closed */
+
+  return -1;  /* connection status unknown */
+}
+
+#endif /* USE_GSKIT */
similarity index 87%
rename from lib/gskit.h
rename to lib/vtls/gskit.h
index 0d59aa7..baec823 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -24,7 +24,7 @@
 #include "curl_setup.h"
 
 /*
 #include "curl_setup.h"
 
 /*
- * This header should only be needed to get included by sslgen.c and gskit.c
+ * This header should only be needed to get included by vtls.c and gskit.c
  */
 
 #include "urldata.h"
  */
 
 #include "urldata.h"
@@ -36,12 +36,15 @@ CURLcode Curl_gskit_connect(struct connectdata * conn, int sockindex);
 CURLcode Curl_gskit_connect_nonblocking(struct connectdata * conn,
                                         int sockindex, bool * done);
 void Curl_gskit_close(struct connectdata *conn, int sockindex);
 CURLcode Curl_gskit_connect_nonblocking(struct connectdata * conn,
                                         int sockindex, bool * done);
 void Curl_gskit_close(struct connectdata *conn, int sockindex);
-int Curl_gskit_close_all(struct SessionHandle * data);
+void Curl_gskit_close_all(struct SessionHandle * data);
 int Curl_gskit_shutdown(struct connectdata * conn, int sockindex);
 
 size_t Curl_gskit_version(char * buffer, size_t size);
 int Curl_gskit_check_cxn(struct connectdata * cxn);
 
 int Curl_gskit_shutdown(struct connectdata * conn, int sockindex);
 
 size_t Curl_gskit_version(char * buffer, size_t size);
 int Curl_gskit_check_cxn(struct connectdata * cxn);
 
+/* this backend supports CURLOPT_CERTINFO */
+#define have_curlssl_certinfo 1
+
 /* API setup for GSKit */
 #define curlssl_init Curl_gskit_init
 #define curlssl_cleanup Curl_gskit_cleanup
 /* API setup for GSKit */
 #define curlssl_init Curl_gskit_init
 #define curlssl_cleanup Curl_gskit_cleanup
@@ -59,6 +62,8 @@ int Curl_gskit_check_cxn(struct connectdata * cxn);
 #define curlssl_version Curl_gskit_version
 #define curlssl_check_cxn(x) Curl_gskit_check_cxn(x)
 #define curlssl_data_pending(x,y) 0
 #define curlssl_version Curl_gskit_version
 #define curlssl_check_cxn(x) Curl_gskit_check_cxn(x)
 #define curlssl_data_pending(x,y) 0
+#define curlssl_random(x,y,z) -1
+#define CURL_SSL_BACKEND CURLSSLBACKEND_GSKIT
 #endif /* USE_GSKIT */
 
 #endif /* HEADER_CURL_GSKIT_H */
 #endif /* USE_GSKIT */
 
 #endif /* HEADER_CURL_GSKIT_H */
similarity index 74%
rename from lib/gtls.c
rename to lib/vtls/gtls.c
index 700e46a..5d4e48a 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -22,7 +22,7 @@
 
 /*
  * Source file for all GnuTLS-specific code for the TLS/SSL layer. No code
 
 /*
  * Source file for all GnuTLS-specific code for the TLS/SSL layer. No code
- * but sslgen.c should ever call or use these functions.
+ * but vtls.c should ever call or use these functions.
  *
  * Note: don't use the GnuTLS' *_t variable type names in this source code,
  * since they were not present in 1.0.X.
  *
  * Note: don't use the GnuTLS' *_t variable type names in this source code,
  * since they were not present in 1.0.X.
@@ -32,6 +32,7 @@
 
 #ifdef USE_GNUTLS
 
 
 #ifdef USE_GNUTLS
 
+#include <gnutls/abstract.h>
 #include <gnutls/gnutls.h>
 #include <gnutls/x509.h>
 
 #include <gnutls/gnutls.h>
 #include <gnutls/x509.h>
 
 #include "sendf.h"
 #include "inet_pton.h"
 #include "gtls.h"
 #include "sendf.h"
 #include "inet_pton.h"
 #include "gtls.h"
-#include "sslgen.h"
+#include "vtls.h"
 #include "parsedate.h"
 #include "connect.h" /* for the connect timeout */
 #include "select.h"
 #include "rawstr.h"
 #include "parsedate.h"
 #include "connect.h" /* for the connect timeout */
 #include "select.h"
 #include "rawstr.h"
+#include "warnless.h"
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
@@ -89,6 +91,13 @@ static bool gtls_inited = FALSE;
 #  if (GNUTLS_VERSION_NUMBER >= 0x020c03)
 #    define GNUTLS_MAPS_WINSOCK_ERRORS 1
 #  endif
 #  if (GNUTLS_VERSION_NUMBER >= 0x020c03)
 #    define GNUTLS_MAPS_WINSOCK_ERRORS 1
 #  endif
+
+#  ifdef USE_NGHTTP2
+#    undef HAS_ALPN
+#    if (GNUTLS_VERSION_NUMBER >= 0x030200)
+#      define HAS_ALPN
+#    endif
+#  endif
 #endif
 
 /*
 #endif
 
 /*
@@ -207,10 +216,10 @@ static void showtime(struct SessionHandle *data,
   infof(data, "%s\n", data->state.buffer);
 }
 
   infof(data, "%s\n", data->state.buffer);
 }
 
-static gnutls_datum load_file (const char *file)
+static gnutls_datum_t load_file (const char *file)
 {
   FILE *f;
 {
   FILE *f;
-  gnutls_datum loaded_file = { NULL, 0 };
+  gnutls_datum_t loaded_file = { NULL, 0 };
   long filelen;
   void *ptr;
 
   long filelen;
   void *ptr;
 
@@ -233,7 +242,7 @@ out:
   return loaded_file;
 }
 
   return loaded_file;
 }
 
-static void unload_file(gnutls_datum data) {
+static void unload_file(gnutls_datum_t data) {
   free(data.data);
 }
 
   free(data.data);
 }
 
@@ -246,7 +255,7 @@ static CURLcode handshake(struct connectdata *conn,
 {
   struct SessionHandle *data = conn->data;
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
 {
   struct SessionHandle *data = conn->data;
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
-  gnutls_session session = conn->ssl[sockindex].session;
+  gnutls_session_t session = conn->ssl[sockindex].session;
   curl_socket_t sockfd = conn->sock[sockindex];
   long timeout_ms;
   int rc;
   curl_socket_t sockfd = conn->sock[sockindex];
   long timeout_ms;
   int rc;
@@ -298,8 +307,6 @@ static CURLcode handshake(struct connectdata *conn,
         gnutls_record_get_direction(session)?
         ssl_connect_2_writing:ssl_connect_2_reading;
       continue;
         gnutls_record_get_direction(session)?
         ssl_connect_2_writing:ssl_connect_2_reading;
       continue;
-      if(nonblocking)
-        return CURLE_OK;
     }
     else if((rc < 0) && !gnutls_error_is_fatal(rc)) {
       const char *strerr = NULL;
     }
     else if((rc < 0) && !gnutls_error_is_fatal(rc)) {
       const char *strerr = NULL;
@@ -335,7 +342,7 @@ static CURLcode handshake(struct connectdata *conn,
   }
 }
 
   }
 }
 
-static gnutls_x509_crt_fmt do_file_type(const char *type)
+static gnutls_x509_crt_fmt_t do_file_type(const char *type)
 {
   if(!type || !type[0])
     return GNUTLS_X509_FMT_PEM;
 {
   if(!type || !type[0])
     return GNUTLS_X509_FMT_PEM;
@@ -350,11 +357,8 @@ static CURLcode
 gtls_connect_step1(struct connectdata *conn,
                    int sockindex)
 {
 gtls_connect_step1(struct connectdata *conn,
                    int sockindex)
 {
-#ifndef USE_GNUTLS_PRIORITY_SET_DIRECT
-  static const int cert_type_priority[] = { GNUTLS_CRT_X509, 0 };
-#endif
   struct SessionHandle *data = conn->data;
   struct SessionHandle *data = conn->data;
-  gnutls_session session;
+  gnutls_session_t session;
   int rc;
   void *ssl_sessionid;
   size_t ssl_idsize;
   int rc;
   void *ssl_sessionid;
   size_t ssl_idsize;
@@ -364,6 +368,34 @@ gtls_connect_step1(struct connectdata *conn,
 #else
   struct in_addr addr;
 #endif
 #else
   struct in_addr addr;
 #endif
+#ifndef USE_GNUTLS_PRIORITY_SET_DIRECT
+  static const int cipher_priority[] = {
+  /* These two ciphers were added to GnuTLS as late as ver. 3.0.1,
+     but this code path is only ever used for ver. < 2.12.0.
+     GNUTLS_CIPHER_AES_128_GCM,
+     GNUTLS_CIPHER_AES_256_GCM,
+  */
+    GNUTLS_CIPHER_AES_128_CBC,
+    GNUTLS_CIPHER_AES_256_CBC,
+    GNUTLS_CIPHER_CAMELLIA_128_CBC,
+    GNUTLS_CIPHER_CAMELLIA_256_CBC,
+    GNUTLS_CIPHER_3DES_CBC,
+  };
+  static const int cert_type_priority[] = { GNUTLS_CRT_X509, 0 };
+  static int protocol_priority[] = { 0, 0, 0, 0 };
+#else
+#define GNUTLS_CIPHERS "NORMAL:-ARCFOUR-128:-CTYPE-ALL:+CTYPE-X509"
+/* If GnuTLS was compiled without support for SRP it will error out if SRP is
+   requested in the priority string, so treat it specially
+ */
+#define GNUTLS_SRP "+SRP"
+  const char* prioritylist;
+  const char *err = NULL;
+#endif
+#ifdef HAS_ALPN
+  int protocols_size = 2;
+  gnutls_datum_t protocols[2];
+#endif
 
   if(conn->ssl[sockindex].state == ssl_connection_complete)
     /* to make us tolerant against being called more than once for the
 
   if(conn->ssl[sockindex].state == ssl_connection_complete)
     /* to make us tolerant against being called more than once for the
@@ -471,32 +503,127 @@ gtls_connect_step1(struct connectdata *conn,
   if(rc != GNUTLS_E_SUCCESS)
     return CURLE_SSL_CONNECT_ERROR;
 
   if(rc != GNUTLS_E_SUCCESS)
     return CURLE_SSL_CONNECT_ERROR;
 
-  if(data->set.ssl.version == CURL_SSLVERSION_SSLv3) {
 #ifndef USE_GNUTLS_PRIORITY_SET_DIRECT
 #ifndef USE_GNUTLS_PRIORITY_SET_DIRECT
-    static const int protocol_priority[] = { GNUTLS_SSL3, 0 };
-    rc = gnutls_protocol_set_priority(session, protocol_priority);
-#else
-    const char *err;
-    /* the combination of the cipher ARCFOUR with SSL 3.0 and TLS 1.0 is not
-       vulnerable to attacks such as the BEAST, why this code now explicitly
-       asks for that
-    */
-    rc = gnutls_priority_set_direct(session,
-                                    "NORMAL:-VERS-TLS-ALL:+VERS-SSL3.0:"
-                                    "-CIPHER-ALL:+ARCFOUR-128",
-                                    &err);
-#endif
-    if(rc != GNUTLS_E_SUCCESS)
-      return CURLE_SSL_CONNECT_ERROR;
-  }
+  rc = gnutls_cipher_set_priority(session, cipher_priority);
+  if(rc != GNUTLS_E_SUCCESS)
+    return CURLE_SSL_CONNECT_ERROR;
 
 
-#ifndef USE_GNUTLS_PRIORITY_SET_DIRECT
   /* Sets the priority on the certificate types supported by gnutls. Priority
   /* Sets the priority on the certificate types supported by gnutls. Priority
-     is higher for types specified before others. After specifying the types
-     you want, you must append a 0. */
+   is higher for types specified before others. After specifying the types
+   you want, you must append a 0. */
   rc = gnutls_certificate_type_set_priority(session, cert_type_priority);
   if(rc != GNUTLS_E_SUCCESS)
     return CURLE_SSL_CONNECT_ERROR;
   rc = gnutls_certificate_type_set_priority(session, cert_type_priority);
   if(rc != GNUTLS_E_SUCCESS)
     return CURLE_SSL_CONNECT_ERROR;
+
+  if(data->set.ssl.cipher_list != NULL) {
+    failf(data, "can't pass a custom cipher list to older GnuTLS"
+          " versions");
+    return CURLE_SSL_CONNECT_ERROR;
+  }
+
+  switch (data->set.ssl.version) {
+    case CURL_SSLVERSION_SSLv3:
+      protocol_priority[0] = GNUTLS_SSL3;
+      break;
+    case CURL_SSLVERSION_DEFAULT:
+    case CURL_SSLVERSION_TLSv1:
+      protocol_priority[0] = GNUTLS_TLS1_0;
+      protocol_priority[1] = GNUTLS_TLS1_1;
+      protocol_priority[2] = GNUTLS_TLS1_2;
+      break;
+    case CURL_SSLVERSION_TLSv1_0:
+      protocol_priority[0] = GNUTLS_TLS1_0;
+      break;
+    case CURL_SSLVERSION_TLSv1_1:
+      protocol_priority[0] = GNUTLS_TLS1_1;
+      break;
+    case CURL_SSLVERSION_TLSv1_2:
+      protocol_priority[0] = GNUTLS_TLS1_2;
+    break;
+      case CURL_SSLVERSION_SSLv2:
+    default:
+      failf(data, "GnuTLS does not support SSLv2");
+      return CURLE_SSL_CONNECT_ERROR;
+      break;
+  }
+  rc = gnutls_protocol_set_priority(session, protocol_priority);
+  if(rc != GNUTLS_E_SUCCESS) {
+    failf(data, "Did you pass a valid GnuTLS cipher list?");
+    return CURLE_SSL_CONNECT_ERROR;
+  }
+
+#else
+  /* Ensure +SRP comes at the *end* of all relevant strings so that it can be
+   * removed if a run-time error indicates that SRP is not supported by this
+   * GnuTLS version */
+  switch (data->set.ssl.version) {
+    case CURL_SSLVERSION_SSLv3:
+      prioritylist = GNUTLS_CIPHERS ":-VERS-TLS-ALL:+VERS-SSL3.0";
+      sni = false;
+      break;
+    case CURL_SSLVERSION_DEFAULT:
+    case CURL_SSLVERSION_TLSv1:
+      prioritylist = GNUTLS_CIPHERS ":-VERS-SSL3.0:" GNUTLS_SRP;
+      break;
+    case CURL_SSLVERSION_TLSv1_0:
+      prioritylist = GNUTLS_CIPHERS ":-VERS-SSL3.0:-VERS-TLS-ALL:"
+                     "+VERS-TLS1.0:" GNUTLS_SRP;
+      break;
+    case CURL_SSLVERSION_TLSv1_1:
+      prioritylist = GNUTLS_CIPHERS ":-VERS-SSL3.0:-VERS-TLS-ALL:"
+                     "+VERS-TLS1.1:" GNUTLS_SRP;
+      break;
+    case CURL_SSLVERSION_TLSv1_2:
+      prioritylist = GNUTLS_CIPHERS ":-VERS-SSL3.0:-VERS-TLS-ALL:"
+                     "+VERS-TLS1.2:" GNUTLS_SRP;
+      break;
+    case CURL_SSLVERSION_SSLv2:
+    default:
+      failf(data, "GnuTLS does not support SSLv2");
+      return CURLE_SSL_CONNECT_ERROR;
+      break;
+  }
+  rc = gnutls_priority_set_direct(session, prioritylist, &err);
+  if((rc == GNUTLS_E_INVALID_REQUEST) && err) {
+    if(!strcmp(err, GNUTLS_SRP)) {
+      /* This GnuTLS was probably compiled without support for SRP.
+       * Note that fact and try again without it. */
+      int validprioritylen = curlx_uztosi(err - prioritylist);
+      char *prioritycopy = strdup(prioritylist);
+      if(!prioritycopy)
+        return CURLE_OUT_OF_MEMORY;
+
+      infof(data, "This GnuTLS does not support SRP\n");
+      if(validprioritylen)
+        /* Remove the :+SRP */
+        prioritycopy[validprioritylen - 1] = 0;
+      rc = gnutls_priority_set_direct(session, prioritycopy, &err);
+      free(prioritycopy);
+    }
+  }
+  if(rc != GNUTLS_E_SUCCESS) {
+    failf(data, "Error %d setting GnuTLS cipher list starting with %s",
+          rc, err);
+    return CURLE_SSL_CONNECT_ERROR;
+  }
+#endif
+
+#ifdef HAS_ALPN
+  if(data->set.httpversion == CURL_HTTP_VERSION_2_0) {
+    if(data->set.ssl_enable_alpn) {
+      protocols[0].data = NGHTTP2_PROTO_VERSION_ID;
+      protocols[0].size = NGHTTP2_PROTO_VERSION_ID_LEN;
+      protocols[1].data = ALPN_HTTP_1_1;
+      protocols[1].size = ALPN_HTTP_1_1_LENGTH;
+      gnutls_alpn_set_protocols(session, protocols, protocols_size, 0);
+      infof(data, "ALPN, offering %s, %s\n", NGHTTP2_PROTO_VERSION_ID,
+            ALPN_HTTP_1_1);
+      connssl->asked_for_h2 = TRUE;
+    }
+    else {
+      infof(data, "SSL, can't negotiate HTTP/2.0 without ALPN\n");
+    }
+  }
 #endif
 
   if(data->set.str[STRING_CERT]) {
 #endif
 
   if(data->set.str[STRING_CERT]) {
@@ -550,6 +677,62 @@ gtls_connect_step1(struct connectdata *conn,
   return CURLE_OK;
 }
 
   return CURLE_OK;
 }
 
+static CURLcode pkp_pin_peer_pubkey(gnutls_x509_crt_t cert,
+                                    const char *pinnedpubkey)
+{
+  /* Scratch */
+  size_t len1 = 0, len2 = 0;
+  unsigned char *buff1 = NULL;
+
+  gnutls_pubkey_t key = NULL;
+
+  /* Result is returned to caller */
+  int ret = 0;
+  CURLcode result = CURLE_SSL_PINNEDPUBKEYNOTMATCH;
+
+  /* if a path wasn't specified, don't pin */
+  if(NULL == pinnedpubkey)
+    return CURLE_OK;
+
+  if(NULL == cert)
+    return result;
+
+  do {
+    /* Begin Gyrations to get the public key     */
+    gnutls_pubkey_init(&key);
+
+    ret = gnutls_pubkey_import_x509(key, cert, 0);
+    if(ret < 0)
+      break; /* failed */
+
+    ret = gnutls_pubkey_export(key, GNUTLS_X509_FMT_DER, NULL, &len1);
+    if(ret != GNUTLS_E_SHORT_MEMORY_BUFFER || len1 == 0)
+      break; /* failed */
+
+    buff1 = malloc(len1);
+    if(NULL == buff1)
+      break; /* failed */
+
+    len2 = len1;
+
+    ret = gnutls_pubkey_export(key, GNUTLS_X509_FMT_DER, buff1, &len2);
+    if(ret < 0 || len1 != len2)
+      break; /* failed */
+
+    /* End Gyrations */
+
+    /* The one good exit point */
+    result = Curl_pin_peer_pubkey(pinnedpubkey, buff1, len1);
+  } while(0);
+
+  if(NULL != key)
+    gnutls_pubkey_deinit(key);
+
+  Curl_safefree(buff1);
+
+  return result;
+}
+
 static Curl_recv gtls_recv;
 static Curl_send gtls_send;
 
 static Curl_recv gtls_recv;
 static Curl_send gtls_send;
 
@@ -558,21 +741,24 @@ gtls_connect_step3(struct connectdata *conn,
                    int sockindex)
 {
   unsigned int cert_list_size;
                    int sockindex)
 {
   unsigned int cert_list_size;
-  const gnutls_datum *chainp;
+  const gnutls_datum_t *chainp;
   unsigned int verify_status;
   unsigned int verify_status;
-  gnutls_x509_crt x509_cert,x509_issuer;
-  gnutls_datum issuerp;
-  char certbuf[256]; /* big enough? */
+  gnutls_x509_crt_t x509_cert,x509_issuer;
+  gnutls_datum_t issuerp;
+  char certbuf[256] = ""; /* big enough? */
   size_t size;
   unsigned int algo;
   unsigned int bits;
   time_t certclock;
   const char *ptr;
   struct SessionHandle *data = conn->data;
   size_t size;
   unsigned int algo;
   unsigned int bits;
   time_t certclock;
   const char *ptr;
   struct SessionHandle *data = conn->data;
-  gnutls_session session = conn->ssl[sockindex].session;
+  gnutls_session_t session = conn->ssl[sockindex].session;
   int rc;
   int rc;
-  int incache;
+  bool incache;
   void *ssl_sessionid;
   void *ssl_sessionid;
+#ifdef HAS_ALPN
+  gnutls_datum_t proto;
+#endif
   CURLcode result = CURLE_OK;
 
   /* This function will return the peer's raw certificate (chain) as sent by
   CURLcode result = CURLE_OK;
 
   /* This function will return the peer's raw certificate (chain) as sent by
@@ -633,27 +819,28 @@ gtls_connect_step3(struct connectdata *conn,
     else
       infof(data, "\t server certificate verification OK\n");
   }
     else
       infof(data, "\t server certificate verification OK\n");
   }
-  else {
+  else
     infof(data, "\t server certificate verification SKIPPED\n");
     infof(data, "\t server certificate verification SKIPPED\n");
-    goto after_server_cert_verification;
-  }
 
   /* initialize an X.509 certificate structure. */
   gnutls_x509_crt_init(&x509_cert);
 
 
   /* initialize an X.509 certificate structure. */
   gnutls_x509_crt_init(&x509_cert);
 
-  /* convert the given DER or PEM encoded Certificate to the native
-     gnutls_x509_crt_t format */
-  gnutls_x509_crt_import(x509_cert, chainp, GNUTLS_X509_FMT_DER);
+  if(chainp)
+    /* convert the given DER or PEM encoded Certificate to the native
+       gnutls_x509_crt_t format */
+    gnutls_x509_crt_import(x509_cert, chainp, GNUTLS_X509_FMT_DER);
 
   if(data->set.ssl.issuercert) {
     gnutls_x509_crt_init(&x509_issuer);
     issuerp = load_file(data->set.ssl.issuercert);
     gnutls_x509_crt_import(x509_issuer, &issuerp, GNUTLS_X509_FMT_PEM);
     rc = gnutls_x509_crt_check_issuer(x509_cert,x509_issuer);
 
   if(data->set.ssl.issuercert) {
     gnutls_x509_crt_init(&x509_issuer);
     issuerp = load_file(data->set.ssl.issuercert);
     gnutls_x509_crt_import(x509_issuer, &issuerp, GNUTLS_X509_FMT_PEM);
     rc = gnutls_x509_crt_check_issuer(x509_cert,x509_issuer);
+    gnutls_x509_crt_deinit(x509_issuer);
     unload_file(issuerp);
     if(rc <= 0) {
       failf(data, "server certificate issuer check failed (IssuerCert: %s)",
             data->set.ssl.issuercert?data->set.ssl.issuercert:"none");
     unload_file(issuerp);
     if(rc <= 0) {
       failf(data, "server certificate issuer check failed (IssuerCert: %s)",
             data->set.ssl.issuercert?data->set.ssl.issuercert:"none");
+      gnutls_x509_crt_deinit(x509_cert);
       return CURLE_SSL_ISSUER_ERROR;
     }
     infof(data,"\t server certificate issuer check OK (Issuer Cert: %s)\n",
       return CURLE_SSL_ISSUER_ERROR;
     }
     infof(data,"\t server certificate issuer check OK (Issuer Cert: %s)\n",
@@ -677,7 +864,48 @@ gtls_connect_step3(struct connectdata *conn,
      alternative name PKIX extension. Returns non zero on success, and zero on
      failure. */
   rc = gnutls_x509_crt_check_hostname(x509_cert, conn->host.name);
      alternative name PKIX extension. Returns non zero on success, and zero on
      failure. */
   rc = gnutls_x509_crt_check_hostname(x509_cert, conn->host.name);
+#if GNUTLS_VERSION_NUMBER < 0x030306
+  /* Before 3.3.6, gnutls_x509_crt_check_hostname() didn't check IP
+     addresses. */
+  if(!rc) {
+#ifdef ENABLE_IPV6
+    #define use_addr in6_addr
+#else
+    #define use_addr in_addr
+#endif
+    unsigned char addrbuf[sizeof(struct use_addr)];
+    unsigned char certaddr[sizeof(struct use_addr)];
+    size_t addrlen = 0, certaddrlen;
+    int i;
+    int ret = 0;
+
+    if(Curl_inet_pton(AF_INET, conn->host.name, addrbuf) > 0)
+      addrlen = 4;
+#ifdef ENABLE_IPV6
+    else if(Curl_inet_pton(AF_INET6, conn->host.name, addrbuf) > 0)
+      addrlen = 16;
+#endif
 
 
+    if(addrlen) {
+      for(i=0; ; i++) {
+        certaddrlen = sizeof(certaddr);
+        ret = gnutls_x509_crt_get_subject_alt_name(x509_cert, i, certaddr,
+                                                   &certaddrlen, NULL);
+        /* If this happens, it wasn't an IP address. */
+        if(ret == GNUTLS_E_SHORT_MEMORY_BUFFER)
+          continue;
+        if(ret < 0)
+          break;
+        if(ret != GNUTLS_SAN_IPADDRESS)
+          continue;
+        if(certaddrlen == addrlen && !memcmp(addrbuf, certaddr, addrlen)) {
+          rc = 1;
+          break;
+        }
+      }
+    }
+  }
+#endif
   if(!rc) {
     if(data->set.ssl.verifyhost) {
       failf(data, "SSL: certificate subject name (%s) does not match "
   if(!rc) {
     if(data->set.ssl.verifyhost) {
       failf(data, "SSL: certificate subject name (%s) does not match "
@@ -696,38 +924,62 @@ gtls_connect_step3(struct connectdata *conn,
   certclock = gnutls_x509_crt_get_expiration_time(x509_cert);
 
   if(certclock == (time_t)-1) {
   certclock = gnutls_x509_crt_get_expiration_time(x509_cert);
 
   if(certclock == (time_t)-1) {
-    failf(data, "server cert expiration date verify failed");
-    return CURLE_SSL_CONNECT_ERROR;
-  }
-
-  if(certclock < time(NULL)) {
     if(data->set.ssl.verifypeer) {
     if(data->set.ssl.verifypeer) {
-      failf(data, "server certificate expiration date has passed.");
-      return CURLE_PEER_FAILED_VERIFICATION;
+      failf(data, "server cert expiration date verify failed");
+      gnutls_x509_crt_deinit(x509_cert);
+      return CURLE_SSL_CONNECT_ERROR;
     }
     else
     }
     else
-      infof(data, "\t server certificate expiration date FAILED\n");
+      infof(data, "\t server certificate expiration date verify FAILED\n");
+  }
+  else {
+    if(certclock < time(NULL)) {
+      if(data->set.ssl.verifypeer) {
+        failf(data, "server certificate expiration date has passed.");
+        gnutls_x509_crt_deinit(x509_cert);
+        return CURLE_PEER_FAILED_VERIFICATION;
+      }
+      else
+        infof(data, "\t server certificate expiration date FAILED\n");
+    }
+    else
+      infof(data, "\t server certificate expiration date OK\n");
   }
   }
-  else
-    infof(data, "\t server certificate expiration date OK\n");
 
   certclock = gnutls_x509_crt_get_activation_time(x509_cert);
 
   if(certclock == (time_t)-1) {
 
   certclock = gnutls_x509_crt_get_activation_time(x509_cert);
 
   if(certclock == (time_t)-1) {
-    failf(data, "server cert activation date verify failed");
-    return CURLE_SSL_CONNECT_ERROR;
-  }
-
-  if(certclock > time(NULL)) {
     if(data->set.ssl.verifypeer) {
     if(data->set.ssl.verifypeer) {
-      failf(data, "server certificate not activated yet.");
-      return CURLE_PEER_FAILED_VERIFICATION;
+      failf(data, "server cert activation date verify failed");
+      gnutls_x509_crt_deinit(x509_cert);
+      return CURLE_SSL_CONNECT_ERROR;
     }
     else
     }
     else
-      infof(data, "\t server certificate activation date FAILED\n");
+      infof(data, "\t server certificate activation date verify FAILED\n");
+  }
+  else {
+    if(certclock > time(NULL)) {
+      if(data->set.ssl.verifypeer) {
+        failf(data, "server certificate not activated yet.");
+        gnutls_x509_crt_deinit(x509_cert);
+        return CURLE_PEER_FAILED_VERIFICATION;
+      }
+      else
+        infof(data, "\t server certificate activation date FAILED\n");
+    }
+    else
+      infof(data, "\t server certificate activation date OK\n");
+  }
+
+  ptr = data->set.str[STRING_SSL_PINNEDPUBLICKEY];
+  if(ptr) {
+    result = pkp_pin_peer_pubkey(x509_cert, ptr);
+    if(result != CURLE_OK) {
+      failf(data, "SSL: public key does not match pinned public key!");
+      gnutls_x509_crt_deinit(x509_cert);
+      return result;
+    }
   }
   }
-  else
-    infof(data, "\t server certificate activation date OK\n");
 
   /* Show:
 
 
   /* Show:
 
@@ -766,8 +1018,6 @@ gtls_connect_step3(struct connectdata *conn,
 
   gnutls_x509_crt_deinit(x509_cert);
 
 
   gnutls_x509_crt_deinit(x509_cert);
 
-after_server_cert_verification:
-
   /* compression algorithm (if any) */
   ptr = gnutls_compression_get_name(gnutls_compression_get(session));
   /* the *_get_name() says "NULL" if GNUTLS_COMP_NULL is returned */
   /* compression algorithm (if any) */
   ptr = gnutls_compression_get_name(gnutls_compression_get(session));
   /* the *_get_name() says "NULL" if GNUTLS_COMP_NULL is returned */
@@ -781,6 +1031,29 @@ after_server_cert_verification:
   ptr = gnutls_mac_get_name(gnutls_mac_get(session));
   infof(data, "\t MAC: %s\n", ptr);
 
   ptr = gnutls_mac_get_name(gnutls_mac_get(session));
   infof(data, "\t MAC: %s\n", ptr);
 
+#ifdef HAS_ALPN
+  if(data->set.ssl_enable_alpn) {
+    rc = gnutls_alpn_get_selected_protocol(session, &proto);
+    if(rc == 0) {
+      infof(data, "ALPN, server accepted to use %.*s\n", proto.size,
+          proto.data);
+
+      if(proto.size == NGHTTP2_PROTO_VERSION_ID_LEN &&
+        memcmp(NGHTTP2_PROTO_VERSION_ID, proto.data,
+        NGHTTP2_PROTO_VERSION_ID_LEN) == 0) {
+        conn->negnpn = NPN_HTTP2;
+      }
+      else if(proto.size == ALPN_HTTP_1_1_LENGTH && memcmp(ALPN_HTTP_1_1,
+          proto.data, ALPN_HTTP_1_1_LENGTH) == 0) {
+        conn->negnpn = NPN_HTTP1_1;
+      }
+    }
+    else if(connssl->asked_for_h2) {
+      infof(data, "ALPN, server did not agree to a protocol\n");
+    }
+  }
+#endif
+
   conn->ssl[sockindex].state = ssl_connection_complete;
   conn->recv[sockindex] = gtls_recv;
   conn->send[sockindex] = gtls_send;
   conn->ssl[sockindex].state = ssl_connection_complete;
   conn->recv[sockindex] = gtls_recv;
   conn->send[sockindex] = gtls_send;
@@ -791,7 +1064,7 @@ after_server_cert_verification:
        might've been rejected and then a new one is in use now and we need to
        detect that. */
     void *connect_sessionid;
        might've been rejected and then a new one is in use now and we need to
        detect that. */
     void *connect_sessionid;
-    size_t connect_idsize;
+    size_t connect_idsize = 0;
 
     /* get the session ID data size */
     gnutls_session_get_data(session, NULL, &connect_idsize);
 
     /* get the session ID data size */
     gnutls_session_get_data(session, NULL, &connect_idsize);
@@ -878,12 +1151,12 @@ Curl_gtls_connect(struct connectdata *conn,
                   int sockindex)
 
 {
                   int sockindex)
 
 {
-  CURLcode retcode;
+  CURLcode result;
   bool done = FALSE;
 
   bool done = FALSE;
 
-  retcode = gtls_connect_common(conn, sockindex, FALSE, &done);
-  if(retcode)
-    return retcode;
+  result = gtls_connect_common(conn, sockindex, FALSE, &done);
+  if(result)
+    return result;
 
   DEBUGASSERT(done);
 
 
   DEBUGASSERT(done);
 
@@ -1031,10 +1304,10 @@ static ssize_t gtls_recv(struct connectdata *conn, /* connection data */
   if(ret == GNUTLS_E_REHANDSHAKE) {
     /* BLOCKING call, this is bad but a work-around for now. Fixing this "the
        proper way" takes a whole lot of work. */
   if(ret == GNUTLS_E_REHANDSHAKE) {
     /* BLOCKING call, this is bad but a work-around for now. Fixing this "the
        proper way" takes a whole lot of work. */
-    CURLcode rc = handshake(conn, num, FALSE, FALSE);
-    if(rc)
+    CURLcode result = handshake(conn, num, FALSE, FALSE);
+    if(result)
       /* handshake() writes error message on its own */
       /* handshake() writes error message on its own */
-      *curlcode = rc;
+      *curlcode = result;
     else
       *curlcode = CURLE_AGAIN; /* then return as if this was a wouldblock */
     return -1;
     else
       *curlcode = CURLE_AGAIN; /* then return as if this was a wouldblock */
     return -1;
@@ -1060,16 +1333,15 @@ size_t Curl_gtls_version(char *buffer, size_t size)
   return snprintf(buffer, size, "GnuTLS/%s", gnutls_check_version(NULL));
 }
 
   return snprintf(buffer, size, "GnuTLS/%s", gnutls_check_version(NULL));
 }
 
-int Curl_gtls_seed(struct SessionHandle *data)
+#ifndef USE_GNUTLS_NETTLE
+static int Curl_gtls_seed(struct SessionHandle *data)
 {
   /* we have the "SSL is seeded" boolean static to prevent multiple
      time-consuming seedings in vain */
   static bool ssl_seeded = FALSE;
 
   /* Quickly add a bit of entropy */
 {
   /* we have the "SSL is seeded" boolean static to prevent multiple
      time-consuming seedings in vain */
   static bool ssl_seeded = FALSE;
 
   /* Quickly add a bit of entropy */
-#ifndef USE_GNUTLS_NETTLE
   gcry_fast_random_poll();
   gcry_fast_random_poll();
-#endif
 
   if(!ssl_seeded || data->set.str[STRING_SSL_RANDOM_FILE] ||
      data->set.str[STRING_SSL_EGDSOCKET]) {
 
   if(!ssl_seeded || data->set.str[STRING_SSL_RANDOM_FILE] ||
      data->set.str[STRING_SSL_EGDSOCKET]) {
@@ -1083,18 +1355,22 @@ int Curl_gtls_seed(struct SessionHandle *data)
   }
   return 0;
 }
   }
   return 0;
 }
+#endif
 
 
-void Curl_gtls_random(struct SessionHandle *data,
-                      unsigned char *entropy,
-                      size_t length)
+/* data might be NULL! */
+int Curl_gtls_random(struct SessionHandle *data,
+                     unsigned char *entropy,
+                     size_t length)
 {
 #if defined(USE_GNUTLS_NETTLE)
   (void)data;
   gnutls_rnd(GNUTLS_RND_RANDOM, entropy, length);
 #elif defined(USE_GNUTLS)
 {
 #if defined(USE_GNUTLS_NETTLE)
   (void)data;
   gnutls_rnd(GNUTLS_RND_RANDOM, entropy, length);
 #elif defined(USE_GNUTLS)
-  Curl_gtls_seed(data); /* Initiate the seed if not already done */
+  if(data)
+    Curl_gtls_seed(data); /* Initiate the seed if not already done */
   gcry_randomize(entropy, length, GCRY_STRONG_RANDOM);
 #endif
   gcry_randomize(entropy, length, GCRY_STRONG_RANDOM);
 #endif
+  return 0;
 }
 
 void Curl_gtls_md5sum(unsigned char *tmp, /* input */
 }
 
 void Curl_gtls_md5sum(unsigned char *tmp, /* input */
@@ -1105,8 +1381,8 @@ void Curl_gtls_md5sum(unsigned char *tmp, /* input */
 #if defined(USE_GNUTLS_NETTLE)
   struct md5_ctx MD5pw;
   md5_init(&MD5pw);
 #if defined(USE_GNUTLS_NETTLE)
   struct md5_ctx MD5pw;
   md5_init(&MD5pw);
-  md5_update(&MD5pw, tmplen, tmp);
-  md5_digest(&MD5pw, md5len, md5sum);
+  md5_update(&MD5pw, (unsigned int)tmplen, tmp);
+  md5_digest(&MD5pw, (unsigned int)md5len, md5sum);
 #elif defined(USE_GNUTLS)
   gcry_md_hd_t MD5pw;
   gcry_md_open(&MD5pw, GCRY_MD_MD5, 0);
 #elif defined(USE_GNUTLS)
   gcry_md_hd_t MD5pw;
   gcry_md_open(&MD5pw, GCRY_MD_MD5, 0);
similarity index 80%
rename from lib/gtls.h
rename to lib/vtls/gtls.h
index 453542e..12460be 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -45,20 +45,14 @@ void Curl_gtls_close(struct connectdata *conn, int sockindex);
 void Curl_gtls_session_free(void *ptr);
 size_t Curl_gtls_version(char *buffer, size_t size);
 int Curl_gtls_shutdown(struct connectdata *conn, int sockindex);
 void Curl_gtls_session_free(void *ptr);
 size_t Curl_gtls_version(char *buffer, size_t size);
 int Curl_gtls_shutdown(struct connectdata *conn, int sockindex);
-int Curl_gtls_seed(struct SessionHandle *data);
-
-void Curl_gtls_random(struct SessionHandle *data,
-                      unsigned char *entropy,
-                      size_t length);
+int Curl_gtls_random(struct SessionHandle *data,
+                     unsigned char *entropy,
+                     size_t length);
 void Curl_gtls_md5sum(unsigned char *tmp, /* input */
                       size_t tmplen,
                       unsigned char *md5sum, /* output */
                       size_t md5len);
 
 void Curl_gtls_md5sum(unsigned char *tmp, /* input */
                       size_t tmplen,
                       unsigned char *md5sum, /* output */
                       size_t md5len);
 
-/* this backend provides these functions: */
-#define have_curlssl_random 1
-#define have_curlssl_md5sum 1
-
 /* API setup for GnuTLS */
 #define curlssl_init Curl_gtls_init
 #define curlssl_cleanup Curl_gtls_cleanup
 /* API setup for GnuTLS */
 #define curlssl_init Curl_gtls_init
 #define curlssl_cleanup Curl_gtls_cleanup
@@ -68,14 +62,15 @@ void Curl_gtls_md5sum(unsigned char *tmp, /* input */
 #define curlssl_close_all Curl_gtls_close_all
 #define curlssl_close Curl_gtls_close
 #define curlssl_shutdown(x,y) Curl_gtls_shutdown(x,y)
 #define curlssl_close_all Curl_gtls_close_all
 #define curlssl_close Curl_gtls_close
 #define curlssl_shutdown(x,y) Curl_gtls_shutdown(x,y)
-#define curlssl_set_engine(x,y) (x=x, y=y, CURLE_NOT_BUILT_IN)
-#define curlssl_set_engine_default(x) (x=x, CURLE_NOT_BUILT_IN)
-#define curlssl_engines_list(x) (x=x, (struct curl_slist *)NULL)
+#define curlssl_set_engine(x,y) ((void)x, (void)y, CURLE_NOT_BUILT_IN)
+#define curlssl_set_engine_default(x) ((void)x, CURLE_NOT_BUILT_IN)
+#define curlssl_engines_list(x) ((void)x, (struct curl_slist *)NULL)
 #define curlssl_version Curl_gtls_version
 #define curlssl_version Curl_gtls_version
-#define curlssl_check_cxn(x) (x=x, -1)
-#define curlssl_data_pending(x,y) (x=x, y=y, 0)
+#define curlssl_check_cxn(x) ((void)x, -1)
+#define curlssl_data_pending(x,y) ((void)x, (void)y, 0)
 #define curlssl_random(x,y,z) Curl_gtls_random(x,y,z)
 #define curlssl_md5sum(a,b,c,d) Curl_gtls_md5sum(a,b,c,d)
 #define curlssl_random(x,y,z) Curl_gtls_random(x,y,z)
 #define curlssl_md5sum(a,b,c,d) Curl_gtls_md5sum(a,b,c,d)
+#define CURL_SSL_BACKEND CURLSSLBACKEND_GNUTLS
 
 #endif /* USE_GNUTLS */
 #endif /* HEADER_CURL_GTLS_H */
 
 #endif /* USE_GNUTLS */
 #endif /* HEADER_CURL_GTLS_H */
similarity index 68%
rename from lib/nss.c
rename to lib/vtls/nss.c
index cc3d9c9..dd83a9d 100644 (file)
--- a/lib/nss.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -22,7 +22,7 @@
 
 /*
  * Source file for all NSS-specific code for the TLS/SSL layer. No code
 
 /*
  * Source file for all NSS-specific code for the TLS/SSL layer. No code
- * but sslgen.c should ever call or use these functions.
+ * but vtls.c should ever call or use these functions.
  */
 
 #include "curl_setup.h"
  */
 
 #include "curl_setup.h"
@@ -36,7 +36,7 @@
 #include "connect.h"
 #include "strequal.h"
 #include "select.h"
 #include "connect.h"
 #include "strequal.h"
 #include "select.h"
-#include "sslgen.h"
+#include "vtls.h"
 #include "llist.h"
 
 #define _MPRINTF_REPLACE /* use the internal *printf() functions */
 #include "llist.h"
 
 #define _MPRINTF_REPLACE /* use the internal *printf() functions */
@@ -63,6 +63,7 @@
 #include "curl_memory.h"
 #include "rawstr.h"
 #include "warnless.h"
 #include "curl_memory.h"
 #include "rawstr.h"
 #include "warnless.h"
+#include "x509asn1.h"
 
 /* The last #include file should be: */
 #include "memdebug.h"
 
 /* The last #include file should be: */
 #include "memdebug.h"
@@ -76,9 +77,8 @@ PRFileDesc *PR_ImportTCPSocket(PRInt32 osfd);
 
 PRLock * nss_initlock = NULL;
 PRLock * nss_crllock = NULL;
 
 PRLock * nss_initlock = NULL;
 PRLock * nss_crllock = NULL;
-#ifdef HAVE_NSS_INITCONTEXT
+struct curl_llist *nss_crl_list = NULL;
 NSSInitContext * nss_context = NULL;
 NSSInitContext * nss_context = NULL;
-#endif
 
 volatile int initialized = 0;
 
 
 volatile int initialized = 0;
 
@@ -124,9 +124,12 @@ static const cipher_s cipherlist[] = {
   {"rsa_des_56_sha",             TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA},
   {"rsa_rc4_56_sha",             TLS_RSA_EXPORT1024_WITH_RC4_56_SHA},
   /* AES ciphers. */
   {"rsa_des_56_sha",             TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA},
   {"rsa_rc4_56_sha",             TLS_RSA_EXPORT1024_WITH_RC4_56_SHA},
   /* AES ciphers. */
+  {"dhe_dss_aes_128_cbc_sha",    TLS_DHE_DSS_WITH_AES_128_CBC_SHA},
+  {"dhe_dss_aes_256_cbc_sha",    TLS_DHE_DSS_WITH_AES_256_CBC_SHA},
+  {"dhe_rsa_aes_128_cbc_sha",    TLS_DHE_RSA_WITH_AES_128_CBC_SHA},
+  {"dhe_rsa_aes_256_cbc_sha",    TLS_DHE_RSA_WITH_AES_256_CBC_SHA},
   {"rsa_aes_128_sha",            TLS_RSA_WITH_AES_128_CBC_SHA},
   {"rsa_aes_256_sha",            TLS_RSA_WITH_AES_256_CBC_SHA},
   {"rsa_aes_128_sha",            TLS_RSA_WITH_AES_128_CBC_SHA},
   {"rsa_aes_256_sha",            TLS_RSA_WITH_AES_256_CBC_SHA},
-#ifdef NSS_ENABLE_ECC
   /* ECC ciphers. */
   {"ecdh_ecdsa_null_sha",        TLS_ECDH_ECDSA_WITH_NULL_SHA},
   {"ecdh_ecdsa_rc4_128_sha",     TLS_ECDH_ECDSA_WITH_RC4_128_SHA},
   /* ECC ciphers. */
   {"ecdh_ecdsa_null_sha",        TLS_ECDH_ECDSA_WITH_NULL_SHA},
   {"ecdh_ecdsa_rc4_128_sha",     TLS_ECDH_ECDSA_WITH_RC4_128_SHA},
@@ -153,24 +156,35 @@ static const cipher_s cipherlist[] = {
   {"ecdh_anon_3des_sha",         TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA},
   {"ecdh_anon_aes_128_sha",      TLS_ECDH_anon_WITH_AES_128_CBC_SHA},
   {"ecdh_anon_aes_256_sha",      TLS_ECDH_anon_WITH_AES_256_CBC_SHA},
   {"ecdh_anon_3des_sha",         TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA},
   {"ecdh_anon_aes_128_sha",      TLS_ECDH_anon_WITH_AES_128_CBC_SHA},
   {"ecdh_anon_aes_256_sha",      TLS_ECDH_anon_WITH_AES_256_CBC_SHA},
+#ifdef TLS_RSA_WITH_NULL_SHA256
+  /* new HMAC-SHA256 cipher suites specified in RFC */
+  {"rsa_null_sha_256",                TLS_RSA_WITH_NULL_SHA256},
+  {"rsa_aes_128_cbc_sha_256",         TLS_RSA_WITH_AES_128_CBC_SHA256},
+  {"rsa_aes_256_cbc_sha_256",         TLS_RSA_WITH_AES_256_CBC_SHA256},
+  {"dhe_rsa_aes_128_cbc_sha_256",     TLS_DHE_RSA_WITH_AES_128_CBC_SHA256},
+  {"dhe_rsa_aes_256_cbc_sha_256",     TLS_DHE_RSA_WITH_AES_256_CBC_SHA256},
+  {"ecdhe_ecdsa_aes_128_cbc_sha_256", TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256},
+  {"ecdhe_rsa_aes_128_cbc_sha_256",   TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256},
+#endif
+#ifdef TLS_RSA_WITH_AES_128_GCM_SHA256
+  /* AES GCM cipher suites in RFC 5288 and RFC 5289 */
+  {"rsa_aes_128_gcm_sha_256",         TLS_RSA_WITH_AES_128_GCM_SHA256},
+  {"dhe_rsa_aes_128_gcm_sha_256",     TLS_DHE_RSA_WITH_AES_128_GCM_SHA256},
+  {"dhe_dss_aes_128_gcm_sha_256",     TLS_DHE_DSS_WITH_AES_128_GCM_SHA256},
+  {"ecdhe_ecdsa_aes_128_gcm_sha_256", TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256},
+  {"ecdh_ecdsa_aes_128_gcm_sha_256",  TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256},
+  {"ecdhe_rsa_aes_128_gcm_sha_256",   TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256},
+  {"ecdh_rsa_aes_128_gcm_sha_256",    TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256},
 #endif
 #endif
-};
-
-/* following ciphers are new in NSS 3.4 and not enabled by default, therefore
-   they are enabled explicitly */
-static const int enable_ciphers_by_default[] = {
-  TLS_DHE_DSS_WITH_AES_128_CBC_SHA,
-  TLS_DHE_DSS_WITH_AES_256_CBC_SHA,
-  TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
-  TLS_DHE_RSA_WITH_AES_256_CBC_SHA,
-  TLS_RSA_WITH_AES_128_CBC_SHA,
-  TLS_RSA_WITH_AES_256_CBC_SHA,
-  SSL_NULL_WITH_NULL_NULL
 };
 
 static const char* pem_library = "libnsspem.so";
 SECMODModule* mod = NULL;
 
 };
 
 static const char* pem_library = "libnsspem.so";
 SECMODModule* mod = NULL;
 
+/* NSPR I/O layer we use to detect blocking direction during SSL handshake */
+static PRDescIdentity nspr_io_identity = PR_INVALID_IO_LAYER;
+static PRIOMethods nspr_io_methods;
+
 static const char* nss_error_to_name(PRErrorCode code)
 {
   const char *name = PR_ErrorToName(code);
 static const char* nss_error_to_name(PRErrorCode code)
 {
   const char *name = PR_ErrorToName(code);
@@ -192,14 +206,13 @@ static SECStatus set_ciphers(struct SessionHandle *data, PRFileDesc * model,
   PRBool cipher_state[NUM_OF_CIPHERS];
   PRBool found;
   char *cipher;
   PRBool cipher_state[NUM_OF_CIPHERS];
   PRBool found;
   char *cipher;
-  SECStatus rv;
 
   /* First disable all ciphers. This uses a different max value in case
    * NSS adds more ciphers later we don't want them available by
    * accident
    */
   for(i=0; i<SSL_NumImplementedCiphers; i++) {
 
   /* First disable all ciphers. This uses a different max value in case
    * NSS adds more ciphers later we don't want them available by
    * accident
    */
   for(i=0; i<SSL_NumImplementedCiphers; i++) {
-    SSL_CipherPrefSet(model, SSL_ImplementedCiphers[i], SSL_NOT_ALLOWED);
+    SSL_CipherPrefSet(model, SSL_ImplementedCiphers[i], PR_FALSE);
   }
 
   /* Set every entry in our list to false */
   }
 
   /* Set every entry in our list to false */
@@ -239,8 +252,10 @@ static SECStatus set_ciphers(struct SessionHandle *data, PRFileDesc * model,
 
   /* Finally actually enable the selected ciphers */
   for(i=0; i<NUM_OF_CIPHERS; i++) {
 
   /* Finally actually enable the selected ciphers */
   for(i=0; i<NUM_OF_CIPHERS; i++) {
-    rv = SSL_CipherPrefSet(model, cipherlist[i].num, cipher_state[i]);
-    if(rv != SECSuccess) {
+    if(!cipher_state[i])
+      continue;
+
+    if(SSL_CipherPrefSet(model, cipherlist[i].num, PR_TRUE) != SECSuccess) {
       failf(data, "cipher-suite not supported by NSS: %s", cipherlist[i].name);
       return SECFailure;
     }
       failf(data, "cipher-suite not supported by NSS: %s", cipherlist[i].name);
       return SECFailure;
     }
@@ -328,7 +343,7 @@ static CURLcode nss_create_object(struct ssl_connect_data *ssl,
   CK_BBOOL ckfalse = CK_FALSE;
   CK_ATTRIBUTE attrs[/* max count of attributes */ 4];
   int attr_cnt = 0;
   CK_BBOOL ckfalse = CK_FALSE;
   CK_ATTRIBUTE attrs[/* max count of attributes */ 4];
   int attr_cnt = 0;
-  CURLcode err = (cacert)
+  CURLcode result = (cacert)
     ? CURLE_SSL_CACERT_BADFILE
     : CURLE_SSL_CERTPROBLEM;
 
     ? CURLE_SSL_CACERT_BADFILE
     : CURLE_SSL_CERTPROBLEM;
 
@@ -340,7 +355,7 @@ static CURLcode nss_create_object(struct ssl_connect_data *ssl,
   slot = PK11_FindSlotByName(slot_name);
   free(slot_name);
   if(!slot)
   slot = PK11_FindSlotByName(slot_name);
   free(slot_name);
   if(!slot)
-    return err;
+    return result;
 
   PK11_SETATTRS(attrs, attr_cnt, CKA_CLASS, &obj_class, sizeof(obj_class));
   PK11_SETATTRS(attrs, attr_cnt, CKA_TOKEN, &cktrue, sizeof(CK_BBOOL));
 
   PK11_SETATTRS(attrs, attr_cnt, CKA_CLASS, &obj_class, sizeof(obj_class));
   PK11_SETATTRS(attrs, attr_cnt, CKA_TOKEN, &cktrue, sizeof(CK_BBOOL));
@@ -355,7 +370,7 @@ static CURLcode nss_create_object(struct ssl_connect_data *ssl,
   obj = PK11_CreateGenericObject(slot, attrs, attr_cnt, PR_FALSE);
   PK11_FreeSlot(slot);
   if(!obj)
   obj = PK11_CreateGenericObject(slot, attrs, attr_cnt, PR_FALSE);
   PK11_FreeSlot(slot);
   if(!obj)
-    return err;
+    return result;
 
   if(!Curl_llist_insert_next(ssl->obj_list, ssl->obj_list->tail, obj)) {
     PK11_DestroyGenericObject(obj);
 
   if(!Curl_llist_insert_next(ssl->obj_list, ssl->obj_list->tail, obj)) {
     PK11_DestroyGenericObject(obj);
@@ -379,19 +394,27 @@ static void nss_destroy_object(void *user, void *ptr)
   PK11_DestroyGenericObject(obj);
 }
 
   PK11_DestroyGenericObject(obj);
 }
 
+/* same as nss_destroy_object() but for CRL items */
+static void nss_destroy_crl_item(void *user, void *ptr)
+{
+  SECItem *crl_der = (SECItem *)ptr;
+  (void) user;
+  SECITEM_FreeItem(crl_der, PR_TRUE);
+}
+
 static CURLcode nss_load_cert(struct ssl_connect_data *ssl,
                               const char *filename, PRBool cacert)
 {
 static CURLcode nss_load_cert(struct ssl_connect_data *ssl,
                               const char *filename, PRBool cacert)
 {
-  CURLcode err = (cacert)
+  CURLcode result = (cacert)
     ? CURLE_SSL_CACERT_BADFILE
     : CURLE_SSL_CERTPROBLEM;
 
   /* libnsspem.so leaks memory if the requested file does not exist.  For more
    * details, go to <https://bugzilla.redhat.com/734760>. */
   if(is_file(filename))
     ? CURLE_SSL_CACERT_BADFILE
     : CURLE_SSL_CERTPROBLEM;
 
   /* libnsspem.so leaks memory if the requested file does not exist.  For more
    * details, go to <https://bugzilla.redhat.com/734760>. */
   if(is_file(filename))
-    err = nss_create_object(ssl, CKO_CERTIFICATE, filename, cacert);
+    result = nss_create_object(ssl, CKO_CERTIFICATE, filename, cacert);
 
 
-  if(CURLE_OK == err && !cacert) {
+  if(!result && !cacert) {
     /* we have successfully loaded a client certificate */
     CERTCertificate *cert;
     char *nickname = NULL;
     /* we have successfully loaded a client certificate */
     CERTCertificate *cert;
     char *nickname = NULL;
@@ -413,47 +436,54 @@ static CURLcode nss_load_cert(struct ssl_connect_data *ssl,
     }
   }
 
     }
   }
 
-  return err;
+  return result;
 }
 
 /* add given CRL to cache if it is not already there */
 }
 
 /* add given CRL to cache if it is not already there */
-static SECStatus nss_cache_crl(SECItem *crlDER)
+static CURLcode nss_cache_crl(SECItem *crl_der)
 {
   CERTCertDBHandle *db = CERT_GetDefaultCertDB();
 {
   CERTCertDBHandle *db = CERT_GetDefaultCertDB();
-  CERTSignedCrl *crl = SEC_FindCrlByDERCert(db, crlDER, 0);
+  CERTSignedCrl *crl = SEC_FindCrlByDERCert(db, crl_der, 0);
   if(crl) {
     /* CRL already cached */
     SEC_DestroyCrl(crl);
   if(crl) {
     /* CRL already cached */
     SEC_DestroyCrl(crl);
-    SECITEM_FreeItem(crlDER, PR_FALSE);
-    return SECSuccess;
+    SECITEM_FreeItem(crl_der, PR_TRUE);
+    return CURLE_OK;
   }
 
   }
 
-  /* acquire lock before call of CERT_CacheCRL() */
+  /* acquire lock before call of CERT_CacheCRL() and accessing nss_crl_list */
   PR_Lock(nss_crllock);
   PR_Lock(nss_crllock);
-  if(SECSuccess != CERT_CacheCRL(db, crlDER)) {
+
+  /* store the CRL item so that we can free it in Curl_nss_cleanup() */
+  if(!Curl_llist_insert_next(nss_crl_list, nss_crl_list->tail, crl_der)) {
+    SECITEM_FreeItem(crl_der, PR_TRUE);
+    PR_Unlock(nss_crllock);
+    return CURLE_OUT_OF_MEMORY;
+  }
+
+  if(SECSuccess != CERT_CacheCRL(db, crl_der)) {
     /* unable to cache CRL */
     PR_Unlock(nss_crllock);
     /* unable to cache CRL */
     PR_Unlock(nss_crllock);
-    SECITEM_FreeItem(crlDER, PR_FALSE);
-    return SECFailure;
+    return CURLE_SSL_CRL_BADFILE;
   }
 
   /* we need to clear session cache, so that the CRL could take effect */
   SSL_ClearSessionCache();
   PR_Unlock(nss_crllock);
   }
 
   /* we need to clear session cache, so that the CRL could take effect */
   SSL_ClearSessionCache();
   PR_Unlock(nss_crllock);
-  return SECSuccess;
+  return CURLE_OK;
 }
 
 }
 
-static SECStatus nss_load_crl(const char* crlfilename)
+static CURLcode nss_load_crl(const char* crlfilename)
 {
   PRFileDesc *infile;
   PRFileInfo  info;
   SECItem filedata = { 0, NULL, 0 };
 {
   PRFileDesc *infile;
   PRFileInfo  info;
   SECItem filedata = { 0, NULL, 0 };
-  SECItem crlDER = { 0, NULL, 0 };
+  SECItem *crl_der = NULL;
   char *body;
 
   infile = PR_Open(crlfilename, PR_RDONLY, 0);
   if(!infile)
   char *body;
 
   infile = PR_Open(crlfilename, PR_RDONLY, 0);
   if(!infile)
-    return SECFailure;
+    return CURLE_SSL_CRL_BADFILE;
 
   if(PR_SUCCESS != PR_GetOpenFileInfo(infile, &info))
     goto fail;
 
   if(PR_SUCCESS != PR_GetOpenFileInfo(infile, &info))
     goto fail;
@@ -464,6 +494,10 @@ static SECStatus nss_load_crl(const char* crlfilename)
   if(info.size != PR_Read(infile, filedata.data, info.size))
     goto fail;
 
   if(info.size != PR_Read(infile, filedata.data, info.size))
     goto fail;
 
+  crl_der = SECITEM_AllocItem(NULL, NULL, 0U);
+  if(!crl_der)
+    goto fail;
+
   /* place a trailing zero right after the visible data */
   body = (char*)filedata.data;
   body[--filedata.len] = '\0';
   /* place a trailing zero right after the visible data */
   body = (char*)filedata.data;
   body[--filedata.len] = '\0';
@@ -484,22 +518,23 @@ static SECStatus nss_load_crl(const char* crlfilename)
 
     /* retrieve DER from ASCII */
     *trailer = '\0';
 
     /* retrieve DER from ASCII */
     *trailer = '\0';
-    if(ATOB_ConvertAsciiToItem(&crlDER, begin))
+    if(ATOB_ConvertAsciiToItem(crl_der, begin))
       goto fail;
 
     SECITEM_FreeItem(&filedata, PR_FALSE);
   }
   else
     /* assume DER */
       goto fail;
 
     SECITEM_FreeItem(&filedata, PR_FALSE);
   }
   else
     /* assume DER */
-    crlDER = filedata;
+    *crl_der = filedata;
 
   PR_Close(infile);
 
   PR_Close(infile);
-  return nss_cache_crl(&crlDER);
+  return nss_cache_crl(crl_der);
 
 fail:
   PR_Close(infile);
 
 fail:
   PR_Close(infile);
+  SECITEM_FreeItem(crl_der, PR_TRUE);
   SECITEM_FreeItem(&filedata, PR_FALSE);
   SECITEM_FreeItem(&filedata, PR_FALSE);
-  return SECFailure;
+  return CURLE_SSL_CRL_BADFILE;
 }
 
 static CURLcode nss_load_key(struct connectdata *conn, int sockindex,
 }
 
 static CURLcode nss_load_key(struct connectdata *conn, int sockindex,
@@ -507,14 +542,15 @@ static CURLcode nss_load_key(struct connectdata *conn, int sockindex,
 {
   PK11SlotInfo *slot;
   SECStatus status;
 {
   PK11SlotInfo *slot;
   SECStatus status;
-  CURLcode rv;
+  CURLcode result;
   struct ssl_connect_data *ssl = conn->ssl;
   struct ssl_connect_data *ssl = conn->ssl;
+
   (void)sockindex; /* unused */
 
   (void)sockindex; /* unused */
 
-  rv = nss_create_object(ssl, CKO_PRIVATE_KEY, key_file, FALSE);
-  if(CURLE_OK != rv) {
+  result = nss_create_object(ssl, CKO_PRIVATE_KEY, key_file, FALSE);
+  if(result) {
     PR_SetError(SEC_ERROR_BAD_KEY, 0);
     PR_SetError(SEC_ERROR_BAD_KEY, 0);
-    return rv;
+    return result;
   }
 
   slot = PK11_FindSlotByName("PEM Token #1");
   }
 
   slot = PK11_FindSlotByName("PEM Token #1");
@@ -528,9 +564,8 @@ static CURLcode nss_load_key(struct connectdata *conn, int sockindex,
   status = PK11_Authenticate(slot, PR_TRUE,
                              conn->data->set.str[STRING_KEY_PASSWD]);
   PK11_FreeSlot(slot);
   status = PK11_Authenticate(slot, PR_TRUE,
                              conn->data->set.str[STRING_KEY_PASSWD]);
   PK11_FreeSlot(slot);
-  return (SECSuccess == status)
-    ? CURLE_OK
-    : CURLE_SSL_CERTPROBLEM;
+
+  return (SECSuccess == status) ? CURLE_OK : CURLE_SSL_CERTPROBLEM;
 }
 
 static int display_error(struct connectdata *conn, PRInt32 err,
 }
 
 static int display_error(struct connectdata *conn, PRInt32 err,
@@ -553,35 +588,35 @@ static CURLcode cert_stuff(struct connectdata *conn, int sockindex,
                            char *cert_file, char *key_file)
 {
   struct SessionHandle *data = conn->data;
                            char *cert_file, char *key_file)
 {
   struct SessionHandle *data = conn->data;
-  CURLcode rv;
+  CURLcode result;
 
   if(cert_file) {
 
   if(cert_file) {
-    rv = nss_load_cert(&conn->ssl[sockindex], cert_file, PR_FALSE);
-    if(CURLE_OK != rv) {
+    result = nss_load_cert(&conn->ssl[sockindex], cert_file, PR_FALSE);
+    if(result) {
       const PRErrorCode err = PR_GetError();
       if(!display_error(conn, err, cert_file)) {
         const char *err_name = nss_error_to_name(err);
         failf(data, "unable to load client cert: %d (%s)", err, err_name);
       }
 
       const PRErrorCode err = PR_GetError();
       if(!display_error(conn, err, cert_file)) {
         const char *err_name = nss_error_to_name(err);
         failf(data, "unable to load client cert: %d (%s)", err, err_name);
       }
 
-      return rv;
+      return result;
     }
   }
 
   if(key_file || (is_file(cert_file))) {
     if(key_file)
     }
   }
 
   if(key_file || (is_file(cert_file))) {
     if(key_file)
-      rv = nss_load_key(conn, sockindex, key_file);
+      result = nss_load_key(conn, sockindex, key_file);
     else
       /* In case the cert file also has the key */
     else
       /* In case the cert file also has the key */
-      rv = nss_load_key(conn, sockindex, cert_file);
-    if(CURLE_OK != rv) {
+      result = nss_load_key(conn, sockindex, cert_file);
+    if(result) {
       const PRErrorCode err = PR_GetError();
       if(!display_error(conn, err, key_file)) {
         const char *err_name = nss_error_to_name(err);
         failf(data, "unable to load client key: %d (%s)", err, err_name);
       }
 
       const PRErrorCode err = PR_GetError();
       if(!display_error(conn, err, key_file)) {
         const char *err_name = nss_error_to_name(err);
         failf(data, "unable to load client key: %d (%s)", err, err_name);
       }
 
-      return rv;
+      return result;
     }
   }
 
     }
   }
 
@@ -591,6 +626,7 @@ static CURLcode cert_stuff(struct connectdata *conn, int sockindex,
 static char * nss_get_password(PK11SlotInfo * slot, PRBool retry, void *arg)
 {
   (void)slot; /* unused */
 static char * nss_get_password(PK11SlotInfo * slot, PRBool retry, void *arg)
 {
   (void)slot; /* unused */
+
   if(retry || NULL == arg)
     return NULL;
   else
   if(retry || NULL == arg)
     return NULL;
   else
@@ -616,8 +652,49 @@ static SECStatus nss_auth_cert_hook(void *arg, PRFileDesc *fd, PRBool checksig,
  */
 static void HandshakeCallback(PRFileDesc *sock, void *arg)
 {
  */
 static void HandshakeCallback(PRFileDesc *sock, void *arg)
 {
+#ifdef USE_NGHTTP2
+  struct connectdata *conn = (struct connectdata*) arg;
+  unsigned int buflenmax = 50;
+  unsigned char buf[50];
+  unsigned int buflen;
+  SSLNextProtoState state;
+
+  if(!conn->data->set.ssl_enable_npn && !conn->data->set.ssl_enable_alpn) {
+    return;
+  }
+
+  if(SSL_GetNextProto(sock, &state, buf, &buflen, buflenmax) == SECSuccess) {
+
+    switch(state) {
+    case SSL_NEXT_PROTO_NO_SUPPORT:
+    case SSL_NEXT_PROTO_NO_OVERLAP:
+      if(connssl->asked_for_h2)
+        infof(conn->data, "TLS, neither ALPN nor NPN succeeded\n");
+      return;
+#ifdef SSL_ENABLE_ALPN
+    case SSL_NEXT_PROTO_SELECTED:
+      infof(conn->data, "ALPN, server accepted to use %.*s\n", buflen, buf);
+      break;
+#endif
+    case SSL_NEXT_PROTO_NEGOTIATED:
+      infof(conn->data, "NPN, server accepted to use %.*s\n", buflen, buf);
+      break;
+    }
+
+    if(buflen == NGHTTP2_PROTO_VERSION_ID_LEN &&
+       memcmp(NGHTTP2_PROTO_VERSION_ID, buf, NGHTTP2_PROTO_VERSION_ID_LEN)
+       == 0) {
+      conn->negnpn = NPN_HTTP2;
+    }
+    else if(buflen == ALPN_HTTP_1_1_LENGTH && memcmp(ALPN_HTTP_1_1, buf,
+                                                     ALPN_HTTP_1_1_LENGTH)) {
+      conn->negnpn = NPN_HTTP1_1;
+    }
+  }
+#else
   (void)sock;
   (void)arg;
   (void)sock;
   (void)arg;
+#endif
 }
 
 static void display_cert_info(struct SessionHandle *data,
 }
 
 static void display_cert_info(struct SessionHandle *data,
@@ -648,11 +725,16 @@ static void display_cert_info(struct SessionHandle *data,
   PR_Free(common_name);
 }
 
   PR_Free(common_name);
 }
 
-static void display_conn_info(struct connectdata *conn, PRFileDesc *sock)
+static CURLcode display_conn_info(struct connectdata *conn, PRFileDesc *sock)
 {
 {
+  CURLcode result = CURLE_OK;
   SSLChannelInfo channel;
   SSLCipherSuiteInfo suite;
   CERTCertificate *cert;
   SSLChannelInfo channel;
   SSLCipherSuiteInfo suite;
   CERTCertificate *cert;
+  CERTCertificate *cert2;
+  CERTCertificate *cert3;
+  PRTime now;
+  int i;
 
   if(SSL_GetChannelInfo(sock, &channel, sizeof channel) ==
      SECSuccess && channel.length == sizeof channel &&
 
   if(SSL_GetChannelInfo(sock, &channel, sizeof channel) ==
      SECSuccess && channel.length == sizeof channel &&
@@ -663,13 +745,54 @@ static void display_conn_info(struct connectdata *conn, PRFileDesc *sock)
     }
   }
 
     }
   }
 
-  infof(conn->data, "Server certificate:\n");
-
   cert = SSL_PeerCertificate(sock);
   cert = SSL_PeerCertificate(sock);
-  display_cert_info(conn->data, cert);
-  CERT_DestroyCertificate(cert);
+  if(cert) {
+    infof(conn->data, "Server certificate:\n");
+
+    if(!conn->data->set.ssl.certinfo) {
+      display_cert_info(conn->data, cert);
+      CERT_DestroyCertificate(cert);
+    }
+    else {
+      /* Count certificates in chain. */
+      now = PR_Now();
+      i = 1;
+      if(!cert->isRoot) {
+        cert2 = CERT_FindCertIssuer(cert, now, certUsageSSLCA);
+        while(cert2) {
+          i++;
+          if(cert2->isRoot) {
+            CERT_DestroyCertificate(cert2);
+            break;
+          }
+          cert3 = CERT_FindCertIssuer(cert2, now, certUsageSSLCA);
+          CERT_DestroyCertificate(cert2);
+          cert2 = cert3;
+        }
+      }
+
+      result = Curl_ssl_init_certinfo(conn->data, i);
+      if(!result) {
+        for(i = 0; cert; cert = cert2) {
+          result = Curl_extract_certinfo(conn, i++, (char *)cert->derCert.data,
+                                         (char *)cert->derCert.data +
+                                                 cert->derCert.len);
+          if(result)
+            break;
+
+          if(cert->isRoot) {
+            CERT_DestroyCertificate(cert);
+            break;
+          }
+
+          cert2 = CERT_FindCertIssuer(cert, now, certUsageSSLCA);
+          CERT_DestroyCertificate(cert);
+        }
+      }
+    }
+  }
 
 
-  return;
+  return result;
 }
 
 static SECStatus BadCertHandler(void *arg, PRFileDesc *sock)
 }
 
 static SECStatus BadCertHandler(void *arg, PRFileDesc *sock)
@@ -822,39 +945,62 @@ static SECStatus SelectClientCert(void *arg, PRFileDesc *sock,
   return SECSuccess;
 }
 
   return SECSuccess;
 }
 
-/* This function is supposed to decide, which error codes should be used
- * to conclude server is TLS intolerant.
- *
- * taken from xulrunner - nsNSSIOLayer.cpp
- */
-static PRBool
-isTLSIntoleranceError(PRInt32 err)
+/* update blocking direction in case of PR_WOULD_BLOCK_ERROR */
+static void nss_update_connecting_state(ssl_connect_state state, void *secret)
 {
 {
-  switch (err) {
-  case SSL_ERROR_BAD_MAC_ALERT:
-  case SSL_ERROR_BAD_MAC_READ:
-  case SSL_ERROR_HANDSHAKE_FAILURE_ALERT:
-  case SSL_ERROR_HANDSHAKE_UNEXPECTED_ALERT:
-  case SSL_ERROR_CLIENT_KEY_EXCHANGE_FAILURE:
-  case SSL_ERROR_ILLEGAL_PARAMETER_ALERT:
-  case SSL_ERROR_NO_CYPHER_OVERLAP:
-  case SSL_ERROR_BAD_SERVER:
-  case SSL_ERROR_BAD_BLOCK_PADDING:
-  case SSL_ERROR_UNSUPPORTED_VERSION:
-  case SSL_ERROR_PROTOCOL_VERSION_ALERT:
-  case SSL_ERROR_RX_MALFORMED_FINISHED:
-  case SSL_ERROR_BAD_HANDSHAKE_HASH_VALUE:
-  case SSL_ERROR_DECODE_ERROR_ALERT:
-  case SSL_ERROR_RX_UNKNOWN_ALERT:
-    return PR_TRUE;
+  struct ssl_connect_data *connssl = (struct ssl_connect_data *)secret;
+  if(PR_GetError() != PR_WOULD_BLOCK_ERROR)
+    /* an unrelated error is passing by */
+    return;
+
+  switch(connssl->connecting_state) {
+  case ssl_connect_2:
+  case ssl_connect_2_reading:
+  case ssl_connect_2_writing:
+    break;
   default:
   default:
-    return PR_FALSE;
+    /* we are not called from an SSL handshake */
+    return;
   }
   }
+
+  /* update the state accordingly */
+  connssl->connecting_state = state;
+}
+
+/* recv() wrapper we use to detect blocking direction during SSL handshake */
+static PRInt32 nspr_io_recv(PRFileDesc *fd, void *buf, PRInt32 amount,
+                            PRIntn flags, PRIntervalTime timeout)
+{
+  const PRRecvFN recv_fn = fd->lower->methods->recv;
+  const PRInt32 rv = recv_fn(fd->lower, buf, amount, flags, timeout);
+  if(rv < 0)
+    /* check for PR_WOULD_BLOCK_ERROR and update blocking direction */
+    nss_update_connecting_state(ssl_connect_2_reading, fd->secret);
+  return rv;
+}
+
+/* send() wrapper we use to detect blocking direction during SSL handshake */
+static PRInt32 nspr_io_send(PRFileDesc *fd, const void *buf, PRInt32 amount,
+                            PRIntn flags, PRIntervalTime timeout)
+{
+  const PRSendFN send_fn = fd->lower->methods->send;
+  const PRInt32 rv = send_fn(fd->lower, buf, amount, flags, timeout);
+  if(rv < 0)
+    /* check for PR_WOULD_BLOCK_ERROR and update blocking direction */
+    nss_update_connecting_state(ssl_connect_2_writing, fd->secret);
+  return rv;
+}
+
+/* close() wrapper to avoid assertion failure due to fd->secret != NULL */
+static PRStatus nspr_io_close(PRFileDesc *fd)
+{
+  const PRCloseFN close_fn = PR_GetDefaultIOMethods()->close;
+  fd->secret = NULL;
+  return close_fn(fd);
 }
 
 static CURLcode nss_init_core(struct SessionHandle *data, const char *cert_dir)
 {
 }
 
 static CURLcode nss_init_core(struct SessionHandle *data, const char *cert_dir)
 {
-#ifdef HAVE_NSS_INITCONTEXT
   NSSInitParameters initparams;
 
   if(nss_context != NULL)
   NSSInitParameters initparams;
 
   if(nss_context != NULL)
@@ -862,49 +1008,29 @@ static CURLcode nss_init_core(struct SessionHandle *data, const char *cert_dir)
 
   memset((void *) &initparams, '\0', sizeof(initparams));
   initparams.length = sizeof(initparams);
 
   memset((void *) &initparams, '\0', sizeof(initparams));
   initparams.length = sizeof(initparams);
-#else /* HAVE_NSS_INITCONTEXT */
-  SECStatus rv;
-
-  if(NSS_IsInitialized())
-    return CURLE_OK;
-#endif
 
   if(cert_dir) {
 
   if(cert_dir) {
-    const bool use_sql = NSS_VersionCheck("3.12.0");
-    char *certpath = aprintf("%s%s", use_sql ? "sql:" : "", cert_dir);
+    char *certpath = aprintf("sql:%s", cert_dir);
     if(!certpath)
       return CURLE_OUT_OF_MEMORY;
 
     infof(data, "Initializing NSS with certpath: %s\n", certpath);
     if(!certpath)
       return CURLE_OUT_OF_MEMORY;
 
     infof(data, "Initializing NSS with certpath: %s\n", certpath);
-#ifdef HAVE_NSS_INITCONTEXT
     nss_context = NSS_InitContext(certpath, "", "", "", &initparams,
             NSS_INIT_READONLY | NSS_INIT_PK11RELOAD);
     free(certpath);
 
     if(nss_context != NULL)
       return CURLE_OK;
     nss_context = NSS_InitContext(certpath, "", "", "", &initparams,
             NSS_INIT_READONLY | NSS_INIT_PK11RELOAD);
     free(certpath);
 
     if(nss_context != NULL)
       return CURLE_OK;
-#else /* HAVE_NSS_INITCONTEXT */
-    rv = NSS_Initialize(certpath, "", "", "", NSS_INIT_READONLY);
-    free(certpath);
-
-    if(rv == SECSuccess)
-      return CURLE_OK;
-#endif
 
     infof(data, "Unable to initialize NSS database\n");
   }
 
   infof(data, "Initializing NSS with certpath: none\n");
 
     infof(data, "Unable to initialize NSS database\n");
   }
 
   infof(data, "Initializing NSS with certpath: none\n");
-#ifdef HAVE_NSS_INITCONTEXT
   nss_context = NSS_InitContext("", "", "", "", &initparams, NSS_INIT_READONLY
          | NSS_INIT_NOCERTDB   | NSS_INIT_NOMODDB       | NSS_INIT_FORCEOPEN
          | NSS_INIT_NOROOTINIT | NSS_INIT_OPTIMIZESPACE | NSS_INIT_PK11RELOAD);
   if(nss_context != NULL)
     return CURLE_OK;
   nss_context = NSS_InitContext("", "", "", "", &initparams, NSS_INIT_READONLY
          | NSS_INIT_NOCERTDB   | NSS_INIT_NOMODDB       | NSS_INIT_FORCEOPEN
          | NSS_INIT_NOROOTINIT | NSS_INIT_OPTIMIZESPACE | NSS_INIT_PK11RELOAD);
   if(nss_context != NULL)
     return CURLE_OK;
-#else /* HAVE_NSS_INITCONTEXT */
-  if(NSS_NoDB_Init(NULL) == SECSuccess)
-    return CURLE_OK;
-#endif
 
   infof(data, "Unable to initialize NSS\n");
   return CURLE_SSL_CACERT_BADFILE;
 
   infof(data, "Unable to initialize NSS\n");
   return CURLE_SSL_CACERT_BADFILE;
@@ -914,11 +1040,16 @@ static CURLcode nss_init(struct SessionHandle *data)
 {
   char *cert_dir;
   struct_stat st;
 {
   char *cert_dir;
   struct_stat st;
-  CURLcode rv;
+  CURLcode result;
 
   if(initialized)
     return CURLE_OK;
 
 
   if(initialized)
     return CURLE_OK;
 
+  /* list of all CRL items we need to destroy in Curl_nss_cleanup() */
+  nss_crl_list = Curl_llist_alloc(nss_destroy_crl_item);
+  if(!nss_crl_list)
+    return CURLE_OUT_OF_MEMORY;
+
   /* First we check if $SSL_DIR points to a valid dir */
   cert_dir = getenv("SSL_DIR");
   if(cert_dir) {
   /* First we check if $SSL_DIR points to a valid dir */
   cert_dir = getenv("SSL_DIR");
   if(cert_dir) {
@@ -936,14 +1067,30 @@ static CURLcode nss_init(struct SessionHandle *data)
     }
   }
 
     }
   }
 
-  rv = nss_init_core(data, cert_dir);
-  if(rv)
-    return rv;
+  if(nspr_io_identity == PR_INVALID_IO_LAYER) {
+    /* allocate an identity for our own NSPR I/O layer */
+    nspr_io_identity = PR_GetUniqueIdentity("libcurl");
+    if(nspr_io_identity == PR_INVALID_IO_LAYER)
+      return CURLE_OUT_OF_MEMORY;
+
+    /* the default methods just call down to the lower I/O layer */
+    memcpy(&nspr_io_methods, PR_GetDefaultIOMethods(), sizeof nspr_io_methods);
+
+    /* override certain methods in the table by our wrappers */
+    nspr_io_methods.recv  = nspr_io_recv;
+    nspr_io_methods.send  = nspr_io_send;
+    nspr_io_methods.close = nspr_io_close;
+  }
+
+  result = nss_init_core(data, cert_dir);
+  if(result)
+    return result;
 
   if(num_enabled_ciphers() == 0)
     NSS_SetDomesticPolicy();
 
   initialized = 1;
 
   if(num_enabled_ciphers() == 0)
     NSS_SetDomesticPolicy();
 
   initialized = 1;
+
   return CURLE_OK;
 }
 
   return CURLE_OK;
 }
 
@@ -969,18 +1116,18 @@ int Curl_nss_init(void)
 
 CURLcode Curl_nss_force_init(struct SessionHandle *data)
 {
 
 CURLcode Curl_nss_force_init(struct SessionHandle *data)
 {
-  CURLcode rv;
+  CURLcode result;
   if(!nss_initlock) {
   if(!nss_initlock) {
-    failf(data,
-          "unable to initialize NSS, curl_global_init() should have been "
-          "called with CURL_GLOBAL_SSL or CURL_GLOBAL_ALL");
+    failf(data, "unable to initialize NSS, curl_global_init() should have "
+                "been called with CURL_GLOBAL_SSL or CURL_GLOBAL_ALL");
     return CURLE_FAILED_INIT;
   }
 
   PR_Lock(nss_initlock);
     return CURLE_FAILED_INIT;
   }
 
   PR_Lock(nss_initlock);
-  rv = nss_init(data);
+  result = nss_init(data);
   PR_Unlock(nss_initlock);
   PR_Unlock(nss_initlock);
-  return rv;
+
+  return result;
 }
 
 /* Global cleanup */
 }
 
 /* Global cleanup */
@@ -1000,13 +1147,14 @@ void Curl_nss_cleanup(void)
       SECMOD_DestroyModule(mod);
       mod = NULL;
     }
       SECMOD_DestroyModule(mod);
       mod = NULL;
     }
-#ifdef HAVE_NSS_INITCONTEXT
     NSS_ShutdownContext(nss_context);
     nss_context = NULL;
     NSS_ShutdownContext(nss_context);
     nss_context = NULL;
-#else /* HAVE_NSS_INITCONTEXT */
-    NSS_Shutdown();
-#endif
   }
   }
+
+  /* destroy all CRL items */
+  Curl_llist_destroy(nss_crl_list, NULL);
+  nss_crl_list = NULL;
+
   PR_Unlock(nss_initlock);
 
   PR_DestroyLock(nss_initlock);
   PR_Unlock(nss_initlock);
 
   PR_DestroyLock(nss_initlock);
@@ -1080,10 +1228,9 @@ void Curl_nss_close(struct connectdata *conn, int sockindex)
  * This function is called when the 'data' struct is going away. Close
  * down everything and free all resources!
  */
  * This function is called when the 'data' struct is going away. Close
  * down everything and free all resources!
  */
-int Curl_nss_close_all(struct SessionHandle *data)
+void Curl_nss_close_all(struct SessionHandle *data)
 {
   (void)data;
 {
   (void)data;
-  return 0;
 }
 
 /* return true if NSS can provide error code (and possibly msg) for the
 }
 
 /* return true if NSS can provide error code (and possibly msg) for the
@@ -1128,9 +1275,9 @@ static CURLcode nss_load_ca_certificates(struct connectdata *conn,
   const char *capath = data->set.ssl.CApath;
 
   if(cafile) {
   const char *capath = data->set.ssl.CApath;
 
   if(cafile) {
-    CURLcode rv = nss_load_cert(&conn->ssl[sockindex], cafile, PR_TRUE);
-    if(CURLE_OK != rv)
-      return rv;
+    CURLcode result = nss_load_cert(&conn->ssl[sockindex], cafile, PR_TRUE);
+    if(result)
+      return result;
   }
 
   if(capath) {
   }
 
   if(capath) {
@@ -1172,26 +1319,125 @@ static CURLcode nss_load_ca_certificates(struct connectdata *conn,
   return CURLE_OK;
 }
 
   return CURLE_OK;
 }
 
-CURLcode Curl_nss_connect(struct connectdata *conn, int sockindex)
+static CURLcode nss_init_sslver(SSLVersionRange *sslver,
+                                struct SessionHandle *data)
+{
+  switch(data->set.ssl.version) {
+  default:
+  case CURL_SSLVERSION_DEFAULT:
+  case CURL_SSLVERSION_TLSv1:
+    sslver->min = SSL_LIBRARY_VERSION_TLS_1_0;
+#ifdef SSL_LIBRARY_VERSION_TLS_1_2
+    sslver->max = SSL_LIBRARY_VERSION_TLS_1_2;
+#elif defined SSL_LIBRARY_VERSION_TLS_1_1
+    sslver->max = SSL_LIBRARY_VERSION_TLS_1_1;
+#else
+    sslver->max = SSL_LIBRARY_VERSION_TLS_1_0;
+#endif
+    return CURLE_OK;
+
+  case CURL_SSLVERSION_SSLv2:
+    sslver->min = SSL_LIBRARY_VERSION_2;
+    sslver->max = SSL_LIBRARY_VERSION_2;
+    return CURLE_OK;
+
+  case CURL_SSLVERSION_SSLv3:
+    sslver->min = SSL_LIBRARY_VERSION_3_0;
+    sslver->max = SSL_LIBRARY_VERSION_3_0;
+    return CURLE_OK;
+
+  case CURL_SSLVERSION_TLSv1_0:
+    sslver->min = SSL_LIBRARY_VERSION_TLS_1_0;
+    sslver->max = SSL_LIBRARY_VERSION_TLS_1_0;
+    return CURLE_OK;
+
+  case CURL_SSLVERSION_TLSv1_1:
+#ifdef SSL_LIBRARY_VERSION_TLS_1_1
+    sslver->min = SSL_LIBRARY_VERSION_TLS_1_1;
+    sslver->max = SSL_LIBRARY_VERSION_TLS_1_1;
+    return CURLE_OK;
+#endif
+    break;
+
+  case CURL_SSLVERSION_TLSv1_2:
+#ifdef SSL_LIBRARY_VERSION_TLS_1_2
+    sslver->min = SSL_LIBRARY_VERSION_TLS_1_2;
+    sslver->max = SSL_LIBRARY_VERSION_TLS_1_2;
+    return CURLE_OK;
+#endif
+    break;
+  }
+
+  failf(data, "TLS minor version cannot be set");
+  return CURLE_SSL_CONNECT_ERROR;
+}
+
+static CURLcode nss_fail_connect(struct ssl_connect_data *connssl,
+                                 struct SessionHandle *data,
+                                 CURLcode curlerr)
 {
   PRErrorCode err = 0;
 {
   PRErrorCode err = 0;
+
+  if(is_nss_error(curlerr)) {
+    /* read NSPR error code */
+    err = PR_GetError();
+    if(is_cc_error(err))
+      curlerr = CURLE_SSL_CERTPROBLEM;
+
+    /* print the error number and error string */
+    infof(data, "NSS error %d (%s)\n", err, nss_error_to_name(err));
+
+    /* print a human-readable message describing the error if available */
+    nss_print_error_message(data, err);
+  }
+
+  /* cleanup on connection failure */
+  Curl_llist_destroy(connssl->obj_list, NULL);
+  connssl->obj_list = NULL;
+
+  return curlerr;
+}
+
+/* Switch the SSL socket into non-blocking mode. */
+static CURLcode nss_set_nonblock(struct ssl_connect_data *connssl,
+                                 struct SessionHandle *data)
+{
+  static PRSocketOptionData sock_opt;
+  sock_opt.option = PR_SockOpt_Nonblocking;
+  sock_opt.value.non_blocking = PR_TRUE;
+
+  if(PR_SetSocketOption(connssl->handle, &sock_opt) != PR_SUCCESS)
+    return nss_fail_connect(connssl, data, CURLE_SSL_CONNECT_ERROR);
+
+  return CURLE_OK;
+}
+
+static CURLcode nss_setup_connect(struct connectdata *conn, int sockindex)
+{
   PRFileDesc *model = NULL;
   PRFileDesc *model = NULL;
-  PRBool ssl2 = PR_FALSE;
-  PRBool ssl3 = PR_FALSE;
-  PRBool tlsv1 = PR_FALSE;
+  PRFileDesc *nspr_io = NULL;
+  PRFileDesc *nspr_io_stub = NULL;
   PRBool ssl_no_cache;
   PRBool ssl_cbc_random_iv;
   struct SessionHandle *data = conn->data;
   curl_socket_t sockfd = conn->sock[sockindex];
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
   PRBool ssl_no_cache;
   PRBool ssl_cbc_random_iv;
   struct SessionHandle *data = conn->data;
   curl_socket_t sockfd = conn->sock[sockindex];
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
-  CURLcode curlerr;
-  const int *cipher_to_enable;
-  PRSocketOptionData sock_opt;
-  long time_left;
-  PRUint32 timeout;
-
-  if(connssl->state == ssl_connection_complete)
-    return CURLE_OK;
+  CURLcode result;
+
+  SSLVersionRange sslver = {
+    SSL_LIBRARY_VERSION_TLS_1_0,  /* min */
+    SSL_LIBRARY_VERSION_TLS_1_0   /* max */
+  };
+
+#ifdef USE_NGHTTP2
+#if defined(SSL_ENABLE_NPN) || defined(SSL_ENABLE_ALPN)
+  unsigned int alpn_protos_len = NGHTTP2_PROTO_VERSION_ID_LEN +
+      ALPN_HTTP_1_1_LENGTH + 2;
+  unsigned char alpn_protos[NGHTTP2_PROTO_VERSION_ID_LEN + ALPN_HTTP_1_1_LENGTH
+      + 2];
+  int cur = 0;
+#endif
+#endif
 
   connssl->data = data;
 
 
   connssl->data = data;
 
@@ -1202,13 +1448,13 @@ CURLcode Curl_nss_connect(struct connectdata *conn, int sockindex)
 
   /* FIXME. NSS doesn't support multiple databases open at the same time. */
   PR_Lock(nss_initlock);
 
   /* FIXME. NSS doesn't support multiple databases open at the same time. */
   PR_Lock(nss_initlock);
-  curlerr = nss_init(conn->data);
-  if(CURLE_OK != curlerr) {
+  result = nss_init(conn->data);
+  if(result) {
     PR_Unlock(nss_initlock);
     goto error;
   }
 
     PR_Unlock(nss_initlock);
     goto error;
   }
 
-  curlerr = CURLE_SSL_CONNECT_ERROR;
+  result = CURLE_SSL_CONNECT_ERROR;
 
   if(!mod) {
     char *configstring = aprintf("library=%s name=PEM", pem_library);
 
   if(!mod) {
     char *configstring = aprintf("library=%s name=PEM", pem_library);
@@ -1225,7 +1471,7 @@ CURLcode Curl_nss_connect(struct connectdata *conn, int sockindex)
         mod = NULL;
       }
       infof(data, "WARNING: failed to load NSS PEM library %s. Using "
         mod = NULL;
       }
       infof(data, "WARNING: failed to load NSS PEM library %s. Using "
-            "OpenSSL PEM certificates will not work.\n", pem_library);
+                  "OpenSSL PEM certificates will not work.\n", pem_library);
     }
   }
 
     }
   }
 
@@ -1244,39 +1490,16 @@ CURLcode Curl_nss_connect(struct connectdata *conn, int sockindex)
   if(SSL_OptionSet(model, SSL_HANDSHAKE_AS_CLIENT, PR_TRUE) != SECSuccess)
     goto error;
 
   if(SSL_OptionSet(model, SSL_HANDSHAKE_AS_CLIENT, PR_TRUE) != SECSuccess)
     goto error;
 
-  /* do not use SSL cache if we are not going to verify peer */
-  ssl_no_cache = (data->set.ssl.verifypeer) ? PR_FALSE : PR_TRUE;
+  /* do not use SSL cache if disabled or we are not going to verify peer */
+  ssl_no_cache = (conn->ssl_config.sessionid && data->set.ssl.verifypeer) ?
+    PR_FALSE : PR_TRUE;
   if(SSL_OptionSet(model, SSL_NO_CACHE, ssl_no_cache) != SECSuccess)
     goto error;
 
   if(SSL_OptionSet(model, SSL_NO_CACHE, ssl_no_cache) != SECSuccess)
     goto error;
 
-  switch (data->set.ssl.version) {
-  default:
-  case CURL_SSLVERSION_DEFAULT:
-    ssl3 = PR_TRUE;
-    if(data->state.ssl_connect_retry)
-      infof(data, "TLS disabled due to previous handshake failure\n");
-    else
-      tlsv1 = PR_TRUE;
-    break;
-  case CURL_SSLVERSION_TLSv1:
-    tlsv1 = PR_TRUE;
-    break;
-  case CURL_SSLVERSION_SSLv2:
-    ssl2 = PR_TRUE;
-    break;
-  case CURL_SSLVERSION_SSLv3:
-    ssl3 = PR_TRUE;
-    break;
-  }
-
-  if(SSL_OptionSet(model, SSL_ENABLE_SSL2, ssl2) != SECSuccess)
-    goto error;
-  if(SSL_OptionSet(model, SSL_ENABLE_SSL3, ssl3) != SECSuccess)
+  /* enable/disable the requested SSL version(s) */
+  if(nss_init_sslver(&sslver, data) != CURLE_OK)
     goto error;
     goto error;
-  if(SSL_OptionSet(model, SSL_ENABLE_TLS, tlsv1) != SECSuccess)
-    goto error;
-
-  if(SSL_OptionSet(model, SSL_V2_COMPATIBLE_HELLO, ssl2) != SECSuccess)
+  if(SSL_VersionRangeSet(model, &sslver) != SECSuccess)
     goto error;
 
   ssl_cbc_random_iv = !data->set.ssl_enable_beast;
     goto error;
 
   ssl_cbc_random_iv = !data->set.ssl_enable_beast;
@@ -1291,22 +1514,9 @@ CURLcode Curl_nss_connect(struct connectdata *conn, int sockindex)
     infof(data, "warning: support for SSL_CBC_RANDOM_IV not compiled in\n");
 #endif
 
     infof(data, "warning: support for SSL_CBC_RANDOM_IV not compiled in\n");
 #endif
 
-  /* reset the flag to avoid an infinite loop */
-  data->state.ssl_connect_retry = FALSE;
-
-  /* enable all ciphers from enable_ciphers_by_default */
-  cipher_to_enable = enable_ciphers_by_default;
-  while(SSL_NULL_WITH_NULL_NULL != *cipher_to_enable) {
-    if(SSL_CipherPrefSet(model, *cipher_to_enable, PR_TRUE) != SECSuccess) {
-      curlerr = CURLE_SSL_CIPHER;
-      goto error;
-    }
-    cipher_to_enable++;
-  }
-
   if(data->set.ssl.cipher_list) {
     if(set_ciphers(data, model, data->set.ssl.cipher_list) != SECSuccess) {
   if(data->set.ssl.cipher_list) {
     if(set_ciphers(data, model, data->set.ssl.cipher_list) != SECSuccess) {
-      curlerr = CURLE_SSL_CIPHER;
+      result = CURLE_SSL_CIPHER;
       goto error;
     }
   }
       goto error;
     }
   }
@@ -1323,25 +1533,24 @@ CURLcode Curl_nss_connect(struct connectdata *conn, int sockindex)
   if(SSL_BadCertHook(model, BadCertHandler, conn) != SECSuccess)
     goto error;
 
   if(SSL_BadCertHook(model, BadCertHandler, conn) != SECSuccess)
     goto error;
 
-  if(SSL_HandshakeCallback(model, HandshakeCallback, NULL) != SECSuccess)
+  if(SSL_HandshakeCallback(model, HandshakeCallback, conn) != SECSuccess)
     goto error;
 
   if(data->set.ssl.verifypeer) {
     const CURLcode rv = nss_load_ca_certificates(conn, sockindex);
     goto error;
 
   if(data->set.ssl.verifypeer) {
     const CURLcode rv = nss_load_ca_certificates(conn, sockindex);
-    if(CURLE_OK != rv) {
-      curlerr = rv;
+    if(rv) {
+      result = rv;
       goto error;
     }
   }
 
   if(data->set.ssl.CRLfile) {
       goto error;
     }
   }
 
   if(data->set.ssl.CRLfile) {
-    if(SECSuccess != nss_load_crl(data->set.ssl.CRLfile)) {
-      curlerr = CURLE_SSL_CRL_BADFILE;
+    const CURLcode rv = nss_load_crl(data->set.ssl.CRLfile);
+    if(rv) {
+      result = rv;
       goto error;
     }
       goto error;
     }
-    infof(data,
-          "  CRLfile: %s\n",
-          data->set.ssl.CRLfile ? data->set.ssl.CRLfile : "none");
+    infof(data, "  CRLfile: %s\n", data->set.ssl.CRLfile);
   }
 
   if(data->set.str[STRING_CERT]) {
   }
 
   if(data->set.str[STRING_CERT]) {
@@ -1353,9 +1562,9 @@ CURLcode Curl_nss_connect(struct connectdata *conn, int sockindex)
     else {
       CURLcode rv = cert_stuff(conn, sockindex, data->set.str[STRING_CERT],
                                data->set.str[STRING_KEY]);
     else {
       CURLcode rv = cert_stuff(conn, sockindex, data->set.str[STRING_CERT],
                                data->set.str[STRING_KEY]);
-      if(CURLE_OK != rv) {
+      if(rv) {
         /* failf() is already done in cert_stuff() */
         /* failf() is already done in cert_stuff() */
-        curlerr = rv;
+        result = rv;
         goto error;
       }
     }
         goto error;
       }
     }
@@ -1368,15 +1577,38 @@ CURLcode Curl_nss_connect(struct connectdata *conn, int sockindex)
 
   if(SSL_GetClientAuthDataHook(model, SelectClientCert,
                                (void *)connssl) != SECSuccess) {
 
   if(SSL_GetClientAuthDataHook(model, SelectClientCert,
                                (void *)connssl) != SECSuccess) {
-    curlerr = CURLE_SSL_CERTPROBLEM;
+    result = CURLE_SSL_CERTPROBLEM;
     goto error;
   }
 
     goto error;
   }
 
-  /* Import our model socket  onto the existing file descriptor */
-  connssl->handle = PR_ImportTCPSocket(sockfd);
-  connssl->handle = SSL_ImportFD(model, connssl->handle);
-  if(!connssl->handle)
+  /* wrap OS file descriptor by NSPR's file descriptor abstraction */
+  nspr_io = PR_ImportTCPSocket(sockfd);
+  if(!nspr_io)
+    goto error;
+
+  /* create our own NSPR I/O layer */
+  nspr_io_stub = PR_CreateIOLayerStub(nspr_io_identity, &nspr_io_methods);
+  if(!nspr_io_stub) {
+    PR_Close(nspr_io);
     goto error;
     goto error;
+  }
+
+  /* make the per-connection data accessible from NSPR I/O callbacks */
+  nspr_io_stub->secret = (void *)connssl;
+
+  /* push our new layer to the NSPR I/O stack */
+  if(PR_PushIOLayer(nspr_io, PR_TOP_IO_LAYER, nspr_io_stub) != PR_SUCCESS) {
+    PR_Close(nspr_io);
+    PR_Close(nspr_io_stub);
+    goto error;
+  }
+
+  /* import our model socket onto the current I/O stack */
+  connssl->handle = SSL_ImportFD(model, nspr_io);
+  if(!connssl->handle) {
+    PR_Close(nspr_io);
+    goto error;
+  }
 
   PR_Close(model); /* We don't need this any more */
   model = NULL;
 
   PR_Close(model); /* We don't need this any more */
   model = NULL;
@@ -1386,41 +1618,93 @@ CURLcode Curl_nss_connect(struct connectdata *conn, int sockindex)
     SSL_SetPKCS11PinArg(connssl->handle, data->set.str[STRING_KEY_PASSWD]);
   }
 
     SSL_SetPKCS11PinArg(connssl->handle, data->set.str[STRING_KEY_PASSWD]);
   }
 
+#ifdef USE_NGHTTP2
+  if(data->set.httpversion == CURL_HTTP_VERSION_2_0) {
+#ifdef SSL_ENABLE_NPN
+    if(data->set.ssl_enable_npn) {
+      if(SSL_OptionSet(connssl->handle, SSL_ENABLE_NPN, PR_TRUE) != SECSuccess)
+        goto error;
+    }
+#endif
+
+#ifdef SSL_ENABLE_ALPN
+    if(data->set.ssl_enable_alpn) {
+      if(SSL_OptionSet(connssl->handle, SSL_ENABLE_ALPN, PR_TRUE)
+          != SECSuccess)
+        goto error;
+    }
+#endif
+
+#if defined(SSL_ENABLE_NPN) || defined(SSL_ENABLE_ALPN)
+    if(data->set.ssl_enable_npn || data->set.ssl_enable_alpn) {
+      alpn_protos[cur] = NGHTTP2_PROTO_VERSION_ID_LEN;
+      cur++;
+      memcpy(&alpn_protos[cur], NGHTTP2_PROTO_VERSION_ID,
+          NGHTTP2_PROTO_VERSION_ID_LEN);
+      cur += NGHTTP2_PROTO_VERSION_ID_LEN;
+      alpn_protos[cur] = ALPN_HTTP_1_1_LENGTH;
+      cur++;
+      memcpy(&alpn_protos[cur], ALPN_HTTP_1_1, ALPN_HTTP_1_1_LENGTH);
+
+      if(SSL_SetNextProtoNego(connssl->handle, alpn_protos, alpn_protos_len)
+          != SECSuccess)
+        goto error;
+      connssl->asked_for_h2 = TRUE;
+    }
+    else {
+      infof(data, "SSL, can't negotiate HTTP/2.0 with neither NPN nor ALPN\n");
+    }
+#endif
+  }
+#endif
+
+
   /* Force handshake on next I/O */
   SSL_ResetHandshake(connssl->handle, /* asServer */ PR_FALSE);
 
   SSL_SetURL(connssl->handle, conn->host.name);
 
   /* Force handshake on next I/O */
   SSL_ResetHandshake(connssl->handle, /* asServer */ PR_FALSE);
 
   SSL_SetURL(connssl->handle, conn->host.name);
 
+  return CURLE_OK;
+
+error:
+  if(model)
+    PR_Close(model);
+
+  return nss_fail_connect(connssl, data, result);
+}
+
+static CURLcode nss_do_connect(struct connectdata *conn, int sockindex)
+{
+  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
+  struct SessionHandle *data = conn->data;
+  CURLcode result = CURLE_SSL_CONNECT_ERROR;
+  PRUint32 timeout;
+
   /* check timeout situation */
   /* check timeout situation */
-  time_left = Curl_timeleft(data, NULL, TRUE);
+  const long time_left = Curl_timeleft(data, NULL, TRUE);
   if(time_left < 0L) {
     failf(data, "timed out before SSL handshake");
   if(time_left < 0L) {
     failf(data, "timed out before SSL handshake");
-    curlerr = CURLE_OPERATION_TIMEDOUT;
+    result = CURLE_OPERATION_TIMEDOUT;
     goto error;
   }
     goto error;
   }
-  timeout = PR_MillisecondsToInterval((PRUint32) time_left);
 
   /* Force the handshake now */
 
   /* Force the handshake now */
+  timeout = PR_MillisecondsToInterval((PRUint32) time_left);
   if(SSL_ForceHandshakeWithTimeout(connssl->handle, timeout) != SECSuccess) {
   if(SSL_ForceHandshakeWithTimeout(connssl->handle, timeout) != SECSuccess) {
-    if(conn->data->set.ssl.certverifyresult == SSL_ERROR_BAD_CERT_DOMAIN)
-      curlerr = CURLE_PEER_FAILED_VERIFICATION;
+    if(PR_GetError() == PR_WOULD_BLOCK_ERROR)
+      /* blocking direction is updated by nss_update_connecting_state() */
+      return CURLE_AGAIN;
+    else if(conn->data->set.ssl.certverifyresult == SSL_ERROR_BAD_CERT_DOMAIN)
+      result = CURLE_PEER_FAILED_VERIFICATION;
     else if(conn->data->set.ssl.certverifyresult!=0)
     else if(conn->data->set.ssl.certverifyresult!=0)
-      curlerr = CURLE_SSL_CACERT;
+      result = CURLE_SSL_CACERT;
     goto error;
   }
 
     goto error;
   }
 
-  /* switch the SSL socket into non-blocking mode */
-  sock_opt.option = PR_SockOpt_Nonblocking;
-  sock_opt.value.non_blocking = PR_TRUE;
-  if(PR_SetSocketOption(connssl->handle, &sock_opt) != PR_SUCCESS)
+  result = display_conn_info(conn, connssl->handle);
+  if(result)
     goto error;
 
     goto error;
 
-  connssl->state = ssl_connection_complete;
-  conn->recv[sockindex] = nss_recv;
-  conn->send[sockindex] = nss_send;
-
-  display_conn_info(conn, connssl->handle);
-
   if(data->set.str[STRING_SSL_ISSUERCERT]) {
     SECStatus ret = SECFailure;
     char *nickname = dup_nickname(data, STRING_SSL_ISSUERCERT);
   if(data->set.str[STRING_SSL_ISSUERCERT]) {
     SECStatus ret = SECFailure;
     char *nickname = dup_nickname(data, STRING_SSL_ISSUERCERT);
@@ -1432,7 +1716,7 @@ CURLcode Curl_nss_connect(struct connectdata *conn, int sockindex)
 
     if(SECFailure == ret) {
       infof(data,"SSL certificate issuer check failed\n");
 
     if(SECFailure == ret) {
       infof(data,"SSL certificate issuer check failed\n");
-      curlerr = CURLE_SSL_ISSUER_ERROR;
+      result = CURLE_SSL_ISSUER_ERROR;
       goto error;
     }
     else {
       goto error;
     }
     else {
@@ -1442,38 +1726,79 @@ CURLcode Curl_nss_connect(struct connectdata *conn, int sockindex)
 
   return CURLE_OK;
 
 
   return CURLE_OK;
 
-  error:
-  /* reset the flag to avoid an infinite loop */
-  data->state.ssl_connect_retry = FALSE;
+error:
+  return nss_fail_connect(connssl, data, result);
+}
 
 
-  if(is_nss_error(curlerr)) {
-    /* read NSPR error code */
-    err = PR_GetError();
-    if(is_cc_error(err))
-      curlerr = CURLE_SSL_CERTPROBLEM;
+static CURLcode nss_connect_common(struct connectdata *conn, int sockindex,
+                                   bool *done)
+{
+  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
+  struct SessionHandle *data = conn->data;
+  const bool blocking = (done == NULL);
+  CURLcode result;
 
 
-    /* print the error number and error string */
-    infof(data, "NSS error %d (%s)\n", err, nss_error_to_name(err));
+  if(connssl->state == ssl_connection_complete)
+    return CURLE_OK;
 
 
-    /* print a human-readable message describing the error if available */
-    nss_print_error_message(data, err);
-  }
+  if(connssl->connecting_state == ssl_connect_1) {
+    result = nss_setup_connect(conn, sockindex);
+    if(result)
+      /* we do not expect CURLE_AGAIN from nss_setup_connect() */
+      return result;
+
+    if(!blocking) {
+      /* in non-blocking mode, set NSS non-blocking mode before handshake */
+      result = nss_set_nonblock(connssl, data);
+      if(result)
+        return result;
+    }
 
 
-  if(model)
-    PR_Close(model);
+    connssl->connecting_state = ssl_connect_2;
+  }
 
 
-    /* cleanup on connection failure */
-    Curl_llist_destroy(connssl->obj_list, NULL);
-    connssl->obj_list = NULL;
+  result = nss_do_connect(conn, sockindex);
+  switch(result) {
+  case CURLE_OK:
+    break;
+  case CURLE_AGAIN:
+    if(!blocking)
+      /* CURLE_AGAIN in non-blocking mode is not an error */
+      return CURLE_OK;
+    /* fall through */
+  default:
+    return result;
+  }
 
 
-  if(ssl3 && tlsv1 && isTLSIntoleranceError(err)) {
-    /* schedule reconnect through Curl_retry_request() */
-    data->state.ssl_connect_retry = TRUE;
-    infof(data, "Error in TLS handshake, trying SSLv3...\n");
-    return CURLE_OK;
+  if(blocking) {
+    /* in blocking mode, set NSS non-blocking mode _after_ SSL handshake */
+    result = nss_set_nonblock(connssl, data);
+    if(result)
+      return result;
   }
   }
+  else
+    /* signal completed SSL handshake */
+    *done = TRUE;
 
 
-  return curlerr;
+  connssl->state = ssl_connection_complete;
+  conn->recv[sockindex] = nss_recv;
+  conn->send[sockindex] = nss_send;
+
+  /* ssl_connect_done is never used outside, go back to the initial state */
+  connssl->connecting_state = ssl_connect_1;
+
+  return CURLE_OK;
+}
+
+CURLcode Curl_nss_connect(struct connectdata *conn, int sockindex)
+{
+  return nss_connect_common(conn, sockindex, /* blocking */ NULL);
+}
+
+CURLcode Curl_nss_connect_nonblocking(struct connectdata *conn,
+                                      int sockindex, bool *done)
+{
+  return nss_connect_common(conn, sockindex, done);
 }
 
 static ssize_t nss_send(struct connectdata *conn,  /* connection data */
 }
 
 static ssize_t nss_send(struct connectdata *conn,  /* connection data */
@@ -1500,8 +1825,10 @@ static ssize_t nss_send(struct connectdata *conn,  /* connection data */
         ? CURLE_SSL_CERTPROBLEM
         : CURLE_SEND_ERROR;
     }
         ? CURLE_SSL_CERTPROBLEM
         : CURLE_SEND_ERROR;
     }
+
     return -1;
   }
     return -1;
   }
+
   return rc; /* number of bytes */
 }
 
   return rc; /* number of bytes */
 }
 
@@ -1531,8 +1858,10 @@ static ssize_t nss_recv(struct connectdata * conn, /* connection data */
         ? CURLE_SSL_CERTPROBLEM
         : CURLE_RECV_ERROR;
     }
         ? CURLE_SSL_CERTPROBLEM
         : CURLE_RECV_ERROR;
     }
+
     return -1;
   }
     return -1;
   }
+
   return nread;
 }
 
   return nread;
 }
 
@@ -1543,17 +1872,25 @@ size_t Curl_nss_version(char *buffer, size_t size)
 
 int Curl_nss_seed(struct SessionHandle *data)
 {
 
 int Curl_nss_seed(struct SessionHandle *data)
 {
-  /* TODO: implement? */
-  (void) data;
-  return 0;
+  /* make sure that NSS is initialized */
+  return !!Curl_nss_force_init(data);
 }
 
 }
 
-void Curl_nss_random(struct SessionHandle *data,
-                     unsigned char *entropy,
-                     size_t length)
+/* data might be NULL */
+int Curl_nss_random(struct SessionHandle *data,
+                    unsigned char *entropy,
+                    size_t length)
 {
 {
-  Curl_nss_seed(data);  /* Initiate the seed if not already done */
-  PK11_GenerateRandom(entropy, curlx_uztosi(length));
+  if(data)
+    Curl_nss_seed(data);  /* Initiate the seed if not already done */
+
+  if(SECSuccess != PK11_GenerateRandom(entropy, curlx_uztosi(length))) {
+    /* no way to signal a failure from here, we have to abort */
+    failf(data, "PK11_GenerateRandom() failed, calling abort()...");
+    abort();
+  }
+
+  return 0;
 }
 
 void Curl_nss_md5sum(unsigned char *tmp, /* input */
 }
 
 void Curl_nss_md5sum(unsigned char *tmp, /* input */
@@ -1563,6 +1900,7 @@ void Curl_nss_md5sum(unsigned char *tmp, /* input */
 {
   PK11Context *MD5pw = PK11_CreateDigestContext(SEC_OID_MD5);
   unsigned int MD5out;
 {
   PK11Context *MD5pw = PK11_CreateDigestContext(SEC_OID_MD5);
   unsigned int MD5out;
+
   PK11_DigestOp(MD5pw, tmp, curlx_uztoui(tmplen));
   PK11_DigestFinal(MD5pw, md5sum, &MD5out, curlx_uztoui(md5len));
   PK11_DestroyContext(MD5pw, PR_TRUE);
   PK11_DigestOp(MD5pw, tmp, curlx_uztoui(tmplen));
   PK11_DigestFinal(MD5pw, md5sum, &MD5out, curlx_uztoui(md5len));
   PK11_DestroyContext(MD5pw, PR_TRUE);
similarity index 74%
rename from lib/nssg.h
rename to lib/vtls/nssg.h
index cd32706..74840e8 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -25,7 +25,7 @@
 
 #ifdef USE_NSS
 /*
 
 #ifdef USE_NSS
 /*
- * This header should only be needed to get included by sslgen.c and nss.c
+ * This header should only be needed to get included by vtls.c and nss.c
  */
 
 #include "urldata.h"
  */
 
 #include "urldata.h"
@@ -39,7 +39,7 @@ void Curl_nss_close(struct connectdata *conn, int sockindex);
 
 /* tell NSS to close down all open information regarding connections (and
    thus session ID caching etc) */
 
 /* tell NSS to close down all open information regarding connections (and
    thus session ID caching etc) */
-int Curl_nss_close_all(struct SessionHandle *data);
+void Curl_nss_close_all(struct SessionHandle *data);
 
 int Curl_nss_init(void);
 void Curl_nss_cleanup(void);
 
 int Curl_nss_init(void);
 void Curl_nss_cleanup(void);
@@ -51,38 +51,42 @@ int Curl_nss_seed(struct SessionHandle *data);
 /* initialize NSS library if not already */
 CURLcode Curl_nss_force_init(struct SessionHandle *data);
 
 /* initialize NSS library if not already */
 CURLcode Curl_nss_force_init(struct SessionHandle *data);
 
-void Curl_nss_random(struct SessionHandle *data,
-                     unsigned char *entropy,
-                     size_t length);
+int Curl_nss_random(struct SessionHandle *data,
+                    unsigned char *entropy,
+                    size_t length);
 
 void Curl_nss_md5sum(unsigned char *tmp, /* input */
                      size_t tmplen,
                      unsigned char *md5sum, /* output */
                      size_t md5len);
 
 
 void Curl_nss_md5sum(unsigned char *tmp, /* input */
                      size_t tmplen,
                      unsigned char *md5sum, /* output */
                      size_t md5len);
 
-/* this backend provides these functions: */
-#define have_curlssl_random 1
-#define have_curlssl_md5sum 1
+/* this backend supports the CAPATH option */
+#define have_curlssl_ca_path 1
+
+/* this backend supports CURLOPT_CERTINFO */
+#define have_curlssl_certinfo 1
 
 /* API setup for NSS */
 #define curlssl_init Curl_nss_init
 #define curlssl_cleanup Curl_nss_cleanup
 #define curlssl_connect Curl_nss_connect
 
 /* API setup for NSS */
 #define curlssl_init Curl_nss_init
 #define curlssl_cleanup Curl_nss_cleanup
 #define curlssl_connect Curl_nss_connect
+#define curlssl_connect_nonblocking Curl_nss_connect_nonblocking
 
 /* NSS has its own session ID cache */
 #define curlssl_session_free(x) Curl_nop_stmt
 #define curlssl_close_all Curl_nss_close_all
 #define curlssl_close Curl_nss_close
 /* NSS has no shutdown function provided and thus always fail */
 
 /* NSS has its own session ID cache */
 #define curlssl_session_free(x) Curl_nop_stmt
 #define curlssl_close_all Curl_nss_close_all
 #define curlssl_close Curl_nss_close
 /* NSS has no shutdown function provided and thus always fail */
-#define curlssl_shutdown(x,y) (x=x, y=y, 1)
-#define curlssl_set_engine(x,y) (x=x, y=y, CURLE_NOT_BUILT_IN)
-#define curlssl_set_engine_default(x) (x=x, CURLE_NOT_BUILT_IN)
-#define curlssl_engines_list(x) (x=x, (struct curl_slist *)NULL)
+#define curlssl_shutdown(x,y) ((void)x, (void)y, 1)
+#define curlssl_set_engine(x,y) ((void)x, (void)y, CURLE_NOT_BUILT_IN)
+#define curlssl_set_engine_default(x) ((void)x, CURLE_NOT_BUILT_IN)
+#define curlssl_engines_list(x) ((void)x, (struct curl_slist *)NULL)
 #define curlssl_version Curl_nss_version
 #define curlssl_check_cxn(x) Curl_nss_check_cxn(x)
 #define curlssl_version Curl_nss_version
 #define curlssl_check_cxn(x) Curl_nss_check_cxn(x)
-#define curlssl_data_pending(x,y) (x=x, y=y, 0)
+#define curlssl_data_pending(x,y) ((void)x, (void)y, 0)
 #define curlssl_random(x,y,z) Curl_nss_random(x,y,z)
 #define curlssl_md5sum(a,b,c,d) Curl_nss_md5sum(a,b,c,d)
 #define curlssl_random(x,y,z) Curl_nss_random(x,y,z)
 #define curlssl_md5sum(a,b,c,d) Curl_nss_md5sum(a,b,c,d)
+#define CURL_SSL_BACKEND CURLSSLBACKEND_NSS
 
 #endif /* USE_NSS */
 #endif /* HEADER_CURL_NSSG_H */
 
 #endif /* USE_NSS */
 #endif /* HEADER_CURL_NSSG_H */
similarity index 81%
rename from lib/ssluse.c
rename to lib/vtls/openssl.c
index 69328f6..a68d88e 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -22,7 +22,7 @@
 
 /*
  * Source file for all OpenSSL-specific code for the TLS/SSL layer. No code
 
 /*
  * Source file for all OpenSSL-specific code for the TLS/SSL layer. No code
- * but sslgen.c should ever call or use these functions.
+ * but vtls.c should ever call or use these functions.
  */
 
 /*
  */
 
 /*
 #include "formdata.h" /* for the boundary function */
 #include "url.h" /* for the ssl config check function */
 #include "inet_pton.h"
 #include "formdata.h" /* for the boundary function */
 #include "url.h" /* for the ssl config check function */
 #include "inet_pton.h"
-#include "ssluse.h"
+#include "openssl.h"
 #include "connect.h"
 #include "slist.h"
 #include "strequal.h"
 #include "select.h"
 #include "connect.h"
 #include "slist.h"
 #include "strequal.h"
 #include "select.h"
-#include "sslgen.h"
+#include "vtls.h"
 #include "rawstr.h"
 #include "hostcheck.h"
 
 #include "rawstr.h"
 #include "hostcheck.h"
 
@@ -62,6 +62,8 @@
 #include <openssl/dh.h>
 #include <openssl/err.h>
 #include <openssl/md5.h>
 #include <openssl/dh.h>
 #include <openssl/err.h>
 #include <openssl/md5.h>
+#include <openssl/conf.h>
+#include <openssl/bn.h>
 #else
 #include <rand.h>
 #include <x509v3.h>
 #else
 #include <rand.h>
 #include <x509v3.h>
 #define HAVE_ERR_REMOVE_THREAD_STATE 1
 #endif
 
 #define HAVE_ERR_REMOVE_THREAD_STATE 1
 #endif
 
-#ifndef HAVE_SSLV2_CLIENT_METHOD
+#if !defined(HAVE_SSLV2_CLIENT_METHOD) || \
+  OPENSSL_VERSION_NUMBER >= 0x10100000L /* 1.1.0+ has no SSLv2 */
 #undef OPENSSL_NO_SSL2 /* undef first to avoid compiler warnings */
 #define OPENSSL_NO_SSL2
 #endif
 #undef OPENSSL_NO_SSL2 /* undef first to avoid compiler warnings */
 #define OPENSSL_NO_SSL2
 #endif
@@ -258,7 +261,7 @@ static int ossl_seed(struct SessionHandle *data)
   return nread;
 }
 
   return nread;
 }
 
-int Curl_ossl_seed(struct SessionHandle *data)
+static int Curl_ossl_seed(struct SessionHandle *data)
 {
   /* we have the "SSL is seeded" boolean static to prevent multiple
      time-consuming seedings in vain */
 {
   /* we have the "SSL is seeded" boolean static to prevent multiple
      time-consuming seedings in vain */
@@ -294,6 +297,48 @@ static int do_file_type(const char *type)
   return -1;
 }
 
   return -1;
 }
 
+#if defined(HAVE_OPENSSL_ENGINE_H) && defined(HAVE_ENGINE_LOAD_FOUR_ARGS)
+/*
+ * Supply default password to the engine user interface conversation.
+ * The password is passed by OpenSSL engine from ENGINE_load_private_key()
+ * last argument to the ui and can be obtained by UI_get0_user_data(ui) here.
+ */
+static int ssl_ui_reader(UI *ui, UI_STRING *uis)
+{
+  const char *password;
+  switch(UI_get_string_type(uis)) {
+  case UIT_PROMPT:
+  case UIT_VERIFY:
+    password = (const char*)UI_get0_user_data(ui);
+    if(password && (UI_get_input_flags(uis) & UI_INPUT_FLAG_DEFAULT_PWD)) {
+      UI_set_result(ui, uis, password);
+      return 1;
+    }
+  default:
+    break;
+  }
+  return (UI_method_get_reader(UI_OpenSSL()))(ui, uis);
+}
+
+/*
+ * Suppress interactive request for a default password if available.
+ */
+static int ssl_ui_writer(UI *ui, UI_STRING *uis)
+{
+  switch(UI_get_string_type(uis)) {
+  case UIT_PROMPT:
+  case UIT_VERIFY:
+    if(UI_get0_user_data(ui) &&
+       (UI_get_input_flags(uis) & UI_INPUT_FLAG_DEFAULT_PWD)) {
+      return 1;
+    }
+  default:
+    break;
+  }
+  return (UI_method_get_writer(UI_OpenSSL()))(ui, uis);
+}
+#endif
+
 static
 int cert_stuff(struct connectdata *conn,
                SSL_CTX* ctx,
 static
 int cert_stuff(struct connectdata *conn,
                SSL_CTX* ctx,
@@ -306,7 +351,7 @@ int cert_stuff(struct connectdata *conn,
 
   int file_type = do_file_type(cert_type);
 
 
   int file_type = do_file_type(cert_type);
 
-  if(cert_file != NULL || file_type == SSL_FILETYPE_ENGINE) {
+  if(cert_file || (file_type == SSL_FILETYPE_ENGINE)) {
     SSL *ssl;
     X509 *x509;
     int cert_done = 0;
     SSL *ssl;
     X509 *x509;
     int cert_done = 0;
@@ -495,6 +540,7 @@ int cert_stuff(struct connectdata *conn,
 
       if(!cert_done)
         return 0; /* failure! */
 
       if(!cert_done)
         return 0; /* failure! */
+      break;
 #else
       failf(data, "file type P12 for certificate not supported");
       return 0;
 #else
       failf(data, "file type P12 for certificate not supported");
       return 0;
@@ -511,7 +557,7 @@ int cert_stuff(struct connectdata *conn,
     case SSL_FILETYPE_PEM:
       if(cert_done)
         break;
     case SSL_FILETYPE_PEM:
       if(cert_done)
         break;
-      if(key_file == NULL)
+      if(!key_file)
         /* cert & key can only be in PEM case in the same file */
         key_file=cert_file;
     case SSL_FILETYPE_ASN1:
         /* cert & key can only be in PEM case in the same file */
         key_file=cert_file;
     case SSL_FILETYPE_ASN1:
@@ -527,7 +573,16 @@ int cert_stuff(struct connectdata *conn,
         EVP_PKEY *priv_key = NULL;
         if(data->state.engine) {
 #ifdef HAVE_ENGINE_LOAD_FOUR_ARGS
         EVP_PKEY *priv_key = NULL;
         if(data->state.engine) {
 #ifdef HAVE_ENGINE_LOAD_FOUR_ARGS
-          UI_METHOD *ui_method = UI_OpenSSL();
+          UI_METHOD *ui_method =
+            UI_create_method((char *)"cURL user interface");
+          if(!ui_method) {
+            failf(data, "unable do create OpenSSL user-interface method");
+            return 0;
+          }
+          UI_method_set_opener(ui_method, UI_method_get_opener(UI_OpenSSL()));
+          UI_method_set_closer(ui_method, UI_method_get_closer(UI_OpenSSL()));
+          UI_method_set_reader(ui_method, ssl_ui_reader);
+          UI_method_set_writer(ui_method, ssl_ui_writer);
 #endif
           /* the typecast below was added to please mingw32 */
           priv_key = (EVP_PKEY *)
 #endif
           /* the typecast below was added to please mingw32 */
           priv_key = (EVP_PKEY *)
@@ -536,6 +591,9 @@ int cert_stuff(struct connectdata *conn,
                                     ui_method,
 #endif
                                     data->set.str[STRING_KEY_PASSWD]);
                                     ui_method,
 #endif
                                     data->set.str[STRING_KEY_PASSWD]);
+#ifdef HAVE_ENGINE_LOAD_FOUR_ARGS
+          UI_destroy_method(ui_method);
+#endif
           if(!priv_key) {
             failf(data, "failed to load private key from crypto engine");
             return 0;
           if(!priv_key) {
             failf(data, "failed to load private key from crypto engine");
             return 0;
@@ -569,7 +627,7 @@ int cert_stuff(struct connectdata *conn,
     }
 
     ssl=SSL_new(ctx);
     }
 
     ssl=SSL_new(ctx);
-    if(NULL == ssl) {
+    if(!ssl) {
       failf(data,"unable to create an SSL structure");
       return 0;
     }
       failf(data,"unable to create an SSL structure");
       return 0;
     }
@@ -578,7 +636,7 @@ int cert_stuff(struct connectdata *conn,
 
     /* This version was provided by Evan Jordan and is supposed to not
        leak memory as the previous version: */
 
     /* This version was provided by Evan Jordan and is supposed to not
        leak memory as the previous version: */
-    if(x509 != NULL) {
+    if(x509) {
       EVP_PKEY *pktmp = X509_get_pubkey(x509);
       EVP_PKEY_copy_parameters(pktmp,SSL_get_privatekey(ssl));
       EVP_PKEY_free(pktmp);
       EVP_PKEY *pktmp = X509_get_pubkey(x509);
       EVP_PKEY_copy_parameters(pktmp,SSL_get_privatekey(ssl));
       EVP_PKEY_free(pktmp);
@@ -685,6 +743,23 @@ int Curl_ossl_init(void)
 
   OpenSSL_add_all_algorithms();
 
 
   OpenSSL_add_all_algorithms();
 
+
+  /* OPENSSL_config(NULL); is "strongly recommended" to use but unfortunately
+     that function makes an exit() call on wrongly formatted config files
+     which makes it hard to use in some situations. OPENSSL_config() itself
+     calls CONF_modules_load_file() and we use that instead and we ignore
+     its return code! */
+
+  /* CONF_MFLAGS_DEFAULT_SECTION introduced some time between 0.9.8b and
+     0.9.8e */
+#ifndef CONF_MFLAGS_DEFAULT_SECTION
+#define CONF_MFLAGS_DEFAULT_SECTION 0x0
+#endif
+
+  (void)CONF_modules_load_file(NULL, NULL,
+                               CONF_MFLAGS_DEFAULT_SECTION|
+                               CONF_MFLAGS_IGNORE_MISSING_FILE);
+
   return 1;
 }
 
   return 1;
 }
 
@@ -963,7 +1038,7 @@ void Curl_ossl_session_free(void *ptr)
  * This function is called when the 'data' struct is going away. Close
  * down everything and free all resources!
  */
  * This function is called when the 'data' struct is going away. Close
  * down everything and free all resources!
  */
-int Curl_ossl_close_all(struct SessionHandle *data)
+void Curl_ossl_close_all(struct SessionHandle *data)
 {
 #ifdef HAVE_OPENSSL_ENGINE_H
   if(data->state.engine) {
 {
 #ifdef HAVE_OPENSSL_ENGINE_H
   if(data->state.engine) {
@@ -974,7 +1049,6 @@ int Curl_ossl_close_all(struct SessionHandle *data)
 #else
   (void)data;
 #endif
 #else
   (void)data;
 #endif
-  return 0;
 }
 
 static int asn1_output(const ASN1_UTCTIME *tm,
 }
 
 static int asn1_output(const ASN1_UTCTIME *tm,
@@ -1044,8 +1118,7 @@ static int asn1_output(const ASN1_UTCTIME *tm,
    in the certificate and must exactly match the IP in the URI.
 
 */
    in the certificate and must exactly match the IP in the URI.
 
 */
-static CURLcode verifyhost(struct connectdata *conn,
-                           X509 *server_cert)
+static CURLcode verifyhost(struct connectdata *conn, X509 *server_cert)
 {
   int matched = -1; /* -1 is no alternative match yet, 1 means match and 0
                        means mismatch */
 {
   int matched = -1; /* -1 is no alternative match yet, 1 means match and 0
                        means mismatch */
@@ -1058,7 +1131,7 @@ static CURLcode verifyhost(struct connectdata *conn,
 #else
   struct in_addr addr;
 #endif
 #else
   struct in_addr addr;
 #endif
-  CURLcode res = CURLE_OK;
+  CURLcode result = CURLE_OK;
 
 #ifdef ENABLE_IPV6
   if(conn->bits.ipv6_ip &&
 
 #ifdef ENABLE_IPV6
   if(conn->bits.ipv6_ip &&
@@ -1137,7 +1210,9 @@ static CURLcode verifyhost(struct connectdata *conn,
     /* an alternative name field existed, but didn't match and then
        we MUST fail */
     infof(data, "\t subjectAltName does not match %s\n", conn->host.dispname);
     /* an alternative name field existed, but didn't match and then
        we MUST fail */
     infof(data, "\t subjectAltName does not match %s\n", conn->host.dispname);
-    res = CURLE_PEER_FAILED_VERIFICATION;
+    failf(data, "SSL: no alternative certificate subject name matches "
+          "target host name '%s'", conn->host.dispname);
+    result = CURLE_PEER_FAILED_VERIFICATION;
   }
   else {
     /* we have to look to the last occurrence of a commonName in the
   }
   else {
     /* we have to look to the last occurrence of a commonName in the
@@ -1184,7 +1259,7 @@ static CURLcode verifyhost(struct connectdata *conn,
           /* there was a terminating zero before the end of string, this
              cannot match and we return failure! */
           failf(data, "SSL: illegal cert name field");
           /* there was a terminating zero before the end of string, this
              cannot match and we return failure! */
           failf(data, "SSL: illegal cert name field");
-          res = CURLE_PEER_FAILED_VERIFICATION;
+          result = CURLE_PEER_FAILED_VERIFICATION;
         }
       }
     }
         }
       }
     }
@@ -1201,18 +1276,18 @@ static CURLcode verifyhost(struct connectdata *conn,
       }
     }
 
       }
     }
 
-    if(res)
+    if(result)
       /* error already detected, pass through */
       ;
     else if(!peer_CN) {
       failf(data,
             "SSL: unable to obtain common name from peer certificate");
       /* error already detected, pass through */
       ;
     else if(!peer_CN) {
       failf(data,
             "SSL: unable to obtain common name from peer certificate");
-      res = CURLE_PEER_FAILED_VERIFICATION;
+      result = CURLE_PEER_FAILED_VERIFICATION;
     }
     else if(!Curl_cert_hostcheck((const char *)peer_CN, conn->host.name)) {
       failf(data, "SSL: certificate subject name '%s' does not match "
             "target host name '%s'", peer_CN, conn->host.dispname);
     }
     else if(!Curl_cert_hostcheck((const char *)peer_CN, conn->host.name)) {
       failf(data, "SSL: certificate subject name '%s' does not match "
             "target host name '%s'", peer_CN, conn->host.dispname);
-      res = CURLE_PEER_FAILED_VERIFICATION;
+      result = CURLE_PEER_FAILED_VERIFICATION;
     }
     else {
       infof(data, "\t common name: %s (matched)\n", peer_CN);
     }
     else {
       infof(data, "\t common name: %s (matched)\n", peer_CN);
@@ -1220,7 +1295,8 @@ static CURLcode verifyhost(struct connectdata *conn,
     if(peer_CN)
       OPENSSL_free(peer_CN);
   }
     if(peer_CN)
       OPENSSL_free(peer_CN);
   }
-  return res;
+
+  return result;
 }
 #endif /* USE_SSLEAY */
 
 }
 #endif /* USE_SSLEAY */
 
@@ -1230,6 +1306,7 @@ static CURLcode verifyhost(struct connectdata *conn,
 
 static const char *ssl_msg_type(int ssl_ver, int msg)
 {
 
 static const char *ssl_msg_type(int ssl_ver, int msg)
 {
+#ifdef SSL2_VERSION_MAJOR
   if(ssl_ver == SSL2_VERSION_MAJOR) {
     switch (msg) {
       case SSL2_MT_ERROR:
   if(ssl_ver == SSL2_VERSION_MAJOR) {
     switch (msg) {
       case SSL2_MT_ERROR:
@@ -1252,7 +1329,9 @@ static const char *ssl_msg_type(int ssl_ver, int msg)
         return "Client CERT";
     }
   }
         return "Client CERT";
     }
   }
-  else if(ssl_ver == SSL3_VERSION_MAJOR) {
+  else
+#endif
+  if(ssl_ver == SSL3_VERSION_MAJOR) {
     switch (msg) {
       case SSL3_MT_HELLO_REQUEST:
         return "Hello request";
     switch (msg) {
       case SSL3_MT_HELLO_REQUEST:
         return "Hello request";
@@ -1300,16 +1379,47 @@ static void ssl_tls_trace(int direction, int ssl_ver, int content_type,
   struct SessionHandle *data;
   const char *msg_name, *tls_rt_name;
   char ssl_buf[1024];
   struct SessionHandle *data;
   const char *msg_name, *tls_rt_name;
   char ssl_buf[1024];
-  int  ver, msg_type, txt_len;
+  char unknown[32];
+  int msg_type, txt_len;
+  const char *verstr;
 
   if(!conn || !conn->data || !conn->data->set.fdebug ||
      (direction != 0 && direction != 1))
     return;
 
   data = conn->data;
 
   if(!conn || !conn->data || !conn->data->set.fdebug ||
      (direction != 0 && direction != 1))
     return;
 
   data = conn->data;
-  ssl_ver >>= 8;
-  ver = (ssl_ver == SSL2_VERSION_MAJOR ? '2' :
-         ssl_ver == SSL3_VERSION_MAJOR ? '3' : '?');
+
+  switch(ssl_ver) {
+#ifdef SSL2_VERSION_MAJOR /* removed in recent versions */
+  case SSL2_VERSION_MAJOR:
+    verstr = "SSLv2";
+    break;
+#endif
+#ifdef SSL3_VERSION
+  case SSL3_VERSION:
+    verstr = "SSLv3";
+    break;
+#endif
+  case TLS1_VERSION:
+    verstr = "TLSv1.0";
+    break;
+#ifdef TLS1_1_VERSION
+  case TLS1_1_VERSION:
+    verstr = "TLSv1.1";
+    break;
+#endif
+#ifdef TLS1_2_VERSION
+  case TLS1_2_VERSION:
+    verstr = "TLSv1.2";
+    break;
+#endif
+  default:
+    snprintf(unknown, sizeof(unknown), "(%x)", ssl_ver);
+    verstr = unknown;
+    break;
+  }
+
+  ssl_ver >>= 8; /* check the upper 8 bits only below */
 
   /* SSLv2 doesn't seem to have TLS record-type headers, so OpenSSL
    * always pass-up content-type as 0. But the interesting message-type
 
   /* SSLv2 doesn't seem to have TLS record-type headers, so OpenSSL
    * always pass-up content-type as 0. But the interesting message-type
@@ -1323,8 +1433,8 @@ static void ssl_tls_trace(int direction, int ssl_ver, int content_type,
   msg_type = *(char*)buf;
   msg_name = ssl_msg_type(ssl_ver, msg_type);
 
   msg_type = *(char*)buf;
   msg_name = ssl_msg_type(ssl_ver, msg_type);
 
-  txt_len = snprintf(ssl_buf, sizeof(ssl_buf), "SSLv%c, %s%s (%d):\n",
-                     ver, tls_rt_name, msg_name, msg_type);
+  txt_len = snprintf(ssl_buf, sizeof(ssl_buf), "%s, %s%s (%d):\n",
+                     verstr, tls_rt_name, msg_name, msg_type);
   Curl_debug(data, CURLINFO_TEXT, ssl_buf, (size_t)txt_len, NULL);
 
   Curl_debug(data, (direction == 1) ? CURLINFO_SSL_DATA_OUT :
   Curl_debug(data, CURLINFO_TEXT, ssl_buf, (size_t)txt_len, NULL);
 
   Curl_debug(data, (direction == 1) ? CURLINFO_SSL_DATA_OUT :
@@ -1342,16 +1452,94 @@ static void ssl_tls_trace(int direction, int ssl_ver, int content_type,
 #  define use_sni(x)  Curl_nop_stmt
 #endif
 
 #  define use_sni(x)  Curl_nop_stmt
 #endif
 
-static CURLcode
-ossl_connect_step1(struct connectdata *conn,
-                   int sockindex)
+#ifdef USE_NGHTTP2
+
+/* Check for OpenSSL 1.0.2 which has ALPN support. */
+#undef HAS_ALPN
+#if OPENSSL_VERSION_NUMBER >= 0x10002000L \
+    && !defined(OPENSSL_NO_TLSEXT)
+#  define HAS_ALPN 1
+#endif
+
+/* Check for OpenSSL 1.0.1 which has NPN support. */
+#undef HAS_NPN
+#if OPENSSL_VERSION_NUMBER >= 0x10001000L \
+    && !defined(OPENSSL_NO_TLSEXT) \
+    && !defined(OPENSSL_NO_NEXTPROTONEG)
+#  define HAS_NPN 1
+#endif
+
+#ifdef HAS_NPN
+
+/*
+ * in is a list of lenght prefixed strings. this function has to select
+ * the protocol we want to use from the list and write its string into out.
+ */
+static int
+select_next_proto_cb(SSL *ssl,
+                     unsigned char **out, unsigned char *outlen,
+                     const unsigned char *in, unsigned int inlen,
+                     void *arg)
+{
+  struct connectdata *conn = (struct connectdata*) arg;
+  int retval = nghttp2_select_next_protocol(out, outlen, in, inlen);
+
+  (void)ssl;
+
+  if(retval == 1) {
+    infof(conn->data, "NPN, negotiated HTTP2 (%s)\n",
+          NGHTTP2_PROTO_VERSION_ID);
+    conn->negnpn = NPN_HTTP2;
+  }
+  else if(retval == 0) {
+    infof(conn->data, "NPN, negotiated HTTP1.1\n");
+    conn->negnpn = NPN_HTTP1_1;
+  }
+  else {
+    infof(conn->data, "NPN, no overlap, use HTTP1.1\n",
+          NGHTTP2_PROTO_VERSION_ID);
+    *out = (unsigned char*)"http/1.1";
+    *outlen = sizeof("http/1.1") - 1;
+    conn->negnpn = NPN_HTTP1_1;
+  }
+
+  return SSL_TLSEXT_ERR_OK;
+}
+#endif /* HAS_NPN */
+
+#endif /* USE_NGHTTP2 */
+
+static const char *
+get_ssl_version_txt(SSL_SESSION *session)
 {
 {
-  CURLcode retcode = CURLE_OK;
+  if(!session)
+    return "";
+
+  switch(session->ssl_version) {
+#if OPENSSL_VERSION_NUMBER >= 0x1000100FL
+  case TLS1_2_VERSION:
+    return "TLSv1.2";
+  case TLS1_1_VERSION:
+    return "TLSv1.1";
+#endif
+  case TLS1_VERSION:
+    return "TLSv1.0";
+  case SSL3_VERSION:
+    return "SSLv3";
+  case SSL2_VERSION:
+    return "SSLv2";
+  }
+  return "unknown";
+}
 
 
+static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
+{
+  CURLcode result = CURLE_OK;
+  char *ciphers;
   struct SessionHandle *data = conn->data;
   struct SessionHandle *data = conn->data;
-  SSL_METHOD_QUAL SSL_METHOD *req_method=NULL;
-  void *ssl_sessionid=NULL;
-  X509_LOOKUP *lookup=NULL;
+  SSL_METHOD_QUAL SSL_METHOD *req_method = NULL;
+  void *ssl_sessionid = NULL;
+  X509_LOOKUP *lookup = NULL;
   curl_socket_t sockfd = conn->sock[sockindex];
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
   long ctx_options;
   curl_socket_t sockfd = conn->sock[sockindex];
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
   long ctx_options;
@@ -1363,30 +1551,28 @@ ossl_connect_step1(struct connectdata *conn,
   struct in_addr addr;
 #endif
 #endif
   struct in_addr addr;
 #endif
 #endif
+#ifdef HAS_ALPN
+  unsigned char protocols[128];
+#endif
 
   DEBUGASSERT(ssl_connect_1 == connssl->connecting_state);
 
   /* Make funny stuff to get random input */
   Curl_ossl_seed(data);
 
 
   DEBUGASSERT(ssl_connect_1 == connssl->connecting_state);
 
   /* Make funny stuff to get random input */
   Curl_ossl_seed(data);
 
+  data->set.ssl.certverifyresult = !X509_V_OK;
+
   /* check to see if we've been told to use an explicit SSL/TLS version */
 
   switch(data->set.ssl.version) {
   default:
   case CURL_SSLVERSION_DEFAULT:
   /* check to see if we've been told to use an explicit SSL/TLS version */
 
   switch(data->set.ssl.version) {
   default:
   case CURL_SSLVERSION_DEFAULT:
-#ifdef USE_TLS_SRP
-    if(data->set.ssl.authtype == CURL_TLSAUTH_SRP) {
-      infof(data, "Set version TLSv1 for SRP authorisation\n");
-      req_method = TLSv1_client_method() ;
-    }
-    else
-#endif
-    /* we try to figure out version */
-    req_method = SSLv23_client_method();
-    use_sni(TRUE);
-    break;
   case CURL_SSLVERSION_TLSv1:
   case CURL_SSLVERSION_TLSv1:
-    req_method = TLSv1_client_method();
+  case CURL_SSLVERSION_TLSv1_0:
+  case CURL_SSLVERSION_TLSv1_1:
+  case CURL_SSLVERSION_TLSv1_2:
+    /* it will be handled later with the context options */
+    req_method = SSLv23_client_method();
     use_sni(TRUE);
     break;
   case CURL_SSLVERSION_SSLv2:
     use_sni(TRUE);
     break;
   case CURL_SSLVERSION_SSLv2:
@@ -1499,12 +1685,103 @@ ossl_connect_step1(struct connectdata *conn,
     ctx_options &= ~SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS;
 #endif
 
     ctx_options &= ~SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS;
 #endif
 
-  /* disable SSLv2 in the default case (i.e. allow SSLv3 and TLSv1) */
-  if(data->set.ssl.version == CURL_SSLVERSION_DEFAULT)
+  switch(data->set.ssl.version) {
+  case CURL_SSLVERSION_SSLv3:
+#ifdef USE_TLS_SRP
+    if(data->set.ssl.authtype == CURL_TLSAUTH_SRP) {
+      infof(data, "Set version TLSv1.x for SRP authorisation\n");
+    }
+#endif
     ctx_options |= SSL_OP_NO_SSLv2;
     ctx_options |= SSL_OP_NO_SSLv2;
+    ctx_options |= SSL_OP_NO_TLSv1;
+#if OPENSSL_VERSION_NUMBER >= 0x1000100FL
+    ctx_options |= SSL_OP_NO_TLSv1_1;
+    ctx_options |= SSL_OP_NO_TLSv1_2;
+#endif
+    break;
+
+  case CURL_SSLVERSION_DEFAULT:
+  case CURL_SSLVERSION_TLSv1:
+    ctx_options |= SSL_OP_NO_SSLv2;
+    ctx_options |= SSL_OP_NO_SSLv3;
+    break;
+
+  case CURL_SSLVERSION_TLSv1_0:
+    ctx_options |= SSL_OP_NO_SSLv2;
+    ctx_options |= SSL_OP_NO_SSLv3;
+#if OPENSSL_VERSION_NUMBER >= 0x1000100FL
+    ctx_options |= SSL_OP_NO_TLSv1_1;
+    ctx_options |= SSL_OP_NO_TLSv1_2;
+#endif
+    break;
+
+#if OPENSSL_VERSION_NUMBER >= 0x1000100FL
+  case CURL_SSLVERSION_TLSv1_1:
+    ctx_options |= SSL_OP_NO_SSLv2;
+    ctx_options |= SSL_OP_NO_SSLv3;
+    ctx_options |= SSL_OP_NO_TLSv1;
+    ctx_options |= SSL_OP_NO_TLSv1_2;
+    break;
+
+  case CURL_SSLVERSION_TLSv1_2:
+    ctx_options |= SSL_OP_NO_SSLv2;
+    ctx_options |= SSL_OP_NO_SSLv3;
+    ctx_options |= SSL_OP_NO_TLSv1;
+    ctx_options |= SSL_OP_NO_TLSv1_1;
+    break;
+#endif
+
+#ifndef OPENSSL_NO_SSL2
+  case CURL_SSLVERSION_SSLv2:
+    ctx_options |= SSL_OP_NO_SSLv3;
+    ctx_options |= SSL_OP_NO_TLSv1;
+#if OPENSSL_VERSION_NUMBER >= 0x1000100FL
+    ctx_options |= SSL_OP_NO_TLSv1_1;
+    ctx_options |= SSL_OP_NO_TLSv1_2;
+#endif
+    break;
+#endif
+
+  default:
+    failf(data, "Unsupported SSL protocol version");
+    return CURLE_SSL_CONNECT_ERROR;
+  }
 
   SSL_CTX_set_options(connssl->ctx, ctx_options);
 
 
   SSL_CTX_set_options(connssl->ctx, ctx_options);
 
+#ifdef USE_NGHTTP2
+  if(data->set.httpversion == CURL_HTTP_VERSION_2_0) {
+#ifdef HAS_NPN
+    if(data->set.ssl_enable_npn) {
+      SSL_CTX_set_next_proto_select_cb(connssl->ctx, select_next_proto_cb,
+                                       conn);
+    }
+#endif
+
+#ifdef HAS_ALPN
+    if(data->set.ssl_enable_alpn) {
+      protocols[0] = NGHTTP2_PROTO_VERSION_ID_LEN;
+      memcpy(&protocols[1], NGHTTP2_PROTO_VERSION_ID,
+          NGHTTP2_PROTO_VERSION_ID_LEN);
+
+      protocols[NGHTTP2_PROTO_VERSION_ID_LEN+1] = ALPN_HTTP_1_1_LENGTH;
+      memcpy(&protocols[NGHTTP2_PROTO_VERSION_ID_LEN+2], ALPN_HTTP_1_1,
+          ALPN_HTTP_1_1_LENGTH);
+
+      /* expects length prefixed preference ordered list of protocols in wire
+       * format
+       */
+      SSL_CTX_set_alpn_protos(connssl->ctx, protocols,
+          NGHTTP2_PROTO_VERSION_ID_LEN + ALPN_HTTP_1_1_LENGTH + 2);
+
+      infof(data, "ALPN, offering %s, %s\n", NGHTTP2_PROTO_VERSION_ID,
+            ALPN_HTTP_1_1);
+      connssl->asked_for_h2 = TRUE;
+    }
+#endif
+  }
+#endif
+
   if(data->set.str[STRING_CERT] || data->set.str[STRING_CERT_TYPE]) {
     if(!cert_stuff(conn,
                    connssl->ctx,
   if(data->set.str[STRING_CERT] || data->set.str[STRING_CERT_TYPE]) {
     if(!cert_stuff(conn,
                    connssl->ctx,
@@ -1517,12 +1794,12 @@ ossl_connect_step1(struct connectdata *conn,
     }
   }
 
     }
   }
 
-  if(data->set.str[STRING_SSL_CIPHER_LIST]) {
-    if(!SSL_CTX_set_cipher_list(connssl->ctx,
-                                data->set.str[STRING_SSL_CIPHER_LIST])) {
-      failf(data, "failed setting cipher list");
-      return CURLE_SSL_CIPHER;
-    }
+  ciphers = data->set.str[STRING_SSL_CIPHER_LIST];
+  if(!ciphers)
+    ciphers = (char *)DEFAULT_CIPHER_SELECTION;
+  if(!SSL_CTX_set_cipher_list(connssl->ctx, ciphers)) {
+    failf(data, "failed setting cipher list: %s", ciphers);
+    return CURLE_SSL_CIPHER;
   }
 
 #ifdef USE_TLS_SRP
   }
 
 #ifdef USE_TLS_SRP
@@ -1616,11 +1893,11 @@ ossl_connect_step1(struct connectdata *conn,
 
   /* give application a chance to interfere with SSL set up. */
   if(data->set.ssl.fsslctx) {
 
   /* give application a chance to interfere with SSL set up. */
   if(data->set.ssl.fsslctx) {
-    retcode = (*data->set.ssl.fsslctx)(data, connssl->ctx,
-                                       data->set.ssl.fsslctxp);
-    if(retcode) {
+    result = (*data->set.ssl.fsslctx)(data, connssl->ctx,
+                                      data->set.ssl.fsslctxp);
+    if(result) {
       failf(data,"error signaled by ssl ctx callback");
       failf(data,"error signaled by ssl ctx callback");
-      return retcode;
+      return result;
     }
   }
 
     }
   }
 
@@ -1667,16 +1944,15 @@ ossl_connect_step1(struct connectdata *conn,
   }
 
   connssl->connecting_state = ssl_connect_2;
   }
 
   connssl->connecting_state = ssl_connect_2;
+
   return CURLE_OK;
 }
 
   return CURLE_OK;
 }
 
-static CURLcode
-ossl_connect_step2(struct connectdata *conn, int sockindex)
+static CURLcode ossl_connect_step2(struct connectdata *conn, int sockindex)
 {
   struct SessionHandle *data = conn->data;
   int err;
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
 {
   struct SessionHandle *data = conn->data;
   int err;
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
-
   DEBUGASSERT(ssl_connect_2 == connssl->connecting_state
              || ssl_connect_2_reading == connssl->connecting_state
              || ssl_connect_2_writing == connssl->connecting_state);
   DEBUGASSERT(ssl_connect_2 == connssl->connecting_state
              || ssl_connect_2_reading == connssl->connecting_state
              || ssl_connect_2_writing == connssl->connecting_state);
@@ -1704,7 +1980,7 @@ ossl_connect_step2(struct connectdata *conn, int sockindex)
       unsigned long errdetail;
       char error_buffer[256]; /* OpenSSL documents that this must be at least
                                  256 bytes long. */
       unsigned long errdetail;
       char error_buffer[256]; /* OpenSSL documents that this must be at least
                                  256 bytes long. */
-      CURLcode rc;
+      CURLcode result;
       const char *cert_problem = NULL;
       long lerr;
 
       const char *cert_problem = NULL;
       long lerr;
 
@@ -1728,7 +2004,7 @@ ossl_connect_step2(struct connectdata *conn, int sockindex)
            SSL routines:
            SSL3_GET_SERVER_CERTIFICATE:
            certificate verify failed */
            SSL routines:
            SSL3_GET_SERVER_CERTIFICATE:
            certificate verify failed */
-        rc = CURLE_SSL_CACERT;
+        result = CURLE_SSL_CACERT;
 
         lerr = SSL_get_verify_result(connssl->handle);
         if(lerr != X509_V_OK) {
 
         lerr = SSL_get_verify_result(connssl->handle);
         if(lerr != X509_V_OK) {
@@ -1742,7 +2018,7 @@ ossl_connect_step2(struct connectdata *conn, int sockindex)
 
         break;
       default:
 
         break;
       default:
-        rc = CURLE_SSL_CONNECT_ERROR;
+        result = CURLE_SSL_CONNECT_ERROR;
         SSL_strerror(errdetail, error_buffer, sizeof(error_buffer));
         break;
       }
         SSL_strerror(errdetail, error_buffer, sizeof(error_buffer));
         break;
       }
@@ -1753,15 +2029,16 @@ ossl_connect_step2(struct connectdata *conn, int sockindex)
        * (RST connection etc.), OpenSSL gives no explanation whatsoever and
        * the SO_ERROR is also lost.
        */
        * (RST connection etc.), OpenSSL gives no explanation whatsoever and
        * the SO_ERROR is also lost.
        */
-      if(CURLE_SSL_CONNECT_ERROR == rc && errdetail == 0) {
+      if(CURLE_SSL_CONNECT_ERROR == result && errdetail == 0) {
         failf(data, "Unknown SSL protocol error in connection to %s:%ld ",
         failf(data, "Unknown SSL protocol error in connection to %s:%ld ",
-              conn->host.name, conn->port);
-        return rc;
+              conn->host.name, conn->remote_port);
+        return result;
       }
       }
-      /* Could be a CERT problem */
 
 
+      /* Could be a CERT problem */
       failf(data, "%s%s", cert_problem ? cert_problem : "", error_buffer);
       failf(data, "%s%s", cert_problem ? cert_problem : "", error_buffer);
-      return rc;
+
+      return result;
     }
   }
   else {
     }
   }
   else {
@@ -1769,8 +2046,36 @@ ossl_connect_step2(struct connectdata *conn, int sockindex)
     connssl->connecting_state = ssl_connect_3;
 
     /* Informational message */
     connssl->connecting_state = ssl_connect_3;
 
     /* Informational message */
-    infof (data, "SSL connection using %s\n",
-           SSL_get_cipher(connssl->handle));
+    infof(data, "SSL connection using %s / %s\n",
+          get_ssl_version_txt(SSL_get_session(connssl->handle)),
+          SSL_get_cipher(connssl->handle));
+
+#ifdef HAS_ALPN
+    /* Sets data and len to negotiated protocol, len is 0 if no protocol was
+     * negotiated
+     */
+    if(data->set.ssl_enable_alpn) {
+      const unsigned char* neg_protocol;
+      unsigned int len;
+      SSL_get0_alpn_selected(connssl->handle, &neg_protocol, &len);
+      if(len != 0) {
+        infof(data, "ALPN, server accepted to use %.*s\n", len, neg_protocol);
+
+        if(len == NGHTTP2_PROTO_VERSION_ID_LEN &&
+           memcmp(NGHTTP2_PROTO_VERSION_ID, neg_protocol, len) == 0) {
+          conn->negnpn = NPN_HTTP2;
+        }
+        else if(len ==
+                ALPN_HTTP_1_1_LENGTH && memcmp(ALPN_HTTP_1_1,
+                                               neg_protocol,
+                                               ALPN_HTTP_1_1_LENGTH) == 0) {
+          conn->negnpn = NPN_HTTP1_1;
+        }
+      }
+      else if(connssl->asked_for_h2)
+        infof(data, "ALPN, server did not agree to a protocol\n");
+    }
+#endif
 
     return CURLE_OK;
   }
 
     return CURLE_OK;
   }
@@ -1821,7 +2126,7 @@ static void pubkey_show(struct SessionHandle *data,
 
 #define print_pubkey_BN(_type, _name, _num)    \
 do {                              \
 
 #define print_pubkey_BN(_type, _name, _num)    \
 do {                              \
-  if(pubkey->pkey._type->_name != NULL) { \
+  if(pubkey->pkey._type->_name) { \
     int len = BN_num_bytes(pubkey->pkey._type->_name);  \
     if(len < CERTBUFFERSIZE) {                                    \
       BN_bn2bin(pubkey->pkey._type->_name, (unsigned char*)bufp); \
     int len = BN_num_bytes(pubkey->pkey._type->_name);  \
     if(len < CERTBUFFERSIZE) {                                    \
       BN_bn2bin(pubkey->pkey._type->_name, (unsigned char*)bufp); \
@@ -1875,7 +2180,7 @@ static int X509V3_ext(struct SessionHandle *data,
         sep=", ";
         j++; /* skip the newline */
       };
         sep=", ";
         j++; /* skip the newline */
       };
-      while((biomem->data[j] == ' ') && (j<(size_t)biomem->length))
+      while((j<(size_t)biomem->length) && (biomem->data[j] == ' '))
         j++;
       if(j<(size_t)biomem->length)
         ptr+=snprintf(ptr, sizeof(buf)-(ptr-buf), "%s%c", sep,
         j++;
       if(j<(size_t)biomem->length)
         ptr+=snprintf(ptr, sizeof(buf)-(ptr-buf), "%s%c", sep,
@@ -1899,6 +2204,7 @@ static void X509_signature(struct SessionHandle *data,
   char buf[1024];
   char *ptr = buf;
   int i;
   char buf[1024];
   char *ptr = buf;
   int i;
+
   for(i=0; i<sig->length; i++)
     ptr+=snprintf(ptr, sizeof(buf)-(ptr-buf), "%02x:", sig->data[i]);
 
   for(i=0; i<sig->length; i++)
     ptr+=snprintf(ptr, sizeof(buf)-(ptr-buf), "%02x:", sig->data[i]);
 
@@ -1917,13 +2223,10 @@ static void dumpcert(struct SessionHandle *data, X509 *x, int numcert)
 
   BIO_get_mem_ptr(bio_out, &biomem);
 
 
   BIO_get_mem_ptr(bio_out, &biomem);
 
-  infof(data, "%s\n", biomem->data);
-
   Curl_ssl_push_certinfo_len(data, numcert,
                              "Cert", biomem->data, biomem->length);
 
   BIO_free(bio_out);
   Curl_ssl_push_certinfo_len(data, numcert,
                              "Cert", biomem->data, biomem->length);
 
   BIO_free(bio_out);
-
 }
 
 /*
 }
 
 /*
@@ -1937,6 +2240,7 @@ static CURLcode get_cert_chain(struct connectdata *conn,
                                struct ssl_connect_data *connssl)
 
 {
                                struct ssl_connect_data *connssl)
 
 {
+  CURLcode result;
   STACK_OF(X509) *sk;
   int i;
   char *bufp;
   STACK_OF(X509) *sk;
   int i;
   char *bufp;
@@ -1954,9 +2258,11 @@ static CURLcode get_cert_chain(struct connectdata *conn,
   }
 
   numcerts = sk_X509_num(sk);
   }
 
   numcerts = sk_X509_num(sk);
-  if(Curl_ssl_init_certinfo(data, numcerts)) {
+
+  result = Curl_ssl_init_certinfo(data, numcerts);
+  if(result) {
     free(bufp);
     free(bufp);
-    return CURLE_OUT_OF_MEMORY;
+    return result;
   }
 
   infof(data, "--- Certificate chain\n");
   }
 
   infof(data, "--- Certificate chain\n");
@@ -2098,6 +2404,65 @@ static CURLcode get_cert_chain(struct connectdata *conn,
 }
 
 /*
 }
 
 /*
+ * Heavily modified from:
+ * https://www.owasp.org/index.php/Certificate_and_Public_Key_Pinning#OpenSSL
+ */
+static CURLcode pkp_pin_peer_pubkey(X509* cert, const char *pinnedpubkey)
+{
+  /* Scratch */
+  int len1 = 0, len2 = 0;
+  unsigned char *buff1 = NULL, *temp = NULL;
+
+  /* Result is returned to caller */
+  CURLcode result = CURLE_SSL_PINNEDPUBKEYNOTMATCH;
+
+  /* if a path wasn't specified, don't pin */
+  if(!pinnedpubkey)
+    return CURLE_OK;
+
+  if(!cert)
+    return result;
+
+  do {
+    /* Begin Gyrations to get the subjectPublicKeyInfo     */
+    /* Thanks to Viktor Dukhovni on the OpenSSL mailing list */
+
+    /* http://groups.google.com/group/mailing.openssl.users/browse_thread
+     /thread/d61858dae102c6c7 */
+    len1 = i2d_X509_PUBKEY(X509_get_X509_PUBKEY(cert), NULL);
+    if(len1 < 1)
+      break; /* failed */
+
+    /* http://www.openssl.org/docs/crypto/buffer.html */
+    buff1 = temp = OPENSSL_malloc(len1);
+    if(!buff1)
+      break; /* failed */
+
+    /* http://www.openssl.org/docs/crypto/d2i_X509.html */
+    len2 = i2d_X509_PUBKEY(X509_get_X509_PUBKEY(cert), &temp);
+
+    /*
+     * These checks are verifying we got back the same values as when we
+     * sized the buffer.Its pretty weak since they should always be the
+     * same. But it gives us something to test.
+     */
+    if((len1 != len2) || !temp || ((temp - buff1) != len1))
+      break; /* failed */
+
+    /* End Gyrations */
+
+    /* The one good exit point */
+    result = Curl_pin_peer_pubkey(pinnedpubkey, buff1, len1);
+  } while(0);
+
+  /* http://www.openssl.org/docs/crypto/buffer.html */
+  if(buff1)
+    OPENSSL_free(buff1);
+
+  return result;
+}
+
+/*
  * Get the server cert, verify it and show it etc, only call failf() if the
  * 'strict' argument is TRUE as otherwise all this is for informational
  * purposes only!
  * Get the server cert, verify it and show it etc, only call failf() if the
  * 'strict' argument is TRUE as otherwise all this is for informational
  * purposes only!
@@ -2109,7 +2474,7 @@ static CURLcode servercert(struct connectdata *conn,
                            struct ssl_connect_data *connssl,
                            bool strict)
 {
                            struct ssl_connect_data *connssl,
                            bool strict)
 {
-  CURLcode retcode = CURLE_OK;
+  CURLcode result = CURLE_OK;
   int rc;
   long lerr;
   ASN1_TIME *certdate;
   int rc;
   long lerr;
   ASN1_TIME *certdate;
@@ -2117,20 +2482,20 @@ static CURLcode servercert(struct connectdata *conn,
   X509 *issuer;
   FILE *fp;
   char *buffer = data->state.buffer;
   X509 *issuer;
   FILE *fp;
   char *buffer = data->state.buffer;
+  const char *ptr;
 
   if(data->set.ssl.certinfo)
     /* we've been asked to gather certificate info! */
     (void)get_cert_chain(conn, connssl);
 
 
   if(data->set.ssl.certinfo)
     /* we've been asked to gather certificate info! */
     (void)get_cert_chain(conn, connssl);
 
-  data->set.ssl.certverifyresult = !X509_V_OK;
-
   connssl->server_cert = SSL_get_peer_certificate(connssl->handle);
   if(!connssl->server_cert) {
     if(strict)
       failf(data, "SSL: couldn't get peer certificate!");
     return CURLE_PEER_FAILED_VERIFICATION;
   }
   connssl->server_cert = SSL_get_peer_certificate(connssl->handle);
   if(!connssl->server_cert) {
     if(strict)
       failf(data, "SSL: couldn't get peer certificate!");
     return CURLE_PEER_FAILED_VERIFICATION;
   }
-  infof (data, "Server certificate:\n");
+
+  infof(data, "Server certificate:\n");
 
   rc = x509_name_oneline(X509_get_subject_name(connssl->server_cert),
                          buffer, BUFSIZE);
 
   rc = x509_name_oneline(X509_get_subject_name(connssl->server_cert),
                          buffer, BUFSIZE);
@@ -2145,11 +2510,11 @@ static CURLcode servercert(struct connectdata *conn,
   infof(data, "\t expire date: %s\n", buffer);
 
   if(data->set.ssl.verifyhost) {
   infof(data, "\t expire date: %s\n", buffer);
 
   if(data->set.ssl.verifyhost) {
-    retcode = verifyhost(conn, connssl->server_cert);
-    if(retcode) {
+    result = verifyhost(conn, connssl->server_cert);
+    if(result) {
       X509_free(connssl->server_cert);
       connssl->server_cert = NULL;
       X509_free(connssl->server_cert);
       connssl->server_cert = NULL;
-      return retcode;
+      return result;
     }
   }
 
     }
   }
 
@@ -2158,7 +2523,7 @@ static CURLcode servercert(struct connectdata *conn,
   if(rc) {
     if(strict)
       failf(data, "SSL: couldn't get X509-issuer name!");
   if(rc) {
     if(strict)
       failf(data, "SSL: couldn't get X509-issuer name!");
-    retcode = CURLE_SSL_CONNECT_ERROR;
+    result = CURLE_SSL_CONNECT_ERROR;
   }
   else {
     infof(data, "\t issuer: %s\n", buffer);
   }
   else {
     infof(data, "\t issuer: %s\n", buffer);
@@ -2168,7 +2533,7 @@ static CURLcode servercert(struct connectdata *conn,
 
     /* e.g. match issuer name with provided issuer certificate */
     if(data->set.str[STRING_SSL_ISSUERCERT]) {
 
     /* e.g. match issuer name with provided issuer certificate */
     if(data->set.str[STRING_SSL_ISSUERCERT]) {
-      fp=fopen(data->set.str[STRING_SSL_ISSUERCERT],"r");
+      fp = fopen(data->set.str[STRING_SSL_ISSUERCERT], "r");
       if(!fp) {
         if(strict)
           failf(data, "SSL: Unable to open issuer cert (%s)",
       if(!fp) {
         if(strict)
           failf(data, "SSL: Unable to open issuer cert (%s)",
@@ -2177,7 +2542,8 @@ static CURLcode servercert(struct connectdata *conn,
         connssl->server_cert = NULL;
         return CURLE_SSL_ISSUER_ERROR;
       }
         connssl->server_cert = NULL;
         return CURLE_SSL_ISSUER_ERROR;
       }
-      issuer = PEM_read_X509(fp,NULL,ZERO_NULL,NULL);
+
+      issuer = PEM_read_X509(fp, NULL, ZERO_NULL, NULL);
       if(!issuer) {
         if(strict)
           failf(data, "SSL: Unable to read issuer cert (%s)",
       if(!issuer) {
         if(strict)
           failf(data, "SSL: Unable to read issuer cert (%s)",
@@ -2187,7 +2553,9 @@ static CURLcode servercert(struct connectdata *conn,
         fclose(fp);
         return CURLE_SSL_ISSUER_ERROR;
       }
         fclose(fp);
         return CURLE_SSL_ISSUER_ERROR;
       }
+
       fclose(fp);
       fclose(fp);
+
       if(X509_check_issued(issuer,connssl->server_cert) != X509_V_OK) {
         if(strict)
           failf(data, "SSL: Certificate issuer check failed (%s)",
       if(X509_check_issued(issuer,connssl->server_cert) != X509_V_OK) {
         if(strict)
           failf(data, "SSL: Certificate issuer check failed (%s)",
@@ -2197,13 +2565,15 @@ static CURLcode servercert(struct connectdata *conn,
         connssl->server_cert = NULL;
         return CURLE_SSL_ISSUER_ERROR;
       }
         connssl->server_cert = NULL;
         return CURLE_SSL_ISSUER_ERROR;
       }
+
       infof(data, "\t SSL certificate issuer check ok (%s)\n",
             data->set.str[STRING_SSL_ISSUERCERT]);
       X509_free(issuer);
     }
 
       infof(data, "\t SSL certificate issuer check ok (%s)\n",
             data->set.str[STRING_SSL_ISSUERCERT]);
       X509_free(issuer);
     }
 
-    lerr = data->set.ssl.certverifyresult=
+    lerr = data->set.ssl.certverifyresult =
       SSL_get_verify_result(connssl->handle);
       SSL_get_verify_result(connssl->handle);
+
     if(data->set.ssl.certverifyresult != X509_V_OK) {
       if(data->set.ssl.verifypeer) {
         /* We probably never reach this, because SSL_connect() will fail
     if(data->set.ssl.certverifyresult != X509_V_OK) {
       if(data->set.ssl.verifypeer) {
         /* We probably never reach this, because SSL_connect() will fail
@@ -2211,7 +2581,7 @@ static CURLcode servercert(struct connectdata *conn,
         if(strict)
           failf(data, "SSL certificate verify result: %s (%ld)",
                 X509_verify_cert_error_string(lerr), lerr);
         if(strict)
           failf(data, "SSL certificate verify result: %s (%ld)",
                 X509_verify_cert_error_string(lerr), lerr);
-        retcode = CURLE_PEER_FAILED_VERIFICATION;
+        result = CURLE_PEER_FAILED_VERIFICATION;
       }
       else
         infof(data, "\t SSL certificate verify result: %s (%ld),"
       }
       else
         infof(data, "\t SSL certificate verify result: %s (%ld),"
@@ -2222,23 +2592,27 @@ static CURLcode servercert(struct connectdata *conn,
       infof(data, "\t SSL certificate verify ok.\n");
   }
 
       infof(data, "\t SSL certificate verify ok.\n");
   }
 
+  ptr = data->set.str[STRING_SSL_PINNEDPUBLICKEY];
+  if(!result && ptr) {
+    result = pkp_pin_peer_pubkey(connssl->server_cert, ptr);
+    if(result)
+      failf(data, "SSL: public key does not match pinned public key!");
+  }
+
   X509_free(connssl->server_cert);
   connssl->server_cert = NULL;
   connssl->connecting_state = ssl_connect_done;
 
   X509_free(connssl->server_cert);
   connssl->server_cert = NULL;
   connssl->connecting_state = ssl_connect_done;
 
-  return retcode;
+  return result;
 }
 
 }
 
-
-static CURLcode
-ossl_connect_step3(struct connectdata *conn,
-                   int sockindex)
+static CURLcode ossl_connect_step3(struct connectdata *conn, int sockindex)
 {
 {
-  CURLcode retcode = CURLE_OK;
-  void *old_ssl_sessionid=NULL;
+  CURLcode result = CURLE_OK;
+  void *old_ssl_sessionid = NULL;
   struct SessionHandle *data = conn->data;
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
   struct SessionHandle *data = conn->data;
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
-  int incache;
+  bool incache;
   SSL_SESSION *our_ssl_sessionid;
 
   DEBUGASSERT(ssl_connect_3 == connssl->connecting_state);
   SSL_SESSION *our_ssl_sessionid;
 
   DEBUGASSERT(ssl_connect_3 == connssl->connecting_state);
@@ -2271,12 +2645,13 @@ ossl_connect_step3(struct connectdata *conn,
       incache = FALSE;
     }
   }
       incache = FALSE;
     }
   }
+
   if(!incache) {
   if(!incache) {
-    retcode = Curl_ssl_addsessionid(conn, our_ssl_sessionid,
-                                    0 /* unknown size */);
-    if(retcode) {
+    result = Curl_ssl_addsessionid(conn, our_ssl_sessionid,
+                                   0 /* unknown size */);
+    if(result) {
       failf(data, "failed to store ssl session");
       failf(data, "failed to store ssl session");
-      return retcode;
+      return result;
     }
   }
 #ifdef HAVE_SSL_GET1_SESSION
     }
   }
 #ifdef HAVE_SSL_GET1_SESSION
@@ -2296,26 +2671,26 @@ ossl_connect_step3(struct connectdata *conn,
    * operations.
    */
 
    * operations.
    */
 
-  if(!data->set.ssl.verifypeer)
+  if(!data->set.ssl.verifypeer && !data->set.ssl.verifyhost)
     (void)servercert(conn, connssl, FALSE);
   else
     (void)servercert(conn, connssl, FALSE);
   else
-    retcode = servercert(conn, connssl, TRUE);
+    result = servercert(conn, connssl, TRUE);
 
 
-  if(CURLE_OK == retcode)
+  if(!result)
     connssl->connecting_state = ssl_connect_done;
     connssl->connecting_state = ssl_connect_done;
-  return retcode;
+
+  return result;
 }
 
 static Curl_recv ossl_recv;
 static Curl_send ossl_send;
 
 }
 
 static Curl_recv ossl_recv;
 static Curl_send ossl_send;
 
-static CURLcode
-ossl_connect_common(struct connectdata *conn,
-                    int sockindex,
-                    bool nonblocking,
-                    bool *done)
+static CURLcode ossl_connect_common(struct connectdata *conn,
+                                    int sockindex,
+                                    bool nonblocking,
+                                    bool *done)
 {
 {
-  CURLcode retcode;
+  CURLcode result;
   struct SessionHandle *data = conn->data;
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
   curl_socket_t sockfd = conn->sock[sockindex];
   struct SessionHandle *data = conn->data;
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
   curl_socket_t sockfd = conn->sock[sockindex];
@@ -2328,7 +2703,7 @@ ossl_connect_common(struct connectdata *conn,
     return CURLE_OK;
   }
 
     return CURLE_OK;
   }
 
-  if(ssl_connect_1==connssl->connecting_state) {
+  if(ssl_connect_1 == connssl->connecting_state) {
     /* Find out how much more time we're allowed */
     timeout_ms = Curl_timeleft(data, NULL, TRUE);
 
     /* Find out how much more time we're allowed */
     timeout_ms = Curl_timeleft(data, NULL, TRUE);
 
@@ -2337,9 +2712,10 @@ ossl_connect_common(struct connectdata *conn,
       failf(data, "SSL connection timeout");
       return CURLE_OPERATION_TIMEDOUT;
     }
       failf(data, "SSL connection timeout");
       return CURLE_OPERATION_TIMEDOUT;
     }
-    retcode = ossl_connect_step1(conn, sockindex);
-    if(retcode)
-      return retcode;
+
+    result = ossl_connect_step1(conn, sockindex);
+    if(result)
+      return result;
   }
 
   while(ssl_connect_2 == connssl->connecting_state ||
   }
 
   while(ssl_connect_2 == connssl->connecting_state ||
@@ -2356,8 +2732,8 @@ ossl_connect_common(struct connectdata *conn,
     }
 
     /* if ssl is expecting something, check if it's available. */
     }
 
     /* if ssl is expecting something, check if it's available. */
-    if(connssl->connecting_state == ssl_connect_2_reading
-        || connssl->connecting_state == ssl_connect_2_writing) {
+    if(connssl->connecting_state == ssl_connect_2_reading ||
+       connssl->connecting_state == ssl_connect_2_writing) {
 
       curl_socket_t writefd = ssl_connect_2_writing==
         connssl->connecting_state?sockfd:CURL_SOCKET_BAD;
 
       curl_socket_t writefd = ssl_connect_2_writing==
         connssl->connecting_state?sockfd:CURL_SOCKET_BAD;
@@ -2390,23 +2766,22 @@ ossl_connect_common(struct connectdata *conn,
      * before step2 has completed while ensuring that a client using select()
      * or epoll() will always have a valid fdset to wait on.
      */
      * before step2 has completed while ensuring that a client using select()
      * or epoll() will always have a valid fdset to wait on.
      */
-    retcode = ossl_connect_step2(conn, sockindex);
-    if(retcode || (nonblocking &&
-                   (ssl_connect_2 == connssl->connecting_state ||
-                    ssl_connect_2_reading == connssl->connecting_state ||
-                    ssl_connect_2_writing == connssl->connecting_state)))
-      return retcode;
+    result = ossl_connect_step2(conn, sockindex);
+    if(result || (nonblocking &&
+                  (ssl_connect_2 == connssl->connecting_state ||
+                   ssl_connect_2_reading == connssl->connecting_state ||
+                   ssl_connect_2_writing == connssl->connecting_state)))
+      return result;
 
   } /* repeat step2 until all transactions are done. */
 
 
   } /* repeat step2 until all transactions are done. */
 
-
-  if(ssl_connect_3==connssl->connecting_state) {
-    retcode = ossl_connect_step3(conn, sockindex);
-    if(retcode)
-      return retcode;
+  if(ssl_connect_3 == connssl->connecting_state) {
+    result = ossl_connect_step3(conn, sockindex);
+    if(result)
+      return result;
   }
 
   }
 
-  if(ssl_connect_done==connssl->connecting_state) {
+  if(ssl_connect_done == connssl->connecting_state) {
     connssl->state = ssl_connection_complete;
     conn->recv[sockindex] = ossl_recv;
     conn->send[sockindex] = ossl_send;
     connssl->state = ssl_connection_complete;
     conn->recv[sockindex] = ossl_recv;
     conn->send[sockindex] = ossl_send;
@@ -2421,32 +2796,28 @@ ossl_connect_common(struct connectdata *conn,
   return CURLE_OK;
 }
 
   return CURLE_OK;
 }
 
-CURLcode
-Curl_ossl_connect_nonblocking(struct connectdata *conn,
-                              int sockindex,
-                              bool *done)
+CURLcode Curl_ossl_connect_nonblocking(struct connectdata *conn,
+                                       int sockindex,
+                                       bool *done)
 {
   return ossl_connect_common(conn, sockindex, TRUE, done);
 }
 
 {
   return ossl_connect_common(conn, sockindex, TRUE, done);
 }
 
-CURLcode
-Curl_ossl_connect(struct connectdata *conn,
-                  int sockindex)
+CURLcode Curl_ossl_connect(struct connectdata *conn, int sockindex)
 {
 {
-  CURLcode retcode;
+  CURLcode result;
   bool done = FALSE;
 
   bool done = FALSE;
 
-  retcode = ossl_connect_common(conn, sockindex, FALSE, &done);
-  if(retcode)
-    return retcode;
+  result = ossl_connect_common(conn, sockindex, FALSE, &done);
+  if(result)
+    return result;
 
   DEBUGASSERT(done);
 
   return CURLE_OK;
 }
 
 
   DEBUGASSERT(done);
 
   return CURLE_OK;
 }
 
-bool Curl_ossl_data_pending(const struct connectdata *conn,
-                            int connindex)
+bool Curl_ossl_data_pending(const struct connectdata *conn, int connindex)
 {
   if(conn->ssl[connindex].handle)
     /* SSL is in use */
 {
   if(conn->ssl[connindex].handle)
     /* SSL is in use */
@@ -2505,6 +2876,7 @@ static ssize_t ossl_send(struct connectdata *conn,
     *curlcode = CURLE_SEND_ERROR;
     return -1;
   }
     *curlcode = CURLE_SEND_ERROR;
     return -1;
   }
+  *curlcode = CURLE_OK;
   return (ssize_t)rc; /* number of bytes */
 }
 
   return (ssize_t)rc; /* number of bytes */
 }
 
@@ -2566,8 +2938,9 @@ size_t Curl_ossl_version(char *buffer, size_t size)
 
 #if(SSLEAY_VERSION_NUMBER >= 0x905000)
   {
 
 #if(SSLEAY_VERSION_NUMBER >= 0x905000)
   {
-    char sub[2];
+    char sub[3];
     unsigned long ssleay_value;
     unsigned long ssleay_value;
+    sub[2]='\0';
     sub[1]='\0';
     ssleay_value=SSLeay();
     if(ssleay_value < 0x906000) {
     sub[1]='\0';
     ssleay_value=SSLeay();
     if(ssleay_value < 0x906000) {
@@ -2576,14 +2949,31 @@ size_t Curl_ossl_version(char *buffer, size_t size)
     }
     else {
       if(ssleay_value&0xff0) {
     }
     else {
       if(ssleay_value&0xff0) {
-        sub[0]=(char)(((ssleay_value>>4)&0xff) + 'a' -1);
+        int minor_ver = (ssleay_value >> 4) & 0xff;
+        if(minor_ver > 26) {
+          /* handle extended version introduced for 0.9.8za */
+          sub[1] = (char) ((minor_ver - 1) % 26 + 'a' + 1);
+          sub[0] = 'z';
+        }
+        else {
+          sub[0]=(char)(((ssleay_value>>4)&0xff) + 'a' -1);
+        }
       }
       else
         sub[0]='\0';
     }
 
       }
       else
         sub[0]='\0';
     }
 
-    return snprintf(buffer, size, "OpenSSL/%lx.%lx.%lx%s",
-                    (ssleay_value>>28)&0xf,
+    return snprintf(buffer, size, "%s/%lx.%lx.%lx%s",
+#ifdef OPENSSL_IS_BORINGSSL
+                    "BoringSSL"
+#else
+#ifdef LIBRESSL_VERSION_NUMBER
+                    "LibreSSL"
+#else
+                    "OpenSSL"
+#endif
+#endif
+                    , (ssleay_value>>28)&0xf,
                     (ssleay_value>>20)&0xff,
                     (ssleay_value>>12)&0xff,
                     sub);
                     (ssleay_value>>20)&0xff,
                     (ssleay_value>>12)&0xff,
                     sub);
@@ -2618,11 +3008,14 @@ size_t Curl_ossl_version(char *buffer, size_t size)
 #endif /* YASSL_VERSION */
 }
 
 #endif /* YASSL_VERSION */
 }
 
-void Curl_ossl_random(struct SessionHandle *data, unsigned char *entropy,
-                      size_t length)
+/* can be called with data == NULL */
+int Curl_ossl_random(struct SessionHandle *data, unsigned char *entropy,
+                     size_t length)
 {
 {
-  Curl_ossl_seed(data); /* Initiate the seed if not already done */
+  if(data)
+    Curl_ossl_seed(data); /* Initiate the seed if not already done */
   RAND_bytes(entropy, curlx_uztosi(length));
   RAND_bytes(entropy, curlx_uztosi(length));
+  return 0; /* 0 as in no problem */
 }
 
 void Curl_ossl_md5sum(unsigned char *tmp, /* input */
 }
 
 void Curl_ossl_md5sum(unsigned char *tmp, /* input */
similarity index 82%
rename from lib/ssluse.h
rename to lib/vtls/openssl.h
index d6efcb2..9f5f3a2 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -26,7 +26,7 @@
 
 #ifdef USE_SSLEAY
 /*
 
 #ifdef USE_SSLEAY
 /*
- * This header should only be needed to get included by sslgen.c and ssluse.c
+ * This header should only be needed to get included by vtls.c and openssl.c
  */
 
 #include "urldata.h"
  */
 
 #include "urldata.h"
@@ -41,7 +41,7 @@ void Curl_ossl_close(struct connectdata *conn, int sockindex);
 
 /* tell OpenSSL to close down all open information regarding connections (and
    thus session ID caching etc) */
 
 /* tell OpenSSL to close down all open information regarding connections (and
    thus session ID caching etc) */
-int Curl_ossl_close_all(struct SessionHandle *data);
+void Curl_ossl_close_all(struct SessionHandle *data);
 
 /* Sets an OpenSSL engine */
 CURLcode Curl_ossl_set_engine(struct SessionHandle *data, const char *engine);
 
 /* Sets an OpenSSL engine */
 CURLcode Curl_ossl_set_engine(struct SessionHandle *data, const char *engine);
@@ -61,21 +61,26 @@ void Curl_ossl_cleanup(void);
 
 size_t Curl_ossl_version(char *buffer, size_t size);
 int Curl_ossl_check_cxn(struct connectdata *cxn);
 
 size_t Curl_ossl_version(char *buffer, size_t size);
 int Curl_ossl_check_cxn(struct connectdata *cxn);
-int Curl_ossl_seed(struct SessionHandle *data);
-
 int Curl_ossl_shutdown(struct connectdata *conn, int sockindex);
 bool Curl_ossl_data_pending(const struct connectdata *conn,
                             int connindex);
 int Curl_ossl_shutdown(struct connectdata *conn, int sockindex);
 bool Curl_ossl_data_pending(const struct connectdata *conn,
                             int connindex);
-void Curl_ossl_random(struct SessionHandle *data, unsigned char *entropy,
-                      size_t length);
+
+/* return 0 if a find random is filled in */
+int Curl_ossl_random(struct SessionHandle *data, unsigned char *entropy,
+                     size_t length);
 void Curl_ossl_md5sum(unsigned char *tmp, /* input */
                       size_t tmplen,
                       unsigned char *md5sum /* output */,
                       size_t unused);
 
 void Curl_ossl_md5sum(unsigned char *tmp, /* input */
                       size_t tmplen,
                       unsigned char *md5sum /* output */,
                       size_t unused);
 
-/* this backend provides these functions: */
-#define have_curlssl_random 1
-#define have_curlssl_md5sum 1
+/* this backend supports the CAPATH option */
+#define have_curlssl_ca_path 1
+
+/* this backend supports CURLOPT_CERTINFO */
+#define have_curlssl_certinfo 1
+
+/* this backend suppots CURLOPT_SSL_CTX_* */
+#define have_curlssl_ssl_ctx 1
 
 /* API setup for OpenSSL */
 #define curlssl_init Curl_ossl_init
 
 /* API setup for OpenSSL */
 #define curlssl_init Curl_ossl_init
@@ -94,6 +99,9 @@ void Curl_ossl_md5sum(unsigned char *tmp, /* input */
 #define curlssl_data_pending(x,y) Curl_ossl_data_pending(x,y)
 #define curlssl_random(x,y,z) Curl_ossl_random(x,y,z)
 #define curlssl_md5sum(a,b,c,d) Curl_ossl_md5sum(a,b,c,d)
 #define curlssl_data_pending(x,y) Curl_ossl_data_pending(x,y)
 #define curlssl_random(x,y,z) Curl_ossl_random(x,y,z)
 #define curlssl_md5sum(a,b,c,d) Curl_ossl_md5sum(a,b,c,d)
+#define CURL_SSL_BACKEND CURLSSLBACKEND_OPENSSL
+
+#define DEFAULT_CIPHER_SELECTION "ALL!EXPORT!EXPORT40!EXPORT56!aNULL!LOW!RC4"
 
 #endif /* USE_SSLEAY */
 #endif /* HEADER_CURL_SSLUSE_H */
 
 #endif /* USE_SSLEAY */
 #endif /* HEADER_CURL_SSLUSE_H */
similarity index 74%
rename from lib/polarssl.c
rename to lib/vtls/polarssl.c
index 808f54c..05fcfc2 100644 (file)
@@ -6,7 +6,7 @@
  *                             \___|\___/|_| \_\_____|
  *
  * Copyright (C) 2010 - 2011, Hoi-Ho Chan, <hoiho.chan@gmail.com>
  *                             \___|\___/|_| \_\_____|
  *
  * Copyright (C) 2010 - 2011, Hoi-Ho Chan, <hoiho.chan@gmail.com>
- * Copyright (C) 2012 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -23,7 +23,7 @@
 
 /*
  * Source file for all PolarSSL-specific code for the TLS/SSL layer. No code
 
 /*
  * Source file for all PolarSSL-specific code for the TLS/SSL layer. No code
- * but sslgen.c should ever call or use these functions.
+ * but vtls.c should ever call or use these functions.
  *
  */
 
  *
  */
 
 #include <polarssl/x509.h>
 #include <polarssl/version.h>
 
 #include <polarssl/x509.h>
 #include <polarssl/version.h>
 
-#if POLARSSL_VERSION_NUMBER >= 0x01000000
-#include <polarssl/error.h>
-#endif /* POLARSSL_VERSION_NUMBER >= 0x01000000 */
+#if POLARSSL_VERSION_NUMBER < 0x01030000
+#error too old PolarSSL
+#endif
 
 
-#if POLARSSL_VERSION_NUMBER>0x01010000
+#include <polarssl/error.h>
 #include <polarssl/entropy.h>
 #include <polarssl/ctr_drbg.h>
 #include <polarssl/entropy.h>
 #include <polarssl/ctr_drbg.h>
-#else
-#include <polarssl/havege.h>
-#endif /* POLARSSL_VERSION_NUMBER>0x01010000 */
-
-
-#if POLARSSL_VERSION_NUMBER<0x01000000
-/*
-  Earlier versions of polarssl had no WANT_READ or WANT_WRITE, only TRY_AGAIN
-*/
-#define POLARSSL_ERR_NET_WANT_READ  POLARSSL_ERR_NET_TRY_AGAIN
-#define POLARSSL_ERR_NET_WANT_WRITE POLARSSL_ERR_NET_TRY_AGAIN
-#endif
 
 #include "urldata.h"
 #include "sendf.h"
 #include "inet_pton.h"
 #include "polarssl.h"
 
 #include "urldata.h"
 #include "sendf.h"
 #include "inet_pton.h"
 #include "polarssl.h"
-#include "sslgen.h"
+#include "vtls.h"
 #include "parsedate.h"
 #include "connect.h" /* for the connect timeout */
 #include "select.h"
 #include "parsedate.h"
 #include "connect.h" /* for the connect timeout */
 #include "select.h"
@@ -79,7 +67,7 @@
 #define THREADING_SUPPORT
 #endif
 
 #define THREADING_SUPPORT
 #endif
 
-#if defined(THREADING_SUPPORT) && POLARSSL_VERSION_NUMBER>0x01010000
+#if defined(THREADING_SUPPORT)
 static entropy_context entropy;
 
 static int  entropy_init_initialized  = 0;
 static entropy_context entropy;
 
 static int  entropy_init_initialized  = 0;
@@ -110,13 +98,13 @@ static int entropy_func_mutex(void *data, unsigned char *output, size_t len)
 }
 /* end of entropy_func_mutex() */
 
 }
 /* end of entropy_func_mutex() */
 
-#endif /* THREADING_SUPPORT && POLARSSL_VERSION_NUMBER>0x01010000 */
+#endif /* THREADING_SUPPORT */
 
 /* Define this to enable lots of debugging for PolarSSL */
 #undef POLARSSL_DEBUG
 
 #ifdef POLARSSL_DEBUG
 
 /* Define this to enable lots of debugging for PolarSSL */
 #undef POLARSSL_DEBUG
 
 #ifdef POLARSSL_DEBUG
-static void polarssl_debug(void *context, int level, char *line)
+static void polarssl_debug(void *context, int level, const char *line)
 {
   struct SessionHandle *data = NULL;
 
 {
   struct SessionHandle *data = NULL;
 
@@ -125,11 +113,20 @@ static void polarssl_debug(void *context, int level, char *line)
 
   data = (struct SessionHandle *)context;
 
 
   data = (struct SessionHandle *)context;
 
-  infof(data, "%s\n", line);
+  infof(data, "%s", line);
+  (void) level;
 }
 #else
 #endif
 
 }
 #else
 #endif
 
+/* ALPN for http2? */
+#ifdef USE_NGHTTP2
+#  undef HAS_ALPN
+#  ifdef POLARSSL_SSL_ALPN
+#    define HAS_ALPN
+#  endif
+#endif
+
 static Curl_recv polarssl_recv;
 static Curl_send polarssl_send;
 
 static Curl_recv polarssl_recv;
 static Curl_send polarssl_send;
 
@@ -150,10 +147,8 @@ polarssl_connect_step1(struct connectdata *conn,
 #endif
   void *old_session = NULL;
   size_t old_session_size = 0;
 #endif
   void *old_session = NULL;
   size_t old_session_size = 0;
-
   char errorbuf[128];
   char errorbuf[128];
-  memset(errorbuf, 0, sizeof(errorbuf));
-
+  errorbuf[0]=0;
 
   /* PolarSSL only supports SSLv3 and TLSv1 */
   if(data->set.ssl.version == CURL_SSLVERSION_SSLv2) {
 
   /* PolarSSL only supports SSLv3 and TLSv1 */
   if(data->set.ssl.version == CURL_SSLVERSION_SSLv2) {
@@ -163,9 +158,6 @@ polarssl_connect_step1(struct connectdata *conn,
   else if(data->set.ssl.version == CURL_SSLVERSION_SSLv3)
     sni = FALSE; /* SSLv3 has no SNI */
 
   else if(data->set.ssl.version == CURL_SSLVERSION_SSLv3)
     sni = FALSE; /* SSLv3 has no SNI */
 
-#if POLARSSL_VERSION_NUMBER<0x01010000
-  havege_init(&connssl->hs);
-#else
 #ifdef THREADING_SUPPORT
   entropy_init_mutex(&entropy);
 
 #ifdef THREADING_SUPPORT
   entropy_init_mutex(&entropy);
 
@@ -189,14 +181,13 @@ polarssl_connect_step1(struct connectdata *conn,
                                                             -ret, errorbuf);
   }
 #endif /* THREADING_SUPPORT */
                                                             -ret, errorbuf);
   }
 #endif /* THREADING_SUPPORT */
-#endif /* POLARSSL_VERSION_NUMBER<0x01010000 */
 
   /* Load the trusted CA */
 
   /* Load the trusted CA */
-  memset(&connssl->cacert, 0, sizeof(x509_cert));
+  memset(&connssl->cacert, 0, sizeof(x509_crt));
 
   if(data->set.str[STRING_SSL_CAFILE]) {
 
   if(data->set.str[STRING_SSL_CAFILE]) {
-    ret = x509parse_crtfile(&connssl->cacert,
-                            data->set.str[STRING_SSL_CAFILE]);
+    ret = x509_crt_parse_file(&connssl->cacert,
+                              data->set.str[STRING_SSL_CAFILE]);
 
     if(ret<0) {
 #ifdef POLARSSL_ERROR_C
 
     if(ret<0) {
 #ifdef POLARSSL_ERROR_C
@@ -210,12 +201,28 @@ polarssl_connect_step1(struct connectdata *conn,
     }
   }
 
     }
   }
 
+  if(data->set.str[STRING_SSL_CAPATH]) {
+    ret = x509_crt_parse_path(&connssl->cacert,
+                              data->set.str[STRING_SSL_CAPATH]);
+
+    if(ret<0) {
+#ifdef POLARSSL_ERROR_C
+      error_strerror(ret, errorbuf, sizeof(errorbuf));
+#endif /* POLARSSL_ERROR_C */
+      failf(data, "Error reading ca cert path %s - PolarSSL: (-0x%04X) %s",
+            data->set.str[STRING_SSL_CAPATH], -ret, errorbuf);
+
+      if(data->set.ssl.verifypeer)
+        return CURLE_SSL_CACERT_BADFILE;
+    }
+  }
+
   /* Load the client certificate */
   /* Load the client certificate */
-  memset(&connssl->clicert, 0, sizeof(x509_cert));
+  memset(&connssl->clicert, 0, sizeof(x509_crt));
 
   if(data->set.str[STRING_CERT]) {
 
   if(data->set.str[STRING_CERT]) {
-    ret = x509parse_crtfile(&connssl->clicert,
-                            data->set.str[STRING_CERT]);
+    ret = x509_crt_parse_file(&connssl->clicert,
+                              data->set.str[STRING_CERT]);
 
     if(ret) {
 #ifdef POLARSSL_ERROR_C
 
     if(ret) {
 #ifdef POLARSSL_ERROR_C
@@ -230,9 +237,17 @@ polarssl_connect_step1(struct connectdata *conn,
 
   /* Load the client private key */
   if(data->set.str[STRING_KEY]) {
 
   /* Load the client private key */
   if(data->set.str[STRING_KEY]) {
-    ret = x509parse_keyfile(&connssl->rsa,
-                            data->set.str[STRING_KEY],
-                            data->set.str[STRING_KEY_PASSWD]);
+    pk_context pk;
+    pk_init(&pk);
+    ret = pk_parse_keyfile(&pk, data->set.str[STRING_KEY],
+                           data->set.str[STRING_KEY_PASSWD]);
+    if(ret == 0 && !pk_can_do(&pk, POLARSSL_PK_RSA))
+      ret = POLARSSL_ERR_PK_TYPE_MISMATCH;
+    if(ret == 0)
+      rsa_copy(&connssl->rsa, pk_rsa(pk));
+    else
+      rsa_free(&connssl->rsa);
+    pk_free(&pk);
 
     if(ret) {
 #ifdef POLARSSL_ERROR_C
 
     if(ret) {
 #ifdef POLARSSL_ERROR_C
@@ -249,8 +264,8 @@ polarssl_connect_step1(struct connectdata *conn,
   memset(&connssl->crl, 0, sizeof(x509_crl));
 
   if(data->set.str[STRING_SSL_CRLFILE]) {
   memset(&connssl->crl, 0, sizeof(x509_crl));
 
   if(data->set.str[STRING_SSL_CRLFILE]) {
-    ret = x509parse_crlfile(&connssl->crl,
-                            data->set.str[STRING_SSL_CRLFILE]);
+    ret = x509_crl_parse_file(&connssl->crl,
+                              data->set.str[STRING_SSL_CRLFILE]);
 
     if(ret) {
 #ifdef POLARSSL_ERROR_C
 
     if(ret) {
 #ifdef POLARSSL_ERROR_C
@@ -271,48 +286,59 @@ polarssl_connect_step1(struct connectdata *conn,
     return CURLE_SSL_CONNECT_ERROR;
   }
 
     return CURLE_SSL_CONNECT_ERROR;
   }
 
+  switch(data->set.ssl.version) {
+  default:
+  case CURL_SSLVERSION_DEFAULT:
+    ssl_set_min_version(&connssl->ssl, SSL_MAJOR_VERSION_3,
+                        SSL_MINOR_VERSION_1);
+    break;
+  case CURL_SSLVERSION_SSLv3:
+    ssl_set_min_version(&connssl->ssl, SSL_MAJOR_VERSION_3,
+                        SSL_MINOR_VERSION_0);
+    infof(data, "PolarSSL: Forced min. SSL Version to be SSLv3\n");
+    break;
+  case CURL_SSLVERSION_TLSv1_0:
+    ssl_set_min_version(&connssl->ssl, SSL_MAJOR_VERSION_3,
+                        SSL_MINOR_VERSION_1);
+    infof(data, "PolarSSL: Forced min. SSL Version to be TLS 1.0\n");
+    break;
+  case CURL_SSLVERSION_TLSv1_1:
+    ssl_set_min_version(&connssl->ssl, SSL_MAJOR_VERSION_3,
+                        SSL_MINOR_VERSION_2);
+    infof(data, "PolarSSL: Forced min. SSL Version to be TLS 1.1\n");
+    break;
+  case CURL_SSLVERSION_TLSv1_2:
+    ssl_set_min_version(&connssl->ssl, SSL_MAJOR_VERSION_3,
+                        SSL_MINOR_VERSION_3);
+    infof(data, "PolarSSL: Forced min. SSL Version to be TLS 1.2\n");
+    break;
+  }
+
   ssl_set_endpoint(&connssl->ssl, SSL_IS_CLIENT);
   ssl_set_authmode(&connssl->ssl, SSL_VERIFY_OPTIONAL);
 
   ssl_set_endpoint(&connssl->ssl, SSL_IS_CLIENT);
   ssl_set_authmode(&connssl->ssl, SSL_VERIFY_OPTIONAL);
 
-#if POLARSSL_VERSION_NUMBER<0x01010000
-  ssl_set_rng(&connssl->ssl, havege_rand,
-              &connssl->hs);
-#else
   ssl_set_rng(&connssl->ssl, ctr_drbg_random,
               &connssl->ctr_drbg);
   ssl_set_rng(&connssl->ssl, ctr_drbg_random,
               &connssl->ctr_drbg);
-#endif /* POLARSSL_VERSION_NUMBER<0x01010000 */
   ssl_set_bio(&connssl->ssl,
               net_recv, &conn->sock[sockindex],
               net_send, &conn->sock[sockindex]);
 
   ssl_set_bio(&connssl->ssl,
               net_recv, &conn->sock[sockindex],
               net_send, &conn->sock[sockindex]);
 
-
-#if POLARSSL_VERSION_NUMBER<0x01000000
-  ssl_set_ciphers(&connssl->ssl, ssl_default_ciphers);
-#else
-  ssl_set_ciphersuites(&connssl->ssl, ssl_default_ciphersuites);
-#endif
+  ssl_set_ciphersuites(&connssl->ssl, ssl_list_ciphersuites());
   if(!Curl_ssl_getsessionid(conn, &old_session, &old_session_size)) {
     memcpy(&connssl->ssn, old_session, old_session_size);
     infof(data, "PolarSSL re-using session\n");
   }
 
   if(!Curl_ssl_getsessionid(conn, &old_session, &old_session_size)) {
     memcpy(&connssl->ssn, old_session, old_session_size);
     infof(data, "PolarSSL re-using session\n");
   }
 
-/* PolarSSL SVN revision r1316 to r1317, matching <1.2.0 is to cover Ubuntu's
-   1.1.4 version and the like */
-#if POLARSSL_VERSION_NUMBER<0x01020000
-  ssl_set_session(&connssl->ssl, 1, 600,
-                  &connssl->ssn);
-#else
   ssl_set_session(&connssl->ssl,
                   &connssl->ssn);
   ssl_set_session(&connssl->ssl,
                   &connssl->ssn);
-#endif
 
   ssl_set_ca_chain(&connssl->ssl,
                    &connssl->cacert,
                    &connssl->crl,
                    conn->host.name);
 
 
   ssl_set_ca_chain(&connssl->ssl,
                    &connssl->cacert,
                    &connssl->crl,
                    conn->host.name);
 
-  ssl_set_own_cert(&connssl->ssl,
-                   &connssl->clicert, &connssl->rsa);
+  ssl_set_own_cert_rsa(&connssl->ssl,
+                       &connssl->clicert, &connssl->rsa);
 
   if(!Curl_inet_pton(AF_INET, conn->host.name, &addr) &&
 #ifdef ENABLE_IPV6
 
   if(!Curl_inet_pton(AF_INET, conn->host.name, &addr) &&
 #ifdef ENABLE_IPV6
@@ -323,6 +349,20 @@ polarssl_connect_step1(struct connectdata *conn,
                  "server name indication (SNI) TLS extension\n");
   }
 
                  "server name indication (SNI) TLS extension\n");
   }
 
+#ifdef HAS_ALPN
+  if(data->set.httpversion == CURL_HTTP_VERSION_2_0) {
+    if(data->set.ssl_enable_alpn) {
+      static const char* protocols[] = {
+        NGHTTP2_PROTO_VERSION_ID, ALPN_HTTP_1_1, NULL
+      };
+      ssl_set_alpn_protocols(&connssl->ssl, protocols);
+      infof(data, "ALPN, offering %s, %s\n", protocols[0],
+            protocols[1]);
+      connssl->asked_for_h2 = TRUE;
+    }
+  }
+#endif
+
 #ifdef POLARSSL_DEBUG
   ssl_set_dbg(&connssl->ssl, polarssl_debug, data);
 #endif
 #ifdef POLARSSL_DEBUG
   ssl_set_dbg(&connssl->ssl, polarssl_debug, data);
 #endif
@@ -341,8 +381,12 @@ polarssl_connect_step2(struct connectdata *conn,
   struct ssl_connect_data* connssl = &conn->ssl[sockindex];
   char buffer[1024];
 
   struct ssl_connect_data* connssl = &conn->ssl[sockindex];
   char buffer[1024];
 
+#ifdef HAS_ALPN
+  const char* next_protocol;
+#endif
+
   char errorbuf[128];
   char errorbuf[128];
-  memset(errorbuf, 0, sizeof(errorbuf));
+  errorbuf[0] = 0;
 
   conn->recv[sockindex] = polarssl_recv;
   conn->send[sockindex] = polarssl_send;
 
   conn->recv[sockindex] = polarssl_recv;
   conn->send[sockindex] = polarssl_send;
@@ -376,13 +420,7 @@ polarssl_connect_step2(struct connectdata *conn,
   }
 
   infof(data, "PolarSSL: Handshake complete, cipher is %s\n",
   }
 
   infof(data, "PolarSSL: Handshake complete, cipher is %s\n",
-#if POLARSSL_VERSION_NUMBER<0x01000000
-        ssl_get_cipher(&conn->ssl[sockindex].ssl)
-#elif POLARSSL_VERSION_NUMBER >= 0x01010000
         ssl_get_ciphersuite(&conn->ssl[sockindex].ssl)
         ssl_get_ciphersuite(&conn->ssl[sockindex].ssl)
-#else
-        ssl_get_ciphersuite_name(&conn->ssl[sockindex].ssl)
-#endif
     );
 
   ret = ssl_get_verify_result(&conn->ssl[sockindex].ssl);
     );
 
   ret = ssl_get_verify_result(&conn->ssl[sockindex].ssl);
@@ -405,28 +443,36 @@ polarssl_connect_step2(struct connectdata *conn,
     return CURLE_PEER_FAILED_VERIFICATION;
   }
 
     return CURLE_PEER_FAILED_VERIFICATION;
   }
 
-/* PolarSSL SVN revision r1316 to r1317, matching <1.2.0 is to cover Ubuntu's
-   1.1.4 version and the like */
-#if POLARSSL_VERSION_NUMBER<0x01020000
-  if(conn->ssl[sockindex].ssl.peer_cert) {
-#else
   if(ssl_get_peer_cert(&(connssl->ssl))) {
   if(ssl_get_peer_cert(&(connssl->ssl))) {
-#endif
     /* If the session was resumed, there will be no peer certs */
     memset(buffer, 0, sizeof(buffer));
 
     /* If the session was resumed, there will be no peer certs */
     memset(buffer, 0, sizeof(buffer));
 
-/* PolarSSL SVN revision r1316 to r1317, matching <1.2.0 is to cover Ubuntu's
-   1.1.4 version and the like */
-#if POLARSSL_VERSION_NUMBER<0x01020000
-    if(x509parse_cert_info(buffer, sizeof(buffer), (char *)"* ",
-                           conn->ssl[sockindex].ssl.peer_cert) != -1)
-#else
-    if(x509parse_cert_info(buffer, sizeof(buffer), (char *)"* ",
-                           ssl_get_peer_cert(&(connssl->ssl))) != -1)
-#endif
+    if(x509_crt_info(buffer, sizeof(buffer), (char *)"* ",
+                     ssl_get_peer_cert(&(connssl->ssl))) != -1)
       infof(data, "Dumping cert info:\n%s\n", buffer);
   }
 
       infof(data, "Dumping cert info:\n%s\n", buffer);
   }
 
+#ifdef HAS_ALPN
+  if(data->set.ssl_enable_alpn) {
+    next_protocol = ssl_get_alpn_protocol(&connssl->ssl);
+
+    if(next_protocol != NULL) {
+      infof(data, "ALPN, server accepted to use %s\n", next_protocol);
+
+      if(strncmp(next_protocol, NGHTTP2_PROTO_VERSION_ID,
+                  NGHTTP2_PROTO_VERSION_ID_LEN)) {
+        conn->negnpn = NPN_HTTP2;
+      }
+      else if(strncmp(next_protocol, ALPN_HTTP_1_1, ALPN_HTTP_1_1_LENGTH)) {
+        conn->negnpn = NPN_HTTP1_1;
+      }
+    }
+    else if(connssl->asked_for_h2) {
+      infof(data, "ALPN, server did not agree to a protocol\n");
+    }
+  }
+#endif
+
   connssl->connecting_state = ssl_connect_3;
   infof(data, "SSL connected\n");
 
   connssl->connecting_state = ssl_connect_3;
   infof(data, "SSL connected\n");
 
@@ -437,12 +483,12 @@ static CURLcode
 polarssl_connect_step3(struct connectdata *conn,
                      int sockindex)
 {
 polarssl_connect_step3(struct connectdata *conn,
                      int sockindex)
 {
-  CURLcode retcode = CURLE_OK;
+  CURLcode result = CURLE_OK;
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
   struct SessionHandle *data = conn->data;
   void *old_ssl_sessionid = NULL;
   ssl_session *our_ssl_sessionid = &conn->ssl[sockindex].ssn ;
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
   struct SessionHandle *data = conn->data;
   void *old_ssl_sessionid = NULL;
   ssl_session *our_ssl_sessionid = &conn->ssl[sockindex].ssn ;
-  int incache;
+  bool incache;
 
   DEBUGASSERT(ssl_connect_3 == connssl->connecting_state);
 
 
   DEBUGASSERT(ssl_connect_3 == connssl->connecting_state);
 
@@ -455,23 +501,21 @@ polarssl_connect_step3(struct connectdata *conn,
       incache = FALSE;
     }
   }
       incache = FALSE;
     }
   }
+
   if(!incache) {
     void *new_session = malloc(sizeof(ssl_session));
 
     if(new_session) {
   if(!incache) {
     void *new_session = malloc(sizeof(ssl_session));
 
     if(new_session) {
-      memcpy(new_session, our_ssl_sessionid,
-             sizeof(ssl_session));
+      memcpy(new_session, our_ssl_sessionid, sizeof(ssl_session));
 
 
-      retcode = Curl_ssl_addsessionid(conn, new_session,
-                                   sizeof(ssl_session));
-    }
-    else {
-      retcode = CURLE_OUT_OF_MEMORY;
+      result = Curl_ssl_addsessionid(conn, new_session, sizeof(ssl_session));
     }
     }
+    else
+      result = CURLE_OUT_OF_MEMORY;
 
 
-    if(retcode) {
+    if(result) {
       failf(data, "failed to store ssl session");
       failf(data, "failed to store ssl session");
-      return retcode;
+      return result;
     }
   }
 
     }
   }
 
@@ -508,8 +552,8 @@ void Curl_polarssl_close_all(struct SessionHandle *data)
 void Curl_polarssl_close(struct connectdata *conn, int sockindex)
 {
   rsa_free(&conn->ssl[sockindex].rsa);
 void Curl_polarssl_close(struct connectdata *conn, int sockindex)
 {
   rsa_free(&conn->ssl[sockindex].rsa);
-  x509_free(&conn->ssl[sockindex].clicert);
-  x509_free(&conn->ssl[sockindex].cacert);
+  x509_crt_free(&conn->ssl[sockindex].clicert);
+  x509_crt_free(&conn->ssl[sockindex].cacert);
   x509_crl_free(&conn->ssl[sockindex].crl);
   ssl_free(&conn->ssl[sockindex].ssl);
 }
   x509_crl_free(&conn->ssl[sockindex].crl);
   ssl_free(&conn->ssl[sockindex].ssl);
 }
@@ -558,7 +602,7 @@ polarssl_connect_common(struct connectdata *conn,
                         bool nonblocking,
                         bool *done)
 {
                         bool nonblocking,
                         bool *done)
 {
-  CURLcode retcode;
+  CURLcode result;
   struct SessionHandle *data = conn->data;
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
   curl_socket_t sockfd = conn->sock[sockindex];
   struct SessionHandle *data = conn->data;
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
   curl_socket_t sockfd = conn->sock[sockindex];
@@ -571,7 +615,7 @@ polarssl_connect_common(struct connectdata *conn,
     return CURLE_OK;
   }
 
     return CURLE_OK;
   }
 
-  if(ssl_connect_1==connssl->connecting_state) {
+  if(ssl_connect_1 == connssl->connecting_state) {
     /* Find out how much more time we're allowed */
     timeout_ms = Curl_timeleft(data, NULL, TRUE);
 
     /* Find out how much more time we're allowed */
     timeout_ms = Curl_timeleft(data, NULL, TRUE);
 
@@ -580,9 +624,10 @@ polarssl_connect_common(struct connectdata *conn,
       failf(data, "SSL connection timeout");
       return CURLE_OPERATION_TIMEDOUT;
     }
       failf(data, "SSL connection timeout");
       return CURLE_OPERATION_TIMEDOUT;
     }
-    retcode = polarssl_connect_step1(conn, sockindex);
-    if(retcode)
-      return retcode;
+
+    result = polarssl_connect_step1(conn, sockindex);
+    if(result)
+      return result;
   }
 
   while(ssl_connect_2 == connssl->connecting_state ||
   }
 
   while(ssl_connect_2 == connssl->connecting_state ||
@@ -599,8 +644,8 @@ polarssl_connect_common(struct connectdata *conn,
     }
 
     /* if ssl is expecting something, check if it's available. */
     }
 
     /* if ssl is expecting something, check if it's available. */
-    if(connssl->connecting_state == ssl_connect_2_reading
-       || connssl->connecting_state == ssl_connect_2_writing) {
+    if(connssl->connecting_state == ssl_connect_2_reading ||
+       connssl->connecting_state == ssl_connect_2_writing) {
 
       curl_socket_t writefd = ssl_connect_2_writing==
         connssl->connecting_state?sockfd:CURL_SOCKET_BAD;
 
       curl_socket_t writefd = ssl_connect_2_writing==
         connssl->connecting_state?sockfd:CURL_SOCKET_BAD;
@@ -634,22 +679,22 @@ polarssl_connect_common(struct connectdata *conn,
      * ensuring that a client using select() or epoll() will always
      * have a valid fdset to wait on.
      */
      * ensuring that a client using select() or epoll() will always
      * have a valid fdset to wait on.
      */
-    retcode = polarssl_connect_step2(conn, sockindex);
-    if(retcode || (nonblocking &&
-                   (ssl_connect_2 == connssl->connecting_state ||
-                    ssl_connect_2_reading == connssl->connecting_state ||
-                    ssl_connect_2_writing == connssl->connecting_state)))
-      return retcode;
+    result = polarssl_connect_step2(conn, sockindex);
+    if(result || (nonblocking &&
+                  (ssl_connect_2 == connssl->connecting_state ||
+                   ssl_connect_2_reading == connssl->connecting_state ||
+                   ssl_connect_2_writing == connssl->connecting_state)))
+      return result;
 
   } /* repeat step2 until all transactions are done. */
 
 
   } /* repeat step2 until all transactions are done. */
 
-  if(ssl_connect_3==connssl->connecting_state) {
-    retcode = polarssl_connect_step3(conn, sockindex);
-    if(retcode)
-      return retcode;
+  if(ssl_connect_3 == connssl->connecting_state) {
+    result = polarssl_connect_step3(conn, sockindex);
+    if(result)
+      return result;
   }
 
   }
 
-  if(ssl_connect_done==connssl->connecting_state) {
+  if(ssl_connect_done == connssl->connecting_state) {
     connssl->state = ssl_connection_complete;
     conn->recv[sockindex] = polarssl_recv;
     conn->send[sockindex] = polarssl_send;
     connssl->state = ssl_connection_complete;
     conn->recv[sockindex] = polarssl_recv;
     conn->send[sockindex] = polarssl_send;
@@ -677,12 +722,12 @@ CURLcode
 Curl_polarssl_connect(struct connectdata *conn,
                     int sockindex)
 {
 Curl_polarssl_connect(struct connectdata *conn,
                     int sockindex)
 {
-  CURLcode retcode;
+  CURLcode result;
   bool done = FALSE;
 
   bool done = FALSE;
 
-  retcode = polarssl_connect_common(conn, sockindex, FALSE, &done);
-  if(retcode)
-    return retcode;
+  result = polarssl_connect_common(conn, sockindex, FALSE, &done);
+  if(result)
+    return result;
 
   DEBUGASSERT(done);
 
 
   DEBUGASSERT(done);
 
similarity index 77%
rename from lib/polarssl.h
rename to lib/vtls/polarssl.h
index af3b28b..57dfb67 100644 (file)
@@ -8,6 +8,7 @@
  *                             \___|\___/|_| \_\_____|
  *
  * Copyright (C) 2010, Hoi-Ho Chan, <hoiho.chan@gmail.com>
  *                             \___|\___/|_| \_\_____|
  *
  * Copyright (C) 2010, Hoi-Ho Chan, <hoiho.chan@gmail.com>
+ * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -47,6 +48,9 @@ void Curl_polarssl_session_free(void *ptr);
 size_t Curl_polarssl_version(char *buffer, size_t size);
 int Curl_polarssl_shutdown(struct connectdata *conn, int sockindex);
 
 size_t Curl_polarssl_version(char *buffer, size_t size);
 int Curl_polarssl_shutdown(struct connectdata *conn, int sockindex);
 
+/* this backend supports the CAPATH option */
+#define have_curlssl_ca_path 1
+
 /* API setup for PolarSSL */
 #define curlssl_init() polarssl_init()
 #define curlssl_cleanup() polarssl_cleanup()
 /* API setup for PolarSSL */
 #define curlssl_init() polarssl_init()
 #define curlssl_cleanup() polarssl_cleanup()
@@ -56,12 +60,18 @@ int Curl_polarssl_shutdown(struct connectdata *conn, int sockindex);
 #define curlssl_close_all Curl_polarssl_close_all
 #define curlssl_close Curl_polarssl_close
 #define curlssl_shutdown(x,y) 0
 #define curlssl_close_all Curl_polarssl_close_all
 #define curlssl_close Curl_polarssl_close
 #define curlssl_shutdown(x,y) 0
-#define curlssl_set_engine(x,y) (x=x, y=y, CURLE_NOT_BUILT_IN)
-#define curlssl_set_engine_default(x) (x=x, CURLE_NOT_BUILT_IN)
-#define curlssl_engines_list(x) (x=x, (struct curl_slist *)NULL)
+#define curlssl_set_engine(x,y) ((void)x, (void)y, CURLE_NOT_BUILT_IN)
+#define curlssl_set_engine_default(x) ((void)x, CURLE_NOT_BUILT_IN)
+#define curlssl_engines_list(x) ((void)x, (struct curl_slist *)NULL)
 #define curlssl_version Curl_polarssl_version
 #define curlssl_version Curl_polarssl_version
-#define curlssl_check_cxn(x) (x=x, -1)
-#define curlssl_data_pending(x,y) (x=x, y=y, 0)
+#define curlssl_check_cxn(x) ((void)x, -1)
+#define curlssl_data_pending(x,y) ((void)x, (void)y, 0)
+#define CURL_SSL_BACKEND CURLSSLBACKEND_POLARSSL
+
+/* This might cause libcurl to use a weeker random!
+   TODO: implement proper use of Polarssl's CTR-DRBG or HMAC-DRBG and use that
+*/
+#define curlssl_random(x,y,z) ((void)x, (void)y, (void)z, CURLE_NOT_BUILT_IN)
 
 #endif /* USE_POLARSSL */
 #endif /* HEADER_CURL_POLARSSL_H */
 
 #endif /* USE_POLARSSL */
 #endif /* HEADER_CURL_POLARSSL_H */
similarity index 73%
rename from lib/sslgen.c
rename to lib/vtls/vtls.c
index d2d0e30..a53ff4a 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -31,7 +31,6 @@
    Curl_ossl_ - prefix for OpenSSL ones
    Curl_gtls_ - prefix for GnuTLS ones
    Curl_nss_ - prefix for NSS ones
    Curl_ossl_ - prefix for OpenSSL ones
    Curl_gtls_ - prefix for GnuTLS ones
    Curl_nss_ - prefix for NSS ones
-   Curl_qssl_ - prefix for QsoSSL ones
    Curl_gskit_ - prefix for GSKit ones
    Curl_polarssl_ - prefix for PolarSSL ones
    Curl_cyassl_ - prefix for CyaSSL ones
    Curl_gskit_ - prefix for GSKit ones
    Curl_polarssl_ - prefix for PolarSSL ones
    Curl_cyassl_ - prefix for CyaSSL ones
 #endif
 
 #include "urldata.h"
 #endif
 
 #include "urldata.h"
-#define SSLGEN_C
-#include "sslgen.h" /* generic SSL protos etc */
-#include "ssluse.h" /* OpenSSL versions */
-#include "gtls.h"   /* GnuTLS versions */
-#include "nssg.h"   /* NSS versions */
-#include "qssl.h"   /* QSOSSL versions */
-#include "gskit.h"  /* Global Secure ToolKit versions */
-#include "polarssl.h" /* PolarSSL versions */
-#include "axtls.h"  /* axTLS versions */
-#include "cyassl.h"  /* CyaSSL versions */
-#include "curl_schannel.h" /* Schannel SSPI version */
-#include "curl_darwinssl.h" /* SecureTransport (Darwin) version */
+
+#include "vtls.h" /* generic SSL protos etc */
 #include "slist.h"
 #include "sendf.h"
 #include "rawstr.h"
 #include "slist.h"
 #include "sendf.h"
 #include "rawstr.h"
@@ -78,6 +67,9 @@
 #include "progress.h"
 #include "share.h"
 #include "timeval.h"
 #include "progress.h"
 #include "share.h"
 #include "timeval.h"
+#include "curl_md5.h"
+#include "warnless.h"
+#include "curl_base64.h"
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
@@ -193,19 +185,33 @@ void Curl_free_ssl_config(struct ssl_config_data* sslc)
 
 unsigned int Curl_rand(struct SessionHandle *data)
 {
 
 unsigned int Curl_rand(struct SessionHandle *data)
 {
-  unsigned int r;
+  unsigned int r = 0;
   static unsigned int randseed;
   static bool seeded = FALSE;
 
   static unsigned int randseed;
   static bool seeded = FALSE;
 
-#ifndef have_curlssl_random
-  (void)data;
-#else
-  if(data) {
-    Curl_ssl_random(data, (unsigned char *)&r, sizeof(r));
-    return r;
+#ifdef CURLDEBUG
+  char *force_entropy = getenv("CURL_ENTROPY");
+  if(force_entropy) {
+    if(!seeded) {
+      size_t elen = strlen(force_entropy);
+      size_t clen = sizeof(randseed);
+      size_t min = elen < clen ? elen : clen;
+      memcpy((char *)&randseed, force_entropy, min);
+      seeded = TRUE;
+    }
+    else
+      randseed++;
+    return randseed;
   }
 #endif
 
   }
 #endif
 
+  /* data may be NULL! */
+  if(!Curl_ssl_random(data, (unsigned char *)&r, sizeof(r)))
+    return r;
+
+  /* If Curl_ssl_random() returns non-zero it couldn't offer randomness and we
+     instead perform a "best effort" */
+
 #ifdef RANDOM_FILE
   if(!seeded) {
     /* if there's a random file to read a seed from, use it */
 #ifdef RANDOM_FILE
   if(!seeded) {
     /* if there's a random file to read a seed from, use it */
@@ -222,6 +228,7 @@ unsigned int Curl_rand(struct SessionHandle *data)
 
   if(!seeded) {
     struct timeval now = curlx_tvnow();
 
   if(!seeded) {
     struct timeval now = curlx_tvnow();
+    infof(data, "WARNING: Using weak random seed\n");
     randseed += (unsigned int)now.tv_usec + (unsigned int)now.tv_sec;
     randseed = randseed * 1103515245 + 12345;
     randseed = randseed * 1103515245 + 12345;
     randseed += (unsigned int)now.tv_usec + (unsigned int)now.tv_sec;
     randseed = randseed * 1103515245 + 12345;
     randseed = randseed * 1103515245 + 12345;
@@ -234,6 +241,11 @@ unsigned int Curl_rand(struct SessionHandle *data)
   return (r << 16) | ((r >> 16) & 0xFFFF);
 }
 
   return (r << 16) | ((r >> 16) & 0xFFFF);
 }
 
+int Curl_ssl_backend(void)
+{
+  return (int)CURL_SSL_BACKEND;
+}
+
 #ifdef USE_SSL
 
 /* "global" init done? */
 #ifdef USE_SSL
 
 /* "global" init done? */
@@ -269,44 +281,44 @@ void Curl_ssl_cleanup(void)
 CURLcode
 Curl_ssl_connect(struct connectdata *conn, int sockindex)
 {
 CURLcode
 Curl_ssl_connect(struct connectdata *conn, int sockindex)
 {
-  CURLcode res;
+  CURLcode result;
   /* mark this is being ssl-enabled from here on. */
   conn->ssl[sockindex].use = TRUE;
   conn->ssl[sockindex].state = ssl_connection_negotiating;
 
   /* mark this is being ssl-enabled from here on. */
   conn->ssl[sockindex].use = TRUE;
   conn->ssl[sockindex].state = ssl_connection_negotiating;
 
-  res = curlssl_connect(conn, sockindex);
+  result = curlssl_connect(conn, sockindex);
 
 
-  if(!res)
+  if(!result)
     Curl_pgrsTime(conn->data, TIMER_APPCONNECT); /* SSL is connected */
 
     Curl_pgrsTime(conn->data, TIMER_APPCONNECT); /* SSL is connected */
 
-  return res;
+  return result;
 }
 
 CURLcode
 Curl_ssl_connect_nonblocking(struct connectdata *conn, int sockindex,
                              bool *done)
 {
 }
 
 CURLcode
 Curl_ssl_connect_nonblocking(struct connectdata *conn, int sockindex,
                              bool *done)
 {
-  CURLcode res;
+  CURLcode result;
   /* mark this is being ssl requested from here on. */
   conn->ssl[sockindex].use = TRUE;
 #ifdef curlssl_connect_nonblocking
   /* mark this is being ssl requested from here on. */
   conn->ssl[sockindex].use = TRUE;
 #ifdef curlssl_connect_nonblocking
-  res = curlssl_connect_nonblocking(conn, sockindex, done);
+  result = curlssl_connect_nonblocking(conn, sockindex, done);
 #else
   *done = TRUE; /* fallback to BLOCKING */
 #else
   *done = TRUE; /* fallback to BLOCKING */
-  res = curlssl_connect(conn, sockindex);
+  result = curlssl_connect(conn, sockindex);
 #endif /* non-blocking connect support */
 #endif /* non-blocking connect support */
-  if(!res && *done)
+  if(!result && *done)
     Curl_pgrsTime(conn->data, TIMER_APPCONNECT); /* SSL is connected */
     Curl_pgrsTime(conn->data, TIMER_APPCONNECT); /* SSL is connected */
-  return res;
+  return result;
 }
 
 /*
  * Check if there's a session ID for the given connection in the cache, and if
  * there's one suitable, it is provided. Returns TRUE when no entry matched.
  */
 }
 
 /*
  * Check if there's a session ID for the given connection in the cache, and if
  * there's one suitable, it is provided. Returns TRUE when no entry matched.
  */
-int Curl_ssl_getsessionid(struct connectdata *conn,
-                          void **ssl_sessionid,
-                          size_t *idsize) /* set 0 if unknown */
+bool Curl_ssl_getsessionid(struct connectdata *conn,
+                           void **ssl_sessionid,
+                           size_t *idsize) /* set 0 if unknown */
 {
   struct curl_ssl_session *check;
   struct SessionHandle *data = conn->data;
 {
   struct curl_ssl_session *check;
   struct SessionHandle *data = conn->data;
@@ -581,36 +593,42 @@ void Curl_ssl_free_certinfo(struct SessionHandle *data)
 {
   int i;
   struct curl_certinfo *ci = &data->info.certs;
 {
   int i;
   struct curl_certinfo *ci = &data->info.certs;
+
   if(ci->num_of_certs) {
     /* free all individual lists used */
     for(i=0; i<ci->num_of_certs; i++) {
       curl_slist_free_all(ci->certinfo[i]);
       ci->certinfo[i] = NULL;
     }
   if(ci->num_of_certs) {
     /* free all individual lists used */
     for(i=0; i<ci->num_of_certs; i++) {
       curl_slist_free_all(ci->certinfo[i]);
       ci->certinfo[i] = NULL;
     }
+
     free(ci->certinfo); /* free the actual array too */
     ci->certinfo = NULL;
     ci->num_of_certs = 0;
   }
 }
 
     free(ci->certinfo); /* free the actual array too */
     ci->certinfo = NULL;
     ci->num_of_certs = 0;
   }
 }
 
-int Curl_ssl_init_certinfo(struct SessionHandle * data,
-                           int num)
+CURLcode Curl_ssl_init_certinfo(struct SessionHandle *data, int num)
 {
 {
-  struct curl_certinfo * ci = &data->info.certs;
-  struct curl_slist * * table;
+  struct curl_certinfo *ci = &data->info.certs;
+  struct curl_slist **table;
 
 
-  /* Initialize the certificate information structures. Return 0 if OK, else 1.
-   */
+  /* Free any previous certificate information structures */
   Curl_ssl_free_certinfo(data);
   Curl_ssl_free_certinfo(data);
-  ci->num_of_certs = num;
+
+  /* Allocate the required certificate information structures */
   table = calloc((size_t) num, sizeof(struct curl_slist *));
   if(!table)
   table = calloc((size_t) num, sizeof(struct curl_slist *));
   if(!table)
-    return 1;
+    return CURLE_OUT_OF_MEMORY;
 
 
+  ci->num_of_certs = num;
   ci->certinfo = table;
   ci->certinfo = table;
-  return 0;
+
+  return CURLE_OK;
 }
 
 }
 
+/*
+ * 'value' is NOT a zero terminated string
+ */
 CURLcode Curl_ssl_push_certinfo_len(struct SessionHandle *data,
                                     int certnum,
                                     const char *label,
 CURLcode Curl_ssl_push_certinfo_len(struct SessionHandle *data,
                                     int certnum,
                                     const char *label,
@@ -620,22 +638,32 @@ CURLcode Curl_ssl_push_certinfo_len(struct SessionHandle *data,
   struct curl_certinfo * ci = &data->info.certs;
   char * output;
   struct curl_slist * nl;
   struct curl_certinfo * ci = &data->info.certs;
   char * output;
   struct curl_slist * nl;
-  CURLcode res = CURLE_OK;
+  CURLcode result = CURLE_OK;
+  size_t labellen = strlen(label);
+  size_t outlen = labellen + 1 + valuelen + 1; /* label:value\0 */
 
 
-  /* Add an information record for a particular certificate. */
-  output = curl_maprintf("%s:%.*s", label, valuelen, value);
+  output = malloc(outlen);
   if(!output)
     return CURLE_OUT_OF_MEMORY;
 
   if(!output)
     return CURLE_OUT_OF_MEMORY;
 
+  /* sprintf the label and colon */
+  snprintf(output, outlen, "%s:", label);
+
+  /* memcpy the value (it might not be zero terminated) */
+  memcpy(&output[labellen+1], value, valuelen);
+
+  /* zero terminate the output */
+  output[labellen + 1 + valuelen] = 0;
+
   nl = Curl_slist_append_nodup(ci->certinfo[certnum], output);
   if(!nl) {
     free(output);
     curl_slist_free_all(ci->certinfo[certnum]);
   nl = Curl_slist_append_nodup(ci->certinfo[certnum], output);
   if(!nl) {
     free(output);
     curl_slist_free_all(ci->certinfo[certnum]);
-    res = CURLE_OUT_OF_MEMORY;
+    result = CURLE_OUT_OF_MEMORY;
   }
 
   ci->certinfo[certnum] = nl;
   }
 
   ci->certinfo[certnum] = nl;
-  return res;
+  return result;
 }
 
 /*
 }
 
 /*
@@ -652,25 +680,172 @@ CURLcode Curl_ssl_push_certinfo(struct SessionHandle *data,
   return Curl_ssl_push_certinfo_len(data, certnum, label, value, valuelen);
 }
 
   return Curl_ssl_push_certinfo_len(data, certnum, label, value, valuelen);
 }
 
-/* these functions are only provided by some SSL backends */
-
-#ifdef have_curlssl_random
-void Curl_ssl_random(struct SessionHandle *data,
+int Curl_ssl_random(struct SessionHandle *data,
                      unsigned char *entropy,
                      size_t length)
 {
                      unsigned char *entropy,
                      size_t length)
 {
-  curlssl_random(data, entropy, length);
+  return curlssl_random(data, entropy, length);
+}
+
+/*
+ * Public key pem to der conversion
+ */
+
+static CURLcode pubkey_pem_to_der(const char *pem,
+                                  unsigned char **der, size_t *der_len)
+{
+  char *stripped_pem, *begin_pos, *end_pos;
+  size_t pem_count, stripped_pem_count = 0, pem_len;
+  CURLcode result;
+
+  /* if no pem, exit. */
+  if(!pem)
+    return CURLE_BAD_CONTENT_ENCODING;
+
+  begin_pos = strstr(pem, "-----BEGIN PUBLIC KEY-----");
+  if(!begin_pos)
+    return CURLE_BAD_CONTENT_ENCODING;
+
+  pem_count = begin_pos - pem;
+  /* Invalid if not at beginning AND not directly following \n */
+  if(0 != pem_count && '\n' != pem[pem_count - 1])
+    return CURLE_BAD_CONTENT_ENCODING;
+
+  /* 26 is length of "-----BEGIN PUBLIC KEY-----" */
+  pem_count += 26;
+
+  /* Invalid if not directly following \n */
+  end_pos = strstr(pem + pem_count, "\n-----END PUBLIC KEY-----");
+  if(!end_pos)
+    return CURLE_BAD_CONTENT_ENCODING;
+
+  pem_len = end_pos - pem;
+
+  stripped_pem = malloc(pem_len - pem_count + 1);
+  if(!stripped_pem)
+    return CURLE_OUT_OF_MEMORY;
+
+  /*
+   * Here we loop through the pem array one character at a time between the
+   * correct indices, and place each character that is not '\n' or '\r'
+   * into the stripped_pem array, which should represent the raw base64 string
+   */
+  while(pem_count < pem_len) {
+    if('\n' != pem[pem_count] && '\r' != pem[pem_count])
+      stripped_pem[stripped_pem_count++] = pem[pem_count];
+    ++pem_count;
+  }
+  /* Place the null terminator in the correct place */
+  stripped_pem[stripped_pem_count] = '\0';
+
+  result = Curl_base64_decode(stripped_pem, der, der_len);
+
+  Curl_safefree(stripped_pem);
+
+  return result;
+}
+
+/*
+ * Generic pinned public key check.
+ */
+
+CURLcode Curl_pin_peer_pubkey(const char *pinnedpubkey,
+                              const unsigned char *pubkey, size_t pubkeylen)
+{
+  FILE *fp;
+  unsigned char *buf = NULL, *pem_ptr = NULL;
+  long filesize;
+  size_t size, pem_len;
+  CURLcode pem_read;
+  CURLcode result = CURLE_SSL_PINNEDPUBKEYNOTMATCH;
+
+  /* if a path wasn't specified, don't pin */
+  if(!pinnedpubkey)
+    return CURLE_OK;
+  if(!pubkey || !pubkeylen)
+    return result;
+  fp = fopen(pinnedpubkey, "rb");
+  if(!fp)
+    return result;
+
+  do {
+    /* Determine the file's size */
+    if(fseek(fp, 0, SEEK_END))
+      break;
+    filesize = ftell(fp);
+    if(fseek(fp, 0, SEEK_SET))
+      break;
+    if(filesize < 0 || filesize > MAX_PINNED_PUBKEY_SIZE)
+      break;
+
+    /*
+     * if the size of our certificate is bigger than the file
+     * size then it can't match
+     */
+    size = curlx_sotouz((curl_off_t) filesize);
+    if(pubkeylen > size)
+      break;
+
+    /*
+     * Allocate buffer for the pinned key
+     * With 1 additional byte for null terminator in case of PEM key
+     */
+    buf = malloc(size + 1);
+    if(!buf)
+      break;
+
+    /* Returns number of elements read, which should be 1 */
+    if((int) fread(buf, size, 1, fp) != 1)
+      break;
+
+    /* If the sizes are the same, it can't be base64 encoded, must be der */
+    if(pubkeylen == size) {
+      if(!memcmp(pubkey, buf, pubkeylen))
+        result = CURLE_OK;
+      break;
+    }
+
+    /*
+     * Otherwise we will assume it's PEM and try to decode it
+     * after placing null terminator
+     */
+    buf[size] = '\0';
+    pem_read = pubkey_pem_to_der((const char *)buf, &pem_ptr, &pem_len);
+    /* if it wasn't read successfully, exit */
+    if(pem_read)
+      break;
+
+    /*
+     * if the size of our certificate doesn't match the size of
+     * the decoded file, they can't be the same, otherwise compare
+     */
+    if(pubkeylen == pem_len && !memcmp(pubkey, pem_ptr, pubkeylen))
+      result = CURLE_OK;
+  } while(0);
+
+  Curl_safefree(buf);
+  Curl_safefree(pem_ptr);
+  fclose(fp);
+
+  return result;
 }
 }
-#endif
 
 
-#ifdef have_curlssl_md5sum
 void Curl_ssl_md5sum(unsigned char *tmp, /* input */
                      size_t tmplen,
                      unsigned char *md5sum, /* output */
                      size_t md5len)
 {
 void Curl_ssl_md5sum(unsigned char *tmp, /* input */
                      size_t tmplen,
                      unsigned char *md5sum, /* output */
                      size_t md5len)
 {
+#ifdef curlssl_md5sum
   curlssl_md5sum(tmp, tmplen, md5sum, md5len);
   curlssl_md5sum(tmp, tmplen, md5sum, md5len);
-}
+#else
+  MD5_context *MD5pw;
+
+  (void) md5len;
+
+  MD5pw = Curl_MD5_init(Curl_DIGEST_MD5);
+  Curl_MD5_update(MD5pw, tmp, curlx_uztoui(tmplen));
+  Curl_MD5_final(MD5pw, md5sum);
 #endif
 #endif
+}
 
 #endif /* USE_SSL */
 
 #endif /* USE_SSL */
similarity index 74%
rename from lib/sslgen.h
rename to lib/vtls/vtls.h
index c7f5f00..19ef1cd 100644 (file)
@@ -1,5 +1,5 @@
-#ifndef HEADER_CURL_SSLGEN_H
-#define HEADER_CURL_SSLGEN_H
+#ifndef HEADER_CURL_VTLS_H
+#define HEADER_CURL_VTLS_H
 /***************************************************************************
  *                                  _   _ ____  _
  *  Project                     ___| | | |  _ \| |
 /***************************************************************************
  *                                  _   _ ____  _
  *  Project                     ___| | | |  _ \| |
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  ***************************************************************************/
 #include "curl_setup.h"
 
  ***************************************************************************/
 #include "curl_setup.h"
 
+#include "openssl.h"        /* OpenSSL versions */
+#include "gtls.h"           /* GnuTLS versions */
+#include "nssg.h"           /* NSS versions */
+#include "gskit.h"          /* Global Secure ToolKit versions */
+#include "polarssl.h"       /* PolarSSL versions */
+#include "axtls.h"          /* axTLS versions */
+#include "cyassl.h"         /* CyaSSL versions */
+#include "curl_schannel.h"  /* Schannel SSPI version */
+#include "curl_darwinssl.h" /* SecureTransport (Darwin) version */
+
+#ifndef MAX_PINNED_PUBKEY_SIZE
+#define MAX_PINNED_PUBKEY_SIZE 1048576 /* 1MB */
+#endif
+
 #ifndef MD5_DIGEST_LENGTH
 #define MD5_DIGEST_LENGTH 16 /* fixed size */
 #endif
 
 #ifndef MD5_DIGEST_LENGTH
 #define MD5_DIGEST_LENGTH 16 /* fixed size */
 #endif
 
+/* see http://tools.ietf.org/html/draft-ietf-tls-applayerprotoneg-04 */
+#define ALPN_HTTP_1_1_LENGTH 8
+#define ALPN_HTTP_1_1 "http/1.1"
+
 bool Curl_ssl_config_matches(struct ssl_config_data* data,
                              struct ssl_config_data* needle);
 bool Curl_clone_ssl_config(struct ssl_config_data* source,
 bool Curl_ssl_config_matches(struct ssl_config_data* data,
                              struct ssl_config_data* needle);
 bool Curl_clone_ssl_config(struct ssl_config_data* source,
@@ -35,6 +53,8 @@ void Curl_free_ssl_config(struct ssl_config_data* sslc);
 
 unsigned int Curl_rand(struct SessionHandle *);
 
 
 unsigned int Curl_rand(struct SessionHandle *);
 
+int Curl_ssl_backend(void);
+
 #ifdef USE_SSL
 int Curl_ssl_init(void);
 void Curl_ssl_cleanup(void);
 #ifdef USE_SSL
 int Curl_ssl_init(void);
 void Curl_ssl_cleanup(void);
@@ -62,7 +82,7 @@ int Curl_ssl_check_cxn(struct connectdata *conn);
 /* Certificate information list handling. */
 
 void Curl_ssl_free_certinfo(struct SessionHandle *data);
 /* Certificate information list handling. */
 
 void Curl_ssl_free_certinfo(struct SessionHandle *data);
-int Curl_ssl_init_certinfo(struct SessionHandle * data, int num);
+CURLcode Curl_ssl_init_certinfo(struct SessionHandle * data, int num);
 CURLcode Curl_ssl_push_certinfo_len(struct SessionHandle * data, int certnum,
                                     const char * label, const char * value,
                                     size_t valuelen);
 CURLcode Curl_ssl_push_certinfo_len(struct SessionHandle * data, int certnum,
                                     const char * label, const char * value,
                                     size_t valuelen);
@@ -72,9 +92,9 @@ CURLcode Curl_ssl_push_certinfo(struct SessionHandle * data, int certnum,
 /* Functions to be used by SSL library adaptation functions */
 
 /* extract a session ID */
 /* Functions to be used by SSL library adaptation functions */
 
 /* extract a session ID */
-int Curl_ssl_getsessionid(struct connectdata *conn,
-                          void **ssl_sessionid,
-                          size_t *idsize) /* set 0 if unknown */;
+bool Curl_ssl_getsessionid(struct connectdata *conn,
+                           void **ssl_sessionid,
+                           size_t *idsize) /* set 0 if unknown */;
 /* add a new session ID */
 CURLcode Curl_ssl_addsessionid(struct connectdata *conn,
                                void *ssl_sessionid,
 /* add a new session ID */
 CURLcode Curl_ssl_addsessionid(struct connectdata *conn,
                                void *ssl_sessionid,
@@ -84,23 +104,20 @@ void Curl_ssl_kill_session(struct curl_ssl_session *session);
 /* delete a session from the cache */
 void Curl_ssl_delsessionid(struct connectdata *conn, void *ssl_sessionid);
 
 /* delete a session from the cache */
 void Curl_ssl_delsessionid(struct connectdata *conn, void *ssl_sessionid);
 
-/* get N random bytes into the buffer */
-void Curl_ssl_random(struct SessionHandle *data, unsigned char *buffer,
-                     size_t length);
+/* get N random bytes into the buffer, return 0 if a find random is filled
+   in */
+int Curl_ssl_random(struct SessionHandle *data, unsigned char *buffer,
+                    size_t length);
 void Curl_ssl_md5sum(unsigned char *tmp, /* input */
                      size_t tmplen,
                      unsigned char *md5sum, /* output */
                      size_t md5len);
 void Curl_ssl_md5sum(unsigned char *tmp, /* input */
                      size_t tmplen,
                      unsigned char *md5sum, /* output */
                      size_t md5len);
+/* Check pinned public key. */
+CURLcode Curl_pin_peer_pubkey(const char *pinnedpubkey,
+                              const unsigned char *pubkey, size_t pubkeylen);
 
 #define SSL_SHUTDOWN_TIMEOUT 10000 /* ms */
 
 
 #define SSL_SHUTDOWN_TIMEOUT 10000 /* ms */
 
-#ifdef have_curlssl_random
-#define HAVE_CURL_SSL_RANDOM
-#endif
-#ifdef have_curlssl_md5sum
-#define HAVE_CURL_SSL_MD5SUM
-#endif
-
 #else
 /* When SSL support is not present, just define away these function calls */
 #define Curl_ssl_init() 1
 #else
 /* When SSL support is not present, just define away these function calls */
 #define Curl_ssl_init() 1
@@ -121,6 +138,8 @@ void Curl_ssl_md5sum(unsigned char *tmp, /* input */
 #define Curl_ssl_free_certinfo(x) Curl_nop_stmt
 #define Curl_ssl_connect_nonblocking(x,y,z) CURLE_NOT_BUILT_IN
 #define Curl_ssl_kill_session(x) Curl_nop_stmt
 #define Curl_ssl_free_certinfo(x) Curl_nop_stmt
 #define Curl_ssl_connect_nonblocking(x,y,z) CURLE_NOT_BUILT_IN
 #define Curl_ssl_kill_session(x) Curl_nop_stmt
+#define Curl_ssl_random(x,y,z) ((void)x, CURLE_NOT_BUILT_IN)
+#define CURL_SSL_BACKEND CURLSSLBACKEND_NONE
 #endif
 
 #endif
 
-#endif /* HEADER_CURL_SSLGEN_H */
+#endif /* HEADER_CURL_VTLS_H */
index 7a4b01e..8c130d3 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -175,6 +175,25 @@ int curlx_ultosi(unsigned long ulnum)
 }
 
 /*
 }
 
 /*
+** unsigned size_t to signed curl_off_t
+*/
+
+curl_off_t curlx_uztoso(size_t uznum)
+{
+#ifdef __INTEL_COMPILER
+#  pragma warning(push)
+#  pragma warning(disable:810) /* conversion may lose significant bits */
+#endif
+
+  DEBUGASSERT(uznum <= (size_t) CURL_MASK_SCOFFT);
+  return (curl_off_t)(uznum & (size_t) CURL_MASK_SCOFFT);
+
+#ifdef __INTEL_COMPILER
+#  pragma warning(pop)
+#endif
+}
+
+/*
 ** unsigned size_t to signed int
 */
 
 ** unsigned size_t to signed int
 */
 
@@ -400,6 +419,20 @@ curl_socket_t curlx_sitosk(int i)
 
 #endif /* USE_WINSOCK */
 
 
 #endif /* USE_WINSOCK */
 
+#if defined(WIN32) || defined(_WIN32)
+
+ssize_t curlx_read(int fd, void *buf, size_t count)
+{
+  return (ssize_t)read(fd, buf, curlx_uztoui(count));
+}
+
+ssize_t curlx_write(int fd, const void *buf, size_t count)
+{
+  return (ssize_t)write(fd, buf, curlx_uztoui(count));
+}
+
+#endif /* WIN32 || _WIN32 */
+
 #if defined(__INTEL_COMPILER) && defined(__unix__)
 
 int curlx_FD_ISSET(int fd, fd_set *fdset)
 #if defined(__INTEL_COMPILER) && defined(__unix__)
 
 int curlx_FD_ISSET(int fd, fd_set *fdset)
index f22f0ba..ad77d3c 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -34,6 +34,8 @@ int curlx_ultosi(unsigned long ulnum);
 
 int curlx_uztosi(size_t uznum);
 
 
 int curlx_uztosi(size_t uznum);
 
+curl_off_t curlx_uztoso(size_t uznum);
+
 unsigned long curlx_uztoul(size_t uznum);
 
 unsigned int curlx_uztoui(size_t uznum);
 unsigned long curlx_uztoul(size_t uznum);
 
 unsigned int curlx_uztoui(size_t uznum);
@@ -60,6 +62,21 @@ curl_socket_t curlx_sitosk(int i);
 
 #endif /* USE_WINSOCK */
 
 
 #endif /* USE_WINSOCK */
 
+#if defined(WIN32) || defined(_WIN32)
+
+ssize_t curlx_read(int fd, void *buf, size_t count);
+
+ssize_t curlx_write(int fd, const void *buf, size_t count);
+
+#ifndef BUILDING_WARNLESS_C
+#  undef  read
+#  define read(fd, buf, count)  curlx_read(fd, buf, count)
+#  undef  write
+#  define write(fd, buf, count) curlx_write(fd, buf, count)
+#endif
+
+#endif /* WIN32 || _WIN32 */
+
 #if defined(__INTEL_COMPILER) && defined(__unix__)
 
 int curlx_FD_ISSET(int fd, fd_set *fdset);
 #if defined(__INTEL_COMPILER) && defined(__unix__)
 
 int curlx_FD_ISSET(int fd, fd_set *fdset);
index 94b89b2..af08cee 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 
 #include "curl_setup.h"
 
 
 #include "curl_setup.h"
 
-#if defined(USE_QSOSSL) || defined(USE_GSKIT)
+#if defined(USE_GSKIT) || defined(USE_NSS)
 
 #include <curl/curl.h>
 #include "urldata.h"
 #include "strequal.h"
 #include "hostcheck.h"
 
 #include <curl/curl.h>
 #include "urldata.h"
 #include "strequal.h"
 #include "hostcheck.h"
-#include "sslgen.h"
+#include "vtls/vtls.h"
 #include "sendf.h"
 #include "inet_pton.h"
 #include "curl_base64.h"
 #include "sendf.h"
 #include "inet_pton.h"
 #include "curl_base64.h"
@@ -122,6 +122,7 @@ const char * Curl_getASN1Element(curl_asn1Element * elem,
     return (const char *) NULL;
 
   /* Process header byte. */
     return (const char *) NULL;
 
   /* Process header byte. */
+  elem->header = beg;
   b = (unsigned char) *beg++;
   elem->constructed = (b & 0x20) != 0;
   elem->class = (b >> 6) & 3;
   b = (unsigned char) *beg++;
   elem->constructed = (b & 0x20) != 0;
   elem->class = (b >> 6) & 3;
@@ -252,7 +253,7 @@ utf8asn1str(char * * to, int type, const char * from, const char * end)
   size_t inlength = end - from;
   int size = 1;
   size_t outlength;
   size_t inlength = end - from;
   int size = 1;
   size_t outlength;
-  int chsize;
+  int charsize;
   unsigned int wc;
   char * buf;
 
   unsigned int wc;
   char * buf;
 
@@ -305,7 +306,7 @@ utf8asn1str(char * * to, int type, const char * from, const char * end)
       default: /* case 1: */
         wc = (wc << 8) | *(const unsigned char *) from++;
       }
       default: /* case 1: */
         wc = (wc << 8) | *(const unsigned char *) from++;
       }
-      chsize = 1;
+      charsize = 1;
       if(wc >= 0x00000080) {
         if(wc >= 0x00000800) {
           if(wc >= 0x00010000) {
       if(wc >= 0x00000080) {
         if(wc >= 0x00000800) {
           if(wc >= 0x00010000) {
@@ -315,18 +316,18 @@ utf8asn1str(char * * to, int type, const char * from, const char * end)
             }
             buf[outlength + 3] = (char) (0x80 | (wc & 0x3F));
             wc = (wc >> 6) | 0x00010000;
             }
             buf[outlength + 3] = (char) (0x80 | (wc & 0x3F));
             wc = (wc >> 6) | 0x00010000;
-            chsize++;
+            charsize++;
           }
           buf[outlength + 2] = (char) (0x80 | (wc & 0x3F));
           wc = (wc >> 6) | 0x00000800;
           }
           buf[outlength + 2] = (char) (0x80 | (wc & 0x3F));
           wc = (wc >> 6) | 0x00000800;
-          chsize++;
+          charsize++;
         }
         buf[outlength + 1] = (char) (0x80 | (wc & 0x3F));
         wc = (wc >> 6) | 0x000000C0;
         }
         buf[outlength + 1] = (char) (0x80 | (wc & 0x3F));
         wc = (wc >> 6) | 0x000000C0;
-        chsize++;
+        charsize++;
       }
       buf[outlength] = (char) wc;
       }
       buf[outlength] = (char) wc;
-      outlength += chsize;
+      outlength += charsize;
     }
   }
   buf[outlength] = '\0';
     }
   }
   buf[outlength] = '\0';
@@ -666,31 +667,6 @@ const char * Curl_DNtostr(curl_asn1Element * dn)
   return (const char *) buf;
 }
 
   return (const char *) buf;
 }
 
-static const char * checkOID(const char * beg, const char * end,
-                             const char * oid)
-{
-  curl_asn1Element e;
-  const char * ccp;
-  const char * p;
-  bool matched;
-
-  /* Check if first ASN.1 element at `beg' is the given OID.
-     Return a pointer in the source after the OID if found, else NULL. */
-
-  ccp = Curl_getASN1Element(&e, beg, end);
-  if(!ccp || e.tag != CURL_ASN1_OBJECT_IDENTIFIER)
-    return (const char *) NULL;
-
-  p = OID2str(e.beg, e.end, FALSE);
-  if(!p)
-    return (const char *) NULL;
-
-  matched = !strcmp(p, oid);
-  free((char *) p);
-  return matched? ccp: (const char *) NULL;
-}
-
-
 /*
  * X509 parser.
  */
 /*
  * X509 parser.
  */
@@ -707,6 +683,7 @@ void Curl_parseX509(curl_X509certificate * cert,
      Syntax is assumed to have already been checked by the SSL backend.
      See RFC 5280. */
 
      Syntax is assumed to have already been checked by the SSL backend.
      See RFC 5280. */
 
+  cert->certificate.header = NULL;
   cert->certificate.beg = beg;
   cert->certificate.end = end;
 
   cert->certificate.beg = beg;
   cert->certificate.end = end;
 
@@ -726,6 +703,7 @@ void Curl_parseX509(curl_X509certificate * cert,
   beg = tbsCertificate.beg;
   end = tbsCertificate.end;
   /* Get optional version, get serialNumber. */
   beg = tbsCertificate.beg;
   end = tbsCertificate.end;
   /* Get optional version, get serialNumber. */
+  cert->version.header = NULL;
   cert->version.beg = &defaultVersion;
   cert->version.end = &defaultVersion + sizeof defaultVersion;;
   beg = Curl_getASN1Element(&elem, beg, end);
   cert->version.beg = &defaultVersion;
   cert->version.end = &defaultVersion + sizeof defaultVersion;;
   beg = Curl_getASN1Element(&elem, beg, end);
@@ -745,15 +723,19 @@ void Curl_parseX509(curl_X509certificate * cert,
   /* Get subject. */
   beg = Curl_getASN1Element(&cert->subject, beg, end);
   /* Get subjectPublicKeyAlgorithm and subjectPublicKey. */
   /* Get subject. */
   beg = Curl_getASN1Element(&cert->subject, beg, end);
   /* Get subjectPublicKeyAlgorithm and subjectPublicKey. */
-  beg = Curl_getASN1Element(&elem, beg, end);
+  beg = Curl_getASN1Element(&cert->subjectPublicKeyInfo, beg, end);
   ccp = Curl_getASN1Element(&cert->subjectPublicKeyAlgorithm,
   ccp = Curl_getASN1Element(&cert->subjectPublicKeyAlgorithm,
-                            elem.beg, elem.end);
-  Curl_getASN1Element(&cert->subjectPublicKey, ccp, elem.end);
+                            cert->subjectPublicKeyInfo.beg,
+                            cert->subjectPublicKeyInfo.end);
+  Curl_getASN1Element(&cert->subjectPublicKey, ccp,
+                      cert->subjectPublicKeyInfo.end);
   /* Get optional issuerUiqueID, subjectUniqueID and extensions. */
   cert->issuerUniqueID.tag = cert->subjectUniqueID.tag = 0;
   cert->extensions.tag = elem.tag = 0;
   /* Get optional issuerUiqueID, subjectUniqueID and extensions. */
   cert->issuerUniqueID.tag = cert->subjectUniqueID.tag = 0;
   cert->extensions.tag = elem.tag = 0;
+  cert->issuerUniqueID.header = cert->subjectUniqueID.header = NULL;
   cert->issuerUniqueID.beg = cert->issuerUniqueID.end = "";
   cert->subjectUniqueID.beg = cert->subjectUniqueID.end = "";
   cert->issuerUniqueID.beg = cert->issuerUniqueID.end = "";
   cert->subjectUniqueID.beg = cert->subjectUniqueID.end = "";
+  cert->extensions.header = NULL;
   cert->extensions.beg = cert->extensions.end = "";
   if(beg < end)
     beg = Curl_getASN1Element(&elem, beg, end);
   cert->extensions.beg = cert->extensions.end = "";
   if(beg < end)
     beg = Curl_getASN1Element(&elem, beg, end);
@@ -796,6 +778,7 @@ static const char * dumpAlgo(curl_asn1Element * param,
   /* Get algorithm parameters and return algorithm name. */
 
   beg = Curl_getASN1Element(&oid, beg, end);
   /* Get algorithm parameters and return algorithm name. */
 
   beg = Curl_getASN1Element(&oid, beg, end);
+  param->header = NULL;
   param->tag = 0;
   param->beg = param->end = end;
   if(beg < end)
   param->tag = 0;
   param->beg = param->end = end;
   if(beg < end)
@@ -803,7 +786,7 @@ static const char * dumpAlgo(curl_asn1Element * param,
   return OID2str(oid.beg, oid.end, TRUE);
 }
 
   return OID2str(oid.beg, oid.end, TRUE);
 }
 
-static void do_pubkey_field(struct SessionHandle *data, int certnum,
+static void do_pubkey_field(struct SessionHandle * data, int certnum,
                             const char * label, curl_asn1Element * elem)
 {
   const char * output;
                             const char * label, curl_asn1Element * elem)
 {
   const char * output;
@@ -812,8 +795,10 @@ static void do_pubkey_field(struct SessionHandle *data, int certnum,
 
   output = Curl_ASN1tostr(elem, 0);
   if(output) {
 
   output = Curl_ASN1tostr(elem, 0);
   if(output) {
-    Curl_ssl_push_certinfo(data, certnum, label, output);
-    infof(data, "   %s: %s\n", label, output);
+    if(data->set.ssl.certinfo)
+      Curl_ssl_push_certinfo(data, certnum, label, output);
+    if(!certnum)
+      infof(data, "   %s: %s\n", label, output);
     free((char *) output);
   }
 }
     free((char *) output);
   }
 }
@@ -845,11 +830,14 @@ static void do_pubkey(struct SessionHandle * data, int certnum,
         len--;
     if(len > 32)
       elem.beg = q;     /* Strip leading zero bytes. */
         len--;
     if(len > 32)
       elem.beg = q;     /* Strip leading zero bytes. */
-    infof(data, "   RSA Public Key (%lu bits)\n", len);
-    q = curl_maprintf("%lu", len);
-    if(q) {
-      Curl_ssl_push_certinfo(data, certnum, "RSA Public Key", q);
-      free((char *) q);
+    if(!certnum)
+      infof(data, "   RSA Public Key (%lu bits)\n", len);
+    if(data->set.ssl.certinfo) {
+      q = curl_maprintf("%lu", len);
+      if(q) {
+        Curl_ssl_push_certinfo(data, certnum, "RSA Public Key", q);
+        free((char *) q);
+      }
     }
     /* Generate coefficients. */
     do_pubkey_field(data, certnum, "rsa(n)", &elem);
     }
     /* Generate coefficients. */
     do_pubkey_field(data, certnum, "rsa(n)", &elem);
@@ -891,11 +879,15 @@ CURLcode Curl_extract_certinfo(struct connectdata * conn,
   char * cp1;
   size_t cl1;
   char * cp2;
   char * cp1;
   size_t cl1;
   char * cp2;
-  CURLcode cc;
+  CURLcode result;
   unsigned long version;
   size_t i;
   size_t j;
 
   unsigned long version;
   size_t i;
   size_t j;
 
+  if(!data->set.ssl.certinfo)
+    if(certnum)
+      return CURLE_OK;
+
   /* Prepare the certificate information for curl_easy_getinfo(). */
 
   /* Extract the certificate ASN.1 elements. */
   /* Prepare the certificate information for curl_easy_getinfo(). */
 
   /* Extract the certificate ASN.1 elements. */
@@ -905,35 +897,44 @@ CURLcode Curl_extract_certinfo(struct connectdata * conn,
   ccp = Curl_DNtostr(&cert.subject);
   if(!ccp)
     return CURLE_OUT_OF_MEMORY;
   ccp = Curl_DNtostr(&cert.subject);
   if(!ccp)
     return CURLE_OUT_OF_MEMORY;
-  Curl_ssl_push_certinfo(data, certnum, "Subject", ccp);
-  infof(data, "%2d Subject: %s\n", certnum, ccp);
+  if(data->set.ssl.certinfo)
+    Curl_ssl_push_certinfo(data, certnum, "Subject", ccp);
+  if(!certnum)
+    infof(data, "%2d Subject: %s\n", certnum, ccp);
   free((char *) ccp);
 
   /* Issuer. */
   ccp = Curl_DNtostr(&cert.issuer);
   if(!ccp)
     return CURLE_OUT_OF_MEMORY;
   free((char *) ccp);
 
   /* Issuer. */
   ccp = Curl_DNtostr(&cert.issuer);
   if(!ccp)
     return CURLE_OUT_OF_MEMORY;
-  Curl_ssl_push_certinfo(data, certnum, "Issuer", ccp);
-  infof(data, "   Issuer: %s\n", ccp);
+  if(data->set.ssl.certinfo)
+    Curl_ssl_push_certinfo(data, certnum, "Issuer", ccp);
+  if(!certnum)
+    infof(data, "   Issuer: %s\n", ccp);
   free((char *) ccp);
 
   /* Version (always fits in less than 32 bits). */
   version = 0;
   for(ccp = cert.version.beg; ccp < cert.version.end; ccp++)
     version = (version << 8) | *(const unsigned char *) ccp;
   free((char *) ccp);
 
   /* Version (always fits in less than 32 bits). */
   version = 0;
   for(ccp = cert.version.beg; ccp < cert.version.end; ccp++)
     version = (version << 8) | *(const unsigned char *) ccp;
-  ccp = curl_maprintf("%lx", version);
-  if(!ccp)
-    return CURLE_OUT_OF_MEMORY;
-  Curl_ssl_push_certinfo(data, certnum, "Version", ccp);
-  free((char *) ccp);
-  infof(data, "   Version: %lu (0x%lx)\n", version + 1, version);
+  if(data->set.ssl.certinfo) {
+    ccp = curl_maprintf("%lx", version);
+    if(!ccp)
+      return CURLE_OUT_OF_MEMORY;
+    Curl_ssl_push_certinfo(data, certnum, "Version", ccp);
+    free((char *) ccp);
+  }
+  if(!certnum)
+    infof(data, "   Version: %lu (0x%lx)\n", version + 1, version);
 
   /* Serial number. */
   ccp = Curl_ASN1tostr(&cert.serialNumber, 0);
   if(!ccp)
     return CURLE_OUT_OF_MEMORY;
 
   /* Serial number. */
   ccp = Curl_ASN1tostr(&cert.serialNumber, 0);
   if(!ccp)
     return CURLE_OUT_OF_MEMORY;
-  Curl_ssl_push_certinfo(data, certnum, "Serial Number", ccp);
-  infof(data, "   Serial Number: %s\n", ccp);
+  if(data->set.ssl.certinfo)
+    Curl_ssl_push_certinfo(data, certnum, "Serial Number", ccp);
+  if(!certnum)
+    infof(data, "   Serial Number: %s\n", ccp);
   free((char *) ccp);
 
   /* Signature algorithm .*/
   free((char *) ccp);
 
   /* Signature algorithm .*/
@@ -941,24 +942,30 @@ CURLcode Curl_extract_certinfo(struct connectdata * conn,
                  cert.signatureAlgorithm.end);
   if(!ccp)
     return CURLE_OUT_OF_MEMORY;
                  cert.signatureAlgorithm.end);
   if(!ccp)
     return CURLE_OUT_OF_MEMORY;
-  Curl_ssl_push_certinfo(data, certnum, "Signature Algorithm", ccp);
-  infof(data, "   Signature Algorithm: %s\n", ccp);
+  if(data->set.ssl.certinfo)
+    Curl_ssl_push_certinfo(data, certnum, "Signature Algorithm", ccp);
+  if(!certnum)
+    infof(data, "   Signature Algorithm: %s\n", ccp);
   free((char *) ccp);
 
   /* Start Date. */
   ccp = Curl_ASN1tostr(&cert.notBefore, 0);
   if(!ccp)
     return CURLE_OUT_OF_MEMORY;
   free((char *) ccp);
 
   /* Start Date. */
   ccp = Curl_ASN1tostr(&cert.notBefore, 0);
   if(!ccp)
     return CURLE_OUT_OF_MEMORY;
-  Curl_ssl_push_certinfo(data, certnum, "Start Date", ccp);
-  infof(data, "   Start Date: %s\n", ccp);
+  if(data->set.ssl.certinfo)
+    Curl_ssl_push_certinfo(data, certnum, "Start Date", ccp);
+  if(!certnum)
+    infof(data, "   Start Date: %s\n", ccp);
   free((char *) ccp);
 
   /* Expire Date. */
   ccp = Curl_ASN1tostr(&cert.notAfter, 0);
   if(!ccp)
     return CURLE_OUT_OF_MEMORY;
   free((char *) ccp);
 
   /* Expire Date. */
   ccp = Curl_ASN1tostr(&cert.notAfter, 0);
   if(!ccp)
     return CURLE_OUT_OF_MEMORY;
-  Curl_ssl_push_certinfo(data, certnum, "Expire Date", ccp);
-  infof(data, "   Expire Date: %s\n", ccp);
+  if(data->set.ssl.certinfo)
+    Curl_ssl_push_certinfo(data, certnum, "Expire Date", ccp);
+  if(!certnum)
+    infof(data, "   Expire Date: %s\n", ccp);
   free((char *) ccp);
 
   /* Public Key Algorithm. */
   free((char *) ccp);
 
   /* Public Key Algorithm. */
@@ -966,8 +973,10 @@ CURLcode Curl_extract_certinfo(struct connectdata * conn,
                  cert.subjectPublicKeyAlgorithm.end);
   if(!ccp)
     return CURLE_OUT_OF_MEMORY;
                  cert.subjectPublicKeyAlgorithm.end);
   if(!ccp)
     return CURLE_OUT_OF_MEMORY;
-  Curl_ssl_push_certinfo(data, certnum, "Public Key Algorithm", ccp);
-  infof(data, "   Public Key Algorithm: %s\n", ccp);
+  if(data->set.ssl.certinfo)
+    Curl_ssl_push_certinfo(data, certnum, "Public Key Algorithm", ccp);
+  if(!certnum)
+    infof(data, "   Public Key Algorithm: %s\n", ccp);
   do_pubkey(data, certnum, ccp, &param, &cert.subjectPublicKey);
   free((char *) ccp);
 
   do_pubkey(data, certnum, ccp, &param, &cert.subjectPublicKey);
   free((char *) ccp);
 
@@ -977,17 +986,19 @@ CURLcode Curl_extract_certinfo(struct connectdata * conn,
   ccp = Curl_ASN1tostr(&cert.signature, 0);
   if(!ccp)
     return CURLE_OUT_OF_MEMORY;
   ccp = Curl_ASN1tostr(&cert.signature, 0);
   if(!ccp)
     return CURLE_OUT_OF_MEMORY;
-  Curl_ssl_push_certinfo(data, certnum, "Signature", ccp);
-  infof(data, "   Signature: %s\n", ccp);
+  if(data->set.ssl.certinfo)
+    Curl_ssl_push_certinfo(data, certnum, "Signature", ccp);
+  if(!certnum)
+    infof(data, "   Signature: %s\n", ccp);
   free((char *) ccp);
 
   /* Generate PEM certificate. */
   free((char *) ccp);
 
   /* Generate PEM certificate. */
-  cc = Curl_base64_encode(data, cert.certificate.beg,
-                          cert.certificate.end - cert.certificate.beg,
-                          &cp1, &cl1);
-  if(cc != CURLE_OK)
-    return cc;
-  /* Compute the number of charaters in final certificate string. Format is:
+  result = Curl_base64_encode(data, cert.certificate.beg,
+                              cert.certificate.end - cert.certificate.beg,
+                              &cp1, &cl1);
+  if(result)
+    return result;
+  /* Compute the number of characters in final certificate string. Format is:
      -----BEGIN CERTIFICATE-----\n
      <max 64 base64 characters>\n
      .
      -----BEGIN CERTIFICATE-----\n
      <max 64 base64 characters>\n
      .
@@ -1008,12 +1019,41 @@ CURLcode Curl_extract_certinfo(struct connectdata * conn,
   i += copySubstring(cp2 + i, "-----END CERTIFICATE-----");
   cp2[i] = '\0';
   free(cp1);
   i += copySubstring(cp2 + i, "-----END CERTIFICATE-----");
   cp2[i] = '\0';
   free(cp1);
-  Curl_ssl_push_certinfo(data, certnum, "Cert", cp2);
-  infof(data, "%s\n", cp2);
+  if(data->set.ssl.certinfo)
+    Curl_ssl_push_certinfo(data, certnum, "Cert", cp2);
+  if(!certnum)
+    infof(data, "%s\n", cp2);
   free(cp2);
   return CURLE_OK;
 }
 
   free(cp2);
   return CURLE_OK;
 }
 
+#endif /* USE_GSKIT or USE_NSS */
+
+#if defined(USE_GSKIT)
+
+static const char * checkOID(const char * beg, const char * end,
+                             const char * oid)
+{
+  curl_asn1Element e;
+  const char * ccp;
+  const char * p;
+  bool matched;
+
+  /* Check if first ASN.1 element at `beg' is the given OID.
+     Return a pointer in the source after the OID if found, else NULL. */
+
+  ccp = Curl_getASN1Element(&e, beg, end);
+  if(!ccp || e.tag != CURL_ASN1_OBJECT_IDENTIFIER)
+    return (const char *) NULL;
+
+  p = OID2str(e.beg, e.end, FALSE);
+  if(!p)
+    return (const char *) NULL;
+
+  matched = !strcmp(p, oid);
+  free((char *) p);
+  return matched? ccp: (const char *) NULL;
+}
 
 CURLcode Curl_verifyhost(struct connectdata * conn,
                          const char * beg, const char * end)
 
 CURLcode Curl_verifyhost(struct connectdata * conn,
                          const char * beg, const char * end)
@@ -1108,6 +1148,7 @@ CURLcode Curl_verifyhost(struct connectdata * conn,
   }
 
   /* Process subject. */
   }
 
   /* Process subject. */
+  name.header = NULL;
   name.beg = name.end = "";
   q = cert.subject.beg;
   /* we have to look to the last occurrence of a commonName in the
   name.beg = name.end = "";
   q = cert.subject.beg;
   /* we have to look to the last occurrence of a commonName in the
@@ -1148,4 +1189,4 @@ CURLcode Curl_verifyhost(struct connectdata * conn,
   return CURLE_PEER_FAILED_VERIFICATION;
 }
 
   return CURLE_PEER_FAILED_VERIFICATION;
 }
 
-#endif /* USE_QSOSSL or USE_GSKIT */
+#endif /* USE_GSKIT */
index 2276b5b..075c424 100644 (file)
@@ -8,7 +8,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -25,7 +25,7 @@
 
 #include "curl_setup.h"
 
 
 #include "curl_setup.h"
 
-#if defined(USE_QSOSSL) || defined(USE_GSKIT)
+#if defined(USE_GSKIT) || defined(USE_NSS)
 
 #include "urldata.h"
 
 
 #include "urldata.h"
 
@@ -76,8 +76,9 @@
 
 /* ASN.1 parsed element. */
 typedef struct {
 
 /* ASN.1 parsed element. */
 typedef struct {
+  const char *  header;         /* Pointer to header byte. */
   const char *  beg;            /* Pointer to element data. */
   const char *  beg;            /* Pointer to element data. */
-  const char *  end;            /* Pointer to 1st byte after element data. */
+  const char *  end;            /* Pointer to 1st byte after element. */
   unsigned char class;          /* ASN.1 element class. */
   unsigned char tag;            /* ASN.1 element tag. */
   bool          constructed;    /* Element is constructed. */
   unsigned char class;          /* ASN.1 element class. */
   unsigned char tag;            /* ASN.1 element tag. */
   bool          constructed;    /* Element is constructed. */
@@ -102,6 +103,7 @@ typedef struct {
   curl_asn1Element      notBefore;
   curl_asn1Element      notAfter;
   curl_asn1Element      subject;
   curl_asn1Element      notBefore;
   curl_asn1Element      notAfter;
   curl_asn1Element      subject;
+  curl_asn1Element      subjectPublicKeyInfo;
   curl_asn1Element      subjectPublicKeyAlgorithm;
   curl_asn1Element      subjectPublicKey;
   curl_asn1Element      issuerUniqueID;
   curl_asn1Element      subjectPublicKeyAlgorithm;
   curl_asn1Element      subjectPublicKey;
   curl_asn1Element      issuerUniqueID;
@@ -125,5 +127,5 @@ CURLcode Curl_extract_certinfo(struct connectdata * conn, int certnum,
 CURLcode Curl_verifyhost(struct connectdata * conn,
                          const char * beg, const char * end);
 
 CURLcode Curl_verifyhost(struct connectdata * conn,
                          const char * beg, const char * end);
 
-#endif /* USE_QSOSSL or USE_GSKIT */
+#endif /* USE_GSKIT or USE_NSS */
 #endif /* HEADER_CURL_X509ASN1_H */
 #endif /* HEADER_CURL_X509ASN1_H */
index 68c6d96..bffda54 100644 (file)
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -70,7 +70,7 @@
 #         compiler:            $LTCC
 #         compiler flags:              $LTCFLAGS
 #         linker:              $LD (gnu? $with_gnu_ld)
 #         compiler:            $LTCC
 #         compiler flags:              $LTCFLAGS
 #         linker:              $LD (gnu? $with_gnu_ld)
-#         $progname:   (GNU libtool) 2.4.2 Debian-2.4.2-1.3
+#         $progname:   (GNU libtool) 2.4.2 Debian-2.4.2-1.11
 #         automake:    $automake_version
 #         autoconf:    $autoconf_version
 #
 #         automake:    $automake_version
 #         autoconf:    $autoconf_version
 #
@@ -80,7 +80,7 @@
 
 PROGRAM=libtool
 PACKAGE=libtool
 
 PROGRAM=libtool
 PACKAGE=libtool
-VERSION="2.4.2 Debian-2.4.2-1.3"
+VERSION="2.4.2 Debian-2.4.2-1.11"
 TIMESTAMP=""
 package_revision=1.3337
 
 TIMESTAMP=""
 package_revision=1.3337
 
index 2467128..f1a634b 100644 (file)
@@ -615,12 +615,12 @@ AC_DEFUN([CURL_SET_COMPILER_BASIC_OPTS], [
         dnl #147: declaration is incompatible with 'previous one'
         dnl #165: too few arguments in function call
         dnl #266: function declared implicitly
         dnl #147: declaration is incompatible with 'previous one'
         dnl #165: too few arguments in function call
         dnl #266: function declared implicitly
-        tmp_CPPFLAGS="$tmp_CPPFLAGS -we 140,147,165,266"
+        tmp_CPPFLAGS="$tmp_CPPFLAGS -we140,147,165,266"
         dnl Disable some remarks
         dnl #279: controlling expression is constant
         dnl #981: operands are evaluated in unspecified order
         dnl #1469: "cc" clobber ignored
         dnl Disable some remarks
         dnl #279: controlling expression is constant
         dnl #981: operands are evaluated in unspecified order
         dnl #1469: "cc" clobber ignored
-        tmp_CPPFLAGS="$tmp_CPPFLAGS -wd 279,981,1469"
+        tmp_CPPFLAGS="$tmp_CPPFLAGS -wd279,981,1469"
         ;;
         #
       INTEL_WINDOWS_C)
         ;;
         #
       INTEL_WINDOWS_C)
@@ -1479,7 +1479,7 @@ AC_DEFUN([CURL_CHECK_COMPILER_PROTOTYPE_MISMATCH], [
           return n;
       }
     ]],[[
           return n;
       }
     ]],[[
-      int i[2];
+      int i[2]={0,0};
       int j = rand(i[0]);
       if(j)
         return j;
       int j = rand(i[0]);
       if(j)
         return j;
index fdf004b..0d65421 100644 (file)
@@ -4729,7 +4729,7 @@ AC_DEFUN([CURL_CHECK_FUNC_POLL], [
   tst_allow_poll="unknown"
   #
   case $host_os in
   tst_allow_poll="unknown"
   #
   case $host_os in
-    darwin*|interix*)
+    darwin[[123456789]].*|darwin10.*|darwin11.*|darwin12.*|interix*)
       dnl poll() does not work on these platforms
       dnl Interix: "does provide poll(), but the implementing developer must
       dnl have been in a bad mood, because poll() only works on the /proc
       dnl poll() does not work on these platforms
       dnl Interix: "does provide poll(), but the implementing developer must
       dnl have been in a bad mood, because poll() only works on the /proc
index a849b9d..2930a7d 100644 (file)
@@ -1312,7 +1312,7 @@ ia64-*-hpux*)
   rm -rf conftest*
   ;;
 
   rm -rf conftest*
   ;;
 
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
 s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
 s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
@@ -1333,7 +1333,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
                ;;
            esac
            ;;
                ;;
            esac
            ;;
-         ppc64-*linux*|powerpc64-*linux*)
+         powerpc64le-*)
+           LD="${LD-ld} -m elf32lppclinux"
+           ;;
+         powerpc64-*)
            LD="${LD-ld} -m elf32ppclinux"
            ;;
          s390x-*linux*)
            LD="${LD-ld} -m elf32ppclinux"
            ;;
          s390x-*linux*)
@@ -1352,7 +1355,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
          x86_64-*linux*)
            LD="${LD-ld} -m elf_x86_64"
            ;;
          x86_64-*linux*)
            LD="${LD-ld} -m elf_x86_64"
            ;;
-         ppc*-*linux*|powerpc*-*linux*)
+         powerpcle-*)
+           LD="${LD-ld} -m elf64lppc"
+           ;;
+         powerpc-*)
            LD="${LD-ld} -m elf64ppc"
            ;;
          s390*-*linux*|s390*-*tpf*)
            LD="${LD-ld} -m elf64ppc"
            ;;
          s390*-*linux*|s390*-*tpf*)
diff --git a/maketgz b/maketgz
index 38d2b63..5aba1a3 100755 (executable)
--- a/maketgz
+++ b/maketgz
@@ -9,7 +9,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -123,6 +123,10 @@ make -s html
 echo "make pdf"
 make -s pdf
 
 echo "make pdf"
 make -s pdf
 
+# And the IDE files
+echo "make vc-ide"
+make -s vc-ide
+
 echo "produce CHANGES"
 git log --pretty=fuller --no-color --date=short --decorate=full -1000 | ./log2changes.pl > CHANGES.dist
 
 echo "produce CHANGES"
 git log --pretty=fuller --no-color --date=short --decorate=full -1000 | ./log2changes.pl > CHANGES.dist
 
index 4191a45..55d537f 100755 (executable)
@@ -81,9 +81,9 @@ case $dirmode in
       echo "mkdir -p -- $*"
       exec mkdir -p -- "$@"
     else
       echo "mkdir -p -- $*"
       exec mkdir -p -- "$@"
     else
-      # On NextStep and OpenStep, the `mkdir' command does not
+      # On NextStep and OpenStep, the 'mkdir' command does not
       # recognize any option.  It will interpret all options as
       # recognize any option.  It will interpret all options as
-      # directories to create, and then abort because `.' already
+      # directories to create, and then abort because '.' already
       # exists.
       test -d ./-p && rmdir ./-p
       test -d ./--version && rmdir ./--version
       # exists.
       test -d ./-p && rmdir ./-p
       test -d ./--version && rmdir ./--version
index 7a42640..b898d16 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -218,6 +218,7 @@ CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
+CURL_DISABLE_SMB = @CURL_DISABLE_SMB@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
@@ -242,7 +243,6 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_NSS_INITCONTEXT = @HAVE_NSS_INITCONTEXT@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
@@ -251,7 +251,6 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
-KRB4_ENABLED = @KRB4_ENABLED@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
@@ -272,6 +271,7 @@ MKDIR_P = @MKDIR_P@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
+NSS_LIBS = @NSS_LIBS@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
@@ -307,11 +307,13 @@ USE_GNUTLS = @USE_GNUTLS@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
+USE_NGHTTP2 = @USE_NGHTTP2@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
+USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
index e2e7721..a8d5ba5 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -158,6 +158,7 @@ CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
+CURL_DISABLE_SMB = @CURL_DISABLE_SMB@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
@@ -182,7 +183,6 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_NSS_INITCONTEXT = @HAVE_NSS_INITCONTEXT@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
@@ -191,7 +191,6 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
-KRB4_ENABLED = @KRB4_ENABLED@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
@@ -212,6 +211,7 @@ MKDIR_P = @MKDIR_P@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
+NSS_LIBS = @NSS_LIBS@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
@@ -247,11 +247,13 @@ USE_GNUTLS = @USE_GNUTLS@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
+USE_NGHTTP2 = @USE_NGHTTP2@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
+USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
index 3e94b80..301ab9e 100644 (file)
@@ -104,7 +104,7 @@ LOCAL_SYSTEM_SHARED_LIBRARIES := libc
 
 LOCAL_C_INCLUDES += $(LOCAL_PATH)/include $(LOCAL_PATH)/lib
 
 
 LOCAL_C_INCLUDES += $(LOCAL_PATH)/include $(LOCAL_PATH)/lib
 
-# This may also need to include $(CURLX_ONES) in order to correctly link
+# This may also need to include $(CURLX_CFILES) in order to correctly link
 # if libcurl is changed to be built as a dynamic library
 LOCAL_CFLAGS += $(common_CFLAGS)
 
 # if libcurl is changed to be built as a dynamic library
 LOCAL_CFLAGS += $(common_CFLAGS)
 
index 1b3e757..85b611c 100644 (file)
@@ -13,7 +13,7 @@ MAKEFILE = Makefile.dj
 OBJ_DIR = djgpp
 
 #
 OBJ_DIR = djgpp
 
 #
-# Find out if using a UNIX-like shell or a DOS command interpreter
+# Find out if using a Unix-like shell or a DOS command interpreter
 #
 ifneq ($(findstring COMMAND.COM,$(SHELL)),COMMAND.COM)
   ifneq ($(findstring CMD.EXE,$(SHELL)),CMD.EXE)
 #
 ifneq ($(findstring COMMAND.COM,$(SHELL)),COMMAND.COM)
   ifneq ($(findstring CMD.EXE,$(SHELL)),CMD.EXE)
index 6e401a1..489dd95 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -158,6 +158,7 @@ CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
+CURL_DISABLE_SMB = @CURL_DISABLE_SMB@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
@@ -182,7 +183,6 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_NSS_INITCONTEXT = @HAVE_NSS_INITCONTEXT@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
@@ -191,7 +191,6 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
-KRB4_ENABLED = @KRB4_ENABLED@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
@@ -212,6 +211,7 @@ MKDIR_P = @MKDIR_P@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
+NSS_LIBS = @NSS_LIBS@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
@@ -247,11 +247,13 @@ USE_GNUTLS = @USE_GNUTLS@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
+USE_NGHTTP2 = @USE_NGHTTP2@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
+USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
index 3529dbf..0b031e8 100644 (file)
@@ -1,4 +1,4 @@
-EPM is a free UNIX software/file packaging program that generates distribution
+EPM is a free Unix software/file packaging program that generates distribution
 archives from a list of files. EPM Can:
 
  * Generate portable script-based distribution packages complete with
 archives from a list of files. EPM Can:
 
  * Generate portable script-based distribution packages complete with
index e576c3d..1ddd000 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -218,6 +218,7 @@ CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
+CURL_DISABLE_SMB = @CURL_DISABLE_SMB@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
@@ -242,7 +243,6 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_NSS_INITCONTEXT = @HAVE_NSS_INITCONTEXT@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
@@ -251,7 +251,6 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
-KRB4_ENABLED = @KRB4_ENABLED@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
@@ -272,6 +271,7 @@ MKDIR_P = @MKDIR_P@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
+NSS_LIBS = @NSS_LIBS@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
@@ -307,11 +307,13 @@ USE_GNUTLS = @USE_GNUTLS@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
+USE_NGHTTP2 = @USE_NGHTTP2@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
+USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
index dd2f19b..164e0e0 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -159,6 +159,7 @@ CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
+CURL_DISABLE_SMB = @CURL_DISABLE_SMB@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
@@ -183,7 +184,6 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_NSS_INITCONTEXT = @HAVE_NSS_INITCONTEXT@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
@@ -192,7 +192,6 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
-KRB4_ENABLED = @KRB4_ENABLED@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
@@ -213,6 +212,7 @@ MKDIR_P = @MKDIR_P@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
+NSS_LIBS = @NSS_LIBS@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
@@ -248,11 +248,13 @@ USE_GNUTLS = @USE_GNUTLS@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
+USE_NGHTTP2 = @USE_NGHTTP2@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
+USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
index 4edbf13..7bbde3d 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -218,6 +218,7 @@ CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
+CURL_DISABLE_SMB = @CURL_DISABLE_SMB@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
@@ -242,7 +243,6 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_NSS_INITCONTEXT = @HAVE_NSS_INITCONTEXT@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
@@ -251,7 +251,6 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
-KRB4_ENABLED = @KRB4_ENABLED@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
@@ -272,6 +271,7 @@ MKDIR_P = @MKDIR_P@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
+NSS_LIBS = @NSS_LIBS@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
@@ -307,11 +307,13 @@ USE_GNUTLS = @USE_GNUTLS@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
+USE_NGHTTP2 = @USE_NGHTTP2@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
+USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
index 73e81f8..99b606c 100644 (file)
@@ -39,12 +39,9 @@ header files are thus altered during build process to use this pragma, in
 order to force libcurl enums of being type int (the pragma disposition in use
 before inclusion is restored before resuming the including unit compilation).
 
 order to force libcurl enums of being type int (the pragma disposition in use
 before inclusion is restored before resuming the including unit compilation).
 
-  Two SSL implementations are available to libcurl on OS/400: QsoSSL which is
-obsolescent, does not support asynchronous I/O and only allows a single SSL
-context within a job, and GSKit that does not suffer from these limitations
-and is able to provide some information about the server certificate.
-  Both implementations of SSL are working on "certificate stores" or keyrings,
-rather than individual certificate/key files. Certificate stores, as weel as
+  Secure socket layer is provided by the IBM GSKit API: unlike other SSL
+implementations, GSKit is based on "certificate stores" or keyrings
+rather than individual certificate/key files. Certificate stores, as well as
 "certificate labels" are managed by external IBM-defined applications.
   There are two ways to specify an SSL context:
 - By an application identifier.
 "certificate labels" are managed by external IBM-defined applications.
   There are two ways to specify an SSL context:
 - By an application identifier.
@@ -85,11 +82,13 @@ options:
         CURLOPT_ISSUERCERT
         CURLOPT_KEYPASSWD
         CURLOPT_KRBLEVEL
         CURLOPT_ISSUERCERT
         CURLOPT_KEYPASSWD
         CURLOPT_KRBLEVEL
+        CURLOPT_LOGIN_OPTIONS
         CURLOPT_MAIL_FROM
         CURLOPT_MAIL_AUTH
         CURLOPT_NETRC_FILE
         CURLOPT_NOPROXY
         CURLOPT_PASSWORD
         CURLOPT_MAIL_FROM
         CURLOPT_MAIL_AUTH
         CURLOPT_NETRC_FILE
         CURLOPT_NOPROXY
         CURLOPT_PASSWORD
+        CURLOPT_PINNEDPUBLICKEY
         CURLOPT_PROXY
         CURLOPT_PROXYPASSWORD
         CURLOPT_PROXYUSERNAME
         CURLOPT_PROXY
         CURLOPT_PROXYPASSWORD
         CURLOPT_PROXYUSERNAME
@@ -114,10 +113,12 @@ options:
         CURLOPT_TLSAUTH_PASSWORD
         CURLOPT_TLSAUTH_TYPE
         CURLOPT_TLSAUTH_USERNAME
         CURLOPT_TLSAUTH_PASSWORD
         CURLOPT_TLSAUTH_TYPE
         CURLOPT_TLSAUTH_USERNAME
+        CURLOPT_UNIX_SOCKET_PATH
         CURLOPT_URL
         CURLOPT_USERAGENT
         CURLOPT_USERNAME
         CURLOPT_USERPWD
         CURLOPT_URL
         CURLOPT_USERAGENT
         CURLOPT_USERNAME
         CURLOPT_USERPWD
+        CURLOPT_XOAUTH2_BEARER
   Else it is the same as for curl_easy_setopt().
   Note that CURLOPT_ERRORBUFFER is not in the list above, since it gives the
 address of an (empty) character buffer, not the address of a string.
   Else it is the same as for curl_easy_setopt().
   Note that CURLOPT_ERRORBUFFER is not in the list above, since it gives the
 address of an (empty) character buffer, not the address of a string.
@@ -210,8 +211,6 @@ _ As a prerequisite, QADRT development environment must be installed.
 _ Install the curl source directory in IFS.
 _ Enter shell (QSH)
 _ Change current directory to the curl installation directory
 _ Install the curl source directory in IFS.
 _ Enter shell (QSH)
 _ Change current directory to the curl installation directory
-- If the SSL backend has to be changed, edit file lib/config-os400.h
-  accordingly.
 _ Change current directory to ./packages/OS400
 _ Edit file iniscript.sh. You may want to change tunable configuration
   parameters, like debug info generation, optimisation level, listing option,
 _ Change current directory to ./packages/OS400
 _ Edit file iniscript.sh. You may want to change tunable configuration
   parameters, like debug info generation, optimisation level, listing option,
index a37f790..d0e6827 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -77,7 +77,8 @@ makeOS400IconvCode(char buf[ICONV_ID_SIZE], unsigned int ccsid)
 
 
 static iconv_t
 
 
 static iconv_t
-iconv_open_CCSID(unsigned int ccsidout, unsigned int ccsidin, unsigned int cstr)
+iconv_open_CCSID(unsigned int ccsidout, unsigned int ccsidin,
+                                                        unsigned int cstr)
 
 {
   char fromcode[ICONV_ID_SIZE];
 
 {
   char fromcode[ICONV_ID_SIZE];
@@ -166,7 +167,6 @@ dynconvert(int dccsid, const char * s, int slen, int sccsid)
   char * cp;
   size_t dlen;
   int l;
   char * cp;
   size_t dlen;
   int l;
-  int l2;
   static const char nullbyte = 0;
 
   /* Like convert, but the destination is allocated and returned. */
   static const char nullbyte = 0;
 
   /* Like convert, but the destination is allocated and returned. */
@@ -190,7 +190,7 @@ dynconvert(int dccsid, const char * s, int slen, int sccsid)
        Since destination code size is unknown, use a conversion to generate
        terminator. */
 
        Since destination code size is unknown, use a conversion to generate
        terminator. */
 
-    l2 = convert(d + l, dlen - l, dccsid, &nullbyte, -1, ASCII_CCSID);
+    int l2 = convert(d + l, dlen - l, dccsid, &nullbyte, -1, ASCII_CCSID);
 
     if(l2 < 0) {
       free(d);
 
     if(l2 < 0) {
       free(d);
@@ -216,10 +216,11 @@ slist_convert(int dccsid, struct curl_slist * from, int sccsid)
 
 {
   struct curl_slist * to = (struct curl_slist *) NULL;
 
 {
   struct curl_slist * to = (struct curl_slist *) NULL;
-  char * cp;
 
 
-  for (; from; from = from->next) {
-    if(!(cp = dynconvert(dccsid, from->data, -1, sccsid))) {
+  for(; from; from = from->next) {
+    char * cp = dynconvert(dccsid, from->data, -1, sccsid);
+
+    if(!cp) {
       curl_slist_free_all(to);
       return (struct curl_slist *) NULL;
     }
       curl_slist_free_all(to);
       return (struct curl_slist *) NULL;
     }
@@ -268,7 +269,7 @@ curl_easy_escape_ccsid(CURL * handle, const char * string, int length,
     return (char *) NULL;
     }
 
     return (char *) NULL;
     }
 
-  s = dynconvert(ASCII_CCSID, s, length? length: -1, sccsid);
+  s = dynconvert(ASCII_CCSID, string, length? length: -1, sccsid);
 
   if(!s)
     return (char *) NULL;
 
   if(!s)
     return (char *) NULL;
@@ -299,7 +300,7 @@ curl_easy_unescape_ccsid(CURL * handle, const char * string, int length,
     return (char *) NULL;
     }
 
     return (char *) NULL;
     }
 
-  s = dynconvert(ASCII_CCSID, s, length? length: -1, sccsid);
+  s = dynconvert(ASCII_CCSID, string, length? length: -1, sccsid);
 
   if(!s)
     return (char *) NULL;
 
   if(!s)
     return (char *) NULL;
@@ -369,15 +370,13 @@ convert_version_info_string(const char * * stringp,
                             char * * bufp, int * left, unsigned int ccsid)
 
 {
                             char * * bufp, int * left, unsigned int ccsid)
 
 {
-  int l;
-
   /* Helper for curl_version_info_ccsid(): convert a string if defined.
      Result is stored in the `*left'-byte buffer at `*bufp'.
      `*bufp' and `*left' are updated accordingly.
      Return 0 if ok, else -1. */
 
   if(*stringp) {
   /* Helper for curl_version_info_ccsid(): convert a string if defined.
      Result is stored in the `*left'-byte buffer at `*bufp'.
      `*bufp' and `*left' are updated accordingly.
      Return 0 if ok, else -1. */
 
   if(*stringp) {
-    l = convert(*bufp, *left, ccsid, *stringp, -1, ASCII_CCSID);
+    int l = convert(*bufp, *left, ccsid, *stringp, -1, ASCII_CCSID);
 
     if(l <= 0)
       return -1;
 
     if(l <= 0)
       return -1;
@@ -399,7 +398,6 @@ curl_version_info_ccsid(CURLversion stamp, unsigned int ccsid)
   char * cp;
   int n;
   int nproto;
   char * cp;
   int n;
   int nproto;
-  int i;
   curl_version_info_data * id;
 
   /* The assertion below is possible, because although the second operand
   curl_version_info_data * id;
 
   /* The assertion below is possible, because although the second operand
@@ -407,7 +405,7 @@ curl_version_info_ccsid(CURLversion stamp, unsigned int ccsid)
      compiler seems to compare string values after substitution. */
 
 #if CURLVERSION_NOW != CURLVERSION_FOURTH
      compiler seems to compare string values after substitution. */
 
 #if CURLVERSION_NOW != CURLVERSION_FOURTH
-#error curl_version_info_data structure has changed: upgrade this procedure too.
+#error curl_version_info_data structure has changed: upgrade this procedure.
 #endif
 
   /* If caller has been compiled with a new version, error. */
 #endif
 
   /* If caller has been compiled with a new version, error. */
@@ -426,7 +424,7 @@ curl_version_info_ccsid(CURLversion stamp, unsigned int ccsid)
   nproto = 0;
 
   if(p->protocols) {
   nproto = 0;
 
   if(p->protocols) {
-    while (p->protocols[nproto])
+    while(p->protocols[nproto])
       n += strlen(p->protocols[nproto++]);
 
     n += nproto++;
       n += strlen(p->protocols[nproto++]);
 
     n += nproto++;
@@ -472,13 +470,14 @@ curl_version_info_ccsid(CURLversion stamp, unsigned int ccsid)
   memcpy((char *) id, (char *) p, sizeof *p);
 
   if(id->protocols) {
   memcpy((char *) id, (char *) p, sizeof *p);
 
   if(id->protocols) {
+    int i = nproto * sizeof id->protocols[0];
+
     id->protocols = (const char * const *) cp;
     id->protocols = (const char * const *) cp;
-    i = nproto * sizeof id->protocols[0];
     memcpy(cp, (char *) p->protocols, i);
     cp += i;
     n -= i;
 
     memcpy(cp, (char *) p->protocols, i);
     cp += i;
     n -= i;
 
-    for (i = 0; id->protocols[i]; i++)
+    for(i = 0; id->protocols[i]; i++)
       if(convert_version_info_string(((const char * *) id->protocols) + i,
                                       &cp, &n, ccsid))
         return (curl_version_info_data *) NULL;
       if(convert_version_info_string(((const char * *) id->protocols) + i,
                                       &cp, &n, ccsid))
         return (curl_version_info_data *) NULL;
@@ -588,12 +587,12 @@ void
 curl_certinfo_free_all(struct curl_certinfo *info)
 
 {
 curl_certinfo_free_all(struct curl_certinfo *info)
 
 {
-  int i;
-
   /* Free all memory used by certificate info. */
   if(info) {
     if(info->certinfo) {
   /* Free all memory used by certificate info. */
   if(info) {
     if(info->certinfo) {
-      for (i = 0; i < info->num_of_certs; i++)
+      int i;
+
+      for(i = 0; i < info->num_of_certs; i++)
         curl_slist_free_all(info->certinfo[i]);
       free((char *) info->certinfo);
     }
         curl_slist_free_all(info->certinfo[i]);
       free((char *) info->certinfo);
     }
@@ -611,13 +610,10 @@ curl_easy_getinfo_ccsid(CURL * curl, CURLINFO info, ...)
   CURLcode ret;
   unsigned int ccsid;
   char * * cpp;
   CURLcode ret;
   unsigned int ccsid;
   char * * cpp;
-  char * s;
-  char * d;
   struct SessionHandle * data;
   struct curl_slist * * slp;
   struct curl_certinfo * cipf;
   struct curl_certinfo * cipt;
   struct SessionHandle * data;
   struct curl_slist * * slp;
   struct curl_certinfo * cipf;
   struct curl_certinfo * cipt;
-  int i;
 
   /* WARNING: unlike curl_easy_get_info(), the strings returned by this
      procedure have to be free'ed. */
 
   /* WARNING: unlike curl_easy_get_info(), the strings returned by this
      procedure have to be free'ed. */
@@ -633,13 +629,11 @@ curl_easy_getinfo_ccsid(CURL * curl, CURLINFO info, ...)
     case CURLINFO_STRING:
       ccsid = va_arg(arg, unsigned int);
       cpp = (char * *) paramp;
     case CURLINFO_STRING:
       ccsid = va_arg(arg, unsigned int);
       cpp = (char * *) paramp;
-      s = *cpp;
 
 
-      if(s) {
-        d = dynconvert(ccsid, s, -1, ASCII_CCSID);
-        *cpp = d;
+      if(*cpp) {
+        *cpp = dynconvert(ccsid, *cpp, -1, ASCII_CCSID);
 
 
-        if(!d)
+        if(!*cpp)
           ret = CURLE_OUT_OF_MEMORY;
       }
 
           ret = CURLE_OUT_OF_MEMORY;
       }
 
@@ -647,19 +641,23 @@ curl_easy_getinfo_ccsid(CURL * curl, CURLINFO info, ...)
 
     case CURLINFO_SLIST:
       ccsid = va_arg(arg, unsigned int);
 
     case CURLINFO_SLIST:
       ccsid = va_arg(arg, unsigned int);
-      if(info == CURLINFO_CERTINFO) {
+      switch (info) {
+      case CURLINFO_CERTINFO:
         cipf = *(struct curl_certinfo * *) paramp;
         if(cipf) {
           if(!(cipt = (struct curl_certinfo *) malloc(sizeof *cipt)))
             ret = CURLE_OUT_OF_MEMORY;
           else {
         cipf = *(struct curl_certinfo * *) paramp;
         if(cipf) {
           if(!(cipt = (struct curl_certinfo *) malloc(sizeof *cipt)))
             ret = CURLE_OUT_OF_MEMORY;
           else {
-            cipt->certinfo = (struct curl_slist * *) calloc(cipf->num_of_certs +
-                             1, sizeof(struct curl_slist *));
+            cipt->certinfo = (struct curl_slist * *)
+                             calloc(cipf->num_of_certs +
+                                    1, sizeof(struct curl_slist *));
             if(!cipt->certinfo)
               ret = CURLE_OUT_OF_MEMORY;
             else {
             if(!cipt->certinfo)
               ret = CURLE_OUT_OF_MEMORY;
             else {
+              int i;
+
               cipt->num_of_certs = cipf->num_of_certs;
               cipt->num_of_certs = cipf->num_of_certs;
-              for (i = 0; i < cipf->num_of_certs; i++)
+              for(i = 0; i < cipf->num_of_certs; i++)
                 if(cipf->certinfo[i])
                   if(!(cipt->certinfo[i] = slist_convert(ccsid,
                                                           cipf->certinfo[i],
                 if(cipf->certinfo[i])
                   if(!(cipt->certinfo[i] = slist_convert(ccsid,
                                                           cipf->certinfo[i],
@@ -677,12 +675,18 @@ curl_easy_getinfo_ccsid(CURL * curl, CURLINFO info, ...)
 
           *(struct curl_certinfo * *) paramp = cipt;
         }
 
           *(struct curl_certinfo * *) paramp = cipt;
         }
-      }
-      else {
+
+        break;
+
+      case CURLINFO_TLS_SESSION:
+        break;
+
+      default:
         slp = (struct curl_slist * *) paramp;
         if(*slp)
           if(!(*slp = slist_convert(ccsid, *slp, ASCII_CCSID)))
             ret = CURLE_OUT_OF_MEMORY;
         slp = (struct curl_slist * *) paramp;
         if(*slp)
           if(!(*slp = slist_convert(ccsid, *slp, ASCII_CCSID)))
             ret = CURLE_OUT_OF_MEMORY;
+        break;
       }
     }
 
       }
     }
 
@@ -715,7 +719,7 @@ static void
 Curl_formadd_release_local(struct curl_forms * forms, int nargs, int skip)
 
 {
 Curl_formadd_release_local(struct curl_forms * forms, int nargs, int skip)
 
 {
-  while (nargs--)
+  while(nargs--)
     if(nargs != skip)
       if(Curl_is_formadd_string(forms[nargs].option))
         if(forms[nargs].value)
     if(nargs != skip)
       if(Curl_is_formadd_string(forms[nargs].option))
         if(forms[nargs].value)
@@ -755,7 +759,7 @@ Curl_formadd_convert(struct curl_forms * forms,
     return -1;
     }
 
     return -1;
     }
 
-  cp2 = realloc(cp, l);                 /* Shorten buffer to the string size. */
+  cp2 = realloc(cp, l);         /* Shorten buffer to the string size. */
 
   if(cp2)
     cp = cp2;
 
   if(cp2)
     cp = cp2;
@@ -763,7 +767,7 @@ Curl_formadd_convert(struct curl_forms * forms,
   forms[formx].value = cp;
 
   if(lengthx >= 0)
   forms[formx].value = cp;
 
   if(lengthx >= 0)
-    forms[lengthx].value = (char *) l;  /* Update to length after conversion. */
+    forms[lengthx].value = (char *) l;  /* Update length after conversion. */
 
   return l;
 }
 
   return l;
 }
@@ -826,7 +830,7 @@ curl_formadd_ccsid(struct curl_httppost * * httppost,
   forms = (struct curl_forms *) NULL;
   va_start(arg, last_post);
 
   forms = (struct curl_forms *) NULL;
   va_start(arg, last_post);
 
-  for (;;) {
+  for(;;) {
     /* Make sure there is still room for an item in local array. */
 
     if(nargs >= lformlen) {
     /* Make sure there is still room for an item in local array. */
 
     if(nargs >= lformlen) {
@@ -1098,7 +1102,6 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...)
   char * s;
   char * cp;
   unsigned int ccsid;
   char * s;
   char * cp;
   unsigned int ccsid;
-  size_t len;
   curl_off_t pfsize;
   static char testwarn = 1;
 
   curl_off_t pfsize;
   static char testwarn = 1;
 
@@ -1111,11 +1114,8 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...)
   if(testwarn) {
     testwarn = 0;
 
   if(testwarn) {
     testwarn = 0;
 
-#ifdef USE_TLS_SRP
-    if((int) STRING_LAST != (int) STRING_TLSAUTH_PASSWORD + 1)
-#else
-    if((int) STRING_LAST != (int) STRING_MAIL_AUTH + 1)
-#endif
+    if((int) STRING_LASTZEROTERMINATED != (int) STRING_UNIX_SOCKET_PATH + 1 ||
+       (int) STRING_LAST != (int) STRING_COPYPOSTFIELDS + 1)
       curl_mfprintf(stderr,
        "*** WARNING: curl_easy_setopt_ccsid() should be reworked ***\n");
     }
       curl_mfprintf(stderr,
        "*** WARNING: curl_easy_setopt_ccsid() should be reworked ***\n");
     }
@@ -1143,11 +1143,13 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...)
   case CURLOPT_ISSUERCERT:
   case CURLOPT_KEYPASSWD:
   case CURLOPT_KRBLEVEL:
   case CURLOPT_ISSUERCERT:
   case CURLOPT_KEYPASSWD:
   case CURLOPT_KRBLEVEL:
+  case CURLOPT_LOGIN_OPTIONS:
   case CURLOPT_MAIL_FROM:
   case CURLOPT_MAIL_AUTH:
   case CURLOPT_NETRC_FILE:
   case CURLOPT_NOPROXY:
   case CURLOPT_PASSWORD:
   case CURLOPT_MAIL_FROM:
   case CURLOPT_MAIL_AUTH:
   case CURLOPT_NETRC_FILE:
   case CURLOPT_NOPROXY:
   case CURLOPT_PASSWORD:
+  case CURLOPT_PINNEDPUBLICKEY:
   case CURLOPT_PROXY:
   case CURLOPT_PROXYPASSWORD:
   case CURLOPT_PROXYUSERNAME:
   case CURLOPT_PROXY:
   case CURLOPT_PROXYPASSWORD:
   case CURLOPT_PROXYUSERNAME:
@@ -1172,10 +1174,12 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...)
   case CURLOPT_TLSAUTH_PASSWORD:
   case CURLOPT_TLSAUTH_TYPE:
   case CURLOPT_TLSAUTH_USERNAME:
   case CURLOPT_TLSAUTH_PASSWORD:
   case CURLOPT_TLSAUTH_TYPE:
   case CURLOPT_TLSAUTH_USERNAME:
+  case CURLOPT_UNIX_SOCKET_PATH:
   case CURLOPT_URL:
   case CURLOPT_USERAGENT:
   case CURLOPT_USERNAME:
   case CURLOPT_USERPWD:
   case CURLOPT_URL:
   case CURLOPT_USERAGENT:
   case CURLOPT_USERNAME:
   case CURLOPT_USERPWD:
+  case CURLOPT_XOAUTH2_BEARER:
     s = va_arg(arg, char *);
     ccsid = va_arg(arg, unsigned int);
 
     s = va_arg(arg, char *);
     ccsid = va_arg(arg, unsigned int);
 
@@ -1220,6 +1224,7 @@ curl_easy_setopt_ccsid(CURL * curl, CURLoption tag, ...)
       }
     else {
       /* Data length specified. */
       }
     else {
       /* Data length specified. */
+      size_t len;
 
       if(pfsize < 0 || pfsize > SIZE_MAX) {
         result = CURLE_OUT_OF_MEMORY;
 
       if(pfsize < 0 || pfsize > SIZE_MAX) {
         result = CURLE_OUT_OF_MEMORY;
index eaa591f..3d1fe79 100644 (file)
@@ -38,13 +38,13 @@ CURL_EXTERN char * curl_easy_unescape_ccsid(CURL * handle, const char * string,
                                             int length, int * outlength,
                                             unsigned int sccsid,
                                             unsigned int dccsid);
                                             int length, int * outlength,
                                             unsigned int sccsid,
                                             unsigned int dccsid);
-CURL_EXTERN struct curl_slist * curl_slist_append_ccsid(struct curl_slist * lst,
+CURL_EXTERN struct curl_slist * curl_slist_append_ccsid(struct curl_slist * l,
                                                         const char * data,
                                                         unsigned int ccsid);
 CURL_EXTERN time_t curl_getdate_ccsid(const char * p, const time_t * unused,
                                       unsigned int ccsid);
 CURL_EXTERN curl_version_info_data * curl_version_info_ccsid(CURLversion stamp,
                                                         const char * data,
                                                         unsigned int ccsid);
 CURL_EXTERN time_t curl_getdate_ccsid(const char * p, const time_t * unused,
                                       unsigned int ccsid);
 CURL_EXTERN curl_version_info_data * curl_version_info_ccsid(CURLversion stamp,
-                                                             unsigned int csid);
+                                                             unsigned int cid);
 CURL_EXTERN const char * curl_easy_strerror_ccsid(CURLcode error,
                                                   unsigned int ccsid);
 CURL_EXTERN const char * curl_share_strerror_ccsid(CURLSHcode error,
 CURL_EXTERN const char * curl_easy_strerror_ccsid(CURLcode error,
                                                   unsigned int ccsid);
 CURL_EXTERN const char * curl_share_strerror_ccsid(CURLSHcode error,
index 1015843..fcbf7c7 100644 (file)
@@ -5,7 +5,7 @@
       *                            | (__| |_| |  _ <| |___
       *                             \___|\___/|_| \_\_____|
       *
       *                            | (__| |_| |  _ <| |___
       *                             \___|\___/|_| \_\_____|
       *
-      * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+      * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
       *
       * This software is licensed as described in the file COPYING, which
       * you should have received as part of this distribution. The terms
       *
       * This software is licensed as described in the file COPYING, which
       * you should have received as part of this distribution. The terms
@@ -94,7 +94,7 @@
      d CURL_VERSION_NTLM...
      d                 c                   X'00000010'
      d CURL_VERSION_GSSNEGOTIATE...
      d CURL_VERSION_NTLM...
      d                 c                   X'00000010'
      d CURL_VERSION_GSSNEGOTIATE...
-     d                 c                   X'00000020'
+     d                 c                   X'00000020'                          Deprecated
      d CURL_VERSION_DEBUG...
      d                 c                   X'00000040'
      d CURL_VERSION_ASYNCHDNS...
      d CURL_VERSION_DEBUG...
      d                 c                   X'00000040'
      d CURL_VERSION_ASYNCHDNS...
      d                 c                   X'00004000'
      d CURL_VERSION_NTLM_WB...
      d                 c                   X'00008000'
      d                 c                   X'00004000'
      d CURL_VERSION_NTLM_WB...
      d                 c                   X'00008000'
+     d CURL_VERSION_HTTP2...
+     d                 c                   X'00010000'
+     d CURL_VERSION_GSSAPI...
+     d                 c                   X'00020000'
+     d CURL_VERSION_KERBEROS5...
+     d                 c                   X'00040000'
+     d CURL_VERSION_UNIX_SOCKETS...
+     d                 c                   X'00080000'
       *
      d HTTPPOST_FILENAME...
      d                 c                   X'00000001'
       *
      d HTTPPOST_FILENAME...
      d                 c                   X'00000001'
      d CURLAUTH_BASIC  c                   X'00000001'
      d CURLAUTH_DIGEST...
      d                 c                   X'00000002'
      d CURLAUTH_BASIC  c                   X'00000001'
      d CURLAUTH_DIGEST...
      d                 c                   X'00000002'
-     d CURLAUTH_GSSNEGOTIATE...
+     d CURLAUTH_NEGOTIATE...
      d                 c                   X'00000004'
      d CURLAUTH_NTLM   c                   X'00000008'
      d CURLAUTH_DIGEST_IE...
      d                 c                   X'00000004'
      d CURLAUTH_NTLM   c                   X'00000008'
      d CURLAUTH_DIGEST_IE...
      d                 c                   1
      d CURL_HTTP_VERSION_1_1...
      d                 c                   2
      d                 c                   1
      d CURL_HTTP_VERSION_1_1...
      d                 c                   2
+     d CURL_HTTP_VERSION_2_0...
+     d                 c                   3
       *
      d CURL_NETRC_IGNORED...
      d                 c                   0
       *
      d CURL_NETRC_IGNORED...
      d                 c                   0
      d                 c                   2
      d CURL_SSLVERSION_SSLv3...
      d                 c                   3
      d                 c                   2
      d CURL_SSLVERSION_SSLv3...
      d                 c                   3
+     d CURL_SSLVERSION_TLSv1_0...
+     d                 c                   4
+     d CURL_SSLVERSION_TLSv1_1...
+     d                 c                   5
+     d CURL_SSLVERSION_TLSv1_2...
+     d                 c                   6
       *
      d CURL_TLSAUTH_NONE...
      d                 c                   0
       *
      d CURL_TLSAUTH_NONE...
      d                 c                   0
      d                 c                   14
      d  CURLE_FTP_CANT_GET_HOST...
      d                 c                   15
      d                 c                   14
      d  CURLE_FTP_CANT_GET_HOST...
      d                 c                   15
-     d  CURLE_OBSOLETE16...
-     d                 c                   16
+     d  CURLE_HTTP2    c                   16
      d  CURLE_FTP_COULDNT_SET_TYPE...
      d                 c                   17
      d  CURLE_PARTIAL_FILE...
      d  CURLE_FTP_COULDNT_SET_TYPE...
      d                 c                   17
      d  CURLE_PARTIAL_FILE...
      d                 c                   88
      d  CURLE_NO_CONNECTION_AVAILABLE...
      d                 c                   89
      d                 c                   88
      d  CURLE_NO_CONNECTION_AVAILABLE...
      d                 c                   89
+     d  CURLE_SSL_PINNEDPUBKEYNOTMATCH...
+     d                 c                   90
       *
       /if not defined(CURL_NO_OLDIES)
      d  CURLE_URL_MALFORMAT_USER...
       *
       /if not defined(CURL_NO_OLDIES)
      d  CURLE_URL_MALFORMAT_USER...
      d  CURLFTPMETHOD_SINGLECWD...
      d                 c                   3
       *
      d  CURLFTPMETHOD_SINGLECWD...
      d                 c                   3
       *
+     d  CURLHEADER_UNIFIED...
+     d                 c                   X'00000000'
+     d  CURLHEADER_SEPARATE...
+     d                 c                   X'00000001'
+      *
      d  CURLPROTO_HTTP...
      d                 c                   X'00000001'
      d  CURLPROTO_HTTPS...
      d  CURLPROTO_HTTP...
      d                 c                   X'00000001'
      d  CURLPROTO_HTTPS...
      d                 c                   X'01000000'
      d  CURLPROTO_GOPHER...
      d                 c                   X'02000000'
      d                 c                   X'01000000'
      d  CURLPROTO_GOPHER...
      d                 c                   X'02000000'
+     d  CURLPROTO_SMB...
+     d                 c                   X'04000000'
+     d  CURLPROTO_SMBS...
+     d                 c                   X'08000000'
       *
      d CURLoption      s             10i 0 based(######ptr######)               Enum
       *
      d CURLoption      s             10i 0 based(######ptr######)               Enum
-     d  CURLOPT_FILE   c                   10001
      d  CURLOPT_WRITEDATA...
      d                 c                   10001
      d  CURLOPT_URL    c                   10002
      d  CURLOPT_WRITEDATA...
      d                 c                   10001
      d  CURLOPT_URL    c                   10002
      d  CURLOPT_PROXYUSERPWD...
      d                 c                   10006
      d  CURLOPT_RANGE  c                   10007
      d  CURLOPT_PROXYUSERPWD...
      d                 c                   10006
      d  CURLOPT_RANGE  c                   10007
-     d  CURLOPT_INFILE...
-     d                 c                   10009
      d  CURLOPT_READDATA...
      d                 c                   10009
      d  CURLOPT_ERRORBUFFER...
      d  CURLOPT_READDATA...
      d                 c                   10009
      d  CURLOPT_ERRORBUFFER...
      d                 c                   10026
      d  CURLOPT_CRLF   c                   00027
      d  CURLOPT_QUOTE  c                   10028
      d                 c                   10026
      d  CURLOPT_CRLF   c                   00027
      d  CURLOPT_QUOTE  c                   10028
-     d  CURLOPT_WRITEHEADER...
-     d                 c                   10029
      d  CURLOPT_HEADERDATA...
      d                 c                   10029
      d  CURLOPT_COOKIEFILE...
      d  CURLOPT_HEADERDATA...
      d                 c                   10029
      d  CURLOPT_COOKIEFILE...
      d                 c                   10037
      d  CURLOPT_POSTQUOTE...
      d                 c                   10039
      d                 c                   10037
      d  CURLOPT_POSTQUOTE...
      d                 c                   10039
-     d  CURLOPT_WRITEINFO...
-     d                 c                   10040
      d  CURLOPT_VERBOSE...
      d                 c                   00041
      d  CURLOPT_HEADER...
      d  CURLOPT_VERBOSE...
      d                 c                   00041
      d  CURLOPT_HEADER...
      d                 c                   10070
      d  CURLOPT_MAXCONNECTS...
      d                 c                   00071
      d                 c                   10070
      d  CURLOPT_MAXCONNECTS...
      d                 c                   00071
-     d  CURLOPT_CLOSEPOLICY...
-     d                 c                   00072
      d  CURLOPT_FRESH_CONNECT...
      d                 c                   00074
      d  CURLOPT_FORBID_REUSE...
      d  CURLOPT_FRESH_CONNECT...
      d                 c                   00074
      d  CURLOPT_FORBID_REUSE...
      d                 c                   00218
      d  CURLOPT_XFERINFOFUNCTION...
      d                 c                   20219
      d                 c                   00218
      d  CURLOPT_XFERINFOFUNCTION...
      d                 c                   20219
+     d  CURLOPT_XOAUTH2_BEARER...
+     d                 c                   10220
+     d  CURLOPT_DNS_INTERFACE...
+     d                 c                   10221
+     d  CURLOPT_DNS_LOCAL_IP4...
+     d                 c                   10222
+     d  CURLOPT_DNS_LOCAL_IP6...
+     d                 c                   10223
+     d  CURLOPT_LOGIN_OPTIONS...
+     d                 c                   10224
+     d  CURLOPT_SSL_ENABLE_NPN...
+     d                 c                   00225
+     d  CURLOPT_SSL_ENABLE_ALPN...
+     d                 c                   00226
+     d  CURLOPT_EXPECT_100_TIMEOUT_MS...
+     d                 c                   00227
+     d  CURLOPT_PROXYHEADER...
+     d                 c                   10228
+     d  CURLOPT_HEADEROPT...
+     d                 c                   00229
+     d  CURLOPT_PINNEDPUBLICKEY...
+     d                 c                   10230
+     d  CURLOPT_UNIX_SOCKET_PATH...
+     d                 c                   10231
       *
       /if not defined(CURL_NO_OLDIES)
       *
       /if not defined(CURL_NO_OLDIES)
+     d  CURLOPT_FILE   c                   10001
+     d  CURLOPT_INFILE...
+     d                 c                   10009
      d  CURLOPT_SSLKEYPASSWD...
      d                 c                   10026
      d  CURLOPT_SSLCERTPASSWD...
      d                 c                   10026
      d  CURLOPT_SSLKEYPASSWD...
      d                 c                   10026
      d  CURLOPT_SSLCERTPASSWD...
      d                 c                   10026
+     d  CURLOPT_WRITEHEADER...
+     d                 c                   10029
+     d  CURLOPT_WRITEINFO...
+     d                 c                   10040
      d  CURLOPT_FTPLISTONLY...
      d                 c                   00048
      d  CURLOPT_FTPAPPEND...
      d                 c                   00050
      d  CURLOPT_FTPLISTONLY...
      d                 c                   00048
      d  CURLOPT_FTPAPPEND...
      d                 c                   00050
+     d  CURLOPT_CLOSEPOLICY...
+     d                 c                   00072
      d  CURLOPT_KRB4LEVEL...
      d                 c                   10063
      d  CURLOPT_ENCODING...
      d  CURLOPT_KRB4LEVEL...
      d                 c                   10063
      d  CURLOPT_ENCODING...
      d                 c                   X'00100029'
      d  CURLINFO_LOCAL_PORT...                                                  CURLINFO_LONG + 42
      d                 c                   X'0020002A'
      d                 c                   X'00100029'
      d  CURLINFO_LOCAL_PORT...                                                  CURLINFO_LONG + 42
      d                 c                   X'0020002A'
+     d  CURLINFO_TLS_SESSION...                                                 CURLINFO_SLIST + 43
+     d                 c                   X'0040002B'
       *
      d  CURLINFO_HTTP_CODE...                                                   Old ...RESPONSE_CODE
      d                 c                   X'00200002'
       *
       *
      d  CURLINFO_HTTP_CODE...                                                   Old ...RESPONSE_CODE
      d                 c                   X'00200002'
       *
+     d curl_sslbackend...
+     d                 s             10i 0 based(######ptr######)               Enum
+     d  CURLSSLBACKEND_NONE...
+     d                 c                   0
+     d  CURLSSLBACKEND_OPENSSL...
+     d                 c                   1
+     d  CURLSSLBACKEND_GNUTLS...
+     d                 c                   2
+     d  CURLSSLBACKEND_NSS...
+     d                 c                   3
+     d  CURLSSLBACKEND_OBSOLETE4...
+     d                 c                   4
+     d  CURLSSLBACKEND_GSKIT...
+     d                 c                   5
+     d  CURLSSLBACKEND_POLARSSL...
+     d                 c                   6
+     d  CURLSSLBACKEND_CYASSL...
+     d                 c                   7
+     d  CURLSSLBACKEND_SCHANNEL...
+     d                 c                   8
+     d  CURLSSLBACKEND_DARWINSSL...
+     d                 c                   9
+      *
      d curl_closepolicy...
      d                 s             10i 0 based(######ptr######)               Enum
      d  CURLCLOSEPOLICY_OLDEST...
      d curl_closepolicy...
      d                 s             10i 0 based(######ptr######)               Enum
      d  CURLCLOSEPOLICY_OLDEST...
      d                 c                   5
      d  CURLM_UNKNOWN_OPTION...
      d                 c                   6
      d                 c                   5
      d  CURLM_UNKNOWN_OPTION...
      d                 c                   6
-     d  CURLM_LAST     c                   7
+     d  CURLM_ADDED_ALREADY...
+     d                 c                   7
+     d  CURLM_LAST     c                   8
       *
      d CURLMSG         s             10i 0 based(######ptr######)               Enum
      d  CURLMSG_NONE   c                   0
       *
      d CURLMSG         s             10i 0 based(######ptr######)               Enum
      d  CURLMSG_NONE   c                   0
      d  addrlen                      10u 0
      d  addr                         16                                         struct sockaddr
       *
      d  addrlen                      10u 0
      d  addr                         16                                         struct sockaddr
       *
-     d curl_khkey      ds                  based(######ptr######)
-     d                                     qualified
-     d  key                            *                                        const char *
-     d  len                          10u 0
-     d  keytype                      10i 0
-      *
+     d curl_khtype     s             10i 0 based(######ptr######)               enum
      d CURLKHTYPE_UNKNOWN...
      d                 c                   0
      d CURLKHTYPE_RSA1...
      d CURLKHTYPE_UNKNOWN...
      d                 c                   0
      d CURLKHTYPE_RSA1...
      d CURLKHTYPE_DSS...
      d                 c                   3
       *
      d CURLKHTYPE_DSS...
      d                 c                   3
       *
+     d curl_khkey      ds                  based(######ptr######)
+     d                                     qualified
+     d  key                            *                                        const char *
+     d  len                          10u 0
+     d  keytype                            like(curl_khtype)
+      *
      d curl_forms      ds                  based(######ptr######)
      d                                     qualified
      d  option                             like(CURLformoption)
      d curl_forms      ds                  based(######ptr######)
      d                                     qualified
      d  option                             like(CURLformoption)
      d  group                          *                                        char *
      d  target                         *                                        char *
       *
      d  group                          *                                        char *
      d  target                         *                                        char *
       *
+     d curl_tlssessioninfo...
+     d                 ds                  based(######ptr######)
+     d                                     qualified
+     d  backend                            like(curl_sslbackend)
+     d  internals                      *                                        void *
+      *
      d curl_fileinfo   ds                  based(######ptr######)
      d                                     qualified
      d  filename                       *                                        char *
      d curl_fileinfo   ds                  based(######ptr######)
      d                                     qualified
      d  filename                       *                                        char *
index c07355f..0105f5a 100644 (file)
@@ -1,6 +1,16 @@
 #!/bin/sh
 
 
 #!/bin/sh
 
 
+setenv()
+
+{
+        #       Define and export.
+
+        eval ${1}="${2}"
+        export ${1}
+}
+
+
 case "${SCRIPTDIR}" in
 /*)     ;;
 *)      SCRIPTDIR="`pwd`/${SCRIPTDIR}"
 case "${SCRIPTDIR}" in
 /*)     ;;
 *)      SCRIPTDIR="`pwd`/${SCRIPTDIR}"
@@ -32,18 +42,23 @@ export SONAME
 #
 ################################################################################
 
 #
 ################################################################################
 
-TARGETLIB='CURL'                # Target OS/400 program library
-STATBNDDIR='CURL_A'             # Static binding directory.
-DYNBNDDIR='CURL'                # Dynamic binding directory.
-SRVPGM="CURL.${SONAME}"         # Service program.
-TGTCCSID='500'                  # Target CCSID of objects
-DEBUG='*ALL'                    # Debug level
-OPTIMIZE='10'                   # Optimisation level
-OUTPUT='*NONE'                  # Compilation output option.
-TGTRLS='V5R3M0'                 # Target OS release
+setenv TARGETLIB        'CURL'                  # Target OS/400 program library.
+setenv STATBNDDIR       'CURL_A'                # Static binding directory.
+setenv DYNBNDDIR        'CURL'                  # Dynamic binding directory.
+setenv SRVPGM           "CURL.${SONAME}"        # Service program.
+setenv TGTCCSID         '500'                   # Target CCSID of objects.
+setenv DEBUG            '*ALL'                  # Debug level.
+setenv OPTIMIZE         '10'                    # Optimisation level
+setenv OUTPUT           '*NONE'                 # Compilation output option.
+setenv TGTRLS           'V5R3M0'                # Target OS release.
+setenv IFSDIR           '/curl'                 # Installation IFS directory.
 
 
-export TARGETLIB STATBNDDIR DYNBNDDIR SRVPGM TGTCCSID DEBUG OPTIMIZE OUTPUT
-export TGTRLS
+#       Define ZLIB availability and locations.
+
+setenv WITH_ZLIB        0                       # Define to 1 to enable.
+setenv ZLIB_INCLUDE     '/zlib/include'         # ZLIB include IFS directory.
+setenv ZLIB_LIB         'ZLIB'                  # ZLIB library.
+setenv ZLIB_BNDDIR      'ZLIB_A'                # ZLIB binding directory.
 
 
 ################################################################################
 
 
 ################################################################################
@@ -104,6 +119,41 @@ action_needed()
 }
 
 
 }
 
 
+#       canonicalize_path path
+#
+#       Return canonicalized path as:
+#       - Absolute
+#       - No . or .. component.
+
+canonicalize_path()
+
+{
+        if expr "${1}" : '^/' > /dev/null
+        then    P="${1}"
+        else    P="`pwd`/${1}"
+        fi
+
+        R=
+        IFSSAVE="${IFS}"
+        IFS="/"
+
+        for C in ${P}
+        do      IFS="${IFSSAVE}"
+                case "${C}" in
+                .)      ;;
+                ..)     R=`expr "${R}" : '^\(.*/\)..*'`
+                        ;;
+                ?*)     R="${R}${C}/"
+                        ;;
+                *)      ;;
+                esac
+        done
+
+        IFS="${IFSSAVE}"
+        echo "/`expr "${R}" : '^\(.*\)/'`"
+}
+
+
 #       make_module module_name source_name [additional_definitions]
 #
 #       Compile source name into ASCII module if needed.
 #       make_module module_name source_name [additional_definitions]
 #
 #       Compile source name into ASCII module if needed.
@@ -116,6 +166,7 @@ make_module()
         MODULES="${MODULES} ${1}"
         MODIFSNAME="${LIBIFSNAME}/${1}.MODULE"
         action_needed "${MODIFSNAME}" "${2}" || return 0;
         MODULES="${MODULES} ${1}"
         MODIFSNAME="${LIBIFSNAME}/${1}.MODULE"
         action_needed "${MODIFSNAME}" "${2}" || return 0;
+        SRCDIR=`dirname \`canonicalize_path "${2}"\``
 
         #       #pragma convert has to be in the source file itself, i.e.
         #               putting it in an include file makes it only active
 
         #       #pragma convert has to be in the source file itself, i.e.
         #               putting it in an include file makes it only active
@@ -132,15 +183,27 @@ make_module()
         CMD="${CMD} SYSIFCOPT(*IFS64IO) OPTION(*INCDIRFIRST)"
         CMD="${CMD} LOCALETYPE(*LOCALE)"
         CMD="${CMD} INCDIR('/qibm/proddata/qadrt/include'"
         CMD="${CMD} SYSIFCOPT(*IFS64IO) OPTION(*INCDIRFIRST)"
         CMD="${CMD} LOCALETYPE(*LOCALE)"
         CMD="${CMD} INCDIR('/qibm/proddata/qadrt/include'"
-        CMD="${CMD} '${TOPDIR}/include/curl' '${TOPDIR}/include'"
-        CMD="${CMD} '${TOPDIR}/packages/OS400' ${INCLUDES})"
+        CMD="${CMD} '${TOPDIR}/include/curl' '${TOPDIR}/include' '${SRCDIR}'"
+        CMD="${CMD} '${TOPDIR}/packages/OS400'"
+
+        if [ "${WITH_ZLIB}" != "0" ]
+        then    CMD="${CMD} '${ZLIB_INCLUDE}'"
+        fi
+
+        CMD="${CMD} ${INCLUDES})"
         CMD="${CMD} TGTCCSID(${TGTCCSID}) TGTRLS(${TGTRLS})"
         CMD="${CMD} OUTPUT(${OUTPUT})"
         CMD="${CMD} OPTIMIZE(${OPTIMIZE})"
         CMD="${CMD} DBGVIEW(${DEBUG})"
 
         CMD="${CMD} TGTCCSID(${TGTCCSID}) TGTRLS(${TGTRLS})"
         CMD="${CMD} OUTPUT(${OUTPUT})"
         CMD="${CMD} OPTIMIZE(${OPTIMIZE})"
         CMD="${CMD} DBGVIEW(${DEBUG})"
 
-        if [ "${3}" ]
-        then    CMD="${CMD} DEFINE(${3})"
+        DEFINES="${3}"
+
+        if [ "${WITH_ZLIB}" != "0" ]
+        then    DEFINES="${DEFINES} HAVE_LIBZ HAVE_ZLIB_H"
+        fi
+
+        if [ "${DEFINES}" ]
+        then    CMD="${CMD} DEFINE(${DEFINES})"
         fi
 
         system "${CMD}"
         fi
 
         system "${CMD}"
@@ -154,11 +217,17 @@ make_module()
 db2_name()
 
 {
 db2_name()
 
 {
-        basename "${1}"                                                 |
-        tr 'a-z-' 'A-Z_'                                                |
-        sed -e 's/\..*//'                                               \
-            -e 's/^CURL_*/C/'                                           \
-            -e 's/^\(.\).*\(.........\)$/\1\2/'
+        if [ "${2}" = 'nomangle' ]
+        then    basename "${1}"                                         |
+                tr 'a-z-' 'A-Z_'                                        |
+                sed -e 's/\..*//'                                       \
+                    -e 's/^\(.\).*\(.........\)$/\1\2/'
+        else    basename "${1}"                                         |
+                tr 'a-z-' 'A-Z_'                                        |
+                sed -e 's/\..*//'                                       \
+                    -e 's/^CURL_*/C/'                                   \
+                    -e 's/^\(.\).*\(.........\)$/\1\2/'
+        fi
 }
 
 
 }
 
 
index 834ee2f..ad72cf4 100644 (file)
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
 #!/bin/sh
 #
-#       Installation of the include files in the OS/400 library.
+#       Installation of the header files in the OS/400 library.
 #
 
 SCRIPTDIR=`dirname "${0}"`
 #
 
 SCRIPTDIR=`dirname "${0}"`
@@ -8,16 +8,16 @@ SCRIPTDIR=`dirname "${0}"`
 cd "${TOPDIR}/include"
 
 
 cd "${TOPDIR}/include"
 
 
-#      Produce the curlbuild.h include file if not yet in distribution (CVS).
+#       Produce the curlbuild.h header file if not yet in distribution (CVS).
 
 if action_needed curl/curlbuild.h
 
 if action_needed curl/curlbuild.h
-then   if action_needed curl/curlbuild.h curl/curlbuild.h.dist
-       then    cp -p curl/curlbuild.h.dist curl/curlbuild.h
-       fi
+then    if action_needed curl/curlbuild.h curl/curlbuild.h.dist
+        then    cp -p curl/curlbuild.h.dist curl/curlbuild.h
+        fi
 fi
 
 
 fi
 
 
-#       Create the OS/400 source program file for the include files.
+#       Create the OS/400 source program file for the header files.
 
 SRCPF="${LIBIFSNAME}/H.FILE"
 
 
 SRCPF="${LIBIFSNAME}/H.FILE"
 
@@ -28,16 +28,25 @@ then    CMD="CRTSRCPF FILE(${TARGETLIB}/H) RCDLEN(112)"
 fi
 
 
 fi
 
 
+#       Create the IFS directory for the header files.
+
+IFSINCLUDE="${IFSDIR}/include/curl"
+
+if action_needed "${IFSINCLUDE}"
+then    mkdir -p "${IFSINCLUDE}"
+fi
+
+
 #       Enumeration values are used as va_arg tagfields, so they MUST be
 #               integers.
 
 copy_hfile()
 
 {
 #       Enumeration values are used as va_arg tagfields, so they MUST be
 #               integers.
 
 copy_hfile()
 
 {
-       destfile="${1}"
-       srcfile="${2}"
-       shift
-       shift
+        destfile="${1}"
+        srcfile="${2}"
+        shift
+        shift
         sed -e '1i\
 #pragma enum(int)\
 ' "${@}" -e '$a\
         sed -e '1i\
 #pragma enum(int)\
 ' "${@}" -e '$a\
@@ -48,23 +57,34 @@ copy_hfile()
 #       Copy the header files.
 
 for HFILE in curl/*.h ${SCRIPTDIR}/ccsidcurl.h
 #       Copy the header files.
 
 for HFILE in curl/*.h ${SCRIPTDIR}/ccsidcurl.h
-do      DEST="${SRCPF}/`db2_name \"${HFILE}\"`.MBR"
+do      case "`basename \"${HFILE}\" .h`" in
+        stdcheaders|typecheck-gcc)
+                continue;;
+        esac
+
+        DEST="${SRCPF}/`db2_name \"${HFILE}\" nomangle`.MBR"
+
         if action_needed "${DEST}" "${HFILE}"
         then    copy_hfile "${DEST}" "${HFILE}"
         if action_needed "${DEST}" "${HFILE}"
         then    copy_hfile "${DEST}" "${HFILE}"
+                IFSDEST="${IFSINCLUDE}/`basename \"${HFILE}\"`"
+                rm -f "${IFSDEST}"
+                ln -s "${DEST}" "${IFSDEST}"
         fi
 done
 
 
         fi
 done
 
 
-#       Copy the ILE/RPG include file, setting-up version number.
+#       Copy the ILE/RPG header file, setting-up version number.
 
 
-        versioned_copy "${SCRIPTDIR}/curl.inc.in" "${SRCPF}/CURL.INC.MBR"
+versioned_copy "${SCRIPTDIR}/curl.inc.in" "${SRCPF}/CURL.INC.MBR"
+rm -f "${IFSINCLUDE}/curl.inc.rpgle"
+ln -s "${SRCPF}/CURL.INC.MBR" "${IFSINCLUDE}/curl.inc.rpgle"
 
 
 
 
-#      Duplicate file H as CURL to support more include path forms.
+#       Duplicate file H as CURL to support more include path forms.
 
 if action_needed "${LIBIFSNAME}/CURL.FILE"
 
 if action_needed "${LIBIFSNAME}/CURL.FILE"
-then   :
-else   system "DLTF FILE(${TARGETLIB}/CURL)"
+then    :
+else    system "DLTF FILE(${TARGETLIB}/CURL)"
 fi
 
 CMD="CRTDUPOBJ OBJ(H) FROMLIB(${TARGETLIB}) OBJTYPE(*FILE) TOLIB(*FROMLIB)"
 fi
 
 CMD="CRTDUPOBJ OBJ(H) FROMLIB(${TARGETLIB}) OBJTYPE(*FILE) TOLIB(*FROMLIB)"
index e2a8708..a4e5059 100644 (file)
@@ -7,13 +7,20 @@ SCRIPTDIR=`dirname "${0}"`
 . "${SCRIPTDIR}/initscript.sh"
 cd "${TOPDIR}/lib"
 
 . "${SCRIPTDIR}/initscript.sh"
 cd "${TOPDIR}/lib"
 
+#       Need to have IFS access to the mih/cipher header file.
+
+if action_needed cipher.mih '/QSYS.LIB/QSYSINC.LIB/MIH.FILE/CIPHER.MBR'
+then    rm -f cipher.mih
+        ln -s '/QSYS.LIB/QSYSINC.LIB/MIH.FILE/CIPHER.MBR' cipher.mih
+fi
+
 
 #      Create and compile the identification source file.
 
 echo '#pragma comment(user, "libcurl version '"${LIBCURL_VERSION}"'")' > os400.c
 echo '#pragma comment(user, __DATE__)' >> os400.c
 echo '#pragma comment(user, __TIME__)' >> os400.c
 
 #      Create and compile the identification source file.
 
 echo '#pragma comment(user, "libcurl version '"${LIBCURL_VERSION}"'")' > os400.c
 echo '#pragma comment(user, __DATE__)' >> os400.c
 echo '#pragma comment(user, __TIME__)' >> os400.c
-echo '#pragma comment(copyright, "Copyright (C) 1998-2013 Daniel Stenberg et al. OS/400 version by P. Monnerat")' >> os400.c
+echo '#pragma comment(copyright, "Copyright (C) 1998-2014 Daniel Stenberg et al. OS/400 version by P. Monnerat")' >> os400.c
 make_module     OS400           os400.c
 LINK=                           # No need to rebuild service program yet.
 MODULES=
 make_module     OS400           os400.c
 LINK=                           # No need to rebuild service program yet.
 MODULES=
@@ -21,21 +28,18 @@ MODULES=
 
 #       Get source list.
 
 
 #       Get source list.
 
-CSOURCES()
-
-{
-        shift                   # Drop the equal sign.
-        CSOURCES="$*"           # Get the file names.
-}
-
-HHEADERS()
-
-{
-        shift                   # Drop the equal sign.
-        HHEADERS="$*"           # Get the file names.
-}
-
-. Makefile.inc
+sed -e ':begin'                                                         \
+    -e '/\\$/{'                                                         \
+    -e 's/\\$/ /'                                                       \
+    -e 'N'                                                              \
+    -e 'bbegin'                                                         \
+    -e '}'                                                              \
+    -e 's/\n//g'                                                        \
+    -e 's/[[:space:]]*$//'                                              \
+    -e 's/^\([A-Za-z][A-Za-z0-9_]*\)[[:space:]]*=[[:space:]]*\(.*\)/\1="\2"/' \
+    -e 's/\$(\([A-Za-z][A-Za-z0-9_]*\))/${\1}/g'                        \
+        < Makefile.inc > tmpscript.sh
+. ./tmpscript.sh
 
 
 #       Compile the sources into modules.
 
 
 #       Compile the sources into modules.
@@ -83,12 +87,12 @@ fi
 
 #       Gather the list of symbols to export.
 
 
 #       Gather the list of symbols to export.
 
-EXPORTS=`grep '^CURL_EXTERN[   ]'                                      \
+EXPORTS=`grep '^CURL_EXTERN[[:space:]]'                                 \
               "${TOPDIR}"/include/curl/*.h                              \
               "${SCRIPTDIR}/ccsidcurl.h"                                |
               "${TOPDIR}"/include/curl/*.h                              \
               "${SCRIPTDIR}/ccsidcurl.h"                                |
-         sed -e 's/^.*CURL_EXTERN[     ]\(.*\)(.*$/\1/'                \
-             -e 's/[   ]*$//'                                          \
-             -e 's/^.*[        ][      ]*//'                           \
+         sed -e 's/^.*CURL_EXTERN[[:space:]]\(.*\)(.*$/\1/'             \
+             -e 's/[[:space:]]*$//'                                     \
+             -e 's/^.*[[:space:]][[:space:]]*//'                        \
              -e 's/^\*//'                                               \
              -e 's/(\(.*\))/\1/'`
 
              -e 's/^\*//'                                               \
              -e 's/(\(.*\))/\1/'`
 
@@ -121,7 +125,11 @@ if [ "${LINK}" ]
 then    CMD="CRTSRVPGM SRVPGM(${TARGETLIB}/${SRVPGM})"
         CMD="${CMD} SRCFILE(${TARGETLIB}/TOOLS) SRCMBR(BNDSRC)"
         CMD="${CMD} MODULE(${TARGETLIB}/OS400)"
 then    CMD="CRTSRVPGM SRVPGM(${TARGETLIB}/${SRVPGM})"
         CMD="${CMD} SRCFILE(${TARGETLIB}/TOOLS) SRCMBR(BNDSRC)"
         CMD="${CMD} MODULE(${TARGETLIB}/OS400)"
-        CMD="${CMD} BNDDIR(${TARGETLIB}/${STATBNDDIR})"
+        CMD="${CMD} BNDDIR(${TARGETLIB}/${STATBNDDIR}"
+        if [ "${WITH_ZLIB}" != 0 ]
+        then    CMD="${CMD} ${ZLIB_LIB}/${ZLIB_BNDDIR}"
+        fi
+        CMD="${CMD})"
         CMD="${CMD} BNDSRVPGM(QADRTTS QGLDCLNT QGLDBRDR)"
         CMD="${CMD} TEXT('curl API library')"
         CMD="${CMD} TGTRLS(${TGTRLS})"
         CMD="${CMD} BNDSRVPGM(QADRTTS QGLDCLNT QGLDBRDR)"
         CMD="${CMD} TEXT('curl API library')"
         CMD="${CMD} TGTRLS(${TGTRLS})"
@@ -160,7 +168,7 @@ then    MODULES=
         #               formdata.c. However, there are some unsatisfied
         #               external references leading in the following
         #               modules to be (recursively) needed.
         #               formdata.c. However, there are some unsatisfied
         #               external references leading in the following
         #               modules to be (recursively) needed.
-        MODULES="${MODULES} EASY STRDUP SSLGEN QSSL HOSTIP HOSTIP4 HOSTIP6"
+        MODULES="${MODULES} EASY STRDUP SSLGEN GSKIT HOSTIP HOSTIP4 HOSTIP6"
         MODULES="${MODULES} URL HASH TRANSFER GETINFO COOKIE SENDF SELECT"
         MODULES="${MODULES} INET_NTOP SHARE HOSTTHRE MULTI LLIST FTP HTTP"
         MODULES="${MODULES} HTTP_DIGES HTTP_CHUNK HTTP_NEGOT TIMEVAL HOSTSYN"
         MODULES="${MODULES} URL HASH TRANSFER GETINFO COOKIE SENDF SELECT"
         MODULES="${MODULES} INET_NTOP SHARE HOSTTHRE MULTI LLIST FTP HTTP"
         MODULES="${MODULES} HTTP_DIGES HTTP_CHUNK HTTP_NEGOT TIMEVAL HOSTSYN"
index cee3ed9..9240b7f 100644 (file)
@@ -28,11 +28,11 @@ eval "`sed -e ': begin'                                                 \
         -e 's/\\\\\\n/ /'                                               \
         -e 'b begin'                                                    \
         -e '}'                                                          \
         -e 's/\\\\\\n/ /'                                               \
         -e 'b begin'                                                    \
         -e '}'                                                          \
-        -e '/^[A-Za-z_][A-Za-z0-9_]*[  ]*[=]/b keep'                   \
+        -e '/^[A-Za-z_][A-Za-z0-9_]*[[:space:]]*[=]/b keep'             \
         -e 'd'                                                          \
         -e ': keep'                                                     \
         -e 'd'                                                          \
         -e ': keep'                                                     \
-        -e 's/[        ]*=[    ]*/=/'                                  \
-        -e 's/=\\(.*[^         ]\\)[   ]*$/=\\"\\1\\"/'                        \
+        -e 's/[[:space:]]*=[[:space:]]*/=/'                             \
+        -e 's/=\\(.*[^[:space:]]\\)[[:space:]]*$/=\\"\\1\\"/'           \
         -e 's/\\$(\\([^)]*\\))/${\\1}/g'                                \
         < Makefile.inc`"
 
         -e 's/\\$(\\([^)]*\\))/${\\1}/g'                                \
         < Makefile.inc`"
 
index ab0c4fb..caeaa95 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -38,8 +38,8 @@
 #include <qadrt.h>
 #include <errno.h>
 
 #include <qadrt.h>
 #include <errno.h>
 
-#ifdef USE_QSOSSL
-#include <qsossl.h>
+#ifdef HAVE_ZLIB_H
+#include <zlib.h>
 #endif
 
 #ifdef USE_GSKIT
 #endif
 
 #ifdef USE_GSKIT
@@ -94,14 +94,12 @@ static void
 thdbufdestroy(void * private)
 
 {
 thdbufdestroy(void * private)
 
 {
-  localkey_t i;
-  buffer_t * p;
+  if(private) {
+    buffer_t * p = (buffer_t *) private;
+    localkey_t i;
 
 
-  if (private) {
-    p = (buffer_t *) private;
-
-    for (i = (localkey_t) 0; i < LK_LAST; i++) {
-      if (p->buf)
+    for(i = (localkey_t) 0; i < LK_LAST; i++) {
+      if(p->buf)
         free(p->buf);
 
       p++;
         free(p->buf);
 
       p++;
@@ -116,13 +114,13 @@ static void
 terminate(void)
 
 {
 terminate(void)
 
 {
-  if (Curl_thread_buffer == buffer_threaded) {
+  if(Curl_thread_buffer == buffer_threaded) {
     locbufs = pthread_getspecific(thdkey);
     pthread_setspecific(thdkey, (void *) NULL);
     pthread_key_delete(thdkey);
     }
 
     locbufs = pthread_getspecific(thdkey);
     pthread_setspecific(thdkey, (void *) NULL);
     pthread_key_delete(thdkey);
     }
 
-  if (Curl_thread_buffer != buffer_undef) {
+  if(Curl_thread_buffer != buffer_undef) {
     thdbufdestroy((void *) locbufs);
     locbufs = (buffer_t *) NULL;
     }
     thdbufdestroy((void *) locbufs);
     locbufs = (buffer_t *) NULL;
     }
@@ -140,31 +138,31 @@ get_buffer(buffer_t * buf, long size)
   /* If `size' >= 0, make sure buffer at `buf' is at least `size'-byte long.
      Return the buffer address. */
 
   /* If `size' >= 0, make sure buffer at `buf' is at least `size'-byte long.
      Return the buffer address. */
 
-  if (size < 0)
+  if(size < 0)
     return buf->buf;
 
     return buf->buf;
 
-  if (!buf->buf) {
-    if ((buf->buf = malloc(size)))
+  if(!buf->buf) {
+    if((buf->buf = malloc(size)))
       buf->size = size;
 
     return buf->buf;
     }
 
       buf->size = size;
 
     return buf->buf;
     }
 
-  if ((unsigned long) size <= buf->size) {
+  if((unsigned long) size <= buf->size) {
     /* Shorten the buffer only if it frees a significant byte count. This
        avoids some realloc() overhead. */
 
     /* Shorten the buffer only if it frees a significant byte count. This
        avoids some realloc() overhead. */
 
-    if (buf->size - size < MIN_BYTE_GAIN)
+    if(buf->size - size < MIN_BYTE_GAIN)
       return buf->buf;
     }
 
   /* Resize the buffer. */
 
       return buf->buf;
     }
 
   /* Resize the buffer. */
 
-  if ((cp = realloc(buf->buf, size))) {
+  if((cp = realloc(buf->buf, size))) {
     buf->buf = cp;
     buf->size = size;
     }
     buf->buf = cp;
     buf->size = size;
     }
-  else if (size <= buf->size)
+  else if(size <= buf->size)
     cp = buf->buf;
 
   return cp;
     cp = buf->buf;
 
   return cp;
@@ -191,16 +189,16 @@ buffer_threaded(localkey_t key, long size)
 
   bufs = (buffer_t *) pthread_getspecific(thdkey);
 
 
   bufs = (buffer_t *) pthread_getspecific(thdkey);
 
-  if (!bufs) {
-    if (size < 0)
+  if(!bufs) {
+    if(size < 0)
       return (char *) NULL;             /* No buffer yet. */
 
     /* Allocate buffer descriptors for the current thread. */
 
       return (char *) NULL;             /* No buffer yet. */
 
     /* Allocate buffer descriptors for the current thread. */
 
-    if (!(bufs = calloc((size_t) LK_LAST, sizeof *bufs)))
+    if(!(bufs = calloc((size_t) LK_LAST, sizeof *bufs)))
       return (char *) NULL;
 
       return (char *) NULL;
 
-    if (pthread_setspecific(thdkey, (void *) bufs)) {
+    if(pthread_setspecific(thdkey, (void *) bufs)) {
       free(bufs);
       return (char *) NULL;
       }
       free(bufs);
       return (char *) NULL;
       }
@@ -222,11 +220,10 @@ buffer_undef(localkey_t key, long size)
 
   /* Determine if we can use pthread-specific data. */
 
 
   /* Determine if we can use pthread-specific data. */
 
-  if (Curl_thread_buffer == buffer_undef) {     /* If unchanged during lock. */
-    if (!pthread_key_create(&thdkey, thdbufdestroy))
+  if(Curl_thread_buffer == buffer_undef) {      /* If unchanged during lock. */
+    if(!pthread_key_create(&thdkey, thdbufdestroy))
       Curl_thread_buffer = buffer_threaded;
       Curl_thread_buffer = buffer_threaded;
-    else if (!(locbufs = calloc((size_t) LK_LAST,
-                                             sizeof *locbufs))) {
+    else if(!(locbufs = calloc((size_t) LK_LAST, sizeof *locbufs))) {
       pthread_mutex_unlock(&mutex);
       return (char *) NULL;
       }
       pthread_mutex_unlock(&mutex);
       return (char *) NULL;
       }
@@ -241,6 +238,28 @@ buffer_undef(localkey_t key, long size)
 }
 
 
 }
 
 
+static char *
+set_thread_string(localkey_t key, const char * s)
+
+{
+  int i;
+  char * cp;
+
+  if(!s)
+    return (char *) NULL;
+
+  i = strlen(s) + 1;
+  cp = Curl_thread_buffer(key, MAX_CONV_EXPANSION * i + 1);
+
+  if(cp) {
+    i = QadrtConvertE2A(cp, s, MAX_CONV_EXPANSION * i, i);
+    cp[i] = '\0';
+  }
+
+  return cp;
+}
+
+
 int
 Curl_getnameinfo_a(const struct sockaddr * sa, curl_socklen_t salen,
               char * nodename, curl_socklen_t nodenamelen,
 int
 Curl_getnameinfo_a(const struct sockaddr * sa, curl_socklen_t salen,
               char * nodename, curl_socklen_t nodenamelen,
@@ -256,13 +275,13 @@ Curl_getnameinfo_a(const struct sockaddr * sa, curl_socklen_t salen,
   enodename = (char *) NULL;
   eservname = (char *) NULL;
 
   enodename = (char *) NULL;
   eservname = (char *) NULL;
 
-  if (nodename && nodenamelen)
-    if (!(enodename = malloc(nodenamelen)))
+  if(nodename && nodenamelen)
+    if(!(enodename = malloc(nodenamelen)))
       return EAI_MEMORY;
 
       return EAI_MEMORY;
 
-  if (servname && servnamelen)
-    if (!(eservname = malloc(servnamelen))) {
-      if (enodename)
+  if(servname && servnamelen)
+    if(!(eservname = malloc(servnamelen))) {
+      if(enodename)
         free(enodename);
 
       return EAI_MEMORY;
         free(enodename);
 
       return EAI_MEMORY;
@@ -271,24 +290,24 @@ Curl_getnameinfo_a(const struct sockaddr * sa, curl_socklen_t salen,
   status = getnameinfo(sa, salen, enodename, nodenamelen,
                        eservname, servnamelen, flags);
 
   status = getnameinfo(sa, salen, enodename, nodenamelen,
                        eservname, servnamelen, flags);
 
-  if (!status) {
-    if (enodename) {
+  if(!status) {
+    if(enodename) {
       i = QadrtConvertE2A(nodename, enodename,
         nodenamelen - 1, strlen(enodename));
       nodename[i] = '\0';
       }
 
       i = QadrtConvertE2A(nodename, enodename,
         nodenamelen - 1, strlen(enodename));
       nodename[i] = '\0';
       }
 
-    if (eservname) {
+    if(eservname) {
       i = QadrtConvertE2A(servname, eservname,
         servnamelen - 1, strlen(eservname));
       servname[i] = '\0';
       }
     }
 
       i = QadrtConvertE2A(servname, eservname,
         servnamelen - 1, strlen(eservname));
       servname[i] = '\0';
       }
     }
 
-  if (enodename)
+  if(enodename)
     free(enodename);
 
     free(enodename);
 
-  if (eservname)
+  if(eservname)
     free(eservname);
 
   return status;
     free(eservname);
 
   return status;
@@ -309,21 +328,21 @@ Curl_getaddrinfo_a(const char * nodename, const char * servname,
   enodename = (char *) NULL;
   eservname = (char *) NULL;
 
   enodename = (char *) NULL;
   eservname = (char *) NULL;
 
-  if (nodename) {
+  if(nodename) {
     i = strlen(nodename);
 
     i = strlen(nodename);
 
-    if (!(enodename = malloc(i + 1)))
+    if(!(enodename = malloc(i + 1)))
       return EAI_MEMORY;
 
     i = QadrtConvertA2E(enodename, nodename, i, i);
     enodename[i] = '\0';
     }
 
       return EAI_MEMORY;
 
     i = QadrtConvertA2E(enodename, nodename, i, i);
     enodename[i] = '\0';
     }
 
-  if (servname) {
+  if(servname) {
     i = strlen(servname);
 
     i = strlen(servname);
 
-    if (!(eservname = malloc(i + 1))) {
-      if (enodename)
+    if(!(eservname = malloc(i + 1))) {
+      if(enodename)
         free(enodename);
 
       return EAI_MEMORY;
         free(enodename);
 
       return EAI_MEMORY;
@@ -335,127 +354,16 @@ Curl_getaddrinfo_a(const char * nodename, const char * servname,
 
   status = getaddrinfo(enodename, eservname, hints, res);
 
 
   status = getaddrinfo(enodename, eservname, hints, res);
 
-  if (enodename)
+  if(enodename)
     free(enodename);
 
     free(enodename);
 
-  if (eservname)
+  if(eservname)
     free(eservname);
 
   return status;
 }
 
 
     free(eservname);
 
   return status;
 }
 
 
-#ifdef USE_QSOSSL
-
-/* ASCII wrappers for the SSL procedures. */
-
-int
-Curl_SSL_Init_Application_a(SSLInitApp * init_app)
-
-{
-  int rc;
-  unsigned int i;
-  SSLInitApp ia;
-
-  if (!init_app || !init_app->applicationID || !init_app->applicationIDLen)
-    return SSL_Init_Application(init_app);
-
-  memcpy((char *) &ia, (char *) init_app, sizeof ia);
-  i = ia.applicationIDLen;
-
-  if (!(ia.applicationID = malloc(i + 1))) {
-    errno = ENOMEM;
-    return SSL_ERROR_IO;
-    }
-
-  QadrtConvertA2E(ia.applicationID, init_app->applicationID, i, i);
-  ia.applicationID[i] = '\0';
-  rc = SSL_Init_Application(&ia);
-  free(ia.applicationID);
-  init_app->localCertificateLen = ia.localCertificateLen;
-  init_app->sessionType = ia.sessionType;
-  return rc;
-}
-
-
-int
-Curl_SSL_Init_a(SSLInit * init)
-
-{
-  int rc;
-  unsigned int i;
-  SSLInit ia;
-
-  if (!init || (!init->keyringFileName && !init->keyringPassword))
-    return SSL_Init(init);
-
-  memcpy((char *) &ia, (char *) init, sizeof ia);
-
-  if (ia.keyringFileName) {
-    i = strlen(ia.keyringFileName);
-
-    if (!(ia.keyringFileName = malloc(i + 1))) {
-      errno = ENOMEM;
-      return SSL_ERROR_IO;
-      }
-
-    QadrtConvertA2E(ia.keyringFileName, init->keyringFileName, i, i);
-    ia.keyringFileName[i] = '\0';
-    }
-
-  if (ia.keyringPassword) {
-    i = strlen(ia.keyringPassword);
-
-    if (!(ia.keyringPassword = malloc(i + 1))) {
-      if (ia.keyringFileName)
-        free(ia.keyringFileName);
-
-      errno = ENOMEM;
-      return SSL_ERROR_IO;
-      }
-
-    QadrtConvertA2E(ia.keyringPassword, init->keyringPassword, i, i);
-    ia.keyringPassword[i] = '\0';
-    }
-
-  rc = SSL_Init(&ia);
-
-  if (ia.keyringFileName)
-    free(ia.keyringFileName);
-
-  if (ia.keyringPassword)
-    free(ia.keyringPassword);
-
-  return rc;
-}
-
-
-char *
-Curl_SSL_Strerror_a(int sslreturnvalue, SSLErrorMsg * serrmsgp)
-
-{
-  int i;
-  char * cp;
-  char * cp2;
-
-  cp = SSL_Strerror(sslreturnvalue, serrmsgp);
-
-  if (!cp)
-    return cp;
-
-  i = strlen(cp);
-
-  if (!(cp2 = Curl_thread_buffer(LK_SSL_ERROR, MAX_CONV_EXPANSION * i + 1)))
-    return cp2;
-
-  i = QadrtConvertE2A(cp2, cp, MAX_CONV_EXPANSION * i, i);
-  cp2[i] = '\0';
-  return cp2;
-}
-
-#endif /* USE_QSOSSL */
-
-
 #ifdef USE_GSKIT
 
 /* ASCII wrappers for the GSKit procedures. */
 #ifdef USE_GSKIT
 
 /* ASCII wrappers for the GSKit procedures. */
@@ -534,7 +442,7 @@ gsk_free_handle(struct Curl_gsk_descriptor * p)
 {
   struct gskstrlist * q;
 
 {
   struct gskstrlist * q;
 
-  while ((q = p->strlist)) {
+  while((q = p->strlist)) {
     p->strlist = q;
     free((void *) q->asciistr);
     free(q);
     p->strlist = q;
     free((void *) q->asciistr);
     free(q);
@@ -555,7 +463,7 @@ Curl_gsk_environment_close(gsk_handle * my_env_handle)
   if(!*my_env_handle)
     return GSK_INVALID_HANDLE;
   p = (struct Curl_gsk_descriptor *) *my_env_handle;
   if(!*my_env_handle)
     return GSK_INVALID_HANDLE;
   p = (struct Curl_gsk_descriptor *) *my_env_handle;
-  if ((rc = gsk_environment_close(&p->h)) == GSK_OK) {
+  if((rc = gsk_environment_close(&p->h)) == GSK_OK) {
     gsk_free_handle(p);
     *my_env_handle = (gsk_handle) NULL;
   }
     gsk_free_handle(p);
     *my_env_handle = (gsk_handle) NULL;
   }
@@ -575,7 +483,7 @@ Curl_gsk_secure_soc_close(gsk_handle * my_session_handle)
   if(!*my_session_handle)
     return GSK_INVALID_HANDLE;
   p = (struct Curl_gsk_descriptor *) *my_session_handle;
   if(!*my_session_handle)
     return GSK_INVALID_HANDLE;
   p = (struct Curl_gsk_descriptor *) *my_session_handle;
-  if ((rc = gsk_secure_soc_close(&p->h)) == GSK_OK) {
+  if((rc = gsk_secure_soc_close(&p->h)) == GSK_OK) {
     gsk_free_handle(p);
     *my_session_handle = (gsk_handle) NULL;
   }
     gsk_free_handle(p);
     *my_session_handle = (gsk_handle) NULL;
   }
@@ -627,7 +535,7 @@ Curl_gsk_attribute_set_buffer_a(gsk_handle my_gsk_handle, GSK_BUF_ID bufID,
   p = (struct Curl_gsk_descriptor *) my_gsk_handle;
   if(!bufSize)
     bufSize = strlen(buffer);
   p = (struct Curl_gsk_descriptor *) my_gsk_handle;
   if(!bufSize)
     bufSize = strlen(buffer);
-  if (!(ebcdicbuf = malloc(bufSize + 1)))
+  if(!(ebcdicbuf = malloc(bufSize + 1)))
       return GSK_INSUFFICIENT_STORAGE;
   QadrtConvertA2E(ebcdicbuf, buffer, bufSize, bufSize);
   ebcdicbuf[bufSize] = '\0';
       return GSK_INSUFFICIENT_STORAGE;
   QadrtConvertA2E(ebcdicbuf, buffer, bufSize, bufSize);
   ebcdicbuf[bufSize] = '\0';
@@ -689,7 +597,7 @@ cachestring(struct Curl_gsk_descriptor * p,
   char * asciibuf;
   struct gskstrlist * sp;
 
   char * asciibuf;
   struct gskstrlist * sp;
 
-  for (sp = p->strlist; sp; sp = sp->next)
+  for(sp = p->strlist; sp; sp = sp->next)
     if(sp->ebcdicstr == ebcdicbuf)
       break;
   if(!sp) {
     if(sp->ebcdicstr == ebcdicbuf)
       break;
   if(!sp) {
@@ -726,7 +634,7 @@ Curl_gsk_attribute_get_buffer_a(gsk_handle my_gsk_handle, GSK_BUF_ID bufID,
   if(!buffer || !bufSize)
     return GSK_OS400_ERROR_INVALID_POINTER;
   p = (struct Curl_gsk_descriptor *) my_gsk_handle;
   if(!buffer || !bufSize)
     return GSK_OS400_ERROR_INVALID_POINTER;
   p = (struct Curl_gsk_descriptor *) my_gsk_handle;
-  if ((rc = gsk_attribute_get_buffer(p->h, bufID, &mybuf, &mylen)) != GSK_OK)
+  if((rc = gsk_attribute_get_buffer(p->h, bufID, &mybuf, &mylen)) != GSK_OK)
     return rc;
   if((rc = cachestring(p, mybuf, mylen, buffer)) == GSK_OK)
     *bufSize = mylen;
     return rc;
   if((rc = cachestring(p, mybuf, mylen, buffer)) == GSK_OK)
     *bufSize = mylen;
@@ -825,23 +733,7 @@ const char *
 Curl_gsk_strerror_a(int gsk_return_value)
 
 {
 Curl_gsk_strerror_a(int gsk_return_value)
 
 {
-  int i;
-  const char * cp;
-  char * cp2;
-
-  cp = gsk_strerror(gsk_return_value);
-
-  if (!cp)
-    return cp;
-
-  i = strlen(cp);
-
-  if (!(cp2 = Curl_thread_buffer(LK_GSK_ERROR, MAX_CONV_EXPANSION * i + 1)))
-    return cp2;
-
-  i = QadrtConvertE2A(cp2, cp, MAX_CONV_EXPANSION * i, i);
-  cp2[i] = '\0';
-  return cp2;
+  return set_thread_string(LK_GSK_ERROR, gsk_strerror(gsk_return_value));
 }
 
 int
 }
 
 int
@@ -878,11 +770,11 @@ Curl_gss_convert_in_place(OM_uint32 * minor_status, gss_buffer_t buf)
 
   i = buf->length;
 
 
   i = buf->length;
 
-  if (i) {
-    if (!(t = malloc(i))) {
+  if(i) {
+    if(!(t = malloc(i))) {
       gss_release_buffer(minor_status, buf);
 
       gss_release_buffer(minor_status, buf);
 
-      if (minor_status)
+      if(minor_status)
         *minor_status = ENOMEM;
 
       return -1;
         *minor_status = ENOMEM;
 
       return -1;
@@ -906,14 +798,14 @@ Curl_gss_import_name_a(OM_uint32 * minor_status, gss_buffer_t in_name,
   unsigned int i;
   gss_buffer_desc in;
 
   unsigned int i;
   gss_buffer_desc in;
 
-  if (!in_name || !in_name->value || !in_name->length)
+  if(!in_name || !in_name->value || !in_name->length)
     return gss_import_name(minor_status, in_name, in_name_type, out_name);
 
   memcpy((char *) &in, (char *) in_name, sizeof in);
   i = in.length;
 
     return gss_import_name(minor_status, in_name, in_name_type, out_name);
 
   memcpy((char *) &in, (char *) in_name, sizeof in);
   i = in.length;
 
-  if (!(in.value = malloc(i + 1))) {
-    if (minor_status)
+  if(!(in.value = malloc(i + 1))) {
+    if(minor_status)
       *minor_status = ENOMEM;
 
     return GSS_S_FAILURE;
       *minor_status = ENOMEM;
 
     return GSS_S_FAILURE;
@@ -938,15 +830,15 @@ Curl_gss_display_status_a(OM_uint32 * minor_status, OM_uint32 status_value,
   rc = gss_display_status(minor_status, status_value, status_type,
                               mech_type, message_context, status_string);
 
   rc = gss_display_status(minor_status, status_value, status_type,
                               mech_type, message_context, status_string);
 
-  if (rc != GSS_S_COMPLETE || !status_string ||
-      !status_string->length || !status_string->value)
+  if(rc != GSS_S_COMPLETE || !status_string ||
+     !status_string->length || !status_string->value)
     return rc;
 
   /* No way to allocate a buffer here, because it will be released by
      gss_release_buffer(). The solution is to overwrite the EBCDIC buffer
      with ASCII to return it. */
 
     return rc;
 
   /* No way to allocate a buffer here, because it will be released by
      gss_release_buffer(). The solution is to overwrite the EBCDIC buffer
      with ASCII to return it. */
 
-  if (Curl_gss_convert_in_place(minor_status, status_string))
+  if(Curl_gss_convert_in_place(minor_status, status_string))
     return GSS_S_FAILURE;
 
   return rc;
     return GSS_S_FAILURE;
 
   return rc;
@@ -954,7 +846,8 @@ Curl_gss_display_status_a(OM_uint32 * minor_status, OM_uint32 status_value,
 
 
 OM_uint32
 
 
 OM_uint32
-Curl_gss_init_sec_context_a(OM_uint32 * minor_status, gss_cred_id_t cred_handle,
+Curl_gss_init_sec_context_a(OM_uint32 * minor_status,
+                            gss_cred_id_t cred_handle,
                             gss_ctx_id_t * context_handle,
                             gss_name_t target_name, gss_OID mech_type,
                             gss_flags_t req_flags, OM_uint32 time_req,
                             gss_ctx_id_t * context_handle,
                             gss_name_t target_name, gss_OID mech_type,
                             gss_flags_t req_flags, OM_uint32 time_req,
@@ -972,12 +865,12 @@ Curl_gss_init_sec_context_a(OM_uint32 * minor_status, gss_cred_id_t cred_handle,
 
   in.value = NULL;
 
 
   in.value = NULL;
 
-  if ((inp = input_token))
-    if (inp->length && inp->value) {
+  if((inp = input_token))
+    if(inp->length && inp->value) {
       i = inp->length;
 
       i = inp->length;
 
-      if (!(in.value = malloc(i + 1))) {
-        if (minor_status)
+      if(!(in.value = malloc(i + 1))) {
+        if(minor_status)
           *minor_status = ENOMEM;
 
         return GSS_S_FAILURE;
           *minor_status = ENOMEM;
 
         return GSS_S_FAILURE;
@@ -994,10 +887,10 @@ Curl_gss_init_sec_context_a(OM_uint32 * minor_status, gss_cred_id_t cred_handle,
                              input_chan_bindings, inp, actual_mech_type,
                              output_token, ret_flags, time_rec);
 
                              input_chan_bindings, inp, actual_mech_type,
                              output_token, ret_flags, time_rec);
 
-  if (in.value)
+  if(in.value)
     free(in.value);
 
     free(in.value);
 
-  if (rc != GSS_S_COMPLETE || !output_token ||
+  if(rc != GSS_S_COMPLETE || !output_token ||
       !output_token->length || !output_token->value)
     return rc;
 
       !output_token->length || !output_token->value)
     return rc;
 
@@ -1005,7 +898,7 @@ Curl_gss_init_sec_context_a(OM_uint32 * minor_status, gss_cred_id_t cred_handle,
      gss_release_buffer(). The solution is to overwrite the EBCDIC buffer
      with ASCII to return it. */
 
      gss_release_buffer(). The solution is to overwrite the EBCDIC buffer
      with ASCII to return it. */
 
-  if (Curl_gss_convert_in_place(minor_status, output_token))
+  if(Curl_gss_convert_in_place(minor_status, output_token))
     return GSS_S_FAILURE;
 
   return rc;
     return GSS_S_FAILURE;
 
   return rc;
@@ -1022,7 +915,7 @@ Curl_gss_delete_sec_context_a(OM_uint32 * minor_status,
 
   rc = gss_delete_sec_context(minor_status, context_handle, output_token);
 
 
   rc = gss_delete_sec_context(minor_status, context_handle, output_token);
 
-  if (rc != GSS_S_COMPLETE || !output_token ||
+  if(rc != GSS_S_COMPLETE || !output_token ||
       !output_token->length || !output_token->value)
     return rc;
 
       !output_token->length || !output_token->value)
     return rc;
 
@@ -1030,7 +923,7 @@ Curl_gss_delete_sec_context_a(OM_uint32 * minor_status,
      gss_release_buffer(). The solution is to overwrite the EBCDIC buffer
      with ASCII to return it. */
 
      gss_release_buffer(). The solution is to overwrite the EBCDIC buffer
      with ASCII to return it. */
 
-  if (Curl_gss_convert_in_place(minor_status, output_token))
+  if(Curl_gss_convert_in_place(minor_status, output_token))
     return GSS_S_FAILURE;
 
   return rc;
     return GSS_S_FAILURE;
 
   return rc;
@@ -1051,12 +944,12 @@ Curl_ldap_init_a(char * host, int port)
   char * ehost;
   void * result;
 
   char * ehost;
   void * result;
 
-  if (!host)
+  if(!host)
     return (void *) ldap_init(host, port);
 
   i = strlen(host);
 
     return (void *) ldap_init(host, port);
 
   i = strlen(host);
 
-  if (!(ehost = malloc(i + 1)))
+  if(!(ehost = malloc(i + 1)))
     return (void *) NULL;
 
   QadrtConvertA2E(ehost, host, i, i);
     return (void *) NULL;
 
   QadrtConvertA2E(ehost, host, i, i);
@@ -1078,21 +971,21 @@ Curl_ldap_simple_bind_s_a(void * ld, char * dn, char * passwd)
   edn = (char *) NULL;
   epasswd = (char *) NULL;
 
   edn = (char *) NULL;
   epasswd = (char *) NULL;
 
-  if (dn) {
+  if(dn) {
     i = strlen(dn);
 
     i = strlen(dn);
 
-    if (!(edn = malloc(i + 1)))
+    if(!(edn = malloc(i + 1)))
       return LDAP_NO_MEMORY;
 
     QadrtConvertA2E(edn, dn, i, i);
     edn[i] = '\0';
     }
 
       return LDAP_NO_MEMORY;
 
     QadrtConvertA2E(edn, dn, i, i);
     edn[i] = '\0';
     }
 
-  if (passwd) {
+  if(passwd) {
     i = strlen(passwd);
 
     i = strlen(passwd);
 
-    if (!(epasswd = malloc(i + 1))) {
-      if (edn)
+    if(!(epasswd = malloc(i + 1))) {
+      if(edn)
         free(edn);
 
       return LDAP_NO_MEMORY;
         free(edn);
 
       return LDAP_NO_MEMORY;
@@ -1104,10 +997,10 @@ Curl_ldap_simple_bind_s_a(void * ld, char * dn, char * passwd)
 
   i = ldap_simple_bind_s(ld, edn, epasswd);
 
 
   i = ldap_simple_bind_s(ld, edn, epasswd);
 
-  if (epasswd)
+  if(epasswd)
     free(epasswd);
 
     free(epasswd);
 
-  if (edn)
+  if(edn)
     free(edn);
 
   return i;
     free(edn);
 
   return i;
@@ -1131,10 +1024,10 @@ Curl_ldap_search_s_a(void * ld, char * base, int scope, char * filter,
   eattrs = (char * *) NULL;
   status = LDAP_SUCCESS;
 
   eattrs = (char * *) NULL;
   status = LDAP_SUCCESS;
 
-  if (base) {
+  if(base) {
     i = strlen(base);
 
     i = strlen(base);
 
-    if (!(ebase = malloc(i + 1)))
+    if(!(ebase = malloc(i + 1)))
       status = LDAP_NO_MEMORY;
     else {
       QadrtConvertA2E(ebase, base, i, i);
       status = LDAP_NO_MEMORY;
     else {
       QadrtConvertA2E(ebase, base, i, i);
@@ -1142,10 +1035,10 @@ Curl_ldap_search_s_a(void * ld, char * base, int scope, char * filter,
       }
     }
 
       }
     }
 
-  if (filter && status == LDAP_SUCCESS) {
+  if(filter && status == LDAP_SUCCESS) {
     i = strlen(filter);
 
     i = strlen(filter);
 
-    if (!(efilter = malloc(i + 1)))
+    if(!(efilter = malloc(i + 1)))
       status = LDAP_NO_MEMORY;
     else {
       QadrtConvertA2E(efilter, filter, i, i);
       status = LDAP_NO_MEMORY;
     else {
       QadrtConvertA2E(efilter, filter, i, i);
@@ -1153,17 +1046,17 @@ Curl_ldap_search_s_a(void * ld, char * base, int scope, char * filter,
       }
     }
 
       }
     }
 
-  if (attrs && status == LDAP_SUCCESS) {
-    for (i = 0; attrs[i++];)
+  if(attrs && status == LDAP_SUCCESS) {
+    for(i = 0; attrs[i++];)
       ;
 
       ;
 
-    if (!(eattrs = calloc(i, sizeof *eattrs)))
+    if(!(eattrs = calloc(i, sizeof *eattrs)))
       status = LDAP_NO_MEMORY;
     else {
       status = LDAP_NO_MEMORY;
     else {
-      for (j = 0; attrs[j]; j++) {
+      for(j = 0; attrs[j]; j++) {
         i = strlen(attrs[j]);
 
         i = strlen(attrs[j]);
 
-        if (!(eattrs[j] = malloc(i + 1))) {
+        if(!(eattrs[j] = malloc(i + 1))) {
           status = LDAP_NO_MEMORY;
           break;
           }
           status = LDAP_NO_MEMORY;
           break;
           }
@@ -1174,22 +1067,22 @@ Curl_ldap_search_s_a(void * ld, char * base, int scope, char * filter,
       }
     }
 
       }
     }
 
-  if (status == LDAP_SUCCESS)
+  if(status == LDAP_SUCCESS)
     status = ldap_search_s(ld, ebase? ebase: "", scope,
                            efilter? efilter: "(objectclass=*)",
                            eattrs, attrsonly, res);
 
     status = ldap_search_s(ld, ebase? ebase: "", scope,
                            efilter? efilter: "(objectclass=*)",
                            eattrs, attrsonly, res);
 
-  if (eattrs) {
-    for (j = 0; eattrs[j]; j++)
+  if(eattrs) {
+    for(j = 0; eattrs[j]; j++)
       free(eattrs[j]);
 
     free(eattrs);
     }
 
       free(eattrs[j]);
 
     free(eattrs);
     }
 
-  if (efilter)
+  if(efilter)
     free(efilter);
 
     free(efilter);
 
-  if (ebase)
+  if(ebase)
     free(ebase);
 
   return status;
     free(ebase);
 
   return status;
@@ -1200,16 +1093,15 @@ struct berval * *
 Curl_ldap_get_values_len_a(void * ld, LDAPMessage * entry, const char * attr)
 
 {
 Curl_ldap_get_values_len_a(void * ld, LDAPMessage * entry, const char * attr)
 
 {
-  int i;
   char * cp;
   struct berval * * result;
 
   cp = (char *) NULL;
 
   char * cp;
   struct berval * * result;
 
   cp = (char *) NULL;
 
-  if (attr) {
-    i = strlen(attr);
+  if(attr) {
+    int i = strlen(attr);
 
 
-    if (!(cp = malloc(i + 1))) {
+    if(!(cp = malloc(i + 1))) {
       ldap_set_lderrno(ld, LDAP_NO_MEMORY, NULL,
                        ldap_err2string(LDAP_NO_MEMORY));
       return (struct berval * *) NULL;
       ldap_set_lderrno(ld, LDAP_NO_MEMORY, NULL,
                        ldap_err2string(LDAP_NO_MEMORY));
       return (struct berval * *) NULL;
@@ -1221,11 +1113,11 @@ Curl_ldap_get_values_len_a(void * ld, LDAPMessage * entry, const char * attr)
 
   result = ldap_get_values_len(ld, entry, cp);
 
 
   result = ldap_get_values_len(ld, entry, cp);
 
-  if (cp)
+  if(cp)
     free(cp);
 
     free(cp);
 
-  /* Result data are binary in nature, so they haven't been converted to EBCDIC.
-     Therefore do not convert. */
+  /* Result data are binary in nature, so they haven't been
+     converted to EBCDIC. Therefore do not convert. */
 
   return result;
 }
 
   return result;
 }
@@ -1235,23 +1127,7 @@ char *
 Curl_ldap_err2string_a(int error)
 
 {
 Curl_ldap_err2string_a(int error)
 
 {
-  int i;
-  char * cp;
-  char * cp2;
-
-  cp = ldap_err2string(error);
-
-  if (!cp)
-    return cp;
-
-  i = strlen(cp);
-
-  if (!(cp2 = Curl_thread_buffer(LK_LDAP_ERROR, MAX_CONV_EXPANSION * i + 1)))
-    return cp2;
-
-  i = QadrtConvertE2A(cp2, cp, MAX_CONV_EXPANSION * i, i);
-  cp2[i] = '\0';
-  return cp2;
+  return set_thread_string(LK_LDAP_ERROR, ldap_err2string(error));
 }
 
 
 }
 
 
@@ -1265,12 +1141,12 @@ Curl_ldap_get_dn_a(void * ld, LDAPMessage * entry)
 
   cp = ldap_get_dn(ld, entry);
 
 
   cp = ldap_get_dn(ld, entry);
 
-  if (!cp)
+  if(!cp)
     return cp;
 
   i = strlen(cp);
 
     return cp;
 
   i = strlen(cp);
 
-  if (!(cp2 = malloc(i + 1)))
+  if(!(cp2 = malloc(i + 1)))
     return cp2;
 
   QadrtConvertE2A(cp2, cp, i, i);
     return cp2;
 
   QadrtConvertE2A(cp2, cp, i, i);
@@ -1297,12 +1173,12 @@ Curl_ldap_first_attribute_a(void * ld,
 
   cp = ldap_first_attribute(ld, entry, berptr);
 
 
   cp = ldap_first_attribute(ld, entry, berptr);
 
-  if (!cp)
+  if(!cp)
     return cp;
 
   i = strlen(cp);
 
     return cp;
 
   i = strlen(cp);
 
-  if (!(cp2 = malloc(i + 1)))
+  if(!(cp2 = malloc(i + 1)))
     return cp2;
 
   QadrtConvertE2A(cp2, cp, i, i);
     return cp2;
 
   QadrtConvertE2A(cp2, cp, i, i);
@@ -1329,12 +1205,12 @@ Curl_ldap_next_attribute_a(void * ld,
 
   cp = ldap_next_attribute(ld, entry, berptr);
 
 
   cp = ldap_next_attribute(ld, entry, berptr);
 
-  if (!cp)
+  if(!cp)
     return cp;
 
   i = strlen(cp);
 
     return cp;
 
   i = strlen(cp);
 
-  if (!(cp2 = malloc(i + 1)))
+  if(!(cp2 = malloc(i + 1)))
     return cp2;
 
   QadrtConvertE2A(cp2, cp, i, i);
     return cp2;
 
   QadrtConvertE2A(cp2, cp, i, i);
@@ -1364,8 +1240,8 @@ convert_sockaddr(struct sockaddr_storage * dstaddr,
 
   /* Convert a socket address into job CCSID, if needed. */
 
 
   /* Convert a socket address into job CCSID, if needed. */
 
-  if (!srcaddr || srclen < offsetof(struct sockaddr, sa_family) +
-      sizeof srcaddr->sa_family || srclen > sizeof *dstaddr) {
+  if(!srcaddr || srclen < offsetof(struct sockaddr, sa_family) +
+     sizeof srcaddr->sa_family || srclen > sizeof *dstaddr) {
     errno = EINVAL;
     return -1;
     }
     errno = EINVAL;
     return -1;
     }
@@ -1398,7 +1274,7 @@ Curl_os400_connect(int sd, struct sockaddr * destaddr, int addrlen)
 
   i = convert_sockaddr(&laddr, destaddr, addrlen);
 
 
   i = convert_sockaddr(&laddr, destaddr, addrlen);
 
-  if (i < 0)
+  if(i < 0)
     return -1;
 
   return connect(sd, (struct sockaddr *) &laddr, i);
     return -1;
 
   return connect(sd, (struct sockaddr *) &laddr, i);
@@ -1414,7 +1290,7 @@ Curl_os400_bind(int sd, struct sockaddr * localaddr, int addrlen)
 
   i = convert_sockaddr(&laddr, localaddr, addrlen);
 
 
   i = convert_sockaddr(&laddr, localaddr, addrlen);
 
-  if (i < 0)
+  if(i < 0)
     return -1;
 
   return bind(sd, (struct sockaddr *) &laddr, i);
     return -1;
 
   return bind(sd, (struct sockaddr *) &laddr, i);
@@ -1431,7 +1307,7 @@ Curl_os400_sendto(int sd, char * buffer, int buflen, int flags,
 
   i = convert_sockaddr(&laddr, dstaddr, addrlen);
 
 
   i = convert_sockaddr(&laddr, dstaddr, addrlen);
 
-  if (i < 0)
+  if(i < 0)
     return -1;
 
   return sendto(sd, buffer, buflen, flags, (struct sockaddr *) &laddr, i);
     return -1;
 
   return sendto(sd, buffer, buflen, flags, (struct sockaddr *) &laddr, i);
@@ -1450,7 +1326,7 @@ Curl_os400_recvfrom(int sd, char * buffer, int buflen, int flags,
   struct sockaddr_un * dstu;
   struct sockaddr_storage laddr;
 
   struct sockaddr_un * dstu;
   struct sockaddr_storage laddr;
 
-  if (!fromaddr || !addrlen || *addrlen <= 0)
+  if(!fromaddr || !addrlen || *addrlen <= 0)
     return recvfrom(sd, buffer, buflen, flags, fromaddr, addrlen);
 
   laddrlen = sizeof laddr;
     return recvfrom(sd, buffer, buflen, flags, fromaddr, addrlen);
 
   laddrlen = sizeof laddr;
@@ -1458,7 +1334,7 @@ Curl_os400_recvfrom(int sd, char * buffer, int buflen, int flags,
   rcvlen = recvfrom(sd, buffer, buflen, flags,
                     (struct sockaddr *) &laddr, &laddrlen);
 
   rcvlen = recvfrom(sd, buffer, buflen, flags,
                     (struct sockaddr *) &laddr, &laddrlen);
 
-  if (rcvlen < 0)
+  if(rcvlen < 0)
     return rcvlen;
 
   switch (laddr.ss_family) {
     return rcvlen;
 
   switch (laddr.ss_family) {
@@ -1471,7 +1347,7 @@ Curl_os400_recvfrom(int sd, char * buffer, int buflen, int flags,
     i = QadrtConvertE2A(dstu->sun_path, srcu->sun_path, i, laddrlen);
     laddrlen = i + offsetof(struct sockaddr_un, sun_path);
 
     i = QadrtConvertE2A(dstu->sun_path, srcu->sun_path, i, laddrlen);
     laddrlen = i + offsetof(struct sockaddr_un, sun_path);
 
-    if (laddrlen < *addrlen)
+    if(laddrlen < *addrlen)
       dstu->sun_path[i] = '\0';
 
     break;
       dstu->sun_path[i] = '\0';
 
     break;
@@ -1480,10 +1356,10 @@ Curl_os400_recvfrom(int sd, char * buffer, int buflen, int flags,
     break;
 
   default:
     break;
 
   default:
-    if (laddrlen > *addrlen)
+    if(laddrlen > *addrlen)
       laddrlen = *addrlen;
 
       laddrlen = *addrlen;
 
-    if (laddrlen)
+    if(laddrlen)
       memcpy((char *) fromaddr, (char *) &laddr, laddrlen);
 
     break;
       memcpy((char *) fromaddr, (char *) &laddr, laddrlen);
 
     break;
@@ -1492,3 +1368,79 @@ Curl_os400_recvfrom(int sd, char * buffer, int buflen, int flags,
   *addrlen = laddrlen;
   return rcvlen;
 }
   *addrlen = laddrlen;
   return rcvlen;
 }
+
+
+#ifdef HAVE_LIBZ
+const char *
+Curl_os400_zlibVersion(void)
+
+{
+  return set_thread_string(LK_ZLIB_VERSION, zlibVersion());
+}
+
+
+int
+Curl_os400_inflateInit_(z_streamp strm, const char * version, int stream_size)
+
+{
+  z_const char * msgb4 = strm->msg;
+  int ret;
+
+  ret = inflateInit(strm);
+
+  if(strm->msg != msgb4)
+    strm->msg = set_thread_string(LK_ZLIB_MSG, strm->msg);
+
+  return ret;
+}
+
+
+int
+Curl_os400_inflateInit2_(z_streamp strm, int windowBits,
+                                        const char * version, int stream_size)
+
+{
+  z_const char * msgb4 = strm->msg;
+  int ret;
+
+  ret = inflateInit2(strm, windowBits);
+
+  if(strm->msg != msgb4)
+    strm->msg = set_thread_string(LK_ZLIB_MSG, strm->msg);
+
+  return ret;
+}
+
+
+int
+Curl_os400_inflate(z_streamp strm, int flush)
+
+{
+  z_const char * msgb4 = strm->msg;
+  int ret;
+
+  ret = inflate(strm, flush);
+
+  if(strm->msg != msgb4)
+    strm->msg = set_thread_string(LK_ZLIB_MSG, strm->msg);
+
+  return ret;
+}
+
+
+int
+Curl_os400_inflateEnd(z_streamp strm)
+
+{
+  z_const char * msgb4 = strm->msg;
+  int ret;
+
+  ret = inflateEnd(strm);
+
+  if(strm->msg != msgb4)
+    strm->msg = set_thread_string(LK_ZLIB_MSG, strm->msg);
+
+  return ret;
+}
+
+#endif
index 234bf5e..1144692 100644 (file)
@@ -39,6 +39,8 @@ typedef enum {
         LK_EASY_STRERROR,
         LK_SHARE_STRERROR,
         LK_MULTI_STRERROR,
         LK_EASY_STRERROR,
         LK_SHARE_STRERROR,
         LK_MULTI_STRERROR,
+        LK_ZLIB_VERSION,
+        LK_ZLIB_MSG,
         LK_LAST
 }               localkey_t;
 
         LK_LAST
 }               localkey_t;
 
index aca3530..60a005a 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -161,6 +161,7 @@ CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
+CURL_DISABLE_SMB = @CURL_DISABLE_SMB@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
@@ -185,7 +186,6 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_NSS_INITCONTEXT = @HAVE_NSS_INITCONTEXT@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
@@ -194,7 +194,6 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
-KRB4_ENABLED = @KRB4_ENABLED@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
@@ -215,6 +214,7 @@ MKDIR_P = @MKDIR_P@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
+NSS_LIBS = @NSS_LIBS@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
@@ -250,11 +250,13 @@ USE_GNUTLS = @USE_GNUTLS@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
+USE_NGHTTP2 = @USE_NGHTTP2@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
+USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
index dfc994f..17c64f1 100644 (file)
@@ -1,4 +1,4 @@
-; curl package defintion file
+; curl package definition file
 ; Use with makesis to create a Symbian .sis package
 
 ;Language - standard language definitions
 ; Use with makesis to create a Symbian .sis package
 
 ;Language - standard language definitions
index 933994f..2419c20 100644 (file)
@@ -21,24 +21,26 @@ MACRO       USE_SSLEAY
 
 SOURCEPATH  ../../../lib
 SOURCE \
 
 SOURCEPATH  ../../../lib
 SOURCE \
-  file.c timeval.c base64.c hostip.c progress.c formdata.c             \
-  cookie.c http.c sendf.c ftp.c url.c dict.c if2ip.c speedcheck.c      \
-  ldap.c ssluse.c version.c getenv.c escape.c mprintf.c telnet.c       \
-  netrc.c getinfo.c transfer.c strequal.c easy.c security.c krb4.c     \
-  curl_fnmatch.c fileinfo.c ftplistparser.c wildcard.c krb5.c          \
-  memdebug.c http_chunks.c strtok.c connect.c llist.c hash.c multi.c   \
-  content_encoding.c share.c http_digest.c md4.c md5.c curl_rand.c     \
-  http_negotiate.c inet_pton.c strtoofft.c strerror.c amigaos.c                \
-  hostasyn.c hostip4.c hostip6.c hostsyn.c inet_ntop.c parsedate.c     \
-  select.c gtls.c sslgen.c tftp.c splay.c strdup.c socks.c ssh.c nss.c \
-  qssl.c rawstr.c curl_addrinfo.c socks_gssapi.c socks_sspi.c          \
-  curl_sspi.c slist.c nonblock.c curl_memrchr.c imap.c pop3.c smtp.c   \
-  pingpong.c rtsp.c curl_threads.c warnless.c hmac.c polarssl.c                \
-  curl_rtmp.c openldap.c curl_gethostname.c gopher.c axtls.c           \
-  idn_win32.c http_negotiate_sspi.c cyassl.c http_proxy.c non-ascii.c  \
-  asyn-ares.c asyn-thread.c curl_gssapi.c curl_ntlm.c curl_ntlm_wb.c   \
-  curl_ntlm_core.c curl_ntlm_msgs.c curl_sasl.c curl_schannel.c                \
-  curl_multibyte.c curl_darwinssl.c bundles.c conncache.c
+  file.c timeval.c base64.c hostip.c progress.c formdata.c             \
+  cookie.c http.c sendf.c ftp.c url.c dict.c if2ip.c speedcheck.c      \
+  ldap.c vtls/openssl.c version.c getenv.c escape.c mprintf.c telnet.c \
+  netrc.c getinfo.c transfer.c strequal.c easy.c security.c krb4.c     \
+  curl_fnmatch.c fileinfo.c ftplistparser.c wildcard.c krb5.c          \
+  memdebug.c http_chunks.c strtok.c connect.c llist.c hash.c multi.c   \
+  content_encoding.c share.c http_digest.c md4.c md5.c curl_rand.c     \
+  http_negotiate.c inet_pton.c strtoofft.c strerror.c amigaos.c        \
+  hostasyn.c hostip4.c hostip6.c hostsyn.c inet_ntop.c parsedate.c     \
+  select.c vtls/gtls.c vtls/vtls.c tftp.c splay.c strdup.c socks.c     \
+  ssh.c vtls/nss.c rawstr.c curl_addrinfo.c socks_gssapi.c             \
+  socks_sspi.c curl_sspi.c slist.c nonblock.c curl_memrchr.c imap.c    \
+  pop3.c smtp.c pingpong.c rtsp.c curl_threads.c warnless.c hmac.c     \
+  vtls/polarssl.c curl_rtmp.c openldap.c curl_gethostname.c gopher.c   \
+  vtls/axtls.c idn_win32.c http_negotiate_sspi.c vtls/cyassl.c         \
+  http_proxy.c non-ascii.c asyn-ares.c asyn-thread.c curl_gssapi.c     \
+  curl_ntlm.c curl_ntlm_wb.c curl_ntlm_core.c curl_ntlm_msgs.c         \
+  curl_sasl.c vtls/curl_schannel.c curl_multibyte.c                    \
+  vtls/curl_darwinssl.c bundles.c conncache.c curl_sasl_sspi.c smb.c   \
+  curl_sasl_gssapi.c curl_endian.c
 
 USERINCLUDE   ../../../lib ../../../include/curl
 #ifdef ENABLE_SSL
 
 USERINCLUDE   ../../../lib ../../../include/curl
 #ifdef ENABLE_SSL
index 1460a59..6b04797 100644 (file)
@@ -1,4 +1,4 @@
-; libcurl package defintion file
+; libcurl package definition file
 ; Use with makesis to create a Symbian .sis package
 
 ;Language - standard language definitions
 ; Use with makesis to create a Symbian .sis package
 
 ;Language - standard language definitions
index 7be4932..9c81836 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -218,6 +218,7 @@ CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
+CURL_DISABLE_SMB = @CURL_DISABLE_SMB@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
@@ -242,7 +243,6 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_NSS_INITCONTEXT = @HAVE_NSS_INITCONTEXT@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
@@ -251,7 +251,6 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
-KRB4_ENABLED = @KRB4_ENABLED@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
@@ -272,6 +271,7 @@ MKDIR_P = @MKDIR_P@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
+NSS_LIBS = @NSS_LIBS@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
@@ -307,11 +307,13 @@ USE_GNUTLS = @USE_GNUTLS@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
+USE_NGHTTP2 = @USE_NGHTTP2@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
+USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
index 4e7f754..eedce11 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -158,6 +158,7 @@ CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
+CURL_DISABLE_SMB = @CURL_DISABLE_SMB@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
@@ -182,7 +183,6 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_NSS_INITCONTEXT = @HAVE_NSS_INITCONTEXT@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
@@ -191,7 +191,6 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
-KRB4_ENABLED = @KRB4_ENABLED@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
@@ -212,6 +211,7 @@ MKDIR_P = @MKDIR_P@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
+NSS_LIBS = @NSS_LIBS@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
@@ -247,11 +247,13 @@ USE_GNUTLS = @USE_GNUTLS@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
+USE_NGHTTP2 = @USE_NGHTTP2@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
+USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
index 3013639..99e6313 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -158,6 +158,7 @@ CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
+CURL_DISABLE_SMB = @CURL_DISABLE_SMB@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
@@ -182,7 +183,6 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_NSS_INITCONTEXT = @HAVE_NSS_INITCONTEXT@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
@@ -191,7 +191,6 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
-KRB4_ENABLED = @KRB4_ENABLED@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
@@ -212,6 +211,7 @@ MKDIR_P = @MKDIR_P@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
+NSS_LIBS = @NSS_LIBS@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
@@ -247,11 +247,13 @@ USE_GNUTLS = @USE_GNUTLS@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
+USE_NGHTTP2 = @USE_NGHTTP2@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
+USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
index 9a7905b..3857571 100644 (file)
@@ -52,19 +52,19 @@ $!
 $ kit_name = f$trnlnm("GNV_PCSI_KITNAME")
 $ if kit_name .eqs. ""
 $ then
 $ kit_name = f$trnlnm("GNV_PCSI_KITNAME")
 $ if kit_name .eqs. ""
 $ then
-$   write sys$output "@MAKE_PCSI_BASH_KIT_NAME.COM has not been run."
+$   write sys$output "@MAKE_PCSI_CURL_KIT_NAME.COM has not been run."
 $   goto all_exit
 $ endif
 $ producer = f$trnlnm("GNV_PCSI_PRODUCER")
 $ if producer .eqs. ""
 $ then
 $   goto all_exit
 $ endif
 $ producer = f$trnlnm("GNV_PCSI_PRODUCER")
 $ if producer .eqs. ""
 $ then
-$   write sys$output "@MAKE_PCSI_BASH_KIT_NAME.COM has not been run."
+$   write sys$output "@MAKE_PCSI_CURL_KIT_NAME.COM has not been run."
 $   goto all_exit
 $ endif
 $ filename_base = f$trnlnm("GNV_PCSI_FILENAME_BASE")
 $ if filename_base .eqs. ""
 $ then
 $   goto all_exit
 $ endif
 $ filename_base = f$trnlnm("GNV_PCSI_FILENAME_BASE")
 $ if filename_base .eqs. ""
 $ then
-$   write sys$output "@MAKE_PCSI_BASH_KIT_NAME.COM has not been run."
+$   write sys$output "@MAKE_PCSI_CURL_KIT_NAME.COM has not been run."
 $   goto all_exit
 $ endif
 $!
 $   goto all_exit
 $ endif
 $!
index ae9d181..ea1881d 100644 (file)
@@ -1,10 +1,8 @@
-$! File: build_libcurl_pc.com
+$! build_curl-config_script.com
 $!
 $!
-$! $Id:$
+$! This generates the curl-config. script from the curl-config.in file.
 $!
 $!
-$! Build the curl-config file from the config_curl.in file
-$!
-$! Copyright 2013, John Malmberg
+$! Copyright 2014, John Malmberg
 $!
 $! Permission to use, copy, modify, and/or distribute this software for any
 $! purpose with or without fee is hereby granted, provided that the above
 $!
 $! Permission to use, copy, modify, and/or distribute this software for any
 $! purpose with or without fee is hereby granted, provided that the above
@@ -19,44 +17,13 @@ $! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
 $! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 $!
 $!
 $! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 $!
 $!
-$! 15-Jun-2013  J. Malmberg
+$! 16-Dec-2014 J. Malmberg
 $!
 $!===========================================================================
 $!
 $! Skip this if the curl-config. already exists.
 $ if f$search("[--]curl-config.") .nes. "" then goto all_exit
 $!
 $!
 $!===========================================================================
 $!
 $! Skip this if the curl-config. already exists.
 $ if f$search("[--]curl-config.") .nes. "" then goto all_exit
 $!
-$! Need to know the kit type.
-$ kit_name = f$trnlnm("GNV_PCSI_KITNAME")
-$ if kit_name .eqs. ""
-$ then
-$   write sys$output "@MAKE_PCSI_CURL_KIT_NAME.COM has not been run."
-$   goto all_exit
-$ endif
-$!
-$!
-$! Parse the kit name into components.
-$!---------------------------------------
-$ producer = f$element(0, "-", kit_name)
-$ base = f$element(1, "-", kit_name)
-$ product = f$element(2, "-", kit_name)
-$ mmversion = f$element(3, "-", kit_name)
-$ majorver = f$extract(0, 3, mmversion)
-$ minorver = f$extract(3, 2, mmversion)
-$ updatepatch = f$element(4, "-", kit_name)
-$ if updatepatch .eqs. "-" then updatepatch = ""
-$!
-$! kit type of "D" means a daily build
-$ kit_type = f$edit(f$extract(0, 1, majorver), "upcase")
-$!
-$ cfg_file_in = "[--]curl-config.in"
-$!
-$ if f$search(cfg_file_in) .eqs. ""
-$ then
-$    write sys$output "Can not find curl-config.in."
-$    goto all_exit
-$ endif
-$!
 $ if (f$getsyi("HW_MODEL") .lt. 1024)
 $ then
 $    arch_name = "VAX"
 $ if (f$getsyi("HW_MODEL") .lt. 1024)
 $ then
 $    arch_name = "VAX"
@@ -66,223 +33,122 @@ $    arch_name = arch_name + f$edit(f$getsyi("ARCH_NAME"), "UPCASE")
 $    if (arch_name .eqs. "") then arch_name = "UNK"
 $ endif
 $!
 $    if (arch_name .eqs. "") then arch_name = "UNK"
 $ endif
 $!
+$ x_prefix = "/usr"
+$ x_exec_prefix = "/usr"
+$ x_includedir = "${prefix}/include"
+$ x_cppflag_curl_staticlib = "-DCURL_STATICLIB"
+$ x_enabled_shared = "no"
+$ x_curl_ca_bundle = ""
+$ x_cc = "cc"
+$ x_support_features = "SSL IPv6 libz NTLM"
+$ x_support_protocols1 = "DICT FILE FTP FTPS GOPHER HTTP HTTPS IMAP IMAPS LDAP"
+$ x_support_protocols2 = " LDAPS POP3 POP3S RTSP SMTP SMTPS TELNET TFTP"
+$ x_support_protocols = x_support_protocols1 + x_support_protocols2
+$ x_curlversion = "0.0.0.0"
+$ x_versionnum = ""
+$ x_libdir = "${prefix}/lib"
+$ x_require_lib_deps = ""
+$ x_enable_static = ""
+$ x_ldflags = ""
+$ part1 = "-L/usr/lib -L/SSL_LIB -lssl -lcrypto -lz"
+$ if arch_name .eqs. "VAX"
+$ then
+$   x_libcurl_libs = part1
+$ else
+$   x_libcurl_libs = part1 + " -lgssapi"
+$ endif
+$ x_libext = "a"
 $!
 $!
-$ curl_version = "0.0.0"
-$ open/read vf [--.include.curl]curlver.h
-$version_loop:
-$   read vf/end=version_loop_end line_in
+$! Get the version number
+$!-----------------------
+$ i = 0
+$ open/read/error=version_loop_end vhf [--.include.curl]curlver.h
+$ version_loop:
+$   read/end=version_loop_end vhf line_in
 $   if line_in .eqs. "" then goto version_loop
 $   if line_in .eqs. "" then goto version_loop
-$   key = f$element(0, " ", line_in)
-$   if key .nes. "#define" then goto version_loop
-$   name = f$element(1, " ", line_in)
-$   if name .eqs. "LIBCURL_VERSION"
+$   if f$locate("#define LIBCURL_VERSION ", line_in) .eq. 0
 $   then
 $   then
-$       curl_version = f$element(2, " ", line_in) - """" - """"
-$       goto version_loop
+$       x_curlversion = f$element(2," ", line_in) - """" - """"
+$       i = i + 1
 $   endif
 $   endif
-$   if name .eqs. "LIBCURL_VERSION_NUM"
+$   if f$locate("#define LIBCURL_VERSION_NUM ", line_in) .eq. 0
 $   then
 $   then
-$       version_num_hex = f$element(2, " ", line_in)
-$       version_num = version_num_hex - "0x"
-$       goto version_loop
+$       x_versionnum = f$element(2," ", line_in) - """" - """"
+$       i = i + 1
 $   endif
 $   endif
-$version_loop_end:
-$ close vf
+$   if i .lt 2 then goto version_loop
+$ version_loop_end:
+$ close vhf
 $!
 $!
-$!
-$ create [--]curl-config.
-$ open/append pco [--]curl-config.
-$ open/read pci 'cfg_file_in'
-$cfg_file_loop:
-$ read pci/end=cfg_file_loop_end line_in
-$!
-$! blank lines
-$ if line_in .eqs. ""
+$ kit_type = "V"
+$ if f$locate("-", x_curlversion) .lt. f$length(x_curlversion)
 $ then
 $ then
-$   write pco ""
-$   goto cfg_file_loop
+$   kit_type = "D"
+$   x_prefix = "/beta"
+$   x_exec_prefix = "/beta"
 $ endif
 $!
 $ endif
 $!
-$! comment lines
-$ key = f$extract(0, 1, line_in)
-$ if key .eqs. "#"
-$ then
-$   write pco line_in
-$   goto cfg_file_loop
-$ endif
-$!
-$! No substitution line
-$ line_in_len = f$length(line_in)
-$ if f$locate("@", line_in) .ge. line_in_len
-$ then
-$   write pco line_in
-$   goto cfg_file_loop
-$ endif
-$!
-$ if f$locate("@prefix@", line_in) .lt line_in_len
-$ then
-$    if kit_type .nes. "D"
-$    then
-$        write pco "prefix=/usr"
-$    else
-$        write pco "prefix=/beta"
-$    endif
-$    goto cfg_file_loop
-$ endif
-$ if f$locate("@exec_prefix@", line_in) .lt line_in_len
-$ then
-$    if kit_type .nes. "D"
-$    then
-$        write pco "exec_prefix=/usr"
-$    else
-$        write pco "exec_prefix=/beta"
-$    endif
-$    goto cfg_file_loop
-$ endif
-$ if f$locate("=@includedir@", line_in) .lt line_in_len
-$ then
-$    write pco "includedir=$(prefix}/include"
-$    goto cfg_file_loop
-$ endif
-$ if f$locate("X@includedir@", line_in) .lt line_in_len
-$ then
-$    write pco "        if test ""X$(prefix}/include""; then"
-$    goto cfg_file_loop
-$ endif
-$ if f$locate("I@includedir@", line_in) .lt line_in_len
-$ then
-$    write pco "          echo "${CPPFLAG_CURL_STATICLIB}-I$(prefix}/include"
-$    goto cfg_file_loop
-$ endif
-$ if f$locate("@CPPFLAG_CURL_STATICLIB@", line_in) .lt line_in_len
-$ then
-$    write pco "cppflag_curl_staticlib=-DCURL_STATICLIB"
-$    goto cfg_file_loop
-$ endif
-$ if f$locate("@ENABLE_SHARED@", line_in) .lt line_in_len
+$ if kit_type .nes. "D"
 $ then
 $ then
-$    write pco "        echo no"
-$    goto cfg_file_loop
-$ endif
-$ if f$locate("@CURL_CA_BUNDLE@", line_in) .lt line_in_len
-$ then
-$    write pco "        echo """""
-$    goto cfg_file_loop
-$ endif
-$ if f$locate("@CC@", line_in) .lt line_in_len
-$ then
-$    write pco "        echo ""cc"""
-$    goto cfg_file_loop
-$ endif
-$ if f$locate("@SUPPORT_FEATURES@", line_in) .lt line_in_len
-$ then
-$    if arch_name .eqs. "VAX"
-$    then
-$        write pco "        for feature in SSL libz NTLM ""; do"
-$    else
-$        write pco "        for feature in SSL IPv6 libz NTLM ""; do"
-$    endif
-$    goto cfg_file_loop
-$ endif
-$ if f$locate("@SUPPORT_PROTOCOLS@", line_in) .lt line_in_len
-$ then
-$    proto1 = "DICT FILE FTP FTPS GOPHER HTTP HTTPS IMAP IMAPS"
-$    proto2 = " LDAP LDAPS POP3 POP3S RTSP SMTP SMTPS TELNET TFTP"
-$    proto = proto1 + proto2
-$    write pco "        for protocol in " + proto + "; do"
-$    goto cfg_file_loop
-$ endif
-$ if f$locate("libcurl @CURLVERSION@", line_in) .lt line_in_len
-$ then
-$    write pco "        echo libcurl ''curl_version'"
-$    goto cfg_file_loop
-$ endif
-$ if f$locate("existing @CURLVERSION@", line_in) .lt line_in_len
-$ then
-$    line_start = -
-  "          echo ""requested version $checkfor is newer than existing"
-$    write pco "''line_start' ''curl_version'"""
-$    goto cfg_file_loop
-$ endif
-$ if f$locate("`echo @versionnum@", line_in) .lt line_in_len
-$ then
-$    write pco "        numuppercase=`echo ''version_num' | tr 'a-f' 'A-F'`"
-$    goto cfg_file_loop
-$ endif
-$ if f$locate(" echo @versionnum@", line_in) .lt line_in_len
-$ then
-$    write pco "        echo ''version_num'"
-$    goto cfg_file_loop
-$ endif
-$ if f$locate("X@libdir@", line_in) .lt line_in_len
-$ then
-$    part1 = "        if test ""$(exec_prefix}/lib"" != ""X/usr/lib"""
-$    part2 = "-a ""X$(exec_prefix}/lib"" != ""X/usr/lib64""; then"
-$    write pco part1,part2
-$    goto cfg_file_loop
-$ endif
-$ if f$locate("L@libdir@", line_in) .lt line_in_len
-$ then
-$    write pco "           CURLLIBDIR=""$(exec_prefix}/lib """
-$    goto cfg_file_loop
-$ endif
-$ if f$locate("@REQUIRE_LIB_DEPS@", line_in) .lt line_in_len
-$ then
-$    write pco "        if test "Xyes" = "Xyes"; then"
-$    goto cfg_file_loop
-$ endif
-$ if f$locate("@LIBCURL_LIBS@", line_in) .lt line_in_len
-$ then
-$    if arch_name .eqs. "VAX"
-$    then
-$        write pco "          echo ${CURLLIBDIR}-lssl -lcrypto -lz"
-$    else
-$        write pco "          echo ${CURLLIBDIR}-lssl -lcrypto -lgssapi -lz"
-$    endif
-$    goto cfg_file_loop
-$ endif
-$ if f$locate("@ENABLE_STATIC@", line_in) .lt line_in_len
-$ then
-$    write pco "        if test "Xyes" != "Xno" ; then"
-$    goto cfg_file_loop
+$    part1 = "        echo "" '--prefix=/usr' '--exec-prefix=/usr' "
+$ else
+$    part1 = "        echo "" '--prefix=/beta' '--exec_prefix=/beta' "
 $ endif
 $ endif
-$ if f$locate("@LIBCURL_LIBS@", line_in) .lt line_in_len
+$ if arch_name .eqs. "VAX"
 $ then
 $ then
-$    part1 = "          echo ${exec_prefix}/lib/libcurl.a"
-$    part2 = "-L/usr/lib -L/SSL_LIB"
-$    if arch_name .eqs. "VAX"
-$    then
-$        write pco "''part1' ''part2' -lssl -lcrypto -lz"
-$    else
-$        write pco "''part1' ''part2' -lssl -lcrypto -lgssapi -lz"
-$    endif
-$    goto cfg_file_loop
+$    part3 = ""
+$ else
+$    part3 = "'--with-gssapi' "
 $ endif
 $ endif
-$ if f$locate("@CONFIGURE_OPTIONS@", line_in) .lt line_in_len
-$ then
-$    if kit_type .nes. "D"
-$    then
-$        part1 = "        echo "" '--prefix=/usr' '--exec-prefix=/usr' "
-$    else
-$        part1 = "        echo "" '--prefix=/beta' '--exec_prefix=/beta' "
-$    endif
-$    if arch_name .eqs. "VAX"
-$    then
-$        part3 = ""
-$    else
-$        part3 = "'--with-gssapi' "
-$    endif
-$    part2 = "'--disable-dependency-tracking' '--disable-libtool-lock' "
-$    part4 = "'--disable-ntlm-wb' '--with-ca-path=gnv$curl_ca_path'"""
+$ part2 = "'--disable-dependency-tracking' '--disable-libtool-lock' "
+$ part4 = "'--disable-ntlm-wb' '--with-ca-path=gnv$curl_ca_path'"""
 $!
 $!
-$    write pco part1,part2,part3,part4
+$ x_configure_options = part1 + part2 + part3 + part4
 $!
 $!
-$    goto cfg_file_loop
-$ endif
-$!
-$pc_file_loop_end:
-$ close pco
-$ close pci
 $!
 $!
-$all_exit:
-$ exit
+$ open/read/error=read_loop_end c_c_in sys$disk:[--]curl-config.in
+$ create sys$disk:[--]curl-config.
+$ open/append c_c_out sys$disk:[--]curl-config.
+$read_loop:
+$   read/end=read_loop_end c_c_in line_in
+$   line_in_len = f$length(line_in)
+$   if f$locate("@", line_in) .ge. line_in_len
+$   then
+$       write c_c_out line_in
+$       goto read_loop
+$   endif
+$   i = 0
+$   line_out = ""
+$sub_loop:
+$       ! Replace between pairs of @ by alternating the elements.
+$       ! If mis-matched pairs, do not substitute anything.
+$       section1 = f$element(i, "@", line_in)
+$       if section1 .eqs. "@"
+$       then
+$           goto sub_loop_end
+$       endif
+$       i = i + 1
+$       section2 = f$element(i, "@", line_in)
+$       if section2 .eqs. "@"
+$       then
+$           goto sub_loop_end
+$       endif
+$       i = i + 1
+$       section3 = f$element(i, "@", line_in)
+$       if section3 .eqs. "@"
+$       then
+$           if line_out .eqs. "" then line_out = line_in
+$           goto sub_loop_end
+$       endif
+$       line_out = line_out + section1
+$       if f$type(x_'section2') .eqs. "STRING"
+$       then
+$           line_out = line_out + x_'section2'
+$       endif
+$       goto sub_loop
+$sub_loop_end:
+$   write c_c_out line_out
+$   goto read_loop
+$read_loop_end:
+$ close c_c_in
+$ close c_c_out
index dbe43d9..da0276f 100644 (file)
@@ -70,6 +70,17 @@ $   write sys$output "Can not find VMS specific Curl readme file."
 $   goto all_exit
 $ endif
 $!
 $   goto all_exit
 $ endif
 $!
+$ curl_release_notes = f$search("sys$disk:[--]release-notes.")
+$ if curl_release_notes .eqs. ""
+$ then
+$   curl_release_notes = f$search("sys$disk:[--]$RELEASE-NOTES.")
+$ endif
+$ if curl_release_notes .eqs. ""
+$ then
+$    write sys$output "Can not find Curl release-notes file."
+$    goto all_exit
+$ endif
+$!
 $ if f$search("sys$disk:[]hp_ssl_release_info.txt") .eqs. ""
 $ then
 $   write sys$output "GNV_LINK_CURL.COM has not been run!"
 $ if f$search("sys$disk:[]hp_ssl_release_info.txt") .eqs. ""
 $ then
 $   write sys$output "GNV_LINK_CURL.COM has not been run!"
@@ -77,6 +88,7 @@ $   goto all_exit
 $ endif
 $!
 $ type/noheader 'curl_readme', 'vms_readme', -
 $ endif
 $!
 $ type/noheader 'curl_readme', 'vms_readme', -
+                'curl_release_notes', -
                 sys$disk:[]curl_release_note_start.txt, -
                 sys$disk:[]hp_ssl_release_info.txt, -
                 'curl_copying', -
                 sys$disk:[]curl_release_note_start.txt, -
                 sys$disk:[]hp_ssl_release_info.txt, -
                 'curl_copying', -
index 251b345..97e6ae6 100644 (file)
@@ -76,7 +76,7 @@ $ endif
 $!
 $!
 $ curl_version = "0.0.0"
 $!
 $!
 $ curl_version = "0.0.0"
-$ open/read vf [--.src]version.h
+$ open/read vf [--.src]tool_version.h
 $version_loop:
 $   read vf/end=version_loop_end line_in
 $   if line_in .eqs. "" then goto version_loop
 $version_loop:
 $   read vf/end=version_loop_end line_in
 $   if line_in .eqs. "" then goto version_loop
index 4ec7635..d7edc46 100644 (file)
@@ -148,6 +148,9 @@ $!                      * 3 spaces after $ for second level.  Line start + 4.
 $!                      * 7 spaces after $ for third level.  Line start + 8.
 $!                      * Each level after that indents 4 characters.
 $!                      * then/else/endif same indentation as if statement.
 $!                      * 7 spaces after $ for third level.  Line start + 8.
 $!                      * Each level after that indents 4 characters.
 $!                      * then/else/endif same indentation as if statement.
+$! 17-Nov-2014, Michael Steve
+$!                   Modified build to handle new location of the VTLS lib
+$!                   source within zip archive. Not a pretty fix.
 $!
 $!===========================================================================
 $!
 $!
 $!===========================================================================
 $!
@@ -375,14 +378,24 @@ $   if f$search("''file'.obj") .nes. "" then delete/log 'file'.obj;*
 $   if f$search("''file'.opt") .nes. "" then delete/log 'file'.opt;*
 $   file = "[...]curl-*_original_src.bck"
 $   if f$search(file) .nes. "" then delete/log 'file';*
 $   if f$search("''file'.opt") .nes. "" then delete/log 'file'.opt;*
 $   file = "[...]curl-*_original_src.bck"
 $   if f$search(file) .nes. "" then delete/log 'file';*
+$   file = "[...]curl_d-*_original_src.bck"
+$   if f$search(file) .nes. "" then delete/log 'file';*
 $   file = "[...]curl-*_vms_src.bck"
 $   if f$search(file) .nes. "" then delete/log 'file';*
 $   file = "[...]curl-*_vms_src.bck"
 $   if f$search(file) .nes. "" then delete/log 'file';*
+$   file = "[...]curl_d-*_vms_src.bck"
+$   if f$search(file) .nes. "" then delete/log 'file';*
 $   file = "[...]curl-*.release_notes"
 $   if f$search(file) .nes. "" then delete/log 'file';*
 $   file = "[...]curl-*.release_notes"
 $   if f$search(file) .nes. "" then delete/log 'file';*
+$   file = "[...]curl_d-*.release_notes"
+$   if f$search(file) .nes. "" then delete/log 'file';*
 $   file = "[...]*curl*.pcsi$desc"
 $   if f$search(file) .nes. "" then delete/log 'file';*
 $   file = "[...]*curl*.pcsi$desc"
 $   if f$search(file) .nes. "" then delete/log 'file';*
+$   file = "[...]*curl_d*.pcsi$desc"
+$   if f$search(file) .nes. "" then delete/log 'file';*
 $   file = "[...]*curl*.pcsi$text"
 $   if f$search(file) .nes. "" then delete/log 'file';*
 $   file = "[...]*curl*.pcsi$text"
 $   if f$search(file) .nes. "" then delete/log 'file';*
+$   file = "[...]*curl_d*.pcsi$text"
+$   if f$search(file) .nes. "" then delete/log 'file';*
 $!
 $   if clean_all .eq. 0 then goto Common_Exit
 $ endif
 $!
 $   if clean_all .eq. 0 then goto Common_Exit
 $ endif
@@ -667,8 +680,6 @@ $! Form CC qualifiers.
 $!
 $ cc_defs = "/define = (''cc_defs')"
 $ cc_qual2 = cc_qual2 + " /object = ''objdir'"
 $!
 $ cc_defs = "/define = (''cc_defs')"
 $ cc_qual2 = cc_qual2 + " /object = ''objdir'"
-$ cc_qual2 = cc_qual2 + " /include = ([-.lib], [-.src],"
-$ cc_qual2 = cc_qual2 + " [-.packages.vms], [-.packages.vms.''arch_name'])"
 $ cc_qual2 = cc_qual2 + "/nested_include_directory=none"
 $!
 $ 'vo_c' "CC opts:", -
 $ cc_qual2 = cc_qual2 + "/nested_include_directory=none"
 $!
 $ 'vo_c' "CC opts:", -
@@ -796,7 +807,6 @@ $!   set nover
 $ endif
 $!
 $!
 $ endif
 $!
 $!
-$!
 $ on control_y then goto Common_Exit
 $!
 $ set default 'proc_dev_dir'
 $ on control_y then goto Common_Exit
 $!
 $ set default 'proc_dev_dir'
@@ -809,10 +819,21 @@ $ if curl_sys_zlibinc .nes. ""
 $ then
 $   sys_inc = sys_inc + ",''curl_sys_zlibinc'"
 $ endif
 $ then
 $   sys_inc = sys_inc + ",''curl_sys_zlibinc'"
 $ endif
+$! Build LIB
+$ cc_include = "/include=([-.lib],[-.lib.vtls],[-.packages.vms]"
+$ cc_include = cc_include + ",[-.packages.vms.''arch_name'])"
 $ call build "[--.lib]" "*.c" "''objdir'CURLLIB.OLB" "amigaos, nwlib, nwos"
 $ if ($status .eq. ctrl_y) then goto Common_Exit
 $ call build "[--.lib]" "*.c" "''objdir'CURLLIB.OLB" "amigaos, nwlib, nwos"
 $ if ($status .eq. ctrl_y) then goto Common_Exit
+$! Build VTLS
+$ cc_include = "/include=([--.lib.vtls],[--.lib],[--.src]"
+$ cc_include = cc_include + ",[--.packages.vms],[--.packages.vms.''arch_name'])"
+$ call build "[--.lib.vtls]" "*.c" "''objdir'CURLLIB.OLB" "amigaos, nwlib, nwos"
+$! Build SRC
+$ cc_include = "/include=([-.src],[-.lib],[-.lib.vtls]"
+$ cc_include = cc_include + ",[-.packages.vms],[-.packages.vms.''arch_name'])"
 $ call build "[--.src]" "*.c" "''objdir'CURLSRC.OLB"
 $ if ($status .eq. ctrl_y) then goto Common_Exit
 $ call build "[--.src]" "*.c" "''objdir'CURLSRC.OLB"
 $ if ($status .eq. ctrl_y) then goto Common_Exit
+$! Build MSG
 $ call build "[]" "*.msg" "''objdir'CURLSRC.OLB"
 $ if ($status .eq. ctrl_y) then goto Common_Exit
 $!
 $ call build "[]" "*.msg" "''objdir'CURLSRC.OLB"
 $ if ($status .eq. ctrl_y) then goto Common_Exit
 $!
@@ -910,7 +931,7 @@ $   on control_y then goto EndLoop ! SS$_CONTROLY
 $   sts = 1 ! SS$_NORMAL.
 $!   set noon
 $   set default 'p1'
 $   sts = 1 ! SS$_NORMAL.
 $!   set noon
 $   set default 'p1'
-$   search = p2
+$   search = "sys$disk:" + p2
 $   reset = f$search("reset")
 $   if f$search( p3) .eqs. ""
 $   then
 $   reset = f$search("reset")
 $   if f$search( p3) .eqs. ""
 $   then
@@ -984,6 +1005,7 @@ $       define/user decc$system_include 'sys_inc'
 $       CC 'cc_defs' -
          'cc_qual1' -
          'cc_qual2' -
 $       CC 'cc_defs' -
          'cc_qual1' -
          'cc_qual2' -
+         'cc_include' -
          'file'
 $   else
 $       cmd_msg = "MESSAGE " + msg_qual
          'file'
 $   else
 $       cmd_msg = "MESSAGE " + msg_qual
index 0bef42c..24ecb11 100644 (file)
@@ -108,15 +108,36 @@ $!
 $ file = "lcl_root:[.include.curl]curlbuild.h_old"
 $ if f$search(file) .nes. "" then delete 'file';*
 $!
 $ file = "lcl_root:[.include.curl]curlbuild.h_old"
 $ if f$search(file) .nes. "" then delete 'file';*
 $!
+$ file = "lcl_root:[.packages.vms]curl-*_original_src.bck"
+$ if f$search(file) .nes. "" then delete 'file';*
+$!
+$ file = "lcl_root:[.packages.vms]curl_d-*_original_src.bck"
+$ if f$search(file) .nes. "" then delete 'file';*
+$!
+$ file = "lcl_root:[.packages.vms]curl-*_vms_src.bck"
+$ if f$search(file) .nes. "" then delete 'file';*
+$!
+$ file = "lcl_root:[.packages.vms]curl_d-*_vms_src.bck"
+$ if f$search(file) .nes. "" then delete 'file';*
+$!
 $ file = "lcl_root:[.packages.vms]curl-*.release_notes"
 $ if f$search(file) .nes. "" then delete 'file';*
 $!
 $ file = "lcl_root:[.packages.vms]curl-*.release_notes"
 $ if f$search(file) .nes. "" then delete 'file';*
 $!
+$ file = "lcl_root:[.packages.vms]curl_d-*.release_notes"
+$ if f$search(file) .nes. "" then delete 'file';*
+$!
 $ file = "lcl_root:[.packages.vms]*-curl-*.pcsi$desc"
 $ if f$search(file) .nes. "" then delete 'file';*
 $!
 $ file = "lcl_root:[.packages.vms]*-curl-*.pcsi$desc"
 $ if f$search(file) .nes. "" then delete 'file';*
 $!
+$ file = "lcl_root:[.packages.vms]*-curl_d-*.pcsi$desc"
+$ if f$search(file) .nes. "" then delete 'file';*
+$!
 $ file = "lcl_root:[.packages.vms]*-curl-*.pcsi$text"
 $ if f$search(file) .nes. "" then delete 'file';*
 $!
 $ file = "lcl_root:[.packages.vms]*-curl-*.pcsi$text"
 $ if f$search(file) .nes. "" then delete 'file';*
 $!
+$ file = "lcl_root:[.packages.vms]*-curl_d-*.pcsi$text"
+$ if f$search(file) .nes. "" then delete 'file';*
+$!
 $!======================================================================
 $!
 $ if p1 .nes. "REALCLEAN" then goto all_exit
 $!======================================================================
 $!
 $ if p1 .nes. "REALCLEAN" then goto all_exit
index 6ec27ea..2a5503f 100644 (file)
@@ -1382,7 +1382,7 @@ $!                        search/out 'tfile1' "$_''keyterm'"
 $                      severity = '$severity'
 $                  endif
 $!
 $                      severity = '$severity'
 $                  endif
 $!
-$!                 UNIX compatability routines
+$!                 Unix compatability routines
 $!---------------------------------------------
 $                  if severity .ne. 1
 $                  then
 $!---------------------------------------------
 $                  if severity .ne. 1
 $                  then
index 98c70ec..01a34e5 100644 (file)
@@ -232,7 +232,7 @@ static void set_features(void)
         /* POSIX requires that open files be able to be removed */
         set_feature_default ("DECC$ALLOW_REMOVE_OPEN_FILES", ENABLE);
 
         /* POSIX requires that open files be able to be removed */
         set_feature_default ("DECC$ALLOW_REMOVE_OPEN_FILES", ENABLE);
 
-        /* Default to outputting UNIX filesnames in VMS routines */
+        /* Default to outputting Unix filenames in VMS routines */
         set_feature_default ("DECC$FILENAME_UNIX_ONLY", ENABLE);
         /* FILENAME_UNIX_ONLY Implicitly sets */
         /* decc$disable_to_vms_logname_translation */
         set_feature_default ("DECC$FILENAME_UNIX_ONLY", ENABLE);
         /* FILENAME_UNIX_ONLY Implicitly sets */
         /* decc$disable_to_vms_logname_translation */
@@ -248,7 +248,7 @@ static void set_features(void)
         set_feature_default("DECC$FILENAME_UNIX_REPORT", ENABLE);
     }
 
         set_feature_default("DECC$FILENAME_UNIX_REPORT", ENABLE);
     }
 
-    /* When reporting UNIX filenames, glob the same way */
+    /* When reporting Unix filenames, glob the same way */
     set_feature_default ("DECC$GLOB_UNIX_STYLE", ENABLE);
 
     /* The VMS version numbers on Unix filenames is incompatible with most */
     set_feature_default ("DECC$GLOB_UNIX_STYLE", ENABLE);
 
     /* The VMS version numbers on Unix filenames is incompatible with most */
index e21b37d..6a87fef 100644 (file)
@@ -58,7 +58,7 @@ LCL_ROOT:,VMS_ROOT:,SRC_ROOT:
 For the make install process to work, it must have write access to the
 directories referenced by the GNU: logical name.
 
 For the make install process to work, it must have write access to the
 directories referenced by the GNU: logical name.
 
-In future releases of GNV, and with GNV Bash 4.2.45 installed, this name
+In future releases of GNV, and with GNV Bash 4.3.30 installed, this name
 should be GNV$GNU:
 
 As directly updating those directories would probably be disruptive to other
 should be GNV$GNU:
 
 As directly updating those directories would probably be disruptive to other
@@ -99,10 +99,6 @@ Note to builders:
 GNV currently has a bug where configure scripts take a long time to run.
 Some of the configure steps take a while to complete, and on a 600 Mhz
 DS10 with IDE disks, taking an hour to run the CURL configure is normal.
 GNV currently has a bug where configure scripts take a long time to run.
 Some of the configure steps take a while to complete, and on a 600 Mhz
 DS10 with IDE disks, taking an hour to run the CURL configure is normal.
-The bug appears to be in the SED for GNV 2.1.3 and GNV 3.0.1 where it
-is taking far longer than it should to do I/O.  In addition, there are
-reports that the SED in GNV 3.0.1 is broken so the SED from GNV 2.1.3
-should be used instead.
 
 The following messages can be ignored and may get fixed in a future version
 of GNV.  The GNV$*.OPT files are used to find the libraries as many have
 
 The following messages can be ignored and may get fixed in a future version
 of GNV.  The GNV$*.OPT files are used to find the libraries as many have
@@ -119,12 +115,50 @@ u unimplemented switch - ignored
 
 
 With these search lists set up and the properly, curl can be built by
 
 
 With these search lists set up and the properly, curl can be built by
-setting your default to PRJ_ROOT:[curl.packages.vms] where the * is
-replaced by the actual version of curl, and then issuing the command:
+setting your default to PRJ_ROOT:[curl.packages.vms] and then issuing
+either the command:
+
+  $ @pcsi_product_gnv_curl.com
+
+or
 
   $ @build_gnv_curl.com.
 
 
   $ @build_gnv_curl.com.
 
-This command procedure does the following:
+The GNV configure procedure takes considerably longer than the DCL build
+procecure takes.  It is of use for testing the GNV build environment, and
+may not have been kept up to date.
+
+The pcsi_product_gnv_curl.com needs the following logical names which
+are described in the section below:
+
+  gnv_pcsi_producer
+  gnv_pcsi_producer_full_name
+  stage_root
+  vms_root1 (Optional if vms_root is on a NFS volume)
+  src_root1 (Optional if src_root is on a NFS volume)
+
+The pcsi_product_gnv_curl.com is described in more detail below.  It does
+the following steps.  The build steps are only done if they are needed to
+allow using either DCL or GNV based building procedures.
+
+  $ @build_vms list
+
+  $ @gnv_link_curl.com
+
+  $ @build_gnv_curl_release_notes.com
+
+  $ @backup_gnv_curl_src.com
+
+  $ @build_gnv_curl_pcsi_desc.com
+
+  $ @build_gnv_curl_pcsi_text.com
+
+  $ @stage_curl_install remove
+  $ @stage_curl_install
+
+  Then builds the kit.
+
+The build_gnv_curl.com command procedure does the following:
 
   $ @setup_gnv_curl_build.com
 
 
   $ @setup_gnv_curl_build.com
 
@@ -140,7 +174,8 @@ This command procedure does the following:
 
   $ purge new_gnu:[*...]/log
 
 
   $ purge new_gnu:[*...]/log
 
-To clean up after a build to start over, the following commands are used:
+To clean up after a GNV based build to start over, the following commands are
+used:
 
    $ bash
    bash$ cd ../..
 
    $ bash
    bash$ cd ../..
index 8024a92..90a83d5 100644 (file)
@@ -277,6 +277,18 @@ $endif
 $write cvh "#ifdef CURL_DISABLE_LIBCURL_OPTION"
 $write cvh "#undef CURL_DISABLE_LIBCURL_OPTION"
 $write cvh "#endif"
 $write cvh "#ifdef CURL_DISABLE_LIBCURL_OPTION"
 $write cvh "#undef CURL_DISABLE_LIBCURL_OPTION"
 $write cvh "#endif"
+$write cvh "#ifndef __VAX"
+$write cvh "#ifdef CURL_DISABLE_NTLM"
+$write cvh "#undef CURL_DISABLE_NTLM"
+$write cvh "#endif"
+$write cvh "#else"
+$! NTLM needs long long or int64 support, missing from DECC C.
+$write cvh "#ifdef __DECC
+$write cvh "#ifndef CURL_DISABLE_NTLM"
+$write cvh "#define CURL_DISABLE_NTLM 1"
+$write cvh "#endif"
+$write cvh "#endif"
+$write cvh "#endif"
 $write cvh "#ifdef CURL_DISABLE_POP3"
 $write cvh "#undef CURL_DISABLE_POP3"
 $write cvh "#endif"
 $write cvh "#ifdef CURL_DISABLE_POP3"
 $write cvh "#undef CURL_DISABLE_POP3"
 $write cvh "#endif"
@@ -334,6 +346,9 @@ $write cvh "#endif"
 $write cvh "#ifdef USE_MANUAL"
 $write cvh "#undef USE_MANUAL"
 $write cvh "#endif"
 $write cvh "#ifdef USE_MANUAL"
 $write cvh "#undef USE_MANUAL"
 $write cvh "#endif"
+$write cvh "#ifdef USE_NGHTTP2"
+$write cvh "#undef USE_NGHTTP2"
+$write cvh "#endif"
 $write cvh "#ifdef USE_NSS"
 $write cvh "#undef USE_NSS"
 $write cvh "#endif"
 $write cvh "#ifdef USE_NSS"
 $write cvh "#undef USE_NSS"
 $write cvh "#endif"
@@ -352,10 +367,17 @@ $write cvh "#endif"
 $write cvh "#ifdef USE_TLS_SRP"
 $write cvh "#undef USE_TLS_SRP"
 $write cvh "#endif"
 $write cvh "#ifdef USE_TLS_SRP"
 $write cvh "#undef USE_TLS_SRP"
 $write cvh "#endif"
+$write cvh "#ifdef USE_UNIX_SOCKETS"
+$write cvh "#undef USE_UNIX_SOCKETS"
+$write cvh "#endif"
 $write cvh "#ifdef USE_WINDOWS_SSPI"
 $write cvh "#undef USE_WINDOWS_SSPI"
 $write cvh "#endif"
 $!
 $write cvh "#ifdef USE_WINDOWS_SSPI"
 $write cvh "#undef USE_WINDOWS_SSPI"
 $write cvh "#endif"
 $!
+$write cvh "#ifndef HAVE_OLD_GSSMIT"
+$write cvh "#define gss_nt_service_name GSS_C_NT_HOSTBASED_SERVICE"
+$write cvh "#endif"
+$!
 $!
 $! Note:
 $! The CURL_EXTERN_SYMBOL is used for platforms that need the compiler
 $!
 $! Note:
 $! The CURL_EXTERN_SYMBOL is used for platforms that need the compiler
@@ -388,6 +410,18 @@ $   write cvh "#endif"
 $   write cvh "#ifndef USE_SSLEAY"
 $   write cvh "#define USE_SSLEAY 1"
 $   write cvh "#endif"
 $   write cvh "#ifndef USE_SSLEAY"
 $   write cvh "#define USE_SSLEAY 1"
 $   write cvh "#endif"
+$   if arch_name .eqs. "VAX"
+$   then
+$       old_mes = f$enviroment("message")
+$       set message/notext/nofaci/noseve/noident
+$       search/output=nla0: ssl$include:*.h CONF_MFLAGS_IGNORE_MISSING_FILE
+$       status = $severity
+$       set message'old_mes'
+$       if status .nes. "1"
+$       then
+$           write cvh "#define VMS_OLD_SSL 1"
+$       endif
+$   endif
 $endif
 $!
 $!
 $endif
 $!
 $!
@@ -406,6 +440,7 @@ $   write cvh "#undef HAVE_LIBIDN"
 $   write cvh "#endif"
 $endif
 $!
 $   write cvh "#endif"
 $endif
 $!
+$!
 $! LibSSH2 not ported to VMS at this time.
 $! Allow explicit experimentation.
 $if libssh2
 $! LibSSH2 not ported to VMS at this time.
 $! Allow explicit experimentation.
 $if libssh2
@@ -428,6 +463,7 @@ $   write cvh "#endif"
 $endif
 $!
 $!
 $endif
 $!
 $!
+$!
 $if .not. nozlib
 $then
 $   write cvh "#define HAVE_LIBZ 1"
 $if .not. nozlib
 $then
 $   write cvh "#define HAVE_LIBZ 1"
@@ -435,6 +471,9 @@ $   write cvh "#define HAVE_ZLIB_H 1"
 $endif
 $!
 $!
 $endif
 $!
 $!
+$! Suppress a message in curl_gssapi.c compile.
+$write cvh "#pragma message disable notconstqual"
+$!
 $! Close out the file
 $!
 $write cvh ""
 $! Close out the file
 $!
 $write cvh ""
index f714210..2eeb209 100644 (file)
@@ -23,7 +23,7 @@
 # 28-Dec-2012  J. Malmberg     Update for Bash 4.2.39
 #==========================================================================
 #
 # 28-Dec-2012  J. Malmberg     Update for Bash 4.2.39
 #==========================================================================
 #
-# POSIX exit mode is needed for UNIX shells.
+# POSIX exit mode is needed for Unix shells.
 export GNV_CC_MAIN_POSIX_EXIT=1
 #
 # Where to look for the helper files.
 export GNV_CC_MAIN_POSIX_EXIT=1
 #
 # Where to look for the helper files.
index fadbbcc..960c243 100644 (file)
@@ -354,7 +354,6 @@ $ endif
 $!
 $gnv_libcurl_share = "''default_dir'gnv$libcurl.exe"
 $!
 $!
 $gnv_libcurl_share = "''default_dir'gnv$libcurl.exe"
 $!
-$set ver
 $ if f$search(gnv_libcurl_share) .eqs. ""
 $ then
 $   if arch_name .nes. "VAX"
 $ if f$search(gnv_libcurl_share) .eqs. ""
 $ then
 $   if arch_name .nes. "VAX"
@@ -420,19 +419,17 @@ $   curl_dsf = "[.src]curl.dsf"
 $   curl_main = "[.packages.vms.''arch_name']tool_main.obj"
 $   curl_src = "[.packages.vms.''arch_name']curlsrc.olb"
 $   curl_lib = "[.packages.vms.''arch_name']curllib.olb"
 $   curl_main = "[.packages.vms.''arch_name']tool_main.obj"
 $   curl_src = "[.packages.vms.''arch_name']curlsrc.olb"
 $   curl_lib = "[.packages.vms.''arch_name']curllib.olb"
-$   strtoofft = "strtoofft"
-$   strdup = "strdup"
 $   rawstr = "rawstr"
 $   nonblock = "nonblock"
 $   rawstr = "rawstr"
 $   nonblock = "nonblock"
+$   warnless = "warnless"
 $!
 $!  Extended parse style requires special quoting
 $!
 $   if (arch_name .nes. "VAX") .and. (parse_style .eqs. "EXTENDED")
 $   then
 $!
 $!  Extended parse style requires special quoting
 $!
 $   if (arch_name .nes. "VAX") .and. (parse_style .eqs. "EXTENDED")
 $   then
-$       strtoofft = """strtoofft"""
-$       strdup = """strdup"""
 $       rawstr = """rawstr"""
 $       nonblock = """nonblock"""
 $       rawstr = """rawstr"""
 $       nonblock = """nonblock"""
+$       warnless = """warnless"""
 $   endif
 $   if f$search(curl_exe) .eqs. ""
 $   then
 $   endif
 $   if f$search(curl_exe) .eqs. ""
 $   then
@@ -440,7 +437,7 @@ $       define/user gnv$libcurl 'gnv_libcurl_share'
 $       link'ldebug'/exe='curl_exe'/dsf='curl_dsf' -
            'curl_main','curl_src'/lib, -
            'curl_lib'/library/include=-
 $       link'ldebug'/exe='curl_exe'/dsf='curl_dsf' -
            'curl_main','curl_src'/lib, -
            'curl_lib'/library/include=-
-           ('strtoofft', 'strdup', 'rawstr', 'nonblock'),-
+           ('rawstr','nonblock','warnless'),-
            gnv_packages_vms:curlmsg.obj,-
            sys$input:/opt
 gnv$libcurl/share
            gnv_packages_vms:curlmsg.obj,-
            sys$input:/opt
 gnv$libcurl/share
@@ -448,7 +445,7 @@ gnv_packages_vms:curl_crtl_init.obj
 $   endif
 $ endif
 $!
 $   endif
 $ endif
 $!
-$set nover
+$!
 $!
 $! in6addr_missing so skip building:
 $! [.server]sws.o
 $!
 $! in6addr_missing so skip building:
 $! [.server]sws.o
index d2150e6..5099fe4 100644 (file)
@@ -33,7 +33,7 @@ export GNV_CXX_QUALIFIERS=/DEBUG/OPTIMIZE/float=ieee/ieee_mode=denorm_results
 export GNV_CC_NO_INC_PRIMARY=1
 #
 #
 export GNV_CC_NO_INC_PRIMARY=1
 #
 #
-# POSIX exit mode is needed for UNIX shells.
+# POSIX exit mode is needed for Unix shells.
 export GNV_CC_MAIN_POSIX_EXIT=1
 make
 cd ../..
 export GNV_CC_MAIN_POSIX_EXIT=1
 make
 cd ../..
index 38a1a99..747cbd6 100644 (file)
@@ -61,6 +61,32 @@ $! Make sure that the kit name is up to date for this build
 $!----------------------------------------------------------
 $ @MAKE_PCSI_CURL_KIT_NAME.COM
 $!
 $!----------------------------------------------------------
 $ @MAKE_PCSI_CURL_KIT_NAME.COM
 $!
+$!
+$! Make sure that the image is built
+$!----------------------------------
+$ arch_name = f$edit(f$getsyi("arch_name"),"UPCASE")
+$ if f$search("[--.src]curl.exe") .eqs. ""
+$ then
+$   build_it = 1
+$   libfile = "[.packages.vms.''arch_name']curllib.olb"
+$   if f$search(libfile) .nes. ""
+$   then
+$       build_it = 0
+$   else
+$       ! GNV based build
+$       libfile = "[.lib.^.libs]libcurl.a"
+$       if f$search(libfile) .nes. ""
+$       then
+$           build_it = 0;
+$       endif
+$   endif
+$   if build_it .eq. 1
+$   then
+$       @build_vms list
+$   endif
+$   @gnv_link_curl.com
+$ endif
+$!
 $! Make sure that the release note file name is up to date
 $!---------------------------------------------------------
 $ @BUILD_GNV_CURL_RELEASE_NOTES.COM
 $! Make sure that the release note file name is up to date
 $!---------------------------------------------------------
 $ @BUILD_GNV_CURL_RELEASE_NOTES.COM
@@ -107,6 +133,8 @@ $ else
 $   version = "''mmversion'"
 $ endif
 $!
 $   version = "''mmversion'"
 $ endif
 $!
+$ @stage_curl_install remove
+$ @stage_curl_install
 $!
 $! Move to the base directories
 $ set def [--]
 $!
 $! Move to the base directories
 $ set def [--]
@@ -114,6 +142,7 @@ $ current_default = f$environment("DEFAULT")
 $ my_dir = f$parse(current_default,,,"DIRECTORY") - "[" - "<" - ">" - "]"
 $!
 $!
 $ my_dir = f$parse(current_default,,,"DIRECTORY") - "[" - "<" - ">" - "]"
 $!
 $!
+$!
 $ source = "''default_dir'"
 $ src1 = "new_gnu:[usr.bin],"
 $ src2 = "new_gnu:[usr.include.curl],"
 $ source = "''default_dir'"
 $ src1 = "new_gnu:[usr.bin],"
 $ src2 = "new_gnu:[usr.include.curl],"
@@ -128,7 +157,6 @@ $ gnu_src = src1 + src2 + src3 + src4 + src5 + src6 + src7 + src8 + src9
 $!
 $!
 $ base = ""
 $!
 $!
 $ base = ""
-$ arch_name = f$edit(f$getsyi("arch_name"),"UPCASE")
 $ if arch_name .eqs. "ALPHA" then base = "AXPVMS"
 $ if arch_name .eqs. "IA64" then base = "I64VMS"
 $ if arch_name .eqs. "VAX" then base = "VAXVMS"
 $ if arch_name .eqs. "ALPHA" then base = "AXPVMS"
 $ if arch_name .eqs. "IA64" then base = "I64VMS"
 $ if arch_name .eqs. "VAX" then base = "VAXVMS"
diff --git a/projects/README b/projects/README
new file mode 100644 (file)
index 0000000..b45d783
--- /dev/null
@@ -0,0 +1,125 @@
+Building via IDE Project Files
+==============================
+
+   This document describes how to compile, build and install curl and libcurl
+   from sources using an IDE based development tool such as Visual Studio.
+
+   Project files are currently available for Visual C++ v6.0 to v12.0. The
+   following directory structure has been used to cater for this:
+
+   somedirectory\
+    |_curl
+      |_projects
+        |_<platform>
+          |_<ide>
+            |_lib
+            |_src
+
+   This structure allows for side-by-side compilation of curl on the same
+   machine using different versions of a given compiler (for example VC8, VC9
+   and VC10) and allows for your own application or product to be compiled
+   against those variants of libcurl for example.
+
+   Note: Typically this side-by-side compilation is generally only required
+   when a library is being compiled against dynamic runtime libraries.
+
+Dependencies
+============
+
+   The projects files also support build configurations that require third
+   party dependencies such as OpenSSL and SSH2. If you wish to support these,
+   you will also need to download and compile those libraries as well.
+
+   To support compilation of these libraries using different versions of
+   compilers, the following directory structure has been used for both the
+   output of curl and libcurl as well as these dependencies.
+
+   somedirectory\
+    |_curl
+    | |_ build
+    |    |_<architecture>
+    |      |_<ide>
+    |        |_<configuration>
+    |          |_lib
+    |          |_src
+    |
+    |_openssl
+    | |_ build
+    |    |_<architecture>
+    |      |_VC <version>
+    |        |_<configuration>
+    |
+    |_libssh2
+      |_ build
+         |_<architecture>
+           |_VC <version>
+             |_<configuration>
+
+   As OpenSSL doesn't support side-by-side compilation when using different
+   versions of Visual Studio a build helper batch file has been provided to
+   assist with this. Please run "build-openssl -help" for usage details.
+
+Building with Visual C++
+========================
+
+   To build with VC++, you will of course have to first install VC++ which is
+   part of Visual Studio.
+
+   If you are building with VC6 then you will also need the February 2003
+   Edition of the Windows Platform SDK which can be downloaded from:
+
+    http://www.microsoft.com/en-us/download/details.aspx?id=12261
+
+   If you require support for Internationalized Domain Names via Windows IDN
+   then you will need either:
+
+    * Microsoft Internationalized Domain Name (IDN) Mitigation APIs:
+      http://www.microsoft.com/en-us/download/details.aspx?id=734
+
+    * Microsoft Windows SDK Update for Windows Vista:
+      http://www.microsoft.com/en-us/download/details.aspx?id=23719
+
+    * Microsoft Visual Studio 2010 or above
+
+   Once you have VC++ installed you should launch the application and open one
+   of the solution or workspace files.
+
+   Whilst files are provided for both libcurl and the curl command line tool as
+   well as a configuration that includes both, it is recommend that you use the
+   all-in-one configuration.
+
+Notes
+=====
+
+   The following keywords have been used in the directory hierarchy:
+   
+   <platform>      - The platform (For example: Windows)
+   <ide>           - The IDE (For example: VC6, VC10, BCC5)
+   <architecture>  - The platform architecture (For example: Win32, Win64)
+   <configuration> - The target configuration (For example: DLL Debug,
+                     LIB Release - LIB OpenSSL)
+
+   If you are using the source code from the git repository, rather than a
+   release archive or nightly build, you will need to generate the project
+   files. Please run "generate -help" for usage details. 
+
+   Should you wish to help out with some of the items on the TODO list, or
+   find bugs in the project files that need correcting, and would like to
+   submit updated files back then please note that, whilst the solution files
+   can be edited directly, the templates for the project files (which are 
+   stored in the git repositoty) will need to be modified rather than the
+   generated project files that Visual Studio uses.
+
+TODO
+====
+
+   These project files are a recent addition to the curl source code and as such
+   are not 100% complete. This is a list of things that are still todo:
+
+   * Support zlib
+   * Use of static runtime libraries
+   * Generate *.vcxproj.filters files for VC10, VC11 and VC12
+   * Add the Test Suite components
+   * Support for other development IDEs
+
+   Any additional help would be appreciated ;-)
\ No newline at end of file
diff --git a/projects/Windows/VC10/curl.sln b/projects/Windows/VC10/curl.sln
new file mode 100644 (file)
index 0000000..4501272
--- /dev/null
@@ -0,0 +1,258 @@
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "src\curlsrc.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+       ProjectSection(ProjectDependencies) = postProject
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} = {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}
+       EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "lib\libcurl.vcxproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32
+               DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
+               DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+               DLL Debug|Win32 = DLL Debug|Win32
+               DLL Debug|x64 = DLL Debug|x64
+               DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32
+               DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64
+               DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
+               DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+               DLL Release|Win32 = DLL Release|Win32
+               DLL Release|x64 = DLL Release|x64
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32
+               LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32
+               LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
+               LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+               LIB Debug|Win32 = LIB Debug|Win32
+               LIB Debug|x64 = LIB Debug|x64
+               LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32
+               LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64
+               LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32
+               LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64
+               LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
+               LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+               LIB Release|Win32 = LIB Release|Win32
+               LIB Release|x64 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.Build.0 = DLL Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.Build.0 = DLL Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.Build.0 = LIB Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.Build.0 = LIB Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.Build.0 = DLL Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.Build.0 = LIB Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.Build.0 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+EndGlobal
diff --git a/projects/Windows/VC10/lib/libcurl.sln b/projects/Windows/VC10/lib/libcurl.sln
new file mode 100644 (file)
index 0000000..f29eccd
--- /dev/null
@@ -0,0 +1,157 @@
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "libcurl.vcxproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32
+               DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
+               DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+               DLL Debug|Win32 = DLL Debug|Win32
+               DLL Debug|x64 = DLL Debug|x64
+               DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32
+               DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64
+               DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
+               DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+               DLL Release|Win32 = DLL Release|Win32
+               DLL Release|x64 = DLL Release|x64
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32
+               LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32
+               LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
+               LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+               LIB Debug|Win32 = LIB Debug|Win32
+               LIB Debug|x64 = LIB Debug|x64
+               LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32
+               LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64
+               LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32
+               LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64
+               LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
+               LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+               LIB Release|Win32 = LIB Release|Win32
+               LIB Release|x64 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.Build.0 = DLL Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.Build.0 = LIB Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.Build.0 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+EndGlobal
diff --git a/projects/Windows/VC10/lib/libcurl.vcxproj b/projects/Windows/VC10/lib/libcurl.vcxproj
new file mode 100644 (file)
index 0000000..5023bf7
--- /dev/null
@@ -0,0 +1,2588 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|Win32">\r
+      <Configuration>DLL Debug - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|x64">\r
+      <Configuration>DLL Debug - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|Win32">\r
+      <Configuration>DLL Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|x64">\r
+      <Configuration>DLL Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug|Win32">\r
+      <Configuration>DLL Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug|x64">\r
+      <Configuration>DLL Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL|Win32">\r
+      <Configuration>DLL Release - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL|x64">\r
+      <Configuration>DLL Release - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|Win32">\r
+      <Configuration>DLL Release - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|x64">\r
+      <Configuration>DLL Release - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release|Win32">\r
+      <Configuration>DLL Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release|x64">\r
+      <Configuration>DLL Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|Win32">\r
+      <Configuration>LIB Debug - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|x64">\r
+      <Configuration>LIB Debug - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|Win32">\r
+      <Configuration>LIB Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|x64">\r
+      <Configuration>LIB Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32">\r
+      <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|x64">\r
+      <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|Win32">\r
+      <Configuration>LIB Debug - LIB OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|x64">\r
+      <Configuration>LIB Debug - LIB OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug|Win32">\r
+      <Configuration>LIB Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug|x64">\r
+      <Configuration>LIB Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL|Win32">\r
+      <Configuration>LIB Release - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL|x64">\r
+      <Configuration>LIB Release - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|Win32">\r
+      <Configuration>LIB Release - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|x64">\r
+      <Configuration>LIB Release - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32">\r
+      <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|x64">\r
+      <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL|Win32">\r
+      <Configuration>LIB Release - LIB OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL|x64">\r
+      <Configuration>LIB Release - LIB OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release|Win32">\r
+      <Configuration>LIB Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release|x64">\r
+      <Configuration>LIB Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}</ProjectGuid>\r
+    <RootNamespace>libcurl</RootNamespace>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC10\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC10\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC10\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC10\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="..\..\..\..\lib\amigaos.c" />\r
+    <ClCompile Include="..\..\..\..\lib\asyn-ares.c" />\r
+    <ClCompile Include="..\..\..\..\lib\asyn-thread.c" />\r
+    <ClCompile Include="..\..\..\..\lib\base64.c" />\r
+    <ClCompile Include="..\..\..\..\lib\bundles.c" />\r
+    <ClCompile Include="..\..\..\..\lib\conncache.c" />\r
+    <ClCompile Include="..\..\..\..\lib\connect.c" />\r
+    <ClCompile Include="..\..\..\..\lib\content_encoding.c" />\r
+    <ClCompile Include="..\..\..\..\lib\cookie.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_endian.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_gethostname.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_gssapi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_memrchr.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_multibyte.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_ntlm.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_ntlm_core.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_ntlm_msgs.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_ntlm_wb.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_rtmp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_sasl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_sasl_gssapi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_sasl_sspi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_sspi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_threads.c" />\r
+    <ClCompile Include="..\..\..\..\lib\dict.c" />\r
+    <ClCompile Include="..\..\..\..\lib\dotdot.c" />\r
+    <ClCompile Include="..\..\..\..\lib\easy.c" />\r
+    <ClCompile Include="..\..\..\..\lib\escape.c" />\r
+    <ClCompile Include="..\..\..\..\lib\file.c" />\r
+    <ClCompile Include="..\..\..\..\lib\fileinfo.c" />\r
+    <ClCompile Include="..\..\..\..\lib\formdata.c" />\r
+    <ClCompile Include="..\..\..\..\lib\ftp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\ftplistparser.c" />\r
+    <ClCompile Include="..\..\..\..\lib\getenv.c" />\r
+    <ClCompile Include="..\..\..\..\lib\getinfo.c" />\r
+    <ClCompile Include="..\..\..\..\lib\gopher.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hash.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hmac.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hostasyn.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hostcheck.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hostip4.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hostip6.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hostip.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hostsyn.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http2.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http_chunks.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http_digest.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http_negotiate.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http_negotiate_sspi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http_proxy.c" />\r
+    <ClCompile Include="..\..\..\..\lib\idn_win32.c" />\r
+    <ClCompile Include="..\..\..\..\lib\if2ip.c" />\r
+    <ClCompile Include="..\..\..\..\lib\imap.c" />\r
+    <ClCompile Include="..\..\..\..\lib\inet_ntop.c" />\r
+    <ClCompile Include="..\..\..\..\lib\inet_pton.c" />\r
+    <ClCompile Include="..\..\..\..\lib\krb5.c" />\r
+    <ClCompile Include="..\..\..\..\lib\ldap.c" />\r
+    <ClCompile Include="..\..\..\..\lib\llist.c" />\r
+    <ClCompile Include="..\..\..\..\lib\md4.c" />\r
+    <ClCompile Include="..\..\..\..\lib\md5.c" />\r
+    <ClCompile Include="..\..\..\..\lib\memdebug.c" />\r
+    <ClCompile Include="..\..\..\..\lib\mprintf.c" />\r
+    <ClCompile Include="..\..\..\..\lib\multi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\netrc.c" />\r
+    <ClCompile Include="..\..\..\..\lib\non-ascii.c" />\r
+    <ClCompile Include="..\..\..\..\lib\nonblock.c" />\r
+    <ClCompile Include="..\..\..\..\lib\openldap.c" />\r
+    <ClCompile Include="..\..\..\..\lib\parsedate.c" />\r
+    <ClCompile Include="..\..\..\..\lib\pingpong.c" />\r
+    <ClCompile Include="..\..\..\..\lib\pipeline.c" />\r
+    <ClCompile Include="..\..\..\..\lib\pop3.c" />\r
+    <ClCompile Include="..\..\..\..\lib\progress.c" />\r
+    <ClCompile Include="..\..\..\..\lib\rawstr.c" />\r
+    <ClCompile Include="..\..\..\..\lib\rtsp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\security.c" />\r
+    <ClCompile Include="..\..\..\..\lib\select.c" />\r
+    <ClCompile Include="..\..\..\..\lib\sendf.c" />\r
+    <ClCompile Include="..\..\..\..\lib\share.c" />\r
+    <ClCompile Include="..\..\..\..\lib\slist.c" />\r
+    <ClCompile Include="..\..\..\..\lib\smb.c" />\r
+    <ClCompile Include="..\..\..\..\lib\smtp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\socks.c" />\r
+    <ClCompile Include="..\..\..\..\lib\socks_gssapi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\socks_sspi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\speedcheck.c" />\r
+    <ClCompile Include="..\..\..\..\lib\splay.c" />\r
+    <ClCompile Include="..\..\..\..\lib\ssh.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strdup.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strequal.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strerror.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strtok.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strtoofft.c" />\r
+    <ClCompile Include="..\..\..\..\lib\telnet.c" />\r
+    <ClCompile Include="..\..\..\..\lib\tftp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\timeval.c" />\r
+    <ClCompile Include="..\..\..\..\lib\transfer.c" />\r
+    <ClCompile Include="..\..\..\..\lib\url.c" />\r
+    <ClCompile Include="..\..\..\..\lib\version.c" />\r
+    <ClCompile Include="..\..\..\..\lib\warnless.c" />\r
+    <ClCompile Include="..\..\..\..\lib\wildcard.c" />\r
+    <ClCompile Include="..\..\..\..\lib\x509asn1.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\axtls.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\curl_darwinssl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\curl_schannel.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\cyassl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\polarssl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\polarssl_threadlock.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="..\..\..\..\lib\amigaos.h" />\r
+    <ClInclude Include="..\..\..\..\lib\arpa_telnet.h" />\r
+    <ClInclude Include="..\..\..\..\lib\asyn.h" />\r
+    <ClInclude Include="..\..\..\..\lib\bundles.h" />\r
+    <ClInclude Include="..\..\..\..\lib\config-win32.h" />\r
+    <ClInclude Include="..\..\..\..\lib\conncache.h" />\r
+    <ClInclude Include="..\..\..\..\lib\connect.h" />\r
+    <ClInclude Include="..\..\..\..\lib\content_encoding.h" />\r
+    <ClInclude Include="..\..\..\..\lib\cookie.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_addrinfo.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_base64.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_endian.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_fnmatch.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_gethostname.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_gssapi.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_hmac.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_ldap.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_md4.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_md5.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_memory.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_memrchr.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_multibyte.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_ntlm_core.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_ntlm.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_ntlm_msgs.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_ntlm_wb.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_rtmp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_sasl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_sec.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_setup.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_setup_once.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_sspi.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_threads.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curlx.h" />\r
+    <ClInclude Include="..\..\..\..\lib\dict.h" />\r
+    <ClInclude Include="..\..\..\..\lib\dotdot.h" />\r
+    <ClInclude Include="..\..\..\..\lib\easyif.h" />\r
+    <ClInclude Include="..\..\..\..\lib\escape.h" />\r
+    <ClInclude Include="..\..\..\..\lib\file.h" />\r
+    <ClInclude Include="..\..\..\..\lib\fileinfo.h" />\r
+    <ClInclude Include="..\..\..\..\lib\formdata.h" />\r
+    <ClInclude Include="..\..\..\..\lib\ftp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\ftplistparser.h" />\r
+    <ClInclude Include="..\..\..\..\lib\getinfo.h" />\r
+    <ClInclude Include="..\..\..\..\lib\gopher.h" />\r
+    <ClInclude Include="..\..\..\..\lib\hash.h" />\r
+    <ClInclude Include="..\..\..\..\lib\hostcheck.h" />\r
+    <ClInclude Include="..\..\..\..\lib\hostip.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http2.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http_chunks.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http_digest.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http_negotiate.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http_proxy.h" />\r
+    <ClInclude Include="..\..\..\..\lib\if2ip.h" />\r
+    <ClInclude Include="..\..\..\..\lib\imap.h" />\r
+    <ClInclude Include="..\..\..\..\lib\inet_ntop.h" />\r
+    <ClInclude Include="..\..\..\..\lib\inet_pton.h" />\r
+    <ClInclude Include="..\..\..\..\lib\llist.h" />\r
+    <ClInclude Include="..\..\..\..\lib\memdebug.h" />\r
+    <ClInclude Include="..\..\..\..\lib\multihandle.h" />\r
+    <ClInclude Include="..\..\..\..\lib\multiif.h" />\r
+    <ClInclude Include="..\..\..\..\lib\netrc.h" />\r
+    <ClInclude Include="..\..\..\..\lib\non-ascii.h" />\r
+    <ClInclude Include="..\..\..\..\lib\nonblock.h" />\r
+    <ClInclude Include="..\..\..\..\lib\parsedate.h" />\r
+    <ClInclude Include="..\..\..\..\lib\pingpong.h" />\r
+    <ClInclude Include="..\..\..\..\lib\pipeline.h" />\r
+    <ClInclude Include="..\..\..\..\lib\pop3.h" />\r
+    <ClInclude Include="..\..\..\..\lib\progress.h" />\r
+    <ClInclude Include="..\..\..\..\lib\rawstr.h" />\r
+    <ClInclude Include="..\..\..\..\lib\rtsp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\select.h" />\r
+    <ClInclude Include="..\..\..\..\lib\sendf.h" />\r
+    <ClInclude Include="..\..\..\..\lib\setup-vms.h" />\r
+    <ClInclude Include="..\..\..\..\lib\share.h" />\r
+    <ClInclude Include="..\..\..\..\lib\sigpipe.h" />\r
+    <ClInclude Include="..\..\..\..\lib\slist.h" />\r
+    <ClInclude Include="..\..\..\..\lib\smb.h" />\r
+    <ClInclude Include="..\..\..\..\lib\smtp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\sockaddr.h" />\r
+    <ClInclude Include="..\..\..\..\lib\socks.h" />\r
+    <ClInclude Include="..\..\..\..\lib\speedcheck.h" />\r
+    <ClInclude Include="..\..\..\..\lib\splay.h" />\r
+    <ClInclude Include="..\..\..\..\lib\ssh.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strdup.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strequal.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strerror.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strtok.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strtoofft.h" />\r
+    <ClInclude Include="..\..\..\..\lib\telnet.h" />\r
+    <ClInclude Include="..\..\..\..\lib\tftp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\timeval.h" />\r
+    <ClInclude Include="..\..\..\..\lib\transfer.h" />\r
+    <ClInclude Include="..\..\..\..\lib\urldata.h" />\r
+    <ClInclude Include="..\..\..\..\lib\url.h" />\r
+    <ClInclude Include="..\..\..\..\lib\warnless.h" />\r
+    <ClInclude Include="..\..\..\..\lib\wildcard.h" />\r
+    <ClInclude Include="..\..\..\..\lib\x509asn1.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\axtls.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\curl_darwinssl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\curl_schannel.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\cyassl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\polarssl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\polarssl_threadlock.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ResourceCompile Include="..\..\..\..\lib\libcurl.rc" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>\r
diff --git a/projects/Windows/VC10/src/curlsrc.sln b/projects/Windows/VC10/src/curlsrc.sln
new file mode 100644 (file)
index 0000000..13fc1d3
--- /dev/null
@@ -0,0 +1,157 @@
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "curlsrc.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32
+               DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
+               DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+               DLL Debug|Win32 = DLL Debug|Win32
+               DLL Debug|x64 = DLL Debug|x64
+               DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32
+               DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64
+               DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
+               DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+               DLL Release|Win32 = DLL Release|Win32
+               DLL Release|x64 = DLL Release|x64
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32
+               LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32
+               LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
+               LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+               LIB Debug|Win32 = LIB Debug|Win32
+               LIB Debug|x64 = LIB Debug|x64
+               LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32
+               LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64
+               LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32
+               LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64
+               LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
+               LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+               LIB Release|Win32 = LIB Release|Win32
+               LIB Release|x64 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.Build.0 = DLL Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.Build.0 = DLL Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.Build.0 = LIB Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.Build.0 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+EndGlobal
diff --git a/projects/Windows/VC10/src/curlsrc.vcxproj b/projects/Windows/VC10/src/curlsrc.vcxproj
new file mode 100644 (file)
index 0000000..d259465
--- /dev/null
@@ -0,0 +1,2782 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|Win32">\r
+      <Configuration>DLL Debug - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|x64">\r
+      <Configuration>DLL Debug - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|Win32">\r
+      <Configuration>DLL Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|x64">\r
+      <Configuration>DLL Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug|Win32">\r
+      <Configuration>DLL Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug|x64">\r
+      <Configuration>DLL Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL|Win32">\r
+      <Configuration>DLL Release - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL|x64">\r
+      <Configuration>DLL Release - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|Win32">\r
+      <Configuration>DLL Release - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|x64">\r
+      <Configuration>DLL Release - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release|Win32">\r
+      <Configuration>DLL Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release|x64">\r
+      <Configuration>DLL Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|Win32">\r
+      <Configuration>LIB Debug - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|x64">\r
+      <Configuration>LIB Debug - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|Win32">\r
+      <Configuration>LIB Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|x64">\r
+      <Configuration>LIB Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32">\r
+      <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|x64">\r
+      <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|Win32">\r
+      <Configuration>LIB Debug - LIB OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|x64">\r
+      <Configuration>LIB Debug - LIB OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug|Win32">\r
+      <Configuration>LIB Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug|x64">\r
+      <Configuration>LIB Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL|Win32">\r
+      <Configuration>LIB Release - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL|x64">\r
+      <Configuration>LIB Release - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|Win32">\r
+      <Configuration>LIB Release - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|x64">\r
+      <Configuration>LIB Release - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32">\r
+      <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|x64">\r
+      <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL|Win32">\r
+      <Configuration>LIB Release - LIB OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL|x64">\r
+      <Configuration>LIB Release - LIB OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release|Win32">\r
+      <Configuration>LIB Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release|x64">\r
+      <Configuration>LIB Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{5228E9CE-A216-422F-A5E6-58E95E2DD71D}</ProjectGuid>\r
+    <RootNamespace>curlsrc</RootNamespace>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">curl</TargetName>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libssh2.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="..\..\..\..\lib\nonblock.c" />\r
+    <ClCompile Include="..\..\..\..\lib\rawstr.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strtoofft.c" />\r
+    <ClCompile Include="..\..\..\..\lib\warnless.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_binmode.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_bname.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_dbg.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_hdr.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_prg.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_rea.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_see.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_wrt.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cfgable.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_convert.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_dirhie.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_doswin.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_easysrc.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_formparse.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_getparam.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_getpass.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_help.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_helpers.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_homedir.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_hugehelp.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_libinfo.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_main.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_metalink.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_mfiles.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_msgs.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_operate.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_operhlp.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_panykey.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_paramhlp.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_parsecfg.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_setopt.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_sleep.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_strdup.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_urlglob.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_util.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_vms.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_writeenv.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_writeout.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_xattr.c" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="..\..\..\..\lib\config-win32.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_setup.h" />\r
+    <ClInclude Include="..\..\..\..\lib\nonblock.h" />\r
+    <ClInclude Include="..\..\..\..\lib\rawstr.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strtoofft.h" />\r
+    <ClInclude Include="..\..\..\..\lib\warnless.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_binmode.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_bname.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_dbg.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_hdr.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_prg.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_rea.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_see.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_wrt.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cfgable.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_convert.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_dirhie.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_doswin.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_easysrc.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_formparse.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_getparam.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_getpass.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_helpers.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_help.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_homedir.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_hugehelp.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_libinfo.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_main.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_metalink.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_mfiles.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_msgs.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_operate.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_operhlp.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_panykey.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_paramhlp.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_parsecfg.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_sdecls.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_setopt.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_setup.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_sleep.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_strdup.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_urlglob.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_util.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_version.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_vms.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_writeenv.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_writeout.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_xattr.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ResourceCompile Include="..\..\..\..\src\curl.rc" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>\r
diff --git a/projects/Windows/VC11/curl.sln b/projects/Windows/VC11/curl.sln
new file mode 100644 (file)
index 0000000..c9085a9
--- /dev/null
@@ -0,0 +1,258 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2012
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "src\curlsrc.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+       ProjectSection(ProjectDependencies) = postProject
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} = {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}
+       EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "lib\libcurl.vcxproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32
+               DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
+               DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+               DLL Debug|Win32 = DLL Debug|Win32
+               DLL Debug|x64 = DLL Debug|x64
+               DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32
+               DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64
+               DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
+               DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+               DLL Release|Win32 = DLL Release|Win32
+               DLL Release|x64 = DLL Release|x64
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32
+               LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32
+               LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
+               LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+               LIB Debug|Win32 = LIB Debug|Win32
+               LIB Debug|x64 = LIB Debug|x64
+               LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32
+               LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64
+               LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32
+               LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64
+               LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
+               LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+               LIB Release|Win32 = LIB Release|Win32
+               LIB Release|x64 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.Build.0 = DLL Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.Build.0 = DLL Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.Build.0 = LIB Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.Build.0 = LIB Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.Build.0 = DLL Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.Build.0 = LIB Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.Build.0 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+EndGlobal
diff --git a/projects/Windows/VC11/lib/libcurl.sln b/projects/Windows/VC11/lib/libcurl.sln
new file mode 100644 (file)
index 0000000..9e3b9ed
--- /dev/null
@@ -0,0 +1,157 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2012
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "libcurl.vcxproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32
+               DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
+               DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+               DLL Debug|Win32 = DLL Debug|Win32
+               DLL Debug|x64 = DLL Debug|x64
+               DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32
+               DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64
+               DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
+               DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+               DLL Release|Win32 = DLL Release|Win32
+               DLL Release|x64 = DLL Release|x64
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32
+               LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32
+               LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
+               LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+               LIB Debug|Win32 = LIB Debug|Win32
+               LIB Debug|x64 = LIB Debug|x64
+               LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32
+               LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64
+               LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32
+               LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64
+               LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
+               LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+               LIB Release|Win32 = LIB Release|Win32
+               LIB Release|x64 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.Build.0 = DLL Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.Build.0 = LIB Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.Build.0 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+EndGlobal
diff --git a/projects/Windows/VC11/lib/libcurl.vcxproj b/projects/Windows/VC11/lib/libcurl.vcxproj
new file mode 100644 (file)
index 0000000..6a13105
--- /dev/null
@@ -0,0 +1,2636 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|Win32">\r
+      <Configuration>DLL Debug - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|x64">\r
+      <Configuration>DLL Debug - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|Win32">\r
+      <Configuration>DLL Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|x64">\r
+      <Configuration>DLL Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug|Win32">\r
+      <Configuration>DLL Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug|x64">\r
+      <Configuration>DLL Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL|Win32">\r
+      <Configuration>DLL Release - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL|x64">\r
+      <Configuration>DLL Release - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|Win32">\r
+      <Configuration>DLL Release - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|x64">\r
+      <Configuration>DLL Release - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release|Win32">\r
+      <Configuration>DLL Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release|x64">\r
+      <Configuration>DLL Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|Win32">\r
+      <Configuration>LIB Debug - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|x64">\r
+      <Configuration>LIB Debug - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|Win32">\r
+      <Configuration>LIB Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|x64">\r
+      <Configuration>LIB Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32">\r
+      <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|x64">\r
+      <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|Win32">\r
+      <Configuration>LIB Debug - LIB OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|x64">\r
+      <Configuration>LIB Debug - LIB OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug|Win32">\r
+      <Configuration>LIB Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug|x64">\r
+      <Configuration>LIB Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL|Win32">\r
+      <Configuration>LIB Release - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL|x64">\r
+      <Configuration>LIB Release - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|Win32">\r
+      <Configuration>LIB Release - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|x64">\r
+      <Configuration>LIB Release - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32">\r
+      <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|x64">\r
+      <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL|Win32">\r
+      <Configuration>LIB Release - LIB OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL|x64">\r
+      <Configuration>LIB Release - LIB OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release|Win32">\r
+      <Configuration>LIB Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release|x64">\r
+      <Configuration>LIB Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}</ProjectGuid>\r
+    <RootNamespace>libcurl</RootNamespace>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC11\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC11\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC11\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC11\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="..\..\..\..\lib\amigaos.c" />\r
+    <ClCompile Include="..\..\..\..\lib\asyn-ares.c" />\r
+    <ClCompile Include="..\..\..\..\lib\asyn-thread.c" />\r
+    <ClCompile Include="..\..\..\..\lib\base64.c" />\r
+    <ClCompile Include="..\..\..\..\lib\bundles.c" />\r
+    <ClCompile Include="..\..\..\..\lib\conncache.c" />\r
+    <ClCompile Include="..\..\..\..\lib\connect.c" />\r
+    <ClCompile Include="..\..\..\..\lib\content_encoding.c" />\r
+    <ClCompile Include="..\..\..\..\lib\cookie.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_endian.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_gethostname.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_gssapi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_memrchr.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_multibyte.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_ntlm.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_ntlm_core.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_ntlm_msgs.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_ntlm_wb.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_rtmp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_sasl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_sasl_gssapi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_sasl_sspi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_sspi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_threads.c" />\r
+    <ClCompile Include="..\..\..\..\lib\dict.c" />\r
+    <ClCompile Include="..\..\..\..\lib\dotdot.c" />\r
+    <ClCompile Include="..\..\..\..\lib\easy.c" />\r
+    <ClCompile Include="..\..\..\..\lib\escape.c" />\r
+    <ClCompile Include="..\..\..\..\lib\file.c" />\r
+    <ClCompile Include="..\..\..\..\lib\fileinfo.c" />\r
+    <ClCompile Include="..\..\..\..\lib\formdata.c" />\r
+    <ClCompile Include="..\..\..\..\lib\ftp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\ftplistparser.c" />\r
+    <ClCompile Include="..\..\..\..\lib\getenv.c" />\r
+    <ClCompile Include="..\..\..\..\lib\getinfo.c" />\r
+    <ClCompile Include="..\..\..\..\lib\gopher.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hash.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hmac.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hostasyn.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hostcheck.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hostip4.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hostip6.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hostip.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hostsyn.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http2.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http_chunks.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http_digest.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http_negotiate.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http_negotiate_sspi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http_proxy.c" />\r
+    <ClCompile Include="..\..\..\..\lib\idn_win32.c" />\r
+    <ClCompile Include="..\..\..\..\lib\if2ip.c" />\r
+    <ClCompile Include="..\..\..\..\lib\imap.c" />\r
+    <ClCompile Include="..\..\..\..\lib\inet_ntop.c" />\r
+    <ClCompile Include="..\..\..\..\lib\inet_pton.c" />\r
+    <ClCompile Include="..\..\..\..\lib\krb5.c" />\r
+    <ClCompile Include="..\..\..\..\lib\ldap.c" />\r
+    <ClCompile Include="..\..\..\..\lib\llist.c" />\r
+    <ClCompile Include="..\..\..\..\lib\md4.c" />\r
+    <ClCompile Include="..\..\..\..\lib\md5.c" />\r
+    <ClCompile Include="..\..\..\..\lib\memdebug.c" />\r
+    <ClCompile Include="..\..\..\..\lib\mprintf.c" />\r
+    <ClCompile Include="..\..\..\..\lib\multi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\netrc.c" />\r
+    <ClCompile Include="..\..\..\..\lib\non-ascii.c" />\r
+    <ClCompile Include="..\..\..\..\lib\nonblock.c" />\r
+    <ClCompile Include="..\..\..\..\lib\openldap.c" />\r
+    <ClCompile Include="..\..\..\..\lib\parsedate.c" />\r
+    <ClCompile Include="..\..\..\..\lib\pingpong.c" />\r
+    <ClCompile Include="..\..\..\..\lib\pipeline.c" />\r
+    <ClCompile Include="..\..\..\..\lib\pop3.c" />\r
+    <ClCompile Include="..\..\..\..\lib\progress.c" />\r
+    <ClCompile Include="..\..\..\..\lib\rawstr.c" />\r
+    <ClCompile Include="..\..\..\..\lib\rtsp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\security.c" />\r
+    <ClCompile Include="..\..\..\..\lib\select.c" />\r
+    <ClCompile Include="..\..\..\..\lib\sendf.c" />\r
+    <ClCompile Include="..\..\..\..\lib\share.c" />\r
+    <ClCompile Include="..\..\..\..\lib\slist.c" />\r
+    <ClCompile Include="..\..\..\..\lib\smb.c" />\r
+    <ClCompile Include="..\..\..\..\lib\smtp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\socks.c" />\r
+    <ClCompile Include="..\..\..\..\lib\socks_gssapi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\socks_sspi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\speedcheck.c" />\r
+    <ClCompile Include="..\..\..\..\lib\splay.c" />\r
+    <ClCompile Include="..\..\..\..\lib\ssh.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strdup.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strequal.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strerror.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strtok.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strtoofft.c" />\r
+    <ClCompile Include="..\..\..\..\lib\telnet.c" />\r
+    <ClCompile Include="..\..\..\..\lib\tftp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\timeval.c" />\r
+    <ClCompile Include="..\..\..\..\lib\transfer.c" />\r
+    <ClCompile Include="..\..\..\..\lib\url.c" />\r
+    <ClCompile Include="..\..\..\..\lib\version.c" />\r
+    <ClCompile Include="..\..\..\..\lib\warnless.c" />\r
+    <ClCompile Include="..\..\..\..\lib\wildcard.c" />\r
+    <ClCompile Include="..\..\..\..\lib\x509asn1.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\axtls.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\curl_darwinssl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\curl_schannel.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\cyassl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\polarssl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\polarssl_threadlock.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="..\..\..\..\lib\amigaos.h" />\r
+    <ClInclude Include="..\..\..\..\lib\arpa_telnet.h" />\r
+    <ClInclude Include="..\..\..\..\lib\asyn.h" />\r
+    <ClInclude Include="..\..\..\..\lib\bundles.h" />\r
+    <ClInclude Include="..\..\..\..\lib\config-win32.h" />\r
+    <ClInclude Include="..\..\..\..\lib\conncache.h" />\r
+    <ClInclude Include="..\..\..\..\lib\connect.h" />\r
+    <ClInclude Include="..\..\..\..\lib\content_encoding.h" />\r
+    <ClInclude Include="..\..\..\..\lib\cookie.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_addrinfo.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_base64.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_endian.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_fnmatch.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_gethostname.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_gssapi.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_hmac.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_ldap.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_md4.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_md5.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_memory.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_memrchr.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_multibyte.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_ntlm_core.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_ntlm.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_ntlm_msgs.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_ntlm_wb.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_rtmp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_sasl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_sec.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_setup.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_setup_once.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_sspi.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_threads.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curlx.h" />\r
+    <ClInclude Include="..\..\..\..\lib\dict.h" />\r
+    <ClInclude Include="..\..\..\..\lib\dotdot.h" />\r
+    <ClInclude Include="..\..\..\..\lib\easyif.h" />\r
+    <ClInclude Include="..\..\..\..\lib\escape.h" />\r
+    <ClInclude Include="..\..\..\..\lib\file.h" />\r
+    <ClInclude Include="..\..\..\..\lib\fileinfo.h" />\r
+    <ClInclude Include="..\..\..\..\lib\formdata.h" />\r
+    <ClInclude Include="..\..\..\..\lib\ftp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\ftplistparser.h" />\r
+    <ClInclude Include="..\..\..\..\lib\getinfo.h" />\r
+    <ClInclude Include="..\..\..\..\lib\gopher.h" />\r
+    <ClInclude Include="..\..\..\..\lib\hash.h" />\r
+    <ClInclude Include="..\..\..\..\lib\hostcheck.h" />\r
+    <ClInclude Include="..\..\..\..\lib\hostip.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http2.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http_chunks.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http_digest.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http_negotiate.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http_proxy.h" />\r
+    <ClInclude Include="..\..\..\..\lib\if2ip.h" />\r
+    <ClInclude Include="..\..\..\..\lib\imap.h" />\r
+    <ClInclude Include="..\..\..\..\lib\inet_ntop.h" />\r
+    <ClInclude Include="..\..\..\..\lib\inet_pton.h" />\r
+    <ClInclude Include="..\..\..\..\lib\llist.h" />\r
+    <ClInclude Include="..\..\..\..\lib\memdebug.h" />\r
+    <ClInclude Include="..\..\..\..\lib\multihandle.h" />\r
+    <ClInclude Include="..\..\..\..\lib\multiif.h" />\r
+    <ClInclude Include="..\..\..\..\lib\netrc.h" />\r
+    <ClInclude Include="..\..\..\..\lib\non-ascii.h" />\r
+    <ClInclude Include="..\..\..\..\lib\nonblock.h" />\r
+    <ClInclude Include="..\..\..\..\lib\parsedate.h" />\r
+    <ClInclude Include="..\..\..\..\lib\pingpong.h" />\r
+    <ClInclude Include="..\..\..\..\lib\pipeline.h" />\r
+    <ClInclude Include="..\..\..\..\lib\pop3.h" />\r
+    <ClInclude Include="..\..\..\..\lib\progress.h" />\r
+    <ClInclude Include="..\..\..\..\lib\rawstr.h" />\r
+    <ClInclude Include="..\..\..\..\lib\rtsp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\select.h" />\r
+    <ClInclude Include="..\..\..\..\lib\sendf.h" />\r
+    <ClInclude Include="..\..\..\..\lib\setup-vms.h" />\r
+    <ClInclude Include="..\..\..\..\lib\share.h" />\r
+    <ClInclude Include="..\..\..\..\lib\sigpipe.h" />\r
+    <ClInclude Include="..\..\..\..\lib\slist.h" />\r
+    <ClInclude Include="..\..\..\..\lib\smb.h" />\r
+    <ClInclude Include="..\..\..\..\lib\smtp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\sockaddr.h" />\r
+    <ClInclude Include="..\..\..\..\lib\socks.h" />\r
+    <ClInclude Include="..\..\..\..\lib\speedcheck.h" />\r
+    <ClInclude Include="..\..\..\..\lib\splay.h" />\r
+    <ClInclude Include="..\..\..\..\lib\ssh.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strdup.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strequal.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strerror.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strtok.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strtoofft.h" />\r
+    <ClInclude Include="..\..\..\..\lib\telnet.h" />\r
+    <ClInclude Include="..\..\..\..\lib\tftp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\timeval.h" />\r
+    <ClInclude Include="..\..\..\..\lib\transfer.h" />\r
+    <ClInclude Include="..\..\..\..\lib\urldata.h" />\r
+    <ClInclude Include="..\..\..\..\lib\url.h" />\r
+    <ClInclude Include="..\..\..\..\lib\warnless.h" />\r
+    <ClInclude Include="..\..\..\..\lib\wildcard.h" />\r
+    <ClInclude Include="..\..\..\..\lib\x509asn1.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\axtls.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\curl_darwinssl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\curl_schannel.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\cyassl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\polarssl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\polarssl_threadlock.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ResourceCompile Include="..\..\..\..\lib\libcurl.rc" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>\r
diff --git a/projects/Windows/VC11/src/curlsrc.sln b/projects/Windows/VC11/src/curlsrc.sln
new file mode 100644 (file)
index 0000000..88b4f7e
--- /dev/null
@@ -0,0 +1,157 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2012
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "curlsrc.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32
+               DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
+               DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+               DLL Debug|Win32 = DLL Debug|Win32
+               DLL Debug|x64 = DLL Debug|x64
+               DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32
+               DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64
+               DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
+               DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+               DLL Release|Win32 = DLL Release|Win32
+               DLL Release|x64 = DLL Release|x64
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32
+               LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32
+               LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
+               LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+               LIB Debug|Win32 = LIB Debug|Win32
+               LIB Debug|x64 = LIB Debug|x64
+               LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32
+               LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64
+               LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32
+               LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64
+               LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
+               LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+               LIB Release|Win32 = LIB Release|Win32
+               LIB Release|x64 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.Build.0 = DLL Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.Build.0 = DLL Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.Build.0 = LIB Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.Build.0 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+EndGlobal
diff --git a/projects/Windows/VC11/src/curlsrc.vcxproj b/projects/Windows/VC11/src/curlsrc.vcxproj
new file mode 100644 (file)
index 0000000..297262d
--- /dev/null
@@ -0,0 +1,2830 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|Win32">\r
+      <Configuration>DLL Debug - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|x64">\r
+      <Configuration>DLL Debug - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|Win32">\r
+      <Configuration>DLL Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|x64">\r
+      <Configuration>DLL Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug|Win32">\r
+      <Configuration>DLL Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug|x64">\r
+      <Configuration>DLL Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL|Win32">\r
+      <Configuration>DLL Release - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL|x64">\r
+      <Configuration>DLL Release - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|Win32">\r
+      <Configuration>DLL Release - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|x64">\r
+      <Configuration>DLL Release - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release|Win32">\r
+      <Configuration>DLL Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release|x64">\r
+      <Configuration>DLL Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|Win32">\r
+      <Configuration>LIB Debug - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|x64">\r
+      <Configuration>LIB Debug - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|Win32">\r
+      <Configuration>LIB Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|x64">\r
+      <Configuration>LIB Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32">\r
+      <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|x64">\r
+      <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|Win32">\r
+      <Configuration>LIB Debug - LIB OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|x64">\r
+      <Configuration>LIB Debug - LIB OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug|Win32">\r
+      <Configuration>LIB Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug|x64">\r
+      <Configuration>LIB Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL|Win32">\r
+      <Configuration>LIB Release - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL|x64">\r
+      <Configuration>LIB Release - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|Win32">\r
+      <Configuration>LIB Release - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|x64">\r
+      <Configuration>LIB Release - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32">\r
+      <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|x64">\r
+      <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL|Win32">\r
+      <Configuration>LIB Release - LIB OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL|x64">\r
+      <Configuration>LIB Release - LIB OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release|Win32">\r
+      <Configuration>LIB Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release|x64">\r
+      <Configuration>LIB Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{5228E9CE-A216-422F-A5E6-58E95E2DD71D}</ProjectGuid>\r
+    <RootNamespace>curlsrc</RootNamespace>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC11\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">curl</TargetName>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC11\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC11\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC11\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC11\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC11\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libssh2.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC11\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="..\..\..\..\lib\nonblock.c" />\r
+    <ClCompile Include="..\..\..\..\lib\rawstr.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strtoofft.c" />\r
+    <ClCompile Include="..\..\..\..\lib\warnless.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_binmode.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_bname.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_dbg.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_hdr.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_prg.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_rea.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_see.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_wrt.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cfgable.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_convert.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_dirhie.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_doswin.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_easysrc.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_formparse.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_getparam.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_getpass.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_help.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_helpers.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_homedir.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_hugehelp.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_libinfo.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_main.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_metalink.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_mfiles.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_msgs.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_operate.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_operhlp.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_panykey.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_paramhlp.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_parsecfg.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_setopt.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_sleep.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_strdup.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_urlglob.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_util.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_vms.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_writeenv.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_writeout.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_xattr.c" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="..\..\..\..\lib\config-win32.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_setup.h" />\r
+    <ClInclude Include="..\..\..\..\lib\nonblock.h" />\r
+    <ClInclude Include="..\..\..\..\lib\rawstr.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strtoofft.h" />\r
+    <ClInclude Include="..\..\..\..\lib\warnless.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_binmode.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_bname.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_dbg.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_hdr.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_prg.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_rea.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_see.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_wrt.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cfgable.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_convert.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_dirhie.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_doswin.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_easysrc.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_formparse.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_getparam.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_getpass.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_helpers.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_help.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_homedir.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_hugehelp.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_libinfo.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_main.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_metalink.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_mfiles.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_msgs.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_operate.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_operhlp.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_panykey.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_paramhlp.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_parsecfg.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_sdecls.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_setopt.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_setup.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_sleep.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_strdup.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_urlglob.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_util.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_version.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_vms.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_writeenv.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_writeout.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_xattr.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ResourceCompile Include="..\..\..\..\src\curl.rc" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>\r
diff --git a/projects/Windows/VC12/curl.sln b/projects/Windows/VC12/curl.sln
new file mode 100644 (file)
index 0000000..57064c4
--- /dev/null
@@ -0,0 +1,258 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2013
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "src\curlsrc.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+       ProjectSection(ProjectDependencies) = postProject
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} = {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}
+       EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "lib\libcurl.vcxproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32
+               DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
+               DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+               DLL Debug|Win32 = DLL Debug|Win32
+               DLL Debug|x64 = DLL Debug|x64
+               DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32
+               DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64
+               DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
+               DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+               DLL Release|Win32 = DLL Release|Win32
+               DLL Release|x64 = DLL Release|x64
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32
+               LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32
+               LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
+               LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+               LIB Debug|Win32 = LIB Debug|Win32
+               LIB Debug|x64 = LIB Debug|x64
+               LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32
+               LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64
+               LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32
+               LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64
+               LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
+               LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+               LIB Release|Win32 = LIB Release|Win32
+               LIB Release|x64 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.Build.0 = DLL Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.Build.0 = DLL Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.Build.0 = LIB Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.Build.0 = LIB Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.Build.0 = DLL Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.Build.0 = LIB Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.Build.0 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+EndGlobal
diff --git a/projects/Windows/VC12/lib/libcurl.sln b/projects/Windows/VC12/lib/libcurl.sln
new file mode 100644 (file)
index 0000000..6fe2772
--- /dev/null
@@ -0,0 +1,157 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2013
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "libcurl.vcxproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32
+               DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
+               DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+               DLL Debug|Win32 = DLL Debug|Win32
+               DLL Debug|x64 = DLL Debug|x64
+               DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32
+               DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64
+               DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
+               DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+               DLL Release|Win32 = DLL Release|Win32
+               DLL Release|x64 = DLL Release|x64
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32
+               LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32
+               LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
+               LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+               LIB Debug|Win32 = LIB Debug|Win32
+               LIB Debug|x64 = LIB Debug|x64
+               LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32
+               LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64
+               LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32
+               LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64
+               LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
+               LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+               LIB Release|Win32 = LIB Release|Win32
+               LIB Release|x64 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.Build.0 = DLL Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.Build.0 = LIB Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.Build.0 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+EndGlobal
diff --git a/projects/Windows/VC12/lib/libcurl.vcxproj b/projects/Windows/VC12/lib/libcurl.vcxproj
new file mode 100644 (file)
index 0000000..739efa2
--- /dev/null
@@ -0,0 +1,2636 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|Win32">\r
+      <Configuration>DLL Debug - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|x64">\r
+      <Configuration>DLL Debug - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|Win32">\r
+      <Configuration>DLL Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|x64">\r
+      <Configuration>DLL Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug|Win32">\r
+      <Configuration>DLL Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug|x64">\r
+      <Configuration>DLL Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL|Win32">\r
+      <Configuration>DLL Release - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL|x64">\r
+      <Configuration>DLL Release - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|Win32">\r
+      <Configuration>DLL Release - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|x64">\r
+      <Configuration>DLL Release - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release|Win32">\r
+      <Configuration>DLL Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release|x64">\r
+      <Configuration>DLL Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|Win32">\r
+      <Configuration>LIB Debug - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|x64">\r
+      <Configuration>LIB Debug - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|Win32">\r
+      <Configuration>LIB Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|x64">\r
+      <Configuration>LIB Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32">\r
+      <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|x64">\r
+      <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|Win32">\r
+      <Configuration>LIB Debug - LIB OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|x64">\r
+      <Configuration>LIB Debug - LIB OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug|Win32">\r
+      <Configuration>LIB Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug|x64">\r
+      <Configuration>LIB Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL|Win32">\r
+      <Configuration>LIB Release - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL|x64">\r
+      <Configuration>LIB Release - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|Win32">\r
+      <Configuration>LIB Release - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|x64">\r
+      <Configuration>LIB Release - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32">\r
+      <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|x64">\r
+      <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL|Win32">\r
+      <Configuration>LIB Release - LIB OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL|x64">\r
+      <Configuration>LIB Release - LIB OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release|Win32">\r
+      <Configuration>LIB Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release|x64">\r
+      <Configuration>LIB Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}</ProjectGuid>\r
+    <RootNamespace>libcurl</RootNamespace>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC12\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC12\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC12\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC12\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(OutDir)$(ProjectName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="..\..\..\..\lib\amigaos.c" />\r
+    <ClCompile Include="..\..\..\..\lib\asyn-ares.c" />\r
+    <ClCompile Include="..\..\..\..\lib\asyn-thread.c" />\r
+    <ClCompile Include="..\..\..\..\lib\base64.c" />\r
+    <ClCompile Include="..\..\..\..\lib\bundles.c" />\r
+    <ClCompile Include="..\..\..\..\lib\conncache.c" />\r
+    <ClCompile Include="..\..\..\..\lib\connect.c" />\r
+    <ClCompile Include="..\..\..\..\lib\content_encoding.c" />\r
+    <ClCompile Include="..\..\..\..\lib\cookie.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_endian.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_gethostname.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_gssapi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_memrchr.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_multibyte.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_ntlm.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_ntlm_core.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_ntlm_msgs.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_ntlm_wb.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_rtmp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_sasl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_sasl_gssapi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_sasl_sspi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_sspi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_threads.c" />\r
+    <ClCompile Include="..\..\..\..\lib\dict.c" />\r
+    <ClCompile Include="..\..\..\..\lib\dotdot.c" />\r
+    <ClCompile Include="..\..\..\..\lib\easy.c" />\r
+    <ClCompile Include="..\..\..\..\lib\escape.c" />\r
+    <ClCompile Include="..\..\..\..\lib\file.c" />\r
+    <ClCompile Include="..\..\..\..\lib\fileinfo.c" />\r
+    <ClCompile Include="..\..\..\..\lib\formdata.c" />\r
+    <ClCompile Include="..\..\..\..\lib\ftp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\ftplistparser.c" />\r
+    <ClCompile Include="..\..\..\..\lib\getenv.c" />\r
+    <ClCompile Include="..\..\..\..\lib\getinfo.c" />\r
+    <ClCompile Include="..\..\..\..\lib\gopher.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hash.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hmac.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hostasyn.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hostcheck.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hostip4.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hostip6.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hostip.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hostsyn.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http2.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http_chunks.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http_digest.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http_negotiate.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http_negotiate_sspi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http_proxy.c" />\r
+    <ClCompile Include="..\..\..\..\lib\idn_win32.c" />\r
+    <ClCompile Include="..\..\..\..\lib\if2ip.c" />\r
+    <ClCompile Include="..\..\..\..\lib\imap.c" />\r
+    <ClCompile Include="..\..\..\..\lib\inet_ntop.c" />\r
+    <ClCompile Include="..\..\..\..\lib\inet_pton.c" />\r
+    <ClCompile Include="..\..\..\..\lib\krb5.c" />\r
+    <ClCompile Include="..\..\..\..\lib\ldap.c" />\r
+    <ClCompile Include="..\..\..\..\lib\llist.c" />\r
+    <ClCompile Include="..\..\..\..\lib\md4.c" />\r
+    <ClCompile Include="..\..\..\..\lib\md5.c" />\r
+    <ClCompile Include="..\..\..\..\lib\memdebug.c" />\r
+    <ClCompile Include="..\..\..\..\lib\mprintf.c" />\r
+    <ClCompile Include="..\..\..\..\lib\multi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\netrc.c" />\r
+    <ClCompile Include="..\..\..\..\lib\non-ascii.c" />\r
+    <ClCompile Include="..\..\..\..\lib\nonblock.c" />\r
+    <ClCompile Include="..\..\..\..\lib\openldap.c" />\r
+    <ClCompile Include="..\..\..\..\lib\parsedate.c" />\r
+    <ClCompile Include="..\..\..\..\lib\pingpong.c" />\r
+    <ClCompile Include="..\..\..\..\lib\pipeline.c" />\r
+    <ClCompile Include="..\..\..\..\lib\pop3.c" />\r
+    <ClCompile Include="..\..\..\..\lib\progress.c" />\r
+    <ClCompile Include="..\..\..\..\lib\rawstr.c" />\r
+    <ClCompile Include="..\..\..\..\lib\rtsp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\security.c" />\r
+    <ClCompile Include="..\..\..\..\lib\select.c" />\r
+    <ClCompile Include="..\..\..\..\lib\sendf.c" />\r
+    <ClCompile Include="..\..\..\..\lib\share.c" />\r
+    <ClCompile Include="..\..\..\..\lib\slist.c" />\r
+    <ClCompile Include="..\..\..\..\lib\smb.c" />\r
+    <ClCompile Include="..\..\..\..\lib\smtp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\socks.c" />\r
+    <ClCompile Include="..\..\..\..\lib\socks_gssapi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\socks_sspi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\speedcheck.c" />\r
+    <ClCompile Include="..\..\..\..\lib\splay.c" />\r
+    <ClCompile Include="..\..\..\..\lib\ssh.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strdup.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strequal.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strerror.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strtok.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strtoofft.c" />\r
+    <ClCompile Include="..\..\..\..\lib\telnet.c" />\r
+    <ClCompile Include="..\..\..\..\lib\tftp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\timeval.c" />\r
+    <ClCompile Include="..\..\..\..\lib\transfer.c" />\r
+    <ClCompile Include="..\..\..\..\lib\url.c" />\r
+    <ClCompile Include="..\..\..\..\lib\version.c" />\r
+    <ClCompile Include="..\..\..\..\lib\warnless.c" />\r
+    <ClCompile Include="..\..\..\..\lib\wildcard.c" />\r
+    <ClCompile Include="..\..\..\..\lib\x509asn1.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\axtls.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\curl_darwinssl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\curl_schannel.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\cyassl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\polarssl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\polarssl_threadlock.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="..\..\..\..\lib\amigaos.h" />\r
+    <ClInclude Include="..\..\..\..\lib\arpa_telnet.h" />\r
+    <ClInclude Include="..\..\..\..\lib\asyn.h" />\r
+    <ClInclude Include="..\..\..\..\lib\bundles.h" />\r
+    <ClInclude Include="..\..\..\..\lib\config-win32.h" />\r
+    <ClInclude Include="..\..\..\..\lib\conncache.h" />\r
+    <ClInclude Include="..\..\..\..\lib\connect.h" />\r
+    <ClInclude Include="..\..\..\..\lib\content_encoding.h" />\r
+    <ClInclude Include="..\..\..\..\lib\cookie.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_addrinfo.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_base64.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_endian.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_fnmatch.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_gethostname.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_gssapi.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_hmac.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_ldap.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_md4.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_md5.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_memory.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_memrchr.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_multibyte.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_ntlm_core.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_ntlm.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_ntlm_msgs.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_ntlm_wb.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_rtmp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_sasl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_sec.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_setup.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_setup_once.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_sspi.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_threads.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curlx.h" />\r
+    <ClInclude Include="..\..\..\..\lib\dict.h" />\r
+    <ClInclude Include="..\..\..\..\lib\dotdot.h" />\r
+    <ClInclude Include="..\..\..\..\lib\easyif.h" />\r
+    <ClInclude Include="..\..\..\..\lib\escape.h" />\r
+    <ClInclude Include="..\..\..\..\lib\file.h" />\r
+    <ClInclude Include="..\..\..\..\lib\fileinfo.h" />\r
+    <ClInclude Include="..\..\..\..\lib\formdata.h" />\r
+    <ClInclude Include="..\..\..\..\lib\ftp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\ftplistparser.h" />\r
+    <ClInclude Include="..\..\..\..\lib\getinfo.h" />\r
+    <ClInclude Include="..\..\..\..\lib\gopher.h" />\r
+    <ClInclude Include="..\..\..\..\lib\hash.h" />\r
+    <ClInclude Include="..\..\..\..\lib\hostcheck.h" />\r
+    <ClInclude Include="..\..\..\..\lib\hostip.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http2.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http_chunks.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http_digest.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http_negotiate.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http_proxy.h" />\r
+    <ClInclude Include="..\..\..\..\lib\if2ip.h" />\r
+    <ClInclude Include="..\..\..\..\lib\imap.h" />\r
+    <ClInclude Include="..\..\..\..\lib\inet_ntop.h" />\r
+    <ClInclude Include="..\..\..\..\lib\inet_pton.h" />\r
+    <ClInclude Include="..\..\..\..\lib\llist.h" />\r
+    <ClInclude Include="..\..\..\..\lib\memdebug.h" />\r
+    <ClInclude Include="..\..\..\..\lib\multihandle.h" />\r
+    <ClInclude Include="..\..\..\..\lib\multiif.h" />\r
+    <ClInclude Include="..\..\..\..\lib\netrc.h" />\r
+    <ClInclude Include="..\..\..\..\lib\non-ascii.h" />\r
+    <ClInclude Include="..\..\..\..\lib\nonblock.h" />\r
+    <ClInclude Include="..\..\..\..\lib\parsedate.h" />\r
+    <ClInclude Include="..\..\..\..\lib\pingpong.h" />\r
+    <ClInclude Include="..\..\..\..\lib\pipeline.h" />\r
+    <ClInclude Include="..\..\..\..\lib\pop3.h" />\r
+    <ClInclude Include="..\..\..\..\lib\progress.h" />\r
+    <ClInclude Include="..\..\..\..\lib\rawstr.h" />\r
+    <ClInclude Include="..\..\..\..\lib\rtsp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\select.h" />\r
+    <ClInclude Include="..\..\..\..\lib\sendf.h" />\r
+    <ClInclude Include="..\..\..\..\lib\setup-vms.h" />\r
+    <ClInclude Include="..\..\..\..\lib\share.h" />\r
+    <ClInclude Include="..\..\..\..\lib\sigpipe.h" />\r
+    <ClInclude Include="..\..\..\..\lib\slist.h" />\r
+    <ClInclude Include="..\..\..\..\lib\smb.h" />\r
+    <ClInclude Include="..\..\..\..\lib\smtp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\sockaddr.h" />\r
+    <ClInclude Include="..\..\..\..\lib\socks.h" />\r
+    <ClInclude Include="..\..\..\..\lib\speedcheck.h" />\r
+    <ClInclude Include="..\..\..\..\lib\splay.h" />\r
+    <ClInclude Include="..\..\..\..\lib\ssh.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strdup.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strequal.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strerror.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strtok.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strtoofft.h" />\r
+    <ClInclude Include="..\..\..\..\lib\telnet.h" />\r
+    <ClInclude Include="..\..\..\..\lib\tftp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\timeval.h" />\r
+    <ClInclude Include="..\..\..\..\lib\transfer.h" />\r
+    <ClInclude Include="..\..\..\..\lib\urldata.h" />\r
+    <ClInclude Include="..\..\..\..\lib\url.h" />\r
+    <ClInclude Include="..\..\..\..\lib\warnless.h" />\r
+    <ClInclude Include="..\..\..\..\lib\wildcard.h" />\r
+    <ClInclude Include="..\..\..\..\lib\x509asn1.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\axtls.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\curl_darwinssl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\curl_schannel.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\cyassl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\polarssl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\polarssl_threadlock.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ResourceCompile Include="..\..\..\..\lib\libcurl.rc" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>\r
diff --git a/projects/Windows/VC12/src/curlsrc.sln b/projects/Windows/VC12/src/curlsrc.sln
new file mode 100644 (file)
index 0000000..292699c
--- /dev/null
@@ -0,0 +1,157 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2013
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "curlsrc.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32
+               DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
+               DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+               DLL Debug|Win32 = DLL Debug|Win32
+               DLL Debug|x64 = DLL Debug|x64
+               DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32
+               DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64
+               DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
+               DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+               DLL Release|Win32 = DLL Release|Win32
+               DLL Release|x64 = DLL Release|x64
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32
+               LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32
+               LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
+               LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+               LIB Debug|Win32 = LIB Debug|Win32
+               LIB Debug|x64 = LIB Debug|x64
+               LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32
+               LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64
+               LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32
+               LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64
+               LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
+               LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+               LIB Release|Win32 = LIB Release|Win32
+               LIB Release|x64 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.Build.0 = DLL Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.Build.0 = DLL Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.Build.0 = LIB Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.Build.0 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+EndGlobal
diff --git a/projects/Windows/VC12/src/curlsrc.vcxproj b/projects/Windows/VC12/src/curlsrc.vcxproj
new file mode 100644 (file)
index 0000000..7fc0c29
--- /dev/null
@@ -0,0 +1,2830 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|Win32">\r
+      <Configuration>DLL Debug - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|x64">\r
+      <Configuration>DLL Debug - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|Win32">\r
+      <Configuration>DLL Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|x64">\r
+      <Configuration>DLL Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug|Win32">\r
+      <Configuration>DLL Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug|x64">\r
+      <Configuration>DLL Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL|Win32">\r
+      <Configuration>DLL Release - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL|x64">\r
+      <Configuration>DLL Release - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|Win32">\r
+      <Configuration>DLL Release - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|x64">\r
+      <Configuration>DLL Release - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release|Win32">\r
+      <Configuration>DLL Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release|x64">\r
+      <Configuration>DLL Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|Win32">\r
+      <Configuration>LIB Debug - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|x64">\r
+      <Configuration>LIB Debug - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|Win32">\r
+      <Configuration>LIB Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|x64">\r
+      <Configuration>LIB Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32">\r
+      <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|x64">\r
+      <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|Win32">\r
+      <Configuration>LIB Debug - LIB OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|x64">\r
+      <Configuration>LIB Debug - LIB OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug|Win32">\r
+      <Configuration>LIB Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug|x64">\r
+      <Configuration>LIB Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL|Win32">\r
+      <Configuration>LIB Release - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL|x64">\r
+      <Configuration>LIB Release - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|Win32">\r
+      <Configuration>LIB Release - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|x64">\r
+      <Configuration>LIB Release - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32">\r
+      <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|x64">\r
+      <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL|Win32">\r
+      <Configuration>LIB Release - LIB OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL|x64">\r
+      <Configuration>LIB Release - LIB OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release|Win32">\r
+      <Configuration>LIB Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release|x64">\r
+      <Configuration>LIB Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{5228E9CE-A216-422F-A5E6-58E95E2DD71D}</ProjectGuid>\r
+    <RootNamespace>curlsrc</RootNamespace>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC12\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">curld</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">curl</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">curl</TargetName>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC12\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC12\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC12\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC12\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;libeay32.lib;ssleay32.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC12\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libeay32.lib;ssleay32.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;libssh2.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC12\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MinimalRebuild>true</MinimalRebuild>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+      <DataExecutionPrevention>\r
+      </DataExecutionPrevention>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+    <Bscmake>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <OutputFile>$(TargetDir)$(TargetName).bsc</OutputFile>\r
+    </Bscmake>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="..\..\..\..\lib\nonblock.c" />\r
+    <ClCompile Include="..\..\..\..\lib\rawstr.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strtoofft.c" />\r
+    <ClCompile Include="..\..\..\..\lib\warnless.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_binmode.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_bname.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_dbg.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_hdr.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_prg.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_rea.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_see.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_wrt.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cfgable.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_convert.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_dirhie.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_doswin.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_easysrc.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_formparse.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_getparam.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_getpass.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_help.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_helpers.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_homedir.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_hugehelp.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_libinfo.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_main.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_metalink.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_mfiles.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_msgs.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_operate.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_operhlp.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_panykey.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_paramhlp.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_parsecfg.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_setopt.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_sleep.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_strdup.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_urlglob.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_util.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_vms.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_writeenv.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_writeout.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_xattr.c" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="..\..\..\..\lib\config-win32.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_setup.h" />\r
+    <ClInclude Include="..\..\..\..\lib\nonblock.h" />\r
+    <ClInclude Include="..\..\..\..\lib\rawstr.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strtoofft.h" />\r
+    <ClInclude Include="..\..\..\..\lib\warnless.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_binmode.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_bname.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_dbg.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_hdr.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_prg.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_rea.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_see.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_wrt.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cfgable.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_convert.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_dirhie.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_doswin.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_easysrc.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_formparse.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_getparam.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_getpass.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_helpers.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_help.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_homedir.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_hugehelp.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_libinfo.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_main.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_metalink.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_mfiles.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_msgs.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_operate.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_operhlp.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_panykey.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_paramhlp.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_parsecfg.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_sdecls.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_setopt.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_setup.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_sleep.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_strdup.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_urlglob.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_util.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_version.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_vms.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_writeenv.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_writeout.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_xattr.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ResourceCompile Include="..\..\..\..\src\curl.rc" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>\r
similarity index 79%
rename from vs/vc6/vc6curl.dsw
rename to projects/Windows/VC6/curl.dsw
index 859edd5..0d368d6 100644 (file)
@@ -3,7 +3,7 @@ Microsoft Developer Studio Workspace File, Format Version 6.00
 \r
 ###############################################################################\r
 \r
 \r
 ###############################################################################\r
 \r
-Project: "libcurl"=".\lib\vc6libcurl.dsp" - Package Owner=<4>\r
+Project: "libcurl"=".\lib\libcurl.dsp" - Package Owner=<4>\r
 \r
 Package=<5>\r
 {{{\r
 \r
 Package=<5>\r
 {{{\r
@@ -15,7 +15,7 @@ Package=<4>
 \r
 ###############################################################################\r
 \r
 \r
 ###############################################################################\r
 \r
-Project: "curltool"=".\src\vc6curltool.dsp" - Package Owner=<4>\r
+Project: "curlsrc"=".\src\curlsrc.dsp" - Package Owner=<4>\r
 \r
 Package=<5>\r
 {{{\r
 \r
 Package=<5>\r
 {{{\r
diff --git a/projects/Windows/VC6/lib/libcurl.dsp b/projects/Windows/VC6/lib/libcurl.dsp
new file mode 100644 (file)
index 0000000..2c0f531
--- /dev/null
@@ -0,0 +1,1645 @@
+# Microsoft Developer Studio Project File - Name="libcurl" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102\r
+# TARGTYPE "Win32 (x86) Static Library" 0x0104\r
+\r
+CFG=libcurl - Win32 LIB Debug\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "libcurl.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "libcurl.mak" CFG="libcurl - Win32 LIB Debug"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "libcurl - Win32 DLL Debug" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "libcurl - Win32 DLL Debug DLL OpenSSL" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "libcurl - Win32 DLL Debug DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "libcurl - Win32 DLL Debug DLL Windows SSPI" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "libcurl - Win32 DLL Debug DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "libcurl - Win32 DLL Release" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "libcurl - Win32 DLL Release DLL OpenSSL" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "libcurl - Win32 DLL Release DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "libcurl - Win32 DLL Release DLL Windows SSPI" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "libcurl - Win32 DLL Release DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "libcurl - Win32 LIB Debug" (based on "Win32 (x86) Static Library")\r
+!MESSAGE "libcurl - Win32 LIB Debug DLL OpenSSL" (based on "Win32 (x86) Static Library")\r
+!MESSAGE "libcurl - Win32 LIB Debug DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Static Library")\r
+!MESSAGE "libcurl - Win32 LIB Debug DLL Windows SSPI" (based on "Win32 (x86) Static Library")\r
+!MESSAGE "libcurl - Win32 LIB Debug DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Static Library")\r
+!MESSAGE "libcurl - Win32 LIB Debug LIB OpenSSL" (based on "Win32 (x86) Static Library")\r
+!MESSAGE "libcurl - Win32 LIB Debug LIB OpenSSL LIB LibSSH2" (based on "Win32 (x86) Static Library")\r
+!MESSAGE "libcurl - Win32 LIB Release" (based on "Win32 (x86) Static Library")\r
+!MESSAGE "libcurl - Win32 LIB Release DLL OpenSSL" (based on "Win32 (x86) Static Library")\r
+!MESSAGE "libcurl - Win32 LIB Release DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Static Library")\r
+!MESSAGE "libcurl - Win32 LIB Release DLL Windows SSPI" (based on "Win32 (x86) Static Library")\r
+!MESSAGE "libcurl - Win32 LIB Release DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Static Library")\r
+!MESSAGE "libcurl - Win32 LIB Release LIB OpenSSL" (based on "Win32 (x86) Static Library")\r
+!MESSAGE "libcurl - Win32 LIB Release LIB OpenSSL LIB LibSSH2" (based on "Win32 (x86) Static Library")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+\r
+!IF  "$(CFG)" == "libcurl - Win32 DLL Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug\lib"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug\lib"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+CPP=cl.exe\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /FD /EHsc /GZ /c\r
+MTL=midl.exe\r
+# ADD BASE MTL /nologo /D "_DEBUG" /win32\r
+# ADD MTL /nologo /D "_DEBUG" /win32\r
+RSC=rc.exe\r
+# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
+# ADD RSC /l 0x409 /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug\libcurld.dll" /pdbtype:con /fixed:no\r
+# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug\libcurld.dll" /pdbtype:con /fixed:no\r
+\r
+!ELSEIF  "$(CFG)" == "libcurl - Win32 DLL Debug DLL OpenSSL"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL\lib"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL\lib"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+CPP=cl.exe\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /GZ /c\r
+MTL=midl.exe\r
+# ADD BASE MTL /nologo /D "_DEBUG" /win32\r
+# ADD MTL /nologo /D "_DEBUG" /win32\r
+RSC=rc.exe\r
+# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
+# ADD RSC /l 0x409 /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib libeay32.lib ssleay32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL\libcurld.dll" /pdbtype:con /fixed:no\r
+# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib libeay32.lib ssleay32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL\libcurld.dll" /pdbtype:con /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Debug" /fixed:no\r
+\r
+!ELSEIF  "$(CFG)" == "libcurl - Win32 DLL Debug DLL OpenSSL DLL LibSSH2"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\lib"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\lib"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+CPP=cl.exe\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c\r
+MTL=midl.exe\r
+# ADD BASE MTL /nologo /D "_DEBUG" /win32\r
+# ADD MTL /nologo /D "_DEBUG" /win32\r
+RSC=rc.exe\r
+# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
+# ADD RSC /l 0x409 /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib libeay32.lib ssleay32.lib libssh2d.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\libcurld.dll" /pdbtype:con /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Debug" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Debug" /fixed:no\r
+# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib libeay32.lib ssleay32.lib libssh2d.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\libcurld.dll" /pdbtype:con /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Debug" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Debug" /fixed:no\r
+\r
+!ELSEIF  "$(CFG)" == "libcurl - Win32 DLL Debug DLL Windows SSPI"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI\lib"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI\lib"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+CPP=cl.exe\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /FD /EHsc /GZ /c\r
+MTL=midl.exe\r
+# ADD BASE MTL /nologo /D "_DEBUG" /win32\r
+# ADD MTL /nologo /D "_DEBUG" /win32\r
+RSC=rc.exe\r
+# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
+# ADD RSC /l 0x409 /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI\libcurld.dll" /pdbtype:con /fixed:no\r
+# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI\libcurld.dll" /pdbtype:con /fixed:no\r
+\r
+!ELSEIF  "$(CFG)" == "libcurl - Win32 DLL Debug DLL Windows SSPI DLL WinIDN"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN\lib"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN\lib"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+CPP=cl.exe\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /GZ /c\r
+MTL=midl.exe\r
+# ADD BASE MTL /nologo /D "_DEBUG" /win32\r
+# ADD MTL /nologo /D "_DEBUG" /win32\r
+RSC=rc.exe\r
+# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
+# ADD RSC /l 0x409 /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN\libcurld.dll" /pdbtype:con /fixed:no\r
+# ADD LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN\libcurld.dll" /pdbtype:con /fixed:no\r
+\r
+!ELSEIF  "$(CFG)" == "libcurl - Win32 DLL Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release\lib"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release\lib"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+CPP=cl.exe\r
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /FD /EHsc /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /FD /EHsc /c\r
+MTL=midl.exe\r
+# ADD BASE MTL /nologo /D "NDEBUG" /win32\r
+# ADD MTL /nologo /D "NDEBUG" /win32\r
+RSC=rc.exe\r
+# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
+# ADD RSC /l 0x409 /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib /nologo /dll /pdb:none /machine:I386 /fixed:no /release\r
+# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib /nologo /dll /pdb:none /machine:I386 /fixed:no /release\r
+\r
+!ELSEIF  "$(CFG)" == "libcurl - Win32 DLL Release DLL OpenSSL"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL\lib"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL\lib"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+CPP=cl.exe\r
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /c\r
+MTL=midl.exe\r
+# ADD BASE MTL /nologo /D "NDEBUG" /win32\r
+# ADD MTL /nologo /D "NDEBUG" /win32\r
+RSC=rc.exe\r
+# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
+# ADD RSC /l 0x409 /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib libeay32.lib ssleay32.lib /nologo /dll /pdb:none /machine:I386 /fixed:no /release\r
+# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib libeay32.lib ssleay32.lib /nologo /dll /pdb:none /machine:I386 /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Release" /fixed:no /release\r
+\r
+!ELSEIF  "$(CFG)" == "libcurl - Win32 DLL Release DLL OpenSSL DLL LibSSH2"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2\lib"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2\lib"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+CPP=cl.exe\r
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c\r
+MTL=midl.exe\r
+# ADD BASE MTL /nologo /D "NDEBUG" /win32\r
+# ADD MTL /nologo /D "NDEBUG" /win32\r
+RSC=rc.exe\r
+# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
+# ADD RSC /l 0x409 /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib libeay32.lib ssleay32.lib libssh2.lib /nologo /dll /pdb:none /machine:I386 /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Release" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Release" /fixed:no /release\r
+# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib libeay32.lib ssleay32.lib libssh2.lib /nologo /dll /pdb:none /machine:I386 /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Release" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Release" /fixed:no /release\r
+\r
+!ELSEIF  "$(CFG)" == "libcurl - Win32 DLL Release DLL Windows SSPI"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI\lib"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI\lib"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+CPP=cl.exe\r
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /FD /EHsc /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /FD /EHsc /c\r
+MTL=midl.exe\r
+# ADD BASE MTL /nologo /D "NDEBUG" /win32\r
+# ADD MTL /nologo /D "NDEBUG" /win32\r
+RSC=rc.exe\r
+# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
+# ADD RSC /l 0x409 /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib /nologo /dll /pdb:none /machine:I386 /fixed:no /release\r
+# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib /nologo /dll /pdb:none /machine:I386 /fixed:no /release\r
+\r
+!ELSEIF  "$(CFG)" == "libcurl - Win32 DLL Release DLL Windows SSPI DLL WinIDN"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN\lib"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN\lib"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+CPP=cl.exe\r
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /c\r
+MTL=midl.exe\r
+# ADD BASE MTL /nologo /D "NDEBUG" /win32\r
+# ADD MTL /nologo /D "NDEBUG" /win32\r
+RSC=rc.exe\r
+# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
+# ADD RSC /l 0x409 /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib /nologo /dll /pdb:none /machine:I386 /fixed:no /release\r
+# ADD LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib /nologo /dll /pdb:none /machine:I386 /fixed:no /release\r
+\r
+!ELSEIF  "$(CFG)" == "libcurl - Win32 LIB Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug\lib"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug\lib"\r
+# PROP Target_Dir ""\r
+CPP=cl.exe\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
+RSC=rc.exe\r
+# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
+# ADD RSC /l 0x409 /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LIB32=link.exe -lib\r
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\build\Win32\VC6\LIB Debug\libcurld.lib" /machine:I386\r
+# ADD LIB32 /nologo /out:"..\..\..\..\build\Win32\VC6\LIB Debug\libcurld.lib" /machine:I386\r
+\r
+!ELSEIF  "$(CFG)" == "libcurl - Win32 LIB Debug DLL OpenSSL"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\lib"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\lib"\r
+# PROP Target_Dir ""\r
+CPP=cl.exe\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /GZ /c\r
+RSC=rc.exe\r
+# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
+# ADD RSC /l 0x409 /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LIB32=link.exe -lib\r
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\libcurld.lib" /machine:I386\r
+# ADD LIB32 /nologo /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\libcurld.lib" /machine:I386\r
+\r
+!ELSEIF  "$(CFG)" == "libcurl - Win32 LIB Debug DLL OpenSSL DLL LibSSH2"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\lib"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\lib"\r
+# PROP Target_Dir ""\r
+CPP=cl.exe\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c\r
+RSC=rc.exe\r
+# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
+# ADD RSC /l 0x409 /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LIB32=link.exe -lib\r
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\libcurld.lib" /machine:I386\r
+# ADD LIB32 /nologo /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\libcurld.lib" /machine:I386\r
+\r
+!ELSEIF  "$(CFG)" == "libcurl - Win32 LIB Debug DLL Windows SSPI"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI\lib"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI\lib"\r
+# PROP Target_Dir ""\r
+CPP=cl.exe\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /FD /EHsc /GZ /c\r
+RSC=rc.exe\r
+# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
+# ADD RSC /l 0x409 /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LIB32=link.exe -lib\r
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI\libcurld.lib" /machine:I386\r
+# ADD LIB32 /nologo /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI\libcurld.lib" /machine:I386\r
+\r
+!ELSEIF  "$(CFG)" == "libcurl - Win32 LIB Debug DLL Windows SSPI DLL WinIDN"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN\lib"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN\lib"\r
+# PROP Target_Dir ""\r
+CPP=cl.exe\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /GZ /c\r
+RSC=rc.exe\r
+# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
+# ADD RSC /l 0x409 /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LIB32=link.exe -lib\r
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN\libcurld.lib" /machine:I386\r
+# ADD LIB32 /nologo /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN\libcurld.lib" /machine:I386\r
+\r
+!ELSEIF  "$(CFG)" == "libcurl - Win32 LIB Debug LIB OpenSSL"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\lib"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\lib"\r
+# PROP Target_Dir ""\r
+CPP=cl.exe\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /GZ /c\r
+RSC=rc.exe\r
+# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
+# ADD RSC /l 0x409 /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LIB32=link.exe -lib\r
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\libcurld.lib" /machine:I386\r
+# ADD LIB32 /nologo /out:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\libcurld.lib" /machine:I386\r
+\r
+!ELSEIF  "$(CFG)" == "libcurl - Win32 LIB Debug LIB OpenSSL LIB LibSSH2"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\lib"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\lib"\r
+# PROP Target_Dir ""\r
+CPP=cl.exe\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c\r
+RSC=rc.exe\r
+# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
+# ADD RSC /l 0x409 /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LIB32=link.exe -lib\r
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\libcurld.lib" /machine:I386\r
+# ADD LIB32 /nologo /out:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\libcurld.lib" /machine:I386\r
+\r
+!ELSEIF  "$(CFG)" == "libcurl - Win32 LIB Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release\lib"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release\lib"\r
+# PROP Target_Dir ""\r
+CPP=cl.exe\r
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /FD /EHsc /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /FD /EHsc /c\r
+RSC=rc.exe\r
+# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
+# ADD RSC /l 0x409 /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LIB32=link.exe -lib\r
+# ADD BASE LIB32 /nologo /machine:I386\r
+# ADD LIB32 /nologo /machine:I386\r
+\r
+!ELSEIF  "$(CFG)" == "libcurl - Win32 LIB Release DLL OpenSSL"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL\lib"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL\lib"\r
+# PROP Target_Dir ""\r
+CPP=cl.exe\r
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /c\r
+RSC=rc.exe\r
+# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
+# ADD RSC /l 0x409 /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LIB32=link.exe -lib\r
+# ADD BASE LIB32 /nologo /machine:I386\r
+# ADD LIB32 /nologo /machine:I386\r
+\r
+!ELSEIF  "$(CFG)" == "libcurl - Win32 LIB Release DLL OpenSSL DLL LibSSH2"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2\lib"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2\lib"\r
+# PROP Target_Dir ""\r
+CPP=cl.exe\r
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c\r
+RSC=rc.exe\r
+# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
+# ADD RSC /l 0x409 /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LIB32=link.exe -lib\r
+# ADD BASE LIB32 /nologo /machine:I386\r
+# ADD LIB32 /nologo /machine:I386\r
+\r
+!ELSEIF  "$(CFG)" == "libcurl - Win32 LIB Release DLL Windows SSPI"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI\lib"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI\lib"\r
+# PROP Target_Dir ""\r
+CPP=cl.exe\r
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /FD /EHsc /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /FD /EHsc /c\r
+RSC=rc.exe\r
+# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
+# ADD RSC /l 0x409 /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LIB32=link.exe -lib\r
+# ADD BASE LIB32 /nologo /machine:I386\r
+# ADD LIB32 /nologo /machine:I386\r
+\r
+!ELSEIF  "$(CFG)" == "libcurl - Win32 LIB Release DLL Windows SSPI DLL WinIDN"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN\lib"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN\lib"\r
+# PROP Target_Dir ""\r
+CPP=cl.exe\r
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /c\r
+RSC=rc.exe\r
+# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
+# ADD RSC /l 0x409 /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LIB32=link.exe -lib\r
+# ADD BASE LIB32 /nologo /machine:I386\r
+# ADD LIB32 /nologo /machine:I386\r
+\r
+!ELSEIF  "$(CFG)" == "libcurl - Win32 LIB Release LIB OpenSSL"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL\lib"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL\lib"\r
+# PROP Target_Dir ""\r
+CPP=cl.exe\r
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /FD /EHsc /c\r
+RSC=rc.exe\r
+# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
+# ADD RSC /l 0x409 /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LIB32=link.exe -lib\r
+# ADD BASE LIB32 /nologo /machine:I386\r
+# ADD LIB32 /nologo /machine:I386\r
+\r
+!ELSEIF  "$(CFG)" == "libcurl - Win32 LIB Release LIB OpenSSL LIB LibSSH2"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2\lib"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2\lib"\r
+# PROP Target_Dir ""\r
+CPP=cl.exe\r
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\inc32" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_SSLEAY" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c\r
+RSC=rc.exe\r
+# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
+# ADD RSC /l 0x409 /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LIB32=link.exe -lib\r
+# ADD BASE LIB32 /nologo /machine:I386\r
+# ADD LIB32 /nologo /machine:I386\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "libcurl - Win32 DLL Debug"\r
+# Name "libcurl - Win32 DLL Debug DLL OpenSSL"\r
+# Name "libcurl - Win32 DLL Debug DLL OpenSSL DLL LibSSH2"\r
+# Name "libcurl - Win32 DLL Debug DLL Windows SSPI"\r
+# Name "libcurl - Win32 DLL Debug DLL Windows SSPI DLL WinIDN"\r
+# Name "libcurl - Win32 DLL Release"\r
+# Name "libcurl - Win32 DLL Release DLL OpenSSL"\r
+# Name "libcurl - Win32 DLL Release DLL OpenSSL DLL LibSSH2"\r
+# Name "libcurl - Win32 DLL Release DLL Windows SSPI"\r
+# Name "libcurl - Win32 DLL Release DLL Windows SSPI DLL WinIDN"\r
+# Name "libcurl - Win32 LIB Debug"\r
+# Name "libcurl - Win32 LIB Debug DLL OpenSSL"\r
+# Name "libcurl - Win32 LIB Debug DLL OpenSSL DLL LibSSH2"\r
+# Name "libcurl - Win32 LIB Debug DLL Windows SSPI"\r
+# Name "libcurl - Win32 LIB Debug DLL Windows SSPI DLL WinIDN"\r
+# Name "libcurl - Win32 LIB Debug LIB OpenSSL"\r
+# Name "libcurl - Win32 LIB Debug LIB OpenSSL LIB LibSSH2"\r
+# Name "libcurl - Win32 LIB Release"\r
+# Name "libcurl - Win32 LIB Release DLL OpenSSL"\r
+# Name "libcurl - Win32 LIB Release DLL OpenSSL DLL LibSSH2"\r
+# Name "libcurl - Win32 LIB Release DLL Windows SSPI"\r
+# Name "libcurl - Win32 LIB Release DLL Windows SSPI DLL WinIDN"\r
+# Name "libcurl - Win32 LIB Release LIB OpenSSL"\r
+# Name "libcurl - Win32 LIB Release LIB OpenSSL LIB LibSSH2"\r
+# Begin Group "Source Files"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\amigaos.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\asyn-ares.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\asyn-thread.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\base64.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\bundles.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\conncache.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\connect.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\content_encoding.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\cookie.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_addrinfo.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_endian.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_fnmatch.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_gethostname.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_gssapi.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_memrchr.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_multibyte.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_ntlm.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_ntlm_core.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_ntlm_msgs.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_ntlm_wb.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_rtmp.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_sasl.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_sasl_gssapi.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_sasl_sspi.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_sspi.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_threads.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\dict.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\dotdot.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\easy.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\escape.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\file.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\fileinfo.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\formdata.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\ftp.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\ftplistparser.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\getenv.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\getinfo.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\gopher.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\hash.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\hmac.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\hostasyn.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\hostcheck.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\hostip4.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\hostip6.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\hostip.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\hostsyn.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\http2.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\http.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\http_chunks.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\http_digest.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\http_negotiate.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\http_negotiate_sspi.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\http_proxy.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\idn_win32.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\if2ip.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\imap.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\inet_ntop.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\inet_pton.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\krb5.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\ldap.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\llist.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\md4.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\md5.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\memdebug.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\mprintf.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\multi.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\netrc.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\non-ascii.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\nonblock.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\openldap.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\parsedate.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\pingpong.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\pipeline.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\pop3.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\progress.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\rawstr.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\rtsp.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\security.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\select.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\sendf.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\share.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\slist.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\smb.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\smtp.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\socks.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\socks_gssapi.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\socks_sspi.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\speedcheck.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\splay.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\ssh.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\strdup.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\strequal.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\strerror.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\strtok.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\strtoofft.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\telnet.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\tftp.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\timeval.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\transfer.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\url.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\version.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\warnless.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\wildcard.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\x509asn1.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\vtls\axtls.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\vtls\curl_darwinssl.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\vtls\curl_schannel.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\vtls\cyassl.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\vtls\gskit.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\vtls\gtls.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\vtls\nss.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\vtls\openssl.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\vtls\polarssl.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\vtls\polarssl_threadlock.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\vtls\vtls.c\r
+# End Source File\r
+# End Group\r
+# Begin Group "Header Files"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\amigaos.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\arpa_telnet.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\asyn.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\bundles.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\config-win32.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\conncache.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\connect.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\content_encoding.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\cookie.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_addrinfo.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_base64.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_endian.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_fnmatch.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_gethostname.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_gssapi.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_hmac.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_ldap.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_md4.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_md5.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_memory.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_memrchr.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_multibyte.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_ntlm_core.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_ntlm.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_ntlm_msgs.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_ntlm_wb.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_rtmp.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_sasl.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_sec.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_setup.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_setup_once.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_sspi.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_threads.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curlx.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\dict.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\dotdot.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\easyif.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\escape.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\file.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\fileinfo.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\formdata.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\ftp.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\ftplistparser.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\getinfo.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\gopher.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\hash.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\hostcheck.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\hostip.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\http2.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\http_chunks.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\http_digest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\http.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\http_negotiate.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\http_proxy.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\if2ip.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\imap.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\inet_ntop.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\inet_pton.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\llist.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\memdebug.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\multihandle.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\multiif.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\netrc.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\non-ascii.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\nonblock.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\parsedate.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\pingpong.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\pipeline.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\pop3.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\progress.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\rawstr.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\rtsp.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\select.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\sendf.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\setup-vms.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\share.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\sigpipe.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\slist.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\smb.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\smtp.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\sockaddr.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\socks.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\speedcheck.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\splay.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\ssh.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\strdup.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\strequal.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\strerror.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\strtok.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\strtoofft.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\telnet.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\tftp.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\timeval.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\transfer.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\urldata.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\url.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\warnless.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\wildcard.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\x509asn1.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\vtls\axtls.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\vtls\curl_darwinssl.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\vtls\curl_schannel.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\vtls\cyassl.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\vtls\gskit.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\vtls\gtls.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\vtls\nssg.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\vtls\openssl.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\vtls\polarssl.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\vtls\polarssl_threadlock.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\vtls\vtls.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "Resource Files"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\libcurl.rc\r
+# End Source File\r
+# End Group\r
+# End Target\r
+# End Project\r
similarity index 83%
rename from vs/vc6/lib/vc6libcurl.dsw
rename to projects/Windows/VC6/lib/libcurl.dsw
index 1fa8814..e07624d 100644 (file)
@@ -3,7 +3,7 @@ Microsoft Developer Studio Workspace File, Format Version 6.00
 \r
 ###############################################################################\r
 \r
 \r
 ###############################################################################\r
 \r
-Project: "libcurl"=".\vc6libcurl.dsp" - Package Owner=<4>\r
+Project: "libcurl"=".\libcurl.dsp" - Package Owner=<4>\r
 \r
 Package=<5>\r
 {{{\r
 \r
 Package=<5>\r
 {{{\r
diff --git a/projects/Windows/VC6/src/curlsrc.dsp b/projects/Windows/VC6/src/curlsrc.dsp
new file mode 100644 (file)
index 0000000..e13674c
--- /dev/null
@@ -0,0 +1,1058 @@
+# Microsoft Developer Studio Project File - Name="curlsrc" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Console Application" 0x0103\r
+\r
+CFG=curlsrc - Win32 LIB Debug\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "curlsrc.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "curlsrc.mak" CFG="curlsrc - Win32 LIB Debug"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "curlsrc - Win32 DLL Debug" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curlsrc - Win32 DLL Debug DLL OpenSSL" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curlsrc - Win32 DLL Debug DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curlsrc - Win32 DLL Debug DLL Windows SSPI" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curlsrc - Win32 DLL Debug DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curlsrc - Win32 DLL Release" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curlsrc - Win32 DLL Release DLL OpenSSL" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curlsrc - Win32 DLL Release DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curlsrc - Win32 DLL Release DLL Windows SSPI" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curlsrc - Win32 DLL Release DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curlsrc - Win32 LIB Debug" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curlsrc - Win32 LIB Debug DLL OpenSSL" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curlsrc - Win32 LIB Debug DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curlsrc - Win32 LIB Debug DLL Windows SSPI" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curlsrc - Win32 LIB Debug DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curlsrc - Win32 LIB Debug LIB OpenSSL" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curlsrc - Win32 LIB Debug LIB OpenSSL LIB LibSSH2" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curlsrc - Win32 LIB Release" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curlsrc - Win32 LIB Release DLL OpenSSL" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curlsrc - Win32 LIB Release DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curlsrc - Win32 LIB Release DLL Windows SSPI" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curlsrc - Win32 LIB Release DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curlsrc - Win32 LIB Release LIB OpenSSL" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "curlsrc - Win32 LIB Release LIB OpenSSL LIB LibSSH2" (based on "Win32 (x86) Console Application")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "curlsrc - Win32 DLL Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug\src"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug\src"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_CONSOLE" /D "_DEBUG" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /FD /EHsc /GZ /c\r
+# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
+# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug" /fixed:no\r
+# ADD LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug" /fixed:no\r
+\r
+!ELSEIF  "$(CFG)" == "curlsrc - Win32 DLL Debug DLL OpenSSL"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL\src"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL\src"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /FD /EHsc /GZ /c\r
+# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
+# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL" /fixed:no\r
+# ADD LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL" /fixed:no\r
+\r
+!ELSEIF  "$(CFG)" == "curlsrc - Win32 DLL Debug DLL OpenSSL DLL LibSSH2"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\src"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\src"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /FD /EHsc /GZ /c\r
+# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
+# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL" /fixed:no\r
+# ADD LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL" /fixed:no\r
+\r
+!ELSEIF  "$(CFG)" == "curlsrc - Win32 DLL Debug DLL Windows SSPI"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI\src"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI\src"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /FD /EHsc /GZ /c\r
+# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
+# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI" /fixed:no\r
+# ADD LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI" /fixed:no\r
+\r
+!ELSEIF  "$(CFG)" == "curlsrc - Win32 DLL Debug DLL Windows SSPI DLL WinIDN"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN\src"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN\src"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /FD /EHsc /GZ /c\r
+# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
+# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN" /fixed:no\r
+# ADD LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN" /fixed:no\r
+\r
+!ELSEIF  "$(CFG)" == "curlsrc - Win32 DLL Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release\src"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release\src"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_CONSOLE" /D "NDEBUG" /FD /EHsc /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /FD /EHsc /c\r
+# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
+# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release" /fixed:no\r
+# ADD LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release" /fixed:no\r
+\r
+!ELSEIF  "$(CFG)" == "curlsrc - Win32 DLL Release DLL OpenSSL"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL\src"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL\src"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /FD /EHsc /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /FD /EHsc /c\r
+# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
+# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL" /fixed:no\r
+# ADD LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL" /fixed:no\r
+\r
+!ELSEIF  "$(CFG)" == "curlsrc - Win32 DLL Release DLL OpenSSL DLL LibSSH2"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2\src"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2\src"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /FD /EHsc /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /FD /EHsc /c\r
+# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
+# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL" /fixed:no\r
+# ADD LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL" /fixed:no\r
+\r
+!ELSEIF  "$(CFG)" == "curlsrc - Win32 DLL Release DLL Windows SSPI"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI\src"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI\src"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /FD /EHsc /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /FD /EHsc /c\r
+# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
+# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI" /fixed:no\r
+# ADD LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI" /fixed:no\r
+\r
+!ELSEIF  "$(CFG)" == "curlsrc - Win32 DLL Release DLL Windows SSPI DLL WinIDN"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN\src"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN\src"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /FD /EHsc /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /FD /EHsc /c\r
+# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
+# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN" /fixed:no\r
+# ADD LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN" /fixed:no\r
+\r
+!ELSEIF  "$(CFG)" == "curlsrc - Win32 LIB Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug\src"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug\src"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_CONSOLE" /D "_DEBUG" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
+# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
+# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug\curl.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug" /fixed:no\r
+# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug" /fixed:no\r
+\r
+!ELSEIF  "$(CFG)" == "curlsrc - Win32 LIB Debug DLL OpenSSL"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\src"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\src"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
+# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
+# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL" /fixed:no\r
+# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Debug" /fixed:no\r
+\r
+!ELSEIF  "$(CFG)" == "curlsrc - Win32 LIB Debug DLL OpenSSL DLL LibSSH2"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\src"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\src"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
+# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
+# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Debug" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Debug" /fixed:no\r
+# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Debug" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Debug" /fixed:no\r
+\r
+!ELSEIF  "$(CFG)" == "curlsrc - Win32 LIB Debug DLL Windows SSPI"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI\src"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI\src"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
+# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
+# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI" /fixed:no\r
+# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI" /fixed:no\r
+\r
+!ELSEIF  "$(CFG)" == "curlsrc - Win32 LIB Debug DLL Windows SSPI DLL WinIDN"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN\src"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN\src"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
+# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
+# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN" /fixed:no\r
+# ADD LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN" /fixed:no\r
+\r
+!ELSEIF  "$(CFG)" == "curlsrc - Win32 LIB Debug LIB OpenSSL"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\src"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\src"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
+# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
+# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL" /fixed:no\r
+# ADD LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\LIB Debug" /fixed:no\r
+\r
+!ELSEIF  "$(CFG)" == "curlsrc - Win32 LIB Debug LIB OpenSSL LIB LibSSH2"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\src"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\src"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
+# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
+# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\LIB Debug" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\LIB Debug" /fixed:no\r
+# ADD LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\LIB Debug" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\LIB Debug" /fixed:no\r
+\r
+!ELSEIF  "$(CFG)" == "curlsrc - Win32 LIB Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release\src"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release\src"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_CONSOLE" /D "NDEBUG" /D "CURL_STATICLIB" /FD /EHsc /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c\r
+# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
+# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release" /fixed:no\r
+# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release" /fixed:no\r
+\r
+!ELSEIF  "$(CFG)" == "curlsrc - Win32 LIB Release DLL OpenSSL"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL\src"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL\src"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c\r
+# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
+# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL" /fixed:no\r
+# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Release" /fixed:no\r
+\r
+!ELSEIF  "$(CFG)" == "curlsrc - Win32 LIB Release DLL OpenSSL DLL LibSSH2"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2\src"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2\src"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c\r
+# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
+# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Release" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Release" /fixed:no\r
+# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Release" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Release" /fixed:no\r
+\r
+!ELSEIF  "$(CFG)" == "curlsrc - Win32 LIB Release DLL Windows SSPI"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI\src"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI\src"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c\r
+# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
+# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI" /fixed:no\r
+# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI" /fixed:no\r
+\r
+!ELSEIF  "$(CFG)" == "curlsrc - Win32 LIB Release DLL Windows SSPI DLL WinIDN"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN\src"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN\src"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c\r
+# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
+# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN" /fixed:no\r
+# ADD LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN" /fixed:no\r
+\r
+!ELSEIF  "$(CFG)" == "curlsrc - Win32 LIB Release LIB OpenSSL"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL\src"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL\src"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c\r
+# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
+# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL" /fixed:no\r
+# ADD LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\LIB Release" /fixed:no\r
+\r
+!ELSEIF  "$(CFG)" == "curlsrc - Win32 LIB Release LIB OpenSSL LIB LibSSH2"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2"\r
+# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2\src"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2"\r
+# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2\src"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c\r
+# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
+# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\LIB Release" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\LIB Release" /fixed:no\r
+# ADD LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\LIB Release" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\LIB Release" /fixed:no\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "curlsrc - Win32 DLL Debug"\r
+# Name "curlsrc - Win32 DLL Debug DLL OpenSSL"\r
+# Name "curlsrc - Win32 DLL Debug DLL OpenSSL DLL LibSSH2"\r
+# Name "curlsrc - Win32 DLL Debug DLL Windows SSPI"\r
+# Name "curlsrc - Win32 DLL Debug DLL Windows SSPI DLL WinIDN"\r
+# Name "curlsrc - Win32 DLL Release"\r
+# Name "curlsrc - Win32 DLL Release DLL OpenSSL"\r
+# Name "curlsrc - Win32 DLL Release DLL OpenSSL DLL LibSSH2"\r
+# Name "curlsrc - Win32 DLL Release DLL Windows SSPI"\r
+# Name "curlsrc - Win32 DLL Release DLL Windows SSPI DLL WinIDN"\r
+# Name "curlsrc - Win32 LIB Debug"\r
+# Name "curlsrc - Win32 LIB Debug DLL OpenSSL"\r
+# Name "curlsrc - Win32 LIB Debug DLL OpenSSL DLL LibSSH2"\r
+# Name "curlsrc - Win32 LIB Debug DLL Windows SSPI"\r
+# Name "curlsrc - Win32 LIB Debug DLL Windows SSPI DLL WinIDN"\r
+# Name "curlsrc - Win32 LIB Debug LIB OpenSSL"\r
+# Name "curlsrc - Win32 LIB Debug LIB OpenSSL LIB LibSSH2"\r
+# Name "curlsrc - Win32 LIB Release"\r
+# Name "curlsrc - Win32 LIB Release DLL OpenSSL"\r
+# Name "curlsrc - Win32 LIB Release DLL OpenSSL DLL LibSSH2"\r
+# Name "curlsrc - Win32 LIB Release DLL Windows SSPI"\r
+# Name "curlsrc - Win32 LIB Release DLL Windows SSPI DLL WinIDN"\r
+# Name "curlsrc - Win32 LIB Release LIB OpenSSL"\r
+# Name "curlsrc - Win32 LIB Release LIB OpenSSL LIB LibSSH2"\r
+# Begin Group "Source Files"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\nonblock.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\rawstr.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\strtoofft.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\warnless.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_binmode.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_bname.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_cb_dbg.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_cb_hdr.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_cb_prg.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_cb_rea.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_cb_see.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_cb_wrt.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_cfgable.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_convert.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_dirhie.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_doswin.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_easysrc.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_formparse.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_getparam.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_getpass.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_help.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_helpers.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_homedir.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_hugehelp.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_libinfo.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_main.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_metalink.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_mfiles.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_msgs.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_operate.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_operhlp.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_panykey.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_paramhlp.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_parsecfg.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_setopt.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_sleep.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_strdup.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_urlglob.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_util.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_vms.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_writeenv.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_writeout.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_xattr.c\r
+# End Source File\r
+# End Group\r
+# Begin Group "Header Files"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\config-win32.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\curl_setup.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\nonblock.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\rawstr.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\strtoofft.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\lib\warnless.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_binmode.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_bname.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_cb_dbg.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_cb_hdr.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_cb_prg.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_cb_rea.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_cb_see.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_cb_wrt.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_cfgable.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_convert.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_dirhie.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_doswin.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_easysrc.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_formparse.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_getparam.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_getpass.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_helpers.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_help.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_homedir.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_hugehelp.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_libinfo.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_main.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_metalink.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_mfiles.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_msgs.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_operate.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_operhlp.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_panykey.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_paramhlp.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_parsecfg.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_sdecls.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_setopt.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_setup.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_sleep.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_strdup.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_urlglob.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_util.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_version.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_vms.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_writeenv.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_writeout.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\tool_xattr.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "Resource Files"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\..\src\curl.rc\r
+# End Source File\r
+# End Group\r
+# End Target\r
+# End Project\r
similarity index 83%
rename from vs/vc6/src/vc6curltool.dsw
rename to projects/Windows/VC6/src/curlsrc.dsw
index b92638a..2aec010 100644 (file)
@@ -3,7 +3,7 @@ Microsoft Developer Studio Workspace File, Format Version 6.00
 \r
 ###############################################################################\r
 \r
 \r
 ###############################################################################\r
 \r
-Project: "curltool"=".\vc6curltool.dsp" - Package Owner=<4>\r
+Project: "curlsrc"=".\curlsrc.dsp" - Package Owner=<4>\r
 \r
 Package=<5>\r
 {{{\r
 \r
 Package=<5>\r
 {{{\r
diff --git a/projects/Windows/VC7.1/curl.sln b/projects/Windows/VC7.1/curl.sln
new file mode 100644 (file)
index 0000000..4475c77
--- /dev/null
@@ -0,0 +1,140 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "src\curlsrc.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+       ProjectSection(ProjectDependencies) = postProject
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} = {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}
+       EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "lib\libcurl.vcproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"
+       ProjectSection(ProjectDependencies) = postProject
+       EndProjectSection
+EndProject
+Global
+       GlobalSection(SolutionConfiguration) = preSolution
+               DLL Debug = DLL Debug
+               DLL Debug - DLL OpenSSL = DLL Debug - DLL OpenSSL
+               DLL Debug - DLL OpenSSL - DLL LibSSH2 = DLL Debug - DLL OpenSSL - DLL LibSSH2
+               DLL Debug - DLL Windows SSPI = DLL Debug - DLL Windows SSPI
+               DLL Debug - DLL Windows SSPI - DLL WinIDN = DLL Debug - DLL Windows SSPI - DLL WinIDN
+               DLL Release = DLL Release
+               DLL Release - DLL OpenSSL = DLL Release - DLL OpenSSL
+               DLL Release - DLL OpenSSL - DLL LibSSH2 = DLL Release - DLL OpenSSL - DLL LibSSH2
+               DLL Release - DLL Windows SSPI = DLL Release - DLL Windows SSPI
+               DLL Release - DLL Windows SSPI - DLL WinIDN = DLL Release - DLL Windows SSPI - DLL WinIDN
+               LIB Debug = LIB Debug
+               LIB Debug - DLL OpenSSL = LIB Debug - DLL OpenSSL
+               LIB Debug - DLL OpenSSL - DLL LibSSH2 = LIB Debug - DLL OpenSSL - DLL LibSSH2
+               LIB Debug - DLL Windows SSPI = LIB Debug - DLL Windows SSPI
+               LIB Debug - DLL Windows SSPI - DLL WinIDN = LIB Debug - DLL Windows SSPI - DLL WinIDN
+               LIB Debug - LIB OpenSSL = LIB Debug - LIB OpenSSL
+               LIB Debug - LIB OpenSSL - LIB LibSSH2 = LIB Debug - LIB OpenSSL - LIB LibSSH2
+               LIB Release = LIB Release
+               LIB Release - DLL OpenSSL = LIB Release - DLL OpenSSL
+               LIB Release - DLL OpenSSL - DLL LibSSH2 = LIB Release - DLL OpenSSL - DLL LibSSH2
+               LIB Release - DLL Windows SSPI = LIB Release - DLL Windows SSPI
+               LIB Release - DLL Windows SSPI - DLL WinIDN = LIB Release - DLL Windows SSPI - DLL WinIDN
+               LIB Release - LIB OpenSSL = LIB Release - LIB OpenSSL
+               LIB Release - LIB OpenSSL - LIB LibSSH2 = LIB Release - LIB OpenSSL - LIB LibSSH2
+       EndGlobalSection
+       GlobalSection(ProjectConfiguration) = postSolution
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug.ActiveCfg = DLL Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug.Build.0 = DLL Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release.ActiveCfg = DLL Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release.Build.0 = DLL Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL.Build.0 = DLL Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI.Build.0 = DLL Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug.ActiveCfg = LIB Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug.Build.0 = LIB Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL.Build.0 = LIB Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL.Build.0 = LIB Debug - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release.ActiveCfg = LIB Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release.Build.0 = LIB Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL.Build.0 = LIB Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI.Build.0 = LIB Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL.Build.0 = LIB Release - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug.ActiveCfg = DLL Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug.Build.0 = DLL Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release.ActiveCfg = DLL Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release.Build.0 = DLL Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL.Build.0 = DLL Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI.Build.0 = DLL Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug.ActiveCfg = LIB Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug.Build.0 = LIB Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL.Build.0 = LIB Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL.Build.0 = LIB Debug - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release.ActiveCfg = LIB Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release.Build.0 = LIB Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL.Build.0 = LIB Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI.Build.0 = LIB Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL.Build.0 = LIB Release - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+       EndGlobalSection
+       GlobalSection(ExtensibilityGlobals) = postSolution
+       EndGlobalSection
+       GlobalSection(ExtensibilityAddIns) = postSolution
+       EndGlobalSection
+EndGlobal
diff --git a/projects/Windows/VC7.1/lib/libcurl.sln b/projects/Windows/VC7.1/lib/libcurl.sln
new file mode 100644 (file)
index 0000000..7513d35
--- /dev/null
@@ -0,0 +1,87 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "libcurl.vcproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"
+       ProjectSection(ProjectDependencies) = postProject
+       EndProjectSection
+EndProject
+Global
+       GlobalSection(SolutionConfiguration) = preSolution
+               DLL Debug = DLL Debug
+               DLL Debug - DLL OpenSSL = DLL Debug - DLL OpenSSL
+               DLL Debug - DLL OpenSSL - DLL LibSSH2 = DLL Debug - DLL OpenSSL - DLL LibSSH2
+               DLL Debug - DLL Windows SSPI = DLL Debug - DLL Windows SSPI
+               DLL Debug - DLL Windows SSPI - DLL WinIDN = DLL Debug - DLL Windows SSPI - DLL WinIDN
+               DLL Release = DLL Release
+               DLL Release - DLL OpenSSL = DLL Release - DLL OpenSSL
+               DLL Release - DLL OpenSSL - DLL LibSSH2 = DLL Release - DLL OpenSSL - DLL LibSSH2
+               DLL Release - DLL Windows SSPI = DLL Release - DLL Windows SSPI
+               DLL Release - DLL Windows SSPI - DLL WinIDN = DLL Release - DLL Windows SSPI - DLL WinIDN
+               LIB Debug = LIB Debug
+               LIB Debug - DLL OpenSSL = LIB Debug - DLL OpenSSL
+               LIB Debug - DLL OpenSSL - DLL LibSSH2 = LIB Debug - DLL OpenSSL - DLL LibSSH2
+               LIB Debug - DLL Windows SSPI = LIB Debug - DLL Windows SSPI
+               LIB Debug - DLL Windows SSPI - DLL WinIDN = LIB Debug - DLL Windows SSPI - DLL WinIDN
+               LIB Debug - LIB OpenSSL = LIB Debug - LIB OpenSSL
+               LIB Debug - LIB OpenSSL - LIB LibSSH2 = LIB Debug - LIB OpenSSL - LIB LibSSH2
+               LIB Release = LIB Release
+               LIB Release - DLL OpenSSL = LIB Release - DLL OpenSSL
+               LIB Release - DLL OpenSSL - DLL LibSSH2 = LIB Release - DLL OpenSSL - DLL LibSSH2
+               LIB Release - DLL Windows SSPI = LIB Release - DLL Windows SSPI
+               LIB Release - DLL Windows SSPI - DLL WinIDN = LIB Release - DLL Windows SSPI - DLL WinIDN
+               LIB Release - LIB OpenSSL = LIB Release - LIB OpenSSL
+               LIB Release - LIB OpenSSL - LIB LibSSH2 = LIB Release - LIB OpenSSL - LIB LibSSH2
+       EndGlobalSection
+       GlobalSection(ProjectConfiguration) = postSolution
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug.ActiveCfg = DLL Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug.Build.0 = DLL Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release.ActiveCfg = DLL Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release.Build.0 = DLL Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL.Build.0 = DLL Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI.Build.0 = DLL Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug.ActiveCfg = LIB Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug.Build.0 = LIB Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL.Build.0 = LIB Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL.Build.0 = LIB Debug - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release.ActiveCfg = LIB Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release.Build.0 = LIB Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL.Build.0 = LIB Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI.Build.0 = LIB Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL.Build.0 = LIB Release - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+       EndGlobalSection
+       GlobalSection(ExtensibilityGlobals) = postSolution
+       EndGlobalSection
+       GlobalSection(ExtensibilityAddIns) = postSolution
+       EndGlobalSection
+EndGlobal
diff --git a/projects/Windows/VC7.1/lib/libcurl.vcproj b/projects/Windows/VC7.1/lib/libcurl.vcproj
new file mode 100644 (file)
index 0000000..a7d5bf3
--- /dev/null
@@ -0,0 +1,1960 @@
+<?xml version="1.0" encoding="Windows-1252"?>\r
+<VisualStudioProject\r
+       ProjectType="Visual C++"\r
+       Version="7.10"\r
+       Name="libcurl"\r
+       ProjectGUID="{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"\r
+       SccProjectName=""\r
+       SccLocalPath="">\r
+       <Platforms>\r
+               <Platform\r
+                       Name="Win32"/>\r
+       </Platforms>\r
+       <Configurations>\r
+               <Configuration\r
+                       Name="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libeay32.lib ssleay32.lib libssh2.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Release,..\..\..\..\..\libssh2\build\Win32\VC7.1\DLL Release"\r
+                               SetChecksum="TRUE"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               SuppressStartupBanner="TRUE"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL OpenSSL|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Debug"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               SuppressStartupBanner="TRUE"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               SuppressStartupBanner="TRUE"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL OpenSSL|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               AdditionalOptions="/machine:I386 "\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="TRUE"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               AdditionalOptions="/machine:I386 "\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="TRUE"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               SetChecksum="TRUE"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               SuppressStartupBanner="TRUE"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               AdditionalOptions="/machine:I386 "\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="TRUE"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL Windows SSPI|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               AdditionalOptions="/machine:I386 "\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="TRUE"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL OpenSSL|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               AdditionalOptions="/machine:I386 "\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="TRUE"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL Windows SSPI|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               SetChecksum="TRUE"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               SuppressStartupBanner="TRUE"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL Windows SSPI|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               SuppressStartupBanner="TRUE"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL Windows SSPI|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               AdditionalOptions="/machine:I386 "\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="TRUE"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL OpenSSL|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Release"\r
+                               SetChecksum="TRUE"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               SuppressStartupBanner="TRUE"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - LIB OpenSSL|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               AdditionalOptions="/machine:I386 "\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="TRUE"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               AdditionalOptions="/machine:I386 "\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="TRUE"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               AdditionalOptions="/machine:I386 "\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="TRUE"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               AdditionalOptions="/machine:I386 "\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="TRUE"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               AdditionalOptions="/machine:I386 "\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="TRUE"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libeay32.lib ssleay32.lib libssh2d.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Debug,..\..\..\..\..\libssh2\build\Win32\VC7.1\DLL Debug"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               SuppressStartupBanner="TRUE"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - LIB OpenSSL|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               AdditionalOptions="/machine:I386 "\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="TRUE"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="normaliz.lib wldap32.lib ws2_32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               SuppressStartupBanner="TRUE"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="normaliz.lib wldap32.lib ws2_32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               SetChecksum="TRUE"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               SuppressStartupBanner="TRUE"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               AdditionalOptions="/machine:I386 "\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="TRUE"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               AdditionalOptions="/machine:I386 "\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="TRUE"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+       </Configurations>\r
+       <References>\r
+       </References>\r
+       <Files>\r
+               <Filter\r
+                       Name="Source Files"\r
+                       Filter="">\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\amigaos.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\asyn-ares.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\asyn-thread.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\base64.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\bundles.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\conncache.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\connect.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\content_encoding.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\cookie.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_addrinfo.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_endian.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_fnmatch.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_gethostname.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_gssapi.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_memrchr.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_multibyte.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ntlm.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ntlm_core.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ntlm_msgs.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ntlm_wb.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_rtmp.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_sasl.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_sasl_gssapi.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_sasl_sspi.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_sspi.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_threads.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\dict.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\dotdot.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\easy.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\escape.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\file.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\fileinfo.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\formdata.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\ftp.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\ftplistparser.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\getenv.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\getinfo.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\gopher.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hash.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hmac.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hostasyn.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hostcheck.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hostip4.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hostip6.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hostip.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hostsyn.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http2.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_chunks.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_digest.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_negotiate.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_negotiate_sspi.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_proxy.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\idn_win32.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\if2ip.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\imap.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\inet_ntop.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\inet_pton.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\krb5.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\ldap.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\llist.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\md4.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\md5.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\memdebug.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\mprintf.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\multi.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\netrc.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\non-ascii.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\nonblock.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\openldap.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\parsedate.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\pingpong.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\pipeline.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\pop3.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\progress.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\rawstr.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\rtsp.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\security.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\select.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\sendf.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\share.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\slist.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\smb.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\smtp.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\socks.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\socks_gssapi.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\socks_sspi.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\speedcheck.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\splay.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\ssh.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strdup.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strequal.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strerror.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strtok.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strtoofft.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\telnet.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\tftp.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\timeval.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\transfer.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\url.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\version.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\warnless.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\wildcard.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\x509asn1.c">\r
+                       </File>\r
+               </Filter>\r
+               <Filter\r
+                       Name="Header Files"\r
+                       Filter="">\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\amigaos.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\arpa_telnet.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\asyn.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\bundles.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\config-win32.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\conncache.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\connect.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\content_encoding.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\cookie.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_addrinfo.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_base64.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_endian.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_fnmatch.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_gethostname.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_gssapi.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_hmac.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ldap.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_md4.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_md5.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_memory.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_memrchr.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_multibyte.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ntlm_core.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ntlm.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ntlm_msgs.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ntlm_wb.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_rtmp.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_sasl.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_sec.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_setup.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_setup_once.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_sspi.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_threads.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curlx.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\dict.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\dotdot.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\easyif.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\escape.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\file.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\fileinfo.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\formdata.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\ftp.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\ftplistparser.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\getinfo.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\gopher.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hash.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hostcheck.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hostip.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http2.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_chunks.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_digest.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_negotiate.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_proxy.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\if2ip.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\imap.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\inet_ntop.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\inet_pton.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\llist.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\memdebug.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\multihandle.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\multiif.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\netrc.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\non-ascii.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\nonblock.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\parsedate.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\pingpong.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\pipeline.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\pop3.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\progress.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\rawstr.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\rtsp.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\select.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\sendf.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\setup-vms.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\share.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\sigpipe.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\slist.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\smb.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\smtp.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\sockaddr.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\socks.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\speedcheck.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\splay.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\ssh.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strdup.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strequal.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strerror.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strtok.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strtoofft.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\telnet.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\tftp.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\timeval.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\transfer.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\urldata.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\url.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\warnless.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\wildcard.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\x509asn1.h">\r
+                       </File>\r
+               </Filter>\r
+               <Filter\r
+                       Name="Resource Files"\r
+                       Filter="">\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\libcurl.rc">\r
+                       </File>\r
+               </Filter>\r
+               <Filter\r
+                       Name="vtls"\r
+                       Filter="">\r
+                       <Filter\r
+                               Name="Source Files"\r
+                               Filter="">\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\axtls.c">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\curl_darwinssl.c">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\curl_schannel.c">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\cyassl.c">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\gskit.c">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\gtls.c">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\nss.c">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\openssl.c">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\polarssl.c">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\polarssl_threadlock.c">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\vtls.c">\r
+                               </File>\r
+                       </Filter>\r
+                       <Filter\r
+                               Name="Header Files"\r
+                               Filter="">\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\axtls.h">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\curl_darwinssl.h">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\curl_schannel.h">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\cyassl.h">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\gskit.h">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\gtls.h">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\nssg.h">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\openssl.h">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\polarssl.h">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\polarssl_threadlock.h">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\vtls.h">\r
+                               </File>\r
+                       </Filter>\r
+               </Filter>\r
+       </Files>\r
+       <Globals>\r
+       </Globals>\r
+</VisualStudioProject>\r
diff --git a/projects/Windows/VC7.1/src/curlsrc.sln b/projects/Windows/VC7.1/src/curlsrc.sln
new file mode 100644 (file)
index 0000000..cba3b60
--- /dev/null
@@ -0,0 +1,87 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "curlsrc.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+       ProjectSection(ProjectDependencies) = postProject
+       EndProjectSection
+EndProject
+Global
+       GlobalSection(SolutionConfiguration) = preSolution
+               DLL Debug = DLL Debug
+               DLL Debug - DLL OpenSSL = DLL Debug - DLL OpenSSL
+               DLL Debug - DLL OpenSSL - DLL LibSSH2 = DLL Debug - DLL OpenSSL - DLL LibSSH2
+               DLL Debug - DLL Windows SSPI = DLL Debug - DLL Windows SSPI
+               DLL Debug - DLL Windows SSPI - DLL WinIDN = DLL Debug - DLL Windows SSPI - DLL WinIDN
+               DLL Release = DLL Release
+               DLL Release - DLL OpenSSL = DLL Release - DLL OpenSSL
+               DLL Release - DLL OpenSSL - DLL LibSSH2 = DLL Release - DLL OpenSSL - DLL LibSSH2
+               DLL Release - DLL Windows SSPI = DLL Release - DLL Windows SSPI
+               DLL Release - DLL Windows SSPI - DLL WinIDN = DLL Release - DLL Windows SSPI - DLL WinIDN
+               LIB Debug = LIB Debug
+               LIB Debug - DLL OpenSSL = LIB Debug - DLL OpenSSL
+               LIB Debug - DLL OpenSSL - DLL LibSSH2 = LIB Debug - DLL OpenSSL - DLL LibSSH2
+               LIB Debug - DLL Windows SSPI = LIB Debug - DLL Windows SSPI
+               LIB Debug - DLL Windows SSPI - DLL WinIDN = LIB Debug - DLL Windows SSPI - DLL WinIDN
+               LIB Debug - LIB OpenSSL = LIB Debug - LIB OpenSSL
+               LIB Debug - LIB OpenSSL - LIB LibSSH2 = LIB Debug - LIB OpenSSL - LIB LibSSH2
+               LIB Release = LIB Release
+               LIB Release - DLL OpenSSL = LIB Release - DLL OpenSSL
+               LIB Release - DLL OpenSSL - DLL LibSSH2 = LIB Release - DLL OpenSSL - DLL LibSSH2
+               LIB Release - DLL Windows SSPI = LIB Release - DLL Windows SSPI
+               LIB Release - DLL Windows SSPI - DLL WinIDN = LIB Release - DLL Windows SSPI - DLL WinIDN
+               LIB Release - LIB OpenSSL = LIB Release - LIB OpenSSL
+               LIB Release - LIB OpenSSL - LIB LibSSH2 = LIB Release - LIB OpenSSL - LIB LibSSH2
+       EndGlobalSection
+       GlobalSection(ProjectConfiguration) = postSolution
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug.ActiveCfg = DLL Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug.Build.0 = DLL Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release.ActiveCfg = DLL Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release.Build.0 = DLL Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL.Build.0 = DLL Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI.Build.0 = DLL Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug.ActiveCfg = LIB Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug.Build.0 = LIB Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL.Build.0 = LIB Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL.Build.0 = LIB Debug - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release.ActiveCfg = LIB Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release.Build.0 = LIB Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL.Build.0 = LIB Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI.Build.0 = LIB Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL.Build.0 = LIB Release - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+       EndGlobalSection
+       GlobalSection(ExtensibilityGlobals) = postSolution
+       EndGlobalSection
+       GlobalSection(ExtensibilityAddIns) = postSolution
+       EndGlobalSection
+EndGlobal
diff --git a/projects/Windows/VC7.1/src/curlsrc.vcproj b/projects/Windows/VC7.1/src/curlsrc.vcproj
new file mode 100644 (file)
index 0000000..024e9d7
--- /dev/null
@@ -0,0 +1,1652 @@
+<?xml version="1.0" encoding="Windows-1252"?>\r
+<VisualStudioProject\r
+       ProjectType="Visual C++"\r
+       Version="7.10"\r
+       Name="curlsrc"\r
+       SccProjectName=""\r
+       SccLocalPath="">\r
+       <Platforms>\r
+               <Platform\r
+                       Name="Win32"/>\r
+       </Platforms>\r
+       <Configurations>\r
+               <Configuration\r
+                       Name="LIB Release - LIB OpenSSL|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\LIB Release"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL Windows SSPI|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL Windows SSPI|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Debug,..\..\..\..\..\libssh2\build\Win32\VC7.1\DLL Debug"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - LIB OpenSSL|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\LIB Debug"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL OpenSSL|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\LIB Debug,..\..\..\..\..\libssh2\build\Win32\VC7.1\LIB Debug"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL OpenSSL|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Release"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Release,..\..\..\..\..\libssh2\build\Win32\VC7.1\DLL Release"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\LIB Release,..\..\..\..\..\libssh2\build\Win32\VC7.1\LIB Release"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL OpenSSL|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Debug"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL OpenSSL|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL Windows SSPI|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL Windows SSPI|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="normaliz.lib wldap32.lib ws2_32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="normaliz.lib wldap32.lib ws2_32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+       </Configurations>\r
+       <References>\r
+       </References>\r
+       <Files>\r
+               <Filter\r
+                       Name="Source Files"\r
+                       Filter="">\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\nonblock.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\rawstr.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strtoofft.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\warnless.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_binmode.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_bname.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_dbg.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_hdr.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_prg.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_rea.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_see.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_wrt.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cfgable.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_convert.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_dirhie.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_doswin.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_easysrc.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_formparse.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_getparam.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_getpass.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_help.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_helpers.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_homedir.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_hugehelp.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_libinfo.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_main.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_metalink.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_mfiles.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_msgs.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_operate.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_operhlp.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_panykey.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_paramhlp.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_parsecfg.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_setopt.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_sleep.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_strdup.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_urlglob.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_util.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_vms.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_writeenv.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_writeout.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_xattr.c">\r
+                       </File>\r
+               </Filter>\r
+               <Filter\r
+                       Name="Header Files"\r
+                       Filter="">\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\config-win32.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_setup.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\nonblock.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\rawstr.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strtoofft.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\warnless.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_binmode.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_bname.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_dbg.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_hdr.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_prg.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_rea.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_see.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_wrt.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cfgable.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_convert.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_dirhie.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_doswin.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_easysrc.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_formparse.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_getparam.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_getpass.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_helpers.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_help.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_homedir.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_hugehelp.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_libinfo.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_main.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_metalink.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_mfiles.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_msgs.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_operate.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_operhlp.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_panykey.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_paramhlp.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_parsecfg.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_sdecls.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_setopt.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_setup.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_sleep.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_strdup.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_urlglob.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_util.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_version.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_vms.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_writeenv.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_writeout.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_xattr.h">\r
+                       </File>\r
+               </Filter>\r
+               <Filter\r
+                       Name="Resource Files"\r
+                       Filter="">\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\curl.rc">\r
+                       </File>\r
+               </Filter>\r
+       </Files>\r
+       <Globals>\r
+       </Globals>\r
+</VisualStudioProject>\r
diff --git a/projects/Windows/VC7/curl.sln b/projects/Windows/VC7/curl.sln
new file mode 100644 (file)
index 0000000..fb7b89a
--- /dev/null
@@ -0,0 +1,138 @@
+Microsoft Visual Studio Solution File, Format Version 7.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "src\curlsrc.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "lib\libcurl.vcproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"
+EndProject
+Global
+       GlobalSection(SolutionConfiguration) = preSolution
+               ConfigName.0 = DLL Debug
+               ConfigName.1 = DLL Debug - DLL OpenSSL
+               ConfigName.2 = DLL Debug - DLL OpenSSL - DLL LibSSH2
+               ConfigName.3 = DLL Debug - DLL Windows SSPI
+               ConfigName.4 = DLL Debug - DLL Windows SSPI - DLL WinIDN
+               ConfigName.5 = DLL Release
+               ConfigName.6 = DLL Release - DLL OpenSSL
+               ConfigName.7 = DLL Release - DLL OpenSSL - DLL LibSSH2
+               ConfigName.8 = DLL Release - DLL Windows SSPI
+               ConfigName.9 = DLL Release - DLL Windows SSPI - DLL WinIDN
+               ConfigName.10 = LIB Debug
+               ConfigName.11 = LIB Debug - DLL OpenSSL
+               ConfigName.12 = LIB Debug - DLL OpenSSL - DLL LibSSH2
+               ConfigName.13 = LIB Debug - DLL Windows SSPI
+               ConfigName.14 = LIB Debug - DLL Windows SSPI - DLL WinIDN
+               ConfigName.15 = LIB Debug - LIB OpenSSL
+               ConfigName.16 = LIB Debug - LIB OpenSSL - LIB LibSSH2
+               ConfigName.17 = LIB Release
+               ConfigName.18 = LIB Release - DLL OpenSSL
+               ConfigName.19 = LIB Release - DLL OpenSSL - DLL LibSSH2
+               ConfigName.20 = LIB Release - DLL Windows SSPI
+               ConfigName.21 = LIB Release - DLL Windows SSPI - DLL WinIDN
+               ConfigName.22 = LIB Release - LIB OpenSSL
+               ConfigName.23 = LIB Release - LIB OpenSSL - LIB LibSSH2
+       EndGlobalSection
+       GlobalSection(ProjectDependencies) = postSolution
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.0 = {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}
+       EndGlobalSection
+       GlobalSection(ProjectConfiguration) = postSolution
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug.ActiveCfg = DLL Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug.Build.0 = DLL Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release.ActiveCfg = DLL Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release.Build.0 = DLL Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL.Build.0 = DLL Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI.Build.0 = DLL Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug.ActiveCfg = LIB Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug.Build.0 = LIB Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL.Build.0 = LIB Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL.Build.0 = LIB Debug - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release.ActiveCfg = LIB Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release.Build.0 = LIB Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL.Build.0 = LIB Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI.Build.0 = LIB Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL.Build.0 = LIB Release - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug.ActiveCfg = DLL Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug.Build.0 = DLL Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release.ActiveCfg = DLL Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release.Build.0 = DLL Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL.Build.0 = DLL Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI.Build.0 = DLL Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug.ActiveCfg = LIB Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug.Build.0 = LIB Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL.Build.0 = LIB Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL.Build.0 = LIB Debug - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release.ActiveCfg = LIB Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release.Build.0 = LIB Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL.Build.0 = LIB Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI.Build.0 = LIB Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL.Build.0 = LIB Release - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+       EndGlobalSection
+       GlobalSection(ExtensibilityGlobals) = postSolution
+       EndGlobalSection
+       GlobalSection(ExtensibilityAddIns) = postSolution
+       EndGlobalSection
+EndGlobal
diff --git a/projects/Windows/VC7/lib/libcurl.sln b/projects/Windows/VC7/lib/libcurl.sln
new file mode 100644 (file)
index 0000000..f092661
--- /dev/null
@@ -0,0 +1,87 @@
+Microsoft Visual Studio Solution File, Format Version 7.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "libcurl.vcproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"
+EndProject
+Global
+       GlobalSection(SolutionConfiguration) = preSolution
+               ConfigName.0 = DLL Debug
+               ConfigName.1 = DLL Debug - DLL OpenSSL
+               ConfigName.2 = DLL Debug - DLL OpenSSL - DLL LibSSH2
+               ConfigName.3 = DLL Debug - DLL Windows SSPI
+               ConfigName.4 = DLL Debug - DLL Windows SSPI - DLL WinIDN
+               ConfigName.5 = DLL Release
+               ConfigName.6 = DLL Release - DLL OpenSSL
+               ConfigName.7 = DLL Release - DLL OpenSSL - DLL LibSSH2
+               ConfigName.8 = DLL Release - DLL Windows SSPI
+               ConfigName.9 = DLL Release - DLL Windows SSPI - DLL WinIDN
+               ConfigName.10 = LIB Debug
+               ConfigName.11 = LIB Debug - DLL OpenSSL
+               ConfigName.12 = LIB Debug - DLL OpenSSL - DLL LibSSH2
+               ConfigName.13 = LIB Debug - DLL Windows SSPI
+               ConfigName.14 = LIB Debug - DLL Windows SSPI - DLL WinIDN
+               ConfigName.15 = LIB Debug - LIB OpenSSL
+               ConfigName.16 = LIB Debug - LIB OpenSSL - LIB LibSSH2
+               ConfigName.17 = LIB Release
+               ConfigName.18 = LIB Release - DLL OpenSSL
+               ConfigName.19 = LIB Release - DLL OpenSSL - DLL LibSSH2
+               ConfigName.20 = LIB Release - DLL Windows SSPI
+               ConfigName.21 = LIB Release - DLL Windows SSPI - DLL WinIDN
+               ConfigName.22 = LIB Release - LIB OpenSSL
+               ConfigName.23 = LIB Release - LIB OpenSSL - LIB LibSSH2
+       EndGlobalSection
+       GlobalSection(ProjectDependencies) = postSolution
+       EndGlobalSection
+       GlobalSection(ProjectConfiguration) = postSolution
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug.ActiveCfg = DLL Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug.Build.0 = DLL Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release.ActiveCfg = DLL Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release.Build.0 = DLL Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL.Build.0 = DLL Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI.Build.0 = DLL Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug.ActiveCfg = LIB Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug.Build.0 = LIB Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL.Build.0 = LIB Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL.Build.0 = LIB Debug - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release.ActiveCfg = LIB Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release.Build.0 = LIB Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL.Build.0 = LIB Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI.Build.0 = LIB Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL.Build.0 = LIB Release - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+       EndGlobalSection
+       GlobalSection(ExtensibilityGlobals) = postSolution
+       EndGlobalSection
+       GlobalSection(ExtensibilityAddIns) = postSolution
+       EndGlobalSection
+EndGlobal
diff --git a/projects/Windows/VC7/lib/libcurl.vcproj b/projects/Windows/VC7/lib/libcurl.vcproj
new file mode 100644 (file)
index 0000000..e3cbba1
--- /dev/null
@@ -0,0 +1,1814 @@
+<?xml version="1.0" encoding = "Windows-1252"?>\r
+<VisualStudioProject\r
+       ProjectType="Visual C++"\r
+       Version="7.00"\r
+       Name="libcurl"\r
+       ProjectGUID="{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"\r
+       SccProjectName=""\r
+       SccLocalPath="">\r
+       <Platforms>\r
+               <Platform\r
+                       Name="Win32"/>\r
+       </Platforms>\r
+       <Configurations>\r
+               <Configuration\r
+                       Name="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libeay32.lib ssleay32.lib libssh2.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7\DLL Release,..\..\..\..\..\libssh2\build\Win32\VC7\DLL Release"\r
+                               SetChecksum="TRUE"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               SuppressStartupBanner="TRUE"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL OpenSSL|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7\DLL Debug"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               SuppressStartupBanner="TRUE"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               SuppressStartupBanner="TRUE"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL OpenSSL|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               AdditionalOptions="/machine:I386 "\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="TRUE"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               AdditionalOptions="/machine:I386 "\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="TRUE"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               SetChecksum="TRUE"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               SuppressStartupBanner="TRUE"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               AdditionalOptions="/machine:I386 "\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="TRUE"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL Windows SSPI|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               AdditionalOptions="/machine:I386 "\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="TRUE"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL OpenSSL|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               AdditionalOptions="/machine:I386 "\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="TRUE"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL Windows SSPI|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               SetChecksum="TRUE"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               SuppressStartupBanner="TRUE"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL Windows SSPI|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               SuppressStartupBanner="TRUE"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL Windows SSPI|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               AdditionalOptions="/machine:I386 "\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="TRUE"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL OpenSSL|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7\DLL Release"\r
+                               SetChecksum="TRUE"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               SuppressStartupBanner="TRUE"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - LIB OpenSSL|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               AdditionalOptions="/machine:I386 "\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="TRUE"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               AdditionalOptions="/machine:I386 "\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="TRUE"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               AdditionalOptions="/machine:I386 "\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="TRUE"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               AdditionalOptions="/machine:I386 "\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="TRUE"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               AdditionalOptions="/machine:I386 "\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="TRUE"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32,..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libeay32.lib ssleay32.lib libssh2d.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7\DLL Debug,..\..\..\..\..\libssh2\build\Win32\VC7\DLL Debug"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               SuppressStartupBanner="TRUE"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - LIB OpenSSL|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               AdditionalOptions="/machine:I386 "\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="TRUE"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="normaliz.lib wldap32.lib ws2_32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               SuppressStartupBanner="TRUE"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="normaliz.lib wldap32.lib ws2_32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               SetChecksum="TRUE"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               SuppressStartupBanner="TRUE"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               AdditionalOptions="/machine:I386 "\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="TRUE"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               AdditionalOptions="/machine:I386 "\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="TRUE"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+               </Configuration>\r
+       </Configurations>\r
+       <Files>\r
+               <Filter\r
+                       Name="Source Files"\r
+                       Filter="">\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\amigaos.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\asyn-ares.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\asyn-thread.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\base64.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\bundles.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\conncache.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\connect.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\content_encoding.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\cookie.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_addrinfo.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_endian.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_fnmatch.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_gethostname.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_gssapi.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_memrchr.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_multibyte.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ntlm.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ntlm_core.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ntlm_msgs.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ntlm_wb.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_rtmp.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_sasl.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_sasl_gssapi.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_sasl_sspi.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_sspi.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_threads.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\dict.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\dotdot.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\easy.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\escape.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\file.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\fileinfo.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\formdata.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\ftp.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\ftplistparser.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\getenv.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\getinfo.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\gopher.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hash.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hmac.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hostasyn.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hostcheck.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hostip4.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hostip6.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hostip.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hostsyn.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http2.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_chunks.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_digest.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_negotiate.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_negotiate_sspi.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_proxy.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\idn_win32.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\if2ip.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\imap.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\inet_ntop.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\inet_pton.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\krb5.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\ldap.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\llist.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\md4.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\md5.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\memdebug.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\mprintf.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\multi.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\netrc.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\non-ascii.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\nonblock.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\openldap.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\parsedate.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\pingpong.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\pipeline.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\pop3.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\progress.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\rawstr.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\rtsp.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\security.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\select.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\sendf.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\share.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\slist.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\smb.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\smtp.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\socks.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\socks_gssapi.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\socks_sspi.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\speedcheck.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\splay.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\ssh.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strdup.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strequal.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strerror.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strtok.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strtoofft.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\telnet.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\tftp.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\timeval.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\transfer.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\url.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\version.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\warnless.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\wildcard.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\x509asn1.c">\r
+                       </File>\r
+               </Filter>\r
+               <Filter\r
+                       Name="Header Files"\r
+                       Filter="">\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\amigaos.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\arpa_telnet.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\asyn.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\bundles.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\config-win32.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\conncache.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\connect.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\content_encoding.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\cookie.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_addrinfo.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_base64.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_endian.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_fnmatch.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_gethostname.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_gssapi.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_hmac.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ldap.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_md4.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_md5.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_memory.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_memrchr.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_multibyte.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ntlm_core.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ntlm.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ntlm_msgs.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ntlm_wb.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_rtmp.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_sasl.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_sec.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_setup.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_setup_once.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_sspi.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_threads.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curlx.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\dict.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\dotdot.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\easyif.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\escape.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\file.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\fileinfo.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\formdata.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\ftp.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\ftplistparser.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\getinfo.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\gopher.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hash.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hostcheck.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hostip.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http2.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_chunks.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_digest.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_negotiate.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_proxy.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\if2ip.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\imap.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\inet_ntop.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\inet_pton.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\llist.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\memdebug.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\multihandle.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\multiif.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\netrc.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\non-ascii.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\nonblock.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\parsedate.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\pingpong.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\pipeline.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\pop3.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\progress.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\rawstr.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\rtsp.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\select.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\sendf.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\setup-vms.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\share.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\sigpipe.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\slist.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\smb.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\smtp.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\sockaddr.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\socks.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\speedcheck.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\splay.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\ssh.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strdup.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strequal.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strerror.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strtok.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strtoofft.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\telnet.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\tftp.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\timeval.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\transfer.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\urldata.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\url.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\warnless.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\wildcard.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\x509asn1.h">\r
+                       </File>\r
+               </Filter>\r
+               <Filter\r
+                       Name="Resource Files"\r
+                       Filter="">\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\libcurl.rc">\r
+                       </File>\r
+               </Filter>\r
+               <Filter\r
+                       Name="vtls"\r
+                       Filter="">\r
+                       <Filter\r
+                               Name="Source Files"\r
+                               Filter="">\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\axtls.c">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\curl_darwinssl.c">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\curl_schannel.c">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\cyassl.c">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\gskit.c">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\gtls.c">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\nss.c">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\openssl.c">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\polarssl.c">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\polarssl_threadlock.c">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\vtls.c">\r
+                               </File>\r
+                       </Filter>\r
+                       <Filter\r
+                               Name="Header Files"\r
+                               Filter="">\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\axtls.h">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\curl_darwinssl.h">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\curl_schannel.h">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\cyassl.h">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\gskit.h">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\gtls.h">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\nssg.h">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\openssl.h">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\polarssl.h">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\polarssl_threadlock.h">\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\vtls.h">\r
+                               </File>\r
+                       </Filter>\r
+               </Filter>\r
+       </Files>\r
+       <Globals>\r
+       </Globals>\r
+</VisualStudioProject>\r
diff --git a/projects/Windows/VC7/src/curlsrc.sln b/projects/Windows/VC7/src/curlsrc.sln
new file mode 100644 (file)
index 0000000..651c9b2
--- /dev/null
@@ -0,0 +1,87 @@
+Microsoft Visual Studio Solution File, Format Version 7.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "curlsrc.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+EndProject
+Global
+       GlobalSection(SolutionConfiguration) = preSolution
+               ConfigName.0 = DLL Debug
+               ConfigName.1 = DLL Debug - DLL OpenSSL
+               ConfigName.2 = DLL Debug - DLL OpenSSL - DLL LibSSH2
+               ConfigName.3 = DLL Debug - DLL Windows SSPI
+               ConfigName.4 = DLL Debug - DLL Windows SSPI - DLL WinIDN
+               ConfigName.5 = DLL Release
+               ConfigName.6 = DLL Release - DLL OpenSSL
+               ConfigName.7 = DLL Release - DLL OpenSSL - DLL LibSSH2
+               ConfigName.8 = DLL Release - DLL Windows SSPI
+               ConfigName.9 = DLL Release - DLL Windows SSPI - DLL WinIDN
+               ConfigName.10 = LIB Debug
+               ConfigName.11 = LIB Debug - DLL OpenSSL
+               ConfigName.12 = LIB Debug - DLL OpenSSL - DLL LibSSH2
+               ConfigName.13 = LIB Debug - DLL Windows SSPI
+               ConfigName.14 = LIB Debug - DLL Windows SSPI - DLL WinIDN
+               ConfigName.15 = LIB Debug - LIB OpenSSL
+               ConfigName.16 = LIB Debug - LIB OpenSSL - LIB LibSSH2
+               ConfigName.17 = LIB Release
+               ConfigName.18 = LIB Release - DLL OpenSSL
+               ConfigName.19 = LIB Release - DLL OpenSSL - DLL LibSSH2
+               ConfigName.20 = LIB Release - DLL Windows SSPI
+               ConfigName.21 = LIB Release - DLL Windows SSPI - DLL WinIDN
+               ConfigName.22 = LIB Release - LIB OpenSSL
+               ConfigName.23 = LIB Release - LIB OpenSSL - LIB LibSSH2
+       EndGlobalSection
+       GlobalSection(ProjectDependencies) = postSolution
+       EndGlobalSection
+       GlobalSection(ProjectConfiguration) = postSolution
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug.ActiveCfg = DLL Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug.Build.0 = DLL Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release.ActiveCfg = DLL Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release.Build.0 = DLL Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL.Build.0 = DLL Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI.Build.0 = DLL Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug.ActiveCfg = LIB Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug.Build.0 = LIB Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL.Build.0 = LIB Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL.Build.0 = LIB Debug - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release.ActiveCfg = LIB Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release.Build.0 = LIB Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL.Build.0 = LIB Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI.Build.0 = LIB Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL.Build.0 = LIB Release - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+       EndGlobalSection
+       GlobalSection(ExtensibilityGlobals) = postSolution
+       EndGlobalSection
+       GlobalSection(ExtensibilityAddIns) = postSolution
+       EndGlobalSection
+EndGlobal
diff --git a/projects/Windows/VC7/src/curlsrc.vcproj b/projects/Windows/VC7/src/curlsrc.vcproj
new file mode 100644 (file)
index 0000000..bab5237
--- /dev/null
@@ -0,0 +1,1506 @@
+<?xml version="1.0" encoding = "Windows-1252"?>\r
+<VisualStudioProject\r
+       ProjectType="Visual C++"\r
+       Version="7.00"\r
+       Name="curlsrc"\r
+       SccProjectName=""\r
+       SccLocalPath="">\r
+       <Platforms>\r
+               <Platform\r
+                       Name="Win32"/>\r
+       </Platforms>\r
+       <Configurations>\r
+               <Configuration\r
+                       Name="LIB Release - LIB OpenSSL|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\LIB Release"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL Windows SSPI|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL Windows SSPI|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\DLL Debug,..\..\..\..\..\libssh2\build\Win32\VC7\DLL Debug"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - LIB OpenSSL|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\LIB Debug"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL OpenSSL|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\LIB Debug,..\..\..\..\..\libssh2\build\Win32\VC7\LIB Debug"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL OpenSSL|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\DLL Release"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\DLL Release,..\..\..\..\..\libssh2\build\Win32\VC7\DLL Release"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\LIB Release,..\..\..\..\..\libssh2\build\Win32\VC7\LIB Release"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL OpenSSL|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\DLL Debug"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL OpenSSL|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL Windows SSPI|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL Windows SSPI|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               DebugInformationFormat="3"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="normaliz.lib wldap32.lib ws2_32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32"\r
+                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalOptions="/EHsc "\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="TRUE"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="TRUE"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="TRUE"\r
+                               CompileAs="0"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
+                               AdditionalDependencies="normaliz.lib wldap32.lib ws2_32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="TRUE"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
+                               SubSystem="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+               </Configuration>\r
+       </Configurations>\r
+       <Files>\r
+               <Filter\r
+                       Name="Source Files"\r
+                       Filter="">\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\nonblock.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\rawstr.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strtoofft.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\warnless.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_binmode.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_bname.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_dbg.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_hdr.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_prg.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_rea.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_see.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_wrt.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cfgable.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_convert.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_dirhie.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_doswin.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_easysrc.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_formparse.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_getparam.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_getpass.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_help.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_helpers.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_homedir.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_hugehelp.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_libinfo.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_main.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_metalink.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_mfiles.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_msgs.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_operate.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_operhlp.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_panykey.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_paramhlp.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_parsecfg.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_setopt.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_sleep.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_strdup.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_urlglob.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_util.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_vms.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_writeenv.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_writeout.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_xattr.c">\r
+                       </File>\r
+               </Filter>\r
+               <Filter\r
+                       Name="Header Files"\r
+                       Filter="">\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\config-win32.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_setup.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\nonblock.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\rawstr.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strtoofft.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\warnless.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_binmode.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_bname.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_dbg.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_hdr.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_prg.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_rea.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_see.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_wrt.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cfgable.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_convert.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_dirhie.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_doswin.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_easysrc.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_formparse.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_getparam.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_getpass.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_helpers.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_help.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_homedir.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_hugehelp.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_libinfo.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_main.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_metalink.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_mfiles.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_msgs.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_operate.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_operhlp.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_panykey.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_paramhlp.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_parsecfg.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_sdecls.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_setopt.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_setup.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_sleep.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_strdup.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_urlglob.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_util.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_version.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_vms.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_writeenv.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_writeout.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_xattr.h">\r
+                       </File>\r
+               </Filter>\r
+               <Filter\r
+                       Name="Resource Files"\r
+                       Filter="">\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\curl.rc">\r
+                       </File>\r
+               </Filter>\r
+       </Files>\r
+       <Globals>\r
+       </Globals>\r
+</VisualStudioProject>\r
diff --git a/projects/Windows/VC8/curl.sln b/projects/Windows/VC8/curl.sln
new file mode 100644 (file)
index 0000000..0dfbd1a
--- /dev/null
@@ -0,0 +1,258 @@
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "src\curlsrc.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+       ProjectSection(ProjectDependencies) = postProject
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} = {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}
+       EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "lib\libcurl.vcproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32
+               DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
+               DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+               DLL Debug|Win32 = DLL Debug|Win32
+               DLL Debug|x64 = DLL Debug|x64
+               DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32
+               DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64
+               DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
+               DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+               DLL Release|Win32 = DLL Release|Win32
+               DLL Release|x64 = DLL Release|x64
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32
+               LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32
+               LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
+               LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+               LIB Debug|Win32 = LIB Debug|Win32
+               LIB Debug|x64 = LIB Debug|x64
+               LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32
+               LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64
+               LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32
+               LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64
+               LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
+               LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+               LIB Release|Win32 = LIB Release|Win32
+               LIB Release|x64 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.Build.0 = DLL Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.Build.0 = DLL Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.Build.0 = LIB Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.Build.0 = LIB Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.Build.0 = DLL Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.Build.0 = LIB Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.Build.0 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+EndGlobal
diff --git a/projects/Windows/VC8/lib/libcurl.sln b/projects/Windows/VC8/lib/libcurl.sln
new file mode 100644 (file)
index 0000000..e0cd36c
--- /dev/null
@@ -0,0 +1,157 @@
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "libcurl.vcproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32
+               DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
+               DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+               DLL Debug|Win32 = DLL Debug|Win32
+               DLL Debug|x64 = DLL Debug|x64
+               DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32
+               DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64
+               DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
+               DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+               DLL Release|Win32 = DLL Release|Win32
+               DLL Release|x64 = DLL Release|x64
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32
+               LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32
+               LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
+               LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+               LIB Debug|Win32 = LIB Debug|Win32
+               LIB Debug|x64 = LIB Debug|x64
+               LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32
+               LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64
+               LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32
+               LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64
+               LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
+               LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+               LIB Release|Win32 = LIB Release|Win32
+               LIB Release|x64 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.Build.0 = DLL Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.Build.0 = LIB Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.Build.0 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+EndGlobal
diff --git a/projects/Windows/VC8/lib/libcurl.vcproj b/projects/Windows/VC8/lib/libcurl.vcproj
new file mode 100644 (file)
index 0000000..06ace96
--- /dev/null
@@ -0,0 +1,4759 @@
+<?xml version="1.0" encoding="Windows-1252"?>\r
+<VisualStudioProject\r
+       ProjectType="Visual C++"\r
+       Version="8.00"\r
+       Name="libcurl"\r
+       ProjectGUID="{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"\r
+       RootNamespace="libcurl"\r
+       >\r
+       <Platforms>\r
+               <Platform\r
+                       Name="Win32"\r
+               />\r
+               <Platform\r
+                       Name="x64"\r
+               />\r
+       </Platforms>\r
+       <ToolFiles>\r
+       </ToolFiles>\r
+       <Configurations>\r
+               <Configuration\r
+                       Name="DLL Debug|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories=""\r
+                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories=""\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories=""\r
+                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories=""\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL OpenSSL|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC8\DLL Debug"\r
+                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL OpenSSL|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC8\DLL Debug"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL OpenSSL|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC8\DLL Release"\r
+                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL OpenSSL|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC8\DLL Release"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL Windows SSPI|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories=""\r
+                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL Windows SSPI|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories=""\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL Windows SSPI|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories=""\r
+                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL Windows SSPI|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories=""\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib libssh2d.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC8\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC8\DLL Debug"\r
+                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib libssh2d.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC8\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC8\DLL Debug"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib libssh2.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC8\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC8\DLL Release"\r
+                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL OpenSSL - DLL LibSSH2|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib libssh2.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC8\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC8\DLL Release"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL OpenSSL|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL OpenSSL|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL Windows SSPI|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL Windows SSPI|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - LIB OpenSSL|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - LIB OpenSSL|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL OpenSSL|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL OpenSSL|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL OpenSSL - DLL LibSSH2|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL Windows SSPI|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL Windows SSPI|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - LIB OpenSSL|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - LIB OpenSSL|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - LIB OpenSSL - LIB LibSSH2|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories=""\r
+                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories=""\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories=""\r
+                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL Windows SSPI - DLL WinIDN|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories=""\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL Windows SSPI - DLL WinIDN|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+       </Configurations>\r
+       <References>\r
+       </References>\r
+       <Files>\r
+               <Filter\r
+                       Name="Source Files"\r
+                       >\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\amigaos.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\asyn-ares.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\asyn-thread.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\base64.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\bundles.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\conncache.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\connect.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\content_encoding.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\cookie.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_addrinfo.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_endian.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_fnmatch.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_gethostname.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_gssapi.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_memrchr.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_multibyte.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ntlm.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ntlm_core.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ntlm_msgs.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ntlm_wb.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_rtmp.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_sasl.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_sasl_gssapi.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_sasl_sspi.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_sspi.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_threads.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\dict.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\dotdot.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\easy.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\escape.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\file.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\fileinfo.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\formdata.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\ftp.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\ftplistparser.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\getenv.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\getinfo.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\gopher.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hash.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hmac.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hostasyn.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hostcheck.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hostip4.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hostip6.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hostip.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hostsyn.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http2.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_chunks.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_digest.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_negotiate.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_negotiate_sspi.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_proxy.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\idn_win32.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\if2ip.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\imap.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\inet_ntop.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\inet_pton.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\krb5.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\ldap.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\llist.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\md4.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\md5.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\memdebug.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\mprintf.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\multi.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\netrc.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\non-ascii.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\nonblock.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\openldap.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\parsedate.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\pingpong.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\pipeline.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\pop3.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\progress.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\rawstr.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\rtsp.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\security.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\select.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\sendf.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\share.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\slist.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\smb.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\smtp.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\socks.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\socks_gssapi.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\socks_sspi.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\speedcheck.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\splay.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\ssh.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strdup.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strequal.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strerror.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strtok.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strtoofft.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\telnet.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\tftp.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\timeval.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\transfer.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\url.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\version.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\warnless.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\wildcard.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\x509asn1.c"\r
+                       >\r
+                       </File>\r
+               </Filter>\r
+               <Filter\r
+                       Name="Header Files"\r
+                       >\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\amigaos.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\arpa_telnet.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\asyn.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\bundles.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\config-win32.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\conncache.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\connect.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\content_encoding.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\cookie.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_addrinfo.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_base64.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_endian.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_fnmatch.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_gethostname.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_gssapi.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_hmac.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ldap.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_md4.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_md5.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_memory.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_memrchr.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_multibyte.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ntlm_core.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ntlm.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ntlm_msgs.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ntlm_wb.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_rtmp.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_sasl.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_sec.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_setup.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_setup_once.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_sspi.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_threads.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curlx.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\dict.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\dotdot.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\easyif.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\escape.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\file.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\fileinfo.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\formdata.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\ftp.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\ftplistparser.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\getinfo.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\gopher.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hash.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hostcheck.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hostip.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http2.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_chunks.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_digest.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_negotiate.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_proxy.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\if2ip.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\imap.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\inet_ntop.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\inet_pton.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\llist.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\memdebug.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\multihandle.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\multiif.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\netrc.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\non-ascii.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\nonblock.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\parsedate.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\pingpong.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\pipeline.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\pop3.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\progress.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\rawstr.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\rtsp.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\select.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\sendf.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\setup-vms.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\share.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\sigpipe.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\slist.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\smb.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\smtp.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\sockaddr.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\socks.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\speedcheck.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\splay.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\ssh.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strdup.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strequal.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strerror.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strtok.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strtoofft.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\telnet.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\tftp.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\timeval.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\transfer.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\urldata.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\url.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\warnless.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\wildcard.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\x509asn1.h"\r
+                       >\r
+                       </File>\r
+               </Filter>\r
+               <Filter\r
+                       Name="Resource Files"\r
+                       >\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\libcurl.rc"\r
+                       >\r
+                       </File>\r
+               </Filter>\r
+               <Filter\r
+                       Name="vtls"\r
+                       >\r
+                       <Filter\r
+                               Name="Source Files"\r
+                               >\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\axtls.c"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\curl_darwinssl.c"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\curl_schannel.c"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\cyassl.c"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\gskit.c"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\gtls.c"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\nss.c"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\openssl.c"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\polarssl.c"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\polarssl_threadlock.c"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\vtls.c"\r
+                               >\r
+                               </File>\r
+                       </Filter>\r
+                       <Filter\r
+                               Name="Header Files"\r
+                               >\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\axtls.h"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\curl_darwinssl.h"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\curl_schannel.h"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\cyassl.h"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\gskit.h"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\gtls.h"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\nssg.h"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\openssl.h"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\polarssl.h"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\polarssl_threadlock.h"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\vtls.h"\r
+                               >\r
+                               </File>\r
+                       </Filter>\r
+               </Filter>\r
+       </Files>\r
+       <Globals>\r
+       </Globals>\r
+</VisualStudioProject>\r
diff --git a/projects/Windows/VC8/src/curlsrc.sln b/projects/Windows/VC8/src/curlsrc.sln
new file mode 100644 (file)
index 0000000..2e8ad07
--- /dev/null
@@ -0,0 +1,157 @@
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "curlsrc.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32
+               DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
+               DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+               DLL Debug|Win32 = DLL Debug|Win32
+               DLL Debug|x64 = DLL Debug|x64
+               DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32
+               DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64
+               DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
+               DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+               DLL Release|Win32 = DLL Release|Win32
+               DLL Release|x64 = DLL Release|x64
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32
+               LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32
+               LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
+               LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+               LIB Debug|Win32 = LIB Debug|Win32
+               LIB Debug|x64 = LIB Debug|x64
+               LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32
+               LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64
+               LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32
+               LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64
+               LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
+               LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+               LIB Release|Win32 = LIB Release|Win32
+               LIB Release|x64 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.Build.0 = DLL Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.Build.0 = DLL Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.Build.0 = LIB Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.Build.0 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+EndGlobal
diff --git a/projects/Windows/VC8/src/curlsrc.vcproj b/projects/Windows/VC8/src/curlsrc.vcproj
new file mode 100644 (file)
index 0000000..627bf97
--- /dev/null
@@ -0,0 +1,4655 @@
+<?xml version="1.0" encoding="Windows-1252"?>\r
+<VisualStudioProject\r
+       ProjectType="Visual C++"\r
+       Version="8.00"\r
+       Name="curlsrc"\r
+       ProjectGUID="{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"\r
+       RootNamespace="curlsrc"\r
+       >\r
+       <Platforms>\r
+               <Platform\r
+                       Name="Win32"\r
+               />\r
+               <Platform\r
+                       Name="x64"\r
+               />\r
+       </Platforms>\r
+       <ToolFiles>\r
+       </ToolFiles>\r
+       <Configurations>\r
+               <Configuration\r
+                       Name="DLL Release|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                               SubSystem="1"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                               SubSystem="1"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                               SubSystem="1"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                               SubSystem="1"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL OpenSSL|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL OpenSSL|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL Windows SSPI|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL Windows SSPI|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL OpenSSL|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                               SubSystem="1"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL OpenSSL|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                               SubSystem="1"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL Windows SSPI|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                               SubSystem="1"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL Windows SSPI|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                               SubSystem="1"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                               SubSystem="1"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL OpenSSL - DLL LibSSH2|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                               SubSystem="1"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - LIB OpenSSL|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\LIB Debug"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - LIB OpenSSL|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\LIB Debug"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - LIB OpenSSL|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\LIB Release"\r
+                               SubSystem="1"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - LIB OpenSSL|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\LIB Release"\r
+                               SubSystem="1"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC8\LIB Debug"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC8\LIB Debug"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC8\LIB Release"\r
+                               SubSystem="1"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - LIB OpenSSL - LIB LibSSH2|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC8\LIB Release"\r
+                               SubSystem="1"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL OpenSSL|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\DLL Debug"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL OpenSSL|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\DLL Debug"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL OpenSSL|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\DLL Release"\r
+                               SubSystem="1"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL OpenSSL|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\DLL Release"\r
+                               SubSystem="1"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC8\DLL Debug"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC8\DLL Debug"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC8\DLL Release"\r
+                               SubSystem="1"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL OpenSSL - DLL LibSSH2|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib libssh2.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC8\DLL Release"\r
+                               SubSystem="1"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL Windows SSPI|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL Windows SSPI|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL Windows SSPI|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                               SubSystem="1"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL Windows SSPI|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                               SubSystem="1"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                               SubSystem="1"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL Windows SSPI - DLL WinIDN|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                               SubSystem="1"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
+                               SubSystem="1"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL Windows SSPI - DLL WinIDN|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
+                               SubSystem="1"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+       </Configurations>\r
+       <References>\r
+       </References>\r
+       <Files>\r
+               <Filter\r
+                       Name="Source Files"\r
+                       >\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\nonblock.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\rawstr.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strtoofft.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\warnless.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_binmode.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_bname.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_dbg.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_hdr.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_prg.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_rea.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_see.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_wrt.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cfgable.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_convert.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_dirhie.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_doswin.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_easysrc.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_formparse.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_getparam.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_getpass.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_help.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_helpers.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_homedir.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_hugehelp.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_libinfo.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_main.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_metalink.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_mfiles.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_msgs.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_operate.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_operhlp.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_panykey.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_paramhlp.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_parsecfg.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_setopt.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_sleep.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_strdup.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_urlglob.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_util.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_vms.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_writeenv.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_writeout.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_xattr.c"\r
+                       >\r
+                       </File>\r
+               </Filter>\r
+               <Filter\r
+                       Name="Header Files"\r
+                       >\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\config-win32.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_setup.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\nonblock.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\rawstr.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strtoofft.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\warnless.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_binmode.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_bname.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_dbg.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_hdr.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_prg.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_rea.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_see.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_wrt.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cfgable.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_convert.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_dirhie.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_doswin.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_easysrc.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_formparse.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_getparam.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_getpass.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_helpers.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_help.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_homedir.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_hugehelp.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_libinfo.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_main.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_metalink.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_mfiles.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_msgs.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_operate.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_operhlp.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_panykey.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_paramhlp.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_parsecfg.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_sdecls.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_setopt.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_setup.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_sleep.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_strdup.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_urlglob.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_util.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_version.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_vms.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_writeenv.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_writeout.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_xattr.h"\r
+                       >\r
+                       </File>\r
+               </Filter>\r
+               <Filter\r
+                       Name="Resource Files"\r
+                       >\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\curl.rc"\r
+                       >\r
+                       </File>\r
+               </Filter>\r
+       </Files>\r
+       <Globals>\r
+       </Globals>\r
+</VisualStudioProject>\r
diff --git a/projects/Windows/VC9/curl.sln b/projects/Windows/VC9/curl.sln
new file mode 100644 (file)
index 0000000..4415186
--- /dev/null
@@ -0,0 +1,258 @@
+Microsoft Visual Studio Solution File, Format Version 10.00
+# Visual Studio 2008
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "src\curlsrc.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+       ProjectSection(ProjectDependencies) = postProject
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} = {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}
+       EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "lib\libcurl.vcproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32
+               DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
+               DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+               DLL Debug|Win32 = DLL Debug|Win32
+               DLL Debug|x64 = DLL Debug|x64
+               DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32
+               DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64
+               DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
+               DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+               DLL Release|Win32 = DLL Release|Win32
+               DLL Release|x64 = DLL Release|x64
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32
+               LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32
+               LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
+               LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+               LIB Debug|Win32 = LIB Debug|Win32
+               LIB Debug|x64 = LIB Debug|x64
+               LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32
+               LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64
+               LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32
+               LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64
+               LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
+               LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+               LIB Release|Win32 = LIB Release|Win32
+               LIB Release|x64 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.Build.0 = DLL Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.Build.0 = DLL Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.Build.0 = LIB Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.Build.0 = LIB Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.Build.0 = DLL Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.Build.0 = LIB Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.Build.0 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+EndGlobal
diff --git a/projects/Windows/VC9/lib/libcurl.sln b/projects/Windows/VC9/lib/libcurl.sln
new file mode 100644 (file)
index 0000000..acfbaca
--- /dev/null
@@ -0,0 +1,157 @@
+Microsoft Visual Studio Solution File, Format Version 10.00
+# Visual Studio 2008
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "libcurl.vcproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32
+               DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
+               DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+               DLL Debug|Win32 = DLL Debug|Win32
+               DLL Debug|x64 = DLL Debug|x64
+               DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32
+               DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64
+               DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
+               DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+               DLL Release|Win32 = DLL Release|Win32
+               DLL Release|x64 = DLL Release|x64
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32
+               LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32
+               LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
+               LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+               LIB Debug|Win32 = LIB Debug|Win32
+               LIB Debug|x64 = LIB Debug|x64
+               LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32
+               LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64
+               LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32
+               LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64
+               LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
+               LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+               LIB Release|Win32 = LIB Release|Win32
+               LIB Release|x64 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.Build.0 = DLL Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.Build.0 = LIB Debug|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.Build.0 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+EndGlobal
diff --git a/projects/Windows/VC9/lib/libcurl.vcproj b/projects/Windows/VC9/lib/libcurl.vcproj
new file mode 100644 (file)
index 0000000..d609a54
--- /dev/null
@@ -0,0 +1,4740 @@
+<?xml version="1.0" encoding="Windows-1252"?>\r
+<VisualStudioProject\r
+       ProjectType="Visual C++"\r
+       Version="9.00"\r
+       Name="libcurl"\r
+       ProjectGUID="{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"\r
+       RootNamespace="libcurl"\r
+       TargetFrameworkVersion="131072"\r
+       >\r
+       <Platforms>\r
+               <Platform\r
+                       Name="Win32"\r
+               />\r
+               <Platform\r
+                       Name="x64"\r
+               />\r
+       </Platforms>\r
+       <ToolFiles>\r
+       </ToolFiles>\r
+       <Configurations>\r
+               <Configuration\r
+                       Name="DLL Debug|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories=""\r
+                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories=""\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories=""\r
+                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories=""\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL OpenSSL|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC9\DLL Debug"\r
+                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL OpenSSL|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC9\DLL Debug"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL OpenSSL|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC9\DLL Release"\r
+                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL OpenSSL|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC9\DLL Release"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL Windows SSPI|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories=""\r
+                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL Windows SSPI|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories=""\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL Windows SSPI|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories=""\r
+                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL Windows SSPI|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories=""\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib libssh2d.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC9\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC9\DLL Debug"\r
+                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib libssh2d.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC9\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC9\DLL Debug"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib libssh2.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC9\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC9\DLL Release"\r
+                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL OpenSSL - DLL LibSSH2|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libeay32.lib ssleay32.lib libssh2.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC9\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC9\DLL Release"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL OpenSSL|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL OpenSSL|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL Windows SSPI|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL Windows SSPI|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - LIB OpenSSL|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - LIB OpenSSL|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL OpenSSL|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL OpenSSL|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL OpenSSL - DLL LibSSH2|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL Windows SSPI|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL Windows SSPI|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - LIB OpenSSL|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - LIB OpenSSL|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - LIB OpenSSL - LIB LibSSH2|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\inc32;..\..\..\..\..\libssh2\include"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_SSLEAY;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories=""\r
+                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories=""\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="1"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories=""\r
+                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL Windows SSPI - DLL WinIDN|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="2"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               MkTypLibCompatible="true"\r
+                               SuppressStartupBanner="true"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib"\r
+                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories=""\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL Windows SSPI - DLL WinIDN|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\lib"\r
+                       ConfigurationType="4"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLibrarianTool"\r
+                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(OutDir)\$(ProjectName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+       </Configurations>\r
+       <References>\r
+       </References>\r
+       <Files>\r
+               <Filter\r
+                       Name="Source Files"\r
+                       >\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\amigaos.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\asyn-ares.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\asyn-thread.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\base64.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\bundles.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\conncache.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\connect.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\content_encoding.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\cookie.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_addrinfo.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_endian.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_fnmatch.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_gethostname.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_gssapi.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_memrchr.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_multibyte.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ntlm.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ntlm_core.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ntlm_msgs.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ntlm_wb.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_rtmp.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_sasl.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_sasl_gssapi.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_sasl_sspi.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_sspi.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_threads.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\dict.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\dotdot.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\easy.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\escape.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\file.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\fileinfo.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\formdata.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\ftp.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\ftplistparser.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\getenv.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\getinfo.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\gopher.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hash.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hmac.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hostasyn.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hostcheck.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hostip4.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hostip6.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hostip.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hostsyn.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http2.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_chunks.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_digest.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_negotiate.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_negotiate_sspi.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_proxy.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\idn_win32.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\if2ip.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\imap.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\inet_ntop.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\inet_pton.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\krb5.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\ldap.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\llist.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\md4.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\md5.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\memdebug.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\mprintf.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\multi.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\netrc.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\non-ascii.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\nonblock.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\openldap.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\parsedate.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\pingpong.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\pipeline.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\pop3.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\progress.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\rawstr.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\rtsp.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\security.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\select.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\sendf.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\share.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\slist.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\smb.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\smtp.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\socks.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\socks_gssapi.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\socks_sspi.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\speedcheck.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\splay.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\ssh.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strdup.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strequal.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strerror.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strtok.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strtoofft.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\telnet.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\tftp.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\timeval.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\transfer.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\url.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\version.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\warnless.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\wildcard.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\x509asn1.c"\r
+                       >\r
+                       </File>\r
+               </Filter>\r
+               <Filter\r
+                       Name="Header Files"\r
+                       >\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\amigaos.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\arpa_telnet.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\asyn.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\bundles.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\config-win32.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\conncache.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\connect.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\content_encoding.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\cookie.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_addrinfo.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_base64.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_endian.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_fnmatch.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_gethostname.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_gssapi.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_hmac.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ldap.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_md4.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_md5.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_memory.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_memrchr.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_multibyte.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ntlm_core.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ntlm.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ntlm_msgs.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_ntlm_wb.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_rtmp.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_sasl.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_sec.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_setup.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_setup_once.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_sspi.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_threads.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curlx.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\dict.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\dotdot.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\easyif.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\escape.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\file.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\fileinfo.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\formdata.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\ftp.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\ftplistparser.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\getinfo.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\gopher.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hash.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hostcheck.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\hostip.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http2.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_chunks.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_digest.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_negotiate.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\http_proxy.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\if2ip.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\imap.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\inet_ntop.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\inet_pton.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\llist.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\memdebug.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\multihandle.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\multiif.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\netrc.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\non-ascii.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\nonblock.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\parsedate.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\pingpong.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\pipeline.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\pop3.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\progress.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\rawstr.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\rtsp.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\select.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\sendf.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\setup-vms.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\share.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\sigpipe.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\slist.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\smb.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\smtp.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\sockaddr.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\socks.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\speedcheck.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\splay.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\ssh.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strdup.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strequal.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strerror.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strtok.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strtoofft.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\telnet.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\tftp.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\timeval.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\transfer.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\urldata.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\url.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\warnless.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\wildcard.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\x509asn1.h"\r
+                       >\r
+                       </File>\r
+               </Filter>\r
+               <Filter\r
+                       Name="Resource Files"\r
+                       >\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\libcurl.rc"\r
+                       >\r
+                       </File>\r
+               </Filter>\r
+               <Filter\r
+                       Name="vtls"\r
+                       >\r
+                       <Filter\r
+                               Name="Source Files"\r
+                               >\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\axtls.c"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\curl_darwinssl.c"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\curl_schannel.c"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\cyassl.c"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\gskit.c"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\gtls.c"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\nss.c"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\openssl.c"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\polarssl.c"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\polarssl_threadlock.c"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\vtls.c"\r
+                               >\r
+                               </File>\r
+                       </Filter>\r
+                       <Filter\r
+                               Name="Header Files"\r
+                               >\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\axtls.h"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\curl_darwinssl.h"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\curl_schannel.h"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\cyassl.h"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\gskit.h"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\gtls.h"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\nssg.h"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\openssl.h"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\polarssl.h"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\polarssl_threadlock.h"\r
+                               >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath="..\..\..\..\lib\vtls\vtls.h"\r
+                               >\r
+                               </File>\r
+                       </Filter>\r
+               </Filter>\r
+       </Files>\r
+       <Globals>\r
+       </Globals>\r
+</VisualStudioProject>\r
diff --git a/projects/Windows/VC9/src/curlsrc.sln b/projects/Windows/VC9/src/curlsrc.sln
new file mode 100644 (file)
index 0000000..d673349
--- /dev/null
@@ -0,0 +1,157 @@
+Microsoft Visual Studio Solution File, Format Version 10.00
+# Visual Studio 2008
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curlsrc", "curlsrc.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32
+               DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32
+               DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64
+               DLL Debug|Win32 = DLL Debug|Win32
+               DLL Debug|x64 = DLL Debug|x64
+               DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32
+               DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64
+               DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32
+               DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64
+               DLL Release|Win32 = DLL Release|Win32
+               DLL Release|x64 = DLL Release|x64
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32
+               LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32
+               LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32
+               LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64
+               LIB Debug|Win32 = LIB Debug|Win32
+               LIB Debug|x64 = LIB Debug|x64
+               LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32
+               LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64
+               LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32
+               LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64
+               LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32
+               LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64
+               LIB Release|Win32 = LIB Release|Win32
+               LIB Release|x64 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.Build.0 = DLL Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.Build.0 = DLL Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.Build.0 = LIB Debug|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.Build.0 = LIB Release|x64
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+EndGlobal
diff --git a/projects/Windows/VC9/src/curlsrc.vcproj b/projects/Windows/VC9/src/curlsrc.vcproj
new file mode 100644 (file)
index 0000000..d074b79
--- /dev/null
@@ -0,0 +1,4608 @@
+<?xml version="1.0" encoding="Windows-1252"?>\r
+<VisualStudioProject\r
+       ProjectType="Visual C++"\r
+       Version="9.00"\r
+       Name="curlsrc"\r
+       ProjectGUID="{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"\r
+       RootNamespace="curlsrc"\r
+       TargetFrameworkVersion="131072"\r
+       >\r
+       <Platforms>\r
+               <Platform\r
+                       Name="Win32"\r
+               />\r
+               <Platform\r
+                       Name="x64"\r
+               />\r
+       </Platforms>\r
+       <ToolFiles>\r
+       </ToolFiles>\r
+       <Configurations>\r
+               <Configuration\r
+                       Name="DLL Release|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL OpenSSL|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL OpenSSL|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL Windows SSPI|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL Windows SSPI|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL OpenSSL|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL OpenSSL|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL Windows SSPI|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL Windows SSPI|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL OpenSSL - DLL LibSSH2|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - LIB OpenSSL|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\LIB Debug"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - LIB OpenSSL|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\LIB Debug"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - LIB OpenSSL|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\LIB Release"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - LIB OpenSSL|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\LIB Release"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC9\LIB Debug"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC9\LIB Debug"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC9\LIB Release"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - LIB OpenSSL - LIB LibSSH2|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC9\LIB Release"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL OpenSSL|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\DLL Debug"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL OpenSSL|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\DLL Debug"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL OpenSSL|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\DLL Release"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL OpenSSL|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\DLL Release"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC9\DLL Debug"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib libeay32.lib ssleay32.lib libssh2d.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC9\DLL Debug"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib libeay32.lib ssleay32.lib libssh2.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC9\DLL Release"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL OpenSSL - DLL LibSSH2|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib libssh2.lib libeay32.lib ssleay32.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC9\DLL Release"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL Windows SSPI|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL Windows SSPI|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL Windows SSPI|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL Windows SSPI|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="DLL Release - DLL Windows SSPI - DLL WinIDN|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="_DEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="_DEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib libcurld.lib"\r
+                               OutputFile="$(OutDir)\curld.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                               GenerateDebugInformation="true"\r
+                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32"\r
+                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="1"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="LIB Release - DLL Windows SSPI - DLL WinIDN|x64"\r
+                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                       IntermediateDirectory="$(OutDir)\src"\r
+                       ConfigurationType="1"\r
+                       UseOfMFC="0"\r
+                       ATLMinimizesCRunTimeLibraryUsage="false"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                               TargetEnvironment="3"\r
+                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
+                               HeaderFileName=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="2"\r
+                               InlineFunctionExpansion="1"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
+                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
+                               StringPooling="true"\r
+                               RuntimeLibrary="2"\r
+                               EnableFunctionLevelLinking="true"\r
+                               WarningLevel="3"\r
+                               SuppressStartupBanner="true"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                               PreprocessorDefinitions="NDEBUG"\r
+                               Culture="1033"\r
+                               AdditionalIncludeDirectories="..\..\..\..\include"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="ws2_32.lib wldap32.lib normaliz.lib libcurl.lib"\r
+                               OutputFile="$(OutDir)\curl.exe"\r
+                               LinkIncremental="1"\r
+                               SuppressStartupBanner="true"\r
+                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
+                               SubSystem="1"\r
+                               RandomizedBaseAddress="1"\r
+                               DataExecutionPrevention="0"\r
+                               TargetMachine="17"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                               SuppressStartupBanner="true"\r
+                               OutputFile="$(TargetDir)$(TargetName).bsc"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+       </Configurations>\r
+       <References>\r
+       </References>\r
+       <Files>\r
+               <Filter\r
+                       Name="Source Files"\r
+                       >\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\nonblock.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\rawstr.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strtoofft.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\warnless.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_binmode.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_bname.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_dbg.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_hdr.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_prg.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_rea.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_see.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_wrt.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cfgable.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_convert.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_dirhie.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_doswin.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_easysrc.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_formparse.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_getparam.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_getpass.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_help.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_helpers.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_homedir.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_hugehelp.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_libinfo.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_main.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_metalink.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_mfiles.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_msgs.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_operate.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_operhlp.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_panykey.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_paramhlp.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_parsecfg.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_setopt.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_sleep.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_strdup.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_urlglob.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_util.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_vms.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_writeenv.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_writeout.c"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_xattr.c"\r
+                       >\r
+                       </File>\r
+               </Filter>\r
+               <Filter\r
+                       Name="Header Files"\r
+                       >\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\config-win32.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\curl_setup.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\nonblock.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\rawstr.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\strtoofft.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\lib\warnless.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_binmode.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_bname.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_dbg.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_hdr.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_prg.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_rea.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_see.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cb_wrt.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_cfgable.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_convert.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_dirhie.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_doswin.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_easysrc.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_formparse.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_getparam.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_getpass.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_helpers.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_help.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_homedir.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_hugehelp.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_libinfo.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_main.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_metalink.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_mfiles.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_msgs.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_operate.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_operhlp.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_panykey.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_paramhlp.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_parsecfg.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_sdecls.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_setopt.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_setup.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_sleep.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_strdup.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_urlglob.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_util.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_version.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_vms.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_writeenv.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_writeout.h"\r
+                       >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\tool_xattr.h"\r
+                       >\r
+                       </File>\r
+               </Filter>\r
+               <Filter\r
+                       Name="Resource Files"\r
+                       >\r
+                       <File\r
+                               RelativePath="..\..\..\..\src\curl.rc"\r
+                       >\r
+                       </File>\r
+               </Filter>\r
+       </Files>\r
+       <Globals>\r
+       </Globals>\r
+</VisualStudioProject>\r
diff --git a/projects/build-openssl.bat b/projects/build-openssl.bat
new file mode 100644 (file)
index 0000000..3703a3f
--- /dev/null
@@ -0,0 +1,328 @@
+@echo off
+rem ***************************************************************************
+rem *                                  _   _ ____  _
+rem *  Project                     ___| | | |  _ \| |
+rem *                             / __| | | | |_) | |
+rem *                            | (__| |_| |  _ <| |___
+rem *                             \___|\___/|_| \_\_____|
+rem *
+rem * Copyright (C) 2012 - 2014, Steve Holme, <steve_holme@hotmail.com>.
+rem *
+rem * This software is licensed as described in the file COPYING, which
+rem * you should have received as part of this distribution. The terms
+rem * are also available at http://curl.haxx.se/docs/copyright.html.
+rem *
+rem * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+rem * copies of the Software, and permit persons to whom the Software is
+rem * furnished to do so, under the terms of the COPYING file.
+rem *
+rem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+rem * KIND, either express or implied.
+rem *
+rem ***************************************************************************
+
+:begin
+  rem Check we are running on a Windows NT derived OS
+  if not "%OS%" == "Windows_NT" goto nodos
+  setlocal
+  
+  rem Display the help
+  if /i "%~1" == "" goto syntax
+  if /i "%~1" == "-?" goto syntax
+  if /i "%~1" == "-h" goto syntax
+  if /i "%~1" == "-help" goto syntax
+
+:parseArgs
+  if "%~1" == "" goto prerequisites
+
+  if /i "%~1" == "vc6" (
+    set VC_VER=6.0
+    set VC_DESC=VC6
+    set "VC_PATH=Microsoft Visual Studio\VC98"
+  ) else if /i "%~1" == "vc7" (
+    set VC_VER=7.0
+    set VC_DESC=VC7
+    set "VC_PATH=Microsoft Visual Studio .NET\Vc7"
+  ) else if /i "%~1" == "vc7.1" (
+    set VC_VER=7.1
+    set VC_DESC=VC7.1
+    set "VC_PATH=Microsoft Visual Studio .NET 2003\Vc7"
+  ) else if /i "%~1" == "vc8" (
+    set VC_VER=8.0
+    set VC_DESC=VC8
+    set "VC_PATH=Microsoft Visual Studio 8\VC"
+  ) else if /i "%~1" == "vc9" (
+    set VC_VER=9.0
+    set VC_DESC=VC9
+    set "VC_PATH=Microsoft Visual Studio 9.0\VC"
+  ) else if /i "%~1" == "vc10" (
+    set VC_VER=10.0
+    set VC_DESC=VC10
+    set "VC_PATH=Microsoft Visual Studio 10.0\VC"
+  ) else if /i "%~1" == "vc11" (
+    set VC_VER=11.0
+    set VC_DESC=VC11
+    set "VC_PATH=Microsoft Visual Studio 11.0\VC"
+  ) else if /i "%~1" == "vc12" (
+    set VC_VER=12.0
+    set VC_DESC=VC12
+    set "VC_PATH=Microsoft Visual Studio 12.0\VC"
+  ) else if /i "%~1%" == "x86" (
+    set BUILD_PLATFORM=x86
+  ) else if /i "%~1%" == "x64" (
+    set BUILD_PLATFORM=x64
+  ) else if /i "%~1%" == "debug" (
+    set BUILD_CONFIG=debug
+  ) else if /i "%~1%" == "release" (
+    set BUILD_CONFIG=release
+  ) else (
+    if not defined START_DIR (
+      set START_DIR=%~1%
+    ) else (
+      goto unknown
+    )
+  )
+
+  shift & goto parseArgs
+
+:prerequisites
+  rem Default the start directory if one isn't specified
+  if not defined START_DIR set START_DIR=..\..\openssl
+
+  rem Calculate the program files directory
+  if defined PROGRAMFILES (
+    set "PF=%PROGRAMFILES%"
+    set OS_PLATFORM=x86
+  )
+  if defined PROGRAMFILES(x86) (
+    set "PF=%PROGRAMFILES(x86)%"
+    set OS_PLATFORM=x64
+  )
+
+  rem Check we have a program files directory
+  if not defined PF goto nopf
+
+  rem Check we have Visual Studio installed
+  if not exist "%PF%\%VC_PATH%" goto novc
+
+  rem Check the start directory exists
+  if not exist "%START_DIR%" goto noopenssl
+
+:configure
+  if "%BUILD_PLATFORM%" == "" (
+    if "%VC_VER%" == "6.0" (
+      set BUILD_PLATFORM=x86
+    ) else if "%VC_VER%" == "7.0" (
+      set BUILD_PLATFORM=x86
+    ) else if "%VC_VER%" == "7.1" (
+      set BUILD_PLATFORM=x86
+    ) else (
+      set BUILD_PLATFORM=%OS_PLATFORM%
+    )
+  )
+
+  if "%BUILD_PLATFORM%" == "x86" (
+    set VCVARS_PLATFORM=x86
+  ) else if "%BUILD_PLATFORM%" == "x64" (
+    if "%VC_VER%" == "6.0" goto nox64
+    if "%VC_VER%" == "7.0" goto nox64
+    if "%VC_VER%" == "7.1" goto nox64
+    if "%VC_VER%" == "8.0" set VCVARS_PLATFORM=x86_amd64
+    if "%VC_VER%" == "9.0" set VCVARS_PLATFORM=%BUILD_PLATFORM%
+    if "%VC_VER%" == "10.0" set VCVARS_PLATFORM=%BUILD_PLATFORM%
+    if "%VC_VER%" == "11.0" set VCVARS_PLATFORM=amd64
+    if "%VC_VER%" == "12.0" set VCVARS_PLATFORM=amd64
+  )
+
+:start
+  echo.
+  if "%VC_VER%" == "6.0" (
+    call "%PF%\%VC_PATH%\bin\vcvars32"
+  ) else if "%VC_VER%" == "7.0" (
+    call "%PF%\%VC_PATH%\bin\vcvars32"
+  ) else if "%VC_VER%" == "7.1" (
+    call "%PF%\%VC_PATH%\bin\vcvars32"
+  ) else (
+    call "%PF%\%VC_PATH%\vcvarsall" %VCVARS_PLATFORM%
+  )
+
+  echo.
+  set SAVED_PATH=%CD%
+  if defined START_DIR CD %START_DIR%
+  goto %BUILD_PLATFORM%
+
+:x64
+  rem Calculate our output directory
+  set OUTDIR=build\Win64\%VC_DESC%
+  if not exist %OUTDIR% md %OUTDIR%
+
+  if "%BUILD_CONFIG%" == "release" goto x64release\r
+
+:x64debug
+  rem Configuring 64-bit Debug Build
+  perl Configure debug-VC-WIN64A --prefix=%CD%
+
+  rem Perform the build
+  call ms\do_win64a
+  nmake -f ms\nt.mak
+  nmake -f ms\ntdll.mak
+
+  rem Move the output directories
+  move out32.dbg "%OUTDIR%\LIB Debug"
+  move out32dll.dbg "%OUTDIR%\DLL Debug"
+
+  rem Move the PDB files
+  move tmp32.dbg\lib.pdb "%OUTDIR%\LIB Debug"
+  move tmp32dll.dbg\lib.pdb "%OUTDIR%\DLL Debug"
+  
+  rem Remove the intermediate directories
+  rd tmp32.dbg /s /q
+  rd tmp32dll.dbg /s /q
+
+  if "%BUILD_CONFIG%" == "debug" goto success
+  
+:x64release
+  rem Configuring 64-bit Release Build
+  perl Configure VC-WIN64A --prefix=%CD%
+  
+  rem Perform the build
+  call ms\do_win64a
+  nmake -f ms\nt.mak
+  nmake -f ms\ntdll.mak
+  
+  rem Move the output directories
+  move out32 "%OUTDIR%\LIB Release"
+  move out32dll "%OUTDIR%\DLL Release"
+
+  rem Move the PDB files
+  move tmp32\lib.pdb "%OUTDIR%\LIB Release"
+  move tmp32dll\lib.pdb "%OUTDIR%\DLL Release"
+
+  rem Remove the intermediate directories
+  rd tmp32 /s /q
+  rd tmp32dll /s /q
+
+  goto success
+  
+:x86
+  rem Calculate our output directory
+  set OUTDIR=build\Win32\%VC_DESC%
+  if not exist %OUTDIR% md %OUTDIR%
+
+  if "%BUILD_CONFIG%" == "release" goto x86release
+  
+:x86debug
+  rem Configuring 32-bit Debug Build
+  perl Configure debug-VC-WIN32 no-asm --prefix=%CD%
+
+  rem Perform the build
+  call ms\do_ms
+  nmake -f ms\nt.mak
+  nmake -f ms\ntdll.mak
+
+  rem Move the output directories
+  move out32.dbg "%OUTDIR%\LIB Debug"
+  move out32dll.dbg "%OUTDIR%\DLL Debug"
+
+  rem Move the PDB files
+  move tmp32.dbg\lib.pdb "%OUTDIR%\LIB Debug"
+  move tmp32dll.dbg\lib.pdb "%OUTDIR%\DLL Debug"
+
+  rem Remove the intermediate directories
+  rd tmp32.dbg /s /q
+  rd tmp32dll.dbg /s /q
+
+  if "%BUILD_CONFIG%" == "debug" goto success
+  
+:x86release
+  rem Configuring 32-bit Release Build
+  perl Configure VC-WIN32 no-asm --prefix=%CD%
+
+  rem Perform the build
+  call ms\do_ms
+  nmake -f ms\nt.mak
+  nmake -f ms\ntdll.mak
+  
+  rem Move the output directories
+  move out32 "%OUTDIR%\LIB Release"
+  move out32dll "%OUTDIR%\DLL Release"
+
+  rem Move the PDB files
+  move tmp32\lib.pdb "%OUTDIR%\LIB Release"
+  move tmp32dll\lib.pdb "%OUTDIR%\DLL Release"
+
+  rem Remove the intermediate directories
+  rd tmp32 /s /q
+  rd tmp32dll /s /q
+
+  goto success
+
+:syntax
+  rem Display the help
+  echo.
+  echo Usage: build-openssl ^<compiler^> ^<platform^> [configuration] [directory]
+  echo.
+  echo Compiler:
+  echo.
+  echo vc6       - Use Visual Studio 6
+  echo vc7       - Use Visual Studio .NET
+  echo vc7.1     - Use Visual Studio .NET 2003
+  echo vc8       - Use Visual Studio 2005
+  echo vc9       - Use Visual Studio 2008
+  echo vc10      - Use Visual Studio 2010
+  echo vc11      - Use Visual Studio 2012
+  echo vc12      - Use Visual Studio 2013
+  echo.
+  echo Platform:
+  echo.
+  echo x86       - Perform a 32-bit build
+  echo x64       - Perform a 64-bit build
+  echo.
+  echo Configuration:
+  echo.
+  echo debug     - Perform a debug build
+  echo release   - Perform a release build
+  echo.
+  echo Other:
+  echo.
+  echo directory - Specifies the OpenSSL source directory
+  goto error
+
+:unknown
+  echo.
+  echo Error: Unknown argument '%1'
+  goto error
+
+:nodos
+  echo.
+  echo Error: Only a Windows NT based Operating System is supported
+  goto error
+
+:nopf
+  echo.
+  echo Error: Cannot obtain the directory for Program Files
+  goto error
+
+:novc
+  echo.
+  echo Error: %VC_DESC% is not installed
+  goto error
+
+:nox64
+  echo.
+  echo Error: %VC_DESC% does not support 64-bit builds
+  goto error
+
+:noopenssl
+  echo.
+  echo Error: Cannot locate OpenSSL source directory
+  goto error
+
+:error
+  if "%OS%" == "Windows_NT" endlocal
+  exit /B 1
+
+:success
+  cd %SAVED_PATH%
+  endlocal
+  exit /B 0
diff --git a/projects/checksrc.bat b/projects/checksrc.bat
new file mode 100644 (file)
index 0000000..139914d
--- /dev/null
@@ -0,0 +1,81 @@
+@echo off
+rem ***************************************************************************
+rem *                                  _   _ ____  _
+rem *  Project                     ___| | | |  _ \| |
+rem *                             / __| | | | |_) | |
+rem *                            | (__| |_| |  _ <| |___
+rem *                             \___|\___/|_| \_\_____|
+rem *
+rem * Copyright (C) 2014, Steve Holme, <steve_holme@hotmail.com>.
+rem *
+rem * This software is licensed as described in the file COPYING, which
+rem * you should have received as part of this distribution. The terms
+rem * are also available at http://curl.haxx.se/docs/copyright.html.
+rem *
+rem * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+rem * copies of the Software, and permit persons to whom the Software is
+rem * furnished to do so, under the terms of the COPYING file.
+rem *
+rem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+rem * KIND, either express or implied.
+rem *
+rem ***************************************************************************
+
+:begin
+  rem Check we are running on a Windows NT derived OS
+  if not "%OS%" == "Windows_NT" goto nodos
+  setlocal
+
+  rem Display the help
+  if /i "%~1" == "-?" goto syntax
+  if /i "%~1" == "-h" goto syntax
+  if /i "%~1" == "-help" goto syntax
+
+:prerequisites
+  rem Check we have Perl installed
+  if not exist "C:\Perl" (
+    if not exist "C:\Perl64" goto noperl
+  )
+
+:configure
+  if "%1" == "" set SRC_DIR=..
+  if not "%1" == "" set SRC_DIR=%~1%
+  if not exist "%SRC_DIR%" goto nosrc
+
+:start
+  for /f "delims=" %%i in ('dir %SRC_DIR%\src\*.c.* /b') do @perl %SRC_DIR%\lib\checksrc.pl -D%SRC_DIR%\src "%%i"
+  for /f "delims=" %%i in ('dir %SRC_DIR%\src\*.h.* /b') do @perl %SRC_DIR%\lib\checksrc.pl -D%SRC_DIR%\src "%%i"
+  for /f "delims=" %%i in ('dir %SRC_DIR%\lib\*.c.* /b') do @perl %SRC_DIR%\lib\checksrc.pl -D%SRC_DIR%\lib "%%i"
+  for /f "delims=" %%i in ('dir %SRC_DIR%\lib\*.h.* /b') do @perl %SRC_DIR%\lib\checksrc.pl -D%SRC_DIR%\lib -Wcurl_config.h.cmake "%%i"
+  goto success
+
+:syntax
+  rem Display the help
+  echo.
+  echo Usage: checksrc [directory]
+  echo.
+  echo directory - Specifies the curl source directory
+  goto success
+
+:nodos
+  echo.
+  echo Error: Only a Windows NT based Operating System is supported
+  goto error
+
+:noperl
+  echo.
+  echo Error: Perl is not installed
+  goto error
+
+:nosrc
+  echo.
+  echo Error: "%SRC_DIR%" does not exist
+  goto error
+
+:error
+  if "%OS%" == "Windows_NT" endlocal
+  exit /B 1
+
+:success
+  endlocal
+  exit /B 0
index 0b4556f..9c1fd54 100644 (file)
@@ -1,11 +1,38 @@
 set(EXE_NAME curl)
 
 set(EXE_NAME curl)
 
-# First try to locate tool_hugehelp.c to see if it has already been created
-# TODO Find the file WITHOUT adding a cache entry!!! Or else the user can delete the file after the script was first run, and the script won't notice it has gone.
-find_file(HUGEHELP_C_FILE tool_hugehelp.c PATHS . NO_DEFAULT_PATH)
-if (NOT HUGEHELP_C_FILE)
-  message(STATUS "Warning: tool_hugehelp.c file was not generated before. Generating an 'empty' file...")
-  file(WRITE tool_hugehelp.c "/* built-in manual is disabled, blank function */\n#include \"tool_hugehelp.h\"\nvoid hugehelp(void) {}\n\n")
+if(USE_MANUAL)
+  find_package(Perl REQUIRED)
+  # Use the C locale to ensure that only ASCII characters appear in the
+  # embedded text. NROFF and MANOPT are set in the parent CMakeLists.txt
+  add_custom_command(
+    OUTPUT tool_hugehelp.c
+    COMMAND echo "#include \"tool_setup.h\"" > tool_hugehelp.c
+    COMMAND echo "#ifndef HAVE_LIBZ" >> tool_hugehelp.c
+    COMMAND env LC_ALL=C "${NROFF}" ${NROFF_MANOPT}
+            "${CURL_SOURCE_DIR}/docs/curl.1" |
+            "${PERL}" "${CMAKE_CURRENT_SOURCE_DIR}/mkhelp.pl"
+            "${CURL_SOURCE_DIR}/docs/MANUAL" >> tool_hugehelp.c
+    COMMAND echo "#else" >> tool_hugehelp.c
+    COMMAND env LC_ALL=C "${NROFF}" ${NROFF_MANOPT}
+            "${CURL_SOURCE_DIR}/docs/curl.1" |
+            "${PERL}" "${CMAKE_CURRENT_SOURCE_DIR}/mkhelp.pl" -c
+            "${CURL_SOURCE_DIR}/docs/MANUAL" >> tool_hugehelp.c
+    COMMAND echo "#endif /* HAVE_LIBZ */" >> tool_hugehelp.c
+    DEPENDS
+      "${CURL_SOURCE_DIR}/docs/MANUAL"
+      "${CURL_SOURCE_DIR}/docs/curl.1"
+      "${CMAKE_CURRENT_SOURCE_DIR}/mkhelp.pl"
+      "${CMAKE_CURRENT_SOURCE_DIR}/tool_hugehelp.h"
+    VERBATIM)
+else()
+  add_custom_command(
+    OUTPUT tool_hugehelp.c
+    COMMAND echo "/* built-in manual is disabled, blank function */" > tool_hugehelp.c
+    COMMAND echo "#include \"tool_hugehelp.h\"" >> tool_hugehelp.c
+    COMMAND echo "void hugehelp(void) {}" >> tool_hugehelp.c
+    DEPENDS
+      "${CMAKE_CURRENT_SOURCE_DIR}/tool_hugehelp.h"
+    VERBATIM)
 endif()
 
 transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
 endif()
 
 transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
@@ -20,7 +47,7 @@ add_executable(
   ${curl_SOURCES}
   )
 
   ${curl_SOURCES}
   )
 
-source_group("cURLX source files" FILES ${CURLX_ONES})
+source_group("cURLX source files" FILES ${CURLX_CFILES})
 source_group("cURL source files" FILES ${CURL_CFILES})
 source_group("cURL header files" FILES ${CURL_HFILES})
 
 source_group("cURL source files" FILES ${CURL_CFILES})
 source_group("cURL header files" FILES ${CURL_HFILES})
 
@@ -28,13 +55,12 @@ include_directories(
   ${CURL_SOURCE_DIR}/lib        # To be able to reach "curl_setup_once.h"
   ${CURL_BINARY_DIR}/lib        # To be able to reach "curl_config.h"
   ${CURL_BINARY_DIR}/include    # To be able to reach "curl/curlbuild.h"
   ${CURL_SOURCE_DIR}/lib        # To be able to reach "curl_setup_once.h"
   ${CURL_BINARY_DIR}/lib        # To be able to reach "curl_config.h"
   ${CURL_BINARY_DIR}/include    # To be able to reach "curl/curlbuild.h"
+  # This is needed as tool_hugehelp.c is generated in the binary dir
+  ${CURL_SOURCE_DIR}/src        # To be able to reach "tool_hugehelp.h"
   )
 
   )
 
-
-# Setup dependencies
-setup_curl_dependencies(${EXE_NAME})
-target_link_libraries( ${EXE_NAME} libcurl )
-
+#Build cURL executable
+target_link_libraries( ${EXE_NAME} libcurl ${CURL_LIBS})
 
 ################################################################################
 
 
 ################################################################################
 
index 6b3103a..c485665 100644 (file)
@@ -3,16 +3,32 @@
 #  G. Vanem <gvanem@broadpark.no>
 #
 
 #  G. Vanem <gvanem@broadpark.no>
 #
 
+.ERASE
+
+!if $(__VERSION__) < 1280
+!message !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!message ! This Open Watcom version is too old and is no longer supported !
+!message !     Please download latest version from www.openwatcom.org     !
+!message !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!error Unsupported version of Open Watcom
+!endif
+
 !ifndef %watcom
 !error WATCOM environment variable not set!
 !endif
 
 !ifndef %watcom
 !error WATCOM environment variable not set!
 !endif
 
+# In order to process Makefile.inc wmake must be called with -u switch!
+!ifndef %MAKEFLAGS
+!error You MUST call wmake with the -u switch!
+!endif
+
 !ifdef %libname
 LIBNAME = $(%libname)
 !else
 LIBNAME = libcurl
 !endif
 !ifdef %libname
 LIBNAME = $(%libname)
 !else
 LIBNAME = libcurl
 !endif
-TARGETS = $(LIBNAME).dll $(LIBNAME)_imp.lib $(LIBNAME).lib
+
+TARGETS = curl.exe
 
 CC = wcc386
 LD = wlink
 
 CC = wcc386
 LD = wlink
@@ -23,37 +39,29 @@ RC = wrc
 !  loaddll wcc386  wccd386
 !  loaddll wpp386  wppd386
 !  loaddll wlib    wlibd
 !  loaddll wcc386  wccd386
 !  loaddll wpp386  wppd386
 !  loaddll wlib    wlibd
-!  if $(__VERSION__) > 1270
-!    loaddll wlink   wlinkd
-!  else
-!    loaddll wlink   wlink
-!  endif
+!  loaddll wlink   wlinkd
 !endif
 
 !endif
 
-!ifdef __LINUX__
-DS = /
+!ifdef __UNIX__
 CP = cp
 MD = mkdir -p
 CP = cp
 MD = mkdir -p
-RD = rmdir -p
-RM = rm -f
 !else
 !else
-DS = $(X)\$(X)
 CP = copy 2>NUL
 MD = mkdir
 CP = copy 2>NUL
 MD = mkdir
-RD = rmdir /q /s 2>NUL
-!if $(__VERSION__) < 1250
-RM = del /q /f 2>NUL
-!else
-RM = rm -f
 !endif
 !endif
+!if $(__VERSION__) > 1290
+RD = rm -rf
+!else ifdef __UNIX__
+RD = rm -rf
+!else
+RD = rmdir /q /s 2>NUL
 !endif
 
 !endif
 
-SYS_INCL = -I$(%watcom)$(DS)h$(DS)nt -I$(%watcom)$(DS)h
-SYS_LIBS = $(%watcom)$(DS)lib386$(DS)nt;$(%watcom)$(DS)lib386
+SYS_INCL = -I"$(%watcom)/h/nt" -I"$(%watcom)/h"
 
 CFLAGS = -3r -mf -hc -zff -zgf -zq -zm -s -fr=con -w2 -fpi -oilrtfm &
          -wcd=201 -bt=nt -bc -d+ -dWIN32 -dHAVE_STRTOLL             &
 
 CFLAGS = -3r -mf -hc -zff -zgf -zq -zm -s -fr=con -w2 -fpi -oilrtfm &
          -wcd=201 -bt=nt -bc -d+ -dWIN32 -dHAVE_STRTOLL             &
-         -I..$(DS)include -I..$(DS)lib $(SYS_INCL)
+         -I"../include" -I"../lib" $(SYS_INCL)
 
 !ifdef %debug
 DEBUG  = -dDEBUG=1 -dDEBUGBUILD
 
 !ifdef %debug
 DEBUG  = -dDEBUG=1 -dDEBUGBUILD
@@ -66,82 +74,75 @@ CFLAGS += -d0
 CFLAGS += -d_WIN32_WINNT=0x0501 -dENABLE_IPV6
 !endif
 
 CFLAGS += -d_WIN32_WINNT=0x0501 -dENABLE_IPV6
 !endif
 
+!ifdef %use_ssl
+CFLAGS += -wcd=138 -dUSE_OPENSSL -dUSE_SSLEAY -I"$(OPENSSL_ROOT)/inc32"
+!endif
+
+!ifdef %curl_static
+CFLAGS += -DCURL_STATICLIB
+!else
+CFLAGS += -br
+!endif
+
 #
 # Change to suite.
 #
 !ifdef %zlib_root
 ZLIB_ROOT = $(%zlib_root)
 !else
 #
 # Change to suite.
 #
 !ifdef %zlib_root
 ZLIB_ROOT = $(%zlib_root)
 !else
-ZLIB_ROOT = ..$(DS)..$(DS)zlib-1.2.8
+ZLIB_ROOT = ../../zlib-1.2.8
 !endif
 
 !ifdef %libssh2_root
 LIBSSH2_ROOT = $(%libssh2_root)
 !else
 !endif
 
 !ifdef %libssh2_root
 LIBSSH2_ROOT = $(%libssh2_root)
 !else
-LIBSSH2_ROOT = ..$(DS)..$(DS)libssh2-1.4.3
+LIBSSH2_ROOT = ../../libssh2-1.4.3
 !endif
 
 !ifdef %librtmp_root
 LIBRTMP_ROOT = $(%librtmp_root)
 !else
 !endif
 
 !ifdef %librtmp_root
 LIBRTMP_ROOT = $(%librtmp_root)
 !else
-LIBRTMP_ROOT = ..$(DS)..$(DS)rtmpdump-2.3
+LIBRTMP_ROOT = ../../rtmpdump-2.3
 !endif
 
 !ifdef %openssl_root
 OPENSSL_ROOT = $(%openssl_root)
 !else
 !endif
 
 !ifdef %openssl_root
 OPENSSL_ROOT = $(%openssl_root)
 !else
-OPENSSL_ROOT = ..$(DS)..$(DS)openssl-0.9.8y
+OPENSSL_ROOT = ../../openssl-0.9.8zc
 !endif
 
 !ifdef %ares_root
 ARES_ROOT = $(%ares_root)
 !else
 !endif
 
 !ifdef %ares_root
 ARES_ROOT = $(%ares_root)
 !else
-ARES_ROOT = ..$(DS)ares
-!endif
-
-!ifdef %use_ssl
-CFLAGS += -wcd=138 -dUSE_OPENSSL -dUSE_SSLEAY -I$(OPENSSL_ROOT)$(DS)inc32
+ARES_ROOT = ../ares
 !endif
 
 OBJ_DIR  = WC_Win32.obj
 !endif
 
 OBJ_DIR  = WC_Win32.obj
-LINK_ARG = $(OBJ_DIR)$(DS)wlink.arg
+LINK_ARG = $(OBJ_DIR)/wlink.arg
 
 
-# In order to process Makefile.inc wmake must be called with -u switch!
-!ifndef %MAKEFLAGS
-!error You MUST call wmake with the -u switch!
-!else
 !include Makefile.inc
 !include Makefile.inc
-!endif
-# For now we still define the CURLX_ONES sources here unless we know how
-# to split off the prefixed path.
-CURLX_SOURCES = rawstr.c nonblock.c
 
 
-OBJS = $(CURL_CFILES:.c=.obj)
-!ifdef %curl_static
-CFLAGS += -DCURL_STATICLIB
-!else
-CFLAGS += -br
-OBJS += $(CURLX_SOURCES:.c=.obj)
+OBJS1 = $(OBJ_DIR)/$(CURL_CFILES)
+!ifndef %curl_static
+OBJS1 += $(CURLX_CFILES:../lib/=)
 !endif
 !endif
-!ifdef __LINUX__
-OBJS = $OBJ_DIR/$(OBJS: = $OBJ_DIR/)
+OBJS2 = $(OBJS1: = $(OBJ_DIR)/)
+OBJS = $(OBJS2:.c=.obj)
 
 
-!else
-OBJS = $OBJ_DIR\$(OBJS: = $OBJ_DIR\)
-!endif
+RESOURCE = $(OBJ_DIR)/curl.res
 
 
-RESOURCE = $(OBJ_DIR)$(DS)curl.res
+DIRS = $(OBJ_DIR)
 
 
-all: tool_hugehelp.c $(OBJ_DIR) curl.exe .SYMBOLIC
+all: tool_hugehelp.c $(DIRS) $(TARGETS) .SYMBOLIC
        @echo Welcome to cURL
 
 clean: .SYMBOLIC
        @echo Welcome to cURL
 
 clean: .SYMBOLIC
-       -$(RM) $(OBJS)
-       -$(RM) $(RESOURCE) $(LINK_ARG)
+       -rm -f $(OBJS)
+       -rm -f $(RESOURCE) $(LINK_ARG)
 
 vclean distclean: clean .SYMBOLIC
        -$(RD) $(OBJ_DIR)
 
 vclean distclean: clean .SYMBOLIC
        -$(RD) $(OBJ_DIR)
-       -$(RM) curl.exe curl.map curl.sym tool_hugehelp.c
+       -rm -f curl.exe curl.sym tool_hugehelp.c
 
 tool_hugehelp.c: tool_hugehelp.c.cvs
        $(CP) $[@ $^@
 
 tool_hugehelp.c: tool_hugehelp.c.cvs
        $(CP) $[@ $^@
@@ -149,64 +150,63 @@ tool_hugehelp.c: tool_hugehelp.c.cvs
 tool_hugehelp.c.cvs: .EXISTSONLY
        $(CP) tool_hugehelp.c $^@
 
 tool_hugehelp.c.cvs: .EXISTSONLY
        $(CP) tool_hugehelp.c $^@
 
-$(OBJ_DIR):
+$(DIRS):
        -$(MD) $^@
 
        -$(MD) $^@
 
-curl.exe: $(OBJS) $(RESOURCE) $(LINK_ARG)
-       $(LD) name $^@ @$]@
-
-$(RESOURCE): curl.rc
-       $(RC) $(DEBUG) -q -r -zm -bt=nt -I..$(DS)include $(SYS_INCL) $[@ -fo=$^@
-
-# suffix search path - vpath-like hack
-.c: ..$(DS)lib
-
-.ERASE
-.c{$(OBJ_DIR)}.obj:
-       $(CC) $(CFLAGS) $[@ -fo=$^@
-
-$(LINK_ARG): $(__MAKEFILES__)
-       %create $^@
-       @%append $^@ system nt
-       @%append $^@ file { $(OBJS) }
+curl.exe: $(OBJS) $(RESOURCE)
+       %create $(LINK_ARG)
+       @%append $(LINK_ARG) system nt
 !ifdef %debug
 !ifdef %debug
-       @%append $^@ debug all
-       @%append $^@ option symfile
-!endif
-       @%append $^@ option quiet, map, caseexact, eliminate,
-       @%append $^@ res=$(RESOURCE) libpath $(SYS_LIBS)
-!ifdef %curl_static
-       @%append $^@ library wldap32.lib
-       @%append $^@ library ..$(DS)lib$(DS)$(LIBNAME).lib
-!ifdef %use_zlib
-       @%append $^@ library $(ZLIB_ROOT)$(DS)zlib.lib
-!endif
-!ifdef %use_rtmp
-       @%append $^@ library $(LIBRTMP_ROOT)$(DS)librtmp$(DS)librtmp.lib, winmm.lib
-!endif
-!ifdef %use_ssh2
-       @%append $^@ library $(LIBSSH2_ROOT)$(DS)win32$(DS)libssh2.lib
-!endif
-!ifdef %use_ssl
-       @%append $^@ library $(OPENSSL_ROOT)$(DS)out32$(DS)libeay32.lib, $(OPENSSL_ROOT)$(DS)out32$(DS)ssleay32.lib
-!endif
-!ifdef %use_ares
-       @%append $^@ library $(ARES_ROOT)$(DS)cares.lib
-!endif
-!ifdef %use_winidn
+       @%append $(LINK_ARG) debug all
+       @%append $(LINK_ARG) option symfile
+!endif
+       @%append $(LINK_ARG) option quiet, caseexact, eliminate
+       @%append $(LINK_ARG) option map=$(OBJ_DIR)/$^&.map
+       @%append $(LINK_ARG) option res=$(RESOURCE)
+       @%append $(LINK_ARG) file { $(OBJS) }
+!ifndef %curl_static
+       @%append $(LINK_ARG) library ../lib/$(LIBNAME)_imp.lib
+!else
+       @%append $(LINK_ARG) library ../lib/$(LIBNAME).lib
+       @%append $(LINK_ARG) library wldap32.lib
+! ifdef %use_zlib
+       @%append $(LINK_ARG) library '$(ZLIB_ROOT)/zlib.lib'
+! endif
+! ifdef %use_rtmp
+       @%append $(LINK_ARG) library '$(LIBRTMP_ROOT)/librtmp/librtmp.lib'
+       @%append $(LINK_ARG) library winmm.lib
+! endif
+! ifdef %use_ssh2
+       @%append $(LINK_ARG) library '$(LIBSSH2_ROOT)/win32/libssh2.lib'
+! endif
+! ifdef %use_ssl
+       @%append $(LINK_ARG) library '$(OPENSSL_ROOT)/out32/libeay32.lib'
+       @%append $(LINK_ARG) library '$(OPENSSL_ROOT)/out32/ssleay32.lib'
+! endif
+! ifdef %use_ares
+       @%append $(LINK_ARG) library '$(ARES_ROOT)/cares.lib'
+! endif
+! ifdef %use_winidn
 !  if $(__VERSION__) > 1290
 !  if $(__VERSION__) > 1290
-       @%append $^@ library normaliz.lib
+       @%append $(LINK_ARG) library normaliz.lib
 !  else
 !  else
-       @%append $^@ import '_IdnToAscii@20' 'NORMALIZ.DLL'.'IdnToAscii'
-       @%append $^@ import '_IdnToUnicode@20' 'NORMALIZ.DLL'.'IdnToUnicode'
+       @%append $(LINK_ARG) import '_IdnToAscii@20' 'NORMALIZ.DLL'.'IdnToAscii'
+       @%append $(LINK_ARG) import '_IdnToUnicode@20' 'NORMALIZ.DLL'.'IdnToUnicode'
 !  endif
 !  endif
-!endif
-!else
-       @%append $^@ library ..$(DS)lib$(DS)$(LIBNAME)_imp.lib
+! endif
 !endif
 !ifeq USE_WATT32 1
 !endif
 !ifeq USE_WATT32 1
-       @%append $^@ library $(%watt_root)$(DS)lib$(DS)wattcpw_imp.lib
+       @%append $(LINK_ARG) library '$(%watt_root)/lib/wattcpw_imp.lib'
 !else
 !else
-       @%append $^@ library ws2_32.lib
+       @%append $(LINK_ARG) library ws2_32.lib
 !endif
 !endif
+       $(LD) name $^@ @$(LINK_ARG)
+
+$(RESOURCE): curl.rc
+       $(RC) $(DEBUG) -q -r -zm -bt=nt -I"../include" $(SYS_INCL) $[@ -fo=$^@
 
 
+# suffix search path - vpath-like hack
+.c: ../lib
+
+.c{$(OBJ_DIR)}.obj:
+       $(CC) $(CFLAGS) $[@ -fo=$^@
index 72e6772..f96618e 100644 (file)
@@ -21,6 +21,9 @@
 ###########################################################################
 AUTOMAKE_OPTIONS = foreign nostdinc
 
 ###########################################################################
 AUTOMAKE_OPTIONS = foreign nostdinc
 
+# remove targets if the command fails
+.DELETE_ON_ERROR:
+
 # Specify our include paths here, and do it relative to $(top_srcdir) and
 # $(top_builddir), to ensure that these paths which belong to the library
 # being currently built and tested are searched before the library which
 # Specify our include paths here, and do it relative to $(top_srcdir) and
 # $(top_builddir), to ensure that these paths which belong to the library
 # being currently built and tested are searched before the library which
@@ -59,7 +62,7 @@ LIBS = $(BLANK_AT_MAKETIME)
 if USE_EXPLICIT_LIB_DEPS
 curl_LDADD = $(top_builddir)/lib/libcurl.la @LIBMETALINK_LIBS@ @LIBCURL_LIBS@
 else
 if USE_EXPLICIT_LIB_DEPS
 curl_LDADD = $(top_builddir)/lib/libcurl.la @LIBMETALINK_LIBS@ @LIBCURL_LIBS@
 else
-curl_LDADD = $(top_builddir)/lib/libcurl.la @LIBMETALINK_LIBS@ @ZLIB_LIBS@ @CURL_NETWORK_AND_TIME_LIBS@
+curl_LDADD = $(top_builddir)/lib/libcurl.la @LIBMETALINK_LIBS@ @NSS_LIBS@ @ZLIB_LIBS@ @CURL_NETWORK_AND_TIME_LIBS@
 endif
 
 curl_LDFLAGS = @LIBMETALINK_LDFLAGS@
 endif
 
 curl_LDFLAGS = @LIBMETALINK_LDFLAGS@
index b0ee5b6..6638a01 100644 (file)
@@ -27,7 +27,7 @@ ZLIB_PATH = ..\..\zlib-1.2.8
 
 # Edit the path below to point to the base of your OpenSSL package.
 !ifndef OPENSSL_PATH
 
 # Edit the path below to point to the base of your OpenSSL package.
 !ifndef OPENSSL_PATH
-OPENSSL_PATH = ..\..\openssl-0.9.8y
+OPENSSL_PATH = ..\..\openssl-0.9.8zc
 !endif
 
 # Set program's name
 !endif
 
 # Set program's name
@@ -81,7 +81,7 @@ LINKLIB  = $(LINKLIB) $(OPENSSL_PATH)\out32\ssleay32.lib $(OPENSSL_PATH)\out32\l
 # Makefile.inc provides the CSOURCES and HHEADERS defines
 !include Makefile.inc
 
 # Makefile.inc provides the CSOURCES and HHEADERS defines
 !include Makefile.inc
 
-CSOURCES = $(CURL_CFILES) $(CURLX_ONES:../lib/=)
+CSOURCES = $(CURL_CFILES) $(CURLX_CFILES:../lib/=)
 OBJECTS  = $(CSOURCES:.c=.obj)
 PREPROCESSED = $(CSOURCES:.c=.int)
 
 OBJECTS  = $(CSOURCES:.c=.obj)
 PREPROCESSED = $(CSOURCES:.c=.int)
 
index 6c0f250..ed6cc0d 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -129,20 +129,21 @@ am__libcurltool_la_SOURCES_DIST = tool_binmode.c tool_bname.c \
        tool_homedir.c tool_hugehelp.c tool_libinfo.c tool_main.c \
        tool_metalink.c tool_mfiles.c tool_msgs.c tool_operate.c \
        tool_operhlp.c tool_panykey.c tool_paramhlp.c tool_parsecfg.c \
        tool_homedir.c tool_hugehelp.c tool_libinfo.c tool_main.c \
        tool_metalink.c tool_mfiles.c tool_msgs.c tool_operate.c \
        tool_operhlp.c tool_panykey.c tool_paramhlp.c tool_parsecfg.c \
-       tool_setopt.c tool_sleep.c tool_urlglob.c tool_util.c \
-       tool_vms.c tool_writeenv.c tool_writeout.c tool_xattr.c \
-       ../lib/strtoofft.c ../lib/strdup.c ../lib/rawstr.c \
-       ../lib/nonblock.c tool_binmode.h tool_bname.h tool_cb_dbg.h \
-       tool_cb_hdr.h tool_cb_prg.h tool_cb_rea.h tool_cb_see.h \
-       tool_cb_wrt.h tool_cfgable.h tool_convert.h tool_dirhie.h \
-       tool_doswin.h tool_easysrc.h tool_formparse.h tool_getparam.h \
-       tool_getpass.h tool_help.h tool_helpers.h tool_homedir.h \
-       tool_hugehelp.h tool_libinfo.h tool_main.h tool_metalink.h \
-       tool_mfiles.h tool_msgs.h tool_operate.h tool_operhlp.h \
-       tool_panykey.h tool_paramhlp.h tool_parsecfg.h tool_sdecls.h \
-       tool_setopt.h tool_setup.h tool_sleep.h tool_urlglob.h \
-       tool_util.h tool_version.h tool_vms.h tool_writeenv.h \
-       tool_writeout.h tool_xattr.h
+       tool_strdup.c tool_setopt.c tool_sleep.c tool_urlglob.c \
+       tool_util.c tool_vms.c tool_writeenv.c tool_writeout.c \
+       tool_xattr.c ../lib/strtoofft.c ../lib/rawstr.c \
+       ../lib/nonblock.c ../lib/warnless.c tool_binmode.h \
+       tool_bname.h tool_cb_dbg.h tool_cb_hdr.h tool_cb_prg.h \
+       tool_cb_rea.h tool_cb_see.h tool_cb_wrt.h tool_cfgable.h \
+       tool_convert.h tool_dirhie.h tool_doswin.h tool_easysrc.h \
+       tool_formparse.h tool_getparam.h tool_getpass.h tool_help.h \
+       tool_helpers.h tool_homedir.h tool_hugehelp.h tool_libinfo.h \
+       tool_main.h tool_metalink.h tool_mfiles.h tool_msgs.h \
+       tool_operate.h tool_operhlp.h tool_panykey.h tool_paramhlp.h \
+       tool_parsecfg.h tool_sdecls.h tool_setopt.h tool_setup.h \
+       tool_sleep.h tool_strdup.h tool_urlglob.h tool_util.h \
+       tool_version.h tool_vms.h tool_writeenv.h tool_writeout.h \
+       tool_xattr.h
 am__objects_1 = libcurltool_la-tool_binmode.lo \
        libcurltool_la-tool_bname.lo libcurltool_la-tool_cb_dbg.lo \
        libcurltool_la-tool_cb_hdr.lo libcurltool_la-tool_cb_prg.lo \
 am__objects_1 = libcurltool_la-tool_binmode.lo \
        libcurltool_la-tool_bname.lo libcurltool_la-tool_cb_dbg.lo \
        libcurltool_la-tool_cb_hdr.lo libcurltool_la-tool_cb_prg.lo \
@@ -159,13 +160,16 @@ am__objects_1 = libcurltool_la-tool_binmode.lo \
        libcurltool_la-tool_msgs.lo libcurltool_la-tool_operate.lo \
        libcurltool_la-tool_operhlp.lo libcurltool_la-tool_panykey.lo \
        libcurltool_la-tool_paramhlp.lo \
        libcurltool_la-tool_msgs.lo libcurltool_la-tool_operate.lo \
        libcurltool_la-tool_operhlp.lo libcurltool_la-tool_panykey.lo \
        libcurltool_la-tool_paramhlp.lo \
-       libcurltool_la-tool_parsecfg.lo libcurltool_la-tool_setopt.lo \
-       libcurltool_la-tool_sleep.lo libcurltool_la-tool_urlglob.lo \
-       libcurltool_la-tool_util.lo libcurltool_la-tool_vms.lo \
-       libcurltool_la-tool_writeenv.lo \
+       libcurltool_la-tool_parsecfg.lo libcurltool_la-tool_strdup.lo \
+       libcurltool_la-tool_setopt.lo libcurltool_la-tool_sleep.lo \
+       libcurltool_la-tool_urlglob.lo libcurltool_la-tool_util.lo \
+       libcurltool_la-tool_vms.lo libcurltool_la-tool_writeenv.lo \
        libcurltool_la-tool_writeout.lo libcurltool_la-tool_xattr.lo
        libcurltool_la-tool_writeout.lo libcurltool_la-tool_xattr.lo
-am__objects_2 = libcurltool_la-strtoofft.lo libcurltool_la-strdup.lo \
-       libcurltool_la-rawstr.lo libcurltool_la-nonblock.lo
+am__dirstamp = $(am__leading_dot)dirstamp
+am__objects_2 = ../lib/libcurltool_la-strtoofft.lo \
+       ../lib/libcurltool_la-rawstr.lo \
+       ../lib/libcurltool_la-nonblock.lo \
+       ../lib/libcurltool_la-warnless.lo
 am__objects_3 =
 am__objects_4 = $(am__objects_1) $(am__objects_2) $(am__objects_3)
 @BUILD_UNITTESTS_TRUE@am_libcurltool_la_OBJECTS = $(am__objects_4)
 am__objects_3 =
 am__objects_4 = $(am__objects_1) $(am__objects_2) $(am__objects_3)
 @BUILD_UNITTESTS_TRUE@am_libcurltool_la_OBJECTS = $(am__objects_4)
@@ -196,12 +200,14 @@ am__objects_5 = curl-tool_binmode.$(OBJEXT) curl-tool_bname.$(OBJEXT) \
        curl-tool_msgs.$(OBJEXT) curl-tool_operate.$(OBJEXT) \
        curl-tool_operhlp.$(OBJEXT) curl-tool_panykey.$(OBJEXT) \
        curl-tool_paramhlp.$(OBJEXT) curl-tool_parsecfg.$(OBJEXT) \
        curl-tool_msgs.$(OBJEXT) curl-tool_operate.$(OBJEXT) \
        curl-tool_operhlp.$(OBJEXT) curl-tool_panykey.$(OBJEXT) \
        curl-tool_paramhlp.$(OBJEXT) curl-tool_parsecfg.$(OBJEXT) \
-       curl-tool_setopt.$(OBJEXT) curl-tool_sleep.$(OBJEXT) \
-       curl-tool_urlglob.$(OBJEXT) curl-tool_util.$(OBJEXT) \
-       curl-tool_vms.$(OBJEXT) curl-tool_writeenv.$(OBJEXT) \
-       curl-tool_writeout.$(OBJEXT) curl-tool_xattr.$(OBJEXT)
-am__objects_6 = curl-strtoofft.$(OBJEXT) curl-strdup.$(OBJEXT) \
-       curl-rawstr.$(OBJEXT) curl-nonblock.$(OBJEXT)
+       curl-tool_strdup.$(OBJEXT) curl-tool_setopt.$(OBJEXT) \
+       curl-tool_sleep.$(OBJEXT) curl-tool_urlglob.$(OBJEXT) \
+       curl-tool_util.$(OBJEXT) curl-tool_vms.$(OBJEXT) \
+       curl-tool_writeenv.$(OBJEXT) curl-tool_writeout.$(OBJEXT) \
+       curl-tool_xattr.$(OBJEXT)
+am__objects_6 = ../lib/curl-strtoofft.$(OBJEXT) \
+       ../lib/curl-rawstr.$(OBJEXT) ../lib/curl-nonblock.$(OBJEXT) \
+       ../lib/curl-warnless.$(OBJEXT)
 am_curl_OBJECTS = $(am__objects_5) $(am__objects_6) $(am__objects_3)
 curl_OBJECTS = $(am_curl_OBJECTS)
 curl_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 am_curl_OBJECTS = $(am__objects_5) $(am__objects_6) $(am__objects_3)
 curl_OBJECTS = $(am_curl_OBJECTS)
 curl_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
@@ -302,6 +308,7 @@ CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
+CURL_DISABLE_SMB = @CURL_DISABLE_SMB@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
@@ -326,7 +333,6 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_NSS_INITCONTEXT = @HAVE_NSS_INITCONTEXT@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
@@ -335,7 +341,6 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
-KRB4_ENABLED = @KRB4_ENABLED@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
@@ -360,6 +365,7 @@ NMEDIT = @NMEDIT@
 # Use the C locale to ensure that only ASCII characters appear in the
 # embedded text.
 NROFF = env LC_ALL=C @NROFF@ @MANOPT@ # figured out by the configure script
 # Use the C locale to ensure that only ASCII characters appear in the
 # embedded text.
 NROFF = env LC_ALL=C @NROFF@ @MANOPT@ # figured out by the configure script
+NSS_LIBS = @NSS_LIBS@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
@@ -395,11 +401,13 @@ USE_GNUTLS = @USE_GNUTLS@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
+USE_NGHTTP2 = @USE_NGHTTP2@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
+USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
@@ -501,11 +509,18 @@ AM_CPPFLAGS = -I$(top_builddir)/include/curl -I$(top_builddir)/include \
 
 # libcurl has sources that provide functions named curlx_* that aren't part of
 # the official API, but we re-use the code here to avoid duplication.
 
 # libcurl has sources that provide functions named curlx_* that aren't part of
 # the official API, but we re-use the code here to avoid duplication.
-CURLX_ONES = \
+CURLX_CFILES = \
        ../lib/strtoofft.c \
        ../lib/strtoofft.c \
-       ../lib/strdup.c \
        ../lib/rawstr.c \
        ../lib/rawstr.c \
-       ../lib/nonblock.c
+       ../lib/nonblock.c \
+       ../lib/warnless.c
+
+CURLX_HFILES = \
+       ../lib/curl_setup.h \
+       ../lib/strtoofft.h \
+       ../lib/rawstr.h \
+       ../lib/nonblock.h \
+       ../lib/warnless.h
 
 CURL_CFILES = \
        tool_binmode.c \
 
 CURL_CFILES = \
        tool_binmode.c \
@@ -538,6 +553,7 @@ CURL_CFILES = \
        tool_panykey.c \
        tool_paramhlp.c \
        tool_parsecfg.c \
        tool_panykey.c \
        tool_paramhlp.c \
        tool_parsecfg.c \
+       tool_strdup.c \
        tool_setopt.c \
        tool_sleep.c \
        tool_urlglob.c \
        tool_setopt.c \
        tool_sleep.c \
        tool_urlglob.c \
@@ -582,6 +598,7 @@ CURL_HFILES = \
        tool_setopt.h \
        tool_setup.h \
        tool_sleep.h \
        tool_setopt.h \
        tool_setup.h \
        tool_sleep.h \
+       tool_strdup.h \
        tool_urlglob.h \
        tool_util.h \
        tool_version.h \
        tool_urlglob.h \
        tool_util.h \
        tool_version.h \
@@ -590,8 +607,9 @@ CURL_HFILES = \
        tool_writeout.h \
        tool_xattr.h
 
        tool_writeout.h \
        tool_xattr.h
 
-curl_SOURCES = $(CURL_CFILES) $(CURLX_ONES) $(CURL_HFILES)
-@USE_EXPLICIT_LIB_DEPS_FALSE@curl_LDADD = $(top_builddir)/lib/libcurl.la @LIBMETALINK_LIBS@ @ZLIB_LIBS@ @CURL_NETWORK_AND_TIME_LIBS@
+CURL_RCFILES = curl.rc
+curl_SOURCES = $(CURL_CFILES) $(CURLX_CFILES) $(CURL_HFILES)
+@USE_EXPLICIT_LIB_DEPS_FALSE@curl_LDADD = $(top_builddir)/lib/libcurl.la @LIBMETALINK_LIBS@ @NSS_LIBS@ @ZLIB_LIBS@ @CURL_NETWORK_AND_TIME_LIBS@
 @USE_EXPLICIT_LIB_DEPS_TRUE@curl_LDADD = $(top_builddir)/lib/libcurl.la @LIBMETALINK_LIBS@ @LIBCURL_LIBS@
 curl_LDFLAGS = @LIBMETALINK_LDFLAGS@
 curl_CPPFLAGS = $(AM_CPPFLAGS) $(LIBMETALINK_CPPFLAGS)
 @USE_EXPLICIT_LIB_DEPS_TRUE@curl_LDADD = $(top_builddir)/lib/libcurl.la @LIBMETALINK_LIBS@ @LIBCURL_LIBS@
 curl_LDFLAGS = @LIBMETALINK_LDFLAGS@
 curl_CPPFLAGS = $(AM_CPPFLAGS) $(LIBMETALINK_CPPFLAGS)
@@ -662,6 +680,20 @@ clean-noinstLTLIBRARIES:
          echo rm -f $${locs}; \
          rm -f $${locs}; \
        }
          echo rm -f $${locs}; \
          rm -f $${locs}; \
        }
+../lib/$(am__dirstamp):
+       @$(MKDIR_P) ../lib
+       @: > ../lib/$(am__dirstamp)
+../lib/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) ../lib/$(DEPDIR)
+       @: > ../lib/$(DEPDIR)/$(am__dirstamp)
+../lib/libcurltool_la-strtoofft.lo: ../lib/$(am__dirstamp) \
+       ../lib/$(DEPDIR)/$(am__dirstamp)
+../lib/libcurltool_la-rawstr.lo: ../lib/$(am__dirstamp) \
+       ../lib/$(DEPDIR)/$(am__dirstamp)
+../lib/libcurltool_la-nonblock.lo: ../lib/$(am__dirstamp) \
+       ../lib/$(DEPDIR)/$(am__dirstamp)
+../lib/libcurltool_la-warnless.lo: ../lib/$(am__dirstamp) \
+       ../lib/$(DEPDIR)/$(am__dirstamp)
 
 libcurltool.la: $(libcurltool_la_OBJECTS) $(libcurltool_la_DEPENDENCIES) $(EXTRA_libcurltool_la_DEPENDENCIES) 
        $(AM_V_CCLD)$(libcurltool_la_LINK) $(am_libcurltool_la_rpath) $(libcurltool_la_OBJECTS) $(libcurltool_la_LIBADD) $(LIBS)
 
 libcurltool.la: $(libcurltool_la_OBJECTS) $(libcurltool_la_DEPENDENCIES) $(EXTRA_libcurltool_la_DEPENDENCIES) 
        $(AM_V_CCLD)$(libcurltool_la_LINK) $(am_libcurltool_la_rpath) $(libcurltool_la_OBJECTS) $(libcurltool_la_LIBADD) $(LIBS)
@@ -714,6 +746,14 @@ clean-binPROGRAMS:
        list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
        echo " rm -f" $$list; \
        rm -f $$list
        list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
        echo " rm -f" $$list; \
        rm -f $$list
+../lib/curl-strtoofft.$(OBJEXT): ../lib/$(am__dirstamp) \
+       ../lib/$(DEPDIR)/$(am__dirstamp)
+../lib/curl-rawstr.$(OBJEXT): ../lib/$(am__dirstamp) \
+       ../lib/$(DEPDIR)/$(am__dirstamp)
+../lib/curl-nonblock.$(OBJEXT): ../lib/$(am__dirstamp) \
+       ../lib/$(DEPDIR)/$(am__dirstamp)
+../lib/curl-warnless.$(OBJEXT): ../lib/$(am__dirstamp) \
+       ../lib/$(DEPDIR)/$(am__dirstamp)
 
 curl$(EXEEXT): $(curl_OBJECTS) $(curl_DEPENDENCIES) $(EXTRA_curl_DEPENDENCIES) 
        @rm -f curl$(EXEEXT)
 
 curl$(EXEEXT): $(curl_OBJECTS) $(curl_DEPENDENCIES) $(EXTRA_curl_DEPENDENCIES) 
        @rm -f curl$(EXEEXT)
@@ -721,14 +761,20 @@ curl$(EXEEXT): $(curl_OBJECTS) $(curl_DEPENDENCIES) $(EXTRA_curl_DEPENDENCIES)
 
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
 
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
+       -rm -f ../lib/*.$(OBJEXT)
+       -rm -f ../lib/*.lo
 
 distclean-compile:
        -rm -f *.tab.c
 
 
 distclean-compile:
        -rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-nonblock.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-rawstr.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-strdup.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-strtoofft.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/curl-nonblock.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/curl-rawstr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/curl-strtoofft.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/curl-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/libcurltool_la-nonblock.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/libcurltool_la-rawstr.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/libcurltool_la-strtoofft.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/libcurltool_la-warnless.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-tool_binmode.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-tool_bname.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-tool_cb_dbg.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-tool_binmode.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-tool_bname.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-tool_cb_dbg.Po@am__quote@
@@ -761,16 +807,13 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-tool_parsecfg.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-tool_setopt.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-tool_sleep.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-tool_parsecfg.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-tool_setopt.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-tool_sleep.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-tool_strdup.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-tool_urlglob.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-tool_util.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-tool_vms.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-tool_writeenv.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-tool_writeout.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-tool_xattr.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-tool_urlglob.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-tool_util.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-tool_vms.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-tool_writeenv.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-tool_writeout.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-tool_xattr.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-nonblock.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-rawstr.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-strdup.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-strtoofft.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_binmode.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_bname.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_cb_dbg.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_binmode.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_bname.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_cb_dbg.Plo@am__quote@
@@ -803,6 +846,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_parsecfg.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_setopt.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_sleep.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_parsecfg.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_setopt.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_sleep.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_strdup.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_urlglob.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_util.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_vms.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_urlglob.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_util.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_vms.Plo@am__quote@
@@ -811,22 +855,25 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_xattr.Plo@am__quote@
 
 .c.o:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_xattr.Plo@am__quote@
 
 .c.o:
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
 
 .c.obj:
 
 .c.obj:
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
 
 .c.lo:
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+@am__fastdepCC_TRUE@   $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Plo
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
@@ -1041,6 +1088,13 @@ libcurltool_la-tool_parsecfg.lo: tool_parsecfg.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_parsecfg.lo `test -f 'tool_parsecfg.c' || echo '$(srcdir)/'`tool_parsecfg.c
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_parsecfg.lo `test -f 'tool_parsecfg.c' || echo '$(srcdir)/'`tool_parsecfg.c
 
+libcurltool_la-tool_strdup.lo: tool_strdup.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_strdup.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_strdup.Tpo -c -o libcurltool_la-tool_strdup.lo `test -f 'tool_strdup.c' || echo '$(srcdir)/'`tool_strdup.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_strdup.Tpo $(DEPDIR)/libcurltool_la-tool_strdup.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='tool_strdup.c' object='libcurltool_la-tool_strdup.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_strdup.lo `test -f 'tool_strdup.c' || echo '$(srcdir)/'`tool_strdup.c
+
 libcurltool_la-tool_setopt.lo: tool_setopt.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_setopt.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_setopt.Tpo -c -o libcurltool_la-tool_setopt.lo `test -f 'tool_setopt.c' || echo '$(srcdir)/'`tool_setopt.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_setopt.Tpo $(DEPDIR)/libcurltool_la-tool_setopt.Plo
 libcurltool_la-tool_setopt.lo: tool_setopt.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_setopt.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_setopt.Tpo -c -o libcurltool_la-tool_setopt.lo `test -f 'tool_setopt.c' || echo '$(srcdir)/'`tool_setopt.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_setopt.Tpo $(DEPDIR)/libcurltool_la-tool_setopt.Plo
@@ -1097,33 +1151,33 @@ libcurltool_la-tool_xattr.lo: tool_xattr.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_xattr.lo `test -f 'tool_xattr.c' || echo '$(srcdir)/'`tool_xattr.c
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_xattr.lo `test -f 'tool_xattr.c' || echo '$(srcdir)/'`tool_xattr.c
 
-libcurltool_la-strtoofft.lo: ../lib/strtoofft.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-strtoofft.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-strtoofft.Tpo -c -o libcurltool_la-strtoofft.lo `test -f '../lib/strtoofft.c' || echo '$(srcdir)/'`../lib/strtoofft.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-strtoofft.Tpo $(DEPDIR)/libcurltool_la-strtoofft.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../lib/strtoofft.c' object='libcurltool_la-strtoofft.lo' libtool=yes @AMDEPBACKSLASH@
+../lib/libcurltool_la-strtoofft.lo: ../lib/strtoofft.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT ../lib/libcurltool_la-strtoofft.lo -MD -MP -MF ../lib/$(DEPDIR)/libcurltool_la-strtoofft.Tpo -c -o ../lib/libcurltool_la-strtoofft.lo `test -f '../lib/strtoofft.c' || echo '$(srcdir)/'`../lib/strtoofft.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/libcurltool_la-strtoofft.Tpo ../lib/$(DEPDIR)/libcurltool_la-strtoofft.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../lib/strtoofft.c' object='../lib/libcurltool_la-strtoofft.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-strtoofft.lo `test -f '../lib/strtoofft.c' || echo '$(srcdir)/'`../lib/strtoofft.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o ../lib/libcurltool_la-strtoofft.lo `test -f '../lib/strtoofft.c' || echo '$(srcdir)/'`../lib/strtoofft.c
 
 
-libcurltool_la-strdup.lo: ../lib/strdup.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-strdup.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-strdup.Tpo -c -o libcurltool_la-strdup.lo `test -f '../lib/strdup.c' || echo '$(srcdir)/'`../lib/strdup.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-strdup.Tpo $(DEPDIR)/libcurltool_la-strdup.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../lib/strdup.c' object='libcurltool_la-strdup.lo' libtool=yes @AMDEPBACKSLASH@
+../lib/libcurltool_la-rawstr.lo: ../lib/rawstr.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT ../lib/libcurltool_la-rawstr.lo -MD -MP -MF ../lib/$(DEPDIR)/libcurltool_la-rawstr.Tpo -c -o ../lib/libcurltool_la-rawstr.lo `test -f '../lib/rawstr.c' || echo '$(srcdir)/'`../lib/rawstr.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/libcurltool_la-rawstr.Tpo ../lib/$(DEPDIR)/libcurltool_la-rawstr.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../lib/rawstr.c' object='../lib/libcurltool_la-rawstr.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-strdup.lo `test -f '../lib/strdup.c' || echo '$(srcdir)/'`../lib/strdup.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o ../lib/libcurltool_la-rawstr.lo `test -f '../lib/rawstr.c' || echo '$(srcdir)/'`../lib/rawstr.c
 
 
-libcurltool_la-rawstr.lo: ../lib/rawstr.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-rawstr.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-rawstr.Tpo -c -o libcurltool_la-rawstr.lo `test -f '../lib/rawstr.c' || echo '$(srcdir)/'`../lib/rawstr.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-rawstr.Tpo $(DEPDIR)/libcurltool_la-rawstr.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../lib/rawstr.c' object='libcurltool_la-rawstr.lo' libtool=yes @AMDEPBACKSLASH@
+../lib/libcurltool_la-nonblock.lo: ../lib/nonblock.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT ../lib/libcurltool_la-nonblock.lo -MD -MP -MF ../lib/$(DEPDIR)/libcurltool_la-nonblock.Tpo -c -o ../lib/libcurltool_la-nonblock.lo `test -f '../lib/nonblock.c' || echo '$(srcdir)/'`../lib/nonblock.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/libcurltool_la-nonblock.Tpo ../lib/$(DEPDIR)/libcurltool_la-nonblock.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../lib/nonblock.c' object='../lib/libcurltool_la-nonblock.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-rawstr.lo `test -f '../lib/rawstr.c' || echo '$(srcdir)/'`../lib/rawstr.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o ../lib/libcurltool_la-nonblock.lo `test -f '../lib/nonblock.c' || echo '$(srcdir)/'`../lib/nonblock.c
 
 
-libcurltool_la-nonblock.lo: ../lib/nonblock.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-nonblock.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-nonblock.Tpo -c -o libcurltool_la-nonblock.lo `test -f '../lib/nonblock.c' || echo '$(srcdir)/'`../lib/nonblock.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-nonblock.Tpo $(DEPDIR)/libcurltool_la-nonblock.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../lib/nonblock.c' object='libcurltool_la-nonblock.lo' libtool=yes @AMDEPBACKSLASH@
+../lib/libcurltool_la-warnless.lo: ../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT ../lib/libcurltool_la-warnless.lo -MD -MP -MF ../lib/$(DEPDIR)/libcurltool_la-warnless.Tpo -c -o ../lib/libcurltool_la-warnless.lo `test -f '../lib/warnless.c' || echo '$(srcdir)/'`../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/libcurltool_la-warnless.Tpo ../lib/$(DEPDIR)/libcurltool_la-warnless.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../lib/warnless.c' object='../lib/libcurltool_la-warnless.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-nonblock.lo `test -f '../lib/nonblock.c' || echo '$(srcdir)/'`../lib/nonblock.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o ../lib/libcurltool_la-warnless.lo `test -f '../lib/warnless.c' || echo '$(srcdir)/'`../lib/warnless.c
 
 curl-tool_binmode.o: tool_binmode.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT curl-tool_binmode.o -MD -MP -MF $(DEPDIR)/curl-tool_binmode.Tpo -c -o curl-tool_binmode.o `test -f 'tool_binmode.c' || echo '$(srcdir)/'`tool_binmode.c
 
 curl-tool_binmode.o: tool_binmode.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT curl-tool_binmode.o -MD -MP -MF $(DEPDIR)/curl-tool_binmode.Tpo -c -o curl-tool_binmode.o `test -f 'tool_binmode.c' || echo '$(srcdir)/'`tool_binmode.c
@@ -1545,6 +1599,20 @@ curl-tool_parsecfg.obj: tool_parsecfg.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o curl-tool_parsecfg.obj `if test -f 'tool_parsecfg.c'; then $(CYGPATH_W) 'tool_parsecfg.c'; else $(CYGPATH_W) '$(srcdir)/tool_parsecfg.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o curl-tool_parsecfg.obj `if test -f 'tool_parsecfg.c'; then $(CYGPATH_W) 'tool_parsecfg.c'; else $(CYGPATH_W) '$(srcdir)/tool_parsecfg.c'; fi`
 
+curl-tool_strdup.o: tool_strdup.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT curl-tool_strdup.o -MD -MP -MF $(DEPDIR)/curl-tool_strdup.Tpo -c -o curl-tool_strdup.o `test -f 'tool_strdup.c' || echo '$(srcdir)/'`tool_strdup.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/curl-tool_strdup.Tpo $(DEPDIR)/curl-tool_strdup.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='tool_strdup.c' object='curl-tool_strdup.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o curl-tool_strdup.o `test -f 'tool_strdup.c' || echo '$(srcdir)/'`tool_strdup.c
+
+curl-tool_strdup.obj: tool_strdup.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT curl-tool_strdup.obj -MD -MP -MF $(DEPDIR)/curl-tool_strdup.Tpo -c -o curl-tool_strdup.obj `if test -f 'tool_strdup.c'; then $(CYGPATH_W) 'tool_strdup.c'; else $(CYGPATH_W) '$(srcdir)/tool_strdup.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/curl-tool_strdup.Tpo $(DEPDIR)/curl-tool_strdup.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='tool_strdup.c' object='curl-tool_strdup.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o curl-tool_strdup.obj `if test -f 'tool_strdup.c'; then $(CYGPATH_W) 'tool_strdup.c'; else $(CYGPATH_W) '$(srcdir)/tool_strdup.c'; fi`
+
 curl-tool_setopt.o: tool_setopt.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT curl-tool_setopt.o -MD -MP -MF $(DEPDIR)/curl-tool_setopt.Tpo -c -o curl-tool_setopt.o `test -f 'tool_setopt.c' || echo '$(srcdir)/'`tool_setopt.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/curl-tool_setopt.Tpo $(DEPDIR)/curl-tool_setopt.Po
 curl-tool_setopt.o: tool_setopt.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT curl-tool_setopt.o -MD -MP -MF $(DEPDIR)/curl-tool_setopt.Tpo -c -o curl-tool_setopt.o `test -f 'tool_setopt.c' || echo '$(srcdir)/'`tool_setopt.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/curl-tool_setopt.Tpo $(DEPDIR)/curl-tool_setopt.Po
@@ -1657,67 +1725,68 @@ curl-tool_xattr.obj: tool_xattr.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o curl-tool_xattr.obj `if test -f 'tool_xattr.c'; then $(CYGPATH_W) 'tool_xattr.c'; else $(CYGPATH_W) '$(srcdir)/tool_xattr.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o curl-tool_xattr.obj `if test -f 'tool_xattr.c'; then $(CYGPATH_W) 'tool_xattr.c'; else $(CYGPATH_W) '$(srcdir)/tool_xattr.c'; fi`
 
-curl-strtoofft.o: ../lib/strtoofft.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT curl-strtoofft.o -MD -MP -MF $(DEPDIR)/curl-strtoofft.Tpo -c -o curl-strtoofft.o `test -f '../lib/strtoofft.c' || echo '$(srcdir)/'`../lib/strtoofft.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/curl-strtoofft.Tpo $(DEPDIR)/curl-strtoofft.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../lib/strtoofft.c' object='curl-strtoofft.o' libtool=no @AMDEPBACKSLASH@
+../lib/curl-strtoofft.o: ../lib/strtoofft.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../lib/curl-strtoofft.o -MD -MP -MF ../lib/$(DEPDIR)/curl-strtoofft.Tpo -c -o ../lib/curl-strtoofft.o `test -f '../lib/strtoofft.c' || echo '$(srcdir)/'`../lib/strtoofft.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/curl-strtoofft.Tpo ../lib/$(DEPDIR)/curl-strtoofft.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../lib/strtoofft.c' object='../lib/curl-strtoofft.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o curl-strtoofft.o `test -f '../lib/strtoofft.c' || echo '$(srcdir)/'`../lib/strtoofft.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../lib/curl-strtoofft.o `test -f '../lib/strtoofft.c' || echo '$(srcdir)/'`../lib/strtoofft.c
 
 
-curl-strtoofft.obj: ../lib/strtoofft.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT curl-strtoofft.obj -MD -MP -MF $(DEPDIR)/curl-strtoofft.Tpo -c -o curl-strtoofft.obj `if test -f '../lib/strtoofft.c'; then $(CYGPATH_W) '../lib/strtoofft.c'; else $(CYGPATH_W) '$(srcdir)/../lib/strtoofft.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/curl-strtoofft.Tpo $(DEPDIR)/curl-strtoofft.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../lib/strtoofft.c' object='curl-strtoofft.obj' libtool=no @AMDEPBACKSLASH@
+../lib/curl-strtoofft.obj: ../lib/strtoofft.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../lib/curl-strtoofft.obj -MD -MP -MF ../lib/$(DEPDIR)/curl-strtoofft.Tpo -c -o ../lib/curl-strtoofft.obj `if test -f '../lib/strtoofft.c'; then $(CYGPATH_W) '../lib/strtoofft.c'; else $(CYGPATH_W) '$(srcdir)/../lib/strtoofft.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/curl-strtoofft.Tpo ../lib/$(DEPDIR)/curl-strtoofft.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../lib/strtoofft.c' object='../lib/curl-strtoofft.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o curl-strtoofft.obj `if test -f '../lib/strtoofft.c'; then $(CYGPATH_W) '../lib/strtoofft.c'; else $(CYGPATH_W) '$(srcdir)/../lib/strtoofft.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../lib/curl-strtoofft.obj `if test -f '../lib/strtoofft.c'; then $(CYGPATH_W) '../lib/strtoofft.c'; else $(CYGPATH_W) '$(srcdir)/../lib/strtoofft.c'; fi`
 
 
-curl-strdup.o: ../lib/strdup.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT curl-strdup.o -MD -MP -MF $(DEPDIR)/curl-strdup.Tpo -c -o curl-strdup.o `test -f '../lib/strdup.c' || echo '$(srcdir)/'`../lib/strdup.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/curl-strdup.Tpo $(DEPDIR)/curl-strdup.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../lib/strdup.c' object='curl-strdup.o' libtool=no @AMDEPBACKSLASH@
+../lib/curl-rawstr.o: ../lib/rawstr.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../lib/curl-rawstr.o -MD -MP -MF ../lib/$(DEPDIR)/curl-rawstr.Tpo -c -o ../lib/curl-rawstr.o `test -f '../lib/rawstr.c' || echo '$(srcdir)/'`../lib/rawstr.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/curl-rawstr.Tpo ../lib/$(DEPDIR)/curl-rawstr.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../lib/rawstr.c' object='../lib/curl-rawstr.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o curl-strdup.o `test -f '../lib/strdup.c' || echo '$(srcdir)/'`../lib/strdup.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../lib/curl-rawstr.o `test -f '../lib/rawstr.c' || echo '$(srcdir)/'`../lib/rawstr.c
 
 
-curl-strdup.obj: ../lib/strdup.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT curl-strdup.obj -MD -MP -MF $(DEPDIR)/curl-strdup.Tpo -c -o curl-strdup.obj `if test -f '../lib/strdup.c'; then $(CYGPATH_W) '../lib/strdup.c'; else $(CYGPATH_W) '$(srcdir)/../lib/strdup.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/curl-strdup.Tpo $(DEPDIR)/curl-strdup.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../lib/strdup.c' object='curl-strdup.obj' libtool=no @AMDEPBACKSLASH@
+../lib/curl-rawstr.obj: ../lib/rawstr.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../lib/curl-rawstr.obj -MD -MP -MF ../lib/$(DEPDIR)/curl-rawstr.Tpo -c -o ../lib/curl-rawstr.obj `if test -f '../lib/rawstr.c'; then $(CYGPATH_W) '../lib/rawstr.c'; else $(CYGPATH_W) '$(srcdir)/../lib/rawstr.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/curl-rawstr.Tpo ../lib/$(DEPDIR)/curl-rawstr.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../lib/rawstr.c' object='../lib/curl-rawstr.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o curl-strdup.obj `if test -f '../lib/strdup.c'; then $(CYGPATH_W) '../lib/strdup.c'; else $(CYGPATH_W) '$(srcdir)/../lib/strdup.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../lib/curl-rawstr.obj `if test -f '../lib/rawstr.c'; then $(CYGPATH_W) '../lib/rawstr.c'; else $(CYGPATH_W) '$(srcdir)/../lib/rawstr.c'; fi`
 
 
-curl-rawstr.o: ../lib/rawstr.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT curl-rawstr.o -MD -MP -MF $(DEPDIR)/curl-rawstr.Tpo -c -o curl-rawstr.o `test -f '../lib/rawstr.c' || echo '$(srcdir)/'`../lib/rawstr.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/curl-rawstr.Tpo $(DEPDIR)/curl-rawstr.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../lib/rawstr.c' object='curl-rawstr.o' libtool=no @AMDEPBACKSLASH@
+../lib/curl-nonblock.o: ../lib/nonblock.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../lib/curl-nonblock.o -MD -MP -MF ../lib/$(DEPDIR)/curl-nonblock.Tpo -c -o ../lib/curl-nonblock.o `test -f '../lib/nonblock.c' || echo '$(srcdir)/'`../lib/nonblock.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/curl-nonblock.Tpo ../lib/$(DEPDIR)/curl-nonblock.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../lib/nonblock.c' object='../lib/curl-nonblock.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o curl-rawstr.o `test -f '../lib/rawstr.c' || echo '$(srcdir)/'`../lib/rawstr.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../lib/curl-nonblock.o `test -f '../lib/nonblock.c' || echo '$(srcdir)/'`../lib/nonblock.c
 
 
-curl-rawstr.obj: ../lib/rawstr.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT curl-rawstr.obj -MD -MP -MF $(DEPDIR)/curl-rawstr.Tpo -c -o curl-rawstr.obj `if test -f '../lib/rawstr.c'; then $(CYGPATH_W) '../lib/rawstr.c'; else $(CYGPATH_W) '$(srcdir)/../lib/rawstr.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/curl-rawstr.Tpo $(DEPDIR)/curl-rawstr.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../lib/rawstr.c' object='curl-rawstr.obj' libtool=no @AMDEPBACKSLASH@
+../lib/curl-nonblock.obj: ../lib/nonblock.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../lib/curl-nonblock.obj -MD -MP -MF ../lib/$(DEPDIR)/curl-nonblock.Tpo -c -o ../lib/curl-nonblock.obj `if test -f '../lib/nonblock.c'; then $(CYGPATH_W) '../lib/nonblock.c'; else $(CYGPATH_W) '$(srcdir)/../lib/nonblock.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/curl-nonblock.Tpo ../lib/$(DEPDIR)/curl-nonblock.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../lib/nonblock.c' object='../lib/curl-nonblock.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o curl-rawstr.obj `if test -f '../lib/rawstr.c'; then $(CYGPATH_W) '../lib/rawstr.c'; else $(CYGPATH_W) '$(srcdir)/../lib/rawstr.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../lib/curl-nonblock.obj `if test -f '../lib/nonblock.c'; then $(CYGPATH_W) '../lib/nonblock.c'; else $(CYGPATH_W) '$(srcdir)/../lib/nonblock.c'; fi`
 
 
-curl-nonblock.o: ../lib/nonblock.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT curl-nonblock.o -MD -MP -MF $(DEPDIR)/curl-nonblock.Tpo -c -o curl-nonblock.o `test -f '../lib/nonblock.c' || echo '$(srcdir)/'`../lib/nonblock.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/curl-nonblock.Tpo $(DEPDIR)/curl-nonblock.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../lib/nonblock.c' object='curl-nonblock.o' libtool=no @AMDEPBACKSLASH@
+../lib/curl-warnless.o: ../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../lib/curl-warnless.o -MD -MP -MF ../lib/$(DEPDIR)/curl-warnless.Tpo -c -o ../lib/curl-warnless.o `test -f '../lib/warnless.c' || echo '$(srcdir)/'`../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/curl-warnless.Tpo ../lib/$(DEPDIR)/curl-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../lib/warnless.c' object='../lib/curl-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o curl-nonblock.o `test -f '../lib/nonblock.c' || echo '$(srcdir)/'`../lib/nonblock.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../lib/curl-warnless.o `test -f '../lib/warnless.c' || echo '$(srcdir)/'`../lib/warnless.c
 
 
-curl-nonblock.obj: ../lib/nonblock.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT curl-nonblock.obj -MD -MP -MF $(DEPDIR)/curl-nonblock.Tpo -c -o curl-nonblock.obj `if test -f '../lib/nonblock.c'; then $(CYGPATH_W) '../lib/nonblock.c'; else $(CYGPATH_W) '$(srcdir)/../lib/nonblock.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/curl-nonblock.Tpo $(DEPDIR)/curl-nonblock.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../lib/nonblock.c' object='curl-nonblock.obj' libtool=no @AMDEPBACKSLASH@
+../lib/curl-warnless.obj: ../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../lib/curl-warnless.obj -MD -MP -MF ../lib/$(DEPDIR)/curl-warnless.Tpo -c -o ../lib/curl-warnless.obj `if test -f '../lib/warnless.c'; then $(CYGPATH_W) '../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/curl-warnless.Tpo ../lib/$(DEPDIR)/curl-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../lib/warnless.c' object='../lib/curl-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o curl-nonblock.obj `if test -f '../lib/nonblock.c'; then $(CYGPATH_W) '../lib/nonblock.c'; else $(CYGPATH_W) '$(srcdir)/../lib/nonblock.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../lib/curl-warnless.obj `if test -f '../lib/warnless.c'; then $(CYGPATH_W) '../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../lib/warnless.c'; fi`
 
 mostlyclean-libtool:
        -rm -f *.lo
 
 clean-libtool:
        -rm -rf .libs _libs
 
 mostlyclean-libtool:
        -rm -f *.lo
 
 clean-libtool:
        -rm -rf .libs _libs
+       -rm -rf ../lib/.libs ../lib/_libs
 
 ID: $(am__tagged_files)
        $(am__define_uniq_tagged_files); mkid -fID $$unique
 
 ID: $(am__tagged_files)
        $(am__define_uniq_tagged_files); mkid -fID $$unique
@@ -1838,6 +1907,8 @@ clean-generic:
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
        -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
        -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+       -rm -f ../lib/$(DEPDIR)/$(am__dirstamp)
+       -rm -f ../lib/$(am__dirstamp)
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
@@ -1849,7 +1920,7 @@ clean-am: clean-binPROGRAMS clean-generic clean-libtool \
        clean-noinstLTLIBRARIES mostlyclean-am
 
 distclean: distclean-am
        clean-noinstLTLIBRARIES mostlyclean-am
 
 distclean: distclean-am
-       -rm -rf ./$(DEPDIR)
+       -rm -rf ../lib/$(DEPDIR) ./$(DEPDIR)
        -rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
        distclean-tags
        -rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
        distclean-tags
@@ -1895,7 +1966,7 @@ install-ps-am:
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
-       -rm -rf ./$(DEPDIR)
+       -rm -rf ../lib/$(DEPDIR) ./$(DEPDIR)
        -rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
        -rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
@@ -1932,6 +2003,9 @@ uninstall-am: uninstall-binPROGRAMS
        tags tags-am uninstall uninstall-am uninstall-binPROGRAMS
 
 
        tags tags-am uninstall uninstall-am uninstall-binPROGRAMS
 
 
+# remove targets if the command fails
+.DELETE_ON_ERROR:
+
 # Here are the stuff to create a built-in manual
 
 # This generates the tool_hugehelp.c file in both uncompressed and
 # Here are the stuff to create a built-in manual
 
 # This generates the tool_hugehelp.c file in both uncompressed and
index cd890ac..401a635 100644 (file)
@@ -9,11 +9,18 @@
 
 # libcurl has sources that provide functions named curlx_* that aren't part of
 # the official API, but we re-use the code here to avoid duplication.
 
 # libcurl has sources that provide functions named curlx_* that aren't part of
 # the official API, but we re-use the code here to avoid duplication.
-CURLX_ONES = \
+CURLX_CFILES = \
        ../lib/strtoofft.c \
        ../lib/strtoofft.c \
-       ../lib/strdup.c \
        ../lib/rawstr.c \
        ../lib/rawstr.c \
-       ../lib/nonblock.c
+       ../lib/nonblock.c \
+       ../lib/warnless.c
+
+CURLX_HFILES = \
+       ../lib/curl_setup.h \
+       ../lib/strtoofft.h \
+       ../lib/rawstr.h \
+       ../lib/nonblock.h \
+       ../lib/warnless.h
 
 CURL_CFILES = \
        tool_binmode.c \
 
 CURL_CFILES = \
        tool_binmode.c \
@@ -46,6 +53,7 @@ CURL_CFILES = \
        tool_panykey.c \
        tool_paramhlp.c \
        tool_parsecfg.c \
        tool_panykey.c \
        tool_paramhlp.c \
        tool_parsecfg.c \
+       tool_strdup.c \
        tool_setopt.c \
        tool_sleep.c \
        tool_urlglob.c \
        tool_setopt.c \
        tool_sleep.c \
        tool_urlglob.c \
@@ -90,6 +98,7 @@ CURL_HFILES = \
        tool_setopt.h \
        tool_setup.h \
        tool_sleep.h \
        tool_setopt.h \
        tool_setup.h \
        tool_sleep.h \
+       tool_strdup.h \
        tool_urlglob.h \
        tool_util.h \
        tool_version.h \
        tool_urlglob.h \
        tool_util.h \
        tool_version.h \
@@ -98,5 +107,7 @@ CURL_HFILES = \
        tool_writeout.h \
        tool_xattr.h
 
        tool_writeout.h \
        tool_xattr.h
 
-curl_SOURCES = $(CURL_CFILES) $(CURLX_ONES) $(CURL_HFILES)
+CURL_RCFILES = curl.rc
+
+curl_SOURCES = $(CURL_CFILES) $(CURLX_CFILES) $(CURL_HFILES)
 
 
index b4b1b0b..e54175c 100644 (file)
@@ -18,7 +18,7 @@ ZLIB_PATH = ../../zlib-1.2.8
 endif
 # Edit the path below to point to the base of your OpenSSL package.
 ifndef OPENSSL_PATH
 endif
 # Edit the path below to point to the base of your OpenSSL package.
 ifndef OPENSSL_PATH
-OPENSSL_PATH = ../../openssl-0.9.8y
+OPENSSL_PATH = ../../openssl-0.9.8zc
 endif
 # Edit the path below to point to the base of your LibSSH2 package.
 ifndef LIBSSH2_PATH
 endif
 # Edit the path below to point to the base of your LibSSH2 package.
 ifndef LIBSSH2_PATH
@@ -54,6 +54,10 @@ endif
 ifndef LDAP_SDK
 LDAP_SDK = c:/novell/ndk/cldapsdk/win32
 endif
 ifndef LDAP_SDK
 LDAP_SDK = c:/novell/ndk/cldapsdk/win32
 endif
+# Edit the path below to point to the base of your nghttp2 package.
+ifndef NGHTTP2_PATH
+NGHTTP2_PATH = ../../nghttp2-0.6.7
+endif
 
 PROOT = ..
 
 
 PROOT = ..
 
@@ -62,27 +66,37 @@ ifndef LIBCARES_PATH
 LIBCARES_PATH = $(PROOT)/ares
 endif
 
 LIBCARES_PATH = $(PROOT)/ares
 endif
 
-# Edit the var below to set to your architecture or set environment var.
-ifndef ARCH
-ARCH = w32
-endif
-
 CC     = $(CROSSPREFIX)gcc
 CFLAGS = -g -O2 -Wall
 CFLAGS += -fno-strict-aliasing
 CC     = $(CROSSPREFIX)gcc
 CFLAGS = -g -O2 -Wall
 CFLAGS += -fno-strict-aliasing
-ifeq ($(ARCH),w64)
-CFLAGS += -D_AMD64_
-endif
 # comment LDFLAGS below to keep debug info
 LDFLAGS        = -s
 AR     = $(CROSSPREFIX)ar
 RC     = $(CROSSPREFIX)windres
 # comment LDFLAGS below to keep debug info
 LDFLAGS        = -s
 AR     = $(CROSSPREFIX)ar
 RC     = $(CROSSPREFIX)windres
-RCFLAGS        = --include-dir=$(PROOT)/include -O COFF -i
+RCFLAGS        = --include-dir=$(PROOT)/include -O COFF
+STRIP   = $(CROSSPREFIX)strip -g
 
 # We may need these someday
 # PERL = perl
 # NROFF = nroff
 
 
 # We may need these someday
 # PERL = perl
 # NROFF = nroff
 
+# Set environment var ARCH to your architecture to override autodetection.
+ifndef ARCH
+ifeq ($(findstring x86_64,$(shell $(CC) -dumpmachine)),x86_64)
+ARCH    = w64
+else
+ARCH    = w32
+endif
+endif
+
+ifeq ($(ARCH),w64)
+CFLAGS += -D_AMD64_
+RCFLAGS += -F pe-x86-64
+else
+CFLAGS += -m32
+RCFLAGS += -F pe-i386
+endif
+
 # Platform-dependent helper tool macros
 ifeq ($(findstring /sh,$(SHELL)),/sh)
 DEL    = rm -f $1
 # Platform-dependent helper tool macros
 ifeq ($(findstring /sh,$(SHELL)),/sh)
 DEL    = rm -f $1
@@ -148,9 +162,6 @@ endif
 ifeq ($(findstring -sspi,$(CFG)),-sspi)
 SSPI = 1
 endif
 ifeq ($(findstring -sspi,$(CFG)),-sspi)
 SSPI = 1
 endif
-ifeq ($(findstring -spnego,$(CFG)),-spnego)
-SPNEGO = 1
-endif
 ifeq ($(findstring -ldaps,$(CFG)),-ldaps)
 LDAPS = 1
 endif
 ifeq ($(findstring -ldaps,$(CFG)),-ldaps)
 LDAPS = 1
 endif
@@ -164,6 +175,9 @@ ifeq ($(findstring -winssl,$(CFG)),-winssl)
 WINSSL = 1
 SSPI = 1
 endif
 WINSSL = 1
 SSPI = 1
 endif
+ifeq ($(findstring -nghttp2,$(CFG)),-nghttp2)
+NGHTTP2 = 1
+endif
 
 INCLUDES = -I. -I../include -I../lib
 
 
 INCLUDES = -I. -I../include -I../lib
 
@@ -191,6 +205,10 @@ ifdef RTMP
   CFLAGS += -DUSE_LIBRTMP
   curl_LDADD += -L"$(LIBRTMP_PATH)/librtmp" -lrtmp -lwinmm
 endif
   CFLAGS += -DUSE_LIBRTMP
   curl_LDADD += -L"$(LIBRTMP_PATH)/librtmp" -lrtmp -lwinmm
 endif
+ifdef NGHTTP2
+  CFLAGS += -DUSE_NGHTTP2
+  curl_LDADD += -L"$(NGHTTP2_PATH)/lib" -lnghttp2
+endif
 ifdef SSH2
   CFLAGS += -DUSE_LIBSSH2 -DHAVE_LIBSSH2_H
   curl_LDADD += -L"$(LIBSSH2_PATH)/win32" -lssh2
 ifdef SSH2
   CFLAGS += -DUSE_LIBSSH2 -DHAVE_LIBSSH2_H
   curl_LDADD += -L"$(LIBSSH2_PATH)/win32" -lssh2
@@ -258,9 +276,6 @@ ifdef SSPI
     CFLAGS += -DUSE_SCHANNEL
   endif
 endif
     CFLAGS += -DUSE_SCHANNEL
   endif
 endif
-ifdef SPNEGO
-  CFLAGS += -DHAVE_SPNEGO
-endif
 ifdef IPV6
   CFLAGS += -DENABLE_IPV6 -D_WIN32_WINNT=0x0501
 endif
 ifdef IPV6
   CFLAGS += -DENABLE_IPV6 -D_WIN32_WINNT=0x0501
 endif
@@ -287,7 +302,7 @@ include Makefile.inc
 
 curl_PROGRAMS = curl.exe
 curl_OBJECTS := $(patsubst %.c,%.o,$(strip $(CURL_CFILES)))
 
 curl_PROGRAMS = curl.exe
 curl_OBJECTS := $(patsubst %.c,%.o,$(strip $(CURL_CFILES)))
-curlx_OBJECTS := $(patsubst %.c,%.o,$(notdir $(strip $(CURLX_ONES))))
+curlx_OBJECTS := $(patsubst %.c,%.o,$(notdir $(strip $(CURLX_CFILES))))
 ifdef DYN
 curl_OBJECTS += $(curlx_OBJECTS)
 vpath %.c $(PROOT)/lib
 ifdef DYN
 curl_OBJECTS += $(curlx_OBJECTS)
 vpath %.c $(PROOT)/lib
@@ -315,7 +330,7 @@ tool_hugehelp.c:
        $(CC) $(INCLUDES) $(CFLAGS) -c $<
 
 %.res: %.rc
        $(CC) $(INCLUDES) $(CFLAGS) -c $<
 
 %.res: %.rc
-       $(RC) $(RCFLAGS) $< -o $@
+       $(RC) $(RCFLAGS) -i $< -o $@
 
 clean:
 ifeq "$(wildcard tool_hugehelp.c.cvs)" "tool_hugehelp.c.cvs"
 
 clean:
 ifeq "$(wildcard tool_hugehelp.c.cvs)" "tool_hugehelp.c.cvs"
index 0ecc753..b6b4861 100644 (file)
@@ -19,7 +19,7 @@ endif
 
 # Edit the path below to point to the base of your OpenSSL package.
 ifndef OPENSSL_PATH
 
 # Edit the path below to point to the base of your OpenSSL package.
 ifndef OPENSSL_PATH
-OPENSSL_PATH = ../../openssl-0.9.8y
+OPENSSL_PATH = ../../openssl-0.9.8zc
 endif
 
 # Edit the path below to point to the base of your LibSSH2 package.
 endif
 
 # Edit the path below to point to the base of your LibSSH2 package.
@@ -42,6 +42,11 @@ ifndef LIBRTMP_PATH
 LIBRTMP_PATH = ../../librtmp-2.3
 endif
 
 LIBRTMP_PATH = ../../librtmp-2.3
 endif
 
+# Edit the path below to point to the base of your nghttp2 package.
+ifndef NGHTTP2_PATH
+NGHTTP2_PATH = ../../nghttp2-0.6.7
+endif
+
 # Edit the path below to point to the base of your fbopenssl package.
 ifndef FBOPENSSL_PATH
 FBOPENSSL_PATH = ../../fbopenssl-0.4
 # Edit the path below to point to the base of your fbopenssl package.
 ifndef FBOPENSSL_PATH
 FBOPENSSL_PATH = ../../fbopenssl-0.4
@@ -226,14 +231,13 @@ endif
 ifeq ($(findstring -idn,$(CFG)),-idn)
 WITH_IDN = 1
 endif
 ifeq ($(findstring -idn,$(CFG)),-idn)
 WITH_IDN = 1
 endif
-ifeq ($(findstring -spnego,$(CFG)),-spnego)
-WITH_SPNEGO = 1
-WITH_SSL = 1
-endif
 ifeq ($(findstring -metalink,$(CFG)),-metalink)
 WITH_METALINK = 1
 WITH_SSL = 1
 endif
 ifeq ($(findstring -metalink,$(CFG)),-metalink)
 WITH_METALINK = 1
 WITH_SSL = 1
 endif
+ifeq ($(findstring -nghttp2,$(CFG)),-nghttp2)
+WITH_NGHTTP2 = 1
+endif
 ifeq ($(findstring -ipv6,$(CFG)),-ipv6)
 ENABLE_IPV6 = 1
 endif
 ifeq ($(findstring -ipv6,$(CFG)),-ipv6)
 ENABLE_IPV6 = 1
 endif
@@ -267,10 +271,6 @@ ifdef WITH_SSL
        LDLIBS += $(OPENSSL_PATH)/out_nw_$(LIBARCH_L)/ssl.$(LIBEXT)
        LDLIBS += $(OPENSSL_PATH)/out_nw_$(LIBARCH_L)/crypto.$(LIBEXT)
        IMPORTS += GetProcessSwitchCount RunningProcess
        LDLIBS += $(OPENSSL_PATH)/out_nw_$(LIBARCH_L)/ssl.$(LIBEXT)
        LDLIBS += $(OPENSSL_PATH)/out_nw_$(LIBARCH_L)/crypto.$(LIBEXT)
        IMPORTS += GetProcessSwitchCount RunningProcess
-ifdef WITH_SPNEGO
-       # INCLUDES += -I$(FBOPENSSL_PATH)/include
-       LDLIBS += $(FBOPENSSL_PATH)/nw/fbopenssl.$(LIBEXT)
-endif
 else
 ifdef WITH_AXTLS
        # INCLUDES += -I$(AXTLS_PATH)/inc
 else
 ifdef WITH_AXTLS
        # INCLUDES += -I$(AXTLS_PATH)/inc
@@ -295,6 +295,10 @@ ifdef WITH_IDN
        # INCLUDES += -I$(LIBIDN_PATH)/include
        LDLIBS += $(LIBIDN_PATH)/lib/libidn.$(LIBEXT)
 endif
        # INCLUDES += -I$(LIBIDN_PATH)/include
        LDLIBS += $(LIBIDN_PATH)/lib/libidn.$(LIBEXT)
 endif
+ifdef WITH_NGHTTP2
+       INCLUDES += -I$(NGHTTP2_PATH)/include
+       LDLIBS += $(NGHTTP2_PATH)/lib/libnghttp2.$(LIBEXT)
+endif
 ifdef WITH_METALINK
        CFLAGS += -DUSE_METALINK
        INCLUDES += -I$(OPENSSL_PATH)/outinc_nw_$(LIBARCH_L)
 ifdef WITH_METALINK
        CFLAGS += -DUSE_METALINK
        INCLUDES += -I$(OPENSSL_PATH)/outinc_nw_$(LIBARCH_L)
@@ -353,7 +357,7 @@ endif
 # Makefile.inc provides the CSOURCES and HHEADERS defines
 include Makefile.inc
 
 # Makefile.inc provides the CSOURCES and HHEADERS defines
 include Makefile.inc
 
-OBJX   := $(patsubst %.c,$(OBJDIR)/%.o,$(notdir $(strip $(CURLX_ONES))))
+OBJX   := $(patsubst %.c,$(OBJDIR)/%.o,$(notdir $(strip $(CURLX_CFILES))))
 OBJS   := $(patsubst %.c,$(OBJDIR)/%.o,$(strip $(CURL_CFILES)))
 ifndef LINK_STATIC
 OBJS   += $(OBJX)
 OBJS   := $(patsubst %.c,$(OBJDIR)/%.o,$(strip $(CURL_CFILES)))
 ifndef LINK_STATIC
 OBJS   += $(OBJX)
index 54c100c..348a763 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___\r
 #                             \___|\___/|_| \_\_____|\r
 #\r
 #                            | (__| |_| |  _ <| |___\r
 #                             \___|\___/|_| \_\_____|\r
 #\r
-# Copyright (C) 1999 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.\r
+# Copyright (C) 1999 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.\r
 #\r
 # This software is licensed as described in the file COPYING, which\r
 # you should have received as part of this distribution. The terms\r
 #\r
 # This software is licensed as described in the file COPYING, which\r
 # you should have received as part of this distribution. The terms\r
@@ -56,7 +56,7 @@ PROGRAM_NAME = curl.exe
 \r
 \r
 !IFNDEF OPENSSL_PATH\r
 \r
 \r
 !IFNDEF OPENSSL_PATH\r
-OPENSSL_PATH = ../../openssl-0.9.8y\r
+OPENSSL_PATH = ../../openssl-0.9.8zc\r
 !ENDIF\r
 \r
 !IFNDEF ZLIB_PATH\r
 !ENDIF\r
 \r
 !IFNDEF ZLIB_PATH\r
@@ -90,19 +90,24 @@ WINDOWS_SDK_PATH = "$(PROGRAMFILES)\Microsoft SDK"
 ########################################################\r
 ## Nothing more to do below this line!\r
 \r
 ########################################################\r
 ## Nothing more to do below this line!\r
 \r
-ZLIB_CFLAGS   = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)"\r
-ZLIB_LFLAGS   = "/LIBPATH:$(ZLIB_PATH)"\r
-ZLIB_LIBS     = zlib.lib\r
-ZLIB_IMP_LIBS = zdll.lib\r
+ZLIB_CFLAGS    = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)"\r
+ZLIB_LFLAGS    = "/LIBPATH:$(ZLIB_PATH)"\r
+ZLIB_LIBS      = zlib.lib\r
+ZLIB_IMP_LIBS  = zdll.lib\r
 \r
 SSL_CFLAGS     = /DUSE_SSLEAY\r
 SSL_LFLAGS     = /LIBPATH:"$(OPENSSL_PATH)/out32"\r
 SSL_IMP_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32dll"\r
 SSL_LIBS       = libeay32.lib ssleay32.lib gdi32.lib user32.lib\r
 \r
 SSL_CFLAGS     = /DUSE_SSLEAY\r
 SSL_LFLAGS     = /LIBPATH:"$(OPENSSL_PATH)/out32"\r
 SSL_IMP_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32dll"\r
 SSL_LIBS       = libeay32.lib ssleay32.lib gdi32.lib user32.lib\r
+WINLIBS        = ws2_32.lib wldap32.lib advapi32.lib\r
 \r
 WINSSL_CFLAGS  = /DUSE_SCHANNEL\r
 #WINSSL_LIBS    = gdi32.lib user32.lib\r
 \r
 \r
 WINSSL_CFLAGS  = /DUSE_SCHANNEL\r
 #WINSSL_LIBS    = gdi32.lib user32.lib\r
 \r
+!IFDEF USE_IDN\r
+WINLIBS        = $(WINLIBS) normaliz.lib\r
+!ENDIF\r
+\r
 # Runtime library configuration\r
 RTLIB   = /MD\r
 RTLIBD  = /MDd\r
 # Runtime library configuration\r
 RTLIB   = /MD\r
 RTLIBD  = /MDd\r
@@ -139,6 +144,7 @@ RELEASE_OBJS= \
        nonblockr.obj \\r
        rawstrr.obj \\r
        strtoofftr.obj \\r
        nonblockr.obj \\r
        rawstrr.obj \\r
        strtoofftr.obj \\r
+       warnless.obj \\r
        tool_binmoder.obj \\r
        tool_bnamer.obj \\r
        tool_cb_dbgr.obj \\r
        tool_binmoder.obj \\r
        tool_bnamer.obj \\r
        tool_cb_dbgr.obj \\r
@@ -183,6 +189,7 @@ DEBUG_OBJS= \
        nonblockd.obj \\r
        rawstrd.obj \\r
        strtoofftd.obj \\r
        nonblockd.obj \\r
        rawstrd.obj \\r
        strtoofftd.obj \\r
+       warnlessd.obj \\r
        tool_binmoded.obj \\r
        tool_bnamed.obj \\r
        tool_cb_dbgd.obj \\r
        tool_binmoded.obj \\r
        tool_bnamed.obj \\r
        tool_cb_dbgd.obj \\r
@@ -338,9 +345,8 @@ LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG) $(SSL_LIBS) $(ZLIB_IMP_LIBS)
 LFLAGS         = $(LFLAGS) $(SSL_IMP_LFLAGS) $(ZLIB_LFLAGS)\r
 !ENDIF\r
 \r
 LFLAGS         = $(LFLAGS) $(SSL_IMP_LFLAGS) $(ZLIB_LFLAGS)\r
 !ENDIF\r
 \r
-\r
-LINKLIBS       = $(LINKLIBS) ws2_32.lib wldap32.lib advapi32.lib\r
-LINKLIBS_DEBUG = $(LINKLIBS_DEBUG) ws2_32.lib wldap32.lib advapi32.lib\r
+LINKLIBS       = $(LINKLIBS) $(WINLIBS)\r
+LINKLIBS_DEBUG = $(LINKLIBS_DEBUG) $(WINLIBS)\r
 \r
 all : release\r
 \r
 \r
 all : release\r
 \r
@@ -359,6 +365,8 @@ rawstrr.obj: ../lib/rawstr.c
        $(CCR) $(CFLAGS) /Fo"$@" ../lib/rawstr.c\r
 strtoofftr.obj: ../lib/strtoofft.c\r
        $(CCR) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c\r
        $(CCR) $(CFLAGS) /Fo"$@" ../lib/rawstr.c\r
 strtoofftr.obj: ../lib/strtoofft.c\r
        $(CCR) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c\r
+warnless.obj: ../lib/warnless.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" ../lib/warnless.c\r
 tool_binmoder.obj: tool_binmode.c\r
        $(CCR) $(CFLAGS) /Fo"$@" tool_binmode.c\r
 tool_bnamer.obj: tool_bname.c\r
 tool_binmoder.obj: tool_binmode.c\r
        $(CCR) $(CFLAGS) /Fo"$@" tool_binmode.c\r
 tool_bnamer.obj: tool_bname.c\r
@@ -445,6 +453,8 @@ rawstrd.obj: ../lib/rawstr.c
        $(CCD) $(CFLAGS) /Fo"$@" ../lib/rawstr.c\r
 strtoofftd.obj: ../lib/strtoofft.c\r
        $(CCD) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c\r
        $(CCD) $(CFLAGS) /Fo"$@" ../lib/rawstr.c\r
 strtoofftd.obj: ../lib/strtoofft.c\r
        $(CCD) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c\r
+warnlessd.obj: ../lib/warnless.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" ../lib/warnless.c\r
 tool_binmoded.obj: tool_binmode.c\r
        $(CCD) $(CFLAGS) /Fo"$@" tool_binmode.c\r
 tool_bnamed.obj: tool_bname.c\r
 tool_binmoded.obj: tool_binmode.c\r
        $(CCD) $(CFLAGS) /Fo"$@" tool_binmode.c\r
 tool_bnamed.obj: tool_bname.c\r
index 48331de..c8693af 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___\r
 #                             \___|\___/|_| \_\_____|\r
 #\r
 #                            | (__| |_| |  _ <| |___\r
 #                             \___|\___/|_| \_\_____|\r
 #\r
-# Copyright (C) 1999 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.\r
+# Copyright (C) 1999 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.\r
 #\r
 # This software is licensed as described in the file COPYING, which\r
 # you should have received as part of this distribution. The terms\r
 #\r
 # This software is licensed as described in the file COPYING, which\r
 # you should have received as part of this distribution. The terms\r
@@ -56,7 +56,7 @@ PROGRAM_NAME = curl.exe
 \r
 \r
 !IFNDEF OPENSSL_PATH\r
 \r
 \r
 !IFNDEF OPENSSL_PATH\r
-OPENSSL_PATH = ../../openssl-0.9.8y\r
+OPENSSL_PATH = ../../openssl-0.9.8zc\r
 !ENDIF\r
 \r
 !IFNDEF ZLIB_PATH\r
 !ENDIF\r
 \r
 !IFNDEF ZLIB_PATH\r
@@ -90,19 +90,24 @@ WINDOWS_SDK_PATH = "$(PROGRAMFILES)\Microsoft SDK"
 ########################################################\r
 ## Nothing more to do below this line!\r
 \r
 ########################################################\r
 ## Nothing more to do below this line!\r
 \r
-ZLIB_CFLAGS   = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)"\r
-ZLIB_LFLAGS   = "/LIBPATH:$(ZLIB_PATH)"\r
-ZLIB_LIBS     = zlib.lib\r
-ZLIB_IMP_LIBS = zdll.lib\r
+ZLIB_CFLAGS    = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)"\r
+ZLIB_LFLAGS    = "/LIBPATH:$(ZLIB_PATH)"\r
+ZLIB_LIBS      = zlib.lib\r
+ZLIB_IMP_LIBS  = zdll.lib\r
 \r
 SSL_CFLAGS     = /DUSE_SSLEAY\r
 SSL_LFLAGS     = /LIBPATH:"$(OPENSSL_PATH)/out32"\r
 SSL_IMP_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32dll"\r
 SSL_LIBS       = libeay32.lib ssleay32.lib gdi32.lib user32.lib\r
 \r
 SSL_CFLAGS     = /DUSE_SSLEAY\r
 SSL_LFLAGS     = /LIBPATH:"$(OPENSSL_PATH)/out32"\r
 SSL_IMP_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32dll"\r
 SSL_LIBS       = libeay32.lib ssleay32.lib gdi32.lib user32.lib\r
+WINLIBS        = ws2_32.lib wldap32.lib advapi32.lib\r
 \r
 WINSSL_CFLAGS  = /DUSE_SCHANNEL\r
 #WINSSL_LIBS    = gdi32.lib user32.lib\r
 \r
 \r
 WINSSL_CFLAGS  = /DUSE_SCHANNEL\r
 #WINSSL_LIBS    = gdi32.lib user32.lib\r
 \r
+!IFDEF USE_IDN\r
+WINLIBS        = $(WINLIBS) normaliz.lib\r
+!ENDIF\r
+\r
 # Runtime library configuration\r
 RTLIB   = /MD\r
 RTLIBD  = /MDd\r
 # Runtime library configuration\r
 RTLIB   = /MD\r
 RTLIBD  = /MDd\r
@@ -139,6 +144,7 @@ RELEASE_OBJS= \
        nonblockr.obj \\r
        rawstrr.obj \\r
        strtoofftr.obj \\r
        nonblockr.obj \\r
        rawstrr.obj \\r
        strtoofftr.obj \\r
+       warnless.obj \\r
        tool_binmoder.obj \\r
        tool_bnamer.obj \\r
        tool_cb_dbgr.obj \\r
        tool_binmoder.obj \\r
        tool_bnamer.obj \\r
        tool_cb_dbgr.obj \\r
@@ -183,6 +189,7 @@ DEBUG_OBJS= \
        nonblockd.obj \\r
        rawstrd.obj \\r
        strtoofftd.obj \\r
        nonblockd.obj \\r
        rawstrd.obj \\r
        strtoofftd.obj \\r
+       warnlessd.obj \\r
        tool_binmoded.obj \\r
        tool_bnamed.obj \\r
        tool_cb_dbgd.obj \\r
        tool_binmoded.obj \\r
        tool_bnamed.obj \\r
        tool_cb_dbgd.obj \\r
@@ -338,9 +345,8 @@ LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG) $(SSL_LIBS) $(ZLIB_IMP_LIBS)
 LFLAGS         = $(LFLAGS) $(SSL_IMP_LFLAGS) $(ZLIB_LFLAGS)\r
 !ENDIF\r
 \r
 LFLAGS         = $(LFLAGS) $(SSL_IMP_LFLAGS) $(ZLIB_LFLAGS)\r
 !ENDIF\r
 \r
-\r
-LINKLIBS       = $(LINKLIBS) ws2_32.lib wldap32.lib advapi32.lib\r
-LINKLIBS_DEBUG = $(LINKLIBS_DEBUG) ws2_32.lib wldap32.lib advapi32.lib\r
+LINKLIBS       = $(LINKLIBS) $(WINLIBS)\r
+LINKLIBS_DEBUG = $(LINKLIBS_DEBUG) $(WINLIBS)\r
 \r
 all : release\r
 \r
 \r
 all : release\r
 \r
@@ -359,6 +365,8 @@ rawstrr.obj: ../lib/rawstr.c
        $(CCR) $(CFLAGS) /Fo"$@" ../lib/rawstr.c\r
 strtoofftr.obj: ../lib/strtoofft.c\r
        $(CCR) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c\r
        $(CCR) $(CFLAGS) /Fo"$@" ../lib/rawstr.c\r
 strtoofftr.obj: ../lib/strtoofft.c\r
        $(CCR) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c\r
+warnless.obj: ../lib/warnless.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" ../lib/warnless.c\r
 tool_binmoder.obj: tool_binmode.c\r
        $(CCR) $(CFLAGS) /Fo"$@" tool_binmode.c\r
 tool_bnamer.obj: tool_bname.c\r
 tool_binmoder.obj: tool_binmode.c\r
        $(CCR) $(CFLAGS) /Fo"$@" tool_binmode.c\r
 tool_bnamer.obj: tool_bname.c\r
@@ -445,6 +453,8 @@ rawstrd.obj: ../lib/rawstr.c
        $(CCD) $(CFLAGS) /Fo"$@" ../lib/rawstr.c\r
 strtoofftd.obj: ../lib/strtoofft.c\r
        $(CCD) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c\r
        $(CCD) $(CFLAGS) /Fo"$@" ../lib/rawstr.c\r
 strtoofftd.obj: ../lib/strtoofft.c\r
        $(CCD) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c\r
+warnlessd.obj: ../lib/warnless.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" ../lib/warnless.c\r
 tool_binmoded.obj: tool_binmode.c\r
        $(CCD) $(CFLAGS) /Fo"$@" tool_binmode.c\r
 tool_bnamed.obj: tool_bname.c\r
 tool_binmoded.obj: tool_binmode.c\r
        $(CCD) $(CFLAGS) /Fo"$@" tool_binmode.c\r
 tool_bnamed.obj: tool_bname.c\r
index c8f1587..7243799 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___\r
 #                             \___|\___/|_| \_\_____|\r
 #\r
 #                            | (__| |_| |  _ <| |___\r
 #                             \___|\___/|_| \_\_____|\r
 #\r
-# Copyright (C) 1999 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.\r
+# Copyright (C) 1999 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.\r
 #\r
 # This software is licensed as described in the file COPYING, which\r
 # you should have received as part of this distribution. The terms\r
 #\r
 # This software is licensed as described in the file COPYING, which\r
 # you should have received as part of this distribution. The terms\r
@@ -56,7 +56,7 @@ PROGRAM_NAME = curl.exe
 \r
 \r
 !IFNDEF OPENSSL_PATH\r
 \r
 \r
 !IFNDEF OPENSSL_PATH\r
-OPENSSL_PATH = ../../openssl-0.9.8y\r
+OPENSSL_PATH = ../../openssl-0.9.8zc\r
 !ENDIF\r
 \r
 !IFNDEF ZLIB_PATH\r
 !ENDIF\r
 \r
 !IFNDEF ZLIB_PATH\r
@@ -90,19 +90,24 @@ WINDOWS_SDK_PATH = "$(PROGRAMFILES)\Microsoft SDK"
 ########################################################\r
 ## Nothing more to do below this line!\r
 \r
 ########################################################\r
 ## Nothing more to do below this line!\r
 \r
-ZLIB_CFLAGS   = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)"\r
-ZLIB_LFLAGS   = "/LIBPATH:$(ZLIB_PATH)"\r
-ZLIB_LIBS     = zlib.lib\r
-ZLIB_IMP_LIBS = zdll.lib\r
+ZLIB_CFLAGS    = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)"\r
+ZLIB_LFLAGS    = "/LIBPATH:$(ZLIB_PATH)"\r
+ZLIB_LIBS      = zlib.lib\r
+ZLIB_IMP_LIBS  = zdll.lib\r
 \r
 SSL_CFLAGS     = /DUSE_SSLEAY\r
 SSL_LFLAGS     = /LIBPATH:"$(OPENSSL_PATH)/out32"\r
 SSL_IMP_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32dll"\r
 SSL_LIBS       = libeay32.lib ssleay32.lib gdi32.lib user32.lib\r
 \r
 SSL_CFLAGS     = /DUSE_SSLEAY\r
 SSL_LFLAGS     = /LIBPATH:"$(OPENSSL_PATH)/out32"\r
 SSL_IMP_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32dll"\r
 SSL_LIBS       = libeay32.lib ssleay32.lib gdi32.lib user32.lib\r
+WINLIBS        = ws2_32.lib bufferoverflowu.lib wldap32.lib advapi32.lib\r
 \r
 WINSSL_CFLAGS  = /DUSE_SCHANNEL\r
 #WINSSL_LIBS    = gdi32.lib user32.lib\r
 \r
 \r
 WINSSL_CFLAGS  = /DUSE_SCHANNEL\r
 #WINSSL_LIBS    = gdi32.lib user32.lib\r
 \r
+!IFDEF USE_IDN\r
+WINLIBS        = $(WINLIBS) normaliz.lib\r
+!ENDIF\r
+\r
 # Runtime library configuration\r
 RTLIB   = /MD\r
 RTLIBD  = /MDd\r
 # Runtime library configuration\r
 RTLIB   = /MD\r
 RTLIBD  = /MDd\r
@@ -139,6 +144,7 @@ RELEASE_OBJS= \
        nonblockr.obj \\r
        rawstrr.obj \\r
        strtoofftr.obj \\r
        nonblockr.obj \\r
        rawstrr.obj \\r
        strtoofftr.obj \\r
+       warnless.obj \\r
        tool_binmoder.obj \\r
        tool_bnamer.obj \\r
        tool_cb_dbgr.obj \\r
        tool_binmoder.obj \\r
        tool_bnamer.obj \\r
        tool_cb_dbgr.obj \\r
@@ -183,6 +189,7 @@ DEBUG_OBJS= \
        nonblockd.obj \\r
        rawstrd.obj \\r
        strtoofftd.obj \\r
        nonblockd.obj \\r
        rawstrd.obj \\r
        strtoofftd.obj \\r
+       warnlessd.obj \\r
        tool_binmoded.obj \\r
        tool_bnamed.obj \\r
        tool_cb_dbgd.obj \\r
        tool_binmoded.obj \\r
        tool_bnamed.obj \\r
        tool_cb_dbgd.obj \\r
@@ -338,9 +345,8 @@ LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG) $(SSL_LIBS) $(ZLIB_IMP_LIBS)
 LFLAGS         = $(LFLAGS) $(SSL_IMP_LFLAGS) $(ZLIB_LFLAGS)\r
 !ENDIF\r
 \r
 LFLAGS         = $(LFLAGS) $(SSL_IMP_LFLAGS) $(ZLIB_LFLAGS)\r
 !ENDIF\r
 \r
-\r
-LINKLIBS       = $(LINKLIBS) ws2_32.lib bufferoverflowu.lib wldap32.lib advapi32.lib\r
-LINKLIBS_DEBUG = $(LINKLIBS_DEBUG) ws2_32.lib bufferoverflowu.lib wldap32.lib advapi32.lib\r
+LINKLIBS       = $(LINKLIBS) $(WINLIBS)\r
+LINKLIBS_DEBUG = $(LINKLIBS_DEBUG) $(WINLIBS)\r
 \r
 all : release\r
 \r
 \r
 all : release\r
 \r
@@ -359,6 +365,8 @@ rawstrr.obj: ../lib/rawstr.c
        $(CCR) $(CFLAGS) /Fo"$@" ../lib/rawstr.c\r
 strtoofftr.obj: ../lib/strtoofft.c\r
        $(CCR) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c\r
        $(CCR) $(CFLAGS) /Fo"$@" ../lib/rawstr.c\r
 strtoofftr.obj: ../lib/strtoofft.c\r
        $(CCR) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c\r
+warnless.obj: ../lib/warnless.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" ../lib/warnless.c\r
 tool_binmoder.obj: tool_binmode.c\r
        $(CCR) $(CFLAGS) /Fo"$@" tool_binmode.c\r
 tool_bnamer.obj: tool_bname.c\r
 tool_binmoder.obj: tool_binmode.c\r
        $(CCR) $(CFLAGS) /Fo"$@" tool_binmode.c\r
 tool_bnamer.obj: tool_bname.c\r
@@ -445,6 +453,8 @@ rawstrd.obj: ../lib/rawstr.c
        $(CCD) $(CFLAGS) /Fo"$@" ../lib/rawstr.c\r
 strtoofftd.obj: ../lib/strtoofft.c\r
        $(CCD) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c\r
        $(CCD) $(CFLAGS) /Fo"$@" ../lib/rawstr.c\r
 strtoofftd.obj: ../lib/strtoofft.c\r
        $(CCD) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c\r
+warnlessd.obj: ../lib/warnless.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" ../lib/warnless.c\r
 tool_binmoded.obj: tool_binmode.c\r
        $(CCD) $(CFLAGS) /Fo"$@" tool_binmode.c\r
 tool_bnamed.obj: tool_bname.c\r
 tool_binmoded.obj: tool_binmode.c\r
        $(CCD) $(CFLAGS) /Fo"$@" tool_binmode.c\r
 tool_bnamed.obj: tool_bname.c\r
index 4c312e8..9d60e63 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___\r
 #                             \___|\___/|_| \_\_____|\r
 #\r
 #                            | (__| |_| |  _ <| |___\r
 #                             \___|\___/|_| \_\_____|\r
 #\r
-# Copyright (C) 1999 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.\r
+# Copyright (C) 1999 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.\r
 #\r
 # This software is licensed as described in the file COPYING, which\r
 # you should have received as part of this distribution. The terms\r
 #\r
 # This software is licensed as described in the file COPYING, which\r
 # you should have received as part of this distribution. The terms\r
@@ -56,7 +56,7 @@ PROGRAM_NAME = curl.exe
 \r
 \r
 !IFNDEF OPENSSL_PATH\r
 \r
 \r
 !IFNDEF OPENSSL_PATH\r
-OPENSSL_PATH = ../../openssl-0.9.8y\r
+OPENSSL_PATH = ../../openssl-0.9.8zc\r
 !ENDIF\r
 \r
 !IFNDEF ZLIB_PATH\r
 !ENDIF\r
 \r
 !IFNDEF ZLIB_PATH\r
@@ -90,19 +90,24 @@ WINDOWS_SDK_PATH = "$(PROGRAMFILES)\Microsoft SDK"
 ########################################################\r
 ## Nothing more to do below this line!\r
 \r
 ########################################################\r
 ## Nothing more to do below this line!\r
 \r
-ZLIB_CFLAGS   = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)"\r
-ZLIB_LFLAGS   = "/LIBPATH:$(ZLIB_PATH)"\r
-ZLIB_LIBS     = zlib.lib\r
-ZLIB_IMP_LIBS = zdll.lib\r
+ZLIB_CFLAGS    = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)"\r
+ZLIB_LFLAGS    = "/LIBPATH:$(ZLIB_PATH)"\r
+ZLIB_LIBS      = zlib.lib\r
+ZLIB_IMP_LIBS  = zdll.lib\r
 \r
 SSL_CFLAGS     = /DUSE_SSLEAY\r
 SSL_LFLAGS     = /LIBPATH:"$(OPENSSL_PATH)/out32"\r
 SSL_IMP_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32dll"\r
 SSL_LIBS       = libeay32.lib ssleay32.lib gdi32.lib user32.lib\r
 \r
 SSL_CFLAGS     = /DUSE_SSLEAY\r
 SSL_LFLAGS     = /LIBPATH:"$(OPENSSL_PATH)/out32"\r
 SSL_IMP_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32dll"\r
 SSL_LIBS       = libeay32.lib ssleay32.lib gdi32.lib user32.lib\r
+WINLIBS        = ws2_32.lib wldap32.lib advapi32.lib\r
 \r
 WINSSL_CFLAGS  = /DUSE_SCHANNEL\r
 #WINSSL_LIBS    = gdi32.lib user32.lib\r
 \r
 \r
 WINSSL_CFLAGS  = /DUSE_SCHANNEL\r
 #WINSSL_LIBS    = gdi32.lib user32.lib\r
 \r
+!IFDEF USE_IDN\r
+WINLIBS        = $(WINLIBS) normaliz.lib\r
+!ENDIF\r
+\r
 # Runtime library configuration\r
 RTLIB   = /MD\r
 RTLIBD  = /MDd\r
 # Runtime library configuration\r
 RTLIB   = /MD\r
 RTLIBD  = /MDd\r
@@ -139,6 +144,7 @@ RELEASE_OBJS= \
        nonblockr.obj \\r
        rawstrr.obj \\r
        strtoofftr.obj \\r
        nonblockr.obj \\r
        rawstrr.obj \\r
        strtoofftr.obj \\r
+       warnless.obj \\r
        tool_binmoder.obj \\r
        tool_bnamer.obj \\r
        tool_cb_dbgr.obj \\r
        tool_binmoder.obj \\r
        tool_bnamer.obj \\r
        tool_cb_dbgr.obj \\r
@@ -183,6 +189,7 @@ DEBUG_OBJS= \
        nonblockd.obj \\r
        rawstrd.obj \\r
        strtoofftd.obj \\r
        nonblockd.obj \\r
        rawstrd.obj \\r
        strtoofftd.obj \\r
+       warnlessd.obj \\r
        tool_binmoded.obj \\r
        tool_bnamed.obj \\r
        tool_cb_dbgd.obj \\r
        tool_binmoded.obj \\r
        tool_bnamed.obj \\r
        tool_cb_dbgd.obj \\r
@@ -338,9 +345,8 @@ LINKLIBS_DEBUG = $(LIBCURL_IMP_LIB_DBG) $(SSL_LIBS) $(ZLIB_IMP_LIBS)
 LFLAGS         = $(LFLAGS) $(SSL_IMP_LFLAGS) $(ZLIB_LFLAGS)\r
 !ENDIF\r
 \r
 LFLAGS         = $(LFLAGS) $(SSL_IMP_LFLAGS) $(ZLIB_LFLAGS)\r
 !ENDIF\r
 \r
-\r
-LINKLIBS       = $(LINKLIBS) ws2_32.lib wldap32.lib advapi32.lib\r
-LINKLIBS_DEBUG = $(LINKLIBS_DEBUG) ws2_32.lib wldap32.lib advapi32.lib\r
+LINKLIBS       = $(LINKLIBS) $(WINLIBS)\r
+LINKLIBS_DEBUG = $(LINKLIBS_DEBUG) $(WINLIBS)\r
 \r
 all : release\r
 \r
 \r
 all : release\r
 \r
@@ -359,6 +365,8 @@ rawstrr.obj: ../lib/rawstr.c
        $(CCR) $(CFLAGS) /Fo"$@" ../lib/rawstr.c\r
 strtoofftr.obj: ../lib/strtoofft.c\r
        $(CCR) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c\r
        $(CCR) $(CFLAGS) /Fo"$@" ../lib/rawstr.c\r
 strtoofftr.obj: ../lib/strtoofft.c\r
        $(CCR) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c\r
+warnless.obj: ../lib/warnless.c\r
+       $(CCR) $(CFLAGS) /Fo"$@" ../lib/warnless.c\r
 tool_binmoder.obj: tool_binmode.c\r
        $(CCR) $(CFLAGS) /Fo"$@" tool_binmode.c\r
 tool_bnamer.obj: tool_bname.c\r
 tool_binmoder.obj: tool_binmode.c\r
        $(CCR) $(CFLAGS) /Fo"$@" tool_binmode.c\r
 tool_bnamer.obj: tool_bname.c\r
@@ -445,6 +453,8 @@ rawstrd.obj: ../lib/rawstr.c
        $(CCD) $(CFLAGS) /Fo"$@" ../lib/rawstr.c\r
 strtoofftd.obj: ../lib/strtoofft.c\r
        $(CCD) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c\r
        $(CCD) $(CFLAGS) /Fo"$@" ../lib/rawstr.c\r
 strtoofftd.obj: ../lib/strtoofft.c\r
        $(CCD) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c\r
+warnlessd.obj: ../lib/warnless.c\r
+       $(CCD) $(CFLAGS) /Fo"$@" ../lib/warnless.c\r
 tool_binmoded.obj: tool_binmode.c\r
        $(CCD) $(CFLAGS) /Fo"$@" tool_binmode.c\r
 tool_bnamed.obj: tool_bname.c\r
 tool_binmoded.obj: tool_binmode.c\r
        $(CCD) $(CFLAGS) /Fo"$@" tool_binmode.c\r
 tool_bnamed.obj: tool_bname.c\r
index 7dffa9d..1839ef2 100644 (file)
@@ -1 +1 @@
-MACOS (not MACOS X)\r===================\rThis is the first attempt at porting cURL to MacOS.\rhttp, ftp, dict and telnet seems to work fine, other protocols and advanced \rfeatures have not been all tested.\r\rThis port is heavily based on the GUSI library from Matthias Neeracher.\rGUSI (Grand Unified Socket Interface) is a POSIX/Pthreads/Sockets library \rbringing some of the comforts of UNIX 98 to traditional MacOS.\rThe latest GUSI release can be downloaded from sourceforge \rat <http://sourceforge.net/projects/gusi/>\r\rI have also write a few functions to help port UNIX applications to MacOS.\rThese functions are part of the GUSI Extra library that can be downloaded at\r<http://perso.wanadoo.fr/ela/resources.html#gusiextra>\r\rOpenSSL support is still experimental but I hope to deliver a version \rincluding SSL soon.\r\rcURL for MacOS requires using the CodeWarrior compiler from Metrowerks.\r\rFirst download GUSI, GUSI Extra and cURL. Access paths have been setup so that\rGUSI, GUSI Extra and cURL directories should have the same parent directory.\r\rFollow the instructions in GUSI Extra "readme.txt" mainly the ones related to\rSIOUX and GUSI patches. If you do not apply these patches curl will not behave \rcorrectly.\r\rIn the 'curl/src/macos' directory, decode "curl.mcp.xml.sit.hqx" (This is a \rstuffit binhexed file)\rFrom the CodeWarrior IDE, import 'curl/src/macos/curl.xml', adjust the access \rpaths if required. Then you should be able to build:\r- the libcurl libraries for PPC and 68K.\r- the curl application (also available for PPC and 68K) which is the command\r  line version of cURL.\r\rIf the file "tool_hugehelp.c" is missing rename "curl/src/tool_hugehelp.c.cvs"\rto "tool_hugehelp.c" and make sure its file type is 'TEXT'\r
+MACOS (not MACOS X)\r===================\rThis is the first attempt at porting cURL to MacOS.\rhttp, ftp, dict and telnet seems to work fine, other protocols and advanced \rfeatures have not been all tested.\r\rThis port is heavily based on the GUSI library from Matthias Neeracher.\rGUSI (Grand Unified Socket Interface) is a POSIX/Pthreads/Sockets library \rbringing some of the comforts of UNIX 98 to traditional MacOS.\rThe latest GUSI release can be downloaded from sourceforge \rat <http://sourceforge.net/projects/gusi/>\r\rI have also written a few functions to help port Unix applications to MacOS.\rThese functions are part of the GUSI Extra library that can be downloaded at\r<http://perso.wanadoo.fr/ela/resources.html#gusiextra>\r\rOpenSSL support is still experimental but I hope to deliver a version \rincluding SSL soon.\r\rcURL for MacOS requires using the CodeWarrior compiler from Metrowerks.\r\rFirst download GUSI, GUSI Extra and cURL. Access paths have been setup so that\rGUSI, GUSI Extra and cURL directories should have the same parent directory.\r\rFollow the instructions in GUSI Extra "readme.txt" mainly the ones related to\rSIOUX and GUSI patches. If you do not apply these patches curl will not behave \rcorrectly.\r\rIn the 'curl/src/macos' directory, decode "curl.mcp.xml.sit.hqx" (This is a \rstuffit binhexed file)\rFrom the CodeWarrior IDE, import 'curl/src/macos/curl.xml', adjust the access \rpaths if required. Then you should be able to build:\r- the libcurl libraries for PPC and 68K.\r- the curl application (also available for PPC and 68K) which is the command\r  line version of cURL.\r\rIf the file "tool_hugehelp.c" is missing rename "curl/src/tool_hugehelp.c.cvs"\rto "tool_hugehelp.c" and make sure its file type is 'TEXT'\r
index 7b9b1c0..25449a6 100644 (file)
@@ -16,7 +16,7 @@ MKHELP        =       ../src/mkhelp.pl
 
 include Makefile.inc
 
 
 include Makefile.inc
 
-OBJS = $(CURL_CFILES:.c=.o) $(CURLX_ONES:.c=.o)
+OBJS = $(CURL_CFILES:.c=.o) $(CURLX_CFILES:.c=.o)
 
 all:   tool_hugehelp.c $(OBJS)
        $(CC) $(CFLAGS) -o cURL $(OBJS) $(LIBS) -Wl,-Map,cURL.map,--cref
 
 all:   tool_hugehelp.c $(OBJS)
        $(CC) $(CFLAGS) -o cURL $(OBJS) $(LIBS) -Wl,-Map,cURL.map,--cref
index 444b669..7ed86f7 100644 (file)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -256,6 +256,10 @@ foot();
 
 sub foot {
   print <<FOOT
 
 sub foot {
   print <<FOOT
+#else /* !USE_MANUAL */
+/* built-in manual is disabled, blank function */
+#include "tool_hugehelp.h"
+void hugehelp(void) {}
 #endif /* USE_MANUAL */
 FOOT
   ;
 #endif /* USE_MANUAL */
 FOOT
   ;
index 92033ac..5495ba4 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -41,7 +41,7 @@ void set_binmode(FILE *stream)
 #  ifdef __HIGHC__
   _setmode(stream, O_BINARY);
 #  else
 #  ifdef __HIGHC__
   _setmode(stream, O_BINARY);
 #  else
-  setmode(fileno(stream), O_BINARY);
+  (void)setmode(fileno(stream), O_BINARY);
 #  endif
 #else
   (void)stream;
 #  endif
 #else
   (void)stream;
index 1850ba0..4add67c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -44,7 +44,8 @@ int tool_debug_cb(CURL *handle, curl_infotype type,
                   unsigned char *data, size_t size,
                   void *userdata)
 {
                   unsigned char *data, size_t size,
                   void *userdata)
 {
-  struct Configurable *config = userdata;
+  struct OperationConfig *operation = userdata;
+  struct GlobalConfig *config = operation->global;
   FILE *output = config->errors;
   const char *text;
   struct timeval tv;
   FILE *output = config->errors;
   const char *text;
   struct timeval tv;
@@ -87,7 +88,7 @@ int tool_debug_cb(CURL *handle, curl_infotype type,
     output = config->trace_stream;
 
   if(!output) {
     output = config->trace_stream;
 
   if(!output) {
-    warnf(config, "Failed to create/open output");
+    warnf(operation, "Failed to create/open output");
     return 0;
   }
 
     return 0;
   }
 
@@ -141,11 +142,10 @@ int tool_debug_cb(CURL *handle, curl_infotype type,
            to stderr or stdout, we don't display the alert about the data not
            being shown as the data _is_ shown then just not via this
            function */
            to stderr or stdout, we don't display the alert about the data not
            being shown as the data _is_ shown then just not via this
            function */
-        if(!config->isatty ||
-           ((output != stderr) && (output != stdout))) {
+        if(!config->isatty || ((output != stderr) && (output != stdout))) {
           if(!newl)
             fprintf(output, "%s%s ", timebuf, s_infotype[type]);
           if(!newl)
             fprintf(output, "%s%s ", timebuf, s_infotype[type]);
-          fprintf(output, "[data not shown]\n");
+          fprintf(output, "[%zd bytes data]\n", size);
           newl = FALSE;
           traced_data = TRUE;
         }
           newl = FALSE;
           traced_data = TRUE;
         }
index b049377..9e3c5fb 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "memdebug.h" /* keep this as LAST include */
 
 /*
 #include "memdebug.h" /* keep this as LAST include */
 
 /*
-** callback for CURLOPT_PROGRESSFUNCTION
+** callback for CURLOPT_XFERINFOFUNCTION
 */
 
 #define MAX_BARLENGTH 256
 
 int tool_progress_cb(void *clientp,
 */
 
 #define MAX_BARLENGTH 256
 
 int tool_progress_cb(void *clientp,
-                     double dltotal, double dlnow,
-                     double ultotal, double ulnow)
+                     curl_off_t dltotal, curl_off_t dlnow,
+                     curl_off_t ultotal, curl_off_t ulnow)
 {
   /* The original progress-bar source code was written for curl by Lars Aas,
      and this new edition inherits some of his concepts. */
 {
   /* The original progress-bar source code was written for curl by Lars Aas,
      and this new edition inherits some of his concepts. */
@@ -55,15 +55,16 @@ int tool_progress_cb(void *clientp,
   curl_off_t total;
   curl_off_t point;
 
   curl_off_t total;
   curl_off_t point;
 
-  if(bar->calls && (tvdiff(now, bar->prevtime) < 200L))
-    /* after first call, limit progress-bar updating to 5 Hz */
-    return 0;
-
   /* expected transfer size */
   /* expected transfer size */
-  total = (curl_off_t)dltotal + (curl_off_t)ultotal + bar->initial_size;
+  total = dltotal + ultotal + bar->initial_size;
 
   /* we've come this far */
 
   /* we've come this far */
-  point = (curl_off_t)dlnow + (curl_off_t)ulnow + bar->initial_size;
+  point = dlnow + ulnow + bar->initial_size;
+
+  if(bar->calls && (tvdiff(now, bar->prevtime) < 100L) && point < total)
+    /* after first call, limit progress-bar updating to 10 Hz */
+    /* update when we're at 100% even if last update is less than 200ms ago */
+    return 0;
 
   if(point > total)
     /* we have got more than the expected total! */
 
   if(point > total)
     /* we have got more than the expected total! */
@@ -100,7 +101,7 @@ int tool_progress_cb(void *clientp,
 }
 
 void progressbarinit(struct ProgressData *bar,
 }
 
 void progressbarinit(struct ProgressData *bar,
-                     struct Configurable *config)
+                     struct OperationConfig *config)
 {
 #ifdef __EMX__
   /* 20000318 mgs */
 {
 #ifdef __EMX__
   /* 20000318 mgs */
@@ -145,6 +146,5 @@ void progressbarinit(struct ProgressData *bar,
   bar->width = scr_size[0] - 1;
 #endif
 
   bar->width = scr_size[0] - 1;
 #endif
 
-  bar->out = config->errors;
+  bar->out = config->global->errors;
 }
 }
-
index a20645e..c635be8 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -36,15 +36,15 @@ struct ProgressData {
 };
 
 void progressbarinit(struct ProgressData *bar,
 };
 
 void progressbarinit(struct ProgressData *bar,
-                     struct Configurable *config);
+                     struct OperationConfig *config);
 
 /*
 ** callback for CURLOPT_PROGRESSFUNCTION
 */
 
 int tool_progress_cb(void *clientp,
 
 /*
 ** callback for CURLOPT_PROGRESSFUNCTION
 */
 
 int tool_progress_cb(void *clientp,
-                     double dltotal, double dlnow,
-                     double ultotal, double ulnow);
+                     curl_off_t dltotal, curl_off_t dlnow,
+                     curl_off_t ultotal, curl_off_t ulnow);
 
 #endif /* HEADER_CURL_TOOL_CB_PRG_H */
 
 
 #endif /* HEADER_CURL_TOOL_CB_PRG_H */
 
index d668811..dfbf95c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -39,7 +39,7 @@ size_t tool_write_cb(void *buffer, size_t sz, size_t nmemb, void *userdata)
 {
   size_t rc;
   struct OutStruct *outs = userdata;
 {
   size_t rc;
   struct OutStruct *outs = userdata;
-  struct Configurable *config = outs->config;
+  struct OperationConfig *config = outs->config;
 
   /*
    * Once that libcurl has called back tool_write_cb() the returned value
 
   /*
    * Once that libcurl has called back tool_write_cb() the returned value
index da11f4a..c9ee417 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "tool_setup.h"
 
 #include "tool_cfgable.h"
 #include "tool_setup.h"
 
 #include "tool_cfgable.h"
+#include "tool_main.h"
 
 #include "memdebug.h" /* keep this as LAST include */
 
 
 #include "memdebug.h" /* keep this as LAST include */
 
-void free_config_fields(struct Configurable *config)
+void config_init(struct OperationConfig* config)
 {
 {
-  struct getout *urlnode;
+  memset(config, 0, sizeof(struct OperationConfig));
+
+  config->postfieldsize = -1;
+  config->use_httpget = FALSE;
+  config->create_dirs = FALSE;
+  config->maxredirs = DEFAULT_MAXREDIRS;
+  config->proto = CURLPROTO_ALL; /* FIXME: better to read from library */
+  config->proto_present = FALSE;
+  config->proto_redir = CURLPROTO_ALL & /* All except FILE, SCP and SMB */
+                        ~(CURLPROTO_FILE | CURLPROTO_SCP | CURLPROTO_SMB |
+                          CURLPROTO_SMBS);
+  config->proto_redir_present = FALSE;
+}
 
 
-  if(config->easy) {
-    curl_easy_cleanup(config->easy);
-    config->easy = NULL;
-  }
+static void free_config_fields(struct OperationConfig *config)
+{
+  struct getout *urlnode;
 
   Curl_safefree(config->random_file);
   Curl_safefree(config->egd_file);
 
   Curl_safefree(config->random_file);
   Curl_safefree(config->egd_file);
@@ -57,6 +69,11 @@ void free_config_fields(struct Configurable *config)
   Curl_safefree(config->proxyuserpwd);
   Curl_safefree(config->proxy);
 
   Curl_safefree(config->proxyuserpwd);
   Curl_safefree(config->proxy);
 
+  Curl_safefree(config->dns_ipv6_addr);
+  Curl_safefree(config->dns_ipv4_addr);
+  Curl_safefree(config->dns_interface);
+  Curl_safefree(config->dns_servers);
+
   Curl_safefree(config->noproxy);
 
   Curl_safefree(config->mail_from);
   Curl_safefree(config->noproxy);
 
   Curl_safefree(config->mail_from);
@@ -85,6 +102,7 @@ void free_config_fields(struct Configurable *config)
   Curl_safefree(config->cacert);
   Curl_safefree(config->capath);
   Curl_safefree(config->crlfile);
   Curl_safefree(config->cacert);
   Curl_safefree(config->capath);
   Curl_safefree(config->crlfile);
+  Curl_safefree(config->pinnedpubkey);
   Curl_safefree(config->key);
   Curl_safefree(config->key_type);
   Curl_safefree(config->key_passwd);
   Curl_safefree(config->key);
   Curl_safefree(config->key_type);
   Curl_safefree(config->key_passwd);
@@ -94,19 +112,18 @@ void free_config_fields(struct Configurable *config)
 
   Curl_safefree(config->customrequest);
   Curl_safefree(config->krblevel);
 
   Curl_safefree(config->customrequest);
   Curl_safefree(config->krblevel);
-  Curl_safefree(config->trace_dump);
 
 
-  config->trace_stream = NULL; /* closed elsewhere when appropriate */
+  Curl_safefree(config->xoauth2_bearer);
 
 
+  Curl_safefree(config->unix_socket_path);
   Curl_safefree(config->writeout);
 
   Curl_safefree(config->writeout);
 
-  config->errors = NULL; /* closed elsewhere when appropriate */
-
   curl_slist_free_all(config->quote);
   curl_slist_free_all(config->postquote);
   curl_slist_free_all(config->prequote);
 
   curl_slist_free_all(config->headers);
   curl_slist_free_all(config->quote);
   curl_slist_free_all(config->postquote);
   curl_slist_free_all(config->prequote);
 
   curl_slist_free_all(config->headers);
+  curl_slist_free_all(config->proxyheaders);
 
   if(config->httppost) {
     curl_formfree(config->httppost);
 
   if(config->httppost) {
     curl_formfree(config->httppost);
@@ -122,7 +139,19 @@ void free_config_fields(struct Configurable *config)
 
   Curl_safefree(config->ftp_account);
   Curl_safefree(config->ftp_alternative_to_user);
 
   Curl_safefree(config->ftp_account);
   Curl_safefree(config->ftp_alternative_to_user);
-
-  Curl_safefree(config->libcurl);
 }
 
 }
 
+void config_free(struct OperationConfig *config)
+{
+  struct OperationConfig *last = config;
+
+  /* Free each of the structures in reverse order */
+  while(last) {
+    struct OperationConfig *prev = last->prev;
+
+    free_config_fields(last);
+    free(last);
+
+    last = prev;
+  }
+}
index 9a9b6d8..cf8d563 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 
 #include "tool_metalink.h"
 
 
 #include "tool_metalink.h"
 
-struct Configurable {
-  CURL *easy;               /* once we have one, we keep it here */
+struct GlobalConfig;
+
+struct OperationConfig {
+  CURL *easy;               /* A copy of the handle from GlobalConfig */
   bool remote_time;
   char *random_file;
   char *egd_file;
   bool remote_time;
   char *random_file;
   char *egd_file;
@@ -66,10 +68,12 @@ struct Configurable {
   char *range;
   long low_speed_limit;
   long low_speed_time;
   char *range;
   long low_speed_limit;
   long low_speed_time;
-  int showerror; /* -1 == unset, default => show errors
-                    0 => -s is used to NOT show errors
-                    1 => -S has been used to show errors */
+  char *dns_servers;   /* dot notation: 1.1.1.1;2.2.2.2 */
+  char *dns_interface; /* interface name */
+  char *dns_ipv4_addr; /* dot notation */
+  char *dns_ipv6_addr; /* dot notation */
   char *userpwd;
   char *userpwd;
+  char *login_options;
   char *tls_username;
   char *tls_password;
   char *tls_authtype;
   char *tls_username;
   char *tls_password;
   char *tls_authtype;
@@ -83,7 +87,6 @@ struct Configurable {
   bool sasl_ir;             /* Enable/disable SASL initial response */
   bool proxytunnel;
   bool ftp_append;          /* APPE on ftp */
   bool sasl_ir;             /* Enable/disable SASL initial response */
   bool proxytunnel;
   bool ftp_append;          /* APPE on ftp */
-  bool mute;                /* don't show messages, --silent given */
   bool use_ascii;           /* select ascii or text transfer */
   bool autoreferer;         /* automatically set referer */
   bool failonerror;         /* fail on (HTTP) errors */
   bool use_ascii;           /* select ascii or text transfer */
   bool autoreferer;         /* automatically set referer */
   bool failonerror;         /* fail on (HTTP) errors */
@@ -97,8 +100,6 @@ struct Configurable {
   bool netrc_opt;
   bool netrc;
   char *netrc_file;
   bool netrc_opt;
   bool netrc;
   char *netrc_file;
-  bool noprogress;          /* don't show progress meter, --silent given */
-  bool isatty;              /* updated internally only if output is a tty */
   struct getout *url_list;  /* point to the first node */
   struct getout *url_last;  /* point to the last/current node */
   struct getout *url_get;   /* point to the node to fill in URL */
   struct getout *url_list;  /* point to the first node */
   struct getout *url_last;  /* point to the last/current node */
   struct getout *url_get;   /* point to the node to fill in URL */
@@ -109,23 +110,17 @@ struct Configurable {
   char *cacert;
   char *capath;
   char *crlfile;
   char *cacert;
   char *capath;
   char *crlfile;
+  char *pinnedpubkey;
   char *key;
   char *key_type;
   char *key_passwd;
   char *pubkey;
   char *hostpubmd5;
   char *engine;
   char *key;
   char *key_type;
   char *key_passwd;
   char *pubkey;
   char *hostpubmd5;
   char *engine;
-  bool list_engines;
   bool crlf;
   char *customrequest;
   char *krblevel;
   bool crlf;
   char *customrequest;
   char *krblevel;
-  char *trace_dump;         /* file to dump the network trace to, or NULL */
-  FILE *trace_stream;
-  bool trace_fopened;
-  trace tracetype;
-  bool tracetime;           /* include timestamp? */
   long httpversion;
   long httpversion;
-  int progressmode;         /* CURL_PROGRESS_BAR or CURL_PROGRESS_STATS */
   bool nobuffer;
   bool readbusy;            /* set when reading input returns EAGAIN */
   bool globoff;
   bool nobuffer;
   bool readbusy;            /* set when reading input returns EAGAIN */
   bool globoff;
@@ -141,8 +136,6 @@ struct Configurable {
   bool proxyanyauth;
   char *writeout;           /* %-styled format string to output */
   bool writeenv;            /* write results to environment, if available */
   bool proxyanyauth;
   char *writeout;           /* %-styled format string to output */
   bool writeenv;            /* write results to environment, if available */
-  FILE *errors;             /* errors stream, defaults to stderr */
-  bool errors_fopened;      /* whether errors stream isn't stderr */
   struct curl_slist *quote;
   struct curl_slist *postquote;
   struct curl_slist *prequote;
   struct curl_slist *quote;
   struct curl_slist *postquote;
   struct curl_slist *prequote;
@@ -151,6 +144,7 @@ struct Configurable {
   curl_TimeCond timecond;
   time_t condtime;
   struct curl_slist *headers;
   curl_TimeCond timecond;
   time_t condtime;
   struct curl_slist *headers;
+  struct curl_slist *proxyheaders;
   struct curl_httppost *httppost;
   struct curl_httppost *last_post;
   struct curl_slist *telnet_options;
   struct curl_httppost *httppost;
   struct curl_httppost *last_post;
   struct curl_slist *telnet_options;
@@ -186,7 +180,6 @@ struct Configurable {
   bool ignorecl;            /* --ignore-content-length */
   bool disable_sessionid;
 
   bool ignorecl;            /* --ignore-content-length */
   bool disable_sessionid;
 
-  char *libcurl;            /* output libcurl code to this file name */
   bool raw;
   bool post301;
   bool post302;
   bool raw;
   bool post301;
   bool post302;
@@ -205,9 +198,43 @@ struct Configurable {
   bool use_metalink;        /* process given URLs as metalink XML file */
   metalinkfile *metalinkfile_list; /* point to the first node */
   metalinkfile *metalinkfile_last; /* point to the last/current node */
   bool use_metalink;        /* process given URLs as metalink XML file */
   metalinkfile *metalinkfile_list; /* point to the first node */
   metalinkfile *metalinkfile_last; /* point to the last/current node */
-}; /* struct Configurable */
+#ifdef CURLDEBUG
+  bool test_event_based;
+#endif
+  char *xoauth2_bearer;           /* XOAUTH2 bearer token */
+  bool nonpn;                     /* enable/disable TLS NPN extension */
+  bool noalpn;                    /* enable/disable TLS ALPN extension */
+  char *unix_socket_path;         /* path to Unix domain socket */
 
 
-void free_config_fields(struct Configurable *config);
+  struct GlobalConfig *global;
+  struct OperationConfig *prev;
+  struct OperationConfig *next;   /* Always last in the struct */
+};
 
 
-#endif /* HEADER_CURL_TOOL_CFGABLE_H */
+struct GlobalConfig {
+  CURL *easy;                     /* Once we have one, we keep it here */
+  int showerror;                  /* -1 == unset, default => show errors
+                                      0 => -s is used to NOT show errors
+                                      1 => -S has been used to show errors */
+  bool mute;                      /* don't show messages, --silent given */
+  bool noprogress;                /* don't show progress bar --silent given */
+  bool isatty;                    /* Updated internally if output is a tty */
+  FILE *errors;                   /* Error stream, defaults to stderr */
+  bool errors_fopened;            /* Whether error stream isn't stderr */
+  char *trace_dump;               /* file to dump the network trace to */
+  FILE *trace_stream;
+  bool trace_fopened;
+  trace tracetype;
+  bool tracetime;                 /* include timestamp? */
+  int progressmode;               /* CURL_PROGRESS_BAR / CURL_PROGRESS_STATS */
+  char *libcurl;                  /* Output libcurl code to this file name */
+
+  struct OperationConfig *first;
+  struct OperationConfig *current;
+  struct OperationConfig *last;   /* Always last in the struct */
+};
 
 
+void config_init(struct OperationConfig *config);
+void config_free(struct OperationConfig *config);
+
+#endif /* HEADER_CURL_TOOL_CFGABLE_H */
index 4fae91d..dd6e8bb 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -262,7 +262,8 @@ char **__crt0_glob_function(char *arg)
  * HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\SafeProcessSearchMode
  */
 
  * HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\SafeProcessSearchMode
  */
 
-CURLcode FindWin32CACert(struct Configurable *config, const char *bundle_file)
+CURLcode FindWin32CACert(struct OperationConfig *config,
+                         const char *bundle_file)
 {
   CURLcode result = CURLE_OK;
 
 {
   CURLcode result = CURLE_OK;
 
@@ -296,4 +297,3 @@ CURLcode FindWin32CACert(struct Configurable *config, const char *bundle_file)
 #endif /* WIN32 */
 
 #endif /* MSDOS || WIN32 */
 #endif /* WIN32 */
 
 #endif /* MSDOS || WIN32 */
-
index 955ce8d..cd216db 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -35,7 +35,8 @@ char **__crt0_glob_function(char *arg);
 
 #ifdef WIN32
 
 
 #ifdef WIN32
 
-CURLcode FindWin32CACert(struct Configurable *config, const char *bundle_file);
+CURLcode FindWin32CACert(struct OperationConfig *config,
+                         const char *bundle_file);
 
 #endif /* WIN32 */
 
 
 #endif /* WIN32 */
 
index 339dde5..3db27bb 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -154,18 +154,20 @@ CURLcode easysrc_perform(void)
 
   CHKRET(easysrc_add(&easysrc_code, ""));
   CHKRET(easysrc_add(&easysrc_code, "ret = curl_easy_perform(hnd);"));
 
   CHKRET(easysrc_add(&easysrc_code, ""));
   CHKRET(easysrc_add(&easysrc_code, "ret = curl_easy_perform(hnd);"));
+  CHKRET(easysrc_add(&easysrc_code, ""));
+
   return CURLE_OK;
 }
 
 CURLcode easysrc_cleanup(void)
 {
   return CURLE_OK;
 }
 
 CURLcode easysrc_cleanup(void)
 {
-  CHKRET(easysrc_add(&easysrc_code, ""));
   CHKRET(easysrc_add(&easysrc_code, "curl_easy_cleanup(hnd);"));
   CHKRET(easysrc_add(&easysrc_code, "hnd = NULL;"));
   CHKRET(easysrc_add(&easysrc_code, "curl_easy_cleanup(hnd);"));
   CHKRET(easysrc_add(&easysrc_code, "hnd = NULL;"));
+
   return CURLE_OK;
 }
 
   return CURLE_OK;
 }
 
-void dumpeasysrc(struct Configurable *config)
+void dumpeasysrc(struct GlobalConfig *config)
 {
   struct curl_slist *ptr;
   char *o = config->libcurl;
 {
   struct curl_slist *ptr;
   char *o = config->libcurl;
@@ -180,7 +182,7 @@ void dumpeasysrc(struct Configurable *config)
     else
       out = stdout;
     if(!out)
     else
       out = stdout;
     if(!out)
-      warnf(config, "Failed to open %s to write libcurl code!\n", o);
+      warnf(config->current, "Failed to open %s to write libcurl code!\n", o);
     else {
       int i;
       const char *c;
     else {
       int i;
       const char *c;
index fa97cdc..07a4b78 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -40,7 +40,8 @@ extern CURLcode easysrc_add(struct curl_slist **plist, const char *bupf);
 extern CURLcode easysrc_addf(struct curl_slist **plist, const char *fmt, ...);
 extern CURLcode easysrc_perform(void);
 extern CURLcode easysrc_cleanup(void);
 extern CURLcode easysrc_addf(struct curl_slist **plist, const char *fmt, ...);
 extern CURLcode easysrc_perform(void);
 extern CURLcode easysrc_cleanup(void);
-void dumpeasysrc(struct Configurable *config);
+
+void dumpeasysrc(struct GlobalConfig *config);
 
 #endif /* CURL_DISABLE_LIBCURL_OPTION */
 
 
 #endif /* CURL_DISABLE_LIBCURL_OPTION */
 
index fe357f5..1dcd897 100644 (file)
@@ -140,7 +140,7 @@ static char *get_param_word(char **str, char **end_pos)
  *
  ***************************************************************************/
 
  *
  ***************************************************************************/
 
-int formparse(struct Configurable *config,
+int formparse(struct OperationConfig *config,
               const char *input,
               struct curl_httppost **httppost,
               struct curl_httppost **last_post,
               const char *input,
               struct curl_httppost **httppost,
               struct curl_httppost **last_post,
@@ -150,8 +150,8 @@ int formparse(struct Configurable *config,
      build a linked list with the info */
   char name[256];
   char *contents = NULL;
      build a linked list with the info */
   char name[256];
   char *contents = NULL;
-  char type_major[128];
-  char type_minor[128];
+  char type_major[128] = "";
+  char type_minor[128] = "";
   char *contp;
   const char *type = NULL;
   char *sep;
   char *contp;
   const char *type = NULL;
   char *sep;
@@ -163,7 +163,7 @@ int formparse(struct Configurable *config,
     /* Allocate the contents */
     contents = strdup(contp+1);
     if(!contents) {
     /* Allocate the contents */
     contents = strdup(contp+1);
     if(!contents) {
-      fprintf(config->errors, "out of memory\n");
+      fprintf(config->global->errors, "out of memory\n");
       return 1;
     }
     contp = contents;
       return 1;
     }
     contp = contents;
@@ -277,7 +277,7 @@ int formparse(struct Configurable *config,
         }
         forms = malloc((count+1)*sizeof(struct curl_forms));
         if(!forms) {
         }
         forms = malloc((count+1)*sizeof(struct curl_forms));
         if(!forms) {
-          fprintf(config->errors, "Error building form post!\n");
+          fprintf(config->global->errors, "Error building form post!\n");
           Curl_safefree(contents);
           FreeMultiInfo(&multi_start, &multi_current);
           return 4;
           Curl_safefree(contents);
           FreeMultiInfo(&multi_start, &multi_current);
           return 4;
index 3cd915f..f773626 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -23,7 +23,7 @@
  ***************************************************************************/
 #include "tool_setup.h"
 
  ***************************************************************************/
 #include "tool_setup.h"
 
-int formparse(struct Configurable *config,
+int formparse(struct OperationConfig *config,
               const char *input,
               struct curl_httppost **httppost,
               struct curl_httppost **last_post,
               const char *input,
               struct curl_httppost **httppost,
               struct curl_httppost **last_post,
index 5eb2c9f..3932ccb 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 /* use our own printf() functions */
 #include "curlx.h"
 
 /* use our own printf() functions */
 #include "curlx.h"
 
-#ifdef USE_MANUAL
-#  include "tool_hugehelp.h"
-#endif
-
 #include "tool_binmode.h"
 #include "tool_cfgable.h"
 #include "tool_cb_prg.h"
 #include "tool_formparse.h"
 #include "tool_getparam.h"
 #include "tool_binmode.h"
 #include "tool_cfgable.h"
 #include "tool_cb_prg.h"
 #include "tool_formparse.h"
 #include "tool_getparam.h"
-#include "tool_help.h"
 #include "tool_helpers.h"
 #include "tool_libinfo.h"
 #include "tool_metalink.h"
 #include "tool_msgs.h"
 #include "tool_paramhlp.h"
 #include "tool_parsecfg.h"
 #include "tool_helpers.h"
 #include "tool_libinfo.h"
 #include "tool_metalink.h"
 #include "tool_msgs.h"
 #include "tool_paramhlp.h"
 #include "tool_parsecfg.h"
-#include "tool_version.h"
 
 #include "memdebug.h" /* keep this as LAST include */
 
 
 #include "memdebug.h" /* keep this as LAST include */
 
@@ -73,10 +67,14 @@ static const struct LongShort aliases[]= {
   /* all these ones, starting with "*" or "$" as a short-option have *no*
      short option to mention. */
   {"*",  "url",                      TRUE},
   /* all these ones, starting with "*" or "$" as a short-option have *no*
      short option to mention. */
   {"*",  "url",                      TRUE},
+  {"*4", "dns-ipv4-addr",            TRUE},
+  {"*6", "dns-ipv6-addr",            TRUE},
   {"*a", "random-file",              TRUE},
   {"*b", "egd-file",                 TRUE},
   {"*a", "random-file",              TRUE},
   {"*b", "egd-file",                 TRUE},
+  {"*B", "oauth2-bearer",             TRUE},
   {"*c", "connect-timeout",          TRUE},
   {"*d", "ciphers",                  TRUE},
   {"*c", "connect-timeout",          TRUE},
   {"*d", "ciphers",                  TRUE},
+  {"*D", "dns-interface",            TRUE},
   {"*e", "disable-epsv",             FALSE},
   {"*E", "epsv",                     FALSE},
          /* 'epsv' made like this to make --no-epsv and --epsv to work
   {"*e", "disable-epsv",             FALSE},
   {"*E", "epsv",                     FALSE},
          /* 'epsv' made like this to make --no-epsv and --epsv to work
@@ -84,8 +82,11 @@ static const struct LongShort aliases[]= {
 #ifdef USE_ENVIRONMENT
   {"*f", "environment",              FALSE},
 #endif
 #ifdef USE_ENVIRONMENT
   {"*f", "environment",              FALSE},
 #endif
+  {"*F", "dns-servers",              TRUE},
   {"*g", "trace",                    TRUE},
   {"*g", "trace",                    TRUE},
+  {"*G", "npn",                      FALSE},
   {"*h", "trace-ascii",              TRUE},
   {"*h", "trace-ascii",              TRUE},
+  {"*H", "alpn",                     FALSE},
   {"*i", "limit-rate",               TRUE},
   {"*j", "compressed",               FALSE},
   {"*J", "tr-encoding",              FALSE},
   {"*i", "limit-rate",               TRUE},
   {"*j", "compressed",               FALSE},
   {"*J", "tr-encoding",              FALSE},
@@ -174,8 +175,15 @@ static const struct LongShort aliases[]= {
   {"$I", "post303",                  FALSE},
   {"$J", "metalink",                 FALSE},
   {"$K", "sasl-ir",                  FALSE},
   {"$I", "post303",                  FALSE},
   {"$J", "metalink",                 FALSE},
   {"$K", "sasl-ir",                  FALSE},
-  {"0",  "http1.0",                  FALSE},
+  {"$L", "test-event",               FALSE},
+  {"$M", "unix-socket",              TRUE},
+  {"0",   "http1.0",                 FALSE},
+  {"01",  "http1.1",                 FALSE},
+  {"02",  "http2",                   FALSE},
   {"1",  "tlsv1",                    FALSE},
   {"1",  "tlsv1",                    FALSE},
+  {"10",  "tlsv1.0",                 FALSE},
+  {"11",  "tlsv1.1",                 FALSE},
+  {"12",  "tlsv1.2",                 FALSE},
   {"2",  "sslv2",                    FALSE},
   {"3",  "sslv3",                    FALSE},
   {"4",  "ipv4",                     FALSE},
   {"2",  "sslv2",                    FALSE},
   {"3",  "sslv3",                    FALSE},
   {"4",  "ipv4",                     FALSE},
@@ -207,6 +215,8 @@ static const struct LongShort aliases[]= {
   {"El", "tlspassword",              TRUE},
   {"Em", "tlsauthtype",              TRUE},
   {"En", "ssl-allow-beast",          FALSE},
   {"El", "tlspassword",              TRUE},
   {"Em", "tlsauthtype",              TRUE},
   {"En", "ssl-allow-beast",          FALSE},
+  {"Eo", "login-options",            TRUE},
+  {"Ep", "pinnedpubkey",             TRUE},
   {"f",  "fail",                     FALSE},
   {"F",  "form",                     TRUE},
   {"Fs", "form-string",              TRUE},
   {"f",  "fail",                     FALSE},
   {"F",  "form",                     TRUE},
   {"Fs", "form-string",              TRUE},
@@ -214,6 +224,7 @@ static const struct LongShort aliases[]= {
   {"G",  "get",                      FALSE},
   {"h",  "help",                     FALSE},
   {"H",  "header",                   TRUE},
   {"G",  "get",                      FALSE},
   {"h",  "help",                     FALSE},
   {"H",  "header",                   TRUE},
+  {"Hp", "proxy-header",             TRUE},
   {"i",  "include",                  FALSE},
   {"I",  "head",                     FALSE},
   {"j",  "junk-session-cookies",     FALSE},
   {"i",  "include",                  FALSE},
   {"I",  "head",                     FALSE},
   {"j",  "junk-session-cookies",     FALSE},
@@ -259,33 +270,10 @@ static const struct LongShort aliases[]= {
   {"y",  "speed-time",               TRUE},
   {"z",  "time-cond",                TRUE},
   {"#",  "progress-bar",             FALSE},
   {"y",  "speed-time",               TRUE},
   {"z",  "time-cond",                TRUE},
   {"#",  "progress-bar",             FALSE},
+  {":",  "next",                     FALSE},
   {"~",  "xattr",                    FALSE},
 };
 
   {"~",  "xattr",                    FALSE},
 };
 
-struct feat {
-  const char *name;
-  int bitmask;
-};
-
-static const struct feat feats[] = {
-  {"AsynchDNS",      CURL_VERSION_ASYNCHDNS},
-  {"Debug",          CURL_VERSION_DEBUG},
-  {"TrackMemory",    CURL_VERSION_CURLDEBUG},
-  {"GSS-Negotiate",  CURL_VERSION_GSSNEGOTIATE},
-  {"IDN",            CURL_VERSION_IDN},
-  {"IPv6",           CURL_VERSION_IPV6},
-  {"Largefile",      CURL_VERSION_LARGEFILE},
-  {"NTLM",           CURL_VERSION_NTLM},
-  {"NTLM_WB",        CURL_VERSION_NTLM_WB},
-  {"SPNEGO",         CURL_VERSION_SPNEGO},
-  {"SSL",            CURL_VERSION_SSL},
-  {"SSPI",           CURL_VERSION_SSPI},
-  {"krb4",           CURL_VERSION_KERBEROS4},
-  {"libz",           CURL_VERSION_LIBZ},
-  {"CharConv",       CURL_VERSION_CONV},
-  {"TLS-SRP",        CURL_VERSION_TLSAUTH_SRP}
-};
-
 /* Split the argument of -E to 'certname' and 'passphrase' separated by colon.
  * We allow ':' and '\' to be escaped by '\' so that we can use certificate
  * nicknames containing ':'.  See <https://sourceforge.net/p/curl/bugs/1196/>
 /* Split the argument of -E to 'certname' and 'passphrase' separated by colon.
  * We allow ':' and '\' to be escaped by '\' so that we can use certificate
  * nicknames containing ':'.  See <https://sourceforge.net/p/curl/bugs/1196/>
@@ -389,7 +377,8 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
                             char *nextarg, /* NULL if unset */
                             bool *usedarg, /* set to TRUE if the arg
                                               has been used */
                             char *nextarg, /* NULL if unset */
                             bool *usedarg, /* set to TRUE if the arg
                                               has been used */
-                            struct Configurable *config)
+                            struct GlobalConfig *global,
+                            struct OperationConfig *config)
 {
   char letter;
   char subletter = '\0'; /* subletters can only occur on long options */
 {
   char letter;
   char subletter = '\0'; /* subletters can only occur on long options */
@@ -450,12 +439,7 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
     /* we can loop here if we have multiple single-letters */
 
     if(!longopt) {
     /* we can loop here if we have multiple single-letters */
 
     if(!longopt) {
-      if(NULL != parse) {
-        letter = (char)*parse;
-      }
-      else {
-        letter = '\0';
-      }
+      letter = (char)*parse;
       subletter='\0';
     }
     else {
       subletter='\0';
     }
     else {
@@ -491,12 +475,23 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
     switch(letter) {
     case '*': /* options without a short option */
       switch(subletter) {
     switch(letter) {
     case '*': /* options without a short option */
       switch(subletter) {
+      case '4': /* --dns-ipv4-addr */
+        /* addr in dot notation */
+        GetStr(&config->dns_ipv4_addr, nextarg);
+        break;
+      case '6': /* --dns-ipv6-addr */
+        /* addr in dot notation */
+        GetStr(&config->dns_ipv6_addr, nextarg);
+        break;
       case 'a': /* random-file */
         GetStr(&config->random_file, nextarg);
         break;
       case 'b': /* egd-file */
         GetStr(&config->egd_file, nextarg);
         break;
       case 'a': /* random-file */
         GetStr(&config->random_file, nextarg);
         break;
       case 'b': /* egd-file */
         GetStr(&config->egd_file, nextarg);
         break;
+      case 'B': /* XOAUTH2 Bearer */
+        GetStr(&config->xoauth2_bearer, nextarg);
+        break;
       case 'c': /* connect-timeout */
         err = str2udouble(&config->connecttimeout, nextarg);
         if(err)
       case 'c': /* connect-timeout */
         err = str2udouble(&config->connecttimeout, nextarg);
         if(err)
@@ -505,6 +500,10 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
       case 'd': /* ciphers */
         GetStr(&config->cipher_list, nextarg);
         break;
       case 'd': /* ciphers */
         GetStr(&config->cipher_list, nextarg);
         break;
+      case 'D': /* --dns-interface */
+        /* interface name */
+        GetStr(&config->dns_interface, nextarg);
+        break;
       case 'e': /* --disable-epsv */
         config->disable_epsv = toggle;
         break;
       case 'e': /* --disable-epsv */
         config->disable_epsv = toggle;
         break;
@@ -516,18 +515,28 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
         config->writeenv = toggle;
         break;
 #endif
         config->writeenv = toggle;
         break;
 #endif
+      case 'F': /* --dns-servers */
+        /* IP addrs of DNS servers */
+        GetStr(&config->dns_servers, nextarg);
+        break;
       case 'g': /* --trace */
       case 'g': /* --trace */
-        GetStr(&config->trace_dump, nextarg);
-        if(config->tracetype && (config->tracetype != TRACE_BIN))
+        GetStr(&global->trace_dump, nextarg);
+        if(global->tracetype && (global->tracetype != TRACE_BIN))
           warnf(config, "--trace overrides an earlier trace/verbose option\n");
           warnf(config, "--trace overrides an earlier trace/verbose option\n");
-        config->tracetype = TRACE_BIN;
+        global->tracetype = TRACE_BIN;
+        break;
+      case 'G': /* --npn */
+        config->nonpn = (!toggle)?TRUE:FALSE;
         break;
       case 'h': /* --trace-ascii */
         break;
       case 'h': /* --trace-ascii */
-        GetStr(&config->trace_dump, nextarg);
-        if(config->tracetype && (config->tracetype != TRACE_ASCII))
+        GetStr(&global->trace_dump, nextarg);
+        if(global->tracetype && (global->tracetype != TRACE_ASCII))
           warnf(config,
                 "--trace-ascii overrides an earlier trace/verbose option\n");
           warnf(config,
                 "--trace-ascii overrides an earlier trace/verbose option\n");
-        config->tracetype = TRACE_ASCII;
+        global->tracetype = TRACE_ASCII;
+        break;
+      case 'H': /* --alpn */
+        config->noalpn = (!toggle)?TRUE:FALSE;
         break;
       case 'i': /* --limit-rate */
       {
         break;
       case 'i': /* --limit-rate */
       {
@@ -585,13 +594,13 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
 
       case 'l': /* --negotiate */
         if(toggle) {
 
       case 'l': /* --negotiate */
         if(toggle) {
-          if(curlinfo->features & CURL_VERSION_GSSNEGOTIATE)
-            config->authtype |= CURLAUTH_GSSNEGOTIATE;
+          if(curlinfo->features & CURL_VERSION_SPNEGO)
+            config->authtype |= CURLAUTH_NEGOTIATE;
           else
             return PARAM_LIBCURL_DOESNT_SUPPORT;
         }
         else
           else
             return PARAM_LIBCURL_DOESNT_SUPPORT;
         }
         else
-          config->authtype &= ~CURLAUTH_GSSNEGOTIATE;
+          config->authtype &= ~CURLAUTH_NEGOTIATE;
         break;
 
       case 'm': /* --ntlm */
         break;
 
       case 'm': /* --ntlm */
@@ -639,7 +648,7 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
         break;
 
       case 'r': /* --create-dirs */
         break;
 
       case 'r': /* --create-dirs */
-        config->create_dirs = TRUE;
+        config->create_dirs = toggle;
         break;
 
       case 's': /* --max-redirs */
         break;
 
       case 's': /* --max-redirs */
@@ -661,7 +670,7 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
 
       case 'u': /* --crlf */
         /* LF -> CRLF conversion? */
 
       case 'u': /* --crlf */
         /* LF -> CRLF conversion? */
-        config->crlf = TRUE;
+        config->crlf = toggle;
         break;
 
       case 'v': /* --stderr */
         break;
 
       case 'v': /* --stderr */
@@ -670,14 +679,14 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
           if(!newfile)
             warnf(config, "Failed to open %s!\n", nextarg);
           else {
           if(!newfile)
             warnf(config, "Failed to open %s!\n", nextarg);
           else {
-            if(config->errors_fopened)
-              fclose(config->errors);
-            config->errors = newfile;
-            config->errors_fopened = TRUE;
+            if(global->errors_fopened)
+              fclose(global->errors);
+            global->errors = newfile;
+            global->errors_fopened = TRUE;
           }
         }
         else
           }
         }
         else
-          config->errors = stdout;
+          global->errors = stdout;
         break;
       case 'w': /* --interface */
         /* interface */
         break;
       case 'w': /* --interface */
         /* interface */
@@ -685,8 +694,7 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
         break;
       case 'x': /* --krb */
         /* kerberos level string */
         break;
       case 'x': /* --krb */
         /* kerberos level string */
-        if(curlinfo->features & (CURL_VERSION_KERBEROS4 |
-                                 CURL_VERSION_GSSNEGOTIATE))
+        if(curlinfo->features & CURL_VERSION_KERBEROS4)
           GetStr(&config->krblevel, nextarg);
         else
           return PARAM_LIBCURL_DOESNT_SUPPORT;
           GetStr(&config->krblevel, nextarg);
         else
           return PARAM_LIBCURL_DOESNT_SUPPORT;
@@ -786,11 +794,12 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
         break;
 
       case 'k': /* --proxy-negotiate */
         break;
 
       case 'k': /* --proxy-negotiate */
-        if(curlinfo->features & CURL_VERSION_GSSNEGOTIATE)
+        if(curlinfo->features & CURL_VERSION_SPNEGO)
           config->proxynegotiate = toggle;
         else
           return PARAM_LIBCURL_DOESNT_SUPPORT;
         break;
           config->proxynegotiate = toggle;
         else
           return PARAM_LIBCURL_DOESNT_SUPPORT;
         break;
+
       case 'm': /* --ftp-account */
         GetStr(&config->ftp_account, nextarg);
         break;
       case 'm': /* --ftp-account */
         GetStr(&config->ftp_account, nextarg);
         break;
@@ -798,7 +807,7 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
         config->proxyanyauth = toggle;
         break;
       case 'o': /* --trace-time */
         config->proxyanyauth = toggle;
         break;
       case 'o': /* --trace-time */
-        config->tracetime = toggle;
+        global->tracetime = toggle;
         break;
       case 'p': /* --ignore-content-length */
         config->ignorecl = toggle;
         break;
       case 'p': /* --ignore-content-length */
         config->ignorecl = toggle;
@@ -856,7 +865,7 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
               "--libcurl option was disabled at build-time!\n");
         return PARAM_OPTION_UNKNOWN;
 #else
               "--libcurl option was disabled at build-time!\n");
         return PARAM_OPTION_UNKNOWN;
 #else
-        GetStr(&config->libcurl, nextarg);
+        GetStr(&global->libcurl, nextarg);
         break;
 #endif
       case '#': /* --raw */
         break;
 #endif
       case '#': /* --raw */
@@ -888,7 +897,7 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
         GetStr(&config->socks5_gssapi_service, nextarg);
         break;
       case '7': /* --socks5-gssapi-nec*/
         GetStr(&config->socks5_gssapi_service, nextarg);
         break;
       case '7': /* --socks5-gssapi-nec*/
-        config->socks5_gssapi_nec = TRUE;
+        config->socks5_gssapi_nec = toggle;
         break;
 #endif
       case '8': /* --proxy1.0 */
         break;
 #endif
       case '8': /* --proxy1.0 */
@@ -959,26 +968,66 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
           break;
         }
       case 'K': /* --sasl-ir */
           break;
         }
       case 'K': /* --sasl-ir */
-        config->sasl_ir = TRUE;
+        config->sasl_ir = toggle;
+        break;
+      case 'L': /* --test-event */
+#ifdef CURLDEBUG
+        config->test_event_based = toggle;
+#else
+        warnf(config, "--test-event is ignored unless a debug build!\n");
+#endif
+        break;
+      case 'M': /* --unix-socket */
+        GetStr(&config->unix_socket_path, nextarg);
         break;
       }
       break;
     case '#': /* --progress-bar */
       if(toggle)
         break;
       }
       break;
     case '#': /* --progress-bar */
       if(toggle)
-        config->progressmode = CURL_PROGRESS_BAR;
+        global->progressmode = CURL_PROGRESS_BAR;
       else
       else
-        config->progressmode = CURL_PROGRESS_STATS;
+        global->progressmode = CURL_PROGRESS_STATS;
       break;
       break;
+    case ':': /* --next */
+      return PARAM_NEXT_OPERATION;
     case '~': /* --xattr */
       config->xattr = toggle;
       break;
     case '~': /* --xattr */
       config->xattr = toggle;
       break;
-    case '0':
-      /* HTTP version 1.0 */
-      config->httpversion = CURL_HTTP_VERSION_1_0;
+    case '0': /* --http* options */
+      switch(subletter) {
+      case '\0':
+        /* HTTP version 1.0 */
+        config->httpversion = CURL_HTTP_VERSION_1_0;
+        break;
+      case '1':
+        /* HTTP version 1.1 */
+        config->httpversion = CURL_HTTP_VERSION_1_1;
+        break;
+      case '2':
+        /* HTTP version 2.0 */
+        config->httpversion = CURL_HTTP_VERSION_2_0;
+        break;
+      }
       break;
       break;
-    case '1':
-      /* TLS version 1 */
-      config->ssl_version = CURL_SSLVERSION_TLSv1;
+    case '1': /* --tlsv1* options */
+      switch(subletter) {
+      case '\0':
+        /* TLS version 1.x */
+        config->ssl_version = CURL_SSLVERSION_TLSv1;
+        break;
+      case '0':
+        /* TLS version 1.0 */
+        config->ssl_version = CURL_SSLVERSION_TLSv1_0;
+        break;
+      case '1':
+        /* TLS version 1.1 */
+        config->ssl_version = CURL_SSLVERSION_TLSv1_1;
+        break;
+      case '2':
+        /* TLS version 1.2 */
+        config->ssl_version = CURL_SSLVERSION_TLSv1_2;
+        break;
+      }
       break;
     case '2':
       /* SSL version 2 */
       break;
     case '2':
       /* SSL version 2 */
@@ -1190,7 +1239,7 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
            &-letter */
         char *oldpost = config->postfields;
         curl_off_t oldlen = config->postfieldsize;
            &-letter */
         char *oldpost = config->postfields;
         curl_off_t oldlen = config->postfieldsize;
-        curl_off_t newlen = oldlen + size + 2;
+        curl_off_t newlen = oldlen + curlx_uztoso(size) + 2;
         config->postfields = malloc((size_t)newlen);
         if(!config->postfields) {
           Curl_safefree(oldpost);
         config->postfields = malloc((size_t)newlen);
         if(!config->postfields) {
           Curl_safefree(oldpost);
@@ -1208,7 +1257,7 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
       }
       else {
         config->postfields = postdata;
       }
       else {
         config->postfields = postdata;
-        config->postfieldsize = size;
+        config->postfieldsize = curlx_uztoso(size);
       }
     }
     /*
       }
     }
     /*
@@ -1261,7 +1310,7 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
       case 'f': /* crypto engine */
         GetStr(&config->engine, nextarg);
         if(config->engine && curlx_raw_equal(config->engine,"list"))
       case 'f': /* crypto engine */
         GetStr(&config->engine, nextarg);
         if(config->engine && curlx_raw_equal(config->engine,"list"))
-          config->list_engines = TRUE;
+          return PARAM_ENGINES_REQUESTED;
         break;
       case 'g': /* CA info PEM file */
         /* CA cert directory */
         break;
       case 'g': /* CA info PEM file */
         /* CA cert directory */
@@ -1300,10 +1349,20 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
         else
           return PARAM_LIBCURL_DOESNT_SUPPORT;
         break;
         else
           return PARAM_LIBCURL_DOESNT_SUPPORT;
         break;
-      case 'n': /* no empty SSL fragments */
+      case 'n': /* no empty SSL fragments, --ssl-allow-beast */
         if(curlinfo->features & CURL_VERSION_SSL)
           config->ssl_allow_beast = toggle;
         break;
         if(curlinfo->features & CURL_VERSION_SSL)
           config->ssl_allow_beast = toggle;
         break;
+
+      case 'o': /* --login-options */
+        GetStr(&config->login_options, nextarg);
+        break;
+
+      case 'p': /* Pinned public key DER file */
+        /* Pinned public key DER file */
+        GetStr(&config->pinnedpubkey, nextarg);
+        break;
+
       default: /* certificate file */
       {
         char *certname, *passphrase;
       default: /* certificate file */
       {
         char *certname, *passphrase;
@@ -1345,14 +1404,16 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
 
     case 'h': /* h for help */
       if(toggle) {
 
     case 'h': /* h for help */
       if(toggle) {
-        tool_help();
         return PARAM_HELP_REQUESTED;
       }
       /* we now actually support --no-help too! */
       break;
     case 'H':
       /* A custom header to append to a list */
         return PARAM_HELP_REQUESTED;
       }
       /* we now actually support --no-help too! */
       break;
     case 'H':
       /* A custom header to append to a list */
-      err = add2list(&config->headers, nextarg);
+      if(subletter == 'p') /* --proxy-header */
+        err = add2list(&config->proxyheaders, nextarg);
+      else
+        err = add2list(&config->headers, nextarg);
       if(err)
         return err;
       break;
       if(err)
         return err;
       break;
@@ -1385,7 +1446,7 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
       config->insecure_ok = toggle;
       break;
     case 'K': /* parse config file */
       config->insecure_ok = toggle;
       break;
     case 'K': /* parse config file */
-      if(parseconfig(nextarg, config))
+      if(parseconfig(nextarg, global))
         warnf(config, "error trying read config from the '%s' file\n",
               nextarg);
       break;
         warnf(config, "error trying read config from the '%s' file\n",
               nextarg);
       break;
@@ -1411,8 +1472,7 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
     case 'M': /* M for manual, huge help */
       if(toggle) { /* --no-manual shows no manual... */
 #ifdef USE_MANUAL
     case 'M': /* M for manual, huge help */
       if(toggle) { /* --no-manual shows no manual... */
 #ifdef USE_MANUAL
-        hugehelp();
-        return PARAM_HELP_REQUESTED;
+        return PARAM_MANUAL_REQUESTED;
 #else
         warnf(config,
               "built-in manual was disabled at build-time!\n");
 #else
         warnf(config,
               "built-in manual was disabled at build-time!\n");
@@ -1568,18 +1628,18 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
     case 's':
       /* don't show progress meter, don't show errors : */
       if(toggle)
     case 's':
       /* don't show progress meter, don't show errors : */
       if(toggle)
-        config->mute = config->noprogress = TRUE;
+        global->mute = global->noprogress = TRUE;
       else
       else
-        config->mute = config->noprogress = FALSE;
-      if(config->showerror < 0)
+        global->mute = global->noprogress = FALSE;
+      if(global->showerror < 0)
         /* if still on the default value, set showerror to the reverse of
            toggle. This is to allow -S and -s to be used in an independent
            order but still have the same effect. */
         /* if still on the default value, set showerror to the reverse of
            toggle. This is to allow -S and -s to be used in an independent
            order but still have the same effect. */
-        config->showerror = (!toggle)?TRUE:FALSE; /* toggle off */
+        global->showerror = (!toggle)?TRUE:FALSE; /* toggle off */
       break;
     case 'S':
       /* show errors */
       break;
     case 'S':
       /* show errors */
-      config->showerror = toggle?1:0; /* toggle on if used with -s */
+      global->showerror = toggle?1:0; /* toggle on if used with -s */
       break;
     case 't':
       /* Telnet options */
       break;
     case 't':
       /* Telnet options */
@@ -1624,64 +1684,33 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
       /* user:password  */
       GetStr(&config->userpwd, nextarg);
       cleanarg(nextarg);
       /* user:password  */
       GetStr(&config->userpwd, nextarg);
       cleanarg(nextarg);
-      err = checkpasswd("host", &config->userpwd);
-      if(err)
-        return err;
       break;
     case 'U':
       /* Proxy user:password  */
       GetStr(&config->proxyuserpwd, nextarg);
       cleanarg(nextarg);
       break;
     case 'U':
       /* Proxy user:password  */
       GetStr(&config->proxyuserpwd, nextarg);
       cleanarg(nextarg);
-      err = checkpasswd("proxy", &config->proxyuserpwd);
-      if(err)
-        return err;
       break;
     case 'v':
       if(toggle) {
         /* the '%' thing here will cause the trace get sent to stderr */
       break;
     case 'v':
       if(toggle) {
         /* the '%' thing here will cause the trace get sent to stderr */
-        Curl_safefree(config->trace_dump);
-        config->trace_dump = strdup("%");
-        if(!config->trace_dump)
+        Curl_safefree(global->trace_dump);
+        global->trace_dump = strdup("%");
+        if(!global->trace_dump)
           return PARAM_NO_MEM;
           return PARAM_NO_MEM;
-        if(config->tracetype && (config->tracetype != TRACE_PLAIN))
+        if(global->tracetype && (global->tracetype != TRACE_PLAIN))
           warnf(config,
                 "-v, --verbose overrides an earlier trace/verbose option\n");
           warnf(config,
                 "-v, --verbose overrides an earlier trace/verbose option\n");
-        config->tracetype = TRACE_PLAIN;
+        global->tracetype = TRACE_PLAIN;
       }
       else
         /* verbose is disabled here */
       }
       else
         /* verbose is disabled here */
-        config->tracetype = TRACE_NONE;
+        global->tracetype = TRACE_NONE;
       break;
     case 'V':
       break;
     case 'V':
-    {
-      const char *const *proto;
-
-      if(!toggle)
-        /* --no-version yields no output! */
-        break;
+      if(toggle)    /* --no-version yields no output! */
+        return PARAM_VERSION_INFO_REQUESTED;
+      break;
 
 
-      printf(CURL_ID "%s\n", curl_version());
-      if(curlinfo->protocols) {
-        printf("Protocols: ");
-        for(proto = curlinfo->protocols; *proto; ++proto) {
-          printf("%s ", *proto);
-        }
-        puts(""); /* newline */
-      }
-      if(curlinfo->features) {
-        unsigned int i;
-        printf("Features: ");
-        for(i = 0; i < sizeof(feats)/sizeof(feats[0]); i++) {
-          if(curlinfo->features & feats[i].bitmask)
-            printf("%s ", feats[i].name);
-        }
-#ifdef USE_METALINK
-        printf("Metalink ");
-#endif
-        puts(""); /* newline */
-      }
-    }
-    return PARAM_HELP_REQUESTED;
     case 'w':
       /* get the output string */
       if('@' == *nextarg) {
     case 'w':
       /* get the output string */
       if('@' == *nextarg) {
@@ -1738,6 +1767,7 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
       switch(*nextarg) {
       case '+':
         nextarg++;
       switch(*nextarg) {
       case '+':
         nextarg++;
+        /* FALLTHROUGH */
       default:
         /* If-Modified-Since: (section 14.28 in RFC2068) */
         config->timecond = CURL_TIMECOND_IFMODSINCE;
       default:
         /* If-Modified-Since: (section 14.28 in RFC2068) */
         config->timecond = CURL_TIMECOND_IFMODSINCE;
@@ -1782,3 +1812,84 @@ ParameterError getparameter(char *flag,    /* f or -long-flag */
   return PARAM_OK;
 }
 
   return PARAM_OK;
 }
 
+ParameterError parse_args(struct GlobalConfig *config, int argc,
+                          argv_item_t argv[])
+{
+  int i;
+  bool stillflags;
+  char *orig_opt = NULL;
+  ParameterError result = PARAM_OK;
+  struct OperationConfig *operation = config->first;
+
+  for(i = 1, stillflags = TRUE; i < argc && !result; i++) {
+    orig_opt = argv[i];
+
+    if(stillflags && ('-' == argv[i][0])) {
+      char *nextarg;
+      bool passarg;
+      char *flag = argv[i];
+
+      if(curlx_strequal("--", argv[i]))
+        /* This indicates the end of the flags and thus enables the
+           following (URL) argument to start with -. */
+        stillflags = FALSE;
+      else {
+        nextarg = (i < (argc - 1)) ? argv[i + 1] : NULL;
+
+        result = getparameter(flag, nextarg, &passarg, config, operation);
+        if(result == PARAM_NEXT_OPERATION) {
+          /* Reset result as PARAM_NEXT_OPERATION is only used here and not
+             returned from this function */
+          result = PARAM_OK;
+
+          if(operation->url_list && operation->url_list->url) {
+            /* Allocate the next config */
+            operation->next = malloc(sizeof(struct OperationConfig));
+            if(operation->next) {
+              /* Initialise the newly created config */
+              config_init(operation->next);
+
+              /* Copy the easy handle */
+              operation->next->easy = config->easy;
+
+              /* Set the global config pointer */
+              operation->next->global = config;
+
+              /* Update the last operation pointer */
+              config->last = operation->next;
+
+              /* Move onto the new config */
+              operation->next->prev = operation;
+              operation = operation->next;
+            }
+            else
+              result = PARAM_NO_MEM;
+          }
+        }
+        else if(!result && passarg)
+          i++; /* we're supposed to skip this */
+      }
+    }
+    else {
+      bool used;
+
+      /* Just add the URL please */
+      result = getparameter((char *)"--url", argv[i], &used, config,
+                            operation);
+    }
+  }
+
+  if(result && result != PARAM_HELP_REQUESTED &&
+     result != PARAM_MANUAL_REQUESTED &&
+     result != PARAM_VERSION_INFO_REQUESTED &&
+     result != PARAM_ENGINES_REQUESTED) {
+    const char *reason = param2text(result);
+
+    if(orig_opt && !curlx_strequal(":", orig_opt))
+      helpf(config->errors, "option %s: %s\n", orig_opt, reason);
+    else
+      helpf(config->errors, "%s\n", reason);
+  }
+
+  return result;
+}
index a86bfce..ef4366b 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -30,20 +30,24 @@ typedef enum {
   PARAM_REQUIRES_PARAMETER,
   PARAM_BAD_USE,
   PARAM_HELP_REQUESTED,
   PARAM_REQUIRES_PARAMETER,
   PARAM_BAD_USE,
   PARAM_HELP_REQUESTED,
+  PARAM_MANUAL_REQUESTED,
+  PARAM_VERSION_INFO_REQUESTED,
+  PARAM_ENGINES_REQUESTED,
   PARAM_GOT_EXTRA_PARAMETER,
   PARAM_BAD_NUMERIC,
   PARAM_NEGATIVE_NUMERIC,
   PARAM_LIBCURL_DOESNT_SUPPORT,
   PARAM_NO_MEM,
   PARAM_GOT_EXTRA_PARAMETER,
   PARAM_BAD_NUMERIC,
   PARAM_NEGATIVE_NUMERIC,
   PARAM_LIBCURL_DOESNT_SUPPORT,
   PARAM_NO_MEM,
+  PARAM_NEXT_OPERATION,
   PARAM_LAST
 } ParameterError;
 
   PARAM_LAST
 } ParameterError;
 
-struct Configurable;
+struct GlobalConfig;
+struct OperationConfig;
 
 
-ParameterError getparameter(char *flag,
-                            char *nextarg,
-                            bool *usedarg,
-                            struct Configurable *config);
+ParameterError getparameter(char *flag, char *nextarg, bool *usedarg,
+                            struct GlobalConfig *global,
+                            struct OperationConfig *operation);
 
 #ifdef UNITTESTS
 void parse_cert_parameter(const char *cert_parameter,
 
 #ifdef UNITTESTS
 void parse_cert_parameter(const char *cert_parameter,
@@ -51,5 +55,8 @@ void parse_cert_parameter(const char *cert_parameter,
                           char **passphrase);
 #endif
 
                           char **passphrase);
 #endif
 
+ParameterError parse_args(struct GlobalConfig *config, int argc,
+                          argv_item_t argv[]);
+
 #endif /* HEADER_CURL_TOOL_GETPARAM_H */
 
 #endif /* HEADER_CURL_TOOL_GETPARAM_H */
 
index 0ac7dcb..4c8dcb9 100644 (file)
@@ -117,7 +117,7 @@ char *getpass_r(const char *prompt, char *buffer, size_t buflen)
       if(buffer[i] == '\b')
         /* remove this letter and if this is not the first key, remove the
            previous one as well */
       if(buffer[i] == '\b')
         /* remove this letter and if this is not the first key, remove the
            previous one as well */
-        i = i - (i >= 1) ? 2 : 1;
+        i = i - (i >= 1 ? 2 : 1);
   }
 #ifndef __SYMBIAN32__
   /* since echo is disabled, print a newline */
   }
 #ifndef __SYMBIAN32__
   /* since echo is disabled, print a newline */
index 64534ac..424a2fa 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -23,6 +23,8 @@
 
 #include "tool_panykey.h"
 #include "tool_help.h"
 
 #include "tool_panykey.h"
 #include "tool_help.h"
+#include "tool_libinfo.h"
+#include "tool_version.h"
 
 #include "memdebug.h" /* keep this as LAST include */
 
 
 #include "memdebug.h" /* keep this as LAST include */
 
@@ -49,15 +51,15 @@ static const char *const helptext[] = {
   "     --basic         Use HTTP Basic Authentication (H)",
   "     --cacert FILE   CA certificate to verify peer against (SSL)",
   "     --capath DIR    CA directory to verify peer against (SSL)",
   "     --basic         Use HTTP Basic Authentication (H)",
   "     --cacert FILE   CA certificate to verify peer against (SSL)",
   "     --capath DIR    CA directory to verify peer against (SSL)",
-  " -E, --cert CERT[:PASSWD] Client certificate file and password (SSL)",
-  "     --cert-type TYPE Certificate file type (DER/PEM/ENG) (SSL)",
+  " -E, --cert CERT[:PASSWD]  Client certificate file and password (SSL)",
+  "     --cert-type TYPE  Certificate file type (DER/PEM/ENG) (SSL)",
   "     --ciphers LIST  SSL ciphers to use (SSL)",
   "     --compressed    Request compressed response (using deflate or gzip)",
   "     --ciphers LIST  SSL ciphers to use (SSL)",
   "     --compressed    Request compressed response (using deflate or gzip)",
-  " -K, --config FILE   Specify which config file to read",
+  " -K, --config FILE   Read config from FILE",
   "     --connect-timeout SECONDS  Maximum time allowed for connection",
   "     --connect-timeout SECONDS  Maximum time allowed for connection",
-  " -C, --continue-at OFFSET  Resumed transfer offset",
-  " -b, --cookie STRING/FILE  String or file to read cookies from (H)",
-  " -c, --cookie-jar FILE  Write cookies to this file after operation (H)",
+  " -C, --continue-at OFFSET  Resumed transfer OFFSET",
+  " -b, --cookie STRING/FILE  Read cookies from STRING/FILE (H)",
+  " -c, --cookie-jar FILE  Write cookies to FILE after operation (H)",
   "     --create-dirs   Create necessary local directory hierarchy",
   "     --crlf          Convert LF to CRLF in upload",
   "     --crlfile FILE  Get a CRL list in PEM format from the given file",
   "     --create-dirs   Create necessary local directory hierarchy",
   "     --crlf          Convert LF to CRLF in upload",
   "     --crlfile FILE  Get a CRL list in PEM format from the given file",
@@ -65,13 +67,17 @@ static const char *const helptext[] = {
   "     --data-ascii DATA  HTTP POST ASCII data (H)",
   "     --data-binary DATA  HTTP POST binary data (H)",
   "     --data-urlencode DATA  HTTP POST data url encoded (H)",
   "     --data-ascii DATA  HTTP POST ASCII data (H)",
   "     --data-binary DATA  HTTP POST binary data (H)",
   "     --data-urlencode DATA  HTTP POST data url encoded (H)",
-  "     --delegation STRING GSS-API delegation permission",
+  "     --delegation STRING  GSS-API delegation permission",
   "     --digest        Use HTTP Digest Authentication (H)",
   "     --disable-eprt  Inhibit using EPRT or LPRT (F)",
   "     --disable-epsv  Inhibit using EPSV (F)",
   "     --digest        Use HTTP Digest Authentication (H)",
   "     --disable-eprt  Inhibit using EPRT or LPRT (F)",
   "     --disable-epsv  Inhibit using EPSV (F)",
-  " -D, --dump-header FILE  Write the headers to this file",
+  "     --dns-servers   DNS server addrs to use: 1.1.1.1;2.2.2.2",
+  "     --dns-interface  Interface to use for DNS requests",
+  "     --dns-ipv4-addr  IPv4 address to use for DNS requests, dot notation",
+  "     --dns-ipv6-addr  IPv6 address to use for DNS requests, dot notation",
+  " -D, --dump-header FILE  Write the headers to FILE",
   "     --egd-file FILE  EGD socket path for random data (SSL)",
   "     --egd-file FILE  EGD socket path for random data (SSL)",
-  "     --engine ENGINE  Crypto engine (SSL). \"--engine list\" for list",
+  "     --engine ENGINE  Crypto engine (use \"--engine list\" for list) (SSL)",
 #ifdef USE_ENVIRONMENT
   "     --environment   Write results to environment variables (RISC OS)",
 #endif
 #ifdef USE_ENVIRONMENT
   "     --environment   Write results to environment variables (RISC OS)",
 #endif
@@ -82,61 +88,72 @@ static const char *const helptext[] = {
   "     --ftp-alternative-to-user COMMAND  "
   "String to replace \"USER [name]\" (F)",
   "     --ftp-create-dirs  Create the remote dirs if not present (F)",
   "     --ftp-alternative-to-user COMMAND  "
   "String to replace \"USER [name]\" (F)",
   "     --ftp-create-dirs  Create the remote dirs if not present (F)",
-  "     --ftp-method [MULTICWD/NOCWD/SINGLECWD] Control CWD usage (F)",
+  "     --ftp-method [MULTICWD/NOCWD/SINGLECWD]  Control CWD usage (F)",
   "     --ftp-pasv      Use PASV/EPSV instead of PORT (F)",
   " -P, --ftp-port ADR  Use PORT with given address instead of PASV (F)",
   "     --ftp-pasv      Use PASV/EPSV instead of PORT (F)",
   " -P, --ftp-port ADR  Use PORT with given address instead of PASV (F)",
-  "     --ftp-skip-pasv-ip Skip the IP address for PASV (F)\n"
+  "     --ftp-skip-pasv-ip  Skip the IP address for PASV (F)\n"
   "     --ftp-pret      Send PRET before PASV (for drftpd) (F)",
   "     --ftp-ssl-ccc   Send CCC after authenticating (F)",
   "     --ftp-ssl-ccc-mode ACTIVE/PASSIVE  Set CCC mode (F)",
   "     --ftp-pret      Send PRET before PASV (for drftpd) (F)",
   "     --ftp-ssl-ccc   Send CCC after authenticating (F)",
   "     --ftp-ssl-ccc-mode ACTIVE/PASSIVE  Set CCC mode (F)",
-  "     --ftp-ssl-control Require SSL/TLS for ftp login, "
+  "     --ftp-ssl-control  Require SSL/TLS for FTP login, "
   "clear for transfer (F)",
   " -G, --get           Send the -d data with a HTTP GET (H)",
   " -g, --globoff       Disable URL sequences and ranges using {} and []",
   "clear for transfer (F)",
   " -G, --get           Send the -d data with a HTTP GET (H)",
   " -g, --globoff       Disable URL sequences and ranges using {} and []",
-  " -H, --header LINE   Custom header to pass to server (H)",
+  " -H, --header LINE   Pass custom header LINE to server (H)",
   " -I, --head          Show document info only",
   " -h, --help          This help text",
   "     --hostpubmd5 MD5  "
   " -I, --head          Show document info only",
   " -h, --help          This help text",
   "     --hostpubmd5 MD5  "
-  "Hex encoded MD5 string of the host public key. (SSH)",
+  "Hex-encoded MD5 string of the host public key. (SSH)",
   " -0, --http1.0       Use HTTP 1.0 (H)",
   " -0, --http1.0       Use HTTP 1.0 (H)",
+  "     --http1.1       Use HTTP 1.1 (H)",
+  "     --http2         Use HTTP 2 (H)",
   "     --ignore-content-length  Ignore the HTTP Content-Length header",
   " -i, --include       Include protocol headers in the output (H/F)",
   " -k, --insecure      Allow connections to SSL sites without certs (H)",
   "     --ignore-content-length  Ignore the HTTP Content-Length header",
   " -i, --include       Include protocol headers in the output (H/F)",
   " -k, --insecure      Allow connections to SSL sites without certs (H)",
-  "     --interface INTERFACE  Specify network interface/address to use",
+  "     --interface INTERFACE  Use network INTERFACE (or address)",
   " -4, --ipv4          Resolve name to IPv4 address",
   " -6, --ipv6          Resolve name to IPv6 address",
   " -4, --ipv4          Resolve name to IPv4 address",
   " -6, --ipv6          Resolve name to IPv6 address",
-  " -j, --junk-session-cookies Ignore session cookies read from file (H)",
-  "     --keepalive-time SECONDS  Interval between keepalive probes",
+  " -j, --junk-session-cookies  Ignore session cookies read from file (H)",
+  "     --keepalive-time SECONDS  Wait SECONDS between keepalive probes",
   "     --key KEY       Private key file name (SSL/SSH)",
   "     --key KEY       Private key file name (SSL/SSH)",
-  "     --key-type TYPE Private key file type (DER/PEM/ENG) (SSL)",
-  "     --krb LEVEL     Enable Kerberos with specified security level (F)",
+  "     --key-type TYPE  Private key file type (DER/PEM/ENG) (SSL)",
+  "     --krb LEVEL     Enable Kerberos with security LEVEL (F)",
 #ifndef CURL_DISABLE_LIBCURL_OPTION
   "     --libcurl FILE  Dump libcurl equivalent code of this command line",
 #endif
 #ifndef CURL_DISABLE_LIBCURL_OPTION
   "     --libcurl FILE  Dump libcurl equivalent code of this command line",
 #endif
-  "     --limit-rate RATE  Limit transfer speed to this rate",
-  " -l, --list-only     List only names of an FTP directory (F)",
-  "     --local-port RANGE  Force use of these local port numbers",
+  "     --limit-rate RATE  Limit transfer speed to RATE",
+  " -l, --list-only     List only mode (F/POP3)",
+  "     --local-port RANGE  Force use of RANGE for local port numbers",
   " -L, --location      Follow redirects (H)",
   " -L, --location      Follow redirects (H)",
-  "     --location-trusted like --location and send auth to other hosts (H)",
+  "     --location-trusted  "
+  "Like '--location', and send auth to other hosts (H)",
+  "     --login-options OPTIONS  Server login options (IMAP, POP3, SMTP)",
   " -M, --manual        Display the full manual",
   " -M, --manual        Display the full manual",
-  "     --mail-from FROM  Mail from this address",
-  "     --mail-rcpt TO  Mail to this receiver(s)",
-  "     --mail-auth AUTH  Originator address of the original email",
+  "     --mail-from FROM  Mail from this address (SMTP)",
+  "     --mail-rcpt TO  Mail to this/these addresses (SMTP)",
+  "     --mail-auth AUTH  Originator address of the original email (SMTP)",
   "     --max-filesize BYTES  Maximum file size to download (H/F)",
   "     --max-redirs NUM  Maximum number of redirects allowed (H)",
   " -m, --max-time SECONDS  Maximum time allowed for the transfer",
   "     --metalink      Process given URLs as metalink XML file",
   "     --max-filesize BYTES  Maximum file size to download (H/F)",
   "     --max-redirs NUM  Maximum number of redirects allowed (H)",
   " -m, --max-time SECONDS  Maximum time allowed for the transfer",
   "     --metalink      Process given URLs as metalink XML file",
-  "     --negotiate     Use HTTP Negotiate Authentication (H)",
+  "     --negotiate     Use HTTP Negotiate (SPNEGO) authentication (H)",
   " -n, --netrc         Must read .netrc for user name and password",
   " -n, --netrc         Must read .netrc for user name and password",
-  "     --netrc-optional Use either .netrc or URL; overrides -n",
-  "     --netrc-file FILE  Set up the netrc filename to use",
+  "     --netrc-optional  Use either .netrc or URL; overrides -n",
+  "     --netrc-file FILE  Specify FILE for netrc",
+  " -:  --next          "
+  "Allows the following URL to use a separate set of options",
+  "     --no-alpn       Disable the ALPN TLS extension (H)",
   " -N, --no-buffer     Disable buffering of the output stream",
   "     --no-keepalive  Disable keepalive use on the connection",
   " -N, --no-buffer     Disable buffering of the output stream",
   "     --no-keepalive  Disable keepalive use on the connection",
+  "     --no-npn        Disable the NPN TLS extension (H)",
   "     --no-sessionid  Disable SSL session-ID reusing (SSL)",
   "     --noproxy       List of hosts which do not use proxy",
   "     --ntlm          Use HTTP NTLM authentication (H)",
   "     --no-sessionid  Disable SSL session-ID reusing (SSL)",
   "     --noproxy       List of hosts which do not use proxy",
   "     --ntlm          Use HTTP NTLM authentication (H)",
-  " -o, --output FILE   Write output to <file> instead of stdout",
+  "     --oauth2-bearer TOKEN  OAuth 2 Bearer Token (IMAP, POP3, SMTP)",
+  " -o, --output FILE   Write to FILE instead of stdout",
   "     --pass PASS     Pass phrase for the private key (SSL/SSH)",
   "     --pass PASS     Pass phrase for the private key (SSL/SSH)",
+  "     --pinnedpubkey FILE  Public key (PEM/DER) to verify peer against "
+  "(OpenSSL/GnuTLS/GSKit only)",
   "     --post301       "
   "Do not switch to GET after following a 301 redirect (H)",
   "     --post302       "
   "     --post301       "
   "Do not switch to GET after following a 301 redirect (H)",
   "     --post302       "
@@ -144,14 +161,14 @@ static const char *const helptext[] = {
   "     --post303       "
   "Do not switch to GET after following a 303 redirect (H)",
   " -#, --progress-bar  Display transfer progress as a progress bar",
   "     --post303       "
   "Do not switch to GET after following a 303 redirect (H)",
   " -#, --progress-bar  Display transfer progress as a progress bar",
-  "     --proto PROTOCOLS  Enable/disable specified protocols",
-  "     --proto-redir PROTOCOLS  "
-  "Enable/disable specified protocols on redirect",
-  " -x, --proxy [PROTOCOL://]HOST[:PORT] Use proxy on given port",
-  "     --proxy-anyauth Pick \"any\" proxy authentication method (H)",
+  "     --proto PROTOCOLS  Enable/disable PROTOCOLS",
+  "     --proto-redir PROTOCOLS  Enable/disable PROTOCOLS on redirect",
+  " -x, --proxy [PROTOCOL://]HOST[:PORT]  Use proxy on given port",
+  "     --proxy-anyauth  Pick \"any\" proxy authentication method (H)",
   "     --proxy-basic   Use Basic authentication on the proxy (H)",
   "     --proxy-digest  Use Digest authentication on the proxy (H)",
   "     --proxy-basic   Use Basic authentication on the proxy (H)",
   "     --proxy-digest  Use Digest authentication on the proxy (H)",
-  "     --proxy-negotiate Use Negotiate authentication on the proxy (H)",
+  "     --proxy-negotiate  "
+  "Use HTTP Negotiate (SPNEGO) authentication on the proxy (H)",
   "     --proxy-ntlm    Use NTLM authentication on the proxy (H)",
   " -U, --proxy-user USER[:PASSWORD]  Proxy user and password",
   "     --proxy1.0 HOST[:PORT]  Use HTTP/1.0 proxy on given port",
   "     --proxy-ntlm    Use NTLM authentication on the proxy (H)",
   " -U, --proxy-user USER[:PASSWORD]  Proxy user and password",
   "     --proxy1.0 HOST[:PORT]  Use HTTP/1.0 proxy on given port",
@@ -159,50 +176,52 @@ static const char *const helptext[] = {
   "     --pubkey KEY    Public key file name (SSH)",
   " -Q, --quote CMD     Send command(s) to server before transfer (F/SFTP)",
   "     --random-file FILE  File for reading random data from (SSL)",
   "     --pubkey KEY    Public key file name (SSH)",
   " -Q, --quote CMD     Send command(s) to server before transfer (F/SFTP)",
   "     --random-file FILE  File for reading random data from (SSL)",
-  " -r, --range RANGE   Retrieve only the bytes within a range",
-  "     --raw           Do HTTP \"raw\", without any transfer decoding (H)",
+  " -r, --range RANGE   Retrieve only the bytes within RANGE",
+  "     --raw           Do HTTP \"raw\"; no transfer decoding (H)",
   " -e, --referer       Referer URL (H)",
   " -e, --referer       Referer URL (H)",
-  " -J, --remote-header-name Use the header-provided filename (H)",
+  " -J, --remote-header-name  Use the header-provided filename (H)",
   " -O, --remote-name   Write output to a file named as the remote file",
   " -O, --remote-name   Write output to a file named as the remote file",
-  "     --remote-name-all Use the remote file name for all URLs",
+  "     --remote-name-all  Use the remote file name for all URLs",
   " -R, --remote-time   Set the remote file's time on the local output",
   " -X, --request COMMAND  Specify request command to use",
   "     --resolve HOST:PORT:ADDRESS  Force resolve of HOST:PORT to ADDRESS",
   "     --retry NUM   "
   "Retry request NUM times if transient problems occur",
   " -R, --remote-time   Set the remote file's time on the local output",
   " -X, --request COMMAND  Specify request command to use",
   "     --resolve HOST:PORT:ADDRESS  Force resolve of HOST:PORT to ADDRESS",
   "     --retry NUM   "
   "Retry request NUM times if transient problems occur",
-  "     --retry-delay SECONDS "
-  "When retrying, wait this many seconds between each",
+  "     --retry-delay SECONDS  Wait SECONDS between retries",
   "     --retry-max-time SECONDS  Retry only within this period",
   "     --retry-max-time SECONDS  Retry only within this period",
-  "     --sasl-ir       Enable initial response in SASL authentication"
+  "     --sasl-ir       Enable initial response in SASL authentication",
   " -S, --show-error    "
   "Show error. With -s, make curl show errors when they occur",
   " -S, --show-error    "
   "Show error. With -s, make curl show errors when they occur",
-  " -s, --silent        Silent mode. Don't output anything",
+  " -s, --silent        Silent mode (don't output anything)",
   "     --socks4 HOST[:PORT]  SOCKS4 proxy on given host + port",
   "     --socks4a HOST[:PORT]  SOCKS4a proxy on given host + port",
   "     --socks5 HOST[:PORT]  SOCKS5 proxy on given host + port",
   "     --socks4 HOST[:PORT]  SOCKS4 proxy on given host + port",
   "     --socks4a HOST[:PORT]  SOCKS4a proxy on given host + port",
   "     --socks5 HOST[:PORT]  SOCKS5 proxy on given host + port",
-  "     --socks5-hostname HOST[:PORT] "
+  "     --socks5-hostname HOST[:PORT]  "
   "SOCKS5 proxy, pass host name to proxy",
 #if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
   "SOCKS5 proxy, pass host name to proxy",
 #if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
-  "     --socks5-gssapi-service NAME  SOCKS5 proxy service name for gssapi",
+  "     --socks5-gssapi-service NAME  SOCKS5 proxy service name for GSS-API",
   "     --socks5-gssapi-nec  Compatibility with NEC SOCKS5 server",
 #endif
   " -Y, --speed-limit RATE  "
   "     --socks5-gssapi-nec  Compatibility with NEC SOCKS5 server",
 #endif
   " -Y, --speed-limit RATE  "
-  "Stop transfers below speed-limit for 'speed-time' secs",
+  "Stop transfers below RATE for 'speed-time' secs",
   " -y, --speed-time SECONDS  "
   " -y, --speed-time SECONDS  "
-  "Time for trig speed-limit abort. Defaults to 30",
+  "Trigger 'speed-limit' abort after SECONDS (default: 30)",
   "     --ssl           Try SSL/TLS (FTP, IMAP, POP3, SMTP)",
   "     --ssl-reqd      Require SSL/TLS (FTP, IMAP, POP3, SMTP)",
   " -2, --sslv2         Use SSLv2 (SSL)",
   " -3, --sslv3         Use SSLv3 (SSL)",
   "     --ssl           Try SSL/TLS (FTP, IMAP, POP3, SMTP)",
   "     --ssl-reqd      Require SSL/TLS (FTP, IMAP, POP3, SMTP)",
   " -2, --sslv2         Use SSLv2 (SSL)",
   " -3, --sslv3         Use SSLv3 (SSL)",
-  "     --ssl-allow-beast Allow security flaw to improve interop (SSL)",
-  "     --stderr FILE   Where to redirect stderr. - means stdout",
+  "     --ssl-allow-beast  Allow security flaw to improve interop (SSL)",
+  "     --stderr FILE   Where to redirect stderr (use \"-\" for stdout)",
   "     --tcp-nodelay   Use the TCP_NODELAY option",
   " -t, --telnet-option OPT=VAL  Set telnet option",
   "     --tftp-blksize VALUE  Set TFTP BLKSIZE option (must be >512)",
   " -z, --time-cond TIME  Transfer based on a time condition",
   "     --tcp-nodelay   Use the TCP_NODELAY option",
   " -t, --telnet-option OPT=VAL  Set telnet option",
   "     --tftp-blksize VALUE  Set TFTP BLKSIZE option (must be >512)",
   " -z, --time-cond TIME  Transfer based on a time condition",
-  " -1, --tlsv1         Use TLSv1 (SSL)",
-  "     --trace FILE    Write a debug trace to the given file",
-  "     --trace-ascii FILE  Like --trace but without the hex output",
+  " -1, --tlsv1         Use => TLSv1 (SSL)",
+  "     --tlsv1.0       Use TLSv1.0 (SSL)",
+  "     --tlsv1.1       Use TLSv1.1 (SSL)",
+  "     --tlsv1.2       Use TLSv1.2 (SSL)",
+  "     --trace FILE    Write a debug trace to FILE",
+  "     --trace-ascii FILE  Like --trace, but without hex output",
   "     --trace-time    Add time stamps to trace/verbose output",
   "     --tr-encoding   Request compressed transfer encoding (H)",
   " -T, --upload-file FILE  Transfer FILE to destination",
   "     --trace-time    Add time stamps to trace/verbose output",
   "     --tr-encoding   Request compressed transfer encoding (H)",
   " -T, --upload-file FILE  Transfer FILE to destination",
@@ -210,17 +229,18 @@ static const char *const helptext[] = {
   " -B, --use-ascii     Use ASCII/text transfer",
   " -u, --user USER[:PASSWORD]  Server user and password",
   "     --tlsuser USER  TLS username",
   " -B, --use-ascii     Use ASCII/text transfer",
   " -u, --user USER[:PASSWORD]  Server user and password",
   "     --tlsuser USER  TLS username",
-  "     --tlspassword STRING TLS password",
-  "     --tlsauthtype STRING  TLS authentication type (default SRP)",
-  " -A, --user-agent STRING  User-Agent to send to server (H)",
+  "     --tlspassword STRING  TLS password",
+  "     --tlsauthtype STRING  TLS authentication type (default: SRP)",
+  "     --unix-socket FILE    Connect through this Unix domain socket",
+  " -A, --user-agent STRING  Send User-Agent STRING to server (H)",
   " -v, --verbose       Make the operation more talkative",
   " -V, --version       Show version number and quit",
 #ifdef USE_WATT32
   "     --wdebug        Turn on Watt-32 debugging",
 #endif
   " -v, --verbose       Make the operation more talkative",
   " -V, --version       Show version number and quit",
 #ifdef USE_WATT32
   "     --wdebug        Turn on Watt-32 debugging",
 #endif
-  " -w, --write-out FORMAT  What to output after completion",
-  "     --xattr        Store metadata in extended file attributes",
-  " -q                 If used as the first parameter disables .curlrc",
+  " -w, --write-out FORMAT  Use output FORMAT after completion",
+  "     --xattr         Store metadata in extended file attributes",
+  " -q                  Disable .curlrc (must be first parameter)",
   NULL
 };
 
   NULL
 };
 
@@ -232,6 +252,32 @@ static const char *const helptext[] = {
 #  define PRINT_LINES_PAUSE 16
 #endif
 
 #  define PRINT_LINES_PAUSE 16
 #endif
 
+struct feat {
+  const char *name;
+  int bitmask;
+};
+
+static const struct feat feats[] = {
+  {"AsynchDNS",      CURL_VERSION_ASYNCHDNS},
+  {"Debug",          CURL_VERSION_DEBUG},
+  {"TrackMemory",    CURL_VERSION_CURLDEBUG},
+  {"IDN",            CURL_VERSION_IDN},
+  {"IPv6",           CURL_VERSION_IPV6},
+  {"Largefile",      CURL_VERSION_LARGEFILE},
+  {"SSPI",           CURL_VERSION_SSPI},
+  {"GSS-API",        CURL_VERSION_GSSAPI},
+  {"Kerberos",       CURL_VERSION_KERBEROS5},
+  {"SPNEGO",         CURL_VERSION_SPNEGO},
+  {"NTLM",           CURL_VERSION_NTLM},
+  {"NTLM_WB",        CURL_VERSION_NTLM_WB},
+  {"SSL",            CURL_VERSION_SSL},
+  {"libz",           CURL_VERSION_LIBZ},
+  {"CharConv",       CURL_VERSION_CONV},
+  {"TLS-SRP",        CURL_VERSION_TLSAUTH_SRP},
+  {"HTTP2",          CURL_VERSION_HTTP2},
+  {"UnixSockets",    CURL_VERSION_UNIX_SOCKETS},
+};
+
 void tool_help(void)
 {
   int i;
 void tool_help(void)
 {
   int i;
@@ -244,3 +290,48 @@ void tool_help(void)
   }
 }
 
   }
 }
 
+void tool_version_info(void)
+{
+  const char *const *proto;
+
+  printf(CURL_ID "%s\n", curl_version());
+  if(curlinfo->protocols) {
+    printf("Protocols: ");
+    for(proto = curlinfo->protocols; *proto; ++proto) {
+      printf("%s ", *proto);
+    }
+    puts(""); /* newline */
+  }
+  if(curlinfo->features) {
+    unsigned int i;
+    printf("Features: ");
+    for(i = 0; i < sizeof(feats)/sizeof(feats[0]); i++) {
+      if(curlinfo->features & feats[i].bitmask)
+        printf("%s ", feats[i].name);
+    }
+#ifdef USE_METALINK
+    printf("Metalink ");
+#endif
+    puts(""); /* newline */
+  }
+}
+
+void tool_list_engines(CURL *curl)
+{
+  struct curl_slist *engines = NULL;
+
+  /* Get the list of engines */
+  curl_easy_getinfo(curl, CURLINFO_SSL_ENGINES, &engines);
+
+  puts("Build-time engines:");
+  if(engines) {
+    for(; engines; engines = engines->next)
+      printf("  %s\n", engines->data);
+  }
+  else {
+    puts("  <none>");
+  }
+
+  /* Cleanup the list of engines */
+  curl_slist_free_all(engines);
+}
index 1b757dc..9ef5006 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -24,6 +24,8 @@
 #include "tool_setup.h"
 
 void tool_help(void);
 #include "tool_setup.h"
 
 void tool_help(void);
+void tool_list_engines(CURL *curl);
+void tool_version_info(void);
 
 #endif /* HEADER_CURL_TOOL_HELP_H */
 
 
 #endif /* HEADER_CURL_TOOL_HELP_H */
 
index ae8aaaf..dbf32f8 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -65,7 +65,7 @@ const char *param2text(int res)
   }
 }
 
   }
 }
 
-int SetHTTPrequest(struct Configurable *config, HttpReq req, HttpReq *store)
+int SetHTTPrequest(struct OperationConfig *config, HttpReq req, HttpReq *store)
 {
   if((*store == HTTPREQ_UNSPEC) ||
      (*store == req)) {
 {
   if((*store == HTTPREQ_UNSPEC) ||
      (*store == req)) {
@@ -75,4 +75,3 @@ int SetHTTPrequest(struct Configurable *config, HttpReq req, HttpReq *store)
   warnf(config, "You can only select one HTTP request!\n");
   return 1;
 }
   warnf(config, "You can only select one HTTP request!\n");
   return 1;
 }
-
index c0bcd89..73bcfc7 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -25,7 +25,8 @@
 
 const char *param2text(int res);
 
 
 const char *param2text(int res);
 
-int SetHTTPrequest(struct Configurable *config, HttpReq req, HttpReq *store);
+int SetHTTPrequest(struct OperationConfig *config, HttpReq req,
+                   HttpReq *store);
 
 #endif /* HEADER_CURL_TOOL_HELPERS_H */
 
 
 #endif /* HEADER_CURL_TOOL_HELPERS_H */
 
index 4ef2f48..3010880 100644 (file)
@@ -2,7 +2,7 @@
 #ifndef HAVE_LIBZ
 /*
  * NEVER EVER edit this manually, fix the mkhelp.pl script instead!
 #ifndef HAVE_LIBZ
 /*
  * NEVER EVER edit this manually, fix the mkhelp.pl script instead!
- * Generation time: Mon Aug  5 13:11:08 2013
+ * Generation time: Sun Dec 28 14:36:38 2014
  */
 #ifdef USE_MANUAL
 #include "tool_hugehelp.h"
  */
 #ifdef USE_MANUAL
 #include "tool_hugehelp.h"
@@ -26,9 +26,9 @@ void hugehelp(void)
 "       supported protocols (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS,  IMAP,\n"
 , stdout);
  fputs(
 "       supported protocols (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS,  IMAP,\n"
 , stdout);
  fputs(
-"       IMAPS,  LDAP,  LDAPS,  POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS,\n"
-"       TELNET and TFTP).  The command is designed to work without user  inter-\n"
-"       action.\n"
+"       IMAPS,  LDAP,  LDAPS,  POP3,  POP3S,  RTMP, RTSP, SCP, SFTP, SMB, SMBS,\n"
+"       SMTP, SMTPS, TELNET and TFTP). The command is designed to work  without\n"
+"       user interaction.\n"
 "\n"
 "       curl offers a busload of useful tricks like proxy support, user authen-\n"
 "       tication, FTP upload, HTTP post, SSL connections, cookies, file  trans-\n"
 "\n"
 "       curl offers a busload of useful tricks like proxy support, user authen-\n"
 "       tication, FTP upload, HTTP post, SSL connections, cookies, file  trans-\n"
@@ -47,20 +47,22 @@ void hugehelp(void)
 "       You can specify multiple URLs or parts of URLs  by  writing  part  sets\n"
 "       within braces as in:\n"
 "\n"
 "       You can specify multiple URLs or parts of URLs  by  writing  part  sets\n"
 "       within braces as in:\n"
 "\n"
-"        http://site.{one,two,three}.com\n"
+"         http://site.{one,two,three}.com\n"
 "\n"
 "       or you can get sequences of alphanumeric series by using [] as in:\n"
 "\n"
 "\n"
 "       or you can get sequences of alphanumeric series by using [] as in:\n"
 "\n"
-"        ftp://ftp.numericals.com/file[1-100].txt\n"
+"         ftp://ftp.numericals.com/file[1-100].txt\n"
+"\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"        ftp://ftp.numericals.com/file[001-100].txt    (with leading zeros)\n"
-"        ftp://ftp.letters.com/file[a-z].txt\n"
+"         ftp://ftp.numericals.com/file[001-100].txt    (with leading zeros)\n"
+"\n"
+"         ftp://ftp.letters.com/file[a-z].txt\n"
 "\n"
 "       Nested  sequences  are not supported, but you can use several ones next\n"
 "       to each other:\n"
 "\n"
 "\n"
 "       Nested  sequences  are not supported, but you can use several ones next\n"
 "       to each other:\n"
 "\n"
-"        http://any.org/archive[1996-1999]/vol[1-4]/part{a,b,c}.html\n"
+"         http://any.org/archive[1996-1999]/vol[1-4]/part{a,b,c}.html\n"
 "\n"
 "       You can specify any amount of URLs on the command line.  They  will  be\n"
 "       fetched in a sequential manner in the specified order.\n"
 "\n"
 "       You can specify any amount of URLs on the command line.  They  will  be\n"
 "       fetched in a sequential manner in the specified order.\n"
@@ -70,26 +72,39 @@ void hugehelp(void)
 "       You  can  specify a step counter for the ranges to get every Nth number\n"
 "       or letter:\n"
 "\n"
 "       You  can  specify a step counter for the ranges to get every Nth number\n"
 "       or letter:\n"
 "\n"
-"        http://www.numericals.com/file[1-100:10].txt\n"
-"        http://www.letters.com/file[a-z:2].txt\n"
+"         http://www.numericals.com/file[1-100:10].txt\n"
+"\n"
+"         http://www.letters.com/file[a-z:2].txt\n"
+"\n"
+"       When using [] or {} sequences when invoked from a command line  prompt,\n"
+"       you probably have to put the full URL within double quotes to avoid the\n"
+"       shell from interfering with it. This also  goes  for  other  characters\n"
+"       treated special, like for example '&', '?' and '*'.\n"
+"\n"
+, stdout);
+ fputs(
+"       Provide  the IPv6 zone index in the URL with an escaped percentage sign\n"
+"       and the interface name. Like in\n"
+"\n"
+"         http://[fe80::3%25eth0]/\n"
 "\n"
 "       If you specify URL without protocol:// prefix,  curl  will  attempt  to\n"
 "       guess  what  protocol  you might want. It will then default to HTTP but\n"
 "       try other protocols based on often-used host name prefixes.  For  exam-\n"
 "\n"
 "       If you specify URL without protocol:// prefix,  curl  will  attempt  to\n"
 "       guess  what  protocol  you might want. It will then default to HTTP but\n"
 "       try other protocols based on often-used host name prefixes.  For  exam-\n"
-, stdout);
- fputs(
 "       ple,  for  host names starting with \"ftp.\" curl will assume you want to\n"
 "       speak FTP.\n"
 "\n"
 "       ple,  for  host names starting with \"ftp.\" curl will assume you want to\n"
 "       speak FTP.\n"
 "\n"
+, stdout);
+ fputs(
 "       curl will do its best to use what you pass to it as a URL.  It  is  not\n"
 "       trying  to  validate it as a syntactically correct URL by any means but\n"
 "       is instead very liberal with what it accepts.\n"
 "\n"
 "       curl will attempt to re-use connections for multiple file transfers, so\n"
 "       that  getting many files from the same server will not do multiple con-\n"
 "       curl will do its best to use what you pass to it as a URL.  It  is  not\n"
 "       trying  to  validate it as a syntactically correct URL by any means but\n"
 "       is instead very liberal with what it accepts.\n"
 "\n"
 "       curl will attempt to re-use connections for multiple file transfers, so\n"
 "       that  getting many files from the same server will not do multiple con-\n"
+"       nects / handshakes. This improves speed. Of course this is only done on\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"       nects / handshakes. This improves speed. Of course this is only done on\n"
 "       files  specified  on  a  single command line and cannot be used between\n"
 "       separate curl invokes.\n"
 "\n"
 "       files  specified  on  a  single command line and cannot be used between\n"
 "       separate curl invokes.\n"
 "\n"
@@ -99,9 +114,9 @@ void hugehelp(void)
 "       left, etc.\n"
 "\n"
 "       curl displays this data to the terminal by default, so  if  you  invoke\n"
 "       left, etc.\n"
 "\n"
 "       curl displays this data to the terminal by default, so  if  you  invoke\n"
+"       curl  to do an operation and it is about to write data to the terminal,\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"       curl  to do an operation and it is about to write data to the terminal,\n"
 "       it disables the progress meter as otherwise it would mess up the output\n"
 "       mixing progress meter and response data.\n"
 "\n"
 "       it disables the progress meter as otherwise it would mess up the output\n"
 "       mixing progress meter and response data.\n"
 "\n"
@@ -110,19 +125,33 @@ void hugehelp(void)
 "       [file] or similar.\n"
 "\n"
 "       It  is not the same case for FTP upload as that operation does not spit\n"
 "       [file] or similar.\n"
 "\n"
 "       It  is not the same case for FTP upload as that operation does not spit\n"
-, stdout);
- fputs(
 "       out any response data to the terminal.\n"
 "\n"
 "       out any response data to the terminal.\n"
 "\n"
+, stdout);
+ fputs(
 "       If you prefer a progress \"bar\" instead of the regular meter, -# is your\n"
 "       friend.\n"
 "OPTIONS\n"
 "       If you prefer a progress \"bar\" instead of the regular meter, -# is your\n"
 "       friend.\n"
 "OPTIONS\n"
+"       Options  start  with  one or two dashes. Many of the options require an\n"
+"       additional value next to them.\n"
+"\n"
+"       The short \"single-dash\" form of the options, -d  for  example,  may  be\n"
+"       used with or without a space between it and its value, although a space\n"
+"       is a recommended separator. The long  \"double-dash\"  form,  --data  for\n"
+, stdout);
+ fputs(
+"       example, requires a space between it and its value.\n"
+"\n"
+"       Short version options that don't need any additional values can be used\n"
+"       immediately next to each other, like for example you  can  specify  all\n"
+"       the options -O, -L and -v at once as -OLv.\n"
+"\n"
 "       In general, all boolean options are enabled with --option and yet again\n"
 "       disabled with --no-option. That is, you use the exact same option  name\n"
 "       In general, all boolean options are enabled with --option and yet again\n"
 "       disabled with --no-option. That is, you use the exact same option  name\n"
-"       but prefix it with \"no-\". However, in this list we mostly only list and\n"
-"       show the --option version of them. (This concept with --no options  was\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"       but prefix it with \"no-\". However, in this list we mostly only list and\n"
+"       show the --option version of them. (This concept with --no options  was\n"
 "       added  in  7.19.0.  Previously  most  options  were  toggled  on/off on\n"
 "       repeated use of the same command line option.)\n"
 "\n"
 "       added  in  7.19.0.  Previously  most  options  were  toggled  on/off on\n"
 "       repeated use of the same command line option.)\n"
 "\n"
@@ -130,170 +159,213 @@ void hugehelp(void)
 "              Make curl display progress as a simple progress bar  instead  of\n"
 "              the standard, more informational, meter.\n"
 "\n"
 "              Make curl display progress as a simple progress bar  instead  of\n"
 "              the standard, more informational, meter.\n"
 "\n"
+"       -:, --next\n"
+, stdout);
+ fputs(
+"              Tells curl to use a separate operation for the following URL and\n"
+"              associated  options.  This  allows  you  to  send  several   URL\n"
+"              requests,  each  with  their  own specific options, for example,\n"
+"              such as different user names or custom requests for each. (Added\n"
+"              in 7.36.0)\n"
+"\n"
 "       -0, --http1.0\n"
 "       -0, --http1.0\n"
-"              (HTTP)  Forces curl to issue its requests using HTTP 1.0 instead\n"
-"              of using its internally preferred: HTTP 1.1.\n"
+"              (HTTP)  Tells  curl to use HTTP version 1.0 instead of using its\n"
+"              internally preferred: HTTP 1.1.\n"
 "\n"
 "\n"
-"       -1, --tlsv1\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              (SSL) Forces curl to use TLS version 1 when negotiating  with  a\n"
-"              remote TLS server.\n"
+"       --http1.1\n"
+"              (HTTP) Tells curl to use HTTP version 1.1. This is the  internal\n"
+"              default version. (Added in 7.33.0)\n"
+"\n"
+"       --http2\n"
+"              (HTTP)  Tells  curl  to  issue  its  requests using HTTP 2. This\n"
+"              requires that the underlying libcurl was built  to  support  it.\n"
+"              (Added in 7.33.0)\n"
+"\n"
+"       --no-npn\n"
+"              Disable  the  NPN  TLS  extension.  NPN is enabled by default if\n"
+, stdout);
+ fputs(
+"              libcurl was built with an SSL library that supports NPN. NPN  is\n"
+"              used  by a libcurl that supports HTTP 2 to negotiate HTTP 2 sup-\n"
+"              port with the server during https sessions.\n"
+"\n"
+"              (Added in 7.36.0)\n"
+"\n"
+"       --no-alpn\n"
+"              Disable the ALPN TLS extension. ALPN is enabled  by  default  if\n"
+"              libcurl  was  built with an SSL library that supports ALPN. ALPN\n"
+, stdout);
+ fputs(
+"              is used by a libcurl that supports HTTP 2 to  negotiate  HTTP  2\n"
+"              support with the server during https sessions.\n"
+"\n"
+"              (Added in 7.36.0)\n"
+"\n"
+"       -1, --tlsv1\n"
+"              (SSL) Forces curl to use TLS version 1.x when negotiating with a\n"
+"              remote TLS server.  You can use  options  --tlsv1.0,  --tlsv1.1,\n"
+"              and  --tlsv1.2 to control the TLS version more precisely (if the\n"
+"              SSL backend in use supports such a level of control).\n"
 "\n"
 "\n"
+, stdout);
+ fputs(
 "       -2, --sslv2\n"
 "       -2, --sslv2\n"
-"              (SSL)  Forces  curl to use SSL version 2 when negotiating with a\n"
-"              remote SSL server.\n"
+"              (SSL) Forces curl to use SSL version 2 when negotiating  with  a\n"
+"              remote  SSL  server.  Sometimes curl is built without SSLv2 sup-\n"
+"              port. SSLv2 is widely considered insecure.\n"
 "\n"
 "       -3, --sslv3\n"
 "              (SSL) Forces curl to use SSL version 3 when negotiating  with  a\n"
 "\n"
 "       -3, --sslv3\n"
 "              (SSL) Forces curl to use SSL version 3 when negotiating  with  a\n"
-"              remote SSL server.\n"
+"              remote  SSL  server.  Sometimes curl is built without SSLv3 sup-\n"
+"              port.\n"
 "\n"
 "       -4, --ipv4\n"
 "\n"
 "       -4, --ipv4\n"
-"              If  curl  is capable of resolving an address to multiple IP ver-\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              sions (which it is if it is  IPv6-capable),  this  option  tells\n"
-"              curl to resolve names to IPv4 addresses only.\n"
+"              This option tells curl to resolve names to IPv4 addresses  only,\n"
+"              and not for example try IPv6.\n"
 "\n"
 "       -6, --ipv6\n"
 "\n"
 "       -6, --ipv6\n"
-"              If  curl  is capable of resolving an address to multiple IP ver-\n"
-"              sions (which it is if it is  IPv6-capable),  this  option  tells\n"
-"              curl to resolve names to IPv6 addresses only.\n"
+"              This  option tells curl to resolve names to IPv6 addresses only,\n"
+"              and not for example try IPv4.\n"
 "\n"
 "       -a, --append\n"
 "\n"
 "       -a, --append\n"
-"              (FTP/SFTP) When used in an upload, this will tell curl to append\n"
+"              (FTP/SFTP) When used in an upload, this makes curl append to the\n"
+"              target  file  instead  of  overwriting  it.  If  the remote file\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              to the target file  instead  of  overwriting  it.  If  the  file\n"
-"              doesn't  exist,  it  will  be  created.   Note that this flag is\n"
-"              ignored by some SSH servers (including OpenSSH).\n"
+"              doesn't exist, it will be  created.   Note  that  this  flag  is\n"
+"              ignored by some SFTP servers (including OpenSSH).\n"
 "\n"
 "       -A, --user-agent <agent string>\n"
 "              (HTTP) Specify the User-Agent string to send to the HTTP server.\n"
 "\n"
 "       -A, --user-agent <agent string>\n"
 "              (HTTP) Specify the User-Agent string to send to the HTTP server.\n"
-"              Some   badly   done  CGIs  fail  if  this  field  isn't  set  to\n"
-"              \"Mozilla/4.0\". To encode blanks  in  the  string,  surround  the\n"
+"              Some  badly  done  CGIs  fail  if  this  field  isn't   set   to\n"
+"              \"Mozilla/4.0\".  To  encode  blanks  in  the string, surround the\n"
+"              string with single quote marks. This can also be  set  with  the\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              string  with  single  quote marks. This can also be set with the\n"
 "              -H, --header option of course.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --anyauth\n"
 "              (HTTP) Tells curl to figure out authentication method by itself,\n"
 "              -H, --header option of course.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --anyauth\n"
 "              (HTTP) Tells curl to figure out authentication method by itself,\n"
-"              and  use  the most secure one the remote site claims to support.\n"
+"              and use the most secure one the remote site claims  to  support.\n"
 "              This is done by first doing a request and checking the response-\n"
 "              This is done by first doing a request and checking the response-\n"
+"              headers, thus possibly inducing  an  extra  network  round-trip.\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              headers,  thus  possibly  inducing  an extra network round-trip.\n"
-"              This is  used  instead  of  setting  a  specific  authentication\n"
-"              method,  which  you  can  do with --basic, --digest, --ntlm, and\n"
+"              This  is  used  instead  of  setting  a  specific authentication\n"
+"              method, which you can do with  --basic,  --digest,  --ntlm,  and\n"
 "              --negotiate.\n"
 "\n"
 "              --negotiate.\n"
 "\n"
-"              Note that using --anyauth is not recommended if you  do  uploads\n"
-"              from  stdin, since it may require data to be sent twice and then\n"
-, stdout);
- fputs(
+"              Note  that  using --anyauth is not recommended if you do uploads\n"
+"              from stdin, since it may require data to be sent twice and  then\n"
 "              the client must be able to rewind. If the need should arise when\n"
 "              uploading from stdin, the upload operation will fail.\n"
 "\n"
 "              the client must be able to rewind. If the need should arise when\n"
 "              uploading from stdin, the upload operation will fail.\n"
 "\n"
+, stdout);
+ fputs(
 "       -b, --cookie <name=data>\n"
 "       -b, --cookie <name=data>\n"
-"              (HTTP)  Pass the data to the HTTP server as a cookie. It is sup-\n"
-"              posedly the data previously received from the server in a  \"Set-\n"
-"              Cookie:\"  line.  The data should be in the format \"NAME1=VALUE1;\n"
+"              (HTTP) Pass the data to the HTTP server as a cookie. It is  sup-\n"
+"              posedly  the data previously received from the server in a \"Set-\n"
+"              Cookie:\" line.  The data should be in the format  \"NAME1=VALUE1;\n"
 "              NAME2=VALUE2\".\n"
 "\n"
 "              NAME2=VALUE2\".\n"
 "\n"
+"              If  no  '=' symbol is used in the line, it is treated as a file-\n"
+"              name to use to read previously stored cookie lines  from,  which\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              If no '=' symbol is used in the line, it is treated as  a  file-\n"
-"              name  to  use to read previously stored cookie lines from, which\n"
-"              should be used in this session if they match. Using this  method\n"
-"              also  activates  the \"cookie parser\" which will make curl record\n"
+"              should  be used in this session if they match. Using this method\n"
+"              also activates the \"cookie parser\" which will make  curl  record\n"
 "              incoming cookies too, which may be handy if you're using this in\n"
 "              incoming cookies too, which may be handy if you're using this in\n"
-"              combination  with  the -L, --location option. The file format of\n"
-, stdout);
- fputs(
-"              the file to read cookies from should be plain  HTTP  headers  or\n"
+"              combination with the -L, --location option. The file  format  of\n"
+"              the  file  to  read cookies from should be plain HTTP headers or\n"
 "              the Netscape/Mozilla cookie file format.\n"
 "\n"
 "              the Netscape/Mozilla cookie file format.\n"
 "\n"
-"              NOTE  that  the file specified with -b, --cookie is only used as\n"
-"              input. No cookies will be stored in the file. To store  cookies,\n"
-"              use  the -c, --cookie-jar option or you could even save the HTTP\n"
-"              headers to a file using -D, --dump-header!\n"
-"\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"              The file specified with -b, --cookie is only used as  input.  No\n"
+"              cookies  will  be written to the file. To store cookies, use the\n"
+"              -c, --cookie-jar option.\n"
+"\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       -B, --use-ascii\n"
 "              (FTP/LDAP) Enable ASCII transfer. For  FTP,  this  can  also  be\n"
 "              enforced  by  using an URL that ends with \";type=A\". This option\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       -B, --use-ascii\n"
 "              (FTP/LDAP) Enable ASCII transfer. For  FTP,  this  can  also  be\n"
 "              enforced  by  using an URL that ends with \";type=A\". This option\n"
+, stdout);
+ fputs(
 "              causes data sent to stdout to be in text mode for win32 systems.\n"
 "\n"
 "       --basic\n"
 "              causes data sent to stdout to be in text mode for win32 systems.\n"
 "\n"
 "       --basic\n"
-"              (HTTP) Tells curl to use HTTP Basic authentication. This is  the\n"
+"              (HTTP) Tells curl to use  HTTP  Basic  authentication  with  the\n"
+"              remote  host.  This  is  the  default and this option is usually\n"
+"              pointless, unless you use it to override a previously set option\n"
+"              that  sets  a  different  authentication method (such as --ntlm,\n"
+"              --digest, or --negotiate).\n"
+"\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              default  and this option is usually pointless, unless you use it\n"
-"              to override a  previously  set  option  that  sets  a  different\n"
-"              authentication  method  (such  as --ntlm, --digest, or --negoti-\n"
-"              ate).\n"
+"              Used together with -u, --user and -x, --proxy.\n"
+"\n"
+"              See also --proxy-basic.\n"
 "\n"
 "       -c, --cookie-jar <file name>\n"
 "              (HTTP) Specify to which file you want curl to write all  cookies\n"
 "              after  a completed operation. Curl writes all cookies previously\n"
 "\n"
 "       -c, --cookie-jar <file name>\n"
 "              (HTTP) Specify to which file you want curl to write all  cookies\n"
 "              after  a completed operation. Curl writes all cookies previously\n"
+"              read from a specified file as well as all cookies received  from\n"
+"              remote server(s). If no cookies are known, no data will be writ-\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              read from a specified file as well as all cookies received  from\n"
-"              remote server(s). If no cookies are known, no file will be writ-\n"
 "              ten. The file will be written using  the  Netscape  cookie  file\n"
 "              format.  If  you  set  the  file name to a single dash, \"-\", the\n"
 "              cookies will be written to stdout.\n"
 "\n"
 "              This command line option will activate the  cookie  engine  that\n"
 "              ten. The file will be written using  the  Netscape  cookie  file\n"
 "              format.  If  you  set  the  file name to a single dash, \"-\", the\n"
 "              cookies will be written to stdout.\n"
 "\n"
 "              This command line option will activate the  cookie  engine  that\n"
-, stdout);
- fputs(
 "              makes curl record and use cookies. Another way to activate it is\n"
 "              to use the -b, --cookie option.\n"
 "\n"
 "              If the cookie jar can't be created or written to, the whole curl\n"
 "              makes curl record and use cookies. Another way to activate it is\n"
 "              to use the -b, --cookie option.\n"
 "\n"
 "              If the cookie jar can't be created or written to, the whole curl\n"
+, stdout);
+ fputs(
 "              operation  won't  fail or even report an error clearly. Using -v\n"
 "              will get a warning displayed, but that is the only visible feed-\n"
 "              back you get about this possibly lethal situation.\n"
 "\n"
 "              operation  won't  fail or even report an error clearly. Using -v\n"
 "              will get a warning displayed, but that is the only visible feed-\n"
 "              back you get about this possibly lethal situation.\n"
 "\n"
-, stdout);
- fputs(
 "              If  this  option  is used several times, the last specified file\n"
 "              name will be used.\n"
 "\n"
 "       -C, --continue-at <offset>\n"
 "              Continue/Resume a previous file transfer at  the  given  offset.\n"
 "              If  this  option  is used several times, the last specified file\n"
 "              name will be used.\n"
 "\n"
 "       -C, --continue-at <offset>\n"
 "              Continue/Resume a previous file transfer at  the  given  offset.\n"
+, stdout);
+ fputs(
 "              The  given  offset  is  the  exact  number of bytes that will be\n"
 "              skipped, counting from the beginning of the source  file  before\n"
 "              it is transferred to the destination.  If used with uploads, the\n"
 "              The  given  offset  is  the  exact  number of bytes that will be\n"
 "              skipped, counting from the beginning of the source  file  before\n"
 "              it is transferred to the destination.  If used with uploads, the\n"
-, stdout);
- fputs(
 "              FTP server command SIZE will not be used by curl.\n"
 "\n"
 "              Use \"-C -\" to tell curl to automatically find out  where/how  to\n"
 "              resume  the  transfer. It then uses the given output/input files\n"
 "              to figure that out.\n"
 "\n"
 "              FTP server command SIZE will not be used by curl.\n"
 "\n"
 "              Use \"-C -\" to tell curl to automatically find out  where/how  to\n"
 "              resume  the  transfer. It then uses the given output/input files\n"
 "              to figure that out.\n"
 "\n"
+, stdout);
+ fputs(
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --ciphers <list of ciphers>\n"
 "              (SSL) Specifies which ciphers to use in the connection. The list\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --ciphers <list of ciphers>\n"
 "              (SSL) Specifies which ciphers to use in the connection. The list\n"
-, stdout);
- fputs(
 "              of  ciphers  must  specify  valid ciphers. Read up on SSL cipher\n"
 "              list          details           on           this           URL:\n"
 "              http://www.openssl.org/docs/apps/ciphers.html\n"
 "\n"
 "              NSS  ciphers  are  done differently than OpenSSL and GnuTLS. The\n"
 "              of  ciphers  must  specify  valid ciphers. Read up on SSL cipher\n"
 "              list          details           on           this           URL:\n"
 "              http://www.openssl.org/docs/apps/ciphers.html\n"
 "\n"
 "              NSS  ciphers  are  done differently than OpenSSL and GnuTLS. The\n"
-"              full list of NSS ciphers is in the NSSCipherSuite entry at  this\n"
-"              URL:                                          http://git.fedora-\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"              full list of NSS ciphers is in the NSSCipherSuite entry at  this\n"
+"              URL:                                          http://git.fedora-\n"
 "              hosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html#Directives\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "              hosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html#Directives\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
@@ -301,21 +373,21 @@ void hugehelp(void)
 "       --compressed\n"
 "              (HTTP) Request a compressed response using one of the algorithms\n"
 "              curl  supports,  and  save  the  uncompressed document.  If this\n"
 "       --compressed\n"
 "              (HTTP) Request a compressed response using one of the algorithms\n"
 "              curl  supports,  and  save  the  uncompressed document.  If this\n"
+, stdout);
+ fputs(
 "              option is used and the server  sends  an  unsupported  encoding,\n"
 "              curl will report an error.\n"
 "\n"
 "       --connect-timeout <seconds>\n"
 "              option is used and the server  sends  an  unsupported  encoding,\n"
 "              curl will report an error.\n"
 "\n"
 "       --connect-timeout <seconds>\n"
-, stdout);
- fputs(
-"              Maximum  time  in  seconds  that you allow the connection to the\n"
-"              server to take.  This only limits  the  connection  phase,  once\n"
-"              curl has connected this option is of no more use.  Since 7.32.0,\n"
-"              this option accepts decimal values, but the actual timeout  will\n"
-"              decrease in accuracy as the specified timeout increases in deci-\n"
-"              mal precision. See also the -m, --max-time option.\n"
+"              Maximum  time  in  seconds  that  you allow curl's connection to\n"
+"              take.  This only limits the connection phase, so  if  curl  con-\n"
+"              nects  within the given period it will continue - if not it will\n"
+"              exit.  Since version 7.32.0, this option accepts decimal values.\n"
 "\n"
 , stdout);
  fputs(
 "\n"
 , stdout);
  fputs(
+"              See also the -m, --max-time option.\n"
+"\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --create-dirs\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --create-dirs\n"
@@ -323,65 +395,67 @@ void hugehelp(void)
 "              the  necessary  local directory hierarchy as needed. This option\n"
 "              creates the dirs mentioned with the -o option, nothing else.  If\n"
 "              the  -o file name uses no dir or if the dirs it mentions already\n"
 "              the  necessary  local directory hierarchy as needed. This option\n"
 "              creates the dirs mentioned with the -o option, nothing else.  If\n"
 "              the  -o file name uses no dir or if the dirs it mentions already\n"
-"              exist, no dir will be created.\n"
-"\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"              exist, no dir will be created.\n"
+"\n"
 "              To create remote directories when using FTP or SFTP, try  --ftp-\n"
 "              create-dirs.\n"
 "\n"
 "              To create remote directories when using FTP or SFTP, try  --ftp-\n"
 "              create-dirs.\n"
 "\n"
-"       --crlf (FTP) Convert LF to CRLF in upload. Useful for MVS (OS/390).\n"
+"       --crlf Convert LF to CRLF in upload. Useful for MVS (OS/390).\n"
+"\n"
+"              (SMTP added in 7.40.0)\n"
 "\n"
 "       --crlfile <file>\n"
 "              (HTTPS/FTPS)  Provide a file using PEM format with a Certificate\n"
 "              Revocation List that may specify peer certificates that  are  to\n"
 "              be considered revoked.\n"
 "\n"
 "\n"
 "       --crlfile <file>\n"
 "              (HTTPS/FTPS)  Provide a file using PEM format with a Certificate\n"
 "              Revocation List that may specify peer certificates that  are  to\n"
 "              be considered revoked.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
-"\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"              If this option is used several times, the last one will be used.\n"
+"\n"
 "              (Added in 7.19.7)\n"
 "       -d, --data <data>\n"
 "              (HTTP)  Sends  the  specified data in a POST request to the HTTP\n"
 "              server, in the same way that a browser  does  when  a  user  has\n"
 "              filled  in an HTML form and presses the submit button. This will\n"
 "              cause curl to pass the data to the server using the content-type\n"
 "              (Added in 7.19.7)\n"
 "       -d, --data <data>\n"
 "              (HTTP)  Sends  the  specified data in a POST request to the HTTP\n"
 "              server, in the same way that a browser  does  when  a  user  has\n"
 "              filled  in an HTML form and presses the submit button. This will\n"
 "              cause curl to pass the data to the server using the content-type\n"
-"              application/x-www-form-urlencoded.  Compare to -F, --form.\n"
-"\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"              application/x-www-form-urlencoded.  Compare to -F, --form.\n"
+"\n"
 "              -d,  --data  is  the  same  as --data-ascii. To post data purely\n"
 "              binary, you should instead use the --data-binary option. To URL-\n"
 "              encode the value of a form field you may use --data-urlencode.\n"
 "\n"
 "              If  any of these options is used more than once on the same com-\n"
 "              mand line, the data pieces specified  will  be  merged  together\n"
 "              -d,  --data  is  the  same  as --data-ascii. To post data purely\n"
 "              binary, you should instead use the --data-binary option. To URL-\n"
 "              encode the value of a form field you may use --data-urlencode.\n"
 "\n"
 "              If  any of these options is used more than once on the same com-\n"
 "              mand line, the data pieces specified  will  be  merged  together\n"
-"              with  a  separating  &-symbol.  Thus,  using  '-d name=daniel -d\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"              with  a  separating  &-symbol.  Thus,  using  '-d name=daniel -d\n"
 "              skill=lousy'  would  generate  a  post  chunk  that  looks  like\n"
 "              'name=daniel&skill=lousy'.\n"
 "\n"
 "              If  you  start  the data with the letter @, the rest should be a\n"
 "              file name to read the data from, or - if you want curl  to  read\n"
 "              skill=lousy'  would  generate  a  post  chunk  that  looks  like\n"
 "              'name=daniel&skill=lousy'.\n"
 "\n"
 "              If  you  start  the data with the letter @, the rest should be a\n"
 "              file name to read the data from, or - if you want curl  to  read\n"
-"              the  data  from stdin.  The contents of the file must already be\n"
-"              URL-encoded. Multiple files can also be specified. Posting  data\n"
+"              the data from stdin. Multiple files can also be specified. Post-\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              from  a file named 'foobar' would thus be done with --data @foo-\n"
-"              bar.\n"
+"              ing data from a file named 'foobar'  would  thus  be  done  with\n"
+"              --data  @foobar.  When  --data  is told to read from a file like\n"
+"              that, carriage returns and newlines will be stripped out.\n"
 "\n"
 "       -D, --dump-header <file>\n"
 "              Write the protocol headers to the specified file.\n"
 "\n"
 "              This option is handy to use when you want to store  the  headers\n"
 "              that  an  HTTP site sends to you. Cookies from the headers could\n"
 "\n"
 "       -D, --dump-header <file>\n"
 "              Write the protocol headers to the specified file.\n"
 "\n"
 "              This option is handy to use when you want to store  the  headers\n"
 "              that  an  HTTP site sends to you. Cookies from the headers could\n"
-"              then be read in a  second  curl  invocation  by  using  the  -b,\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              --cookie option! The -c, --cookie-jar option is however a better\n"
-"              way to store cookies.\n"
+"              then be read in a  second  curl  invocation  by  using  the  -b,\n"
+"              --cookie  option! The -c, --cookie-jar option is a better way to\n"
+"              store cookies.\n"
 "\n"
 "              When used in FTP, the FTP server response lines  are  considered\n"
 "              being \"headers\" and thus are saved there.\n"
 "\n"
 "              When used in FTP, the FTP server response lines  are  considered\n"
 "              being \"headers\" and thus are saved there.\n"
@@ -392,32 +466,32 @@ void hugehelp(void)
 "              See -d, --data.\n"
 "\n"
 "       --data-binary <data>\n"
 "              See -d, --data.\n"
 "\n"
 "       --data-binary <data>\n"
-"              (HTTP)  This  posts data exactly as specified with no extra pro-\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"              (HTTP)  This  posts data exactly as specified with no extra pro-\n"
 "              cessing whatsoever.\n"
 "\n"
 "              If you start the data with the letter @, the rest  should  be  a\n"
 "              filename.   Data  is  posted in a similar manner as --data-ascii\n"
 "              cessing whatsoever.\n"
 "\n"
 "              If you start the data with the letter @, the rest  should  be  a\n"
 "              filename.   Data  is  posted in a similar manner as --data-ascii\n"
-"              does, except that newlines are  preserved  and  conversions  are\n"
-"              never done.\n"
+"              does, except that newlines and carriage  returns  are  preserved\n"
+"              and conversions are never done.\n"
 "\n"
 "              If  this  option  is  used several times, the ones following the\n"
 "\n"
 "              If  this  option  is  used several times, the ones following the\n"
+, stdout);
+ fputs(
 "              first will append data as described in -d, --data.\n"
 "\n"
 "       --data-urlencode <data>\n"
 "              first will append data as described in -d, --data.\n"
 "\n"
 "       --data-urlencode <data>\n"
-, stdout);
- fputs(
 "              (HTTP) This posts data, similar to the other --data options with\n"
 "              the exception that this performs URL-encoding. (Added in 7.18.0)\n"
 "              To  be  CGI-compliant,  the <data> part should begin with a name\n"
 "              followed by a separator and a content specification. The  <data>\n"
 "              part can be passed to curl using one of the following syntaxes:\n"
 "\n"
 "              (HTTP) This posts data, similar to the other --data options with\n"
 "              the exception that this performs URL-encoding. (Added in 7.18.0)\n"
 "              To  be  CGI-compliant,  the <data> part should begin with a name\n"
 "              followed by a separator and a content specification. The  <data>\n"
 "              part can be passed to curl using one of the following syntaxes:\n"
 "\n"
-"              content\n"
-"                     This  will make curl URL-encode the content and pass that\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"              content\n"
+"                     This  will make curl URL-encode the content and pass that\n"
 "                     on. Just be careful so that the content  doesn't  contain\n"
 "                     any  =  or  @  symbols, as that will then make the syntax\n"
 "                     match one of the other cases below!\n"
 "                     on. Just be careful so that the content  doesn't  contain\n"
 "                     any  =  or  @  symbols, as that will then make the syntax\n"
 "                     match one of the other cases below!\n"
@@ -426,9 +500,9 @@ void hugehelp(void)
 "                     This will make curl URL-encode the content and pass  that\n"
 "                     on. The preceding = symbol is not included in the data.\n"
 "\n"
 "                     This will make curl URL-encode the content and pass  that\n"
 "                     on. The preceding = symbol is not included in the data.\n"
 "\n"
-"              name=content\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"              name=content\n"
 "                     This  will make curl URL-encode the content part and pass\n"
 "                     that on. Note that the name part is expected to  be  URL-\n"
 "                     encoded already.\n"
 "                     This  will make curl URL-encode the content part and pass\n"
 "                     that on. Note that the name part is expected to  be  URL-\n"
 "                     encoded already.\n"
@@ -507,159 +581,228 @@ void hugehelp(void)
 "              Disabling EPSV only changes the passive behavior. If you want to\n"
 "              switch to active mode you need to use -P, --ftp-port.\n"
 "\n"
 "              Disabling EPSV only changes the passive behavior. If you want to\n"
 "              switch to active mode you need to use -P, --ftp-port.\n"
 "\n"
-"       -e, --referer <URL>\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              (HTTP)  Sends the \"Referer Page\" information to the HTTP server.\n"
+"       --dns-interface <interface>\n"
+"              Tell  curl  to  send  outgoing DNS requests through <interface>.\n"
+"              This option is a counterpart  to  --interface  (which  does  not\n"
+"              affect  DNS). The supplied string must be an interface name (not\n"
+"              an address).\n"
+"\n"
+"              This option requires that libcurl  was  built  with  a  resolver\n"
+"              backend  that supports this operation. The c-ares backend is the\n"
+, stdout);
+ fputs(
+"              only such one. (Added in 7.33.0)\n"
+"\n"
+"       --dns-ipv4-addr <ip-address>\n"
+"              Tell curl to bind to <ip-address> when making IPv4 DNS requests,\n"
+"              so  that the DNS requests originate from this address. The argu-\n"
+"              ment should be a single IPv4 address.\n"
+"\n"
+"              This option requires that libcurl  was  built  with  a  resolver\n"
+"              backend  that supports this operation. The c-ares backend is the\n"
+, stdout);
+ fputs(
+"              only such one.  (Added in 7.33.0)\n"
+"\n"
+"       --dns-ipv6-addr <ip-address>\n"
+"              Tell curl to bind to <ip-address> when making IPv6 DNS requests,\n"
+"              so  that the DNS requests originate from this address. The argu-\n"
+"              ment should be a single IPv6 address.\n"
+"\n"
+"              This option requires that libcurl  was  built  with  a  resolver\n"
+"              backend  that supports this operation. The c-ares backend is the\n"
+, stdout);
+ fputs(
+"              only such one.  (Added in 7.33.0)\n"
+"\n"
+"       --dns-servers <ip-address,ip-address>\n"
+"              Set the list of DNS servers to be used  instead  of  the  system\n"
+"              default.  The list of IP addresses should be separated with com-\n"
+"              mas. Port numbers may also optionally be given as :<port-number>\n"
+"              after each IP address.\n"
+"\n"
+"              This  option  requires  that  libcurl  was built with a resolver\n"
+, stdout);
+ fputs(
+"              backend that supports this operation. The c-ares backend is  the\n"
+"              only such one.  (Added in 7.33.0)\n"
+"\n"
+"       -e, --referer <URL>\n"
+"              (HTTP) Sends the \"Referrer Page\" information to the HTTP server.\n"
 "              This can also be set with the -H, --header flag of course.  When\n"
 "              used with -L, --location you can append \";auto\" to the --referer\n"
 "              URL to make curl automatically set the previous URL when it fol-\n"
 "              This can also be set with the -H, --header flag of course.  When\n"
 "              used with -L, --location you can append \";auto\" to the --referer\n"
 "              URL to make curl automatically set the previous URL when it fol-\n"
+, stdout);
+ fputs(
 "              lows  a  Location: header. The \";auto\" string can be used alone,\n"
 "              even if you don't set an initial --referer.\n"
 "\n"
 "              lows  a  Location: header. The \";auto\" string can be used alone,\n"
 "              even if you don't set an initial --referer.\n"
 "\n"
-, stdout);
- fputs(
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       -E, --cert <certificate[:password]>\n"
 "              (SSL) Tells curl to use the specified  client  certificate  file\n"
 "              when getting a file with HTTPS, FTPS or another SSL-based proto-\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       -E, --cert <certificate[:password]>\n"
 "              (SSL) Tells curl to use the specified  client  certificate  file\n"
 "              when getting a file with HTTPS, FTPS or another SSL-based proto-\n"
-"              col. The certificate must be in PEM  format.   If  the  optional\n"
-"              password  isn't  specified, it will be queried for on the termi-\n"
+"              col. The certificate must be in PKCS#12 format if  using  Secure\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              nal. Note that this option assumes a \"certificate\" file that  is\n"
-"              the  private  key  and the private certificate concatenated! See\n"
-"              --cert and --key to specify them independently.\n"
+"              Transport,  or  PEM  format  if  using any other engine.  If the\n"
+"              optional password isn't specified, it will be queried for on the\n"
+"              terminal.  Note  that  this  option assumes a \"certificate\" file\n"
+"              that is the private key and  the  private  certificate  concate-\n"
+"              nated! See --cert and --key to specify them independently.\n"
 "\n"
 "\n"
-"              If curl is built against the NSS SSL library  then  this  option\n"
-"              can  tell curl the nickname of the certificate to use within the\n"
-"              NSS database defined by the environment variable SSL_DIR (or  by\n"
+"              If  curl  is  built against the NSS SSL library then this option\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              default  /etc/pki/nssdb).  If  the  NSS PEM PKCS#11 module (lib-\n"
-"              nsspem.so) is available then PEM files may  be  loaded.  If  you\n"
+"              can tell curl the nickname of the certificate to use within  the\n"
+"              NSS  database defined by the environment variable SSL_DIR (or by\n"
+"              default /etc/pki/nssdb). If the NSS  PEM  PKCS#11  module  (lib-\n"
+"              nsspem.so)  is  available  then  PEM files may be loaded. If you\n"
 "              want to use a file from the current directory, please precede it\n"
 "              want to use a file from the current directory, please precede it\n"
-"              with \"./\" prefix, in order to avoid confusion with  a  nickname.\n"
-"              If  the nickname contains \":\", it needs to be preceded by \"\\\" so\n"
-"              that it is not recognized as password delimiter.  If  the  nick-\n"
+"              with  \"./\"  prefix, in order to avoid confusion with a nickname.\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              name  contains \"\\\", it needs to be escaped as \"\\\\\" so that it is\n"
+"              If the nickname contains \":\", it needs to be preceded by \"\\\"  so\n"
+"              that  it  is not recognized as password delimiter.  If the nick-\n"
+"              name contains \"\\\", it needs to be escaped as \"\\\\\" so that it  is\n"
 "              not recognized as an escape character.\n"
 "\n"
 "              not recognized as an escape character.\n"
 "\n"
-"              (iOS and Mac OS X only) If curl is built against  Secure  Trans-\n"
-"              port,  then the certificate string must match the name of a cer-\n"
-"              tificate that's in the system or user keychain. The private  key\n"
-"              corresponding  to  the  certificate,  and  certificate chain (if\n"
+"              (iOS  and  Mac OS X only) If curl is built against Secure Trans-\n"
+"              port, then the certificate string can either be the  name  of  a\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              any),  must also be present in the keychain.\n"
+"              certificate/private  key  in the system or user keychain, or the\n"
+"              path to a PKCS#12-encoded certificate and private  key.  If  you\n"
+"              want to use a file from the current directory, please precede it\n"
+"              with \"./\" prefix, in order to avoid confusion with a nickname.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --engine <name>\n"
 "              Select the OpenSSL crypto engine to use for  cipher  operations.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --engine <name>\n"
 "              Select the OpenSSL crypto engine to use for  cipher  operations.\n"
+, stdout);
+ fputs(
 "              Use  --engine  list  to  print  a  list  of build-time supported\n"
 "              engines. Note that not all (or  none)  of  the  engines  may  be\n"
 "              available at run-time.\n"
 "\n"
 "       --environment\n"
 "              Use  --engine  list  to  print  a  list  of build-time supported\n"
 "              engines. Note that not all (or  none)  of  the  engines  may  be\n"
 "              available at run-time.\n"
 "\n"
 "       --environment\n"
-, stdout);
- fputs(
 "              (RISC  OS ONLY) Sets a range of environment variables, using the\n"
 "              names the -w option supports, to allow easier extraction of use-\n"
 "              ful information after having run curl.\n"
 "\n"
 "       --egd-file <file>\n"
 "              (RISC  OS ONLY) Sets a range of environment variables, using the\n"
 "              names the -w option supports, to allow easier extraction of use-\n"
 "              ful information after having run curl.\n"
 "\n"
 "       --egd-file <file>\n"
+, stdout);
+ fputs(
 "              (SSL)  Specify  the  path  name  to the Entropy Gathering Daemon\n"
 "              socket. The socket is used to seed the  random  engine  for  SSL\n"
 "              connections. See also the --random-file option.\n"
 "\n"
 "       --cert-type <type>\n"
 "              (SSL)  Specify  the  path  name  to the Entropy Gathering Daemon\n"
 "              socket. The socket is used to seed the  random  engine  for  SSL\n"
 "              connections. See also the --random-file option.\n"
 "\n"
 "       --cert-type <type>\n"
-, stdout);
- fputs(
 "              (SSL)  Tells curl what certificate type the provided certificate\n"
 "              is in. PEM, DER and ENG are recognized types.  If not specified,\n"
 "              PEM is assumed.\n"
 "\n"
 "              (SSL)  Tells curl what certificate type the provided certificate\n"
 "              is in. PEM, DER and ENG are recognized types.  If not specified,\n"
 "              PEM is assumed.\n"
 "\n"
+, stdout);
+ fputs(
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --cacert <CA certificate>\n"
 "              (SSL) Tells curl to use the specified certificate file to verify\n"
 "              the peer. The file may contain  multiple  CA  certificates.  The\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --cacert <CA certificate>\n"
 "              (SSL) Tells curl to use the specified certificate file to verify\n"
 "              the peer. The file may contain  multiple  CA  certificates.  The\n"
-, stdout);
- fputs(
 "              certificate(s)  must be in PEM format. Normally curl is built to\n"
 "              use a default file for this, so this option is typically used to\n"
 "              alter that default file.\n"
 "\n"
 "              certificate(s)  must be in PEM format. Normally curl is built to\n"
 "              use a default file for this, so this option is typically used to\n"
 "              alter that default file.\n"
 "\n"
+, stdout);
+ fputs(
 "              curl  recognizes the environment variable named 'CURL_CA_BUNDLE'\n"
 "              if it is set, and uses the given path as a path  to  a  CA  cert\n"
 "              bundle. This option overrides that variable.\n"
 "\n"
 "              The  windows  version  of  curl will automatically look for a CA\n"
 "              curl  recognizes the environment variable named 'CURL_CA_BUNDLE'\n"
 "              if it is set, and uses the given path as a path  to  a  CA  cert\n"
 "              bundle. This option overrides that variable.\n"
 "\n"
 "              The  windows  version  of  curl will automatically look for a CA\n"
-, stdout);
- fputs(
 "              certs file named 'curl-ca-bundle.crt', either in the same direc-\n"
 "              tory as curl.exe, or in the Current Working Directory, or in any\n"
 "              folder along your PATH.\n"
 "\n"
 "              certs file named 'curl-ca-bundle.crt', either in the same direc-\n"
 "              tory as curl.exe, or in the Current Working Directory, or in any\n"
 "              folder along your PATH.\n"
 "\n"
+, stdout);
+ fputs(
 "              If curl is built against  the  NSS  SSL  library,  the  NSS  PEM\n"
 "              PKCS#11  module  (libnsspem.so)  needs  to be available for this\n"
 "              option to work properly.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "              If curl is built against  the  NSS  SSL  library,  the  NSS  PEM\n"
 "              PKCS#11  module  (libnsspem.so)  needs  to be available for this\n"
 "              option to work properly.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
-, stdout);
- fputs(
 "       --capath <CA certificate directory>\n"
 "              (SSL) Tells curl to use the specified certificate  directory  to\n"
 "              verify  the  peer.  Multiple paths can be provided by separating\n"
 "       --capath <CA certificate directory>\n"
 "              (SSL) Tells curl to use the specified certificate  directory  to\n"
 "              verify  the  peer.  Multiple paths can be provided by separating\n"
+, stdout);
+ fputs(
 "              them with \":\" (e.g.  \"path1:path2:path3\"). The certificates must\n"
 "              be  in  PEM  format,  and  if curl is built against OpenSSL, the\n"
 "              directory must have been processed using  the  c_rehash  utility\n"
 "              them with \":\" (e.g.  \"path1:path2:path3\"). The certificates must\n"
 "              be  in  PEM  format,  and  if curl is built against OpenSSL, the\n"
 "              directory must have been processed using  the  c_rehash  utility\n"
-, stdout);
- fputs(
 "              supplied  with OpenSSL. Using --capath can allow OpenSSL-powered\n"
 "              curl to make SSL-connections much more  efficiently  than  using\n"
 "              --cacert if the --cacert file contains many CA certificates.\n"
 "\n"
 "              supplied  with OpenSSL. Using --capath can allow OpenSSL-powered\n"
 "              curl to make SSL-connections much more  efficiently  than  using\n"
 "              --cacert if the --cacert file contains many CA certificates.\n"
 "\n"
+, stdout);
+ fputs(
 "              If this option is set, the default capath value will be ignored,\n"
 "              and if it is used several times, the last one will be used.\n"
 "\n"
 "              If this option is set, the default capath value will be ignored,\n"
 "              and if it is used several times, the last one will be used.\n"
 "\n"
-"       -f, --fail\n"
-"              (HTTP) Fail silently (no output at all) on server  errors.  This\n"
+"       --pinnedpubkey <pinned public key>\n"
+"              (SSL) Tells curl to use the specified public key file to  verify\n"
+"              the  peer.  The  file must contain a single public key in PEM or\n"
+"              DER format.\n"
+"\n"
+"              When negotiating a TLS or SSL connection,  the  server  sends  a\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"              certificate  indicating  its identity. A public key is extracted\n"
+"              from this certificate and if it does not exactly match the  pub-\n"
+"              lic  key provided to this option, curl will abort the connection\n"
+"              before sending or receiving any data.\n"
+"\n"
+"              This is currently only implemented in the  OpenSSL,  GnuTLS  and\n"
+"              GSKit backends.\n"
+"\n"
+"              If this option is used several times, the last one will be used.\n"
+, stdout);
+ fputs(
+"              (Added in 7.39.0)\n"
+"\n"
+"       -f, --fail\n"
+"              (HTTP) Fail silently (no output at all) on server  errors.  This\n"
 "              is  mostly done to better enable scripts etc to better deal with\n"
 "              failed attempts. In normal cases when an HTTP  server  fails  to\n"
 "              deliver  a  document,  it  returns  an  HTML document stating so\n"
 "              (which often also describes why and more). This flag  will  pre-\n"
 "              is  mostly done to better enable scripts etc to better deal with\n"
 "              failed attempts. In normal cases when an HTTP  server  fails  to\n"
 "              deliver  a  document,  it  returns  an  HTML document stating so\n"
 "              (which often also describes why and more). This flag  will  pre-\n"
+, stdout);
+ fputs(
 "              vent curl from outputting that and return error 22.\n"
 "\n"
 "              This  method is not fail-safe and there are occasions where non-\n"
 "              vent curl from outputting that and return error 22.\n"
 "\n"
 "              This  method is not fail-safe and there are occasions where non-\n"
-, stdout);
- fputs(
 "              successful response codes will  slip  through,  especially  when\n"
 "              authentication is involved (response codes 401 and 407).\n"
 "\n"
 "       -F, --form <name=content>\n"
 "              (HTTP)  This  lets curl emulate a filled-in form in which a user\n"
 "              has pressed the submit button. This causes  curl  to  POST  data\n"
 "              successful response codes will  slip  through,  especially  when\n"
 "              authentication is involved (response codes 401 and 407).\n"
 "\n"
 "       -F, --form <name=content>\n"
 "              (HTTP)  This  lets curl emulate a filled-in form in which a user\n"
 "              has pressed the submit button. This causes  curl  to  POST  data\n"
-"              using  the  Content-Type  multipart/form-data  according  to RFC\n"
-"              2388. This enables uploading of binary files etc. To  force  the\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"              using  the  Content-Type  multipart/form-data  according  to RFC\n"
+"              2388. This enables uploading of binary files etc. To  force  the\n"
 "              'content'  part  to  be  a  file, prefix the file name with an @\n"
 "              sign. To just get the content part from a file, prefix the  file\n"
 "              name  with  the symbol <. The difference between @ and < is then\n"
 "              that @ makes a file get attached in the post as a  file  upload,\n"
 "              'content'  part  to  be  a  file, prefix the file name with an @\n"
 "              sign. To just get the content part from a file, prefix the  file\n"
 "              name  with  the symbol <. The difference between @ and < is then\n"
 "              that @ makes a file get attached in the post as a  file  upload,\n"
+, stdout);
+ fputs(
 "              while  the  <  makes  a text field and just get the contents for\n"
 "              that text field from a file.\n"
 "\n"
 "              while  the  <  makes  a text field and just get the contents for\n"
 "              that text field from a file.\n"
 "\n"
-, stdout);
- fputs(
 "              Example, to send your password file to the server, where  'pass-\n"
 "              word' is the name of the form-field to which /etc/passwd will be\n"
 "              the input:\n"
 "              Example, to send your password file to the server, where  'pass-\n"
 "              word' is the name of the form-field to which /etc/passwd will be\n"
 "              the input:\n"
@@ -667,11 +810,11 @@ void hugehelp(void)
 "              curl -F password=@/etc/passwd www.mypasswords.com\n"
 "\n"
 "              To read content from stdin instead of a file, use - as the file-\n"
 "              curl -F password=@/etc/passwd www.mypasswords.com\n"
 "\n"
 "              To read content from stdin instead of a file, use - as the file-\n"
+, stdout);
+ fputs(
 "              name. This goes for both @ and < constructs.\n"
 "\n"
 "              You  can  also  tell  curl  what  Content-Type  to  use by using\n"
 "              name. This goes for both @ and < constructs.\n"
 "\n"
 "              You  can  also  tell  curl  what  Content-Type  to  use by using\n"
-, stdout);
- fputs(
 "              'type=', in a manner similar to:\n"
 "\n"
 "              curl -F \"web=@index.html;type=text/html\" url.com\n"
 "              'type=', in a manner similar to:\n"
 "\n"
 "              curl -F \"web=@index.html;type=text/html\" url.com\n"
@@ -683,12 +826,12 @@ void hugehelp(void)
 "              You can also explicitly change the name field of a  file  upload\n"
 "              part by setting filename=, like this:\n"
 "\n"
 "              You can also explicitly change the name field of a  file  upload\n"
 "              part by setting filename=, like this:\n"
 "\n"
+, stdout);
+ fputs(
 "              curl -F \"file=@localfile;filename=nameinpost\" url.com\n"
 "\n"
 "              If  filename/path contains ',' or ';', it must be quoted by dou-\n"
 "              ble-quotes like:\n"
 "              curl -F \"file=@localfile;filename=nameinpost\" url.com\n"
 "\n"
 "              If  filename/path contains ',' or ';', it must be quoted by dou-\n"
 "              ble-quotes like:\n"
-, stdout);
- fputs(
 "\n"
 "              curl -F \"file=@\\\"localfile\\\";filename=\\\"nameinpost\\\"\" url.com\n"
 "\n"
 "\n"
 "              curl -F \"file=@\\\"localfile\\\";filename=\\\"nameinpost\\\"\" url.com\n"
 "\n"
@@ -697,6 +840,8 @@ void hugehelp(void)
 "              curl -F 'file=@\"localfile\";filename=\"nameinpost\"' url.com\n"
 "\n"
 "              Note that if a filename/path is  quoted  by  double-quotes,  any\n"
 "              curl -F 'file=@\"localfile\";filename=\"nameinpost\"' url.com\n"
 "\n"
 "              Note that if a filename/path is  quoted  by  double-quotes,  any\n"
+, stdout);
+ fputs(
 "              double-quote or backslash within the filename must be escaped by\n"
 "              backslash.\n"
 "\n"
 "              double-quote or backslash within the filename must be escaped by\n"
 "              backslash.\n"
 "\n"
@@ -705,145 +850,142 @@ void hugehelp(void)
 "              This option can be used multiple times.\n"
 "\n"
 "       --ftp-account [data]\n"
 "              This option can be used multiple times.\n"
 "\n"
 "       --ftp-account [data]\n"
-, stdout);
- fputs(
 "              (FTP) When an FTP server asks for \"account data\" after user name\n"
 "              and  password has been provided, this data is sent off using the\n"
 "              ACCT command. (Added in 7.13.0)\n"
 "\n"
 "              (FTP) When an FTP server asks for \"account data\" after user name\n"
 "              and  password has been provided, this data is sent off using the\n"
 "              ACCT command. (Added in 7.13.0)\n"
 "\n"
+, stdout);
+ fputs(
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --ftp-alternative-to-user <command>\n"
 "              (FTP) If authenticating with the USER and PASS  commands  fails,\n"
 "              send  this  command.   When  connecting  to  Tumbleweed's Secure\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --ftp-alternative-to-user <command>\n"
 "              (FTP) If authenticating with the USER and PASS  commands  fails,\n"
 "              send  this  command.   When  connecting  to  Tumbleweed's Secure\n"
-, stdout);
- fputs(
 "              Transport server over FTPS using  a  client  certificate,  using\n"
 "              \"SITE  AUTH\"  will tell the server to retrieve the username from\n"
 "              the certificate. (Added in 7.15.5)\n"
 "\n"
 "              Transport server over FTPS using  a  client  certificate,  using\n"
 "              \"SITE  AUTH\"  will tell the server to retrieve the username from\n"
 "              the certificate. (Added in 7.15.5)\n"
 "\n"
+, stdout);
+ fputs(
 "       --ftp-create-dirs\n"
 "              (FTP/SFTP) When an FTP or SFTP URL/operation uses  a  path  that\n"
 "              doesn't  currently exist on the server, the standard behavior of\n"
 "              curl is to fail. Using this option, curl will instead attempt to\n"
 "       --ftp-create-dirs\n"
 "              (FTP/SFTP) When an FTP or SFTP URL/operation uses  a  path  that\n"
 "              doesn't  currently exist on the server, the standard behavior of\n"
 "              curl is to fail. Using this option, curl will instead attempt to\n"
-, stdout);
- fputs(
 "              create missing directories.\n"
 "\n"
 "       --ftp-method [method]\n"
 "              (FTP)  Control what method curl should use to reach a file on an\n"
 "              FTP(S) server. The method argument should be one of the  follow-\n"
 "              create missing directories.\n"
 "\n"
 "       --ftp-method [method]\n"
 "              (FTP)  Control what method curl should use to reach a file on an\n"
 "              FTP(S) server. The method argument should be one of the  follow-\n"
+, stdout);
+ fputs(
 "              ing alternatives:\n"
 "\n"
 "              multicwd\n"
 "                     curl  does  a  single CWD operation for each path part in\n"
 "                     the given URL. For deep hierarchies this means very  many\n"
 "              ing alternatives:\n"
 "\n"
 "              multicwd\n"
 "                     curl  does  a  single CWD operation for each path part in\n"
 "                     the given URL. For deep hierarchies this means very  many\n"
-, stdout);
- fputs(
 "                     commands.  This  is  how RFC 1738 says it should be done.\n"
 "                     This is the default but the slowest behavior.\n"
 "\n"
 "              nocwd  curl does no CWD at all. curl will do  SIZE,  RETR,  STOR\n"
 "                     commands.  This  is  how RFC 1738 says it should be done.\n"
 "                     This is the default but the slowest behavior.\n"
 "\n"
 "              nocwd  curl does no CWD at all. curl will do  SIZE,  RETR,  STOR\n"
+, stdout);
+ fputs(
 "                     etc and give a full path to the server for all these com-\n"
 "                     mands. This is the fastest behavior.\n"
 "\n"
 "              singlecwd\n"
 "                     curl does one CWD with the full target directory and then\n"
 "                     etc and give a full path to the server for all these com-\n"
 "                     mands. This is the fastest behavior.\n"
 "\n"
 "              singlecwd\n"
 "                     curl does one CWD with the full target directory and then\n"
-, stdout);
- fputs(
 "                     operates  on  the  file  \"normally\" (like in the multicwd\n"
 "                     case). This is somewhat  more  standards  compliant  than\n"
 "                     'nocwd' but without the full penalty of 'multicwd'.\n"
 "       (Added in 7.15.1)\n"
 "\n"
 "                     operates  on  the  file  \"normally\" (like in the multicwd\n"
 "                     case). This is somewhat  more  standards  compliant  than\n"
 "                     'nocwd' but without the full penalty of 'multicwd'.\n"
 "       (Added in 7.15.1)\n"
 "\n"
+, stdout);
+ fputs(
 "       --ftp-pasv\n"
 "              (FTP)  Use  passive mode for the data connection. Passive is the\n"
 "              internal default behavior, but using this option can be used  to\n"
 "       --ftp-pasv\n"
 "              (FTP)  Use  passive mode for the data connection. Passive is the\n"
 "              internal default behavior, but using this option can be used  to\n"
-, stdout);
- fputs(
 "              override a previous -P/-ftp-port option. (Added in 7.11.0)\n"
 "\n"
 "              If  this  option  is  used  several times, only the first one is\n"
 "              used. Undoing an enforced passive really isn't  doable  but  you\n"
 "              must then instead enforce the correct -P, --ftp-port again.\n"
 "\n"
 "              override a previous -P/-ftp-port option. (Added in 7.11.0)\n"
 "\n"
 "              If  this  option  is  used  several times, only the first one is\n"
 "              used. Undoing an enforced passive really isn't  doable  but  you\n"
 "              must then instead enforce the correct -P, --ftp-port again.\n"
 "\n"
+, stdout);
+ fputs(
 "              Passive mode means that curl will try the EPSV command first and\n"
 "              then PASV, unless --disable-epsv is used.\n"
 "\n"
 "       --ftp-skip-pasv-ip\n"
 "              Passive mode means that curl will try the EPSV command first and\n"
 "              then PASV, unless --disable-epsv is used.\n"
 "\n"
 "       --ftp-skip-pasv-ip\n"
-, stdout);
- fputs(
 "              (FTP) Tell curl to not use the IP address the server suggests in\n"
 "              its  response to curl's PASV command when curl connects the data\n"
 "              connection. Instead curl will re-use  the  same  IP  address  it\n"
 "              already uses for the control connection. (Added in 7.14.2)\n"
 "\n"
 "              (FTP) Tell curl to not use the IP address the server suggests in\n"
 "              its  response to curl's PASV command when curl connects the data\n"
 "              connection. Instead curl will re-use  the  same  IP  address  it\n"
 "              already uses for the control connection. (Added in 7.14.2)\n"
 "\n"
+, stdout);
+ fputs(
 "              This  option has no effect if PORT, EPRT or EPSV is used instead\n"
 "              of PASV.\n"
 "\n"
 "       --ftp-pret\n"
 "              This  option has no effect if PORT, EPRT or EPSV is used instead\n"
 "              of PASV.\n"
 "\n"
 "       --ftp-pret\n"
-, stdout);
- fputs(
 "              (FTP) Tell curl to send a PRET command before PASV  (and  EPSV).\n"
 "              Certain  FTP  servers,  mainly drftpd, require this non-standard\n"
 "              command for directory listings as well as up  and  downloads  in\n"
 "              PASV mode.  (Added in 7.20.x)\n"
 "\n"
 "       --ftp-ssl-ccc\n"
 "              (FTP) Tell curl to send a PRET command before PASV  (and  EPSV).\n"
 "              Certain  FTP  servers,  mainly drftpd, require this non-standard\n"
 "              command for directory listings as well as up  and  downloads  in\n"
 "              PASV mode.  (Added in 7.20.x)\n"
 "\n"
 "       --ftp-ssl-ccc\n"
-"              (FTP)  Use  CCC  (Clear  Command Channel) Shuts down the SSL/TLS\n"
-"              layer after authenticating. The rest of the control channel com-\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"              (FTP)  Use  CCC  (Clear  Command Channel) Shuts down the SSL/TLS\n"
+"              layer after authenticating. The rest of the control channel com-\n"
 "              munication  will be unencrypted. This allows NAT routers to fol-\n"
 "              low the FTP transaction. The default mode is passive. See --ftp-\n"
 "              ssl-ccc-mode for other modes.  (Added in 7.16.1)\n"
 "\n"
 "       --ftp-ssl-ccc-mode [active/passive]\n"
 "              munication  will be unencrypted. This allows NAT routers to fol-\n"
 "              low the FTP transaction. The default mode is passive. See --ftp-\n"
 "              ssl-ccc-mode for other modes.  (Added in 7.16.1)\n"
 "\n"
 "       --ftp-ssl-ccc-mode [active/passive]\n"
-"              (FTP)  Use  CCC  (Clear  Command Channel) Sets the CCC mode. The\n"
-"              passive mode will not initiate the shutdown,  but  instead  wait\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"              (FTP)  Use  CCC  (Clear  Command Channel) Sets the CCC mode. The\n"
+"              passive mode will not initiate the shutdown,  but  instead  wait\n"
 "              for the server to do it, and will not reply to the shutdown from\n"
 "              the server. The active mode initiates the shutdown and waits for\n"
 "              a reply from the server.  (Added in 7.16.2)\n"
 "\n"
 "       --ftp-ssl-control\n"
 "              (FTP)  Require  SSL/TLS  for  the FTP login, clear for transfer.\n"
 "              for the server to do it, and will not reply to the shutdown from\n"
 "              the server. The active mode initiates the shutdown and waits for\n"
 "              a reply from the server.  (Added in 7.16.2)\n"
 "\n"
 "       --ftp-ssl-control\n"
 "              (FTP)  Require  SSL/TLS  for  the FTP login, clear for transfer.\n"
-"              Allows secure authentication, but non-encrypted  data  transfers\n"
-"              for  efficiency.   Fails the transfer if the server doesn't sup-\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"              Allows secure authentication, but non-encrypted  data  transfers\n"
+"              for  efficiency.   Fails the transfer if the server doesn't sup-\n"
 "              port SSL/TLS.  (Added in 7.16.0) that can still be used but will\n"
 "              be removed in a future version.\n"
 "\n"
 "       --form-string <name=string>\n"
 "              (HTTP)  Similar  to  --form except that the value string for the\n"
 "              named parameter is used literally. Leading '@' and  '<'  charac-\n"
 "              port SSL/TLS.  (Added in 7.16.0) that can still be used but will\n"
 "              be removed in a future version.\n"
 "\n"
 "       --form-string <name=string>\n"
 "              (HTTP)  Similar  to  --form except that the value string for the\n"
 "              named parameter is used literally. Leading '@' and  '<'  charac-\n"
-"              ters, and the ';type=' string in the value have no special mean-\n"
-"              ing. Use this in preference to --form if there's any possibility\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"              ters, and the ';type=' string in the value have no special mean-\n"
+"              ing. Use this in preference to --form if there's any possibility\n"
 "              that  the  string  value may accidentally trigger the '@' or '<'\n"
 "              features of --form.\n"
 "\n"
 "       -g, --globoff\n"
 "              This option switches off the \"URL globbing parser\". When you set\n"
 "              this  option, you can specify URLs that contain the letters {}[]\n"
 "              that  the  string  value may accidentally trigger the '@' or '<'\n"
 "              features of --form.\n"
 "\n"
 "       -g, --globoff\n"
 "              This option switches off the \"URL globbing parser\". When you set\n"
 "              this  option, you can specify URLs that contain the letters {}[]\n"
-"              without having them being interpreted by curl itself. Note  that\n"
-"              these  letters are not normal legal URL contents but they should\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"              without having them being interpreted by curl itself. Note  that\n"
+"              these  letters are not normal legal URL contents but they should\n"
 "              be encoded according to the URI standard.\n"
 "\n"
 "       -G, --get\n"
 "              When used, this option will make all  data  specified  with  -d,\n"
 "              be encoded according to the URI standard.\n"
 "\n"
 "       -G, --get\n"
 "              When used, this option will make all  data  specified  with  -d,\n"
-"              --data  or  --data-binary  to  be  used  in  an HTTP GET request\n"
-"              instead of the POST request that otherwise would  be  used.  The\n"
-"              data will be appended to the URL with a '?' separator.\n"
-"\n"
-"              If  used  in  combination with -I, the POST data will instead be\n"
+"              --data,  --data-binary or --data-urlencode to be used in an HTTP\n"
+"              GET request instead of the POST request that otherwise would  be\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"              used. The data will be appended to the URL with a '?' separator.\n"
+"              If  used  in  combination with -I, the POST data will instead be\n"
 "              appended to the URL with a HEAD request.\n"
 "\n"
 "              If this option is used several times,  only  the  first  one  is\n"
 "              appended to the URL with a HEAD request.\n"
 "\n"
 "              If this option is used several times,  only  the  first  one  is\n"
@@ -851,66 +993,75 @@ void hugehelp(void)
 "              should then instead enforce the alternative method you prefer.\n"
 "\n"
 "       -H, --header <header>\n"
 "              should then instead enforce the alternative method you prefer.\n"
 "\n"
 "       -H, --header <header>\n"
-"              (HTTP) Extra header to use when getting  a  web  page.  You  may\n"
-"              specify any number of extra headers. Note that if you should add\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              a custom header that has the same name as one  of  the  internal\n"
-"              ones  curl  would  use,  your externally set header will be used\n"
-"              instead of the internal one. This allows you to make even trick-\n"
-"              ier  stuff  than  curl would normally do. You should not replace\n"
-"              internally set  headers  without  knowing  perfectly  well  what\n"
-"              you're  doing. Remove an internal header by giving a replacement\n"
+"              (HTTP) Extra header to include in the request when sending  HTTP\n"
+"              to  a  server. You may specify any number of extra headers. Note\n"
+"              that if you should add a custom header that has the same name as\n"
+"              one  of  the  internal  ones curl would use, your externally set\n"
+"              header will be used instead of the internal one. This allows you\n"
+"              to  make  even  trickier  stuff than curl would normally do. You\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              without content on the right  side  of  the  colon,  as  in:  -H\n"
-"              \"Host:\".  If  you  send the custom header with no-value then its\n"
-"              header must be terminated with a semicolon, such as  -H  \"X-Cus-\n"
-"              tom-Header;\" to send \"X-Custom-Header:\".\n"
+"              should not replace internally set headers without  knowing  per-\n"
+"              fectly well what you're doing. Remove an internal header by giv-\n"
+"              ing a replacement without content  on  the  right  side  of  the\n"
+"              colon, as in: -H \"Host:\". If you send the custom header with no-\n"
+"              value then its header must be terminated with a semicolon,  such\n"
+"              as -H \"X-Custom-Header;\" to send \"X-Custom-Header:\".\n"
 "\n"
 "\n"
-"              curl  will  make  sure  that each header you add/replace is sent\n"
-"              with the proper end-of-line marker, you should thus not add that\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"              curl  will  make  sure  that each header you add/replace is sent\n"
+"              with the proper end-of-line marker, you should thus not add that\n"
 "              as a part of the header content: do not add newlines or carriage\n"
 "              returns, they will only mess things up for you.\n"
 "\n"
 "              See also the -A, --user-agent and -e, --referer options.\n"
 "\n"
 "              as a part of the header content: do not add newlines or carriage\n"
 "              returns, they will only mess things up for you.\n"
 "\n"
 "              See also the -A, --user-agent and -e, --referer options.\n"
 "\n"
-"              This option can be used  multiple  times  to  add/replace/remove\n"
+"              Starting in 7.37.0, you need --proxy-header to send custom head-\n"
+"              ers intended for a proxy.\n"
+"\n"
+, stdout);
+ fputs(
+"              Example:\n"
+"\n"
+"              # curl -H \"X-First-Name: Joe\" http://192.168.0.1/\n"
+"\n"
+"              This  option  can  be  used multiple times to add/replace/remove\n"
 "              multiple headers.\n"
 "\n"
 "       --hostpubmd5 <md5>\n"
 "              multiple headers.\n"
 "\n"
 "       --hostpubmd5 <md5>\n"
-"              (SCP/SFTP)  Pass  a string containing 32 hexadecimal digits. The\n"
+"              (SCP/SFTP) Pass a string containing 32 hexadecimal  digits.  The\n"
+"              string  should  be the 128 bit MD5 checksum of the remote host's\n"
+"              public key, curl will refuse the connection with the host unless\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              string should be the 128 bit MD5 checksum of the  remote  host's\n"
-"              public key, curl will refuse the connection with the host unless\n"
 "              the md5sums match. (Added in 7.17.1)\n"
 "\n"
 "       --ignore-content-length\n"
 "              the md5sums match. (Added in 7.17.1)\n"
 "\n"
 "       --ignore-content-length\n"
-"              (HTTP) Ignore the Content-Length header.  This  is  particularly\n"
-"              useful  for servers running Apache 1.x, which will report incor-\n"
+"              (HTTP)  Ignore  the  Content-Length header. This is particularly\n"
+"              useful for servers running Apache 1.x, which will report  incor-\n"
 "              rect Content-Length for files larger than 2 gigabytes.\n"
 "\n"
 "       -i, --include\n"
 "              rect Content-Length for files larger than 2 gigabytes.\n"
 "\n"
 "       -i, --include\n"
+"              (HTTP)  Include  the  HTTP-header in the output. The HTTP-header\n"
+"              includes things like server-name, date of  the  document,  HTTP-\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              (HTTP) Include the HTTP-header in the  output.  The  HTTP-header\n"
-"              includes  things  like  server-name, date of the document, HTTP-\n"
 "              version and more...\n"
 "\n"
 "       -I, --head\n"
 "              (HTTP/FTP/FILE) Fetch the HTTP-header only! HTTP-servers feature\n"
 "              version and more...\n"
 "\n"
 "       -I, --head\n"
 "              (HTTP/FTP/FILE) Fetch the HTTP-header only! HTTP-servers feature\n"
-"              the  command  HEAD which this uses to get nothing but the header\n"
-"              of a document. When used on an FTP or FILE file,  curl  displays\n"
-, stdout);
- fputs(
+"              the command HEAD which this uses to get nothing but  the  header\n"
+"              of  a  document. When used on an FTP or FILE file, curl displays\n"
 "              the file size and last modification time only.\n"
 "\n"
 "       --interface <name>\n"
 "              the file size and last modification time only.\n"
 "\n"
 "       --interface <name>\n"
-"              Perform  an operation using a specified interface. You can enter\n"
-"              interface name, IP address or host name. An example  could  look\n"
+"              Perform an operation using a specified interface. You can  enter\n"
+, stdout);
+ fputs(
+"              interface  name,  IP address or host name. An example could look\n"
 "              like:\n"
 "\n"
 "               curl --interface eth0:1 http://www.netscape.com/\n"
 "              like:\n"
 "\n"
 "               curl --interface eth0:1 http://www.netscape.com/\n"
@@ -918,96 +1069,105 @@ void hugehelp(void)
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       -j, --junk-session-cookies\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       -j, --junk-session-cookies\n"
+"              (HTTP) When curl is told to read cookies from a given file, this\n"
+"              option  will  make  it  discard all \"session cookies\". This will\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              (HTTP) When curl is told to read cookies from a given file, this\n"
-"              option will make it discard all  \"session  cookies\".  This  will\n"
-"              basically  have  the same effect as if a new session is started.\n"
-"              Typical browsers always discard  session  cookies  when  they're\n"
+"              basically have the same effect as if a new session  is  started.\n"
+"              Typical  browsers  always  discard  session cookies when they're\n"
 "              closed down.\n"
 "\n"
 "       -J, --remote-header-name\n"
 "              (HTTP) This option tells the -O, --remote-name option to use the\n"
 "              closed down.\n"
 "\n"
 "       -J, --remote-header-name\n"
 "              (HTTP) This option tells the -O, --remote-name option to use the\n"
-, stdout);
- fputs(
 "              server-specified   Content-Disposition   filename   instead   of\n"
 "              extracting a filename from the URL.\n"
 "\n"
 "              server-specified   Content-Disposition   filename   instead   of\n"
 "              extracting a filename from the URL.\n"
 "\n"
+, stdout);
+ fputs(
+"              There's no attempt to decode %-sequences (yet) in  the  provided\n"
+"              file name, so this option may provide you with rather unexpected\n"
+"              file names.\n"
+"\n"
 "       -k, --insecure\n"
 "       -k, --insecure\n"
-"              (SSL)  This  option explicitly allows curl to perform \"insecure\"\n"
+"              (SSL) This option explicitly allows curl to  perform  \"insecure\"\n"
 "              SSL connections and transfers. All SSL connections are attempted\n"
 "              SSL connections and transfers. All SSL connections are attempted\n"
-"              to  be  made secure by using the CA certificate bundle installed\n"
-"              by default. This makes  all  connections  considered  \"insecure\"\n"
+"              to be made secure by using the CA certificate  bundle  installed\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"              by  default.  This  makes  all connections considered \"insecure\"\n"
 "              fail unless -k, --insecure is used.\n"
 "\n"
 "              fail unless -k, --insecure is used.\n"
 "\n"
-"              See     this    online    resource    for    further    details:\n"
+"              See    this    online    resource    for    further     details:\n"
 "              http://curl.haxx.se/docs/sslcerts.html\n"
 "\n"
 "       -K, --config <config file>\n"
 "              http://curl.haxx.se/docs/sslcerts.html\n"
 "\n"
 "       -K, --config <config file>\n"
-"              Specify which config file to read curl arguments from. The  con-\n"
-"              fig  file  is a text file in which command line arguments can be\n"
-"              written which then will be used as if they were written  on  the\n"
+"              Specify  which config file to read curl arguments from. The con-\n"
+"              fig file is a text file in which command line arguments  can  be\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              actual command line. Options and their parameters must be speci-\n"
-"              fied on the same config  file  line,  separated  by  whitespace,\n"
-"              colon,  the equals sign or any combination thereof (however, the\n"
-"              preferred separator is the equals sign). If the parameter is  to\n"
-"              contain  whitespace,  the  parameter  must  be  enclosed  within\n"
-"              quotes. Within double quotes, the following escape sequences are\n"
+"              written  which  then will be used as if they were written on the\n"
+"              actual command line.\n"
+"\n"
+"              Options and their parameters must be specified on the same  con-\n"
+"              fig  file  line,  separated  by whitespace, colon, or the equals\n"
+"              sign. Long option names can optionally be given  in  the  config\n"
+"              file  without  the initial double dashes and if so, the colon or\n"
+, stdout);
+ fputs(
+"              equals characters can be used as separators. If  the  option  is\n"
+"              specified  with  one  or  two  dashes,  there can be no colon or\n"
+"              equals character between the option and its parameter.\n"
+"\n"
+"              If the parameter is to contain whitespace, the parameter must be\n"
+"              enclosed  within  quotes.  Within  double  quotes, the following\n"
+"              escape sequences are available: \\\\, \\\", \\t, \\n,  \\r  and  \\v.  A\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              available:  \\\\, \\\", \\t, \\n, \\r and \\v. A backslash preceding any\n"
-"              other letter is ignored. If the first column of a config line is\n"
-"              a  '#' character, the rest of the line will be treated as a com-\n"
-"              ment. Only write one option per  physical  line  in  the  config\n"
-"              file.\n"
+"              backslash  preceding  any  other letter is ignored. If the first\n"
+"              column of a config line is a '#' character, the rest of the line\n"
+"              will be treated as a comment. Only write one option per physical\n"
+"              line in the config file.\n"
 "\n"
 "\n"
-"              Specify  the  filename  to -K, --config as '-' to make curl read\n"
+"              Specify the filename to -K, --config as '-' to  make  curl  read\n"
 "              the file from stdin.\n"
 "\n"
 "              the file from stdin.\n"
 "\n"
+"              Note  that  to  be able to specify a URL in the config file, you\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              Note that to be able to specify a URL in the  config  file,  you\n"
-"              need  to  specify  it  using the --url option, and not by simply\n"
-"              writing the URL on its own line. So, it could  look  similar  to\n"
+"              need to specify it using the --url option,  and  not  by  simply\n"
+"              writing  the  URL  on its own line. So, it could look similar to\n"
 "              this:\n"
 "\n"
 "              url = \"http://curl.haxx.se/docs/\"\n"
 "\n"
 "              this:\n"
 "\n"
 "              url = \"http://curl.haxx.se/docs/\"\n"
 "\n"
-"              Long  option  names  can  optionally be given in the config file\n"
-"              without the initial double dashes.\n"
-"\n"
-, stdout);
- fputs(
 "              When curl is invoked, it always (unless -q is used) checks for a\n"
 "              default  config  file  and  uses it if found. The default config\n"
 "              file is checked for in the following places in this order:\n"
 "\n"
 "              When curl is invoked, it always (unless -q is used) checks for a\n"
 "              default  config  file  and  uses it if found. The default config\n"
 "              file is checked for in the following places in this order:\n"
 "\n"
-"              1) curl tries to find the \"home dir\": It first  checks  for  the\n"
-"              CURL_HOME and then the HOME environment variables. Failing that,\n"
-"              it uses getpwuid() on UNIX-like systems (which returns the  home\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"              1) curl tries to find the \"home dir\": It first  checks  for  the\n"
+"              CURL_HOME and then the HOME environment variables. Failing that,\n"
+"              it uses getpwuid() on Unix-like systems (which returns the  home\n"
 "              dir  given the current user in your system). On Windows, it then\n"
 "              checks for the APPDATA variable, or as a last resort the '%USER-\n"
 "              PROFILE%\\Application Data'.\n"
 "\n"
 "              dir  given the current user in your system). On Windows, it then\n"
 "              checks for the APPDATA variable, or as a last resort the '%USER-\n"
 "              PROFILE%\\Application Data'.\n"
 "\n"
+, stdout);
+ fputs(
 "              2)  On  windows, if there is no _curlrc file in the home dir, it\n"
 "              checks for one in the same dir the curl executable is placed. On\n"
 "              2)  On  windows, if there is no _curlrc file in the home dir, it\n"
 "              checks for one in the same dir the curl executable is placed. On\n"
-"              UNIX-like  systems,  it will simply try to load .curlrc from the\n"
+"              Unix-like  systems,  it will simply try to load .curlrc from the\n"
 "              determined home dir.\n"
 "\n"
 "              determined home dir.\n"
 "\n"
-, stdout);
- fputs(
 "              # --- Example file ---\n"
 "              # this is a comment\n"
 "              url = \"curl.haxx.se\"\n"
 "              output = \"curlhere.html\"\n"
 "              user-agent = \"superagent/1.0\"\n"
 "\n"
 "              # --- Example file ---\n"
 "              # this is a comment\n"
 "              url = \"curl.haxx.se\"\n"
 "              output = \"curlhere.html\"\n"
 "              user-agent = \"superagent/1.0\"\n"
 "\n"
+, stdout);
+ fputs(
 "              # and fetch another URL too\n"
 "              url = \"curl.haxx.se/docs/manpage.html\"\n"
 "              -O\n"
 "              # and fetch another URL too\n"
 "              url = \"curl.haxx.se/docs/manpage.html\"\n"
 "              -O\n"
@@ -1017,31 +1177,33 @@ void hugehelp(void)
 "              This option can be used multiple times to load  multiple  config\n"
 "              files.\n"
 "\n"
 "              This option can be used multiple times to load  multiple  config\n"
 "              files.\n"
 "\n"
-, stdout);
- fputs(
 "       --keepalive-time <seconds>\n"
 "              This  option  sets  the  time  a connection needs to remain idle\n"
 "       --keepalive-time <seconds>\n"
 "              This  option  sets  the  time  a connection needs to remain idle\n"
+, stdout);
+ fputs(
 "              before sending keepalive probes and the time between  individual\n"
 "              keepalive probes. It is currently effective on operating systems\n"
 "              offering  the  TCP_KEEPIDLE  and  TCP_KEEPINTVL  socket  options\n"
 "              (meaning  Linux, recent AIX, HP-UX and more). This option has no\n"
 "              effect if --no-keepalive is used. (Added in 7.18.0)\n"
 "\n"
 "              before sending keepalive probes and the time between  individual\n"
 "              keepalive probes. It is currently effective on operating systems\n"
 "              offering  the  TCP_KEEPIDLE  and  TCP_KEEPINTVL  socket  options\n"
 "              (meaning  Linux, recent AIX, HP-UX and more). This option has no\n"
 "              effect if --no-keepalive is used. (Added in 7.18.0)\n"
 "\n"
+"              If this option is used several times, the last one will be used.\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              If this option is used several times, the last one will be used.\n"
 "              If unspecified, the option defaults to 60 seconds.\n"
 "\n"
 "       --key <key>\n"
 "              (SSL/SSH) Private key file name. Allows you to provide your pri-\n"
 "              If unspecified, the option defaults to 60 seconds.\n"
 "\n"
 "       --key <key>\n"
 "              (SSL/SSH) Private key file name. Allows you to provide your pri-\n"
-"              vate key in this separate file.\n"
+"              vate key in this separate file. For SSH, if not specified,  curl\n"
+"              tries   the  following  candidates  in  order:  '~/.ssh/id_rsa',\n"
+"              '~/.ssh/id_dsa', './id_rsa', './id_dsa'.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --key-type <type>\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --key-type <type>\n"
-"              (SSL) Private key file type. Specify which type your --key  pro-\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"              (SSL) Private key file type. Specify which type your --key  pro-\n"
 "              vided  private  key  is. DER, PEM, and ENG are supported. If not\n"
 "              specified, PEM is assumed.\n"
 "\n"
 "              vided  private  key  is. DER, PEM, and ENG are supported. If not\n"
 "              specified, PEM is assumed.\n"
 "\n"
@@ -1050,14 +1212,14 @@ void hugehelp(void)
 "       --krb <level>\n"
 "              (FTP) Enable Kerberos authentication and use. The level must  be\n"
 "              entered and should be one of 'clear', 'safe', 'confidential', or\n"
 "       --krb <level>\n"
 "              (FTP) Enable Kerberos authentication and use. The level must  be\n"
 "              entered and should be one of 'clear', 'safe', 'confidential', or\n"
-"              'private'. Should you use a level that  is  not  one  of  these,\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"              'private'. Should you use a level that  is  not  one  of  these,\n"
 "              'private' will instead be used.\n"
 "\n"
 "              'private' will instead be used.\n"
 "\n"
-"              This  option  requires  a library built with kerberos4 or GSSAPI\n"
-"              (GSS-Negotiate) support. This is not very common. Use -V, --ver-\n"
-"              sion to see if your curl supports it.\n"
+"              This  option  requires  a  library built with kerberos4 support.\n"
+"              This is not very common. Use -V, --version to see if  your  curl\n"
+"              supports it.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
@@ -1065,65 +1227,85 @@ void hugehelp(void)
 "              (FTP)  When listing an FTP directory, this switch forces a name-\n"
 , stdout);
  fputs(
 "              (FTP)  When listing an FTP directory, this switch forces a name-\n"
 , stdout);
  fputs(
-"              only view.  Especially useful if you want to  machine-parse  the\n"
-"              contents  of  an  FTP  directory since the normal directory view\n"
-"              doesn't use a standard look or format.\n"
+"              only view. This is  especially  useful  if  the  user  wants  to\n"
+"              machine-parse  the contents of an FTP directory since the normal\n"
+"              directory view doesn't use a standard look or format. When  used\n"
+"              like  this,  the  option causes a NLST command to be sent to the\n"
+"              server instead of LIST.\n"
+"\n"
+"              Note: Some FTP servers list only  files  in  their  response  to\n"
+, stdout);
+ fputs(
+"              NLST; they do not include sub-directories and symbolic links.\n"
 "\n"
 "\n"
-"              This option causes an FTP NLST command to  be  sent.   Some  FTP\n"
-"              servers  list  only files in their response to NLST; they do not\n"
-"              include subdirectories and symbolic links.\n"
+"              (POP3)  When  retrieving a specific email from POP3, this switch\n"
+"              forces a LIST command to be performed instead of RETR.  This  is\n"
+"              particularly  useful if the user wants to see if a specific mes-\n"
+"              sage id exists on the server and what size it is.\n"
 "\n"
 "\n"
-"       -L, --location\n"
+"              Note: When combined with -X, --request  <command>,  this  option\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              (HTTP/HTTPS) If the server reports that the requested  page  has\n"
+"              can be used to send an UIDL command instead, so the user may use\n"
+"              the email's unique identifier rather than  it's  message  id  to\n"
+"              make the request. (Added in 7.21.5)\n"
+"\n"
+"       -L, --location\n"
+"              (HTTP/HTTPS)  If  the server reports that the requested page has\n"
 "              moved to a different location (indicated with a Location: header\n"
 "              moved to a different location (indicated with a Location: header\n"
-"              and a 3XX response code), this option will make  curl  redo  the\n"
+"              and  a  3XX  response code), this option will make curl redo the\n"
+, stdout);
+ fputs(
 "              request on the new place. If used together with -i, --include or\n"
 "              -I, --head, headers from all requested pages will be shown. When\n"
 "              request on the new place. If used together with -i, --include or\n"
 "              -I, --head, headers from all requested pages will be shown. When\n"
-"              authentication  is  used, curl only sends its credentials to the\n"
+"              authentication is used, curl only sends its credentials  to  the\n"
+"              initial  host.  If a redirect takes curl to a different host, it\n"
+"              won't be able to intercept the user+password. See  also  --loca-\n"
+"              tion-trusted  on how to change this. You can limit the amount of\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              initial host. If a redirect takes curl to a different  host,  it\n"
-"              won't  be  able to intercept the user+password. See also --loca-\n"
-"              tion-trusted on how to change this. You can limit the amount  of\n"
 "              redirects to follow by using the --max-redirs option.\n"
 "\n"
 "              redirects to follow by using the --max-redirs option.\n"
 "\n"
-"              When  curl follows a redirect and the request is not a plain GET\n"
+"              When curl follows a redirect and the request is not a plain  GET\n"
 "              (for example POST or PUT), it will do the following request with\n"
 "              (for example POST or PUT), it will do the following request with\n"
-, stdout);
- fputs(
 "              a GET if the HTTP response was 301, 302, or 303. If the response\n"
 "              a GET if the HTTP response was 301, 302, or 303. If the response\n"
-"              code was any other 3xx code, curl  will  re-send  the  following\n"
+"              code  was  any  other  3xx code, curl will re-send the following\n"
 "              request using the same unmodified method.\n"
 "\n"
 "              request using the same unmodified method.\n"
 "\n"
+, stdout);
+ fputs(
+"              You can tell curl to not change the non-GET  request  method  to\n"
+"              GET  after  a  30x  response  by using the dedicated options for\n"
+"              that: --post301, --post302 and -post303.\n"
+"\n"
 "       --libcurl <file>\n"
 "       --libcurl <file>\n"
-"              Append  this  option  to any ordinary curl command line, and you\n"
-"              will get a libcurl-using C source code written to the file  that\n"
+"              Append this option to any ordinary curl command  line,  and  you\n"
+"              will  get a libcurl-using C source code written to the file that\n"
 "              does the equivalent of what your command-line operation does!\n"
 "\n"
 , stdout);
  fputs(
 "              does the equivalent of what your command-line operation does!\n"
 "\n"
 , stdout);
  fputs(
-"              If  this  option is used several times, the last given file name\n"
+"              If this option is used several times, the last given  file  name\n"
 "              will be used. (Added in 7.16.1)\n"
 "\n"
 "       --limit-rate <speed>\n"
 "              will be used. (Added in 7.16.1)\n"
 "\n"
 "       --limit-rate <speed>\n"
-"              Specify the maximum transfer rate you want  curl  to  use.  This\n"
-"              feature is useful if you have a limited pipe and you'd like your\n"
-"              transfer not to use your entire bandwidth.\n"
+"              Specify  the  maximum  transfer  rate you want curl to use - for\n"
+"              both downloads and uploads. This feature is useful if you have a\n"
+"              limited pipe and you'd like your transfer not to use your entire\n"
+"              bandwidth. To make it slower than it otherwise would be.\n"
 "\n"
 "\n"
-"              The given speed is measured in bytes/second, unless a suffix  is\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"              The given speed is measured in bytes/second, unless a suffix  is\n"
 "              appended.   Appending  'k' or 'K' will count the number as kilo-\n"
 "              bytes, 'm' or M' makes it megabytes, while 'g' or 'G'  makes  it\n"
 "              gigabytes. Examples: 200K, 3m and 1G.\n"
 "\n"
 "              The  given  rate  is the average speed counted during the entire\n"
 "              transfer. It means that curl might use higher transfer speeds in\n"
 "              appended.   Appending  'k' or 'K' will count the number as kilo-\n"
 "              bytes, 'm' or M' makes it megabytes, while 'g' or 'G'  makes  it\n"
 "              gigabytes. Examples: 200K, 3m and 1G.\n"
 "\n"
 "              The  given  rate  is the average speed counted during the entire\n"
 "              transfer. It means that curl might use higher transfer speeds in\n"
-"              short bursts, but over time it uses no more than the given rate.\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"              short bursts, but over time it uses no more than the given rate.\n"
 "              If  you  also use the -Y, --speed-limit option, that option will\n"
 "              take precedence and might cripple the rate-limiting slightly, to\n"
 "              help keeping the speed-limit logic working.\n"
 "              If  you  also use the -Y, --speed-limit option, that option will\n"
 "              take precedence and might cripple the rate-limiting slightly, to\n"
 "              help keeping the speed-limit logic working.\n"
@@ -1132,9 +1314,9 @@ void hugehelp(void)
 "\n"
 "       --local-port <num>[-num]\n"
 "              Set a preferred number or range of local port numbers to use for\n"
 "\n"
 "       --local-port <num>[-num]\n"
 "              Set a preferred number or range of local port numbers to use for\n"
-"              the connection(s).  Note that  port  numbers  by  nature  are  a\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"              the connection(s).  Note that  port  numbers  by  nature  are  a\n"
 "              scarce resource that will be busy at times so setting this range\n"
 "              to something too narrow might cause unnecessary connection setup\n"
 "              failures. (Added in 7.15.2)\n"
 "              scarce resource that will be busy at times so setting this range\n"
 "              to something too narrow might cause unnecessary connection setup\n"
 "              failures. (Added in 7.15.2)\n"
@@ -1142,28 +1324,41 @@ void hugehelp(void)
 "       --location-trusted\n"
 "              (HTTP/HTTPS)  Like  -L,  --location,  but will allow sending the\n"
 "              name + password to all hosts that the site may redirect to. This\n"
 "       --location-trusted\n"
 "              (HTTP/HTTPS)  Like  -L,  --location,  but will allow sending the\n"
 "              name + password to all hosts that the site may redirect to. This\n"
-"              may or may not introduce a security breach if the site redirects\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"              may or may not introduce a security breach if the site redirects\n"
 "              you to a site to which  you'll  send  your  authentication  info\n"
 "              (which is plaintext in the case of HTTP Basic authentication).\n"
 "\n"
 "       -m, --max-time <seconds>\n"
 "              Maximum  time  in  seconds that you allow the whole operation to\n"
 "              take.  This is useful for preventing your batch jobs from  hang-\n"
 "              you to a site to which  you'll  send  your  authentication  info\n"
 "              (which is plaintext in the case of HTTP Basic authentication).\n"
 "\n"
 "       -m, --max-time <seconds>\n"
 "              Maximum  time  in  seconds that you allow the whole operation to\n"
 "              take.  This is useful for preventing your batch jobs from  hang-\n"
-"              ing  for  hours due to slow networks or links going down.  Since\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"              ing  for  hours due to slow networks or links going down.  Since\n"
 "              7.32.0, this option accepts decimal values, but the actual time-\n"
 "              out will decrease in accuracy as the specified timeout increases\n"
 "              in decimal precision.  See also the --connect-timeout option.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "              7.32.0, this option accepts decimal values, but the actual time-\n"
 "              out will decrease in accuracy as the specified timeout increases\n"
 "              in decimal precision.  See also the --connect-timeout option.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
-"       --mail-auth <address>\n"
-"              (SMTP) Specify a single address. This will be  used  to  specify\n"
+"       --login-options <options>\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"              Specify the login options to use during server authentication.\n"
+"\n"
+"              You can use the  login  options  to  specify  protocol  specific\n"
+"              options  that may be used during authentication. At present only\n"
+"              IMAP, POP3 and SMTP support login options. For more  information\n"
+"              about  the  login options please see RFC 2384, RFC 5092 and IETF\n"
+"              draft draft-earhart-url-smtp-00.txt (Added in 7.34.0).\n"
+"\n"
+, stdout);
+ fputs(
+"              If this option is used several times, the last one will be used.\n"
+"\n"
+"       --mail-auth <address>\n"
+"              (SMTP) Specify a single address. This will be  used  to  specify\n"
 "              the  authentication  address  (identity)  of a submitted message\n"
 "              that is being relayed to another server.\n"
 "\n"
 "              the  authentication  address  (identity)  of a submitted message\n"
 "              that is being relayed to another server.\n"
 "\n"
@@ -1173,155 +1368,156 @@ void hugehelp(void)
 "              (SMTP) Specify a single address that the given mail  should  get\n"
 "              sent from.\n"
 "\n"
 "              (SMTP) Specify a single address that the given mail  should  get\n"
 "              sent from.\n"
 "\n"
+, stdout);
+ fputs(
 "              (Added in 7.20.0)\n"
 "\n"
 "       --max-filesize <bytes>\n"
 "              Specify  the  maximum  size (in bytes) of a file to download. If\n"
 "              (Added in 7.20.0)\n"
 "\n"
 "       --max-filesize <bytes>\n"
 "              Specify  the  maximum  size (in bytes) of a file to download. If\n"
-, stdout);
- fputs(
 "              the file requested is larger than this value, the transfer  will\n"
 "              not start and curl will return with exit code 63.\n"
 "\n"
 "              NOTE:  The  file size is not always known prior to download, and\n"
 "              for such files this option has no effect even if the file trans-\n"
 "              the file requested is larger than this value, the transfer  will\n"
 "              not start and curl will return with exit code 63.\n"
 "\n"
 "              NOTE:  The  file size is not always known prior to download, and\n"
 "              for such files this option has no effect even if the file trans-\n"
+, stdout);
+ fputs(
 "              fer  ends  up  being larger than this given limit. This concerns\n"
 "              both FTP and HTTP transfers.\n"
 "\n"
 "       --mail-rcpt <address>\n"
 "              fer  ends  up  being larger than this given limit. This concerns\n"
 "              both FTP and HTTP transfers.\n"
 "\n"
 "       --mail-rcpt <address>\n"
+"              (SMTP) Specify a single address, user name or mailing list name.\n"
+"              When performing a mail transfer, the recipient should specify  a\n"
+"              valid email address to send the mail to. (Added in 7.20.0)\n"
+"\n"
+"              When  performing  an  address  verification  (VRFY command), the\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              (SMTP) Specify a single address that the given mail  should  get\n"
-"              sent  to. This option can be used multiple times to specify many\n"
-"              recipients.\n"
+"              recipient should be specified as the user name or user name  and\n"
+"              domain (as per Section 3.5 of RFC5321). (Added in 7.34.0)\n"
 "\n"
 "\n"
-"              (Added in 7.20.0)\n"
+"              When performing a mailing list expand (EXPN command), the recip-\n"
+"              ient should be specified using the mailing list  name,  such  as\n"
+"              \"Friends\" or \"London-Office\".  (Added in 7.34.0)\n"
 "\n"
 "       --max-redirs <num>\n"
 "\n"
 "       --max-redirs <num>\n"
-"              Set maximum number of  redirection-followings  allowed.  If  -L,\n"
-"              --location is used, this option can be used to prevent curl from\n"
-"              following redirections \"in absurdum\". By default, the  limit  is\n"
+"              Set  maximum  number  of  redirection-followings allowed. If -L,\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              set  to 50 redirections. Set this option to -1 to make it limit-\n"
+"              --location is used, this option can be used to prevent curl from\n"
+"              following  redirections  \"in absurdum\". By default, the limit is\n"
+"              set to 50 redirections. Set this option to -1 to make it  limit-\n"
 "              less.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --metalink\n"
 "              less.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --metalink\n"
-"              This option can tell curl to parse and process a  given  URI  as\n"
-"              Metalink  file  (both  version 3 and 4 (RFC 5854) are supported)\n"
-"              and make use of the mirrors listed within for failover if  there\n"
+"              This  option  can  tell curl to parse and process a given URI as\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              are  errors (such as the file or server not being available). It\n"
-"              will also verify the hash of the file after  the  download  com-\n"
-"              pletes.  The Metalink file itself is downloaded and processed in\n"
+"              Metalink file (both version 3 and 4 (RFC  5854)  are  supported)\n"
+"              and  make use of the mirrors listed within for failover if there\n"
+"              are errors (such as the file or server not being available).  It\n"
+"              will  also  verify  the hash of the file after the download com-\n"
+"              pletes. The Metalink file itself is downloaded and processed  in\n"
 "              memory and not stored in the local file system.\n"
 "\n"
 "              memory and not stored in the local file system.\n"
 "\n"
+, stdout);
+ fputs(
 "              Example to use a remote Metalink file:\n"
 "\n"
 "              curl --metalink http://www.example.com/example.metalink\n"
 "\n"
 "              Example to use a remote Metalink file:\n"
 "\n"
 "              curl --metalink http://www.example.com/example.metalink\n"
 "\n"
-, stdout);
- fputs(
 "              To use a Metalink file in the local file system, use FILE proto-\n"
 "              col (file://):\n"
 "\n"
 "              curl --metalink file://example.metalink\n"
 "\n"
 "              To use a Metalink file in the local file system, use FILE proto-\n"
 "              col (file://):\n"
 "\n"
 "              curl --metalink file://example.metalink\n"
 "\n"
-"              Please  note  that if FILE protocol is disabled, there is no way\n"
-"              to use a local Metalink file at the time of this  writing.  Also\n"
-"              note  that  if  --metalink  and  --include  are  used  together,\n"
-"              --include will be ignored. This is because including headers  in\n"
+"              Please note that if FILE protocol is disabled, there is  no  way\n"
+"              to  use  a local Metalink file at the time of this writing. Also\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              the  response  will break Metalink parser and if the headers are\n"
+"              note  that  if  --metalink  and  --include  are  used  together,\n"
+"              --include  will be ignored. This is because including headers in\n"
+"              the response will break Metalink parser and if the  headers  are\n"
 "              included in the file described in Metalink file, hash check will\n"
 "              fail.\n"
 "\n"
 "              (Added in 7.27.0, if built against the libmetalink library.)\n"
 "\n"
 "       -n, --netrc\n"
 "              included in the file described in Metalink file, hash check will\n"
 "              fail.\n"
 "\n"
 "              (Added in 7.27.0, if built against the libmetalink library.)\n"
 "\n"
 "       -n, --netrc\n"
-"              Makes  curl  scan  the  .netrc  (_netrc  on Windows) file in the\n"
+, stdout);
+ fputs(
+"              Makes curl scan the .netrc  (_netrc  on  Windows)  file  in  the\n"
 "              user's home directory for login name and password. This is typi-\n"
 "              user's home directory for login name and password. This is typi-\n"
+"              cally used for FTP on Unix. If used with HTTP, curl will  enable\n"
+"              user  authentication.  See netrc(4) or ftp(1) for details on the\n"
+"              file format. Curl will not complain if that  file  doesn't  have\n"
+"              the  right permissions (it should not be either world- or group-\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              cally  used for FTP on UNIX. If used with HTTP, curl will enable\n"
-"              user authentication. See netrc(4) or ftp(1) for details  on  the\n"
-"              file  format.  Curl  will not complain if that file doesn't have\n"
-"              the right permissions (it should not be either world- or  group-\n"
-"              readable).  The  environment variable \"HOME\" is used to find the\n"
+"              readable). The environment variable \"HOME\" is used to  find  the\n"
 "              home directory.\n"
 "\n"
 "              home directory.\n"
 "\n"
-, stdout);
- fputs(
-"              A quick and very simple example of how  to  setup  a  .netrc  to\n"
-"              allow  curl to FTP to the machine host.domain.com with user name\n"
+"              A  quick  and  very  simple  example of how to setup a .netrc to\n"
+"              allow curl to FTP to the machine host.domain.com with user  name\n"
 "              'myself' and password 'secret' should look similar to:\n"
 "\n"
 "              machine host.domain.com login myself password secret\n"
 "\n"
 "       -N, --no-buffer\n"
 "              'myself' and password 'secret' should look similar to:\n"
 "\n"
 "              machine host.domain.com login myself password secret\n"
 "\n"
 "       -N, --no-buffer\n"
-"              Disables the buffering of the output stream. In normal work sit-\n"
-"              uations,  curl  will  use a standard buffered output stream that\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"              Disables the buffering of the output stream. In normal work sit-\n"
+"              uations, curl will use a standard buffered  output  stream  that\n"
 "              will have the effect that it will output the data in chunks, not\n"
 "              will have the effect that it will output the data in chunks, not\n"
-"              necessarily  exactly  when  the data arrives.  Using this option\n"
+"              necessarily exactly when the data arrives.   Using  this  option\n"
 "              will disable that buffering.\n"
 "\n"
 "              will disable that buffering.\n"
 "\n"
-"              Note that this is the negated option name  documented.  You  can\n"
+"              Note  that  this  is the negated option name documented. You can\n"
 "              thus use --buffer to enforce the buffering.\n"
 "\n"
 "              thus use --buffer to enforce the buffering.\n"
 "\n"
-"       --netrc-file\n"
-"              This  option  is similar to --netrc, except that you provide the\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              path (absolute or relative) to the netrc file that  Curl  should\n"
-"              use.   You  can  only  specify one netrc file per invocation. If\n"
-"              several --netrc-file options are provided,  only  the  last  one\n"
+"       --netrc-file\n"
+"              This option is similar to --netrc, except that you  provide  the\n"
+"              path  (absolute  or relative) to the netrc file that Curl should\n"
+"              use.  You can only specify one netrc  file  per  invocation.  If\n"
+"              several  --netrc-file  options  are  provided, only the last one\n"
 "              will be used.  (Added in 7.21.5)\n"
 "\n"
 "              will be used.  (Added in 7.21.5)\n"
 "\n"
-"              This  option  overrides  any use of --netrc as they are mutually\n"
+"              This option overrides any use of --netrc as  they  are  mutually\n"
+, stdout);
+ fputs(
 "              exclusive.  It will also abide by --netrc-optional if specified.\n"
 "\n"
 "       --netrc-optional\n"
 "              exclusive.  It will also abide by --netrc-optional if specified.\n"
 "\n"
 "       --netrc-optional\n"
-, stdout);
- fputs(
-"              Very similar to --netrc, but this option makes the .netrc  usage\n"
+"              Very  similar to --netrc, but this option makes the .netrc usage\n"
 "              optional and not mandatory as the --netrc option does.\n"
 "\n"
 "       --negotiate\n"
 "              optional and not mandatory as the --netrc option does.\n"
 "\n"
 "       --negotiate\n"
-"              (HTTP)  Enables  GSS-Negotiate authentication. The GSS-Negotiate\n"
-"              method was designed by Microsoft and is used in their web appli-\n"
-"              cations.  It  is  primarily  meant  as  a  support for Kerberos5\n"
-"              authentication but may be also used along with another authenti-\n"
-, stdout);
- fputs(
-"              cation method. For more information see IETF draft draft-brezak-\n"
-"              spnego-http-04.txt.\n"
+"              (HTTP) Enables Negotiate (SPNEGO) authentication.\n"
 "\n"
 "\n"
-"              If you want to enable Negotiate for your  proxy  authentication,\n"
-"              then use --proxy-negotiate.\n"
-"\n"
-"              This  option  requires a library built with GSSAPI support. This\n"
-"              is not very common. Use -V, --version to  see  if  your  version\n"
-"              supports GSS-Negotiate.\n"
+"              If you want to enable Negotiate (SPNEGO) for  proxy  authentica-\n"
+"              tion, then use --proxy-negotiate.\n"
 "\n"
 , stdout);
  fputs(
 "\n"
 , stdout);
  fputs(
+"              This  option  requires a library built with GSS-API or SSPI sup-\n"
+"              port. Use -V, --version  to  see  if  your  curl  supports  GSS-\n"
+"              API/SSPI and SPNEGO.\n"
+"\n"
 "              When  using this option, you must also provide a fake -u, --user\n"
 "              option to activate the authentication code properly.  Sending  a\n"
 "              '-u  :'  is  enough  as  the  user name and password from the -u\n"
 "              option aren't actually used.\n"
 "\n"
 "              When  using this option, you must also provide a fake -u, --user\n"
 "              option to activate the authentication code properly.  Sending  a\n"
 "              '-u  :'  is  enough  as  the  user name and password from the -u\n"
 "              option aren't actually used.\n"
 "\n"
+, stdout);
+ fputs(
 "              If this option is used several times,  only  the  first  one  is\n"
 "              used.\n"
 "\n"
 "       --no-keepalive\n"
 "              Disables the use of keepalive messages on the TCP connection, as\n"
 "              If this option is used several times,  only  the  first  one  is\n"
 "              used.\n"
 "\n"
 "       --no-keepalive\n"
 "              Disables the use of keepalive messages on the TCP connection, as\n"
-, stdout);
- fputs(
 "              by default curl enables them.\n"
 "\n"
 "              Note that this is the negated option name  documented.  You  can\n"
 "              by default curl enables them.\n"
 "\n"
 "              Note that this is the negated option name  documented.  You  can\n"
@@ -1329,10 +1525,10 @@ void hugehelp(void)
 "\n"
 "       --no-sessionid\n"
 "              (SSL)  Disable curl's use of SSL session-ID caching.  By default\n"
 "\n"
 "       --no-sessionid\n"
 "              (SSL)  Disable curl's use of SSL session-ID caching.  By default\n"
-"              all transfers are done using the cache. Note that while  nothing\n"
-"              should  ever  get  hurt  by attempting to reuse SSL session-IDs,\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"              all transfers are done using the cache. Note that while  nothing\n"
+"              should  ever  get  hurt  by attempting to reuse SSL session-IDs,\n"
 "              there seem to be broken SSL implementations in the wild that may\n"
 "              require  you to disable this in order for you to succeed. (Added\n"
 "              in 7.16.0)\n"
 "              there seem to be broken SSL implementations in the wild that may\n"
 "              require  you to disable this in order for you to succeed. (Added\n"
 "              in 7.16.0)\n"
@@ -1340,27 +1536,27 @@ void hugehelp(void)
 "              Note that this is the negated option name  documented.  You  can\n"
 "              thus use --sessionid to enforce session-ID caching.\n"
 "\n"
 "              Note that this is the negated option name  documented.  You  can\n"
 "              thus use --sessionid to enforce session-ID caching.\n"
 "\n"
-"       --noproxy <no-proxy-list>\n"
-"              Comma-separated  list  of hosts which do not use a proxy, if one\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"       --noproxy <no-proxy-list>\n"
+"              Comma-separated  list  of hosts which do not use a proxy, if one\n"
 "              is specified.  The only wildcard is a single * character,  which\n"
 "              matches all hosts, and effectively disables the proxy. Each name\n"
 "              in this list is matched as either a domain  which  contains  the\n"
 "              hostname,  or  the hostname itself. For example, local.com would\n"
 "              is specified.  The only wildcard is a single * character,  which\n"
 "              matches all hosts, and effectively disables the proxy. Each name\n"
 "              in this list is matched as either a domain  which  contains  the\n"
 "              hostname,  or  the hostname itself. For example, local.com would\n"
+, stdout);
+ fputs(
 "              match  local.com,  local.com:80,  and  www.local.com,  but   not\n"
 "              www.notlocal.com.  (Added in 7.19.4).\n"
 "\n"
 "              match  local.com,  local.com:80,  and  www.local.com,  but   not\n"
 "              www.notlocal.com.  (Added in 7.19.4).\n"
 "\n"
-, stdout);
- fputs(
 "       --ntlm (HTTP)  Enables  NTLM  authentication.  The  NTLM authentication\n"
 "              method was designed by Microsoft and is used by IIS web servers.\n"
 "              It  is a proprietary protocol, reverse-engineered by clever peo-\n"
 "              ple and implemented in curl based on their efforts. This kind of\n"
 "       --ntlm (HTTP)  Enables  NTLM  authentication.  The  NTLM authentication\n"
 "              method was designed by Microsoft and is used by IIS web servers.\n"
 "              It  is a proprietary protocol, reverse-engineered by clever peo-\n"
 "              ple and implemented in curl based on their efforts. This kind of\n"
-"              behavior  should  not be endorsed, you should encourage everyone\n"
-"              who uses NTLM to switch to a public and  documented  authentica-\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"              behavior  should  not be endorsed, you should encourage everyone\n"
+"              who uses NTLM to switch to a public and  documented  authentica-\n"
 "              tion method instead, such as Digest.\n"
 "\n"
 "              If  you  want to enable NTLM for your proxy authentication, then\n"
 "              tion method instead, such as Digest.\n"
 "\n"
 "              If  you  want to enable NTLM for your proxy authentication, then\n"
@@ -1369,25 +1565,25 @@ void hugehelp(void)
 "              This option requires a library built with SSL support.  Use  -V,\n"
 "              --version to see if your curl supports NTLM.\n"
 "\n"
 "              This option requires a library built with SSL support.  Use  -V,\n"
 "              --version to see if your curl supports NTLM.\n"
 "\n"
+, stdout);
+ fputs(
 "              If  this  option  is  used  several times, only the first one is\n"
 "              used.\n"
 "\n"
 "       -o, --output <file>\n"
 "              If  this  option  is  used  several times, only the first one is\n"
 "              used.\n"
 "\n"
 "       -o, --output <file>\n"
-, stdout);
- fputs(
 "              Write output to <file> instead of stdout. If you are using {} or\n"
 "              []  to  fetch  multiple documents, you can use '#' followed by a\n"
 "              number in the <file> specifier. That variable will  be  replaced\n"
 "              with the current string for the URL being fetched. Like in:\n"
 "\n"
 "              Write output to <file> instead of stdout. If you are using {} or\n"
 "              []  to  fetch  multiple documents, you can use '#' followed by a\n"
 "              number in the <file> specifier. That variable will  be  replaced\n"
 "              with the current string for the URL being fetched. Like in:\n"
 "\n"
+, stdout);
+ fputs(
 "                curl http://{one,two}.site.com -o \"file_#1.txt\"\n"
 "\n"
 "              or use several variables like:\n"
 "\n"
 "                curl http://{site,host}.host[1-5].com -o \"#1_#2\"\n"
 "\n"
 "                curl http://{one,two}.site.com -o \"file_#1.txt\"\n"
 "\n"
 "              or use several variables like:\n"
 "\n"
 "                curl http://{site,host}.host[1-5].com -o \"#1_#2\"\n"
 "\n"
-, stdout);
- fputs(
 "              You  may use this option as many times as the number of URLs you\n"
 "              have.\n"
 "\n"
 "              You  may use this option as many times as the number of URLs you\n"
 "              have.\n"
 "\n"
@@ -1395,11 +1591,11 @@ void hugehelp(void)
 "              ries  dynamically.  Specifying the output as '-' (a single dash)\n"
 "              will force the output to be done to stdout.\n"
 "\n"
 "              ries  dynamically.  Specifying the output as '-' (a single dash)\n"
 "              will force the output to be done to stdout.\n"
 "\n"
+, stdout);
+ fputs(
 "       -O, --remote-name\n"
 "              Write output to a local file named like the remote file we  get.\n"
 "              (Only  the file part of the remote file is used, the path is cut\n"
 "       -O, --remote-name\n"
 "              Write output to a local file named like the remote file we  get.\n"
 "              (Only  the file part of the remote file is used, the path is cut\n"
-, stdout);
- fputs(
 "              off.)\n"
 "\n"
 "              The remote file name to use for saving  is  extracted  from  the\n"
 "              off.)\n"
 "\n"
 "              The remote file name to use for saving  is  extracted  from  the\n"
@@ -1407,22 +1603,64 @@ void hugehelp(void)
 "\n"
 "              Consequentially,  the  file will be saved in the current working\n"
 "              directory. If you want the file saved in a different  directory,\n"
 "\n"
 "              Consequentially,  the  file will be saved in the current working\n"
 "              directory. If you want the file saved in a different  directory,\n"
+, stdout);
+ fputs(
 "              make sure you change current working directory before you invoke\n"
 "              curl with the -O, --remote-name flag!\n"
 "\n"
 "              make sure you change current working directory before you invoke\n"
 "              curl with the -O, --remote-name flag!\n"
 "\n"
+"              There is no URL decoding done on the file name. If it has %20 or\n"
+"              other  URL  encoded parts of the name, they will end up as-is as\n"
+"              file name.\n"
+"\n"
+"              You may use this option as many times as the number of URLs  you\n"
+"              have.\n"
+"\n"
+"       --oauth2-bearer\n"
+, stdout);
+ fputs(
+"              (IMAP, POP3, SMTP) Specify the Bearer Token for OAUTH 2.0 server\n"
+"              authentication. The Bearer Token is used in conjunction with the\n"
+"              user  name  which  can  be specified as part of the --url or -u,\n"
+"              --user options.\n"
+"\n"
+"              The Bearer Token and user name are formatted  according  to  RFC\n"
+"              6750.\n"
+"\n"
+"              If this option is used several times, the last one will be used.\n"
+"\n"
+"       --proxy-header <header>\n"
+, stdout);
+ fputs(
+"              (HTTP)  Extra header to include in the request when sending HTTP\n"
+"              to a proxy. You may specify any number of extra headers. This is\n"
+"              the  equivalent option to -H, --header but is for proxy communi-\n"
+"              cation only like in CONNECT requests when you  want  a  separate\n"
+"              header  sent  to  the proxy to what is sent to the actual remote\n"
+"              host.\n"
+"\n"
+"              curl will make sure that each header  you  add/replace  is  sent\n"
+, stdout);
+ fputs(
+"              with the proper end-of-line marker, you should thus not add that\n"
+"              as a part of the header content: do not add newlines or carriage\n"
+"              returns, they will only mess things up for you.\n"
+"\n"
+"              Headers  specified  with  this  option  will  not be included in\n"
+"              requests that curl knows will not be sent to a proxy.\n"
+"\n"
+"              This option can be used  multiple  times  to  add/replace/remove\n"
+"              multiple headers.\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              You may use this option as many times as the number of URLs  you\n"
-"              have.\n"
-"\n"
+"              (Added in 7.37.0)\n"
 "       -p, --proxytunnel\n"
 "              When an HTTP proxy is used (-x, --proxy), this option will cause\n"
 "              non-HTTP protocols  to  attempt  to  tunnel  through  the  proxy\n"
 "              instead  of merely using it to do HTTP-like operations. The tun-\n"
 "              nel approach is made with the HTTP  proxy  CONNECT  request  and\n"
 "       -p, --proxytunnel\n"
 "              When an HTTP proxy is used (-x, --proxy), this option will cause\n"
 "              non-HTTP protocols  to  attempt  to  tunnel  through  the  proxy\n"
 "              instead  of merely using it to do HTTP-like operations. The tun-\n"
 "              nel approach is made with the HTTP  proxy  CONNECT  request  and\n"
+"              requires that the proxy allows direct connect to the remote port\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              requires that the proxy allows direct connect to the remote port\n"
 "              number curl wants to tunnel through to.\n"
 "\n"
 "       -P, --ftp-port <address>\n"
 "              number curl wants to tunnel through to.\n"
 "\n"
 "       -P, --ftp-port <address>\n"
@@ -1430,9 +1668,9 @@ void hugehelp(void)
 "              necting  with  FTP.  This  switch makes curl use active mode. In\n"
 "              practice, curl then tells the server  to  connect  back  to  the\n"
 "              client's specified address and port, while passive mode asks the\n"
 "              necting  with  FTP.  This  switch makes curl use active mode. In\n"
 "              practice, curl then tells the server  to  connect  back  to  the\n"
 "              client's specified address and port, while passive mode asks the\n"
+"              server to setup an IP address and port for  it  to  connect  to.\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              server to setup an IP address and port for  it  to  connect  to.\n"
 "              <address> should be one of:\n"
 "\n"
 "              interface\n"
 "              <address> should be one of:\n"
 "\n"
 "              interface\n"
@@ -1445,9 +1683,9 @@ void hugehelp(void)
 "              host name\n"
 "                     i.e \"my.host.domain\" to specify the machine\n"
 "\n"
 "              host name\n"
 "                     i.e \"my.host.domain\" to specify the machine\n"
 "\n"
+"              -      make curl pick the same IP address that is  already  used\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              -      make curl pick the same IP address that is  already  used\n"
 "                     for the control connection\n"
 "\n"
 "       If  this  option is used several times, the last one will be used. Dis-\n"
 "                     for the control connection\n"
 "\n"
 "       If  this  option is used several times, the last one will be used. Dis-\n"
@@ -1456,9 +1694,9 @@ void hugehelp(void)
 "       PORT++.\n"
 "\n"
 "       Starting in 7.19.5, you can append \":[start]-[end]\" to the right of the\n"
 "       PORT++.\n"
 "\n"
 "       Starting in 7.19.5, you can append \":[start]-[end]\" to the right of the\n"
+"       address,  to tell curl what TCP port range to use. That means you spec-\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"       address,  to tell curl what TCP port range to use. That means you spec-\n"
 "       ify a port range, from a lower to a  higher  number.  A  single  number\n"
 "       works  as well, but do note that it increases the risk of failure since\n"
 "       the port may not be available.\n"
 "       ify a port range, from a lower to a  higher  number.  A  single  number\n"
 "       works  as well, but do note that it increases the risk of failure since\n"
 "       the port may not be available.\n"
@@ -1469,27 +1707,27 @@ void hugehelp(void)
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --post301\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --post301\n"
+"              (HTTP) Tells curl to respect RFC  2616/10.3.2  and  not  convert\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              (HTTP) Tells curl to respect RFC  2616/10.3.2  and  not  convert\n"
 "              POST  requests  into GET requests when following a 301 redirect-\n"
 "              ion. The non-RFC behaviour is ubiquitous  in  web  browsers,  so\n"
 "              curl  does  the  conversion  by default to maintain consistency.\n"
 "              However, a server may require a POST to remain a POST after such\n"
 "              a  redirection.  This  option  is meaningful only when using -L,\n"
 "              POST  requests  into GET requests when following a 301 redirect-\n"
 "              ion. The non-RFC behaviour is ubiquitous  in  web  browsers,  so\n"
 "              curl  does  the  conversion  by default to maintain consistency.\n"
 "              However, a server may require a POST to remain a POST after such\n"
 "              a  redirection.  This  option  is meaningful only when using -L,\n"
-, stdout);
- fputs(
 "              --location (Added in 7.17.1)\n"
 "\n"
 "       --post302\n"
 "              --location (Added in 7.17.1)\n"
 "\n"
 "       --post302\n"
+, stdout);
+ fputs(
 "              (HTTP) Tells curl to respect RFC  2616/10.3.2  and  not  convert\n"
 "              POST  requests  into GET requests when following a 302 redirect-\n"
 "              ion. The non-RFC behaviour is ubiquitous  in  web  browsers,  so\n"
 "              curl  does  the  conversion  by default to maintain consistency.\n"
 "              However, a server may require a POST to remain a POST after such\n"
 "              (HTTP) Tells curl to respect RFC  2616/10.3.2  and  not  convert\n"
 "              POST  requests  into GET requests when following a 302 redirect-\n"
 "              ion. The non-RFC behaviour is ubiquitous  in  web  browsers,  so\n"
 "              curl  does  the  conversion  by default to maintain consistency.\n"
 "              However, a server may require a POST to remain a POST after such\n"
+"              a  redirection.  This  option  is meaningful only when using -L,\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              a  redirection.  This  option  is meaningful only when using -L,\n"
 "              --location (Added in 7.19.1)\n"
 "\n"
 "       --post303\n"
 "              --location (Added in 7.19.1)\n"
 "\n"
 "       --post303\n"
@@ -1497,9 +1735,9 @@ void hugehelp(void)
 "              POST  requests  into GET requests when following a 303 redirect-\n"
 "              ion. The non-RFC behaviour is ubiquitous  in  web  browsers,  so\n"
 "              curl  does  the  conversion  by default to maintain consistency.\n"
 "              POST  requests  into GET requests when following a 303 redirect-\n"
 "              ion. The non-RFC behaviour is ubiquitous  in  web  browsers,  so\n"
 "              curl  does  the  conversion  by default to maintain consistency.\n"
+"              However, a server may require a POST to remain a POST after such\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              However, a server may require a POST to remain a POST after such\n"
 "              a  redirection.  This  option  is meaningful only when using -L,\n"
 "              --location (Added in 7.26.0)\n"
 "\n"
 "              a  redirection.  This  option  is meaningful only when using -L,\n"
 "              --location (Added in 7.26.0)\n"
 "\n"
@@ -1507,10 +1745,10 @@ void hugehelp(void)
 "              Tells  curl  to  use  the  listed  protocols  for  its   initial\n"
 "              retrieval. Protocols are evaluated left to right, are comma sep-\n"
 "              arated, and are each a protocol name or 'all',  optionally  pre-\n"
 "              Tells  curl  to  use  the  listed  protocols  for  its   initial\n"
 "              retrieval. Protocols are evaluated left to right, are comma sep-\n"
 "              arated, and are each a protocol name or 'all',  optionally  pre-\n"
-, stdout);
- fputs(
 "              fixed by zero or more modifiers. Available modifiers are:\n"
 "\n"
 "              fixed by zero or more modifiers. Available modifiers are:\n"
 "\n"
+, stdout);
+ fputs(
 "              +  Permit this protocol in addition to protocols already permit-\n"
 "                 ted (this is the default if no modifier is used).\n"
 "\n"
 "              +  Permit this protocol in addition to protocols already permit-\n"
 "                 ted (this is the default if no modifier is used).\n"
 "\n"
@@ -1519,10 +1757,10 @@ void hugehelp(void)
 "\n"
 "              =  Permit  only this protocol (ignoring the list already permit-\n"
 "                 ted), though subject  to  later  modification  by  subsequent\n"
 "\n"
 "              =  Permit  only this protocol (ignoring the list already permit-\n"
 "                 ted), though subject  to  later  modification  by  subsequent\n"
-, stdout);
- fputs(
 "                 entries in the comma separated list.\n"
 "\n"
 "                 entries in the comma separated list.\n"
 "\n"
+, stdout);
+ fputs(
 "              For example:\n"
 "\n"
 "              --proto -ftps  uses the default protocols, but disables ftps\n"
 "              For example:\n"
 "\n"
 "              --proto -ftps  uses the default protocols, but disables ftps\n"
@@ -1534,9 +1772,9 @@ void hugehelp(void)
 "                             also only enables http and https\n"
 "\n"
 "              Unknown  protocols  produce  a  warning.  This allows scripts to\n"
 "                             also only enables http and https\n"
 "\n"
 "              Unknown  protocols  produce  a  warning.  This allows scripts to\n"
+"              safely rely on being able to disable potentially dangerous  pro-\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              safely rely on being able to disable potentially dangerous  pro-\n"
 "              tocols,  without  relying  upon  support for that protocol being\n"
 "              built into curl to avoid an error.\n"
 "\n"
 "              tocols,  without  relying  upon  support for that protocol being\n"
 "              built into curl to avoid an error.\n"
 "\n"
@@ -1547,9 +1785,9 @@ void hugehelp(void)
 "              (Added in 7.20.2)\n"
 "\n"
 "       --proto-redir <protocols>\n"
 "              (Added in 7.20.2)\n"
 "\n"
 "       --proto-redir <protocols>\n"
+"              Tells curl to use the listed protocols  after  a  redirect.  See\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              Tells curl to use the listed protocols  after  a  redirect.  See\n"
 "              --proto for how protocols are represented.\n"
 "\n"
 "              (Added in 7.20.2)\n"
 "              --proto for how protocols are represented.\n"
 "\n"
 "              (Added in 7.20.2)\n"
@@ -1560,9 +1798,9 @@ void hugehelp(void)
 "              request/response round-trip. (Added in 7.13.2)\n"
 "\n"
 "       --proxy-basic\n"
 "              request/response round-trip. (Added in 7.13.2)\n"
 "\n"
 "       --proxy-basic\n"
+"              Tells  curl  to use HTTP Basic authentication when communicating\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              Tells  curl  to use HTTP Basic authentication when communicating\n"
 "              with the given proxy. Use --basic for enabling HTTP Basic with a\n"
 "              remote  host.  Basic  is  the default authentication method curl\n"
 "              uses with proxies.\n"
 "              with the given proxy. Use --basic for enabling HTTP Basic with a\n"
 "              remote  host.  Basic  is  the default authentication method curl\n"
 "              uses with proxies.\n"
@@ -1572,12 +1810,12 @@ void hugehelp(void)
 "              with the given proxy. Use --digest for enabling HTTP Digest with\n"
 "              a remote host.\n"
 "\n"
 "              with the given proxy. Use --digest for enabling HTTP Digest with\n"
 "              a remote host.\n"
 "\n"
+"       --proxy-negotiate\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"       --proxy-negotiate\n"
-"              Tells curl to use HTTP Negotiate authentication when communicat-\n"
-"              ing  with  the  given  proxy.  Use --negotiate for enabling HTTP\n"
-"              Negotiate with a remote host. (Added in 7.17.1)\n"
+"              Tells curl to use HTTP Negotiate  (SPNEGO)  authentication  when\n"
+"              communicating with the given proxy. Use --negotiate for enabling\n"
+"              HTTP Negotiate (SPNEGO) with a remote host. (Added in 7.17.1)\n"
 "\n"
 "       --proxy-ntlm\n"
 "              Tells curl to use HTTP NTLM  authentication  when  communicating\n"
 "\n"
 "       --proxy-ntlm\n"
 "              Tells curl to use HTTP NTLM  authentication  when  communicating\n"
@@ -1601,44 +1839,51 @@ void hugehelp(void)
 "              key in this separate file.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "              key in this separate file.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
+"              (As of 7.39.0, curl attempts to automatically extract the public\n"
+"              key  from the private key file, so passing this option is gener-\n"
+"              ally not required. Note that this public key extraction requires\n"
+"              libcurl  to  be linked against a copy of libssh2 1.2.8 or higher\n"
+"              that is itself linked against OpenSSL.)\n"
 "\n"
 "\n"
+, stdout);
+ fputs(
 "       -q     If used as the first parameter on the command line,  the  curlrc\n"
 "              config  file will not be read and used. See the -K, --config for\n"
 "              details on the default config file search path.\n"
 "\n"
 "       -Q, --quote <command>\n"
 "              (FTP/SFTP) Send an arbitrary command to the remote FTP  or  SFTP\n"
 "       -q     If used as the first parameter on the command line,  the  curlrc\n"
 "              config  file will not be read and used. See the -K, --config for\n"
 "              details on the default config file search path.\n"
 "\n"
 "       -Q, --quote <command>\n"
 "              (FTP/SFTP) Send an arbitrary command to the remote FTP  or  SFTP\n"
-, stdout);
- fputs(
 "              server.  Quote commands are sent BEFORE the transfer takes place\n"
 "              (just after the initial PWD command in an FTP  transfer,  to  be\n"
 "              server.  Quote commands are sent BEFORE the transfer takes place\n"
 "              (just after the initial PWD command in an FTP  transfer,  to  be\n"
+, stdout);
+ fputs(
 "              exact). To make commands take place after a successful transfer,\n"
 "              prefix them with a dash '-'.  To make  commands  be  sent  after\n"
 "              curl has changed the working directory, just before the transfer\n"
 "              command(s), prefix the command with a '+'  (this  is  only  sup-\n"
 "              exact). To make commands take place after a successful transfer,\n"
 "              prefix them with a dash '-'.  To make  commands  be  sent  after\n"
 "              curl has changed the working directory, just before the transfer\n"
 "              command(s), prefix the command with a '+'  (this  is  only  sup-\n"
-, stdout);
- fputs(
 "              ported  for FTP). You may specify any number of commands. If the\n"
 "              server returns failure for one of the commands, the entire oper-\n"
 "              ported  for FTP). You may specify any number of commands. If the\n"
 "              server returns failure for one of the commands, the entire oper-\n"
+, stdout);
+ fputs(
 "              ation  will  be aborted. You must send syntactically correct FTP\n"
 "              commands as RFC 959 defines to FTP servers, or one of  the  com-\n"
 "              mands  listed  below  to  SFTP servers.  This option can be used\n"
 "              multiple times. When speaking to an FTP server, prefix the  com-\n"
 "              ation  will  be aborted. You must send syntactically correct FTP\n"
 "              commands as RFC 959 defines to FTP servers, or one of  the  com-\n"
 "              mands  listed  below  to  SFTP servers.  This option can be used\n"
 "              multiple times. When speaking to an FTP server, prefix the  com-\n"
-, stdout);
- fputs(
 "              mand with an asterisk (*) to make curl continue even if the com-\n"
 "              mand fails as by default curl will stop at first failure.\n"
 "\n"
 "              mand with an asterisk (*) to make curl continue even if the com-\n"
 "              mand fails as by default curl will stop at first failure.\n"
 "\n"
+, stdout);
+ fputs(
 "              SFTP is a binary protocol. Unlike for FTP, curl interprets  SFTP\n"
 "              quote  commands  itself before sending them to the server.  File\n"
 "              names may be quoted shell-style to embed spaces or special char-\n"
 "              acters.   Following is the list of all supported SFTP quote com-\n"
 "              mands:\n"
 "\n"
 "              SFTP is a binary protocol. Unlike for FTP, curl interprets  SFTP\n"
 "              quote  commands  itself before sending them to the server.  File\n"
 "              names may be quoted shell-style to embed spaces or special char-\n"
 "              acters.   Following is the list of all supported SFTP quote com-\n"
 "              mands:\n"
 "\n"
-, stdout);
- fputs(
 "              chgrp group file\n"
 "                     The chgrp command sets the group ID of the file named  by\n"
 "              chgrp group file\n"
 "                     The chgrp command sets the group ID of the file named  by\n"
+, stdout);
+ fputs(
 "                     the  file  operand to the group ID specified by the group\n"
 "                     operand. The group operand is a decimal integer group ID.\n"
 "\n"
 "                     the  file  operand to the group ID specified by the group\n"
 "                     operand. The group operand is a decimal integer group ID.\n"
 "\n"
@@ -1647,10 +1892,10 @@ void hugehelp(void)
 "                     specified file. The mode operand is an octal integer mode\n"
 "                     number.\n"
 "\n"
 "                     specified file. The mode operand is an octal integer mode\n"
 "                     number.\n"
 "\n"
-, stdout);
- fputs(
 "              chown user file\n"
 "                     The chown command sets the owner of the file named by the\n"
 "              chown user file\n"
 "                     The chown command sets the owner of the file named by the\n"
+, stdout);
+ fputs(
 "                     file  operand  to the user ID specified by the user oper-\n"
 "                     and. The user operand is a decimal integer user ID.\n"
 "\n"
 "                     file  operand  to the user ID specified by the user oper-\n"
 "                     and. The user operand is a decimal integer user ID.\n"
 "\n"
@@ -1659,10 +1904,10 @@ void hugehelp(void)
 "                     target_file  location  pointing  to the source_file loca-\n"
 "                     tion.\n"
 "\n"
 "                     target_file  location  pointing  to the source_file loca-\n"
 "                     tion.\n"
 "\n"
-, stdout);
- fputs(
 "              mkdir directory_name\n"
 "                     The mkdir command creates  the  directory  named  by  the\n"
 "              mkdir directory_name\n"
 "                     The mkdir command creates  the  directory  named  by  the\n"
+, stdout);
+ fputs(
 "                     directory_name operand.\n"
 "\n"
 "              pwd    The pwd command returns the absolute pathname of the cur-\n"
 "                     directory_name operand.\n"
 "\n"
 "              pwd    The pwd command returns the absolute pathname of the cur-\n"
@@ -1671,11 +1916,11 @@ void hugehelp(void)
 "              rename source target\n"
 "                     The rename command renames the file or directory named by\n"
 "                     the  source  operand to the destination path named by the\n"
 "              rename source target\n"
 "                     The rename command renames the file or directory named by\n"
 "                     the  source  operand to the destination path named by the\n"
-, stdout);
- fputs(
 "                     target operand.\n"
 "\n"
 "              rm file\n"
 "                     target operand.\n"
 "\n"
 "              rm file\n"
+, stdout);
+ fputs(
 "                     The rm command removes the file specified by the file op-\n"
 "                     erand.\n"
 "\n"
 "                     The rm command removes the file specified by the file op-\n"
 "                     erand.\n"
 "\n"
@@ -1687,9 +1932,9 @@ void hugehelp(void)
 "                     See ln.\n"
 "\n"
 "       -r, --range <range>\n"
 "                     See ln.\n"
 "\n"
 "       -r, --range <range>\n"
+"              (HTTP/FTP/SFTP/FILE) Retrieve a byte range (i.e a partial  docu-\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              (HTTP/FTP/SFTP/FILE) Retrieve a byte range (i.e a partial  docu-\n"
 "              ment)  from  a  HTTP/1.1,  FTP  or  SFTP server or a local FILE.\n"
 "              Ranges can be specified in a number of ways.\n"
 "\n"
 "              ment)  from  a  HTTP/1.1,  FTP  or  SFTP server or a local FILE.\n"
 "              Ranges can be specified in a number of ways.\n"
 "\n"
@@ -1701,11 +1946,11 @@ void hugehelp(void)
 "\n"
 "              9500-     specifies the bytes from offset 9500 and forward\n"
 "\n"
 "\n"
 "              9500-     specifies the bytes from offset 9500 and forward\n"
 "\n"
-, stdout);
- fputs(
 "              0-0,-1    specifies the first and last byte only(*)(H)\n"
 "\n"
 "              500-700,600-799\n"
 "              0-0,-1    specifies the first and last byte only(*)(H)\n"
 "\n"
 "              500-700,600-799\n"
+, stdout);
+ fputs(
 "                        specifies 300 bytes from offset 500(H)\n"
 "\n"
 "              100-199,500-599\n"
 "                        specifies 300 bytes from offset 500(H)\n"
 "\n"
 "              100-199,500-599\n"
@@ -1715,10 +1960,10 @@ void hugehelp(void)
 "       response!\n"
 "\n"
 "       Only  digit characters (0-9) are valid in the 'start' and 'stop' fields\n"
 "       response!\n"
 "\n"
 "       Only  digit characters (0-9) are valid in the 'start' and 'stop' fields\n"
-, stdout);
- fputs(
 "       of the 'start-stop' range syntax. If a non-digit character is given  in\n"
 "       the  range, the server's response will be unspecified, depending on the\n"
 "       of the 'start-stop' range syntax. If a non-digit character is given  in\n"
 "       the  range, the server's response will be unspecified, depending on the\n"
+, stdout);
+ fputs(
 "       server's configuration.\n"
 "\n"
 "       You should also be aware that many HTTP/1.1 servers do  not  have  this\n"
 "       server's configuration.\n"
 "\n"
 "       You should also be aware that many HTTP/1.1 servers do  not  have  this\n"
@@ -1726,50 +1971,48 @@ void hugehelp(void)
 "       instead get the whole document.\n"
 "\n"
 "       FTP and SFTP range downloads only support the simple 'start-stop'  syn-\n"
 "       instead get the whole document.\n"
 "\n"
 "       FTP and SFTP range downloads only support the simple 'start-stop'  syn-\n"
-, stdout);
- fputs(
 "       tax  (optionally  with  one of the numbers omitted). FTP use depends on\n"
 "       the extended FTP command SIZE.\n"
 "\n"
 "       If this option is used several times, the last one will be used.\n"
 "\n"
 "       tax  (optionally  with  one of the numbers omitted). FTP use depends on\n"
 "       the extended FTP command SIZE.\n"
 "\n"
 "       If this option is used several times, the last one will be used.\n"
 "\n"
+, stdout);
+ fputs(
 "       -R, --remote-time\n"
 "              When used, this will make curl attempt to figure out  the  time-\n"
 "              stamp  of  the  remote  file,  and if that is available make the\n"
 "              local file get that same timestamp.\n"
 "\n"
 "       --random-file <file>\n"
 "       -R, --remote-time\n"
 "              When used, this will make curl attempt to figure out  the  time-\n"
 "              stamp  of  the  remote  file,  and if that is available make the\n"
 "              local file get that same timestamp.\n"
 "\n"
 "       --random-file <file>\n"
-, stdout);
- fputs(
 "              (SSL) Specify the path name to file containing what will be con-\n"
 "              sidered  as  random  data.  The  data is used to seed the random\n"
 "              engine for SSL connections.  See also the --egd-file option.\n"
 "\n"
 "              (SSL) Specify the path name to file containing what will be con-\n"
 "              sidered  as  random  data.  The  data is used to seed the random\n"
 "              engine for SSL connections.  See also the --egd-file option.\n"
 "\n"
+, stdout);
+ fputs(
 "       --raw  (HTTP) When used, it disables all internal HTTP decoding of con-\n"
 "              tent  or  transfer  encodings  and  instead makes them passed on\n"
 "              unaltered, raw. (Added in 7.16.2)\n"
 "\n"
 "       --remote-name-all\n"
 "       --raw  (HTTP) When used, it disables all internal HTTP decoding of con-\n"
 "              tent  or  transfer  encodings  and  instead makes them passed on\n"
 "              unaltered, raw. (Added in 7.16.2)\n"
 "\n"
 "       --remote-name-all\n"
-, stdout);
- fputs(
 "              This option changes the default action for all given URLs to  be\n"
 "              dealt with as if -O, --remote-name were used for each one. So if\n"
 "              you want to disable that for a specific URL after --remote-name-\n"
 "              This option changes the default action for all given URLs to  be\n"
 "              dealt with as if -O, --remote-name were used for each one. So if\n"
 "              you want to disable that for a specific URL after --remote-name-\n"
+, stdout);
+ fputs(
 "              all  has  been  used,  you  must use \"-o -\" or --no-remote-name.\n"
 "              (Added in 7.19.0)\n"
 "\n"
 "       --resolve <host:port:address>\n"
 "              Provide a custom address for a  specific  host  and  port  pair.\n"
 "              all  has  been  used,  you  must use \"-o -\" or --no-remote-name.\n"
 "              (Added in 7.19.0)\n"
 "\n"
 "       --resolve <host:port:address>\n"
 "              Provide a custom address for a  specific  host  and  port  pair.\n"
-, stdout);
- fputs(
 "              Using  this,  you  can make the curl requests(s) use a specified\n"
 "              address and prevent the otherwise normally resolved  address  to\n"
 "              be  used.  Consider it a sort of /etc/hosts alternative provided\n"
 "              Using  this,  you  can make the curl requests(s) use a specified\n"
 "              address and prevent the otherwise normally resolved  address  to\n"
 "              be  used.  Consider it a sort of /etc/hosts alternative provided\n"
+, stdout);
+ fputs(
 "              on the command line. The port number should be the  number  used\n"
 "              for  the  specific  protocol the host will be used for. It means\n"
 "              you need several entries if you want to provide address for  the\n"
 "              on the command line. The port number should be the  number  used\n"
 "              for  the  specific  protocol the host will be used for. It means\n"
 "              you need several entries if you want to provide address for  the\n"
-, stdout);
- fputs(
 "              same host but different ports.\n"
 "\n"
 "              This  option  can  be  used many times to add many host names to\n"
 "              same host but different ports.\n"
 "\n"
 "              This  option  can  be  used many times to add many host names to\n"
@@ -1778,33 +2021,35 @@ void hugehelp(void)
 "              (Added in 7.21.3)\n"
 "\n"
 "       --retry <num>\n"
 "              (Added in 7.21.3)\n"
 "\n"
 "       --retry <num>\n"
+, stdout);
+ fputs(
 "              If a transient error is returned when curl tries  to  perform  a\n"
 "              transfer,  it  will retry this number of times before giving up.\n"
 "              Setting the number to 0 makes curl do no retries (which  is  the\n"
 "              If a transient error is returned when curl tries  to  perform  a\n"
 "              transfer,  it  will retry this number of times before giving up.\n"
 "              Setting the number to 0 makes curl do no retries (which  is  the\n"
-, stdout);
- fputs(
 "              default).  Transient  error  means either: a timeout, an FTP 4xx\n"
 "              response code or an HTTP 5xx response code.\n"
 "\n"
 "              When curl is about to retry a transfer, it will first  wait  one\n"
 "              default).  Transient  error  means either: a timeout, an FTP 4xx\n"
 "              response code or an HTTP 5xx response code.\n"
 "\n"
 "              When curl is about to retry a transfer, it will first  wait  one\n"
+, stdout);
+ fputs(
 "              second  and  then for all forthcoming retries it will double the\n"
 "              waiting time until it reaches 10 minutes which then will be  the\n"
 "              delay  between  the rest of the retries.  By using --retry-delay\n"
 "              second  and  then for all forthcoming retries it will double the\n"
 "              waiting time until it reaches 10 minutes which then will be  the\n"
 "              delay  between  the rest of the retries.  By using --retry-delay\n"
-, stdout);
- fputs(
 "              you  disable  this  exponential  backoff  algorithm.  See   also\n"
 "              --retry-max-time  to  limit  the total time allowed for retries.\n"
 "              (Added in 7.12.3)\n"
 "\n"
 "              you  disable  this  exponential  backoff  algorithm.  See   also\n"
 "              --retry-max-time  to  limit  the total time allowed for retries.\n"
 "              (Added in 7.12.3)\n"
 "\n"
+, stdout);
+ fputs(
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --retry-delay <seconds>\n"
 "              Make curl sleep this amount of time before  each  retry  when  a\n"
 "              transfer  has  failed  with  a  transient  error (it changes the\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --retry-delay <seconds>\n"
 "              Make curl sleep this amount of time before  each  retry  when  a\n"
 "              transfer  has  failed  with  a  transient  error (it changes the\n"
-, stdout);
- fputs(
 "              default backoff time algorithm between retries). This option  is\n"
 "              only  interesting if --retry is also used. Setting this delay to\n"
 "              default backoff time algorithm between retries). This option  is\n"
 "              only  interesting if --retry is also used. Setting this delay to\n"
+, stdout);
+ fputs(
 "              zero will make curl use the default  backoff  time.   (Added  in\n"
 "              7.12.3)\n"
 "\n"
 "              zero will make curl use the default  backoff  time.   (Added  in\n"
 "              7.12.3)\n"
 "\n"
@@ -1812,21 +2057,21 @@ void hugehelp(void)
 "\n"
 "       --retry-max-time <seconds>\n"
 "              The  retry  timer  is  reset  before the first transfer attempt.\n"
 "\n"
 "       --retry-max-time <seconds>\n"
 "              The  retry  timer  is  reset  before the first transfer attempt.\n"
-, stdout);
- fputs(
 "              Retries will be done as usual (see --retry) as long as the timer\n"
 "              hasn't reached this given limit. Notice that if the timer hasn't\n"
 "              Retries will be done as usual (see --retry) as long as the timer\n"
 "              hasn't reached this given limit. Notice that if the timer hasn't\n"
+, stdout);
+ fputs(
 "              reached the limit, the request will be made and  while  perform-\n"
 "              ing,  it may take longer than this given time period. To limit a\n"
 "              single request's maximum time, use  -m,  --max-time.   Set  this\n"
 "              option to zero to not timeout retries. (Added in 7.12.3)\n"
 "\n"
 "              reached the limit, the request will be made and  while  perform-\n"
 "              ing,  it may take longer than this given time period. To limit a\n"
 "              single request's maximum time, use  -m,  --max-time.   Set  this\n"
 "              option to zero to not timeout retries. (Added in 7.12.3)\n"
 "\n"
-, stdout);
- fputs(
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       -s, --silent\n"
 "              Silent  or  quiet  mode. Don't show progress meter or error mes-\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       -s, --silent\n"
 "              Silent  or  quiet  mode. Don't show progress meter or error mes-\n"
+, stdout);
+ fputs(
 "              sages.  Makes Curl mute. It will still output the data  you  ask\n"
 "              for, potentially even to the terminal/stdout unless you redirect\n"
 "              it.\n"
 "              sages.  Makes Curl mute. It will still output the data  you  ask\n"
 "              for, potentially even to the terminal/stdout unless you redirect\n"
 "              it.\n"
@@ -1836,92 +2081,92 @@ void hugehelp(void)
 "              7.31.0)\n"
 "\n"
 "       -S, --show-error\n"
 "              7.31.0)\n"
 "\n"
 "       -S, --show-error\n"
-, stdout);
- fputs(
 "              When  used  with  -s  it  makes curl show an error message if it\n"
 "              fails.\n"
 "\n"
 "       --ssl  (FTP, POP3, IMAP, SMTP) Try to use SSL/TLS for  the  connection.\n"
 "              When  used  with  -s  it  makes curl show an error message if it\n"
 "              fails.\n"
 "\n"
 "       --ssl  (FTP, POP3, IMAP, SMTP) Try to use SSL/TLS for  the  connection.\n"
+, stdout);
+ fputs(
 "              Reverts to a non-secure connection if the server doesn't support\n"
 "              SSL/TLS.  See also --ftp-ssl-control and --ssl-reqd for  differ-\n"
 "              ent levels of encryption required. (Added in 7.20.0)\n"
 "\n"
 "              This  option  was formerly known as --ftp-ssl (Added in 7.11.0).\n"
 "              Reverts to a non-secure connection if the server doesn't support\n"
 "              SSL/TLS.  See also --ftp-ssl-control and --ssl-reqd for  differ-\n"
 "              ent levels of encryption required. (Added in 7.20.0)\n"
 "\n"
 "              This  option  was formerly known as --ftp-ssl (Added in 7.11.0).\n"
-, stdout);
- fputs(
 "              That option name can still be used but  will  be  removed  in  a\n"
 "              future version.\n"
 "\n"
 "       --ssl-reqd\n"
 "              That option name can still be used but  will  be  removed  in  a\n"
 "              future version.\n"
 "\n"
 "       --ssl-reqd\n"
+, stdout);
+ fputs(
 "              (FTP,  POP3,  IMAP,  SMTP)  Require  SSL/TLS for the connection.\n"
 "              Terminates the connection if the server doesn't support SSL/TLS.\n"
 "              (Added in 7.20.0)\n"
 "\n"
 "              This  option  was  formerly  known  as  --ftp-ssl-reqd (added in\n"
 "              7.15.5). That option name can still be used but will be  removed\n"
 "              (FTP,  POP3,  IMAP,  SMTP)  Require  SSL/TLS for the connection.\n"
 "              Terminates the connection if the server doesn't support SSL/TLS.\n"
 "              (Added in 7.20.0)\n"
 "\n"
 "              This  option  was  formerly  known  as  --ftp-ssl-reqd (added in\n"
 "              7.15.5). That option name can still be used but will be  removed\n"
-, stdout);
- fputs(
 "              in a future version.\n"
 "\n"
 "       --ssl-allow-beast\n"
 "              (SSL)  This option tells curl to not work around a security flaw\n"
 "              in a future version.\n"
 "\n"
 "       --ssl-allow-beast\n"
 "              (SSL)  This option tells curl to not work around a security flaw\n"
+, stdout);
+ fputs(
 "              in the SSL3 and TLS1.0 protocols known as BEAST.  If this option\n"
 "              in the SSL3 and TLS1.0 protocols known as BEAST.  If this option\n"
-"              isn't  used,  the  SSL layer may use work-arounds known to cause\n"
+"              isn't  used,  the  SSL  layer may use workarounds known to cause\n"
 "              interoperability problems with some older  SSL  implementations.\n"
 "              WARNING: this option loosens the SSL security, and by using this\n"
 "              interoperability problems with some older  SSL  implementations.\n"
 "              WARNING: this option loosens the SSL security, and by using this\n"
-, stdout);
- fputs(
 "              flag you ask for exactly that.  (Added in 7.25.0)\n"
 "\n"
 "       --socks4 <host[:port]>\n"
 "              Use the specified SOCKS4 proxy. If the port number is not speci-\n"
 "              flag you ask for exactly that.  (Added in 7.25.0)\n"
 "\n"
 "       --socks4 <host[:port]>\n"
 "              Use the specified SOCKS4 proxy. If the port number is not speci-\n"
+, stdout);
+ fputs(
 "              fied, it is assumed at port 1080. (Added in 7.15.2)\n"
 "\n"
 "              This  option  overrides any previous use of -x, --proxy, as they\n"
 "              are mutually exclusive.\n"
 "\n"
 "              Since 7.21.7, this option is superfluous since you can specify a\n"
 "              fied, it is assumed at port 1080. (Added in 7.15.2)\n"
 "\n"
 "              This  option  overrides any previous use of -x, --proxy, as they\n"
 "              are mutually exclusive.\n"
 "\n"
 "              Since 7.21.7, this option is superfluous since you can specify a\n"
-, stdout);
- fputs(
 "              socks4 proxy with -x, --proxy using a socks4:// protocol prefix.\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --socks4a <host[:port]>\n"
 "              socks4 proxy with -x, --proxy using a socks4:// protocol prefix.\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --socks4a <host[:port]>\n"
+, stdout);
+ fputs(
 "              Use the specified SOCKS4a proxy. If the port number is not spec-\n"
 "              ified, it is assumed at port 1080. (Added in 7.18.0)\n"
 "\n"
 "              This option overrides any previous use of -x, --proxy,  as  they\n"
 "              are mutually exclusive.\n"
 "\n"
 "              Use the specified SOCKS4a proxy. If the port number is not spec-\n"
 "              ified, it is assumed at port 1080. (Added in 7.18.0)\n"
 "\n"
 "              This option overrides any previous use of -x, --proxy,  as  they\n"
 "              are mutually exclusive.\n"
 "\n"
-, stdout);
- fputs(
 "              Since 7.21.7, this option is superfluous since you can specify a\n"
 "              socks4a proxy with -x, --proxy using a socks4a:// protocol  pre-\n"
 "              fix.\n"
 "\n"
 "              Since 7.21.7, this option is superfluous since you can specify a\n"
 "              socks4a proxy with -x, --proxy using a socks4a:// protocol  pre-\n"
 "              fix.\n"
 "\n"
+, stdout);
+ fputs(
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --socks5-hostname <host[:port]>\n"
 "              Use  the  specified  SOCKS5 proxy (and let the proxy resolve the\n"
 "              host name). If the port number is not specified, it  is  assumed\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --socks5-hostname <host[:port]>\n"
 "              Use  the  specified  SOCKS5 proxy (and let the proxy resolve the\n"
 "              host name). If the port number is not specified, it  is  assumed\n"
-, stdout);
- fputs(
 "              at port 1080. (Added in 7.18.0)\n"
 "\n"
 "              This  option  overrides any previous use of -x, --proxy, as they\n"
 "              are mutually exclusive.\n"
 "\n"
 "              at port 1080. (Added in 7.18.0)\n"
 "\n"
 "              This  option  overrides any previous use of -x, --proxy, as they\n"
 "              are mutually exclusive.\n"
 "\n"
+, stdout);
+ fputs(
 "              Since 7.21.7, this option is superfluous since you can specify a\n"
 "              socks5 hostname proxy with -x, --proxy using a socks5h:// proto-\n"
 "              col prefix.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "              Since 7.21.7, this option is superfluous since you can specify a\n"
 "              socks5 hostname proxy with -x, --proxy using a socks5h:// proto-\n"
 "              col prefix.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
-, stdout);
- fputs(
 "              (This  option  was  previously  wrongly  documented  and used as\n"
 "              --socks without the number appended.)\n"
 "\n"
 "       --socks5 <host[:port]>\n"
 "              (This  option  was  previously  wrongly  documented  and used as\n"
 "              --socks without the number appended.)\n"
 "\n"
 "       --socks5 <host[:port]>\n"
+, stdout);
+ fputs(
 "              Use the specified SOCKS5 proxy  -  but  resolve  the  host  name\n"
 "              locally.  If  the port number is not specified, it is assumed at\n"
 "              port 1080.\n"
 "              Use the specified SOCKS5 proxy  -  but  resolve  the  host  name\n"
 "              locally.  If  the port number is not specified, it is assumed at\n"
 "              port 1080.\n"
@@ -1929,10 +2174,10 @@ void hugehelp(void)
 "              This option overrides any previous use of -x, --proxy,  as  they\n"
 "              are mutually exclusive.\n"
 "\n"
 "              This option overrides any previous use of -x, --proxy,  as  they\n"
 "              are mutually exclusive.\n"
 "\n"
-, stdout);
- fputs(
 "              Since 7.21.7, this option is superfluous since you can specify a\n"
 "              socks5 proxy with -x, --proxy using a socks5:// protocol prefix.\n"
 "              Since 7.21.7, this option is superfluous since you can specify a\n"
 "              socks5 proxy with -x, --proxy using a socks5:// protocol prefix.\n"
+, stdout);
+ fputs(
 "              If this option is used several times, the last one will be used.\n"
 "              (This  option  was  previously  wrongly  documented  and used as\n"
 "              --socks without the number appended.)\n"
 "              If this option is used several times, the last one will be used.\n"
 "              (This  option  was  previously  wrongly  documented  and used as\n"
 "              --socks without the number appended.)\n"
@@ -1940,33 +2185,33 @@ void hugehelp(void)
 "              This option (as well as --socks4) does not work with IPV6,  FTPS\n"
 "              or LDAP.\n"
 "\n"
 "              This option (as well as --socks4) does not work with IPV6,  FTPS\n"
 "              or LDAP.\n"
 "\n"
-, stdout);
- fputs(
 "       --socks5-gssapi-service <servicename>\n"
 "              The default service name for a socks server is rcmd/server-fqdn.\n"
 "              This option allows you to change it.\n"
 "\n"
 "       --socks5-gssapi-service <servicename>\n"
 "              The default service name for a socks server is rcmd/server-fqdn.\n"
 "              This option allows you to change it.\n"
 "\n"
+, stdout);
+ fputs(
 "              Examples:  --socks5  proxy-name  --socks5-gssapi-service   sockd\n"
 "              would  use sockd/proxy-name --socks5 proxy-name --socks5-gssapi-\n"
 "              service sockd/real-name  would  use  sockd/real-name  for  cases\n"
 "              where  the proxy-name does not match the principal name.  (Added\n"
 "              Examples:  --socks5  proxy-name  --socks5-gssapi-service   sockd\n"
 "              would  use sockd/proxy-name --socks5 proxy-name --socks5-gssapi-\n"
 "              service sockd/real-name  would  use  sockd/real-name  for  cases\n"
 "              where  the proxy-name does not match the principal name.  (Added\n"
-, stdout);
- fputs(
 "              in 7.19.4).\n"
 "\n"
 "       --socks5-gssapi-nec\n"
 "              in 7.19.4).\n"
 "\n"
 "       --socks5-gssapi-nec\n"
-"              As part of the gssapi negotiation a protection mode  is  negoti-\n"
+"              As part of the GSS-API negotiation a protection mode is  negoti-\n"
+, stdout);
+ fputs(
 "              ated.  RFC  1961 says in section 4.3/4.4 it should be protected,\n"
 "              but the NEC  reference  implementation  does  not.   The  option\n"
 "              --socks5-gssapi-nec  allows the unprotected exchange of the pro-\n"
 "              tection mode negotiation. (Added in 7.19.4).\n"
 "\n"
 "       --stderr <file>\n"
 "              ated.  RFC  1961 says in section 4.3/4.4 it should be protected,\n"
 "              but the NEC  reference  implementation  does  not.   The  option\n"
 "              --socks5-gssapi-nec  allows the unprotected exchange of the pro-\n"
 "              tection mode negotiation. (Added in 7.19.4).\n"
 "\n"
 "       --stderr <file>\n"
-, stdout);
- fputs(
 "              Redirect all writes to stderr to the specified file instead.  If\n"
 "              the file name is a plain '-', it is instead written to stdout.\n"
 "\n"
 "              Redirect all writes to stderr to the specified file instead.  If\n"
 "              the file name is a plain '-', it is instead written to stdout.\n"
 "\n"
+, stdout);
+ fputs(
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       -t, --telnet-option <OPT=val>\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       -t, --telnet-option <OPT=val>\n"
@@ -1976,31 +2221,31 @@ void hugehelp(void)
 "\n"
 "              XDISPLOC=<X display> Sets the X display location.\n"
 "\n"
 "\n"
 "              XDISPLOC=<X display> Sets the X display location.\n"
 "\n"
-, stdout);
- fputs(
 "              NEW_ENV=<var,val> Sets an environment variable.\n"
 "\n"
 "       -T, --upload-file <file>\n"
 "              This  transfers  the  specified local file to the remote URL. If\n"
 "              NEW_ENV=<var,val> Sets an environment variable.\n"
 "\n"
 "       -T, --upload-file <file>\n"
 "              This  transfers  the  specified local file to the remote URL. If\n"
+, stdout);
+ fputs(
 "              there is no file part in the specified URL, Curl will append the\n"
 "              local file name. NOTE that you must use a trailing / on the last\n"
 "              directory to really prove to Curl that there is no file name  or\n"
 "              curl will think that your last directory name is the remote file\n"
 "              there is no file part in the specified URL, Curl will append the\n"
 "              local file name. NOTE that you must use a trailing / on the last\n"
 "              directory to really prove to Curl that there is no file name  or\n"
 "              curl will think that your last directory name is the remote file\n"
-, stdout);
- fputs(
 "              name to use. That will most likely cause the upload operation to\n"
 "              fail. If this is used on an HTTP(S) server, the PUT command will\n"
 "              be used.\n"
 "\n"
 "              name to use. That will most likely cause the upload operation to\n"
 "              fail. If this is used on an HTTP(S) server, the PUT command will\n"
 "              be used.\n"
 "\n"
+, stdout);
+ fputs(
 "              Use the file name \"-\" (a single dash) to use stdin instead of  a\n"
 "              given  file.   Alternately,  the file name \".\" (a single period)\n"
 "              may be specified instead of \"-\" to  use  stdin  in  non-blocking\n"
 "              mode  to  allow  reading  server  output  while  stdin  is being\n"
 "              Use the file name \"-\" (a single dash) to use stdin instead of  a\n"
 "              given  file.   Alternately,  the file name \".\" (a single period)\n"
 "              may be specified instead of \"-\" to  use  stdin  in  non-blocking\n"
 "              mode  to  allow  reading  server  output  while  stdin  is being\n"
-, stdout);
- fputs(
 "              uploaded.\n"
 "\n"
 "              You can specify one -T for each URL on the command line. Each -T\n"
 "              uploaded.\n"
 "\n"
 "              You can specify one -T for each URL on the command line. Each -T\n"
+, stdout);
+ fputs(
 "              + URL pair specifies what to upload and to where. curl also sup-\n"
 "              ports \"globbing\" of the -T argument, meaning that you can upload\n"
 "              multiple  files  to  a single URL by using the same URL globbing\n"
 "              + URL pair specifies what to upload and to where. curl also sup-\n"
 "              ports \"globbing\" of the -T argument, meaning that you can upload\n"
 "              multiple  files  to  a single URL by using the same URL globbing\n"
@@ -2010,11 +2255,11 @@ void hugehelp(void)
 "\n"
 "              or even\n"
 "\n"
 "\n"
 "              or even\n"
 "\n"
-, stdout);
- fputs(
 "              curl -T \"img[1-1000].png\" ftp://ftp.picturemania.com/upload/\n"
 "\n"
 "       --tcp-nodelay\n"
 "              curl -T \"img[1-1000].png\" ftp://ftp.picturemania.com/upload/\n"
 "\n"
 "       --tcp-nodelay\n"
+, stdout);
+ fputs(
 "              Turn on the TCP_NODELAY option. See the curl_easy_setopt(3)  man\n"
 "              page for details about this option. (Added in 7.11.2)\n"
 "\n"
 "              Turn on the TCP_NODELAY option. See the curl_easy_setopt(3)  man\n"
 "              page for details about this option. (Added in 7.11.2)\n"
 "\n"
@@ -2023,10 +2268,10 @@ void hugehelp(void)
 "              size that curl will try to use when transferring data to or from\n"
 "              a TFTP server. By default 512 bytes will be used.\n"
 "\n"
 "              size that curl will try to use when transferring data to or from\n"
 "              a TFTP server. By default 512 bytes will be used.\n"
 "\n"
-, stdout);
- fputs(
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
+, stdout);
+ fputs(
 "              (Added in 7.20.0)\n"
 "\n"
 "       --tlsauthtype <authtype>\n"
 "              (Added in 7.20.0)\n"
 "\n"
 "       --tlsauthtype <authtype>\n"
@@ -2035,105 +2280,145 @@ void hugehelp(void)
 "              --tlspassword  are specified but --tlsauthtype is not, then this\n"
 "              option defaults to \"SRP\".  (Added in 7.21.4)\n"
 "\n"
 "              --tlspassword  are specified but --tlsauthtype is not, then this\n"
 "              option defaults to \"SRP\".  (Added in 7.21.4)\n"
 "\n"
-"       --tlsuser <user>\n"
+"       --tlspassword <password>\n"
+"              Set password for use with the TLS authentication  method  speci-\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"              fied  with  --tlsauthtype.  Requires that --tlsuser also be set.\n"
+"              (Added in 7.21.4)\n"
+"\n"
+"       --tlsuser <user>\n"
 "              Set username for use with the TLS authentication  method  speci-\n"
 "              fied  with  --tlsauthtype.  Requires  that --tlspassword also be\n"
 "              set.  (Added in 7.21.4)\n"
 "\n"
 "              Set username for use with the TLS authentication  method  speci-\n"
 "              fied  with  --tlsauthtype.  Requires  that --tlspassword also be\n"
 "              set.  (Added in 7.21.4)\n"
 "\n"
-"       --tlspassword <password>\n"
-"              Set password for use with the TLS authentication  method  speci-\n"
-"              fied  with  --tlsauthtype.  Requires that --tlsuser also be set.\n"
-"              (Added in 7.21.4)\n"
+"       --tlsv1.0\n"
+"              (SSL) Forces curl to use TLS version 1.0 when negotiating with a\n"
+"              remote TLS server.  (Added in 7.34.0)\n"
 "\n"
 "\n"
-"       --tr-encoding\n"
+"       --tlsv1.1\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"              (SSL) Forces curl to use TLS version 1.1 when negotiating with a\n"
+"              remote TLS server.  (Added in 7.34.0)\n"
+"\n"
+"       --tlsv1.2\n"
+"              (SSL) Forces curl to use TLS version 1.2 when negotiating with a\n"
+"              remote TLS server.  (Added in 7.34.0)\n"
+"\n"
+"       --tr-encoding\n"
 "              (HTTP) Request a compressed Transfer-Encoding response using one\n"
 "              (HTTP) Request a compressed Transfer-Encoding response using one\n"
-"              of  the  algorithms curl supports, and uncompress the data while\n"
+"              of the algorithms curl supports, and uncompress the  data  while\n"
 "              receiving it.\n"
 "\n"
 "              receiving it.\n"
 "\n"
+, stdout);
+ fputs(
 "              (Added in 7.21.6)\n"
 "\n"
 "       --trace <file>\n"
 "              (Added in 7.21.6)\n"
 "\n"
 "       --trace <file>\n"
-"              Enables a full trace dump of all  incoming  and  outgoing  data,\n"
+"              Enables  a  full  trace  dump of all incoming and outgoing data,\n"
 "              including descriptive information, to the given output file. Use\n"
 "              \"-\" as filename to have the output sent to stdout.\n"
 "\n"
 "              including descriptive information, to the given output file. Use\n"
 "              \"-\" as filename to have the output sent to stdout.\n"
 "\n"
-, stdout);
- fputs(
 "              This option overrides previous uses of -v, --verbose or --trace-\n"
 "              ascii.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --trace-ascii <file>\n"
 "              This option overrides previous uses of -v, --verbose or --trace-\n"
 "              ascii.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --trace-ascii <file>\n"
-"              Enables  a  full  trace  dump of all incoming and outgoing data,\n"
+, stdout);
+ fputs(
+"              Enables a full trace dump of all  incoming  and  outgoing  data,\n"
 "              including descriptive information, to the given output file. Use\n"
 "              \"-\" as filename to have the output sent to stdout.\n"
 "\n"
 "              including descriptive information, to the given output file. Use\n"
 "              \"-\" as filename to have the output sent to stdout.\n"
 "\n"
-, stdout);
- fputs(
 "              This is very similar to --trace, but leaves out the hex part and\n"
 "              This is very similar to --trace, but leaves out the hex part and\n"
-"              only shows the ASCII part of the dump. It makes  smaller  output\n"
+"              only  shows  the ASCII part of the dump. It makes smaller output\n"
 "              that might be easier to read for untrained humans.\n"
 "\n"
 "              that might be easier to read for untrained humans.\n"
 "\n"
+, stdout);
+ fputs(
 "              This option overrides previous uses of -v, --verbose or --trace.\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --trace-time\n"
 "              This option overrides previous uses of -v, --verbose or --trace.\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --trace-time\n"
-"              Prepends  a  time  stamp to each trace or verbose line that curl\n"
-, stdout);
- fputs(
+"              Prepends a time stamp to each trace or verbose  line  that  curl\n"
 "              displays.  (Added in 7.14.0)\n"
 "\n"
 "              displays.  (Added in 7.14.0)\n"
 "\n"
+"       --unix-socket <path>\n"
+"              (HTTP) Connect through this Unix domain socket, instead of using\n"
+"              the network. (Added in 7.40.0)\n"
+"\n"
 "       -u, --user <user:password>\n"
 "       -u, --user <user:password>\n"
+, stdout);
+ fputs(
 "              Specify the user name and password to use for server authentica-\n"
 "              tion. Overrides -n, --netrc and --netrc-optional.\n"
 "\n"
 "              Specify the user name and password to use for server authentica-\n"
 "              tion. Overrides -n, --netrc and --netrc-optional.\n"
 "\n"
-"              If  you  just give the user name (without entering a colon) curl\n"
-"              will prompt for a password.\n"
+"              If  you  simply  specify  the  user name, curl will prompt for a\n"
+"              password.\n"
+"\n"
+"              The user name and passwords are split up  on  the  first  colon,\n"
+"              which  makes  it impossible to use a colon in the user name with\n"
+"              this option. The password can, still.\n"
+"\n"
+, stdout);
+ fputs(
+"              When using Kerberos V5 with a Windows based  server  you  should\n"
+"              include  the  Windows domain name in the user name, in order for\n"
+"              the server to succesfully obtain a Kerberos Ticket. If you don't\n"
+"              then the initial authentication handshake may fail.\n"
+"\n"
+"              When  using  NTLM,  the user name can be specified simply as the\n"
+"              user name, without the domain, if there is a single  domain  and\n"
+, stdout);
+ fputs(
+"              forest in your setup for example.\n"
+"\n"
+"              To  specify  the domain name use either Down-Level Logon Name or\n"
+"              UPN (User Principal Name) formats. For example, EXAMPLE\\user and\n"
+"              user@example.com respectively.\n"
 "\n"
 "\n"
-"              If you use an SSPI-enabled curl binary and do  NTLM  authentica-\n"
+"              If  you  use a Windows SSPI-enabled curl binary and perform Ker-\n"
+"              beros V5, Negotiate, NTLM or Digest authentication then you  can\n"
+"              tell  curl  to select the user name and password from your envi-\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              tion,  you  can force curl to pick up the user name and password\n"
-"              from your environment by simply specifying a single  colon  with\n"
-"              this option: \"-u :\".\n"
+"              ronment by specifying a single colon with this option: \"-u :\".\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       -U, --proxy-user <user:password>\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       -U, --proxy-user <user:password>\n"
-"              Specify  the user name and password to use for proxy authentica-\n"
+"              Specify the user name and password to use for proxy  authentica-\n"
 "              tion.\n"
 "\n"
 "              tion.\n"
 "\n"
-"              If you use an SSPI-enabled curl binary and do  NTLM  authentica-\n"
+"              If  you  use  a  Windows  SSPI-enabled curl binary and do either\n"
+"              Negotiate or NTLM authentication  then  you  can  tell  curl  to\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              tion,  you  can force curl to pick up the user name and password\n"
-"              from your environment by simply specifying a single  colon  with\n"
-"              this option: \"-U :\".\n"
+"              select the user name and password from your environment by spec-\n"
+"              ifying a single colon with this option: \"-U :\".\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --url <URL>\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --url <URL>\n"
-"              Specify  a  URL  to  fetch. This option is mostly handy when you\n"
+"              Specify a URL to fetch. This option is  mostly  handy  when  you\n"
 "              want to specify URL(s) in a config file.\n"
 "\n"
 "              want to specify URL(s) in a config file.\n"
 "\n"
+"              This  option  may  be used any number of times. To control where\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              This option may be used any number of times.  To  control  where\n"
-"              this  URL  is written, use the -o, --output or the -O, --remote-\n"
+"              this URL is written, use the -o, --output or the  -O,  --remote-\n"
 "              name options.\n"
 "       -v, --verbose\n"
 "              name options.\n"
 "       -v, --verbose\n"
-"              Makes the fetching more  verbose/talkative.  Mostly  useful  for\n"
-"              debugging.  A line starting with '>' means \"header data\" sent by\n"
-"              curl, '<' means \"header data\" received by curl that is hidden in\n"
+"              Be  more  verbose/talkative  during  the  operation.  Useful for\n"
+"              debugging and seeing what's going on \"under the  hood\".  A  line\n"
+"              starting  with  '>'  means \"header data\" sent by curl, '<' means\n"
+"              \"header data\" received by curl that is hidden in  normal  cases,\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              normal cases, and a line starting with '*' means additional info\n"
-"              provided by curl.\n"
+"              and  a  line starting with '*' means additional info provided by\n"
+"              curl.\n"
 "\n"
 "              Note that if you only want  HTTP  headers  in  the  output,  -i,\n"
 "              --include might be the option you're looking for.\n"
 "\n"
 "              Note that if you only want  HTTP  headers  in  the  output,  -i,\n"
 "              --include might be the option you're looking for.\n"
@@ -2148,11 +2433,11 @@ void hugehelp(void)
 "              Use -s, --silent to make curl quiet.\n"
 "\n"
 "       -w, --write-out <format>\n"
 "              Use -s, --silent to make curl quiet.\n"
 "\n"
 "       -w, --write-out <format>\n"
-"              Defines what to display on stdout after a completed and success-\n"
-"              ful  operation.  The  format  is a string that may contain plain\n"
-"              text mixed with any number of variables. The string can be spec-\n"
-"              ified  as \"string\", to get read from a particular file you spec-\n"
-"              ify it \"@filename\" and to tell curl  to  read  the  format  from\n"
+"              Make curl display information on stdout after a completed trans-\n"
+"              fer.  The  format  is a string that may contain plain text mixed\n"
+"              with any number of variables. The format can be specified  as  a\n"
+"              literal  \"string\",  or  you can have curl read the format from a\n"
+"              file with \"@filename\" and to tell curl to read the  format  from\n"
 , stdout);
  fputs(
 "              stdin you write \"@-\".\n"
 , stdout);
  fputs(
 "              stdin you write \"@-\".\n"
@@ -2308,17 +2593,28 @@ void hugehelp(void)
 "       If this option is used several times, the last one will be used.\n"
 "\n"
 "       -x, --proxy <[protocol://][user:password@]proxyhost[:port]>\n"
 "       If this option is used several times, the last one will be used.\n"
 "\n"
 "       -x, --proxy <[protocol://][user:password@]proxyhost[:port]>\n"
-"              Use  the  specified HTTP proxy. If the port number is not speci-\n"
-"              fied, it is assumed at port 1080.\n"
+"              Use the specified proxy.\n"
+"\n"
+"              The  proxy  string can be specified with a protocol:// prefix to\n"
+, stdout);
+ fputs(
+"              specify alternative proxy protocols. Use socks4://,  socks4a://,\n"
+"              socks5:// or socks5h:// to request the specific SOCKS version to\n"
+"              be used. No protocol specified, http:// and all others  will  be\n"
+"              treated as HTTP proxies. (The protocol support was added in curl\n"
+"              7.21.7)\n"
+"\n"
+"              If the port number is not specified in the proxy string,  it  is\n"
+"              assumed to be 1080.\n"
 "\n"
 , stdout);
  fputs(
 "\n"
 , stdout);
  fputs(
-"              This option overrides existing environment  variables  that  set\n"
-"              the  proxy  to use. If there's an environment variable setting a\n"
+"              This  option  overrides  existing environment variables that set\n"
+"              the proxy to use. If there's an environment variable  setting  a\n"
 "              proxy, you can set proxy to \"\" to override it.\n"
 "\n"
 "              All operations that are performed over an HTTP proxy will trans-\n"
 "              proxy, you can set proxy to \"\" to override it.\n"
 "\n"
 "              All operations that are performed over an HTTP proxy will trans-\n"
-"              parently  be  converted  to HTTP. It means that certain protocol\n"
+"              parently be converted to HTTP. It means  that  certain  protocol\n"
 "              specific operations might not be available. This is not the case\n"
 , stdout);
  fputs(
 "              specific operations might not be available. This is not the case\n"
 , stdout);
  fputs(
@@ -2326,169 +2622,177 @@ void hugehelp(void)
 "              ytunnel option.\n"
 "\n"
 "              User and password that might be provided in the proxy string are\n"
 "              ytunnel option.\n"
 "\n"
 "              User and password that might be provided in the proxy string are\n"
-"              URL  decoded by curl. This allows you to pass in special charac-\n"
+"              URL decoded by curl. This allows you to pass in special  charac-\n"
 "              ters such as @ by using %40 or pass in a colon with %3a.\n"
 "\n"
 "              ters such as @ by using %40 or pass in a colon with %3a.\n"
 "\n"
-"              The proxy host can be specified the exact same way as the  proxy\n"
-"              environment  variables,  including the protocol prefix (http://)\n"
+"              The  proxy host can be specified the exact same way as the proxy\n"
+"              environment variables, including the protocol  prefix  (http://)\n"
 , stdout);
  fputs(
 "              and the embedded user + password.\n"
 "\n"
 , stdout);
  fputs(
 "              and the embedded user + password.\n"
 "\n"
-"              From 7.21.7, the proxy string may be  specified  with  a  proto-\n"
-"              col://  prefix  to  specify  alternative  proxy  protocols.  Use\n"
-"              socks4://, socks4a://, socks5:// or socks5h://  to  request  the\n"
-"              specific  SOCKS  version  to  be  used.  No  protocol specified,\n"
-"              http:// and all others will be treated as HTTP proxies.\n"
-"\n"
-, stdout);
- fputs(
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       -X, --request <command>\n"
 "              (HTTP) Specifies a custom request method to use when communicat-\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       -X, --request <command>\n"
 "              (HTTP) Specifies a custom request method to use when communicat-\n"
-"              ing  with  the  HTTP server.  The specified request will be used\n"
-"              instead of the method otherwise used (which  defaults  to  GET).\n"
-"              Read  the  HTTP  1.1 specification for details and explanations.\n"
+"              ing with the HTTP server.  The specified request  will  be  used\n"
+"              instead  of  the  method otherwise used (which defaults to GET).\n"
+"              Read the HTTP 1.1 specification for  details  and  explanations.\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              Common additional HTTP requests  include  PUT  and  DELETE,  but\n"
+"              Common  additional  HTTP  requests  include  PUT and DELETE, but\n"
 "              related technologies like WebDAV offers PROPFIND, COPY, MOVE and\n"
 "              more.\n"
 "\n"
 "              related technologies like WebDAV offers PROPFIND, COPY, MOVE and\n"
 "              more.\n"
 "\n"
-"              Normally you don't need this option. All  sorts  of  GET,  HEAD,\n"
+"              Normally  you  don't  need  this option. All sorts of GET, HEAD,\n"
 "              POST and PUT requests are rather invoked by using dedicated com-\n"
 "              mand line options.\n"
 "\n"
 "              POST and PUT requests are rather invoked by using dedicated com-\n"
 "              mand line options.\n"
 "\n"
-"              This option only changes  the  actual  word  used  in  the  HTTP\n"
+"              This  option  only  changes  the  actual  word  used in the HTTP\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              request,  it does not alter the way curl behaves. So for example\n"
-"              if you want to make a proper HEAD request, using  -X  HEAD  will\n"
+"              request, it does not alter the way curl behaves. So for  example\n"
+"              if  you  want  to make a proper HEAD request, using -X HEAD will\n"
 "              not suffice. You need to use the -I, --head option.\n"
 "\n"
 "              (FTP) Specifies a custom FTP command to use instead of LIST when\n"
 "              doing file lists with FTP.\n"
 "\n"
 "              not suffice. You need to use the -I, --head option.\n"
 "\n"
 "              (FTP) Specifies a custom FTP command to use instead of LIST when\n"
 "              doing file lists with FTP.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
+"              (POP3) Specifies a custom POP3 command to use instead of LIST or\n"
+"              RETR. (Added in 7.26.0)\n"
 "\n"
 "\n"
-"       --xattr\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"              (IMAP) Specifies a custom IMAP command to use instead  of  LIST.\n"
+"              (Added in 7.30.0)\n"
+"\n"
+"              (SMTP) Specifies a custom SMTP command to use instead of HELP or\n"
+"              VRFY. (Added in 7.34.0)\n"
+"\n"
+"              If this option is used several times, the last one will be used.\n"
+"\n"
+"       --xattr\n"
 "              When saving output to a file, this option tells  curl  to  store\n"
 "              certain  file  metadata  in extended file attributes. Currently,\n"
 "              When saving output to a file, this option tells  curl  to  store\n"
 "              certain  file  metadata  in extended file attributes. Currently,\n"
+, stdout);
+ fputs(
 "              the URL is stored in the xdg.origin.url attribute and, for HTTP,\n"
 "              the  content  type  is stored in the mime_type attribute. If the\n"
 "              file system does not support extended attributes, a  warning  is\n"
 "              issued.\n"
 "\n"
 "       -y, --speed-time <time>\n"
 "              the URL is stored in the xdg.origin.url attribute and, for HTTP,\n"
 "              the  content  type  is stored in the mime_type attribute. If the\n"
 "              file system does not support extended attributes, a  warning  is\n"
 "              issued.\n"
 "\n"
 "       -y, --speed-time <time>\n"
-, stdout);
- fputs(
 "              If a download is slower than speed-limit bytes per second during\n"
 "              a speed-time period, the download gets aborted. If speed-time is\n"
 "              If a download is slower than speed-limit bytes per second during\n"
 "              a speed-time period, the download gets aborted. If speed-time is\n"
+, stdout);
+ fputs(
 "              used, the default speed-limit will be 1 unless set with -Y.\n"
 "\n"
 "              This  option  controls  transfers  and thus will not affect slow\n"
 "              connects etc. If this is a concern for you, try  the  --connect-\n"
 "              timeout option.\n"
 "\n"
 "              used, the default speed-limit will be 1 unless set with -Y.\n"
 "\n"
 "              This  option  controls  transfers  and thus will not affect slow\n"
 "              connects etc. If this is a concern for you, try  the  --connect-\n"
 "              timeout option.\n"
 "\n"
-, stdout);
- fputs(
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       -Y, --speed-limit <speed>\n"
 "              If a download is slower than this given speed (in bytes per sec-\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       -Y, --speed-limit <speed>\n"
 "              If a download is slower than this given speed (in bytes per sec-\n"
+, stdout);
+ fputs(
 "              ond) for speed-time seconds it gets aborted. speed-time  is  set\n"
 "              with -y and is 30 if not set.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       -z, --time-cond <date expression>|<file>\n"
 "              ond) for speed-time seconds it gets aborted. speed-time  is  set\n"
 "              with -y and is 30 if not set.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       -z, --time-cond <date expression>|<file>\n"
-, stdout);
- fputs(
 "              (HTTP/FTP)  Request a file that has been modified later than the\n"
 "              given time and date, or one that has been modified  before  that\n"
 "              time.  The <date expression> can be all sorts of date strings or\n"
 "              (HTTP/FTP)  Request a file that has been modified later than the\n"
 "              given time and date, or one that has been modified  before  that\n"
 "              time.  The <date expression> can be all sorts of date strings or\n"
+, stdout);
+ fputs(
 "              if it doesn't match any internal ones, it is taken as a filename\n"
 "              and  tries  to  get  the  modification  date (mtime) from <file>\n"
 "              instead. See the curl_getdate(3) man pages for  date  expression\n"
 "              details.\n"
 "\n"
 "              if it doesn't match any internal ones, it is taken as a filename\n"
 "              and  tries  to  get  the  modification  date (mtime) from <file>\n"
 "              instead. See the curl_getdate(3) man pages for  date  expression\n"
 "              details.\n"
 "\n"
-, stdout);
- fputs(
 "              Start the date expression with a dash (-) to make it request for\n"
 "              a document that is older than the given date/time, default is  a\n"
 "              document that is newer than the specified date/time.\n"
 "\n"
 "              Start the date expression with a dash (-) to make it request for\n"
 "              a document that is older than the given date/time, default is  a\n"
 "              document that is newer than the specified date/time.\n"
 "\n"
+, stdout);
+ fputs(
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       -h, --help\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       -h, --help\n"
-"              Usage help.\n"
+"              Usage  help.  This lists all current command line options with a\n"
+"              short description.\n"
 "\n"
 "       -M, --manual\n"
 "              Manual. Display the huge help text.\n"
 "\n"
 "       -V, --version\n"
 "\n"
 "       -M, --manual\n"
 "              Manual. Display the huge help text.\n"
 "\n"
 "       -V, --version\n"
+"              Displays information about curl and the libcurl version it uses.\n"
+"              The first line includes the full version of  curl,  libcurl  and\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              Displays information about curl and the libcurl version it uses.\n"
-"              The  first  line  includes the full version of curl, libcurl and\n"
 "              other 3rd party libraries linked with the executable.\n"
 "\n"
 "              other 3rd party libraries linked with the executable.\n"
 "\n"
-"              The second line (starts with \"Protocols:\") shows  all  protocols\n"
+"              The  second  line (starts with \"Protocols:\") shows all protocols\n"
 "              that libcurl reports to support.\n"
 "\n"
 "              The third line (starts with \"Features:\") shows specific features\n"
 "              that libcurl reports to support.\n"
 "\n"
 "              The third line (starts with \"Features:\") shows specific features\n"
-, stdout);
- fputs(
 "              libcurl reports to offer. Available features include:\n"
 "\n"
 "              IPv6   You can use IPv6 with this.\n"
 "\n"
 "              krb4   Krb4 for FTP is supported.\n"
 "\n"
 "              libcurl reports to offer. Available features include:\n"
 "\n"
 "              IPv6   You can use IPv6 with this.\n"
 "\n"
 "              krb4   Krb4 for FTP is supported.\n"
 "\n"
-"              SSL    HTTPS and FTPS are supported.\n"
+, stdout);
+ fputs(
+"              SSL    SSL  versions of various protocols are supported, such as\n"
+"                     HTTPS, FTPS, POP3S and so on.\n"
 "\n"
 "              libz   Automatic decompression of compressed files over HTTP  is\n"
 "                     supported.\n"
 "\n"
 "              NTLM   NTLM authentication is supported.\n"
 "\n"
 "\n"
 "              libz   Automatic decompression of compressed files over HTTP  is\n"
 "                     supported.\n"
 "\n"
 "              NTLM   NTLM authentication is supported.\n"
 "\n"
-"              GSS-Negotiate\n"
-"                     Negotiate authentication and krb5 for FTP is supported.\n"
-"\n"
-, stdout);
- fputs(
 "              Debug  This  curl  uses a libcurl built with Debug. This enables\n"
 "                     more error-tracking and memory debugging etc.  For  curl-\n"
 "                     developers only!\n"
 "\n"
 "              Debug  This  curl  uses a libcurl built with Debug. This enables\n"
 "                     more error-tracking and memory debugging etc.  For  curl-\n"
 "                     developers only!\n"
 "\n"
+, stdout);
+ fputs(
 "              AsynchDNS\n"
 "              AsynchDNS\n"
-"                     This curl uses asynchronous name resolves.\n"
+"                     This  curl  uses asynchronous name resolves. Asynchronous\n"
+"                     name resolves can be done using either the c-ares or  the\n"
+"                     threaded resolver backends.\n"
 "\n"
 "\n"
-"              SPNEGO SPNEGO Negotiate authentication is supported.\n"
+"              SPNEGO SPNEGO authentication is supported.\n"
 "\n"
 "              Largefile\n"
 "                     This curl supports transfers of large files, files larger\n"
 "                     than 2GB.\n"
 "\n"
 "\n"
 "              Largefile\n"
 "                     This curl supports transfers of large files, files larger\n"
 "                     than 2GB.\n"
 "\n"
+"              IDN    This curl supports IDN - international domain names.\n"
+"\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"              IDN    This curl supports IDN - international domain names.\n"
+"              GSS-API\n"
+"                     GSS-API is supported.\n"
 "\n"
 "\n"
-"              SSPI   SSPI is supported. If you use NTLM and set a  blank  user\n"
-"                     name,  curl  will authenticate with your current user and\n"
-"                     password.\n"
+"              SSPI   SSPI is supported.\n"
 "\n"
 "              TLS-SRP\n"
 "                     SRP (Secure Remote Password) authentication is  supported\n"
 "                     for TLS.\n"
 "\n"
 "              TLS-SRP\n"
 "                     SRP (Secure Remote Password) authentication is  supported\n"
 "                     for TLS.\n"
+"\n"
+"              HTTP2  HTTP/2 support has been built-in.\n"
+"\n"
 "              Metalink\n"
 "                     This  curl  supports  Metalink (both version 3 and 4 (RFC\n"
 "              Metalink\n"
 "                     This  curl  supports  Metalink (both version 3 and 4 (RFC\n"
+"                     5854)), which describes mirrors and  hashes.   curl  will\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"                     5854)), which describes mirrors and  hashes.   curl  will\n"
 "                     use mirrors for failover if there are errors (such as the\n"
 "                     file or server not being available).\n"
 "\n"
 "                     use mirrors for failover if there are errors (such as the\n"
 "                     file or server not being available).\n"
 "\n"
@@ -2499,10 +2803,10 @@ void hugehelp(void)
 "ENVIRONMENT\n"
 "       The environment variables can be specified in lower case or upper case.\n"
 "       The lower case version has precedence. http_proxy is an exception as it\n"
 "ENVIRONMENT\n"
 "       The environment variables can be specified in lower case or upper case.\n"
 "       The lower case version has precedence. http_proxy is an exception as it\n"
-, stdout);
- fputs(
 "       is only available in lower case.\n"
 "\n"
 "       is only available in lower case.\n"
 "\n"
+, stdout);
+ fputs(
 "       Using an environment variable to set the proxy has the same  effect  as\n"
 "       using the --proxy option.\n"
 "\n"
 "       Using an environment variable to set the proxy has the same  effect  as\n"
 "       using the --proxy option.\n"
 "\n"
@@ -2765,12 +3069,16 @@ void hugehelp(void)
 "\n"
 "       88     FTP chunk callback reported error\n"
 "\n"
 "\n"
 "       88     FTP chunk callback reported error\n"
 "\n"
+"       89     No connection available, the session will be queued\n"
+"\n"
+"       90     SSL public key does not matched pinned public key\n"
+"\n"
+, stdout);
+ fputs(
 "       XX     More error codes will appear here in future releases. The exist-\n"
 "              ing ones are meant to never change.\n"
 "\n"
 "AUTHORS / CONTRIBUTORS\n"
 "       XX     More error codes will appear here in future releases. The exist-\n"
 "              ing ones are meant to never change.\n"
 "\n"
 "AUTHORS / CONTRIBUTORS\n"
-, stdout);
- fputs(
 "       Daniel Stenberg is the main author, but the whole list of  contributors\n"
 "       is found in the separate THANKS file.\n"
 "\n"
 "       Daniel Stenberg is the main author, but the whole list of  contributors\n"
 "       is found in the separate THANKS file.\n"
 "\n"
@@ -2786,6 +3094,8 @@ void hugehelp(void)
 "LATEST VERSION\n"
 "\n"
 "  You always find news about what's going on as well as the latest versions\n"
 "LATEST VERSION\n"
 "\n"
 "  You always find news about what's going on as well as the latest versions\n"
+, stdout);
+ fputs(
 "  from the curl web pages, located at:\n"
 "\n"
 "        http://curl.haxx.se\n"
 "  from the curl web pages, located at:\n"
 "\n"
 "        http://curl.haxx.se\n"
@@ -2794,8 +3104,6 @@ void hugehelp(void)
 "\n"
 "  Get the main page from Netscape's web-server:\n"
 "\n"
 "\n"
 "  Get the main page from Netscape's web-server:\n"
 "\n"
-, stdout);
- fputs(
 "        curl http://www.netscape.com/\n"
 "\n"
 "  Get the README file the user's home directory at funet's ftp-server:\n"
 "        curl http://www.netscape.com/\n"
 "\n"
 "  Get the README file the user's home directory at funet's ftp-server:\n"
@@ -2810,14 +3118,14 @@ void hugehelp(void)
 "\n"
 "        curl ftp://cool.haxx.se/\n"
 "\n"
 "\n"
 "        curl ftp://cool.haxx.se/\n"
 "\n"
+, stdout);
+ fputs(
 "  Get the definition of curl from a dictionary:\n"
 "\n"
 "        curl dict://dict.org/m:curl\n"
 "\n"
 "  Fetch two documents at once:\n"
 "\n"
 "  Get the definition of curl from a dictionary:\n"
 "\n"
 "        curl dict://dict.org/m:curl\n"
 "\n"
 "  Fetch two documents at once:\n"
 "\n"
-, stdout);
- fputs(
 "        curl ftp://cool.haxx.se/ http://www.weirdserver.com:8000/\n"
 "\n"
 "  Get a file off an FTPS server:\n"
 "        curl ftp://cool.haxx.se/ http://www.weirdserver.com:8000/\n"
 "\n"
 "  Get a file off an FTPS server:\n"
@@ -2830,18 +3138,31 @@ void hugehelp(void)
 "\n"
 "  Get a file from an SSH server using SFTP:\n"
 "\n"
 "\n"
 "  Get a file from an SSH server using SFTP:\n"
 "\n"
-"        curl -u username sftp://shell.example.com/etc/issue\n"
-"\n"
-"  Get a file from an SSH server using SCP using a private key to authenticate:\n"
+"        curl -u username sftp://example.com/etc/issue\n"
 "\n"
 , stdout);
  fputs(
 "\n"
 , stdout);
  fputs(
-"        curl -u username: --key ~/.ssh/id_dsa --pubkey ~/.ssh/id_dsa.pub \\\n"
-"            scp://shell.example.com/~/personal.txt\n"
+"  Get a file from an SSH server using SCP using a private key\n"
+"  (not password-protected) to authenticate:\n"
+"\n"
+"        curl -u username: --key ~/.ssh/id_rsa \\\n"
+"             scp://example.com/~/file.txt\n"
+"\n"
+"  Get a file from an SSH server using SCP using a private key\n"
+"  (password-protected) to authenticate:\n"
+"\n"
+"        curl -u username: --key ~/.ssh/id_rsa --pass private_key_password \\\n"
+"             scp://example.com/~/file.txt\n"
 "\n"
 "  Get the main page from an IPv6 web server:\n"
 "\n"
 "\n"
 "  Get the main page from an IPv6 web server:\n"
 "\n"
-"        curl -g \"http://[2001:1890:1112:1::20]/\"\n"
+, stdout);
+ fputs(
+"        curl \"http://[2001:1890:1112:1::20]/\"\n"
+"\n"
+"  Get a file from an SMB server:\n"
+"\n"
+"        curl -u \"domain\\username:passwd\" smb://server.example.com/share/file.txt\n"
 "\n"
 "DOWNLOAD TO A FILE\n"
 "\n"
 "\n"
 "DOWNLOAD TO A FILE\n"
 "\n"
@@ -2850,11 +3171,11 @@ void hugehelp(void)
 "        curl -o thatpage.html http://www.netscape.com/\n"
 "\n"
 "  Get a web page and store in a local file, make the local file get the name\n"
 "        curl -o thatpage.html http://www.netscape.com/\n"
 "\n"
 "  Get a web page and store in a local file, make the local file get the name\n"
-, stdout);
- fputs(
 "  of the remote document (if no file name part is specified in the URL, this\n"
 "  will fail):\n"
 "\n"
 "  of the remote document (if no file name part is specified in the URL, this\n"
 "  will fail):\n"
 "\n"
+, stdout);
+ fputs(
 "        curl -O http://www.netscape.com/index.html\n"
 "\n"
 "  Fetch two files and store them with their remote names:\n"
 "        curl -O http://www.netscape.com/index.html\n"
 "\n"
 "  Fetch two files and store them with their remote names:\n"
@@ -2871,12 +3192,12 @@ void hugehelp(void)
 "\n"
 "   or specify them with the -u flag like\n"
 "\n"
 "\n"
 "   or specify them with the -u flag like\n"
 "\n"
-, stdout);
- fputs(
 "        curl -u name:passwd ftp://machine.domain:port/full/path/to/file\n"
 "\n"
 " FTPS\n"
 "\n"
 "        curl -u name:passwd ftp://machine.domain:port/full/path/to/file\n"
 "\n"
 " FTPS\n"
 "\n"
+, stdout);
+ fputs(
 "   It is just like for FTP, but you may also want to specify and use\n"
 "   SSL-specific options for certificates etc.\n"
 "\n"
 "   It is just like for FTP, but you may also want to specify and use\n"
 "   SSL-specific options for certificates etc.\n"
 "\n"
@@ -2886,35 +3207,38 @@ void hugehelp(void)
 "\n"
 " SFTP / SCP\n"
 "\n"
 "\n"
 " SFTP / SCP\n"
 "\n"
-"   This is similar to FTP, but you can specify a private key to use instead of\n"
+"   This is similar to FTP, but you can use the --key option to specify a\n"
+"   private key to use instead of a password. Note that the private key may\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"   a password. Note that the private key may itself be protected by a password\n"
-"   that is unrelated to the login password of the remote system.  If you\n"
-"   provide a private key file you must also provide a public key file.\n"
+"   itself be protected by a password that is unrelated to the login password\n"
+"   of the remote system; this password is specified using the --pass option.\n"
+"   Typically, curl will automatically extract the public key from the private\n"
+"   key file, but in cases where curl does not have the proper library support,\n"
+"   a matching public key file must be specified using the --pubkey option.\n"
 "\n"
 " HTTP\n"
 "\n"
 "   Curl also supports user and password in HTTP URLs, thus you can pick a file\n"
 "   like:\n"
 "\n"
 "\n"
 " HTTP\n"
 "\n"
 "   Curl also supports user and password in HTTP URLs, thus you can pick a file\n"
 "   like:\n"
 "\n"
+, stdout);
+ fputs(
 "        curl http://name:passwd@machine.domain/full/path/to/file\n"
 "\n"
 "   or specify user and password separately like in\n"
 "\n"
 "        curl http://name:passwd@machine.domain/full/path/to/file\n"
 "\n"
 "   or specify user and password separately like in\n"
 "\n"
-, stdout);
- fputs(
 "        curl -u name:passwd http://machine.domain/full/path/to/file\n"
 "\n"
 "   HTTP offers many different methods of authentication and curl supports\n"
 "        curl -u name:passwd http://machine.domain/full/path/to/file\n"
 "\n"
 "   HTTP offers many different methods of authentication and curl supports\n"
-"   several: Basic, Digest, NTLM and Negotiate. Without telling which method to\n"
-"   use, curl defaults to Basic. You can also ask curl to pick the most secure\n"
-"   ones out of the ones that the server accepts for the given URL, by using\n"
-"   --anyauth.\n"
-"\n"
-"   NOTE! According to the URL specification, HTTP URLs can not contain a user\n"
+"   several: Basic, Digest, NTLM and Negotiate (SPNEGO). Without telling which\n"
+"   method to use, curl defaults to Basic. You can also ask curl to pick the\n"
+"   most secure ones out of the ones that the server accepts for the given URL,\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"   by using --anyauth.\n"
+"\n"
+"   NOTE! According to the URL specification, HTTP URLs can not contain a user\n"
 "   and password, so that style will not work when using curl via a proxy, even\n"
 "   though curl allows it at other times. When using a proxy, you _must_ use\n"
 "   the -u style for user and password.\n"
 "   and password, so that style will not work when using curl via a proxy, even\n"
 "   though curl allows it at other times. When using a proxy, you _must_ use\n"
 "   the -u style for user and password.\n"
@@ -2926,9 +3250,9 @@ void hugehelp(void)
 "PROXY\n"
 "\n"
 " curl supports both HTTP and SOCKS proxy servers, with optional authentication.\n"
 "PROXY\n"
 "\n"
 " curl supports both HTTP and SOCKS proxy servers, with optional authentication.\n"
-" It does not have special support for FTP proxy servers since there are no\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+" It does not have special support for FTP proxy servers since there are no\n"
 " standards for those, but it can still be made to work with many of them. You\n"
 " can also use both HTTP and SOCKS proxies to transfer files to and from FTP\n"
 " servers.\n"
 " standards for those, but it can still be made to work with many of them. You\n"
 " can also use both HTTP and SOCKS proxies to transfer files to and from FTP\n"
 " servers.\n"
@@ -2940,10 +3264,10 @@ void hugehelp(void)
 " Get a file from an HTTP server that requires user and password, using the\n"
 " same proxy as above:\n"
 "\n"
 " Get a file from an HTTP server that requires user and password, using the\n"
 " same proxy as above:\n"
 "\n"
-"        curl -u user:passwd -x my-proxy:888 http://www.get.this/\n"
-"\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"        curl -u user:passwd -x my-proxy:888 http://www.get.this/\n"
+"\n"
 " Some proxies require special authentication. Specify by using -U as above:\n"
 "\n"
 "        curl -U user:passwd -x my-proxy:888 http://www.get.this/\n"
 " Some proxies require special authentication. Specify by using -U as above:\n"
 "\n"
 "        curl -U user:passwd -x my-proxy:888 http://www.get.this/\n"
@@ -2954,10 +3278,10 @@ void hugehelp(void)
 "        curl --noproxy localhost,get.this -x my-proxy:888 http://www.get.this/\n"
 "\n"
 " If the proxy is specified with --proxy1.0 instead of --proxy or -x, then\n"
 "        curl --noproxy localhost,get.this -x my-proxy:888 http://www.get.this/\n"
 "\n"
 " If the proxy is specified with --proxy1.0 instead of --proxy or -x, then\n"
-" curl will use HTTP/1.0 instead of HTTP/1.1 for any CONNECT attempts.\n"
-"\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+" curl will use HTTP/1.0 instead of HTTP/1.1 for any CONNECT attempts.\n"
+"\n"
 " curl also supports SOCKS4 and SOCKS5 proxies with --socks4 and --socks5.\n"
 "\n"
 " See also the environment variables Curl supports that offer further proxy\n"
 " curl also supports SOCKS4 and SOCKS5 proxies with --socks4 and --socks5.\n"
 "\n"
 " See also the environment variables Curl supports that offer further proxy\n"
@@ -2966,9 +3290,9 @@ void hugehelp(void)
 " Most FTP proxy servers are set up to appear as a normal FTP server from the\n"
 " client's perspective, with special commands to select the remote FTP server.\n"
 " curl supports the -u, -Q and --ftp-account options that can be used to\n"
 " Most FTP proxy servers are set up to appear as a normal FTP server from the\n"
 " client's perspective, with special commands to select the remote FTP server.\n"
 " curl supports the -u, -Q and --ftp-account options that can be used to\n"
-" set up transfers through many FTP proxies. For example, a file can be\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+" set up transfers through many FTP proxies. For example, a file can be\n"
 " uploaded to a remote FTP server using a Blue Coat FTP proxy with the\n"
 " options:\n"
 "\n"
 " uploaded to a remote FTP server using a Blue Coat FTP proxy with the\n"
 " options:\n"
 "\n"
@@ -2979,11 +3303,11 @@ void hugehelp(void)
 " See the manual for your FTP proxy to determine the form it expects to set up\n"
 " transfers, and curl's -v option to see exactly what curl is sending.\n"
 "\n"
 " See the manual for your FTP proxy to determine the form it expects to set up\n"
 " transfers, and curl's -v option to see exactly what curl is sending.\n"
 "\n"
+, stdout);
+ fputs(
 "RANGES\n"
 "\n"
 "  HTTP 1.1 introduced byte-ranges. Using this, a client can request\n"
 "RANGES\n"
 "\n"
 "  HTTP 1.1 introduced byte-ranges. Using this, a client can request\n"
-, stdout);
- fputs(
 "  to get only one or more subparts of a specified document. Curl supports\n"
 "  this with the -r flag.\n"
 "\n"
 "  to get only one or more subparts of a specified document. Curl supports\n"
 "  this with the -r flag.\n"
 "\n"
@@ -2998,14 +3322,14 @@ void hugehelp(void)
 "  Curl also supports simple ranges for FTP files as well. Then you can only\n"
 "  specify start and stop position.\n"
 "\n"
 "  Curl also supports simple ranges for FTP files as well. Then you can only\n"
 "  specify start and stop position.\n"
 "\n"
+, stdout);
+ fputs(
 "  Get the first 100 bytes of a document using FTP:\n"
 "\n"
 "        curl -r 0-99 ftp://www.get.this/README\n"
 "\n"
 "UPLOADING\n"
 "\n"
 "  Get the first 100 bytes of a document using FTP:\n"
 "\n"
 "        curl -r 0-99 ftp://www.get.this/README\n"
 "\n"
 "UPLOADING\n"
 "\n"
-, stdout);
- fputs(
 " FTP / FTPS / SFTP / SCP\n"
 "\n"
 "  Upload all data on stdin to a specified server:\n"
 " FTP / FTPS / SFTP / SCP\n"
 "\n"
 "  Upload all data on stdin to a specified server:\n"
@@ -3019,12 +3343,12 @@ void hugehelp(void)
 "  Upload a local file to the remote site, and use the local file name at the remote\n"
 "  site too:\n"
 "\n"
 "  Upload a local file to the remote site, and use the local file name at the remote\n"
 "  site too:\n"
 "\n"
+, stdout);
+ fputs(
 "        curl -T uploadfile -u user:passwd ftp://ftp.upload.com/\n"
 "\n"
 "  Upload a local file to get appended to the remote file:\n"
 "\n"
 "        curl -T uploadfile -u user:passwd ftp://ftp.upload.com/\n"
 "\n"
 "  Upload a local file to get appended to the remote file:\n"
 "\n"
-, stdout);
- fputs(
 "        curl -T localfile -a ftp://ftp.upload.com/remotefile\n"
 "\n"
 "  Curl also supports ftp upload through a proxy, but only if the proxy is\n"
 "        curl -T localfile -a ftp://ftp.upload.com/remotefile\n"
 "\n"
 "  Curl also supports ftp upload through a proxy, but only if the proxy is\n"
@@ -3033,6 +3357,13 @@ void hugehelp(void)
 "\n"
 "        curl --proxytunnel -x proxy:port -T localfile ftp.upload.com\n"
 "\n"
 "\n"
 "        curl --proxytunnel -x proxy:port -T localfile ftp.upload.com\n"
 "\n"
+"SMB / SMBS\n"
+"\n"
+"        curl -T file.txt -u \"domain\\username:passwd\" \n"
+, stdout);
+ fputs(
+"         smb://server.example.com/share/\n"
+"\n"
 " HTTP\n"
 "\n"
 "  Upload all data on stdin to a specified HTTP site:\n"
 " HTTP\n"
 "\n"
 "  Upload all data on stdin to a specified HTTP site:\n"
@@ -3040,8 +3371,6 @@ void hugehelp(void)
 "        curl -T - http://www.upload.com/myfile\n"
 "\n"
 "  Note that the HTTP server must have been configured to accept PUT before\n"
 "        curl -T - http://www.upload.com/myfile\n"
 "\n"
 "  Note that the HTTP server must have been configured to accept PUT before\n"
-, stdout);
- fputs(
 "  this can be done successfully.\n"
 "\n"
 "  For other ways to do HTTP data upload, see the POST section below.\n"
 "  this can be done successfully.\n"
 "\n"
 "  For other ways to do HTTP data upload, see the POST section below.\n"
@@ -3050,14 +3379,14 @@ void hugehelp(void)
 "\n"
 "  If curl fails where it isn't supposed to, if the servers don't let you in,\n"
 "  if you can't understand the responses: use the -v flag to get verbose\n"
 "\n"
 "  If curl fails where it isn't supposed to, if the servers don't let you in,\n"
 "  if you can't understand the responses: use the -v flag to get verbose\n"
+, stdout);
+ fputs(
 "  fetching. Curl will output lots of info and what it sends and receives in\n"
 "  order to let the user see all client-server interaction (but it won't show\n"
 "  you the actual data).\n"
 "\n"
 "        curl -v ftp://ftp.upload.com/\n"
 "\n"
 "  fetching. Curl will output lots of info and what it sends and receives in\n"
 "  order to let the user see all client-server interaction (but it won't show\n"
 "  you the actual data).\n"
 "\n"
 "        curl -v ftp://ftp.upload.com/\n"
 "\n"
-, stdout);
- fputs(
 "  To get even more details and information on what curl does, try using the\n"
 "  --trace or --trace-ascii options with a given file name to log to, like\n"
 "  this:\n"
 "  To get even more details and information on what curl does, try using the\n"
 "  --trace or --trace-ascii options with a given file name to log to, like\n"
 "  this:\n"
@@ -3067,23 +3396,23 @@ void hugehelp(void)
 "\n"
 "DETAILED INFORMATION\n"
 "\n"
 "\n"
 "DETAILED INFORMATION\n"
 "\n"
+, stdout);
+ fputs(
 "  Different protocols provide different ways of getting detailed information\n"
 "  about specific files/documents. To get curl to show detailed information\n"
 "  about a single file, you should use -I/--head option. It displays all\n"
 "  Different protocols provide different ways of getting detailed information\n"
 "  about specific files/documents. To get curl to show detailed information\n"
 "  about a single file, you should use -I/--head option. It displays all\n"
-, stdout);
- fputs(
 "  available info on a single file for HTTP and FTP. The HTTP information is a\n"
 "  lot more extensive.\n"
 "\n"
 "  For HTTP, you can get the header information (the same as -I would show)\n"
 "  shown before the data by using -i/--include. Curl understands the\n"
 "  available info on a single file for HTTP and FTP. The HTTP information is a\n"
 "  lot more extensive.\n"
 "\n"
 "  For HTTP, you can get the header information (the same as -I would show)\n"
 "  shown before the data by using -i/--include. Curl understands the\n"
+, stdout);
+ fputs(
 "  -D/--dump-header option when getting files from both FTP and HTTP, and it\n"
 "  will then store the headers in the specified file.\n"
 "\n"
 "  Store the HTTP headers in a separate file (headers.txt in the example):\n"
 "\n"
 "  -D/--dump-header option when getting files from both FTP and HTTP, and it\n"
 "  will then store the headers in the specified file.\n"
 "\n"
 "  Store the HTTP headers in a separate file (headers.txt in the example):\n"
 "\n"
-, stdout);
- fputs(
 "        curl --dump-header headers.txt curl.haxx.se\n"
 "\n"
 "  Note that headers stored in a separate file can be very useful at a later\n"
 "        curl --dump-header headers.txt curl.haxx.se\n"
 "\n"
 "  Note that headers stored in a separate file can be very useful at a later\n"
@@ -3092,14 +3421,14 @@ void hugehelp(void)
 "\n"
 "POST (HTTP)\n"
 "\n"
 "\n"
 "POST (HTTP)\n"
 "\n"
+, stdout);
+ fputs(
 "  It's easy to post data using curl. This is done using the -d <data>\n"
 "  option.  The post data must be urlencoded.\n"
 "\n"
 "  Post a simple \"name\" and \"phone\" guestbook.\n"
 "\n"
 "        curl -d \"name=Rafael%20Sagula&phone=3320780\" \\\n"
 "  It's easy to post data using curl. This is done using the -d <data>\n"
 "  option.  The post data must be urlencoded.\n"
 "\n"
 "  Post a simple \"name\" and \"phone\" guestbook.\n"
 "\n"
 "        curl -d \"name=Rafael%20Sagula&phone=3320780\" \\\n"
-, stdout);
- fputs(
 "                http://www.where.com/guest.cgi\n"
 "\n"
 "  How to post a form with curl, lesson #1:\n"
 "                http://www.where.com/guest.cgi\n"
 "\n"
 "  How to post a form with curl, lesson #1:\n"
@@ -3107,17 +3436,19 @@ void hugehelp(void)
 "  Dig out all the <input> tags in the form that you want to fill in. (There's\n"
 "  a perl program called formfind.pl on the curl site that helps with this).\n"
 "\n"
 "  Dig out all the <input> tags in the form that you want to fill in. (There's\n"
 "  a perl program called formfind.pl on the curl site that helps with this).\n"
 "\n"
+, stdout);
+ fputs(
 "  If there's a \"normal\" post, you use -d to post. -d takes a full \"post\n"
 "  string\", which is in the format\n"
 "\n"
 "        <variable1>=<data1>&<variable2>=<data2>&...\n"
 "\n"
 "  The 'variable' names are the names set with \"name=\" in the <input> tags, and\n"
 "  If there's a \"normal\" post, you use -d to post. -d takes a full \"post\n"
 "  string\", which is in the format\n"
 "\n"
 "        <variable1>=<data1>&<variable2>=<data2>&...\n"
 "\n"
 "  The 'variable' names are the names set with \"name=\" in the <input> tags, and\n"
-, stdout);
- fputs(
 "  the data is the contents you want to fill in for the inputs. The data *must*\n"
 "  be properly URL encoded. That means you replace space with + and that you\n"
 "  replace weird letters with %XX where XX is the hexadecimal representation of\n"
 "  the data is the contents you want to fill in for the inputs. The data *must*\n"
 "  be properly URL encoded. That means you replace space with + and that you\n"
 "  replace weird letters with %XX where XX is the hexadecimal representation of\n"
+, stdout);
+ fputs(
 "  the letter's ASCII code.\n"
 "\n"
 "  Example:\n"
 "  the letter's ASCII code.\n"
 "\n"
 "  Example:\n"
@@ -3127,8 +3458,6 @@ void hugehelp(void)
 "        <form action=\"post.cgi\" method=\"post\">\n"
 "        <input name=user size=10>\n"
 "        <input name=pass type=password size=10>\n"
 "        <form action=\"post.cgi\" method=\"post\">\n"
 "        <input name=user size=10>\n"
 "        <input name=pass type=password size=10>\n"
-, stdout);
- fputs(
 "        <input name=id type=hidden value=\"blablabla\">\n"
 "        <input name=ding value=\"submit\">\n"
 "        </form>\n"
 "        <input name=id type=hidden value=\"blablabla\">\n"
 "        <input name=ding value=\"submit\">\n"
 "        </form>\n"
@@ -3137,47 +3466,49 @@ void hugehelp(void)
 "\n"
 "  To post to this, you enter a curl command line like:\n"
 "\n"
 "\n"
 "  To post to this, you enter a curl command line like:\n"
 "\n"
+, stdout);
+ fputs(
 "        curl -d \"user=foobar&pass=12345&id=blablabla&ding=submit\"  (continues)\n"
 "          http://www.formpost.com/getthis/post.cgi\n"
 "\n"
 "\n"
 "  While -d uses the application/x-www-form-urlencoded mime-type, generally\n"
 "        curl -d \"user=foobar&pass=12345&id=blablabla&ding=submit\"  (continues)\n"
 "          http://www.formpost.com/getthis/post.cgi\n"
 "\n"
 "\n"
 "  While -d uses the application/x-www-form-urlencoded mime-type, generally\n"
-, stdout);
- fputs(
 "  understood by CGI's and similar, curl also supports the more capable\n"
 "  multipart/form-data type. This latter type supports things like file upload.\n"
 "\n"
 "  -F accepts parameters like -F \"name=contents\". If you want the contents to\n"
 "  understood by CGI's and similar, curl also supports the more capable\n"
 "  multipart/form-data type. This latter type supports things like file upload.\n"
 "\n"
 "  -F accepts parameters like -F \"name=contents\". If you want the contents to\n"
+, stdout);
+ fputs(
 "  be read from a file, use <@filename> as contents. When specifying a file,\n"
 "  you can also specify the file content type by appending ';type=<mime type>'\n"
 "  to the file name. You can also post the contents of several files in one\n"
 "  be read from a file, use <@filename> as contents. When specifying a file,\n"
 "  you can also specify the file content type by appending ';type=<mime type>'\n"
 "  to the file name. You can also post the contents of several files in one\n"
-, stdout);
- fputs(
 "  field.  For example, the field name 'coolfiles' is used to send three files,\n"
 "  with different content types using the following syntax:\n"
 "\n"
 "        curl -F \"coolfiles=@fil1.gif;type=image/gif,fil2.txt,fil3.html\" \\\n"
 "        http://www.post.com/postit.cgi\n"
 "\n"
 "  field.  For example, the field name 'coolfiles' is used to send three files,\n"
 "  with different content types using the following syntax:\n"
 "\n"
 "        curl -F \"coolfiles=@fil1.gif;type=image/gif,fil2.txt,fil3.html\" \\\n"
 "        http://www.post.com/postit.cgi\n"
 "\n"
+, stdout);
+ fputs(
 "  If the content-type is not specified, curl will try to guess from the file\n"
 "  extension (it only knows a few), or use the previously specified type (from\n"
 "  an earlier file if several files are specified in a list) or else it will\n"
 "  If the content-type is not specified, curl will try to guess from the file\n"
 "  extension (it only knows a few), or use the previously specified type (from\n"
 "  an earlier file if several files are specified in a list) or else it will\n"
-, stdout);
- fputs(
 "  use the default type 'application/octet-stream'.\n"
 "\n"
 "  Emulate a fill-in form with -F. Let's say you fill in three fields in a\n"
 "  form. One field is a file name which to post, one field is your name and one\n"
 "  use the default type 'application/octet-stream'.\n"
 "\n"
 "  Emulate a fill-in form with -F. Let's say you fill in three fields in a\n"
 "  form. One field is a file name which to post, one field is your name and one\n"
+, stdout);
+ fputs(
 "  field is a file description. We want to post the file we have written named\n"
 "  \"cooltext.txt\". To let curl do the posting of this data instead of your\n"
 "  favourite browser, you have to read the HTML source of the form page and\n"
 "  field is a file description. We want to post the file we have written named\n"
 "  \"cooltext.txt\". To let curl do the posting of this data instead of your\n"
 "  favourite browser, you have to read the HTML source of the form page and\n"
-, stdout);
- fputs(
 "  find the names of the input fields. In our example, the input field names\n"
 "  are 'file', 'yourname' and 'filedescription'.\n"
 "\n"
 "        curl -F \"file=@cooltext.txt\" -F \"yourname=Daniel\" \\\n"
 "             -F \"filedescription=Cool text file with cool text inside\" \\\n"
 "  find the names of the input fields. In our example, the input field names\n"
 "  are 'file', 'yourname' and 'filedescription'.\n"
 "\n"
 "        curl -F \"file=@cooltext.txt\" -F \"yourname=Daniel\" \\\n"
 "             -F \"filedescription=Cool text file with cool text inside\" \\\n"
+, stdout);
+ fputs(
 "             http://www.post.com/postit.cgi\n"
 "\n"
 "  To send two files in one post you can do it in two ways:\n"
 "             http://www.post.com/postit.cgi\n"
 "\n"
 "  To send two files in one post you can do it in two ways:\n"
@@ -3186,14 +3517,14 @@ void hugehelp(void)
 "\n"
 "        curl -F \"pictures=@dog.gif,cat.gif\"\n"
 "\n"
 "\n"
 "        curl -F \"pictures=@dog.gif,cat.gif\"\n"
 "\n"
-, stdout);
- fputs(
 "  2. Send two fields with two field names:\n"
 "\n"
 "        curl -F \"docpicture=@dog.gif\" -F \"catpicture=@cat.gif\"\n"
 "\n"
 "  To send a field value literally without interpreting a leading '@'\n"
 "  or '<', or an embedded ';type=', use --form-string instead of\n"
 "  2. Send two fields with two field names:\n"
 "\n"
 "        curl -F \"docpicture=@dog.gif\" -F \"catpicture=@cat.gif\"\n"
 "\n"
 "  To send a field value literally without interpreting a leading '@'\n"
 "  or '<', or an embedded ';type=', use --form-string instead of\n"
+, stdout);
+ fputs(
 "  -F. This is recommended when the value is obtained from a user or\n"
 "  some other unpredictable source. Under these circumstances, using\n"
 "  -F instead of --form-string would allow a user to trick curl into\n"
 "  -F. This is recommended when the value is obtained from a user or\n"
 "  some other unpredictable source. Under these circumstances, using\n"
 "  -F instead of --form-string would allow a user to trick curl into\n"
@@ -3201,11 +3532,11 @@ void hugehelp(void)
 "\n"
 "REFERRER\n"
 "\n"
 "\n"
 "REFERRER\n"
 "\n"
-, stdout);
- fputs(
 "  An HTTP request has the option to include information about which address\n"
 "  referred it to the actual page.  Curl allows you to specify the\n"
 "  referrer to be used on the command line. It is especially useful to\n"
 "  An HTTP request has the option to include information about which address\n"
 "  referred it to the actual page.  Curl allows you to specify the\n"
 "  referrer to be used on the command line. It is especially useful to\n"
+, stdout);
+ fputs(
 "  fool or trick stupid servers or CGI scripts that rely on that information\n"
 "  being available or contain certain data.\n"
 "\n"
 "  fool or trick stupid servers or CGI scripts that rely on that information\n"
 "  being available or contain certain data.\n"
 "\n"
@@ -3215,11 +3546,11 @@ void hugehelp(void)
 "\n"
 "USER AGENT\n"
 "\n"
 "\n"
 "USER AGENT\n"
 "\n"
-, stdout);
- fputs(
 "  An HTTP request has the option to include information about the browser\n"
 "  that generated the request. Curl allows it to be specified on the command\n"
 "  line. It is especially useful to fool or trick stupid servers or CGI\n"
 "  An HTTP request has the option to include information about the browser\n"
 "  that generated the request. Curl allows it to be specified on the command\n"
 "  line. It is especially useful to fool or trick stupid servers or CGI\n"
+, stdout);
+ fputs(
 "  scripts that only accept certain browsers.\n"
 "\n"
 "  Example:\n"
 "  scripts that only accept certain browsers.\n"
 "\n"
 "  Example:\n"
@@ -3228,19 +3559,17 @@ void hugehelp(void)
 "\n"
 "  Other common strings:\n"
 "    'Mozilla/3.0 (Win95; I)'     Netscape Version 3 for Windows 95\n"
 "\n"
 "  Other common strings:\n"
 "    'Mozilla/3.0 (Win95; I)'     Netscape Version 3 for Windows 95\n"
-, stdout);
- fputs(
 "    'Mozilla/3.04 (Win95; U)'    Netscape Version 3 for Windows 95\n"
 "    'Mozilla/2.02 (OS/2; U)'     Netscape Version 2 for OS/2\n"
 "    'Mozilla/4.04 [en] (X11; U; AIX 4.2; Nav)'           NS for AIX\n"
 "    'Mozilla/4.05 [en] (X11; U; Linux 2.0.32 i586)'      NS for Linux\n"
 "\n"
 "    'Mozilla/3.04 (Win95; U)'    Netscape Version 3 for Windows 95\n"
 "    'Mozilla/2.02 (OS/2; U)'     Netscape Version 2 for OS/2\n"
 "    'Mozilla/4.04 [en] (X11; U; AIX 4.2; Nav)'           NS for AIX\n"
 "    'Mozilla/4.05 [en] (X11; U; Linux 2.0.32 i586)'      NS for Linux\n"
 "\n"
+, stdout);
+ fputs(
 "  Note that Internet Explorer tries hard to be compatible in every way:\n"
 "    'Mozilla/4.0 (compatible; MSIE 4.01; Windows 95)'    MSIE for W95\n"
 "\n"
 "  Mozilla is not the only possible User-Agent name:\n"
 "  Note that Internet Explorer tries hard to be compatible in every way:\n"
 "    'Mozilla/4.0 (compatible; MSIE 4.01; Windows 95)'    MSIE for W95\n"
 "\n"
 "  Mozilla is not the only possible User-Agent name:\n"
-, stdout);
- fputs(
 "    'Konqueror/1.0'             KDE File Manager desktop client\n"
 "    'Lynx/2.7.1 libwww-FM/2.14' Lynx command line browser\n"
 "\n"
 "    'Konqueror/1.0'             KDE File Manager desktop client\n"
 "    'Lynx/2.7.1 libwww-FM/2.14' Lynx command line browser\n"
 "\n"
@@ -3248,21 +3577,21 @@ void hugehelp(void)
 "\n"
 "  Cookies are generally used by web servers to keep state information at the\n"
 "  client's side. The server sets cookies by sending a response line in the\n"
 "\n"
 "  Cookies are generally used by web servers to keep state information at the\n"
 "  client's side. The server sets cookies by sending a response line in the\n"
-"  headers that looks like 'Set-Cookie: <data>' where the data part then\n"
-"  typically contains a set of NAME=VALUE pairs (separated by semicolons ';'\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"  headers that looks like 'Set-Cookie: <data>' where the data part then\n"
+"  typically contains a set of NAME=VALUE pairs (separated by semicolons ';'\n"
 "  like \"NAME1=VALUE1; NAME2=VALUE2;\"). The server can also specify for what\n"
 "  path the \"cookie\" should be used for (by specifying \"path=value\"), when the\n"
 "  cookie should expire (\"expire=DATE\"), for what domain to use it\n"
 "  (\"domain=NAME\") and if it should be used on secure connections only\n"
 "  (\"secure\").\n"
 "\n"
 "  like \"NAME1=VALUE1; NAME2=VALUE2;\"). The server can also specify for what\n"
 "  path the \"cookie\" should be used for (by specifying \"path=value\"), when the\n"
 "  cookie should expire (\"expire=DATE\"), for what domain to use it\n"
 "  (\"domain=NAME\") and if it should be used on secure connections only\n"
 "  (\"secure\").\n"
 "\n"
+, stdout);
+ fputs(
 "  If you've received a page from a server that contains a header like:\n"
 "        Set-Cookie: sessionid=boo123; path=\"/foo\";\n"
 "\n"
 "  If you've received a page from a server that contains a header like:\n"
 "        Set-Cookie: sessionid=boo123; path=\"/foo\";\n"
 "\n"
-, stdout);
- fputs(
 "  it means the server wants that first pair passed on when we get anything in\n"
 "  a path beginning with \"/foo\".\n"
 "\n"
 "  it means the server wants that first pair passed on when we get anything in\n"
 "  a path beginning with \"/foo\".\n"
 "\n"
@@ -3272,12 +3601,12 @@ void hugehelp(void)
 "\n"
 "  Curl also has the ability to use previously received cookies in following\n"
 "  sessions. If you get cookies from a server and store them in a file in a\n"
 "\n"
 "  Curl also has the ability to use previously received cookies in following\n"
 "  sessions. If you get cookies from a server and store them in a file in a\n"
+, stdout);
+ fputs(
 "  manner similar to:\n"
 "\n"
 "        curl --dump-header headers www.example.com\n"
 "\n"
 "  manner similar to:\n"
 "\n"
 "        curl --dump-header headers www.example.com\n"
 "\n"
-, stdout);
- fputs(
 "  ... you can then in a second connect to that (or another) site, use the\n"
 "  cookies from the 'headers' file like:\n"
 "\n"
 "  ... you can then in a second connect to that (or another) site, use the\n"
 "  cookies from the 'headers' file like:\n"
 "\n"
@@ -3288,10 +3617,10 @@ void hugehelp(void)
 "  save the incoming cookies using the well-known netscape cookie format like\n"
 "  this:\n"
 "\n"
 "  save the incoming cookies using the well-known netscape cookie format like\n"
 "  this:\n"
 "\n"
-"        curl -c cookies.txt www.example.com\n"
-"\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"        curl -c cookies.txt www.example.com\n"
+"\n"
 "  Note that by specifying -b you enable the \"cookie awareness\" and with -L\n"
 "  you can make curl follow a location: (which often is used in combination\n"
 "  with cookies). So that if a site sends cookies and a location, you can\n"
 "  Note that by specifying -b you enable the \"cookie awareness\" and with -L\n"
 "  you can make curl follow a location: (which often is used in combination\n"
 "  with cookies). So that if a site sends cookies and a location, you can\n"
@@ -3300,9 +3629,9 @@ void hugehelp(void)
 "        curl -L -b empty.txt www.example.com\n"
 "\n"
 "  The file to read cookies from must be formatted using plain HTTP headers OR\n"
 "        curl -L -b empty.txt www.example.com\n"
 "\n"
 "  The file to read cookies from must be formatted using plain HTTP headers OR\n"
-"  as netscape's cookie file. Curl will determine what kind it is based on the\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"  as netscape's cookie file. Curl will determine what kind it is based on the\n"
 "  file contents.  In the above command, curl will parse the header and store\n"
 "  the cookies received from www.example.com.  curl will send to the server the\n"
 "  stored cookies which match the request as it follows the location.  The\n"
 "  file contents.  In the above command, curl will parse the header and store\n"
 "  the cookies received from www.example.com.  curl will send to the server the\n"
 "  stored cookies which match the request as it follows the location.  The\n"
@@ -3311,12 +3640,12 @@ void hugehelp(void)
 "  Alas, to both read and write cookies from a netscape cookie file, you can\n"
 "  set both -b and -c to use the same file:\n"
 "\n"
 "  Alas, to both read and write cookies from a netscape cookie file, you can\n"
 "  set both -b and -c to use the same file:\n"
 "\n"
+, stdout);
+ fputs(
 "        curl -b cookies.txt -c cookies.txt www.example.com\n"
 "\n"
 "PROGRESS METER\n"
 "\n"
 "        curl -b cookies.txt -c cookies.txt www.example.com\n"
 "\n"
 "PROGRESS METER\n"
 "\n"
-, stdout);
- fputs(
 "  The progress meter exists to show a user that something actually is\n"
 "  happening. The different fields in the output have the following meaning:\n"
 "\n"
 "  The progress meter exists to show a user that something actually is\n"
 "  happening. The different fields in the output have the following meaning:\n"
 "\n"
@@ -3325,9 +3654,9 @@ void hugehelp(void)
 "  0  151M    0 38608    0     0   9406      0  4:41:43  0:00:04  4:41:39  9287\n"
 "\n"
 "  From left-to-right:\n"
 "  0  151M    0 38608    0     0   9406      0  4:41:43  0:00:04  4:41:39  9287\n"
 "\n"
 "  From left-to-right:\n"
-"   %             - percentage completed of the whole transfer\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"   %             - percentage completed of the whole transfer\n"
 "   Total         - total size of the whole expected transfer\n"
 "   %             - percentage completed of the download\n"
 "   Received      - currently downloaded amount of bytes\n"
 "   Total         - total size of the whole expected transfer\n"
 "   %             - percentage completed of the download\n"
 "   Received      - currently downloaded amount of bytes\n"
@@ -3337,9 +3666,9 @@ void hugehelp(void)
 "   Dload         - the average transfer speed of the download\n"
 "   Average Speed\n"
 "   Upload        - the average transfer speed of the upload\n"
 "   Dload         - the average transfer speed of the download\n"
 "   Average Speed\n"
 "   Upload        - the average transfer speed of the upload\n"
-"   Time Total    - expected time to complete the operation\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"   Time Total    - expected time to complete the operation\n"
 "   Time Current  - time passed since the invoke\n"
 "   Time Left     - expected time left to completion\n"
 "   Curr.Speed    - the average transfer speed the last 5 seconds (the first\n"
 "   Time Current  - time passed since the invoke\n"
 "   Time Left     - expected time left to completion\n"
 "   Curr.Speed    - the average transfer speed the last 5 seconds (the first\n"
@@ -3350,9 +3679,9 @@ void hugehelp(void)
 "\n"
 "SPEED LIMIT\n"
 "\n"
 "\n"
 "SPEED LIMIT\n"
 "\n"
-"  Curl allows the user to set the transfer speed conditions that must be met\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"  Curl allows the user to set the transfer speed conditions that must be met\n"
 "  to let the transfer keep going. By using the switch -y and -Y you\n"
 "  can make curl abort transfers if the transfer speed is below the specified\n"
 "  lowest limit for a specified time.\n"
 "  to let the transfer keep going. By using the switch -y and -Y you\n"
 "  can make curl abort transfers if the transfer speed is below the specified\n"
 "  lowest limit for a specified time.\n"
@@ -3363,10 +3692,10 @@ void hugehelp(void)
 "        curl -Y 3000 -y 60 www.far-away-site.com\n"
 "\n"
 "  This can very well be used in combination with the overall time limit, so\n"
 "        curl -Y 3000 -y 60 www.far-away-site.com\n"
 "\n"
 "  This can very well be used in combination with the overall time limit, so\n"
-"  that the above operation must be completed in whole within 30 minutes:\n"
-"\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"  that the above operation must be completed in whole within 30 minutes:\n"
+"\n"
 "        curl -m 1800 -Y 3000 -y 60 www.far-away-site.com\n"
 "\n"
 "  Forcing curl not to transfer data faster than a given rate is also possible,\n"
 "        curl -m 1800 -Y 3000 -y 60 www.far-away-site.com\n"
 "\n"
 "  Forcing curl not to transfer data faster than a given rate is also possible,\n"
@@ -3376,14 +3705,14 @@ void hugehelp(void)
 "\n"
 "  Make curl transfer data no faster than 10 kilobytes per second:\n"
 "\n"
 "\n"
 "  Make curl transfer data no faster than 10 kilobytes per second:\n"
 "\n"
+, stdout);
+ fputs(
 "        curl --limit-rate 10K www.far-away-site.com\n"
 "\n"
 "    or\n"
 "\n"
 "        curl --limit-rate 10240 www.far-away-site.com\n"
 "\n"
 "        curl --limit-rate 10K www.far-away-site.com\n"
 "\n"
 "    or\n"
 "\n"
 "        curl --limit-rate 10240 www.far-away-site.com\n"
 "\n"
-, stdout);
- fputs(
 "  Or prevent curl from uploading data faster than 1 megabyte per second:\n"
 "\n"
 "        curl -T upload --limit-rate 1M ftp://uploadshereplease.com\n"
 "  Or prevent curl from uploading data faster than 1 megabyte per second:\n"
 "\n"
 "        curl -T upload --limit-rate 1M ftp://uploadshereplease.com\n"
@@ -3391,24 +3720,24 @@ void hugehelp(void)
 "  When using the --limit-rate option, the transfer rate is regulated on a\n"
 "  per-second basis, which will cause the total transfer speed to become lower\n"
 "  than the given number. Sometimes of course substantially lower, if your\n"
 "  When using the --limit-rate option, the transfer rate is regulated on a\n"
 "  per-second basis, which will cause the total transfer speed to become lower\n"
 "  than the given number. Sometimes of course substantially lower, if your\n"
+, stdout);
+ fputs(
 "  transfer stalls during periods.\n"
 "\n"
 "CONFIG FILE\n"
 "\n"
 "  Curl automatically tries to read the .curlrc file (or _curlrc file on win32\n"
 "  transfer stalls during periods.\n"
 "\n"
 "CONFIG FILE\n"
 "\n"
 "  Curl automatically tries to read the .curlrc file (or _curlrc file on win32\n"
-, stdout);
- fputs(
 "  systems) from the user's home dir on startup.\n"
 "\n"
 "  The config file could be made up with normal command line switches, but you\n"
 "  can also specify the long options without the dashes to make it more\n"
 "  readable. You can separate the options and the parameter with spaces, or\n"
 "  with = or :. Comments can be used within the file. If the first letter on a\n"
 "  systems) from the user's home dir on startup.\n"
 "\n"
 "  The config file could be made up with normal command line switches, but you\n"
 "  can also specify the long options without the dashes to make it more\n"
 "  readable. You can separate the options and the parameter with spaces, or\n"
 "  with = or :. Comments can be used within the file. If the first letter on a\n"
+, stdout);
+ fputs(
 "  line is a '#'-symbol the rest of the line is treated as a comment.\n"
 "\n"
 "  If you want the parameter to contain spaces, you must enclose the entire\n"
 "  line is a '#'-symbol the rest of the line is treated as a comment.\n"
 "\n"
 "  If you want the parameter to contain spaces, you must enclose the entire\n"
-, stdout);
- fputs(
 "  parameter within double quotes (\"). Within those quotes, you specify a\n"
 "  quote as \\\".\n"
 "\n"
 "  parameter within double quotes (\"). Within those quotes, you specify a\n"
 "  quote as \\\".\n"
 "\n"
@@ -3419,11 +3748,11 @@ void hugehelp(void)
 "        # We want a 30 minute timeout:\n"
 "        -m 1800\n"
 "        # ... and we use a proxy for all accesses:\n"
 "        # We want a 30 minute timeout:\n"
 "        -m 1800\n"
 "        # ... and we use a proxy for all accesses:\n"
+, stdout);
+ fputs(
 "        proxy = proxy.our.domain.com:8080\n"
 "\n"
 "  White spaces ARE significant at the end of lines, but all white spaces\n"
 "        proxy = proxy.our.domain.com:8080\n"
 "\n"
 "  White spaces ARE significant at the end of lines, but all white spaces\n"
-, stdout);
- fputs(
 "  leading up to the first characters of each line are ignored.\n"
 "\n"
 "  Prevent curl from reading the default file by using -q as the first command\n"
 "  leading up to the first characters of each line are ignored.\n"
 "\n"
 "  Prevent curl from reading the default file by using -q as the first command\n"
@@ -3435,11 +3764,11 @@ void hugehelp(void)
 "  without URL by making a config file similar to:\n"
 "\n"
 "        # default url to get\n"
 "  without URL by making a config file similar to:\n"
 "\n"
 "        # default url to get\n"
+, stdout);
+ fputs(
 "        url = \"http://help.with.curl.com/curlhelp.html\"\n"
 "\n"
 "  You can specify another config file to be read by using the -K/--config\n"
 "        url = \"http://help.with.curl.com/curlhelp.html\"\n"
 "\n"
 "  You can specify another config file to be read by using the -K/--config\n"
-, stdout);
- fputs(
 "  flag. If you set config file name to \"-\" it'll read the config from stdin,\n"
 "  which can be handy if you want to hide options from being visible in process\n"
 "  tables etc:\n"
 "  flag. If you set config file name to \"-\" it'll read the config from stdin,\n"
 "  which can be handy if you want to hide options from being visible in process\n"
 "  tables etc:\n"
@@ -3449,11 +3778,11 @@ void hugehelp(void)
 "EXTRA HEADERS\n"
 "\n"
 "  When using curl in your own very special programs, you may end up needing\n"
 "EXTRA HEADERS\n"
 "\n"
 "  When using curl in your own very special programs, you may end up needing\n"
+, stdout);
+ fputs(
 "  to pass on your own custom headers when getting a web page. You can do\n"
 "  this by using the -H flag.\n"
 "\n"
 "  to pass on your own custom headers when getting a web page. You can do\n"
 "  this by using the -H flag.\n"
 "\n"
-, stdout);
- fputs(
 "  Example, send the header \"X-you-and-me: yes\" to the server when getting a\n"
 "  page:\n"
 "\n"
 "  Example, send the header \"X-you-and-me: yes\" to the server when getting a\n"
 "  page:\n"
 "\n"
@@ -3462,11 +3791,11 @@ void hugehelp(void)
 "  This can also be useful in case you want curl to send a different text in a\n"
 "  header than it normally does. The -H header you specify then replaces the\n"
 "  header curl would normally send. If you replace an internal header with an\n"
 "  This can also be useful in case you want curl to send a different text in a\n"
 "  header than it normally does. The -H header you specify then replaces the\n"
 "  header curl would normally send. If you replace an internal header with an\n"
+, stdout);
+ fputs(
 "  empty one, you prevent that header from being sent. To prevent the Host:\n"
 "  header from being used:\n"
 "\n"
 "  empty one, you prevent that header from being sent. To prevent the Host:\n"
 "  header from being used:\n"
 "\n"
-, stdout);
- fputs(
 "        curl -H \"Host:\" www.server.com\n"
 "\n"
 "FTP and PATH NAMES\n"
 "        curl -H \"Host:\" www.server.com\n"
 "\n"
 "FTP and PATH NAMES\n"
@@ -3478,12 +3807,12 @@ void hugehelp(void)
 "        curl ftp://user:passwd@my.site.com/README\n"
 "\n"
 "  But if you want the README file from the root directory of that very same\n"
 "        curl ftp://user:passwd@my.site.com/README\n"
 "\n"
 "  But if you want the README file from the root directory of that very same\n"
+, stdout);
+ fputs(
 "  site, you need to specify the absolute file name:\n"
 "\n"
 "        curl ftp://user:passwd@my.site.com//README\n"
 "\n"
 "  site, you need to specify the absolute file name:\n"
 "\n"
 "        curl ftp://user:passwd@my.site.com//README\n"
 "\n"
-, stdout);
- fputs(
 "  (I.e with an extra slash in front of the file name.)\n"
 "\n"
 "SFTP and SCP and PATH NAMES\n"
 "  (I.e with an extra slash in front of the file name.)\n"
 "\n"
 "SFTP and SCP and PATH NAMES\n"
@@ -3496,9 +3825,9 @@ void hugehelp(void)
 "\n"
 "FTP and firewalls\n"
 "\n"
 "\n"
 "FTP and firewalls\n"
 "\n"
-"  The FTP protocol requires one of the involved parties to open a second\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"  The FTP protocol requires one of the involved parties to open a second\n"
 "  connection as soon as data is about to get transferred. There are two ways to\n"
 "  do this.\n"
 "\n"
 "  connection as soon as data is about to get transferred. There are two ways to\n"
 "  do this.\n"
 "\n"
@@ -3509,9 +3838,9 @@ void hugehelp(void)
 "\n"
 "        curl ftp.download.com\n"
 "\n"
 "\n"
 "        curl ftp.download.com\n"
 "\n"
-"  If the server, for example, is behind a firewall that doesn't allow connections\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"  If the server, for example, is behind a firewall that doesn't allow connections\n"
 "  on ports other than 21 (or if it just doesn't support the PASV command), the\n"
 "  other way to do it is to use the PORT command and instruct the server to\n"
 "  connect to the client on the given IP number and port (as parameters to the\n"
 "  on ports other than 21 (or if it just doesn't support the PASV command), the\n"
 "  other way to do it is to use the PORT command and instruct the server to\n"
 "  connect to the client on the given IP number and port (as parameters to the\n"
@@ -3519,10 +3848,10 @@ void hugehelp(void)
 "\n"
 "  The -P flag to curl supports a few different options. Your machine may have\n"
 "  several IP-addresses and/or network interfaces and curl allows you to select\n"
 "\n"
 "  The -P flag to curl supports a few different options. Your machine may have\n"
 "  several IP-addresses and/or network interfaces and curl allows you to select\n"
-"  which of them to use. Default address can also be used:\n"
-"\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"  which of them to use. Default address can also be used:\n"
+"\n"
 "        curl -P - ftp.download.com\n"
 "\n"
 "  Download with PORT but use the IP address of our 'le0' interface (this does\n"
 "        curl -P - ftp.download.com\n"
 "\n"
 "  Download with PORT but use the IP address of our 'le0' interface (this does\n"
@@ -3538,12 +3867,12 @@ void hugehelp(void)
 "\n"
 "  Get a web page from a server using a specified port for the interface:\n"
 "\n"
 "\n"
 "  Get a web page from a server using a specified port for the interface:\n"
 "\n"
+, stdout);
+ fputs(
 "        curl --interface eth0:1 http://www.netscape.com/\n"
 "\n"
 "  or\n"
 "\n"
 "        curl --interface eth0:1 http://www.netscape.com/\n"
 "\n"
 "  or\n"
 "\n"
-, stdout);
- fputs(
 "        curl --interface 192.168.1.10 http://www.netscape.com/\n"
 "\n"
 "HTTPS\n"
 "        curl --interface 192.168.1.10 http://www.netscape.com/\n"
 "\n"
 "HTTPS\n"
@@ -3557,17 +3886,17 @@ void hugehelp(void)
 "        curl https://www.secure-site.com\n"
 "\n"
 "  Curl is also capable of using your personal certificates to get/post files\n"
 "        curl https://www.secure-site.com\n"
 "\n"
 "  Curl is also capable of using your personal certificates to get/post files\n"
-"  from sites that require valid certificates. The only drawback is that the\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"  from sites that require valid certificates. The only drawback is that the\n"
 "  certificate needs to be in PEM-format. PEM is a standard and open format to\n"
 "  store certificates with, but it is not used by the most commonly used\n"
 "  browsers (Netscape and MSIE both use the so called PKCS#12 format). If you\n"
 "  want curl to use the certificates you use with your (favourite) browser, you\n"
 "  may need to download/compile a converter that can convert your browser's\n"
 "  certificate needs to be in PEM-format. PEM is a standard and open format to\n"
 "  store certificates with, but it is not used by the most commonly used\n"
 "  browsers (Netscape and MSIE both use the so called PKCS#12 format). If you\n"
 "  want curl to use the certificates you use with your (favourite) browser, you\n"
 "  may need to download/compile a converter that can convert your browser's\n"
-"  formatted certificates to PEM formatted ones. This kind of converter is\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"  formatted certificates to PEM formatted ones. This kind of converter is\n"
 "  included in recent versions of OpenSSL, and for older versions Dr Stephen\n"
 "  N. Henson has written a patch for SSLeay that adds this functionality. You\n"
 "  can get his patch (that requires an SSLeay installation) from his site at:\n"
 "  included in recent versions of OpenSSL, and for older versions Dr Stephen\n"
 "  N. Henson has written a patch for SSLeay that adds this functionality. You\n"
 "  can get his patch (that requires an SSLeay installation) from his site at:\n"
@@ -3576,10 +3905,10 @@ void hugehelp(void)
 "  Example on how to automatically retrieve a document using a certificate with\n"
 "  a personal password:\n"
 "\n"
 "  Example on how to automatically retrieve a document using a certificate with\n"
 "  a personal password:\n"
 "\n"
-"        curl -E /path/to/cert.pem:password https://secure.site.com/\n"
-"\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"        curl -E /path/to/cert.pem:password https://secure.site.com/\n"
+"\n"
 "  If you neglect to specify the password on the command line, you will be\n"
 "  prompted for the correct password before any data can be received.\n"
 "\n"
 "  If you neglect to specify the password on the command line, you will be\n"
 "  prompted for the correct password before any data can be received.\n"
 "\n"
@@ -3588,10 +3917,10 @@ void hugehelp(void)
 "  SSL-version curl should use. Use -3, -2 or -1 to specify that exact SSL\n"
 "  version to use (for SSLv3, SSLv2 or TLSv1 respectively):\n"
 "\n"
 "  SSL-version curl should use. Use -3, -2 or -1 to specify that exact SSL\n"
 "  version to use (for SSLv3, SSLv2 or TLSv1 respectively):\n"
 "\n"
-"        curl -2 https://secure.site.com/\n"
-"\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"        curl -2 https://secure.site.com/\n"
+"\n"
 "  Otherwise, curl will first attempt to use v3 and then v2.\n"
 "\n"
 "  To use OpenSSL to convert your favourite browser's certificate into a PEM\n"
 "  Otherwise, curl will first attempt to use v3 and then v2.\n"
 "\n"
 "  To use OpenSSL to convert your favourite browser's certificate into a PEM\n"
@@ -3895,11 +4224,11 @@ void hugehelp(void)
 "  When this style is used, the -g option must be given to stop curl from\n"
 "  interpreting the square brackets as special globbing characters.  Link local\n"
 "  and site local addresses including a scope identifier, such as fe80::1234%1,\n"
 "  When this style is used, the -g option must be given to stop curl from\n"
 "  interpreting the square brackets as special globbing characters.  Link local\n"
 "  and site local addresses including a scope identifier, such as fe80::1234%1,\n"
-"  may also be used, but the scope portion must be numeric and the percent\n"
-"  character must be URL escaped. The previous example in an SFTP URL might\n"
+"  may also be used, but the scope portion must be numeric or match an existing\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
-"  look like:\n"
+"  network interface on Linux and the percent character must be URL escaped. The\n"
+"  previous example in an SFTP URL might look like:\n"
 "\n"
 "    sftp://[fe80::1234%251]/\n"
 "\n"
 "\n"
 "    sftp://[fe80::1234%251]/\n"
 "\n"
@@ -3910,9 +4239,9 @@ void hugehelp(void)
 "\n"
 "  Curl supports Metalink (both version 3 and 4 (RFC 5854) are supported), a way\n"
 "  to list multiple URIs and hashes for a file. Curl will make use of the mirrors\n"
 "\n"
 "  Curl supports Metalink (both version 3 and 4 (RFC 5854) are supported), a way\n"
 "  to list multiple URIs and hashes for a file. Curl will make use of the mirrors\n"
-"  listed within for failover if there are errors (such as the file or server not\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"  listed within for failover if there are errors (such as the file or server not\n"
 "  being available). It will also verify the hash of the file after the download\n"
 "  completes. The Metalink file itself is downloaded and processed in memory and\n"
 "  not stored in the local file system.\n"
 "  being available). It will also verify the hash of the file after the download\n"
 "  completes. The Metalink file itself is downloaded and processed in memory and\n"
 "  not stored in the local file system.\n"
@@ -3923,10 +4252,10 @@ void hugehelp(void)
 "\n"
 "  To use a Metalink file in the local file system, use FILE protocol (file://):\n"
 "\n"
 "\n"
 "  To use a Metalink file in the local file system, use FILE protocol (file://):\n"
 "\n"
-"    curl --metalink file://example.metalink\n"
-"\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"    curl --metalink file://example.metalink\n"
+"\n"
 "  Please note that if FILE protocol is disabled, there is no way to use a local\n"
 "  Metalink file at the time of this writing. Also note that if --metalink and\n"
 "  --include are used together, --include will be ignored. This is because including\n"
 "  Please note that if FILE protocol is disabled, there is no way to use a local\n"
 "  Metalink file at the time of this writing. Also note that if --metalink and\n"
 "  --include are used together, --include will be ignored. This is because including\n"
@@ -3935,9 +4264,9 @@ void hugehelp(void)
 "\n"
 "MAILING LISTS\n"
 "\n"
 "\n"
 "MAILING LISTS\n"
 "\n"
-"  For your convenience, we have several open mailing lists to discuss curl,\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"  For your convenience, we have several open mailing lists to discuss curl,\n"
 "  its development and things relevant to this. Get all info at\n"
 "  http://curl.haxx.se/mail/. Some of the lists available are:\n"
 "\n"
 "  its development and things relevant to this. Get all info at\n"
 "  http://curl.haxx.se/mail/. Some of the lists available are:\n"
 "\n"
@@ -3951,10 +4280,10 @@ void hugehelp(void)
 "\n"
 "    Developers using or developing libcurl. Bugs, extensions, improvements.\n"
 "\n"
 "\n"
 "    Developers using or developing libcurl. Bugs, extensions, improvements.\n"
 "\n"
-"  curl-announce\n"
-"\n"
 , stdout);
  fputs(
 , stdout);
  fputs(
+"  curl-announce\n"
+"\n"
 "    Low-traffic. Only receives announcements of new public versions. At worst,\n"
 "    that makes something like one or two mails per month, but usually only one\n"
 "    mail every second month.\n"
 "    Low-traffic. Only receives announcements of new public versions. At worst,\n"
 "    that makes something like one or two mails per month, but usually only one\n"
 "    mail every second month.\n"
@@ -3974,11 +4303,15 @@ void hugehelp(void)
 "  these mailing lists instead of mailing any individual.\n"
 , stdout) ;
 }
 "  these mailing lists instead of mailing any individual.\n"
 , stdout) ;
 }
+#else /* !USE_MANUAL */
+/* built-in manual is disabled, blank function */
+#include "tool_hugehelp.h"
+void hugehelp(void) {}
 #endif /* USE_MANUAL */
 #else
 /*
  * NEVER EVER edit this manually, fix the mkhelp.pl script instead!
 #endif /* USE_MANUAL */
 #else
 /*
  * NEVER EVER edit this manually, fix the mkhelp.pl script instead!
- * Generation time: Mon Aug  5 13:11:08 2013
+ * Generation time: Sun Dec 28 14:36:38 2014
  */
 #ifdef USE_MANUAL
 #include "tool_hugehelp.h"
  */
 #ifdef USE_MANUAL
 #include "tool_hugehelp.h"
@@ -3986,3800 +4319,4089 @@ void hugehelp(void)
 #include "memdebug.h" /* keep this as LAST include */
 static const unsigned char hugehelpgz[] = {
   /* This mumbo-jumbo is the huge help text compressed with gzip.
 #include "memdebug.h" /* keep this as LAST include */
 static const unsigned char hugehelpgz[] = {
   /* This mumbo-jumbo is the huge help text compressed with gzip.
-     Thanks to this operation, the size of this data shrunk from 148877
-     to 45488 bytes. You can disable the use of compressed help
+     Thanks to this operation, the size of this data shrunk from 162028
+     to 48958 bytes. You can disable the use of compressed help
      texts by NOT passing -c to the mkhelp.pl tool. */
   0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0xed, 0xbd,
      texts by NOT passing -c to the mkhelp.pl tool. */
   0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0xed, 0xbd,
-  0xfd, 0x7b, 0xdb, 0x56, 0x92, 0x26, 0xfa, 0xbb, 0xfe, 0x0a, 0x0c, 0xfb,
-  0xf6, 0x48, 0x9a, 0x26, 0xa9, 0x0f, 0xdb, 0x49, 0xac, 0xb6, 0x33, 0x51,
-  0x64, 0x39, 0xd1, 0x46, 0xb6, 0xb4, 0xa2, 0x9c, 0xa4, 0x37, 0xc9, 0xe3,
-  0x07, 0x24, 0x21, 0x09, 0x2d, 0x92, 0x60, 0x03, 0xa0, 0x64, 0xf5, 0xec,
-  0xec, 0xdf, 0x7e, 0xab, 0xde, 0xaa, 0x3a, 0xe7, 0x00, 0x07, 0x94, 0x9d,
-  0x4c, 0xa7, 0xef, 0xde, 0x7d, 0xb6, 0x77, 0xc7, 0xb1, 0x25, 0xe0, 0xe0,
-  0x7c, 0xd6, 0xa9, 0x8f, 0xb7, 0xde, 0x4a, 0x92, 0x8f, 0xfd, 0xef, 0x3d,
-  0xfe, 0xef, 0x3d, 0xfd, 0x8f, 0xfe, 0xbb, 0x91, 0x24, 0xe7, 0x65, 0xf1,
-  0xd7, 0x6c, 0x52, 0x77, 0x3f, 0xfb, 0xfe, 0xfd, 0xff, 0x4c, 0xe4, 0xff,
-  0xd1, 0x3b, 0x3f, 0xd3, 0x7f, 0x37, 0x1e, 0x6d, 0x7b, 0x27, 0xf1, 0x2f,
-  0xfc, 0xcf, 0xf7, 0xdb, 0xc9, 0xc7, 0x5e, 0xf8, 0x9f, 0xc9, 0x16, 0x5e,
-  0x78, 0xaf, 0x5f, 0x78, 0xc1, 0x7f, 0x7f, 0xff, 0xfe, 0xf1, 0x8f, 0xfc,
-  0xcc, 0xbd, 0xe2, 0x3f, 0x76, 0xf8, 0xbd, 0x9f, 0xdf, 0xf3, 0x5f, 0xe9,
-  0x27, 0x1b, 0x1b, 0x6f, 0x0f, 0xdf, 0x1c, 0xdb, 0xab, 0x93, 0x55, 0x39,
-  0x4b, 0x06, 0x49, 0x5d, 0xa6, 0x8b, 0xea, 0x2a, 0x2b, 0x93, 0x34, 0x79,
-  0x77, 0x71, 0xba, 0xb1, 0x31, 0xfa, 0xcb, 0xdb, 0xb3, 0xf3, 0xd1, 0xc9,
-  0xa8, 0xf1, 0xd8, 0x4f, 0xc5, 0xb2, 0xce, 0x8b, 0x45, 0xf5, 0x4b, 0xf2,
-  0x13, 0x3d, 0x34, 0x1c, 0x0e, 0x7f, 0xd9, 0xd8, 0x78, 0x75, 0x3c, 0x3a,
-  0xba, 0x38, 0x39, 0xbf, 0x3c, 0x39, 0x7b, 0xdb, 0x78, 0x36, 0xc9, 0xab,
-  0x84, 0x1a, 0xab, 0x8b, 0x62, 0x46, 0x7f, 0xf8, 0xf6, 0xa7, 0x69, 0x9d,
-  0x26, 0x57, 0x65, 0x31, 0x4f, 0x8a, 0x92, 0x7f, 0x91, 0x26, 0x55, 0x56,
-  0xde, 0x65, 0x65, 0x3f, 0x59, 0x55, 0xf9, 0xe2, 0x3a, 0x29, 0x16, 0x59,
-  0x52, 0x5c, 0x25, 0xf5, 0x4d, 0x66, 0xcd, 0x55, 0xab, 0xe5, 0xb2, 0x28,
-  0xeb, 0x6c, 0x9a, 0x2c, 0xcb, 0xa2, 0x2e, 0x26, 0xc5, 0xac, 0x4a, 0xb6,
-  0x5e, 0x9d, 0x1c, 0x5d, 0xf6, 0x93, 0xd7, 0x27, 0xa7, 0xc7, 0xf4, 0xe7,
-  0xe5, 0x39, 0xfe, 0x18, 0xf5, 0x93, 0x6f, 0xce, 0xce, 0xbf, 0x3d, 0xbe,
-  0xe8, 0x27, 0xdf, 0x5e, 0xf2, 0xcf, 0xf8, 0x4f, 0xfa, 0x61, 0x72, 0xf2,
-  0xe6, 0xf0, 0xbc, 0x6f, 0xcd, 0xf1, 0x3f, 0xf8, 0x87, 0xa7, 0xaf, 0xe8,
-  0x87, 0xf2, 0x1f, 0xfe, 0xe7, 0xf9, 0xd9, 0xf9, 0x93, 0x3e, 0xfe, 0xa4,
-  0x7f, 0x5d, 0x5c, 0xbe, 0x39, 0xe7, 0x3f, 0x47, 0xf4, 0xe7, 0xe8, 0x88,
-  0xff, 0xc0, 0x37, 0x46, 0x6f, 0xec, 0xcf, 0x91, 0x6b, 0xee, 0xf2, 0xf8,
-  0xf4, 0xed, 0xf1, 0x65, 0x92, 0x2e, 0xa6, 0xc9, 0x25, 0x3d, 0xb4, 0x3d,
-  0xa4, 0x1f, 0xdd, 0x64, 0xc9, 0xa4, 0x98, 0xcf, 0xf9, 0x67, 0x34, 0x0b,
-  0xd3, 0xac, 0xca, 0xaf, 0x17, 0xd4, 0x7d, 0x1a, 0xed, 0x7d, 0x51, 0xde,
-  0x26, 0xf7, 0x79, 0x7d, 0x53, 0xac, 0x6a, 0x1a, 0x30, 0xcd, 0x47, 0x92,
-  0x2f, 0xea, 0xac, 0x1c, 0x58, 0x73, 0xe9, 0x84, 0x67, 0x78, 0xb8, 0xd1,
-  0x98, 0xcb, 0xe2, 0x8a, 0x66, 0xae, 0xa2, 0xa9, 0x1a, 0xaf, 0xaa, 0x59,
-  0x91, 0x4e, 0x79, 0x82, 0xe8, 0xe5, 0xab, 0x15, 0x4d, 0x6d, 0x99, 0x4f,
-  0x6e, 0xab, 0x64, 0x96, 0xdf, 0x66, 0x3c, 0x3d, 0x1f, 0x1e, 0x6c, 0xba,
-  0xfa, 0xd2, 0x7c, 0xba, 0xa2, 0x99, 0x5c, 0xb8, 0xe6, 0xeb, 0x7c, 0x92,
-  0xf2, 0x07, 0x30, 0x5f, 0xc9, 0x6a, 0xc9, 0xad, 0xc9, 0x3c, 0x25, 0xcb,
-  0xa2, 0xa2, 0x97, 0x46, 0xa3, 0x53, 0xea, 0xfb, 0x62, 0x91, 0xa1, 0x1f,
-  0x55, 0x9f, 0xfe, 0x51, 0xdc, 0xe6, 0x19, 0xfd, 0xe5, 0x2a, 0x9f, 0x65,
-  0x89, 0xac, 0xa3, 0x6b, 0x8e, 0x17, 0x34, 0x29, 0xb3, 0x6a, 0x35, 0xcf,
-  0x68, 0x0a, 0xdf, 0x64, 0x75, 0x3a, 0xcb, 0x17, 0xb7, 0xf4, 0x57, 0x1e,
-  0xfa, 0xbc, 0x28, 0xb3, 0x61, 0x72, 0x58, 0x25, 0x0f, 0xc5, 0x8a, 0xc6,
-  0x3c, 0x9b, 0xd1, 0x4a, 0x67, 0xc9, 0x38, 0x9b, 0x15, 0xf7, 0x7d, 0x5e,
-  0xdf, 0x64, 0xb1, 0x9a, 0x8f, 0xa9, 0x81, 0xe2, 0xca, 0x37, 0x97, 0xd6,
-  0x2b, 0x6a, 0x4e, 0x9e, 0x9e, 0xa7, 0x34, 0x26, 0x7a, 0xb7, 0x4c, 0x6e,
-  0x32, 0x1a, 0x73, 0xb5, 0xcc, 0x17, 0xff, 0xd2, 0x9c, 0x17, 0x9a, 0xdc,
-  0x65, 0x71, 0x9f, 0x95, 0x34, 0xb7, 0xe3, 0x87, 0x84, 0x26, 0x61, 0x2c,
-  0x5b, 0xef, 0x8a, 0xb6, 0x56, 0x92, 0x52, 0x13, 0x6e, 0xdb, 0x0d, 0xca,
-  0x6c, 0x96, 0xf2, 0x16, 0x72, 0xdf, 0xa0, 0x75, 0x1a, 0x65, 0x6e, 0x8f,
-  0xe9, 0xab, 0x5b, 0x4f, 0xb6, 0xf1, 0xf2, 0x94, 0x46, 0x92, 0xcf, 0x2a,
-  0x5a, 0x06, 0x3e, 0x0c, 0xb6, 0xd2, 0xd4, 0x65, 0x3e, 0x1c, 0xb4, 0x23,
-  0x1f, 0x16, 0x75, 0xfa, 0x01, 0x9f, 0xd7, 0x1d, 0x39, 0x98, 0x66, 0xcb,
-  0x6c, 0x31, 0xcd, 0x16, 0xf5, 0x30, 0xf9, 0x4b, 0xb1, 0xda, 0xa4, 0x6f,
-  0x5f, 0xe5, 0x34, 0x07, 0xa9, 0x36, 0x45, 0x5f, 0xa6, 0x6d, 0x30, 0x29,
-  0xf3, 0x65, 0xb0, 0x14, 0xc5, 0x82, 0x16, 0x3f, 0xb9, 0x78, 0x7d, 0x94,
-  0x3c, 0x79, 0xfe, 0xc5, 0x67, 0x7e, 0xcd, 0xa9, 0x81, 0x64, 0x92, 0x2e,
-  0x68, 0xc4, 0xd9, 0x24, 0xbf, 0x7a, 0x48, 0xe6, 0xab, 0x59, 0x9d, 0x2f,
-  0x69, 0xf6, 0xe9, 0xe3, 0x15, 0x1f, 0x9b, 0x65, 0x5a, 0xd6, 0x15, 0x6f,
-  0x02, 0xfc, 0x00, 0x63, 0xbf, 0x2f, 0xf3, 0x9a, 0x8f, 0x0f, 0x7e, 0x47,
-  0x3d, 0xcc, 0xea, 0xca, 0x9a, 0xe3, 0xed, 0x46, 0xdf, 0x19, 0x97, 0xe9,
-  0x84, 0xa6, 0x36, 0xad, 0xe8, 0xa3, 0x07, 0xee, 0x5b, 0xc9, 0x4d, 0x5d,
-  0x2f, 0x0f, 0x76, 0x76, 0xaa, 0xbc, 0xce, 0x86, 0xff, 0x41, 0x87, 0xaf,
-  0x5f, 0xdf, 0x17, 0xfd, 0xfa, 0xa6, 0xcc, 0xb2, 0xff, 0x1c, 0xd2, 0x26,
-  0x76, 0x0f, 0xd2, 0x67, 0x1f, 0xb4, 0x5f, 0xd7, 0x59, 0x4d, 0x1f, 0xf8,
-  0xdb, 0x2a, 0x5b, 0x70, 0x83, 0xd4, 0x8d, 0x74, 0xb6, 0xbc, 0x49, 0x69,
-  0x35, 0x33, 0xda, 0x8c, 0x7c, 0x9c, 0x69, 0xbf, 0x70, 0xa7, 0xe4, 0x40,
-  0xff, 0xf4, 0x4b, 0xf4, 0xcd, 0x2b, 0x7c, 0x92, 0xfe, 0x1c, 0xea, 0x4b,
-  0x29, 0xcd, 0x35, 0x7d, 0x6c, 0x87, 0xf7, 0xd8, 0x4f, 0x7b, 0x83, 0xbd,
-  0xdd, 0xdd, 0x5f, 0x86, 0xf5, 0x87, 0xfa, 0x13, 0x5f, 0xd8, 0xdd, 0xf5,
-  0xaf, 0xf0, 0xd3, 0x5b, 0x3c, 0xe2, 0x64, 0x46, 0x9b, 0x86, 0xbf, 0xff,
-  0xf7, 0xac, 0x2c, 0xaa, 0xed, 0x8e, 0xa6, 0x66, 0x59, 0x4d, 0x27, 0x2f,
-  0x68, 0x27, 0x1d, 0xfc, 0x5d, 0x3e, 0x6b, 0x0f, 0xbf, 0xcd, 0x2a, 0xec,
-  0x19, 0x3f, 0xd8, 0x24, 0x2d, 0x69, 0xdf, 0x16, 0xb5, 0x17, 0x4a, 0x7d,
-  0x3a, 0x94, 0xb5, 0x9b, 0x1a, 0x3a, 0x73, 0xf4, 0x34, 0x89, 0xb3, 0x74,
-  0xc6, 0x92, 0xac, 0x4a, 0x16, 0x99, 0x1f, 0x06, 0x9d, 0xff, 0x2c, 0x9d,
-  0xdc, 0x24, 0x05, 0x6d, 0xfe, 0x32, 0x5e, 0x82, 0x74, 0xf1, 0x30, 0x2c,
-  0xca, 0xeb, 0x9d, 0xb4, 0x9c, 0xdc, 0xe4, 0x77, 0x34, 0x0f, 0xcf, 0x9f,
-  0x7f, 0x36, 0xa0, 0x3f, 0x9e, 0xff, 0xb2, 0x73, 0x57, 0xcc, 0x68, 0x5a,
-  0x9e, 0xfe, 0xb2, 0xc3, 0xab, 0xfb, 0x1f, 0x69, 0x7f, 0xdc, 0x9f, 0xfc,
-  0xe7, 0xf0, 0xa6, 0x9e, 0xcf, 0xd6, 0xee, 0x19, 0x6a, 0x2c, 0x49, 0xe7,
-  0xc5, 0x6a, 0x51, 0xbb, 0x7d, 0x42, 0xdb, 0xad, 0x0e, 0x24, 0x13, 0x9d,
-  0xd4, 0x4c, 0x84, 0x15, 0x6f, 0x1f, 0x3e, 0x70, 0x74, 0x36, 0xfd, 0x49,
-  0xac, 0x27, 0x37, 0x34, 0x74, 0xda, 0x37, 0xa9, 0x0e, 0xbf, 0xce, 0x53,
-  0x3e, 0x93, 0x24, 0x1a, 0x4a, 0xfe, 0x31, 0x37, 0x25, 0x1f, 0xcb, 0xe9,
-  0xb9, 0xa2, 0x9c, 0x66, 0x65, 0x73, 0x07, 0xa3, 0x3b, 0xbe, 0x3f, 0x09,
-  0x4d, 0xe5, 0x92, 0x3e, 0xbe, 0x62, 0x71, 0x87, 0x43, 0xc6, 0x2d, 0xd0,
-  0xf1, 0xbc, 0xa6, 0x59, 0xa2, 0x99, 0xe1, 0x4d, 0xc5, 0x13, 0xf7, 0x90,
-  0xbc, 0xa5, 0xc5, 0x13, 0xd1, 0x10, 0xec, 0x3d, 0x59, 0xac, 0x78, 0xd2,
-  0xee, 0xef, 0xef, 0xd7, 0x6f, 0xa2, 0x83, 0xbd, 0xd6, 0x3e, 0x0a, 0x5e,
-  0xea, 0x5a, 0xfd, 0x83, 0xfd, 0xe6, 0xfa, 0x9f, 0x5c, 0x61, 0x61, 0x6d,
-  0x0c, 0x7c, 0xf6, 0x4d, 0x76, 0xdb, 0xc1, 0xa7, 0xd6, 0xe8, 0xef, 0xd9,
-  0x55, 0xfe, 0xa1, 0x6f, 0x17, 0x9f, 0xcc, 0x65, 0x4a, 0xcd, 0xcf, 0x97,
-  0x35, 0xaf, 0xba, 0x35, 0x77, 0xbd, 0xca, 0x2a, 0xda, 0x42, 0xf7, 0x37,
-  0x29, 0xfd, 0xd8, 0x1a, 0x48, 0xf0, 0x89, 0x79, 0x7e, 0x7d, 0x53, 0x27,
-  0xf7, 0x29, 0xcb, 0x8f, 0x93, 0x5a, 0x9a, 0x60, 0xc1, 0x4d, 0x52, 0xe3,
-  0x2a, 0xa5, 0xe3, 0xcf, 0x33, 0x04, 0x29, 0x4d, 0x9b, 0xcd, 0x6d, 0x27,
-  0x9a, 0x2b, 0x6c, 0xa5, 0xe0, 0x5e, 0x1c, 0xa7, 0x15, 0xaf, 0xc6, 0x82,
-  0x16, 0xbd, 0x26, 0xb1, 0xbf, 0xe2, 0x7f, 0xdd, 0x90, 0x60, 0x4f, 0x16,
-  0xe9, 0x3c, 0xd3, 0x8e, 0x42, 0xf6, 0xbd, 0x66, 0x11, 0x99, 0x7d, 0x48,
-  0xe7, 0x4e, 0x1e, 0x91, 0x80, 0xe9, 0xab, 0xe8, 0x74, 0x6f, 0x54, 0xb4,
-  0x6a, 0xb4, 0xe3, 0xf8, 0x18, 0xe1, 0x4c, 0xf5, 0xf8, 0xdc, 0xf4, 0x64,
-  0x9c, 0xe8, 0x63, 0x5a, 0xb1, 0xec, 0x17, 0x09, 0x4f, 0x9d, 0x0f, 0x06,
-  0x4b, 0x93, 0x96, 0xde, 0xf2, 0x2d, 0xd3, 0xba, 0xcb, 0xf0, 0xda, 0xb4,
-  0x48, 0x72, 0x92, 0x60, 0x63, 0x3a, 0x5f, 0x3c, 0x32, 0x3e, 0x35, 0x98,
-  0x15, 0x6e, 0x67, 0x49, 0x6d, 0xf2, 0x0f, 0xf3, 0x9a, 0xe5, 0x06, 0xd4,
-  0x11, 0xea, 0x2f, 0x4d, 0x0a, 0x34, 0x0a, 0x3a, 0x7b, 0xc1, 0xf8, 0x21,
-  0xf1, 0xe8, 0xd9, 0xe4, 0x8e, 0x2e, 0x1e, 0xd2, 0x2c, 0x32, 0xf7, 0x16,
-  0x44, 0xf4, 0x84, 0xaf, 0xbb, 0xd9, 0xec, 0x81, 0xb6, 0x5d, 0x59, 0xb2,
-  0xea, 0xc6, 0x2b, 0x38, 0x96, 0xc3, 0x31, 0xcf, 0xe8, 0x66, 0x08, 0xa7,
-  0x33, 0x67, 0x21, 0x45, 0x9b, 0x94, 0xae, 0x1a, 0x6c, 0x43, 0xba, 0x12,
-  0x70, 0x8c, 0x31, 0x70, 0xf4, 0x8e, 0xdb, 0x9e, 0x4c, 0xb2, 0x65, 0x5d,
-  0x75, 0x8d, 0xc9, 0x16, 0x9c, 0xba, 0x53, 0x66, 0x3c, 0xf3, 0xe1, 0x3d,
-  0x8a, 0x79, 0x75, 0x72, 0x1c, 0x57, 0xa9, 0x5d, 0x4d, 0x74, 0xb5, 0x56,
-  0x6e, 0xd6, 0x6a, 0xec, 0x0d, 0x3a, 0x0b, 0x98, 0xf3, 0x39, 0x77, 0x94,
-  0x1f, 0xae, 0x44, 0x63, 0xc2, 0x99, 0xe3, 0x85, 0x14, 0x95, 0x49, 0xbe,
-  0xcb, 0xd2, 0x88, 0xe6, 0xd3, 0x35, 0x4e, 0x5f, 0x75, 0x6b, 0xca, 0x9f,
-  0xaf, 0x48, 0xd9, 0x24, 0xe9, 0x3c, 0xad, 0x6e, 0xe8, 0x3e, 0xa5, 0xa5,
-  0xbf, 0xbc, 0xe1, 0x91, 0xce, 0x69, 0xcf, 0xdc, 0xf1, 0xfa, 0x2e, 0xb3,
-  0x6c, 0x3a, 0x4c, 0xce, 0xae, 0xf8, 0x68, 0x96, 0xd4, 0xe9, 0x1a, 0xbf,
-  0x66, 0x69, 0x41, 0xf3, 0x36, 0x85, 0x36, 0xb6, 0x70, 0x52, 0x01, 0x5d,
-  0x09, 0x8e, 0x3d, 0xef, 0x34, 0x9a, 0xec, 0x84, 0x05, 0xfd, 0xac, 0x29,
-  0x5a, 0xa0, 0x02, 0x90, 0x08, 0xe0, 0xee, 0x8d, 0xb3, 0x04, 0x3b, 0x71,
-  0x9c, 0xd5, 0xf7, 0x59, 0xe6, 0x9a, 0xab, 0x32, 0x12, 0x67, 0xbc, 0x68,
-  0x72, 0x99, 0x2f, 0xee, 0x0a, 0xee, 0xe0, 0xc6, 0xc6, 0xf9, 0xc5, 0xd9,
-  0x37, 0x17, 0xc7, 0xa3, 0x51, 0xf2, 0xe6, 0xf8, 0xf2, 0xf8, 0xa2, 0x31,
-  0xd3, 0x8b, 0xa2, 0x9c, 0x63, 0x45, 0xa7, 0x79, 0xb5, 0x9c, 0xa5, 0x0f,
-  0xbc, 0xd4, 0x34, 0x92, 0xeb, 0x92, 0x4f, 0xd6, 0x3c, 0x63, 0xd1, 0x32,
-  0x5d, 0x95, 0xd8, 0x16, 0xc5, 0x92, 0x96, 0x4f, 0x95, 0x18, 0x6a, 0x7c,
-  0x0a, 0xcd, 0x67, 0x71, 0xed, 0x67, 0x9a, 0x6e, 0x73, 0x95, 0x90, 0x2c,
-  0x22, 0xdd, 0x7a, 0xb0, 0x36, 0x01, 0x2d, 0xb5, 0xef, 0x7f, 0x26, 0xd3,
-  0x54, 0x61, 0x4c, 0xb4, 0x67, 0xf3, 0x39, 0x74, 0x09, 0xfa, 0xaf, 0x57,
-  0x20, 0xb2, 0x2b, 0xd2, 0x9e, 0x48, 0x6a, 0xb6, 0xb6, 0x86, 0xeb, 0x27,
-  0xe6, 0x15, 0xca, 0x2f, 0x6b, 0xc3, 0xf4, 0x71, 0xea, 0xeb, 0x3c, 0x5f,
-  0xd0, 0x06, 0xa3, 0x0d, 0xa9, 0xa7, 0x9c, 0x77, 0x02, 0xf5, 0xf5, 0x4a,
-  0x64, 0x82, 0xce, 0x48, 0x53, 0xab, 0xa6, 0x97, 0x69, 0xb1, 0x49, 0xb2,
-  0xba, 0xe1, 0xa1, 0x53, 0xb4, 0x35, 0xa9, 0xf9, 0x74, 0xcc, 0xa2, 0x89,
-  0xd5, 0x4c, 0xd2, 0x06, 0xb2, 0xce, 0xaf, 0x39, 0xbd, 0x95, 0xde, 0xa0,
-  0xbe, 0xa5, 0x63, 0x5e, 0x51, 0x7e, 0xa0, 0x35, 0x8b, 0x74, 0x88, 0x20,
-  0x5b, 0xee, 0xf3, 0x0a, 0x87, 0xea, 0xbe, 0x58, 0xcd, 0x48, 0xa5, 0xe3,
-  0x07, 0x56, 0x4b, 0xbc, 0x40, 0x9f, 0x5a, 0xfa, 0xd3, 0x33, 0xcf, 0x3f,
-  0xf0, 0xac, 0xb7, 0x5b, 0xa1, 0xae, 0xd1, 0x3f, 0x97, 0xb4, 0x08, 0xd2,
-  0x9d, 0x61, 0x5b, 0xb6, 0x42, 0x6a, 0x44, 0x6b, 0xc8, 0xa7, 0x05, 0xe2,
-  0xee, 0xfc, 0x6c, 0x74, 0xc9, 0xe2, 0xff, 0xfc, 0xdd, 0x25, 0x35, 0x44,
-  0xd7, 0x50, 0x55, 0xd3, 0x72, 0xf2, 0x8b, 0x8b, 0x0c, 0x1a, 0xb5, 0x35,
-  0x47, 0xab, 0x96, 0xe3, 0x88, 0xe3, 0x56, 0xb1, 0x4f, 0x4a, 0x1f, 0xc5,
-  0xcc, 0xe0, 0xcd, 0x6b, 0x46, 0x46, 0x75, 0x93, 0xb1, 0x8c, 0x76, 0x2f,
-  0x25, 0x5b, 0x5f, 0x6e, 0xd3, 0x72, 0x0f, 0x5c, 0x73, 0x3f, 0xf1, 0xd3,
-  0xbf, 0xf0, 0x97, 0xab, 0x7c, 0x9e, 0xcf, 0xd2, 0xe0, 0x6e, 0x53, 0x49,
-  0xc4, 0xfb, 0xda, 0x9d, 0xc7, 0x09, 0x89, 0x5d, 0x74, 0xda, 0x6b, 0xd5,
-  0x3c, 0x83, 0x38, 0xcd, 0x7e, 0xa1, 0xa6, 0x45, 0x26, 0xef, 0x91, 0x2a,
-  0xeb, 0x26, 0x8e, 0x57, 0x8c, 0x8f, 0x79, 0x63, 0x9a, 0xda, 0xab, 0x16,
-  0x4d, 0x1b, 0x4b, 0x72, 0x18, 0x6b, 0x6e, 0xe2, 0x7a, 0xe3, 0xb4, 0xec,
-  0x39, 0x09, 0x26, 0x16, 0x14, 0x35, 0x7a, 0xbd, 0xa2, 0xce, 0xcb, 0xac,
-  0xf6, 0x93, 0xc1, 0x1f, 0xb8, 0xe7, 0xac, 0x52, 0xbb, 0x13, 0x4d, 0xba,
-  0xda, 0x62, 0x3a, 0xdc, 0x38, 0x83, 0x01, 0xe7, 0xac, 0xbd, 0x13, 0x56,
-  0xf2, 0x16, 0x2c, 0xfe, 0xfa, 0xd0, 0xa3, 0xc7, 0x64, 0xc5, 0x65, 0xd8,
-  0x74, 0x22, 0xcd, 0x58, 0x0b, 0xca, 0x16, 0xbc, 0x79, 0xa6, 0x22, 0x1f,
-  0x07, 0x03, 0xf9, 0x15, 0x56, 0xfc, 0x81, 0xae, 0xf2, 0xf4, 0x3a, 0xcd,
-  0xdd, 0x41, 0xd7, 0x8d, 0xe6, 0x9e, 0x5d, 0x14, 0xfa, 0x38, 0x4b, 0x23,
-  0x16, 0xac, 0xba, 0xa6, 0x2b, 0xc8, 0x9f, 0x8c, 0xef, 0x25, 0x5a, 0x14,
-  0xcc, 0xac, 0x36, 0x8b, 0xdb, 0xc8, 0x9a, 0x1b, 0xe3, 0xfe, 0xe5, 0xab,
-  0x0c, 0x3b, 0x13, 0x17, 0x13, 0x35, 0xd9, 0x1b, 0x26, 0xdf, 0x92, 0x35,
-  0x00, 0x5b, 0x12, 0x0a, 0x4a, 0xce, 0x76, 0x11, 0xdd, 0x30, 0xf7, 0x19,
-  0xd9, 0x22, 0x55, 0x4d, 0x52, 0x03, 0x42, 0x0d, 0x3f, 0xa3, 0x7e, 0x3a,
-  0x31, 0x74, 0x53, 0xdc, 0xe3, 0xb3, 0x6e, 0x10, 0xd4, 0x44, 0x95, 0xe3,
-  0x12, 0xe5, 0x9f, 0xcf, 0x87, 0xc9, 0x16, 0x84, 0x26, 0x49, 0x56, 0x96,
-  0xfe, 0x7e, 0x14, 0x6e, 0x3e, 0x68, 0x1b, 0x3b, 0x75, 0x3b, 0x9d, 0x4e,
-  0x59, 0x82, 0x50, 0x0f, 0x92, 0xcf, 0x87, 0x7b, 0xcf, 0x87, 0xbb, 0x43,
-  0x76, 0x1d, 0x64, 0x77, 0x79, 0x41, 0xc6, 0x1b, 0xa9, 0x5a, 0xdc, 0x95,
-  0x24, 0x78, 0x93, 0xcc, 0x17, 0x3e, 0xd6, 0xd7, 0xd7, 0x33, 0x11, 0xa8,
-  0x3b, 0x64, 0xed, 0x05, 0x32, 0xb7, 0x24, 0xc3, 0x02, 0xd2, 0x86, 0x27,
-  0x47, 0x97, 0x55, 0xf6, 0x5c, 0x28, 0x6c, 0x75, 0x3a, 0xb7, 0xdd, 0x3e,
-  0x19, 0xfc, 0x81, 0x96, 0x7b, 0x60, 0xbb, 0x63, 0x40, 0x9b, 0xa3, 0xe5,
-  0x2b, 0x78, 0xc3, 0xd6, 0x55, 0x28, 0xa2, 0xfc, 0x56, 0x92, 0x0b, 0x94,
-  0xae, 0x88, 0x59, 0x20, 0x16, 0xa8, 0x85, 0xc4, 0x6d, 0xaf, 0xc0, 0x66,
-  0x0b, 0xc4, 0x29, 0xe9, 0x0a, 0x8b, 0x69, 0x5a, 0x92, 0x4a, 0xcc, 0xa6,
-  0x1f, 0x3d, 0x7c, 0xc5, 0xd2, 0x9a, 0x3b, 0xc6, 0xfb, 0x08, 0x7b, 0xd0,
-  0x6f, 0xe4, 0xc1, 0x2e, 0x77, 0x90, 0x15, 0xb2, 0xbd, 0xe1, 0x6e, 0xab,
-  0xb1, 0x2d, 0x3e, 0xfb, 0xdb, 0x50, 0x52, 0x58, 0xe9, 0x46, 0x2f, 0x59,
-  0x23, 0x20, 0x65, 0x23, 0x83, 0xe2, 0x60, 0xa2, 0x40, 0x8f, 0x33, 0x44,
-  0x05, 0x35, 0x63, 0xfd, 0x6b, 0x35, 0x07, 0x6b, 0x99, 0x9f, 0xe3, 0x57,
-  0x61, 0x6e, 0x2f, 0x70, 0x87, 0xc8, 0x21, 0x22, 0x21, 0x70, 0x60, 0x2d,
-  0xec, 0x05, 0xfd, 0xdb, 0xe3, 0xfe, 0xd5, 0xb3, 0xea, 0x6e, 0xaf, 0xdd,
-  0x3b, 0xb2, 0x91, 0xb7, 0xdb, 0x7d, 0xe3, 0xd5, 0xb9, 0x3c, 0x1d, 0xb9,
-  0xad, 0xb3, 0x47, 0x2a, 0x03, 0xa9, 0x6f, 0x8b, 0xec, 0xba, 0x20, 0xc5,
-  0x59, 0x4c, 0x33, 0xec, 0x9b, 0x24, 0x6d, 0x35, 0x57, 0x66, 0xf3, 0xa2,
-  0x96, 0x97, 0xe5, 0x5a, 0x0f, 0xfa, 0xb0, 0xcf, 0x7d, 0xa8, 0xaa, 0xd9,
-  0xdd, 0x7e, 0x67, 0x1f, 0xac, 0x13, 0x8d, 0x5e, 0xb0, 0x05, 0x6f, 0xbd,
-  0xd8, 0x8f, 0x7b, 0x81, 0x4e, 0xac, 0xe9, 0x03, 0xbf, 0x1a, 0xf5, 0xe1,
-  0x89, 0xf5, 0xe1, 0xc9, 0xa7, 0xce, 0x43, 0xd8, 0x83, 0x27, 0xbf, 0x76,
-  0x1e, 0x3a, 0xfb, 0xf0, 0x94, 0xfb, 0x90, 0x2f, 0xef, 0x9e, 0xb6, 0xde,
-  0x21, 0x69, 0xe8, 0xbd, 0x4d, 0x93, 0x74, 0xc9, 0x52, 0x86, 0x97, 0x9b,
-  0x76, 0x6c, 0x31, 0xbb, 0xe3, 0x8f, 0x91, 0xd0, 0xa2, 0x03, 0x89, 0x1d,
-  0x5c, 0x07, 0x4a, 0xd2, 0xc9, 0x39, 0xf7, 0x70, 0xd0, 0x6a, 0xae, 0xc2,
-  0x91, 0xdc, 0xba, 0xbf, 0xc9, 0xc9, 0x4a, 0x93, 0x2b, 0x95, 0x2e, 0x63,
-  0xf9, 0x0b, 0xbd, 0x72, 0xf7, 0xd9, 0x40, 0xbf, 0xc1, 0x97, 0x05, 0xe4,
-  0x8b, 0x93, 0x4f, 0x35, 0x5d, 0x28, 0x55, 0xab, 0x39, 0x9b, 0x13, 0xe9,
-  0x4d, 0xa6, 0x1a, 0x35, 0xfd, 0x80, 0x9a, 0x7a, 0x6a, 0xdd, 0xca, 0x44,
-  0xd5, 0x0a, 0x06, 0xfb, 0x99, 0x0e, 0xf6, 0xb3, 0xff, 0x63, 0x06, 0xfb,
-  0xd9, 0xfa, 0xc1, 0xa6, 0x3c, 0xd8, 0x74, 0xc9, 0xce, 0x93, 0xf6, 0xf6,
-  0xa2, 0xbb, 0x74, 0x87, 0xfd, 0x6e, 0xdb, 0xc9, 0x0f, 0xbc, 0x85, 0xa0,
-  0x41, 0xb2, 0x3d, 0xba, 0x70, 0x7e, 0x2b, 0xf4, 0x4a, 0x6c, 0x25, 0xbe,
-  0xcf, 0xad, 0x0b, 0x9d, 0xcd, 0xd9, 0x8d, 0x9a, 0x96, 0x6c, 0x69, 0x8a,
-  0x33, 0x2b, 0x10, 0x67, 0xf4, 0x7f, 0x34, 0x47, 0xce, 0x8b, 0x92, 0xd7,
-  0x43, 0x99, 0x70, 0xa8, 0x89, 0xfc, 0x74, 0xab, 0x39, 0xbe, 0xcb, 0x17,
-  0x9b, 0x35, 0xdb, 0x50, 0x39, 0xfb, 0xcd, 0x78, 0xe2, 0x9c, 0x15, 0x4d,
-  0xb3, 0x51, 0x42, 0x68, 0x0f, 0xd9, 0x89, 0xc0, 0xbb, 0x1a, 0x9a, 0x00,
-  0xba, 0x7b, 0x35, 0x4b, 0x49, 0x10, 0xb5, 0x67, 0x2f, 0xbf, 0x26, 0xcd,
-  0x56, 0xdc, 0x58, 0x55, 0x31, 0xe7, 0x53, 0xf0, 0xad, 0x9e, 0x02, 0x5a,
-  0xa2, 0x7c, 0x31, 0x99, 0xad, 0xe0, 0xcb, 0x38, 0xa3, 0x81, 0xd1, 0xaf,
-  0xb6, 0x83, 0x09, 0x3c, 0xe4, 0x09, 0x64, 0x57, 0xdf, 0x20, 0xa5, 0x2b,
-  0xbb, 0x4e, 0x5e, 0xc8, 0x7f, 0xaa, 0x9a, 0xb5, 0xe0, 0x2f, 0xbb, 0x05,
-  0xeb, 0x48, 0x0d, 0x5a, 0x1e, 0xdc, 0x3b, 0x7e, 0xf5, 0x30, 0x78, 0x87,
-  0x67, 0xaa, 0xa2, 0xf9, 0xb3, 0x19, 0x83, 0x68, 0xb4, 0x13, 0xd9, 0x6c,
-  0x6e, 0xc4, 0x5d, 0xa5, 0x01, 0xa7, 0x53, 0xbe, 0xd8, 0xc4, 0x5a, 0x48,
-  0x8e, 0xbe, 0x39, 0xa1, 0xad, 0x72, 0x95, 0xe6, 0x33, 0x51, 0x65, 0x65,
-  0xeb, 0x90, 0xb9, 0x30, 0xe3, 0x5b, 0x51, 0x26, 0xad, 0xca, 0x1a, 0x86,
-  0xb1, 0xfe, 0xaf, 0xf7, 0xa6, 0xf8, 0x3b, 0xcd, 0x60, 0xba, 0xf3, 0x74,
-  0xb8, 0x4b, 0x97, 0xf9, 0x65, 0x41, 0x3a, 0xc6, 0xa4, 0x98, 0x66, 0xc9,
-  0x78, 0x96, 0x2e, 0x6e, 0x2b, 0xb9, 0x53, 0xb1, 0x20, 0xd2, 0xd3, 0x3e,
-  0xfb, 0x86, 0xcb, 0x92, 0x54, 0xf8, 0x69, 0x12, 0x3a, 0x8c, 0x6d, 0x83,
-  0xcb, 0x70, 0x54, 0xdc, 0xa8, 0x89, 0x92, 0xfc, 0x6d, 0xc5, 0xeb, 0x31,
-  0x4f, 0xcb, 0x5b, 0xb3, 0x85, 0xd8, 0x4f, 0x91, 0xce, 0x48, 0xf3, 0x1e,
-  0x67, 0xe8, 0x18, 0x9e, 0x8f, 0x9b, 0x1b, 0x7c, 0x8b, 0x0b, 0x8b, 0xf6,
-  0x0b, 0xfb, 0x2c, 0xe5, 0x24, 0x14, 0x66, 0x36, 0xf9, 0x05, 0xf1, 0x87,
-  0x15, 0x03, 0xd7, 0x07, 0xf3, 0x4a, 0xf6, 0xaf, 0xf9, 0x86, 0xd8, 0x74,
-  0xa8, 0xc4, 0x0b, 0x3a, 0x4b, 0x49, 0x1f, 0xe0, 0x99, 0xc3, 0xee, 0x51,
-  0x53, 0x29, 0x58, 0xe0, 0x01, 0x69, 0x87, 0xec, 0xc5, 0xed, 0x5e, 0xca,
-  0x4b, 0x3e, 0x8a, 0x6e, 0xe7, 0x5f, 0xe5, 0xd7, 0xab, 0x32, 0x13, 0x9d,
-  0x12, 0x8e, 0x5f, 0xf3, 0xf7, 0xf2, 0xed, 0x7b, 0x53, 0x60, 0x7f, 0xd1,
-  0x25, 0x98, 0xcd, 0xae, 0xfa, 0xad, 0xe6, 0x58, 0x93, 0x80, 0xf0, 0x46,
-  0x9f, 0xa0, 0xa3, 0x54, 0xd9, 0x04, 0x8d, 0x2d, 0x32, 0xd5, 0x25, 0x21,
-  0x9f, 0xd9, 0x51, 0x98, 0x4c, 0x66, 0x69, 0x3e, 0xc7, 0xe9, 0x56, 0x3f,
-  0x58, 0x7b, 0x67, 0x5c, 0xaa, 0x15, 0x89, 0x2d, 0x31, 0x66, 0x23, 0xb6,
-  0xac, 0xd8, 0x4c, 0x85, 0x94, 0xb2, 0xeb, 0x5b, 0x4c, 0xc4, 0x9b, 0x6c,
-  0x72, 0x8b, 0x6d, 0x17, 0x28, 0xee, 0x6d, 0x59, 0x25, 0xb3, 0x5e, 0x41,
-  0x10, 0xad, 0x68, 0x23, 0x2c, 0x8b, 0xaa, 0xca, 0xc7, 0xbc, 0xe9, 0xc8,
-  0xb0, 0x5b, 0x4d, 0xb0, 0xcc, 0xb4, 0x8a, 0xd9, 0x07, 0x32, 0xd8, 0xe8,
-  0xae, 0xa9, 0xe1, 0x66, 0xc7, 0xc6, 0x18, 0xd0, 0x26, 0x58, 0xae, 0xeb,
-  0x9d, 0xac, 0x49, 0x53, 0x0c, 0x54, 0x6a, 0x7b, 0xc3, 0xac, 0x15, 0x43,
-  0x77, 0x92, 0xb4, 0x66, 0xb3, 0xd5, 0x9c, 0xcc, 0x6d, 0x9f, 0x3d, 0x3b,
-  0x2c, 0x4b, 0xc5, 0x78, 0x83, 0xf7, 0x8b, 0x4c, 0x35, 0x55, 0x16, 0xc7,
-  0x69, 0x95, 0x4f, 0x78, 0x03, 0x4d, 0xf3, 0xeb, 0x8c, 0x05, 0x06, 0xe9,
-  0x8f, 0xf5, 0x6c, 0xde, 0x0f, 0x15, 0x51, 0xb7, 0xe2, 0x76, 0x5b, 0xc6,
-  0xdb, 0xca, 0x0b, 0x13, 0xd1, 0x68, 0xdc, 0xee, 0x30, 0x93, 0x84, 0xcc,
-  0x19, 0xd2, 0x0b, 0xd9, 0x15, 0x3d, 0xe5, 0xd3, 0x87, 0xae, 0x50, 0x2f,
-  0x54, 0x64, 0xb6, 0xc5, 0x0e, 0xbc, 0x0a, 0x74, 0x50, 0x48, 0xb8, 0xf4,
-  0xf9, 0x84, 0x4c, 0x60, 0xeb, 0xcd, 0xd3, 0x07, 0x2c, 0x11, 0xd9, 0x46,
-  0xce, 0x1a, 0xc1, 0xd9, 0x60, 0x07, 0xcf, 0x7d, 0x3e, 0x11, 0xdb, 0x9e,
-  0x27, 0xa4, 0x43, 0x09, 0x9c, 0xcc, 0x72, 0x7e, 0x6e, 0xbe, 0xaa, 0x60,
-  0xf7, 0xe3, 0x92, 0xc2, 0xb5, 0x70, 0x4f, 0x4b, 0x35, 0x94, 0x73, 0x91,
-  0x89, 0xf5, 0x46, 0x8a, 0x37, 0x1b, 0x95, 0x69, 0x99, 0xc3, 0xff, 0x13,
-  0x35, 0x27, 0x7d, 0xe6, 0x61, 0xa2, 0x9f, 0xda, 0x4d, 0x7e, 0x5d, 0x4d,
-  0x2c, 0x6f, 0x5a, 0xe1, 0xec, 0xb0, 0xcc, 0x09, 0x0e, 0xce, 0x98, 0x27,
-  0x59, 0xc2, 0x17, 0xc9, 0x0b, 0xbe, 0x8e, 0x5e, 0xf2, 0x60, 0xd6, 0x88,
-  0xc4, 0xe4, 0x1c, 0x6e, 0xa7, 0x9b, 0xa6, 0xfd, 0x15, 0xc8, 0x3e, 0xd1,
-  0x8a, 0xa5, 0x39, 0xf8, 0xe8, 0x68, 0xc2, 0x69, 0xf3, 0xb7, 0x77, 0x2a,
-  0xed, 0xcc, 0x8c, 0xa5, 0xa1, 0x6b, 0x69, 0xe9, 0x55, 0x7f, 0x5a, 0x9b,
-  0x2c, 0xbf, 0xa3, 0x81, 0x7b, 0x67, 0x8e, 0x34, 0x0d, 0x2f, 0x6b, 0xd2,
-  0x1b, 0x65, 0x75, 0xbb, 0xb9, 0x23, 0x7c, 0xef, 0xa0, 0x97, 0x04, 0xee,
-  0x5a, 0x69, 0x57, 0x27, 0x6f, 0x9c, 0x99, 0x33, 0x56, 0x94, 0xed, 0xa4,
-  0xc7, 0xc1, 0xbd, 0xbd, 0x97, 0xdf, 0x1f, 0x9e, 0xbe, 0x3b, 0xde, 0xfb,
-  0x73, 0x7b, 0xfb, 0xd0, 0xef, 0xf6, 0xe5, 0x77, 0xfb, 0xbd, 0x2e, 0x99,
-  0x45, 0x36, 0xcd, 0xe6, 0xcb, 0xcd, 0xa4, 0x7a, 0x98, 0x8f, 0x8b, 0x99,
-  0x93, 0x5a, 0xfa, 0x05, 0xee, 0x42, 0x5f, 0x35, 0x84, 0x5a, 0x2e, 0x38,
-  0x9e, 0x15, 0xee, 0x3b, 0xdf, 0x90, 0xed, 0xbe, 0xc3, 0xe5, 0x08, 0xef,
-  0x1c, 0xec, 0x3a, 0xde, 0x03, 0xe9, 0x34, 0x9c, 0x8f, 0xaa, 0xc6, 0x9d,
-  0xa7, 0x4b, 0xc4, 0xad, 0x8b, 0x9f, 0xab, 0x2f, 0x07, 0xa9, 0x2d, 0xce,
-  0xdd, 0x80, 0x7d, 0x9f, 0x78, 0x0d, 0x48, 0xad, 0x80, 0x84, 0xc5, 0xc6,
-  0x7a, 0xa0, 0xcd, 0x5b, 0x4f, 0x6e, 0x86, 0x74, 0xad, 0x89, 0x4c, 0xe1,
-  0x53, 0x2e, 0xe7, 0xb3, 0x2d, 0xf0, 0x58, 0xe2, 0x23, 0xdc, 0x76, 0x47,
-  0x03, 0xa9, 0x64, 0xf3, 0xf6, 0xb4, 0x2f, 0xcb, 0x94, 0x64, 0x3a, 0x99,
-  0xd3, 0x72, 0xa0, 0x7d, 0x34, 0x0a, 0x72, 0x96, 0x8f, 0x58, 0xd9, 0x6e,
-  0x8e, 0xce, 0x4e, 0x31, 0xe7, 0x4f, 0x6a, 0xbc, 0x8c, 0x03, 0x9f, 0x3a,
-  0x0e, 0x9c, 0x27, 0xea, 0x36, 0x3b, 0xe1, 0x1e, 0xf4, 0x50, 0x6e, 0x96,
-  0x99, 0x9e, 0x60, 0xf1, 0xb7, 0xb5, 0xb7, 0x3e, 0x35, 0x36, 0x26, 0xc3,
-  0x5f, 0xd4, 0x2d, 0xb9, 0xc0, 0x60, 0xa1, 0x9e, 0xf2, 0x9e, 0x9e, 0x15,
-  0x2a, 0xd4, 0xbd, 0x11, 0xad, 0x3e, 0x45, 0xdd, 0x03, 0x9d, 0xd6, 0x99,
-  0x38, 0x1d, 0x75, 0x15, 0xac, 0x97, 0x72, 0xb0, 0xdc, 0xcc, 0x92, 0x1d,
-  0xc8, 0x77, 0x2c, 0xb6, 0xbd, 0x09, 0x5d, 0x76, 0xbf, 0x77, 0x34, 0xf7,
-  0x36, 0xab, 0x2b, 0x52, 0x10, 0xb3, 0x1d, 0xbd, 0xb4, 0x6d, 0x19, 0x83,
-  0x7e, 0xc4, 0xd2, 0xeb, 0xec, 0xf2, 0xd8, 0x7c, 0x9c, 0xae, 0x4b, 0xde,
-  0x9b, 0x28, 0xa2, 0x32, 0x3c, 0xb6, 0xe6, 0x87, 0xc4, 0x8a, 0xa7, 0x91,
-  0xd2, 0xb4, 0x58, 0xae, 0x48, 0x4f, 0x7b, 0x5b, 0xb8, 0xe1, 0xd8, 0x15,
-  0xaa, 0x3b, 0xcb, 0x4e, 0x06, 0x7d, 0x06, 0xea, 0x04, 0x7e, 0x9c, 0xb8,
-  0x90, 0x66, 0x5b, 0xdc, 0xd8, 0xed, 0x37, 0x98, 0xf8, 0x2e, 0x0c, 0xfe,
-  0x9a, 0xfa, 0xdb, 0x5e, 0x43, 0x60, 0x98, 0x2d, 0xba, 0xc8, 0x17, 0x64,
-  0x88, 0xdf, 0x65, 0x4e, 0x50, 0x74, 0xdf, 0x59, 0xde, 0xf9, 0x64, 0x22,
-  0xfb, 0x15, 0xae, 0x81, 0xd5, 0x7c, 0xa9, 0xca, 0xc4, 0xbf, 0xfc, 0x7e,
-  0xba, 0xc3, 0xd7, 0xaa, 0x1c, 0x0e, 0xd2, 0x6a, 0x92, 0xe7, 0x5d, 0x0a,
-  0x36, 0x87, 0xbf, 0xb7, 0x93, 0x63, 0xf8, 0x72, 0x92, 0xc3, 0xd1, 0xd1,
-  0xc9, 0x89, 0x73, 0x7a, 0x0e, 0x25, 0x48, 0x80, 0xc8, 0xb7, 0x9e, 0x24,
-  0x5c, 0x6a, 0x72, 0x72, 0xc6, 0x6d, 0xfd, 0x28, 0x63, 0x73, 0x7f, 0xc2,
-  0xf7, 0x29, 0xc7, 0x23, 0x65, 0xac, 0xf4, 0x38, 0xbb, 0xdc, 0xb1, 0xe2,
-  0x74, 0x27, 0x55, 0xea, 0xac, 0xf9, 0x73, 0xfd, 0xb0, 0xcc, 0x5e, 0x1e,
-  0xf6, 0x54, 0x01, 0x93, 0x71, 0xb6, 0x4f, 0x40, 0xba, 0x62, 0x73, 0x41,
-  0x64, 0x1d, 0x6e, 0x1e, 0x5e, 0xbf, 0xa9, 0x3a, 0x38, 0x55, 0xec, 0xd1,
-  0x85, 0x4f, 0xba, 0xca, 0x54, 0x7c, 0x6f, 0x74, 0xc1, 0x3c, 0xd9, 0x27,
-  0xd1, 0x45, 0x97, 0xf9, 0xbc, 0x0a, 0x15, 0x28, 0xdc, 0xbd, 0x9f, 0xa2,
-  0x3e, 0xf1, 0x0e, 0xc0, 0xde, 0xff, 0x9a, 0xdf, 0x68, 0x5d, 0xfa, 0x43,
-  0xaf, 0x36, 0xc4, 0xca, 0xa1, 0x85, 0x69, 0xf4, 0x66, 0x6c, 0x2d, 0xde,
-  0x4a, 0xdc, 0x0d, 0xa4, 0xfd, 0xd4, 0x33, 0x12, 0x57, 0xfd, 0x64, 0xb5,
-  0xe0, 0xff, 0x3a, 0x9f, 0x97, 0xf7, 0x06, 0x7a, 0x63, 0x85, 0xcd, 0x91,
-  0x32, 0xa7, 0xa1, 0xa5, 0x49, 0x28, 0x33, 0x45, 0x75, 0x76, 0x86, 0x18,
-  0x8e, 0x12, 0x07, 0x7b, 0x21, 0x85, 0xa7, 0x39, 0x03, 0x05, 0xa8, 0xcb,
-  0x6d, 0x59, 0xd7, 0xd4, 0x05, 0x4d, 0x19, 0x4c, 0xb6, 0xaa, 0x15, 0xeb,
-  0x2b, 0x24, 0xc3, 0x4d, 0x1b, 0xf1, 0xfa, 0x09, 0x4d, 0xa8, 0x29, 0x22,
-  0x6d, 0xc1, 0x4e, 0xf2, 0x32, 0xb4, 0x40, 0xda, 0xa7, 0xe5, 0x05, 0x36,
-  0x3b, 0x4b, 0xff, 0x8f, 0x99, 0x1f, 0x85, 0x0a, 0x48, 0xbc, 0xe0, 0xbc,
-  0xc1, 0xb6, 0x1a, 0xe2, 0xc4, 0x46, 0x18, 0x5f, 0x4f, 0x6c, 0xbb, 0x1f,
-  0x57, 0xec, 0x2b, 0xc6, 0xad, 0xcc, 0xbe, 0x2a, 0xbe, 0x8e, 0x9c, 0x46,
-  0x30, 0x4c, 0x8e, 0x10, 0x99, 0xe1, 0x36, 0x2a, 0x34, 0x62, 0x32, 0xc2,
-  0x4f, 0x66, 0xe4, 0x80, 0x48, 0xf5, 0x6a, 0x4e, 0x03, 0xa1, 0x84, 0xbe,
-  0xd1, 0x0c, 0xdd, 0x67, 0x08, 0x77, 0x35, 0x9a, 0x72, 0x17, 0x3a, 0x5e,
-  0xeb, 0xf6, 0x67, 0xc8, 0x15, 0xbf, 0x55, 0x6d, 0x0f, 0xf5, 0x7e, 0xb5,
-  0x97, 0xd9, 0x87, 0x7a, 0xbb, 0x28, 0xee, 0x49, 0xa5, 0x59, 0x14, 0xf2,
-  0x19, 0x3b, 0xc5, 0xdc, 0xeb, 0xf6, 0xa4, 0xd7, 0x59, 0x28, 0xe8, 0xc3,
-  0x27, 0x6b, 0x18, 0xc7, 0x12, 0x0a, 0x63, 0xe3, 0xc8, 0x24, 0xb3, 0x4d,
-  0x5b, 0xa7, 0xfd, 0xaa, 0x12, 0x5a, 0x8c, 0x5c, 0x68, 0x89, 0x62, 0x93,
-  0x99, 0xb9, 0x2b, 0xb7, 0xb7, 0xe0, 0x73, 0xc4, 0x72, 0x9a, 0xa6, 0xd5,
-  0x4d, 0x3f, 0xe9, 0x0d, 0x7a, 0xfd, 0x8e, 0xfd, 0xdf, 0x16, 0xc0, 0xd6,
-  0x2f, 0x77, 0x68, 0xa3, 0xbb, 0x40, 0x3d, 0xaa, 0x91, 0x0f, 0x53, 0x83,
-  0x69, 0x7a, 0x2f, 0x4b, 0x87, 0x6c, 0x1c, 0xd9, 0xe2, 0x9a, 0x1f, 0xc4,
-  0xb6, 0x6f, 0xeb, 0xe0, 0x1c, 0xdc, 0x0a, 0xef, 0x67, 0x9c, 0x44, 0x89,
-  0xc2, 0xa1, 0x6b, 0xc3, 0xe4, 0x70, 0x21, 0xd1, 0xd2, 0xfb, 0x14, 0x5b,
-  0xcf, 0x7d, 0x02, 0x0a, 0x4d, 0x7c, 0x00, 0xcd, 0x19, 0xdd, 0xb8, 0x90,
-  0xf4, 0xc6, 0xed, 0x94, 0xd8, 0xf6, 0xa9, 0x84, 0x0f, 0x01, 0x49, 0xca,
-  0x4d, 0x28, 0xc0, 0xea, 0x09, 0xe0, 0xf3, 0xe4, 0x27, 0x45, 0xa4, 0xf7,
-  0xfd, 0x4d, 0x31, 0x13, 0x9d, 0xa2, 0xed, 0xb0, 0x74, 0x7a, 0x6d, 0x72,
-  0x5f, 0xc0, 0x60, 0x86, 0x39, 0x4d, 0x4d, 0xe0, 0xd6, 0x29, 0x33, 0x36,
-  0xb9, 0x60, 0xf0, 0x90, 0xf5, 0x4b, 0xdf, 0x9a, 0x65, 0x69, 0x39, 0x7b,
-  0x30, 0xa5, 0x67, 0x70, 0xd7, 0x6a, 0x0e, 0x33, 0xca, 0x5e, 0x8f, 0x94,
-  0xc6, 0x5e, 0x2e, 0xf8, 0x19, 0xf5, 0xf9, 0x1a, 0x7c, 0xa1, 0x16, 0x2f,
-  0xbc, 0xc4, 0x75, 0xf8, 0xc2, 0xbd, 0xcb, 0xd9, 0xbe, 0xa2, 0xcd, 0x46,
-  0x7a, 0x7a, 0x7b, 0x27, 0x8e, 0xd3, 0xc9, 0x2d, 0xb6, 0x0c, 0x9a, 0x94,
-  0x90, 0xd3, 0x0d, 0xa0, 0x38, 0x6a, 0x94, 0xd1, 0x51, 0xbc, 0xa1, 0x7b,
-  0x8a, 0x2c, 0xc5, 0x55, 0xba, 0x6e, 0xba, 0x5a, 0x1e, 0xa5, 0x8f, 0xdd,
-  0x71, 0xcd, 0xf3, 0xd8, 0xa5, 0x68, 0xae, 0xb9, 0x01, 0x8f, 0x64, 0xf1,
-  0x48, 0xf8, 0x2d, 0x56, 0x74, 0x0d, 0xd6, 0xc9, 0x8b, 0xe2, 0xea, 0x8a,
-  0xb6, 0xfa, 0x97, 0x91, 0xa2, 0x2d, 0x8f, 0xec, 0x5c, 0x00, 0xcd, 0x94,
-  0x78, 0xc5, 0xbd, 0x19, 0xad, 0x4d, 0x4c, 0x77, 0x49, 0xae, 0x73, 0x5e,
-  0x8b, 0x44, 0x9a, 0x8b, 0x2d, 0xcc, 0xf6, 0x13, 0x89, 0xdd, 0x1c, 0x89,
-  0x86, 0x37, 0x3c, 0xfc, 0x89, 0x2e, 0xcc, 0x3a, 0xd3, 0x68, 0x91, 0x0e,
-  0xa3, 0xad, 0xfb, 0xde, 0xe6, 0xcb, 0x25, 0x2f, 0x16, 0xf0, 0x13, 0xce,
-  0x22, 0xe2, 0xd6, 0xc6, 0x19, 0x9d, 0x09, 0xac, 0xa9, 0x05, 0x07, 0x8a,
-  0x15, 0x5d, 0xc3, 0x7a, 0x8a, 0xe9, 0xd7, 0x74, 0xd2, 0xdb, 0xcd, 0x99,
-  0x0a, 0xef, 0x03, 0x9e, 0x6a, 0xef, 0x4c, 0x39, 0xb8, 0xb9, 0x50, 0x01,
-  0xca, 0xcb, 0x84, 0x45, 0xc1, 0xa5, 0xad, 0x06, 0x64, 0xd7, 0xe1, 0x7f,
-  0xed, 0x8d, 0x24, 0x3b, 0xd0, 0xa3, 0x93, 0xff, 0x71, 0xec, 0xc3, 0xd3,
-  0x2e, 0xfe, 0xfb, 0x80, 0xdd, 0x1e, 0xed, 0x87, 0x77, 0x74, 0xd4, 0x7a,
-  0x83, 0xa3, 0x64, 0xd0, 0x43, 0x47, 0x1a, 0xbe, 0xbc, 0x55, 0x5d, 0x70,
-  0x0c, 0x41, 0xe2, 0xf8, 0xc0, 0x54, 0xf1, 0x86, 0x63, 0x73, 0xb1, 0xcc,
-  0x76, 0x38, 0x72, 0x13, 0xfb, 0x91, 0x04, 0x90, 0xa6, 0x93, 0xed, 0xb5,
-  0x99, 0x93, 0x5a, 0x20, 0x15, 0xd0, 0x2b, 0xf8, 0x77, 0xb2, 0x3e, 0x12,
-  0x23, 0xdc, 0x81, 0x32, 0x29, 0x11, 0xee, 0x58, 0x16, 0xa8, 0x5f, 0x45,
-  0xe2, 0x79, 0x1d, 0xc2, 0xec, 0x1f, 0xe8, 0xed, 0x99, 0xe4, 0xcb, 0x1b,
-  0x56, 0x1b, 0x5f, 0x20, 0x4c, 0xc5, 0x0e, 0x26, 0xf9, 0xc1, 0x97, 0x9d,
-  0xde, 0xf7, 0x91, 0x9e, 0x8b, 0x4a, 0x6f, 0x52, 0x7b, 0x5b, 0xe5, 0x57,
-  0x6e, 0x90, 0x1f, 0x03, 0x22, 0xc8, 0x15, 0xc2, 0x4d, 0xc7, 0x31, 0x12,
-  0xf7, 0xb2, 0x18, 0xef, 0x0e, 0xf6, 0x22, 0xe0, 0x0a, 0xfb, 0xed, 0x30,
-  0xb9, 0xe0, 0x7b, 0x72, 0xb5, 0xe4, 0xd8, 0x3f, 0xd0, 0x82, 0xf8, 0x79,
-  0xab, 0x39, 0x74, 0x3e, 0xd0, 0x8e, 0x00, 0xa7, 0x0b, 0x3f, 0xb7, 0x68,
-  0x98, 0x13, 0x79, 0xf8, 0x3b, 0xd2, 0x18, 0x0f, 0xda, 0xba, 0xb4, 0xc7,
-  0xed, 0x90, 0x6c, 0x5c, 0x54, 0xd5, 0x0c, 0x48, 0xa9, 0x69, 0x31, 0xa9,
-  0x76, 0xd2, 0xe5, 0xb2, 0xda, 0xb1, 0xce, 0x35, 0x30, 0x51, 0x66, 0x75,
-  0x8c, 0x46, 0xc1, 0xd8, 0xf8, 0xda, 0x15, 0xb7, 0x94, 0xd3, 0x96, 0x60,
-  0xae, 0x93, 0x34, 0x15, 0xef, 0xea, 0x29, 0x6e, 0x8e, 0x6f, 0x16, 0xab,
-  0xcb, 0xd3, 0x11, 0xa6, 0xab, 0x7d, 0x73, 0xae, 0x68, 0xe1, 0x6c, 0x71,
-  0xb8, 0x6d, 0x6b, 0x1a, 0x76, 0x9c, 0xd8, 0x46, 0xa3, 0xd1, 0x11, 0x7e,
-  0x38, 0x5a, 0xb1, 0x0a, 0x43, 0x9f, 0x28, 0x1f, 0x54, 0x70, 0x44, 0x37,
-  0x0d, 0x8f, 0x36, 0xf9, 0xe4, 0xff, 0xe9, 0x44, 0x5c, 0xe7, 0xf5, 0xf0,
-  0x2a, 0x9b, 0x16, 0x65, 0x1a, 0x79, 0xca, 0x0a, 0x86, 0xac, 0x61, 0x76,
-  0x26, 0xf4, 0xd4, 0x0e, 0x69, 0xc7, 0xef, 0x69, 0xbe, 0x86, 0xfc, 0x77,
-  0x58, 0x77, 0x32, 0x69, 0xf6, 0x63, 0x9e, 0xaf, 0x3f, 0xbc, 0x42, 0x10,
-  0x9c, 0x0e, 0x43, 0xf5, 0x7b, 0xee, 0x6b, 0xd2, 0xd1, 0x10, 0x02, 0x98,
-  0x76, 0x2b, 0x85, 0x17, 0xe6, 0x13, 0x4c, 0xfc, 0x93, 0x3e, 0x28, 0xde,
-  0xc6, 0x06, 0x93, 0x1a, 0x76, 0x5d, 0xd0, 0x75, 0x7a, 0x33, 0xef, 0x8c,
-  0x43, 0x98, 0x5b, 0xb2, 0x52, 0x28, 0xaa, 0x18, 0x6a, 0x22, 0x10, 0x56,
-  0x8b, 0xe0, 0x03, 0x34, 0x19, 0x24, 0x2a, 0x16, 0xaa, 0x08, 0x75, 0x2c,
-  0x4f, 0x6b, 0xe4, 0xea, 0xf8, 0x32, 0x71, 0x07, 0x47, 0x79, 0x05, 0xdf,
-  0x23, 0xb5, 0xeb, 0x81, 0xca, 0xe2, 0xb8, 0x66, 0x17, 0x75, 0x57, 0xef,
-  0x30, 0x45, 0xad, 0x4b, 0xbc, 0x39, 0x55, 0x38, 0xae, 0x03, 0x9e, 0x5e,
-  0x16, 0x76, 0x2f, 0x2a, 0xd2, 0x68, 0xe8, 0x3b, 0x5f, 0x46, 0x21, 0xdc,
-  0x0f, 0xf9, 0x7c, 0x35, 0x4f, 0xb0, 0x0e, 0xe2, 0x1d, 0xd7, 0x27, 0xd5,
-  0x32, 0xe0, 0x4b, 0x9a, 0xe4, 0xa6, 0x86, 0xb7, 0xbd, 0x14, 0x50, 0x71,
-  0xdf, 0xbe, 0x64, 0x64, 0x4c, 0xfc, 0x3b, 0x52, 0xa6, 0x86, 0xaa, 0xa2,
-  0x69, 0xc8, 0x7c, 0xce, 0xb1, 0x53, 0xd3, 0xc6, 0x5c, 0x3b, 0xc9, 0xf2,
-  0x26, 0xad, 0x18, 0x36, 0xc6, 0x91, 0xf1, 0xae, 0xa1, 0xd2, 0xaf, 0xed,
-  0xf9, 0x2c, 0x32, 0x8c, 0x0a, 0xe8, 0xc3, 0x88, 0x15, 0xd3, 0xe4, 0x32,
-  0x20, 0x17, 0x1e, 0xc8, 0xcf, 0x87, 0x4f, 0xf6, 0x87, 0xbb, 0xfd, 0xc8,
-  0xe7, 0xe0, 0xdf, 0x55, 0x14, 0x16, 0xc9, 0x95, 0x49, 0x3e, 0xa7, 0x7d,
-  0x48, 0x02, 0x6a, 0xc5, 0x1b, 0x51, 0x54, 0x99, 0x8c, 0x55, 0xbb, 0x95,
-  0x6e, 0x4f, 0xb9, 0x2c, 0x68, 0xc2, 0x23, 0x83, 0x8d, 0x15, 0x33, 0x11,
-  0x91, 0xd4, 0xdc, 0xaa, 0x4c, 0x27, 0x0f, 0x02, 0xd9, 0x08, 0x3d, 0x12,
-  0xd6, 0x02, 0xf5, 0x0b, 0x4f, 0xe3, 0x84, 0xf3, 0x57, 0x07, 0x91, 0xfa,
-  0x39, 0x63, 0x85, 0x61, 0x92, 0x57, 0x10, 0xb2, 0xa3, 0x2c, 0x13, 0x33,
-  0x19, 0x0a, 0x24, 0xec, 0xaa, 0x79, 0xfa, 0x01, 0x0b, 0xfa, 0xa8, 0x0a,
-  0xf9, 0x0f, 0x3a, 0x6a, 0x50, 0x39, 0xc9, 0x92, 0x2b, 0xdb, 0xbb, 0xb9,
-  0x11, 0x48, 0xa3, 0x75, 0xf9, 0x2b, 0x1d, 0x06, 0x55, 0xba, 0x25, 0xe6,
-  0x91, 0x0c, 0x0c, 0xd4, 0xd0, 0x82, 0x33, 0x4a, 0x9b, 0x1d, 0x7e, 0x20,
-  0xc6, 0x98, 0xd1, 0x59, 0x4a, 0x4b, 0x06, 0x60, 0x17, 0x74, 0x4d, 0x27,
-  0x82, 0xa9, 0x29, 0xe8, 0x07, 0x37, 0x39, 0xf5, 0xbd, 0x9c, 0xdc, 0x60,
-  0x66, 0xd9, 0xe5, 0xcb, 0x11, 0xb1, 0x47, 0x4c, 0x7e, 0x7c, 0x43, 0xbd,
-  0xb0, 0xd4, 0xf9, 0x84, 0x4f, 0x26, 0x3d, 0x66, 0x2a, 0x48, 0xab, 0x7f,
-  0xac, 0xce, 0xb3, 0x54, 0xc8, 0x66, 0xd8, 0x3c, 0x27, 0x5d, 0x4e, 0x2f,
-  0x7e, 0xde, 0x9b, 0x33, 0xb8, 0xf9, 0x69, 0xcb, 0x51, 0xe3, 0xac, 0x4c,
-  0x8b, 0xcb, 0x50, 0x3e, 0xc5, 0x6e, 0x6f, 0xf9, 0x1a, 0x9b, 0x78, 0x6c,
-  0x0a, 0xb6, 0xcd, 0x43, 0x0d, 0xf4, 0xe9, 0xeb, 0x36, 0xf7, 0x16, 0xe8,
-  0x8b, 0xcc, 0x9b, 0x42, 0x7f, 0x65, 0x76, 0xa0, 0xcd, 0x8a, 0xdc, 0xd5,
-  0xce, 0x64, 0x63, 0xdd, 0x89, 0xba, 0x22, 0xf9, 0x05, 0x7c, 0x4d, 0xd0,
-  0xfa, 0x5d, 0xd5, 0x91, 0x5b, 0x39, 0x58, 0xd2, 0xe6, 0x4a, 0xcf, 0xae,
-  0xe0, 0xc7, 0xd9, 0x66, 0x05, 0x96, 0x76, 0x4a, 0x9d, 0x9c, 0xbe, 0xe6,
-  0x13, 0x7c, 0x74, 0x41, 0xff, 0xcd, 0x2d, 0x52, 0xca, 0x96, 0x01, 0xb2,
-  0x05, 0xd8, 0x4d, 0xf2, 0xe6, 0xfb, 0x51, 0xb2, 0x75, 0x36, 0xda, 0x79,
-  0xf2, 0x7c, 0x77, 0xbb, 0xdd, 0x16, 0xcf, 0x14, 0xcc, 0xf7, 0x4e, 0xcb,
-  0x7d, 0xb4, 0xc3, 0x49, 0x16, 0xdb, 0xc8, 0x84, 0xb9, 0x13, 0xd7, 0x44,
-  0xe0, 0xd7, 0x3a, 0x3f, 0x7e, 0x63, 0xfe, 0x47, 0xc1, 0x18, 0x24, 0x47,
-  0xd4, 0x1f, 0x0e, 0x9f, 0xc4, 0x1b, 0xe7, 0x22, 0xbb, 0x33, 0x1f, 0xe6,
-  0x29, 0xdf, 0xa4, 0x90, 0x56, 0xec, 0x26, 0x35, 0x9d, 0x63, 0x99, 0xb1,
-  0x32, 0xe9, 0xdf, 0x57, 0xed, 0x58, 0x6e, 0xef, 0x48, 0xe1, 0x1b, 0x43,
-  0xb8, 0x55, 0xd4, 0xa5, 0x12, 0x97, 0x06, 0xc3, 0xe6, 0xa6, 0xbf, 0xdf,
-  0x09, 0xb3, 0x39, 0x39, 0x04, 0xd2, 0x87, 0x66, 0x19, 0x38, 0x9f, 0xcf,
-  0x1d, 0xc6, 0x7c, 0x30, 0x85, 0x23, 0x85, 0x3d, 0x57, 0x2f, 0x1e, 0x0b,
-  0x39, 0x8c, 0x32, 0x15, 0xd5, 0x59, 0x88, 0xa9, 0xc4, 0x7b, 0x88, 0x08,
-  0x00, 0xfc, 0x66, 0xb1, 0xb2, 0x20, 0x22, 0xd1, 0x29, 0xb7, 0xfb, 0x0e,
-  0x94, 0x0d, 0x6b, 0x28, 0x7d, 0x90, 0x19, 0x4b, 0x93, 0x71, 0x59, 0xdc,
-  0x23, 0xd1, 0x04, 0xf0, 0x33, 0xd9, 0x7b, 0xec, 0x2c, 0x92, 0xec, 0x93,
-  0x9b, 0xc8, 0xab, 0x4a, 0x4b, 0x3a, 0x53, 0x00, 0x13, 0x5d, 0x4e, 0xdf,
-  0x5e, 0xbe, 0x39, 0xc5, 0xb2, 0xe2, 0xea, 0x5b, 0x6a, 0x10, 0x1f, 0xdf,
-  0x59, 0x8d, 0xe9, 0x52, 0x60, 0x99, 0x5b, 0x3b, 0xe7, 0x58, 0x87, 0xa0,
-  0x85, 0x1f, 0xcf, 0xa9, 0xf3, 0xcb, 0xae, 0x28, 0x8b, 0x5e, 0x3c, 0xe6,
-  0x0f, 0xc7, 0x62, 0x92, 0x9d, 0x4c, 0x17, 0xe0, 0xc3, 0xb2, 0xbd, 0x73,
-  0x48, 0xdb, 0x9b, 0xa9, 0x1f, 0x6b, 0xe7, 0xc3, 0x80, 0x14, 0xc2, 0x01,
-  0x77, 0x6e, 0x40, 0xcd, 0x4b, 0xac, 0x98, 0x43, 0xee, 0x47, 0x74, 0xbf,
-  0xf3, 0x46, 0xa1, 0xe6, 0x07, 0xaf, 0x79, 0x29, 0xf8, 0x91, 0x68, 0xf9,
-  0x78, 0x95, 0x6c, 0x99, 0xbc, 0x6d, 0x86, 0xd9, 0x13, 0x8f, 0x18, 0xff,
-  0x46, 0x1c, 0xa7, 0x70, 0x1e, 0x73, 0x7e, 0x8c, 0x86, 0x74, 0xc8, 0x16,
-  0x88, 0xbc, 0x47, 0xec, 0xae, 0x2f, 0x1f, 0x04, 0xc7, 0xa6, 0x0e, 0x75,
-  0x8b, 0x2b, 0x3a, 0x4f, 0x82, 0x34, 0x29, 0x4f, 0x7a, 0xe7, 0x7d, 0xc1,
-  0x3a, 0xe0, 0x20, 0xf2, 0xa6, 0x22, 0xf2, 0xcd, 0xaf, 0xe1, 0x76, 0x43,
-  0x9a, 0x85, 0x2c, 0x84, 0x84, 0xd2, 0x81, 0x1a, 0x4f, 0xe1, 0x1a, 0xb7,
-  0x86, 0xdd, 0x24, 0x74, 0x1a, 0xdc, 0x0c, 0x32, 0x14, 0xe5, 0xa9, 0xca,
-  0x1c, 0xfc, 0xcc, 0x0e, 0x01, 0x2e, 0x61, 0x28, 0xc1, 0x7c, 0x93, 0x5b,
-  0xaa, 0x80, 0xe1, 0xcc, 0xe2, 0xdb, 0x4e, 0x7d, 0x36, 0xfd, 0x20, 0xce,
-  0x95, 0xf3, 0x3d, 0x10, 0x62, 0x83, 0x3d, 0x1a, 0x62, 0x9e, 0x95, 0xd7,
-  0xfc, 0x93, 0xba, 0xb8, 0xce, 0xea, 0xd8, 0x58, 0x50, 0x3c, 0x90, 0x03,
-  0x04, 0xc3, 0x95, 0xf5, 0xaf, 0x03, 0x09, 0x42, 0x41, 0x0f, 0x59, 0xb1,
-  0x22, 0xa7, 0x3e, 0xae, 0xcd, 0xc1, 0x34, 0xd1, 0x68, 0xde, 0x82, 0x66,
-  0x82, 0xd6, 0x31, 0x36, 0x96, 0x67, 0xb3, 0x97, 0x33, 0x32, 0xdd, 0x1f,
-  0x36, 0x13, 0x05, 0xae, 0x2a, 0x9c, 0xb1, 0xce, 0xf0, 0x1d, 0x2c, 0x65,
-  0x32, 0xb9, 0x59, 0x2d, 0x6e, 0xcd, 0x87, 0x3a, 0x2b, 0x0a, 0x46, 0x18,
-  0x70, 0x1e, 0x55, 0xab, 0xb9, 0xcd, 0xe0, 0x63, 0xff, 0x1a, 0xb6, 0xdd,
-  0x39, 0xcb, 0xe2, 0x4a, 0xab, 0x91, 0x84, 0xe3, 0xe6, 0xc6, 0xdd, 0x5e,
-  0x92, 0x74, 0x90, 0x7c, 0xd5, 0xb7, 0x68, 0x77, 0x1d, 0x04, 0x5f, 0xd2,
-  0xf8, 0x20, 0x7a, 0x37, 0x1c, 0x9c, 0x93, 0xae, 0x41, 0x89, 0x92, 0xb1,
-  0x8b, 0xd6, 0x82, 0xbc, 0xde, 0x73, 0x8a, 0x88, 0x5b, 0x19, 0xa3, 0xe0,
-  0xb0, 0xbd, 0x65, 0xb7, 0xfb, 0x70, 0xaa, 0xcb, 0x56, 0xc3, 0x81, 0xab,
-  0x4c, 0xbb, 0xc6, 0xa7, 0x61, 0x05, 0xea, 0x5d, 0x18, 0xbb, 0x24, 0x78,
-  0xcf, 0xba, 0x23, 0xf7, 0x26, 0x44, 0xb6, 0xb7, 0x10, 0x15, 0xb6, 0x21,
-  0x86, 0xc9, 0x79, 0x51, 0xc9, 0xda, 0x72, 0x2f, 0x3a, 0x23, 0xd1, 0xa9,
-  0x1f, 0xf4, 0x34, 0xd9, 0xbc, 0x2a, 0x8a, 0x71, 0x5a, 0x6e, 0xea, 0x12,
-  0x22, 0xf2, 0x4f, 0x0d, 0x4e, 0x45, 0x30, 0x23, 0xaa, 0x8e, 0xe1, 0x7c,
-  0x45, 0xcf, 0xc5, 0x3e, 0xaa, 0x50, 0xa3, 0x6e, 0x47, 0x5c, 0xba, 0xef,
-  0xb8, 0x1f, 0xe0, 0x6f, 0x56, 0x2c, 0xb4, 0xe4, 0x66, 0x04, 0x31, 0x9c,
-  0xa6, 0x62, 0x88, 0x90, 0x52, 0xa7, 0x4b, 0xd3, 0xdf, 0x2e, 0x12, 0xef,
-  0x73, 0xe9, 0x0d, 0x24, 0x76, 0x83, 0x34, 0x09, 0x8b, 0x45, 0x61, 0x55,
-  0xf4, 0x33, 0xd1, 0x82, 0xe1, 0xc6, 0xb3, 0x78, 0x1c, 0x80, 0x17, 0x62,
-  0x6f, 0xd0, 0xeb, 0xd4, 0xd4, 0x50, 0xa3, 0xc3, 0x41, 0x72, 0x80, 0xf5,
-  0x17, 0x21, 0xaa, 0x78, 0xfd, 0x17, 0x3c, 0x7f, 0xd8, 0x49, 0x12, 0x71,
-  0x16, 0x6b, 0xc1, 0xa1, 0xca, 0x16, 0xee, 0x52, 0x0e, 0x42, 0x38, 0xaa,
-  0x46, 0x8d, 0xfb, 0x11, 0x4a, 0xa1, 0xe1, 0x12, 0xfd, 0x17, 0xec, 0xa3,
-  0x75, 0x91, 0x33, 0x9e, 0x0d, 0x81, 0xe6, 0xf2, 0x85, 0x84, 0x43, 0xd0,
-  0x96, 0x01, 0xe2, 0x94, 0x95, 0x59, 0x31, 0x97, 0xed, 0xc6, 0x63, 0xea,
-  0xab, 0x68, 0x4c, 0xf4, 0xd1, 0xc0, 0xfd, 0xe4, 0xec, 0x45, 0x09, 0x26,
-  0x8b, 0xba, 0xe0, 0x55, 0x83, 0x48, 0x6d, 0xe0, 0x01, 0xf6, 0x74, 0xd2,
-  0x7a, 0x6a, 0xdc, 0xad, 0xc4, 0x35, 0xcf, 0x16, 0x23, 0x4e, 0x5c, 0xf9,
-  0xbb, 0x82, 0x7b, 0xfc, 0x25, 0xd3, 0xad, 0x2b, 0xb0, 0x25, 0xe1, 0xf5,
-  0x89, 0xe8, 0x4d, 0xbd, 0x4b, 0x1e, 0x55, 0x33, 0xb0, 0x2d, 0x21, 0xf3,
-  0x34, 0x9c, 0x06, 0xff, 0xe3, 0x0c, 0x4a, 0x79, 0x2b, 0xf8, 0x4a, 0xca,
-  0xad, 0x60, 0x68, 0xe8, 0x04, 0x44, 0x2a, 0x28, 0x07, 0xda, 0x19, 0x40,
-  0x4a, 0xdb, 0xb2, 0x2a, 0xb2, 0x06, 0x40, 0xb3, 0x95, 0x2f, 0x05, 0xf1,
-  0xf7, 0x49, 0xd2, 0xcf, 0xc4, 0x1f, 0xae, 0x89, 0x2e, 0x01, 0xc8, 0xa2,
-  0x80, 0x51, 0x74, 0xaf, 0xdc, 0x35, 0xbd, 0x84, 0x87, 0x43, 0x33, 0xd3,
-  0x04, 0x9c, 0x6f, 0x69, 0x69, 0xad, 0x6b, 0xbb, 0x03, 0xb2, 0xd7, 0xa7,
-  0xf1, 0x01, 0xc3, 0x8d, 0xc3, 0xb5, 0xc8, 0xee, 0x65, 0xa3, 0x60, 0x9f,
-  0xb0, 0x72, 0xc3, 0xdb, 0x68, 0xaa, 0x3e, 0x83, 0x09, 0x34, 0x6a, 0x81,
-  0x49, 0xf2, 0x13, 0x6d, 0xaf, 0x33, 0xb6, 0x33, 0x4b, 0xa3, 0x4f, 0xf3,
-  0x6f, 0xaf, 0xdd, 0x23, 0xc8, 0x13, 0xbc, 0x2a, 0xd8, 0x4e, 0x57, 0x05,
-  0x28, 0x9a, 0x07, 0x06, 0x4f, 0x49, 0x5c, 0x04, 0xd0, 0x46, 0x99, 0xd7,
-  0xb4, 0xd2, 0x9c, 0xd2, 0xb1, 0x4c, 0xc7, 0x23, 0xdb, 0xc4, 0x69, 0x06,
-  0x8f, 0xee, 0x94, 0x4b, 0xf5, 0xe2, 0xeb, 0x3e, 0xe9, 0xbb, 0xe9, 0x55,
-  0xf1, 0x27, 0xe1, 0x13, 0x95, 0xba, 0xa6, 0x41, 0xf0, 0xea, 0x76, 0xdc,
-  0x34, 0x32, 0xcd, 0xf0, 0x35, 0x38, 0xe8, 0xe3, 0x32, 0x2b, 0x59, 0x81,
-  0xa9, 0xfc, 0xdd, 0x41, 0xe3, 0x1d, 0x36, 0xf5, 0xe8, 0x2f, 0x86, 0xbb,
-  0xdb, 0xb1, 0x29, 0x85, 0xed, 0x71, 0xf4, 0xcd, 0x09, 0xbc, 0x48, 0xb3,
-  0x9c, 0x44, 0x68, 0x5f, 0x3e, 0x23, 0xc3, 0x91, 0xa4, 0x57, 0x77, 0x93,
-  0x5e, 0xe7, 0x0b, 0x33, 0x41, 0xc2, 0xb4, 0x01, 0x17, 0xf9, 0xe2, 0x99,
-  0x16, 0x6f, 0x74, 0x6a, 0x2a, 0x47, 0x21, 0xb9, 0x2a, 0xa9, 0xdd, 0x84,
-  0x0e, 0xfa, 0x95, 0x7a, 0xaf, 0x69, 0xf7, 0xdc, 0xe1, 0xd3, 0x7c, 0xe1,
-  0x31, 0x7c, 0x22, 0x85, 0x53, 0x89, 0xa6, 0x0b, 0x12, 0x35, 0x72, 0x5a,
-  0xf9, 0x45, 0x96, 0x0c, 0xe2, 0xac, 0x3a, 0xd8, 0x88, 0x02, 0x69, 0xf8,
-  0x7e, 0x77, 0x62, 0xbf, 0x9c, 0xe4, 0x16, 0x1c, 0xc5, 0x5f, 0xc4, 0xa1,
-  0xee, 0x2c, 0xea, 0xba, 0x68, 0xdb, 0xe9, 0x9a, 0xe6, 0x78, 0x60, 0xff,
-  0x4d, 0x71, 0x5a, 0x13, 0xda, 0xe0, 0x6c, 0x21, 0xc2, 0x67, 0x91, 0xd6,
-  0x8d, 0xa6, 0x3c, 0xd8, 0x95, 0x7f, 0x92, 0x46, 0x60, 0x15, 0x07, 0x21,
-  0xa4, 0x4b, 0xe3, 0x25, 0xb2, 0x35, 0x93, 0xaf, 0x12, 0xc5, 0x10, 0xd1,
-  0x1e, 0x4f, 0xc3, 0xd0, 0x06, 0x6e, 0x21, 0x74, 0x1e, 0x17, 0x2a, 0xa6,
-  0xa1, 0xbb, 0x39, 0x00, 0x79, 0xc2, 0xd9, 0x93, 0xed, 0x37, 0x81, 0x1b,
-  0x06, 0x59, 0xe4, 0x11, 0x70, 0xe2, 0xe5, 0xc7, 0x67, 0xef, 0x57, 0x4e,
-  0xde, 0x47, 0x66, 0xef, 0x12, 0xca, 0x02, 0x29, 0xbe, 0x40, 0xa9, 0xbd,
-  0x0c, 0x70, 0x53, 0x1c, 0xf6, 0x10, 0xdc, 0xae, 0xc7, 0xa1, 0x34, 0x8f,
-  0x66, 0x10, 0xbc, 0x7a, 0xf9, 0x0f, 0x5b, 0x75, 0xec, 0x46, 0xeb, 0x7d,
-  0x77, 0x73, 0x12, 0xc4, 0x58, 0x0c, 0x1b, 0xc0, 0x64, 0x55, 0x34, 0xf1,
-  0x3a, 0x7d, 0x2d, 0xfb, 0xb0, 0x54, 0x8f, 0x9d, 0x9e, 0xbd, 0x0e, 0x0b,
-  0xa5, 0x61, 0xa8, 0x4c, 0x4d, 0x51, 0x8c, 0xc6, 0xf7, 0x95, 0x49, 0xf1,
-  0x8f, 0x0e, 0x4e, 0x46, 0xa7, 0xca, 0x08, 0xf0, 0x7d, 0xa1, 0xba, 0x1a,
-  0x06, 0xdd, 0x3a, 0x62, 0x80, 0x26, 0xc9, 0x3c, 0x56, 0x9a, 0xb7, 0xa3,
-  0x09, 0xf8, 0xed, 0x7e, 0x73, 0xc2, 0x52, 0xb5, 0xe4, 0x44, 0xd0, 0xaf,
-  0x9f, 0xab, 0x9c, 0x67, 0xca, 0x96, 0x8f, 0xcd, 0xf1, 0xce, 0xe5, 0xfb,
-  0xff, 0xfb, 0x10, 0x11, 0x8d, 0x71, 0xd8, 0x6a, 0x0c, 0x53, 0x23, 0x98,
-  0x7e, 0x53, 0x5c, 0x33, 0xc6, 0x84, 0x9d, 0xd5, 0x7f, 0x5b, 0x21, 0xb4,
-  0x7b, 0xbd, 0x4e, 0x08, 0xe0, 0x82, 0xe2, 0x50, 0x25, 0x47, 0xe1, 0x66,
-  0xd0, 0xf7, 0xa9, 0x69, 0xec, 0x72, 0x6f, 0xa4, 0x0f, 0x80, 0x17, 0xd4,
-  0x4d, 0x2b, 0x3b, 0xf1, 0x91, 0xcd, 0xea, 0xb6, 0x67, 0x6b, 0x67, 0x8e,
-  0xb3, 0xd0, 0x0a, 0x89, 0x77, 0x20, 0xdd, 0x54, 0xd9, 0x2c, 0xbb, 0x56,
-  0x3f, 0xd3, 0xf1, 0xf7, 0xc7, 0xa7, 0x91, 0x72, 0x55, 0xcb, 0xcf, 0x5d,
-  0xd8, 0x31, 0x70, 0x47, 0x58, 0xca, 0x6f, 0x5e, 0x89, 0x0f, 0x5d, 0xbe,
-  0xa9, 0x2d, 0x76, 0xe2, 0x55, 0xe9, 0x61, 0xba, 0x9f, 0x32, 0x8b, 0xbe,
-  0x95, 0xec, 0xb5, 0x9b, 0x4a, 0xe2, 0x7c, 0x05, 0x17, 0x9c, 0x6a, 0x59,
-  0xdf, 0x8c, 0x46, 0x3b, 0xb7, 0x59, 0x39, 0x66, 0x62, 0x82, 0x78, 0x43,
-  0x01, 0x44, 0x9f, 0xbc, 0x42, 0xdc, 0x5f, 0x9c, 0xf7, 0xbc, 0xcc, 0x7e,
-  0x24, 0xd1, 0x1b, 0xcb, 0x62, 0x96, 0x4f, 0x1e, 0x92, 0x57, 0xda, 0x33,
-  0xa4, 0x71, 0xf0, 0xa2, 0xc3, 0x73, 0xaf, 0x3e, 0xce, 0xb3, 0xef, 0x06,
-  0x87, 0xa3, 0xc1, 0xab, 0xe3, 0xd3, 0xe3, 0x6f, 0x0e, 0x2f, 0x8f, 0x25,
-  0x09, 0x01, 0x4a, 0x49, 0x95, 0xad, 0x91, 0x3a, 0x6e, 0x3f, 0x7c, 0xa7,
-  0x3d, 0x15, 0x47, 0x13, 0xa3, 0x7f, 0x99, 0x45, 0xe4, 0x36, 0xab, 0x1d,
-  0xe0, 0x99, 0x67, 0x88, 0xc5, 0x75, 0xdd, 0x20, 0xf3, 0x88, 0xc0, 0x35,
-  0xb3, 0xb9, 0x76, 0x35, 0x1a, 0x41, 0x3a, 0xbb, 0xe7, 0x14, 0xd9, 0x77,
-  0x0b, 0x36, 0x47, 0x72, 0x49, 0x18, 0x63, 0xfd, 0xd4, 0x85, 0x2e, 0x7c,
-  0x68, 0xc2, 0xe6, 0xbf, 0xb1, 0xca, 0x80, 0x2c, 0x75, 0xeb, 0x34, 0x82,
-  0x6c, 0xab, 0xc4, 0x84, 0x7a, 0x85, 0x07, 0xd7, 0xe2, 0xba, 0x00, 0x6e,
-  0xd3, 0xdf, 0x45, 0xda, 0xaf, 0x1a, 0x46, 0xd5, 0xe4, 0x26, 0x9b, 0x67,
-  0x66, 0x9c, 0x31, 0x46, 0x00, 0x76, 0x33, 0xac, 0x46, 0x3a, 0x63, 0xf7,
-  0x8c, 0x3c, 0xc1, 0x61, 0x16, 0xe3, 0x02, 0xc8, 0x35, 0x86, 0x72, 0x75,
-  0xa8, 0x48, 0xf7, 0x39, 0x92, 0xe4, 0x04, 0xbe, 0x01, 0x2c, 0x1b, 0x36,
-  0x89, 0x21, 0x42, 0x1b, 0x18, 0x50, 0xa7, 0x43, 0x6b, 0x06, 0x74, 0xdb,
-  0x18, 0x5b, 0xc1, 0x97, 0x25, 0x2e, 0x3d, 0x07, 0x0e, 0x2b, 0x14, 0xd4,
-  0x23, 0x3f, 0x16, 0x38, 0xae, 0xdd, 0x0d, 0xdc, 0x51, 0x1f, 0xa7, 0x88,
-  0x11, 0xe8, 0x8a, 0x06, 0x73, 0x48, 0x74, 0xbc, 0xe8, 0xd1, 0xe6, 0xec,
-  0x48, 0x36, 0x4a, 0x15, 0xd5, 0x04, 0x7f, 0xa3, 0x95, 0x24, 0xdb, 0xd4,
-  0x80, 0x47, 0x25, 0x72, 0x23, 0xf9, 0x04, 0x44, 0x91, 0xb8, 0xc8, 0x72,
-  0x92, 0xa4, 0xd2, 0x41, 0xb6, 0x2c, 0xeb, 0x0e, 0x64, 0xa3, 0x60, 0xfb,
-  0x9c, 0xe3, 0x51, 0x9f, 0x16, 0xf4, 0xb8, 0xcf, 0xa4, 0x3c, 0x3e, 0xbf,
-  0x10, 0xee, 0x9e, 0x53, 0xfe, 0x8b, 0xa2, 0x17, 0xda, 0x5f, 0x86, 0xed,
-  0xae, 0xb9, 0x0b, 0x88, 0x93, 0xc2, 0xe4, 0x74, 0xf9, 0xfb, 0x06, 0x35,
-  0x13, 0xb4, 0x83, 0xe6, 0xa7, 0xeb, 0x96, 0xc6, 0x88, 0x22, 0xf8, 0x9c,
-  0x63, 0x86, 0x40, 0x57, 0xb8, 0x0f, 0x7d, 0x51, 0x8c, 0xd0, 0x0b, 0x81,
-  0x6c, 0x98, 0x57, 0xfd, 0x8c, 0x7f, 0xc9, 0x81, 0x2d, 0xdd, 0x02, 0x6b,
-  0x22, 0x94, 0x7d, 0x49, 0x85, 0x9d, 0xcd, 0xd0, 0x24, 0xbf, 0x95, 0x94,
-  0xe0, 0x94, 0x48, 0xa9, 0x1f, 0x43, 0x3f, 0x4e, 0xf9, 0x84, 0x18, 0x3c,
-  0xb4, 0xe3, 0x02, 0x6a, 0xa0, 0x46, 0x5a, 0x18, 0x36, 0x0f, 0xd6, 0xa4,
-  0xa0, 0x66, 0x90, 0xa6, 0x8e, 0x41, 0x3b, 0xd7, 0x48, 0x5f, 0x28, 0x7e,
-  0xc8, 0x6a, 0x67, 0x4d, 0x07, 0xf9, 0x16, 0x1c, 0x98, 0x8b, 0xdc, 0xbf,
-  0x9a, 0xc4, 0xe4, 0x62, 0x73, 0x0f, 0x9a, 0x37, 0x2c, 0x1e, 0xc7, 0x2b,
-  0x8d, 0x3f, 0xa5, 0xb3, 0xbc, 0x7e, 0x10, 0x93, 0x4e, 0xbc, 0x03, 0xe6,
-  0xc0, 0xee, 0xca, 0x30, 0xa0, 0x89, 0x37, 0x21, 0x21, 0x03, 0xd5, 0x65,
-  0x8b, 0x3d, 0xbc, 0xd8, 0x1b, 0xa6, 0x9c, 0xaf, 0x54, 0x35, 0xa7, 0x1b,
-  0x84, 0x84, 0x50, 0xce, 0x06, 0xb0, 0x76, 0x45, 0x26, 0x87, 0x13, 0x96,
-  0x75, 0x97, 0x2f, 0x8a, 0xae, 0x5d, 0x25, 0x12, 0x82, 0xba, 0x9a, 0x0a,
-  0x9d, 0x43, 0x73, 0x0b, 0x46, 0x5f, 0x7f, 0x85, 0x5f, 0xf2, 0x1a, 0xa2,
-  0x7d, 0x6c, 0xf3, 0xc9, 0x8d, 0xf2, 0x9d, 0x48, 0x90, 0x92, 0xb7, 0xd2,
-  0x38, 0xbb, 0x49, 0xef, 0xf2, 0xa2, 0x1c, 0x36, 0x32, 0xe2, 0xe3, 0x18,
-  0x47, 0x45, 0xeb, 0xcf, 0x60, 0x4d, 0x5e, 0x18, 0x3e, 0xc0, 0xfc, 0xae,
-  0x60, 0x5f, 0xc3, 0x74, 0x78, 0xac, 0x06, 0x5c, 0xc2, 0xe7, 0x7d, 0x8d,
-  0x24, 0x21, 0xcc, 0x1c, 0x41, 0xb8, 0x81, 0xd5, 0x75, 0xe9, 0xd3, 0xfa,
-  0x64, 0x5a, 0xdd, 0x75, 0x9f, 0xb0, 0xea, 0xee, 0xd7, 0x9f, 0x30, 0x21,
-  0x55, 0xe0, 0x2d, 0x74, 0x7c, 0x3e, 0xfa, 0x3e, 0x71, 0xd0, 0xa0, 0xae,
-  0x9b, 0x53, 0x0e, 0x97, 0x1f, 0x17, 0xb6, 0x5a, 0x70, 0xc0, 0x7e, 0xe3,
-  0x09, 0x73, 0x07, 0x8c, 0xbe, 0xaf, 0xa7, 0xea, 0xfc, 0x70, 0xf4, 0x7d,
-  0xeb, 0x3c, 0xf9, 0x80, 0x67, 0xde, 0x1d, 0x2b, 0x46, 0xaa, 0x7f, 0x69,
-  0x7c, 0x46, 0xdc, 0x5a, 0xe7, 0x56, 0xab, 0xee, 0x3e, 0x65, 0xab, 0x51,
-  0x57, 0xa2, 0xad, 0x16, 0x4d, 0xef, 0x63, 0x5b, 0x2d, 0x5c, 0xa3, 0x8e,
-  0xad, 0x46, 0xed, 0x47, 0x5b, 0xcd, 0xe6, 0xb5, 0x7b, 0xaf, 0xad, 0xdb,
-  0x6a, 0x86, 0x91, 0xcc, 0x64, 0x9b, 0x85, 0xbb, 0x2c, 0xde, 0x61, 0xc1,
-  0xbe, 0xc9, 0xf8, 0xe7, 0x48, 0xad, 0x66, 0x4f, 0x2b, 0x69, 0x68, 0x8f,
-  0xc7, 0xbf, 0x90, 0x77, 0x71, 0xa1, 0x8f, 0x9f, 0xa7, 0xd7, 0x59, 0x2f,
-  0xcc, 0x1c, 0xff, 0x84, 0x2c, 0xc4, 0x47, 0x93, 0xf8, 0x9a, 0x69, 0x7b,
-  0xd0, 0x7b, 0x7c, 0xd2, 0x9e, 0x78, 0x14, 0x3b, 0xee, 0x19, 0x3d, 0x15,
-  0xcd, 0x6c, 0x0b, 0xe3, 0x78, 0x52, 0x1f, 0x4c, 0xef, 0xcf, 0x8c, 0x4d,
-  0xeb, 0x59, 0x07, 0xdd, 0x90, 0x63, 0x3f, 0x39, 0x92, 0x71, 0x9d, 0xe5,
-  0xd6, 0x44, 0xb4, 0x71, 0x5f, 0xc5, 0xe5, 0xac, 0x68, 0x43, 0x90, 0x0c,
-  0xf1, 0x5d, 0x40, 0x9b, 0xf1, 0xaa, 0x98, 0xb5, 0xc5, 0x33, 0x69, 0x44,
-  0x82, 0xf5, 0x3e, 0xd5, 0x6e, 0x1d, 0xa8, 0xd3, 0x57, 0x8c, 0x51, 0xeb,
-  0x94, 0xe6, 0x3e, 0x86, 0xfb, 0x31, 0x9d, 0x31, 0xbb, 0x57, 0x3b, 0xcc,
-  0xc4, 0xb6, 0x86, 0x86, 0x10, 0xa6, 0x50, 0x39, 0xb9, 0x43, 0x29, 0xdb,
-  0x3c, 0x39, 0x08, 0x9f, 0xdc, 0xb0, 0x7e, 0x47, 0x27, 0xe8, 0x31, 0x9c,
-  0xc6, 0x1c, 0xbc, 0x7e, 0x11, 0x84, 0x7c, 0x7f, 0x3a, 0x30, 0x3d, 0xe5,
-  0x97, 0x6e, 0xec, 0x5b, 0x8c, 0xdd, 0x6f, 0xfa, 0xe8, 0x2d, 0x15, 0x2d,
-  0x8c, 0x23, 0x77, 0x62, 0xa1, 0x31, 0xdd, 0xc6, 0xb9, 0x93, 0x1a, 0xc0,
-  0x9a, 0x36, 0x80, 0xf2, 0x07, 0x72, 0xd4, 0x3b, 0x81, 0x87, 0x48, 0x5c,
-  0x10, 0xf4, 0xf5, 0x81, 0x10, 0x2d, 0xe1, 0x36, 0x8c, 0x54, 0x45, 0x0e,
-  0x5a, 0x21, 0xaa, 0x12, 0x7c, 0xd7, 0xf2, 0xe1, 0xe8, 0xe0, 0x73, 0xa0,
-  0xdc, 0xe3, 0xaf, 0x7d, 0x96, 0xb1, 0x4c, 0x64, 0xa4, 0xdb, 0x39, 0xb5,
-  0xd2, 0x25, 0xcf, 0xda, 0x08, 0xfd, 0x9d, 0x4f, 0x0d, 0xff, 0x6d, 0xc5,
-  0xbc, 0x6b, 0x53, 0x88, 0x0b, 0x0d, 0xdf, 0x81, 0x3d, 0x24, 0xce, 0xca,
-  0x9a, 0x0d, 0xdb, 0x39, 0xc9, 0x06, 0xab, 0x01, 0x99, 0x13, 0x2b, 0xf3,
-  0xbd, 0xa0, 0xeb, 0x3d, 0x05, 0xc0, 0x42, 0xe1, 0x8d, 0x81, 0xd2, 0x37,
-  0xf0, 0x9c, 0x0a, 0x92, 0x3a, 0xb9, 0x65, 0x2e, 0x31, 0xc3, 0x48, 0xd9,
-  0x4f, 0xc3, 0x69, 0x60, 0x0a, 0x0d, 0xfa, 0xef, 0x82, 0x15, 0xc7, 0x7f,
-  0x09, 0x09, 0xf8, 0x7c, 0x54, 0x21, 0x53, 0x0f, 0xc6, 0x60, 0xc0, 0xad,
-  0x71, 0x4c, 0xc0, 0x67, 0x2b, 0xcf, 0x39, 0xdf, 0xd3, 0x98, 0xf6, 0x66,
-  0x0f, 0x5d, 0x7b, 0xd2, 0x88, 0x01, 0xc7, 0xab, 0x7c, 0xa6, 0x34, 0x24,
-  0x55, 0x6d, 0xa8, 0x3c, 0x00, 0x16, 0x67, 0xf9, 0xb8, 0x04, 0x5c, 0x05,
-  0x2a, 0x57, 0xc3, 0x51, 0x1b, 0x29, 0xfd, 0x9a, 0xec, 0xae, 0xbb, 0x8c,
-  0xed, 0x50, 0x32, 0x7d, 0xa0, 0x49, 0xab, 0x02, 0x19, 0x0e, 0xce, 0x42,
-  0x3d, 0xc2, 0xb7, 0x17, 0xfb, 0x71, 0xb9, 0x03, 0x6c, 0x93, 0xf3, 0xde,
-  0xe1, 0x8c, 0x91, 0x7c, 0x21, 0x5e, 0x48, 0xf8, 0x4b, 0x17, 0x77, 0x79,
-  0x59, 0x2c, 0x18, 0x83, 0x92, 0xdc, 0xa5, 0x65, 0x8e, 0xdb, 0x82, 0x7a,
-  0xfb, 0xfe, 0xd5, 0xc9, 0x45, 0xb2, 0xc5, 0x2e, 0xb5, 0xf1, 0xc3, 0xba,
-  0x9c, 0x93, 0x9d, 0xac, 0x9e, 0xec, 0x2c, 0x6f, 0xf3, 0x9d, 0x45, 0x55,
-  0x4d, 0xc7, 0xdb, 0x61, 0xe6, 0x3a, 0x7f, 0x92, 0xf7, 0xdb, 0xf9, 0x77,
-  0x47, 0xa3, 0x3f, 0xec, 0xed, 0xb1, 0x24, 0x5f, 0x51, 0xc3, 0x5b, 0x34,
-  0x07, 0xd1, 0xc6, 0xa8, 0x68, 0xa2, 0xe7, 0xc3, 0xaa, 0xd8, 0xc6, 0xf5,
-  0x73, 0x97, 0xe6, 0x33, 0xbb, 0xcf, 0x65, 0xcf, 0x4a, 0x6c, 0x8f, 0x55,
-  0x3e, 0xb8, 0x84, 0xd8, 0x7d, 0x81, 0x70, 0xbb, 0x86, 0x3d, 0xa3, 0x80,
-  0xce, 0xc2, 0x5d, 0xc0, 0x7a, 0xa6, 0x5c, 0x98, 0x8a, 0x66, 0x93, 0x71,
-  0x97, 0x1e, 0x29, 0xd4, 0x67, 0xf6, 0x31, 0x9e, 0x15, 0x71, 0xa6, 0x75,
-  0x64, 0xc4, 0x48, 0xe2, 0xd0, 0x70, 0xa7, 0xe7, 0xd8, 0xd6, 0xf2, 0x85,
-  0xb0, 0xce, 0xe1, 0x9e, 0xba, 0x2b, 0x18, 0xa1, 0x5a, 0x2c, 0xae, 0x56,
-  0x95, 0x33, 0x97, 0x58, 0x4a, 0xda, 0x72, 0x0d, 0x3b, 0x3d, 0xf4, 0xc1,
-  0x72, 0xaa, 0x67, 0xb3, 0x4a, 0x7a, 0x07, 0x3d, 0x9c, 0xab, 0x05, 0x08,
-  0x9f, 0xc4, 0xcb, 0xa0, 0xbd, 0xc2, 0x62, 0xf5, 0x7e, 0xee, 0x25, 0x91,
-  0xc1, 0x54, 0x7b, 0x5f, 0x81, 0x25, 0xe1, 0x5e, 0x2f, 0xf2, 0xbf, 0x4b,
-  0x7e, 0xa4, 0x3b, 0xc0, 0x64, 0xbb, 0x32, 0x8e, 0x8e, 0x65, 0xb5, 0x5f,
-  0x21, 0xee, 0x41, 0x77, 0xe6, 0xa4, 0xef, 0xd2, 0xcf, 0x71, 0x97, 0x32,
-  0xa4, 0x78, 0xa0, 0xfd, 0xde, 0xcf, 0xe8, 0x52, 0xd0, 0x89, 0x0e, 0xfd,
-  0xa5, 0xd9, 0x25, 0x76, 0xe4, 0x48, 0x8e, 0x08, 0xa9, 0x09, 0x25, 0xdd,
-  0xf2, 0x1d, 0xf2, 0x7d, 0x2b, 0x3f, 0x1b, 0xe1, 0x20, 0xbe, 0x49, 0x27,
-  0x09, 0xfd, 0xf5, 0x47, 0xe8, 0x15, 0xdb, 0xeb, 0xcf, 0x18, 0x1d, 0x67,
-  0x24, 0x8c, 0x27, 0x97, 0x0d, 0x8e, 0x50, 0xe7, 0xa5, 0x28, 0xd5, 0x69,
-  0xbf, 0x88, 0x0e, 0x8e, 0xde, 0x56, 0x90, 0x91, 0xe2, 0xf6, 0x75, 0x2e,
-  0x1f, 0xc0, 0x1e, 0x26, 0x31, 0x7b, 0x85, 0x3f, 0x74, 0x34, 0xea, 0x4d,
-  0x87, 0xbc, 0x95, 0xec, 0x2f, 0x16, 0xd6, 0x30, 0x7a, 0x49, 0x82, 0xd0,
-  0x00, 0x73, 0xe7, 0xa9, 0xf5, 0x62, 0x2a, 0x92, 0xd9, 0xa5, 0xc4, 0x0e,
-  0xa7, 0x8e, 0x52, 0x4e, 0xb0, 0x8e, 0xbe, 0x97, 0x06, 0x25, 0x6d, 0x88,
-  0x33, 0x6e, 0x9c, 0x66, 0xea, 0x2a, 0xca, 0xa6, 0x7f, 0x60, 0xd6, 0x0c,
-  0x8d, 0xa0, 0x57, 0xb6, 0x89, 0xe0, 0x0d, 0xd0, 0x9e, 0xba, 0xae, 0xfd,
-  0x8e, 0xc1, 0x45, 0xcd, 0x97, 0x79, 0xd1, 0x95, 0x8b, 0x35, 0xca, 0x66,
-  0x46, 0x97, 0x65, 0xb8, 0xe7, 0x49, 0xf9, 0xb0, 0x64, 0xad, 0x55, 0xde,
-  0xd2, 0xb3, 0x0b, 0x42, 0x40, 0x81, 0x38, 0x87, 0x9c, 0x6a, 0xc3, 0x0e,
-  0x08, 0xbf, 0xff, 0xa2, 0xe2, 0xbf, 0x61, 0xab, 0xd0, 0xd2, 0xd6, 0x38,
-  0x8b, 0xf2, 0x33, 0x4e, 0x77, 0xa0, 0x6d, 0x33, 0x15, 0x30, 0xa4, 0x83,
-  0xcc, 0x46, 0xf0, 0x17, 0x6e, 0xa7, 0x0a, 0x6f, 0x2a, 0xde, 0xc5, 0x9c,
-  0x7c, 0x05, 0x61, 0xc8, 0x5e, 0xb2, 0xed, 0xc0, 0xc4, 0xd0, 0xe7, 0x13,
-  0x13, 0x4f, 0xed, 0xf5, 0x70, 0xd2, 0x8c, 0x1a, 0x2a, 0x57, 0x0b, 0x7c,
-  0xbc, 0x39, 0x53, 0x4e, 0xfc, 0xb6, 0x8f, 0xc1, 0xc5, 0xc9, 0xe8, 0x28,
-  0xe1, 0x03, 0x70, 0xf6, 0xf6, 0xf4, 0x2f, 0xdb, 0xec, 0x33, 0xe4, 0x1b,
-  0x12, 0xc4, 0x95, 0xfc, 0xfd, 0x2e, 0xc1, 0x5d, 0xf5, 0x3d, 0x98, 0xa9,
-  0xe3, 0x68, 0x8b, 0xce, 0x3b, 0xb8, 0xb7, 0x25, 0xf6, 0x60, 0x65, 0x16,
-  0x65, 0x70, 0x7a, 0x91, 0x30, 0xcc, 0x69, 0xc2, 0x11, 0x8c, 0x9d, 0x18,
-  0xd5, 0xc4, 0x2a, 0x26, 0x46, 0xe0, 0x90, 0x4d, 0xa8, 0x2d, 0x4b, 0x4a,
-  0x1c, 0x6b, 0xf9, 0xf4, 0x75, 0x1a, 0x68, 0x2b, 0xdf, 0x82, 0x06, 0x7a,
-  0x2d, 0xce, 0xd7, 0x35, 0x30, 0x3f, 0xa1, 0x15, 0xb2, 0x04, 0x3d, 0xbd,
-  0xdd, 0x53, 0x16, 0xa6, 0x2e, 0x9b, 0x1b, 0x6e, 0x93, 0x45, 0x5d, 0x16,
-  0xcb, 0x87, 0xe4, 0x9b, 0x94, 0x15, 0x22, 0xfe, 0xd6, 0xab, 0x34, 0x9b,
-  0x47, 0xf7, 0x67, 0x55, 0xb0, 0x9f, 0x50, 0x0e, 0x9f, 0xfc, 0xdd, 0x6d,
-  0x67, 0x90, 0x8c, 0x48, 0x80, 0x3d, 0xe1, 0xc9, 0x9c, 0xb2, 0xff, 0xdb,
-  0x76, 0x0f, 0xf6, 0x1c, 0x75, 0x25, 0x8e, 0x8d, 0x19, 0x9f, 0x62, 0x1b,
-  0x62, 0x3b, 0x90, 0x26, 0x64, 0x68, 0x6d, 0x84, 0xad, 0x28, 0x15, 0x40,
-  0x93, 0x25, 0x2f, 0xf8, 0xcf, 0x35, 0xc3, 0x0e, 0x14, 0x4a, 0x38, 0x7f,
-  0x1b, 0x77, 0x3b, 0xbf, 0xac, 0xd8, 0x10, 0xc6, 0x3e, 0x4e, 0xc3, 0xdf,
-  0xc6, 0xd6, 0x1b, 0x8b, 0x1c, 0xba, 0x33, 0xfb, 0xc9, 0xab, 0xe3, 0x0b,
-  0x88, 0x8d, 0xe3, 0xb7, 0xdf, 0xc0, 0xe9, 0x12, 0xc8, 0x61, 0x6e, 0xb2,
-  0x1a, 0x6a, 0xda, 0x7d, 0x90, 0xe2, 0xd4, 0xd6, 0xd1, 0xf9, 0xee, 0xe5,
-  0x1b, 0x19, 0xda, 0xd9, 0xf4, 0x77, 0x05, 0x0e, 0xa7, 0xa2, 0x85, 0x1f,
-  0x1d, 0x86, 0xa3, 0xfb, 0x6d, 0xda, 0x77, 0x38, 0x79, 0x96, 0x7a, 0x4e,
-  0x3d, 0xa2, 0x6d, 0xd5, 0xa1, 0x41, 0x32, 0xdc, 0x33, 0xc8, 0x6e, 0xe4,
-  0x43, 0xac, 0xb7, 0x5f, 0xe2, 0x69, 0x8c, 0x12, 0xea, 0x56, 0x03, 0x13,
-  0x2a, 0x51, 0x8a, 0x08, 0xa6, 0xe0, 0x1e, 0xd8, 0xaa, 0xb6, 0x93, 0xb6,
-  0xe2, 0x6d, 0x7a, 0xf7, 0x5b, 0x73, 0x23, 0x34, 0xef, 0xb2, 0xc8, 0x16,
-  0x16, 0xf5, 0xc5, 0x54, 0x2d, 0x4b, 0x6e, 0xc7, 0x8c, 0xf7, 0xe5, 0xd2,
-  0x6d, 0x4c, 0x3d, 0xad, 0xa9, 0x1a, 0x76, 0xba, 0xcb, 0x23, 0x4f, 0x37,
-  0x9f, 0x4f, 0x89, 0xce, 0x04, 0x6d, 0x46, 0x8b, 0x2a, 0x11, 0x22, 0xb7,
-  0x59, 0xaa, 0xf5, 0x3a, 0xa2, 0x62, 0xa5, 0x8e, 0xc8, 0x6e, 0x7c, 0x7f,
-  0x74, 0xf8, 0xfe, 0xeb, 0x77, 0x6f, 0x5f, 0x9d, 0x1e, 0x6f, 0xb6, 0x77,
-  0xa4, 0x11, 0x3b, 0x55, 0xec, 0xb6, 0xd7, 0xcc, 0xc8, 0x30, 0x09, 0x0a,
-  0x67, 0x1c, 0x0c, 0x17, 0x72, 0xda, 0x59, 0x72, 0xa7, 0x7e, 0xc6, 0xdb,
-  0xc0, 0x99, 0xd5, 0x62, 0x8a, 0x94, 0xfa, 0x60, 0xf0, 0x96, 0xaf, 0xac,
-  0xc1, 0x5e, 0xeb, 0x5f, 0x07, 0x48, 0x2a, 0x63, 0x6d, 0x8e, 0x4e, 0x2b,
-  0x1b, 0xb2, 0x46, 0x13, 0x26, 0xf9, 0x47, 0x9e, 0x4b, 0xb5, 0x61, 0x23,
-  0x33, 0x36, 0x0f, 0xb3, 0x9e, 0x52, 0x87, 0x3a, 0x96, 0xbb, 0x6a, 0xa0,
-  0xc6, 0xb8, 0x15, 0xda, 0xc9, 0x03, 0xed, 0xe4, 0xa4, 0xac, 0x37, 0xfb,
-  0x49, 0x96, 0xc3, 0x72, 0x0b, 0x21, 0xb2, 0x50, 0x3e, 0x23, 0xb5, 0x82,
-  0x61, 0xeb, 0xa9, 0xec, 0xeb, 0x61, 0xf6, 0x21, 0x03, 0xc8, 0x4e, 0xdf,
-  0x3a, 0x52, 0xad, 0xf5, 0x87, 0xa2, 0x04, 0x61, 0xcd, 0x2b, 0xaf, 0xbd,
-  0xca, 0x43, 0x74, 0xeb, 0xc7, 0x58, 0x03, 0xd6, 0x50, 0xd9, 0xf4, 0xbe,
-  0x16, 0x2a, 0xf3, 0xf3, 0xc3, 0xcb, 0x6f, 0x3f, 0xdd, 0x6c, 0xf1, 0x4a,
-  0x3c, 0x2c, 0x17, 0x33, 0x5d, 0xfa, 0xe1, 0x2f, 0x68, 0x57, 0xb7, 0x05,
-  0x86, 0x2a, 0xfb, 0xa6, 0xed, 0x43, 0xdd, 0x0f, 0xd4, 0x7b, 0x55, 0x24,
-  0x55, 0x93, 0xf4, 0x77, 0xa3, 0x6d, 0xec, 0xee, 0x14, 0x18, 0x63, 0xaf,
-  0x27, 0x01, 0x48, 0x5a, 0x40, 0xb7, 0xf1, 0xf5, 0x8f, 0x13, 0x44, 0xd8,
-  0x86, 0x2d, 0x41, 0xe4, 0xed, 0x85, 0xff, 0xba, 0x48, 0x0a, 0xb2, 0x14,
-  0xe2, 0x53, 0x2a, 0x72, 0xca, 0xae, 0x3f, 0xc8, 0x26, 0x0f, 0x71, 0xe4,
-  0x9e, 0x55, 0x0e, 0xf1, 0x61, 0xb7, 0x01, 0x13, 0x77, 0x39, 0xf4, 0x6a,
-  0x2c, 0xe1, 0xe6, 0x6a, 0xc0, 0x1c, 0xf4, 0x92, 0xad, 0x6c, 0x78, 0x4d,
-  0xed, 0xf5, 0xb8, 0x9d, 0xbd, 0x03, 0xfe, 0x73, 0x1f, 0x7f, 0x3e, 0xe9,
-  0x6d, 0x47, 0x6e, 0x83, 0x0a, 0xe2, 0x2b, 0x46, 0xbb, 0x23, 0x3a, 0x17,
-  0xf8, 0x11, 0x4c, 0x37, 0xcd, 0xd7, 0x6d, 0x24, 0x55, 0xf1, 0xba, 0xb2,
-  0x37, 0xfd, 0x44, 0x40, 0x54, 0xde, 0xa4, 0x70, 0x14, 0xb2, 0x4c, 0x28,
-  0x8b, 0x89, 0x64, 0x49, 0x85, 0x48, 0xc0, 0xc9, 0xfb, 0x32, 0xbb, 0x49,
-  0x2b, 0x92, 0x11, 0xab, 0x3a, 0x67, 0xb7, 0x7d, 0xfb, 0xce, 0x5f, 0x31,
-  0x42, 0x5b, 0xf0, 0xbf, 0x34, 0x62, 0xfd, 0xb0, 0xcb, 0x4d, 0xb6, 0xa5,
-  0x15, 0x7f, 0x1d, 0xab, 0x3a, 0xfa, 0xc4, 0x40, 0x99, 0xfc, 0xd7, 0xd0,
-  0xca, 0xc1, 0x7f, 0xc6, 0x8f, 0x85, 0xa4, 0xca, 0x73, 0xa6, 0x2f, 0x40,
-  0x20, 0x21, 0xc9, 0xae, 0x68, 0xc6, 0x72, 0x49, 0xe6, 0x13, 0x20, 0xb3,
-  0xf4, 0x3a, 0xf6, 0x2f, 0xc8, 0x1d, 0xa7, 0x71, 0x51, 0xf7, 0x6f, 0x48,
-  0x10, 0x67, 0x71, 0x81, 0x78, 0xb9, 0xb9, 0xf9, 0x3e, 0x25, 0xbe, 0x05,
-  0xe9, 0x2a, 0x79, 0xb4, 0x22, 0xdb, 0x75, 0xb0, 0x82, 0xe0, 0xb6, 0xcd,
-  0xae, 0x5c, 0x6f, 0x5d, 0x0c, 0x5c, 0x4e, 0x4e, 0xff, 0xd6, 0x93, 0x73,
-  0x05, 0x9f, 0x2c, 0x1d, 0xe8, 0x6e, 0x97, 0xeb, 0x6b, 0x4e, 0x23, 0xaf,
-  0x18, 0xad, 0xc0, 0xf3, 0xb4, 0xc5, 0x0c, 0xa6, 0xc2, 0x90, 0x9b, 0x42,
-  0xb7, 0xde, 0x66, 0xcf, 0x91, 0xa5, 0xb6, 0x21, 0x2d, 0xad, 0xd2, 0x34,
-  0xb0, 0x58, 0xc3, 0x31, 0x4a, 0x55, 0xc0, 0x71, 0x21, 0x49, 0x10, 0xb7,
-  0x51, 0x3f, 0x37, 0x4a, 0x1d, 0x90, 0x60, 0xce, 0xea, 0x49, 0xf0, 0xcb,
-  0x69, 0xa6, 0x7c, 0xda, 0x6d, 0x31, 0x29, 0x15, 0x12, 0xd4, 0x6d, 0x4f,
-  0xdf, 0x3c, 0x59, 0xa8, 0x9f, 0x5f, 0xe1, 0x3e, 0xf0, 0xd0, 0x21, 0x1b,
-  0x81, 0x03, 0x03, 0xd6, 0xc3, 0x2b, 0x49, 0x2a, 0x8d, 0x8e, 0x2f, 0xdb,
-  0xd9, 0x77, 0xc2, 0x0c, 0xe1, 0x12, 0xfc, 0xd4, 0xbb, 0x5f, 0x66, 0xf5,
-  0xaa, 0x5c, 0x54, 0x06, 0xab, 0x7d, 0x73, 0xea, 0x1e, 0x60, 0xd4, 0x22,
-  0x1c, 0x80, 0x91, 0x71, 0xaf, 0x14, 0x89, 0x60, 0x54, 0x17, 0x95, 0xd3,
-  0x60, 0x77, 0xdc, 0xb1, 0x07, 0x57, 0xeb, 0x62, 0x5b, 0x2f, 0x44, 0x09,
-  0xae, 0x0b, 0xde, 0x83, 0x8c, 0xbe, 0x41, 0x24, 0x5c, 0x0c, 0xa9, 0x2d,
-  0x55, 0x50, 0xb0, 0x00, 0xb5, 0x58, 0x0b, 0x69, 0xad, 0x94, 0xc9, 0xdc,
-  0x4b, 0xcd, 0xee, 0xdf, 0xdf, 0xef, 0x06, 0x1a, 0x1b, 0x8b, 0x87, 0xfa,
-  0x1c, 0x78, 0x32, 0x06, 0x55, 0x7a, 0xe5, 0xc8, 0xb9, 0xe8, 0x54, 0xb0,
-  0xc2, 0x59, 0x4c, 0x68, 0x0a, 0x05, 0xa9, 0x87, 0x9f, 0x2d, 0x8a, 0x38,
-  0xe4, 0xb7, 0x9a, 0xf0, 0x41, 0x67, 0x5b, 0xc2, 0x01, 0x68, 0x19, 0x52,
-  0xa1, 0x68, 0xa9, 0xa4, 0x9a, 0xe5, 0x4b, 0x3e, 0x54, 0x65, 0xb1, 0xba,
-  0xbe, 0xa1, 0x89, 0xcc, 0x20, 0x52, 0x71, 0x35, 0x77, 0x05, 0x73, 0x5a,
-  0x6c, 0x23, 0xd0, 0x86, 0xef, 0x98, 0x13, 0x72, 0x9a, 0x6c, 0xb5, 0xda,
-  0x7f, 0xba, 0xbb, 0x87, 0xee, 0x3e, 0xdd, 0xfd, 0x3c, 0xcc, 0x45, 0x72,
-  0x49, 0x1b, 0xca, 0xdb, 0xa5, 0x40, 0x91, 0xc7, 0x01, 0xae, 0x33, 0x36,
-  0xcc, 0x30, 0xaf, 0x19, 0xa9, 0x8c, 0x08, 0x59, 0x6b, 0x2e, 0xcb, 0x80,
-  0xa4, 0x25, 0x5a, 0x63, 0x5c, 0x20, 0xd6, 0x32, 0x85, 0x7b, 0xa0, 0x9d,
-  0x3a, 0x9b, 0x56, 0x89, 0xe5, 0x85, 0xae, 0x4b, 0x70, 0x51, 0x56, 0x9a,
-  0x00, 0x69, 0x8f, 0x24, 0x9d, 0x2e, 0x44, 0x7b, 0x28, 0x34, 0x8f, 0x34,
-  0xa1, 0xe5, 0x92, 0xad, 0x08, 0xd5, 0x68, 0xd3, 0xb2, 0xde, 0x41, 0xee,
-  0x8a, 0xc2, 0x74, 0x26, 0xcc, 0x5a, 0x61, 0xde, 0x87, 0x8b, 0xd7, 0x47,
-  0xad, 0xe6, 0xf6, 0x9f, 0x7c, 0xf1, 0x85, 0x76, 0x22, 0x53, 0x4c, 0x83,
-  0xe7, 0x47, 0x63, 0xa3, 0x5a, 0x90, 0xc0, 0xe2, 0xa4, 0x63, 0x1e, 0x72,
-  0xe0, 0x26, 0x25, 0xcc, 0xd7, 0x21, 0xf5, 0x37, 0x75, 0x4e, 0x37, 0xad,
-  0x62, 0x88, 0x21, 0xbd, 0x94, 0xcc, 0xab, 0x6f, 0x0c, 0xcb, 0x2e, 0x1d,
-  0x40, 0x59, 0x16, 0x58, 0x4f, 0x5c, 0x24, 0x5f, 0x45, 0x51, 0xe3, 0x6b,
-  0x49, 0x65, 0xf9, 0x2b, 0xdf, 0x21, 0xd7, 0x59, 0x1d, 0xa3, 0xd2, 0x94,
-  0x59, 0x25, 0x6a, 0x7c, 0x2d, 0xa3, 0x43, 0xc0, 0x7b, 0xa5, 0xb8, 0xba,
-  0x17, 0x72, 0x41, 0x5a, 0xe2, 0xf6, 0x24, 0x33, 0x46, 0xf9, 0xe4, 0x2b,
-  0x6c, 0xa3, 0x17, 0xca, 0x61, 0xb1, 0xe8, 0x72, 0xcf, 0x7d, 0xa5, 0x1c,
-  0x21, 0xea, 0x8c, 0x04, 0x79, 0x45, 0x5d, 0xa7, 0x56, 0xe6, 0x02, 0x66,
-  0x08, 0xe7, 0x85, 0x40, 0x0b, 0x56, 0xf6, 0x04, 0x25, 0x1a, 0x8d, 0xe2,
-  0x05, 0x52, 0x0a, 0x07, 0x98, 0x50, 0xa3, 0x1e, 0xe1, 0x5a, 0x47, 0x4c,
-  0x47, 0x24, 0xd9, 0x39, 0xdc, 0x9b, 0xae, 0xa9, 0x40, 0x38, 0xaf, 0xab,
-  0x77, 0xc1, 0xbb, 0xc1, 0x44, 0x45, 0x27, 0xff, 0xf8, 0x43, 0x3a, 0x47,
-  0xa1, 0x06, 0x23, 0xe9, 0x84, 0x52, 0xe9, 0x91, 0x27, 0x6a, 0x68, 0x79,
-  0xcc, 0x4c, 0x5f, 0x8f, 0x7d, 0xb2, 0xc9, 0x0f, 0xb5, 0x4f, 0x3e, 0xbf,
-  0xb4, 0x69, 0xc4, 0x1f, 0xa1, 0x5b, 0x1b, 0x1b, 0x53, 0xba, 0xe3, 0x58,
-  0x7a, 0xc4, 0xcd, 0xcc, 0x9f, 0x9a, 0xae, 0xa1, 0xa9, 0xe0, 0x37, 0xc1,
-  0xa3, 0x70, 0xd0, 0x69, 0xcf, 0x0c, 0x5e, 0xbb, 0x9e, 0xbe, 0xfc, 0xaa,
-  0xd1, 0xda, 0xfd, 0xfd, 0x70, 0xfe, 0x60, 0xbf, 0xab, 0x1a, 0x75, 0x67,
-  0x3c, 0x08, 0x58, 0x89, 0xcb, 0x64, 0x4b, 0xf9, 0x14, 0x96, 0x90, 0xf3,
-  0xdc, 0xb3, 0xbc, 0xd3, 0xd5, 0x6e, 0xe9, 0xbc, 0xeb, 0xb8, 0xe9, 0xf4,
-  0x34, 0x5d, 0x17, 0x99, 0x04, 0x59, 0xc7, 0x05, 0x6d, 0x37, 0xdb, 0x48,
-  0x9c, 0x34, 0x50, 0x97, 0xab, 0x49, 0x1d, 0xdf, 0xfb, 0xbe, 0xb8, 0x89,
-  0x30, 0x61, 0x21, 0x40, 0x60, 0xc9, 0xb2, 0x88, 0x92, 0x34, 0x8f, 0xbb,
-  0x31, 0xe0, 0x59, 0x45, 0x9c, 0xf6, 0x49, 0x04, 0x19, 0xd6, 0x66, 0x5f,
-  0xe0, 0x0f, 0x8a, 0x64, 0xf7, 0xc8, 0xeb, 0xb5, 0x53, 0xd9, 0xbb, 0xcf,
-  0xc6, 0x2f, 0xbf, 0xe2, 0x78, 0xc8, 0x07, 0xa4, 0xf1, 0x0b, 0xa9, 0x16,
-  0xef, 0xa3, 0x1d, 0xfe, 0x67, 0x2f, 0x61, 0x13, 0xa6, 0x63, 0x26, 0x69,
-  0xff, 0xad, 0x6b, 0x31, 0xc8, 0x74, 0x0a, 0x5a, 0xbb, 0x2a, 0x8a, 0xb5,
-  0x8d, 0x59, 0xd9, 0x19, 0xcc, 0x44, 0x10, 0xee, 0x96, 0xe8, 0xb3, 0xdf,
-  0x56, 0xb2, 0x95, 0xb0, 0x42, 0x8d, 0xa3, 0xd5, 0x05, 0xa6, 0x86, 0x2a,
-  0x2d, 0x37, 0xa2, 0x01, 0x2b, 0x5f, 0xf6, 0xa5, 0xc2, 0x15, 0xeb, 0x5b,
-  0xeb, 0x27, 0x84, 0x9f, 0x7e, 0xf9, 0x15, 0x92, 0x90, 0xf9, 0xaf, 0x7f,
-  0x76, 0x6f, 0xf3, 0x1f, 0xb4, 0x2f, 0xe9, 0x74, 0xaf, 0x1d, 0x08, 0xfb,
-  0xe3, 0xed, 0xf9, 0x1d, 0xd1, 0x50, 0x4d, 0x19, 0xdc, 0xec, 0x6f, 0xb2,
-  0x81, 0xb7, 0xf9, 0xe7, 0x4d, 0x78, 0xe1, 0xcd, 0xa1, 0x00, 0x22, 0x59,
-  0x28, 0xfe, 0xd3, 0x62, 0x15, 0xe5, 0x1f, 0xd1, 0x96, 0xc3, 0x03, 0x52,
-  0x9a, 0xeb, 0x63, 0x7d, 0xfe, 0xb9, 0xe7, 0x7a, 0xfd, 0x73, 0xcf, 0xf7,
-  0xfb, 0xe7, 0x9e, 0xef, 0xf9, 0xcf, 0xbd, 0xdf, 0xb0, 0xa2, 0x9b, 0xd2,
-  0xbc, 0x6f, 0x3d, 0x68, 0x3c, 0x68, 0xbb, 0xb7, 0xb9, 0xae, 0x69, 0xef,
-  0x7e, 0xcd, 0xed, 0x74, 0xf9, 0x19, 0xe2, 0x5b, 0x57, 0x67, 0x01, 0x09,
-  0x43, 0x34, 0x0f, 0x7e, 0xdc, 0x30, 0x49, 0xa2, 0x90, 0x55, 0xf0, 0x04,
-  0xcf, 0x29, 0x53, 0x09, 0x55, 0x33, 0xb6, 0x26, 0x7c, 0xd0, 0xcc, 0x7d,
-  0xc4, 0xcd, 0xb4, 0xc5, 0x3a, 0xa2, 0x08, 0x98, 0x7b, 0x3d, 0x3a, 0xa3,
-  0xec, 0x1d, 0xbc, 0x5a, 0x95, 0x30, 0xfa, 0x33, 0x91, 0x99, 0x52, 0xbd,
-  0xc3, 0xa8, 0x48, 0xf4, 0x5b, 0x6f, 0x0e, 0xdf, 0xbe, 0x3b, 0x3c, 0x7d,
-  0x34, 0x93, 0x2b, 0x8c, 0xa1, 0x3b, 0x5f, 0x14, 0x54, 0xf2, 0xd0, 0x62,
-  0x65, 0x1c, 0x04, 0x5f, 0xe1, 0x5c, 0x4e, 0xe4, 0x27, 0xbe, 0xd1, 0x7f,
-  0xe9, 0x44, 0xcc, 0xfc, 0xa0, 0x8a, 0xec, 0xeb, 0x90, 0x57, 0xf4, 0x56,
-  0xe4, 0x4f, 0xcf, 0xde, 0xe7, 0xd7, 0x7b, 0xea, 0xca, 0x45, 0x18, 0xa3,
-  0x03, 0x5b, 0xec, 0x50, 0xbd, 0x90, 0xfb, 0xac, 0xba, 0x98, 0xcd, 0x06,
-  0x7b, 0xb4, 0x1f, 0xd4, 0x1b, 0x81, 0x61, 0x82, 0x3a, 0x50, 0x57, 0x6b,
-  0xdd, 0xd2, 0x87, 0x47, 0x47, 0x1e, 0x47, 0xd5, 0xcc, 0xc8, 0x78, 0xc2,
-  0x19, 0x19, 0xbf, 0x9f, 0xa9, 0x8f, 0x89, 0x9b, 0x81, 0x93, 0x9f, 0xb1,
-  0x26, 0x83, 0xba, 0x10, 0x18, 0xe3, 0x0b, 0xed, 0xcd, 0x97, 0x9d, 0xf3,
-  0x48, 0x1d, 0x08, 0xd5, 0x4c, 0xe3, 0xb5, 0x07, 0xa1, 0xf5, 0x48, 0x5d,
-  0xae, 0xe7, 0x87, 0x20, 0x7e, 0x51, 0x4c, 0x9f, 0x9a, 0x0b, 0xfd, 0x08,
-  0x9f, 0x26, 0xe4, 0xd1, 0x60, 0x37, 0xb4, 0xf1, 0x6b, 0xa6, 0x99, 0x73,
-  0x38, 0x5b, 0x48, 0xe8, 0x72, 0x35, 0xa7, 0xed, 0x4b, 0x0a, 0xc7, 0x74,
-  0xb3, 0xd2, 0x68, 0x57, 0x7b, 0xe3, 0x70, 0xe8, 0x0b, 0x88, 0x2b, 0x5d,
-  0x5d, 0x76, 0x8b, 0x09, 0x80, 0x40, 0xf5, 0xc1, 0xb4, 0x13, 0x97, 0xd0,
-  0xef, 0x36, 0x57, 0x7b, 0xa3, 0x13, 0x66, 0xcc, 0x3c, 0x7c, 0x77, 0xf9,
-  0x6d, 0x2f, 0x09, 0x98, 0xce, 0x9b, 0x98, 0x58, 0x32, 0x17, 0xca, 0x3c,
-  0xbb, 0x73, 0xd0, 0xab, 0x52, 0x44, 0x6e, 0x4c, 0x49, 0xd7, 0x8a, 0xbb,
-  0xb5, 0x16, 0xfa, 0xd9, 0xf0, 0xd9, 0x76, 0x6b, 0x61, 0xd6, 0x33, 0x49,
-  0xb4, 0xd9, 0xd9, 0x75, 0x4f, 0x2b, 0x95, 0x01, 0xa3, 0x58, 0x76, 0x3c,
-  0x8b, 0x99, 0xe8, 0xcc, 0xa9, 0x85, 0x12, 0x3a, 0x72, 0x2a, 0x7c, 0x86,
-  0x89, 0x38, 0xd9, 0x18, 0x31, 0xf5, 0x01, 0x1c, 0x3b, 0x8b, 0x86, 0x32,
-  0x13, 0x96, 0x99, 0x70, 0x70, 0xa6, 0x18, 0x74, 0x6c, 0x4e, 0x10, 0xa6,
-  0x6e, 0x62, 0x52, 0xe0, 0x90, 0x0e, 0xd6, 0xd0, 0x5e, 0xde, 0xdb, 0x68,
-  0x0a, 0x84, 0x87, 0x8d, 0x75, 0xb2, 0x2f, 0x24, 0xf3, 0x5c, 0x32, 0xe0,
-  0x02, 0x2a, 0x87, 0xf6, 0x4e, 0x56, 0x9b, 0xec, 0x27, 0xf9, 0x6f, 0xb7,
-  0x0c, 0x80, 0x7a, 0x50, 0x16, 0x1a, 0x64, 0xd0, 0x37, 0xd0, 0x1b, 0xcd,
-  0x60, 0xf2, 0x74, 0xb9, 0x30, 0x55, 0x24, 0xa6, 0xc1, 0x53, 0x1c, 0xf3,
-  0x6e, 0x6d, 0x8d, 0xb6, 0x0d, 0x15, 0x05, 0xd5, 0x58, 0x5b, 0x4b, 0xcb,
-  0x6b, 0x35, 0x6a, 0x5d, 0x76, 0x71, 0x90, 0x48, 0xa3, 0x79, 0x48, 0x83,
-  0x88, 0x4e, 0xf5, 0x3a, 0x09, 0x4e, 0x62, 0x7c, 0xd1, 0x42, 0xfa, 0x4d,
-  0xee, 0xa7, 0xdd, 0x08, 0x6f, 0x51, 0x80, 0x84, 0x64, 0xc0, 0x97, 0x84,
-  0x3a, 0xfa, 0xe1, 0x55, 0x40, 0x67, 0xc7, 0x62, 0x0e, 0xa3, 0xc2, 0x46,
-  0x90, 0x6c, 0x93, 0xc5, 0x3a, 0xe4, 0xbf, 0xf9, 0xa6, 0x51, 0x00, 0xec,
-  0x35, 0xaa, 0x32, 0x66, 0x4b, 0xc7, 0x29, 0x02, 0x8e, 0x5d, 0x5e, 0x4f,
-  0x29, 0xe4, 0x85, 0x92, 0x5d, 0xf0, 0xdb, 0xac, 0xe9, 0x9d, 0x8a, 0x01,
-  0xa3, 0xb5, 0xc1, 0xe5, 0xc5, 0xf4, 0x61, 0x5c, 0x7e, 0x71, 0xef, 0xf3,
-  0x27, 0x5f, 0x24, 0x15, 0xa3, 0x09, 0xf3, 0x70, 0xca, 0x24, 0xb7, 0x6f,
-  0x7d, 0x4e, 0x87, 0xea, 0xcd, 0xe6, 0xec, 0x31, 0xf6, 0x99, 0x8a, 0x93,
-  0x05, 0x70, 0x73, 0x29, 0xda, 0x2e, 0x86, 0xf8, 0xd3, 0x24, 0x5a, 0x7d,
-  0x28, 0xa9, 0x09, 0x84, 0x79, 0x12, 0x27, 0xcc, 0xb0, 0x59, 0x27, 0x0d,
-  0x54, 0x6a, 0x24, 0x1e, 0x2e, 0x8e, 0x2f, 0x2f, 0xe8, 0x3f, 0xa3, 0xcb,
-  0xb3, 0x8b, 0x35, 0x89, 0x38, 0xf5, 0x04, 0x62, 0x8f, 0x27, 0x8d, 0x77,
-  0x0d, 0xd3, 0x54, 0x61, 0x9a, 0x9b, 0x2c, 0x0b, 0xf0, 0xa3, 0x8b, 0x08,
-  0xa9, 0x3a, 0x93, 0xfb, 0x83, 0x1c, 0xff, 0x6a, 0xd8, 0x18, 0xe8, 0x15,
-  0xc9, 0xf2, 0x47, 0x07, 0x26, 0x6b, 0xfe, 0xf8, 0x0e, 0xc1, 0x80, 0x79,
-  0x33, 0xf2, 0x88, 0x9d, 0xd0, 0x46, 0x6f, 0xb5, 0x36, 0x83, 0x77, 0x48,
-  0xae, 0xa1, 0x19, 0x6f, 0xb0, 0x24, 0xf2, 0x76, 0x2b, 0x16, 0x21, 0x73,
-  0x25, 0x17, 0x03, 0x92, 0xe0, 0x4e, 0x8f, 0x3d, 0xdf, 0xb7, 0x8e, 0x06,
-  0xed, 0x23, 0xfb, 0x37, 0xad, 0x9c, 0x0b, 0x87, 0xaf, 0xcc, 0x62, 0x9e,
-  0x89, 0x36, 0x2f, 0x0e, 0x46, 0x93, 0x3a, 0x72, 0x4f, 0x48, 0x12, 0x62,
-  0xd2, 0x05, 0x51, 0x76, 0xb4, 0x01, 0xbc, 0xca, 0x9b, 0x0e, 0x6a, 0x5a,
-  0xe8, 0xee, 0x90, 0x75, 0x21, 0x05, 0x67, 0x56, 0x83, 0x8f, 0x61, 0xd3,
-  0x7a, 0xb5, 0xe9, 0xb6, 0x5a, 0x4b, 0x2a, 0xef, 0xb5, 0xa5, 0x32, 0xe3,
-  0x74, 0xbb, 0x25, 0x0b, 0xa2, 0xf0, 0x86, 0xf6, 0x74, 0xc4, 0xb8, 0x2e,
-  0x13, 0x37, 0xe4, 0x81, 0x3b, 0xd7, 0xa7, 0x64, 0x6d, 0x23, 0x51, 0x20,
-  0x45, 0x72, 0xfc, 0xde, 0xd6, 0x25, 0x17, 0xe8, 0xec, 0xaa, 0x2d, 0x4d,
-  0x1b, 0x4a, 0x52, 0x2c, 0x3f, 0x03, 0x2e, 0x5b, 0x87, 0x73, 0x1c, 0x9c,
-  0xef, 0x04, 0xf0, 0x64, 0xe5, 0xc2, 0x68, 0x8c, 0x7c, 0xaf, 0x5b, 0xf1,
-  0x58, 0x97, 0x59, 0xdb, 0xd6, 0x3e, 0x80, 0x82, 0x15, 0x7d, 0xb2, 0x54,
-  0x1d, 0xa4, 0x3b, 0xa7, 0x20, 0x79, 0xb7, 0x50, 0x70, 0xff, 0xc2, 0x93,
-  0x18, 0xdb, 0x24, 0x72, 0xde, 0x0a, 0xa7, 0xd1, 0xc8, 0xed, 0x34, 0x2d,
-  0xe0, 0xdd, 0xc4, 0x24, 0x74, 0x60, 0x9e, 0xa0, 0xb0, 0x02, 0xe1, 0x62,
-  0x57, 0x8a, 0xb6, 0xa7, 0x2e, 0x00, 0x29, 0x42, 0xd8, 0x82, 0x66, 0xc3,
-  0x45, 0x1f, 0x1d, 0xa5, 0xf3, 0x70, 0x11, 0x45, 0xc4, 0x41, 0x0d, 0xf7,
-  0xb2, 0x81, 0x11, 0xc9, 0x92, 0xc2, 0x30, 0xfa, 0xde, 0x81, 0xab, 0x65,
-  0xac, 0x71, 0x4d, 0x01, 0x01, 0x71, 0x01, 0xfb, 0xac, 0xdc, 0xc3, 0x4d,
-  0x48, 0xb1, 0xa9, 0x70, 0xed, 0xfb, 0x8c, 0x89, 0x27, 0xb1, 0xdf, 0x06,
-  0xf9, 0xf2, 0xe3, 0x10, 0x70, 0x03, 0x9f, 0x73, 0xb7, 0x4e, 0xce, 0x7d,
-  0x2d, 0x1a, 0x2f, 0x7d, 0xaa, 0xd5, 0xf5, 0x35, 0x0a, 0x37, 0xe5, 0x71,
-  0xf2, 0x54, 0x95, 0x78, 0xf7, 0xa3, 0xa6, 0xd0, 0x92, 0x9a, 0xc5, 0x9d,
-  0x76, 0xc3, 0x83, 0x1f, 0x18, 0x5f, 0xd3, 0xad, 0xec, 0xc9, 0x64, 0xd6,
-  0x62, 0x05, 0xd8, 0x9b, 0x2c, 0x8b, 0x11, 0x92, 0xaf, 0x0d, 0x1c, 0xdb,
-  0xb7, 0x52, 0xbe, 0x50, 0x7f, 0x5d, 0x87, 0x63, 0xf8, 0x99, 0xd1, 0x60,
-  0x40, 0x93, 0xb1, 0x33, 0x35, 0xd1, 0x7b, 0x3c, 0xfc, 0x56, 0x63, 0x07,
-  0x3f, 0x1d, 0xee, 0x6f, 0x77, 0xfb, 0x6e, 0x75, 0xf7, 0xb2, 0xde, 0xce,
-  0x39, 0xf7, 0x57, 0x57, 0xbc, 0x31, 0xc8, 0xc4, 0x92, 0x74, 0x0f, 0x49,
-  0x18, 0x28, 0x65, 0x69, 0x3d, 0x09, 0xff, 0x9a, 0xda, 0x56, 0x3c, 0x43,
-  0xed, 0x75, 0xa3, 0x63, 0xf6, 0x09, 0x49, 0x31, 0x50, 0x7e, 0xd3, 0xe4,
-  0x9c, 0xee, 0x16, 0x37, 0xc5, 0x01, 0x4e, 0x9e, 0xde, 0x81, 0x99, 0xc1,
-  0xdd, 0xd8, 0x6e, 0x5f, 0x84, 0x4c, 0xee, 0x84, 0xf8, 0xfc, 0x6b, 0xef,
-  0x92, 0x67, 0xa3, 0x6f, 0x4e, 0x3f, 0xe4, 0xb0, 0x40, 0x49, 0xdd, 0x40,
-  0x16, 0xa0, 0xd4, 0x91, 0xc0, 0xa1, 0x65, 0xdf, 0xb3, 0xc9, 0xd1, 0x8d,
-  0xce, 0xfb, 0x59, 0xaa, 0x2f, 0xbb, 0x0b, 0x80, 0x21, 0x43, 0x74, 0x32,
-  0xab, 0x90, 0x80, 0x79, 0xb5, 0x54, 0xeb, 0x67, 0x5a, 0xdc, 0x2f, 0xc0,
-  0x49, 0x9a, 0xc4, 0xbb, 0x09, 0xdd, 0xe7, 0xb3, 0x33, 0x6c, 0x8a, 0xd3,
-  0xfd, 0xdd, 0xe1, 0x87, 0xb6, 0x38, 0xad, 0xaa, 0xd9, 0x60, 0x32, 0x99,
-  0x3c, 0x22, 0x51, 0x8f, 0x8e, 0x8e, 0xe8, 0x07, 0x47, 0xc8, 0xd3, 0x62,
-  0x76, 0x21, 0xf4, 0xf4, 0xe8, 0x86, 0x5d, 0x35, 0xb3, 0xed, 0x64, 0x74,
-  0xb3, 0xe2, 0x8c, 0x79, 0xea, 0x0d, 0x76, 0xc5, 0x68, 0x74, 0xba, 0x73,
-  0x79, 0x3a, 0x6a, 0xe3, 0xb6, 0xd3, 0x07, 0xb6, 0xf5, 0x60, 0xd3, 0x35,
-  0x2d, 0x17, 0x51, 0xdc, 0xc0, 0x86, 0x60, 0x98, 0x52, 0xdb, 0x57, 0xf2,
-  0x85, 0x4e, 0x06, 0x9e, 0xd5, 0xc2, 0xb1, 0x79, 0x3b, 0xcb, 0x6a, 0x91,
-  0x2d, 0x00, 0xe1, 0x72, 0x2c, 0x6b, 0x08, 0xb0, 0x55, 0xc9, 0xdb, 0xc3,
-  0x4b, 0x2e, 0x86, 0x52, 0x2b, 0x93, 0x49, 0x37, 0xaa, 0xdc, 0x51, 0x69,
-  0x20, 0xed, 0x22, 0x0d, 0xd8, 0x42, 0xed, 0x0e, 0x80, 0x28, 0xca, 0x2b,
-  0x13, 0x8d, 0x02, 0xc1, 0xe9, 0x64, 0x2b, 0xd3, 0x19, 0x1d, 0xb8, 0x1b,
-  0x48, 0x70, 0xd3, 0xfc, 0xcf, 0xaa, 0xb5, 0x20, 0x7b, 0x9f, 0xc5, 0xf7,
-  0x5b, 0xe3, 0xf5, 0x9f, 0x24, 0x07, 0x61, 0x47, 0xbf, 0xfa, 0xcb, 0x6f,
-  0x5f, 0xa6, 0x4c, 0xa5, 0x05, 0x3f, 0x26, 0x5b, 0x23, 0x46, 0x8f, 0x34,
-  0xee, 0x4e, 0xc7, 0x5f, 0x2b, 0x60, 0x78, 0x25, 0x87, 0xa9, 0x68, 0xb9,
-  0xa7, 0xa0, 0xed, 0x96, 0x6b, 0xc0, 0x55, 0x8f, 0xb9, 0x4f, 0x23, 0xb1,
-  0x61, 0x92, 0x22, 0xc8, 0x5f, 0xe4, 0xc2, 0xb6, 0x02, 0xc1, 0x70, 0xcd,
-  0x97, 0xd9, 0x72, 0xf6, 0xe0, 0xd4, 0x34, 0x6d, 0x7e, 0x9d, 0xfd, 0x16,
-  0x6a, 0xfb, 0x61, 0x7a, 0x86, 0xf5, 0xb1, 0x6a, 0xb6, 0x82, 0x0f, 0xa5,
-  0x79, 0xa7, 0xe3, 0x39, 0xd5, 0x2f, 0xb7, 0xca, 0x91, 0xc4, 0x2b, 0xb4,
-  0xdf, 0xb9, 0x42, 0xb2, 0x4b, 0xbb, 0xd7, 0xe3, 0x42, 0x8f, 0xbd, 0x9d,
-  0x06, 0xc5, 0x74, 0xd9, 0x1e, 0x9b, 0x15, 0xd7, 0x5c, 0xca, 0x45, 0x32,
-  0x1f, 0x31, 0x49, 0xc6, 0xd2, 0xdb, 0xf6, 0x4b, 0xc8, 0x0e, 0xd6, 0x52,
-  0x44, 0xcd, 0xc8, 0x92, 0xe8, 0x22, 0x2c, 0x53, 0xdc, 0xbe, 0xb7, 0x74,
-  0x6a, 0x97, 0x3a, 0xd4, 0xb1, 0x1e, 0x2e, 0x54, 0x3c, 0x79, 0x60, 0x4b,
-  0xff, 0x35, 0xdc, 0x41, 0x9a, 0x57, 0x26, 0x14, 0xcf, 0x1a, 0x1b, 0xd6,
-  0x45, 0x33, 0xd3, 0xb4, 0xb3, 0xd8, 0x0b, 0xdd, 0xdf, 0x3a, 0xc2, 0x78,
-  0xd6, 0x76, 0xb7, 0xf5, 0xca, 0xe6, 0xb2, 0xdc, 0x75, 0xe0, 0xfe, 0x50,
-  0x9d, 0x30, 0xca, 0x33, 0x1a, 0x0b, 0x59, 0xe0, 0x9d, 0xb1, 0x9b, 0x5c,
-  0xad, 0xb8, 0x52, 0xbd, 0x61, 0x64, 0x1a, 0x22, 0x9e, 0xdd, 0xf3, 0x8a,
-  0x9a, 0x95, 0x10, 0xd9, 0xa3, 0xf5, 0xbe, 0x92, 0x91, 0xba, 0x93, 0xe1,
-  0xc5, 0xd0, 0xd0, 0x5a, 0x48, 0x84, 0xe2, 0x69, 0xc6, 0xb4, 0x51, 0xdd,
-  0xb8, 0x1d, 0x5e, 0x73, 0x56, 0x8d, 0xca, 0x54, 0xca, 0xb4, 0xda, 0xd5,
-  0x34, 0x63, 0x50, 0x33, 0xeb, 0x49, 0xc3, 0xe4, 0x54, 0xab, 0xae, 0x6f,
-  0x7e, 0xb5, 0x29, 0x52, 0x7a, 0xf3, 0xc5, 0x66, 0xa2, 0x28, 0xe3, 0x98,
-  0xd2, 0x9e, 0x6f, 0x0c, 0x4b, 0x17, 0xd8, 0x14, 0x97, 0xf3, 0xa6, 0x75,
-  0x41, 0x95, 0x76, 0xe9, 0x16, 0x50, 0x09, 0x0b, 0xcd, 0x05, 0xe0, 0x3a,
-  0xe4, 0xa4, 0x11, 0x75, 0xd8, 0xaf, 0xcd, 0x04, 0x5a, 0xa9, 0xef, 0x88,
-  0x38, 0x11, 0x53, 0xc1, 0xc9, 0xb0, 0x65, 0x71, 0xcb, 0x6c, 0xb3, 0x42,
-  0x5e, 0xb5, 0x90, 0x96, 0x77, 0x01, 0x19, 0x7c, 0x99, 0x12, 0x57, 0x49,
-  0x4c, 0xfa, 0xc2, 0xe8, 0xb4, 0x74, 0x32, 0xc9, 0x39, 0x07, 0x01, 0xca,
-  0x21, 0xfd, 0x96, 0xb4, 0x1a, 0x39, 0xe9, 0x3c, 0x6e, 0x76, 0x16, 0xbf,
-  0x68, 0x43, 0xb0, 0xae, 0xb2, 0x94, 0x57, 0x13, 0x14, 0x5b, 0x6d, 0x46,
-  0xba, 0xc1, 0x35, 0x6b, 0x84, 0xd7, 0xb3, 0x62, 0x5c, 0x5c, 0x5d, 0x3d,
-  0xe2, 0x8a, 0x94, 0xc4, 0x2c, 0xb4, 0x21, 0x5b, 0xb4, 0xc7, 0xd9, 0x42,
-  0xfc, 0xde, 0x18, 0xc5, 0x77, 0xa5, 0x6a, 0xcd, 0x50, 0x3c, 0x32, 0x60,
-  0xe2, 0x89, 0xb4, 0x80, 0x50, 0x79, 0xee, 0xbb, 0x94, 0xa6, 0xa0, 0xc2,
-  0xb9, 0xe9, 0x99, 0x0a, 0xbf, 0xf3, 0xbc, 0x3d, 0x55, 0xf2, 0x1f, 0xff,
-  0xf9, 0xd3, 0x2f, 0x1d, 0xb0, 0x7c, 0xb6, 0x6c, 0x14, 0x71, 0x0a, 0xa4,
-  0x8b, 0x64, 0x3e, 0xc3, 0x84, 0x60, 0x35, 0xc4, 0xf3, 0x7e, 0x6b, 0xe9,
-  0x31, 0x05, 0xf5, 0x76, 0xb9, 0x81, 0xc4, 0x28, 0x75, 0x1f, 0x4c, 0x11,
-  0xaf, 0xae, 0x0d, 0x0b, 0xc0, 0x99, 0xdf, 0x60, 0xbe, 0xf0, 0xd1, 0x34,
-  0x97, 0x55, 0x2a, 0x56, 0x7b, 0x7c, 0xa0, 0x1c, 0x39, 0x80, 0x0b, 0xaf,
-  0xaa, 0x9c, 0x7d, 0x77, 0x71, 0xe2, 0x6c, 0xba, 0x60, 0x25, 0xbe, 0xc1,
-  0x4a, 0x44, 0xd3, 0xe6, 0x98, 0xa7, 0xfa, 0x0d, 0xb3, 0xc7, 0x93, 0x72,
-  0xa0, 0x4c, 0x85, 0x08, 0x9f, 0x06, 0x05, 0x1e, 0xfb, 0xbb, 0x06, 0xd3,
-  0x98, 0x3c, 0x4b, 0x1e, 0x65, 0x71, 0xd4, 0x64, 0x72, 0x72, 0x71, 0x58,
-  0x2b, 0x4d, 0x96, 0x38, 0xdc, 0xc3, 0x37, 0xc7, 0x8e, 0x0d, 0x32, 0xda,
-  0xf9, 0x8d, 0xaa, 0xbf, 0x4d, 0xde, 0x48, 0xd0, 0x7d, 0xb8, 0x52, 0xce,
-  0xf7, 0x9e, 0x6e, 0x49, 0x8c, 0x9f, 0x8e, 0x4b, 0x50, 0x59, 0x9b, 0x44,
-  0x60, 0x19, 0xa1, 0x83, 0x9f, 0xb7, 0x53, 0x23, 0xd7, 0xd9, 0xfc, 0xf7,
-  0x4d, 0xcf, 0x9f, 0xd3, 0x49, 0x82, 0xe4, 0x07, 0x11, 0x25, 0xb3, 0x0f,
-  0x4e, 0xfa, 0xbe, 0xb3, 0xfe, 0x8b, 0x36, 0x94, 0x71, 0x07, 0xf1, 0xe3,
-  0xba, 0x7e, 0x7c, 0x7b, 0x7c, 0xf8, 0xca, 0xc6, 0xfb, 0x4f, 0xc9, 0x42,
-  0xf7, 0xfe, 0x9f, 0x71, 0x26, 0xfc, 0x96, 0x2b, 0x33, 0x21, 0xb1, 0x4a,
-  0x76, 0x65, 0x60, 0x67, 0x90, 0x92, 0xcd, 0x14, 0xc9, 0xbc, 0x53, 0x63,
-  0x8b, 0x51, 0x9d, 0x4d, 0x6b, 0x6d, 0xc6, 0xc0, 0x1f, 0x67, 0xbe, 0x3d,
-  0x5f, 0xfe, 0x39, 0xd8, 0xb6, 0x61, 0x92, 0xe3, 0x0b, 0xf9, 0xef, 0x9a,
-  0xbb, 0xe0, 0x18, 0xfc, 0x5e, 0xfa, 0x68, 0x48, 0x4e, 0x77, 0x1d, 0x14,
-  0xbe, 0xbb, 0xcf, 0xc6, 0xac, 0x0b, 0x5d, 0xb3, 0xfa, 0x8c, 0x70, 0x27,
-  0xc9, 0xbc, 0x76, 0xcf, 0x55, 0x64, 0x80, 0x83, 0xc4, 0x55, 0x32, 0xc8,
-  0x82, 0xd6, 0x1b, 0xe8, 0x7d, 0xcd, 0x31, 0xb4, 0x92, 0x6f, 0xd3, 0xa8,
-  0x1c, 0x17, 0x49, 0x88, 0xaa, 0x26, 0x3d, 0xc4, 0x7a, 0xc6, 0x2f, 0xdd,
-  0x18, 0x21, 0x33, 0x5b, 0x68, 0x70, 0x6a, 0xa7, 0xe2, 0x3b, 0xf2, 0xc0,
-  0x7f, 0xf3, 0x54, 0xb4, 0xcd, 0xa2, 0x85, 0x47, 0x69, 0xe8, 0x96, 0x5f,
-  0x81, 0xa8, 0x1a, 0xf1, 0x72, 0x4e, 0x7c, 0xd7, 0x1a, 0xc0, 0x9c, 0xee,
-  0xa8, 0x9f, 0x0c, 0x23, 0x14, 0x8f, 0x1f, 0x30, 0xe7, 0x1e, 0x61, 0x07,
-  0x61, 0x43, 0xd5, 0xe6, 0x31, 0x1a, 0x5a, 0x0d, 0xb9, 0x95, 0x74, 0x37,
-  0xc4, 0xf9, 0x3d, 0x39, 0xa8, 0xc3, 0xeb, 0xd5, 0xd5, 0x95, 0x61, 0xd5,
-  0xc4, 0x34, 0x45, 0x47, 0x7d, 0x89, 0xfb, 0x62, 0x88, 0xc9, 0xd7, 0x39,
-  0x33, 0x4d, 0x31, 0x9d, 0xac, 0xf3, 0xd6, 0xe8, 0x70, 0x7c, 0xe1, 0x2e,
-  0x93, 0xce, 0xa8, 0x33, 0x23, 0x19, 0xd6, 0x59, 0xc9, 0xa6, 0x26, 0x90,
-  0x3b, 0x08, 0x5b, 0xdf, 0xc7, 0x42, 0x58, 0xcb, 0x93, 0x49, 0x52, 0x36,
-  0xd3, 0xfd, 0xb3, 0x4a, 0x22, 0x39, 0xa1, 0x3a, 0x6c, 0x9d, 0x30, 0x12,
-  0xeb, 0xd7, 0xf9, 0x9d, 0x95, 0x74, 0x44, 0xcf, 0x3a, 0x12, 0x28, 0xac,
-  0x13, 0x16, 0xb9, 0x57, 0x8f, 0xbe, 0xb0, 0x13, 0x24, 0xcc, 0xcc, 0x17,
-  0x2c, 0xe7, 0xa4, 0x98, 0x21, 0x13, 0x3b, 0x85, 0x51, 0x77, 0xc0, 0x3b,
-  0xbb, 0x1d, 0x12, 0xf9, 0xb6, 0xa8, 0xea, 0x83, 0x5e, 0xb3, 0x72, 0x8d,
-  0xaa, 0x10, 0xcd, 0x2d, 0xa4, 0x8c, 0x76, 0x03, 0xb9, 0xb5, 0xe5, 0x88,
-  0xd5, 0x55, 0x67, 0x95, 0x2e, 0x17, 0x6a, 0xd4, 0x82, 0xeb, 0xb5, 0xa5,
-  0x00, 0x33, 0x41, 0xd8, 0x3c, 0xd7, 0x5e, 0xa1, 0x5a, 0x12, 0xf7, 0x6c,
-  0xf0, 0x2d, 0xf5, 0xe3, 0xc7, 0xc1, 0xd1, 0xaa, 0x8a, 0xf1, 0xc3, 0xf3,
-  0xc1, 0xb7, 0x68, 0xf2, 0xcf, 0x3d, 0x67, 0x61, 0xcb, 0xa3, 0xfe, 0x57,
-  0x07, 0xbd, 0x35, 0x78, 0xef, 0x90, 0x23, 0xa8, 0x5a, 0x95, 0x46, 0x33,
-  0x02, 0x8f, 0xb9, 0x76, 0x14, 0x94, 0xee, 0xd3, 0xe9, 0x8e, 0xce, 0xb7,
-  0x05, 0xf7, 0xba, 0xb2, 0xe5, 0x34, 0x5b, 0x61, 0x09, 0x54, 0xde, 0x74,
-  0x50, 0x5c, 0x0d, 0x50, 0x66, 0x87, 0x4b, 0x9f, 0x72, 0x28, 0x25, 0x38,
-  0x8e, 0x20, 0x3d, 0x44, 0x7e, 0xcd, 0x74, 0xda, 0x75, 0x2d, 0x2b, 0x30,
-  0xbc, 0x74, 0x16, 0xaa, 0x76, 0x46, 0x97, 0xf4, 0x80, 0xad, 0x1a, 0x7b,
-  0xdd, 0x71, 0xea, 0x71, 0x61, 0x9a, 0xb4, 0x2c, 0x73, 0x92, 0x22, 0x51,
-  0x7d, 0x0e, 0x80, 0xf0, 0xfa, 0x72, 0x73, 0x63, 0xd0, 0x10, 0xbf, 0x73,
-  0x71, 0x16, 0xc1, 0xe0, 0x27, 0x2b, 0xff, 0x4a, 0xea, 0xad, 0x75, 0xc6,
-  0x76, 0x7d, 0xe6, 0x47, 0xbb, 0xfe, 0x2d, 0x52, 0x47, 0x1b, 0x29, 0xe8,
-  0xeb, 0xf8, 0x49, 0xd6, 0x05, 0x79, 0x83, 0x8c, 0x03, 0xdc, 0x0e, 0x8a,
-  0x86, 0xf7, 0x93, 0xbe, 0x23, 0x5a, 0x7a, 0x57, 0x74, 0x84, 0xdf, 0x32,
-  0xe9, 0x17, 0xe8, 0xeb, 0x5c, 0x95, 0x61, 0xb9, 0x1a, 0xcf, 0xa7, 0xcf,
-  0x92, 0x17, 0xf4, 0x47, 0x0c, 0x5f, 0x3e, 0xb2, 0x60, 0x9a, 0xd4, 0xa1,
-  0xe4, 0x7d, 0xa7, 0x19, 0xdc, 0xa2, 0x87, 0xf1, 0x5f, 0x9f, 0xec, 0x53,
-  0xd3, 0x1f, 0x52, 0x23, 0xbd, 0x9f, 0xe6, 0xd7, 0x79, 0x5d, 0x75, 0x19,
-  0xb1, 0xfa, 0xaa, 0x0f, 0x64, 0xf0, 0x44, 0xed, 0xed, 0x7f, 0x91, 0x8c,
-  0xf3, 0x3a, 0x79, 0xf3, 0xea, 0x99, 0xd4, 0x5c, 0xad, 0x56, 0x73, 0x17,
-  0x10, 0x52, 0x8e, 0x72, 0x54, 0x8f, 0xd8, 0x6c, 0x1f, 0x11, 0xea, 0xf8,
-  0x2c, 0x9f, 0x70, 0xc2, 0x5a, 0xbf, 0xe1, 0x42, 0xbb, 0x32, 0x57, 0x5f,
-  0x50, 0x10, 0xc0, 0x6d, 0x3c, 0x6e, 0x49, 0x5d, 0x8d, 0x1d, 0x46, 0x2c,
-  0xcd, 0x01, 0x7d, 0xbe, 0xb2, 0x62, 0x8d, 0x0d, 0xc3, 0xe9, 0xf3, 0xa6,
-  0x43, 0x40, 0xd0, 0xb2, 0xc6, 0x15, 0x35, 0x98, 0x65, 0x8b, 0xeb, 0x75,
-  0xb5, 0x70, 0x4f, 0xf0, 0xa8, 0xd8, 0xf8, 0xfa, 0xf8, 0x29, 0x1e, 0x77,
-  0x29, 0xf2, 0x41, 0xec, 0x87, 0xb7, 0x73, 0x3e, 0x59, 0xcd, 0xb8, 0x72,
-  0x52, 0x7c, 0xc7, 0x33, 0x16, 0x12, 0x1b, 0xd0, 0x8a, 0x30, 0x97, 0x2b,
-  0x29, 0xb2, 0x73, 0xb8, 0x64, 0xc4, 0x58, 0xb2, 0x37, 0xfc, 0xd0, 0x0f,
-  0xab, 0x43, 0x6a, 0x35, 0x07, 0xae, 0x02, 0x19, 0xa5, 0x2a, 0xc2, 0xe9,
-  0xdb, 0xea, 0x10, 0x37, 0x2d, 0x50, 0xbd, 0x19, 0x07, 0x3d, 0x4a, 0xb9,
-  0x06, 0xf6, 0x49, 0x9e, 0x5e, 0xa7, 0xa8, 0x06, 0x14, 0xec, 0x9e, 0x1c,
-  0xf5, 0xc0, 0x85, 0x4b, 0x6e, 0xcd, 0xc0, 0xe5, 0x97, 0x8e, 0x28, 0xc1,
-  0x34, 0x01, 0xd5, 0xdf, 0x15, 0x63, 0x6a, 0xa4, 0x5e, 0xc1, 0x13, 0x71,
-  0x11, 0x4b, 0x6e, 0x07, 0xb4, 0x77, 0x38, 0x85, 0x82, 0xba, 0xd1, 0x49,
-  0x18, 0xf0, 0x0d, 0xdc, 0x67, 0x5d, 0xcd, 0x45, 0x12, 0x3d, 0xba, 0x16,
-  0x8d, 0xc6, 0x30, 0x7a, 0x24, 0x77, 0x18, 0x40, 0x76, 0x38, 0x0c, 0x46,
-  0x75, 0x62, 0x1a, 0x4b, 0xd7, 0x90, 0x98, 0x68, 0x7e, 0xe7, 0xf5, 0xc9,
-  0xe9, 0xf1, 0x76, 0xf2, 0x3a, 0xb3, 0x7c, 0xd0, 0x70, 0x64, 0x2c, 0x2f,
-  0xfe, 0x45, 0x7e, 0x62, 0x2b, 0xa4, 0x06, 0x56, 0x57, 0x7e, 0xba, 0xa3,
-  0x1e, 0x81, 0xa6, 0x28, 0xcb, 0x06, 0xa5, 0x50, 0xb2, 0x60, 0x0a, 0xa0,
-  0xf4, 0xac, 0x9c, 0x80, 0x85, 0xf1, 0x3a, 0x67, 0x08, 0x08, 0x26, 0x5f,
-  0x34, 0xc4, 0x13, 0xd2, 0x16, 0x61, 0x08, 0x9c, 0x7b, 0xae, 0x48, 0x34,
-  0x0b, 0x8b, 0x4a, 0xbd, 0xad, 0x6a, 0x5d, 0x5d, 0xce, 0x2a, 0xff, 0xbb,
-  0x00, 0x77, 0x81, 0x97, 0x98, 0x17, 0x53, 0xc7, 0x3d, 0x29, 0xc5, 0x3d,
-  0x5a, 0x55, 0xd3, 0x07, 0xb8, 0x8a, 0xaf, 0xf8, 0x02, 0xe8, 0x4c, 0xee,
-  0x3c, 0x17, 0xa6, 0x4d, 0xd8, 0x0e, 0x61, 0x18, 0x5e, 0xee, 0x6a, 0x6f,
-  0xa0, 0xb8, 0x66, 0x86, 0x0e, 0xc9, 0x95, 0x2d, 0xea, 0x8e, 0x7d, 0x61,
-  0x5f, 0x93, 0x2d, 0x10, 0xf8, 0xf6, 0x69, 0xb4, 0x38, 0xea, 0x02, 0xa8,
-  0x3b, 0x5c, 0x18, 0xda, 0x26, 0xd1, 0x32, 0x99, 0x48, 0xde, 0x89, 0x8a,
-  0x03, 0x75, 0x20, 0xa2, 0x14, 0xb3, 0x14, 0x8c, 0x8c, 0xd4, 0xdd, 0xdd,
-  0x83, 0xbd, 0xb0, 0xf6, 0xcf, 0x42, 0x2b, 0xdb, 0x31, 0x52, 0x69, 0xe7,
-  0xf7, 0xc3, 0xa4, 0xfc, 0x95, 0xb7, 0xe6, 0x5f, 0x57, 0x8b, 0xdb, 0x81,
-  0x16, 0x97, 0x1d, 0x74, 0xd7, 0x1f, 0xd4, 0xd3, 0xf7, 0x83, 0x0b, 0x4a,
-  0x00, 0x71, 0x20, 0x90, 0xc9, 0xb8, 0xca, 0x6a, 0x1a, 0x30, 0xfb, 0xf5,
-  0x1f, 0xc9, 0xb3, 0xf1, 0x36, 0x65, 0xce, 0xb1, 0x50, 0x1a, 0x30, 0x17,
-  0xb3, 0x63, 0xc5, 0xa0, 0x67, 0xb5, 0x6e, 0xad, 0xe1, 0xde, 0x30, 0x64,
-  0x17, 0x8c, 0xc0, 0x51, 0x95, 0xe6, 0x4f, 0x89, 0xf7, 0xc4, 0x6b, 0xd2,
-  0x1a, 0x6e, 0x48, 0x85, 0x29, 0x8e, 0x6f, 0x6c, 0x5f, 0x45, 0xb7, 0x12,
-  0xf6, 0x5e, 0x9e, 0x8f, 0xd6, 0x6d, 0x29, 0x99, 0x6d, 0x56, 0x4e, 0xa0,
-  0x32, 0xfe, 0x1d, 0xeb, 0x61, 0xd2, 0xee, 0x9c, 0x95, 0x1a, 0xe0, 0x4b,
-  0x7e, 0x33, 0x3a, 0x97, 0x93, 0x59, 0x21, 0xf5, 0x77, 0xee, 0x43, 0xc7,
-  0xd6, 0x7f, 0x93, 0x7b, 0x9b, 0x2f, 0x23, 0x3d, 0xe9, 0x83, 0x0e, 0xec,
-  0x53, 0x48, 0x57, 0x6b, 0xc9, 0x49, 0x48, 0xfd, 0x81, 0x42, 0x70, 0x16,
-  0xb4, 0x21, 0x90, 0x56, 0x97, 0xbf, 0xa4, 0x17, 0x56, 0x27, 0x45, 0xd5,
-  0x20, 0x30, 0xdb, 0x9d, 0xb4, 0x7e, 0x45, 0xc7, 0xb6, 0xa8, 0x72, 0xf1,
-  0xb3, 0x7b, 0x60, 0x5a, 0xe0, 0xf4, 0x8d, 0xb1, 0x27, 0x96, 0xb3, 0xeb,
-  0xb8, 0x44, 0x1c, 0x1a, 0xc7, 0xec, 0xd6, 0x60, 0xc0, 0xb7, 0x22, 0xdb,
-  0xab, 0x2e, 0x2c, 0x91, 0x65, 0xa5, 0x86, 0x01, 0xa3, 0x00, 0x62, 0xa9,
-  0x16, 0x87, 0xab, 0xac, 0xa0, 0x47, 0xbe, 0x67, 0xad, 0xf5, 0xda, 0x6a,
-  0xd3, 0xe8, 0x34, 0xcc, 0xa0, 0x15, 0xbf, 0x9b, 0xa7, 0x58, 0x3a, 0xa4,
-  0x1d, 0x16, 0x3d, 0xc2, 0x3e, 0x57, 0x01, 0xc5, 0x44, 0x26, 0x91, 0xf9,
-  0x29, 0xe6, 0xb4, 0x4a, 0xe6, 0x9f, 0x35, 0x84, 0xab, 0x5c, 0xc1, 0xcd,
-  0xdc, 0x2d, 0x49, 0xc7, 0xc3, 0xc4, 0xa5, 0x0c, 0xca, 0x6f, 0xef, 0xd6,
-  0x07, 0x8b, 0x33, 0xa8, 0x41, 0x65, 0xa8, 0x6a, 0x29, 0xff, 0xe9, 0xfb,
-  0x14, 0x56, 0xfa, 0x58, 0x3f, 0x58, 0xd4, 0x4b, 0xb4, 0x48, 0x67, 0x63,
-  0x92, 0xe3, 0x48, 0x67, 0xa0, 0x56, 0x7a, 0x0f, 0x19, 0x3c, 0x02, 0x48,
-  0x46, 0x46, 0x54, 0x52, 0x6b, 0xea, 0xa9, 0x07, 0x39, 0x71, 0xd8, 0xc2,
-  0xc4, 0x15, 0x37, 0x5b, 0x53, 0xb2, 0x0c, 0x89, 0x84, 0x37, 0xe9, 0x87,
-  0x0f, 0xc3, 0x2a, 0x93, 0xd2, 0x5b, 0x55, 0x35, 0x43, 0xd2, 0x62, 0xb3,
-  0x56, 0xd9, 0xe0, 0x3b, 0x2d, 0x54, 0x78, 0x95, 0x5f, 0x33, 0xf6, 0x0d,
-  0xff, 0xed, 0x4a, 0xd1, 0xb6, 0xdc, 0x6c, 0xad, 0xf7, 0xe6, 0x1f, 0xf4,
-  0x52, 0x07, 0x2c, 0x43, 0x8a, 0x00, 0x12, 0xe1, 0xa3, 0x04, 0xc6, 0x93,
-  0x38, 0xf7, 0x83, 0xdf, 0x56, 0xd8, 0x04, 0x68, 0x1c, 0x15, 0x87, 0x8e,
-  0x95, 0x72, 0xdf, 0x08, 0x8a, 0x74, 0xfa, 0x76, 0x45, 0x65, 0x6e, 0x1b,
-  0x1e, 0x5a, 0xe2, 0xd2, 0xee, 0xd8, 0x6c, 0xd1, 0x10, 0xb2, 0x2a, 0x73,
-  0x44, 0xef, 0x67, 0x58, 0xba, 0x3d, 0x6f, 0x10, 0x8e, 0xb6, 0xe1, 0x21,
-  0x85, 0x9c, 0xc2, 0x1e, 0x0c, 0x93, 0xb3, 0x65, 0xb0, 0x81, 0x6f, 0xb2,
-  0xbc, 0xf4, 0x1e, 0xe9, 0xca, 0x19, 0x72, 0x38, 0xcd, 0xf1, 0x60, 0xe5,
-  0xa6, 0x0e, 0x6a, 0x5b, 0x2c, 0x82, 0x09, 0x90, 0x8a, 0x16, 0xe6, 0xd2,
-  0x32, 0x54, 0x2b, 0x0d, 0x85, 0xf4, 0x31, 0x52, 0xfb, 0x22, 0xf2, 0x24,
-  0x33, 0x56, 0x91, 0x9b, 0xcb, 0xbc, 0xa8, 0x15, 0xf2, 0x20, 0x84, 0x2a,
-  0xe8, 0xa1, 0xe1, 0xf2, 0x82, 0xcb, 0x99, 0x94, 0x87, 0x2d, 0xa5, 0xc1,
-  0xef, 0x4a, 0xc4, 0x13, 0xa7, 0x4e, 0x89, 0x3b, 0xcb, 0x48, 0xa9, 0x15,
-  0x79, 0x13, 0xb4, 0x2e, 0x75, 0x64, 0x85, 0xd5, 0x2b, 0xf0, 0xc3, 0x77,
-  0x80, 0xd6, 0x2c, 0x81, 0x3a, 0x18, 0x80, 0xcb, 0xe8, 0xb7, 0x37, 0xb5,
-  0xd4, 0xdf, 0x18, 0x14, 0x0a, 0x2a, 0x93, 0x15, 0x8b, 0xdb, 0x6a, 0x4e,
-  0x50, 0xbd, 0xa4, 0xf2, 0x08, 0x50, 0x57, 0x90, 0xbc, 0x89, 0x61, 0x7d,
-  0x9b, 0xec, 0xd6, 0xca, 0x2d, 0x52, 0xb1, 0x4b, 0x6e, 0x31, 0x11, 0x7e,
-  0xf5, 0x75, 0x8c, 0x0c, 0x64, 0xe3, 0xff, 0xfc, 0x73, 0x3f, 0x61, 0x8a,
-  0x93, 0x9f, 0x49, 0x8f, 0xfc, 0x99, 0x26, 0xf4, 0x67, 0x21, 0xe3, 0xfe,
-  0xf9, 0x8e, 0xa4, 0x52, 0x00, 0x11, 0xf6, 0x44, 0xcb, 0x31, 0xca, 0x4b,
-  0x02, 0x8c, 0x4a, 0x30, 0xcf, 0xae, 0x39, 0xc9, 0xb1, 0x73, 0x73, 0x25,
-  0x3e, 0x3d, 0x5a, 0xb0, 0xd5, 0x7c, 0xa1, 0x9c, 0x22, 0xb2, 0xf4, 0xd8,
-  0xd4, 0xd1, 0x55, 0x9c, 0x26, 0xc9, 0xe6, 0x1f, 0x36, 0x3d, 0x39, 0x4a,
-  0xc0, 0x58, 0xaf, 0x9a, 0x2f, 0xde, 0xb3, 0xad, 0x5d, 0x6b, 0x8d, 0x57,
-  0xd8, 0xc9, 0x5d, 0xd1, 0x5a, 0x28, 0x8b, 0x67, 0x6c, 0xe3, 0x4a, 0x51,
-  0xe3, 0xc2, 0x97, 0xbb, 0x65, 0xf3, 0x3c, 0x59, 0xde, 0x3c, 0xe0, 0xb2,
-  0x96, 0x3d, 0x18, 0x90, 0xaf, 0x4a, 0x2f, 0x3b, 0x78, 0xf1, 0x63, 0xf1,
-  0xd5, 0xe0, 0x6c, 0xf0, 0x57, 0x15, 0x47, 0x3e, 0x42, 0xd9, 0x42, 0x7d,
-  0xdc, 0x1c, 0x6c, 0x36, 0x29, 0xc9, 0xd6, 0x54, 0x0b, 0xf1, 0xa4, 0x3d,
-  0x52, 0x2b, 0x64, 0x3d, 0x38, 0x5c, 0x33, 0x89, 0xc7, 0x22, 0x85, 0x9c,
-  0x6b, 0x10, 0x4e, 0x5a, 0x33, 0x42, 0xc2, 0xb3, 0xd6, 0xef, 0x42, 0xcf,
-  0x80, 0x5c, 0x4e, 0x58, 0x4b, 0x6d, 0x2c, 0x79, 0x9d, 0x04, 0x37, 0xca,
-  0x80, 0x79, 0xec, 0x5d, 0xec, 0x82, 0xb7, 0x08, 0x8a, 0x8b, 0x3e, 0x70,
-  0xb6, 0xc4, 0x32, 0xb2, 0xe2, 0x78, 0xa6, 0xed, 0x4d, 0xee, 0x47, 0x01,
-  0xf7, 0x4f, 0xc2, 0x41, 0x51, 0x91, 0x23, 0xa3, 0xa2, 0x2f, 0x94, 0xbd,
-  0x4e, 0x4f, 0x4d, 0x5c, 0xde, 0x45, 0x7c, 0x9c, 0x3a, 0x53, 0x0f, 0xb8,
-  0x3f, 0x2f, 0x93, 0xde, 0x5a, 0x59, 0xdf, 0x6b, 0xbf, 0x70, 0xca, 0x89,
-  0xe0, 0x0e, 0xbb, 0x24, 0x64, 0x20, 0x92, 0x4b, 0x62, 0xec, 0x5f, 0x33,
-  0xae, 0xb5, 0xa2, 0xaa, 0xa2, 0x2f, 0xdf, 0x69, 0x42, 0x7e, 0x8d, 0x6f,
-  0x4d, 0x9c, 0x92, 0xc2, 0xd8, 0xa6, 0x27, 0x93, 0xcb, 0x35, 0xaf, 0x2b,
-  0xa1, 0x61, 0xca, 0x2a, 0xe7, 0xe5, 0xdd, 0x2a, 0x8f, 0x98, 0xaa, 0x73,
-  0x5b, 0x76, 0x69, 0xfe, 0xcd, 0x2e, 0xca, 0x6d, 0x75, 0x17, 0x08, 0x72,
-  0x70, 0x1d, 0x07, 0x55, 0x53, 0x92, 0xc2, 0xd8, 0x82, 0x71, 0x95, 0xc3,
-  0xf5, 0x7b, 0x55, 0xac, 0x16, 0xd3, 0x26, 0x9a, 0x60, 0xed, 0xce, 0xe6,
-  0xef, 0xe2, 0x8b, 0x4a, 0x66, 0x66, 0x59, 0x01, 0x4e, 0xba, 0xc0, 0x07,
-  0xa3, 0x08, 0x7e, 0xd6, 0x00, 0x99, 0x04, 0x2a, 0x5a, 0x99, 0xbd, 0x6d,
-  0xd5, 0x8c, 0x50, 0x70, 0x0d, 0x25, 0x5c, 0xd5, 0x49, 0xd8, 0xbb, 0x29,
-  0x24, 0xfb, 0xbf, 0x77, 0xc0, 0x25, 0x61, 0xd5, 0xdb, 0xaf, 0x63, 0x74,
-  0x61, 0xea, 0x36, 0xda, 0x85, 0xe9, 0x15, 0xbe, 0x3d, 0x7b, 0x73, 0xec,
-  0x30, 0x89, 0x62, 0x92, 0xf2, 0x4f, 0x3a, 0x19, 0x60, 0x86, 0x08, 0x2c,
-  0x5b, 0x56, 0x67, 0x3f, 0x66, 0x8a, 0xc6, 0xec, 0x90, 0xdd, 0xb9, 0xbc,
-  0x5f, 0xe5, 0xd3, 0x2d, 0x64, 0xde, 0xbe, 0x7b, 0x7b, 0xf2, 0xe3, 0x00,
-  0x16, 0xb7, 0x16, 0xb1, 0xb7, 0xd4, 0x53, 0xcb, 0x5a, 0x95, 0x62, 0x31,
-  0xc5, 0xbc, 0x23, 0x85, 0xdb, 0x78, 0xc3, 0x43, 0x7a, 0x2d, 0xe0, 0xe8,
-  0xf3, 0x85, 0xf8, 0xbc, 0xa5, 0xc9, 0x6d, 0x16, 0x43, 0x24, 0xc3, 0x41,
-  0xbf, 0x80, 0x75, 0xef, 0xc0, 0x57, 0x06, 0xeb, 0xcd, 0xcd, 0x1d, 0x9e,
-  0x9f, 0xbf, 0x3a, 0xbc, 0x3c, 0x74, 0x63, 0x03, 0xdd, 0x01, 0x44, 0x1d,
-  0x0c, 0x29, 0xd6, 0x8e, 0xb4, 0xdc, 0xc7, 0xe6, 0x1f, 0x19, 0x7c, 0xdf,
-  0x96, 0x7e, 0xe7, 0x17, 0x67, 0x6c, 0x10, 0xff, 0xf1, 0xe7, 0x43, 0x5f,
-  0xbb, 0x0b, 0xf5, 0x3c, 0xe2, 0x0a, 0x4a, 0xfb, 0xa4, 0xef, 0x9e, 0x2d,
-  0x1c, 0x3f, 0x44, 0xdf, 0x45, 0x6b, 0x25, 0xcb, 0x35, 0x79, 0xcf, 0x6b,
-  0x5a, 0x4e, 0x9c, 0x82, 0x22, 0x9e, 0x26, 0x59, 0xce, 0x7e, 0x8c, 0xda,
-  0x0a, 0x06, 0x02, 0xf8, 0x5f, 0x93, 0xfd, 0xc1, 0xe6, 0x6a, 0x46, 0x5a,
-  0x35, 0xa9, 0x86, 0x35, 0xc4, 0x17, 0xe3, 0x5b, 0x78, 0x7f, 0x4d, 0x79,
-  0xa2, 0xda, 0x1c, 0x47, 0x6e, 0x7d, 0x6c, 0x81, 0x24, 0xab, 0x18, 0xd7,
-  0x80, 0xc8, 0x20, 0x41, 0xe5, 0x15, 0xc2, 0xed, 0x3e, 0xb4, 0xde, 0xaa,
-  0xee, 0x1f, 0x9d, 0x1d, 0xf1, 0x36, 0xd3, 0x3e, 0xb7, 0x31, 0x44, 0x13,
-  0xf2, 0x07, 0x12, 0x7a, 0x03, 0xcb, 0xfa, 0x93, 0x61, 0xd3, 0x0f, 0xa2,
-  0x87, 0x6a, 0x63, 0xb0, 0x86, 0xaa, 0x14, 0xfb, 0x83, 0x55, 0x4e, 0x85,
-  0x02, 0xaa, 0xad, 0x31, 0x6b, 0x22, 0xb8, 0x3e, 0x85, 0xb2, 0x37, 0x48,
-  0x23, 0x8b, 0x7d, 0x63, 0xe6, 0x69, 0xa5, 0x47, 0xab, 0x15, 0x3b, 0x17,
-  0xf8, 0x5f, 0x3b, 0x7b, 0xc3, 0xdd, 0x5e, 0xdc, 0x7b, 0x40, 0xba, 0xe0,
-  0xc1, 0x31, 0xf2, 0x44, 0xe1, 0xc3, 0x2c, 0x3e, 0xde, 0x41, 0x2d, 0x54,
-  0x9b, 0x2e, 0x10, 0x87, 0xea, 0xea, 0xcb, 0xe0, 0x2c, 0xf2, 0xb4, 0x89,
-  0xc7, 0xd7, 0x8b, 0xe4, 0x45, 0x81, 0xf4, 0xc7, 0x94, 0x6d, 0x0e, 0x78,
-  0x0d, 0x7a, 0xdd, 0x13, 0xbc, 0x98, 0x4a, 0xf4, 0xaa, 0x35, 0xcf, 0xbf,
-  0x29, 0x2d, 0xc8, 0xad, 0x7f, 0xe0, 0x48, 0x5e, 0x2b, 0xed, 0x1a, 0x6e,
-  0xe2, 0xdb, 0x8c, 0x14, 0xbf, 0x19, 0xb2, 0x60, 0xd8, 0xe9, 0xb3, 0xae,
-  0xee, 0x6b, 0xc3, 0x22, 0xe4, 0x90, 0x8f, 0x15, 0xaf, 0x93, 0x3a, 0xb0,
-  0x21, 0xce, 0xd7, 0x73, 0xc6, 0x91, 0x45, 0xcc, 0xda, 0x60, 0x3e, 0x8d,
-  0x2e, 0x11, 0x45, 0xfc, 0x71, 0xa8, 0x82, 0xe5, 0x95, 0xeb, 0x04, 0x07,
-  0x0f, 0xc6, 0x99, 0xd3, 0xb3, 0xa5, 0x75, 0x4b, 0xb8, 0x65, 0x22, 0xc6,
-  0xfc, 0x2e, 0x9f, 0xae, 0xa2, 0xd0, 0x5b, 0xfb, 0x7d, 0x14, 0xde, 0xce,
-  0xab, 0x30, 0xb3, 0x03, 0xfe, 0x07, 0x7e, 0xa2, 0x70, 0xee, 0x29, 0xd4,
-  0x44, 0xc1, 0x99, 0x8a, 0x3c, 0x6e, 0x57, 0xc2, 0x30, 0x25, 0x43, 0xbc,
-  0x3c, 0x3a, 0x7f, 0xff, 0xdd, 0xf1, 0xf1, 0xf9, 0xc9, 0xab, 0xd3, 0x63,
-  0xbd, 0x67, 0xdc, 0x8f, 0xde, 0x5e, 0x7e, 0x7f, 0x6a, 0xa4, 0x53, 0x36,
-  0x3f, 0x91, 0xcf, 0x86, 0x91, 0x23, 0x68, 0xee, 0x34, 0x5f, 0xac, 0x3e,
-  0x30, 0x40, 0x71, 0xc2, 0x9b, 0xf9, 0xf0, 0xe4, 0xc7, 0x7e, 0xf2, 0xed,
-  0xf9, 0xe0, 0xdd, 0x8f, 0x51, 0x3e, 0x7f, 0x03, 0xab, 0xd9, 0x36, 0xf6,
-  0x1d, 0x72, 0x13, 0x54, 0xbe, 0x7e, 0xec, 0x66, 0x65, 0x76, 0x54, 0xb7,
-  0xf9, 0x47, 0xfb, 0xad, 0xa2, 0xe6, 0x56, 0x8b, 0x80, 0x22, 0x14, 0x95,
-  0x53, 0xa4, 0x69, 0xbd, 0x7a, 0xb1, 0x1d, 0x3e, 0xdb, 0xb5, 0x5a, 0xc1,
-  0xcd, 0x0d, 0xf8, 0x90, 0xbc, 0xa0, 0x3f, 0xba, 0xf8, 0x55, 0x76, 0x46,
-  0xa3, 0x6f, 0xb7, 0x93, 0x73, 0xe5, 0xd0, 0xe3, 0x27, 0x5d, 0x5a, 0xf8,
-  0xd0, 0x70, 0x5a, 0x1a, 0xfe, 0xd4, 0x2c, 0x34, 0x4d, 0x4e, 0x2e, 0x23,
-  0x3b, 0xcc, 0xb5, 0x60, 0x77, 0xb8, 0x99, 0x5c, 0xdd, 0xaa, 0xed, 0x3f,
-  0x30, 0xdb, 0x8c, 0x3e, 0xfa, 0x51, 0x1e, 0xb0, 0x68, 0x88, 0xfc, 0xe8,
-  0xb0, 0x65, 0x78, 0xa3, 0x11, 0x8c, 0x4f, 0x66, 0xad, 0xab, 0x62, 0x96,
-  0x30, 0xc3, 0xb4, 0xd8, 0x51, 0x73, 0x3a, 0x10, 0xaf, 0x8e, 0x2f, 0xfa,
-  0x42, 0x0f, 0x16, 0x52, 0x83, 0x39, 0x2e, 0xbc, 0xa1, 0x52, 0x82, 0x75,
-  0x46, 0xdc, 0xb1, 0xa8, 0xff, 0x3c, 0x4a, 0xb0, 0xdb, 0x72, 0x9c, 0xbc,
-  0x98, 0xd1, 0x8b, 0xb3, 0xee, 0x44, 0x3c, 0xa9, 0xaf, 0xe0, 0x8b, 0x44,
-  0xb4, 0xc8, 0x1f, 0x94, 0x6a, 0x4a, 0xcb, 0xce, 0x73, 0x33, 0xce, 0xe2,
-  0x8c, 0x18, 0xff, 0x6a, 0xf8, 0x74, 0xf8, 0x8d, 0x28, 0x6b, 0x69, 0x13,
-  0x48, 0xc1, 0xcd, 0x7e, 0xb2, 0xc9, 0x0c, 0x17, 0xfc, 0x5f, 0x08, 0x54,
-  0x2d, 0xae, 0xb1, 0xd9, 0x8f, 0xf9, 0xcd, 0x37, 0x75, 0xd6, 0x37, 0x69,
-  0xe1, 0xa4, 0x35, 0xde, 0x9b, 0xc2, 0xe6, 0x25, 0xfd, 0x30, 0x42, 0x5b,
-  0xe1, 0xc7, 0x6c, 0xc0, 0x0a, 0xaa, 0xc8, 0xd4, 0x77, 0xcd, 0xb5, 0x51,
-  0x2a, 0xdd, 0xbe, 0xa4, 0xa6, 0x84, 0x56, 0x0c, 0x34, 0xc2, 0x7a, 0x46,
-  0x3e, 0x2b, 0xf4, 0x3c, 0x08, 0x97, 0x59, 0x29, 0x90, 0xa7, 0xac, 0x57,
-  0x7d, 0x33, 0x1a, 0x1d, 0x9e, 0x9f, 0xb4, 0xa7, 0x9a, 0x7e, 0x3a, 0x78,
-  0x6b, 0xa5, 0x18, 0xb6, 0x6d, 0xa7, 0xf8, 0x64, 0x15, 0x1e, 0x01, 0x32,
-  0xa0, 0xf8, 0xfa, 0x67, 0xdc, 0x2e, 0xc3, 0xe0, 0x06, 0xdf, 0xb3, 0xd9,
-  0x77, 0x17, 0x73, 0x67, 0x56, 0xea, 0x0e, 0xad, 0xb2, 0x4c, 0x71, 0x19,
-  0xa5, 0xe6, 0x9f, 0x29, 0x11, 0x21, 0x29, 0x35, 0xbf, 0xe3, 0x9e, 0x9a,
-  0x81, 0x55, 0x3b, 0xaf, 0xea, 0x01, 0x47, 0x35, 0xba, 0xf1, 0xa3, 0x30,
-  0x53, 0x14, 0xfd, 0x6d, 0x81, 0x95, 0x80, 0x2d, 0x56, 0x84, 0x86, 0xd0,
-  0x94, 0x03, 0x2c, 0x53, 0x69, 0xad, 0xaf, 0x41, 0x84, 0x03, 0xa1, 0xfb,
-  0xe6, 0x2e, 0xcf, 0xee, 0x87, 0x49, 0x72, 0xec, 0x69, 0x4b, 0x34, 0xc2,
-  0x97, 0x37, 0x58, 0xd0, 0xd9, 0x97, 0x39, 0xb9, 0x21, 0x7d, 0x6c, 0x00,
-  0x20, 0x5d, 0x97, 0x19, 0xe0, 0x70, 0x67, 0xd8, 0x29, 0xa9, 0xa1, 0xdf,
-  0x3d, 0x60, 0xbd, 0x42, 0x05, 0x73, 0xa4, 0xbd, 0x0b, 0x66, 0xcd, 0xff,
-  0x8a, 0x7b, 0xb1, 0x26, 0xeb, 0x51, 0xb6, 0xa5, 0xcb, 0x6b, 0x84, 0x29,
-  0x5a, 0x94, 0xc6, 0x55, 0xf7, 0xb8, 0x16, 0x02, 0x3b, 0x42, 0x67, 0xe8,
-  0xed, 0xe9, 0xc8, 0x03, 0xf9, 0xcd, 0x41, 0x5b, 0x49, 0x79, 0x7b, 0x32,
-  0x77, 0xe7, 0xc2, 0xac, 0xdf, 0x5d, 0xa1, 0xc1, 0xf1, 0x73, 0xf2, 0x8c,
-  0x49, 0x68, 0x52, 0xf4, 0xe5, 0xbc, 0x6c, 0xa4, 0x65, 0xf0, 0x37, 0xfe,
-  0x2c, 0x1e, 0x3c, 0x89, 0xfa, 0x77, 0xc7, 0x10, 0x99, 0x3d, 0x25, 0x2c,
-  0x79, 0x8d, 0x63, 0x0d, 0x16, 0x8f, 0x7c, 0xc2, 0xf6, 0xf7, 0x6d, 0x78,
-  0xef, 0x34, 0x78, 0xd6, 0x3b, 0xe3, 0x81, 0x60, 0xe2, 0xde, 0x36, 0x6f,
-  0x8e, 0xab, 0xf6, 0x28, 0xbb, 0xd5, 0x41, 0x58, 0x15, 0x03, 0x06, 0xa1,
-  0x4b, 0x4a, 0x63, 0x57, 0x75, 0x63, 0x81, 0xd7, 0x32, 0xcf, 0xa6, 0xa3,
-  0x11, 0xa9, 0x13, 0x47, 0xf1, 0xbe, 0xc5, 0x5a, 0xcd, 0x24, 0x84, 0x7f,
-  0xb4, 0x69, 0xd6, 0x3b, 0xd2, 0xb0, 0xd3, 0xe4, 0xc9, 0x8f, 0x3f, 0x36,
-  0x99, 0x73, 0xb6, 0xd7, 0xc1, 0x04, 0x1d, 0xb1, 0xdf, 0xb4, 0xe8, 0xda,
-  0x5f, 0x06, 0xda, 0x53, 0x1f, 0x25, 0x47, 0x66, 0x60, 0x8d, 0xe0, 0x46,
-  0x50, 0x46, 0x41, 0x29, 0xa1, 0xab, 0x20, 0xba, 0x30, 0x36, 0x1c, 0x0b,
-  0x41, 0x1f, 0x64, 0xed, 0x3b, 0x50, 0x90, 0xc4, 0xa2, 0x10, 0xb2, 0xb6,
-  0xc9, 0xe2, 0xb9, 0xaa, 0xdc, 0x69, 0x25, 0xe1, 0x7b, 0xbf, 0x18, 0x76,
-  0x31, 0xe3, 0xb7, 0x64, 0xbb, 0x4b, 0xbd, 0x52, 0x58, 0x00, 0x76, 0x8e,
-  0x14, 0x28, 0x65, 0x47, 0x4b, 0x50, 0xfc, 0x48, 0x31, 0x7b, 0xd1, 0x4e,
-  0x11, 0x87, 0x05, 0xc7, 0x0f, 0x31, 0x40, 0x46, 0x11, 0xc9, 0x9e, 0x49,
-  0x6a, 0x78, 0xff, 0x2d, 0xb6, 0x11, 0xae, 0x15, 0x1e, 0xef, 0x77, 0xa4,
-  0xe8, 0xdc, 0x83, 0xbe, 0x5e, 0x38, 0x6c, 0xd4, 0x11, 0x85, 0x58, 0xa2,
-  0xa2, 0x9c, 0x25, 0x33, 0xfa, 0x4f, 0x71, 0xed, 0x1b, 0xdd, 0x7a, 0x31,
-  0xc1, 0x70, 0xb1, 0x18, 0xd4, 0xe5, 0x0a, 0x33, 0xc4, 0xea, 0x1f, 0xa7,
-  0x48, 0x14, 0x9e, 0xd8, 0x82, 0xef, 0x71, 0x8b, 0x99, 0x82, 0xd6, 0x59,
-  0xf0, 0x7a, 0x73, 0x64, 0xf0, 0xc7, 0x51, 0x21, 0x1b, 0x99, 0x65, 0x60,
-  0x70, 0xc6, 0x45, 0x23, 0x5c, 0x32, 0x18, 0xcc, 0xd3, 0x0f, 0x03, 0x3c,
-  0x56, 0x45, 0x0c, 0xa6, 0xa1, 0xf3, 0x46, 0xb9, 0xa3, 0x0a, 0xd1, 0xb8,
-  0x82, 0x39, 0x33, 0x3d, 0xdd, 0x36, 0x91, 0xde, 0x0b, 0x29, 0x6f, 0x21,
-  0x3a, 0xca, 0xdf, 0x1c, 0x5f, 0xb6, 0x8f, 0x16, 0xd2, 0x71, 0xd5, 0xe6,
-  0x01, 0x0e, 0x93, 0xfe, 0x7d, 0xfe, 0xee, 0x72, 0xdb, 0x13, 0xcb, 0x4f,
-  0x8b, 0x96, 0xf3, 0xc5, 0x1a, 0xef, 0x60, 0xf1, 0x12, 0xec, 0xa3, 0x82,
-  0xe7, 0x81, 0x58, 0x75, 0x67, 0xe2, 0x9e, 0x74, 0xe7, 0x27, 0xbb, 0x7b,
-  0x7d, 0xfa, 0x63, 0x1f, 0xee, 0x83, 0x27, 0xbb, 0x4f, 0x9c, 0x6f, 0xd6,
-  0x9e, 0x8a, 0x64, 0xed, 0x54, 0x5e, 0x44, 0xe1, 0x6a, 0xec, 0xf9, 0x27,
-  0x1f, 0x3e, 0xe0, 0xc7, 0xfd, 0x06, 0x5e, 0xaa, 0xcc, 0x06, 0x96, 0xc5,
-  0xef, 0x72, 0x9b, 0xe3, 0x54, 0x7a, 0xeb, 0xb8, 0x9f, 0x71, 0xf8, 0x01,
-  0x56, 0x0b, 0x09, 0xb6, 0xb3, 0x15, 0x07, 0x7c, 0x65, 0xa8, 0xfc, 0xd0,
-  0x65, 0x8d, 0x0f, 0x75, 0x72, 0xe5, 0x1e, 0x4a, 0x19, 0x88, 0x56, 0x3a,
-  0x22, 0xef, 0x56, 0xee, 0x2f, 0x63, 0x8d, 0xf9, 0x9e, 0xd7, 0x64, 0xb5,
-  0x79, 0x50, 0x32, 0x3b, 0x15, 0xda, 0x9e, 0xc8, 0x95, 0x47, 0x63, 0x01,
-  0x29, 0x51, 0xa2, 0x9f, 0x1d, 0x48, 0x57, 0x8f, 0x12, 0x8d, 0x3e, 0xc9,
-  0x84, 0x68, 0xc0, 0x44, 0x51, 0xb0, 0x57, 0xca, 0x44, 0xd4, 0x99, 0x50,
-  0x6f, 0xa1, 0x03, 0xd2, 0x5c, 0x66, 0x42, 0x00, 0x21, 0x29, 0xe7, 0x72,
-  0xe1, 0x4b, 0x9f, 0x04, 0x13, 0xe6, 0x31, 0x02, 0xfc, 0xde, 0xbf, 0x7c,
-  0x34, 0xeb, 0xf2, 0x63, 0xb7, 0xbf, 0x8f, 0x74, 0x77, 0x71, 0x57, 0x34,
-  0xf4, 0x82, 0x47, 0xb3, 0x81, 0x70, 0xb0, 0x06, 0xb0, 0x0c, 0x5e, 0xd0,
-  0xed, 0x9d, 0x4d, 0xd7, 0x45, 0xc3, 0x00, 0x2a, 0x4a, 0x3f, 0xe4, 0xf3,
-  0xd5, 0xdc, 0xe7, 0x71, 0xe0, 0x3d, 0x5f, 0x52, 0xc7, 0x73, 0x76, 0x41,
-  0x23, 0xed, 0xe2, 0xb5, 0x53, 0x0c, 0x89, 0x8e, 0x2f, 0x50, 0x11, 0x10,
-  0x41, 0x4f, 0xe5, 0xa0, 0xb3, 0xc4, 0xcc, 0x97, 0x99, 0xad, 0xe3, 0xe6,
-  0x54, 0x50, 0x32, 0x3c, 0xab, 0x6d, 0x19, 0x62, 0x3d, 0x41, 0x05, 0x19,
-  0x89, 0x3f, 0x0b, 0x00, 0x95, 0xe4, 0x22, 0xc7, 0x4b, 0xa9, 0x89, 0xfb,
-  0x7c, 0x5a, 0xdf, 0x74, 0xb2, 0xa4, 0xca, 0x24, 0x62, 0xd8, 0x89, 0xe4,
-  0xb9, 0x33, 0x26, 0x10, 0x33, 0x05, 0x88, 0xd0, 0x8e, 0x18, 0x70, 0x2e,
-  0xa3, 0x93, 0x34, 0x88, 0xd5, 0x15, 0xb3, 0x6a, 0x75, 0xc4, 0x33, 0x14,
-  0x3c, 0x3d, 0x74, 0xfb, 0x56, 0x4a, 0xa9, 0xdf, 0x4a, 0xb2, 0xc2, 0x77,
-  0xaa, 0xd6, 0x0a, 0xfd, 0x08, 0x6e, 0x1e, 0x41, 0xf4, 0xd2, 0xe9, 0xbb,
-  0xcd, 0x67, 0x71, 0x75, 0xed, 0x07, 0x04, 0x7d, 0x36, 0xe7, 0x78, 0xfd,
-  0xcd, 0xa6, 0x06, 0x6b, 0x99, 0x1c, 0x27, 0x53, 0xfc, 0x52, 0x5f, 0x59,
-  0xb2, 0x36, 0xaf, 0xe5, 0x13, 0xdf, 0x6c, 0x3a, 0xa2, 0xac, 0x48, 0x72,
-  0x7b, 0xd0, 0x93, 0x79, 0xba, 0xaa, 0x83, 0x64, 0x7f, 0x77, 0xf7, 0x3b,
-  0x92, 0x17, 0x73, 0x4c, 0xf3, 0xde, 0x37, 0xdd, 0x3c, 0xb2, 0x32, 0x45,
-  0xb2, 0xd0, 0x16, 0x2b, 0x4b, 0xef, 0xe0, 0x92, 0xd2, 0x89, 0xc3, 0x90,
-  0x18, 0x68, 0xb0, 0x2a, 0xed, 0xdc, 0xcb, 0xe4, 0xaf, 0x59, 0x2a, 0x78,
-  0x2b, 0xda, 0xf9, 0xb6, 0x73, 0x60, 0x55, 0x79, 0xf5, 0x6e, 0xe8, 0x6f,
-  0x99, 0x4f, 0x57, 0x92, 0x8f, 0x74, 0x64, 0xb3, 0xd2, 0x25, 0xca, 0x4c,
-  0x46, 0xab, 0xb2, 0xaa, 0xb5, 0xf6, 0x15, 0x88, 0x40, 0xe0, 0x42, 0x31,
-  0xe7, 0xef, 0xa2, 0x90, 0xd4, 0x72, 0x40, 0xbf, 0x3c, 0xdd, 0x41, 0x89,
-  0xea, 0x76, 0xf1, 0x01, 0x04, 0xd4, 0x15, 0x17, 0x96, 0xe1, 0xee, 0x06,
-  0x7f, 0xe1, 0xeb, 0x1d, 0x5d, 0x90, 0x93, 0xe2, 0x62, 0x23, 0x02, 0xfa,
-  0xf7, 0xca, 0x47, 0x7b, 0xb0, 0xac, 0x8a, 0x68, 0x51, 0x03, 0xd6, 0x57,
-  0xe1, 0xf1, 0xc0, 0x18, 0x99, 0xb6, 0x71, 0xa9, 0x45, 0x9c, 0xb8, 0x23,
-  0xd2, 0x2e, 0xbc, 0x33, 0x33, 0x7e, 0x60, 0xc6, 0xca, 0x77, 0x11, 0x61,
-  0x68, 0x67, 0x4b, 0xb8, 0x7d, 0x9c, 0x64, 0x0d, 0xba, 0xc4, 0xa9, 0x5e,
-  0x13, 0x30, 0xc7, 0x32, 0x9a, 0xf8, 0x77, 0xb4, 0x54, 0xc1, 0x71, 0x24,
-  0x29, 0xd5, 0x2f, 0x68, 0xfb, 0x7e, 0xf9, 0xd3, 0x80, 0xfe, 0xfc, 0xa5,
-  0xa3, 0xe2, 0x63, 0x1a, 0x44, 0x5a, 0x0d, 0xb9, 0x5e, 0x7a, 0x42, 0x77,
-  0xb4, 0x23, 0xa9, 0x5d, 0xf2, 0xdb, 0x2a, 0xa0, 0xc2, 0xef, 0x22, 0x54,
-  0x71, 0xce, 0xb6, 0xad, 0x8a, 0x6b, 0x6f, 0xf8, 0xa8, 0x98, 0x34, 0xe2,
-  0x5a, 0x41, 0x34, 0x79, 0x21, 0x02, 0x46, 0x0a, 0xb0, 0xb5, 0xa3, 0x29,
-  0x8c, 0xa4, 0x99, 0x64, 0x1e, 0x6f, 0xe0, 0xcb, 0xe6, 0x8e, 0x19, 0x40,
-  0x51, 0x3d, 0x30, 0x45, 0x84, 0xf8, 0x18, 0xab, 0xc2, 0x91, 0x64, 0x61,
-  0x02, 0xd1, 0xfd, 0x18, 0xa2, 0xc1, 0x2c, 0x06, 0x02, 0x6b, 0xab, 0x0b,
-  0xd2, 0xd6, 0xd3, 0xb2, 0x24, 0xbd, 0x43, 0x97, 0x5a, 0x13, 0x17, 0xa8,
-  0xf3, 0x24, 0x3d, 0x70, 0x57, 0x79, 0xb7, 0x21, 0xb5, 0xbd, 0x5a, 0x76,
-  0x60, 0x2a, 0x38, 0x83, 0x29, 0xa2, 0x8d, 0x69, 0xa4, 0x07, 0x9a, 0x2e,
-  0x6d, 0xba, 0xd3, 0x63, 0xea, 0x7c, 0x72, 0x0a, 0x67, 0x3a, 0xeb, 0xff,
-  0xc1, 0x9b, 0x9a, 0x58, 0x29, 0x44, 0xd0, 0x50, 0x94, 0xcc, 0x35, 0xd9,
-  0x9d, 0x91, 0x96, 0xfc, 0xc9, 0x13, 0x21, 0x09, 0x81, 0x3e, 0x74, 0xc4,
-  0xc0, 0x2e, 0xa8, 0x38, 0xe6, 0xca, 0x69, 0x5b, 0x5e, 0xbf, 0x2c, 0x86,
-  0x5d, 0xf2, 0x9f, 0x9f, 0x29, 0x4a, 0x57, 0xd6, 0x2e, 0xe7, 0x0c, 0xc7,
-  0xe9, 0x6a, 0x02, 0xeb, 0x8c, 0xd1, 0x23, 0x5c, 0xa5, 0x6e, 0x2c, 0xbc,
-  0x2c, 0x96, 0x24, 0xc8, 0x4d, 0x3b, 0xe5, 0x2e, 0x46, 0xd2, 0x8b, 0xfa,
-  0x8a, 0xa7, 0x1c, 0x91, 0x1e, 0x6e, 0x0d, 0x10, 0x6b, 0x42, 0x81, 0xc0,
-  0x8d, 0x10, 0x2b, 0xd7, 0x8b, 0xab, 0x35, 0x44, 0xa4, 0x12, 0xa2, 0x60,
-  0xdd, 0xf6, 0x83, 0xab, 0x26, 0xc1, 0xe4, 0x15, 0xbc, 0x79, 0xa1, 0x76,
-  0x7d, 0xcd, 0xc8, 0xaf, 0x56, 0x83, 0x21, 0xbd, 0x26, 0x2a, 0x3b, 0xb2,
-  0xb6, 0xf9, 0xa8, 0x97, 0xf9, 0x8d, 0x5e, 0xa7, 0xea, 0x55, 0xce, 0xe1,
-  0x6a, 0xc6, 0x93, 0x32, 0xb1, 0x40, 0xa2, 0xbb, 0x0a, 0x9d, 0xf7, 0x37,
-  0xc5, 0x2c, 0xd4, 0x23, 0xe2, 0xf8, 0x29, 0xc9, 0x9c, 0x20, 0x71, 0x46,
-  0xaf, 0x57, 0xd6, 0x40, 0xb5, 0x88, 0x66, 0x6e, 0x14, 0xd9, 0x63, 0x54,
-  0x00, 0xf9, 0x6b, 0x31, 0x56, 0x63, 0x25, 0x61, 0x95, 0xbb, 0x8b, 0xac,
-  0x46, 0x82, 0x75, 0x37, 0x5c, 0xcb, 0x8b, 0xe4, 0xbb, 0x84, 0x9e, 0xb9,
-  0x3f, 0x8b, 0xac, 0x66, 0x79, 0x03, 0x70, 0x22, 0x4c, 0xcd, 0xe4, 0x1a,
-  0xc9, 0x39, 0x00, 0x9b, 0x71, 0x32, 0xe4, 0x22, 0x4a, 0xa1, 0xf8, 0x7c,
-  0xf8, 0x64, 0x7f, 0xb8, 0xdb, 0xb4, 0xda, 0xd2, 0x09, 0x9b, 0x0e, 0x5c,
-  0x64, 0x5d, 0x00, 0xd7, 0xc8, 0x23, 0xf0, 0x95, 0x0c, 0x0d, 0x9c, 0xc2,
-  0xd3, 0x33, 0x88, 0x83, 0x29, 0xaa, 0x3f, 0x67, 0xcc, 0x1d, 0x54, 0x21,
-  0xf6, 0x44, 0xed, 0xad, 0xca, 0x74, 0xf2, 0x60, 0xbc, 0x84, 0x1e, 0x70,
-  0xc6, 0x4d, 0xf0, 0x2b, 0xd4, 0x31, 0x3c, 0x1d, 0xd1, 0xed, 0x2e, 0x5c,
-  0x27, 0x58, 0x6a, 0xe7, 0x48, 0x07, 0x6d, 0x03, 0xe1, 0x8d, 0x19, 0x79,
-  0x60, 0xad, 0xad, 0x31, 0x22, 0xfe, 0x81, 0x22, 0x77, 0xce, 0x9c, 0xb3,
-  0xa8, 0x07, 0xfa, 0x42, 0xf1, 0xa0, 0xb1, 0x47, 0xf5, 0x0d, 0xfb, 0x73,
-  0x46, 0x0e, 0x11, 0xa0, 0xb4, 0x40, 0xfa, 0xf8, 0x30, 0x28, 0xca, 0xed,
-  0x93, 0xde, 0x02, 0x08, 0x40, 0x17, 0x9a, 0xb7, 0x7d, 0x52, 0x1c, 0x6b,
-  0xc3, 0x96, 0x38, 0x04, 0xeb, 0x87, 0x6d, 0x05, 0xea, 0x0a, 0x83, 0x6b,
-  0x0d, 0xdd, 0x9e, 0x44, 0x5c, 0x2c, 0x20, 0x91, 0x99, 0x54, 0x69, 0xc6,
-  0x22, 0xd7, 0x33, 0x7d, 0x50, 0xe7, 0x80, 0x06, 0xab, 0xac, 0xe0, 0x5c,
-  0x7b, 0x54, 0x21, 0xa3, 0xc0, 0xb3, 0xd0, 0xa7, 0xaf, 0x73, 0x82, 0x7d,
-  0xfb, 0x1b, 0xe7, 0xc4, 0x8b, 0x2d, 0xd1, 0x07, 0xb8, 0x41, 0x97, 0x28,
-  0x96, 0xc4, 0xa9, 0x89, 0x95, 0xd1, 0x61, 0x3e, 0xde, 0xcd, 0xdd, 0x76,
-  0x37, 0x3f, 0xa0, 0x58, 0x06, 0x80, 0xc7, 0x2f, 0xa0, 0x7d, 0x7d, 0xf9,
-  0x28, 0xa2, 0xc4, 0xb4, 0x6b, 0x81, 0x2a, 0x6f, 0x99, 0x12, 0xba, 0xed,
-  0x69, 0x37, 0x25, 0xbd, 0x5d, 0x38, 0x19, 0xd8, 0xb8, 0x5b, 0x87, 0x28,
-  0xf1, 0x8e, 0x87, 0xbc, 0x09, 0x7f, 0xc7, 0xb6, 0xc4, 0x29, 0xeb, 0x37,
-  0x13, 0xb2, 0xd7, 0x15, 0x65, 0x04, 0x54, 0x15, 0xda, 0x4b, 0x98, 0x97,
-  0x00, 0xee, 0x64, 0xb8, 0x47, 0xb2, 0x0f, 0xc0, 0x77, 0x90, 0xd9, 0xf4,
-  0xd9, 0x93, 0x18, 0xbd, 0x72, 0x76, 0x79, 0x7c, 0xa0, 0x7a, 0xa4, 0xc7,
-  0x60, 0x9b, 0xd1, 0x2c, 0x68, 0x08, 0xce, 0x9b, 0xe2, 0x3c, 0x62, 0x26,
-  0x19, 0x0b, 0x46, 0xd7, 0xef, 0x60, 0x58, 0x41, 0xb2, 0x00, 0x27, 0x08,
-  0x89, 0xef, 0xac, 0x8e, 0x22, 0x47, 0x16, 0x2b, 0xb2, 0x92, 0x7b, 0x6e,
-  0x3e, 0xea, 0xae, 0x72, 0x49, 0x18, 0x36, 0x7c, 0x29, 0x20, 0xbc, 0x90,
-  0x1d, 0x1a, 0x4d, 0x96, 0xec, 0x10, 0x28, 0x5a, 0x46, 0x50, 0x5c, 0x90,
-  0x70, 0x2b, 0xa3, 0xb0, 0x17, 0xb8, 0x4d, 0xd9, 0x45, 0xc8, 0x93, 0x85,
-  0x4b, 0xc2, 0x43, 0x3f, 0xdb, 0x9b, 0xb7, 0x9c, 0x2c, 0xeb, 0x7f, 0xea,
-  0xe6, 0x75, 0xb7, 0xf1, 0xa7, 0xc5, 0x56, 0x0d, 0x1d, 0xd4, 0x41, 0xf6,
-  0xc5, 0xc2, 0x71, 0xc9, 0xe4, 0x7a, 0xd5, 0xaf, 0x3e, 0x0c, 0xea, 0x79,
-  0x81, 0xea, 0xd8, 0xa1, 0x34, 0xda, 0xf6, 0xf7, 0xa9, 0x8e, 0xee, 0xd6,
-  0x67, 0x65, 0xc7, 0x79, 0x1d, 0x04, 0xb2, 0xca, 0xd5, 0xc2, 0x35, 0x43,
-  0x8d, 0x94, 0x9b, 0x28, 0xf9, 0xd7, 0xf9, 0x1b, 0x55, 0xf8, 0xf6, 0xd7,
-  0x72, 0x29, 0x21, 0x98, 0x96, 0x35, 0x29, 0xc3, 0xe3, 0x1a, 0x13, 0xce,
-  0x37, 0xe3, 0x3a, 0x54, 0x31, 0x34, 0x36, 0x49, 0xc7, 0x64, 0x31, 0x4e,
-  0x57, 0xf3, 0xde, 0x30, 0xf9, 0xda, 0xe1, 0x6b, 0xe5, 0x6c, 0xa9, 0xcf,
-  0x2a, 0x36, 0x15, 0x91, 0x41, 0x48, 0x9f, 0x7d, 0xb6, 0xdb, 0x68, 0x6f,
-  0x88, 0x59, 0x08, 0xbb, 0xc9, 0xc0, 0xb2, 0x3d, 0x87, 0x23, 0x63, 0x4d,
-  0x1f, 0xc6, 0x7a, 0x1b, 0xeb, 0xcf, 0x52, 0xfe, 0xf7, 0xbc, 0x82, 0xb2,
-  0x3a, 0xe5, 0x3b, 0xfe, 0x23, 0x91, 0xfa, 0x3a, 0xa4, 0xbd, 0x11, 0xf7,
-  0x3e, 0x2a, 0x61, 0x4b, 0x89, 0x03, 0xc6, 0xfb, 0xa9, 0x29, 0xc9, 0x69,
-  0xe1, 0x49, 0xe4, 0x35, 0x7e, 0xa3, 0x5f, 0x31, 0x7c, 0xd3, 0x16, 0xce,
-  0x93, 0x4b, 0x70, 0x79, 0x22, 0x24, 0xe6, 0xc9, 0x16, 0x93, 0xc9, 0x3d,
-  0xfb, 0xe2, 0xd9, 0xd3, 0xed, 0x66, 0x40, 0x6f, 0xbb, 0xc3, 0x6b, 0x8c,
-  0x59, 0x0b, 0x2a, 0x51, 0xcf, 0x73, 0xf0, 0xed, 0xc3, 0x0b, 0xaf, 0xee,
-  0x67, 0xa1, 0x2d, 0x87, 0xde, 0x0d, 0xeb, 0x31, 0x97, 0xe8, 0x54, 0x8c,
-  0xa5, 0x44, 0x01, 0x04, 0x79, 0x7d, 0xcb, 0x92, 0x14, 0x9d, 0x78, 0x71,
-  0x49, 0x4c, 0x82, 0x96, 0x83, 0x20, 0x71, 0xe8, 0x4b, 0x46, 0x93, 0xd6,
-  0x5d, 0xee, 0x19, 0xe8, 0x15, 0x5a, 0x07, 0x03, 0x28, 0x1b, 0x46, 0x60,
-  0x16, 0x81, 0xd4, 0x12, 0x2a, 0x1b, 0xd9, 0x4b, 0x26, 0x17, 0x93, 0x2e,
-  0xf0, 0x23, 0x9d, 0x5d, 0x57, 0xab, 0xc7, 0x4f, 0xa4, 0x20, 0x78, 0xc0,
-  0x07, 0xc0, 0xeb, 0x6f, 0x2d, 0x68, 0x00, 0xd0, 0x97, 0x9e, 0x88, 0x2c,
-  0xeb, 0x79, 0x36, 0x37, 0x6a, 0x38, 0xb9, 0x02, 0x8a, 0xd2, 0x13, 0x78,
-  0x8b, 0xed, 0x26, 0xd2, 0x1c, 0x68, 0x82, 0x75, 0x04, 0xda, 0xbe, 0x32,
-  0xa1, 0xa6, 0xbe, 0x35, 0x3a, 0xb6, 0x86, 0xae, 0xd7, 0x6d, 0xb6, 0x30,
-  0x27, 0x45, 0xfd, 0xa7, 0x00, 0x97, 0xd8, 0xdf, 0xdd, 0xa6, 0x8c, 0x49,
-  0xac, 0xe5, 0xa3, 0xad, 0x69, 0x58, 0xd3, 0x79, 0xe1, 0xb1, 0x46, 0x32,
-  0xd1, 0xba, 0x42, 0xa3, 0xc9, 0x16, 0xfa, 0xbb, 0xb3, 0xb3, 0xfd, 0xd1,
-  0x3e, 0xeb, 0x83, 0x1f, 0xeb, 0xe3, 0xb9, 0x14, 0x62, 0xe4, 0xc9, 0xb5,
-  0xfc, 0x53, 0xda, 0x77, 0xbe, 0x13, 0xfc, 0xd1, 0xbc, 0xb2, 0x6a, 0xcf,
-  0x02, 0x30, 0x70, 0xf8, 0xac, 0xfb, 0x28, 0x4d, 0xdc, 0xcd, 0xb3, 0x8c,
-  0xae, 0x39, 0x70, 0xbd, 0x2a, 0x24, 0xc3, 0x49, 0x65, 0x82, 0xe1, 0x36,
-  0x87, 0x4c, 0xfe, 0x12, 0xd5, 0x62, 0x08, 0x7a, 0x85, 0xe3, 0x10, 0x8c,
-  0x4f, 0xc0, 0x20, 0x3e, 0x1a, 0x22, 0xc7, 0xc2, 0x34, 0x4a, 0x89, 0x9a,
-  0xc4, 0xa2, 0xd8, 0x9e, 0x6e, 0x15, 0xe7, 0x18, 0x46, 0x19, 0xfe, 0xf2,
-  0x20, 0x1f, 0x1e, 0x97, 0x5e, 0x9d, 0x77, 0x55, 0x27, 0xf7, 0x4e, 0x6f,
-  0x6d, 0x93, 0x34, 0xfa, 0x5b, 0x3f, 0x6e, 0xe1, 0xe8, 0xb0, 0x62, 0x1f,
-  0x3e, 0xcf, 0xac, 0x0b, 0x23, 0xad, 0x7d, 0x73, 0xbb, 0x1b, 0x73, 0x66,
-  0xb5, 0x27, 0xf0, 0xd3, 0xc6, 0x74, 0xf6, 0xe5, 0x90, 0x02, 0xf4, 0xd6,
-  0xa5, 0x31, 0x81, 0x09, 0xf5, 0xd1, 0x6b, 0xf1, 0x73, 0x36, 0x81, 0xf2,
-  0xab, 0x8e, 0xda, 0xa9, 0xb3, 0x7c, 0xec, 0x26, 0x5a, 0x43, 0xd8, 0xc3,
-  0xe0, 0x06, 0x5d, 0xb0, 0x45, 0x49, 0x66, 0x57, 0x39, 0x89, 0x8c, 0xc8,
-  0x5b, 0x9f, 0x88, 0x5f, 0x49, 0x3d, 0x55, 0x9e, 0xa4, 0x21, 0x1e, 0xa6,
-  0xcf, 0xbf, 0xd7, 0xbf, 0x14, 0x0e, 0x95, 0xb8, 0x1d, 0x1e, 0x8a, 0x0e,
-  0xf4, 0xd9, 0x66, 0xe5, 0xe0, 0x72, 0x1a, 0x59, 0x65, 0x21, 0x09, 0x46,
-  0x21, 0xe5, 0x08, 0x58, 0x4c, 0x13, 0x1f, 0xe6, 0x71, 0x04, 0x96, 0x0f,
-  0xcb, 0x08, 0x87, 0xa2, 0xe9, 0x51, 0xd8, 0x23, 0xdc, 0x08, 0xd2, 0xf7,
-  0x04, 0x87, 0xe9, 0x23, 0x6e, 0xae, 0x12, 0x70, 0x98, 0xfd, 0x2a, 0x25,
-  0x18, 0x3a, 0x7a, 0xd7, 0xb2, 0x4e, 0x24, 0xcc, 0x84, 0x31, 0x6e, 0xd1,
-  0xad, 0xc0, 0xd2, 0xbc, 0x5e, 0x6e, 0xed, 0x6d, 0x0b, 0xcf, 0x99, 0x72,
-  0x51, 0xaf, 0x49, 0x7e, 0x90, 0xab, 0xc6, 0x15, 0x0a, 0x3e, 0xf2, 0x21,
-  0x0f, 0x16, 0x7c, 0x20, 0xa1, 0x04, 0xa2, 0xeb, 0x4a, 0xce, 0x83, 0xec,
-  0x0e, 0x8d, 0x28, 0xb3, 0xbf, 0xba, 0x63, 0x73, 0x4a, 0xd2, 0xfd, 0x92,
-  0x61, 0x87, 0x95, 0x14, 0x05, 0xd9, 0xf2, 0x8c, 0xa7, 0x72, 0x3d, 0x58,
-  0xa9, 0x2c, 0x9a, 0xbd, 0xd9, 0x74, 0x00, 0x86, 0x92, 0xeb, 0xb2, 0x88,
-  0xb9, 0x8f, 0x18, 0x33, 0xae, 0x37, 0x88, 0xe8, 0xd0, 0x9d, 0xd5, 0xc9,
-  0x7a, 0x8c, 0x90, 0xed, 0x85, 0x55, 0xff, 0x0c, 0x87, 0xdb, 0xf6, 0x21,
-  0x36, 0x96, 0x34, 0xda, 0xa6, 0x87, 0xc9, 0xdf, 0x56, 0x39, 0x6d, 0x6b,
-  0x5e, 0x5b, 0x00, 0x1d, 0x00, 0xb7, 0xcc, 0x5c, 0xf4, 0x8a, 0xa4, 0x07,
-  0x07, 0xe8, 0xc4, 0x74, 0x64, 0xdf, 0x15, 0x30, 0xfc, 0xb6, 0xcb, 0x3a,
-  0xca, 0xb0, 0xb1, 0x9f, 0xc0, 0x29, 0x04, 0xa0, 0x3d, 0x2b, 0x34, 0x88,
-  0x00, 0x08, 0x80, 0x04, 0x25, 0xa7, 0x05, 0x63, 0xe6, 0x58, 0xb4, 0xcb,
-  0x2e, 0x58, 0x47, 0xc6, 0xbd, 0x39, 0x7f, 0xe0, 0x8b, 0x6c, 0xb3, 0xb1,
-  0xf5, 0x92, 0xcd, 0x8a, 0x8d, 0xff, 0x7a, 0xd3, 0xe6, 0x17, 0x61, 0xfd,
-  0x47, 0x88, 0xfd, 0xd7, 0x7d, 0x5a, 0xb6, 0xb6, 0x7c, 0xc2, 0xb7, 0x2e,
-  0x8d, 0xfb, 0x23, 0xf8, 0xb6, 0x2f, 0x10, 0xb4, 0xf1, 0x8a, 0x23, 0xa5,
-  0x9d, 0x05, 0xe2, 0x35, 0x22, 0x24, 0x4f, 0x68, 0xd9, 0x10, 0xc0, 0xc3,
-  0x04, 0xfa, 0x59, 0x71, 0x1a, 0xc3, 0x3c, 0x2c, 0xbe, 0x83, 0x7a, 0x5f,
-  0x55, 0xac, 0xd4, 0xad, 0xa4, 0x06, 0x68, 0xbf, 0xc9, 0x5b, 0xd0, 0x42,
-  0x31, 0xc8, 0x67, 0x38, 0x78, 0x1a, 0x36, 0xdf, 0x15, 0xab, 0xc2, 0xeb,
-  0x88, 0xb0, 0xc0, 0x3d, 0x2f, 0x66, 0x92, 0x55, 0xb3, 0x15, 0x7a, 0x00,
-  0x69, 0xc2, 0x11, 0x99, 0xd2, 0x7c, 0x4c, 0x6e, 0x56, 0x8b, 0x5b, 0xea,
-  0x42, 0x8c, 0x40, 0x30, 0x87, 0x66, 0xce, 0x67, 0x9b, 0x36, 0x88, 0xd2,
-  0x5d, 0x58, 0x32, 0xa2, 0xb4, 0xc0, 0xcc, 0x04, 0x77, 0x50, 0x4b, 0x22,
-  0x6a, 0xe8, 0xae, 0xde, 0xe9, 0x75, 0x27, 0xbd, 0x72, 0x13, 0xf8, 0x58,
-  0x46, 0x44, 0xc0, 0x9b, 0xbb, 0xc8, 0xae, 0x01, 0x29, 0x50, 0x7d, 0x54,
-  0xf2, 0x32, 0x2c, 0x89, 0x18, 0x86, 0x82, 0x95, 0x94, 0x88, 0x8e, 0xec,
-  0xaa, 0x92, 0x5a, 0x16, 0xba, 0xac, 0x09, 0xca, 0xb3, 0x7a, 0x7a, 0x98,
-  0x8e, 0x9e, 0xa8, 0x1c, 0x1e, 0x74, 0x64, 0x0b, 0x5c, 0xb6, 0x89, 0x53,
-  0xfd, 0x66, 0xb4, 0xd7, 0xfa, 0x0d, 0x5a, 0x30, 0xa1, 0x9a, 0x11, 0x2c,
-  0x5f, 0x47, 0xbe, 0x12, 0x93, 0x0b, 0x6f, 0x91, 0x8d, 0x51, 0xcc, 0x56,
-  0x42, 0xe7, 0xcf, 0x1e, 0x14, 0xc6, 0x75, 0x6e, 0xdb, 0x69, 0x92, 0xf3,
-  0x17, 0xd4, 0x0f, 0x17, 0x21, 0xd6, 0x49, 0xd6, 0x24, 0x41, 0xb9, 0xa0,
-  0xba, 0x86, 0x50, 0xf2, 0x98, 0xb5, 0xc7, 0x46, 0x40, 0xd0, 0xdc, 0x12,
-  0xd0, 0xf6, 0xbb, 0xc2, 0xc4, 0x6c, 0xe4, 0x6e, 0x30, 0x63, 0x22, 0x9c,
-  0x0f, 0xc3, 0x84, 0x42, 0x35, 0xf0, 0x54, 0xf9, 0x21, 0xf9, 0x0f, 0x0c,
-  0x0e, 0xfe, 0xd8, 0xa3, 0x31, 0xcb, 0xe6, 0xb5, 0xb9, 0x17, 0x12, 0xa7,
-  0x77, 0xce, 0xb5, 0x2f, 0x8e, 0x88, 0xe8, 0xb0, 0xaa, 0xfd, 0xda, 0x35,
-  0xd5, 0xd6, 0x1f, 0xd0, 0xab, 0xf9, 0x8a, 0x9d, 0x8a, 0x11, 0x2c, 0x8a,
-  0x56, 0x65, 0xb6, 0x12, 0xd6, 0x45, 0x0e, 0x50, 0x79, 0x15, 0x3d, 0x1d,
-  0xf3, 0xe2, 0x8c, 0x1f, 0xdc, 0x38, 0x2d, 0x8f, 0x84, 0xef, 0x05, 0xe7,
-  0x61, 0x8c, 0xb7, 0xc7, 0x9a, 0x62, 0xf3, 0xdf, 0xab, 0x6c, 0x8d, 0xb6,
-  0x85, 0x38, 0x3d, 0xbd, 0x51, 0x25, 0xb1, 0x3c, 0x9e, 0x32, 0x13, 0xb2,
-  0xab, 0x0e, 0x07, 0x9b, 0xeb, 0x8c, 0xa9, 0xeb, 0x1c, 0x72, 0x4e, 0xad,
-  0xc8, 0xa2, 0xb8, 0x2d, 0xe5, 0x75, 0x83, 0xa8, 0x16, 0x4d, 0x44, 0xf4,
-  0xc2, 0x40, 0x6f, 0x6b, 0x88, 0xed, 0x8e, 0xb5, 0x14, 0x52, 0xd2, 0x40,
-  0xc8, 0x45, 0x97, 0x30, 0x5f, 0x50, 0x8d, 0x27, 0x22, 0xa3, 0x02, 0xd4,
-  0x4a, 0x8c, 0x36, 0xa0, 0x45, 0x22, 0x1d, 0x50, 0x48, 0xcb, 0xde, 0xe4,
-  0x93, 0xb2, 0xa8, 0x8a, 0x2b, 0xf1, 0x31, 0x79, 0x22, 0x56, 0x85, 0x45,
-  0x31, 0x4b, 0x52, 0xca, 0x39, 0x0d, 0xb1, 0x5e, 0xa1, 0x36, 0x33, 0xaf,
-  0x95, 0xb0, 0x4d, 0x94, 0xf9, 0x5c, 0x25, 0x12, 0x07, 0x17, 0x6b, 0x61,
-  0xb8, 0x49, 0x13, 0xb3, 0x11, 0xa1, 0x0f, 0x18, 0x88, 0xf2, 0xd9, 0xe3,
-  0xb8, 0x1b, 0x5e, 0x0a, 0x8e, 0x50, 0x8c, 0x33, 0x17, 0x0e, 0x9c, 0x6a,
-  0x89, 0x49, 0x2d, 0xcf, 0x24, 0xce, 0x4b, 0x7b, 0xad, 0xbb, 0x77, 0x06,
-  0x77, 0x00, 0xb3, 0x3a, 0xe2, 0x90, 0x61, 0x1d, 0x61, 0x86, 0x06, 0x9e,
-  0x1c, 0x5f, 0xbe, 0x4e, 0xa6, 0x25, 0x19, 0x7a, 0xf2, 0xe7, 0x80, 0x54,
-  0xd9, 0xbf, 0xa7, 0x11, 0x99, 0x51, 0xb5, 0xe4, 0x45, 0x1a, 0xb0, 0x49,
-  0x34, 0xd8, 0x7d, 0x3a, 0xac, 0x3f, 0x74, 0x62, 0x07, 0x43, 0x9c, 0x9d,
-  0xd6, 0x88, 0xf3, 0xcb, 0xa5, 0x4c, 0x2f, 0x25, 0x50, 0xb4, 0x1f, 0x1e,
-  0xda, 0x23, 0xee, 0x77, 0x91, 0x19, 0x8b, 0x58, 0xc4, 0xf3, 0x7e, 0x97,
-  0x7c, 0x2a, 0x10, 0xb3, 0x13, 0x87, 0x29, 0xd0, 0xcb, 0x26, 0xb8, 0x32,
-  0xae, 0x7b, 0xf7, 0x38, 0xd4, 0xd2, 0xa0, 0x95, 0x98, 0x40, 0x58, 0x28,
-  0x32, 0x2e, 0xfd, 0x55, 0x47, 0xad, 0x44, 0x20, 0xd8, 0x1a, 0x7b, 0x73,
-  0x0d, 0xec, 0x67, 0x15, 0x97, 0x30, 0xe0, 0x49, 0xf5, 0x35, 0xc6, 0x4d,
-  0x52, 0xa7, 0xa4, 0xe9, 0xdf, 0x52, 0x9f, 0x56, 0xc6, 0x8c, 0xb3, 0xb6,
-  0x9e, 0x27, 0xf8, 0x43, 0x8d, 0xd7, 0xb4, 0xb5, 0xcb, 0xe0, 0x36, 0x75,
-  0xb5, 0x3e, 0xd9, 0x09, 0xa6, 0xa0, 0x81, 0x76, 0xd0, 0x72, 0x73, 0x40,
-  0x02, 0xfb, 0x60, 0x53, 0xf6, 0x79, 0xb6, 0xe0, 0x1a, 0x71, 0xb2, 0xbb,
-  0x21, 0x4f, 0x9d, 0xca, 0xd4, 0xd4, 0x8d, 0x5c, 0x3a, 0xfc, 0x60, 0xd5,
-  0xdd, 0x3b, 0x92, 0x85, 0xac, 0xc7, 0x4a, 0x8c, 0x45, 0xcb, 0xe9, 0xfe,
-  0x53, 0xb8, 0xdd, 0x42, 0xe1, 0x13, 0x00, 0xfa, 0x1f, 0x53, 0xa8, 0x54,
-  0x9c, 0x7b, 0xf0, 0xbf, 0x46, 0x1b, 0x2a, 0xc3, 0xf1, 0x5d, 0x1e, 0x9d,
-  0x07, 0xc1, 0xd5, 0x7e, 0xec, 0x5f, 0xf2, 0xd9, 0xef, 0x9a, 0x90, 0xb4,
-  0x70, 0xad, 0xcf, 0xff, 0x89, 0x4a, 0x86, 0x1f, 0x41, 0xa0, 0x67, 0xb8,
-  0x1f, 0xb6, 0xa6, 0x46, 0xf9, 0x1e, 0xf2, 0x69, 0x37, 0x6d, 0x81, 0xce,
-  0x90, 0xd1, 0x78, 0xeb, 0x1c, 0x31, 0xc3, 0x80, 0x91, 0x6a, 0x9c, 0xbc,
-  0xa2, 0xde, 0xb0, 0xca, 0xcb, 0xb6, 0xbe, 0xf7, 0x4f, 0xc6, 0xaa, 0xba,
-  0xf7, 0x55, 0xe3, 0x8a, 0x44, 0xc5, 0x49, 0x0f, 0xe3, 0xe2, 0x36, 0xb2,
-  0x90, 0x6a, 0x4e, 0xcb, 0xb3, 0x29, 0x9f, 0x4b, 0x37, 0xe1, 0x1e, 0x7b,
-  0xe1, 0x4b, 0x38, 0xa4, 0xc9, 0xf4, 0x58, 0x71, 0x94, 0x7e, 0xfc, 0x60,
-  0x54, 0x07, 0x4a, 0x12, 0x59, 0x66, 0xdc, 0xe7, 0x66, 0x87, 0xab, 0x0e,
-  0x51, 0x84, 0xd4, 0x99, 0x6c, 0xae, 0x39, 0xb0, 0xe3, 0xb2, 0xb8, 0xa5,
-  0xd3, 0xca, 0xaf, 0xc1, 0x42, 0xe1, 0xd9, 0x97, 0xdb, 0xc0, 0xac, 0x78,
-  0xba, 0xbb, 0x85, 0x64, 0xab, 0x83, 0x54, 0xcf, 0xd8, 0xb2, 0x2d, 0x72,
-  0xec, 0xd5, 0x4e, 0x61, 0x34, 0x45, 0xae, 0xa3, 0x89, 0x4b, 0xf8, 0xc2,
-  0xb9, 0x74, 0xa3, 0x47, 0x51, 0xc5, 0x71, 0x43, 0x65, 0xa2, 0xfd, 0xe7,
-  0xed, 0x21, 0xb7, 0x2d, 0xc2, 0x3d, 0xd4, 0xb1, 0xe4, 0x8d, 0xcd, 0x24,
-  0x62, 0xff, 0x05, 0xed, 0x2a, 0x11, 0xe8, 0xec, 0x04, 0x6d, 0x7b, 0xe1,
-  0x41, 0xe8, 0x3c, 0x08, 0x92, 0xf3, 0x15, 0xaf, 0x7c, 0xa5, 0xd1, 0x7e,
-  0x09, 0x8e, 0x4f, 0x3d, 0x0b, 0x7d, 0x2a, 0xb7, 0x09, 0x3c, 0x1a, 0xb1,
-  0x42, 0xc7, 0xea, 0xaf, 0x53, 0x8f, 0xc4, 0x84, 0x85, 0x9c, 0xe0, 0xe5,
-  0x01, 0xa1, 0x09, 0xd2, 0xe9, 0x34, 0xba, 0xf1, 0x6f, 0x61, 0x2a, 0xb8,
-  0x7c, 0x29, 0x32, 0xde, 0x84, 0x99, 0xd5, 0xa1, 0x0f, 0x04, 0xe7, 0xe7,
-  0x52, 0x9d, 0x98, 0xcf, 0x2f, 0x94, 0x19, 0xe8, 0xda, 0x30, 0x39, 0x66,
-  0x28, 0x41, 0x87, 0x45, 0x69, 0x89, 0x31, 0x18, 0x63, 0xae, 0x44, 0x59,
-  0x92, 0x61, 0xae, 0xf6, 0x39, 0xd3, 0x10, 0xcd, 0x2d, 0xbf, 0x9f, 0x41,
-  0x05, 0xae, 0x5e, 0x59, 0xa7, 0x75, 0x5d, 0xd5, 0x42, 0xdd, 0x93, 0x18,
-  0x0d, 0xb3, 0xfd, 0xc8, 0x91, 0xb2, 0xbe, 0xf6, 0x60, 0xd0, 0xbe, 0x78,
-  0xeb, 0xc4, 0xf0, 0xed, 0x50, 0xd5, 0xd1, 0x9b, 0xc4, 0x3f, 0xd4, 0x0f,
-  0xfe, 0x7e, 0xf0, 0xc5, 0xae, 0x55, 0x23, 0x66, 0xf7, 0x68, 0xf8, 0x0c,
-  0xe8, 0xb2, 0x3b, 0x0c, 0x36, 0x50, 0xfb, 0x14, 0xb5, 0x7b, 0xb4, 0x4d,
-  0xa5, 0xfc, 0x7c, 0xf8, 0x74, 0xbb, 0xb1, 0x5f, 0xea, 0xd9, 0x3c, 0xd6,
-  0x00, 0xdf, 0x5e, 0x9e, 0xbe, 0x49, 0x22, 0xcd, 0x4f, 0x7c, 0x13, 0xf8,
-  0x5d, 0xf3, 0x57, 0xff, 0x15, 0x0d, 0x90, 0x7e, 0x71, 0x72, 0x32, 0x82,
-  0xfe, 0xa7, 0xe8, 0xf9, 0x08, 0xb0, 0x55, 0x2b, 0x9f, 0x06, 0xdf, 0xa0,
-  0x65, 0x9e, 0xd5, 0xac, 0x6b, 0x98, 0xff, 0x94, 0x93, 0xce, 0xf8, 0xa5,
-  0x6c, 0x90, 0x2d, 0xc8, 0xb4, 0xcf, 0x60, 0x25, 0x33, 0x47, 0xee, 0x0c,
-  0x52, 0x69, 0x99, 0x15, 0x1d, 0x3e, 0x74, 0xe9, 0x80, 0x89, 0x14, 0x99,
-  0x1b, 0xdc, 0x15, 0xe3, 0xb4, 0x72, 0xac, 0x16, 0xa4, 0x94, 0xd2, 0x8e,
-  0x63, 0x95, 0x42, 0x1d, 0x5f, 0xb7, 0x39, 0x32, 0x1b, 0xa3, 0x8c, 0x3f,
-  0x2d, 0x9c, 0xe4, 0xc4, 0xa1, 0xf9, 0x7e, 0x16, 0xd3, 0xa2, 0x44, 0x40,
-  0x2a, 0x60, 0x07, 0x64, 0x0a, 0xdd, 0x15, 0x20, 0x75, 0xdc, 0xbd, 0x87,
-  0x0e, 0xdb, 0xe8, 0xa6, 0x10, 0x44, 0x1b, 0xa6, 0x99, 0xa5, 0x92, 0x64,
-  0x66, 0x00, 0xfa, 0xa2, 0xec, 0x71, 0xca, 0xd8, 0x6f, 0xa2, 0x24, 0x5c,
-  0xa8, 0x2e, 0xe4, 0xb5, 0x2b, 0x6e, 0x2b, 0x89, 0x36, 0x9e, 0x7b, 0xf1,
-  0x55, 0x7e, 0xbd, 0x86, 0xe5, 0x55, 0x00, 0x72, 0x6d, 0x1d, 0x93, 0x7b,
-  0xe4, 0xd4, 0x4b, 0x11, 0x33, 0x6d, 0x16, 0xf1, 0x8e, 0x0c, 0xe8, 0x86,
-  0x72, 0x49, 0xbb, 0xed, 0xd1, 0x1c, 0x8c, 0xc7, 0xb5, 0x4a, 0x5c, 0x20,
-  0xa6, 0x52, 0x0a, 0x4f, 0x3d, 0x69, 0x8b, 0x91, 0x1f, 0x3a, 0xd0, 0x1d,
-  0xd7, 0xa7, 0xe5, 0xf0, 0x68, 0x86, 0xff, 0x8c, 0x92, 0x28, 0xfe, 0xb0,
-  0x15, 0xac, 0x44, 0xaa, 0xfb, 0xa5, 0x13, 0x06, 0xfd, 0x83, 0x10, 0x5a,
-  0xa8, 0x83, 0xa6, 0xd0, 0x87, 0x42, 0xc6, 0xd4, 0xaa, 0x9e, 0x16, 0x2b,
-  0x41, 0xf8, 0x03, 0x33, 0x54, 0xda, 0xed, 0xfd, 0x1f, 0xff, 0x19, 0xa7,
-  0x2c, 0xfc, 0xf4, 0x8b, 0x38, 0xf1, 0x24, 0x69, 0xd8, 0x47, 0x7f, 0x6d,
-  0xeb, 0x54, 0x9e, 0xb4, 0x9a, 0x17, 0x89, 0x59, 0x3a, 0x24, 0x00, 0x2a,
-  0x47, 0xa8, 0xad, 0x9c, 0x6a, 0xb8, 0x56, 0xaf, 0x5e, 0xed, 0x9b, 0xc9,
-  0x7d, 0xb0, 0xe8, 0xa7, 0x81, 0xb7, 0x52, 0xfc, 0x58, 0x63, 0x38, 0xf1,
-  0x25, 0x0b, 0x7c, 0x1d, 0xaf, 0xa6, 0xa5, 0xd8, 0x37, 0xe9, 0xd2, 0x91,
-  0xdc, 0x2c, 0x11, 0x36, 0xf4, 0x9f, 0x6f, 0x96, 0x53, 0x29, 0x40, 0x14,
-  0xf3, 0x9d, 0xc9, 0xda, 0x6a, 0x24, 0xe9, 0x3f, 0x68, 0x2d, 0xfa, 0xf5,
-  0x7d, 0xf1, 0x9f, 0x43, 0x86, 0x8a, 0x41, 0xf0, 0x0e, 0x0a, 0xa9, 0x0e,
-  0xf9, 0xfe, 0x0f, 0x7b, 0x6c, 0x54, 0xf5, 0xe2, 0xaa, 0x8f, 0x98, 0x01,
-  0x5b, 0x62, 0xc7, 0x3c, 0xb0, 0x86, 0x5e, 0xad, 0xf9, 0x39, 0xfe, 0x4a,
-  0x9f, 0xaf, 0x80, 0xff, 0x1c, 0xf2, 0x9f, 0x3f, 0xed, 0x0d, 0x9e, 0xfd,
-  0xe2, 0xbe, 0xfa, 0x87, 0xbd, 0xf7, 0x7f, 0xd8, 0xef, 0x75, 0x96, 0x3d,
-  0x65, 0xbb, 0x73, 0x65, 0x14, 0xeb, 0xa6, 0xaa, 0x6b, 0xbd, 0x74, 0x09,
-  0xd0, 0xab, 0x5d, 0xef, 0xe3, 0xe4, 0xe0, 0x14, 0x8f, 0xf1, 0xee, 0xec,
-  0xef, 0xfb, 0x08, 0xb5, 0x67, 0x58, 0x7e, 0x2e, 0xb0, 0x5a, 0xb4, 0x1a,
-  0x9b, 0xb8, 0x6b, 0x10, 0x55, 0x32, 0xc7, 0x71, 0xe4, 0xa3, 0x06, 0x0d,
-  0xd9, 0xf4, 0x81, 0xee, 0x39, 0xa1, 0x42, 0x1b, 0x3a, 0x54, 0x8b, 0x69,
-  0x8f, 0x56, 0xff, 0x5c, 0x58, 0x51, 0xb6, 0xdc, 0x8d, 0xcf, 0xf4, 0x19,
-  0xdb, 0x5d, 0x3e, 0x20, 0xef, 0x7c, 0xf3, 0x7b, 0x5e, 0x6b, 0x85, 0xe1,
-  0xf0, 0xca, 0x66, 0xf7, 0x07, 0xa8, 0x4d, 0x47, 0xf6, 0x91, 0xe3, 0x93,
-  0x86, 0x61, 0x40, 0xe1, 0xdb, 0xd7, 0xca, 0xa7, 0x99, 0x85, 0x2a, 0xf1,
-  0xab, 0xfb, 0x0c, 0xda, 0x6b, 0xfb, 0xde, 0xd9, 0x3a, 0x73, 0xb6, 0x8e,
-  0xb8, 0xc9, 0x02, 0xd2, 0xd6, 0xf0, 0xf5, 0x00, 0x78, 0x90, 0x25, 0x56,
-  0xcc, 0x73, 0xb2, 0xaa, 0xe3, 0xe4, 0xeb, 0xe1, 0x76, 0x17, 0xf2, 0x3a,
-  0x6c, 0x0b, 0x5a, 0x84, 0x87, 0xc8, 0x26, 0x95, 0x70, 0xc1, 0x8b, 0x3d,
-  0x28, 0x64, 0x68, 0x2c, 0x8b, 0x04, 0xcb, 0x17, 0xeb, 0x26, 0xae, 0xc8,
-  0x5b, 0xdf, 0x51, 0x30, 0x66, 0xb3, 0x2a, 0xde, 0x1b, 0x47, 0x1c, 0x54,
-  0x63, 0x42, 0xa1, 0x1a, 0x39, 0x7c, 0xfd, 0xb0, 0xe4, 0x97, 0xcb, 0x5d,
-  0x4a, 0xef, 0x7c, 0xb8, 0xcc, 0xce, 0xa8, 0x62, 0x8f, 0x63, 0xce, 0x0c,
-  0x8d, 0x35, 0x34, 0xdd, 0x13, 0x8e, 0x91, 0x31, 0x75, 0x75, 0x18, 0x82,
-  0xe4, 0x23, 0x9f, 0x83, 0x18, 0xa9, 0x44, 0x4c, 0xdb, 0xc1, 0xd0, 0x5e,
-  0x88, 0x27, 0xc9, 0x12, 0x6a, 0xf5, 0x20, 0x08, 0x59, 0x69, 0xce, 0x3d,
-  0x3f, 0x2b, 0x24, 0x2c, 0x5d, 0xc1, 0x5b, 0x27, 0x6d, 0x62, 0x4e, 0x3b,
-  0xae, 0x31, 0xff, 0x2f, 0x5d, 0x27, 0xf4, 0xb7, 0x1e, 0xd0, 0x8f, 0x9e,
-  0xd0, 0xc1, 0xb2, 0x6f, 0x57, 0x62, 0xcd, 0xa0, 0xe1, 0x59, 0x97, 0x93,
-  0xc2, 0xa8, 0xea, 0xe5, 0xa2, 0x35, 0x75, 0x69, 0x6b, 0xf0, 0xc1, 0xbd,
-  0xdb, 0x95, 0x19, 0x87, 0x00, 0x6b, 0x14, 0xe8, 0x5d, 0x0c, 0xac, 0x29,
-  0x28, 0x4d, 0x46, 0xc3, 0xab, 0x35, 0x1a, 0xf1, 0x0f, 0xe9, 0x88, 0x2b,
-  0x4d, 0x6f, 0xec, 0x56, 0xfc, 0x9d, 0x35, 0x04, 0xde, 0x3c, 0xde, 0x39,
-  0xad, 0xe5, 0xcc, 0x52, 0xaf, 0xf2, 0x5a, 0xab, 0xb2, 0x80, 0x4b, 0x14,
-  0x47, 0xcd, 0x81, 0x58, 0x85, 0x5c, 0x97, 0xbf, 0x12, 0x95, 0x8f, 0xa6,
-  0xaf, 0xa6, 0x4b, 0xfa, 0x50, 0x2a, 0x78, 0x5c, 0x90, 0xe0, 0xb9, 0xe5,
-  0x42, 0xbf, 0xcd, 0x95, 0x75, 0x74, 0xf6, 0xf6, 0xed, 0xf1, 0xd1, 0xa5,
-  0x4f, 0x40, 0xea, 0xc0, 0x8e, 0x39, 0x0d, 0xc2, 0xa1, 0xa7, 0x54, 0x53,
-  0x91, 0x1c, 0x2f, 0xc5, 0x2c, 0xab, 0x07, 0xc1, 0x7c, 0xeb, 0x7a, 0x04,
-  0x59, 0x33, 0xe8, 0xbe, 0xf4, 0x64, 0x0f, 0xa5, 0x0b, 0xc9, 0x39, 0xd3,
-  0xb9, 0xb2, 0xa9, 0xaa, 0x8b, 0x60, 0x69, 0x9b, 0x05, 0xc9, 0xd6, 0x42,
-  0xbf, 0x90, 0x9a, 0x7b, 0x21, 0xaa, 0x6b, 0xb3, 0xf4, 0xa1, 0x16, 0x9f,
-  0x29, 0xca, 0x1d, 0xc0, 0x57, 0xb8, 0x82, 0x75, 0x52, 0x16, 0x33, 0x4f,
-  0x02, 0xd9, 0xc1, 0x3c, 0xe7, 0x2a, 0xab, 0x4a, 0x91, 0x04, 0x6a, 0xdc,
-  0xb1, 0x59, 0xaa, 0xfe, 0x38, 0xf7, 0x49, 0x80, 0xb0, 0xe7, 0x7c, 0xb5,
-  0x1b, 0x0e, 0x52, 0x45, 0xec, 0x69, 0xfc, 0xfb, 0x89, 0xe5, 0x86, 0x09,
-  0x45, 0x8f, 0x63, 0x85, 0x54, 0x04, 0x0c, 0x76, 0x8d, 0xcd, 0x23, 0xa8,
-  0xc5, 0x74, 0x23, 0xc5, 0x99, 0xbe, 0xa8, 0xd1, 0xba, 0x19, 0x18, 0x89,
-  0x0e, 0xe2, 0x06, 0x47, 0x16, 0x4d, 0x94, 0xa5, 0xb8, 0x34, 0x6a, 0x06,
-  0xa1, 0x9a, 0xef, 0x3a, 0x8e, 0x49, 0xd1, 0xee, 0x38, 0x3a, 0x49, 0x07,
-  0x25, 0x20, 0x51, 0xb5, 0x16, 0x05, 0xd0, 0x9c, 0xd7, 0xad, 0x7e, 0xf2,
-  0x5a, 0x35, 0x9b, 0x73, 0x4b, 0x14, 0xa5, 0xca, 0x47, 0x17, 0xbf, 0xe3,
-  0x53, 0xed, 0x2e, 0x53, 0x98, 0x0f, 0xb9, 0x60, 0x22, 0x53, 0xad, 0xf6,
-  0x9a, 0xdc, 0x5b, 0x8a, 0x35, 0xb7, 0xb7, 0x69, 0x26, 0x82, 0x0e, 0xc7,
-  0xc2, 0xc2, 0xae, 0x48, 0x55, 0xbf, 0x79, 0xbd, 0xb6, 0xde, 0x2d, 0xf2,
-  0x0f, 0xd0, 0x39, 0x63, 0xce, 0x0b, 0xd7, 0xd4, 0xfa, 0x5e, 0xf5, 0xf6,
-  0x9e, 0xef, 0x0f, 0xf7, 0x3e, 0xfb, 0x62, 0xb8, 0xb7, 0x3b, 0xdc, 0xeb,
-  0x85, 0xc0, 0x3f, 0x44, 0x09, 0x39, 0xae, 0x17, 0xb6, 0xd3, 0x61, 0xf1,
-  0x76, 0x19, 0xd6, 0xe1, 0x07, 0xe6, 0x0f, 0xc3, 0x20, 0xd6, 0x1a, 0x7d,
-  0x42, 0xe3, 0xb1, 0xed, 0x96, 0x07, 0x81, 0xc0, 0xc7, 0x56, 0x5b, 0x72,
-  0x60, 0xda, 0x25, 0x14, 0x36, 0xea, 0xde, 0x09, 0xbc, 0xd8, 0x55, 0x8f,
-  0xeb, 0x2a, 0x2d, 0x10, 0xc0, 0x47, 0xbb, 0x6b, 0xca, 0xb9, 0xef, 0xff,
-  0xea, 0x2c, 0xbc, 0x08, 0x37, 0xc7, 0x4e, 0x39, 0x77, 0x0c, 0xd5, 0xb1,
-  0xe4, 0xdc, 0x97, 0x5c, 0x7a, 0x4e, 0xb3, 0x8a, 0x5d, 0x95, 0xc9, 0xa1,
-  0x73, 0xe3, 0xc1, 0x43, 0x1c, 0xca, 0xde, 0x55, 0x2b, 0x43, 0x1e, 0x35,
-  0xeb, 0x3c, 0xd3, 0x72, 0x28, 0x70, 0xd1, 0xb2, 0x4b, 0x76, 0x0d, 0x0b,
-  0x0f, 0xb2, 0x4d, 0x84, 0x17, 0x39, 0x83, 0x25, 0x0b, 0xe3, 0x5e, 0xfc,
-  0xce, 0x9f, 0xfe, 0xe4, 0x65, 0xd4, 0x88, 0xa1, 0xbe, 0x5a, 0x16, 0x08,
-  0x2e, 0x81, 0x67, 0xde, 0x10, 0x90, 0xec, 0xb6, 0xa4, 0x77, 0xf0, 0x13,
-  0x00, 0xc1, 0xbf, 0x0c, 0x7e, 0xa2, 0x7f, 0xfe, 0xd2, 0x73, 0x82, 0x12,
-  0xa0, 0x07, 0x51, 0x82, 0xdc, 0xe0, 0x65, 0x89, 0xfa, 0x18, 0x8b, 0x07,
-  0x07, 0x22, 0x3d, 0x92, 0xbd, 0xb5, 0x38, 0x8d, 0x92, 0x12, 0x24, 0xbb,
-  0x59, 0x4d, 0x05, 0xc9, 0x0c, 0x83, 0x71, 0x4c, 0x3b, 0xc5, 0xcd, 0xa5,
-  0x40, 0x61, 0xfd, 0x4b, 0x7d, 0xa3, 0xfc, 0x65, 0xc3, 0xa4, 0x14, 0xbd,
-  0xce, 0x72, 0xc7, 0x54, 0x3c, 0x33, 0xbe, 0xc9, 0x55, 0xc9, 0xd5, 0x9f,
-  0x6d, 0xb8, 0x54, 0x66, 0xce, 0x5e, 0xb0, 0xa2, 0x77, 0x12, 0x7c, 0x13,
-  0xc7, 0x56, 0xe6, 0xe2, 0xe2, 0x2e, 0x57, 0x40, 0xc7, 0x58, 0xdd, 0xf2,
-  0x10, 0x35, 0x47, 0x47, 0x78, 0x08, 0x36, 0x02, 0xe4, 0x07, 0xfa, 0x66,
-  0x79, 0x2d, 0x1c, 0x39, 0x32, 0x04, 0x60, 0xe8, 0x58, 0x61, 0x49, 0x96,
-  0xbc, 0x58, 0xde, 0x94, 0xd4, 0xee, 0x23, 0x14, 0x30, 0xf4, 0x94, 0x3c,
-  0xe3, 0x76, 0xed, 0xd2, 0x53, 0xa6, 0xfc, 0x8e, 0x58, 0x4f, 0x2e, 0x55,
-  0xff, 0x64, 0x77, 0x6f, 0x0d, 0x1b, 0x30, 0x64, 0xbd, 0x21, 0x3a, 0x18,
-  0x84, 0xc5, 0xb2, 0x93, 0x01, 0x99, 0xc9, 0xfe, 0x67, 0x7b, 0x9f, 0xed,
-  0x90, 0x14, 0x79, 0x32, 0xdc, 0x57, 0xcf, 0x14, 0x18, 0x3f, 0xe8, 0x88,
-  0x51, 0x1f, 0xda, 0x97, 0x27, 0xf2, 0xa0, 0xed, 0xb2, 0x06, 0xc8, 0x8b,
-  0x9a, 0x0b, 0x4a, 0xef, 0x54, 0x72, 0xa3, 0x79, 0xd4, 0x6d, 0xca, 0x99,
-  0xcd, 0x0e, 0x2b, 0x1b, 0xe5, 0xa9, 0x58, 0xf8, 0x91, 0x15, 0x1a, 0xee,
-  0x8d, 0xfa, 0x5e, 0x56, 0x52, 0x3d, 0x6b, 0x9c, 0xd3, 0xcd, 0x5f, 0x73,
-  0x3d, 0x54, 0x24, 0xd8, 0xa0, 0xee, 0x8a, 0x31, 0x2c, 0x33, 0x15, 0x69,
-  0xd1, 0x59, 0x27, 0x42, 0x8a, 0x2c, 0x1b, 0xab, 0xa2, 0xb9, 0x0e, 0xc2,
-  0x28, 0x02, 0x60, 0xb9, 0xb9, 0x10, 0x80, 0x82, 0x30, 0x97, 0x6f, 0xe5,
-  0xc9, 0x43, 0xfb, 0x1e, 0xf9, 0xd6, 0xd8, 0x48, 0x53, 0xbb, 0xa1, 0x24,
-  0x4b, 0x4a, 0xbc, 0xd0, 0xa9, 0x4c, 0x86, 0x27, 0x8f, 0xd2, 0x1f, 0x08,
-  0xf4, 0x93, 0x3d, 0x32, 0x31, 0x6d, 0x66, 0x80, 0x19, 0x1e, 0x76, 0x20,
-  0x0e, 0x94, 0x7d, 0x89, 0x53, 0x7f, 0xc4, 0xdb, 0x2a, 0xa1, 0x3c, 0xc8,
-  0x85, 0xc7, 0x80, 0xd2, 0x8f, 0x55, 0x08, 0x90, 0x6d, 0xb1, 0xff, 0xbf,
-  0xe1, 0xb6, 0xd8, 0xff, 0xbf, 0xdb, 0xe2, 0x9f, 0xb8, 0x2d, 0x9e, 0x77,
-  0x6d, 0x8b, 0x27, 0xff, 0x1b, 0x6e, 0x8b, 0x27, 0xff, 0x77, 0x5b, 0xfc,
-  0xf3, 0xb6, 0xc5, 0xfe, 0x67, 0xcd, 0x5c, 0x0f, 0xd8, 0x93, 0x74, 0xc9,
-  0x99, 0x59, 0x19, 0x91, 0xeb, 0x61, 0x67, 0x34, 0xc9, 0x02, 0x0c, 0x1b,
-  0x94, 0x2b, 0xb7, 0x8c, 0x37, 0x49, 0x55, 0x61, 0xaf, 0x3c, 0x9d, 0x49,
-  0x5c, 0xeb, 0xa6, 0xcc, 0xb3, 0xbb, 0x74, 0x36, 0x4c, 0xce, 0xdd, 0x6b,
-  0xec, 0x02, 0xe5, 0x9f, 0xad, 0x10, 0xc8, 0x9a, 0x65, 0x57, 0x58, 0x02,
-  0xe8, 0x29, 0x7d, 0xfc, 0x12, 0x6a, 0x14, 0xb3, 0xa2, 0x0d, 0x22, 0xa8,
-  0x3f, 0xbf, 0x22, 0xb1, 0x25, 0xb4, 0xc2, 0x06, 0x68, 0xea, 0x91, 0xd9,
-  0x42, 0x78, 0x5f, 0x26, 0x9b, 0xa4, 0x4b, 0x6d, 0xf6, 0x1b, 0xac, 0xb2,
-  0x9c, 0x48, 0x12, 0x13, 0x62, 0x7f, 0x10, 0xbf, 0xe9, 0xdf, 0xb3, 0xb2,
-  0x48, 0x0c, 0x08, 0xa2, 0x8c, 0x18, 0x60, 0x85, 0x37, 0x35, 0xc1, 0xff,
-  0x90, 0xbf, 0x1b, 0x59, 0x19, 0x7f, 0x42, 0xcd, 0x09, 0x61, 0x41, 0xe1,
-  0xfc, 0x54, 0x87, 0x14, 0x5f, 0xb0, 0xaa, 0x95, 0x9b, 0xeb, 0xce, 0xcf,
-  0x9c, 0xa9, 0xc4, 0xc0, 0xa2, 0xd6, 0x1d, 0x35, 0xe8, 0x79, 0x66, 0xb6,
-  0xc2, 0xe0, 0xa4, 0xb3, 0x35, 0xaf, 0x24, 0x73, 0x5e, 0xba, 0xe3, 0x58,
-  0x6a, 0x87, 0x1d, 0x7a, 0xfa, 0xab, 0x8c, 0xbd, 0x1e, 0x61, 0x87, 0xfa,
-  0x52, 0x61, 0x53, 0x2d, 0x7f, 0x87, 0x42, 0xf0, 0xb1, 0x44, 0xdf, 0xc5,
-  0xb8, 0x4b, 0xcd, 0x3e, 0xd7, 0x1d, 0x80, 0x84, 0x97, 0x6e, 0x1a, 0xcc,
-  0xd7, 0x1e, 0x4e, 0xc6, 0x16, 0xc0, 0xe5, 0xe6, 0x79, 0xc4, 0x27, 0x3f,
-  0x65, 0x1a, 0xe0, 0x32, 0x81, 0xd1, 0x5e, 0xad, 0xc6, 0x7f, 0x55, 0x8b,
-  0x90, 0x91, 0x6a, 0x42, 0xe0, 0x1d, 0xd6, 0x0a, 0x41, 0x8a, 0x39, 0x3d,
-  0xa5, 0x8e, 0xb2, 0xb8, 0x39, 0xfa, 0x21, 0x9c, 0xa2, 0x8e, 0x59, 0x58,
-  0xf7, 0x99, 0xc6, 0x54, 0xb9, 0x4f, 0xd1, 0xa0, 0x82, 0xc0, 0x60, 0xb4,
-  0xee, 0x76, 0x9e, 0xd8, 0x62, 0xa8, 0x94, 0xf2, 0x37, 0x5c, 0x2c, 0x37,
-  0x9b, 0xaa, 0xc4, 0x5a, 0x08, 0x94, 0x1f, 0x5f, 0xdb, 0x16, 0x6d, 0xd7,
-  0x3e, 0x3b, 0xaa, 0xab, 0xfe, 0x9f, 0xf8, 0x3f, 0xdd, 0x06, 0x53, 0x83,
-  0xe1, 0xcb, 0xf0, 0x12, 0xfc, 0x38, 0xce, 0x06, 0x5e, 0x5f, 0xf7, 0x81,
-  0x97, 0xfc, 0x5b, 0xf9, 0xc2, 0xe3, 0x6d, 0xc3, 0x15, 0xfd, 0x2b, 0x3e,
-  0xf0, 0x6e, 0x21, 0x09, 0x83, 0xa1, 0x84, 0x58, 0x6a, 0x06, 0x39, 0xca,
-  0xea, 0xa5, 0xe5, 0x42, 0xe0, 0x0e, 0x61, 0xcd, 0x38, 0xc6, 0xf3, 0x2f,
-  0xe1, 0xa4, 0x69, 0x3b, 0x0d, 0xd2, 0x2b, 0x76, 0x54, 0xc1, 0x5b, 0xc5,
-  0xb8, 0x2f, 0x49, 0xdd, 0x51, 0x6e, 0x23, 0x83, 0x06, 0x2c, 0x8b, 0xda,
-  0x5c, 0xa2, 0xc9, 0x94, 0x6d, 0x8f, 0x12, 0xf7, 0x43, 0x07, 0x1d, 0xa1,
-  0x2d, 0x84, 0x2f, 0x0b, 0xc7, 0x2d, 0xc3, 0x05, 0xb3, 0x5a, 0x82, 0x49,
-  0x34, 0xc0, 0xa2, 0xc1, 0xcc, 0x70, 0x3b, 0x17, 0x9f, 0x6e, 0x07, 0x11,
-  0x11, 0xe3, 0xc2, 0x85, 0xe7, 0x78, 0x9a, 0xee, 0x8a, 0x9c, 0x13, 0x78,
-  0x24, 0x19, 0x69, 0xf8, 0xdb, 0xe8, 0x53, 0xfb, 0x41, 0xe5, 0x81, 0xb4,
-  0x0a, 0x31, 0xc1, 0x71, 0x04, 0xdf, 0x9b, 0xdd, 0xa9, 0xa4, 0x3e, 0xd2,
-  0x2e, 0x5e, 0xa4, 0x8e, 0xf6, 0xdb, 0x2f, 0x03, 0xba, 0x29, 0x1c, 0xc0,
-  0x0c, 0x50, 0x9e, 0x64, 0x71, 0x50, 0xd4, 0x13, 0x65, 0x7e, 0x2c, 0x77,
-  0x70, 0x3f, 0xba, 0x4f, 0x24, 0x7b, 0xf0, 0xa3, 0xb7, 0x8a, 0xcd, 0x93,
-  0x11, 0x78, 0xe8, 0x85, 0x12, 0xec, 0x16, 0xcd, 0xaa, 0x0a, 0xae, 0x46,
-  0xc9, 0xf3, 0x5e, 0xb3, 0x93, 0xaf, 0x50, 0x7e, 0xe7, 0x3e, 0x94, 0xab,
-  0x25, 0x7b, 0x06, 0x49, 0xd4, 0x57, 0x02, 0xd9, 0xf8, 0x95, 0x43, 0xf9,
-  0xf0, 0x30, 0x48, 0x17, 0x0f, 0x1c, 0x21, 0x7d, 0xe4, 0x5a, 0x64, 0x41,
-  0x0e, 0x30, 0x3e, 0xed, 0x98, 0x5c, 0x68, 0x93, 0x5b, 0xe0, 0x31, 0x8b,
-  0xa6, 0x83, 0x6c, 0x9c, 0x64, 0xcc, 0x2a, 0x72, 0xfe, 0x69, 0xf1, 0x73,
-  0x75, 0xfe, 0xd5, 0x01, 0x99, 0x8b, 0x22, 0x23, 0x54, 0x1b, 0x10, 0xae,
-  0x0a, 0x25, 0xab, 0x00, 0xe3, 0x1e, 0x42, 0x0a, 0xdd, 0xe4, 0x4e, 0x3b,
-  0x2e, 0xf7, 0xa6, 0x64, 0xc2, 0xf1, 0x01, 0xc9, 0xba, 0x65, 0x8b, 0xad,
-  0xe2, 0x49, 0xd7, 0x90, 0x51, 0x2a, 0xe7, 0x23, 0x7a, 0x00, 0x7f, 0x7f,
-  0x2d, 0xbb, 0x42, 0x30, 0x52, 0x1b, 0xd9, 0xba, 0xc8, 0xa1, 0x8c, 0x52,
-  0x07, 0xf9, 0x4e, 0xb0, 0xdd, 0x68, 0x11, 0x64, 0x5c, 0x2c, 0x66, 0x78,
-  0x5a, 0x82, 0x2f, 0x09, 0xa6, 0x33, 0x1a, 0xb0, 0x2f, 0xd8, 0xc6, 0xe8,
-  0x29, 0x3c, 0xe9, 0x4e, 0x84, 0x49, 0xdf, 0xee, 0x55, 0xe1, 0x21, 0xc5,
-  0x41, 0xdf, 0x4a, 0x3e, 0xc4, 0x1d, 0xcb, 0x9b, 0x18, 0x5c, 0x99, 0xa3,
-  0x29, 0x02, 0xef, 0x1f, 0xdd, 0xd6, 0xe8, 0xb8, 0x04, 0xe9, 0x3b, 0xe7,
-  0xe8, 0x37, 0x4f, 0x92, 0x7c, 0xbf, 0x63, 0x96, 0xf4, 0x63, 0x9d, 0x84,
-  0x64, 0x3a, 0x4d, 0x98, 0xa5, 0x68, 0x44, 0xeb, 0xb0, 0xc5, 0x6b, 0x06,
-  0xb5, 0x0e, 0x5d, 0xdc, 0x5e, 0xfb, 0x4e, 0xa6, 0x8a, 0xf5, 0xdb, 0x5c,
-  0x46, 0xb7, 0x68, 0x60, 0x61, 0x1b, 0x03, 0x6c, 0x23, 0xb7, 0xdc, 0x93,
-  0xca, 0x50, 0x18, 0x8e, 0xf1, 0x71, 0x3b, 0xd9, 0xc1, 0x19, 0x3e, 0x71,
-  0xc0, 0x1d, 0x80, 0x9a, 0xe4, 0xbf, 0xb8, 0x8a, 0x80, 0xee, 0x34, 0x86,
-  0x88, 0xaf, 0x34, 0x86, 0xd2, 0xe1, 0xc9, 0x8d, 0x16, 0x6f, 0x6f, 0xb8,
-  0x0b, 0x69, 0xfb, 0xe1, 0x01, 0xe1, 0xeb, 0x03, 0xbe, 0xb7, 0x7e, 0x69,
-  0x0b, 0xdd, 0x77, 0x2a, 0x66, 0xbd, 0x0b, 0x1f, 0xe3, 0xe2, 0x77, 0xb5,
-  0x53, 0x27, 0x56, 0x77, 0x34, 0x64, 0xea, 0x71, 0xa4, 0xb0, 0xeb, 0xf9,
-  0x77, 0xf3, 0x3a, 0xa0, 0xdf, 0xe5, 0x34, 0x46, 0xbc, 0xbf, 0xb7, 0xfb,
-  0xc5, 0x6e, 0x37, 0x4f, 0x15, 0x74, 0x08, 0x0b, 0x23, 0x4e, 0x3c, 0x8b,
-  0x36, 0xf4, 0x43, 0xe3, 0xed, 0x0b, 0x22, 0x67, 0x7a, 0x49, 0x72, 0xe0,
-  0xac, 0x4b, 0xf2, 0x23, 0x8c, 0x96, 0xab, 0x83, 0x59, 0xbd, 0xb2, 0x8e,
-  0xa5, 0xc8, 0x02, 0x4e, 0x2e, 0xd2, 0xe3, 0xc2, 0x49, 0x1d, 0x39, 0x81,
-  0xbe, 0x8a, 0x6f, 0x63, 0x6e, 0x4c, 0x79, 0x6f, 0x54, 0xbd, 0x35, 0xa9,
-  0xa2, 0x0f, 0xee, 0x35, 0x16, 0x65, 0x35, 0x7e, 0x84, 0x3b, 0xfa, 0x5b,
-  0xae, 0x6b, 0x29, 0x38, 0x20, 0x21, 0x41, 0xfe, 0x44, 0xe6, 0x68, 0xbc,
-  0x12, 0xd1, 0x8b, 0xff, 0xf3, 0x69, 0xa3, 0xff, 0x66, 0xed, 0x59, 0x0d,
-  0x23, 0x8f, 0xa1, 0xf1, 0xa5, 0x74, 0x8a, 0x40, 0xa5, 0x76, 0x5c, 0x7f,
-  0x6a, 0x76, 0xa3, 0x0e, 0x40, 0xcc, 0x25, 0xeb, 0x2b, 0x66, 0xb8, 0xb4,
-  0xbe, 0x71, 0x26, 0x45, 0x9c, 0x94, 0x38, 0x59, 0x79, 0x2a, 0x11, 0x04,
-  0x0e, 0xab, 0xb8, 0xc4, 0x54, 0x54, 0x96, 0x4c, 0xa8, 0xdd, 0x68, 0x96,
-  0xd9, 0xd0, 0x90, 0x76, 0x96, 0x96, 0xa4, 0x55, 0x71, 0xb8, 0x3f, 0x18,
-  0xdc, 0x7f, 0xe7, 0x66, 0x51, 0xc7, 0x87, 0xeb, 0x4e, 0xa1, 0xf3, 0x5d,
-  0x91, 0x3f, 0xad, 0x4f, 0xca, 0x30, 0x70, 0xde, 0x2d, 0x69, 0x39, 0xce,
-  0xeb, 0x32, 0x55, 0x1c, 0xbc, 0xf2, 0xcd, 0x06, 0x61, 0x49, 0xf0, 0xe2,
-  0xb2, 0x71, 0x3c, 0x5a, 0xc7, 0x38, 0x4b, 0xb2, 0xef, 0xbf, 0xe3, 0xab,
-  0xda, 0x80, 0xe8, 0x2e, 0x20, 0x84, 0xf8, 0xfa, 0xf8, 0xf5, 0xd9, 0xc5,
-  0x71, 0x93, 0x03, 0x44, 0x18, 0x41, 0xbb, 0xca, 0x1f, 0x6f, 0xfd, 0x15,
-  0x10, 0x78, 0x68, 0x4e, 0x61, 0x21, 0x94, 0xf3, 0x1f, 0x5e, 0xb9, 0xce,
-  0xe5, 0xae, 0x3c, 0xa3, 0x6b, 0xb1, 0x6f, 0x35, 0xcc, 0xa2, 0x54, 0x9b,
-  0x74, 0x52, 0x33, 0xf7, 0xbb, 0x55, 0xc8, 0xb1, 0xee, 0x09, 0x6b, 0x1a,
-  0xaa, 0xee, 0xca, 0xc7, 0x52, 0x81, 0xdf, 0x56, 0x15, 0x3b, 0x28, 0x5c,
-  0xb3, 0x1d, 0x55, 0x9d, 0xf2, 0x0f, 0x40, 0x72, 0x9b, 0x98, 0x63, 0x6c,
-  0x09, 0xc3, 0x4d, 0x86, 0x89, 0xfb, 0x88, 0xff, 0x8a, 0xe3, 0xec, 0x55,
-  0x65, 0xb0, 0xcb, 0xa5, 0xc3, 0x84, 0x22, 0x02, 0x31, 0x10, 0xc9, 0x11,
-  0xe1, 0x0b, 0xfa, 0xc9, 0x5f, 0xa5, 0x0e, 0xd6, 0x95, 0x15, 0x44, 0xb5,
-  0xee, 0x45, 0x9b, 0x10, 0x9f, 0xdd, 0xaa, 0x48, 0xa0, 0xf8, 0x9e, 0xba,
-  0x69, 0xb3, 0x42, 0xef, 0x7f, 0xda, 0x4c, 0xd4, 0x18, 0x87, 0x6c, 0xd4,
-  0xcc, 0xac, 0x38, 0x29, 0x54, 0xe8, 0x0e, 0x12, 0x4b, 0xa6, 0xdd, 0x1e,
-  0x3a, 0x4c, 0x42, 0x77, 0xb9, 0x70, 0x1b, 0xb5, 0x71, 0x81, 0x76, 0x47,
-  0x4d, 0xad, 0xfc, 0x89, 0x05, 0x37, 0xac, 0x9e, 0x87, 0xca, 0x25, 0x6b,
-  0xa4, 0x1f, 0xb0, 0xfb, 0x21, 0x88, 0x1f, 0x39, 0x4f, 0xf4, 0x06, 0x33,
-  0x94, 0x57, 0x3a, 0x56, 0xba, 0xf5, 0xbf, 0x58, 0x1e, 0x05, 0x08, 0xb9,
-  0xaa, 0x87, 0x45, 0x8d, 0x58, 0x32, 0x6c, 0xaa, 0x49, 0x51, 0x22, 0xfa,
-  0x1e, 0x6f, 0x63, 0xbf, 0x6f, 0x2b, 0x78, 0x0e, 0x9f, 0x3f, 0x7b, 0xce,
-  0xc7, 0x0e, 0xc5, 0x8f, 0x35, 0xa9, 0x54, 0xd1, 0xa1, 0xa0, 0x3c, 0xd5,
-  0x1e, 0xbb, 0x8a, 0xa4, 0x51, 0x91, 0x28, 0x59, 0x7e, 0x73, 0x32, 0x8d,
-  0xb3, 0x99, 0x25, 0xb4, 0x8e, 0x82, 0xa6, 0x86, 0x6b, 0xcd, 0xa8, 0x75,
-  0xe5, 0x88, 0x21, 0xe7, 0xb4, 0x54, 0x29, 0xad, 0x42, 0x7a, 0xab, 0xf8,
-  0x76, 0x3d, 0x0f, 0xd2, 0x6e, 0x63, 0xf5, 0xd7, 0xf5, 0xce, 0xd2, 0x8b,
-  0x68, 0xc0, 0xb4, 0x31, 0x39, 0xe2, 0xb4, 0xf5, 0x6f, 0xdb, 0xcd, 0x4a,
-  0x52, 0x1c, 0xbe, 0xcc, 0x17, 0xab, 0xac, 0xc1, 0x72, 0xb3, 0xae, 0xb9,
-  0x2b, 0x08, 0x2c, 0x9a, 0xbd, 0x76, 0xfa, 0x83, 0x14, 0x54, 0xa9, 0x8b,
-  0x65, 0x92, 0x5a, 0x81, 0x1e, 0x5d, 0xfb, 0x18, 0x31, 0xc6, 0x63, 0x00,
-  0xd2, 0x76, 0x2c, 0x84, 0xab, 0x76, 0x7b, 0x91, 0xc6, 0xb1, 0x00, 0x9c,
-  0x43, 0xf7, 0xa2, 0xe2, 0x02, 0x10, 0xd0, 0xa6, 0xb1, 0xb2, 0xcb, 0xae,
-  0x43, 0x34, 0x89, 0x1c, 0x0c, 0x4e, 0xa3, 0x52, 0x54, 0xb4, 0x6a, 0x64,
-  0xe0, 0x34, 0xab, 0xc0, 0x73, 0xd2, 0xec, 0x75, 0x9c, 0x71, 0x29, 0x05,
-  0x9e, 0x34, 0x59, 0x0b, 0x6d, 0x33, 0xb9, 0x3d, 0xa9, 0x5b, 0x83, 0xaa,
-  0x7e, 0x10, 0x3b, 0x3e, 0x9b, 0x73, 0x2e, 0x3f, 0xca, 0xb3, 0x81, 0xb0,
-  0x4c, 0x49, 0xca, 0x01, 0x38, 0x1f, 0xc4, 0xe5, 0xf0, 0x64, 0x0b, 0x24,
-  0xaf, 0x9d, 0x43, 0x59, 0xbd, 0x63, 0xf0, 0x26, 0x31, 0x15, 0xd3, 0x6c,
-  0xe6, 0x79, 0x47, 0x64, 0x76, 0xfe, 0x66, 0x52, 0xb6, 0x73, 0xc7, 0xc5,
-  0xbc, 0x11, 0x37, 0xd7, 0xe5, 0x52, 0x72, 0xbe, 0xbb, 0x4a, 0x4e, 0x05,
-  0x6a, 0x8d, 0x3c, 0x69, 0xb2, 0x02, 0x75, 0x48, 0xa0, 0xf6, 0xe1, 0xd5,
-  0x93, 0x57, 0x0d, 0xba, 0x10, 0x81, 0xb2, 0xd1, 0x4a, 0x77, 0x37, 0xe7,
-  0xa1, 0x5c, 0x02, 0xbf, 0xf1, 0xf7, 0x89, 0x6b, 0xcd, 0x6b, 0x71, 0xe3,
-  0x07, 0xff, 0x9b, 0xee, 0xe6, 0xb4, 0x0d, 0xf1, 0xa5, 0x4b, 0x0b, 0xd6,
-  0x2c, 0xf6, 0x8a, 0xb1, 0xa9, 0xf1, 0x6e, 0x60, 0x46, 0x25, 0xfb, 0x48,
-  0x5c, 0x97, 0xfd, 0x66, 0x5e, 0x4c, 0x05, 0xd9, 0xf1, 0xb1, 0xb9, 0xe0,
-  0x07, 0x6d, 0x2e, 0xd4, 0x3b, 0x59, 0x85, 0xe3, 0x42, 0x23, 0x5c, 0x82,
-  0xbb, 0x72, 0x75, 0x06, 0xba, 0x9b, 0xf3, 0x03, 0x85, 0x5a, 0x83, 0xe6,
-  0xf1, 0x72, 0x38, 0x84, 0x45, 0x52, 0x4c, 0xea, 0x60, 0x04, 0xfc, 0x40,
-  0x77, 0x73, 0x1a, 0x6e, 0x8e, 0x47, 0xc6, 0x9e, 0x2a, 0xa4, 0x67, 0x7d,
-  0x6c, 0x64, 0xfc, 0x60, 0xb4, 0xca, 0xf4, 0x43, 0x91, 0xe1, 0xad, 0x25,
-  0x96, 0xc5, 0x59, 0x03, 0x72, 0x68, 0x2c, 0xb0, 0xad, 0x30, 0xfa, 0xd0,
-  0xb5, 0xc0, 0xf8, 0x45, 0x97, 0x20, 0xf7, 0x34, 0x3a, 0x32, 0x3b, 0xee,
-  0xc1, 0xb5, 0x0b, 0xac, 0xdf, 0x88, 0x66, 0x61, 0xb6, 0x50, 0x76, 0xe5,
-  0xf7, 0x92, 0xa4, 0xcc, 0x04, 0x5b, 0xf5, 0xfb, 0xc7, 0x27, 0x64, 0xb6,
-  0x30, 0x36, 0x7b, 0xd0, 0x61, 0x38, 0x59, 0xa1, 0xb8, 0xd4, 0xb4, 0xc9,
-  0x73, 0xaf, 0x24, 0x27, 0x6b, 0xb6, 0xbd, 0xff, 0x5e, 0xe2, 0x59, 0xe8,
-  0xe9, 0x1a, 0xcd, 0x85, 0x0f, 0xd1, 0xc9, 0x98, 0xa0, 0x8f, 0x5d, 0x64,
-  0xe5, 0x01, 0x72, 0x3e, 0x1a, 0xe2, 0xfc, 0x96, 0x5d, 0x53, 0x4e, 0x35,
-  0x78, 0xbf, 0x1e, 0x14, 0x83, 0x8d, 0x86, 0xa7, 0x6d, 0xb5, 0x65, 0x48,
-  0x16, 0x3d, 0xf2, 0xf0, 0x45, 0x7f, 0x9c, 0x1f, 0xd9, 0xc7, 0xcd, 0x4f,
-  0xba, 0x33, 0xd9, 0xee, 0xdf, 0xf2, 0x7e, 0x6a, 0x1f, 0xe7, 0xbf, 0xda,
-  0xa7, 0xc3, 0x9a, 0x67, 0x2e, 0xc7, 0x9c, 0x55, 0x57, 0x69, 0xec, 0xca,
-  0x20, 0x9e, 0x6b, 0xa6, 0xa2, 0x1b, 0x77, 0x19, 0x7d, 0xbc, 0x94, 0x2a,
-  0x89, 0xc6, 0xb7, 0x8a, 0xe5, 0x58, 0x3f, 0x39, 0xfa, 0xb4, 0xef, 0xa2,
-  0xc8, 0xf7, 0x90, 0x6a, 0xc9, 0xcf, 0x91, 0x1d, 0x87, 0x47, 0x04, 0x9e,
-  0x95, 0x95, 0x6d, 0x89, 0xbc, 0x69, 0xc6, 0x75, 0x2f, 0x64, 0x2f, 0x00,
-  0x9b, 0xfb, 0xf1, 0x93, 0x25, 0x3d, 0x5f, 0x3b, 0xc7, 0xe5, 0xfc, 0x23,
-  0x87, 0x9c, 0x1e, 0xf0, 0xa3, 0xe2, 0x1a, 0x09, 0xc1, 0xa8, 0xa2, 0x73,
-  0xa9, 0xa9, 0xf4, 0x6b, 0x66, 0x7e, 0x5d, 0x0f, 0x1a, 0xbb, 0x70, 0x7d,
-  0x4f, 0xf4, 0xc9, 0xce, 0xee, 0xf8, 0xc9, 0xe5, 0x38, 0xc6, 0x83, 0xef,
-  0x59, 0x77, 0x73, 0xda, 0x5d, 0xff, 0x96, 0x4e, 0x4f, 0xdf, 0xe5, 0xfe,
-  0xab, 0x21, 0xcf, 0xf6, 0x73, 0xbc, 0x37, 0xec, 0x80, 0xff, 0x2a, 0x01,
-  0xc1, 0xd6, 0xda, 0x2c, 0x2c, 0x69, 0x5d, 0x02, 0xba, 0x0b, 0x24, 0xd1,
-  0x0b, 0xfc, 0xe7, 0xcb, 0xb5, 0x05, 0xef, 0x47, 0xbe, 0xea, 0xfd, 0x85,
-  0x84, 0x0d, 0x59, 0x9a, 0x30, 0xcd, 0xa2, 0x42, 0x91, 0xb6, 0x18, 0xb6,
-  0x96, 0x02, 0xd4, 0x9d, 0x03, 0xf6, 0x5e, 0x4c, 0x56, 0x5d, 0xb5, 0x46,
-  0xb7, 0x0d, 0x6d, 0x9d, 0x26, 0xb0, 0xd6, 0x77, 0xc8, 0x5a, 0xef, 0x27,
-  0x4d, 0x9b, 0xcc, 0x94, 0x6b, 0xae, 0xe5, 0xa7, 0x98, 0x73, 0xfe, 0x74,
-  0x3b, 0xe6, 0x7b, 0xc1, 0x1f, 0xb6, 0x62, 0xbf, 0x8d, 0xca, 0xf1, 0x5c,
-  0x71, 0xc5, 0x29, 0xf2, 0xcc, 0x96, 0x18, 0x4d, 0xe0, 0xee, 0xe0, 0xe9,
-  0xf3, 0xe7, 0x8d, 0x2b, 0x2d, 0xb4, 0x9c, 0x9f, 0xed, 0xee, 0x0a, 0x85,
-  0x64, 0xfb, 0x35, 0xfa, 0xc5, 0xe0, 0x39, 0x5e, 0x6c, 0xbe, 0x26, 0xec,
-  0xb3, 0xeb, 0xdf, 0x1b, 0xf0, 0x6f, 0x3a, 0x3e, 0x07, 0xeb, 0x7e, 0xed,
-  0x5b, 0xcf, 0xf9, 0x73, 0x1d, 0x6f, 0xe1, 0x61, 0x99, 0xc6, 0xe2, 0xea,
-  0x8a, 0x59, 0xf1, 0xf8, 0x49, 0x29, 0x68, 0x57, 0x94, 0xf7, 0x69, 0x39,
-  0x8d, 0x87, 0xbb, 0xdb, 0x1f, 0xec, 0xad, 0x1b, 0x2e, 0x7c, 0x02, 0xdc,
-  0x13, 0xac, 0x27, 0x5b, 0x50, 0xa4, 0x3c, 0x6f, 0x7d, 0xbb, 0xdd, 0x35,
-  0xfa, 0xcf, 0x77, 0x77, 0xfb, 0x9f, 0xf1, 0x7f, 0x9f, 0x3f, 0x5f, 0x1b,
-  0xa0, 0xf2, 0xdf, 0x78, 0x62, 0x43, 0x6b, 0xf4, 0x96, 0xda, 0xe9, 0x68,
-  0x7d, 0x8f, 0x5a, 0xdd, 0x7b, 0xfe, 0xbc, 0xcf, 0x5f, 0x79, 0xf6, 0x49,
-  0xad, 0xd7, 0xf7, 0x85, 0xf7, 0xb3, 0xf0, 0xeb, 0x7e, 0x3f, 0x56, 0xad,
-  0x11, 0xb0, 0x35, 0xf0, 0x12, 0xbc, 0x9a, 0x41, 0x6a, 0xa9, 0x47, 0x78,
-  0x87, 0x40, 0x5c, 0xa0, 0x04, 0x96, 0xe0, 0x65, 0x81, 0x67, 0x34, 0x35,
-  0x83, 0x25, 0xf5, 0x10, 0x0b, 0x73, 0xe6, 0x7b, 0x9c, 0xbb, 0x24, 0x37,
-  0x4c, 0xf3, 0x6b, 0xa6, 0xf5, 0xb4, 0x84, 0xcc, 0x2a, 0xd9, 0xa2, 0xfd,
-  0x22, 0x8c, 0x7b, 0x77, 0xe9, 0x2c, 0x77, 0xf8, 0xff, 0x4d, 0xa0, 0x01,
-  0x85, 0x94, 0x67, 0x93, 0xad, 0x89, 0x4d, 0x2e, 0x00, 0x3d, 0x9b, 0xba,
-  0xa0, 0x9f, 0x5e, 0x22, 0xf2, 0xdc, 0x40, 0x9e, 0x90, 0x83, 0x06, 0x13,
-  0xf0, 0x83, 0x16, 0x25, 0x61, 0x2c, 0x46, 0xeb, 0x9b, 0x89, 0xe3, 0xde,
-  0x0c, 0x48, 0xc0, 0x84, 0xfd, 0x4b, 0xe0, 0x7f, 0x7e, 0xa8, 0x9b, 0x55,
-  0x50, 0x06, 0xc3, 0xdc, 0x4b, 0x61, 0x81, 0xb6, 0x69, 0x66, 0x7c, 0xfc,
-  0x45, 0x83, 0xf2, 0xca, 0xbd, 0x2e, 0x2e, 0x9c, 0x95, 0x60, 0xd2, 0xfd,
-  0x21, 0xfb, 0x8b, 0xcf, 0xd0, 0x43, 0x9c, 0x92, 0x0d, 0xda, 0xfb, 0xb4,
-  0xcc, 0x2c, 0xb7, 0x98, 0x0c, 0x6d, 0x3b, 0xfb, 0xae, 0xc6, 0x0f, 0x57,
-  0x9d, 0x01, 0x9a, 0x05, 0x6c, 0x3b, 0x58, 0xa0, 0x0d, 0x47, 0x38, 0xaa,
-  0xcc, 0xe4, 0x12, 0xea, 0x9c, 0x02, 0x4f, 0x62, 0x54, 0x6b, 0xe2, 0xf4,
-  0x15, 0x06, 0xfa, 0x00, 0x04, 0x2a, 0xe5, 0x2a, 0x74, 0xc8, 0x42, 0x6a,
-  0xbd, 0xd1, 0x02, 0xdc, 0x5f, 0x67, 0x75, 0xc0, 0x0f, 0x6d, 0x59, 0x5c,
-  0x7e, 0x14, 0xc6, 0x49, 0x0a, 0x91, 0x24, 0x93, 0x6f, 0x5c, 0x80, 0x95,
-  0x56, 0x94, 0xd1, 0xa8, 0xa4, 0xb0, 0x6d, 0x83, 0xed, 0xa9, 0xb1, 0x62,
-  0xbc, 0x58, 0x4e, 0x08, 0xd2, 0xaa, 0xd1, 0x3e, 0x0c, 0x51, 0x0f, 0xb2,
-  0xbf, 0x02, 0x77, 0x81, 0xd1, 0xb1, 0x17, 0x12, 0xc3, 0xdf, 0x1e, 0xa2,
-  0x0f, 0xbc, 0x3f, 0x65, 0x25, 0xf8, 0xb3, 0xe1, 0x92, 0x66, 0x1f, 0x6a,
-  0xd4, 0x4e, 0xc0, 0x63, 0x76, 0x2b, 0x8d, 0x4e, 0xfe, 0xc7, 0xf1, 0x30,
-  0x44, 0xe6, 0xfe, 0x83, 0x3c, 0x8d, 0x17, 0x41, 0xa2, 0x07, 0xbf, 0xd6,
-  0x95, 0x64, 0x11, 0x30, 0x86, 0xfa, 0xc2, 0x42, 0x52, 0xf4, 0x5d, 0xd7,
-  0x06, 0x34, 0x5b, 0xd7, 0xbc, 0x9a, 0x08, 0xf3, 0xba, 0xda, 0x90, 0x11,
-  0x75, 0x47, 0x9d, 0xce, 0x97, 0x89, 0xf7, 0x4a, 0x58, 0x54, 0x49, 0x4b,
-  0x34, 0x3b, 0x92, 0x3a, 0x81, 0x31, 0xa7, 0x1e, 0x0b, 0x92, 0xde, 0x76,
-  0x11, 0x02, 0x05, 0x99, 0x4b, 0xb2, 0xec, 0xf4, 0x1e, 0x82, 0xb3, 0x98,
-  0x00, 0xfe, 0x56, 0xe8, 0x32, 0xe6, 0x9b, 0x98, 0x6c, 0x52, 0x3c, 0xde,
-  0x99, 0x59, 0x28, 0x44, 0x02, 0x61, 0x85, 0x0f, 0xa7, 0x0c, 0xc9, 0x08,
-  0x67, 0x99, 0x25, 0x3d, 0x23, 0x92, 0x18, 0x92, 0xe5, 0x77, 0xe4, 0x1b,
-  0x54, 0x74, 0xe1, 0x97, 0xc8, 0x3c, 0xad, 0x70, 0x4c, 0xa7, 0x7c, 0x41,
-  0x32, 0x17, 0x94, 0x25, 0x09, 0x0b, 0xb3, 0x94, 0x67, 0x2a, 0xab, 0x32,
-  0x75, 0xaf, 0xc9, 0xc3, 0x51, 0xbd, 0x3a, 0x4e, 0xdd, 0x85, 0x77, 0x81,
-  0x53, 0x3c, 0x3d, 0x5e, 0xbb, 0x8a, 0x99, 0xb9, 0xb3, 0xeb, 0x69, 0xc8,
-  0x3f, 0xd4, 0x9c, 0x85, 0x7b, 0x07, 0x4a, 0x0b, 0x56, 0x37, 0x0f, 0xb0,
-  0x12, 0xe9, 0x4c, 0xdd, 0x16, 0x4c, 0xa4, 0x03, 0xe7, 0x3b, 0x59, 0x37,
-  0xc5, 0x54, 0x09, 0xbc, 0x3a, 0x46, 0x5a, 0xc3, 0x7b, 0x88, 0x44, 0x6f,
-  0xc7, 0xa0, 0xcc, 0x49, 0xbc, 0x53, 0xe5, 0xa7, 0x0d, 0xf1, 0xd9, 0x8e,
-  0xc7, 0x67, 0x8e, 0x3c, 0x06, 0x64, 0x12, 0xb7, 0x83, 0x83, 0xf4, 0x5d,
-  0xd4, 0xe6, 0xeb, 0xd3, 0x4c, 0xdc, 0x47, 0x05, 0x5b, 0x1a, 0xf1, 0xd4,
-  0x20, 0x47, 0x89, 0x61, 0x1c, 0x8f, 0x01, 0x00, 0x6e, 0x44, 0xb3, 0x68,
-  0xc4, 0x2b, 0xa5, 0xf8, 0x00, 0x0a, 0x4d, 0x73, 0x35, 0x1c, 0xcb, 0x0c,
-  0xab, 0xba, 0x3d, 0xb5, 0xd3, 0x2c, 0xb5, 0x2c, 0x5b, 0x5a, 0x53, 0xae,
-  0xc1, 0x19, 0xe5, 0x49, 0xdd, 0x67, 0x65, 0xe6, 0xf9, 0xfd, 0x80, 0x96,
-  0x2a, 0xa4, 0xf6, 0x37, 0x3d, 0xdf, 0xc1, 0xd6, 0x6f, 0xf9, 0x0b, 0x0d,
-  0xbe, 0x2f, 0xf4, 0xc7, 0xae, 0xc4, 0x09, 0x92, 0x3c, 0xc5, 0x01, 0xdc,
-  0x1c, 0x6f, 0x07, 0x71, 0x05, 0x3c, 0xb5, 0xd4, 0x71, 0xe1, 0x6f, 0x81,
-  0x50, 0x85, 0x10, 0x85, 0xb3, 0x91, 0x45, 0x4e, 0x6f, 0x50, 0x24, 0x83,
-  0x1e, 0xaf, 0x15, 0x38, 0x35, 0x82, 0xe6, 0x86, 0x8f, 0x04, 0xee, 0xf7,
-  0x9e, 0x37, 0x31, 0x6d, 0x5c, 0x30, 0x62, 0x46, 0x02, 0xfd, 0x05, 0x07,
-  0xc3, 0x10, 0x0b, 0x3b, 0x58, 0x93, 0xc3, 0x73, 0xee, 0x38, 0x62, 0x26,
-  0xd4, 0x05, 0x86, 0xa8, 0x6b, 0xae, 0x82, 0x8c, 0xd1, 0x0f, 0x52, 0x12,
-  0x28, 0x64, 0xaf, 0x48, 0x70, 0x6c, 0x99, 0x72, 0x7d, 0xe2, 0x76, 0x84,
-  0x4d, 0x2b, 0xb3, 0xe6, 0x95, 0x0d, 0x8d, 0x35, 0x45, 0x93, 0x0f, 0x56,
-  0x5d, 0x5e, 0xa0, 0x90, 0x5b, 0xd5, 0xb6, 0x71, 0xc4, 0xad, 0xd1, 0xdb,
-  0x1b, 0xf9, 0x30, 0x4a, 0x7b, 0x0c, 0x5f, 0x03, 0x33, 0x1e, 0xdc, 0xe7,
-  0x95, 0x55, 0xd5, 0x03, 0x28, 0x06, 0x43, 0x9e, 0x06, 0xf4, 0xef, 0x11,
-  0x7e, 0xc6, 0x18, 0xe5, 0x87, 0x92, 0x3c, 0xc8, 0xe7, 0x1f, 0x95, 0xce,
-  0x13, 0x14, 0xac, 0xa6, 0xb3, 0xb3, 0x93, 0xd5, 0x93, 0x1d, 0x61, 0x8f,
-  0xc0, 0x16, 0x5f, 0x80, 0xbd, 0xcc, 0x59, 0x07, 0x51, 0x2d, 0xc1, 0x28,
-  0xc0, 0x23, 0xee, 0x87, 0xa0, 0x56, 0x48, 0x90, 0x8f, 0x03, 0x89, 0x6a,
-  0x11, 0xc5, 0x0e, 0x07, 0xad, 0x55, 0x1a, 0x0f, 0x27, 0xdd, 0x85, 0xde,
-  0x8c, 0xa1, 0xa1, 0x71, 0x4f, 0xf0, 0x2b, 0xbe, 0x3e, 0x4d, 0xc7, 0xee,
-  0xe5, 0x62, 0xbf, 0xee, 0xd6, 0x71, 0x50, 0xaf, 0x26, 0xf9, 0x92, 0x63,
-  0x09, 0x0a, 0x16, 0xbe, 0xcb, 0xf5, 0xce, 0xa7, 0x07, 0x3d, 0x10, 0xdc,
-  0x96, 0x65, 0x40, 0x22, 0x11, 0xfd, 0x23, 0x34, 0x4b, 0x60, 0x6f, 0x73,
-  0x74, 0xfe, 0x41, 0xea, 0x21, 0x7b, 0x9d, 0xa7, 0xfa, 0x13, 0x97, 0xa0,
-  0xd3, 0x01, 0x7c, 0xd2, 0xc5, 0x7d, 0x1c, 0xbc, 0xb2, 0x37, 0x7c, 0xd2,
-  0x3c, 0x03, 0x6c, 0x11, 0x76, 0xd1, 0x77, 0x43, 0x89, 0x83, 0x24, 0xe4,
-  0x94, 0x2e, 0xc1, 0x26, 0x49, 0xc2, 0x09, 0x7b, 0x18, 0x32, 0x83, 0xa9,
-  0xf8, 0x6a, 0xf1, 0x90, 0x36, 0x64, 0x2a, 0x32, 0x1d, 0x56, 0xcc, 0x77,
-  0x14, 0xc4, 0x8f, 0x18, 0xe7, 0x67, 0xa4, 0xf3, 0xa5, 0xa2, 0xfd, 0xbc,
-  0x4d, 0x24, 0x63, 0x56, 0xcf, 0x31, 0xc9, 0x32, 0x3e, 0x2a, 0xab, 0xe5,
-  0x30, 0x26, 0x17, 0x77, 0x78, 0x25, 0x7d, 0x97, 0x3e, 0xbf, 0x1b, 0x26,
-  0xbf, 0x21, 0xf5, 0x43, 0x91, 0xa4, 0xae, 0x26, 0xbc, 0x81, 0x3d, 0x22,
-  0x99, 0x08, 0x51, 0x0a, 0x56, 0x4e, 0x37, 0x64, 0x1d, 0xb3, 0x66, 0xaf,
-  0x08, 0x81, 0xc8, 0x01, 0x4f, 0x8a, 0x54, 0x8a, 0xe8, 0x5b, 0x2c, 0xe0,
-  0xe9, 0x87, 0x0f, 0xf1, 0x4a, 0xf8, 0xaa, 0x86, 0xb0, 0x15, 0x35, 0x50,
-  0xfc, 0xec, 0xc3, 0x87, 0xe6, 0x2f, 0xbb, 0x59, 0xab, 0xc4, 0xe7, 0x5e,
-  0x71, 0xa8, 0x45, 0xf2, 0x9b, 0x65, 0xa6, 0xd2, 0x60, 0x16, 0x8d, 0xe3,
-  0x51, 0xa9, 0x99, 0xee, 0xd3, 0xbc, 0x93, 0x80, 0x4f, 0xad, 0x3f, 0x91,
-  0x48, 0xb5, 0x80, 0xaa, 0xe5, 0x9a, 0x60, 0xbe, 0x8b, 0x1b, 0x3a, 0x95,
-  0x42, 0x81, 0xae, 0x9b, 0xde, 0xd5, 0xaf, 0x5b, 0x69, 0xf6, 0x52, 0x1b,
-  0xa4, 0x90, 0x4a, 0x59, 0x23, 0x70, 0x0f, 0xaf, 0x16, 0x75, 0x3e, 0xe3,
-  0x77, 0x50, 0xda, 0x85, 0x5e, 0xdf, 0xa3, 0xf9, 0xcf, 0x17, 0x2b, 0xb6,
-  0xa9, 0xb4, 0xdc, 0x2f, 0x7f, 0xd0, 0x95, 0xa9, 0xe8, 0x9a, 0xf6, 0x59,
-  0xfa, 0x90, 0xf8, 0xea, 0xd8, 0x5a, 0xd7, 0x2e, 0xc8, 0xbd, 0x46, 0xbf,
-  0x84, 0xe8, 0xc8, 0xf2, 0xa0, 0x30, 0x17, 0x03, 0xbc, 0xda, 0x71, 0x98,
-  0xdd, 0x1d, 0xa4, 0x49, 0x5f, 0xd9, 0x07, 0x9a, 0x6c, 0x81, 0xfa, 0x49,
-  0xea, 0x22, 0x19, 0x7a, 0x7c, 0xcb, 0x5c, 0x17, 0x25, 0x2d, 0xe8, 0x5c,
-  0xb5, 0x0e, 0x01, 0x2d, 0x46, 0xa0, 0x01, 0xf9, 0x94, 0xab, 0xf9, 0x22,
-  0x00, 0x52, 0x61, 0x80, 0x47, 0x74, 0xb0, 0xa8, 0x55, 0x4f, 0x35, 0xf6,
-  0x7a, 0xcc, 0xae, 0xf5, 0xfa, 0xb1, 0xab, 0x68, 0x3f, 0x3c, 0x86, 0xff,
-  0xf8, 0x9c, 0x9f, 0x60, 0x8e, 0x1e, 0xa9, 0x54, 0x63, 0x0a, 0x70, 0x35,
-  0xcb, 0xb2, 0xa5, 0xa2, 0x2a, 0xa4, 0x12, 0xa3, 0x9e, 0x43, 0x3b, 0x86,
-  0xa2, 0x02, 0xe8, 0x2e, 0x54, 0xb3, 0x66, 0xdd, 0x01, 0xd7, 0xdb, 0x9b,
-  0x23, 0x4f, 0x7c, 0xcf, 0x38, 0x43, 0xb5, 0x6e, 0x9f, 0xab, 0x2d, 0x31,
-  0x0d, 0x4d, 0x9d, 0xe9, 0x3e, 0x91, 0x6e, 0xc9, 0x74, 0x96, 0x75, 0xd9,
-  0xdc, 0x96, 0xd1, 0xb9, 0x6e, 0x15, 0x1d, 0x8f, 0xf9, 0x39, 0x24, 0xf6,
-  0x0a, 0x7d, 0x30, 0x93, 0xf2, 0xb8, 0x28, 0x3e, 0x2e, 0x23, 0x02, 0xa8,
-  0x54, 0x29, 0x01, 0x87, 0x81, 0x68, 0x61, 0xc2, 0x6e, 0x4c, 0x61, 0x24,
-  0x6a, 0x01, 0xfc, 0x6e, 0x99, 0x11, 0x66, 0xab, 0x5b, 0xcf, 0xfd, 0x6e,
-  0xe3, 0xbe, 0x0f, 0xfd, 0x0e, 0x88, 0x19, 0xb0, 0xff, 0x59, 0x1b, 0xe2,
-  0xa3, 0xd5, 0x8b, 0xc4, 0x95, 0x28, 0xcb, 0xcc, 0x0f, 0x2a, 0xaa, 0x87,
-  0x71, 0x91, 0x75, 0x12, 0x06, 0xc6, 0x45, 0xec, 0xb8, 0x35, 0x57, 0x13,
-  0x2a, 0x72, 0x83, 0xa9, 0x5c, 0xb1, 0x5e, 0x81, 0xee, 0x21, 0xe5, 0x61,
-  0x70, 0x09, 0xa0, 0x2d, 0xa6, 0x6c, 0xd1, 0xae, 0x6d, 0xf3, 0x8f, 0x41,
-  0xc6, 0xa8, 0x38, 0x11, 0x7c, 0x3d, 0x4a, 0xad, 0x07, 0x4b, 0xb3, 0x88,
-  0x9b, 0x69, 0x47, 0x2d, 0x8f, 0xb7, 0x05, 0xe7, 0x32, 0x3b, 0xfa, 0x75,
-  0xd7, 0x8e, 0xbe, 0x19, 0x73, 0x31, 0x6b, 0x3b, 0x99, 0x34, 0xd0, 0x6f,
-  0x14, 0x02, 0xb5, 0x4e, 0x23, 0x4b, 0x5d, 0x98, 0x99, 0x84, 0x22, 0x4d,
-  0xef, 0xb8, 0x0e, 0xc4, 0x9a, 0x5c, 0x6e, 0x1c, 0xb8, 0x04, 0xea, 0x81,
-  0xc7, 0xd3, 0x51, 0x78, 0x04, 0x2b, 0x40, 0x8d, 0xe4, 0xcc, 0x23, 0x79,
-  0x59, 0xa8, 0x44, 0x89, 0xaa, 0x9a, 0x49, 0x8e, 0xa3, 0xf6, 0x66, 0xb3,
-  0xf2, 0x85, 0x1a, 0x73, 0x66, 0xa4, 0x02, 0xb0, 0x93, 0x6b, 0x52, 0x05,
-  0x45, 0xa9, 0x86, 0x72, 0x31, 0x36, 0x3d, 0x14, 0x11, 0x7d, 0x21, 0xf6,
-  0x6e, 0x2d, 0x84, 0x5f, 0x56, 0xf4, 0xc8, 0x09, 0xda, 0x7f, 0xa2, 0x90,
-  0xaa, 0x50, 0x86, 0x2f, 0x9f, 0xc5, 0x88, 0xfb, 0x11, 0x7e, 0x28, 0xb6,
-  0xd8, 0xdf, 0x56, 0x39, 0x8f, 0x48, 0xd2, 0xd7, 0x5f, 0xa1, 0x58, 0x6d,
-  0xa5, 0xd8, 0xdd, 0x6b, 0x68, 0x62, 0x0a, 0x23, 0x2a, 0x55, 0xaa, 0xd0,
-  0xe7, 0x23, 0x13, 0x96, 0x49, 0x05, 0x87, 0xc6, 0xaa, 0x0e, 0x2e, 0xdd,
-  0x39, 0x5d, 0x52, 0x43, 0x47, 0x09, 0x4b, 0x02, 0xa1, 0x83, 0x2d, 0x59,
-  0x1d, 0x37, 0xd5, 0x6d, 0xac, 0x81, 0xf6, 0x1b, 0xf8, 0x71, 0x04, 0xed,
-  0x35, 0x08, 0x51, 0x73, 0x46, 0x02, 0x59, 0x7e, 0x3b, 0xc2, 0x68, 0x62,
-  0x45, 0x26, 0xb9, 0x29, 0x83, 0x26, 0xb7, 0xb7, 0x4d, 0x03, 0xa6, 0x57,
-  0xa5, 0xd5, 0x6c, 0x90, 0xb7, 0x37, 0xbe, 0x96, 0x8b, 0x37, 0x88, 0x4e,
-  0x40, 0x96, 0xcf, 0x09, 0x4d, 0xa3, 0x43, 0xb2, 0xa4, 0x63, 0x0a, 0xaf,
-  0xc7, 0xc4, 0xcd, 0x93, 0xbd, 0x86, 0x29, 0x34, 0xc2, 0x52, 0xd0, 0xb4,
-  0x0e, 0x30, 0x89, 0x6b, 0x88, 0x34, 0xbd, 0x38, 0x1f, 0x54, 0xa2, 0xc5,
-  0x05, 0xda, 0x16, 0x16, 0xc5, 0x30, 0xec, 0x46, 0xe5, 0xc8, 0x87, 0x30,
-  0xaa, 0x5b, 0x09, 0xfc, 0x42, 0x63, 0xcc, 0xd5, 0x4c, 0xc0, 0x52, 0xfd,
-  0xe4, 0xfc, 0xec, 0xfc, 0x49, 0x3f, 0x39, 0x79, 0x73, 0x48, 0x7f, 0x97,
-  0x92, 0x39, 0x97, 0xac, 0x21, 0x0a, 0x44, 0x8f, 0x53, 0x69, 0x2f, 0x4f,
-  0x47, 0x81, 0x09, 0xe0, 0xdd, 0x07, 0xb1, 0xe4, 0xe1, 0xb4, 0x33, 0xd1,
-  0x9d, 0xe1, 0x8a, 0x44, 0x21, 0xba, 0xb0, 0xec, 0xa0, 0x2b, 0x45, 0x27,
-  0xae, 0x55, 0xa3, 0x80, 0x57, 0xbf, 0x59, 0x7b, 0x47, 0xca, 0xa7, 0x43,
-  0x1f, 0x85, 0xa4, 0x7b, 0x53, 0xdf, 0x07, 0x96, 0x7c, 0xce, 0x32, 0x02,
-  0xa3, 0x21, 0x91, 0xf6, 0x37, 0x51, 0x05, 0xd4, 0x04, 0x18, 0x44, 0x5e,
-  0x90, 0x3a, 0x61, 0xd6, 0x32, 0x06, 0x9e, 0x5d, 0xb1, 0x93, 0xa1, 0x7c,
-  0x68, 0x90, 0x62, 0xb5, 0xea, 0xbb, 0x36, 0x0b, 0xef, 0x74, 0x1a, 0x0f,
-  0xcc, 0xc0, 0xc6, 0x42, 0x89, 0x69, 0x47, 0xb5, 0xfe, 0x12, 0xfd, 0xc4,
-  0xf5, 0xb1, 0x79, 0xae, 0x79, 0xf1, 0x87, 0x51, 0x73, 0xbe, 0xf6, 0xa5,
-  0x84, 0xeb, 0x68, 0x31, 0xe5, 0x60, 0x98, 0x1d, 0x05, 0x22, 0xba, 0x90,
-  0xec, 0x49, 0xaa, 0x82, 0x63, 0x0f, 0xb6, 0xa5, 0xd7, 0xd5, 0x0a, 0x6e,
-  0x51, 0x4d, 0x9b, 0x6b, 0xad, 0x36, 0xe6, 0xa7, 0x03, 0x2c, 0xd7, 0x4f,
-  0x74, 0x03, 0xe8, 0x0e, 0xd0, 0x2d, 0x40, 0x8b, 0xa9, 0xfc, 0x8e, 0xe1,
-  0x0e, 0x68, 0x16, 0x91, 0x8c, 0x86, 0x23, 0xe7, 0xb0, 0x56, 0x57, 0xc9,
-  0xa7, 0x2e, 0xbb, 0x5b, 0xe8, 0x4f, 0x2e, 0x83, 0xb4, 0x76, 0x35, 0xfc,
-  0x72, 0xe8, 0x7a, 0xc0, 0x83, 0xe6, 0x77, 0x0d, 0xf6, 0xc8, 0x56, 0xaa,
-  0xed, 0xc6, 0x0a, 0xc1, 0xb3, 0xe1, 0xb3, 0xed, 0xe1, 0xa7, 0x2e, 0x8b,
-  0xd3, 0xb1, 0x75, 0x51, 0x62, 0x5e, 0xc4, 0xf4, 0x23, 0x4b, 0x02, 0x05,
-  0x76, 0x30, 0xce, 0xd2, 0x08, 0xad, 0xae, 0xcc, 0xa4, 0xa1, 0x7e, 0x55,
-  0x37, 0xa0, 0xcf, 0x7c, 0x91, 0x80, 0xf3, 0x3e, 0x45, 0xfe, 0x40, 0x58,
-  0xf5, 0xf1, 0x6a, 0x96, 0xde, 0x77, 0x71, 0x34, 0xe2, 0x30, 0x4b, 0xfd,
-  0x1f, 0x9a, 0xed, 0x10, 0x3e, 0x5b, 0xf9, 0xdd, 0xfb, 0xf5, 0xf1, 0xe1,
-  0xe8, 0x72, 0xd8, 0xbe, 0x72, 0xa2, 0x74, 0x16, 0xd4, 0x2f, 0x57, 0x37,
-  0x11, 0xa4, 0x02, 0x3b, 0x16, 0xb9, 0x26, 0x5d, 0xe9, 0x68, 0x7d, 0xb8,
-  0x77, 0x03, 0xe9, 0x9d, 0xb5, 0xcf, 0xf9, 0x37, 0x1d, 0x04, 0x3a, 0xd0,
-  0x10, 0x11, 0xf0, 0x1c, 0xe7, 0x33, 0x1e, 0x01, 0xf5, 0x8b, 0x44, 0xef,
-  0x5c, 0x71, 0xfe, 0x5c, 0x18, 0x34, 0x29, 0x66, 0xec, 0x12, 0xc1, 0x67,
-  0xda, 0x6c, 0xa5, 0xed, 0x7d, 0xf3, 0xc3, 0xe1, 0xc5, 0xdb, 0x93, 0xb7,
-  0xdf, 0x1c, 0x34, 0xee, 0xcc, 0x59, 0x51, 0x54, 0x99, 0xc6, 0xe8, 0x85,
-  0x28, 0x55, 0x66, 0x4b, 0xf2, 0x13, 0x83, 0xf2, 0xe6, 0x71, 0xa1, 0xe5,
-  0x59, 0x7a, 0x2d, 0x6c, 0x70, 0xd5, 0x6d, 0xa2, 0x65, 0xc8, 0xc1, 0xd3,
-  0xcf, 0x1a, 0xcf, 0xf0, 0xf1, 0x0a, 0x7b, 0x55, 0x31, 0xb9, 0xad, 0x9e,
-  0x8a, 0xb3, 0xeb, 0x93, 0x91, 0xdf, 0xa3, 0xb3, 0xa3, 0xef, 0x46, 0x4f,
-  0x03, 0xdc, 0x77, 0xdd, 0x72, 0xdc, 0x28, 0xb5, 0x33, 0xde, 0x88, 0xd3,
-  0x24, 0x3f, 0x02, 0xfa, 0x7e, 0xa4, 0x22, 0x6a, 0xe7, 0xb1, 0xf2, 0x7c,
-  0xf0, 0xec, 0x0a, 0x61, 0x57, 0x57, 0x5e, 0xac, 0x1c, 0x49, 0x6e, 0x40,
-  0x97, 0xd4, 0x37, 0x72, 0xf8, 0x8e, 0x92, 0x4f, 0x46, 0x15, 0x1f, 0x90,
-  0xc3, 0x47, 0xe8, 0x38, 0xa6, 0x81, 0x10, 0x67, 0xc9, 0xe7, 0xfd, 0xb6,
-  0xba, 0x43, 0x92, 0x82, 0xf4, 0xbf, 0xd9, 0x8a, 0xbf, 0x0c, 0xbe, 0x08,
-  0x47, 0xa8, 0xe1, 0xc0, 0x9a, 0x6d, 0xfd, 0x43, 0x66, 0xde, 0xd0, 0xe4,
-  0x4c, 0x15, 0xe2, 0xbb, 0xaa, 0x8b, 0x9d, 0xea, 0x53, 0x07, 0x3b, 0x3b,
-  0xde, 0x9d, 0x25, 0xe0, 0xc2, 0xe1, 0xef, 0x67, 0x15, 0xc8, 0x37, 0xd3,
-  0xdf, 0xb4, 0x29, 0xd2, 0x4f, 0xdb, 0x15, 0x91, 0x96, 0xfc, 0x2b, 0x77,
-  0xc5, 0x17, 0xeb, 0x84, 0xad, 0x0e, 0xff, 0x57, 0xec, 0x09, 0xa3, 0xd7,
-  0xfe, 0xdf, 0x69, 0x57, 0xa4, 0x9f, 0xb6, 0x2d, 0xd2, 0xc6, 0xbe, 0x58,
-  0x93, 0x93, 0xfc, 0x7b, 0x16, 0x8c, 0x43, 0x37, 0x9e, 0x0d, 0x1c, 0xfd,
-  0xed, 0xc7, 0x76, 0x4c, 0xc3, 0x45, 0xcb, 0x4a, 0x02, 0x36, 0xcd, 0x33,
-  0x1d, 0xed, 0x16, 0x3c, 0xc1, 0x59, 0x48, 0xda, 0x65, 0xce, 0xf8, 0x6e,
-  0x16, 0x5e, 0xdc, 0x7d, 0xdb, 0x1f, 0x95, 0x40, 0x6e, 0x6f, 0x09, 0x7f,
-  0x90, 0xec, 0xae, 0x08, 0xce, 0xfc, 0xeb, 0xf7, 0xda, 0xff, 0x11, 0x12,
-  0xe8, 0x99, 0x27, 0x2f, 0xfe, 0x94, 0x3d, 0xf7, 0xec, 0xc6, 0xed, 0xb9,
-  0xae, 0x0a, 0x6a, 0x26, 0x9b, 0xfe, 0xd1, 0x5b, 0xae, 0xa5, 0x7b, 0x74,
-  0xe8, 0x55, 0x36, 0xeb, 0x08, 0x53, 0x97, 0x64, 0x62, 0x03, 0xdd, 0x10,
-  0x72, 0xe4, 0x6a, 0x12, 0x48, 0x4c, 0x18, 0xaf, 0xfb, 0xd8, 0xa5, 0xf2,
-  0x06, 0xde, 0x63, 0x61, 0x43, 0xa2, 0x1e, 0x44, 0x77, 0xe6, 0xb3, 0xdf,
-  0x22, 0x1e, 0x6d, 0xa7, 0x73, 0x3e, 0xfd, 0x58, 0x92, 0x86, 0x65, 0x7f,
-  0xcb, 0xc1, 0x90, 0x30, 0x51, 0x07, 0xa6, 0x10, 0xc1, 0x60, 0x30, 0x6e,
-  0x5a, 0x92, 0xd5, 0x47, 0xf7, 0x7a, 0x43, 0x8e, 0x76, 0x64, 0x16, 0xac,
-  0x4b, 0xb0, 0xfa, 0x3f, 0x45, 0x86, 0x3e, 0xfb, 0xb4, 0xed, 0xfc, 0xcf,
-  0xb8, 0x59, 0xff, 0x37, 0xda, 0xbc, 0x1d, 0xcb, 0xbc, 0xa5, 0xcc, 0x58,
-  0x62, 0x19, 0xca, 0xc5, 0xb2, 0x2d, 0x3c, 0x27, 0x4e, 0x85, 0xc7, 0x24,
-  0x9e, 0x9c, 0x7f, 0xff, 0x99, 0x00, 0xdf, 0x46, 0x31, 0x7b, 0xee, 0xe9,
-  0xab, 0xc3, 0xf3, 0x8e, 0x9b, 0xe1, 0x9a, 0x0c, 0xfe, 0x65, 0x3e, 0x60,
-  0xb3, 0x8a, 0x5d, 0x70, 0x2f, 0xf4, 0x2f, 0xbc, 0xc5, 0xbb, 0x9c, 0x8c,
-  0xe6, 0x24, 0xb5, 0xe7, 0x85, 0x9e, 0x53, 0x22, 0xc6, 0x18, 0xa5, 0xda,
-  0x67, 0x1c, 0x70, 0x9a, 0xcc, 0xa7, 0x3b, 0xf2, 0xcf, 0xc1, 0xd5, 0xdf,
-  0xa6, 0xb1, 0xa9, 0x17, 0x72, 0x76, 0x36, 0xd2, 0xe2, 0x94, 0x4f, 0x34,
-  0xaf, 0xd7, 0xd5, 0xb3, 0xac, 0x0e, 0x82, 0x53, 0x9e, 0x68, 0xa6, 0x27,
-  0xe8, 0xfb, 0xd7, 0x8d, 0x4b, 0xf6, 0x5c, 0x44, 0x70, 0x2c, 0x74, 0xe0,
-  0x20, 0x16, 0xe6, 0x5f, 0xef, 0x04, 0x4d, 0xb9, 0xf6, 0x3b, 0x7e, 0x66,
-  0xad, 0x77, 0x24, 0xf0, 0xf0, 0xc7, 0xa4, 0x2d, 0x66, 0x78, 0xd3, 0x5e,
-  0x05, 0xdf, 0x89, 0x7f, 0x09, 0x7f, 0xc3, 0xa4, 0xa3, 0x0e, 0xfa, 0x3d,
-  0xaa, 0x2d, 0xf8, 0xbb, 0x56, 0x9e, 0x77, 0xeb, 0x2e, 0xb4, 0xf4, 0xca,
-  0x47, 0xb6, 0x98, 0xe4, 0xcb, 0x74, 0xa6, 0x49, 0x86, 0x8f, 0x95, 0x47,
-  0x68, 0xb3, 0xcb, 0x37, 0x07, 0x44, 0xc6, 0x76, 0xbb, 0x14, 0x5d, 0xd5,
-  0x60, 0xd5, 0x95, 0xe7, 0x12, 0x4b, 0xe0, 0xc5, 0xda, 0xe1, 0x78, 0xaa,
-  0x95, 0x2e, 0xb0, 0x7f, 0x64, 0x94, 0xe2, 0x91, 0x38, 0x29, 0x09, 0x01,
-  0x6a, 0x50, 0x0f, 0xed, 0x3d, 0xff, 0x6c, 0x2f, 0xa9, 0xb8, 0xf0, 0x74,
-  0xce, 0x25, 0x78, 0xa4, 0x81, 0xa7, 0xc3, 0x27, 0x3b, 0x4f, 0x87, 0x4f,
-  0x13, 0x5f, 0xa8, 0x6f, 0x9c, 0xd9, 0x07, 0x48, 0x70, 0x46, 0xac, 0x0c,
-  0x72, 0x9e, 0xde, 0x1e, 0x1f, 0xb1, 0xa8, 0xb6, 0x84, 0xd3, 0x96, 0x79,
-  0x67, 0xa4, 0x40, 0x34, 0x6b, 0x43, 0x97, 0xa3, 0xda, 0x65, 0x94, 0x76,
-  0x4c, 0x47, 0x62, 0x7b, 0x13, 0x10, 0xfd, 0x85, 0xeb, 0x09, 0x0b, 0x4b,
-  0xd9, 0xa6, 0x3a, 0x33, 0x5d, 0x14, 0x14, 0xe1, 0xa4, 0x04, 0x53, 0x36,
-  0x7c, 0x9c, 0xf0, 0xbf, 0xaa, 0xc9, 0x4e, 0x2d, 0xbb, 0x51, 0x42, 0x17,
-  0xea, 0x8c, 0x44, 0x28, 0x90, 0x6b, 0x87, 0x6a, 0x91, 0x68, 0x79, 0xc5,
-  0xf0, 0xf3, 0x8d, 0x94, 0x0a, 0x03, 0xbf, 0xe0, 0x6e, 0x5a, 0x57, 0xa5,
-  0x5c, 0x6a, 0x23, 0x80, 0xc2, 0x1f, 0x65, 0x16, 0x37, 0x07, 0x9b, 0x76,
-  0x49, 0x19, 0x76, 0x86, 0xbf, 0x56, 0x8b, 0xc7, 0xb4, 0x4d, 0xfb, 0xfc,
-  0x0f, 0xd7, 0x5b, 0x6b, 0xbe, 0x0d, 0xea, 0x6c, 0xb6, 0xc8, 0x6a, 0xad,
-  0xdd, 0x95, 0xbc, 0x38, 0x3b, 0xbf, 0x7c, 0x79, 0x97, 0xce, 0x22, 0x8c,
-  0x07, 0xb3, 0xf8, 0x59, 0xa5, 0x33, 0xe7, 0xcd, 0xe5, 0x37, 0x83, 0xe4,
-  0xa8, 0x91, 0xcb, 0x11, 0x0a, 0x6a, 0xa2, 0x45, 0xb9, 0x40, 0x97, 0x97,
-  0x7f, 0x39, 0x3f, 0x7e, 0xf9, 0x82, 0x7d, 0xc1, 0x5f, 0xb2, 0x43, 0xbe,
-  0x6a, 0xb8, 0x86, 0xb9, 0xa6, 0x66, 0x7c, 0x33, 0xfe, 0xf8, 0xea, 0x64,
-  0x74, 0x7e, 0x7a, 0x76, 0xf4, 0xf2, 0xc5, 0x8f, 0x1c, 0xc2, 0xa4, 0xd9,
-  0x7b, 0x08, 0xde, 0x75, 0x3f, 0x73, 0xe9, 0x0e, 0x71, 0x7d, 0x9b, 0xe3,
-  0x1f, 0xde, 0x1f, 0xbf, 0xfd, 0xfe, 0xe5, 0x8b, 0xbb, 0xb4, 0xec, 0xf3,
-  0xf8, 0xe4, 0x6d, 0x76, 0xc9, 0x76, 0x94, 0x98, 0x0c, 0xe6, 0xe8, 0x12,
-  0x05, 0x8f, 0x96, 0x8c, 0x1d, 0x7c, 0x04, 0x56, 0x26, 0x77, 0x99, 0x2f,
-  0x29, 0xd3, 0x56, 0xf0, 0x03, 0x14, 0x5b, 0x33, 0xa5, 0xf5, 0xdd, 0xc5,
-  0x69, 0x77, 0x59, 0x7b, 0x57, 0xfe, 0xd6, 0x53, 0x6e, 0xab, 0x6f, 0xc8,
-  0xb7, 0x0a, 0x7e, 0xeb, 0x23, 0x97, 0xdc, 0xa6, 0x94, 0x95, 0x8f, 0x62,
-  0xe8, 0x44, 0x74, 0x79, 0x38, 0xad, 0xab, 0xf6, 0x24, 0x20, 0x1a, 0x1a,
-  0x41, 0x8e, 0x0c, 0xfa, 0x1d, 0x43, 0xa6, 0xcc, 0x62, 0x97, 0x97, 0xc7,
-  0xbe, 0x23, 0xf6, 0x0e, 0xa5, 0x86, 0x11, 0x20, 0x18, 0xdb, 0x91, 0x10,
-  0xe5, 0x4a, 0x82, 0x4a, 0x73, 0x10, 0x22, 0x88, 0x8b, 0xb2, 0x9b, 0x96,
-  0x9a, 0x4b, 0xf2, 0xdc, 0x30, 0x34, 0xde, 0xfa, 0x55, 0xca, 0xfe, 0x6d,
-  0x26, 0x3f, 0x58, 0x6a, 0x5a, 0xc0, 0x15, 0xde, 0x91, 0x1e, 0xd7, 0xe4,
-  0xd7, 0x94, 0x48, 0x24, 0xeb, 0x94, 0x9c, 0xbb, 0xc7, 0xe9, 0x97, 0x0e,
-  0x39, 0x2c, 0x0b, 0xeb, 0xd9, 0x99, 0xe3, 0x58, 0x26, 0x0a, 0xdc, 0xba,
-  0x33, 0x67, 0x87, 0xad, 0x70, 0xb4, 0xd4, 0x5b, 0xa3, 0x6d, 0x97, 0xee,
-  0xc8, 0x2d, 0x9e, 0xbf, 0xbb, 0x0c, 0x32, 0x5d, 0x23, 0xb4, 0x5a, 0x74,
-  0x08, 0x5b, 0x8a, 0xb2, 0x9f, 0xa8, 0xde, 0xa0, 0xd7, 0xa6, 0x8e, 0x37,
-  0x57, 0x3f, 0x09, 0x06, 0xae, 0xd1, 0xea, 0x33, 0xe9, 0x23, 0xd5, 0x4f,
-  0x71, 0xc4, 0x92, 0xeb, 0xc5, 0x45, 0x8f, 0x05, 0x88, 0x94, 0x39, 0x8a,
-  0xf3, 0xe0, 0x3b, 0xc3, 0xf0, 0x3b, 0x12, 0x78, 0xdb, 0x8e, 0x92, 0xfa,
-  0x1e, 0xda, 0x48, 0x7d, 0xf7, 0x6d, 0xee, 0xa7, 0xa3, 0x34, 0x93, 0x9e,
-  0xc1, 0xe7, 0xcd, 0x61, 0x85, 0x31, 0xed, 0xbc, 0x0e, 0x9a, 0x74, 0xb9,
-  0xbe, 0xc0, 0xbc, 0x2d, 0x35, 0x53, 0x39, 0x3b, 0x1d, 0xa0, 0x2f, 0xa3,
-  0x54, 0xd6, 0x68, 0x93, 0xc5, 0x14, 0xad, 0xd9, 0xaa, 0x93, 0x34, 0x48,
-  0x16, 0xb1, 0x63, 0x52, 0xff, 0xd2, 0x52, 0x90, 0x59, 0x14, 0x0e, 0x2e,
-  0x3d, 0x6a, 0x8f, 0x41, 0x77, 0x9d, 0x00, 0x2c, 0x54, 0xd0, 0x19, 0x5c,
-  0x46, 0x7c, 0x64, 0xfc, 0x02, 0x43, 0xd6, 0x02, 0x28, 0x3b, 0x10, 0xa2,
-  0xbc, 0x2e, 0xb2, 0x93, 0x34, 0xe3, 0x06, 0x4a, 0xc5, 0x50, 0x01, 0xb4,
-  0x1c, 0x0f, 0x59, 0x93, 0xd7, 0x5c, 0x25, 0xbd, 0xeb, 0x59, 0x31, 0x1e,
-  0xd3, 0xa0, 0x7a, 0x76, 0xc5, 0x51, 0x0f, 0xd3, 0xf2, 0x1a, 0x2a, 0x6f,
-  0xdf, 0xd8, 0xea, 0xfc, 0x61, 0x45, 0x91, 0x0a, 0x7c, 0x6b, 0x5d, 0x6e,
-  0x2e, 0xd6, 0xd6, 0x98, 0xcd, 0x6d, 0x5d, 0x51, 0x44, 0xe2, 0x21, 0xa8,
-  0x70, 0x05, 0x2c, 0x16, 0xff, 0xd4, 0xbe, 0x1f, 0xc1, 0x78, 0x39, 0x97,
-  0xd4, 0x67, 0x7d, 0xaa, 0xf0, 0x81, 0xc8, 0xd1, 0xe2, 0x01, 0x79, 0xb5,
-  0xa6, 0x3e, 0xf8, 0x65, 0xd2, 0xfb, 0x0f, 0xee, 0xc4, 0x5e, 0x9f, 0xff,
-  0xdc, 0xff, 0xcf, 0x5e, 0x58, 0xdb, 0x5c, 0x3a, 0x5f, 0x33, 0x2b, 0x7f,
-  0x65, 0x75, 0x29, 0x3a, 0xca, 0x50, 0x70, 0xd8, 0x70, 0x6d, 0xeb, 0xf9,
-  0xfc, 0xfa, 0xa7, 0xbd, 0xc1, 0xde, 0xee, 0xee, 0xee, 0x2f, 0xc3, 0x25,
-  0x4f, 0xdd, 0x15, 0x9a, 0xa7, 0x3f, 0x87, 0xcb, 0x7c, 0xc2, 0x8e, 0x7c,
-  0x5a, 0xcc, 0x3c, 0x45, 0xfd, 0x74, 0xf9, 0xde, 0x4e, 0x70, 0xf3, 0xd7,
-  0x93, 0xe5, 0x60, 0x51, 0x74, 0x41, 0x64, 0x2e, 0x57, 0xe5, 0x22, 0xa8,
-  0xaf, 0xf6, 0xfe, 0xed, 0xd9, 0xab, 0xe3, 0xd3, 0xc3, 0xbf, 0x18, 0xc4,
-  0xd6, 0xd1, 0x26, 0x70, 0x47, 0xde, 0x67, 0x69, 0xf5, 0xf0, 0xbe, 0xca,
-  0x6a, 0xfa, 0xe5, 0xd6, 0x93, 0x6d, 0x64, 0xbe, 0x46, 0xc5, 0x4c, 0xaf,
-  0xb3, 0x46, 0x51, 0x66, 0x45, 0x2c, 0xf9, 0xdb, 0x7b, 0xd8, 0x0e, 0x3d,
-  0x35, 0x80, 0xaf, 0x35, 0x47, 0x43, 0xc6, 0xb3, 0xdb, 0x2a, 0xff, 0x3b,
-  0xdd, 0x3b, 0xcc, 0xed, 0x17, 0xe3, 0x99, 0x2f, 0x95, 0x41, 0xa1, 0x4e,
-  0xf8, 0x6f, 0xc9, 0xd7, 0xa7, 0xdf, 0x31, 0x8c, 0xdc, 0x19, 0x35, 0x73,
-  0x49, 0xd9, 0x4f, 0xbe, 0x7c, 0xb6, 0xb7, 0xbf, 0x1d, 0x14, 0xae, 0xe6,
-  0x64, 0x14, 0x3e, 0x9c, 0x51, 0x58, 0xfd, 0xef, 0x0a, 0x10, 0x08, 0xa4,
-  0xb2, 0x8f, 0x31, 0x02, 0xdb, 0x62, 0xb7, 0x1c, 0x48, 0xe7, 0x10, 0x0b,
-  0xae, 0x41, 0xf3, 0xc7, 0x89, 0x22, 0x11, 0x59, 0xce, 0xa5, 0xcf, 0x0a,
-  0x1a, 0x06, 0xf5, 0xd8, 0x12, 0xea, 0x8e, 0xe6, 0x97, 0x74, 0xeb, 0x26,
-  0xff, 0x68, 0x5d, 0xe7, 0xa3, 0x91, 0x2a, 0x9a, 0xed, 0x59, 0xc5, 0x51,
-  0x62, 0xd6, 0x3f, 0x92, 0x17, 0xf6, 0xb7, 0x2f, 0x63, 0x64, 0x5d, 0xc2,
-  0x41, 0x99, 0x98, 0xc3, 0x06, 0x7a, 0x0b, 0x8a, 0xd1, 0x32, 0xa6, 0xd1,
-  0xd7, 0x92, 0x08, 0xf3, 0x0d, 0x62, 0xf8, 0xa7, 0x1b, 0x57, 0x6f, 0x74,
-  0x71, 0xde, 0xeb, 0xab, 0x9d, 0x42, 0x1f, 0x18, 0xd0, 0xbf, 0xa9, 0xbf,
-  0x50, 0xe1, 0x9f, 0xed, 0x3e, 0x7b, 0xba, 0xad, 0x4e, 0x0f, 0xf4, 0x13,
-  0x99, 0xa7, 0x1d, 0x9c, 0xff, 0xf8, 0xa5, 0xab, 0x87, 0x28, 0xdc, 0x17,
-  0x3e, 0xd1, 0x8e, 0xb6, 0x5e, 0x73, 0x94, 0xe2, 0x30, 0xe9, 0x2b, 0xaf,
-  0xfd, 0x5a, 0x54, 0x84, 0xae, 0x19, 0xf4, 0x3e, 0x74, 0x33, 0xae, 0x55,
-  0xfb, 0xb4, 0x35, 0x91, 0xe8, 0xe0, 0x0b, 0xfe, 0xb3, 0x6b, 0x02, 0xf9,
-  0xe7, 0xce, 0xa4, 0xc5, 0xbe, 0x32, 0x76, 0x1f, 0x9e, 0xd9, 0xf6, 0xc4,
-  0x2a, 0xc3, 0xd4, 0xfa, 0x28, 0x8a, 0x8b, 0xbb, 0x87, 0x83, 0x1b, 0xba,
-  0xc0, 0x68, 0xa5, 0x09, 0x27, 0xcd, 0xc9, 0xd1, 0xf4, 0x96, 0xc8, 0xb6,
-  0xac, 0x3f, 0x3e, 0x38, 0xd7, 0xc6, 0x0b, 0xfb, 0x5b, 0xd7, 0x20, 0x7d,
-  0x59, 0xca, 0x7f, 0xce, 0x20, 0xfd, 0x18, 0xa5, 0x64, 0xbc, 0xa6, 0xef,
-  0x54, 0x1d, 0xf5, 0x5c, 0x1e, 0x1b, 0x5e, 0x39, 0x30, 0x54, 0x7f, 0x37,
-  0xc9, 0xed, 0x85, 0xe2, 0x7f, 0x52, 0x14, 0x8b, 0x67, 0x8c, 0x09, 0x35,
-  0x75, 0xa9, 0x22, 0x61, 0x70, 0xac, 0xef, 0x7a, 0x0c, 0x86, 0xdc, 0x38,
-  0x31, 0xf4, 0xd2, 0xe5, 0x87, 0x38, 0xd4, 0x5a, 0xd5, 0x2c, 0x4c, 0x25,
-  0xf1, 0xbe, 0xd5, 0xc2, 0x3e, 0xe3, 0xa1, 0x27, 0x50, 0x0a, 0x22, 0xb4,
-  0xd2, 0x24, 0xcb, 0x95, 0x82, 0xf3, 0x63, 0x10, 0xdf, 0xcf, 0x9a, 0x03,
-  0x66, 0xee, 0x95, 0x4e, 0xa5, 0xde, 0xaa, 0xc0, 0x71, 0x70, 0x58, 0x0a,
-  0x46, 0xd2, 0x93, 0xd3, 0xd5, 0x7c, 0x69, 0x9c, 0x08, 0xcc, 0x97, 0x2e,
-  0x10, 0x51, 0x41, 0x40, 0x91, 0x70, 0xbf, 0x2e, 0xf0, 0x4f, 0xee, 0x67,
-  0x3f, 0xf2, 0x0c, 0x4c, 0x66, 0x2b, 0x4c, 0xce, 0x34, 0x13, 0x7a, 0x46,
-  0xc6, 0x85, 0x07, 0x05, 0x72, 0xfb, 0x8e, 0x9e, 0x00, 0xda, 0x9b, 0xea,
-  0x40, 0xa2, 0xc3, 0xbd, 0x8b, 0x62, 0xb1, 0xac, 0x77, 0x31, 0xac, 0x81,
-  0xd1, 0x40, 0xaa, 0xf2, 0xba, 0x72, 0xe7, 0x56, 0x1d, 0x3d, 0x13, 0x78,
-  0xf6, 0x1a, 0x43, 0xb2, 0xdb, 0xc9, 0x19, 0x3a, 0x38, 0x01, 0xc0, 0x18,
-  0xdc, 0x69, 0x1d, 0xda, 0x71, 0x51, 0x65, 0x92, 0x55, 0x80, 0xa9, 0x88,
-  0x9c, 0x0e, 0xd5, 0x24, 0xcf, 0x7f, 0xcf, 0x28, 0x8b, 0x7c, 0x15, 0x9f,
-  0x79, 0x7c, 0xc1, 0x18, 0x50, 0x89, 0x25, 0xd3, 0x35, 0x6b, 0x2c, 0x9a,
-  0x5b, 0x33, 0x5e, 0x32, 0xb7, 0x62, 0xff, 0xff, 0x59, 0x30, 0xfa, 0xff,
-  0x77, 0x51, 0x41, 0x6d, 0x8c, 0x53, 0xe8, 0x50, 0x67, 0x59, 0xca, 0xa9,
-  0xcd, 0xe6, 0x03, 0xbd, 0xc9, 0x3e, 0x88, 0xf5, 0x18, 0xdf, 0x16, 0x72,
-  0x33, 0xdd, 0x98, 0xdb, 0xe5, 0x70, 0x74, 0x74, 0x72, 0xd2, 0x70, 0x43,
-  0xf1, 0xb4, 0x49, 0x6e, 0x00, 0x90, 0x4c, 0x49, 0xc5, 0x69, 0x12, 0x5e,
-  0x3d, 0x8f, 0x8c, 0x56, 0x4e, 0x11, 0x04, 0xb5, 0x22, 0x57, 0xfd, 0x4b,
-  0xab, 0xdc, 0x72, 0x32, 0x53, 0x15, 0x82, 0x0b, 0x36, 0x2f, 0x19, 0x1c,
-  0x7f, 0xb3, 0x22, 0x65, 0xa9, 0xfa, 0x47, 0x6f, 0xc8, 0xe1, 0xef, 0xbd,
-  0xf5, 0x3a, 0x92, 0xe7, 0xce, 0x4b, 0xcd, 0xef, 0x03, 0x88, 0x17, 0x30,
-  0x68, 0x49, 0x80, 0x63, 0x16, 0x16, 0xb6, 0x22, 0x64, 0x07, 0x52, 0x27,
-  0xad, 0xbf, 0x6c, 0x61, 0x78, 0x15, 0x2b, 0x32, 0xad, 0xe1, 0xc7, 0xa8,
-  0xda, 0xd5, 0x2a, 0x9f, 0x36, 0x54, 0x15, 0x57, 0x84, 0x59, 0xae, 0xd8,
-  0x83, 0xb5, 0xd7, 0x50, 0x90, 0xe6, 0xb6, 0xa6, 0x66, 0x72, 0x58, 0x62,
-  0x4b, 0x6c, 0xaf, 0xc7, 0x6b, 0x28, 0x0e, 0x93, 0x33, 0xb7, 0x30, 0x83,
-  0x45, 0xdf, 0x97, 0x9b, 0x07, 0xba, 0xab, 0x59, 0x06, 0x7e, 0x7d, 0x41,
-  0x45, 0x10, 0x49, 0x5d, 0xe7, 0x77, 0x59, 0xab, 0x6b, 0x5b, 0xe6, 0xbd,
-  0x67, 0x77, 0x7f, 0x29, 0xf1, 0x89, 0x49, 0x31, 0x2b, 0x16, 0xdb, 0x5d,
-  0x93, 0x85, 0xc5, 0x5a, 0x92, 0xd6, 0xb9, 0xb4, 0x74, 0x2a, 0x1b, 0xd6,
-  0xba, 0x62, 0xe1, 0x70, 0x72, 0x70, 0x21, 0xdd, 0xf3, 0x93, 0x81, 0xa6,
-  0xa4, 0x6a, 0xbd, 0x4b, 0xe1, 0xf9, 0xe1, 0x51, 0x70, 0x3a, 0x6b, 0x9b,
-  0xa5, 0xb0, 0x6b, 0x26, 0xc2, 0xdc, 0x24, 0xa9, 0xdf, 0xd6, 0xe0, 0x31,
-  0x5d, 0x2d, 0x1f, 0x99, 0xf6, 0xf6, 0xfd, 0xce, 0x29, 0xd6, 0xf0, 0x78,
-  0x84, 0xce, 0xa8, 0xf1, 0x83, 0xa4, 0xa6, 0x3a, 0x9e, 0x2b, 0x8d, 0xd7,
-  0x68, 0x75, 0x0f, 0xcc, 0x4b, 0xd2, 0x45, 0x51, 0x19, 0x6c, 0xfa, 0x03,
-  0x92, 0x3a, 0xab, 0xe4, 0xa0, 0xf7, 0x3b, 0x8a, 0xe5, 0x77, 0x2e, 0xa4,
-  0xf4, 0x6b, 0xb6, 0xe4, 0x27, 0xee, 0xc9, 0x76, 0x71, 0xcd, 0xce, 0x2d,
-  0xf9, 0x7f, 0x17, 0xdb, 0x2f, 0xf6, 0xbb, 0xdf, 0x77, 0xb1, 0x07, 0x3c,
-  0xea, 0x17, 0xef, 0x2e, 0x4e, 0xd7, 0xae, 0x2b, 0x89, 0x41, 0xf6, 0x2a,
-  0xf8, 0x7a, 0x9b, 0xcd, 0xdc, 0x03, 0x26, 0xe0, 0x2f, 0x2a, 0x06, 0x65,
-  0xdd, 0xd0, 0x1c, 0x29, 0xfb, 0x7e, 0x5c, 0xf9, 0xc9, 0x12, 0xcb, 0xcc,
-  0x73, 0x43, 0x4d, 0x72, 0xa6, 0x1f, 0x90, 0x7a, 0x01, 0xfb, 0xe0, 0xa3,
-  0x37, 0x88, 0x3a, 0xad, 0x24, 0x5c, 0xd8, 0x60, 0x88, 0x53, 0xf6, 0x32,
-  0x46, 0x97, 0xbb, 0xda, 0x48, 0xe2, 0xb2, 0xe9, 0x9a, 0x5c, 0x19, 0x0f,
-  0x27, 0x46, 0x8b, 0x6b, 0xbe, 0xef, 0x72, 0x19, 0x1a, 0x85, 0x4c, 0x15,
-  0x74, 0xd9, 0x48, 0x17, 0xed, 0x72, 0x4d, 0xaa, 0x6b, 0xdc, 0x5d, 0x56,
-  0x8d, 0xdb, 0xac, 0x23, 0x09, 0x45, 0xf9, 0x1e, 0x78, 0x2a, 0x79, 0x4f,
-  0x80, 0x4c, 0xdf, 0x2e, 0x93, 0x9d, 0x3a, 0x9d, 0xdd, 0x22, 0xbf, 0x90,
-  0x01, 0xdc, 0x32, 0xaf, 0xdc, 0x3b, 0xe6, 0x0e, 0xec, 0xa4, 0x73, 0x1c,
-  0xaf, 0xae, 0xaf, 0x85, 0x2c, 0xfc, 0x50, 0x2e, 0xa2, 0xca, 0x4a, 0x20,
-  0xc1, 0xba, 0xd8, 0xfc, 0x72, 0x53, 0xf3, 0xb9, 0x7a, 0x37, 0x74, 0x6b,
-  0x33, 0x02, 0x94, 0xf4, 0xa2, 0x9e, 0xe8, 0x25, 0x11, 0xeb, 0x0c, 0x1f,
-  0x81, 0x7e, 0xb2, 0xf9, 0xa2, 0xfb, 0x1d, 0xd1, 0xc8, 0xb5, 0x08, 0xb1,
-  0x73, 0x0a, 0xd3, 0x34, 0xde, 0xe4, 0x74, 0xb1, 0x2d, 0x62, 0x54, 0xa7,
-  0xa4, 0x61, 0x4a, 0x8c, 0x4e, 0x8b, 0x11, 0x74, 0xf6, 0xf1, 0xdf, 0xec,
-  0x7b, 0x56, 0x04, 0x00, 0x94, 0x4c, 0x57, 0x45, 0xc4, 0x91, 0xa8, 0x74,
-  0x2c, 0xfa, 0xfd, 0x47, 0x4a, 0xde, 0x6b, 0x36, 0xa3, 0x94, 0x83, 0xe0,
-  0x9d, 0xa7, 0xd5, 0xf6, 0x64, 0x3c, 0x5a, 0x18, 0x43, 0x8c, 0x79, 0xac,
-  0x35, 0xa7, 0x15, 0xe4, 0x31, 0x89, 0xaa, 0xe8, 0x8b, 0x99, 0xd7, 0x81,
-  0x3c, 0xfb, 0x37, 0x88, 0x0c, 0x4a, 0xce, 0x79, 0x28, 0x6e, 0xb5, 0xb6,
-  0xeb, 0xda, 0xdb, 0xd1, 0xbc, 0xe0, 0x7e, 0x27, 0x0b, 0xa2, 0xd5, 0xc0,
-  0xb8, 0xb8, 0x37, 0xf9, 0xc1, 0x6c, 0x01, 0x2e, 0x56, 0x75, 0x2e, 0xf5,
-  0x63, 0x2a, 0x50, 0xc9, 0x4e, 0xb5, 0xcc, 0x30, 0xa7, 0x89, 0x34, 0x35,
-  0x69, 0x8b, 0x5b, 0xfd, 0x56, 0x65, 0xac, 0xd1, 0x58, 0xa8, 0x8c, 0x75,
-  0x78, 0xb8, 0xc3, 0xac, 0x86, 0x26, 0xc7, 0x1f, 0x12, 0x19, 0x02, 0x41,
-  0x73, 0xcf, 0x0f, 0x22, 0xf2, 0xc6, 0xe7, 0x8b, 0xd4, 0x7d, 0xe8, 0xdc,
-  0x6d, 0xa9, 0xf3, 0x4a, 0x99, 0x11, 0xcd, 0x09, 0x6b, 0x61, 0x20, 0xcc,
-  0x19, 0x32, 0x0c, 0x8c, 0x54, 0x93, 0xad, 0xc8, 0x59, 0x56, 0x67, 0xe2,
-  0xa1, 0x55, 0x8a, 0xcd, 0xc8, 0xce, 0xe6, 0x63, 0xe3, 0x62, 0x01, 0x96,
-  0xc2, 0x2f, 0x9f, 0xd6, 0xd2, 0xdb, 0x5a, 0x9b, 0x57, 0xe9, 0x30, 0x1e,
-  0x8c, 0x2b, 0x40, 0xe2, 0x79, 0x51, 0x60, 0xf2, 0x03, 0x2b, 0xc4, 0x5c,
-  0x0d, 0x43, 0x49, 0x0e, 0x43, 0x21, 0xe4, 0x6a, 0xeb, 0x4a, 0xbe, 0xaf,
-  0x36, 0x1c, 0x70, 0xe2, 0x74, 0x62, 0x03, 0x01, 0x31, 0xe9, 0xc9, 0xc3,
-  0xbd, 0xbe, 0xf1, 0x65, 0x88, 0x8a, 0x2d, 0xd5, 0xc1, 0x40, 0xe4, 0x33,
-  0x59, 0xb1, 0x69, 0x00, 0x27, 0x7f, 0x54, 0x57, 0xcc, 0x35, 0xf7, 0xc0,
-  0xa1, 0xc7, 0xde, 0x57, 0x66, 0x90, 0xf4, 0xcc, 0x79, 0xed, 0x4b, 0x97,
-  0x41, 0x8a, 0xa3, 0x71, 0x25, 0x9d, 0xd3, 0xa9, 0xe8, 0x70, 0xf5, 0x89,
-  0x8b, 0x1e, 0x49, 0xc1, 0xa8, 0x3e, 0xdb, 0xfb, 0x6a, 0xd0, 0xeb, 0xe6,
-  0x2d, 0xf6, 0x45, 0x85, 0x13, 0xa5, 0x94, 0x37, 0xe7, 0xb2, 0x19, 0x50,
-  0xf2, 0x15, 0x57, 0x7f, 0x75, 0x35, 0xa6, 0x03, 0x50, 0xaf, 0x62, 0xef,
-  0x99, 0x72, 0x31, 0xc1, 0x31, 0x0a, 0xf9, 0xcb, 0x13, 0xee, 0xbd, 0x97,
-  0x38, 0x48, 0x6c, 0x70, 0xd5, 0xc0, 0x9b, 0xa9, 0x15, 0x37, 0x76, 0x44,
-  0x98, 0x6d, 0x7b, 0xe1, 0x90, 0x2d, 0x46, 0xdf, 0xbb, 0xa6, 0xf7, 0x8c,
-  0x1a, 0xf8, 0xe3, 0x7f, 0xd8, 0x2f, 0x41, 0x3e, 0xf6, 0x9f, 0x36, 0x5f,
-  0x56, 0xee, 0xb7, 0x5b, 0x9e, 0xfd, 0x11, 0x93, 0x02, 0x8d, 0x57, 0x66,
-  0x06, 0xbc, 0x08, 0xdc, 0xdc, 0x1f, 0x87, 0x2e, 0x42, 0x61, 0x4d, 0x24,
-  0x8b, 0xec, 0x1e, 0x32, 0x2f, 0x96, 0xb6, 0x72, 0x8c, 0x7f, 0x5e, 0x70,
-  0xa5, 0x9c, 0x49, 0x4a, 0xc7, 0x91, 0x9d, 0xcb, 0x92, 0x6e, 0x2c, 0xdb,
-  0xeb, 0xe7, 0x52, 0x85, 0x66, 0x9d, 0x8e, 0x85, 0xfb, 0x51, 0x7f, 0x1e,
-  0x1b, 0x92, 0x1c, 0xff, 0x3b, 0xc0, 0x6a, 0xfc, 0x71, 0x20, 0xc4, 0x72,
-  0xba, 0xbb, 0x95, 0x27, 0xd2, 0x7e, 0x26, 0xcb, 0x72, 0x9f, 0x2f, 0x9e,
-  0xec, 0x0f, 0x02, 0x6d, 0xa5, 0xdf, 0x09, 0xa1, 0x60, 0xe3, 0xba, 0x98,
-  0x48, 0x79, 0xda, 0x89, 0x08, 0x87, 0x3f, 0x2a, 0x2b, 0x01, 0xc0, 0xf7,
-  0x92, 0x36, 0x3b, 0xb5, 0x0c, 0xc9, 0x95, 0x4f, 0xf3, 0xef, 0x74, 0x3b,
-  0x76, 0x6e, 0x9e, 0x60, 0x75, 0x1c, 0x71, 0x48, 0x57, 0x8c, 0x99, 0x8f,
-  0x25, 0x75, 0xf4, 0x3d, 0xdc, 0x9c, 0xba, 0xef, 0x8e, 0xe4, 0x67, 0x83,
-  0x4b, 0xfc, 0xcc, 0xfc, 0x4f, 0x9a, 0x41, 0x96, 0x4d, 0x1d, 0xce, 0xa8,
-  0x1f, 0xb3, 0x38, 0x24, 0x5d, 0xe1, 0x59, 0x46, 0x2c, 0xd1, 0x91, 0x8e,
-  0xfa, 0x69, 0xe7, 0xe9, 0xbd, 0x14, 0x98, 0x20, 0x69, 0xfd, 0x78, 0x6b,
-  0x20, 0x1b, 0x9c, 0x91, 0x4e, 0x62, 0xa4, 0xd3, 0xe2, 0x1d, 0x70, 0xdb,
-  0xd8, 0x00, 0x08, 0xca, 0xbb, 0x12, 0xd5, 0xed, 0x4c, 0xba, 0x42, 0xd1,
-  0xb9, 0x12, 0xdd, 0x04, 0xd5, 0x8e, 0xe8, 0x96, 0xb3, 0xcc, 0xe9, 0xba,
-  0x98, 0x49, 0x98, 0x8a, 0x5b, 0xfe, 0xc8, 0x58, 0x39, 0x45, 0x48, 0xb8,
-  0x04, 0x03, 0xbe, 0xf9, 0x26, 0x21, 0x06, 0x52, 0xd1, 0x4c, 0x11, 0xfa,
-  0x48, 0x65, 0x15, 0x0d, 0x7b, 0x24, 0x27, 0x48, 0xda, 0x2b, 0x24, 0xf2,
-  0x8c, 0xee, 0x81, 0x0f, 0x72, 0x6c, 0x1c, 0x75, 0xe6, 0x2d, 0x7d, 0xbc,
-  0x39, 0xd7, 0x0f, 0xb9, 0xaa, 0x07, 0x81, 0x86, 0x35, 0x6c, 0xe3, 0xfd,
-  0xf7, 0x22, 0xf8, 0xd7, 0x55, 0xbd, 0x7c, 0x0f, 0xd2, 0xb7, 0xf7, 0x20,
-  0x81, 0xb9, 0x0c, 0x78, 0x9e, 0xf1, 0x03, 0x4c, 0x97, 0xf0, 0xf4, 0x90,
-  0x86, 0x9f, 0x2b, 0x2b, 0xff, 0xac, 0x80, 0x0e, 0x15, 0x73, 0x9a, 0xc4,
-  0x33, 0xd7, 0xe2, 0xae, 0xb6, 0x38, 0x48, 0x0b, 0xd8, 0xff, 0x34, 0xea,
-  0x18, 0x87, 0xcb, 0xde, 0x23, 0x3b, 0xde, 0xed, 0x10, 0xba, 0x38, 0xc8,
-  0x22, 0xe6, 0x38, 0x7e, 0x33, 0x7d, 0x1e, 0xfb, 0x44, 0xf2, 0x9b, 0x56,
-  0x0b, 0x0b, 0xd3, 0x3d, 0xde, 0x31, 0x28, 0xf9, 0x5a, 0x43, 0x4a, 0xf9,
-  0xeb, 0x39, 0x8a, 0x8d, 0x55, 0xa4, 0x6e, 0xb2, 0xa2, 0xed, 0x82, 0x3c,
-  0xbc, 0x52, 0x1f, 0x19, 0x27, 0xa0, 0xc1, 0xfb, 0xb2, 0x31, 0xd2, 0x59,
-  0x9e, 0x7a, 0x6e, 0x2a, 0x19, 0x02, 0xce, 0x09, 0x06, 0xcc, 0x0a, 0xfd,
-  0x4d, 0x71, 0xff, 0xd1, 0xc3, 0x25, 0xc1, 0x49, 0xd6, 0xe9, 0x86, 0x6b,
-  0x66, 0x46, 0x8b, 0xd8, 0xb6, 0x66, 0xa6, 0x39, 0x21, 0x3a, 0x23, 0x5e,
-  0x79, 0xeb, 0x80, 0x32, 0x24, 0x6b, 0x98, 0x09, 0x92, 0x64, 0xcb, 0x91,
-  0xdd, 0x09, 0x37, 0xbe, 0xc5, 0x53, 0xf5, 0x4c, 0x2a, 0x21, 0xfe, 0xc7,
-  0x9a, 0x83, 0x6c, 0x89, 0xf2, 0x46, 0xe3, 0x05, 0x07, 0x42, 0xe3, 0x7d,
-  0xbe, 0x0c, 0x44, 0x42, 0x50, 0xf3, 0xd5, 0xf9, 0xca, 0xb5, 0x32, 0x7d,
-  0xb6, 0x98, 0x06, 0x0e, 0x74, 0x3e, 0x44, 0x1f, 0xeb, 0xc7, 0x04, 0x21,
-  0xa9, 0x44, 0x52, 0x8c, 0x83, 0x74, 0xaf, 0x81, 0x29, 0x1c, 0xc2, 0xdf,
-  0x40, 0x1f, 0xbd, 0x7b, 0x1a, 0x23, 0x34, 0x5a, 0xff, 0xa3, 0x87, 0x3e,
-  0x6b, 0x1e, 0xae, 0xe7, 0x1d, 0xd0, 0x70, 0x19, 0x92, 0xd0, 0xbc, 0xe8,
-  0x90, 0xa4, 0xfb, 0x21, 0x64, 0x57, 0x1d, 0x8d, 0x90, 0x03, 0xad, 0x6e,
-  0x3e, 0xde, 0x87, 0x60, 0x0c, 0x1f, 0xed, 0x09, 0x7d, 0xcb, 0xb6, 0x0c,
-  0xd7, 0x54, 0x7b, 0xab, 0xf4, 0x29, 0xf4, 0x6d, 0xba, 0x6d, 0x13, 0xf7,
-  0x1b, 0x64, 0x32, 0xeb, 0x95, 0x27, 0x5d, 0x91, 0x53, 0x30, 0x78, 0xbc,
-  0x27, 0x57, 0xd1, 0x89, 0xee, 0x4a, 0x0c, 0xe6, 0x3e, 0x58, 0x8a, 0x6b,
-  0xe5, 0xfa, 0x40, 0x5d, 0xf0, 0x3f, 0x54, 0x56, 0x34, 0xa0, 0x11, 0xa5,
-  0xb6, 0x5f, 0xe6, 0x77, 0xef, 0x6f, 0xdb, 0x68, 0x71, 0x3f, 0xec, 0x73,
-  0xef, 0xb1, 0x8b, 0x35, 0x79, 0xd5, 0xf8, 0x37, 0x5c, 0x6e, 0x77, 0x1a,
-  0x54, 0x1f, 0xe7, 0x5b, 0x67, 0x70, 0x0a, 0x72, 0xac, 0x62, 0xf6, 0x91,
-  0xb9, 0x60, 0x30, 0x87, 0x1b, 0x90, 0x22, 0x98, 0xed, 0xca, 0xd6, 0x64,
-  0x62, 0x4e, 0x84, 0x85, 0xa4, 0x98, 0x30, 0x1c, 0xfa, 0xf1, 0xe6, 0x60,
-  0x78, 0x07, 0x65, 0x8b, 0x1c, 0xc4, 0x13, 0xf9, 0xe3, 0xe2, 0x91, 0xa1,
-  0xfb, 0xd0, 0x8f, 0xfa, 0x53, 0x04, 0x55, 0xc7, 0x94, 0xb0, 0x80, 0x76,
-  0x87, 0xef, 0xd2, 0xcb, 0xec, 0xe6, 0x11, 0xfc, 0x2f, 0x6f, 0xd4, 0x35,
-  0x87, 0xad, 0x75, 0x9e, 0x3e, 0x36, 0x86, 0xce, 0x2d, 0xae, 0x63, 0xb0,
-  0xd3, 0x76, 0xd9, 0x2c, 0xe5, 0xde, 0x75, 0xda, 0x7e, 0xaf, 0xc3, 0xc6,
-  0x08, 0x82, 0xf7, 0xc6, 0xb6, 0x27, 0x3d, 0x11, 0x22, 0x10, 0xcf, 0x9d,
-  0x21, 0x71, 0x7f, 0x91, 0xd3, 0xbc, 0xdb, 0xed, 0xe9, 0x8e, 0x78, 0x3d,
-  0x5a, 0x53, 0xb7, 0x42, 0xf2, 0x58, 0x6b, 0x16, 0xb1, 0x70, 0x4d, 0xc1,
-  0x78, 0xff, 0xc8, 0x76, 0x65, 0xde, 0xf3, 0xce, 0x2f, 0xda, 0x41, 0xf8,
-  0xb4, 0xfe, 0x4b, 0x61, 0x85, 0x4f, 0x3a, 0xa8, 0xe1, 0x31, 0xeb, 0xfe,
-  0xb4, 0xe2, 0x88, 0x3e, 0xf1, 0xd3, 0x6b, 0xa1, 0x4f, 0xa4, 0xc9, 0x67,
-  0x53, 0xbf, 0x0e, 0xdc, 0x56, 0xca, 0xde, 0xbe, 0x80, 0x0a, 0x51, 0x9e,
-  0x09, 0x14, 0x4d, 0xd2, 0x15, 0xab, 0x55, 0x29, 0x34, 0x2d, 0x1f, 0xbf,
-  0xa3, 0xcd, 0xa2, 0x76, 0xed, 0x31, 0xbe, 0x83, 0x7b, 0xb7, 0x64, 0xc6,
-  0x2a, 0x10, 0x68, 0xac, 0xe9, 0x95, 0x1b, 0x62, 0xd8, 0x2b, 0xfd, 0x61,
-  0xbb, 0x4f, 0xbe, 0x53, 0xbf, 0xb2, 0x57, 0xd2, 0xde, 0xa7, 0xf4, 0xa9,
-  0x9a, 0xbd, 0xa7, 0x3e, 0x90, 0x39, 0x4c, 0xcb, 0x5e, 0x91, 0x22, 0xfe,
-  0x71, 0x6d, 0x3d, 0x91, 0x07, 0x6d, 0xd3, 0x71, 0x96, 0x2a, 0x75, 0xbb,
-  0x4c, 0x26, 0x19, 0x99, 0xde, 0xa8, 0x9b, 0x88, 0x44, 0x62, 0xfc, 0xf5,
-  0x23, 0x5b, 0x50, 0x40, 0x87, 0xa6, 0xb2, 0x38, 0x63, 0x64, 0xc8, 0x64,
-  0x4d, 0x70, 0x72, 0xc1, 0xc0, 0xd5, 0xb6, 0x3a, 0xb0, 0xd4, 0x49, 0xdb,
-  0x6f, 0x5a, 0x05, 0xf5, 0x43, 0x86, 0x8f, 0x10, 0xbc, 0xb9, 0xef, 0x93,
-  0xa1, 0x92, 0x2e, 0x97, 0x7a, 0xc4, 0x3f, 0x61, 0xec, 0x42, 0xb0, 0x81,
-  0xed, 0xae, 0x34, 0x29, 0x4a, 0x5a, 0x55, 0x17, 0xc5, 0xad, 0xaf, 0x7e,
-  0x09, 0xa7, 0xdd, 0xe3, 0xcd, 0x09, 0x43, 0x92, 0xce, 0x20, 0x97, 0x01,
-  0x67, 0xea, 0x34, 0x27, 0x6d, 0x76, 0xd8, 0x41, 0x5c, 0xdd, 0x40, 0xd2,
-  0xd7, 0xc5, 0x27, 0x5d, 0x82, 0xae, 0x66, 0x15, 0xe6, 0xc1, 0xb9, 0x7c,
-  0x3e, 0x75, 0x1a, 0x9a, 0x6a, 0xe5, 0xef, 0x32, 0x50, 0x2e, 0x03, 0xef,
-  0x3e, 0xa3, 0xa3, 0x6a, 0x16, 0x5e, 0x63, 0xa6, 0xd1, 0x8f, 0xec, 0x73,
-  0x55, 0x48, 0x9b, 0x63, 0xec, 0x1c, 0x11, 0x9b, 0x43, 0xec, 0x72, 0x5c,
-  0x2d, 0xff, 0x3f, 0x5a, 0x58, 0xd8, 0x63, 0x92, 0xdc, 0x05, 0x07, 0xee,
-  0xc7, 0xbb, 0xcc, 0x65, 0x34, 0xba, 0xcb, 0xca, 0x74, 0xf4, 0x59, 0xba,
-  0x2c, 0x79, 0x0d, 0xed, 0x0e, 0x2b, 0x5b, 0xb5, 0x00, 0xb1, 0x3f, 0xb5,
-  0xcf, 0x1e, 0x1b, 0xeb, 0xc8, 0x7b, 0xb8, 0xcf, 0x52, 0x0c, 0xc8, 0xe8,
-  0xc6, 0xc6, 0x19, 0xd9, 0x7f, 0x9f, 0x62, 0x85, 0xab, 0x43, 0x58, 0xd8,
-  0x36, 0x39, 0x2b, 0xd5, 0x35, 0xea, 0xcb, 0xbc, 0x90, 0x2a, 0xcf, 0x39,
-  0x0b, 0x1f, 0x15, 0x13, 0xa9, 0x42, 0xef, 0x51, 0x9d, 0xcb, 0x7b, 0xa6,
-  0x26, 0x66, 0x66, 0x06, 0x6e, 0xbf, 0x8e, 0x1c, 0x89, 0xc8, 0x34, 0x9d,
-  0x14, 0x33, 0x09, 0xa8, 0xdc, 0x81, 0xf1, 0xb0, 0x7b, 0x2d, 0xbc, 0xde,
-  0xd5, 0x3d, 0xd9, 0x5c, 0x99, 0x17, 0x7b, 0x43, 0x49, 0xd3, 0x82, 0xca,
-  0xcb, 0x8f, 0x7f, 0x9f, 0x44, 0xdc, 0xb2, 0x32, 0x80, 0x45, 0xa6, 0x81,
-  0x11, 0xd9, 0xa8, 0x7d, 0x3b, 0x1f, 0xa8, 0x1e, 0xf3, 0x69, 0x5b, 0x01,
-  0x7e, 0x38, 0x9b, 0x5a, 0x23, 0xe5, 0xd2, 0x2a, 0x19, 0x1c, 0x1d, 0x90,
-  0x5f, 0x2a, 0x11, 0x28, 0x2f, 0xe8, 0xc7, 0x7a, 0x97, 0x4a, 0x09, 0x9f,
-  0xd6, 0x2c, 0x78, 0xa8, 0x84, 0xbb, 0x65, 0xb2, 0x0f, 0x59, 0xcc, 0x96,
-  0xde, 0x29, 0xe2, 0x73, 0x85, 0xbb, 0x79, 0x98, 0x6e, 0x30, 0x5b, 0x41,
-  0xbc, 0xff, 0x53, 0xb4, 0xd8, 0x2e, 0xc5, 0x1e, 0x5d, 0x45, 0xcf, 0x3f,
-  0xfd, 0xf8, 0xfc, 0x2e, 0x47, 0x5e, 0xb8, 0xaf, 0x40, 0xe8, 0xdd, 0x75,
-  0x74, 0x92, 0x4f, 0x35, 0xaa, 0xc0, 0xf3, 0x62, 0xde, 0x2c, 0x3b, 0x48,
-  0x6d, 0x11, 0x21, 0x1e, 0xcf, 0x98, 0x9c, 0xae, 0x43, 0x33, 0x50, 0x8e,
-  0x3a, 0x88, 0x03, 0x45, 0x99, 0x33, 0xb5, 0x65, 0x26, 0x35, 0x43, 0x48,
-  0x35, 0x9f, 0xf1, 0xe9, 0xa9, 0xb3, 0x4f, 0xba, 0x69, 0xf8, 0xfa, 0xef,
-  0x3e, 0x33, 0xa2, 0xb1, 0xf9, 0x19, 0x76, 0x24, 0x78, 0xcd, 0xa3, 0x63,
-  0x19, 0x12, 0x82, 0x53, 0x42, 0xcc, 0xe1, 0x53, 0xb6, 0x11, 0xbb, 0x30,
-  0x32, 0x2d, 0x50, 0x82, 0x01, 0x39, 0xee, 0x30, 0x89, 0x7c, 0x58, 0xa8,
-  0x61, 0x9e, 0x7f, 0xd4, 0x54, 0xcb, 0x95, 0xfc, 0x10, 0xd2, 0x79, 0xd5,
-  0xe9, 0x71, 0x05, 0xca, 0xd9, 0x9c, 0x98, 0x32, 0x20, 0x36, 0xc9, 0xbc,
-  0xcb, 0x89, 0x83, 0x92, 0x99, 0x50, 0xd0, 0x7b, 0x6c, 0x31, 0xcc, 0x0b,
-  0x56, 0x5e, 0x3e, 0xd2, 0x03, 0xef, 0x96, 0xe4, 0xe0, 0x18, 0xb2, 0x47,
-  0x66, 0xd3, 0x20, 0xee, 0x20, 0x36, 0xb0, 0x2f, 0x61, 0x72, 0xf0, 0x78,
-  0x73, 0x1a, 0xac, 0xfb, 0x3d, 0x08, 0xb4, 0x83, 0xac, 0xd9, 0x17, 0x3f,
-  0x59, 0xba, 0xd3, 0xc1, 0xce, 0xce, 0x2f, 0x3f, 0x35, 0xb0, 0x0e, 0x5f,
-  0xfd, 0xf2, 0x29, 0xc5, 0x23, 0xdb, 0xa9, 0x41, 0xbe, 0x42, 0xe3, 0x3f,
-  0x9e, 0x42, 0xe4, 0xd3, 0x62, 0x7a, 0xd9, 0x87, 0x5c, 0x48, 0xff, 0x42,
-  0x40, 0x42, 0x18, 0xa6, 0x11, 0xcf, 0x44, 0x95, 0xd5, 0x1d, 0x79, 0x6d,
-  0x96, 0xc9, 0x6d, 0x19, 0x37, 0x32, 0x84, 0x32, 0xdb, 0x5c, 0x9b, 0x5c,
-  0xc5, 0x0d, 0xe1, 0x73, 0xe9, 0x46, 0x87, 0x5e, 0xd3, 0xf7, 0x69, 0xcd,
-  0x92, 0x5b, 0xf6, 0x01, 0xe8, 0xf3, 0x1e, 0x92, 0x4c, 0xac, 0xcf, 0x5d,
-  0x20, 0xcf, 0x43, 0x3b, 0x47, 0xad, 0x8b, 0x52, 0xf9, 0xe8, 0x38, 0x69,
-  0x07, 0xf0, 0xa6, 0x45, 0x58, 0x13, 0x53, 0x01, 0xee, 0x1d, 0x02, 0x89,
-  0xee, 0x53, 0xb5, 0x8f, 0xc7, 0x42, 0xa5, 0xc5, 0x8c, 0x59, 0x2a, 0x2c,
-  0xb8, 0x01, 0xcf, 0x99, 0xab, 0xd6, 0x0a, 0xfd, 0x1a, 0x81, 0x40, 0xdd,
-  0x1e, 0xdd, 0x75, 0x3e, 0x27, 0x61, 0x17, 0x25, 0x4e, 0xac, 0x05, 0x1a,
-  0x5d, 0x3c, 0xc3, 0x1f, 0x24, 0x50, 0xd0, 0xf1, 0x6d, 0x93, 0xc6, 0x44,
-  0x3c, 0x57, 0x6e, 0x9a, 0xea, 0x15, 0x5d, 0x97, 0xb3, 0xb8, 0x32, 0x27,
-  0x62, 0x5e, 0xb2, 0xa9, 0x15, 0x77, 0x3c, 0x58, 0xda, 0x3e, 0x6e, 0x0f,
-  0xf6, 0x41, 0x1b, 0x59, 0x13, 0x79, 0x79, 0x57, 0xa9, 0xa4, 0xf5, 0x10,
-  0x9d, 0x06, 0xd6, 0xcf, 0x57, 0x3e, 0x59, 0x04, 0x9c, 0x15, 0x1a, 0xd1,
-  0x4c, 0x23, 0x54, 0x05, 0xdc, 0x3a, 0xa0, 0x1b, 0x0f, 0xa2, 0xf3, 0x8d,
-  0xea, 0xe5, 0x56, 0xb8, 0x93, 0x93, 0x0e, 0xf3, 0x45, 0xa3, 0x7c, 0x59,
-  0x3a, 0x89, 0xf3, 0x3f, 0x4b, 0x18, 0x3d, 0x20, 0xec, 0xfe, 0xca, 0x67,
-  0xb9, 0xfc, 0xf1, 0xe9, 0x2e, 0x7b, 0x57, 0xac, 0x11, 0x45, 0x92, 0xc9,
-  0x74, 0xfc, 0xf1, 0x49, 0xda, 0x19, 0x5f, 0x92, 0x9e, 0x43, 0x0f, 0x8f,
-  0xaa, 0x93, 0x08, 0x6f, 0x7f, 0x3a, 0x51, 0xfe, 0xf9, 0xfb, 0xf4, 0xc1,
-  0xd8, 0x18, 0xe5, 0xb5, 0x88, 0xc5, 0xac, 0xeb, 0x30, 0xf5, 0x43, 0x58,
-  0x69, 0x58, 0x4e, 0xdc, 0x6a, 0xe5, 0x6d, 0x69, 0xaa, 0x4c, 0x3b, 0x05,
-  0xcb, 0x0a, 0xba, 0xa2, 0xb4, 0x1b, 0x22, 0x12, 0xbc, 0x28, 0x7f, 0x5a,
-  0x0f, 0x79, 0x7b, 0xcd, 0xb7, 0xb7, 0xe7, 0x12, 0x68, 0xad, 0x8a, 0x82,
-  0x63, 0x42, 0x0e, 0x12, 0xc7, 0x45, 0xba, 0x8e, 0xd5, 0x82, 0x39, 0x02,
-  0xac, 0x9b, 0x90, 0xd0, 0x95, 0x03, 0xfd, 0x04, 0x44, 0xd7, 0x26, 0x10,
-  0x1c, 0x65, 0x95, 0xd4, 0x23, 0xee, 0xe4, 0x77, 0xa1, 0x16, 0xfb, 0x01,
-  0x87, 0x4b, 0x3f, 0x20, 0x23, 0x60, 0x40, 0xa2, 0x27, 0xda, 0xd0, 0x40,
-  0xb4, 0x7a, 0x65, 0x3a, 0x98, 0xa5, 0x1d, 0xdb, 0x35, 0xf8, 0x25, 0x12,
-  0xe3, 0xf1, 0xb2, 0x72, 0x9c, 0x8e, 0xb3, 0xfb, 0x6d, 0x11, 0x10, 0x62,
-  0x7b, 0xa6, 0x88, 0x8e, 0x28, 0x03, 0x7f, 0x56, 0xb4, 0x8b, 0x99, 0x70,
-  0x85, 0xfb, 0x54, 0x95, 0x1a, 0x15, 0xac, 0x10, 0x13, 0x76, 0xb2, 0xa4,
-  0x51, 0xdf, 0xfa, 0x1f, 0x7e, 0x03, 0xfd, 0x28, 0xa0, 0x22, 0x19, 0xff,
-  0xda, 0x8a, 0xaa, 0x82, 0xd0, 0x1f, 0xb9, 0xdc, 0x34, 0x47, 0xc8, 0x6e,
-  0x6f, 0x6a, 0x96, 0x41, 0x98, 0xcd, 0xf3, 0xe9, 0x35, 0xa6, 0x31, 0x54,
-  0x57, 0x98, 0xf0, 0xb2, 0x91, 0x89, 0xda, 0x66, 0x05, 0xed, 0xa0, 0x26,
-  0x6f, 0x15, 0xfe, 0xd5, 0xae, 0x78, 0x16, 0x76, 0x4c, 0x8d, 0xf1, 0x50,
-  0xbb, 0x94, 0x13, 0xac, 0xdf, 0x37, 0xc7, 0x97, 0xdb, 0x31, 0x85, 0xa1,
-  0x43, 0x25, 0x08, 0x58, 0x07, 0x25, 0x49, 0x74, 0x1b, 0xa4, 0x8e, 0xf2,
-  0xdf, 0x65, 0x5e, 0x2d, 0x38, 0x97, 0x9c, 0x54, 0xa4, 0x45, 0x37, 0x15,
-  0xd9, 0x11, 0x4d, 0x03, 0x27, 0x75, 0x7a, 0x48, 0x51, 0xe8, 0xaa, 0x0b,
-  0x6d, 0x15, 0x4e, 0xf0, 0x14, 0xb8, 0xff, 0xab, 0xe3, 0xd3, 0xe3, 0xcb,
-  0xe3, 0x3e, 0xf2, 0xe3, 0x23, 0x7f, 0xec, 0x0c, 0x3b, 0xa4, 0xce, 0x26,
-  0x37, 0x0b, 0x12, 0x3b, 0xd7, 0xbc, 0x1c, 0x48, 0x9b, 0xfb, 0x21, 0x1b,
-  0xbf, 0x3a, 0xfc, 0x9e, 0x0b, 0xea, 0xf0, 0x8e, 0x3a, 0xbf, 0x38, 0x3b,
-  0x7f, 0x7d, 0xf2, 0xf6, 0x55, 0x3f, 0x39, 0x3a, 0x3b, 0xff, 0x4b, 0x3f,
-  0x79, 0x73, 0xf6, 0xfd, 0x71, 0x07, 0x52, 0x9b, 0x41, 0x5f, 0x1d, 0xf8,
-  0x25, 0xa5, 0xad, 0x67, 0x69, 0x39, 0x05, 0xf7, 0xe7, 0x22, 0x33, 0xe2,
-  0x57, 0x8b, 0x81, 0x02, 0xd3, 0x50, 0x21, 0xd3, 0x10, 0x11, 0x23, 0x9a,
-  0x4a, 0xea, 0xf0, 0xb7, 0xc7, 0x87, 0xaf, 0xda, 0x7b, 0xfe, 0xfc, 0x6c,
-  0x74, 0x89, 0x71, 0xf1, 0x00, 0xdd, 0xb8, 0xf9, 0x06, 0xa5, 0xfb, 0x8a,
-  0xdd, 0xd5, 0x6c, 0x2b, 0xde, 0x66, 0x01, 0x05, 0x1b, 0x49, 0x21, 0xf8,
-  0xba, 0xa6, 0x6b, 0x8b, 0x71, 0x02, 0xca, 0xe0, 0x00, 0x6f, 0x8f, 0x29,
-  0x23, 0x1c, 0xab, 0x36, 0xba, 0x63, 0xcd, 0x0b, 0x41, 0x80, 0x80, 0x5d,
-  0xfe, 0xe5, 0xd4, 0xf8, 0x35, 0x5d, 0x28, 0xaf, 0xa3, 0x86, 0xb9, 0x76,
-  0x59, 0x0c, 0x18, 0x47, 0xdf, 0x00, 0xc9, 0x24, 0x28, 0x86, 0x54, 0x71,
-  0x68, 0xe3, 0x8c, 0x61, 0xf7, 0x15, 0xea, 0x35, 0x28, 0x4b, 0x1c, 0x5b,
-  0x73, 0xdd, 0x37, 0xac, 0x01, 0x11, 0x81, 0x54, 0x02, 0x07, 0x03, 0xbb,
-  0x12, 0x79, 0xfe, 0xfc, 0x07, 0x15, 0xc9, 0x30, 0xf8, 0x51, 0x26, 0x36,
-  0xe9, 0xca, 0xfb, 0x85, 0x0e, 0xb7, 0xba, 0xa2, 0xbd, 0x99, 0x09, 0xea,
-  0x43, 0x96, 0xaa, 0xf0, 0x58, 0xc2, 0x13, 0x3e, 0xe2, 0x37, 0x38, 0x21,
-  0xdd, 0xb7, 0xf0, 0xd6, 0xeb, 0x35, 0xa7, 0x3b, 0xac, 0x21, 0xa3, 0x2d,
-  0x06, 0x87, 0xed, 0xf4, 0x84, 0xd6, 0x95, 0x8f, 0x7a, 0x1b, 0x0c, 0x88,
-  0xbc, 0x07, 0xa9, 0xfe, 0x97, 0xf3, 0x52, 0xe3, 0xa8, 0x53, 0x5b, 0xbf,
-  0x27, 0x7c, 0xf4, 0x43, 0x4a, 0xe6, 0x69, 0x17, 0x81, 0x6a, 0x95, 0xc2,
-  0x41, 0x64, 0x2c, 0xb3, 0x06, 0x3a, 0x68, 0xb2, 0xe0, 0x08, 0xb1, 0x62,
-  0x60, 0x22, 0xd0, 0xf0, 0x23, 0xed, 0xc2, 0x14, 0x31, 0xab, 0x90, 0x49,
-  0x02, 0x40, 0x08, 0x6b, 0xe9, 0x67, 0xae, 0xec, 0x0e, 0x7e, 0xc7, 0x7d,
-  0xc9, 0xc7, 0x4c, 0xc8, 0x3e, 0x0c, 0xd2, 0xf6, 0x3a, 0x74, 0x5c, 0x56,
-  0x58, 0x98, 0x81, 0x87, 0xbf, 0xe6, 0x94, 0x9c, 0x0f, 0xd3, 0xeb, 0x61,
-  0x51, 0xe6, 0xec, 0x0a, 0xd2, 0x32, 0x39, 0xd2, 0x58, 0x82, 0x62, 0x70,
-  0xbc, 0xb1, 0x78, 0x93, 0x76, 0x35, 0x67, 0xe8, 0x14, 0xc9, 0x19, 0x4c,
-  0xe2, 0xa6, 0xe7, 0x30, 0x24, 0xf9, 0x77, 0xae, 0xd5, 0x35, 0xc5, 0x8c,
-  0xa5, 0x96, 0xde, 0x03, 0x2d, 0xf6, 0xdc, 0xef, 0x79, 0x63, 0xeb, 0x74,
-  0xa3, 0xf5, 0x03, 0x65, 0xf0, 0x10, 0xed, 0xe9, 0x12, 0x39, 0xc5, 0x31,
-  0x0f, 0x78, 0x4e, 0x46, 0x44, 0x63, 0xc1, 0x1e, 0x80, 0xd7, 0x63, 0x9f,
-  0xbc, 0x32, 0x63, 0xf3, 0x9f, 0x9d, 0xb5, 0x10, 0x5c, 0x54, 0x81, 0x47,
-  0xc3, 0xb1, 0x4b, 0x65, 0x76, 0x96, 0x97, 0x85, 0xc4, 0x79, 0xdc, 0xf2,
-  0xc5, 0x27, 0xd3, 0x55, 0x19, 0x27, 0x9a, 0xa5, 0x49, 0xf0, 0x41, 0xc9,
-  0x47, 0xef, 0x37, 0x82, 0x3b, 0x0c, 0x79, 0xab, 0x7c, 0xa1, 0x65, 0xfa,
-  0x7c, 0xf0, 0x42, 0x34, 0x26, 0xab, 0x6c, 0x14, 0xb0, 0xea, 0x04, 0x5d,
-  0xb2, 0x8d, 0xba, 0x67, 0x5c, 0xc4, 0x6c, 0x75, 0x08, 0x57, 0xd2, 0x5f,
-  0x3e, 0x56, 0x91, 0x42, 0x90, 0xc3, 0x4d, 0xde, 0x07, 0x51, 0xd3, 0x56,
-  0x95, 0x2f, 0xbe, 0x9e, 0xc2, 0x80, 0xc6, 0x9c, 0x6c, 0x74, 0x86, 0xd5,
-  0xc8, 0x00, 0xab, 0x27, 0x0d, 0x8a, 0x01, 0x60, 0x9c, 0x69, 0x1f, 0xcb,
-  0x15, 0x46, 0x62, 0xa8, 0x9f, 0x08, 0xe7, 0xb8, 0x40, 0x6f, 0xf4, 0xbd,
-  0x41, 0x87, 0xfb, 0x81, 0xdd, 0x2c, 0x6b, 0xc4, 0xc7, 0x3f, 0xee, 0x14,
-  0xff, 0xc5, 0x6f, 0x0a, 0x99, 0xc4, 0x17, 0xf8, 0xc7, 0xaf, 0xda, 0x16,
-  0x01, 0xe1, 0xb7, 0x84, 0x7c, 0xb6, 0x68, 0xef, 0x37, 0xf6, 0xc7, 0x20,
-  0xca, 0x56, 0x9a, 0x6e, 0x4b, 0x9e, 0x8a, 0x5f, 0x6c, 0x75, 0xa7, 0xb0,
-  0xc4, 0x6f, 0xee, 0x89, 0xe0, 0x19, 0xd0, 0xe4, 0xc4, 0xb6, 0xab, 0xac,
-  0xb1, 0x64, 0x01, 0xe4, 0x5c, 0xef, 0x8e, 0x25, 0x3e, 0x4e, 0x4f, 0xf6,
-  0x7b, 0x52, 0xae, 0xfc, 0x1d, 0x94, 0x2b, 0x5c, 0x36, 0x0b, 0x07, 0xe0,
-  0xc5, 0x34, 0x85, 0x17, 0x11, 0x19, 0x8e, 0xd4, 0xf4, 0x97, 0xff, 0xb3,
-  0xbb, 0x6a, 0x95, 0x95, 0x73, 0x54, 0xba, 0x5f, 0x49, 0xc0, 0x14, 0x3f,
-  0x35, 0x5b, 0x62, 0x5c, 0x53, 0x00, 0x05, 0x81, 0xb4, 0x46, 0x30, 0xbb,
-  0x64, 0x6a, 0x3f, 0xd5, 0x59, 0x27, 0x3b, 0x84, 0xd4, 0x0c, 0xe0, 0x53,
-  0x48, 0xcf, 0xba, 0x6a, 0xe2, 0x6b, 0xda, 0x0b, 0xdc, 0xaa, 0x11, 0x8d,
-  0x9a, 0x92, 0xab, 0xb3, 0x46, 0x18, 0x8d, 0xc7, 0xcc, 0x28, 0x94, 0x90,
-  0x86, 0x1a, 0x42, 0x57, 0x12, 0x1e, 0x12, 0x43, 0xa4, 0x8a, 0xd1, 0x26,
-  0x60, 0xc5, 0x76, 0x68, 0x67, 0xe1, 0x5f, 0x62, 0xe8, 0xac, 0x2b, 0x57,
-  0x45, 0xdd, 0xac, 0xcc, 0xed, 0xc1, 0x48, 0x00, 0xd0, 0xe1, 0xa6, 0x0e,
-  0x3a, 0xd7, 0x61, 0x38, 0x85, 0x35, 0x58, 0xae, 0xb3, 0xda, 0x01, 0x67,
-  0xa6, 0x5e, 0x59, 0x94, 0x4e, 0x6d, 0xcd, 0x79, 0x30, 0xdb, 0xe2, 0xfa,
-  0xec, 0x5c, 0x0a, 0x47, 0xf3, 0xd3, 0xe0, 0x02, 0xa0, 0x46, 0xf9, 0x7d,
-  0xe6, 0x01, 0xa0, 0x6b, 0x18, 0x89, 0xff, 0x5a, 0x05, 0x07, 0xcd, 0x06,
-  0x33, 0x12, 0x41, 0xf2, 0xeb, 0x26, 0xe1, 0xb7, 0xe5, 0x53, 0xb0, 0xcb,
-  0xd5, 0x52, 0x5e, 0xc3, 0x19, 0x55, 0x28, 0x31, 0x08, 0x41, 0x92, 0xad,
-  0x81, 0x2f, 0x95, 0x8e, 0x4a, 0x23, 0xb2, 0x35, 0xe2, 0x48, 0x69, 0xea,
-  0xd0, 0x8d, 0x0e, 0x86, 0x2f, 0x3c, 0xbd, 0xb6, 0x43, 0x74, 0x4f, 0xf0,
-  0xc7, 0x76, 0xc4, 0x5b, 0x69, 0xd2, 0x12, 0x5c, 0x91, 0x91, 0xee, 0xd0,
-  0x6a, 0x6c, 0x91, 0xdd, 0x87, 0x8d, 0x79, 0xc3, 0xc0, 0x35, 0xf8, 0x3b,
-  0x9e, 0xa9, 0x1b, 0xd1, 0x9c, 0x66, 0xcb, 0xc8, 0x6d, 0xc1, 0x81, 0x65,
-  0xfe, 0x45, 0xf0, 0xf0, 0x9b, 0x3e, 0x4a, 0x02, 0x2c, 0x62, 0xf0, 0xc9,
-  0x1b, 0xfc, 0x70, 0x98, 0xbc, 0x52, 0x10, 0x39, 0xb2, 0x27, 0x57, 0xda,
-  0x02, 0xb0, 0xc5, 0x41, 0x33, 0xdf, 0x6b, 0xd2, 0x46, 0xc7, 0x92, 0xea,
-  0xfb, 0x55, 0x98, 0x29, 0xaa, 0x1e, 0x70, 0xe1, 0x03, 0x59, 0x58, 0x51,
-  0x85, 0x31, 0xfe, 0x6d, 0xa6, 0x6a, 0x0e, 0x28, 0x64, 0x35, 0xec, 0xc2,
-  0x4c, 0x6b, 0x1d, 0x1b, 0x81, 0x06, 0x7b, 0x6f, 0xb8, 0xf9, 0x8f, 0xad,
-  0x89, 0xe2, 0x4a, 0x93, 0x32, 0xac, 0xed, 0x8e, 0xa4, 0x4f, 0xe8, 0xf2,
-  0x4f, 0xca, 0x29, 0x22, 0x46, 0x0f, 0xfc, 0x64, 0x99, 0x96, 0x62, 0x9e,
-  0x2c, 0x6e, 0xcd, 0x7f, 0x2c, 0xbe, 0x8e, 0x6c, 0xb2, 0xaa, 0x9b, 0x74,
-  0x48, 0x41, 0x9f, 0xf4, 0x0a, 0x47, 0x97, 0xb6, 0x10, 0x21, 0x50, 0x15,
-  0xb2, 0x77, 0x6e, 0x96, 0xff, 0x41, 0x6f, 0x5b, 0x83, 0x26, 0x92, 0x2e,
-  0xed, 0x5c, 0x02, 0x5d, 0x99, 0xa3, 0xd6, 0xe5, 0x32, 0x13, 0x62, 0x94,
-  0xba, 0x30, 0x45, 0xa6, 0xf3, 0xf3, 0xb4, 0x77, 0xca, 0xce, 0xaf, 0xbf,
-  0x96, 0x9a, 0x93, 0xc1, 0xc7, 0x9d, 0x73, 0x40, 0xcb, 0x51, 0xb6, 0x3f,
-  0xdf, 0xf1, 0x65, 0x98, 0x67, 0x64, 0x3d, 0x39, 0x90, 0xb1, 0xbd, 0x6a,
-  0x93, 0x1f, 0x21, 0x8e, 0x01, 0xe2, 0xf1, 0x94, 0x33, 0xac, 0x84, 0xe3,
-  0x47, 0x3a, 0x9d, 0x79, 0x7c, 0xc4, 0x6f, 0xcb, 0xf1, 0x53, 0xfa, 0xcf,
-  0x77, 0xfc, 0x1f, 0x16, 0x15, 0xac, 0xc6, 0x0b, 0xcf, 0xa3, 0x50, 0x45,
-  0xc4, 0x32, 0x81, 0x29, 0xb5, 0xc5, 0xf6, 0x19, 0x61, 0x17, 0xbd, 0xc6,
-  0x5f, 0xca, 0xec, 0x91, 0x77, 0x68, 0x6c, 0x7f, 0x67, 0xe7, 0xe8, 0x8a,
-  0x0c, 0x05, 0xda, 0x89, 0x13, 0xf8, 0xdd, 0xe6, 0x4e, 0x98, 0xa0, 0xd6,
-  0x9f, 0x4b, 0xe3, 0x17, 0xe2, 0x18, 0xb8, 0x49, 0xc5, 0xa6, 0xce, 0xd7,
-  0x44, 0xca, 0xd6, 0x7f, 0x4f, 0x92, 0xe9, 0xe4, 0x3f, 0x2d, 0x8e, 0x83,
-  0x47, 0xc7, 0xf6, 0xcd, 0x68, 0x34, 0x78, 0xab, 0xdc, 0x6d, 0x6b, 0xa2,
-  0x2f, 0xee, 0xd7, 0xed, 0x86, 0x79, 0x2a, 0x68, 0x32, 0x9f, 0x7d, 0xda,
-  0x2c, 0xbe, 0xe2, 0x24, 0x28, 0xd3, 0xe5, 0xc4, 0x94, 0x40, 0x2e, 0x4b,
-  0xea, 0xf6, 0xc1, 0x78, 0x95, 0x5b, 0x09, 0x40, 0x3c, 0xac, 0xbe, 0x49,
-  0xc9, 0x21, 0x5c, 0x33, 0x23, 0x48, 0xcb, 0x42, 0x75, 0x07, 0xa4, 0xbf,
-  0xdc, 0x5a, 0x82, 0xf9, 0x3c, 0x9b, 0x33, 0x75, 0x95, 0xcb, 0xbc, 0x12,
-  0x5d, 0x2f, 0x79, 0x0d, 0x36, 0x42, 0xfa, 0xd8, 0x9a, 0x18, 0xc9, 0x94,
-  0xcb, 0x1f, 0xb0, 0xa9, 0x29, 0x30, 0xee, 0x7f, 0x89, 0x9c, 0xdd, 0xd5,
-  0xc3, 0x62, 0x72, 0xf3, 0xea, 0xed, 0x68, 0x63, 0x7d, 0xf4, 0xd9, 0xca,
-  0xee, 0x70, 0x6c, 0x80, 0x9f, 0x2e, 0x8b, 0x05, 0x27, 0xee, 0x04, 0x21,
-  0xf9, 0x0e, 0x97, 0xd5, 0xe8, 0xfc, 0xed, 0xf1, 0x37, 0x67, 0xf6, 0x9f,
-  0xb5, 0x53, 0xfe, 0xe8, 0x0c, 0x9f, 0x72, 0x3d, 0xeb, 0xc7, 0x4a, 0x83,
-  0xe7, 0x2d, 0xaa, 0x87, 0x40, 0x81, 0xa6, 0x0d, 0x39, 0xe3, 0xd7, 0x65,
-  0x2f, 0xf6, 0x75, 0x4b, 0xe2, 0x47, 0xe5, 0xba, 0xa2, 0xe7, 0x74, 0xdc,
-  0xf6, 0xbf, 0xf9, 0x3a, 0xbe, 0x60, 0x5e, 0xbd, 0x5d, 0xf3, 0x39, 0xfe,
-  0xcd, 0xc0, 0xf4, 0x09, 0x75, 0xf7, 0x4c, 0xe9, 0x7c, 0xe4, 0x52, 0x45,
-  0xa0, 0x63, 0x56, 0x46, 0xe7, 0x27, 0xf6, 0x9f, 0xc6, 0xd0, 0xc3, 0x5c,
-  0x53, 0xd9, 0xf3, 0x9c, 0x5d, 0x84, 0x0a, 0xb6, 0xc9, 0x78, 0x96, 0x2e,
-  0x6e, 0xb1, 0xb9, 0xd6, 0xf4, 0x9c, 0xbf, 0xd5, 0xb7, 0x3d, 0x28, 0x0c,
-  0x6e, 0x7e, 0x96, 0xd5, 0x6f, 0x8f, 0x44, 0x51, 0xc9, 0xa9, 0x10, 0xde,
-  0x94, 0x0e, 0x91, 0xee, 0x22, 0x16, 0x6b, 0x3c, 0xc1, 0xca, 0x26, 0xb3,
-  0xa6, 0xb6, 0xf8, 0xc5, 0x79, 0xb2, 0x35, 0x92, 0xf2, 0x1f, 0x17, 0x82,
-  0x43, 0x39, 0xd7, 0x86, 0xb6, 0x3b, 0x56, 0x7d, 0x2d, 0x93, 0x8d, 0x19,
-  0xa4, 0xb4, 0xb1, 0x3b, 0x2a, 0x44, 0xbc, 0x21, 0x35, 0x87, 0xef, 0x97,
-  0x47, 0x76, 0x84, 0xce, 0x83, 0x5b, 0x24, 0xf7, 0x4e, 0xb2, 0x35, 0xa6,
-  0x4b, 0xcb, 0xdd, 0x71, 0x52, 0x17, 0xe1, 0x29, 0xa8, 0x71, 0xba, 0x9b,
-  0x7b, 0xf6, 0xc5, 0xb3, 0xa7, 0xdb, 0xdb, 0x7d, 0xad, 0xb2, 0x66, 0x59,
-  0x3f, 0x1c, 0x6f, 0xe1, 0xf3, 0x29, 0xbe, 0x40, 0x56, 0x71, 0x6f, 0x90,
-  0x04, 0x1a, 0xcc, 0x7f, 0x77, 0x73, 0xbc, 0xb6, 0xf6, 0x2a, 0x0f, 0x8f,
-  0x19, 0xe1, 0x20, 0x23, 0x73, 0x0d, 0x75, 0x41, 0x04, 0x67, 0xf2, 0xc0,
-  0x96, 0x05, 0x22, 0xd6, 0x06, 0x91, 0xa5, 0x66, 0xab, 0x4b, 0xb7, 0x97,
-  0xf0, 0x0f, 0xc4, 0x85, 0x5d, 0x36, 0x4c, 0x53, 0xc9, 0x65, 0xd3, 0xdd,
-  0xe1, 0xfe, 0x5f, 0x3b, 0x43, 0xee, 0x64, 0x39, 0x89, 0xd3, 0xdf, 0xa0,
-  0xa2, 0x05, 0x19, 0xb1, 0xfd, 0x04, 0x65, 0xa3, 0xbe, 0xeb, 0x8b, 0x9d,
-  0x88, 0x1f, 0x7b, 0x37, 0x28, 0x35, 0x7c, 0xfc, 0xf6, 0xfb, 0x93, 0x8b,
-  0xb3, 0xb7, 0x6f, 0x8e, 0xdf, 0x3a, 0xf0, 0x3a, 0x5f, 0xa7, 0x5d, 0x81,
-  0xba, 0xee, 0x0a, 0xed, 0x62, 0xc4, 0x71, 0x4c, 0x8a, 0x47, 0x41, 0xab,
-  0xa5, 0xff, 0x1a, 0x86, 0xcd, 0x05, 0x0f, 0xd9, 0xba, 0xb1, 0x4d, 0xb1,
-  0x64, 0xd4, 0xe9, 0x94, 0xd3, 0x83, 0x86, 0x82, 0xe4, 0x97, 0x58, 0x41,
-  0x2e, 0xb1, 0xc2, 0x0f, 0x93, 0x4c, 0x79, 0x6a, 0xab, 0xa0, 0x2e, 0x8e,
-  0x65, 0xb2, 0xf8, 0x84, 0x9f, 0x46, 0x27, 0xfc, 0x6e, 0x97, 0xba, 0xa1,
-  0xeb, 0x82, 0x8e, 0xa8, 0xbd, 0x1b, 0x52, 0xaa, 0xdf, 0x68, 0xf0, 0x06,
-  0xc1, 0x9c, 0x44, 0xc2, 0xdc, 0x49, 0xc0, 0x2b, 0xec, 0xa9, 0xd2, 0x2c,
-  0xf6, 0xdb, 0x36, 0xac, 0x83, 0x11, 0x34, 0xa2, 0xc2, 0x20, 0xc4, 0xfe,
-  0x52, 0x43, 0xc0, 0x31, 0x33, 0x50, 0x15, 0x46, 0x63, 0x5c, 0xe5, 0x72,
-  0xcb, 0x78, 0x47, 0x6c, 0x71, 0x23, 0x80, 0x8b, 0x8e, 0xde, 0x9f, 0x5f,
-  0x9c, 0xfd, 0xf8, 0x97, 0x7f, 0xf0, 0x27, 0x46, 0x7e, 0x18, 0x3f, 0xf1,
-  0x35, 0x64, 0x8d, 0xff, 0xf2, 0x9b, 0xbe, 0xf6, 0xe8, 0xe7, 0x9a, 0xed,
-  0xf7, 0x35, 0x5b, 0x6c, 0x1d, 0x99, 0x2b, 0x02, 0x33, 0x42, 0x91, 0xea,
-  0xeb, 0x96, 0x1a, 0x1a, 0xd4, 0x09, 0x07, 0x1c, 0x61, 0xce, 0xf1, 0x08,
-  0xe2, 0x57, 0x5d, 0x85, 0x76, 0x40, 0xaf, 0x89, 0xda, 0x39, 0xac, 0x2b,
-  0xc5, 0x15, 0x94, 0xfa, 0x20, 0x6c, 0xc6, 0xa5, 0xec, 0xe6, 0xe3, 0xf0,
-  0xf4, 0xf4, 0xb7, 0x4f, 0x82, 0x45, 0xbf, 0x9a, 0xd3, 0x00, 0xd7, 0x82,
-  0x1b, 0xd0, 0xc0, 0x29, 0xa4, 0xb6, 0xfd, 0x3b, 0x58, 0xa8, 0x5c, 0x77,
-  0xde, 0x9e, 0x69, 0x6f, 0x24, 0xec, 0x33, 0xa8, 0x32, 0x52, 0xdc, 0xe1,
-  0x75, 0x67, 0xb7, 0x2d, 0x5f, 0x98, 0x28, 0x36, 0xfb, 0x65, 0xa4, 0xf8,
-  0xf9, 0x5f, 0x5a, 0x49, 0x54, 0xd4, 0xce, 0x06, 0xdd, 0x2f, 0xf2, 0x88,
-  0x0b, 0x17, 0x34, 0x16, 0x62, 0x73, 0x40, 0x10, 0x90, 0x86, 0xdc, 0x11,
-  0xea, 0x67, 0x8f, 0x2c, 0x83, 0x4f, 0xca, 0xbc, 0xba, 0x45, 0x0e, 0x36,
-  0x1f, 0xca, 0xbe, 0x14, 0x74, 0xab, 0x51, 0xdf, 0x92, 0x55, 0x7c, 0x74,
-  0x85, 0xfa, 0x2e, 0x3d, 0xa6, 0x3f, 0x2f, 0xcf, 0x8e, 0xce, 0x4e, 0xe9,
-  0x2f, 0xc7, 0xaf, 0x4f, 0x7e, 0xf4, 0x02, 0x4d, 0x88, 0xce, 0x55, 0xf2,
-  0xba, 0x50, 0x9d, 0x05, 0x2b, 0xd7, 0x46, 0x2b, 0xfd, 0x62, 0x8b, 0x11,
-  0xbc, 0xe1, 0x81, 0x03, 0xb6, 0x4c, 0x16, 0x9f, 0x0c, 0xb8, 0x03, 0x5a,
-  0x55, 0x78, 0x3f, 0x3c, 0x04, 0xa1, 0xc9, 0x10, 0x2c, 0x12, 0xac, 0x10,
-  0x2e, 0xf9, 0x50, 0xe8, 0x35, 0xd7, 0x56, 0x3a, 0x85, 0x7c, 0xa9, 0xfc,
-  0xca, 0x41, 0x0c, 0x43, 0x57, 0xa6, 0x79, 0x2f, 0xd4, 0x7d, 0x81, 0x2a,
-  0xc8, 0x8e, 0x4a, 0x91, 0x6d, 0xd9, 0x30, 0x24, 0xdb, 0x11, 0x56, 0x54,
-  0x94, 0xc2, 0x46, 0x88, 0x8c, 0xf0, 0x9d, 0x85, 0xf9, 0xe5, 0x9a, 0x6b,
-  0x8e, 0x49, 0x27, 0x40, 0xf3, 0x57, 0x91, 0x17, 0x86, 0x98, 0xba, 0x37,
-  0x58, 0x5c, 0xe8, 0xb5, 0x93, 0x6c, 0x20, 0x17, 0x19, 0xc9, 0xac, 0x62,
-  0x77, 0x29, 0xf2, 0xb4, 0x91, 0xe4, 0x2d, 0x2f, 0xb5, 0xda, 0x48, 0x7f,
-  0x53, 0x23, 0x69, 0xb3, 0x95, 0x67, 0xbf, 0xa5, 0x91, 0x67, 0xad, 0x36,
-  0x6e, 0x7e, 0x53, 0x23, 0xae, 0x60, 0x07, 0x5d, 0x8b, 0x3f, 0x9e, 0x5c,
-  0x26, 0x47, 0x67, 0xaf, 0xfc, 0x1e, 0xbd, 0x74, 0x57, 0x7b, 0x4a, 0x16,
-  0xc1, 0x82, 0x8b, 0x7c, 0x5f, 0x05, 0x35, 0x8b, 0xad, 0xfc, 0x2d, 0xa3,
-  0x18, 0x2a, 0x5f, 0x41, 0x36, 0xc7, 0x8f, 0x4a, 0x49, 0x24, 0x0b, 0x59,
-  0xd4, 0x5c, 0xb5, 0x5c, 0x94, 0x7e, 0x73, 0xa0, 0x1a, 0xde, 0xd9, 0xcc,
-  0xdb, 0x9b, 0x96, 0xea, 0x0c, 0x4f, 0xc6, 0x29, 0xc7, 0xd3, 0x16, 0x12,
-  0x87, 0x24, 0x05, 0xe5, 0xb0, 0xf6, 0xf0, 0xb5, 0xc2, 0x25, 0xa6, 0xc2,
-  0x75, 0xc2, 0xe9, 0x9b, 0xa8, 0xab, 0x28, 0xe6, 0x3a, 0x57, 0x0c, 0x45,
-  0x6f, 0x1a, 0x19, 0xb1, 0x7b, 0x2a, 0x09, 0x17, 0x8d, 0x1d, 0xa3, 0x8c,
-  0xcd, 0xd0, 0xbc, 0xd8, 0xde, 0x99, 0x9a, 0xef, 0x00, 0xf7, 0xe2, 0xc2,
-  0xd9, 0xde, 0x5a, 0x4c, 0x2c, 0x12, 0x51, 0xae, 0x09, 0xf7, 0x9d, 0x7d,
-  0x85, 0x1d, 0x48, 0x65, 0x53, 0x3a, 0x7f, 0x9a, 0x4a, 0x99, 0xff, 0x3d,
-  0xb8, 0xa3, 0x9f, 0x78, 0x04, 0xc8, 0x3c, 0x9d, 0x09, 0x2e, 0x47, 0xf3,
-  0xdf, 0x1f, 0x16, 0x75, 0xfa, 0x01, 0xb0, 0x32, 0x56, 0x89, 0x30, 0x87,
-  0x93, 0x40, 0x0c, 0x3e, 0x55, 0xe1, 0x9c, 0x98, 0x29, 0x2e, 0xe7, 0xcf,
-  0x9c, 0xf1, 0x9a, 0x3c, 0x95, 0x56, 0x0e, 0xd5, 0xc7, 0xf8, 0x11, 0x2d,
-  0xb7, 0x2c, 0xce, 0xff, 0x8a, 0x4b, 0xc7, 0x75, 0x07, 0x0d, 0xdd, 0x67,
-  0x8d, 0x27, 0xa6, 0x10, 0xdc, 0x2f, 0x42, 0xc6, 0xf9, 0x24, 0x97, 0x3c,
-  0x19, 0x29, 0x9d, 0x3b, 0x45, 0x91, 0x14, 0x99, 0xb4, 0xc1, 0x1a, 0x4f,
-  0x68, 0x21, 0xc5, 0xff, 0x54, 0xc2, 0x99, 0xfe, 0x31, 0x2d, 0xb4, 0xa8,
-  0x39, 0x5b, 0x0c, 0x5c, 0x39, 0x8b, 0x7e, 0xf1, 0x20, 0x81, 0xc0, 0x74,
-  0x01, 0xbf, 0x4c, 0xc4, 0xbb, 0xae, 0x0b, 0xa3, 0x96, 0xa9, 0x37, 0x03,
-  0x9f, 0x59, 0xd4, 0x5a, 0x65, 0xb9, 0xd5, 0xcf, 0x30, 0x21, 0x0e, 0xa7,
-  0x91, 0x92, 0x00, 0xab, 0xd4, 0x12, 0x70, 0xf9, 0x44, 0x12, 0xa8, 0x78,
-  0xac, 0x31, 0xfb, 0xa1, 0xd5, 0x3f, 0xf7, 0xb3, 0xfe, 0xd9, 0x9a, 0xef,
-  0x70, 0x63, 0xb2, 0x6e, 0xf2, 0x91, 0x36, 0xf6, 0x9e, 0xdb, 0x8f, 0x5b,
-  0xfb, 0xbc, 0xbd, 0x45, 0x0c, 0x0a, 0xcf, 0x54, 0x68, 0x45, 0x98, 0x11,
-  0xf3, 0x85, 0x3e, 0xc9, 0x4e, 0x88, 0xfb, 0x8c, 0x3d, 0x3d, 0x0e, 0xb4,
-  0x59, 0x66, 0xcb, 0x99, 0x1b, 0xa2, 0xfd, 0x10, 0x29, 0x38, 0x08, 0xf3,
-  0x61, 0xc6, 0x27, 0xda, 0xdf, 0x18, 0xd3, 0x15, 0x2a, 0x8c, 0xcf, 0xfd,
-  0x47, 0x52, 0xa4, 0x4c, 0xd0, 0x26, 0x59, 0xe4, 0x6e, 0x43, 0x6a, 0x09,
-  0x3c, 0xfc, 0x88, 0x93, 0x7e, 0xe9, 0x1a, 0x28, 0xdc, 0xbf, 0xed, 0x8d,
-  0x98, 0x30, 0x5a, 0x6e, 0x0a, 0x8f, 0xc6, 0xc6, 0x3c, 0xac, 0x4a, 0xa1,
-  0xde, 0xf0, 0x64, 0xd6, 0x16, 0x5c, 0x96, 0x89, 0x40, 0xb1, 0xd5, 0x21,
-  0x28, 0x5c, 0x22, 0x9e, 0xc4, 0x5a, 0x18, 0x72, 0xe0, 0xc3, 0x9e, 0x06,
-  0x85, 0x1b, 0x70, 0x25, 0x07, 0x5c, 0xdc, 0x7c, 0x02, 0xdc, 0xbd, 0x03,
-  0x4c, 0x5f, 0x12, 0xe7, 0x28, 0xfb, 0xe2, 0x7e, 0x7e, 0x1e, 0xf6, 0xf6,
-  0xda, 0x93, 0x7d, 0x7e, 0x38, 0x1a, 0xd9, 0x44, 0x1f, 0x85, 0x13, 0x2a,
-  0x53, 0xa8, 0x29, 0x92, 0x60, 0x2b, 0x52, 0x26, 0x8f, 0xd8, 0xdc, 0xd1,
-  0x36, 0x5a, 0xa9, 0x4e, 0x7b, 0x4f, 0xdc, 0xb7, 0xdc, 0xa7, 0xbe, 0x97,
-  0xb6, 0xfa, 0x9f, 0xf8, 0xa9, 0xee, 0x6f, 0x7d, 0xdf, 0xf1, 0xad, 0xa7,
-  0xd1, 0x26, 0xda, 0xdf, 0xff, 0xdc, 0x58, 0x2c, 0x84, 0xab, 0x75, 0x96,
-  0xf8, 0x0f, 0x06, 0x5f, 0xa4, 0xe7, 0x06, 0x4a, 0xd4, 0x96, 0x75, 0x94,
-  0x9f, 0x40, 0x84, 0x6a, 0x11, 0x7e, 0xea, 0x99, 0xfb, 0x14, 0xd9, 0x4c,
-  0x9b, 0x08, 0x47, 0xe9, 0x21, 0x89, 0xce, 0x0e, 0xfc, 0xca, 0x7c, 0x50,
-  0x4e, 0x78, 0x0e, 0x48, 0x0d, 0x5b, 0x9b, 0x3c, 0x66, 0xbd, 0x08, 0xbe,
-  0xf3, 0xb9, 0x1f, 0x92, 0xef, 0xb7, 0x94, 0x1f, 0x06, 0xab, 0xd5, 0x30,
-  0x38, 0xac, 0x6e, 0xa3, 0x18, 0x58, 0xda, 0xc1, 0x7f, 0xda, 0x72, 0x46,
-  0x5e, 0xf5, 0x5f, 0x91, 0xe3, 0x77, 0xce, 0x9b, 0x58, 0x89, 0xe3, 0x87,
-  0xc9, 0x19, 0x8c, 0xb0, 0x06, 0x3f, 0x20, 0x4c, 0x59, 0x3e, 0xee, 0x8e,
-  0x12, 0x38, 0x3c, 0xed, 0x7b, 0xcf, 0xfd, 0x9c, 0x58, 0x97, 0x2c, 0x1c,
-  0xb8, 0xa3, 0xc7, 0xc7, 0x47, 0x1e, 0x2c, 0xda, 0x9f, 0x25, 0x17, 0xc7,
-  0x97, 0x17, 0x9c, 0x04, 0x93, 0x80, 0xe2, 0xb0, 0x2d, 0x62, 0xe9, 0x48,
-  0x6d, 0x3b, 0xb4, 0x83, 0x94, 0xd1, 0x0e, 0xee, 0x20, 0xbf, 0x93, 0xff,
-  0xb6, 0x62, 0x81, 0x84, 0x5b, 0x97, 0xee, 0x50, 0xfd, 0xa7, 0xbd, 0x27,
-  0xb4, 0x19, 0x5c, 0x5e, 0x02, 0xb7, 0xb2, 0x07, 0xba, 0xeb, 0xc9, 0x70,
-  0xf3, 0xef, 0x93, 0xf6, 0x84, 0xcc, 0x59, 0x04, 0xa7, 0xcb, 0x9d, 0x1f,
-  0xba, 0x7c, 0x30, 0x23, 0x91, 0x00, 0x6b, 0xb2, 0x0a, 0x40, 0xc9, 0x3f,
-  0x8f, 0x62, 0x31, 0xee, 0xe3, 0x2a, 0xf4, 0xb5, 0x13, 0xce, 0xef, 0x8e,
-  0xcf, 0x05, 0xda, 0x45, 0xa2, 0xfe, 0x81, 0xe4, 0xe9, 0xee, 0x6e, 0x07,
-  0x7d, 0x7e, 0x3a, 0x2e, 0xee, 0x0c, 0x34, 0xaa, 0x74, 0x20, 0x78, 0x4b,
-  0x8c, 0x66, 0xa8, 0x16, 0x15, 0xca, 0x79, 0x5f, 0xb1, 0x4f, 0x80, 0x67,
-  0xcc, 0x62, 0x2d, 0xc1, 0xbc, 0xc9, 0xa9, 0xfc, 0x01, 0xfc, 0x24, 0x36,
-  0x69, 0xad, 0xe3, 0x28, 0xe4, 0x25, 0xc6, 0xf7, 0x9c, 0x06, 0x45, 0x05,
-  0x14, 0x7f, 0x10, 0xf5, 0x4c, 0x19, 0x2a, 0x83, 0xcf, 0x3c, 0x8b, 0x77,
-  0xc4, 0xe8, 0xf2, 0xec, 0x42, 0x77, 0x58, 0x2c, 0x75, 0xb5, 0x62, 0x25,
-  0x3f, 0xe2, 0x81, 0xb3, 0xfd, 0x8e, 0x00, 0xbf, 0x73, 0xfd, 0x4a, 0xda,
-  0x1f, 0x53, 0x5c, 0xf9, 0xaf, 0x7e, 0xe6, 0x01, 0x63, 0x3a, 0xb4, 0xef,
-  0xd3, 0x12, 0x24, 0x46, 0xc6, 0x3b, 0x6f, 0x65, 0x2c, 0x83, 0x97, 0xe4,
-  0xa0, 0x9d, 0xad, 0xb0, 0xd9, 0xc5, 0x8b, 0xcb, 0xfb, 0x48, 0xfd, 0xb9,
-  0x8c, 0x53, 0x55, 0xa7, 0x98, 0x0b, 0xba, 0xb5, 0xf7, 0xa2, 0x1c, 0xa2,
-  0x33, 0x57, 0x5a, 0xc0, 0x02, 0xf4, 0xee, 0xee, 0xf2, 0xa6, 0x2b, 0x02,
-  0xc2, 0x1c, 0x20, 0x12, 0xb8, 0x83, 0xe6, 0x02, 0xa2, 0xfe, 0x76, 0x7b,
-  0xb5, 0x27, 0xa4, 0x19, 0x09, 0x78, 0xb4, 0xb0, 0xda, 0xad, 0xa6, 0x2a,
-  0x7a, 0x2d, 0x6b, 0xd7, 0xcd, 0xf3, 0xf9, 0xd9, 0xc5, 0xa5, 0x75, 0x0d,
-  0x9f, 0xc5, 0x0f, 0x5a, 0xe7, 0x87, 0xa9, 0xb0, 0x34, 0x44, 0x03, 0xc9,
-  0x22, 0x8b, 0x10, 0x59, 0xa5, 0xaa, 0x11, 0xca, 0xa2, 0xa0, 0x1d, 0x6b,
-  0x88, 0x6d, 0xb6, 0xf2, 0xc1, 0x30, 0x45, 0xae, 0x9e, 0xfd, 0x95, 0x63,
-  0x9f, 0x62, 0x01, 0xdd, 0x1d, 0x48, 0xf5, 0x3a, 0xcd, 0x93, 0xbd, 0x78,
-  0x77, 0xb0, 0xf1, 0x7c, 0x71, 0xcc, 0x75, 0x4e, 0x2f, 0x6f, 0xe4, 0x6f,
-  0x51, 0xdf, 0xc5, 0xbf, 0xab, 0x3f, 0xec, 0x86, 0x7f, 0x60, 0x77, 0x70,
-  0xd2, 0x06, 0xa3, 0xc0, 0xb9, 0x7d, 0xe7, 0x6f, 0x0e, 0xe6, 0xec, 0x49,
-  0x90, 0xa0, 0x0b, 0xb1, 0xa9, 0x7b, 0x05, 0xb9, 0xd4, 0xf8, 0x41, 0x4f,
-  0xbf, 0xd2, 0xa3, 0x5b, 0x57, 0x8e, 0x44, 0x51, 0xde, 0x06, 0x2d, 0x3c,
-  0xf5, 0x2d, 0x2c, 0x59, 0xbe, 0x6b, 0x03, 0x27, 0x16, 0xb7, 0xe6, 0x1f,
-  0x3a, 0x10, 0xe7, 0x75, 0xb6, 0xb0, 0x8d, 0x21, 0xcf, 0xf9, 0x76, 0x9e,
-  0xb9, 0x68, 0x8f, 0xe9, 0x47, 0x41, 0x57, 0xf8, 0xc7, 0x96, 0x19, 0x09,
-  0x00, 0x57, 0x6b, 0xdb, 0x3d, 0xf9, 0xcc, 0xdf, 0x10, 0x6c, 0x4a, 0x78,
-  0x04, 0x86, 0xce, 0x40, 0x70, 0x23, 0x31, 0x82, 0x25, 0x5f, 0xac, 0x40,
-  0x93, 0x48, 0x62, 0x62, 0xc6, 0x84, 0xad, 0x0a, 0xa1, 0x88, 0x02, 0xbe,
-  0x9a, 0xe3, 0xeb, 0xbf, 0xa3, 0x37, 0xd1, 0xc9, 0xe9, 0xb1, 0x5f, 0x2e,
-  0xe1, 0xa1, 0xc2, 0x61, 0xf6, 0x4a, 0x1e, 0x1d, 0xdc, 0x85, 0xbb, 0x2e,
-  0x86, 0xc9, 0x39, 0x17, 0x7a, 0x41, 0xf4, 0xa9, 0xfa, 0x77, 0xdf, 0x9a,
-  0x1c, 0x16, 0x38, 0x63, 0xe8, 0x02, 0x85, 0x53, 0x34, 0x5f, 0xd0, 0xea,
-  0xe2, 0x27, 0xfc, 0xd7, 0xa0, 0x46, 0x47, 0x34, 0xe4, 0xe7, 0xfe, 0xe5,
-  0x8a, 0xc6, 0x41, 0xa6, 0x5a, 0xfb, 0x91, 0xa7, 0xba, 0xb7, 0xc8, 0x8e,
-  0x93, 0x62, 0xc1, 0x26, 0x9e, 0xf9, 0x4c, 0x5b, 0x59, 0x69, 0x69, 0xe1,
-  0xca, 0x9e, 0x69, 0x88, 0xf1, 0xa0, 0x29, 0xb9, 0x14, 0x0e, 0x65, 0x9e,
-  0x80, 0x5f, 0xa7, 0x93, 0x33, 0x4e, 0x27, 0xb7, 0xd4, 0xd6, 0x82, 0x25,
-  0xee, 0xcc, 0xfc, 0xe5, 0x3e, 0xa1, 0x85, 0x25, 0x26, 0xbf, 0xa0, 0x94,
-  0x70, 0x71, 0xcd, 0xeb, 0x56, 0xd5, 0x9a, 0xa7, 0xb2, 0x1b, 0xdd, 0xd6,
-  0x71, 0xf7, 0x58, 0xa3, 0x77, 0xfc, 0x61, 0xe7, 0x0c, 0xc1, 0x6a, 0xb3,
-  0x6b, 0x08, 0x25, 0xdf, 0x83, 0xa6, 0x9e, 0xf9, 0xa6, 0xae, 0xc0, 0x86,
-  0x6c, 0xf2, 0xfd, 0xb0, 0x21, 0x83, 0x1c, 0x15, 0x72, 0xee, 0x9e, 0x14,
-  0x63, 0x41, 0x3c, 0xd4, 0x1d, 0xc7, 0x2a, 0xf8, 0x86, 0x6c, 0x86, 0xcb,
-  0x82, 0xb1, 0x08, 0x8b, 0x07, 0xcf, 0x01, 0x31, 0x14, 0x74, 0x9f, 0xf8,
-  0x20, 0x84, 0x17, 0xdc, 0xb1, 0x43, 0x88, 0xb5, 0xa9, 0x06, 0xfa, 0x3c,
-  0xfd, 0x10, 0x5d, 0xf5, 0xf3, 0xd5, 0x5c, 0x53, 0xdf, 0x83, 0x2f, 0x7d,
-  0xa1, 0xd6, 0xac, 0x56, 0x8d, 0x36, 0xfb, 0x2f, 0x14, 0xa6, 0x85, 0x0b,
-  0xe9, 0x5a, 0x2e, 0xc5, 0x42, 0x80, 0xaa, 0x95, 0x2b, 0xa3, 0xb1, 0x11,
-  0x87, 0x4e, 0xf8, 0x42, 0x56, 0x35, 0xd1, 0xe0, 0x86, 0x45, 0x40, 0x5c,
-  0xc8, 0xf3, 0xad, 0x8f, 0xc9, 0xaf, 0x2c, 0x5a, 0xd8, 0x11, 0x90, 0x29,
-  0xb3, 0xbf, 0xa2, 0x7a, 0xd5, 0x50, 0x2e, 0x1d, 0xe1, 0x0e, 0x92, 0x51,
-  0x32, 0xc4, 0xc0, 0x8b, 0xbc, 0xa7, 0xcf, 0xd5, 0x55, 0xa1, 0xa6, 0xb0,
-  0x95, 0x54, 0x6a, 0x7b, 0x9a, 0x9f, 0xed, 0xf9, 0x0c, 0x85, 0x2c, 0x2b,
-  0x37, 0x2b, 0x91, 0x0e, 0x41, 0xba, 0x39, 0x09, 0xb8, 0xd1, 0xe8, 0xdb,
-  0xe4, 0xcd, 0xab, 0x67, 0x9c, 0xf3, 0x78, 0x9d, 0x95, 0x5c, 0xad, 0xcc,
-  0xdb, 0x62, 0x67, 0xdf, 0x05, 0x8d, 0xed, 0x7b, 0x5c, 0x81, 0xd9, 0x4f,
-  0x2a, 0xd0, 0x54, 0xd3, 0xa6, 0x25, 0x64, 0xee, 0xb4, 0x6b, 0x0b, 0xa1,
-  0x58, 0x21, 0x1f, 0xa3, 0x14, 0x84, 0xee, 0xd2, 0x4e, 0x77, 0x68, 0x0a,
-  0xb1, 0x67, 0x4f, 0xbc, 0x10, 0xe3, 0xf2, 0xed, 0x05, 0x99, 0xd6, 0xd7,
-  0xac, 0x50, 0x77, 0x9c, 0xa8, 0x67, 0x22, 0x38, 0x8f, 0xe4, 0xdc, 0xb3,
-  0x32, 0x1b, 0xbf, 0x96, 0x56, 0x06, 0x48, 0x09, 0xde, 0x7b, 0x16, 0x9a,
-  0x93, 0xa4, 0x90, 0xe3, 0x5e, 0xa4, 0xf9, 0x43, 0xad, 0x3e, 0xd6, 0x54,
-  0x82, 0x67, 0x3f, 0x73, 0xcf, 0xb2, 0xef, 0x20, 0x5f, 0x04, 0x8c, 0xf1,
-  0x6b, 0xde, 0x50, 0x25, 0x58, 0x54, 0x03, 0xaf, 0x9e, 0x89, 0xde, 0x13,
-  0xcc, 0x7d, 0xf0, 0xca, 0xf3, 0xa6, 0xb5, 0x8c, 0x5a, 0x3d, 0xbe, 0xf2,
-  0x25, 0x0f, 0x2a, 0x5f, 0xde, 0x84, 0x87, 0xf3, 0x33, 0xb9, 0xa9, 0xcf,
-  0xdb, 0xec, 0x01, 0x26, 0x03, 0x1b, 0x81, 0x57, 0x3b, 0xea, 0xb2, 0xf5,
-  0x8f, 0x0e, 0x13, 0x7b, 0x25, 0xca, 0xd5, 0xe0, 0xbd, 0x1e, 0x7c, 0x64,
-  0x4f, 0xcf, 0x0c, 0x0d, 0xb9, 0xb8, 0x5e, 0xe4, 0x7f, 0xcf, 0x82, 0x74,
-  0x59, 0x63, 0xfb, 0x0f, 0x1e, 0xdf, 0x57, 0x81, 0x71, 0x97, 0xce, 0x72,
-  0x15, 0x8a, 0xec, 0x47, 0xf7, 0x0f, 0x3c, 0xd1, 0x5d, 0xfb, 0x21, 0xe7,
-  0x23, 0x2a, 0x18, 0x54, 0x2e, 0x1c, 0xc2, 0x11, 0x9c, 0xac, 0xc1, 0x46,
-  0xf1, 0xd9, 0x53, 0xd5, 0xbd, 0x4c, 0x3f, 0xe6, 0x7b, 0x09, 0x15, 0xc8,
-  0x39, 0xc0, 0x1d, 0x89, 0xe9, 0xcf, 0xf4, 0xea, 0xd3, 0xa5, 0x74, 0x8c,
-  0xff, 0xa5, 0x15, 0x39, 0xe0, 0xbf, 0xde, 0xe7, 0x0b, 0x4d, 0x40, 0x8a,
-  0x5e, 0xff, 0x6c, 0x8d, 0x0b, 0xaa, 0x92, 0x7b, 0xf3, 0x18, 0x7b, 0x29,
-  0x78, 0xfe, 0x73, 0x7f, 0x12, 0xa4, 0xa4, 0x86, 0x86, 0x64, 0x2d, 0x94,
-  0x0a, 0x54, 0x9c, 0x11, 0xad, 0xdb, 0x59, 0x62, 0xd3, 0x65, 0x69, 0x4c,
-  0x92, 0x1d, 0xb4, 0xd4, 0x57, 0xee, 0xf3, 0xb3, 0x82, 0xa5, 0x69, 0xf0,
-  0x3d, 0xd9, 0x52, 0xaf, 0x51, 0x7b, 0xc9, 0x1b, 0x08, 0x8b, 0x46, 0x95,
-  0x14, 0xff, 0xf4, 0x73, 0xdd, 0x1b, 0x76, 0x5f, 0x9a, 0x9a, 0xba, 0xf6,
-  0x8d, 0xcf, 0x77, 0x43, 0xa5, 0x75, 0xca, 0x9e, 0x7a, 0xe1, 0x01, 0x5c,
-  0xfb, 0x82, 0xec, 0x8c, 0x13, 0xba, 0x46, 0xae, 0x69, 0x53, 0xe3, 0x19,
-  0xcf, 0x7f, 0xe9, 0x1f, 0xdb, 0x6f, 0x08, 0xdd, 0xcb, 0x50, 0x85, 0x4a,
-  0x4e, 0x5e, 0x05, 0x0f, 0x3e, 0xf1, 0x03, 0x4c, 0x67, 0xac, 0x0d, 0x3c,
-  0x88, 0x27, 0xa2, 0xd2, 0x42, 0x35, 0xc1, 0xa3, 0x4f, 0x35, 0x89, 0x41,
-  0x52, 0xb7, 0x30, 0xfd, 0xd1, 0x33, 0xb2, 0x1d, 0x8e, 0x90, 0xf6, 0x55,
-  0x23, 0x6d, 0x7e, 0x61, 0xd1, 0x82, 0xf6, 0xda, 0x7f, 0xfe, 0xd9, 0x23,
-  0xcf, 0xea, 0xa5, 0x59, 0xb9, 0xab, 0x3e, 0x78, 0xef, 0xf3, 0xf8, 0x98,
-  0x9b, 0x59, 0x60, 0xe4, 0x1e, 0x74, 0xd4, 0xf8, 0xa4, 0x25, 0x5b, 0xcc,
-  0x0a, 0xf7, 0xef, 0xe6, 0xfa, 0x29, 0x39, 0xfd, 0xad, 0xfa, 0xf7, 0xb0,
-  0xbf, 0x5f, 0x04, 0x0c, 0x42, 0xea, 0xf4, 0x71, 0xe5, 0x12, 0xc3, 0x12,
-  0x4a, 0x1e, 0xab, 0x8d, 0xd9, 0x09, 0x5a, 0x90, 0x35, 0x27, 0x3d, 0x62,
-  0xb5, 0xf0, 0x92, 0x43, 0x8c, 0x41, 0xe5, 0x56, 0x34, 0xd4, 0xb4, 0xf6,
-  0xee, 0x5b, 0x5a, 0x54, 0xec, 0x8e, 0xc0, 0x79, 0xb6, 0xdb, 0x3a, 0x06,
-  0xd5, 0xcd, 0x4a, 0x4c, 0x6f, 0x37, 0x22, 0xcf, 0xe8, 0x13, 0xbc, 0xb6,
-  0xef, 0xa5, 0x17, 0xfa, 0x06, 0xad, 0xf1, 0x88, 0x7a, 0x2b, 0xb6, 0x79,
-  0x82, 0x6d, 0x68, 0x81, 0x0f, 0x94, 0x67, 0xf5, 0x8c, 0xa0, 0x5b, 0xe9,
-  0x9a, 0xec, 0x75, 0x25, 0xdc, 0x08, 0x3e, 0xa3, 0xaa, 0x0d, 0x43, 0xcd,
-  0x69, 0x95, 0x6e, 0xb2, 0xc9, 0xad, 0x1d, 0x19, 0x6d, 0xc4, 0xd3, 0x74,
-  0x04, 0x6f, 0x3d, 0x75, 0x53, 0x0b, 0xb3, 0xe6, 0xe2, 0xb8, 0x6d, 0x09,
-  0xf8, 0x47, 0x65, 0xd7, 0x5c, 0x5c, 0x8e, 0xce, 0x0f, 0xb8, 0xcf, 0x12,
-  0x82, 0xa1, 0x03, 0x71, 0x34, 0xca, 0xfe, 0xa6, 0x69, 0xb5, 0x95, 0x7f,
-  0xfa, 0xb3, 0x35, 0x4f, 0x8f, 0x14, 0x22, 0x75, 0x32, 0x65, 0xf1, 0x4b,
-  0xeb, 0x10, 0xbe, 0xf4, 0xb9, 0x26, 0xbd, 0x9b, 0x6b, 0x57, 0x3c, 0x47,
-  0xdc, 0x33, 0x97, 0x50, 0xe1, 0x1f, 0xfe, 0xc2, 0xdb, 0x35, 0x37, 0xab,
-  0xc5, 0xad, 0xd3, 0x17, 0x15, 0x70, 0x66, 0x0b, 0xec, 0x5e, 0xf8, 0xf1,
-  0x47, 0x91, 0xaf, 0x0e, 0x52, 0xa4, 0x6e, 0x7d, 0x57, 0xe4, 0x8f, 0x84,
-  0x91, 0x5c, 0xc9, 0xbc, 0xb5, 0xe1, 0x0b, 0x2f, 0xb3, 0x59, 0xc6, 0xbc,
-  0xc9, 0x62, 0x23, 0x60, 0x53, 0x75, 0xa5, 0x73, 0x31, 0x72, 0x56, 0x8a,
-  0x11, 0x67, 0x9a, 0xd7, 0xb2, 0x60, 0xb8, 0xa5, 0x3a, 0x8a, 0x68, 0xb6,
-  0x0f, 0xdf, 0x5d, 0x7e, 0x7b, 0x76, 0x31, 0x4a, 0x76, 0x98, 0xe0, 0xee,
-  0xf2, 0xe2, 0xe4, 0xeb, 0x77, 0x64, 0x7b, 0xbb, 0x90, 0xc8, 0xab, 0x94,
-  0xac, 0xf2, 0x59, 0x32, 0xaa, 0xb3, 0x05, 0xcd, 0xe1, 0xb5, 0x15, 0x92,
-  0x02, 0x70, 0x86, 0xef, 0xa9, 0xa2, 0xec, 0xbb, 0x5a, 0xa1, 0xf7, 0x37,
-  0x85, 0x4e, 0x04, 0xf2, 0x8e, 0x00, 0x96, 0xe7, 0x1c, 0x84, 0xc2, 0xdb,
-  0x95, 0x79, 0x93, 0xb4, 0x30, 0xb1, 0xc8, 0x66, 0x72, 0xf9, 0xed, 0xe1,
-  0xdb, 0xef, 0x46, 0xc6, 0xf0, 0xfd, 0xc3, 0x0f, 0x3f, 0x6c, 0x34, 0xf3,
-  0xf2, 0xa0, 0xda, 0xdd, 0xa4, 0x1f, 0x3e, 0x0c, 0xab, 0x6c, 0x63, 0xe3,
-  0xb5, 0x8f, 0x93, 0xf9, 0x32, 0x60, 0xd5, 0x8a, 0x6e, 0x75, 0xfa, 0xf5,
-  0xce, 0x72, 0x35, 0xe6, 0xb2, 0x63, 0x3b, 0xab, 0x3a, 0x9f, 0xd1, 0x65,
-  0x90, 0x55, 0x78, 0x7b, 0x67, 0x63, 0x63, 0x74, 0x7c, 0x9c, 0x1c, 0x9e,
-  0x8e, 0xce, 0x82, 0x77, 0xb7, 0xf6, 0x18, 0x35, 0x72, 0x9d, 0xd5, 0x5b,
-  0xcc, 0x15, 0x79, 0x7a, 0x78, 0xc9, 0xf6, 0xe6, 0xf7, 0xc7, 0x17, 0xa3,
-  0x93, 0xb3, 0xb7, 0xbc, 0x3a, 0x0c, 0xee, 0x4b, 0x67, 0xf7, 0x8c, 0xed,
-  0xbc, 0xca, 0x41, 0xdc, 0x71, 0x6f, 0x35, 0xbd, 0x98, 0x81, 0x98, 0xd4,
-  0x32, 0xd1, 0xa0, 0x05, 0xc2, 0x60, 0xc5, 0x84, 0x05, 0xc2, 0x5a, 0xb3,
-  0xd1, 0xa7, 0x02, 0x89, 0x67, 0xc0, 0xf9, 0x9c, 0xa4, 0xd0, 0x56, 0x36,
-  0x16, 0xd0, 0x70, 0x5f, 0xd2, 0xdd, 0x91, 0xb4, 0x11, 0x60, 0x0c, 0x3b,
-  0x07, 0x3e, 0x3a, 0x79, 0x73, 0x4e, 0xd6, 0xd7, 0xbb, 0xd1, 0xe1, 0x37,
-  0xc7, 0xfc, 0xe8, 0x37, 0x59, 0xed, 0xd7, 0x43, 0x6a, 0x8f, 0xf1, 0x47,
-  0xde, 0x66, 0x75, 0x35, 0x49, 0x97, 0x9c, 0x91, 0x4d, 0x9f, 0x19, 0xc8,
-  0x1d, 0x10, 0xb4, 0x2d, 0x7a, 0xb8, 0x2f, 0xd0, 0xb6, 0xd0, 0xe7, 0x51,
-  0x3d, 0x2d, 0x6c, 0xf7, 0xe2, 0xf8, 0xf0, 0xd5, 0x9b, 0x63, 0x83, 0x9d,
-  0x0b, 0xdd, 0x3d, 0x35, 0x7a, 0x53, 0x70, 0xbd, 0x5c, 0xe7, 0x87, 0xe6,
-  0x7b, 0x99, 0x27, 0x9f, 0x7e, 0xc3, 0xe5, 0xcb, 0xba, 0x3f, 0xe7, 0x17,
-  0x0a, 0xcf, 0x0e, 0xaf, 0xf2, 0x1d, 0x69, 0xdd, 0xbe, 0x97, 0xba, 0x29,
-  0x31, 0x5e, 0x63, 0x55, 0x55, 0xc5, 0x9f, 0x00, 0x47, 0xc4, 0x17, 0xbb,
-  0xbb, 0xbb, 0x8f, 0x8c, 0x03, 0xba, 0xbc, 0xde, 0x78, 0x34, 0x94, 0x03,
-  0x7e, 0x7c, 0xc7, 0xb7, 0xef, 0x7b, 0x3c, 0xd3, 0xf4, 0x77, 0x2e, 0x10,
-  0xb3, 0x10, 0xa2, 0xce, 0xbc, 0xce, 0xba, 0xbb, 0x3c, 0x29, 0x0a, 0xb7,
-  0x02, 0x8d, 0xc9, 0x99, 0x32, 0x15, 0x75, 0x5e, 0x07, 0x28, 0x5c, 0xeb,
-  0x38, 0xd9, 0x1e, 0xc0, 0x98, 0x95, 0x0f, 0xed, 0x26, 0xf9, 0x37, 0xd4,
-  0x26, 0xff, 0x67, 0x58, 0x94, 0xd7, 0x3b, 0xf3, 0x03, 0xa8, 0x13, 0xf4,
-  0xd0, 0xeb, 0x0c, 0x55, 0x87, 0xef, 0x0b, 0x07, 0xb5, 0xae, 0x78, 0x62,
-  0x39, 0x2b, 0xe4, 0x13, 0xfa, 0xf5, 0x2b, 0x66, 0x41, 0xd0, 0x48, 0x57,
-  0x36, 0xf2, 0x51, 0xb2, 0x76, 0xbd, 0x2a, 0x5e, 0x30, 0xf6, 0xf6, 0x0d,
-  0x49, 0x80, 0xd0, 0x57, 0x18, 0x31, 0x86, 0x2d, 0x42, 0x7f, 0x2d, 0x69,
-  0xcb, 0x0c, 0xeb, 0x0f, 0x90, 0x79, 0x5a, 0xed, 0x4a, 0x88, 0xe6, 0x38,
-  0x7a, 0xba, 0xe4, 0xa4, 0xb9, 0x12, 0x28, 0x42, 0x7c, 0x81, 0x13, 0xf1,
-  0x94, 0xb7, 0xda, 0xe1, 0x6f, 0xb8, 0xe1, 0xf6, 0x37, 0x07, 0x03, 0xec,
-  0x9f, 0xca, 0xed, 0x96, 0x4f, 0xf8, 0x78, 0x30, 0x28, 0x99, 0xfd, 0x85,
-  0x5e, 0x91, 0xc1, 0xde, 0x19, 0x51, 0x2f, 0xa2, 0x6f, 0xad, 0x7c, 0x51,
-  0xb2, 0x4a, 0x3e, 0x57, 0xdd, 0xd0, 0xf9, 0x1d, 0x6a, 0x72, 0x20, 0xbe,
-  0x45, 0x6b, 0xb2, 0x83, 0x0c, 0xa9, 0x4f, 0xfe, 0xd2, 0xd1, 0xb9, 0x2b,
-  0xb3, 0x4e, 0x33, 0x70, 0xc7, 0x53, 0x70, 0x9b, 0x61, 0xf4, 0xa1, 0x5a,
-  0xff, 0x48, 0x67, 0x0e, 0x68, 0x16, 0xf8, 0x8d, 0xff, 0xb5, 0x33, 0xac,
-  0xaa, 0x9b, 0x9d, 0x7c, 0xfa, 0x7e, 0x5a, 0xa5, 0x0c, 0x48, 0x5a, 0x8d,
-  0xa3, 0x1f, 0x0f, 0xe9, 0x87, 0xc9, 0xcf, 0x0d, 0xa9, 0x5f, 0x4d, 0xba,
-  0x47, 0xf2, 0xbf, 0x76, 0x18, 0x5a, 0x8a, 0x1a, 0x2d, 0xc1, 0xc4, 0x75,
-  0xc8, 0x0e, 0x1a, 0x95, 0xa0, 0x98, 0xe9, 0x30, 0x76, 0xef, 0x8c, 0xc1,
-  0x75, 0xd2, 0xd3, 0xed, 0xf6, 0xd3, 0xfe, 0xee, 0xee, 0xde, 0xc1, 0xde,
-  0x17, 0xcf, 0x77, 0x0f, 0xf6, 0xf6, 0xf6, 0xf6, 0x0f, 0xf6, 0x0e, 0x0e,
-  0xf6, 0x77, 0x7f, 0xd9, 0xe9, 0x6d, 0x6c, 0xbc, 0x3a, 0xfb, 0xe1, 0xed,
-  0xe9, 0xd9, 0xe1, 0xab, 0xe4, 0xf2, 0x2c, 0x39, 0x84, 0xcf, 0xa8, 0xe3,
-  0x9c, 0x03, 0x3a, 0xc9, 0x79, 0x70, 0x92, 0xad, 0x1f, 0x14, 0xad, 0x55,
-  0x07, 0x87, 0x83, 0xcd, 0x60, 0x66, 0xda, 0xfd, 0x28, 0x60, 0x13, 0x70,
-  0x4b, 0xc3, 0x9b, 0x7a, 0xfe, 0x71, 0x89, 0xf6, 0x29, 0x5f, 0xee, 0x4b,
-  0x18, 0xd7, 0x9b, 0x7d, 0xe8, 0x8e, 0xed, 0x5c, 0x4d, 0x36, 0xd1, 0x60,
-  0x88, 0x86, 0x40, 0x5d, 0x6a, 0xc4, 0x96, 0x80, 0x7e, 0x7c, 0xa1, 0x55,
-  0xa9, 0xe1, 0xdb, 0x02, 0x96, 0xb8, 0x9a, 0x9a, 0x1a, 0x63, 0xc7, 0x1d,
-  0xcf, 0x0a, 0xcd, 0x76, 0x34, 0xc0, 0xb3, 0xb5, 0x43, 0xa2, 0xbb, 0x28,
-  0xfb, 0x80, 0x51, 0x37, 0x65, 0x87, 0x80, 0x67, 0xfd, 0xe8, 0xc0, 0x3c,
-  0x6e, 0x86, 0x6c, 0x5e, 0x5a, 0x97, 0x81, 0x0e, 0xea, 0xf8, 0x1c, 0x7f,
-  0xc7, 0x44, 0x8a, 0xff, 0x04, 0xff, 0x26, 0xbc, 0x87, 0x76, 0x9c, 0x6f,
-  0x50, 0x3a, 0xf0, 0x6e, 0x74, 0xf2, 0xf6, 0x1b, 0x44, 0xff, 0x7e, 0x38,
-  0xbb, 0x78, 0x35, 0xa2, 0x66, 0xf9, 0x82, 0xde, 0x80, 0x7b, 0x88, 0x4f,
-  0xb2, 0xf6, 0x4a, 0xce, 0x05, 0x7f, 0xfa, 0x4f, 0xb0, 0xb6, 0x98, 0xc8,
-  0x44, 0x53, 0xac, 0xd1, 0xcd, 0x40, 0x59, 0xe6, 0xbc, 0xe9, 0x6e, 0xa9,
-  0x87, 0x8d, 0x20, 0xaf, 0x7f, 0x35, 0x4f, 0xb9, 0x40, 0x46, 0x36, 0x14,
-  0x20, 0x2f, 0x60, 0x5a, 0x3b, 0x9c, 0x1c, 0xb1, 0xc3, 0x4a, 0xfb, 0x4e,
-  0x5d, 0x40, 0x7e, 0xa0, 0x95, 0xa2, 0x74, 0xd8, 0xa0, 0xc6, 0x8c, 0xf0,
-  0xc1, 0xbb, 0x9a, 0xa5, 0xd7, 0xf8, 0x60, 0x7c, 0x26, 0x83, 0x8f, 0xe9,
-  0xe7, 0x3f, 0xf5, 0x93, 0x2c, 0xf6, 0xd0, 0xde, 0x09, 0x36, 0x00, 0x28,
-  0x91, 0x90, 0x0c, 0xae, 0x51, 0x0b, 0xd1, 0x9a, 0x50, 0x8a, 0x99, 0xe1,
-  0x20, 0x5c, 0xb9, 0xaf, 0x5d, 0x00, 0x05, 0xb5, 0xf0, 0x84, 0x45, 0x81,
-  0xf4, 0xf7, 0x41, 0x40, 0x27, 0x22, 0x86, 0x0d, 0xb7, 0x14, 0x38, 0x10,
-  0x2a, 0x0f, 0x69, 0xf3, 0x65, 0x2e, 0x64, 0xca, 0xb9, 0x33, 0xe0, 0x36,
-  0xa8, 0x0c, 0x2b, 0xa5, 0x6a, 0x5c, 0x8f, 0xeb, 0xcf, 0x30, 0xd8, 0xa1,
-  0x67, 0xdc, 0x16, 0x9e, 0x30, 0xdf, 0xd3, 0x4a, 0x57, 0x35, 0x75, 0x25,
-  0xa5, 0x2b, 0x45, 0x6b, 0xf3, 0x2a, 0x5b, 0x2e, 0xa9, 0xe2, 0x92, 0x6b,
-  0xda, 0x33, 0xc8, 0x84, 0xb4, 0x42, 0x6d, 0x83, 0x73, 0xd8, 0x25, 0x8d,
-  0xb3, 0xf0, 0x15, 0x66, 0x85, 0x0d, 0x0d, 0x47, 0x7b, 0x39, 0xef, 0xdd,
-  0x5e, 0x2c, 0xa3, 0x49, 0x09, 0x25, 0x01, 0x2a, 0x3b, 0x47, 0x13, 0x23,
-  0x83, 0x9a, 0x67, 0x8d, 0x69, 0x0b, 0x8b, 0xfc, 0x46, 0xa2, 0xb6, 0x99,
-  0x0f, 0xbd, 0x81, 0x6c, 0x28, 0x87, 0x95, 0x0e, 0xa6, 0x47, 0x00, 0x59,
-  0xfe, 0x55, 0x5e, 0x8b, 0xbc, 0xae, 0xb2, 0xd9, 0x95, 0x72, 0x9c, 0x68,
-  0x49, 0xfa, 0xf1, 0x43, 0xd0, 0xc0, 0x86, 0xa5, 0xaf, 0x70, 0x4c, 0x6d,
-  0xe1, 0xd2, 0xfe, 0x0b, 0x95, 0x19, 0xd7, 0x90, 0xa6, 0x4a, 0x9a, 0xd2,
-  0x14, 0x14, 0x12, 0x35, 0x1b, 0x5a, 0xb9, 0xa2, 0x8d, 0xc4, 0x95, 0x2c,
-  0x69, 0x0d, 0xc1, 0x55, 0x71, 0x00, 0x95, 0x3e, 0x76, 0x47, 0xf0, 0xe0,
-  0x6a, 0x4c, 0xb3, 0xed, 0x9e, 0xe3, 0xb9, 0x03, 0x70, 0x8c, 0x9b, 0x3b,
-  0x0a, 0xab, 0x0f, 0x0b, 0x6e, 0x72, 0x15, 0x31, 0xb9, 0xe4, 0xca, 0x87,
-  0x43, 0x07, 0x0d, 0xe9, 0x56, 0xab, 0xca, 0xcd, 0x28, 0x4a, 0x1b, 0xa5,
-  0xae, 0xc6, 0x76, 0xd7, 0x31, 0x54, 0x89, 0xb4, 0xfe, 0x1c, 0x7e, 0xfc,
-  0x08, 0xc6, 0x5d, 0x32, 0x3b, 0x60, 0xf6, 0x20, 0xa7, 0x24, 0x5f, 0x3c,
-  0x7e, 0x18, 0xb5, 0x13, 0x9f, 0xf4, 0x61, 0x8c, 0x55, 0xc9, 0x17, 0xe0,
-  0xaa, 0xf6, 0x88, 0x2e, 0x89, 0x8e, 0x23, 0x05, 0xa1, 0x23, 0xc1, 0xa4,
-  0x81, 0x3f, 0xc5, 0x41, 0x90, 0x44, 0xb5, 0x83, 0xe4, 0xeb, 0xb4, 0xca,
-  0x27, 0xfd, 0xe4, 0x55, 0x7e, 0x0d, 0x36, 0x00, 0x97, 0x06, 0xe0, 0x92,
-  0x27, 0x86, 0xc9, 0x0f, 0xca, 0xa3, 0xcc, 0x09, 0xec, 0xe0, 0x41, 0x84,
-  0x5b, 0xb5, 0x11, 0x8e, 0xa7, 0x69, 0x50, 0x97, 0x78, 0x58, 0x6e, 0x15,
-  0x6d, 0xfb, 0x32, 0x11, 0x58, 0xcc, 0xb4, 0xba, 0x6d, 0x56, 0x9f, 0x72,
-  0x9c, 0xbe, 0xa2, 0x17, 0x61, 0x7e, 0x17, 0x5a, 0x02, 0x50, 0xf7, 0x1c,
-  0xfe, 0xed, 0x76, 0xb9, 0x55, 0x7a, 0x83, 0x23, 0xab, 0x52, 0x88, 0x97,
-  0x05, 0xe2, 0x71, 0x1b, 0xd9, 0x71, 0xdd, 0x40, 0xd6, 0x3e, 0xcd, 0x13,
-  0xcf, 0x88, 0xca, 0x93, 0xb3, 0xcb, 0xe3, 0x7f, 0x49, 0x0e, 0xdb, 0x71,
-  0x48, 0x16, 0xd4, 0x0d, 0xfa, 0x8d, 0xbe, 0xdf, 0x57, 0xe8, 0xbb, 0xa0,
-  0xba, 0xa4, 0x5a, 0x4a, 0xea, 0xb2, 0x22, 0xc2, 0x85, 0x67, 0xfa, 0x17,
-  0x05, 0xa9, 0xa2, 0xf8, 0xb4, 0x4b, 0xa1, 0x86, 0x77, 0x16, 0x6c, 0x25,
-  0x22, 0x43, 0x24, 0x6d, 0x2e, 0x4f, 0x05, 0x24, 0xcc, 0x54, 0x47, 0xa8,
-  0x16, 0x8d, 0xa3, 0x08, 0x3c, 0xab, 0xd6, 0xdd, 0x06, 0x97, 0x50, 0x5e,
-  0x43, 0x73, 0x46, 0xa4, 0x5d, 0x0b, 0x3f, 0xfd, 0xe0, 0x9b, 0x4a, 0x43,
-  0xd6, 0xa9, 0xf7, 0x7c, 0xc2, 0xde, 0x9b, 0x9c, 0xd5, 0x1b, 0x41, 0xfa,
-  0xa2, 0x45, 0x5c, 0x9b, 0x3b, 0xd5, 0x4e, 0x9b, 0x08, 0xf7, 0x73, 0x43,
-  0x74, 0x61, 0x2d, 0x26, 0x20, 0x14, 0x99, 0x3d, 0x48, 0x00, 0x12, 0x57,
-  0x8c, 0x1d, 0xea, 0x50, 0x4e, 0x83, 0xa5, 0x09, 0xc4, 0x24, 0x28, 0x8c,
-  0xa8, 0x75, 0x49, 0x04, 0x3f, 0x4b, 0xad, 0x36, 0x51, 0xcf, 0xc8, 0x83,
-  0xc0, 0xac, 0x72, 0x2f, 0x84, 0xe9, 0x26, 0x44, 0x5d, 0x53, 0x6b, 0xf8,
-  0x90, 0x15, 0xe0, 0x6b, 0xed, 0xe3, 0xe1, 0x06, 0x5f, 0x40, 0xce, 0xf5,
-  0x84, 0xe2, 0x93, 0xae, 0xe2, 0x47, 0x00, 0xf7, 0x7b, 0xed, 0xe8, 0xb1,
-  0xb4, 0x59, 0x2e, 0x43, 0x36, 0xc9, 0x82, 0x64, 0x87, 0x05, 0x6d, 0x59,
-  0x7f, 0x11, 0xc8, 0xfe, 0x29, 0x2a, 0x2d, 0x40, 0x99, 0x0b, 0x77, 0x92,
-  0x14, 0x2d, 0x1a, 0x67, 0xc2, 0x24, 0xce, 0xc5, 0x26, 0xb0, 0x8a, 0x60,
-  0xa7, 0xe3, 0x83, 0x27, 0x3b, 0x73, 0x8e, 0xcd, 0xbd, 0xe1, 0x77, 0x37,
-  0x4b, 0xeb, 0x75, 0xe3, 0xe4, 0x2c, 0x45, 0xde, 0x6e, 0xe6, 0x7a, 0x14,
-  0x4d, 0x82, 0xb5, 0xe9, 0x85, 0x96, 0xbf, 0x81, 0x2f, 0x40, 0x7b, 0xcd,
-  0xab, 0x03, 0x45, 0x6f, 0xe1, 0xd4, 0x0e, 0x5b, 0xf4, 0x06, 0x07, 0x18,
-  0x8b, 0x92, 0x69, 0x32, 0x7f, 0x50, 0x94, 0xbf, 0x5e, 0x95, 0x9c, 0x88,
-  0x0e, 0x23, 0xf3, 0x8b, 0x2f, 0x22, 0xd5, 0xe8, 0x83, 0x7b, 0xfa, 0x80,
-  0x7e, 0x1d, 0x18, 0xb3, 0x33, 0x8e, 0xd9, 0x5b, 0x51, 0x73, 0x6f, 0xd1,
-  0x76, 0xd8, 0x0a, 0x01, 0x99, 0x8e, 0x7c, 0xd1, 0xb9, 0xb8, 0xa3, 0x5d,
-  0xd6, 0xf7, 0xa9, 0x08, 0x1b, 0x62, 0x2d, 0x69, 0x55, 0xbc, 0x4a, 0xb0,
-  0x1f, 0x6b, 0xcc, 0x07, 0x93, 0x8e, 0xed, 0xde, 0x06, 0x4a, 0x24, 0x29,
-  0xb2, 0x43, 0xd6, 0x3b, 0x59, 0x27, 0x1e, 0x15, 0xda, 0x30, 0x4f, 0xb2,
-  0x76, 0xc6, 0xed, 0x8e, 0xd6, 0x3e, 0x72, 0xd5, 0xde, 0xdc, 0xad, 0x3e,
-  0x78, 0xb7, 0xbe, 0x3b, 0xef, 0x7e, 0x4b, 0x77, 0x0e, 0x93, 0x47, 0xd1,
-  0xee, 0x5a, 0xbc, 0x8f, 0x05, 0x7d, 0x65, 0x79, 0x3e, 0x05, 0x76, 0xb5,
-  0xd9, 0x9e, 0x32, 0x47, 0x13, 0x8e, 0x53, 0x8d, 0x9b, 0x75, 0x7c, 0x62,
-  0x3b, 0x73, 0x51, 0xc8, 0xd3, 0xd0, 0xf1, 0xb9, 0xfd, 0xbe, 0x75, 0xe5,
-  0x53, 0xbb, 0x6b, 0xc4, 0x7d, 0x96, 0xce, 0xd2, 0x42, 0xaa, 0x6b, 0x06,
-  0xc9, 0xde, 0x70, 0x37, 0x64, 0x66, 0x71, 0x79, 0x25, 0x25, 0x28, 0x06,
-  0x6b, 0x70, 0xb4, 0xf8, 0xba, 0xeb, 0x3c, 0x12, 0xe4, 0xfd, 0xb7, 0x5e,
-  0xd3, 0x9f, 0xed, 0x09, 0xed, 0x2a, 0x9d, 0x24, 0xad, 0x45, 0xc1, 0x34,
-  0x1f, 0xd9, 0x7c, 0x09, 0xfc, 0xbd, 0x49, 0xc0, 0xf0, 0xee, 0xc7, 0x39,
-  0x7a, 0xea, 0x8f, 0xd4, 0x33, 0xb7, 0xdc, 0xda, 0x47, 0x81, 0x67, 0x6b,
-  0x29, 0x4f, 0x41, 0x48, 0x43, 0x17, 0xcb, 0x32, 0x69, 0xa9, 0x5e, 0x9b,
-  0x27, 0x74, 0xd4, 0xcc, 0xe6, 0xe3, 0xfd, 0x8c, 0x3b, 0x36, 0xb9, 0x5a,
-  0x95, 0x10, 0xbc, 0x4a, 0x90, 0xa6, 0x94, 0x19, 0xdc, 0x2a, 0x43, 0x1d,
-  0x3b, 0x24, 0x0d, 0xb2, 0x59, 0xb9, 0x44, 0x38, 0x2a, 0xa8, 0xaa, 0xb3,
-  0x13, 0xe9, 0xfd, 0x5a, 0x4e, 0xc9, 0x87, 0x31, 0x9c, 0x0b, 0x8d, 0xda,
-  0x9d, 0xe5, 0xd4, 0xa1, 0x4d, 0x70, 0x47, 0xf0, 0xd4, 0x33, 0xd6, 0x5f,
-  0x65, 0xa1, 0xe3, 0x8e, 0x33, 0xc6, 0x5d, 0x24, 0x02, 0xcd, 0x80, 0x3a,
-  0xed, 0xac, 0xce, 0xd2, 0x16, 0xba, 0x72, 0x0d, 0xf4, 0x93, 0xc1, 0x7f,
-  0xd7, 0x99, 0x61, 0x6d, 0x95, 0x61, 0x38, 0xa0, 0x64, 0x5f, 0x06, 0x6c,
-  0x83, 0x9a, 0x2d, 0x05, 0x81, 0xcf, 0x97, 0xba, 0x8d, 0xc3, 0x25, 0x37,
-  0x5a, 0xba, 0x05, 0xe4, 0xdf, 0xeb, 0x80, 0x38, 0x0c, 0xf9, 0xa0, 0x6a,
-  0xa0, 0xf7, 0x4d, 0x54, 0x48, 0x73, 0x1b, 0x8e, 0xe3, 0x5d, 0x60, 0x57,
-  0x51, 0x87, 0xdd, 0x45, 0xf6, 0x35, 0x57, 0xc1, 0x3a, 0x2a, 0xd2, 0x70,
-  0x5a, 0x7d, 0x15, 0x1d, 0xed, 0xa9, 0x6c, 0x7e, 0x93, 0x13, 0x3d, 0xc9,
-  0xf8, 0x1b, 0xd0, 0x0b, 0x83, 0x77, 0xea, 0x72, 0xf8, 0x4a, 0xbe, 0x30,
-  0x84, 0x17, 0x55, 0xbe, 0x70, 0x8e, 0xea, 0x9e, 0xf6, 0xc0, 0x81, 0xbe,
-  0xc4, 0x69, 0x82, 0x3d, 0x75, 0x38, 0x34, 0x67, 0x45, 0x9e, 0xb7, 0x34,
-  0x42, 0xae, 0x1a, 0x89, 0x21, 0x0c, 0xc4, 0x37, 0xce, 0x87, 0x4c, 0xfe,
-  0x2a, 0xef, 0xaa, 0x2d, 0xf5, 0xc0, 0x4d, 0x0c, 0x05, 0xc0, 0xac, 0xae,
-  0x86, 0xfd, 0xbd, 0x1d, 0xe9, 0xcc, 0x8e, 0x34, 0x20, 0xea, 0x9c, 0x6e,
-  0x49, 0x1f, 0x4f, 0x37, 0x96, 0x94, 0xf0, 0xe6, 0x62, 0xb8, 0x35, 0xe3,
-  0x20, 0xe6, 0x0a, 0xe2, 0x44, 0xa0, 0x82, 0xaf, 0x26, 0xba, 0x6b, 0xa5,
-  0xda, 0x46, 0xa1, 0xeb, 0xb3, 0xe1, 0x17, 0xa8, 0xef, 0x34, 0x3d, 0xda,
-  0x4a, 0x83, 0xbb, 0x00, 0x07, 0xc0, 0x49, 0x75, 0xe0, 0xfe, 0xe3, 0x0a,
-  0x81, 0x2e, 0x1d, 0x89, 0x0f, 0xba, 0x84, 0x2a, 0x69, 0x47, 0x5f, 0x1c,
-  0xbe, 0xfd, 0xe6, 0x18, 0x9a, 0x00, 0x64, 0x3b, 0x1f, 0xd0, 0x9c, 0x77,
-  0xfb, 0x74, 0x35, 0x81, 0xd1, 0x40, 0x33, 0x06, 0x18, 0x51, 0x35, 0xd4,
-  0x4c, 0x35, 0xc1, 0x82, 0xa7, 0xba, 0x79, 0xb1, 0xdc, 0x0a, 0x0e, 0xda,
-  0x48, 0xcc, 0x41, 0x06, 0x0d, 0x82, 0xed, 0x27, 0x66, 0x0e, 0x2e, 0x90,
-  0xe9, 0x3d, 0x5e, 0xa6, 0x4a, 0xa3, 0x91, 0x86, 0x3c, 0x0b, 0xea, 0x76,
-  0x18, 0x36, 0xcf, 0xe2, 0x86, 0x65, 0x0a, 0x38, 0x13, 0xb7, 0x84, 0x89,
-  0x3b, 0x0c, 0x7d, 0x3e, 0x42, 0x2e, 0xb0, 0xb7, 0xbb, 0xeb, 0x6b, 0x29,
-  0x78, 0xbe, 0x88, 0x48, 0x5a, 0x96, 0xc9, 0xee, 0xe0, 0xf9, 0xf3, 0x75,
-  0x82, 0xd0, 0x35, 0x0a, 0xd2, 0x86, 0x67, 0x9f, 0xdc, 0xe6, 0x80, 0x1f,
-  0x5d, 0xd7, 0x66, 0x87, 0x21, 0x83, 0x62, 0xa9, 0x0a, 0xcc, 0xaa, 0x9c,
-  0xd6, 0xa2, 0x0e, 0x0f, 0xf1, 0xbd, 0x23, 0x16, 0xb2, 0x70, 0xd6, 0x0c,
-  0x4f, 0xe5, 0x86, 0xe7, 0x2c, 0x04, 0x67, 0x80, 0xf9, 0x46, 0x96, 0x8c,
-  0xcd, 0xca, 0x5d, 0x38, 0xec, 0x93, 0x26, 0x26, 0xb0, 0x67, 0xd7, 0x4c,
-  0xd1, 0x55, 0x3c, 0x1a, 0x53, 0x09, 0xde, 0x9d, 0xb3, 0x3b, 0xec, 0xe4,
-  0xed, 0x37, 0xe2, 0x1d, 0x20, 0x53, 0x17, 0xae, 0xd1, 0x9d, 0x96, 0xe1,
-  0xfb, 0x4e, 0x8a, 0x22, 0x30, 0x32, 0x0f, 0x71, 0x70, 0xa9, 0x6b, 0x98,
-  0x2f, 0x44, 0x14, 0xf8, 0xd5, 0x5f, 0xe3, 0x9a, 0xbb, 0x4c, 0x06, 0x81,
-  0x72, 0xa2, 0x15, 0x11, 0x58, 0x33, 0x99, 0x3f, 0x98, 0x41, 0xa4, 0x5f,
-  0x40, 0xeb, 0xe6, 0x68, 0x77, 0xcd, 0x8a, 0x0b, 0x4c, 0xac, 0x58, 0xec,
-  0xa0, 0x48, 0x37, 0xe9, 0xf8, 0xa4, 0x7c, 0x06, 0xe7, 0xbb, 0xa5, 0x89,
-  0x7c, 0x5a, 0x57, 0x1a, 0x9e, 0xbf, 0x66, 0x0d, 0x2d, 0xd6, 0xac, 0xfa,
-  0xe6, 0x0a, 0x69, 0x7b, 0xe5, 0xa4, 0xee, 0x6e, 0x28, 0xd5, 0x79, 0xb5,
-  0x51, 0x70, 0xaf, 0x28, 0xfe, 0xeb, 0xfd, 0x7c, 0xa4, 0x87, 0x7c, 0x50,
-  0xf9, 0xa6, 0x5a, 0x4c, 0xbd, 0xe9, 0xaf, 0x3d, 0xee, 0xf4, 0x6b, 0x5f,
-  0xca, 0xfb, 0xf2, 0xe9, 0xb4, 0xfb, 0x73, 0xf2, 0xbe, 0x4d, 0x4d, 0xc7,
-  0x01, 0x60, 0x95, 0x56, 0x6b, 0x66, 0xb8, 0x2c, 0x3e, 0xb3, 0x65, 0x58,
-  0x0b, 0x87, 0xe4, 0xc8, 0x9b, 0x6a, 0xc9, 0x46, 0xa2, 0xa9, 0xc2, 0x28,
-  0xa8, 0xc1, 0x7b, 0x08, 0x0c, 0xcb, 0xb8, 0xbc, 0x6e, 0x81, 0xb1, 0xbb,
-  0x52, 0x3a, 0x59, 0xd4, 0x88, 0x3d, 0x71, 0x44, 0x3c, 0x9e, 0x94, 0xb7,
-  0x5c, 0x2d, 0x54, 0xf6, 0xb1, 0xbd, 0x45, 0x9d, 0x4f, 0xab, 0x1b, 0x94,
-  0x28, 0x75, 0x9e, 0x99, 0x58, 0xbd, 0xc2, 0xe7, 0x95, 0x61, 0x96, 0xf4,
-  0x29, 0x51, 0xa6, 0xa0, 0x5c, 0x37, 0xa6, 0xa2, 0x39, 0x03, 0x81, 0x23,
-  0xe3, 0x53, 0x4f, 0x81, 0xe8, 0xd4, 0x1d, 0xa1, 0x1b, 0x1c, 0x84, 0x40,
-  0xb8, 0x74, 0x6e, 0xbf, 0xa6, 0x23, 0x28, 0xd4, 0xcf, 0xe1, 0x77, 0x81,
-  0xb5, 0x04, 0x4e, 0xa4, 0xd6, 0x14, 0xc2, 0x88, 0x06, 0x69, 0xa2, 0x50,
-  0x24, 0x99, 0xc8, 0x55, 0x6d, 0x00, 0xde, 0x2f, 0x5f, 0x92, 0x63, 0x26,
-  0x30, 0x7b, 0xbe, 0xef, 0xc5, 0x24, 0x45, 0x34, 0x51, 0x92, 0x83, 0xf0,
-  0x4d, 0x8c, 0x50, 0x3a, 0x28, 0xb9, 0xdc, 0x35, 0x40, 0xbb, 0xa3, 0x4b,
-  0xb6, 0xee, 0x71, 0x1d, 0x99, 0x8d, 0xf8, 0xfd, 0xf1, 0xc5, 0xd7, 0x67,
-  0xa3, 0x63, 0x92, 0x16, 0xaf, 0x8e, 0xbf, 0x7e, 0xc7, 0x92, 0x84, 0x57,
-  0x4c, 0xbc, 0xa3, 0xe0, 0xbc, 0x94, 0x44, 0x5b, 0xf0, 0x24, 0x31, 0x1a,
-  0x09, 0x5b, 0x47, 0x74, 0x93, 0xbe, 0xed, 0x0c, 0x53, 0xbb, 0x84, 0x3e,
-  0x72, 0x96, 0x89, 0x3b, 0x2d, 0x07, 0xc6, 0xda, 0x73, 0x0c, 0x33, 0x94,
-  0x69, 0xc1, 0xe4, 0xda, 0xb5, 0x71, 0xd7, 0x58, 0xa1, 0xb4, 0xea, 0xc0,
-  0x13, 0x18, 0xde, 0x89, 0xf3, 0x54, 0x0f, 0x84, 0x2f, 0x68, 0x6c, 0xa5,
-  0x8b, 0xf5, 0x6a, 0x82, 0x6e, 0xab, 0x3c, 0x7f, 0xb3, 0x42, 0x6e, 0x32,
-  0x66, 0xca, 0xc1, 0xb9, 0xc6, 0xdd, 0x9a, 0xd7, 0xb8, 0x56, 0x45, 0xc9,
-  0xd7, 0x32, 0xc2, 0x95, 0x6c, 0x38, 0x12, 0x39, 0x92, 0x55, 0x3b, 0x53,
-  0x11, 0x0d, 0x89, 0x54, 0x65, 0x42, 0x30, 0x25, 0x37, 0xa9, 0x86, 0x1c,
-  0x05, 0xc7, 0xa8, 0xa4, 0xff, 0x5b, 0x6a, 0x98, 0xde, 0x63, 0x9c, 0x5a,
-  0x84, 0x4e, 0x8a, 0xed, 0x5a, 0x29, 0x2a, 0xcc, 0x7c, 0x80, 0x38, 0xd0,
-  0xad, 0x73, 0xb7, 0x5e, 0x1c, 0x5c, 0xca, 0x48, 0xd9, 0xf7, 0x20, 0x97,
-  0x73, 0x48, 0x36, 0x1a, 0x92, 0xff, 0x30, 0x5c, 0xd3, 0x29, 0x0d, 0x72,
-  0x9e, 0x18, 0x2e, 0x1d, 0x98, 0x75, 0xeb, 0xcb, 0xf3, 0x9a, 0x86, 0xa9,
-  0x31, 0x10, 0x9f, 0x2c, 0x21, 0x02, 0x4f, 0x51, 0x46, 0xbc, 0xa4, 0xf0,
-  0x5a, 0xcb, 0xe6, 0x8b, 0xcf, 0xa0, 0xb4, 0x2e, 0x95, 0x79, 0xeb, 0x0f,
-  0x75, 0xe8, 0xdb, 0xdf, 0xd8, 0xd8, 0x78, 0x75, 0x7c, 0x79, 0x78, 0x72,
-  0x7a, 0xfc, 0x2a, 0x39, 0x79, 0xfb, 0xfa, 0xec, 0xe2, 0xcd, 0xe1, 0xa5,
-  0x06, 0xbc, 0x5f, 0x39, 0xe7, 0x98, 0x4b, 0x99, 0x75, 0xbe, 0x47, 0xef,
-  0x38, 0xc3, 0x16, 0xa6, 0x55, 0xbc, 0x56, 0x5e, 0x6f, 0x99, 0x86, 0xac,
-  0x31, 0x07, 0x1b, 0x89, 0x06, 0xca, 0x3d, 0x19, 0x0f, 0xdf, 0xd5, 0x3b,
-  0x2e, 0xbc, 0x39, 0xb4, 0xe9, 0x34, 0xd7, 0x16, 0x2a, 0x85, 0x3d, 0xda,
-  0x94, 0x2b, 0x8f, 0x2e, 0xf7, 0x14, 0x0a, 0xdd, 0x22, 0xbb, 0x19, 0x7b,
-  0x72, 0x70, 0xb2, 0xd3, 0xe4, 0xd3, 0x84, 0xf3, 0xc3, 0xb8, 0x99, 0x52,
-  0xb0, 0x3d, 0x84, 0x9c, 0x02, 0xb4, 0x03, 0xd9, 0xd5, 0x17, 0xb6, 0xe9,
-  0xb2, 0xe5, 0x8d, 0x6d, 0x47, 0xe0, 0x15, 0xf8, 0x49, 0xb8, 0xbe, 0x9c,
-  0xae, 0xbe, 0xc1, 0x44, 0xf5, 0xb5, 0xf2, 0xc0, 0x30, 0xf1, 0x62, 0xc5,
-  0x55, 0xb9, 0xed, 0xac, 0x83, 0x0a, 0xd2, 0x09, 0x51, 0x0b, 0x20, 0x69,
-  0x61, 0xab, 0xb0, 0xa9, 0x2d, 0x17, 0x12, 0x25, 0x2d, 0x66, 0x70, 0xa2,
-  0x05, 0xcf, 0x78, 0x2e, 0x98, 0x10, 0x9a, 0xff, 0xbb, 0x30, 0x2a, 0x36,
-  0x87, 0x8e, 0xf3, 0x56, 0x78, 0xbe, 0xe3, 0xaa, 0x50, 0xeb, 0x69, 0xf3,
-  0xe7, 0xd6, 0x28, 0x29, 0x06, 0xaf, 0xe8, 0xa1, 0xe9, 0x6a, 0xbe, 0xd4,
-  0x9a, 0x99, 0xa6, 0xe5, 0xc2, 0xbf, 0x66, 0x4b, 0x28, 0x8a, 0x14, 0x14,
-  0x02, 0x38, 0x63, 0x5e, 0xeb, 0x1c, 0xc8, 0x38, 0xb0, 0xbf, 0x6b, 0x8b,
-  0x56, 0xd5, 0xe0, 0xef, 0xb4, 0x00, 0x93, 0x2b, 0x9a, 0x9d, 0xb7, 0xa9,
-  0xc0, 0x5c, 0xc1, 0xf6, 0x91, 0x7b, 0x16, 0x33, 0x19, 0xbc, 0x90, 0x7a,
-  0x0c, 0x08, 0xe6, 0x7f, 0xcb, 0x48, 0xfd, 0x79, 0xcb, 0x6a, 0x83, 0x6a,
-  0x26, 0xc5, 0xf1, 0xb1, 0xc6, 0xa0, 0xc2, 0x17, 0x9b, 0xa8, 0x89, 0x50,
-  0xd2, 0xdb, 0xa7, 0x3d, 0xfd, 0x66, 0xbb, 0x07, 0x2a, 0xc5, 0x49, 0x9e,
-  0x3c, 0x58, 0xa1, 0x52, 0xe6, 0x95, 0x17, 0x7e, 0xbd, 0x0d, 0xc9, 0xdc,
-  0x68, 0x70, 0xc5, 0xda, 0xf6, 0x5d, 0xa1, 0x40, 0x67, 0x71, 0xcb, 0xf6,
-  0xb5, 0x96, 0x4f, 0x0f, 0x53, 0x8c, 0x04, 0xdd, 0xa3, 0x75, 0x31, 0x20,
-  0xf4, 0x16, 0x1b, 0x56, 0xc1, 0xca, 0x5e, 0x32, 0x7c, 0x16, 0xa4, 0xbf,
-  0x90, 0x3b, 0x43, 0xc8, 0xb3, 0xa1, 0x9b, 0xa5, 0x15, 0x8c, 0x1c, 0x24,
-  0x1a, 0xc8, 0x9d, 0xe1, 0x5c, 0xa3, 0x9e, 0x41, 0x1e, 0x97, 0x4f, 0x40,
-  0x64, 0x21, 0x84, 0x83, 0x29, 0x73, 0x05, 0xb8, 0x42, 0xac, 0x00, 0x15,
-  0xbb, 0x56, 0x70, 0xd7, 0xb1, 0x11, 0x5b, 0xce, 0x80, 0x0c, 0x55, 0xa8,
-  0xdc, 0x79, 0x51, 0xc9, 0x79, 0x83, 0xd6, 0xdd, 0xf3, 0xe5, 0xa2, 0x7b,
-  0xcb, 0x1b, 0xfa, 0x46, 0x2f, 0xb9, 0x66, 0xbb, 0x65, 0x4c, 0x5d, 0x8f,
-  0x04, 0xe8, 0x54, 0x1e, 0x7f, 0x79, 0x91, 0x5e, 0xa5, 0xd9, 0xec, 0x8f,
-  0xfb, 0xbb, 0xa3, 0xf4, 0x7a, 0x35, 0x4b, 0xff, 0x15, 0x2f, 0xbe, 0x7c,
-  0xf2, 0x64, 0x7f, 0xf7, 0xf3, 0x2f, 0x76, 0x7b, 0xad, 0xc0, 0x75, 0x80,
-  0x79, 0x01, 0x88, 0x81, 0x6f, 0x32, 0xc8, 0x5d, 0x7c, 0x67, 0x38, 0xb9,
-  0xce, 0x61, 0x68, 0xb1, 0xf2, 0xa2, 0x73, 0x90, 0x8a, 0x85, 0x07, 0x31,
-  0xa9, 0x1c, 0x68, 0x74, 0xe3, 0xd2, 0xbe, 0xfe, 0xc3, 0xde, 0x81, 0x88,
-  0x32, 0xb0, 0xcb, 0xe2, 0x9e, 0xe0, 0xb9, 0x78, 0x91, 0x2f, 0xe8, 0x06,
-  0xfa, 0x32, 0xa9, 0xd3, 0x6b, 0xb7, 0x57, 0x35, 0x59, 0x58, 0x20, 0xe2,
-  0x2e, 0x04, 0x77, 0xc5, 0x9b, 0x3c, 0xe7, 0x7a, 0xb2, 0x97, 0x52, 0xd8,
-  0x00, 0x8a, 0xcf, 0x32, 0x2b, 0x39, 0xd7, 0xbe, 0xb8, 0x2e, 0xd3, 0xb9,
-  0x01, 0xf1, 0xf9, 0x7d, 0x06, 0x06, 0x0d, 0x97, 0x33, 0x80, 0xc4, 0x0d,
-  0xdd, 0x23, 0x5a, 0xa8, 0x6c, 0xb8, 0xd9, 0xb2, 0xf2, 0x9c, 0x60, 0x72,
-  0xdd, 0x84, 0x25, 0x13, 0x68, 0xb2, 0xe0, 0xe7, 0xe8, 0x61, 0x54, 0x7d,
-  0x47, 0x2e, 0x34, 0x98, 0xda, 0x48, 0x87, 0xf8, 0x3b, 0x92, 0xdb, 0x53,
-  0x61, 0x7f, 0xeb, 0x2d, 0x25, 0x6d, 0xd4, 0x55, 0x05, 0x17, 0x87, 0x58,
-  0xde, 0x18, 0x57, 0xea, 0x01, 0x69, 0xc9, 0x0b, 0xf3, 0xdc, 0xec, 0x7d,
-  0xf9, 0x12, 0x1b, 0x62, 0xef, 0xcb, 0x7f, 0x75, 0x3f, 0xdb, 0xd7, 0x9f,
-  0xed, 0x7f, 0xf9, 0xaf, 0xc3, 0x21, 0xfa, 0xc7, 0x3b, 0x64, 0xd3, 0x7e,
-  0xbd, 0xa9, 0x64, 0x12, 0xa9, 0x1e, 0x61, 0xf9, 0x97, 0x63, 0x4d, 0x95,
-  0xb5, 0xee, 0xd9, 0x97, 0xc3, 0x59, 0xee, 0x6b, 0xd0, 0xcf, 0xc9, 0xad,
-  0xdc, 0x8a, 0xe9, 0x80, 0x0d, 0xb7, 0xea, 0x9a, 0x74, 0x17, 0x9b, 0x40,
-  0x3b, 0x0a, 0x6f, 0xc3, 0xcb, 0xff, 0xc6, 0x3b, 0xf5, 0xdf, 0x36, 0x12,
-  0x8d, 0xcd, 0xf1, 0x72, 0x3c, 0x20, 0x08, 0x61, 0xdb, 0x96, 0x1e, 0x4d,
-  0xad, 0x42, 0x03, 0xb7, 0xcc, 0xd0, 0x76, 0xbe, 0x03, 0x83, 0xca, 0xd8,
-  0x7f, 0x52, 0x2e, 0x3e, 0x97, 0x13, 0x60, 0xcf, 0x48, 0x1a, 0x00, 0xe9,
-  0x18, 0xb5, 0xd0, 0xbe, 0x73, 0xc5, 0x80, 0x1f, 0x7f, 0x54, 0x85, 0x8a,
-  0xfe, 0xa2, 0x3d, 0xbf, 0x21, 0x59, 0x34, 0x25, 0xf1, 0x36, 0x47, 0x55,
-  0x5e, 0x2d, 0x66, 0xae, 0x57, 0xfe, 0x95, 0x8e, 0x54, 0x1a, 0xa1, 0xa5,
-  0x3d, 0x1c, 0x1d, 0x9d, 0x9c, 0x00, 0xc9, 0x87, 0x49, 0x3d, 0x16, 0x31,
-  0x86, 0xbd, 0xb9, 0x05, 0x14, 0x82, 0x07, 0x7e, 0x85, 0x5b, 0x9f, 0xd7,
-  0x0e, 0xcb, 0x8e, 0xdd, 0x4f, 0x8d, 0x99, 0x51, 0xac, 0x4b, 0x89, 0x3d,
-  0x2b, 0x5a, 0xce, 0xcb, 0x9e, 0x3c, 0x78, 0x9d, 0xf7, 0x34, 0xb6, 0x24,
-  0x3f, 0xe9, 0x79, 0x6e, 0x10, 0x59, 0x0f, 0x2c, 0xda, 0x4b, 0x51, 0x9d,
-  0xf2, 0xbf, 0x67, 0x2f, 0xf7, 0x76, 0xbb, 0x9f, 0x40, 0xe9, 0x04, 0xe6,
-  0x21, 0x7e, 0xe9, 0x63, 0x73, 0x8f, 0x3d, 0x9f, 0x4f, 0xe5, 0xe9, 0x9b,
-  0x7c, 0x3a, 0xa5, 0x3b, 0x01, 0x75, 0xd9, 0x5f, 0xf6, 0xc6, 0x7c, 0xc3,
-  0xf2, 0xff, 0x5f, 0xd3, 0x0f, 0x44, 0x91, 0xf4, 0xd9, 0x6a, 0x35, 0x9e,
-  0xe7, 0x8d, 0x0e, 0xef, 0xf0, 0x00, 0xbf, 0xe4, 0x01, 0xff, 0x90, 0xb9,
-  0xdd, 0x91, 0xb1, 0x6a, 0x27, 0xba, 0xdf, 0xe6, 0x55, 0x51, 0x8c, 0xd3,
-  0x72, 0x53, 0x43, 0x2c, 0xd6, 0xcf, 0xcd, 0xbd, 0xfd, 0x27, 0x4f, 0x9f,
-  0x6d, 0x0e, 0x55, 0x4f, 0x83, 0x88, 0xa8, 0xc3, 0xfc, 0x7b, 0x69, 0xc2,
-  0xe5, 0x8b, 0xcf, 0x3d, 0x5f, 0x79, 0x57, 0x9c, 0x93, 0xa5, 0x18, 0x7f,
-  0xee, 0xa5, 0x7c, 0xed, 0x5f, 0xf9, 0x3b, 0x2f, 0xf1, 0x89, 0x7f, 0xcd,
-  0xa7, 0x2f, 0xdd, 0x08, 0xff, 0x95, 0xc7, 0xf2, 0x52, 0x07, 0x41, 0xeb,
-  0x6a, 0x09, 0x56, 0x55, 0x58, 0xcd, 0xe1, 0x63, 0x8b, 0x6b, 0x8b, 0xb8,
-  0x81, 0x41, 0x23, 0xc8, 0x3e, 0x98, 0x4a, 0x44, 0x02, 0xda, 0xaa, 0x4f,
-  0x30, 0xda, 0xf9, 0x30, 0xa0, 0x56, 0x06, 0xdc, 0xca, 0xc0, 0x0b, 0x6c,
-  0xd0, 0x47, 0x0f, 0x78, 0x21, 0xfa, 0x9a, 0x65, 0x36, 0x83, 0xe7, 0x43,
-  0x55, 0x81, 0xa2, 0x40, 0x08, 0xfb, 0xe8, 0x9b, 0x93, 0x4d, 0xc5, 0x86,
-  0x88, 0xe9, 0xd6, 0xef, 0xf2, 0x19, 0x3b, 0x14, 0xd7, 0x24, 0x5d, 0xf2,
-  0xe9, 0xdf, 0x48, 0xb4, 0x80, 0x55, 0xca, 0x50, 0x07, 0xfe, 0xae, 0x24,
-  0x84, 0xd2, 0xc7, 0xf4, 0xd6, 0x99, 0xb1, 0x17, 0xba, 0x14, 0x66, 0xeb,
-  0xa0, 0x19, 0x50, 0xbd, 0x0a, 0xe6, 0x01, 0x71, 0x98, 0xa5, 0xcb, 0x26,
-  0x1b, 0xbc, 0x76, 0x81, 0x48, 0x97, 0xbd, 0xa4, 0x8f, 0xd2, 0xaf, 0x44,
-  0x9e, 0x98, 0x88, 0xe8, 0x39, 0xc2, 0x35, 0xd9, 0x09, 0xa1, 0xf4, 0x40,
-  0x18, 0x75, 0x9c, 0x69, 0x0e, 0x9a, 0xb8, 0x32, 0x44, 0x31, 0x64, 0xf9,
-  0xf9, 0xe2, 0x2b, 0xa3, 0x87, 0xfd, 0x32, 0x41, 0x11, 0x3a, 0x79, 0x4b,
-  0x63, 0x81, 0xea, 0x14, 0x12, 0x3f, 0x2a, 0x5e, 0x52, 0xf3, 0xc0, 0x85,
-  0xa5, 0x02, 0xc0, 0x88, 0x2a, 0x06, 0xca, 0xe1, 0x8d, 0x81, 0x8e, 0x1f,
-  0xd4, 0x01, 0xc0, 0x2d, 0x6c, 0xfe, 0x19, 0x87, 0xe0, 0x05, 0x2f, 0x03,
-  0x7e, 0xfd, 0xe5, 0xe6, 0x86, 0xab, 0x06, 0xee, 0x34, 0xf7, 0x56, 0x50,
-  0x57, 0x36, 0x68, 0x38, 0x1e, 0x52, 0xa8, 0x8d, 0x0b, 0x55, 0xb4, 0x31,
-  0xe6, 0x1f, 0x40, 0xa5, 0x56, 0xd2, 0xa6, 0x66, 0x53, 0x25, 0x11, 0x74,
-  0x4e, 0x63, 0x69, 0x3c, 0x63, 0xe8, 0x36, 0x6b, 0x8f, 0x9b, 0x0c, 0x08,
-  0xc4, 0x7b, 0x9b, 0x8e, 0x5a, 0x15, 0x7e, 0x4c, 0x08, 0xbc, 0x32, 0x33,
-  0x82, 0xbd, 0x0d, 0x65, 0x42, 0xf6, 0xda, 0x7c, 0x38, 0xb0, 0x2a, 0x50,
-  0x1e, 0x7c, 0x0e, 0x97, 0x50, 0x75, 0x44, 0x47, 0xe4, 0x35, 0x27, 0x48,
-  0xea, 0x47, 0x5f, 0xf2, 0x74, 0xef, 0x0d, 0xaf, 0xf3, 0x2b, 0x99, 0x0c,
-  0x12, 0x91, 0xd7, 0xd9, 0x0e, 0xfd, 0xb3, 0x4f, 0x3f, 0xdf, 0x67, 0xad,
-  0x8c, 0xff, 0xf2, 0x04, 0x90, 0xa1, 0xf0, 0xee, 0x0f, 0xce, 0x86, 0x3b,
-  0x17, 0xfc, 0x97, 0xdc, 0xdd, 0xf9, 0x1a, 0x69, 0xd1, 0x5e, 0x62, 0x9b,
-  0x37, 0x6a, 0x24, 0x49, 0x4d, 0x24, 0x1f, 0x45, 0x61, 0x43, 0x8b, 0x4d,
-  0xd2, 0x15, 0x43, 0xf6, 0x1d, 0xe8, 0x56, 0x31, 0x0d, 0xaa, 0xa8, 0xb3,
-  0xde, 0x9d, 0xab, 0xcb, 0x84, 0x53, 0x1c, 0x70, 0xb3, 0x66, 0xf7, 0xdb,
-  0xfd, 0x10, 0xcc, 0x48, 0xe2, 0xfd, 0x8e, 0x93, 0x86, 0x99, 0x89, 0xc0,
-  0xd7, 0x84, 0xe1, 0xcf, 0xa3, 0x54, 0xf8, 0x46, 0x12, 0x66, 0x51, 0x62,
-  0x99, 0xf3, 0xf6, 0x0a, 0x06, 0x75, 0xfb, 0x4c, 0xdb, 0xe4, 0xa8, 0xd6,
-  0x36, 0x7f, 0x26, 0x9b, 0x55, 0xb0, 0xd5, 0x95, 0x87, 0xce, 0xbe, 0x6a,
-  0x2c, 0xbc, 0xf8, 0xd0, 0x66, 0x78, 0xf6, 0x8b, 0x49, 0x9d, 0x91, 0xad,
-  0xcb, 0xa4, 0x41, 0x73, 0x91, 0x73, 0xc7, 0x73, 0x29, 0x60, 0x86, 0x2d,
-  0x3c, 0x1b, 0xc8, 0xed, 0xa9, 0x2a, 0xd1, 0xe0, 0xf5, 0x30, 0x39, 0x05,
-  0x28, 0xb7, 0x4a, 0x85, 0x7c, 0xc2, 0x6e, 0x58, 0xdb, 0x0d, 0xb4, 0x75,
-  0x44, 0x07, 0xdf, 0x10, 0x54, 0x3f, 0x67, 0xfc, 0xdb, 0x96, 0xca, 0x8d,
-  0x5f, 0x59, 0x36, 0x97, 0xe8, 0x17, 0xaa, 0x8f, 0xf4, 0xe1, 0x9f, 0x76,
-  0xcf, 0xc1, 0x0f, 0x2f, 0xbe, 0x38, 0xe4, 0xb6, 0xb8, 0x0d, 0x1b, 0x34,
-  0x22, 0xb8, 0x22, 0x55, 0x40, 0x03, 0xb1, 0xee, 0x0e, 0x81, 0xa0, 0xfe,
-  0x32, 0x71, 0xba, 0x70, 0xe2, 0x39, 0x73, 0x60, 0x20, 0x4e, 0x4b, 0xad,
-  0x61, 0x97, 0x81, 0x8e, 0x97, 0xb6, 0x51, 0x0f, 0x76, 0xe3, 0x2c, 0x73,
-  0xc6, 0xb5, 0x16, 0xd0, 0x72, 0x88, 0x5e, 0xf8, 0x62, 0x44, 0xdd, 0xf0,
-  0x21, 0x34, 0xee, 0x24, 0xf7, 0x2b, 0xbd, 0xa3, 0xbf, 0xb0, 0x72, 0x36,
-  0x2e, 0x69, 0xd5, 0xb3, 0x52, 0xae, 0x06, 0x7c, 0x55, 0x48, 0x39, 0xa6,
-  0x6a, 0xa6, 0xbc, 0x39, 0x4d, 0x8c, 0xc4, 0xe3, 0xca, 0xab, 0x8a, 0x06,
-  0x1e, 0xc4, 0x10, 0xd5, 0x33, 0x22, 0xfa, 0x90, 0x3e, 0x25, 0xb7, 0x9c,
-  0xcc, 0x2d, 0x27, 0x02, 0x27, 0x3c, 0x39, 0x8d, 0x23, 0x1b, 0x3c, 0x21,
-  0xaf, 0xf2, 0x3e, 0xa2, 0x6d, 0xb2, 0xc9, 0x53, 0xb0, 0xd9, 0x4f, 0x36,
-  0xb9, 0xab, 0xfc, 0x8b, 0x4d, 0xcc, 0x27, 0x7e, 0x1c, 0x4c, 0xdf, 0xe6,
-  0xb0, 0xe3, 0x14, 0xf2, 0x33, 0x2f, 0xbf, 0x6a, 0xcc, 0x12, 0x7e, 0x6e,
-  0x4d, 0xbd, 0x14, 0x1c, 0x7f, 0xa4, 0x73, 0xdb, 0xbb, 0x41, 0xfb, 0x2f,
-  0x8f, 0x0a, 0x26, 0x60, 0xa3, 0x66, 0x02, 0x24, 0xe6, 0xc4, 0xfd, 0x2c,
-  0x47, 0x3e, 0x60, 0xd4, 0xd0, 0xc7, 0x4f, 0xf1, 0xa5, 0x89, 0x22, 0x87,
-  0x52, 0x14, 0xe9, 0x26, 0x5b, 0xc0, 0x24, 0x2f, 0xad, 0x66, 0x2e, 0x76,
-  0xdf, 0x7d, 0x01, 0x2f, 0x03, 0x64, 0xce, 0xde, 0x10, 0x09, 0x62, 0xbe,
-  0x92, 0xa2, 0x6b, 0xc0, 0x19, 0xef, 0x3d, 0x4c, 0x68, 0xcf, 0x01, 0x47,
-  0xcd, 0xa4, 0xb7, 0x59, 0xee, 0x92, 0x5d, 0xcb, 0x7c, 0x02, 0x86, 0xdf,
-  0x97, 0x5f, 0x4d, 0x8b, 0x6b, 0x96, 0x5c, 0x7d, 0x3a, 0x68, 0xfc, 0xdf,
-  0x1e, 0x3f, 0xbc, 0xaf, 0x1f, 0x95, 0x0e, 0xe3, 0xac, 0x88, 0x16, 0x6f,
-  0xff, 0x5e, 0x83, 0xa2, 0xa4, 0x86, 0xa7, 0xc5, 0x44, 0xdb, 0x76, 0x4d,
-  0xcb, 0x7a, 0x50, 0xfb, 0xee, 0x17, 0xe1, 0xb7, 0x6c, 0x72, 0x52, 0x6d,
-  0x19, 0xba, 0x11, 0x49, 0x8a, 0x5a, 0xae, 0x72, 0x57, 0x95, 0x1d, 0x0e,
-  0x2e, 0x2e, 0x86, 0x28, 0xf7, 0xd6, 0x4c, 0xb3, 0x96, 0x36, 0xbf, 0xda,
-  0x14, 0x18, 0xf6, 0xe6, 0x8b, 0x4d, 0x48, 0x30, 0x96, 0x4b, 0x56, 0x35,
-  0x4a, 0x2f, 0xa7, 0x4d, 0xb9, 0x15, 0x07, 0xa2, 0x3b, 0x28, 0xa1, 0x59,
-  0x03, 0x24, 0xc7, 0x02, 0xc3, 0xcc, 0xc8, 0x10, 0xdf, 0x07, 0x37, 0x01,
-  0x8a, 0x12, 0xa3, 0x57, 0xcc, 0xce, 0x38, 0xae, 0x05, 0xbc, 0xa2, 0x97,
-  0x2e, 0xd4, 0x32, 0x90, 0x41, 0x54, 0x8c, 0x29, 0x10, 0x37, 0xe7, 0x6a,
-  0xb1, 0xe4, 0xd4, 0xdf, 0x49, 0x2d, 0x15, 0xe0, 0x70, 0x96, 0x86, 0xc9,
-  0xbb, 0x85, 0x70, 0x90, 0x67, 0x6c, 0x2c, 0xe7, 0xe5, 0x64, 0x35, 0x67,
-  0x57, 0xc5, 0x84, 0x1d, 0x64, 0x06, 0x3f, 0xa2, 0x89, 0x6a, 0x84, 0xcc,
-  0xc3, 0x0e, 0x8b, 0x73, 0x44, 0x9c, 0xd8, 0xfa, 0x5d, 0xc0, 0x43, 0x18,
-  0x14, 0xa5, 0x4e, 0x6a, 0x68, 0x05, 0x8e, 0x14, 0x42, 0x05, 0x10, 0x47,
-  0xeb, 0x8e, 0x5f, 0x1f, 0x5f, 0x5c, 0x1c, 0x5f, 0xf0, 0x7c, 0x1f, 0x2e,
-  0x1a, 0xc5, 0x7e, 0x1c, 0x33, 0xa4, 0x0f, 0xff, 0x19, 0x32, 0x35, 0x66,
-  0xf4, 0x16, 0x51, 0xa8, 0x55, 0xe2, 0x61, 0x41, 0x08, 0x0d, 0x8a, 0xd4,
-  0x46, 0x0d, 0xdd, 0x8b, 0x40, 0x26, 0x3b, 0x57, 0x7e, 0x58, 0xe6, 0x2c,
-  0xd0, 0x2d, 0x7c, 0x0b, 0xa5, 0x96, 0xcb, 0x5c, 0x59, 0xc6, 0xf1, 0x4d,
-  0xd6, 0x50, 0x53, 0x87, 0x0a, 0x26, 0xcd, 0x34, 0xc0, 0x3d, 0x73, 0xfe,
-  0x09, 0x0c, 0xf9, 0x8a, 0xcf, 0x28, 0xdb, 0x4e, 0x98, 0x8c, 0xaa, 0x5e,
-  0x2d, 0xf3, 0xa9, 0xf3, 0xf6, 0xd2, 0xcf, 0x49, 0xfd, 0x4b, 0xe4, 0x94,
-  0x57, 0x86, 0x3f, 0x41, 0xa4, 0xd1, 0x9c, 0x11, 0xa1, 0xb7, 0xad, 0x45,
-  0x4f, 0x9a, 0x20, 0x21, 0x49, 0x80, 0x5c, 0x56, 0x6c, 0xa5, 0x99, 0x3a,
-  0xab, 0x7b, 0x3f, 0x83, 0x97, 0x91, 0xa5, 0x85, 0x41, 0x62, 0x42, 0xc9,
-  0xc0, 0xbe, 0xac, 0xb9, 0x87, 0x64, 0x33, 0xac, 0xec, 0x40, 0x58, 0x1e,
-  0x90, 0x31, 0x57, 0x1e, 0x24, 0x3f, 0x55, 0xf9, 0xe4, 0x17, 0x7f, 0x79,
-  0x20, 0xc3, 0xc2, 0xa3, 0xa6, 0xc5, 0x43, 0x4f, 0x83, 0xd7, 0x89, 0x52,
-  0x63, 0x58, 0x32, 0x55, 0xdf, 0x8d, 0x8e, 0x2f, 0x92, 0xc3, 0x6f, 0x98,
-  0xe4, 0xf4, 0xbf, 0xb8, 0xc0, 0xfc, 0x9c, 0xde, 0x0e, 0x1b, 0x0a, 0xf5,
-  0x54, 0xea, 0x86, 0xcc, 0x5c, 0xe1, 0x42, 0x3b, 0xd4, 0x58, 0xd9, 0xdc,
-  0xaa, 0x9d, 0xfa, 0xeb, 0xbe, 0xb9, 0x86, 0x1b, 0xc9, 0x47, 0x57, 0xf1,
-  0x53, 0xd6, 0x90, 0x0f, 0x59, 0xb8, 0x8a, 0x42, 0xfa, 0x22, 0x21, 0x09,
-  0x5b, 0x1b, 0xed, 0x7d, 0x15, 0x99, 0x9d, 0xb2, 0x4a, 0x87, 0xc9, 0xe6,
-  0x9b, 0xe2, 0xef, 0xa4, 0x0c, 0xa4, 0x3b, 0x4f, 0x86, 0xbb, 0xc9, 0xd6,
-  0x0f, 0xf9, 0xe2, 0xf9, 0xb3, 0x3f, 0x27, 0x27, 0xdb, 0x9b, 0x0d, 0xbc,
-  0xb9, 0x94, 0xcd, 0x1a, 0xa7, 0x8b, 0x5b, 0xb7, 0x64, 0x67, 0x38, 0xd9,
-  0x02, 0x74, 0xb3, 0x72, 0x0e, 0x52, 0xa4, 0x73, 0x6d, 0x8b, 0xc2, 0xe3,
-  0x2d, 0xd0, 0xf5, 0xe4, 0x7b, 0xc7, 0xe8, 0xcb, 0x56, 0x3e, 0x3d, 0x35,
-  0xe5, 0xa9, 0x7b, 0xfe, 0x2c, 0x6a, 0xe2, 0xa9, 0x6b, 0xe3, 0x9d, 0xb4,
-  0xf1, 0x2b, 0x9b, 0xd8, 0x1f, 0xee, 0xee, 0x27, 0x5b, 0x67, 0xa3, 0x9d,
-  0x7d, 0xd7, 0x42, 0xdc, 0xc4, 0x3e, 0x9a, 0xe0, 0x87, 0x9a, 0x2f, 0x3f,
-  0xe5, 0xef, 0xff, 0x94, 0x2d, 0x7e, 0x49, 0xb6, 0x7e, 0xdc, 0xdb, 0xa3,
-  0x06, 0xfe, 0x9c, 0x1c, 0x9e, 0xfc, 0x98, 0x3c, 0x1d, 0x52, 0x63, 0x6f,
-  0xd3, 0x3b, 0x6d, 0x4e, 0xb9, 0x3a, 0x47, 0x68, 0x84, 0x7e, 0x1f, 0xb5,
-  0xf1, 0xac, 0xd5, 0xc6, 0x29, 0xd9, 0x85, 0x1f, 0xe8, 0x5a, 0xd9, 0x1d,
-  0x3e, 0xd9, 0x4f, 0xf2, 0x67, 0x5f, 0x7c, 0x66, 0x0d, 0x69, 0x1b, 0xf8,
-  0x7d, 0xd3, 0x5b, 0x29, 0x6c, 0x10, 0xa4, 0xea, 0x1c, 0x7f, 0x20, 0x81,
-  0x06, 0x11, 0x01, 0xe2, 0xfe, 0x9b, 0xb4, 0x9c, 0xea, 0x76, 0x63, 0x32,
-  0x77, 0x5a, 0x29, 0x65, 0xc9, 0xcd, 0xe0, 0xb6, 0xa4, 0x8b, 0xf3, 0x20,
-  0xea, 0x0e, 0xdb, 0xa6, 0xf6, 0xe8, 0x9f, 0x93, 0x37, 0xa3, 0x93, 0x63,
-  0x1a, 0xd1, 0x2e, 0x75, 0xcd, 0xcf, 0xa1, 0x74, 0x08, 0xbf, 0xc2, 0xe4,
-  0x3e, 0x07, 0xe9, 0xa2, 0xb6, 0x11, 0xd6, 0xa7, 0xc4, 0xa6, 0xa3, 0x8b,
-  0xbb, 0xc2, 0x77, 0x19, 0x26, 0x32, 0x38, 0xbc, 0x66, 0x13, 0x42, 0xae,
-  0x5a, 0x7c, 0xfa, 0xbb, 0x62, 0x41, 0xc7, 0xa4, 0x2c, 0x4a, 0x46, 0x33,
-  0x6d, 0x36, 0xb4, 0x85, 0xef, 0x5e, 0x1d, 0x4b, 0xc6, 0xf0, 0x9b, 0x74,
-  0x41, 0x32, 0x92, 0xc9, 0x7f, 0xaa, 0x5b, 0x8e, 0xc9, 0x4b, 0x38, 0x47,
-  0xde, 0x3f, 0x7d, 0x58, 0x7c, 0xa0, 0x75, 0xfc, 0x7c, 0xb8, 0xc7, 0xc4,
-  0x0b, 0x6c, 0xf5, 0xbe, 0x7e, 0x43, 0xff, 0xde, 0x7b, 0xba, 0x99, 0xf0,
-  0xaf, 0x9a, 0x16, 0xbc, 0x9d, 0xd7, 0x8d, 0xa3, 0xb3, 0xb3, 0xef, 0x4e,
-  0x04, 0x94, 0x71, 0xa4, 0x6e, 0x55, 0x56, 0xae, 0x9c, 0x55, 0x2c, 0xd2,
-  0x95, 0xac, 0x37, 0x9f, 0xdf, 0x82, 0x60, 0xdc, 0x6d, 0x96, 0x2d, 0x19,
-  0x21, 0x50, 0xb7, 0x24, 0x42, 0xad, 0x32, 0xda, 0xe1, 0x8d, 0x58, 0xfd,
-  0x69, 0x10, 0x17, 0x55, 0xcc, 0x04, 0x6b, 0x2e, 0xdc, 0xf1, 0x83, 0x63,
-  0x25, 0x48, 0x5d, 0xc8, 0x4c, 0xba, 0xe8, 0x00, 0xf5, 0xe6, 0x82, 0x96,
-  0x1a, 0x08, 0xf4, 0xa2, 0xda, 0xbe, 0x9b, 0x23, 0xd2, 0xee, 0xa5, 0xd3,
-  0x07, 0xea, 0xb5, 0xdd, 0x0c, 0xa8, 0x73, 0xa1, 0xd1, 0x2e, 0xb5, 0x46,
-  0x08, 0x5c, 0xc7, 0x0f, 0xa4, 0x4b, 0x60, 0x4c, 0x2a, 0x9b, 0x2b, 0xf8,
-  0xb2, 0x01, 0x99, 0x7b, 0x7b, 0xf8, 0xe6, 0xf8, 0xe5, 0xf7, 0x87, 0xa7,
-  0xef, 0x8e, 0xe9, 0x95, 0x1c, 0x2c, 0xd5, 0x0e, 0x56, 0x87, 0x3e, 0xce,
-  0x73, 0xd4, 0xc6, 0xac, 0x48, 0x3d, 0xd8, 0xdc, 0x10, 0xa4, 0x77, 0xd2,
-  0xe3, 0xb7, 0xf6, 0xe4, 0x35, 0xda, 0x17, 0xfc, 0xaf, 0x7d, 0xf9, 0xd7,
-  0xfe, 0x9f, 0x7b, 0xdb, 0x8d, 0x41, 0x47, 0x56, 0x32, 0xef, 0x97, 0x7b,
-  0x29, 0x14, 0xc3, 0x90, 0x1d, 0x49, 0x2f, 0x90, 0x59, 0xe9, 0x59, 0x8c,
-  0xc6, 0xee, 0x36, 0x7e, 0x76, 0x6b, 0xfc, 0x10, 0xda, 0xe0, 0x3d, 0x7e,
-  0xe9, 0x25, 0x14, 0x8c, 0x1e, 0x78, 0xbc, 0x33, 0x9b, 0x2d, 0x69, 0xc3,
-  0x9a, 0xc8, 0x3e, 0x2c, 0x19, 0xa5, 0xb8, 0xd5, 0x93, 0xbf, 0xbc, 0x7c,
-  0x75, 0x78, 0x79, 0xcc, 0x2f, 0xd8, 0xe7, 0x8d, 0xd4, 0xdd, 0x92, 0x00,
-  0xb8, 0x3f, 0x5b, 0x3d, 0xf9, 0xe1, 0x4b, 0x1e, 0x50, 0x6f, 0x5b, 0x62,
-  0x19, 0x08, 0x74, 0xb7, 0xfa, 0x55, 0x2c, 0x14, 0x4f, 0x1d, 0x24, 0x4b,
-  0x57, 0x86, 0x22, 0xd9, 0xea, 0xc9, 0xef, 0x7a, 0xce, 0x83, 0xab, 0x35,
-  0x8c, 0x35, 0x5c, 0x39, 0x45, 0x8a, 0x40, 0x94, 0xbc, 0x28, 0x30, 0x31,
-  0xbf, 0x3e, 0x1a, 0xac, 0x10, 0x8f, 0x53, 0x40, 0x26, 0xec, 0x16, 0x5e,
-  0x73, 0xbb, 0xd9, 0xc7, 0x54, 0x14, 0x7b, 0xfb, 0x4f, 0xfe, 0x8c, 0xf9,
-  0x7c, 0xd9, 0xdb, 0xa1, 0xbb, 0xa1, 0xf7, 0x67, 0xfe, 0x74, 0xee, 0xab,
-  0xd0, 0xba, 0xf5, 0x60, 0x7b, 0x4a, 0x77, 0x94, 0x40, 0x58, 0x78, 0xd5,
-  0x03, 0xf6, 0x12, 0x4c, 0xe8, 0xbd, 0x24, 0x32, 0x19, 0xd7, 0x87, 0x05,
-  0xf4, 0xb1, 0x5e, 0xa8, 0x70, 0x8f, 0x1a, 0x61, 0xe2, 0xd4, 0xc5, 0xe7,
-  0xc2, 0xfb, 0xa3, 0x2f, 0xef, 0xca, 0x18, 0x95, 0x1f, 0x85, 0xbf, 0x39,
-  0x7f, 0xb0, 0x5c, 0x27, 0x7c, 0x4b, 0xcb, 0xae, 0x62, 0x2c, 0x6d, 0xed,
-  0x60, 0xac, 0xbe, 0x1d, 0x33, 0x46, 0xa0, 0x13, 0x90, 0x68, 0x79, 0x80,
-  0xa2, 0x24, 0x08, 0x80, 0x00, 0xf8, 0x60, 0x77, 0x76, 0x3a, 0xe6, 0x3c,
-  0x5e, 0x97, 0xd8, 0x11, 0x58, 0xe5, 0x6e, 0xea, 0xed, 0xf8, 0xe5, 0x01,
-  0xf1, 0x0c, 0x5f, 0x94, 0x32, 0x97, 0x95, 0xf3, 0x21, 0x21, 0xda, 0xa8,
-  0xcf, 0x36, 0xd7, 0xa9, 0x95, 0x32, 0x85, 0x61, 0x88, 0x49, 0x2f, 0xf6,
-  0x31, 0x89, 0x9a, 0x45, 0x56, 0x3e, 0x0a, 0x7a, 0xe8, 0x08, 0x46, 0x61,
-  0x88, 0x41, 0x1a, 0x1e, 0xbf, 0x33, 0x1c, 0x0e, 0x7d, 0x25, 0x5f, 0x5e,
-  0x16, 0x8d, 0x41, 0xa1, 0xb6, 0x4a, 0x40, 0x8f, 0x89, 0x39, 0xde, 0x82,
-  0x32, 0x0f, 0x85, 0x7a, 0x5b, 0xc1, 0x30, 0xea, 0x27, 0x70, 0x47, 0x23,
-  0xf0, 0x71, 0x6c, 0xea, 0x67, 0x37, 0x2d, 0x27, 0xfd, 0xb6, 0x6b, 0x11,
-  0x1e, 0xe9, 0x9b, 0xf8, 0x1e, 0xb5, 0x32, 0x9f, 0x93, 0x53, 0x85, 0x9b,
-  0x0b, 0xde, 0xc1, 0x0c, 0xea, 0xc6, 0x3e, 0x91, 0xa4, 0x4e, 0x99, 0x34,
-  0xed, 0x8a, 0xd6, 0x68, 0x62, 0x21, 0x57, 0xdc, 0x23, 0xcf, 0x5c, 0x0a,
-  0x64, 0x2c, 0x4b, 0xb6, 0xf4, 0x78, 0x8e, 0xed, 0x06, 0x59, 0x3a, 0xb5,
-  0x59, 0xdb, 0x51, 0xaa, 0x54, 0xb6, 0x99, 0xa1, 0xfb, 0x6b, 0x22, 0x9e,
-  0xb2, 0x6d, 0x54, 0xa9, 0xd2, 0x28, 0x92, 0xda, 0x56, 0xcc, 0x11, 0xf6,
-  0xd2, 0xc1, 0x7b, 0x77, 0x15, 0x23, 0xc0, 0x06, 0xc2, 0x57, 0x61, 0xb9,
-  0x72, 0x26, 0x3d, 0x94, 0xb3, 0xe0, 0xb1, 0x78, 0xf9, 0xc4, 0x5a, 0x74,
-  0xc1, 0xf2, 0xd6, 0xdc, 0xf8, 0x5b, 0xb9, 0x29, 0xba, 0x68, 0x46, 0xc5,
-  0xbb, 0x2c, 0xcc, 0x00, 0x5e, 0xee, 0x25, 0xe9, 0x3d, 0x57, 0x94, 0xce,
-  0x18, 0x33, 0x09, 0xa4, 0x03, 0xbc, 0x32, 0xa7, 0x81, 0x9f, 0xd1, 0x8d,
-  0xd0, 0x2a, 0x9f, 0xa7, 0xbe, 0xf4, 0xb9, 0x15, 0x46, 0x15, 0x36, 0x50,
-  0x73, 0xe8, 0xe5, 0x28, 0xdf, 0xca, 0xec, 0x8d, 0xaa, 0xa9, 0x9b, 0x79,
-  0xce, 0x3d, 0xdf, 0x46, 0x81, 0x4b, 0x51, 0xe7, 0x81, 0x15, 0x64, 0x3f,
-  0x87, 0xe0, 0x2a, 0x6c, 0xb6, 0x50, 0xde, 0xd6, 0x7d, 0xc4, 0xc5, 0xa7,
-  0xd5, 0xfd, 0xc4, 0x90, 0xdb, 0xc5, 0xc0, 0x15, 0x07, 0x77, 0x78, 0xac,
-  0x32, 0xbf, 0xbe, 0xd6, 0x9a, 0x9a, 0xed, 0xa1, 0x75, 0x6f, 0xb2, 0x53,
-  0x9e, 0x15, 0x46, 0x26, 0x3f, 0xac, 0x9b, 0xcd, 0x4b, 0xf3, 0xf9, 0x98,
-  0xd7, 0xa5, 0xb1, 0x99, 0x2d, 0x26, 0x29, 0xeb, 0x06, 0x96, 0x45, 0x49,
-  0x02, 0xe7, 0xa4, 0x89, 0x66, 0x0c, 0xf9, 0xec, 0x62, 0x03, 0xbc, 0xf0,
-  0x0b, 0x9f, 0xf3, 0x6e, 0x8b, 0x0e, 0xf2, 0x31, 0x8f, 0x40, 0xf1, 0xe8,
-  0xd0, 0x7b, 0x07, 0x7f, 0x92, 0x92, 0x62, 0xe3, 0xd4, 0x9b, 0x5c, 0x1b,
-  0x49, 0xc3, 0xdb, 0xcb, 0xf5, 0x22, 0x4e, 0x16, 0x2a, 0x87, 0x8a, 0xbb,
-  0xcc, 0xf3, 0xdf, 0x79, 0x87, 0xa3, 0x27, 0x11, 0xd5, 0xd3, 0xef, 0x84,
-  0x49, 0x2b, 0xc0, 0xeb, 0xe4, 0x15, 0x06, 0xd9, 0x9a, 0x95, 0x61, 0x12,
-  0x34, 0x29, 0xae, 0x92, 0x22, 0x14, 0xf1, 0xd2, 0x37, 0x8d, 0x5b, 0x5b,
-  0x8b, 0x9a, 0x56, 0x04, 0x06, 0x8b, 0xc0, 0x34, 0x91, 0x7a, 0x0a, 0x46,
-  0x04, 0xee, 0x70, 0x73, 0x3e, 0xfe, 0x6b, 0xa3, 0xec, 0xb9, 0x45, 0xea,
-  0x19, 0xe5, 0x3a, 0x36, 0x01, 0xf6, 0x00, 0x2b, 0x74, 0x2e, 0x84, 0x7f,
-  0x38, 0x4b, 0x19, 0xc4, 0x52, 0x08, 0x3a, 0x00, 0x4b, 0x86, 0x4d, 0x0d,
-  0x67, 0x5a, 0x4b, 0xa6, 0x46, 0xc7, 0xcf, 0xa1, 0x35, 0x64, 0xaf, 0xb1,
-  0x92, 0x82, 0x66, 0x68, 0x97, 0x00, 0x61, 0x3d, 0x09, 0xeb, 0xa2, 0xae,
-  0x4f, 0x0f, 0x1f, 0x37, 0xce, 0xe8, 0xc7, 0x8e, 0xec, 0xf9, 0xc5, 0xd9,
-  0x37, 0x17, 0xc7, 0xa3, 0x51, 0xf2, 0xe6, 0xf8, 0x52, 0xcc, 0x7e, 0xad,
-  0xf7, 0x7d, 0xcd, 0x96, 0x7b, 0x82, 0xb0, 0x83, 0x71, 0xd5, 0x18, 0xfa,
-  0xc4, 0x7c, 0x0a, 0x48, 0x49, 0x2a, 0x38, 0xa4, 0x06, 0x55, 0x0e, 0xf6,
-  0xfc, 0x4c, 0x01, 0x75, 0x37, 0x70, 0xfc, 0x03, 0xde, 0x84, 0xd8, 0xa4,
-  0xf3, 0xa3, 0x7b, 0x8f, 0x2a, 0x74, 0x64, 0x01, 0x3c, 0xdd, 0x98, 0xe4,
-  0xf2, 0xde, 0x74, 0xbe, 0xbd, 0xe9, 0xbf, 0x18, 0xde, 0x1f, 0x93, 0xcb,
-  0xa2, 0xe6, 0xa2, 0xb7, 0xfc, 0xd7, 0x0b, 0xdb, 0x1f, 0x7f, 0x4c, 0x7e,
-  0xa4, 0x36, 0xa7, 0x34, 0xeb, 0xec, 0x4c, 0xa6, 0x0b, 0x77, 0x84, 0x8a,
-  0x89, 0xbe, 0x7c, 0x0a, 0xca, 0x1c, 0x86, 0xc5, 0x8c, 0x57, 0x65, 0x39,
-  0xec, 0xae, 0x3e, 0xd2, 0x28, 0x1f, 0x22, 0xb4, 0x80, 0x0a, 0xaf, 0x73,
-  0x5f, 0xd6, 0x52, 0xa8, 0x49, 0x72, 0x9a, 0x5d, 0xd5, 0x50, 0x48, 0xf8,
-  0x73, 0xd4, 0xdc, 0x2e, 0xf3, 0xdc, 0xee, 0x71, 0x79, 0x27, 0xfa, 0xeb,
-  0x93, 0x2f, 0x3e, 0xdb, 0xfd, 0x42, 0xfe, 0x6a, 0x7f, 0x3e, 0x7f, 0xba,
-  0xab, 0x7c, 0xd1, 0xf4, 0xaf, 0xa7, 0x07, 0x4f, 0xf7, 0x0e, 0x98, 0xc6,
-  0x6e, 0xf7, 0x60, 0x97, 0xfe, 0xff, 0x53, 0xfd, 0x09, 0x73, 0xf5, 0x3d,
-  0xdf, 0xff, 0xe2, 0x73, 0x00, 0x63, 0x78, 0x7f, 0xcc, 0xe8, 0x23, 0x83,
-  0xba, 0x18, 0x80, 0x4d, 0x07, 0x4a, 0xd0, 0x1f, 0x9b, 0x4e, 0x49, 0x8e,
-  0xb4, 0x4f, 0x38, 0xae, 0x7a, 0x2d, 0xe6, 0xcd, 0x2c, 0x63, 0x09, 0xa0,
-  0x0e, 0x56, 0x61, 0x19, 0x31, 0x00, 0xb7, 0x24, 0x19, 0xeb, 0x30, 0xf4,
-  0xed, 0x1a, 0xff, 0x06, 0x3d, 0x55, 0xe3, 0x1d, 0xc1, 0x81, 0x07, 0x4c,
-  0x58, 0xbf, 0xf6, 0xd3, 0x96, 0xf6, 0xbc, 0x01, 0x7e, 0x2b, 0x5d, 0x2a,
-  0x7d, 0x6f, 0x62, 0xd5, 0x64, 0xdd, 0x53, 0xac, 0x11, 0xce, 0x25, 0x65,
-  0xe0, 0x4a, 0xd0, 0xc4, 0xbf, 0xf6, 0x7b, 0xe2, 0xc4, 0xe2, 0xb7, 0x74,
-  0x37, 0x24, 0xf1, 0xd7, 0x5c, 0xaa, 0x40, 0xc7, 0xb7, 0x1a, 0x9b, 0x67,
-  0xc3, 0x2f, 0xbf, 0x9f, 0x29, 0x96, 0x6a, 0xfa, 0x90, 0x4b, 0xb1, 0x92,
-  0xe2, 0x9c, 0x1d, 0x43, 0x8e, 0x9a, 0xd3, 0x6d, 0xf4, 0x2b, 0x9a, 0xf3,
-  0x23, 0xc2, 0x0e, 0x76, 0x2b, 0x37, 0x08, 0x16, 0x27, 0x17, 0x8c, 0x9b,
-  0xcd, 0x86, 0xe3, 0x4f, 0xb4, 0x1b, 0x4f, 0x5e, 0x75, 0x5b, 0x76, 0x20,
-  0x6f, 0xa8, 0xfa, 0xe9, 0xd2, 0xd6, 0xb4, 0x76, 0xb5, 0x7b, 0xde, 0x76,
-  0x76, 0xf4, 0x29, 0xde, 0x8d, 0xc1, 0xf7, 0xf4, 0x1b, 0x38, 0x4f, 0xee,
-  0xd0, 0x3d, 0x3a, 0x34, 0x0f, 0x7d, 0x77, 0xc5, 0x49, 0xb7, 0x1c, 0x94,
-  0xbc, 0xeb, 0x48, 0xfa, 0xe7, 0x80, 0x2e, 0x77, 0xcd, 0x85, 0x17, 0x11,
-  0x0a, 0xd3, 0x6a, 0x01, 0x00, 0x26, 0x65, 0x64, 0x16, 0xf3, 0x6d, 0x13,
-  0x61, 0x83, 0x3f, 0x38, 0x04, 0x17, 0xee, 0x35, 0xad, 0x5e, 0x98, 0xca,
-  0xce, 0x9f, 0x85, 0x19, 0xae, 0x4e, 0xda, 0x8d, 0xd3, 0xb2, 0xc1, 0x17,
-  0xbe, 0x21, 0xac, 0xf9, 0x74, 0xd3, 0xd2, 0xcd, 0x11, 0x94, 0x49, 0xff,
-  0x97, 0x8d, 0x8d, 0xd1, 0xf9, 0xf1, 0xf1, 0xab, 0xe4, 0xf4, 0xe4, 0xcd,
-  0xc9, 0x65, 0xa0, 0x90, 0xbb, 0x8b, 0xc4, 0x9c, 0xae, 0x56, 0x5b, 0xa7,
-  0x35, 0x1d, 0x9e, 0x9d, 0x56, 0xbe, 0x67, 0x57, 0xf9, 0x3c, 0xd3, 0x24,
-  0x87, 0x59, 0xfb, 0x3d, 0x98, 0xde, 0xa0, 0xd1, 0x19, 0x26, 0x5f, 0x07,
-  0x18, 0xc9, 0xa4, 0x22, 0xe5, 0x66, 0xe2, 0x4a, 0xb6, 0x0e, 0xfe, 0xa2,
-  0x90, 0x8d, 0xa6, 0xe6, 0xa4, 0x24, 0x9b, 0x2e, 0xe3, 0x46, 0x61, 0xae,
-  0xad, 0x5e, 0xf1, 0xdc, 0x66, 0x82, 0x7c, 0x0e, 0x3c, 0x74, 0x40, 0xf0,
-  0xdd, 0x67, 0xc8, 0xcd, 0x9f, 0xe7, 0x92, 0x0a, 0x19, 0xc2, 0x8b, 0x5d,
-  0x15, 0xcb, 0xcb, 0x42, 0xe4, 0x78, 0xf8, 0xc5, 0xb0, 0x3c, 0xb1, 0x61,
-  0x6b, 0xed, 0x5b, 0x61, 0xdd, 0xdb, 0x27, 0xbb, 0x2e, 0x9b, 0x60, 0x09,
-  0x99, 0xa3, 0xaa, 0x3e, 0x7f, 0x6c, 0x2f, 0x21, 0x7d, 0x64, 0xc5, 0x5a,
-  0x7d, 0xb9, 0x5a, 0x44, 0xd7, 0xdd, 0x5f, 0xe4, 0x5d, 0x1a, 0xff, 0x67,
-  0xbb, 0xb8, 0xde, 0xae, 0xd2, 0x72, 0x40, 0x9a, 0xd7, 0xc3, 0xc0, 0xbc,
-  0xab, 0xb2, 0x23, 0x14, 0x7a, 0x2c, 0xae, 0x9f, 0xcc, 0x17, 0xcc, 0x6c,
-  0x69, 0x8b, 0x3e, 0x25, 0xa4, 0x40, 0x88, 0x72, 0xa6, 0x07, 0x80, 0x87,
-  0xce, 0x89, 0xb8, 0xe6, 0xec, 0xf4, 0xba, 0x8e, 0x27, 0x60, 0xb5, 0x55,
-  0xf4, 0x32, 0x8a, 0x13, 0x04, 0x20, 0x56, 0xb9, 0xd5, 0x9c, 0x87, 0xa9,
-  0x63, 0x89, 0x55, 0xeb, 0x79, 0xb2, 0xf7, 0x05, 0x8f, 0xe3, 0xd3, 0xc6,
-  0xf3, 0xba, 0x28, 0x27, 0x2e, 0xe5, 0x17, 0xe6, 0x42, 0x90, 0xff, 0x29,
-  0x59, 0x0b, 0xa8, 0x4a, 0x23, 0xb3, 0x6b, 0xf8, 0x58, 0xe0, 0xf7, 0xd8,
-  0x3e, 0xd1, 0xd0, 0x3a, 0x3c, 0x53, 0x88, 0x75, 0x8b, 0x86, 0xc4, 0x77,
-  0x8d, 0xce, 0x0b, 0xfb, 0x5a, 0x05, 0xbf, 0xb7, 0x59, 0xba, 0xfc, 0x50,
-  0x99, 0x06, 0xf6, 0x8e, 0xd0, 0x5e, 0xbb, 0xcf, 0xa7, 0xd0, 0xaa, 0xcd,
-  0x09, 0x80, 0xfd, 0x27, 0x9b, 0x4f, 0x60, 0xd3, 0x08, 0x5f, 0x22, 0xee,
-  0xe9, 0x7a, 0xa6, 0x0a, 0x0c, 0x4f, 0x6b, 0x01, 0xe7, 0xc2, 0x16, 0xf4,
-  0x07, 0x4e, 0x3f, 0xf6, 0x21, 0x02, 0x36, 0xa5, 0x58, 0x34, 0xf7, 0xfc,
-  0x57, 0x18, 0xca, 0x5f, 0xd7, 0x33, 0xf3, 0x2b, 0xbc, 0x71, 0x1b, 0xbb,
-  0x39, 0x66, 0xe6, 0x15, 0x09, 0x86, 0xbd, 0xb7, 0x4b, 0xfa, 0xeb, 0xac,
-  0x68, 0x97, 0xd7, 0x8e, 0x8d, 0x52, 0x0c, 0x6b, 0x80, 0xd9, 0xd9, 0xdb,
-  0xfd, 0x6e, 0xfd, 0xac, 0x83, 0x66, 0xfc, 0xd1, 0x97, 0xf7, 0x9f, 0x3e,
-  0xb2, 0x68, 0x67, 0x25, 0xec, 0xf2, 0xcc, 0xe0, 0x90, 0x50, 0x04, 0x7d,
-  0x10, 0x26, 0x5a, 0x36, 0xda, 0xf8, 0xd9, 0x75, 0xca, 0xdd, 0x7f, 0xac,
-  0xf7, 0x96, 0xb2, 0xd1, 0xea, 0xca, 0x1b, 0x05, 0x68, 0xcb, 0x2f, 0x2b,
-  0xf6, 0x90, 0x2d, 0x41, 0x86, 0xe6, 0xcd, 0x58, 0x97, 0xed, 0x2d, 0x74,
-  0x13, 0xc1, 0xdb, 0x22, 0x39, 0xfb, 0x4d, 0x21, 0x61, 0xbb, 0xa7, 0xcc,
-  0xae, 0x57, 0xc2, 0xe7, 0x50, 0x88, 0xd9, 0xcf, 0xbc, 0xbd, 0x7a, 0x5e,
-  0x49, 0x36, 0x33, 0x92, 0x48, 0xf6, 0x13, 0x04, 0xef, 0x24, 0x35, 0x95,
-  0x55, 0x54, 0x8e, 0xf6, 0xc5, 0xc0, 0xfe, 0xd9, 0x09, 0x07, 0xc4, 0x20,
-  0x0d, 0x36, 0x92, 0x76, 0xe9, 0x5d, 0x21, 0xa6, 0x1b, 0x22, 0x11, 0x57,
-  0x36, 0x8a, 0x13, 0xf6, 0x9c, 0xf5, 0xc5, 0x81, 0xb1, 0x5a, 0x22, 0x04,
-  0x68, 0xa0, 0xaf, 0xbb, 0x16, 0x2d, 0xb9, 0x4f, 0xb1, 0xc4, 0xaf, 0x8c,
-  0x20, 0x50, 0xc8, 0xc4, 0xd9, 0xef, 0x7f, 0x74, 0xf6, 0xf6, 0xf5, 0xc9,
-  0x37, 0x8e, 0x78, 0x47, 0x84, 0xb8, 0x95, 0x04, 0x45, 0x9b, 0xe2, 0x49,
-  0x0e, 0x83, 0xde, 0x5a, 0x72, 0x4e, 0x81, 0xb8, 0x24, 0x9e, 0xde, 0x87,
-  0x3f, 0x80, 0x00, 0x59, 0x3c, 0x61, 0x5f, 0xb9, 0x10, 0x59, 0x54, 0xdb,
-  0xde, 0xf3, 0xd0, 0x22, 0x06, 0x93, 0x84, 0x8d, 0xb4, 0xac, 0x57, 0x4b,
-  0x87, 0x27, 0x0c, 0x4a, 0xd6, 0x29, 0xcd, 0xb0, 0x65, 0x8a, 0xaf, 0x96,
-  0x22, 0x9a, 0x34, 0xdf, 0xb3, 0xe1, 0xd8, 0x95, 0x3b, 0x80, 0x3d, 0x0b,
-  0xca, 0xfc, 0xa1, 0x17, 0x40, 0x04, 0xd1, 0x99, 0x31, 0x39, 0x61, 0x08,
-  0x9d, 0xb7, 0x50, 0xce, 0x14, 0x65, 0xff, 0xc2, 0xa2, 0xc9, 0x73, 0xb1,
-  0xcc, 0x78, 0xdc, 0xa8, 0x75, 0xeb, 0x70, 0x39, 0x0e, 0x08, 0xec, 0x43,
-  0x45, 0x95, 0x2b, 0xde, 0xeb, 0xa0, 0x4a, 0x96, 0x65, 0x9a, 0x22, 0x6a,
-  0x89, 0xb0, 0x27, 0x7e, 0xf2, 0x92, 0x23, 0x34, 0x07, 0x4c, 0xb6, 0x3d,
-  0x17, 0xfa, 0xae, 0x30, 0x3b, 0x54, 0xa5, 0xa4, 0x27, 0xc5, 0x3e, 0xb9,
-  0x0a, 0x12, 0xce, 0x04, 0x32, 0x68, 0x9b, 0x4e, 0xdc, 0xc5, 0xec, 0x6b,
-  0xd9, 0xfc, 0xc3, 0xe6, 0xa0, 0x7a, 0x98, 0x8f, 0x8b, 0x99, 0xe5, 0x60,
-  0x38, 0x7e, 0x07, 0x7b, 0x28, 0x2c, 0x21, 0x95, 0x48, 0xd0, 0xb6, 0x0e,
-  0x3c, 0x94, 0x1e, 0x36, 0xe5, 0xfb, 0x2f, 0x65, 0x58, 0x10, 0x29, 0xb2,
-  0x51, 0x38, 0xb2, 0x91, 0x6c, 0x31, 0x99, 0x15, 0xba, 0xab, 0x39, 0xff,
-  0x1b, 0x33, 0xd5, 0x1c, 0x3a, 0x07, 0xff, 0x8a, 0x15, 0x3b, 0x3b, 0x50,
-  0x62, 0x81, 0xd4, 0x1d, 0x76, 0x0e, 0xff, 0x60, 0x03, 0xe4, 0xb7, 0xe5,
-  0x17, 0x0a, 0xd0, 0x37, 0x96, 0x16, 0x6a, 0x48, 0x6a, 0x32, 0x50, 0x57,
-  0x7f, 0x16, 0xdf, 0xa2, 0x84, 0x00, 0xff, 0x62, 0x1f, 0xb7, 0x47, 0x5b,
-  0x53, 0x4f, 0xfb, 0x29, 0x2d, 0xaf, 0x95, 0x13, 0x4d, 0x83, 0x6a, 0x30,
-  0x12, 0x5d, 0xa5, 0x0c, 0xe7, 0xa3, 0x64, 0xa5, 0xc4, 0x01, 0x68, 0xa0,
-  0x3e, 0xad, 0x24, 0xe5, 0x4f, 0x13, 0xa2, 0xc4, 0x3b, 0xe9, 0x36, 0x62,
-  0x20, 0x71, 0xfe, 0xe0, 0x60, 0x29, 0xa9, 0xbf, 0xcb, 0x8c, 0xc0, 0xdf,
-  0xbb, 0x6a, 0xf5, 0x32, 0x0b, 0x5e, 0x63, 0x7f, 0x1e, 0x2c, 0xe1, 0x4c,
-  0x7d, 0x28, 0xf2, 0x29, 0xe8, 0x12, 0x4c, 0x07, 0x88, 0x3c, 0xa0, 0xac,
-  0xf2, 0x4d, 0xc8, 0xef, 0x5f, 0x6a, 0xe5, 0x1e, 0x3a, 0xcf, 0xca, 0x5f,
-  0xa2, 0x64, 0x6d, 0x5f, 0xec, 0xaa, 0x27, 0xae, 0x56, 0xe4, 0x6a, 0x95,
-  0x1c, 0x5e, 0x1c, 0x93, 0x66, 0x7b, 0xbd, 0x00, 0x85, 0xc4, 0xa2, 0xb6,
-  0x9c, 0xb7, 0x6c, 0xa1, 0xa5, 0x82, 0x16, 0x76, 0x3e, 0xf8, 0x83, 0xf7,
-  0xc1, 0x9b, 0xbc, 0x99, 0x14, 0x23, 0x20, 0xe9, 0xd5, 0x7e, 0xcb, 0x4d,
-  0x8c, 0x36, 0x15, 0x52, 0x87, 0x59, 0x0c, 0x64, 0x4b, 0x71, 0xb4, 0x84,
-  0x3e, 0x55, 0x18, 0x65, 0xea, 0x79, 0x24, 0xd6, 0x43, 0xae, 0x54, 0x9b,
-  0x6b, 0x9c, 0x6a, 0x9f, 0x95, 0xf0, 0x37, 0x63, 0x41, 0xd4, 0x6f, 0x35,
-  0x22, 0xa0, 0x7e, 0x3b, 0xf5, 0xbb, 0xbd, 0x47, 0x7f, 0xc3, 0x3d, 0xc3,
-  0xba, 0x48, 0x5b, 0x2f, 0xc8, 0x1c, 0xd8, 0x5e, 0x1c, 0xd9, 0xd3, 0x40,
-  0xf9, 0x95, 0x0c, 0x3d, 0x54, 0xee, 0x86, 0x8f, 0x9a, 0x95, 0x9f, 0xb4,
-  0xd2, 0x6c, 0x28, 0x35, 0x07, 0xa6, 0x7a, 0x56, 0x79, 0x57, 0x30, 0x72,
-  0x78, 0xcc, 0x9c, 0x3f, 0x52, 0xb9, 0xb7, 0x21, 0x9f, 0x3a, 0xdd, 0xbc,
-  0x7f, 0x70, 0xa3, 0xf5, 0x7d, 0x70, 0xbf, 0xe4, 0x1f, 0xbd, 0x74, 0xbc,
-  0x68, 0xa8, 0x40, 0xce, 0x1f, 0x82, 0x48, 0x45, 0xf8, 0x94, 0xff, 0x82,
-  0x1f, 0x03, 0x00, 0x67, 0xdc, 0x92, 0x0d, 0x1a, 0x23, 0x2d, 0x0e, 0x12,
-  0x76, 0x44, 0x62, 0x7c, 0x90, 0xd0, 0xe3, 0x50, 0x35, 0x1e, 0x7c, 0xb7,
-  0x63, 0xd5, 0x3e, 0xd9, 0x95, 0xc3, 0xf9, 0xbd, 0x76, 0xe0, 0xab, 0xac,
-  0x51, 0x1e, 0xd4, 0x25, 0x0d, 0xf5, 0x06, 0x3d, 0x9a, 0x8b, 0xcd, 0xd9,
-  0xcc, 0x0b, 0x7c, 0x7b, 0x8c, 0x57, 0x15, 0xf9, 0x75, 0x5e, 0x61, 0x52,
-  0xd9, 0xc5, 0x75, 0x07, 0x1e, 0x1a, 0xd9, 0x0e, 0x5c, 0xb8, 0x89, 0x93,
-  0x81, 0x1c, 0x0d, 0x15, 0x32, 0x46, 0x80, 0x17, 0xb8, 0xcb, 0x2b, 0x8b,
-  0x43, 0xd2, 0xde, 0x9e, 0x08, 0x3c, 0xa2, 0x16, 0xbe, 0x80, 0xac, 0x9e,
-  0x04, 0x53, 0x99, 0x4d, 0x6e, 0x0a, 0x81, 0xd7, 0xd2, 0xa4, 0x05, 0x89,
-  0x98, 0xbd, 0xe4, 0x7f, 0xea, 0x1e, 0xf8, 0xce, 0xe7, 0xef, 0xf1, 0x46,
-  0x18, 0x0a, 0xeb, 0xdf, 0xd0, 0x6f, 0x88, 0xe3, 0x1f, 0x2f, 0x2f, 0x0e,
-  0x93, 0x6f, 0x8f, 0x0f, 0x5f, 0x1d, 0x5f, 0x8c, 0x5a, 0x97, 0xbe, 0x22,
-  0x41, 0x44, 0x43, 0x63, 0x7f, 0x30, 0x54, 0x63, 0xe3, 0x05, 0x50, 0x08,
-  0xbf, 0x49, 0x3d, 0xda, 0x3c, 0x7c, 0x90, 0xe8, 0x7c, 0xb0, 0x41, 0x24,
-  0x81, 0x03, 0xf0, 0xbb, 0x56, 0x10, 0x36, 0xae, 0x8d, 0x09, 0x49, 0x28,
-  0xc6, 0x33, 0x98, 0xf7, 0x3c, 0x4c, 0x9e, 0xf1, 0xcc, 0x72, 0xfe, 0x32,
-  0x99, 0x16, 0x96, 0x17, 0xd8, 0x5c, 0xb9, 0x6f, 0x7d, 0x3a, 0x76, 0x20,
-  0xb6, 0xf4, 0x92, 0x51, 0x07, 0x62, 0xef, 0xc7, 0x01, 0x7d, 0x77, 0x40,
-  0x93, 0x3f, 0x60, 0x46, 0xc0, 0x87, 0xac, 0xea, 0xb5, 0xbc, 0x81, 0xcd,
-  0xcf, 0x6f, 0x48, 0xb1, 0x9a, 0xe8, 0x24, 0x7d, 0xdb, 0xd9, 0x12, 0x9f,
-  0x2e, 0xae, 0x67, 0x1b, 0x59, 0x10, 0xb8, 0x54, 0x03, 0x25, 0x59, 0x4f,
-  0x50, 0x94, 0xe9, 0xa2, 0x58, 0x25, 0x6f, 0x66, 0x2a, 0x34, 0x0c, 0x1d,
-  0xd1, 0x21, 0x40, 0xd7, 0xa1, 0xb3, 0x27, 0x97, 0x3a, 0xfc, 0x22, 0x46,
-  0x56, 0x4b, 0xdd, 0xd2, 0x87, 0xc2, 0xfb, 0x01, 0xb1, 0x10, 0x85, 0xe3,
-  0x57, 0x8d, 0x50, 0xa9, 0xfa, 0x45, 0x95, 0xa5, 0x58, 0x9b, 0xe3, 0x3e,
-  0xb8, 0x3d, 0x6f, 0x28, 0x7e, 0xfe, 0xa4, 0x15, 0x50, 0xd0, 0x77, 0x05,
-  0x10, 0xc6, 0x46, 0x3d, 0x5c, 0x9d, 0x52, 0x89, 0x51, 0xca, 0xb1, 0x89,
-  0x60, 0x0b, 0xd2, 0x82, 0xc2, 0xcd, 0x8c, 0x6a, 0x4f, 0x00, 0x92, 0xbb,
-  0xe7, 0xb2, 0xe4, 0xdb, 0xa2, 0xc2, 0x5d, 0x10, 0x3f, 0xce, 0x97, 0x7c,
-  0xd7, 0xf4, 0xe3, 0x0d, 0x0d, 0x75, 0x39, 0x4a, 0x4e, 0x30, 0xd8, 0x42,
-  0x7c, 0x9d, 0x1f, 0x5e, 0x7e, 0x8b, 0x40, 0x2b, 0xb6, 0xf0, 0x2b, 0x10,
-  0x9a, 0x58, 0x78, 0x2d, 0xce, 0xce, 0x72, 0x06, 0x9c, 0xe8, 0xbf, 0x46,
-  0x23, 0x68, 0xfa, 0x24, 0x02, 0x79, 0xb9, 0x60, 0x92, 0x66, 0x52, 0xfd,
-  0x12, 0x32, 0xba, 0x51, 0x81, 0x0c, 0x28, 0x78, 0x97, 0x7a, 0xe7, 0xa0,
-  0x97, 0x9b, 0x92, 0xa7, 0xbe, 0x29, 0x63, 0xc2, 0xa6, 0x67, 0x65, 0x8e,
-  0x2d, 0x9e, 0x90, 0xe7, 0x15, 0xbf, 0xe0, 0x44, 0x64, 0x89, 0x45, 0x4d,
-  0x8b, 0x6e, 0x96, 0xbe, 0xe0, 0x48, 0x7f, 0x35, 0x7f, 0x18, 0xc6, 0xfc,
-  0x38, 0xc9, 0xd7, 0xab, 0xba, 0x29, 0x56, 0x5a, 0x6c, 0xb3, 0x4e, 0xb3,
-  0x2c, 0x8b, 0xa2, 0x0e, 0xfa, 0x00, 0xed, 0x27, 0xad, 0xf5, 0x44, 0x0b,
-  0x1d, 0xa3, 0xf4, 0x85, 0x9b, 0x5a, 0xa8, 0xde, 0x1d, 0x2a, 0x86, 0xe9,
-  0xb8, 0x2a, 0x66, 0xab, 0x3a, 0x00, 0x62, 0xff, 0xba, 0x3e, 0x07, 0x9d,
-  0xde, 0x3a, 0x19, 0x1a, 0x35, 0x25, 0x17, 0x2f, 0x26, 0x25, 0x9c, 0x2c,
-  0x7d, 0x52, 0x2f, 0x11, 0x77, 0x2c, 0x8b, 0x45, 0xb3, 0x4c, 0x16, 0x30,
-  0xdf, 0xdb, 0x1b, 0x1b, 0x23, 0x5b, 0x6c, 0x26, 0x07, 0x8d, 0x17, 0xfd,
-  0x07, 0x68, 0x93, 0xdc, 0x07, 0x89, 0x1b, 0x4c, 0xe8, 0x2f, 0x46, 0xcd,
-  0x96, 0xc9, 0x9a, 0x42, 0x84, 0xcb, 0x1a, 0xe7, 0x55, 0x73, 0x50, 0xf8,
-  0x95, 0x8b, 0x5c, 0x58, 0xaa, 0xd9, 0x65, 0x61, 0x94, 0xe5, 0x1a, 0xb9,
-  0xf3, 0x1b, 0xa2, 0x91, 0xac, 0xde, 0xc9, 0xe7, 0xcb, 0x97, 0x80, 0xd5,
-  0x54, 0x75, 0xc8, 0x5c, 0xee, 0xe4, 0xce, 0xff, 0xda, 0x49, 0xfa, 0x89,
-  0x96, 0xbb, 0xee, 0xe0, 0x20, 0xfa, 0x7f, 0x80, 0xc1, 0x52, 0x32, 0x55,
-  0x6e, 0xb3, 0xc5, 0x40, 0x3a, 0x24, 0x13, 0xea, 0xa6, 0x9c, 0xf8, 0xdd,
-  0x4f, 0xda, 0x41, 0x76, 0xcf, 0xf6, 0x8b, 0xd9, 0x08, 0xca, 0xe6, 0x21,
-  0x65, 0x4d, 0x1d, 0x3f, 0x12, 0xd8, 0x30, 0xae, 0x9c, 0x57, 0x8f, 0x2b,
-  0x0c, 0x4a, 0xb9, 0x3d, 0x51, 0xeb, 0x51, 0x6d, 0xc6, 0x22, 0xa8, 0x92,
-  0xf0, 0xee, 0xec, 0xf6, 0x2a, 0xa9, 0x0a, 0xf9, 0xaf, 0xe5, 0x1f, 0x29,
-  0xc6, 0x4b, 0xb7, 0x7f, 0x50, 0xc5, 0x2c, 0x28, 0xff, 0x69, 0xe0, 0x53,
-  0x01, 0xd6, 0x59, 0x64, 0xd2, 0x3a, 0x69, 0x5a, 0x00, 0x07, 0x2e, 0x41,
-  0xc2, 0xa8, 0xc4, 0x20, 0x0c, 0x2a, 0x63, 0xae, 0x58, 0xc9, 0xdf, 0xe6,
-  0xfa, 0x74, 0x66, 0xc9, 0xd8, 0x95, 0x6a, 0x19, 0x1d, 0x1b, 0x61, 0xb5,
-  0x60, 0xe9, 0xbe, 0xde, 0xfd, 0xc8, 0x91, 0x47, 0x90, 0xee, 0x3e, 0x65,
-  0x1a, 0x33, 0xaf, 0x12, 0xd8, 0x90, 0xb4, 0xc2, 0xa5, 0xe0, 0x38, 0x42,
-  0x6c, 0x8a, 0x07, 0x6f, 0x5e, 0x73, 0xc2, 0x87, 0xba, 0xa4, 0x94, 0x6a,
-  0x04, 0xfe, 0xaf, 0x9b, 0x5c, 0x21, 0xa6, 0x32, 0xeb, 0xcd, 0xfa, 0x81,
-  0xf0, 0xf0, 0x31, 0xba, 0xc0, 0x07, 0x58, 0x1d, 0x06, 0x62, 0x18, 0x1f,
-  0x98, 0xa1, 0xe3, 0x00, 0xd5, 0x4b, 0xe4, 0x24, 0x4c, 0x2f, 0x17, 0x40,
-  0x86, 0x83, 0x3d, 0x7f, 0xe2, 0xd7, 0xc3, 0x4f, 0x32, 0x9e, 0x75, 0x91,
-  0x48, 0x2e, 0x89, 0x32, 0xb9, 0xf1, 0x85, 0xb2, 0xbf, 0x07, 0xc3, 0x54,
-  0xe0, 0x1b, 0x60, 0xd5, 0xb4, 0x16, 0x8c, 0xce, 0xac, 0x3d, 0xf9, 0xdb,
-  0x7d, 0x9d, 0x25, 0x97, 0x7c, 0xaf, 0xd1, 0x66, 0xd1, 0x0b, 0x83, 0xb8,
-  0x53, 0xa3, 0x4e, 0x96, 0x24, 0x74, 0x57, 0x75, 0xb9, 0x9a, 0x34, 0x18,
-  0xf4, 0xb0, 0x23, 0x1a, 0x51, 0x7a, 0x37, 0xc7, 0x45, 0x68, 0xdb, 0x9f,
-  0x9c, 0xab, 0x79, 0x2f, 0xd6, 0x07, 0xf7, 0x6c, 0x2b, 0x6d, 0xe4, 0xbb,
-  0xb8, 0x12, 0x8a, 0xe1, 0x77, 0xb7, 0xdd, 0x2e, 0x1b, 0x9c, 0xbb, 0xe4,
-  0xfa, 0x56, 0x21, 0x6c, 0x4e, 0x54, 0x08, 0xee, 0x5e, 0x55, 0xc4, 0xa0,
-  0x78, 0x94, 0x89, 0x52, 0x22, 0x42, 0xad, 0x61, 0x97, 0xe5, 0x86, 0xa3,
-  0x2d, 0xa4, 0x2e, 0x0d, 0x14, 0xb5, 0x2a, 0x81, 0xe0, 0x1d, 0x9a, 0x48,
-  0x2b, 0x84, 0xe2, 0x2a, 0x00, 0x55, 0x9e, 0xfa, 0xb0, 0x05, 0x59, 0x05,
-  0x83, 0x92, 0xd3, 0x0f, 0x95, 0xcb, 0x4d, 0xe7, 0x6f, 0xe8, 0x0a, 0xd3,
-  0xeb, 0x17, 0xda, 0xea, 0x44, 0x7c, 0x37, 0x9e, 0x0b, 0x53, 0x49, 0xb4,
-  0x8f, 0x5e, 0x99, 0x4f, 0x15, 0x22, 0x07, 0x73, 0xc3, 0x96, 0x8d, 0x2d,
-  0x12, 0xcd, 0xab, 0x7d, 0x82, 0xba, 0xc0, 0x23, 0xde, 0x9c, 0x65, 0xbb,
-  0x9b, 0x41, 0x09, 0xa3, 0x2d, 0xc1, 0xff, 0x17, 0xb0, 0x7e, 0x1c, 0x97,
-  0xa0, 0x78, 0x2f, 0x18, 0xe7, 0xb6, 0xdd, 0xd1, 0x15, 0x6a, 0xe2, 0xd7,
-  0x76, 0x66, 0xef, 0xf9, 0xfe, 0x70, 0xef, 0xb3, 0x2f, 0x86, 0xbb, 0xc3,
-  0xbd, 0x5d, 0x96, 0x2f, 0xdc, 0x95, 0xa0, 0x73, 0x32, 0x2f, 0x1d, 0x9f,
-  0x6a, 0xbc, 0x17, 0x7f, 0xf3, 0xed, 0xf1, 0xe5, 0x0f, 0x67, 0x17, 0xdf,
-  0x25, 0x27, 0x6f, 0x2f, 0x8f, 0x2f, 0x5e, 0x1f, 0x1e, 0x7d, 0x2a, 0x3d,
-  0x7a, 0xe8, 0xb6, 0x0e, 0xaa, 0xf8, 0x66, 0x7e, 0x62, 0x62, 0xdf, 0xa0,
-  0x9f, 0xb3, 0xac, 0xbe, 0xd9, 0x3d, 0xd8, 0x7b, 0x94, 0x40, 0xb9, 0xc3,
-  0x3d, 0xe8, 0xdf, 0xb7, 0x41, 0xed, 0xf1, 0xa0, 0xd6, 0xb7, 0xe2, 0x98,
-  0x13, 0x47, 0x02, 0xb3, 0x72, 0x10, 0x5d, 0x88, 0x79, 0x14, 0x89, 0xc9,
-  0xc7, 0x65, 0x6a, 0x8e, 0xa9, 0xb1, 0xb0, 0xb8, 0x4a, 0xa6, 0xad, 0x72,
-  0xc0, 0x28, 0x1c, 0x5d, 0x65, 0xee, 0x86, 0x54, 0xcc, 0xad, 0xd5, 0x9d,
-  0x22, 0xa4, 0xac, 0x53, 0xa8, 0x78, 0x26, 0x95, 0x35, 0x8d, 0x8d, 0x77,
-  0x8b, 0x16, 0x71, 0x14, 0x3e, 0xc0, 0xa9, 0x4b, 0x19, 0x71, 0x84, 0x04,
-  0x40, 0x41, 0x98, 0x9e, 0x8e, 0xbe, 0x36, 0x8b, 0x1e, 0x87, 0x48, 0xda,
-  0x16, 0x23, 0x6a, 0x65, 0x10, 0x67, 0x0c, 0xac, 0xe1, 0x1a, 0x3d, 0xd2,
-  0x8e, 0xe0, 0x34, 0x04, 0xbd, 0x91, 0x4f, 0x41, 0xa1, 0x32, 0x6a, 0xee,
-  0x26, 0x9f, 0xaf, 0xdc, 0x51, 0x48, 0xa3, 0x10, 0xfd, 0xcf, 0x6a, 0x08,
-  0x70, 0xeb, 0x55, 0x83, 0x43, 0x30, 0x91, 0xc2, 0x3d, 0xe1, 0xeb, 0xa2,
-  0x6a, 0x03, 0xa8, 0x39, 0x2d, 0xd3, 0x7b, 0x54, 0x9f, 0xc8, 0x3d, 0x23,
-  0xe8, 0x46, 0xd2, 0xa8, 0x3e, 0xc4, 0x8a, 0x93, 0x9f, 0xf3, 0xe4, 0xfc,
-  0xf8, 0xcd, 0xc0, 0x6a, 0xa6, 0xd2, 0xdf, 0xc5, 0x19, 0x65, 0xf4, 0x8f,
-  0x92, 0xe6, 0xb3, 0xcc, 0x16, 0x06, 0xab, 0x81, 0x4c, 0x54, 0x1c, 0x50,
-  0x38, 0x00, 0x3e, 0x34, 0x8e, 0x20, 0x52, 0xd1, 0xa3, 0x06, 0xbf, 0x74,
-  0x0c, 0xa6, 0x0d, 0xd6, 0x4c, 0x5e, 0x4f, 0xc5, 0x2e, 0x27, 0x5b, 0x0e,
-  0xaf, 0xcb, 0xdf, 0x03, 0x28, 0x15, 0x98, 0x01, 0x07, 0x13, 0x28, 0x2c,
-  0x09, 0xfb, 0xfc, 0xbb, 0xa3, 0xd1, 0x1f, 0xf6, 0xf6, 0xb5, 0x3b, 0xdb,
-  0x43, 0xcf, 0xaf, 0x1b, 0xe5, 0xe7, 0x43, 0x5c, 0x87, 0x7d, 0xb4, 0x6c,
-  0x6b, 0x1c, 0x70, 0x2c, 0xc6, 0x96, 0xcb, 0x11, 0xda, 0x6e, 0x24, 0x09,
-  0x6d, 0x48, 0xe9, 0x6e, 0x53, 0x31, 0x5d, 0x5d, 0x53, 0x0e, 0x89, 0xa0,
-  0xfa, 0x8d, 0xd6, 0x9f, 0xa9, 0x1d, 0xea, 0x2f, 0x5d, 0xd8, 0x8f, 0xa4,
-  0x65, 0x6d, 0x0d, 0xe9, 0xe4, 0x1e, 0xd9, 0xd2, 0x5e, 0x73, 0x9e, 0x6f,
-  0xff, 0x5b, 0xa6, 0x71, 0xd5, 0x9b, 0xdd, 0xf8, 0x7a, 0xfc, 0x67, 0x70,
-  0x00, 0x14, 0xc8, 0x3e, 0xb5, 0x0a, 0x57, 0x0b, 0x5f, 0x74, 0x82, 0x9f,
-  0x3e, 0xa3, 0x85, 0xa2, 0x93, 0x25, 0x14, 0x0e, 0x2c, 0x14, 0x8a, 0x19,
-  0x9b, 0x2e, 0xee, 0x91, 0x57, 0x25, 0x57, 0xf7, 0x58, 0x0a, 0xa4, 0xf4,
-  0xed, 0x30, 0xf9, 0x36, 0x5b, 0x70, 0x0e, 0x3d, 0x83, 0xef, 0x2c, 0x0d,
-  0x0b, 0x10, 0x41, 0x2e, 0xb1, 0x87, 0x92, 0x63, 0xa7, 0x59, 0xaa, 0x94,
-  0x99, 0x24, 0xeb, 0x2a, 0xb1, 0x70, 0xad, 0xdc, 0x4e, 0xca, 0x40, 0x3d,
-  0xe5, 0xf7, 0x74, 0xbc, 0x17, 0xfc, 0x80, 0x34, 0xb0, 0xd5, 0xe4, 0xbd,
-  0x04, 0x81, 0x3e, 0x9a, 0xd3, 0x63, 0x8e, 0x58, 0x93, 0x7a, 0x95, 0x6f,
-  0x40, 0xfe, 0xcc, 0xde, 0x42, 0xb1, 0xb8, 0xbc, 0x50, 0x99, 0x96, 0x37,
-  0xec, 0xfa, 0xa8, 0xe8, 0xba, 0x49, 0x17, 0x93, 0x87, 0xe1, 0x94, 0x74,
-  0x59, 0x76, 0x9e, 0x0d, 0x57, 0xb7, 0x3b, 0xc1, 0x31, 0x65, 0x91, 0x7f,
-  0x23, 0x74, 0x01, 0x4d, 0xc7, 0xb7, 0xd5, 0x72, 0x8d, 0x99, 0xbd, 0xd2,
-  0xc6, 0x99, 0xe0, 0x2d, 0x61, 0x89, 0xff, 0x72, 0x3c, 0xd7, 0x72, 0x60,
-  0x1d, 0x27, 0x8e, 0x77, 0x98, 0x5b, 0x18, 0x2e, 0xb3, 0xf9, 0x81, 0x4b,
-  0x4c, 0x36, 0xf9, 0xa0, 0x35, 0x0c, 0x9c, 0x61, 0x11, 0x38, 0x69, 0x17,
-  0xd9, 0xf5, 0x4c, 0x15, 0x8a, 0xd0, 0x74, 0xf1, 0x3c, 0xd2, 0x71, 0x36,
-  0x88, 0x18, 0x3c, 0xf7, 0xc2, 0xb8, 0x0a, 0x8d, 0x9d, 0xf6, 0x61, 0xad,
-  0xe8, 0x5a, 0x79, 0x18, 0xf5, 0xd4, 0x7d, 0x23, 0x4a, 0x22, 0x02, 0x0a,
-  0x64, 0xd4, 0xcd, 0x16, 0x17, 0x8f, 0x81, 0x92, 0x34, 0xfc, 0xc4, 0x3c,
-  0xad, 0xd8, 0x21, 0x20, 0x1d, 0x57, 0x80, 0x34, 0x82, 0x9f, 0x56, 0x32,
-  0x55, 0xce, 0x0a, 0xfd, 0xfa, 0xee, 0x09, 0x7b, 0xbc, 0x2f, 0x4f, 0x47,
-  0x16, 0x15, 0x59, 0x64, 0xf7, 0xc1, 0xd6, 0x12, 0xa2, 0x7c, 0xdd, 0x7f,
-  0xec, 0x00, 0x12, 0xc6, 0x63, 0x10, 0x1f, 0xa0, 0x27, 0x22, 0x15, 0x7c,
-  0x98, 0xcc, 0xe7, 0x41, 0xd8, 0x24, 0x28, 0xa2, 0x98, 0xbb, 0x62, 0x95,
-  0x9d, 0x44, 0x19, 0x72, 0xa4, 0x2f, 0x4c, 0xad, 0x47, 0xca, 0xd2, 0x93,
-  0x7e, 0x32, 0xd8, 0x07, 0x95, 0xce, 0x5e, 0x73, 0x12, 0xd3, 0x5a, 0x58,
-  0xfc, 0xb8, 0x0d, 0x6a, 0xc9, 0x5a, 0x51, 0x71, 0xb0, 0xa5, 0x5b, 0xfa,
-  0x8e, 0xde, 0xe7, 0xff, 0xec, 0xeb, 0x80, 0xee, 0xf6, 0x00, 0xde, 0x16,
-  0x5a, 0xc9, 0xd9, 0x43, 0xac, 0x32, 0xec, 0x3f, 0xba, 0xaa, 0x48, 0x93,
-  0xb8, 0xcf, 0x1d, 0xbf, 0xb3, 0x50, 0xfc, 0xc3, 0x15, 0xaa, 0x8c, 0x9d,
-  0xd6, 0x01, 0x9a, 0x42, 0x75, 0x72, 0x2f, 0x92, 0xbb, 0x7d, 0x8b, 0x35,
-  0xf3, 0x6f, 0x6c, 0xde, 0xc4, 0x59, 0xef, 0x85, 0x48, 0x94, 0xc1, 0xc8,
-  0x80, 0xb7, 0x60, 0xd7, 0x72, 0x02, 0x14, 0xed, 0x59, 0x92, 0x22, 0x0d,
-  0x29, 0x53, 0x2c, 0xd4, 0xad, 0x20, 0xd9, 0xef, 0xe9, 0x42, 0x16, 0x83,
-  0xf4, 0x60, 0x0f, 0x73, 0x02, 0x08, 0x3c, 0x00, 0x47, 0x9e, 0x2c, 0x5c,
-  0xce, 0x84, 0xba, 0xf2, 0xc1, 0xa0, 0x87, 0xe5, 0xbf, 0xc9, 0xc5, 0x31,
-  0x01, 0xd8, 0x29, 0xae, 0x73, 0x3a, 0xf9, 0x9b, 0x09, 0x1d, 0xa6, 0x15,
-  0x4b, 0xfc, 0xda, 0x95, 0x99, 0x1a, 0x09, 0xf3, 0xe6, 0x66, 0x28, 0xe6,
-  0x06, 0x5f, 0xf2, 0x50, 0xaa, 0x4d, 0x3f, 0x76, 0x25, 0x1e, 0x6f, 0x0e,
-  0x44, 0xe3, 0x1c, 0x56, 0x58, 0xe9, 0xbc, 0xb4, 0xfa, 0xd1, 0x9b, 0xc7,
-  0x1f, 0x58, 0xc7, 0xd9, 0xd4, 0x2f, 0xc9, 0xaf, 0x25, 0xbd, 0x1f, 0x73,
-  0x74, 0x7e, 0xf2, 0x56, 0x2a, 0x22, 0xbb, 0xb3, 0x90, 0x31, 0x33, 0xe2,
-  0x86, 0x14, 0xf3, 0x46, 0x7f, 0x52, 0xa5, 0x90, 0x48, 0xc4, 0x71, 0xc4,
-  0x7b, 0x86, 0xf7, 0x78, 0xae, 0xdf, 0xba, 0x58, 0xc9, 0xd7, 0x37, 0xf9,
-  0x9e, 0xab, 0xaa, 0xd9, 0x66, 0xab, 0xca, 0xa7, 0x5b, 0x93, 0xd6, 0x85,
-  0xe2, 0x3c, 0x52, 0x93, 0x69, 0x58, 0x23, 0x5d, 0x5b, 0x69, 0xc8, 0xb9,
-  0x7e, 0x2b, 0xe9, 0x31, 0x74, 0x85, 0xff, 0x21, 0x19, 0xee, 0xd0, 0x07,
-  0xab, 0x1d, 0x7b, 0x71, 0x79, 0x3b, 0xa9, 0xe8, 0x86, 0xe3, 0x0c, 0xdf,
-  0x9f, 0x1c, 0x3b, 0x3c, 0xf7, 0x78, 0xfa, 0x4b, 0x32, 0x98, 0xcc, 0x30,
-  0xbe, 0x04, 0xf5, 0x84, 0x7f, 0xa2, 0x95, 0xe7, 0x27, 0x7e, 0x71, 0x6b,
-  0xf8, 0x3a, 0xe7, 0xf3, 0xf6, 0xa1, 0x6f, 0x43, 0x3f, 0x13, 0x83, 0x41,
-  0xe8, 0x67, 0x93, 0xc3, 0xe9, 0x1d, 0xe7, 0xdf, 0x4d, 0xf5, 0x9f, 0x3c,
-  0x9e, 0xe3, 0x05, 0x2a, 0x31, 0x62, 0xa4, 0xe9, 0x58, 0x8a, 0x2f, 0x7f,
-  0x9f, 0x93, 0xd1, 0x71, 0xd4, 0xd2, 0x2f, 0x38, 0x15, 0x90, 0x3b, 0x88,
-  0xb7, 0x82, 0x5f, 0x5a, 0x5e, 0x47, 0x5f, 0xd3, 0x17, 0x3c, 0xf2, 0x8f,
-  0xa5, 0x33, 0x2f, 0xdd, 0x30, 0xf9, 0x9a, 0x63, 0x9c, 0x65, 0x16, 0x90,
-  0xb3, 0xea, 0xc5, 0x27, 0x15, 0xcb, 0x78, 0x31, 0x52, 0xa1, 0xa2, 0x18,
-  0xba, 0x91, 0x44, 0xe9, 0x30, 0x6e, 0x4c, 0xee, 0x37, 0xcd, 0xc1, 0xa1,
-  0x5f, 0x96, 0xdd, 0x4e, 0x43, 0xb1, 0xd4, 0x89, 0x24, 0x1a, 0x4a, 0x40,
-  0x1b, 0x29, 0x3d, 0x94, 0x0b, 0x73, 0x9a, 0x59, 0x8e, 0x7f, 0x11, 0x12,
-  0xab, 0x98, 0xe7, 0x18, 0x4d, 0x99, 0x46, 0xe0, 0xb6, 0x04, 0xee, 0x70,
-  0xdf, 0xeb, 0xa3, 0x1b, 0x12, 0xcd, 0x99, 0xeb, 0xea, 0x48, 0x5c, 0x7a,
-  0xd6, 0xc5, 0x11, 0xdf, 0x51, 0xb6, 0x08, 0xee, 0x97, 0x96, 0x28, 0x09,
-  0x2d, 0x74, 0x47, 0x64, 0x97, 0xdb, 0xbb, 0x32, 0xbb, 0xcd, 0x21, 0x70,
-  0x7e, 0xe3, 0xe8, 0xdd, 0x1b, 0x2e, 0xc4, 0x81, 0x02, 0xbd, 0x97, 0x17,
-  0x87, 0x6f, 0x47, 0xaf, 0xc5, 0x35, 0x7e, 0x59, 0x04, 0x75, 0x7f, 0x35,
-  0xae, 0x60, 0xf1, 0x63, 0xc7, 0x18, 0x77, 0x2f, 0xd5, 0x21, 0x0c, 0x5a,
-  0xaf, 0x45, 0x81, 0xfb, 0x6d, 0x16, 0x7c, 0xa9, 0x28, 0xcc, 0xb3, 0xc1,
-  0x5d, 0xdb, 0x1a, 0x6d, 0x3b, 0x45, 0xa8, 0x0a, 0x2b, 0x60, 0xf9, 0xc2,
-  0xdc, 0x46, 0xdc, 0xac, 0x0f, 0xf1, 0xb4, 0x1c, 0x59, 0x67, 0xec, 0xa7,
-  0x72, 0xf7, 0xae, 0xe5, 0x0a, 0x3d, 0x22, 0x53, 0x71, 0xa0, 0x75, 0x55,
-  0x82, 0x7a, 0x5f, 0xce, 0x9d, 0x2a, 0x77, 0xaf, 0xb2, 0xfa, 0xb9, 0xc6,
-  0xc3, 0x14, 0x50, 0x6b, 0x7a, 0xeb, 0xdf, 0xf6, 0xb6, 0xbb, 0x9b, 0xbf,
-  0xfc, 0xb5, 0xcd, 0x77, 0xf7, 0xdd, 0x6c, 0x33, 0x9f, 0x5d, 0xb4, 0xf5,
-  0x6f, 0xfb, 0xdb, 0x8f, 0x8e, 0x28, 0x4c, 0x90, 0xf4, 0xdf, 0xa4, 0x37,
-  0xb8, 0xb3, 0xc9, 0x4b, 0x2b, 0xf3, 0xae, 0x3a, 0x93, 0x43, 0xe8, 0x04,
-  0x74, 0xc0, 0x0d, 0xee, 0x0e, 0x46, 0x70, 0x3b, 0x4d, 0xdd, 0x07, 0xde,
-  0x34, 0xd1, 0xe4, 0xe4, 0x7f, 0x1c, 0x87, 0x2c, 0x8f, 0x8b, 0xcd, 0x3a,
-  0xbc, 0xa2, 0x98, 0x28, 0xa0, 0x2a, 0x86, 0xf8, 0xf6, 0xfe, 0x23, 0xdf,
-  0xf6, 0xa3, 0x0b, 0xdc, 0x12, 0x1c, 0xc5, 0x66, 0x18, 0x9c, 0x91, 0x55,
-  0xeb, 0x77, 0x36, 0x7c, 0x41, 0xe9, 0xf5, 0xdf, 0xbb, 0x3c, 0x79, 0x73,
-  0xcc, 0xa4, 0xd6, 0xaf, 0x4e, 0x98, 0x87, 0x6e, 0xa4, 0x4c, 0x90, 0xe6,
-  0x81, 0x70, 0x84, 0xb9, 0x61, 0x75, 0x14, 0x09, 0xef, 0x3a, 0xb4, 0x99,
-  0x93, 0x1c, 0x6e, 0x25, 0xf8, 0xd3, 0x0a, 0x87, 0xae, 0x2c, 0xe9, 0xf2,
-  0xe4, 0x6a, 0xf0, 0xa6, 0x98, 0xc2, 0x4a, 0x1e, 0x8c, 0x00, 0x15, 0xa4,
-  0xb7, 0xe8, 0x87, 0xef, 0x16, 0xf3, 0xc6, 0x8f, 0x87, 0x1d, 0x49, 0xbb,
-  0x1b, 0xeb, 0x4a, 0xc8, 0xfc, 0x7d, 0x67, 0x30, 0x40, 0x39, 0x77, 0x81,
-  0x75, 0x69, 0x70, 0xa7, 0x41, 0xd5, 0x61, 0xa2, 0x85, 0x26, 0x28, 0x9f,
-  0x3d, 0x08, 0x10, 0x21, 0xf5, 0xf0, 0x31, 0x9f, 0xc8, 0x79, 0xcd, 0xc9,
-  0x64, 0xde, 0xc5, 0x27, 0x4e, 0xbc, 0x8d, 0x90, 0x5b, 0x14, 0x86, 0x54,
-  0x76, 0xef, 0xf1, 0x4f, 0x5a, 0x9d, 0xb6, 0x58, 0x3e, 0x60, 0x94, 0xf7,
-  0x0d, 0x68, 0x45, 0x67, 0x7c, 0xf5, 0xef, 0xf2, 0x4e, 0xa3, 0x68, 0x92,
-  0x52, 0x40, 0x07, 0x3b, 0x50, 0x7f, 0xa2, 0x35, 0x86, 0xce, 0xca, 0xe0,
-  0xba, 0xd2, 0x6e, 0x5b, 0x2d, 0xb1, 0x80, 0x77, 0x34, 0xa0, 0x49, 0x6d,
-  0xf6, 0x33, 0xe4, 0x68, 0x2d, 0x38, 0x0b, 0xf6, 0x55, 0xe1, 0x82, 0x63,
-  0x24, 0x76, 0x96, 0xcd, 0xfa, 0xaf, 0x59, 0x62, 0xf9, 0xde, 0x92, 0xce,
-  0xbf, 0x39, 0xd8, 0x44, 0xd9, 0x84, 0x7c, 0xd1, 0x31, 0x98, 0xc1, 0xaf,
-  0x1f, 0x4d, 0x14, 0x7a, 0x4d, 0x7a, 0x57, 0xcc, 0x89, 0xc1, 0x71, 0xac,
-  0x9e, 0x74, 0x40, 0x28, 0x63, 0x64, 0x73, 0xd1, 0x05, 0xc1, 0x72, 0xcd,
-  0x0c, 0x49, 0x31, 0xaa, 0x1d, 0x32, 0xd6, 0x39, 0xc9, 0xc5, 0x2b, 0xc9,
-  0x82, 0x74, 0xb5, 0x9c, 0x02, 0x94, 0x21, 0x70, 0xd4, 0xff, 0xc6, 0x9c,
-  0xd5, 0xe5, 0x43, 0xb2, 0xb7, 0xdf, 0x4f, 0xf6, 0x77, 0xf7, 0xf6, 0x3b,
-  0xc6, 0xd0, 0xfb, 0x6f, 0x0c, 0x8a, 0xda, 0xc7, 0xaf, 0x7b, 0x9f, 0x3a,
-  0x0a, 0x9f, 0xda, 0x80, 0x9b, 0x44, 0x93, 0x80, 0x49, 0xf8, 0x70, 0x7c,
-  0x56, 0x0a, 0xd8, 0x73, 0x51, 0x58, 0x30, 0xdb, 0xe1, 0xda, 0x12, 0x27,
-  0xa1, 0x15, 0x34, 0x74, 0x85, 0xae, 0xf8, 0x89, 0x0d, 0xad, 0xcb, 0x09,
-  0xe4, 0x8b, 0xf3, 0x94, 0xa6, 0x25, 0xaa, 0x35, 0x36, 0xd7, 0x28, 0xaf,
-  0x6d, 0x59, 0x18, 0x5a, 0xc3, 0x6b, 0x43, 0xfb, 0xfd, 0xd5, 0xc9, 0xd1,
-  0xa5, 0x51, 0x1f, 0x5e, 0xb1, 0xf2, 0x54, 0x3e, 0x7c, 0x5a, 0xe9, 0xbb,
-  0x47, 0x9f, 0x99, 0x1e, 0xdc, 0x64, 0xa4, 0x46, 0x2f, 0xc6, 0xab, 0xeb,
-  0x83, 0xbf, 0xa6, 0xe5, 0x75, 0xb1, 0xf8, 0xd8, 0xf3, 0x53, 0xe4, 0x96,
-  0x1d, 0x90, 0x84, 0xda, 0x7b, 0xbe, 0xf7, 0x44, 0x12, 0x17, 0x72, 0xae,
-  0x93, 0x09, 0x01, 0xb1, 0x39, 0xdf, 0x14, 0xae, 0x0d, 0x64, 0x4c, 0x38,
-  0x82, 0x8d, 0xc5, 0x74, 0x53, 0xae, 0xfb, 0x34, 0x7c, 0x76, 0xaa, 0xcf,
-  0x4a, 0x16, 0xfa, 0xe6, 0x86, 0x94, 0x2e, 0xd9, 0xe4, 0x8c, 0xcd, 0xd5,
-  0x72, 0xb3, 0xc9, 0xe0, 0xfe, 0x91, 0xb1, 0xf2, 0x27, 0x5c, 0xa5, 0xbf,
-  0x23, 0xc7, 0x4b, 0x8f, 0x64, 0xa2, 0x32, 0x4b, 0x6f, 0x7d, 0x95, 0x58,
-  0x4f, 0xc4, 0x61, 0x21, 0x8f, 0x8b, 0xd7, 0x47, 0x42, 0x66, 0x6a, 0xa9,
-  0x53, 0x98, 0xea, 0xc4, 0xb9, 0xa6, 0xb6, 0xb9, 0x97, 0x1f, 0xf9, 0x3e,
-  0xe7, 0x36, 0x1c, 0x4c, 0xc7, 0x9f, 0xf0, 0x10, 0x9d, 0x3b, 0xe1, 0x8d,
-  0x3b, 0x6c, 0x16, 0xc4, 0x61, 0x43, 0x0d, 0xe5, 0x3d, 0xac, 0x24, 0xec,
-  0x96, 0x94, 0xfd, 0x94, 0x88, 0x03, 0x77, 0xcd, 0x0a, 0xed, 0x9a, 0x77,
-  0x87, 0xfa, 0xcd, 0x25, 0x35, 0x5f, 0x1d, 0x9e, 0x07, 0x86, 0x2e, 0x0c,
-  0x49, 0xef, 0xd4, 0xe3, 0xe7, 0xd8, 0xd0, 0x41, 0xc5, 0x69, 0xf1, 0xfd,
-  0x3d, 0xf4, 0xbd, 0x89, 0x52, 0x43, 0x4e, 0xb2, 0x6e, 0x04, 0x80, 0x7c,
-  0xa1, 0xf7, 0x09, 0xfc, 0x4f, 0x28, 0x36, 0x30, 0x9b, 0xa6, 0x08, 0x84,
-  0xea, 0x2d, 0x04, 0x9d, 0x0b, 0x6d, 0xe5, 0x8a, 0x86, 0xa2, 0xb5, 0xf9,
-  0x90, 0x68, 0x12, 0x87, 0x66, 0xab, 0x68, 0x39, 0x10, 0x3c, 0xc6, 0x09,
-  0xca, 0x0f, 0x36, 0x00, 0x91, 0xcf, 0xd4, 0xf9, 0xb4, 0xba, 0x25, 0x51,
-  0x2a, 0x01, 0x7c, 0xfa, 0x7a, 0xae, 0x21, 0x70, 0x76, 0xfa, 0xe4, 0x02,
-  0xa4, 0x61, 0xf7, 0x13, 0x28, 0x91, 0x1a, 0x0b, 0x26, 0x57, 0x10, 0x5b,
-  0x9c, 0xb3, 0x2a, 0x13, 0x02, 0xc3, 0xe4, 0xf2, 0xbe, 0x10, 0x13, 0xa3,
-  0x32, 0x78, 0xad, 0x40, 0x51, 0xab, 0x55, 0x2e, 0x5a, 0x24, 0x2d, 0x1e,
-  0xe4, 0x41, 0x50, 0xb3, 0xb3, 0xe7, 0x3c, 0x5f, 0xaf, 0x5c, 0xdc, 0x73,
-  0xf4, 0xea, 0xbb, 0x84, 0x53, 0xeb, 0xf9, 0x1b, 0x47, 0x4c, 0xb7, 0xcf,
-  0x10, 0x86, 0x39, 0xac, 0xbf, 0x6f, 0x56, 0x7c, 0xde, 0x8f, 0x6e, 0xd2,
-  0x25, 0x1b, 0x40, 0x7b, 0xbb, 0xec, 0x2e, 0xf9, 0xc1, 0x92, 0xf4, 0xf8,
-  0xa0, 0x5a, 0x3d, 0xef, 0xaa, 0x17, 0x78, 0x52, 0xa6, 0x5c, 0x8e, 0x9b,
-  0x2d, 0xa0, 0xa6, 0x93, 0x96, 0xae, 0xcf, 0x6a, 0x47, 0x48, 0xf6, 0x2b,
-  0xda, 0x1a, 0x65, 0x35, 0xbd, 0xdd, 0x99, 0xd0, 0x1f, 0x4f, 0x76, 0x77,
-  0xc0, 0xa9, 0x59, 0xc3, 0xa7, 0xc9, 0x7b, 0x72, 0x7f, 0xff, 0xd9, 0xb3,
-  0x7e, 0xd2, 0x63, 0x2f, 0xa3, 0x7d, 0x80, 0x8f, 0x04, 0x9d, 0xac, 0x5e,
-  0x57, 0xf1, 0xd2, 0x9d, 0xf2, 0x6a, 0xc2, 0xff, 0xc7, 0xaf, 0x59, 0x09,
-  0xc2, 0x4b, 0xcd, 0xba, 0xc1, 0x3c, 0x2c, 0x42, 0x9a, 0x1c, 0xd9, 0x56,
-  0xfc, 0xbb, 0x13, 0xe7, 0x47, 0xe2, 0xa0, 0xd1, 0x32, 0x2b, 0x96, 0x16,
-  0x1d, 0x9e, 0x6b, 0xf9, 0x0e, 0x7c, 0x3e, 0x08, 0xa9, 0x21, 0x9e, 0x2f,
-  0x70, 0x38, 0xe5, 0x43, 0xa8, 0x56, 0xe3, 0x81, 0x26, 0x06, 0x8b, 0x55,
-  0x99, 0xd3, 0xc9, 0xa5, 0x7f, 0xce, 0xcc, 0x5d, 0x1f, 0x49, 0xe4, 0xaf,
-  0x93, 0x9e, 0xee, 0x2d, 0xfe, 0xcf, 0x10, 0xc1, 0xdd, 0x6c, 0xc2, 0xc3,
-  0x28, 0x5e, 0xea, 0x3f, 0xfe, 0xfd, 0xdf, 0xa9, 0xd9, 0x7f, 0xe7, 0x56,
-  0x5e, 0xfe, 0x5b, 0x55, 0xdf, 0x04, 0xcf, 0xf4, 0x74, 0xc3, 0x9f, 0xf8,
-  0xd0, 0x36, 0xe0, 0x6a, 0x60, 0x9c, 0x45, 0xfe, 0xda, 0x9b, 0x53, 0x95,
-  0xc8, 0xfd, 0x60, 0x7c, 0x39, 0x32, 0x0b, 0xc5, 0x49, 0xea, 0xd0, 0x22,
-  0x5f, 0x73, 0xd8, 0x39, 0xe3, 0x8c, 0x74, 0xba, 0x48, 0x40, 0x28, 0xb8,
-  0x6d, 0x2a, 0xc6, 0xf1, 0xdb, 0xef, 0x4f, 0x2e, 0xce, 0xde, 0xbe, 0x39,
-  0x7e, 0x7b, 0x99, 0x7c, 0x7f, 0x78, 0x71, 0x72, 0xf8, 0xf5, 0xa9, 0x26,
-  0xbe, 0xf3, 0x10, 0x18, 0xe4, 0x23, 0xba, 0x77, 0x8b, 0x10, 0x36, 0x48,
-  0x44, 0xea, 0x2c, 0xed, 0xd1, 0xaa, 0x41, 0xfb, 0x5e, 0x19, 0xc6, 0x61,
-  0x89, 0xbc, 0x47, 0x95, 0xa2, 0x3e, 0x2b, 0x9f, 0xef, 0xad, 0x60, 0x11,
-  0x1b, 0x4f, 0x0f, 0x41, 0x2a, 0x35, 0xe3, 0x8f, 0x78, 0x97, 0x9a, 0x7c,
-  0xf2, 0x95, 0xeb, 0x5c, 0xed, 0x8b, 0x6f, 0x24, 0x1b, 0xdf, 0x0a, 0x81,
-  0xd8, 0xab, 0x9a, 0x19, 0x06, 0xbf, 0x9b, 0xeb, 0xc3, 0xe1, 0xe9, 0xa9,
-  0xff, 0xd4, 0xe3, 0x35, 0x62, 0x94, 0x89, 0x49, 0x92, 0xb7, 0xd0, 0x28,
-  0x07, 0x06, 0xaf, 0x0b, 0x4f, 0x97, 0xbe, 0x78, 0x08, 0x99, 0xd1, 0xf9,
-  0x63, 0xb4, 0x1c, 0x5b, 0x42, 0xa1, 0xc1, 0x51, 0x62, 0x3a, 0x40, 0x79,
-  0x75, 0xdb, 0x4f, 0x36, 0xff, 0x6d, 0x53, 0x92, 0xea, 0x32, 0xf0, 0x06,
-  0x4b, 0x05, 0x9a, 0x6d, 0xdf, 0xa9, 0xb7, 0x67, 0xbe, 0x4f, 0x1a, 0xf8,
-  0x74, 0x1d, 0x70, 0x2f, 0xfa, 0xb0, 0x75, 0x65, 0xfa, 0x0c, 0xf0, 0xa2,
-  0xfe, 0x71, 0x2d, 0xd3, 0xe0, 0x98, 0x01, 0x74, 0x8f, 0x72, 0x60, 0xab,
-  0xf3, 0x5d, 0x58, 0x6d, 0xe9, 0x24, 0xa0, 0x87, 0xc6, 0x58, 0x17, 0xec,
-  0xea, 0x70, 0xa5, 0xb3, 0xcc, 0x1b, 0x48, 0x53, 0xcd, 0x3e, 0x3d, 0x0d,
-  0x27, 0xae, 0x2a, 0x95, 0xa0, 0xd8, 0x55, 0x1f, 0x76, 0xac, 0x12, 0x0d,
-  0x62, 0x8c, 0x9c, 0x0f, 0x50, 0xe6, 0x53, 0xa5, 0x1b, 0xec, 0xdc, 0x15,
-  0x43, 0x84, 0xa6, 0x2e, 0x8e, 0xc0, 0xce, 0xbe, 0xe0, 0x12, 0x82, 0xbe,
-  0xd2, 0x05, 0xb0, 0xc3, 0x24, 0x45, 0x4a, 0x4e, 0xc8, 0x5b, 0xa8, 0x12,
-  0x02, 0x3c, 0x2e, 0x74, 0xf4, 0xf4, 0xba, 0x30, 0xfd, 0x3b, 0x75, 0x41,
-  0x73, 0x57, 0x0f, 0x2c, 0xd0, 0xe9, 0x1d, 0x87, 0x98, 0x73, 0x59, 0x22,
-  0xbc, 0x6e, 0x01, 0x02, 0x86, 0x97, 0xf1, 0x92, 0x5b, 0xb9, 0xde, 0x2a,
-  0xc8, 0xd2, 0xf6, 0xd9, 0x0b, 0x2c, 0x4b, 0x04, 0xa4, 0x6f, 0xa4, 0x5e,
-  0x20, 0x52, 0xb3, 0xac, 0x6e, 0x00, 0x1d, 0xd1, 0x2d, 0x7e, 0x10, 0x4d,
-  0x2a, 0x66, 0x15, 0x4d, 0x9a, 0xef, 0x9a, 0x4e, 0xcf, 0x8c, 0x13, 0xc8,
-  0x4c, 0x12, 0xa5, 0xc9, 0x38, 0xbf, 0x16, 0x76, 0x00, 0x4e, 0x45, 0xe7,
-  0x5d, 0x02, 0xb2, 0x37, 0x32, 0xec, 0x79, 0xa9, 0x40, 0xe5, 0x06, 0xdd,
-  0xfd, 0xa6, 0x98, 0x85, 0x7c, 0x63, 0x36, 0x92, 0x4a, 0x2b, 0x9d, 0x99,
-  0xeb, 0x13, 0xa1, 0x8f, 0x15, 0xcf, 0xa3, 0xa1, 0xd1, 0x94, 0xa8, 0x5c,
-  0xb1, 0x79, 0xec, 0x53, 0x07, 0x6b, 0xe2, 0x02, 0x99, 0x40, 0x96, 0x55,
-  0x8d, 0x79, 0x30, 0xdc, 0x32, 0x4b, 0x0b, 0xf8, 0xd1, 0xb8, 0x5e, 0xe1,
-  0x96, 0x63, 0x1a, 0xe7, 0x56, 0x26, 0xc2, 0xd5, 0xca, 0x9b, 0x5e, 0x22,
-  0xca, 0xcd, 0x72, 0x3d, 0xba, 0x58, 0xca, 0xa2, 0x45, 0x7b, 0x82, 0x3b,
-  0x4d, 0x33, 0xb5, 0x15, 0x08, 0x9e, 0x05, 0x6d, 0x11, 0x79, 0x4c, 0x0c,
-  0x48, 0xfd, 0xd7, 0xc0, 0x55, 0x1a, 0xd3, 0xb8, 0xf3, 0xb6, 0xc7, 0x1d,
-  0x88, 0x16, 0xc0, 0xbb, 0x75, 0xa2, 0x25, 0x11, 0x11, 0xa1, 0xe7, 0xba,
-  0x8d, 0xa0, 0x86, 0x6a, 0xf8, 0x1e, 0x13, 0xcb, 0xb7, 0x99, 0xcd, 0x02,
-  0xaa, 0x71, 0x71, 0x47, 0xa4, 0x91, 0xee, 0xc1, 0xc1, 0x21, 0x49, 0x43,
-  0x55, 0xe4, 0x8f, 0xd0, 0x12, 0x07, 0x03, 0x51, 0x4c, 0x39, 0x6b, 0x67,
-  0x2d, 0x97, 0x66, 0x20, 0xd0, 0x2c, 0x3a, 0x1e, 0x5e, 0x4c, 0x5a, 0xed,
-  0x22, 0x4f, 0xe7, 0xa2, 0x3b, 0xfa, 0xdd, 0x37, 0x7f, 0x10, 0xd4, 0xe1,
-  0xc6, 0xc6, 0xd1, 0xbb, 0xd1, 0xe5, 0xd9, 0x9b, 0xe4, 0xec, 0xdd, 0xe5,
-  0xf9, 0xbb, 0x4b, 0xbd, 0xb9, 0xc6, 0x82, 0xd9, 0x16, 0xe4, 0x82, 0x28,
-  0x01, 0xb6, 0x98, 0x73, 0x8d, 0xef, 0x03, 0x62, 0x52, 0x80, 0x60, 0x30,
-  0xe0, 0x16, 0x72, 0x39, 0x59, 0x60, 0xdd, 0x12, 0xe6, 0x62, 0x4c, 0xf9,
-  0x3d, 0x4d, 0x39, 0xf2, 0x69, 0xe1, 0xc8, 0xb3, 0x14, 0x2f, 0x98, 0x3d,
-  0x76, 0xd6, 0x9a, 0x95, 0x64, 0x5a, 0x85, 0x30, 0x11, 0x9c, 0x6f, 0x72,
-  0x39, 0x79, 0x1c, 0x95, 0xf9, 0x76, 0xbc, 0xeb, 0x27, 0x84, 0x74, 0x02,
-  0xcc, 0x34, 0xa9, 0xcd, 0x01, 0x6d, 0xa8, 0x5a, 0x40, 0x8d, 0x9a, 0x89,
-  0x85, 0x61, 0x7e, 0x63, 0x5d, 0xd0, 0x08, 0x6f, 0x1c, 0x22, 0x9e, 0x51,
-  0x44, 0x40, 0x02, 0x0a, 0x80, 0x82, 0x21, 0x77, 0x62, 0x31, 0x90, 0x1d,
-  0xc8, 0x21, 0x8b, 0xe8, 0x96, 0xbd, 0x4f, 0x36, 0x7f, 0xc8, 0xc2, 0x06,
-  0xff, 0xf8, 0x1f, 0x9c, 0xb6, 0xf9, 0xde, 0x7e, 0xf2, 0x9f, 0xf2, 0xc9,
-  0x9f, 0x17, 0x9b, 0x00, 0xd0, 0x35, 0x23, 0xe5, 0xdf, 0x1d, 0x5f, 0x7c,
-  0x7d, 0x7c, 0x71, 0x36, 0x82, 0x3c, 0x30, 0x77, 0x57, 0xbc, 0xd7, 0x6f,
-  0xb3, 0x72, 0x9c, 0x95, 0x85, 0x56, 0xb9, 0xb2, 0x7f, 0x3d, 0xdb, 0xf9,
-  0x66, 0x34, 0x3a, 0x3c, 0x3f, 0x71, 0x75, 0x64, 0x5c, 0x02, 0x99, 0x98,
-  0x48, 0x0b, 0x49, 0x71, 0xe4, 0xf1, 0xdb, 0x2b, 0xb4, 0x2f, 0x26, 0xb7,
-  0x02, 0x2c, 0x8e, 0x62, 0xd2, 0xe6, 0x57, 0xe7, 0x60, 0xb4, 0xe6, 0x15,
-  0x72, 0xc3, 0xc6, 0x09, 0x15, 0xf2, 0xce, 0x0b, 0x41, 0x3c, 0xc7, 0x02,
-  0xfa, 0x0e, 0x81, 0x77, 0x5b, 0x8e, 0x07, 0xb4, 0xdb, 0x6f, 0xad, 0xca,
-  0xb0, 0xe4, 0x41, 0x90, 0xa8, 0x14, 0x80, 0xb4, 0xf7, 0x35, 0xdc, 0x72,
-  0xc1, 0xf1, 0x9d, 0x5b, 0x3e, 0x1f, 0x5c, 0xe3, 0x64, 0x36, 0x14, 0xe9,
-  0x2e, 0x07, 0xca, 0x50, 0xaf, 0x2c, 0x62, 0x1f, 0xe3, 0xa9, 0xa0, 0xaf,
-  0xb9, 0xc2, 0x84, 0xe2, 0xef, 0xa2, 0x9f, 0x3c, 0x75, 0x84, 0x5d, 0x61,
-  0x2d, 0xea, 0x2b, 0x52, 0xc0, 0x97, 0xf7, 0x53, 0xbd, 0x44, 0xc0, 0x57,
-  0xbd, 0x90, 0xf0, 0x84, 0xc8, 0xf0, 0x76, 0x80, 0x8a, 0x8b, 0x27, 0x22,
-  0x61, 0x43, 0xe1, 0xe8, 0xc9, 0x78, 0x96, 0x2e, 0x6e, 0x71, 0x9b, 0xe1,
-  0x7e, 0x62, 0x93, 0xd3, 0x68, 0xa8, 0xb8, 0xa8, 0x25, 0xe2, 0x91, 0xca,
-  0x0c, 0x01, 0x25, 0x70, 0xc6, 0xc2, 0xed, 0x41, 0x7c, 0xf9, 0x8e, 0x6d,
-  0x2b, 0x88, 0xbc, 0xe1, 0x38, 0xf9, 0x49, 0x60, 0xd7, 0xd1, 0xf1, 0x29,
-  0x5d, 0x4c, 0x2e, 0xc9, 0x04, 0x26, 0x7a, 0x36, 0x63, 0x57, 0xb0, 0x21,
-  0x82, 0x24, 0xaf, 0x32, 0x87, 0x20, 0x13, 0xe9, 0x61, 0x54, 0xea, 0x88,
-  0x1f, 0x61, 0xbb, 0x20, 0x7d, 0xb4, 0x72, 0x05, 0x47, 0x54, 0x72, 0x8b,
-  0x10, 0x03, 0x4f, 0xa8, 0xaf, 0x3f, 0x12, 0x56, 0xa7, 0x51, 0xb8, 0xdd,
-  0x91, 0xc7, 0x03, 0xb9, 0x72, 0x5d, 0xd2, 0x09, 0xaf, 0x96, 0xba, 0x08,
-  0x63, 0x23, 0xbb, 0x65, 0xed, 0x32, 0xc9, 0xeb, 0x5d, 0x4e, 0x00, 0xa1,
-  0x37, 0x9b, 0x6a, 0xbc, 0xc3, 0x31, 0x03, 0x19, 0x64, 0xb9, 0x09, 0x13,
-  0xb6, 0x8e, 0x0b, 0x1a, 0x80, 0x9d, 0xb7, 0xb3, 0xda, 0x82, 0x86, 0x80,
-  0xb8, 0xea, 0x0d, 0x5c, 0x4f, 0x21, 0x72, 0xca, 0x06, 0x69, 0x6d, 0x88,
-  0xce, 0x15, 0xf2, 0x0a, 0xf8, 0x06, 0x25, 0x5f, 0x03, 0x56, 0x8c, 0xd3,
-  0x6f, 0x07, 0x6f, 0xf9, 0xba, 0x28, 0x06, 0xe3, 0x15, 0xec, 0xb2, 0xa0,
-  0x8c, 0x96, 0xe4, 0x70, 0x72, 0xbd, 0x79, 0xf0, 0xaa, 0xe1, 0xf7, 0x1c,
-  0x8f, 0x42, 0x76, 0xbc, 0x84, 0xa8, 0x90, 0x2e, 0xd9, 0xe4, 0xdc, 0x71,
-  0x4c, 0x2b, 0x92, 0x83, 0x00, 0x2c, 0xb6, 0x15, 0x5e, 0x93, 0x1e, 0xea,
-  0x22, 0x3b, 0xb4, 0xe0, 0x42, 0x6b, 0xaf, 0x22, 0xb2, 0xd2, 0x44, 0x5c,
-  0xd7, 0x8e, 0xfa, 0xfe, 0x12, 0x6a, 0x42, 0xa6, 0x84, 0xf0, 0x06, 0xa5,
-  0xb6, 0xc4, 0x8d, 0xbb, 0x9a, 0x0b, 0x3f, 0x09, 0x49, 0x44, 0x3a, 0x93,
-  0x8a, 0x1d, 0x6b, 0xaf, 0x12, 0x39, 0x4c, 0xf5, 0xe5, 0xe5, 0x5f, 0xce,
-  0x8f, 0x5f, 0xda, 0x9b, 0x8f, 0xad, 0x99, 0x70, 0xa7, 0x01, 0x33, 0x93,
-  0x29, 0x57, 0x69, 0x50, 0xc9, 0x99, 0x36, 0xd9, 0xa0, 0xb6, 0x58, 0xbe,
-  0x7c, 0x66, 0x90, 0xfc, 0xf8, 0xea, 0x64, 0x74, 0x7e, 0x7a, 0x76, 0xf4,
-  0xf2, 0xc5, 0x8f, 0x26, 0x92, 0xbf, 0xe4, 0x10, 0x81, 0xe8, 0x69, 0xee,
-  0x67, 0x9e, 0xdb, 0x41, 0xdf, 0x7b, 0x7b, 0xfc, 0xc3, 0x7b, 0xb2, 0x0e,
-  0x5e, 0x32, 0xc3, 0x7b, 0xff, 0x2e, 0x9d, 0xe9, 0x4b, 0x6c, 0x62, 0x75,
-  0xe8, 0x76, 0xc3, 0x26, 0x19, 0x5f, 0x7b, 0x62, 0x5d, 0xf5, 0x50, 0x9f,
-  0xa7, 0xf0, 0x60, 0x30, 0xba, 0xa0, 0x50, 0x54, 0xda, 0x48, 0xab, 0xed,
-  0x28, 0xf1, 0xeb, 0xaf, 0xff, 0xcd, 0x5a, 0x30, 0x95, 0x0c, 0x21, 0x08,
-  0x23, 0xf3, 0xc0, 0xad, 0xea, 0x6f, 0x3c, 0x9e, 0x57, 0x99, 0x94, 0x4b,
-  0x06, 0xb0, 0x38, 0x2a, 0x4a, 0xad, 0xb3, 0x8c, 0x98, 0xb7, 0xf2, 0x55,
-  0x2a, 0x09, 0x13, 0x43, 0x68, 0x0d, 0x4d, 0x6f, 0x72, 0x4c, 0x55, 0x18,
-  0xd7, 0x97, 0xd4, 0x4a, 0xd9, 0xa2, 0x36, 0xcf, 0xf9, 0xf1, 0xc5, 0xe8,
-  0x64, 0x74, 0xc9, 0x66, 0x94, 0xd6, 0x55, 0x54, 0x1f, 0xb4, 0x15, 0xbd,
-  0x04, 0x67, 0x43, 0x93, 0x7a, 0x34, 0xac, 0x1b, 0xd2, 0x38, 0xd1, 0x4e,
-  0xcc, 0x35, 0x93, 0x38, 0xf9, 0x06, 0x90, 0xcc, 0x50, 0x56, 0x44, 0x85,
-  0x40, 0x37, 0xbd, 0xb2, 0x03, 0x5c, 0xe8, 0xd6, 0x68, 0x95, 0xcf, 0x40,
-  0xe9, 0x1b, 0xac, 0xce, 0x2c, 0x1f, 0x7b, 0xaf, 0x79, 0x2b, 0x84, 0xcc,
-  0xe8, 0x04, 0x25, 0xeb, 0x08, 0x8f, 0x90, 0xf9, 0xc3, 0x7d, 0x66, 0xb4,
-  0x96, 0xda, 0xd5, 0x6b, 0x4d, 0xb3, 0x1a, 0xc3, 0xfc, 0x55, 0x67, 0xa8,
-  0xc2, 0x38, 0x31, 0x3d, 0xcd, 0xfd, 0x34, 0x00, 0xa1, 0x2a, 0xff, 0x13,
-  0xa8, 0x6b, 0x55, 0x64, 0xb3, 0x50, 0xce, 0x25, 0x13, 0x8d, 0x1d, 0x2d,
-  0xa4, 0xb5, 0x20, 0xb3, 0x1e, 0x38, 0x21, 0x1d, 0x59, 0xa4, 0x82, 0xa8,
-  0xea, 0x78, 0xcd, 0x29, 0x6c, 0x20, 0xd9, 0x9a, 0xb2, 0xbe, 0x05, 0x0f,
-  0x5c, 0xf8, 0x31, 0xbb, 0x4e, 0x79, 0x06, 0xc7, 0xab, 0xb0, 0x50, 0x9b,
-  0xeb, 0xbd, 0xd4, 0x27, 0xc1, 0xc4, 0x03, 0x21, 0x99, 0x96, 0x60, 0xb1,
-  0xac, 0x95, 0x34, 0xde, 0x0c, 0x1f, 0x85, 0x3b, 0x0e, 0x9b, 0x7c, 0x3e,
-  0xb6, 0x2f, 0xad, 0x98, 0xe8, 0x63, 0x33, 0x1a, 0x54, 0x76, 0xe4, 0xed,
-  0x5b, 0x66, 0x86, 0x5b, 0x12, 0x37, 0x43, 0xc5, 0x01, 0x87, 0xc5, 0xc4,
-  0x5d, 0xc6, 0x9c, 0x74, 0xc4, 0xf1, 0xc5, 0x52, 0xb9, 0x92, 0x48, 0xfc,
-  0xb1, 0x67, 0x19, 0xe5, 0x20, 0x51, 0x27, 0x99, 0xa3, 0x6e, 0xc6, 0xa3,
-  0xe7, 0x61, 0xdc, 0x32, 0xdd, 0xc1, 0xb6, 0x12, 0xf7, 0xfa, 0x83, 0x7e,
-  0xd0, 0x25, 0xc8, 0xdb, 0x62, 0xf5, 0x25, 0xdf, 0x2a, 0x45, 0x7a, 0x8f,
-  0xf9, 0x75, 0x83, 0x34, 0xd1, 0x4a, 0x93, 0x6f, 0x5d, 0x78, 0x1a, 0x02,
-  0xaf, 0x51, 0x13, 0x97, 0x47, 0xd7, 0x08, 0x0d, 0x92, 0x7e, 0xb9, 0x44,
-  0x31, 0xa5, 0x89, 0xb2, 0xc9, 0x03, 0xb4, 0xeb, 0x1a, 0xb4, 0x4b, 0xc4,
-  0x4f, 0x16, 0xcd, 0xea, 0x9b, 0x77, 0xa7, 0x97, 0x27, 0xe7, 0x61, 0xf8,
-  0x31, 0xf9, 0xe1, 0xe4, 0xf2, 0x5b, 0xd2, 0xda, 0x47, 0x27, 0x6f, 0xbf,
-  0x39, 0xe5, 0x18, 0xcf, 0x9b, 0x37, 0x87, 0x6f, 0x99, 0x5d, 0xe0, 0x2d,
-  0x90, 0x8d, 0x87, 0x30, 0x1c, 0x58, 0x1c, 0xd1, 0x14, 0xf3, 0xde, 0xe1,
-  0xbc, 0xf3, 0x7e, 0x1c, 0x6a, 0x68, 0x1d, 0x3f, 0xa9, 0x79, 0xbc, 0x68,
-  0x4e, 0x12, 0xaf, 0xb8, 0x5a, 0x06, 0x0f, 0xec, 0xd8, 0xc1, 0xb1, 0x65,
-  0x63, 0x8b, 0x27, 0xba, 0x4d, 0x23, 0x8f, 0x1c, 0x47, 0xd1, 0xd0, 0x11,
-  0x46, 0x97, 0xbb, 0xdb, 0x87, 0x2f, 0xb0, 0xa2, 0x8e, 0x84, 0x16, 0x76,
-  0x0c, 0xe9, 0x4c, 0x0b, 0xb5, 0x6b, 0xe4, 0xbe, 0x6c, 0xe6, 0x1c, 0xd0,
-  0x17, 0xd1, 0x25, 0xe0, 0x08, 0x0a, 0xef, 0x11, 0x64, 0x8b, 0x93, 0x8d,
-  0xe6, 0x8b, 0xd3, 0xf0, 0x42, 0x6d, 0x96, 0xa1, 0x37, 0x78, 0xe0, 0x75,
-  0x91, 0xf9, 0x93, 0x3b, 0x38, 0xb3, 0x66, 0xcc, 0xfd, 0x0b, 0x33, 0x4c,
-  0x2e, 0x97, 0x01, 0xcb, 0xb5, 0x01, 0x2d, 0xc9, 0xb6, 0xab, 0x38, 0xa4,
-  0xee, 0xb3, 0x03, 0x51, 0x2b, 0x1d, 0xcd, 0xb2, 0x15, 0xcf, 0xa3, 0xe6,
-  0xac, 0x65, 0x85, 0xa2, 0x00, 0x8f, 0xad, 0x69, 0x4d, 0x3a, 0x66, 0x48,
-  0x4b, 0x7b, 0xac, 0x91, 0x95, 0x2d, 0xf7, 0xdd, 0x99, 0xb9, 0xf6, 0x2c,
-  0xad, 0x0d, 0xc9, 0xac, 0x4c, 0xbf, 0xe3, 0x23, 0xa7, 0x28, 0xb2, 0x56,
-  0x14, 0xc3, 0xec, 0x43, 0xc6, 0x41, 0x4e, 0xfe, 0xeb, 0x5f, 0x97, 0xd7,
-  0x61, 0xc6, 0x9b, 0x94, 0x7d, 0x5e, 0x76, 0xad, 0xac, 0x72, 0x3a, 0x8b,
-  0x5a, 0xa4, 0xa5, 0xe6, 0x1a, 0x3d, 0xd0, 0xfa, 0x71, 0x7b, 0xeb, 0x3e,
-  0xa8, 0xbf, 0xdf, 0x8f, 0x7f, 0xbf, 0x2f, 0x6e, 0xc7, 0x93, 0xf3, 0xbb,
-  0xcf, 0x1c, 0x17, 0xaa, 0xe4, 0x71, 0x87, 0xea, 0x9b, 0x29, 0x05, 0xbc,
-  0xc3, 0xf8, 0x51, 0xb9, 0x73, 0x52, 0x91, 0x89, 0xe2, 0xfb, 0x67, 0x04,
-  0xd9, 0xaa, 0x44, 0x7e, 0x2a, 0x1e, 0x81, 0x9b, 0x58, 0x60, 0xbf, 0x00,
-  0xd9, 0x41, 0x4e, 0xf1, 0x75, 0x45, 0x0d, 0xd2, 0xef, 0x9f, 0x3a, 0x2c,
-  0xbe, 0x97, 0x69, 0x28, 0xd7, 0xa6, 0xd9, 0x50, 0x83, 0x7c, 0x79, 0x67,
-  0x35, 0x78, 0xe9, 0xaf, 0x9f, 0xb9, 0x52, 0x3d, 0x55, 0x23, 0x46, 0xd5,
-  0xe0, 0x1d, 0x36, 0xe1, 0x8f, 0xce, 0x01, 0x16, 0xc9, 0x92, 0xc1, 0x1b,
-  0x19, 0xad, 0x7e, 0x65, 0x4d, 0x40, 0x76, 0x50, 0x44, 0x14, 0x0e, 0xe6,
-  0x19, 0x32, 0x63, 0x21, 0x8f, 0x02, 0xe1, 0x12, 0x72, 0xfe, 0xeb, 0xaa,
-  0xff, 0xb4, 0xbf, 0xbb, 0xbb, 0x77, 0xb0, 0xf7, 0xc5, 0xf3, 0xdd, 0x83,
-  0xbd, 0xbd, 0xbd, 0xfd, 0x83, 0xbd, 0x83, 0x83, 0xfd, 0xdd, 0x5f, 0x76,
-  0xd8, 0x7f, 0x74, 0x97, 0x67, 0xf7, 0x16, 0x98, 0x92, 0x5c, 0x3c, 0x6c,
-  0x6b, 0xa9, 0xa5, 0xae, 0x16, 0xbc, 0xda, 0xb9, 0xa6, 0xf9, 0x38, 0x56,
-  0x09, 0x81, 0xcc, 0x0b, 0x99, 0xdc, 0xd2, 0x67, 0x9a, 0xe2, 0x0c, 0x06,
-  0x84, 0xd7, 0xe8, 0xd5, 0xdf, 0x56, 0x3c, 0xd2, 0x31, 0xab, 0x03, 0xd0,
-  0x69, 0x2a, 0x97, 0xd7, 0x77, 0x3d, 0x2b, 0xc6, 0x63, 0x64, 0x2e, 0xb8,
-  0xd4, 0xd6, 0x61, 0xc2, 0xac, 0xaa, 0xb7, 0xb2, 0x25, 0x34, 0x72, 0x00,
-  0x50, 0xa1, 0x1c, 0x74, 0x3f, 0x3b, 0xa2, 0x78, 0x29, 0x90, 0x7a, 0x52,
-  0x70, 0x85, 0x81, 0x29, 0x0b, 0x25, 0x9a, 0xa4, 0xd2, 0xa5, 0xbc, 0x24,
-  0x57, 0xd9, 0x17, 0xbb, 0x07, 0x07, 0x5c, 0x04, 0xe4, 0x8f, 0x7b, 0x7d,
-  0xc5, 0x83, 0x86, 0x20, 0xf7, 0xbe, 0xbb, 0x9e, 0xa4, 0x0d, 0x36, 0x3f,
-  0xc2, 0x71, 0x2e, 0x56, 0xf3, 0xac, 0x54, 0x43, 0x04, 0x17, 0xa2, 0x90,
-  0xff, 0xf0, 0x66, 0xb4, 0x2e, 0xbb, 0x67, 0x51, 0xd8, 0x06, 0x7e, 0x79,
-  0x49, 0x4d, 0xf1, 0xb7, 0xa7, 0x9e, 0x73, 0x1c, 0x95, 0x85, 0x94, 0x0f,
-  0xe5, 0x87, 0xa1, 0x91, 0x83, 0xd1, 0xa4, 0xb8, 0x0d, 0x95, 0x55, 0xcd,
-  0xc7, 0xf9, 0x29, 0xe8, 0xfc, 0xfe, 0xb3, 0xbd, 0x5f, 0x04, 0x7e, 0xc8,
-  0x1b, 0xdc, 0xcf, 0x82, 0x16, 0x7a, 0x9b, 0x86, 0x19, 0x17, 0xb6, 0x31,
-  0xb6, 0xb2, 0xe1, 0xf5, 0xd0, 0xb4, 0x04, 0xf5, 0x1e, 0xf6, 0x43, 0x10,
-  0xb8, 0x30, 0x90, 0x4b, 0x59, 0x60, 0xd8, 0x5d, 0xe6, 0x20, 0x32, 0x07,
-  0xaf, 0x38, 0x27, 0x1b, 0x15, 0x7b, 0xe8, 0xc6, 0x38, 0xbe, 0x3c, 0xa4,
-  0xcb, 0xe0, 0xbb, 0xd8, 0x70, 0x7f, 0x93, 0x91, 0x95, 0xcd, 0x8b, 0xb7,
-  0x85, 0xfd, 0x7d, 0xe7, 0x78, 0x7f, 0x79, 0xf6, 0x9e, 0x26, 0x5b, 0x1c,
-  0x83, 0x78, 0xf6, 0xc5, 0xb3, 0xa7, 0xdb, 0x52, 0x64, 0x41, 0x5e, 0xcb,
-  0x38, 0xdf, 0x03, 0x5e, 0x46, 0x25, 0x9b, 0x61, 0xf7, 0xb0, 0x13, 0x31,
-  0xef, 0x2e, 0x4e, 0xe4, 0x88, 0xde, 0x08, 0x27, 0x80, 0x18, 0xb1, 0x6d,
-  0x9e, 0x38, 0xdc, 0x9f, 0x81, 0xd2, 0x30, 0xcf, 0x99, 0xc3, 0x10, 0xb9,
-  0xd4, 0x7c, 0xd1, 0xb9, 0x5c, 0x7e, 0xdc, 0x98, 0x74, 0xe0, 0x0a, 0x94,
-  0x1e, 0xd4, 0x8a, 0x4e, 0xe8, 0x0c, 0x48, 0x0f, 0x99, 0x73, 0x55, 0xf7,
-  0x8d, 0xb3, 0xa8, 0xd8, 0xae, 0x11, 0xf9, 0x22, 0xd2, 0xbc, 0xc5, 0xb3,
-  0xbd, 0x2d, 0x11, 0x7c, 0x28, 0x79, 0xbc, 0xad, 0xe8, 0x41, 0x83, 0x82,
-  0x72, 0x8f, 0x1b, 0xd9, 0x65, 0x5e, 0x7b, 0x0c, 0x38, 0x9a, 0x8c, 0x9e,
-  0x45, 0x45, 0x8b, 0x9b, 0x42, 0x09, 0x4f, 0xd7, 0xf0, 0x14, 0xe6, 0x0d,
-  0x17, 0x8e, 0xe6, 0xc6, 0x23, 0x47, 0x1d, 0x10, 0xe2, 0x39, 0x5d, 0x2f,
-  0xe5, 0x83, 0x6a, 0xcc, 0x50, 0xfb, 0x5d, 0xa5, 0xb4, 0x56, 0x80, 0x5f,
-  0x58, 0x20, 0x42, 0x64, 0xbc, 0x23, 0x41, 0x31, 0x23, 0xb8, 0xd1, 0x81,
-  0x86, 0x18, 0x1f, 0xcc, 0xed, 0x57, 0x01, 0xfe, 0x25, 0x4c, 0x17, 0xb3,
-  0xbf, 0xdb, 0x73, 0x01, 0x34, 0x32, 0x6d, 0x0f, 0x6c, 0x4d, 0xd7, 0x84,
-  0x2b, 0x13, 0x70, 0x28, 0x67, 0xcd, 0x6c, 0xa1, 0x27, 0x3b, 0x3b, 0xdb,
-  0x6b, 0x7a, 0xa3, 0xbf, 0xee, 0xfa, 0xfa, 0x39, 0x38, 0x46, 0x82, 0x0c,
-  0x4d, 0x5a, 0xf3, 0x66, 0xe3, 0x3c, 0xb5, 0x79, 0xc5, 0x2b, 0x39, 0x55,
-  0x9c, 0xab, 0xb8, 0x45, 0xcd, 0x5c, 0x92, 0xce, 0x9b, 0x30, 0x6a, 0x0e,
-  0x42, 0xa1, 0x35, 0xc6, 0xf9, 0x24, 0x35, 0x9c, 0x25, 0x5c, 0x39, 0x4c,
-  0x0e, 0x79, 0x37, 0x34, 0x3e, 0x1c, 0x74, 0xd9, 0xfc, 0xb3, 0xc6, 0x68,
-  0x6e, 0x4a, 0xa9, 0x73, 0xcf, 0xf5, 0x83, 0x5f, 0x9a, 0xda, 0x66, 0x29,
-  0xfe, 0xce, 0x79, 0x3b, 0xce, 0x84, 0xce, 0xc4, 0x49, 0xc2, 0x80, 0xa9,
-  0x38, 0x5f, 0x34, 0x4a, 0x80, 0x6a, 0x23, 0x08, 0x5c, 0xbb, 0x41, 0x80,
-  0x04, 0xb1, 0x34, 0x72, 0xdd, 0xb0, 0x2c, 0x20, 0x18, 0x05, 0x14, 0xa4,
-  0x2e, 0x8a, 0xb2, 0xdb, 0xc4, 0x12, 0x3d, 0x1d, 0xcb, 0xf6, 0x6a, 0xcc,
-  0x47, 0x5f, 0x76, 0xbc, 0x80, 0x12, 0x04, 0x3f, 0x4b, 0x87, 0x84, 0x05,
-  0xc6, 0xe1, 0xc9, 0x29, 0xa3, 0xdc, 0x4e, 0xc9, 0x64, 0x1b, 0x99, 0xea,
-  0x03, 0xd4, 0x27, 0xf0, 0x77, 0x8b, 0x9c, 0xd5, 0xef, 0xbe, 0x2b, 0x25,
-  0x62, 0xc9, 0x4f, 0xb0, 0x43, 0x38, 0x58, 0x27, 0xa6, 0xbc, 0x72, 0xfe,
-  0xd1, 0x6a, 0x91, 0xfe, 0x53, 0x89, 0x13, 0x16, 0xd4, 0xba, 0x4c, 0x3a,
-  0x8f, 0xc0, 0x28, 0x4c, 0x64, 0x11, 0xd4, 0xa8, 0x64, 0x54, 0x66, 0xb3,
-  0xec, 0x4e, 0xbd, 0xa5, 0x42, 0x54, 0xfa, 0x8d, 0xc6, 0x24, 0xa5, 0x94,
-  0x69, 0xed, 0x43, 0xab, 0x8d, 0xb0, 0x27, 0x7f, 0x73, 0x47, 0x38, 0x5e,
-  0x3c, 0x75, 0x07, 0x7f, 0xde, 0xb3, 0xeb, 0x5b, 0x08, 0x98, 0xdf, 0x1b,
-  0xb0, 0xcd, 0xaa, 0x50, 0xd5, 0x77, 0x95, 0xb2, 0x33, 0xb4, 0xb1, 0xdf,
-  0xe2, 0xfb, 0xb3, 0x62, 0x78, 0xe2, 0x4c, 0xef, 0x1b, 0xff, 0xb1, 0x44,
-  0x00, 0xd8, 0xcc, 0xe9, 0xb3, 0xe3, 0x55, 0x0a, 0xae, 0x93, 0x81, 0xc5,
-  0x95, 0x2e, 0xfa, 0x92, 0x08, 0x8a, 0xbd, 0x51, 0xcc, 0xe8, 0x9f, 0x80,
-  0x47, 0x09, 0x60, 0x92, 0x9e, 0x65, 0xfe, 0xd6, 0x00, 0xa1, 0x4a, 0xff,
-  0x94, 0xe4, 0x06, 0xfd, 0x17, 0x9a, 0x2a, 0x57, 0xa0, 0x09, 0xee, 0xcb,
-  0xe5, 0xc6, 0x41, 0xc4, 0x7a, 0x32, 0x74, 0xbd, 0xd7, 0x18, 0xbe, 0xf4,
-  0xff, 0x95, 0x85, 0x98, 0x4d, 0xad, 0x28, 0x4a, 0x9b, 0x5d, 0x59, 0x85,
-  0xb1, 0xd4, 0x2e, 0xfc, 0x7a, 0xc5, 0xc1, 0x2d, 0x57, 0x99, 0x87, 0x7b,
-  0x31, 0xe7, 0xab, 0x28, 0x93, 0x32, 0xa1, 0xae, 0x71, 0xb6, 0xd0, 0x56,
-  0xb4, 0xba, 0xd2, 0xfa, 0x69, 0x71, 0xcf, 0x35, 0x4e, 0xaf, 0xae, 0xf2,
-  0x09, 0x17, 0xae, 0xf1, 0x74, 0xc0, 0x2c, 0xe2, 0xe5, 0xc1, 0xb9, 0x95,
-  0x55, 0xa2, 0xb1, 0x25, 0xcb, 0xd5, 0x78, 0x46, 0x77, 0xaf, 0xa1, 0xd3,
-  0xe9, 0x50, 0x61, 0x96, 0xc8, 0x78, 0x42, 0x73, 0x12, 0x9b, 0x87, 0xfd,
-  0xd8, 0x42, 0x44, 0x6b, 0x31, 0x76, 0xd6, 0xa8, 0xe7, 0x28, 0xf6, 0xca,
-  0xb0, 0xe1, 0x79, 0xb1, 0xb0, 0xe4, 0x96, 0x55, 0x25, 0xe4, 0x90, 0x56,
-  0xb9, 0x7d, 0x43, 0x22, 0x0d, 0xf9, 0x4c, 0xd9, 0xd8, 0xd5, 0xd2, 0xc6,
-  0x1b, 0xe1, 0x60, 0xa6, 0x83, 0xe5, 0xcd, 0xd2, 0x56, 0xda, 0xf4, 0x1b,
-  0x51, 0x7e, 0x34, 0x9d, 0x02, 0x27, 0xef, 0xfc, 0xdb, 0xf3, 0x61, 0x72,
-  0xcc, 0x2d, 0x49, 0x9f, 0x54, 0x6f, 0x85, 0xcb, 0x85, 0x7e, 0x47, 0x83,
-  0xbd, 0xe6, 0xfb, 0xeb, 0xac, 0xe4, 0x7f, 0xa1, 0x35, 0xfd, 0xa5, 0x78,
-  0x59, 0xf1, 0xdb, 0xe6, 0x57, 0xa9, 0x21, 0x03, 0x4d, 0x9f, 0xe3, 0xef,
-  0x74, 0x54, 0x48, 0x9b, 0x72, 0xcb, 0xe4, 0xbf, 0x50, 0x94, 0x0d, 0x2a,
-  0x1d, 0x79, 0x33, 0x21, 0x25, 0x0b, 0xaa, 0xd2, 0xf2, 0x01, 0xeb, 0x17,
-  0xc8, 0x46, 0x51, 0x27, 0xa5, 0x81, 0x60, 0x6b, 0xe9, 0xf6, 0x73, 0x70,
-  0x3c, 0x39, 0x57, 0xa5, 0x90, 0xc8, 0x94, 0x99, 0x82, 0x17, 0x0b, 0x8d,
-  0x7a, 0x8a, 0x83, 0xa2, 0xca, 0x5a, 0xc7, 0x35, 0x30, 0xc7, 0xec, 0x17,
-  0x6c, 0x45, 0x73, 0x5f, 0x48, 0x69, 0xa1, 0x25, 0x18, 0x6e, 0xfc, 0xbf,
-  0xfd, 0xc7, 0xf0, 0xa6, 0x8d, 0x45, 0x02, 0x00,
+  0x6b, 0x7b, 0x1b, 0xd7, 0x91, 0x2e, 0xfa, 0x9d, 0xbf, 0xa2, 0x07, 0x39,
+  0x19, 0x90, 0x09, 0x00, 0x5e, 0x74, 0xb1, 0xc5, 0x48, 0x1e, 0xd3, 0x14,
+  0x65, 0x73, 0x4c, 0x89, 0xdc, 0x04, 0x65, 0x3b, 0xdb, 0xf6, 0xa3, 0xa7,
+  0x01, 0x34, 0xc9, 0x0e, 0x81, 0x6e, 0xa4, 0xbb, 0x41, 0x8a, 0x99, 0xc9,
+  0xfc, 0xf6, 0x53, 0xf5, 0x56, 0xd5, 0x5a, 0xab, 0x2f, 0x20, 0x65, 0x4f,
+  0x9c, 0x33, 0xfb, 0x9c, 0xe3, 0x99, 0x88, 0x24, 0xd0, 0xbd, 0xae, 0xb5,
+  0x6a, 0xd5, 0xf5, 0xad, 0x28, 0x7a, 0xec, 0xbf, 0x0f, 0xf8, 0xdf, 0x07,
+  0xfa, 0x8f, 0x7e, 0x6e, 0x44, 0xd1, 0x59, 0x91, 0xff, 0x25, 0x99, 0x56,
+  0xdd, 0xcf, 0x7e, 0xf8, 0xf0, 0x9f, 0x91, 0xfc, 0x1f, 0xbd, 0xf3, 0x13,
+  0xfd, 0xdc, 0x78, 0xb0, 0xed, 0xed, 0xc8, 0xbf, 0xf0, 0x9f, 0x1f, 0xb6,
+  0xa2, 0xc7, 0x5e, 0xf8, 0xcf, 0x68, 0x13, 0x2f, 0x7c, 0xd0, 0x1e, 0x5e,
+  0xf2, 0xef, 0x1f, 0x3e, 0x3c, 0xdc, 0xc9, 0x4f, 0x3c, 0x2a, 0xfe, 0x67,
+  0x9b, 0xdf, 0xfb, 0xe9, 0x03, 0xff, 0x4a, 0x9f, 0x6c, 0x6c, 0xbc, 0x3b,
+  0x78, 0x7b, 0x64, 0xaf, 0x4e, 0x57, 0xc5, 0x3c, 0x1a, 0x46, 0x55, 0x11,
+  0x67, 0xe5, 0x65, 0x52, 0x44, 0x71, 0xf4, 0xfe, 0xfc, 0x64, 0x63, 0x63,
+  0xfc, 0xe7, 0x77, 0xa7, 0x67, 0xe3, 0xe3, 0x71, 0xed, 0xb1, 0x1f, 0xf3,
+  0x65, 0x95, 0xe6, 0x59, 0xf9, 0x73, 0xf4, 0x23, 0x3d, 0x34, 0x1a, 0x8d,
+  0x7e, 0xde, 0xd8, 0x78, 0x7d, 0x34, 0x3e, 0x3c, 0x3f, 0x3e, 0xbb, 0x38,
+  0x3e, 0x7d, 0x57, 0x7b, 0x36, 0x4a, 0xcb, 0x88, 0x1a, 0xab, 0xf2, 0x7c,
+  0x4e, 0xff, 0xf8, 0xf6, 0x67, 0x71, 0x15, 0x47, 0x97, 0x45, 0xbe, 0x88,
+  0xf2, 0x82, 0xbf, 0x88, 0xa3, 0x32, 0x29, 0x6e, 0x93, 0x62, 0x10, 0xad,
+  0xca, 0x34, 0xbb, 0x8a, 0xf2, 0x2c, 0x89, 0xf2, 0xcb, 0xa8, 0xba, 0x4e,
+  0xac, 0xb9, 0x72, 0xb5, 0x5c, 0xe6, 0x45, 0x95, 0xcc, 0xa2, 0x65, 0x91,
+  0x57, 0xf9, 0x34, 0x9f, 0x97, 0xd1, 0xe6, 0xeb, 0xe3, 0xc3, 0x8b, 0x41,
+  0xf4, 0xe6, 0xf8, 0xe4, 0x88, 0xfe, 0xbd, 0x38, 0xc3, 0x3f, 0xe3, 0x41,
+  0xf4, 0xf5, 0xe9, 0xd9, 0x37, 0x47, 0xe7, 0x83, 0xe8, 0x9b, 0x0b, 0xfe,
+  0x8c, 0xff, 0xa5, 0x0f, 0xa3, 0xe3, 0xb7, 0x07, 0x67, 0x03, 0x6b, 0x8e,
+  0xff, 0xe0, 0x0f, 0x4f, 0x5e, 0xd3, 0x87, 0xf2, 0x83, 0xff, 0x3c, 0x3b,
+  0x3d, 0x7b, 0xa2, 0x3f, 0xf8, 0xcf, 0xf3, 0x8b, 0xb7, 0xf4, 0xed, 0xf9,
+  0xc5, 0x98, 0xfe, 0x1d, 0x1f, 0xf2, 0x3f, 0xe8, 0x65, 0xfc, 0xf6, 0x2b,
+  0xfc, 0x33, 0x76, 0xcd, 0x8d, 0xdf, 0xca, 0xe7, 0xe8, 0xe9, 0xe2, 0xe8,
+  0xe4, 0xdd, 0xd1, 0x45, 0x14, 0x67, 0xb3, 0xe8, 0x82, 0x9e, 0xdf, 0x1a,
+  0x45, 0x17, 0xd7, 0x49, 0x34, 0xcd, 0x17, 0x0b, 0xfe, 0x88, 0x56, 0x64,
+  0x96, 0x94, 0xe9, 0x55, 0x46, 0x53, 0xa1, 0x99, 0xdf, 0xe5, 0xc5, 0x4d,
+  0x14, 0xdd, 0xa5, 0xd5, 0x75, 0xbe, 0xaa, 0xac, 0xb9, 0x15, 0xad, 0x46,
+  0x94, 0x66, 0x55, 0x52, 0xc4, 0x53, 0x5e, 0xeb, 0xd1, 0x46, 0x6d, 0x55,
+  0xf3, 0x4b, 0x5a, 0xc3, 0x92, 0x16, 0x6d, 0xb2, 0x2a, 0xe7, 0x79, 0x3c,
+  0xe3, 0xa5, 0xa2, 0x57, 0x2e, 0x57, 0xb4, 0xc8, 0x45, 0x3a, 0xbd, 0x29,
+  0xa3, 0x79, 0x7a, 0x93, 0xf0, 0x42, 0x7d, 0xbc, 0xb7, 0x85, 0x1b, 0x48,
+  0xa3, 0xf1, 0x8a, 0xd6, 0x34, 0x1b, 0x5a, 0x73, 0x55, 0x3a, 0x8d, 0xb9,
+  0x03, 0xac, 0x5c, 0xb4, 0x5a, 0x72, 0x6b, 0xb2, 0x62, 0xd1, 0x32, 0x2f,
+  0xe9, 0xa5, 0xf1, 0xf8, 0x84, 0x46, 0x9e, 0x65, 0x09, 0xc6, 0x51, 0x0e,
+  0xe8, 0x8f, 0xfc, 0x26, 0x4d, 0xe8, 0x97, 0xcb, 0x74, 0x9e, 0x44, 0xb2,
+  0xa3, 0xae, 0x39, 0xde, 0xda, 0xa8, 0x48, 0xca, 0xd5, 0x22, 0xa1, 0xd5,
+  0x7b, 0x9b, 0x54, 0xf1, 0x3c, 0xcd, 0x6e, 0xe8, 0x57, 0x9e, 0xf8, 0x22,
+  0x2f, 0x92, 0x51, 0x74, 0x50, 0x46, 0xf7, 0xf9, 0x8a, 0x26, 0x3c, 0x9f,
+  0xd3, 0x9e, 0x27, 0xd1, 0x24, 0x99, 0xe7, 0x77, 0x03, 0xde, 0xe9, 0x28,
+  0x5b, 0x2d, 0x26, 0xd4, 0x40, 0x7e, 0xe9, 0x9b, 0x8b, 0xab, 0x15, 0x35,
+  0x27, 0x4f, 0x2f, 0x62, 0x9a, 0x13, 0xbd, 0x5b, 0x44, 0xd7, 0x09, 0xcd,
+  0xb9, 0x5c, 0xa6, 0xd9, 0xbf, 0xd4, 0xd7, 0x85, 0x96, 0x76, 0x99, 0xdf,
+  0x25, 0x05, 0xad, 0xec, 0xe4, 0x3e, 0xa2, 0x45, 0x98, 0x08, 0x11, 0x5e,
+  0x12, 0x91, 0x45, 0x31, 0x35, 0xe1, 0x08, 0x70, 0x58, 0x24, 0xf3, 0x98,
+  0x89, 0xc9, 0xf5, 0x31, 0xa2, 0x4d, 0x4c, 0x1c, 0xb5, 0xe9, 0xab, 0x9b,
+  0x4f, 0xb6, 0xf0, 0xf2, 0x8c, 0x66, 0x92, 0xce, 0x4b, 0xda, 0x06, 0x3e,
+  0x16, 0xfa, 0x0c, 0x6f, 0x2a, 0x1f, 0x13, 0xa2, 0xcd, 0xfb, 0xac, 0x8a,
+  0x3f, 0xa2, 0x7b, 0xa5, 0xcd, 0xe1, 0x2c, 0x59, 0x26, 0xd9, 0x2c, 0xc9,
+  0xaa, 0x51, 0xf4, 0xe7, 0x7c, 0xd5, 0xa7, 0xbe, 0x2f, 0x53, 0x5a, 0x83,
+  0x58, 0x9b, 0xa2, 0x9e, 0x89, 0x08, 0xa6, 0x45, 0xba, 0x0c, 0xb6, 0x22,
+  0xcf, 0x68, 0xcf, 0xa3, 0xf3, 0x37, 0x87, 0xd1, 0x93, 0x17, 0x9f, 0x3f,
+  0xf7, 0x7b, 0x4e, 0x0d, 0x44, 0xd3, 0x38, 0xa3, 0x19, 0x27, 0xd3, 0xf4,
+  0xf2, 0x3e, 0x5a, 0xac, 0xe6, 0x55, 0xba, 0xa4, 0xd5, 0xa7, 0xce, 0x4b,
+  0x3e, 0x40, 0xcb, 0xb8, 0xa8, 0x4a, 0x26, 0x02, 0x7c, 0x80, 0xb9, 0xdf,
+  0x15, 0x69, 0xc5, 0x07, 0x09, 0xdf, 0xd1, 0x08, 0x93, 0xaa, 0xb4, 0xe6,
+  0x98, 0xd6, 0xa8, 0x9f, 0x09, 0xd1, 0x16, 0x2d, 0x6d, 0x5c, 0x52, 0xa7,
+  0xfb, 0x1b, 0x9e, 0x87, 0x5c, 0x57, 0xd5, 0x72, 0x7f, 0x7b, 0xbb, 0x4c,
+  0xab, 0x64, 0xf4, 0x1f, 0x74, 0x0e, 0x07, 0xd5, 0x5d, 0x3e, 0xa8, 0xae,
+  0x8b, 0x24, 0xf9, 0xfb, 0x88, 0x68, 0xd8, 0x3d, 0x49, 0xfd, 0xde, 0xeb,
+  0xc0, 0xae, 0x92, 0x8a, 0x7a, 0xf8, 0xeb, 0x2a, 0xc9, 0xb8, 0x45, 0x1a,
+  0x47, 0x3c, 0x5f, 0x5e, 0xc7, 0xb4, 0x9d, 0x09, 0x51, 0x23, 0x9f, 0x6c,
+  0x22, 0x18, 0x1e, 0x95, 0x9c, 0xed, 0x1f, 0x7f, 0x6e, 0x77, 0x7a, 0x89,
+  0x3e, 0xe9, 0xdf, 0x91, 0xbe, 0x15, 0xd3, 0x6a, 0x53, 0x6f, 0xdb, 0x4c,
+  0x65, 0x3f, 0xee, 0x0e, 0x77, 0x77, 0x76, 0x7e, 0x1e, 0x55, 0x1f, 0xab,
+  0x4f, 0x7e, 0x65, 0x67, 0xc7, 0xbf, 0xc4, 0x4f, 0x6f, 0xf2, 0xac, 0xa3,
+  0x39, 0x11, 0x0e, 0x0f, 0xe1, 0x6f, 0x49, 0x91, 0x97, 0x5b, 0x9d, 0x8d,
+  0xcd, 0x93, 0x8a, 0x8e, 0x5d, 0xd0, 0x52, 0x3c, 0xfc, 0x5b, 0xbd, 0xeb,
+  0x77, 0x49, 0x09, 0xca, 0xf1, 0x33, 0x8e, 0xe2, 0x82, 0xa8, 0x37, 0xaf,
+  0x3c, 0x93, 0x1a, 0xd0, 0xd1, 0xac, 0xdc, 0xfa, 0xd0, 0xc9, 0xa3, 0xa7,
+  0x89, 0xbd, 0xc5, 0x73, 0xe6, 0x6c, 0x65, 0x94, 0x25, 0x1f, 0xdd, 0x59,
+  0x27, 0x1e, 0x90, 0xc4, 0xd3, 0xeb, 0x28, 0xa7, 0x23, 0x50, 0x74, 0x6c,
+  0x44, 0x9c, 0xdd, 0x8f, 0xf2, 0xe2, 0x6a, 0x3b, 0x2e, 0xa6, 0xd7, 0xe9,
+  0x2d, 0x2d, 0xc6, 0x8b, 0x17, 0xcf, 0x87, 0xf4, 0xcf, 0x8b, 0x9f, 0xb7,
+  0x6f, 0xf3, 0x39, 0xad, 0xcd, 0xd3, 0x9f, 0xb7, 0x79, 0x93, 0xff, 0x23,
+  0x1e, 0x4c, 0x06, 0xd3, 0xbf, 0x8f, 0xae, 0xab, 0xc5, 0x7c, 0x2d, 0xe9,
+  0x50, 0x63, 0x51, 0xbc, 0xc8, 0x57, 0x59, 0xe5, 0xc8, 0x85, 0xa8, 0xae,
+  0x0a, 0xd8, 0x13, 0x1d, 0x58, 0x3a, 0xa5, 0x4c, 0xdc, 0x4c, 0x45, 0x7c,
+  0xee, 0xe8, 0x88, 0xfa, 0x03, 0x59, 0x4d, 0xaf, 0x69, 0xee, 0x44, 0x3e,
+  0xb1, 0xce, 0xbf, 0x4a, 0x63, 0x3e, 0x9a, 0xc4, 0x21, 0x98, 0x63, 0xa1,
+  0x29, 0xe9, 0x2c, 0xa5, 0xe7, 0xf2, 0x62, 0x96, 0x14, 0x75, 0x42, 0xc6,
+  0x70, 0xfc, 0x78, 0x22, 0x5a, 0xcb, 0x25, 0x75, 0xbe, 0x62, 0x66, 0x87,
+  0xb3, 0xc6, 0x2d, 0xd0, 0x29, 0xbd, 0xa2, 0x65, 0xa2, 0xa5, 0x61, 0xd2,
+  0xe2, 0x95, 0xbb, 0x8f, 0xde, 0xd1, 0xfe, 0x09, 0x87, 0x08, 0x28, 0x50,
+  0x76, 0xab, 0x63, 0xd5, 0xee, 0xee, 0xee, 0xd6, 0x93, 0xd2, 0xfe, 0x6e,
+  0x8b, 0x9a, 0x82, 0xd7, 0xba, 0x28, 0x60, 0x7f, 0xaf, 0xfe, 0xc2, 0xf7,
+  0xc4, 0x44, 0x3d, 0x39, 0xd3, 0x40, 0xfe, 0xe3, 0xef, 0x01, 0x3d, 0xdc,
+  0xf1, 0xb7, 0x69, 0x76, 0x9b, 0xdf, 0xd0, 0x1a, 0xe0, 0x96, 0x8b, 0x6b,
+  0xeb, 0x1b, 0x31, 0x9f, 0x58, 0x2c, 0x2b, 0x77, 0x7d, 0x30, 0xa1, 0xd0,
+  0x47, 0x93, 0x78, 0x32, 0xbf, 0x8f, 0xae, 0xe3, 0xdb, 0x84, 0xa7, 0xbe,
+  0x24, 0x0a, 0xe2, 0xc5, 0x20, 0xb6, 0x3e, 0x07, 0x9f, 0xd1, 0x83, 0x3b,
+  0xcb, 0x57, 0x13, 0x3a, 0xfc, 0x7f, 0x5d, 0xe5, 0x95, 0xac, 0x51, 0x7c,
+  0x9b, 0xa7, 0xb3, 0xda, 0x5d, 0x79, 0x9d, 0x30, 0xc3, 0xe1, 0x8e, 0x71,
+  0x89, 0x10, 0xc3, 0xe3, 0x91, 0xe2, 0x08, 0xa4, 0x15, 0x5f, 0x47, 0xc4,
+  0xaa, 0x68, 0x59, 0xf2, 0x28, 0xba, 0xca, 0x99, 0x7e, 0xc1, 0x20, 0x41,
+  0x80, 0xb4, 0x3f, 0xd7, 0x31, 0xdf, 0x3a, 0xb4, 0x02, 0x8e, 0x42, 0x8b,
+  0x04, 0xbc, 0x12, 0x9b, 0x16, 0xcf, 0x07, 0x72, 0xbb, 0xf0, 0x3b, 0xc9,
+  0xc7, 0x78, 0xc1, 0x8c, 0xa8, 0xff, 0xaf, 0xfd, 0x41, 0xd4, 0xff, 0xb7,
+  0x3e, 0xf8, 0x7c, 0xff, 0x0f, 0x7d, 0xbf, 0xe5, 0x24, 0x2e, 0xdd, 0xa6,
+  0x33, 0xbe, 0x28, 0x68, 0x26, 0xc7, 0x67, 0xb7, 0xcf, 0xa3, 0xbf, 0xf1,
+  0xdd, 0x4e, 0xbc, 0x30, 0xf9, 0x68, 0xf4, 0x62, 0x73, 0xa3, 0xb7, 0x23,
+  0x62, 0x8a, 0xf1, 0x92, 0x2f, 0xf9, 0xa4, 0x98, 0x12, 0x71, 0xc5, 0x57,
+  0x44, 0x4e, 0x74, 0x57, 0x5a, 0x73, 0xdc, 0x3e, 0xbf, 0x22, 0xd3, 0x22,
+  0x06, 0x16, 0x65, 0xf1, 0x82, 0xe8, 0xf5, 0x84, 0x47, 0x94, 0x66, 0xed,
+  0x0d, 0xfd, 0xf1, 0x32, 0xf9, 0x7c, 0x67, 0x7f, 0xff, 0xc9, 0xef, 0xf7,
+  0x9e, 0x25, 0xd5, 0xf5, 0xce, 0xcf, 0xdb, 0xee, 0x91, 0xe3, 0x4b, 0x2c,
+  0xbb, 0x51, 0xa2, 0x0d, 0x82, 0x6e, 0x61, 0xc7, 0xc5, 0xe9, 0x7d, 0xfa,
+  0x3d, 0xb9, 0x4c, 0x3f, 0x0e, 0x4c, 0x9e, 0x91, 0x13, 0x11, 0x13, 0x85,
+  0xd0, 0xfe, 0xf1, 0xe1, 0xb5, 0xe6, 0xae, 0x56, 0x49, 0x49, 0x2b, 0x79,
+  0x77, 0x1d, 0x57, 0x91, 0x6b, 0x40, 0x76, 0x76, 0x91, 0x5e, 0x5d, 0x57,
+  0xd1, 0x5d, 0xcc, 0x97, 0xc1, 0x71, 0x25, 0x4d, 0xf0, 0x2d, 0x4c, 0x57,
+  0xc0, 0x65, 0x4c, 0xbc, 0x9c, 0xf7, 0x10, 0x57, 0xee, 0xc4, 0x4b, 0x00,
+  0x15, 0x51, 0xbc, 0x6c, 0x88, 0x17, 0x77, 0x26, 0x71, 0xc9, 0x67, 0x2a,
+  0xa3, 0xa3, 0x5b, 0xd1, 0x1d, 0xbe, 0xe2, 0xbf, 0xae, 0xe9, 0x96, 0xc6,
+  0x1a, 0xe8, 0x40, 0x71, 0x91, 0xbd, 0xe1, 0xed, 0xe4, 0xbd, 0x71, 0x97,
+  0x0b, 0x6d, 0xd2, 0x40, 0xb7, 0xd9, 0xbd, 0x51, 0xd2, 0xd9, 0x23, 0xbe,
+  0xe1, 0x28, 0xa3, 0xc7, 0xec, 0xaf, 0x27, 0xf3, 0xc4, 0x18, 0xe3, 0x92,
+  0x2f, 0x72, 0xb9, 0xae, 0x69, 0xf0, 0xc1, 0x64, 0x69, 0xd1, 0xe2, 0x1b,
+  0x16, 0x19, 0x1a, 0x82, 0x09, 0x5e, 0x9b, 0xe5, 0x44, 0x64, 0x34, 0x5a,
+  0x62, 0x93, 0x3c, 0x33, 0x66, 0x7e, 0x58, 0x15, 0x10, 0x39, 0xb5, 0xc9,
+  0x1f, 0xa6, 0x15, 0xdf, 0x01, 0x90, 0x32, 0x69, 0xbc, 0xb4, 0x28, 0x10,
+  0x14, 0x89, 0x85, 0x06, 0xf3, 0xc7, 0xf5, 0x45, 0xcf, 0x46, 0xb7, 0x24,
+  0x45, 0x90, 0xc0, 0x98, 0xb8, 0xb7, 0x70, 0xdf, 0x4e, 0x59, 0x76, 0x99,
+  0xd3, 0x79, 0x99, 0xe6, 0x45, 0xc1, 0x12, 0x39, 0xef, 0xe0, 0x44, 0x58,
+  0xdc, 0x22, 0xa1, 0x6b, 0x3e, 0x5c, 0xce, 0x94, 0x2f, 0x1c, 0x62, 0x35,
+  0x24, 0x37, 0x80, 0x99, 0xd0, 0xfd, 0x0e, 0x6e, 0x8c, 0x89, 0x63, 0x74,
+  0xdc, 0xf6, 0x74, 0x9a, 0x2c, 0xab, 0xb2, 0x6b, 0x4e, 0xb6, 0xe1, 0x34,
+  0x9c, 0x22, 0xe1, 0x95, 0x0f, 0x85, 0x22, 0xac, 0xab, 0xbb, 0x94, 0x21,
+  0x17, 0x99, 0x9c, 0x41, 0x72, 0x52, 0xe9, 0x56, 0xad, 0x02, 0x6d, 0x10,
+  0x47, 0xc3, 0x9a, 0x2f, 0x78, 0xa0, 0xfc, 0x70, 0x29, 0x27, 0x15, 0x9c,
+  0x93, 0x37, 0x52, 0x24, 0x61, 0xe9, 0x97, 0x2f, 0x15, 0x5a, 0x4f, 0xd7,
+  0x38, 0xf5, 0xea, 0xf6, 0x94, 0xbb, 0x2f, 0x49, 0x87, 0xa0, 0x9b, 0x76,
+  0x56, 0x5e, 0x93, 0x70, 0x54, 0xea, 0xc9, 0x4e, 0x17, 0x44, 0x33, 0xb7,
+  0xbc, 0xbf, 0xcb, 0x24, 0x99, 0x8d, 0xa2, 0xd3, 0x4b, 0x66, 0xb0, 0x05,
+  0x0d, 0xba, 0xc2, 0xd7, 0xcc, 0xf3, 0x69, 0xdd, 0x66, 0x10, 0xb2, 0xdd,
+  0xd1, 0x92, 0xa1, 0x04, 0xcc, 0x9b, 0x29, 0x8d, 0x16, 0x3b, 0x62, 0x2e,
+  0x37, 0xaf, 0x5f, 0x10, 0x38, 0x87, 0xc4, 0xc8, 0x79, 0x78, 0x93, 0x24,
+  0x02, 0x25, 0x4e, 0x92, 0xea, 0x2e, 0x49, 0x5c, 0x73, 0x65, 0x42, 0x97,
+  0x12, 0x6f, 0x9a, 0x48, 0x66, 0x60, 0x86, 0xbc, 0xb4, 0x67, 0xe7, 0xa7,
+  0x5f, 0x9f, 0x1f, 0x8d, 0xc7, 0xd1, 0xdb, 0xa3, 0x8b, 0xa3, 0xf3, 0xda,
+  0x4a, 0x67, 0x79, 0xb1, 0xc0, 0x8e, 0xce, 0xd2, 0x72, 0x39, 0x8f, 0xef,
+  0x79, 0xab, 0x69, 0x26, 0x57, 0x05, 0x9f, 0xac, 0x45, 0xc2, 0x17, 0xc4,
+  0x6c, 0x05, 0x4e, 0x16, 0xe5, 0xc4, 0x1f, 0x62, 0x95, 0x48, 0x99, 0x99,
+  0x40, 0x8c, 0xcd, 0xae, 0xfc, 0x4a, 0x13, 0xc7, 0xd1, 0x7b, 0x8e, 0x2f,
+  0x3a, 0xb7, 0x1f, 0x2c, 0x1a, 0x42, 0xf9, 0x18, 0xf8, 0xcf, 0x64, 0x99,
+  0x4a, 0xcc, 0x89, 0x68, 0x36, 0x5d, 0x80, 0xd9, 0xd1, 0x4f, 0x2f, 0x0d,
+  0x26, 0x97, 0x24, 0x0a, 0xd3, 0xdd, 0xd7, 0x20, 0x0d, 0x37, 0x4e, 0xac,
+  0x2b, 0x74, 0x1a, 0x56, 0x72, 0xa8, 0x73, 0x1a, 0xeb, 0x22, 0xcd, 0x88,
+  0xc0, 0x88, 0x20, 0xf5, 0x94, 0x33, 0x25, 0xd0, 0x58, 0x2f, 0x85, 0x27,
+  0xe8, 0x8a, 0xd4, 0x95, 0x25, 0x7a, 0x99, 0x36, 0x9b, 0xb8, 0xa0, 0x9b,
+  0x1e, 0x06, 0x45, 0xa4, 0xc9, 0xfc, 0x7a, 0xc2, 0xac, 0x89, 0x35, 0x06,
+  0x12, 0xed, 0x92, 0xce, 0xde, 0xdc, 0x7d, 0x42, 0x6f, 0xd0, 0xd8, 0xe8,
+  0x36, 0xe1, 0x0b, 0xe2, 0x3a, 0x69, 0xae, 0x22, 0x1d, 0x22, 0xf0, 0x96,
+  0xbb, 0xb4, 0xc4, 0xa1, 0xba, 0xcb, 0x57, 0x73, 0x92, 0xcf, 0xf9, 0x81,
+  0xd5, 0x12, 0x2f, 0x50, 0x57, 0x4b, 0x7f, 0x7a, 0x16, 0xe9, 0x47, 0x5e,
+  0xf5, 0x66, 0x2b, 0x34, 0x34, 0xfa, 0x73, 0x49, 0x9b, 0x20, 0xc3, 0x19,
+  0x35, 0x79, 0x2b, 0xb8, 0x46, 0x6b, 0x0f, 0xf9, 0xb4, 0x80, 0xdd, 0x9d,
+  0x9d, 0x8e, 0x2f, 0xf8, 0xee, 0x3c, 0x7b, 0x7f, 0x41, 0x0d, 0xd1, 0xe5,
+  0x59, 0x56, 0xb4, 0x9d, 0xfc, 0x62, 0x96, 0x40, 0x39, 0xb2, 0xe6, 0x68,
+  0xd7, 0x52, 0x1c, 0x71, 0xc8, 0x06, 0xd6, 0xa5, 0x8c, 0x51, 0xb4, 0x47,
+  0x26, 0x5e, 0xd3, 0x1d, 0xe5, 0xf6, 0xf3, 0x2f, 0x45, 0x9b, 0x5f, 0x6c,
+  0xd1, 0x76, 0x0f, 0x5d, 0x73, 0x3f, 0xf2, 0xd3, 0xb8, 0xb5, 0xcb, 0x74,
+  0x91, 0xce, 0xe3, 0x40, 0x42, 0x51, 0x4e, 0xc4, 0x74, 0xed, 0xce, 0xe3,
+  0x94, 0xd8, 0x2e, 0x06, 0xed, 0x55, 0x24, 0x5e, 0x41, 0x9c, 0x66, 0xbf,
+  0x51, 0x33, 0xbe, 0x48, 0x21, 0x03, 0x2e, 0x53, 0xb7, 0x70, 0xbc, 0x63,
+  0x7c, 0xcc, 0x6b, 0xcb, 0xd4, 0xdc, 0xb5, 0xd6, 0xb2, 0x31, 0x27, 0x87,
+  0x0e, 0xee, 0x16, 0xae, 0x37, 0x89, 0x8b, 0x9e, 0xe3, 0x60, 0xa2, 0x18,
+  0x53, 0xa3, 0x57, 0x2b, 0x1a, 0xbc, 0xac, 0xea, 0x20, 0x1a, 0xfe, 0x8e,
+  0x47, 0xce, 0xfa, 0x91, 0x3b, 0xd1, 0x24, 0x77, 0x67, 0xb3, 0xd1, 0xc6,
+  0x29, 0xf4, 0x72, 0xa7, 0xc4, 0x9f, 0x8a, 0xfa, 0x1e, 0x09, 0xfb, 0x17,
+  0x7d, 0x20, 0x12, 0x8d, 0x9b, 0xa4, 0xaf, 0x3b, 0xa2, 0xc1, 0x98, 0x96,
+  0x90, 0x98, 0xc9, 0x5b, 0x1e, 0xba, 0x76, 0xa6, 0x3a, 0x3f, 0xf6, 0x89,
+  0x96, 0x95, 0x66, 0xe5, 0xae, 0xe4, 0xd9, 0x2c, 0xe5, 0xef, 0x88, 0xd8,
+  0x89, 0x51, 0xaf, 0x12, 0x08, 0xb7, 0x3a, 0xc7, 0x85, 0x9f, 0x1b, 0x6b,
+  0x4b, 0xe5, 0x35, 0x09, 0xc7, 0x51, 0x4f, 0x18, 0xca, 0x90, 0xbb, 0xe9,
+  0xf1, 0xc2, 0x2e, 0x1a, 0x9d, 0xd0, 0x5c, 0x66, 0x7a, 0x59, 0xa9, 0x80,
+  0x41, 0xdb, 0xb7, 0x88, 0xef, 0x43, 0x49, 0x14, 0x2c, 0x07, 0x23, 0xcf,
+  0x0b, 0x77, 0x6f, 0xd3, 0xcd, 0xb0, 0x64, 0x99, 0x40, 0x59, 0x11, 0x78,
+  0x3a, 0xce, 0x4f, 0x29, 0x43, 0x1b, 0x90, 0xd0, 0xc3, 0x4f, 0x5e, 0x5d,
+  0xdb, 0xa3, 0xc1, 0xfd, 0x10, 0xd3, 0xdc, 0x98, 0xc7, 0xb1, 0xda, 0x36,
+  0x33, 0xf6, 0x95, 0x17, 0xa2, 0xbc, 0xcf, 0x73, 0xe6, 0x3a, 0x3d, 0x11,
+  0xbd, 0x74, 0xe4, 0x18, 0x3a, 0x13, 0xd6, 0x10, 0xbb, 0xca, 0x7f, 0x5a,
+  0x73, 0x6e, 0xd8, 0xba, 0x5c, 0xe5, 0xa3, 0x43, 0xf3, 0x0b, 0x35, 0xc6,
+  0x22, 0xd1, 0x0d, 0x50, 0x32, 0x59, 0xd9, 0xba, 0x83, 0xda, 0x88, 0x63,
+  0xf7, 0x2b, 0x39, 0x1c, 0x10, 0xe4, 0x1b, 0x2b, 0x5f, 0x42, 0xb6, 0x56,
+  0x7e, 0xec, 0x66, 0x46, 0x33, 0x9a, 0xa5, 0xc4, 0xd2, 0x88, 0xaf, 0xda,
+  0xce, 0x78, 0x7d, 0xa3, 0x43, 0x96, 0xbb, 0x6f, 0x09, 0xe9, 0xac, 0x3a,
+  0x87, 0x9c, 0xd5, 0xc6, 0x34, 0x3c, 0xa5, 0x9d, 0x3a, 0xc1, 0x3c, 0x86,
+  0xb7, 0x11, 0x9f, 0x06, 0x92, 0x7e, 0xf9, 0x68, 0x0c, 0x4f, 0x4f, 0x6e,
+  0x03, 0xaa, 0x66, 0x05, 0x31, 0xe3, 0xeb, 0x76, 0x00, 0x25, 0x7c, 0x92,
+  0xe7, 0xa4, 0x87, 0xf9, 0xa9, 0xb1, 0xf2, 0x94, 0x64, 0xcc, 0xac, 0x74,
+  0x47, 0x87, 0x43, 0xf9, 0x0a, 0x2d, 0xdf, 0x93, 0x02, 0x10, 0x5f, 0xc5,
+  0xa9, 0xa3, 0x37, 0x65, 0x6c, 0xee, 0xd9, 0x2c, 0xd7, 0xc7, 0x79, 0xa7,
+  0xf8, 0x22, 0x57, 0x1e, 0xb2, 0xc2, 0x7d, 0x97, 0xf0, 0xbc, 0x88, 0x09,
+  0xe0, 0x24, 0x6b, 0xb3, 0x90, 0x7e, 0xac, 0xb9, 0x09, 0xe4, 0x3d, 0x16,
+  0x9d, 0xc0, 0x09, 0x21, 0x08, 0x51, 0x93, 0xbd, 0x51, 0xf4, 0x4d, 0x7e,
+  0x97, 0xc0, 0x24, 0x05, 0x31, 0x35, 0x65, 0xa3, 0x0a, 0x49, 0x34, 0x77,
+  0x49, 0xb4, 0x20, 0x09, 0x8a, 0x56, 0x13, 0x97, 0x28, 0x3e, 0xa3, 0x71,
+  0x7a, 0xd1, 0x3b, 0xbf, 0x43, 0xb7, 0x6e, 0x12, 0x6e, 0x27, 0x2f, 0xe5,
+  0x44, 0x44, 0x9b, 0xb8, 0xa4, 0xa7, 0xbc, 0x58, 0xcb, 0xca, 0xcf, 0xc2,
+  0xad, 0x07, 0xb1, 0xcd, 0x32, 0x38, 0x5c, 0x7c, 0x63, 0xd1, 0x08, 0xa2,
+  0xcf, 0x46, 0xbb, 0x2f, 0x46, 0x3b, 0x23, 0x16, 0xa9, 0x93, 0xdb, 0x34,
+  0x5f, 0x95, 0xd4, 0x3b, 0x86, 0x12, 0x05, 0x6f, 0x26, 0x05, 0x8b, 0xda,
+  0xf9, 0xd5, 0xd5, 0x5c, 0x2e, 0xf0, 0xed, 0xfc, 0xf2, 0x32, 0xb8, 0xe3,
+  0x8b, 0x64, 0x29, 0xa2, 0x3c, 0x2f, 0x8e, 0x1e, 0x3a, 0xe1, 0x71, 0xe1,
+  0xe5, 0xae, 0xcb, 0xe9, 0xf5, 0xe3, 0xe1, 0xef, 0x68, 0xa3, 0x87, 0xc6,
+  0x8d, 0x86, 0xc4, 0x8c, 0x1a, 0x26, 0xc7, 0xb7, 0x6c, 0x9a, 0x09, 0xaf,
+  0x44, 0xcf, 0xba, 0x44, 0x60, 0x4b, 0x41, 0x5a, 0xee, 0x43, 0x6a, 0x21,
+  0x72, 0xec, 0x2c, 0x30, 0xf8, 0x04, 0x44, 0x46, 0xcc, 0x29, 0x9b, 0xc5,
+  0x05, 0x69, 0xd2, 0x6c, 0x37, 0xa2, 0x87, 0xf9, 0xb4, 0xc5, 0x42, 0xee,
+  0x03, 0xe1, 0x79, 0x9e, 0xc4, 0x86, 0xfb, 0x3c, 0xc0, 0x50, 0xab, 0x36,
+  0xae, 0x43, 0x57, 0x41, 0x29, 0x23, 0x53, 0x51, 0x34, 0xf6, 0x92, 0x89,
+  0x67, 0xde, 0xa6, 0x77, 0x5e, 0xe6, 0xf3, 0x79, 0x7e, 0xc7, 0x97, 0x08,
+  0x0b, 0x93, 0xc1, 0xb6, 0xda, 0x76, 0x94, 0x65, 0x3e, 0x4d, 0xc5, 0x70,
+  0xa4, 0x8b, 0x0e, 0x5d, 0x19, 0x56, 0x4e, 0x7e, 0xb5, 0xd4, 0xdb, 0x9d,
+  0xc5, 0xd6, 0x92, 0x38, 0x49, 0xe4, 0xf4, 0x7e, 0x98, 0x8a, 0x1a, 0xcd,
+  0xf9, 0x4b, 0x4f, 0x8e, 0xa4, 0xb2, 0x62, 0x1a, 0x49, 0xca, 0xfa, 0xd8,
+  0x9d, 0xe9, 0xed, 0xe9, 0xd4, 0xb3, 0xc6, 0xe0, 0xa8, 0x0e, 0x1a, 0xcd,
+  0x95, 0x2b, 0x6a, 0x83, 0xd6, 0x7b, 0x96, 0xb2, 0x7d, 0x90, 0xb4, 0x27,
+  0x31, 0xf9, 0x89, 0xac, 0x4f, 0xaf, 0x4d, 0x57, 0x65, 0x45, 0x82, 0xa6,
+  0xf5, 0x2a, 0x4d, 0x51, 0xbf, 0x44, 0x92, 0x07, 0x4c, 0x67, 0x8d, 0xe6,
+  0x88, 0xe8, 0x3e, 0x1b, 0x3d, 0x79, 0x3e, 0xda, 0x09, 0x08, 0x61, 0x87,
+  0xd7, 0x99, 0x55, 0xab, 0xdd, 0xd1, 0x4e, 0xe3, 0xf1, 0x4d, 0xbe, 0xd3,
+  0xb7, 0x6c, 0xc9, 0x6b, 0x6b, 0x8e, 0xdb, 0xde, 0xce, 0x01, 0xbd, 0x19,
+  0xde, 0x64, 0x72, 0x67, 0xa7, 0xde, 0x3c, 0xe5, 0x7a, 0xa7, 0x1d, 0xce,
+  0x20, 0x0e, 0xca, 0x7d, 0x48, 0xf7, 0xf9, 0xbe, 0xb4, 0xb4, 0x3b, 0xda,
+  0x0d, 0xb6, 0x5e, 0x87, 0xb3, 0xdb, 0x3d, 0x9c, 0x36, 0x01, 0x34, 0x06,
+  0xb3, 0x6b, 0x42, 0xb3, 0x48, 0x4a, 0xae, 0xdf, 0x46, 0x73, 0xa6, 0xaa,
+  0xe9, 0x8b, 0xb6, 0x64, 0xba, 0x48, 0x4f, 0x6a, 0x8b, 0x84, 0x11, 0xed,
+  0x7d, 0xc2, 0xf2, 0x80, 0x4c, 0x52, 0xd2, 0xb2, 0xb8, 0x5f, 0xda, 0x10,
+  0xbf, 0x35, 0xb2, 0x2a, 0x18, 0xea, 0x9e, 0x0c, 0xb0, 0x83, 0x74, 0x70,
+  0xb1, 0xe0, 0x62, 0xe0, 0x91, 0xaf, 0xe8, 0xde, 0x2a, 0xe6, 0xd0, 0x9a,
+  0xcc, 0xf0, 0x49, 0x8c, 0x84, 0xf8, 0x5b, 0x3a, 0xaf, 0x94, 0x20, 0xc5,
+  0x3a, 0xc5, 0x7d, 0x8d, 0x9a, 0xa3, 0x7b, 0x60, 0x36, 0xc4, 0x0d, 0xb3,
+  0x65, 0xd6, 0x78, 0xe1, 0xb5, 0x70, 0x61, 0x15, 0xb5, 0xdf, 0x9d, 0xbd,
+  0xa3, 0x99, 0x9d, 0x8c, 0xf9, 0xe6, 0x23, 0xd5, 0x54, 0x56, 0x08, 0x9f,
+  0xd2, 0xb2, 0x1a, 0x6f, 0xf7, 0xa2, 0x30, 0x49, 0xc1, 0x8d, 0xe6, 0xda,
+  0x23, 0x36, 0x83, 0x00, 0x1b, 0xa0, 0xe9, 0xdb, 0x22, 0x26, 0xad, 0x0d,
+  0x73, 0xd5, 0x59, 0x94, 0xdc, 0xfc, 0x48, 0x7a, 0x6e, 0xad, 0x0e, 0xa4,
+  0x03, 0x28, 0x83, 0xae, 0xe5, 0xfa, 0xbb, 0xb2, 0xb2, 0xbc, 0x2a, 0x59,
+  0x72, 0x95, 0x57, 0x7c, 0xa4, 0xed, 0x33, 0x7a, 0x66, 0xd8, 0x68, 0x0e,
+  0xab, 0x86, 0x01, 0x81, 0x33, 0x89, 0x7e, 0xa6, 0xaa, 0x08, 0xef, 0x35,
+  0x69, 0x5a, 0xc4, 0xd5, 0xc0, 0x0d, 0x36, 0x1e, 0x5a, 0xd8, 0xe7, 0xad,
+  0x85, 0x8d, 0xe7, 0x6b, 0x57, 0x96, 0xbb, 0x3a, 0x38, 0xa1, 0xe9, 0xf1,
+  0xba, 0x06, 0xcb, 0x8a, 0xcf, 0x82, 0x65, 0x85, 0xb9, 0xd7, 0x16, 0x76,
+  0xfd, 0xca, 0x62, 0x69, 0x3f, 0x79, 0x6d, 0xb9, 0x13, 0xe9, 0xaa, 0x79,
+  0x2c, 0x4b, 0xd5, 0xf6, 0x3e, 0x65, 0x6d, 0x83, 0xc5, 0x95, 0x4f, 0xa3,
+  0xbd, 0x16, 0xcb, 0x5a, 0xfe, 0x36, 0x8b, 0xbb, 0xcb, 0x8c, 0xaa, 0x9a,
+  0x97, 0xb7, 0x2d, 0xbe, 0x40, 0x93, 0xde, 0x62, 0x0b, 0x09, 0x1b, 0xea,
+  0x42, 0xbe, 0xc0, 0xcb, 0xec, 0xd9, 0xc2, 0x47, 0x31, 0xe2, 0xd9, 0x04,
+  0x9c, 0x91, 0x24, 0x6e, 0x9d, 0xc3, 0x45, 0x5e, 0xc9, 0xcb, 0x32, 0xf4,
+  0x91, 0x37, 0xba, 0x72, 0xab, 0xfe, 0x6e, 0xd6, 0xe1, 0x8c, 0x76, 0x06,
+  0xfe, 0xf7, 0xdd, 0x26, 0x0b, 0xe7, 0x3b, 0xd8, 0x7d, 0x8b, 0x35, 0x24,
+  0x39, 0xa1, 0x2a, 0x72, 0x18, 0x8c, 0x6a, 0x43, 0xc4, 0xad, 0x48, 0x9c,
+  0x71, 0x4a, 0x3a, 0x1c, 0xf1, 0xc8, 0xcd, 0xb4, 0xe6, 0x2d, 0x33, 0x59,
+  0x92, 0x36, 0x78, 0x12, 0x4f, 0x6f, 0xf8, 0x26, 0x4a, 0xd5, 0x0e, 0x6d,
+  0xdb, 0x24, 0xb7, 0x05, 0xe9, 0xb6, 0xb7, 0x09, 0x7b, 0x94, 0xac, 0xa3,
+  0xad, 0x80, 0xb5, 0xee, 0xf1, 0x22, 0x96, 0xe5, 0xfc, 0x76, 0xef, 0x53,
+  0x17, 0x91, 0x3b, 0xb4, 0x11, 0xee, 0xb5, 0x97, 0x50, 0x2f, 0xb8, 0x35,
+  0x8b, 0x88, 0xb7, 0xfd, 0x32, 0x8e, 0x73, 0xba, 0xe5, 0xd3, 0x85, 0xf5,
+  0x90, 0x86, 0x9c, 0x81, 0xa5, 0x7d, 0x7a, 0xfa, 0x76, 0xed, 0x71, 0x1d,
+  0xe9, 0xd7, 0x29, 0x3b, 0x8f, 0x66, 0x09, 0xcc, 0x44, 0x74, 0x80, 0x66,
+  0x70, 0x0e, 0xd1, 0xf5, 0x93, 0x50, 0x9b, 0x81, 0xd0, 0x3d, 0x7c, 0x62,
+  0x53, 0x7d, 0xf2, 0x6b, 0xa6, 0xfa, 0xe4, 0x9f, 0x30, 0xd5, 0x27, 0x6b,
+  0xa7, 0xea, 0x67, 0xf1, 0x94, 0x67, 0x91, 0x2e, 0x6f, 0x9f, 0x36, 0xc5,
+  0x20, 0xbe, 0xe1, 0x54, 0x1e, 0xad, 0x6a, 0x37, 0x22, 0x5d, 0x21, 0xf9,
+  0xfc, 0x36, 0x51, 0x21, 0x81, 0x3e, 0x38, 0x3e, 0xbb, 0x7d, 0xca, 0x62,
+  0x27, 0xcb, 0x69, 0x6c, 0x0f, 0x62, 0x29, 0xb7, 0x8b, 0x4a, 0x59, 0xd5,
+  0x0d, 0xd5, 0x06, 0x36, 0x58, 0xb2, 0x7d, 0x37, 0x18, 0xcd, 0x73, 0x1d,
+  0xcd, 0xf3, 0xae, 0xd1, 0x7c, 0xfa, 0x70, 0x9e, 0x07, 0xc3, 0xf9, 0x85,
+  0xa3, 0x79, 0x1a, 0x8c, 0x26, 0xe6, 0xd1, 0xc4, 0x4b, 0x76, 0xcb, 0x35,
+  0xb7, 0x98, 0x14, 0xfb, 0x6d, 0xf6, 0xec, 0x6e, 0x99, 0x5d, 0x5f, 0x5d,
+  0x1c, 0x99, 0xf3, 0x88, 0x42, 0xfe, 0x67, 0x07, 0xa4, 0x0e, 0x55, 0xda,
+  0x51, 0x2d, 0xb7, 0x29, 0xbd, 0xc6, 0x05, 0x7b, 0x2d, 0xd4, 0x41, 0x1a,
+  0x48, 0xb9, 0xf4, 0x3f, 0xda, 0x6e, 0xe7, 0x99, 0x63, 0x4b, 0x3c, 0xab,
+  0xfc, 0xaa, 0xcc, 0x83, 0x2e, 0xf8, 0x9d, 0xa6, 0xe4, 0x91, 0x27, 0x25,
+  0xab, 0x7d, 0xc9, 0xc7, 0x94, 0x1d, 0xb2, 0xa9, 0x1a, 0x90, 0x49, 0xcd,
+  0x8b, 0xa6, 0x62, 0x98, 0x1f, 0xb1, 0x53, 0x0a, 0x54, 0x25, 0x16, 0x46,
+  0x0c, 0x36, 0xba, 0x9c, 0xc7, 0x57, 0x1d, 0x57, 0x63, 0x7a, 0x95, 0xe5,
+  0xea, 0x20, 0x2d, 0x89, 0xea, 0xe0, 0xd1, 0x56, 0x42, 0x2c, 0x89, 0x8b,
+  0x64, 0xd3, 0xf9, 0x0a, 0x2e, 0xb2, 0x53, 0x9a, 0xe0, 0x78, 0xfc, 0x4d,
+  0xc8, 0x0e, 0x0e, 0x78, 0x05, 0x59, 0xa4, 0x1c, 0xc6, 0x57, 0x2c, 0x5d,
+  0xbe, 0x94, 0x1f, 0x65, 0xc5, 0xbc, 0xfa, 0x8b, 0x6e, 0x79, 0x67, 0xac,
+  0x3a, 0x24, 0xec, 0xfc, 0xfc, 0xea, 0x41, 0xf0, 0x0e, 0xaf, 0x5f, 0xe9,
+  0xd7, 0x51, 0xee, 0x08, 0x3d, 0x14, 0x4d, 0x4e, 0xc6, 0x63, 0x25, 0x5e,
+  0x36, 0x63, 0xad, 0x07, 0x96, 0xcb, 0xe8, 0xf0, 0xeb, 0x63, 0x9e, 0x66,
+  0x9c, 0xce, 0xc5, 0xac, 0xa6, 0xd3, 0x4e, 0x93, 0x39, 0x6b, 0x4c, 0x58,
+  0x33, 0x38, 0x3e, 0xa3, 0xd0, 0x4c, 0xaf, 0xff, 0xf5, 0xde, 0xe6, 0x7f,
+  0xa3, 0x55, 0x8c, 0xb7, 0x9f, 0x8e, 0x76, 0x7a, 0x2c, 0xc2, 0xd3, 0x65,
+  0x95, 0x64, 0xd3, 0x9c, 0x3d, 0x15, 0x93, 0x79, 0x9c, 0xdd, 0x94, 0xa2,
+  0x74, 0x89, 0x26, 0xc2, 0x63, 0x1d, 0xd0, 0xf1, 0x2b, 0x8a, 0x7c, 0x95,
+  0xcd, 0x3a, 0xb6, 0x5c, 0xa7, 0x83, 0x23, 0xaf, 0xe6, 0x52, 0xb8, 0x67,
+  0x88, 0x64, 0x8a, 0x1b, 0x33, 0xcb, 0xf2, 0x95, 0x00, 0xa7, 0x0b, 0x6f,
+  0x1d, 0xc6, 0xe5, 0xc4, 0xfd, 0x46, 0x73, 0xc3, 0x6f, 0x20, 0x66, 0x13,
+  0xd9, 0xb0, 0x3b, 0x5c, 0xce, 0x49, 0x6e, 0x46, 0xdc, 0xd6, 0x2d, 0x78,
+  0x7c, 0x29, 0x53, 0xd7, 0x07, 0xed, 0x86, 0x36, 0xc5, 0x03, 0x7c, 0x45,
+  0x1c, 0xec, 0xf3, 0xb8, 0xac, 0x60, 0xe8, 0x31, 0x0a, 0xe2, 0x07, 0x43,
+  0x51, 0x3a, 0xce, 0xee, 0x39, 0x40, 0xe0, 0x53, 0x44, 0xe9, 0xcb, 0xf4,
+  0x8a, 0x38, 0xa8, 0x58, 0xb8, 0x10, 0x53, 0x60, 0xa1, 0x04, 0xac, 0x9b,
+  0x5d, 0xe7, 0x20, 0x30, 0x92, 0x69, 0x93, 0xf9, 0x65, 0xd7, 0x79, 0x35,
+  0xe5, 0x1c, 0xfa, 0xab, 0x30, 0x63, 0x0c, 0x2c, 0x38, 0x0a, 0xec, 0x80,
+  0x8e, 0xa6, 0xf3, 0x38, 0x5d, 0x94, 0x35, 0xf1, 0x75, 0xd4, 0xc5, 0x4d,
+  0xd8, 0xfc, 0xca, 0xef, 0x4f, 0xd8, 0xa4, 0x5e, 0x94, 0x6c, 0x2a, 0xe1,
+  0x0d, 0x89, 0x4d, 0xa2, 0x16, 0x83, 0xf5, 0x75, 0x32, 0xbd, 0x01, 0xd9,
+  0x05, 0x66, 0xc4, 0x26, 0x47, 0x95, 0x55, 0xc7, 0x82, 0xad, 0x38, 0x9c,
+  0x80, 0x44, 0x0f, 0x76, 0xca, 0xa5, 0xd9, 0x6c, 0x35, 0xc5, 0xb1, 0x65,
+  0xcb, 0x08, 0x89, 0x63, 0x45, 0xcc, 0xe2, 0x4d, 0x25, 0xe1, 0x1b, 0xa0,
+  0x8b, 0x21, 0x11, 0xc1, 0xb2, 0x73, 0x74, 0x70, 0x6e, 0x88, 0x4c, 0x5a,
+  0x63, 0x07, 0xa5, 0xba, 0x02, 0x60, 0x65, 0x37, 0x4d, 0xaf, 0xbe, 0x9a,
+  0x8d, 0xe6, 0x64, 0x6d, 0x07, 0x74, 0xdd, 0xa4, 0x74, 0x7b, 0x9b, 0x7f,
+  0x79, 0x96, 0x2b, 0x29, 0x0d, 0x49, 0x37, 0x2f, 0xd3, 0xa9, 0x18, 0xa5,
+  0xd2, 0xab, 0x84, 0x19, 0x06, 0x0b, 0x9a, 0xd5, 0x7c, 0x21, 0x41, 0x18,
+  0x4d, 0x42, 0x1b, 0x3a, 0x09, 0xad, 0x45, 0x56, 0x21, 0x47, 0x11, 0x75,
+  0xc4, 0xd1, 0x87, 0x99, 0x48, 0x43, 0x83, 0x59, 0x2a, 0xb6, 0x4b, 0x1a,
+  0x8a, 0xf0, 0xcc, 0x26, 0xdf, 0x81, 0x8f, 0xa3, 0xac, 0x88, 0xb7, 0x0c,
+  0xf8, 0x88, 0x4c, 0x61, 0x78, 0x66, 0xa3, 0x9e, 0x59, 0x14, 0xcd, 0x34,
+  0x3a, 0x61, 0x21, 0x90, 0xbd, 0x4d, 0x77, 0xe9, 0x54, 0x1c, 0x0d, 0x70,
+  0x96, 0x75, 0x98, 0x08, 0xa6, 0xf3, 0x94, 0x1f, 0x5c, 0x90, 0x5a, 0xcb,
+  0x6f, 0x89, 0xd4, 0xcc, 0x77, 0x08, 0x69, 0xf0, 0xc4, 0x14, 0x8f, 0xc5,
+  0xbe, 0x01, 0x73, 0x59, 0x79, 0x0d, 0x13, 0x77, 0x5c, 0xa4, 0xf0, 0x46,
+  0xb5, 0x9a, 0x93, 0x31, 0xf3, 0x24, 0xc3, 0x71, 0x42, 0xad, 0x12, 0x83,
+  0xaf, 0xb7, 0x15, 0xe0, 0xec, 0x30, 0xd7, 0x09, 0x0e, 0xce, 0x84, 0xcf,
+  0xab, 0x44, 0xc6, 0x44, 0x2f, 0xf9, 0xee, 0x7a, 0xc5, 0xb3, 0x59, 0xc3,
+  0x12, 0xcf, 0xe0, 0x03, 0xbb, 0xae, 0x1b, 0x83, 0x03, 0xd6, 0x27, 0x26,
+  0x13, 0x69, 0x0d, 0x0e, 0x43, 0xa6, 0x9e, 0xce, 0xbb, 0x9f, 0x28, 0x8a,
+  0xd9, 0xa1, 0x6b, 0x6b, 0xe9, 0x2d, 0x43, 0xb4, 0x35, 0x49, 0x7a, 0x6b,
+  0xee, 0xe7, 0x40, 0xb2, 0x86, 0xeb, 0xbe, 0x37, 0x4e, 0xaa, 0x66, 0x73,
+  0x87, 0xe8, 0x70, 0xbf, 0x17, 0x44, 0x00, 0x48, 0xab, 0xba, 0x76, 0x93,
+  0xc4, 0xfc, 0xb5, 0x62, 0x89, 0x21, 0x26, 0xca, 0x11, 0x64, 0xbb, 0xaf,
+  0xbe, 0x3b, 0x38, 0x79, 0x7f, 0xb4, 0xfb, 0xa7, 0x26, 0xf9, 0xd0, 0x77,
+  0x7b, 0xf2, 0xdd, 0x5e, 0xaf, 0x8b, 0x67, 0x11, 0x05, 0x45, 0x51, 0xff,
+  0x55, 0x3f, 0x2a, 0xef, 0x17, 0x93, 0x7c, 0xee, 0xf8, 0x96, 0x76, 0xc2,
+  0xa3, 0x18, 0xa8, 0xeb, 0xc3, 0x1c, 0xd0, 0x58, 0x18, 0xbe, 0x22, 0x9b,
+  0x63, 0x87, 0x03, 0x54, 0xe5, 0x32, 0x50, 0x40, 0x3c, 0x0b, 0x17, 0xa3,
+  0xac, 0x70, 0xe5, 0xe9, 0x06, 0x71, 0xcb, 0xa5, 0x10, 0xe4, 0x20, 0x92,
+  0x93, 0xd4, 0x64, 0xe7, 0x32, 0x63, 0xe7, 0xda, 0x32, 0x03, 0xa0, 0x2a,
+  0x22, 0x91, 0xc8, 0xda, 0xf7, 0x44, 0xbe, 0x15, 0x5b, 0x4f, 0xde, 0x97,
+  0xc2, 0x54, 0xd2, 0x52, 0xcf, 0x67, 0x93, 0xe1, 0x31, 0xd3, 0x67, 0x7f,
+  0xe5, 0x6d, 0x5c, 0xa9, 0x43, 0xa6, 0xa7, 0x63, 0x59, 0xc6, 0xc4, 0xd1,
+  0x8b, 0x9e, 0x9e, 0x67, 0x1f, 0xe6, 0xa4, 0xf6, 0x01, 0x3e, 0x60, 0x45,
+  0xdb, 0x2e, 0x43, 0xa7, 0x8e, 0x7b, 0xd4, 0x50, 0x2c, 0x8e, 0xae, 0x33,
+  0x8e, 0xc0, 0x07, 0x8a, 0x46, 0xcd, 0x2e, 0xc1, 0x7b, 0x3d, 0x92, 0xfd,
+  0x22, 0xd1, 0xf3, 0x2b, 0xde, 0xbf, 0x26, 0xe9, 0x53, 0x63, 0x93, 0x34,
+  0x33, 0xda, 0x56, 0x35, 0x6c, 0x78, 0xc2, 0x14, 0x3d, 0xcf, 0x95, 0xa5,
+  0x7b, 0x03, 0xab, 0xfa, 0x37, 0x1d, 0x0d, 0x74, 0xda, 0xee, 0x2c, 0x36,
+  0x2c, 0x8f, 0x64, 0x2b, 0x6c, 0xa0, 0x72, 0xb6, 0x1c, 0x39, 0x2d, 0x89,
+  0xb9, 0x67, 0x42, 0xf9, 0xca, 0x75, 0xa3, 0xbc, 0xe8, 0x68, 0xee, 0x5d,
+  0x52, 0x21, 0x2a, 0x60, 0x5b, 0x2f, 0x6d, 0xdb, 0x48, 0xf4, 0x22, 0x03,
+  0x69, 0x11, 0x98, 0x1b, 0xa9, 0xf7, 0x67, 0x8a, 0xa5, 0x35, 0x3c, 0xaa,
+  0xe6, 0x09, 0xc5, 0x26, 0xc7, 0xb8, 0xf2, 0x97, 0x2b, 0x96, 0xca, 0xde,
+  0xe5, 0xad, 0x45, 0x92, 0x19, 0xb8, 0x88, 0x18, 0x78, 0xe1, 0x48, 0x27,
+  0xb7, 0xf3, 0xcb, 0x7d, 0x8d, 0x58, 0x8c, 0x00, 0xad, 0xf9, 0x28, 0x39,
+  0xbd, 0xe8, 0x9a, 0x7c, 0x77, 0xea, 0x47, 0x31, 0xfc, 0x4b, 0x6c, 0x97,
+  0xfc, 0x6f, 0x78, 0xb5, 0x7f, 0xa5, 0xb2, 0xdb, 0x30, 0x2e, 0xa7, 0x69,
+  0xda, 0x25, 0x00, 0x73, 0x08, 0xe4, 0x56, 0x74, 0x04, 0xab, 0x42, 0x74,
+  0x30, 0x3e, 0x3c, 0x3e, 0x76, 0x1e, 0xd2, 0x91, 0x44, 0x14, 0x20, 0xf6,
+  0x51, 0xc5, 0x2c, 0x38, 0x08, 0x24, 0x84, 0x64, 0xd2, 0x9c, 0x5d, 0xc2,
+  0xb6, 0xda, 0xa9, 0x99, 0x26, 0x84, 0xf6, 0xe8, 0x71, 0x36, 0xa9, 0xe2,
+  0x3a, 0xa1, 0x0b, 0xa3, 0x54, 0x4b, 0xfb, 0x9f, 0xaa, 0xfb, 0x65, 0xf2,
+  0xea, 0xa0, 0x37, 0x0a, 0x55, 0x94, 0xe6, 0xda, 0xc7, 0x2b, 0x16, 0xfd,
+  0x85, 0x17, 0xe1, 0x66, 0xe0, 0x55, 0x9e, 0xa9, 0x37, 0x54, 0xd9, 0x12,
+  0x7b, 0x36, 0x16, 0x2c, 0xbe, 0x5d, 0xc2, 0x1f, 0x94, 0x3d, 0x21, 0xcd,
+  0xf0, 0x9e, 0xae, 0xda, 0x45, 0x19, 0xca, 0x37, 0xb8, 0x1d, 0x3f, 0xd5,
+  0x50, 0xa8, 0x26, 0x8b, 0xaf, 0xf8, 0x9d, 0xa8, 0x29, 0xe4, 0xac, 0x95,
+  0xdd, 0x4c, 0xc1, 0xe3, 0x30, 0x8b, 0x51, 0x78, 0xff, 0xe3, 0x60, 0x98,
+  0x9d, 0x46, 0xe2, 0x58, 0x1a, 0x3b, 0xbb, 0x62, 0x6b, 0x67, 0x8b, 0xc9,
+  0xa7, 0x74, 0x7b, 0x13, 0xdf, 0x21, 0x52, 0xca, 0xf8, 0xa7, 0xf3, 0x6d,
+  0xa4, 0x98, 0x3e, 0x6b, 0x14, 0x05, 0x07, 0xd8, 0xd4, 0xb8, 0x3f, 0x4b,
+  0x97, 0x9d, 0x6b, 0x29, 0xd7, 0x39, 0x47, 0x03, 0x42, 0xe8, 0xf0, 0x96,
+  0xe2, 0x35, 0x42, 0xdc, 0xa6, 0xd9, 0x94, 0x55, 0x88, 0x68, 0xc9, 0x0f,
+  0x26, 0x65, 0xd0, 0xaa, 0x07, 0xc2, 0xc4, 0x56, 0x8b, 0x92, 0xdf, 0x97,
+  0xf0, 0xe8, 0x92, 0x62, 0x74, 0x9d, 0x14, 0x7a, 0x14, 0x57, 0xa6, 0x4f,
+  0x88, 0x0b, 0xe9, 0xa3, 0x3a, 0x19, 0x3e, 0xde, 0xb7, 0xde, 0x1e, 0x27,
+  0x89, 0x10, 0x9b, 0x3e, 0x20, 0x1b, 0x19, 0xec, 0x6c, 0xf3, 0x3c, 0xbd,
+  0xc4, 0xd9, 0xe7, 0x6b, 0xe1, 0x31, 0xbd, 0x24, 0x57, 0xce, 0x89, 0x17,
+  0x9c, 0xd3, 0xda, 0xe8, 0x40, 0x7c, 0xed, 0x08, 0x1d, 0xd5, 0x23, 0xdd,
+  0xe4, 0xed, 0x97, 0xec, 0xd2, 0x96, 0xf8, 0x2e, 0x52, 0x3c, 0xf9, 0x96,
+  0x72, 0xa2, 0xc2, 0x28, 0x3a, 0x84, 0x4d, 0x93, 0xdb, 0x28, 0xd1, 0x88,
+  0xb1, 0x11, 0xbf, 0x55, 0x2d, 0xea, 0x89, 0x5d, 0xc4, 0x98, 0xe7, 0x5c,
+  0x18, 0x1b, 0x6d, 0xc2, 0x5d, 0x82, 0xa8, 0x9c, 0x5a, 0x53, 0xee, 0xa2,
+  0xc7, 0x6b, 0xdd, 0xc4, 0x28, 0x57, 0xff, 0x66, 0xb9, 0x05, 0xa1, 0x28,
+  0xcb, 0xdd, 0xcb, 0xec, 0x7a, 0xbb, 0xc9, 0xf2, 0x3b, 0x92, 0x75, 0xb2,
+  0x5c, 0x4e, 0x98, 0xf1, 0x0f, 0x1e, 0x75, 0xf3, 0x9a, 0x25, 0x7e, 0x17,
+  0xdc, 0x01, 0xe1, 0x93, 0x95, 0x0b, 0x87, 0x53, 0x83, 0xb0, 0xb2, 0x6c,
+  0x5b, 0xb6, 0xa8, 0x4b, 0xb3, 0x55, 0xd6, 0x2d, 0xd2, 0x00, 0xdc, 0x26,
+  0xd0, 0x8a, 0xfc, 0x0d, 0x62, 0xd7, 0x7a, 0x6c, 0x4a, 0x15, 0x3b, 0x5e,
+  0x07, 0x51, 0x6f, 0xd8, 0x1b, 0x74, 0x9c, 0x3c, 0x9b, 0x54, 0x73, 0x5c,
+  0x8e, 0x5d, 0x74, 0x5c, 0x12, 0x70, 0xc4, 0xb5, 0x5c, 0x5f, 0x1a, 0xf3,
+  0xa3, 0x37, 0xb6, 0x0c, 0xc8, 0xe6, 0x91, 0x64, 0x57, 0x88, 0xe0, 0xe3,
+  0x93, 0xd4, 0x14, 0xce, 0xbd, 0x7d, 0x40, 0x2e, 0x6e, 0xa7, 0xea, 0xe8,
+  0xd0, 0x46, 0xd1, 0x41, 0x26, 0x41, 0x5d, 0x77, 0x31, 0x48, 0xcf, 0x75,
+  0x01, 0x39, 0xa7, 0xb9, 0xda, 0xb9, 0x53, 0x93, 0x6a, 0xb7, 0xd6, 0x43,
+  0x77, 0x85, 0x75, 0x15, 0xf1, 0x21, 0x20, 0x1e, 0xdd, 0x87, 0x64, 0xac,
+  0x76, 0x02, 0xb8, 0xca, 0xdd, 0xa2, 0xc8, 0xbd, 0x71, 0x77, 0x9d, 0xcf,
+  0xc5, 0x75, 0xd7, 0x68, 0xce, 0x0b, 0xbc, 0xd1, 0x1d, 0xdc, 0xce, 0xa2,
+  0x69, 0xb3, 0x8d, 0xe5, 0x96, 0xde, 0x2f, 0x12, 0xd8, 0x6d, 0x39, 0x62,
+  0x8f, 0xb4, 0x62, 0xea, 0x6b, 0x9e, 0xc4, 0xc5, 0xfc, 0xde, 0x84, 0xa1,
+  0xe1, 0x6d, 0xa3, 0x39, 0xac, 0x28, 0x9b, 0x45, 0x88, 0xc2, 0xe2, 0x22,
+  0xe3, 0x67, 0xd4, 0x55, 0x68, 0xc1, 0xb2, 0x95, 0x38, 0x6f, 0xc5, 0xc3,
+  0xcc, 0xb7, 0xf2, 0x6d, 0xca, 0xaa, 0x17, 0x11, 0x1b, 0x09, 0xf0, 0x4d,
+  0x4a, 0x64, 0xa3, 0x26, 0x48, 0x06, 0x4d, 0x4a, 0x64, 0xcc, 0x75, 0x1a,
+  0xe8, 0x6b, 0x74, 0x14, 0xaf, 0xe9, 0x86, 0x24, 0x25, 0x72, 0x15, 0xaf,
+  0x5b, 0x2e, 0xbd, 0xca, 0xcc, 0x2b, 0xfc, 0xd8, 0xed, 0x5a, 0x3f, 0x8f,
+  0x5d, 0x12, 0xe8, 0x9a, 0xbb, 0xf7, 0x50, 0x36, 0x8f, 0x98, 0x6b, 0xb6,
+  0xa2, 0x0b, 0xb8, 0x8a, 0x5e, 0xe6, 0x97, 0x97, 0x44, 0xea, 0x5f, 0xb4,
+  0x24, 0x70, 0x79, 0x64, 0xfb, 0x1c, 0x11, 0xf4, 0x01, 0x4b, 0xaf, 0x07,
+  0x95, 0x45, 0xb1, 0x9d, 0x92, 0xab, 0x94, 0xf7, 0x22, 0x92, 0xe6, 0x46,
+  0x1d, 0x22, 0x50, 0xfd, 0x89, 0xe0, 0x22, 0x12, 0xaf, 0xb8, 0x0f, 0xb9,
+  0xa7, 0xab, 0xba, 0x32, 0x6f, 0x92, 0x4e, 0xa3, 0x29, 0x14, 0xdf, 0xa4,
+  0xcb, 0x25, 0x6f, 0x16, 0x82, 0x75, 0x9d, 0xaa, 0xc4, 0xad, 0x4d, 0x12,
+  0x3a, 0x13, 0xd8, 0x53, 0xf3, 0x29, 0xe7, 0x2b, 0x12, 0x00, 0x4c, 0x0e,
+  0x9c, 0x24, 0x74, 0xd2, 0x9b, 0xcd, 0x99, 0x64, 0xef, 0xe3, 0xb2, 0x54,
+  0x92, 0x9a, 0x71, 0x0c, 0x56, 0xa6, 0x0c, 0x94, 0xb7, 0xc9, 0x87, 0x7a,
+  0xa8, 0x66, 0xd9, 0x75, 0xf8, 0xbd, 0x15, 0xcb, 0x1d, 0xe8, 0xf1, 0xf1,
+  0xff, 0x3e, 0xf2, 0x51, 0x74, 0x2e, 0x4c, 0xed, 0x1e, 0xd4, 0xde, 0x75,
+  0x41, 0x11, 0x63, 0x39, 0x8c, 0x86, 0x3d, 0x0c, 0x84, 0x39, 0xad, 0x5d,
+  0x02, 0x74, 0x35, 0xe6, 0xec, 0x7a, 0x96, 0x70, 0x43, 0xc4, 0xf1, 0x33,
+  0xc1, 0xb1, 0x1e, 0x59, 0x24, 0xdb, 0xec, 0xf0, 0x6f, 0x1b, 0x98, 0x24,
+  0x09, 0x42, 0x17, 0xdb, 0xcb, 0x51, 0xc7, 0x95, 0x44, 0x7e, 0x42, 0xa2,
+  0xe1, 0xef, 0x64, 0x7f, 0x24, 0x94, 0x69, 0x1b, 0xe2, 0xa7, 0x04, 0xe2,
+  0xb5, 0x79, 0x81, 0x1a, 0x5c, 0x24, 0xec, 0xa8, 0x83, 0x99, 0xfd, 0x03,
+  0xcd, 0x40, 0xd3, 0x74, 0x79, 0xcd, 0xd2, 0xf8, 0x4b, 0x44, 0x37, 0xb0,
+  0xe5, 0x49, 0x3e, 0xf8, 0xa2, 0xd3, 0x36, 0x3e, 0xd6, 0x73, 0x51, 0xea,
+  0x4d, 0x6a, 0x6f, 0x2b, 0xff, 0x4a, 0x2d, 0xbe, 0xdc, 0xe2, 0x25, 0x35,
+  0xa2, 0x86, 0x9a, 0x6e, 0xb2, 0x1c, 0x3a, 0x92, 0xf6, 0xb2, 0x68, 0xf5,
+  0x3e, 0x04, 0x05, 0x31, 0xa0, 0xf6, 0xed, 0x28, 0x3a, 0xe7, 0x7b, 0x72,
+  0xb5, 0xe4, 0x10, 0x45, 0x64, 0xa8, 0xe0, 0xf3, 0x96, 0xe7, 0xab, 0xac,
+  0x42, 0x07, 0x2e, 0x52, 0x38, 0xc2, 0xee, 0xb2, 0x9a, 0x60, 0x94, 0x86,
+  0xdf, 0x91, 0xac, 0xba, 0xdf, 0x34, 0x0c, 0xf9, 0x08, 0x71, 0xe2, 0x8d,
+  0x59, 0x59, 0xce, 0x11, 0x96, 0x3f, 0xcb, 0xa7, 0xe5, 0x76, 0xbc, 0x5c,
+  0x96, 0xdb, 0x36, 0xb8, 0x5a, 0x00, 0xbe, 0x69, 0xc3, 0xe3, 0x71, 0x30,
+  0x37, 0xbe, 0x76, 0xc5, 0x5e, 0xe5, 0x04, 0xb0, 0x39, 0x3c, 0x70, 0x99,
+  0x9a, 0x5d, 0x25, 0xa8, 0xe6, 0xeb, 0x6c, 0x75, 0x71, 0x32, 0xc6, 0x72,
+  0x35, 0x6f, 0x4e, 0x0e, 0x09, 0xb7, 0xcd, 0xe1, 0xb6, 0xad, 0x69, 0x28,
+  0x78, 0xa2, 0x34, 0x8d, 0xc7, 0x87, 0xf8, 0x70, 0xbc, 0x62, 0x11, 0x86,
+  0xba, 0x28, 0xee, 0x23, 0xb3, 0x0e, 0x37, 0x69, 0x9f, 0x66, 0x1b, 0x7d,
+  0xf2, 0x7f, 0xba, 0x10, 0x57, 0x69, 0x35, 0xba, 0x4c, 0x66, 0x79, 0x11,
+  0xb7, 0x4c, 0x68, 0x39, 0x27, 0x48, 0x60, 0x75, 0xa6, 0xf4, 0xd4, 0x36,
+  0xc9, 0xe5, 0x1f, 0x68, 0xbd, 0x46, 0xfc, 0x3b, 0x74, 0x3e, 0x59, 0x34,
+  0xfb, 0x98, 0xd7, 0xeb, 0x77, 0xaf, 0x11, 0xab, 0x47, 0x87, 0xa1, 0xfc,
+  0x2d, 0xe9, 0x9a, 0x64, 0x34, 0x38, 0x12, 0x66, 0xdd, 0x42, 0xe1, 0xb9,
+  0x19, 0x0b, 0x23, 0xff, 0xa4, 0x8f, 0xdd, 0x6b, 0x66, 0xa6, 0x91, 0x18,
+  0x76, 0x95, 0xd3, 0x75, 0x7a, 0xbd, 0x68, 0xae, 0xa7, 0x28, 0xef, 0xe6,
+  0x69, 0xd3, 0xf4, 0xa7, 0xa8, 0xe4, 0xb8, 0x7e, 0x61, 0x08, 0xab, 0x2c,
+  0xe8, 0x80, 0x16, 0x83, 0x58, 0x45, 0xa6, 0x82, 0x50, 0xc7, 0xf6, 0x34,
+  0x66, 0x6e, 0x31, 0xf0, 0xca, 0xee, 0x60, 0x41, 0x2f, 0xc5, 0x2e, 0xb9,
+  0xca, 0x7c, 0x9a, 0x9c, 0xd8, 0xb3, 0xd9, 0x72, 0xdd, 0x35, 0x3a, 0x2c,
+  0x51, 0xe3, 0x12, 0xaf, 0x2f, 0x15, 0x8e, 0xeb, 0x90, 0x97, 0x97, 0x99,
+  0xdd, 0xcb, 0x92, 0x24, 0x1a, 0xea, 0xe7, 0x8b, 0x56, 0xe4, 0xcf, 0xc7,
+  0x74, 0xb1, 0x5a, 0x44, 0xd8, 0x07, 0xb1, 0x99, 0xeb, 0x93, 0xa6, 0x6c,
+  0xf0, 0x2d, 0x8d, 0xd8, 0x18, 0x74, 0xdc, 0x2f, 0x03, 0x4e, 0xd0, 0x66,
+  0x9b, 0x15, 0x89, 0x50, 0xa6, 0x35, 0x69, 0x7c, 0xd5, 0x82, 0x23, 0x23,
+  0xea, 0x1c, 0x24, 0x5a, 0x5e, 0xc7, 0x65, 0xe2, 0x03, 0x6a, 0x65, 0xbd,
+  0xc3, 0xd8, 0xe8, 0x5a, 0x88, 0xb4, 0x25, 0x4e, 0x78, 0x7e, 0x4b, 0xb2,
+  0x4d, 0x9a, 0xcf, 0x9c, 0x2f, 0xc5, 0xee, 0xe6, 0x68, 0xc8, 0xcd, 0xf1,
+  0x6d, 0xa1, 0xdf, 0x34, 0x15, 0xdb, 0x8f, 0xf0, 0xd9, 0x8c, 0x61, 0xbe,
+  0x34, 0xdf, 0xdf, 0x67, 0xa3, 0x27, 0x7b, 0xec, 0xd4, 0x0d, 0x89, 0x54,
+  0x23, 0xc9, 0x89, 0xe9, 0x4c, 0xd3, 0x85, 0x0b, 0xcf, 0x5b, 0xaf, 0xd6,
+  0x40, 0xc6, 0x5b, 0xb0, 0x98, 0xb0, 0x88, 0x3f, 0x62, 0xcd, 0x7f, 0x7b,
+  0x8b, 0xc0, 0x50, 0xa4, 0x42, 0xd2, 0xe0, 0x8a, 0x26, 0xc1, 0xd5, 0xbc,
+  0x60, 0xb4, 0x38, 0x7f, 0x21, 0x7a, 0x6d, 0xd8, 0x87, 0x2c, 0x5c, 0xad,
+  0x91, 0x18, 0x21, 0x6d, 0x76, 0x99, 0x84, 0x68, 0x2b, 0x88, 0xdc, 0x39,
+  0xd2, 0x20, 0x62, 0xb3, 0x12, 0x47, 0x8a, 0xf1, 0x89, 0xcf, 0xe9, 0x83,
+  0xeb, 0x94, 0xc6, 0x5e, 0x4c, 0xaf, 0xef, 0x59, 0xb7, 0x61, 0x73, 0x2d,
+  0xbb, 0xb4, 0x1e, 0xb0, 0x07, 0xa0, 0x0f, 0x35, 0xa1, 0xd2, 0xe0, 0x23,
+  0x3e, 0x3c, 0xf4, 0x98, 0x49, 0x09, 0x8d, 0xf1, 0xb1, 0xc4, 0xcd, 0x07,
+  0x37, 0x99, 0x97, 0x09, 0x8e, 0x58, 0xd7, 0xe8, 0x86, 0x79, 0xa0, 0x71,
+  0xe0, 0x72, 0x66, 0x7d, 0x28, 0x2d, 0x58, 0xde, 0x15, 0x6b, 0x9f, 0x74,
+  0xc5, 0x36, 0x6b, 0xe9, 0x8d, 0xb5, 0x30, 0xd6, 0xd6, 0xee, 0xdb, 0x34,
+  0xc2, 0xfa, 0xb0, 0xbe, 0x6e, 0x6b, 0x6f, 0x9e, 0xba, 0x96, 0x06, 0x92,
+  0xeb, 0x57, 0xa6, 0xaa, 0xd9, 0xaa, 0xa4, 0x96, 0x46, 0x24, 0x5c, 0x87,
+  0xc5, 0x1b, 0x1a, 0x8a, 0xa4, 0x9f, 0x32, 0x27, 0xa7, 0xfd, 0xbb, 0xac,
+  0x5a, 0x26, 0xe1, 0x60, 0x4b, 0xeb, 0x3b, 0x3d, 0xbf, 0x64, 0xe9, 0x92,
+  0x68, 0xa4, 0x8a, 0x4e, 0xde, 0xf0, 0xcd, 0x7c, 0x78, 0x4e, 0x3f, 0x53,
+  0x73, 0x70, 0xb2, 0xd8, 0x8e, 0xf4, 0x51, 0xb6, 0x9e, 0xbc, 0xfd, 0x6e,
+  0x1c, 0x6d, 0x9e, 0x8e, 0xb7, 0x9f, 0xbc, 0xd8, 0x69, 0xeb, 0xf1, 0x9b,
+  0x9c, 0xe3, 0xaa, 0x61, 0x89, 0x88, 0xbb, 0x78, 0xba, 0x53, 0x0f, 0x6a,
+  0xe1, 0xbe, 0x78, 0x25, 0xa1, 0x81, 0x77, 0x2a, 0xdf, 0xe3, 0x6d, 0xce,
+  0xd2, 0xdd, 0xf2, 0xb9, 0x41, 0x62, 0xd3, 0xd5, 0x99, 0x9e, 0x1d, 0xbd,
+  0x35, 0xe3, 0xa2, 0x04, 0x5c, 0x44, 0x87, 0x34, 0x6a, 0xf6, 0x8c, 0xb4,
+  0x09, 0xeb, 0x3c, 0xb9, 0x35, 0x0b, 0xe5, 0x09, 0x5f, 0x86, 0x60, 0x38,
+  0x6c, 0x02, 0x35, 0xb1, 0x61, 0x99, 0xb0, 0x3c, 0xe8, 0xdf, 0x57, 0x01,
+  0x57, 0x2e, 0xe0, 0x16, 0xf3, 0x99, 0x24, 0x61, 0x90, 0x00, 0x89, 0xde,
+  0x9c, 0xbf, 0xf5, 0xdb, 0x9d, 0xc0, 0x8e, 0x20, 0x96, 0xdd, 0x17, 0xa3,
+  0xcf, 0xb6, 0xdc, 0x5a, 0xce, 0x06, 0x16, 0x5b, 0xfc, 0xf2, 0x01, 0x77,
+  0x02, 0x71, 0x11, 0xe5, 0xb6, 0x49, 0x98, 0xbd, 0x81, 0xf7, 0x60, 0xec,
+  0x47, 0x98, 0xbd, 0xf9, 0xc1, 0x02, 0x77, 0x43, 0x53, 0xbe, 0xd7, 0x04,
+  0x6c, 0x4b, 0xe2, 0x83, 0x42, 0x13, 0x6b, 0x60, 0x50, 0x1c, 0x4d, 0x8a,
+  0xfc, 0x8e, 0x4d, 0x35, 0x12, 0xe8, 0x2e, 0xb4, 0xc9, 0x26, 0x24, 0xd8,
+  0x6f, 0xa2, 0xeb, 0xb8, 0xe5, 0xef, 0xa1, 0x39, 0x6b, 0xe8, 0x6a, 0xcc,
+  0x46, 0xde, 0xb7, 0x27, 0x12, 0xea, 0xcd, 0xb7, 0xd7, 0x52, 0xbd, 0xf9,
+  0xe8, 0x67, 0x35, 0x21, 0x0e, 0xcf, 0x1a, 0x60, 0x25, 0xa2, 0x61, 0x5a,
+  0x76, 0xb1, 0x5e, 0x18, 0x01, 0x9d, 0x44, 0xbe, 0xec, 0x72, 0xa1, 0xe8,
+  0x7d, 0x68, 0xb6, 0x6e, 0x6c, 0x26, 0xa9, 0xba, 0x74, 0x87, 0xdd, 0x2f,
+  0x9b, 0x94, 0x43, 0x02, 0xdb, 0x5c, 0x4d, 0x5d, 0xdb, 0x1f, 0x87, 0x24,
+  0xd3, 0x0d, 0x79, 0x70, 0x43, 0x6a, 0x5e, 0xbc, 0xc0, 0xec, 0x53, 0x3f,
+  0xa4, 0x2b, 0x9a, 0x09, 0x85, 0x9a, 0x1f, 0xbe, 0xe1, 0xad, 0xe0, 0x47,
+  0x5a, 0xdb, 0xc7, 0xbb, 0xe4, 0x42, 0xc0, 0x9d, 0x7a, 0x85, 0xd5, 0x13,
+  0xbb, 0x19, 0x7f, 0x23, 0x56, 0x57, 0xd8, 0x87, 0x39, 0xad, 0x5a, 0xbd,
+  0x35, 0x24, 0xce, 0xb7, 0x0c, 0x40, 0x6c, 0x8a, 0x2f, 0xee, 0x25, 0x82,
+  0x59, 0x2d, 0xe5, 0xe6, 0x32, 0x74, 0xc6, 0x00, 0x69, 0x52, 0x9e, 0xf4,
+  0xa6, 0xf9, 0x9c, 0xc5, 0xb8, 0x61, 0xcb, 0x14, 0x0b, 0x9f, 0x36, 0xbf,
+  0x26, 0xc1, 0xf9, 0x9c, 0x9c, 0x2b, 0x1b, 0x21, 0x8e, 0x72, 0xe4, 0xa7,
+  0xc5, 0x30, 0x81, 0x5b, 0xc3, 0x6e, 0x11, 0x3a, 0x75, 0x66, 0x9f, 0x13,
+  0x50, 0xfa, 0x48, 0x70, 0x3b, 0x04, 0x08, 0x4a, 0x82, 0x1c, 0x8b, 0x50,
+  0xf0, 0x3c, 0xab, 0x45, 0x18, 0x0f, 0x5b, 0xf6, 0x12, 0x35, 0xbb, 0x0c,
+  0x02, 0x17, 0x56, 0xca, 0xf7, 0x44, 0x98, 0x85, 0xe4, 0x2c, 0xee, 0xc4,
+  0x79, 0x8b, 0x2b, 0xfe, 0xc4, 0xcc, 0x88, 0x2d, 0x13, 0x03, 0x02, 0x6e,
+  0x5c, 0xea, 0x11, 0xac, 0x51, 0xff, 0x3a, 0x14, 0xf7, 0x12, 0x84, 0x8a,
+  0x15, 0xcb, 0x62, 0x6a, 0xa6, 0xea, 0x0f, 0x67, 0x91, 0x7a, 0xea, 0x32,
+  0x5a, 0x09, 0xda, 0xc7, 0xb6, 0xbe, 0x3b, 0x9f, 0xbf, 0x9a, 0x93, 0xf6,
+  0x7d, 0xdf, 0x8f, 0x34, 0x45, 0x46, 0x03, 0xd9, 0xd9, 0xbe, 0x1b, 0x47,
+  0xb2, 0x95, 0xd1, 0xf4, 0x7a, 0x95, 0xdd, 0x98, 0xb0, 0x33, 0xcf, 0x73,
+  0x0e, 0x1d, 0xe0, 0xa0, 0xfa, 0x46, 0x73, 0xfd, 0xa0, 0xb3, 0x7f, 0x0d,
+  0xdb, 0xee, 0x5c, 0x65, 0xb1, 0x86, 0x49, 0x7e, 0x86, 0x5b, 0x1b, 0x77,
+  0xbb, 0x49, 0x86, 0x6a, 0xf4, 0xe5, 0xc0, 0x3c, 0xd9, 0x55, 0xe0, 0x55,
+  0x89, 0xdb, 0x07, 0xd1, 0x5b, 0xd2, 0x60, 0x5f, 0x74, 0x0d, 0x8a, 0x0b,
+  0x8c, 0x4d, 0xb7, 0xe6, 0xbe, 0xf5, 0xc6, 0x4f, 0xe7, 0xbd, 0xe9, 0xb8,
+  0x2e, 0x3d, 0x7a, 0x03, 0x1c, 0xa5, 0xa3, 0xe8, 0x6d, 0x98, 0xfc, 0x56,
+  0x8f, 0x74, 0x70, 0x3b, 0x39, 0x8a, 0xce, 0x68, 0xbd, 0x86, 0x2d, 0x67,
+  0xd6, 0x55, 0xd0, 0x5c, 0xec, 0x47, 0x3b, 0x8b, 0xfa, 0x97, 0x79, 0x3e,
+  0x89, 0x0b, 0xbf, 0xf8, 0xf0, 0xc8, 0x83, 0x12, 0x24, 0x00, 0x84, 0xd7,
+  0xa3, 0x6d, 0x90, 0xc6, 0x41, 0xfc, 0x52, 0xde, 0x1d, 0xa9, 0x2c, 0x13,
+  0x1e, 0xd0, 0x2a, 0x9f, 0xcf, 0xdc, 0x52, 0x84, 0xbd, 0x76, 0x6c, 0x1a,
+  0x6f, 0xea, 0x80, 0xa6, 0x53, 0x14, 0x29, 0x67, 0xa2, 0x16, 0x49, 0xb5,
+  0x2a, 0x32, 0xc9, 0x14, 0xcb, 0x92, 0x3b, 0x71, 0x24, 0x1a, 0x73, 0xe7,
+  0x18, 0x10, 0x36, 0x90, 0xd4, 0x95, 0xf3, 0xe1, 0x6b, 0x30, 0xf1, 0xd5,
+  0x62, 0x69, 0xf1, 0x1c, 0x9d, 0x17, 0xe3, 0xf7, 0xb0, 0x33, 0x6b, 0xaa,
+  0x96, 0xa4, 0x8e, 0x9a, 0x4b, 0xcc, 0xb8, 0x5b, 0xcd, 0xfa, 0xd4, 0x6d,
+  0xca, 0xf4, 0x57, 0x92, 0x38, 0x00, 0x5d, 0xf6, 0x25, 0x2d, 0x41, 0x90,
+  0xc5, 0xa9, 0x3e, 0x2a, 0xe1, 0x54, 0xda, 0x4d, 0xa7, 0x9f, 0x80, 0x55,
+  0x0a, 0x71, 0x4c, 0xa7, 0xb0, 0x22, 0xf3, 0x3d, 0x43, 0xaf, 0x53, 0x53,
+  0x23, 0x75, 0x17, 0x07, 0xb9, 0x8b, 0x36, 0xde, 0x29, 0x6f, 0x56, 0x9b,
+  0x68, 0x90, 0x98, 0x82, 0x35, 0xc7, 0xa5, 0xa4, 0x5a, 0x82, 0x83, 0x09,
+  0xc9, 0xdc, 0x4d, 0x1e, 0x38, 0x8d, 0x54, 0x36, 0x9b, 0xb4, 0xdd, 0x0e,
+  0x66, 0x8d, 0x95, 0x19, 0xff, 0x0b, 0x2c, 0x0a, 0x6b, 0x9c, 0x6a, 0x92,
+  0xdb, 0x33, 0x91, 0x23, 0x23, 0x76, 0xd7, 0x56, 0xf4, 0x4e, 0xe0, 0xb2,
+  0x6b, 0xad, 0x6c, 0x4d, 0x18, 0x16, 0xf9, 0x8b, 0x3a, 0x0b, 0xec, 0x4d,
+  0x4e, 0x41, 0x54, 0xc7, 0x32, 0x84, 0x0b, 0x2f, 0x48, 0xb4, 0x84, 0x0c,
+  0x9e, 0x59, 0x4f, 0x57, 0xab, 0xa7, 0xda, 0xdc, 0x4a, 0x6c, 0xf1, 0xac,
+  0x22, 0xe2, 0x7c, 0x16, 0xbf, 0x69, 0x98, 0x8f, 0xbf, 0x92, 0xba, 0x25,
+  0x0b, 0xd6, 0x4b, 0xbc, 0xf4, 0xd1, 0x7a, 0x53, 0x6f, 0x9e, 0x07, 0x85,
+  0x12, 0xf1, 0x7b, 0x31, 0x87, 0x54, 0xcf, 0x1d, 0x0c, 0x8e, 0x73, 0x88,
+  0xf8, 0x0d, 0x97, 0x2c, 0x89, 0xca, 0x12, 0x4f, 0x43, 0xa4, 0xdf, 0x12,
+  0x68, 0xd9, 0xe3, 0xce, 0x91, 0x55, 0x44, 0x8f, 0x65, 0x9e, 0xdc, 0x86,
+  0x49, 0x1f, 0x8d, 0x3c, 0x6e, 0x30, 0xcb, 0x4f, 0xe2, 0x95, 0xa1, 0x7f,
+  0xbf, 0x93, 0x5d, 0x4a, 0x4e, 0x79, 0x14, 0xbd, 0x76, 0x97, 0xfa, 0x12,
+  0x26, 0x0d, 0xc5, 0x3d, 0x90, 0xa4, 0x41, 0x03, 0x3d, 0x68, 0x5c, 0xf2,
+  0x1d, 0xd1, 0x7b, 0x03, 0x9a, 0x1f, 0x72, 0x7d, 0x70, 0xaa, 0x1c, 0xe3,
+  0x90, 0x1c, 0x5a, 0x65, 0x2d, 0x8e, 0xb7, 0x08, 0xf9, 0xb0, 0x84, 0xc4,
+  0xd4, 0x35, 0xeb, 0x88, 0x9d, 0x9a, 0x42, 0x90, 0x2f, 0x5d, 0xee, 0x54,
+  0x96, 0x20, 0x62, 0x9a, 0x36, 0xfc, 0xd3, 0x8c, 0xdc, 0x6b, 0xe9, 0x06,
+  0xd0, 0x14, 0x3e, 0x05, 0xa6, 0x6d, 0x64, 0x95, 0xd0, 0x2a, 0x71, 0x8e,
+  0x48, 0x00, 0x24, 0xd6, 0x3a, 0x2e, 0x15, 0xcc, 0x64, 0x22, 0x4b, 0xf4,
+  0x00, 0xe9, 0x38, 0xd9, 0xe2, 0x41, 0xea, 0xb9, 0x50, 0x53, 0xbe, 0xd2,
+  0xce, 0xc0, 0x2d, 0xb9, 0xf2, 0x42, 0xf1, 0xa1, 0x28, 0x4f, 0x37, 0x19,
+  0xa4, 0xe3, 0x36, 0x90, 0xf4, 0x2f, 0x5e, 0x7a, 0x18, 0x1b, 0x24, 0x53,
+  0x82, 0x9b, 0x4e, 0x0a, 0x16, 0x81, 0x4a, 0x48, 0x4c, 0x66, 0x26, 0xa9,
+  0xa7, 0x74, 0xec, 0x7e, 0xce, 0x6a, 0x4d, 0x4b, 0x59, 0x03, 0xc9, 0x1c,
+  0x7e, 0x7d, 0x0c, 0x53, 0xd2, 0x3c, 0x25, 0x7e, 0x3a, 0x90, 0x6e, 0x64,
+  0x3a, 0x82, 0xb6, 0xe2, 0xee, 0xe2, 0xab, 0x34, 0x33, 0x25, 0x26, 0x4c,
+  0x39, 0x73, 0xee, 0x2f, 0x5e, 0x69, 0x8b, 0xa5, 0x77, 0x09, 0x87, 0xd8,
+  0xe3, 0xd8, 0x84, 0x57, 0x17, 0x17, 0x16, 0x7b, 0xd3, 0x69, 0xf7, 0xda,
+  0xa1, 0x6b, 0x4d, 0x00, 0x64, 0xf9, 0x58, 0x2c, 0xea, 0x60, 0xaf, 0x2d,
+  0xcb, 0x95, 0xdf, 0x64, 0x81, 0xae, 0x49, 0xca, 0xfd, 0x8d, 0x96, 0x37,
+  0x0d, 0xfd, 0x77, 0x63, 0x4b, 0xc9, 0xe9, 0xf6, 0xe1, 0x2a, 0xe8, 0xc5,
+  0x2d, 0x66, 0x12, 0x4a, 0xdf, 0x22, 0xf0, 0x8b, 0xbc, 0x1e, 0xaf, 0x69,
+  0x8e, 0x27, 0xf6, 0xef, 0x1a, 0xc5, 0x45, 0x27, 0x02, 0x9a, 0x28, 0xac,
+  0x22, 0x9a, 0xda, 0x62, 0x4d, 0xb9, 0x58, 0x58, 0x7c, 0x12, 0xb7, 0x42,
+  0x59, 0xdc, 0x21, 0xa1, 0x1b, 0xe4, 0x15, 0xf0, 0x41, 0xa2, 0x2f, 0x23,
+  0x8d, 0x2f, 0x22, 0x1a, 0x8f, 0x43, 0xff, 0x06, 0xae, 0x24, 0x0c, 0x1e,
+  0xb7, 0x2b, 0x96, 0xa1, 0xbb, 0x39, 0x44, 0xf9, 0x84, 0xab, 0x27, 0xe4,
+  0xc7, 0x69, 0xc1, 0xa5, 0xc0, 0x17, 0xfd, 0x4b, 0x73, 0xf1, 0x5e, 0x3d,
+  0xbe, 0x7a, 0xbf, 0x70, 0xf1, 0x1e, 0x59, 0xbd, 0x8b, 0x6b, 0x49, 0x06,
+  0x48, 0x10, 0xc3, 0xf6, 0x2a, 0x88, 0xa9, 0x82, 0x35, 0x0b, 0x51, 0xbd,
+  0x3e, 0xb6, 0xaa, 0x7e, 0x34, 0x03, 0x0f, 0xd6, 0xab, 0x7f, 0xd8, 0xae,
+  0x83, 0x1a, 0x6d, 0xf4, 0xdd, 0xcd, 0x89, 0x27, 0x83, 0x06, 0x8f, 0x48,
+  0x43, 0xb7, 0xd9, 0x02, 0x66, 0xc1, 0xaf, 0x73, 0x92, 0xcb, 0x47, 0x22,
+  0xff, 0x4a, 0x48, 0x19, 0x67, 0xaf, 0x43, 0xc7, 0xa9, 0xa9, 0x3a, 0x33,
+  0x33, 0xcb, 0xb4, 0xe6, 0xf7, 0xa5, 0x71, 0xf6, 0x47, 0x27, 0x57, 0x0b,
+  0xc1, 0x42, 0xf4, 0x5f, 0xa4, 0x19, 0xbe, 0x2c, 0xeb, 0x84, 0x9e, 0xb7,
+  0x0e, 0x47, 0xa0, 0x71, 0x32, 0x1f, 0x49, 0xcd, 0xe4, 0x68, 0x4c, 0x7f,
+  0x6b, 0x50, 0x5f, 0xb0, 0x58, 0x75, 0x41, 0xb1, 0x10, 0xaf, 0x5f, 0xab,
+  0x94, 0x57, 0xca, 0xb6, 0x8f, 0x15, 0xfa, 0xce, 0xed, 0xfb, 0x3f, 0x7d,
+  0x8a, 0x70, 0xc9, 0x58, 0xd8, 0xb5, 0x4c, 0x53, 0xdd, 0x98, 0x9e, 0x28,
+  0xae, 0x38, 0x76, 0x85, 0x2d, 0xd6, 0x7f, 0x5d, 0xc1, 0xbf, 0x7b, 0xb5,
+  0x8e, 0x09, 0xe0, 0x82, 0x62, 0x7f, 0x25, 0xbb, 0xe2, 0xe6, 0xd0, 0x06,
+  0xa9, 0x69, 0x50, 0xb9, 0x57, 0xf3, 0x87, 0x88, 0x26, 0x54, 0xa2, 0x15,
+  0x4a, 0x7c, 0x80, 0x58, 0x1d, 0x79, 0x36, 0x28, 0x73, 0x92, 0x04, 0x53,
+  0xee, 0xa0, 0x40, 0xba, 0xa9, 0x92, 0x79, 0x72, 0xa5, 0x96, 0xaa, 0xa3,
+  0xef, 0x8e, 0x4e, 0x5a, 0x02, 0x57, 0x25, 0x9f, 0x3b, 0xdf, 0x63, 0x60,
+  0xd0, 0x30, 0x78, 0x12, 0x60, 0xf6, 0xc8, 0x8d, 0xc1, 0x40, 0x11, 0xd2,
+  0x62, 0x67, 0x34, 0x2b, 0x3d, 0x4c, 0xf7, 0x53, 0x62, 0x2e, 0xb8, 0x82,
+  0xed, 0x82, 0x33, 0x81, 0x6a, 0x2a, 0x47, 0x12, 0x8a, 0x83, 0x6b, 0xe9,
+  0xeb, 0xf1, 0x78, 0xfb, 0x26, 0x29, 0x26, 0x8c, 0x86, 0xd5, 0x26, 0x28,
+  0xe8, 0x58, 0xd1, 0x6b, 0x38, 0xff, 0xc5, 0x80, 0xcf, 0xdb, 0xec, 0x67,
+  0xd2, 0x7a, 0x63, 0x99, 0xcf, 0xd3, 0xe9, 0x7d, 0xf4, 0x5a, 0x47, 0x56,
+  0xb2, 0x52, 0xc9, 0x9b, 0x0e, 0x43, 0xbe, 0x5a, 0x51, 0x4f, 0xbf, 0x1d,
+  0x1e, 0x8c, 0x87, 0xaf, 0x8f, 0x4e, 0x8e, 0xbe, 0x3e, 0xb8, 0x38, 0x72,
+  0x49, 0x0a, 0x08, 0xfd, 0x58, 0x43, 0x17, 0x46, 0x0f, 0xdf, 0xea, 0x48,
+  0xc5, 0x54, 0xc5, 0xc1, 0xc1, 0x0c, 0x5f, 0x77, 0x93, 0x54, 0x16, 0xc5,
+  0x29, 0x92, 0xfe, 0x22, 0x86, 0xc0, 0xd7, 0x0a, 0x4c, 0xf4, 0x11, 0x36,
+  0xf3, 0x85, 0x0e, 0xb5, 0x35, 0x83, 0x78, 0x7e, 0xc7, 0x70, 0x1e, 0xef,
+  0x33, 0xd6, 0x4d, 0x34, 0xb7, 0x9e, 0x65, 0x56, 0xcc, 0x3e, 0xd8, 0x92,
+  0x60, 0xfd, 0x6b, 0xbb, 0x8c, 0x60, 0xa8, 0x6e, 0x99, 0x46, 0x02, 0xeb,
+  0x34, 0x3b, 0xee, 0x35, 0x1e, 0x6c, 0xc4, 0x5c, 0xf9, 0x44, 0x54, 0xc4,
+  0xd6, 0xe9, 0x77, 0x2d, 0x89, 0x58, 0xb5, 0xa4, 0x72, 0x7a, 0x9d, 0x2c,
+  0x5c, 0x80, 0x36, 0x07, 0x0a, 0xd0, 0xd3, 0x8a, 0xf6, 0x41, 0x67, 0xec,
+  0x8e, 0xc3, 0x4f, 0x70, 0x98, 0x45, 0xe1, 0x40, 0xe0, 0x1c, 0x07, 0x8b,
+  0x75, 0x88, 0x48, 0x77, 0x29, 0x12, 0xac, 0x25, 0x86, 0x03, 0xa1, 0x74,
+  0x20, 0x12, 0x8b, 0x17, 0xed, 0x8e, 0x10, 0x55, 0xb4, 0x96, 0xa6, 0x66,
+  0xb6, 0x82, 0x35, 0x4c, 0x8c, 0x82, 0x26, 0x73, 0x4a, 0x32, 0x74, 0x65,
+  0xb6, 0xc2, 0x4c, 0x6c, 0x63, 0x7a, 0x37, 0xf0, 0x40, 0x47, 0xce, 0x13,
+  0xd2, 0x8e, 0x4f, 0x47, 0xe8, 0x7a, 0x10, 0x5a, 0x26, 0xb1, 0x62, 0x2e,
+  0x12, 0x9d, 0x0d, 0xd6, 0x86, 0xe5, 0x67, 0x19, 0xd9, 0xbf, 0x4e, 0x73,
+  0x12, 0x32, 0xb5, 0xe8, 0xa3, 0x02, 0x79, 0xf5, 0x7c, 0x02, 0x3a, 0x93,
+  0x4b, 0xeb, 0xbb, 0x8e, 0x84, 0xcd, 0x61, 0xb2, 0x2c, 0xaa, 0x8e, 0xc0,
+  0x4a, 0x09, 0x2d, 0x74, 0xa6, 0xcb, 0x59, 0x90, 0xde, 0x19, 0x64, 0xe1,
+  0x1f, 0x9d, 0x9d, 0x0b, 0x62, 0xe4, 0x09, 0xff, 0xa2, 0x21, 0x0c, 0xcd,
+  0x9e, 0xa1, 0xc8, 0x6b, 0x66, 0x03, 0x9c, 0xa5, 0x50, 0x43, 0x1d, 0xd6,
+  0x90, 0xc5, 0x9b, 0x49, 0xc8, 0x83, 0x62, 0xe9, 0x28, 0x49, 0x63, 0x46,
+  0x4d, 0x6a, 0xf7, 0x28, 0x56, 0x18, 0x0a, 0x8f, 0x61, 0x20, 0x82, 0x11,
+  0x46, 0x21, 0x71, 0x1b, 0x66, 0x97, 0x3f, 0xe5, 0x2f, 0x39, 0x50, 0x47,
+  0x49, 0x60, 0x8d, 0x9b, 0xd2, 0x67, 0x28, 0x71, 0x93, 0xfc, 0x56, 0x54,
+  0x00, 0xff, 0x2a, 0xa6, 0x71, 0x8c, 0xfc, 0x3c, 0xa5, 0x0b, 0xd1, 0x76,
+  0x90, 0xdd, 0xda, 0x24, 0x74, 0x51, 0x70, 0x40, 0x3c, 0xd8, 0x93, 0x9c,
+  0x9a, 0x01, 0xa4, 0x0e, 0x26, 0xed, 0xec, 0x24, 0x03, 0xc1, 0x96, 0x24,
+  0xbd, 0x9e, 0x25, 0x1d, 0xa4, 0x63, 0xb0, 0x03, 0xae, 0x65, 0x40, 0xd6,
+  0x14, 0x27, 0x8b, 0x35, 0x4a, 0xee, 0x35, 0x81, 0x56, 0x6c, 0x96, 0x97,
+  0xea, 0xe1, 0x8a, 0xe7, 0x69, 0x75, 0x2f, 0x6a, 0x5e, 0x68, 0x31, 0xb8,
+  0x8e, 0xbb, 0xf2, 0x0f, 0x68, 0xe1, 0x1d, 0x00, 0x07, 0x26, 0xaa, 0xdb,
+  0xd6, 0xb6, 0x11, 0x83, 0x36, 0x42, 0x74, 0x0e, 0xa0, 0x70, 0x7c, 0x64,
+  0x1b, 0x74, 0xca, 0x4a, 0xb1, 0x0e, 0x45, 0x16, 0x87, 0xc1, 0x2e, 0x94,
+  0xca, 0xb3, 0xbc, 0x8b, 0xaa, 0x84, 0x43, 0xd0, 0x50, 0x63, 0xc9, 0xe1,
+  0xaf, 0x93, 0x60, 0xab, 0x77, 0x49, 0x28, 0xe6, 0x3d, 0x44, 0xfb, 0x20,
+  0xf3, 0xe9, 0xb5, 0x22, 0xec, 0xb1, 0x1b, 0x5b, 0x48, 0x69, 0x92, 0x5c,
+  0xc7, 0xb7, 0x29, 0x03, 0x9e, 0x84, 0xe8, 0x3d, 0x1d, 0xd6, 0x12, 0xda,
+  0x7f, 0xc6, 0x2a, 0xe0, 0x8d, 0xe1, 0x03, 0xcc, 0xef, 0x4a, 0xe8, 0x6d,
+  0x08, 0xdd, 0x83, 0xdd, 0x80, 0x51, 0xf9, 0x6c, 0xa0, 0xbe, 0x2a, 0xf8,
+  0x9a, 0x5b, 0x01, 0xde, 0x08, 0x15, 0x76, 0xd0, 0x1b, 0xfa, 0x64, 0x5c,
+  0xde, 0x76, 0x9f, 0xb0, 0xf2, 0xf6, 0x97, 0x9f, 0x30, 0x01, 0x80, 0x62,
+  0x12, 0x3a, 0x3a, 0x1b, 0x7f, 0x17, 0xb9, 0xf8, 0xa0, 0xae, 0x9b, 0x53,
+  0x0e, 0x97, 0x9f, 0x17, 0x48, 0x2d, 0x38, 0x60, 0xbf, 0xf2, 0x84, 0xb9,
+  0x03, 0x46, 0xfd, 0xeb, 0xa9, 0x3a, 0x3b, 0x18, 0x7f, 0xd7, 0x38, 0x4f,
+  0xde, 0xa5, 0x9a, 0x56, 0x51, 0x97, 0x13, 0x04, 0xb0, 0x44, 0x85, 0xe1,
+  0x68, 0x72, 0x6b, 0x9d, 0xa4, 0x56, 0xde, 0x7e, 0x0a, 0xa9, 0xd1, 0x50,
+  0x5a, 0xa4, 0xd6, 0x5a, 0xde, 0x87, 0x48, 0x2d, 0xdc, 0xa3, 0x0e, 0x52,
+  0xa3, 0xf6, 0x5b, 0xa4, 0x66, 0xeb, 0xda, 0x4d, 0x6b, 0xeb, 0x48, 0xcd,
+  0x02, 0x25, 0x13, 0x21, 0xb3, 0x90, 0xca, 0xda, 0x14, 0x56, 0xa3, 0x9b,
+  0xac, 0x1c, 0x7a, 0xa4, 0xc0, 0x97, 0xee, 0xd7, 0x2f, 0x3a, 0x50, 0x42,
+  0x42, 0x48, 0x06, 0x41, 0xee, 0xc8, 0x57, 0xd5, 0x15, 0xc8, 0xe1, 0xf5,
+  0xbb, 0xb1, 0x47, 0x66, 0xa8, 0xae, 0x0b, 0x00, 0x08, 0x05, 0xad, 0x8d,
+  0x1e, 0xb6, 0xc5, 0xc6, 0x06, 0x6f, 0x29, 0x50, 0xac, 0xdc, 0xc1, 0x30,
+  0x18, 0x56, 0xb4, 0x29, 0xc2, 0x8b, 0x3a, 0xd6, 0x02, 0x0c, 0x3c, 0x17,
+  0x62, 0x7c, 0x09, 0x18, 0x2b, 0x1a, 0x86, 0x42, 0x09, 0x73, 0x90, 0xc7,
+  0x9c, 0xed, 0x67, 0x9a, 0x77, 0xe8, 0x32, 0xa0, 0xb2, 0x06, 0x30, 0x62,
+  0xb4, 0xd9, 0xd1, 0x5c, 0x66, 0xf9, 0xb4, 0x5b, 0x0f, 0x5a, 0x91, 0xeb,
+  0x08, 0x13, 0x5d, 0x30, 0x02, 0xde, 0xe3, 0xa2, 0x69, 0xbb, 0x45, 0x47,
+  0x94, 0x66, 0x22, 0x09, 0x5c, 0x21, 0x40, 0x80, 0xd2, 0xba, 0x8b, 0x92,
+  0x06, 0x3a, 0xf2, 0x30, 0xe6, 0xbe, 0x5c, 0xb2, 0x7a, 0xd9, 0x61, 0x7e,
+  0x02, 0x39, 0x21, 0x20, 0x9d, 0x6d, 0x5d, 0x0f, 0x62, 0x56, 0x60, 0xe7,
+  0x97, 0xb7, 0x4f, 0x87, 0x3c, 0x55, 0xda, 0xab, 0xe5, 0x50, 0xe7, 0xdc,
+  0xb9, 0xf5, 0xc6, 0x39, 0x26, 0xa9, 0xe4, 0xa2, 0x86, 0xcf, 0xcb, 0xa5,
+  0x4b, 0xea, 0x12, 0x2f, 0x34, 0x92, 0xa3, 0x43, 0x72, 0x68, 0x41, 0xb0,
+  0xe4, 0x81, 0xaa, 0x50, 0xa3, 0x1b, 0xbd, 0xbe, 0x38, 0xc7, 0x57, 0x2c,
+  0xe6, 0x4c, 0x19, 0xd2, 0x87, 0xac, 0x40, 0x5c, 0x5c, 0xad, 0x5a, 0x1e,
+  0x32, 0x58, 0x80, 0xbc, 0x6b, 0xc7, 0xe2, 0xa0, 0xc3, 0x24, 0xed, 0xff,
+  0xb3, 0x37, 0xf1, 0x53, 0x76, 0xf1, 0xf9, 0x3f, 0x7e, 0x17, 0x9f, 0xff,
+  0x0f, 0xd9, 0xc5, 0xe7, 0xff, 0x1f, 0xd9, 0x45, 0x4b, 0x30, 0x0f, 0xf6,
+  0x64, 0xb0, 0x7e, 0x3b, 0x59, 0x1d, 0xae, 0x34, 0x46, 0x94, 0x6f, 0x6f,
+  0xde, 0x02, 0x6b, 0x41, 0xd4, 0xed, 0x8e, 0x64, 0x5a, 0xf1, 0xbb, 0x23,
+  0xe7, 0xa7, 0x1b, 0xbb, 0x47, 0x6d, 0x09, 0xd6, 0xe8, 0xf1, 0x59, 0x80,
+  0x2b, 0xe0, 0x77, 0xc7, 0xd0, 0xa1, 0x54, 0x45, 0xee, 0x74, 0x5b, 0x97,
+  0xec, 0xcb, 0x24, 0x5e, 0x2e, 0xd1, 0xd3, 0x25, 0xa4, 0x4f, 0xf8, 0x3b,
+  0x65, 0xbf, 0x20, 0x15, 0x4c, 0x2c, 0xd6, 0x8c, 0x36, 0x69, 0xff, 0x25,
+  0xaf, 0xf6, 0x50, 0x1e, 0xff, 0xa2, 0x33, 0x83, 0x04, 0xf8, 0x4f, 0x7e,
+  0x48, 0xdd, 0xe4, 0xe0, 0x34, 0x2a, 0x47, 0x10, 0xe6, 0x76, 0x0e, 0x49,
+  0x22, 0xc4, 0x78, 0x79, 0x8c, 0x1c, 0x7e, 0x0d, 0x35, 0xfc, 0xf7, 0xc8,
+  0x21, 0xe1, 0xcb, 0x1a, 0x80, 0x4e, 0xec, 0x0b, 0x7d, 0x7f, 0x7e, 0xb2,
+  0x2e, 0x41, 0x47, 0xbc, 0x8d, 0x9c, 0x2b, 0x79, 0x2e, 0xf0, 0x4f, 0x45,
+  0x74, 0x16, 0x5f, 0x25, 0xbd, 0x10, 0x0a, 0xec, 0x13, 0x80, 0x03, 0x5a,
+  0xa9, 0xf7, 0xac, 0x89, 0xfa, 0x38, 0xb1, 0x30, 0xd3, 0x1e, 0xc6, 0x08,
+  0x9f, 0x67, 0x2f, 0xae, 0xbf, 0x2e, 0x64, 0x21, 0x11, 0x55, 0xeb, 0x29,
+  0x92, 0x96, 0x8b, 0xad, 0x8e, 0x91, 0xde, 0x9f, 0x38, 0x6a, 0xbc, 0x67,
+  0x03, 0x74, 0x53, 0x6e, 0x47, 0xde, 0xf2, 0x23, 0xde, 0x9c, 0x5a, 0x8f,
+  0x35, 0x2f, 0xf5, 0x20, 0xb8, 0x3c, 0x00, 0xa0, 0x14, 0x5f, 0x0b, 0x7e,
+  0xe0, 0x65, 0x3e, 0x6f, 0x92, 0xa6, 0x20, 0x90, 0x11, 0x17, 0x38, 0xd1,
+  0x61, 0xed, 0xab, 0x5b, 0x56, 0xf6, 0xd2, 0x06, 0xa5, 0x62, 0x43, 0x28,
+  0x24, 0xc6, 0x73, 0x86, 0x7a, 0x6f, 0x46, 0x8f, 0x30, 0xfd, 0xba, 0xc4,
+  0x6e, 0xb6, 0x03, 0xf1, 0x80, 0x20, 0x65, 0xa4, 0xc0, 0xfd, 0x76, 0xd3,
+  0xfa, 0x0d, 0xbd, 0x95, 0x47, 0xf0, 0xea, 0x72, 0xe4, 0xda, 0xcb, 0x20,
+  0x92, 0xeb, 0xc7, 0x7d, 0x33, 0x1e, 0xfc, 0xdc, 0x1d, 0x95, 0xde, 0xce,
+  0xe7, 0xab, 0x7b, 0xd1, 0x2d, 0x7b, 0x3c, 0x0c, 0x0f, 0xeb, 0xcc, 0x52,
+  0xc2, 0x72, 0x1b, 0x68, 0x6f, 0x6c, 0xa9, 0x4f, 0x44, 0x00, 0x5a, 0x57,
+  0x82, 0x83, 0xd9, 0x22, 0xb8, 0x6d, 0xc4, 0x2f, 0x40, 0xbd, 0x0f, 0x05,
+  0xa9, 0x19, 0x2a, 0x6a, 0xcb, 0x7e, 0xc3, 0xb1, 0x28, 0x38, 0x58, 0x41,
+  0xbf, 0x26, 0xc0, 0xd1, 0x81, 0x39, 0xfb, 0xf6, 0x70, 0xfc, 0xbb, 0xdd,
+  0x3d, 0x8b, 0x81, 0xe3, 0xf0, 0x56, 0x75, 0x86, 0x8f, 0x01, 0x93, 0xd0,
+  0x24, 0x6f, 0xd6, 0x4d, 0xa4, 0xbe, 0x03, 0xfc, 0x1d, 0x1c, 0x3e, 0xe7,
+  0x92, 0x73, 0xfd, 0xcb, 0x88, 0xda, 0xc1, 0xf0, 0x24, 0x7f, 0xc9, 0x62,
+  0x8d, 0x93, 0x4e, 0x1d, 0x9e, 0x36, 0xc8, 0xd9, 0x90, 0x04, 0x48, 0xc3,
+  0xad, 0x5b, 0x0d, 0x80, 0x84, 0x2e, 0xc5, 0x02, 0x11, 0x09, 0xd4, 0xb3,
+  0xc4, 0xfa, 0xb4, 0x12, 0xc6, 0x14, 0xe2, 0xb4, 0x0b, 0xa0, 0xc4, 0x62,
+  0x65, 0x81, 0x32, 0xcd, 0x62, 0x72, 0x2f, 0x58, 0x92, 0x5e, 0xd7, 0x56,
+  0x84, 0x29, 0x42, 0xcb, 0x42, 0x32, 0xa7, 0x6e, 0x92, 0x7b, 0x07, 0x12,
+  0x10, 0xb9, 0x4f, 0xeb, 0xbb, 0xca, 0x58, 0x8b, 0x1c, 0x17, 0xd9, 0x32,
+  0x99, 0x13, 0x9b, 0xff, 0x17, 0xf1, 0x76, 0x0b, 0x85, 0x89, 0x2a, 0xc4,
+  0x4d, 0x72, 0x94, 0x84, 0x87, 0x2e, 0x59, 0x00, 0xb0, 0x5c, 0x2b, 0x3a,
+  0xcc, 0xef, 0x3b, 0xfd, 0xac, 0xbe, 0xde, 0x89, 0x30, 0x60, 0x28, 0x57,
+  0x65, 0x65, 0xc1, 0xf8, 0x0d, 0xb0, 0xad, 0x24, 0x0b, 0xcf, 0x47, 0xcb,
+  0xc6, 0x97, 0x85, 0x19, 0x28, 0x6c, 0x75, 0x4e, 0xa7, 0x37, 0x10, 0xe8,
+  0xd5, 0x5c, 0x14, 0x4e, 0xcf, 0xa2, 0x3c, 0x24, 0xc8, 0xb9, 0x63, 0x17,
+  0x90, 0x7c, 0xc0, 0x36, 0x78, 0x26, 0x4b, 0xbe, 0x0d, 0xd3, 0x4c, 0xbc,
+  0x8e, 0xf0, 0x8f, 0x66, 0xb7, 0x69, 0x91, 0x67, 0x90, 0x51, 0x6e, 0xe3,
+  0x22, 0x85, 0x76, 0x48, 0x63, 0xfd, 0xf0, 0xfa, 0xf8, 0x3c, 0xda, 0xa4,
+  0x8d, 0x9d, 0xdc, 0xaf, 0x81, 0xc2, 0xdb, 0x4e, 0xaa, 0xe9, 0xf6, 0xf2,
+  0x26, 0xdd, 0xce, 0xca, 0x72, 0x36, 0xd9, 0x72, 0x80, 0x0b, 0xe8, 0x0e,
+  0x74, 0x28, 0xb4, 0xbc, 0x0b, 0xf3, 0xc0, 0x8a, 0x33, 0x81, 0x36, 0x69,
+  0x01, 0x5a, 0xbb, 0x50, 0xd2, 0x42, 0x2f, 0x46, 0x65, 0xbe, 0xa5, 0xd5,
+  0x62, 0x6e, 0xe3, 0x74, 0xee, 0xb0, 0xe5, 0x32, 0x69, 0x4a, 0xe2, 0x8a,
+  0x34, 0xbb, 0x9d, 0xfd, 0x15, 0xc9, 0xcc, 0x74, 0xc7, 0xe6, 0x71, 0xd5,
+  0x18, 0x17, 0xc1, 0x7a, 0x94, 0x14, 0x71, 0x0b, 0x51, 0xa1, 0xe5, 0x44,
+  0xb2, 0xab, 0x0b, 0x3d, 0x1e, 0x30, 0x30, 0x3a, 0x2f, 0x8a, 0xf8, 0xce,
+  0xd8, 0x0e, 0xd1, 0x19, 0x54, 0xd6, 0x1b, 0x6d, 0xf7, 0x22, 0x07, 0x05,
+  0x4f, 0xab, 0x8c, 0xc2, 0x06, 0x1e, 0x7b, 0x9f, 0x08, 0xec, 0x72, 0x55,
+  0x3a, 0xfb, 0x68, 0xec, 0xf6, 0x6b, 0xd4, 0x9d, 0xa4, 0xe7, 0xb6, 0x53,
+  0xfd, 0x98, 0x65, 0xd4, 0xdb, 0xef, 0xe1, 0x68, 0x65, 0x80, 0xa2, 0x16,
+  0x21, 0x47, 0x07, 0x85, 0xad, 0xea, 0xfd, 0xd4, 0x8b, 0xa2, 0x96, 0x7d,
+  0x54, 0x8e, 0x53, 0xea, 0x41, 0x8b, 0x39, 0xef, 0xf0, 0x2a, 0x4b, 0xff,
+  0x26, 0xf9, 0xec, 0xee, 0x10, 0xcf, 0x12, 0xc4, 0xd1, 0x03, 0x6b, 0x2a,
+  0x18, 0x42, 0x27, 0x8c, 0x82, 0x1f, 0xd2, 0x4f, 0xed, 0x21, 0x19, 0x3c,
+  0x7f, 0xcc, 0x5f, 0xd3, 0x90, 0xcc, 0x4b, 0x2b, 0x43, 0xe8, 0x30, 0x57,
+  0xd4, 0x07, 0xe4, 0x00, 0xfe, 0x7d, 0x95, 0x81, 0x76, 0x3c, 0x6c, 0x7a,
+  0x3a, 0x56, 0x67, 0xd1, 0xdb, 0x78, 0x1a, 0xd1, 0x1f, 0x3f, 0x40, 0xbe,
+  0xd8, 0xe2, 0x91, 0xd7, 0xe1, 0xb1, 0xec, 0x88, 0x09, 0x67, 0x14, 0x5e,
+  0xd8, 0x85, 0x90, 0x35, 0xb0, 0x03, 0x57, 0x3f, 0x38, 0xc1, 0x35, 0x98,
+  0xa4, 0x60, 0x8e, 0x13, 0x4d, 0xf6, 0x14, 0x13, 0x35, 0x4b, 0x95, 0x71,
+  0x2b, 0x20, 0xc5, 0xbd, 0xbf, 0xed, 0x98, 0x0d, 0x33, 0x0c, 0x17, 0x37,
+  0x0b, 0x09, 0x94, 0x79, 0x31, 0xac, 0xdd, 0xf4, 0x15, 0x4d, 0x95, 0xc1,
+  0x44, 0x04, 0x62, 0xb4, 0xe5, 0xb4, 0xaf, 0xc4, 0xbe, 0x61, 0x7c, 0xdf,
+  0x39, 0x91, 0xc2, 0x81, 0x4a, 0xcc, 0xac, 0xef, 0xcc, 0xa7, 0xcc, 0xfe,
+  0x13, 0x88, 0x1f, 0xb4, 0xff, 0xab, 0x48, 0xff, 0xb7, 0x0b, 0x60, 0xd2,
+  0x24, 0xdc, 0x97, 0x5d, 0x09, 0xde, 0xe3, 0x64, 0x6e, 0x50, 0xe1, 0x96,
+  0x4c, 0x35, 0x2d, 0xee, 0x97, 0x6c, 0x05, 0x93, 0xb7, 0x74, 0x7d, 0x80,
+  0x2f, 0x2d, 0x79, 0x53, 0x21, 0x9e, 0xfc, 0xa8, 0x23, 0x2f, 0xd0, 0xf7,
+  0xa8, 0x49, 0x65, 0xb0, 0x7d, 0x12, 0xf1, 0x54, 0x10, 0xb6, 0xe4, 0x33,
+  0xce, 0xa1, 0x24, 0xaa, 0x9c, 0x49, 0xfa, 0x86, 0xcb, 0xc3, 0x69, 0x05,
+  0xe4, 0x72, 0x3b, 0x65, 0xe8, 0xf4, 0xe6, 0x63, 0xc2, 0x19, 0xdd, 0xcc,
+  0x6c, 0xe1, 0x75, 0xdb, 0x0a, 0x14, 0x1a, 0x7d, 0xbe, 0x85, 0x7f, 0x6d,
+  0xca, 0x83, 0x63, 0x96, 0xd4, 0x50, 0xb1, 0xca, 0xd0, 0x79, 0x7d, 0xa5,
+  0x1c, 0x7b, 0x6f, 0x9e, 0xb3, 0xf3, 0xe3, 0xf1, 0x61, 0xc4, 0xe7, 0xeb,
+  0xf4, 0xdd, 0xc9, 0x9f, 0x59, 0xe0, 0xae, 0x00, 0x82, 0xcd, 0xd6, 0x3a,
+  0xee, 0xbf, 0xeb, 0x62, 0x28, 0x07, 0x3e, 0xbc, 0xba, 0x83, 0x77, 0xc8,
+  0xcd, 0x3c, 0xbc, 0xb3, 0x2d, 0xf6, 0x19, 0x50, 0x4c, 0x2e, 0x70, 0xa2,
+  0x11, 0xc1, 0xa5, 0x2c, 0x85, 0x70, 0xc0, 0xd7, 0xd4, 0x80, 0xad, 0x56,
+  0x6d, 0x18, 0x26, 0x0e, 0x01, 0x09, 0x05, 0x7d, 0xd1, 0x92, 0xd8, 0x6a,
+  0x48, 0xbd, 0xd3, 0x44, 0x1b, 0x49, 0x9c, 0x34, 0xd1, 0x2b, 0x71, 0xe6,
+  0xae, 0x49, 0x3c, 0x80, 0x4c, 0xe8, 0xb2, 0xfe, 0x55, 0x58, 0xe0, 0xc3,
+  0xa7, 0x67, 0x5d, 0xe5, 0xf4, 0x23, 0xc6, 0x40, 0x5c, 0xde, 0x47, 0x5f,
+  0xc7, 0xcc, 0x0f, 0x60, 0xfc, 0x8b, 0x93, 0x45, 0xeb, 0x82, 0x2e, 0x73,
+  0xf6, 0x3b, 0xaa, 0x31, 0x0e, 0xbf, 0x3b, 0x72, 0x06, 0xa4, 0x99, 0x04,
+  0xf1, 0x45, 0xbc, 0x98, 0x33, 0xf6, 0xa7, 0x1b, 0xf5, 0x80, 0xe6, 0x68,
+  0x28, 0xed, 0x58, 0x1b, 0xab, 0x25, 0x31, 0x6a, 0x24, 0x05, 0x0d, 0xa5,
+  0x09, 0x99, 0x5a, 0x33, 0x27, 0x48, 0xa4, 0x16, 0xc4, 0xb7, 0x47, 0x2f,
+  0xf9, 0xdf, 0x35, 0xd3, 0x0e, 0x64, 0x61, 0x38, 0x93, 0x6b, 0xd2, 0x03,
+  0xbf, 0xac, 0x81, 0xa7, 0x9c, 0x8d, 0x51, 0xe3, 0x3c, 0x6d, 0x6b, 0x30,
+  0x47, 0xfb, 0xd2, 0x85, 0x3c, 0x88, 0x5e, 0x1f, 0x9d, 0x83, 0x2f, 0x1d,
+  0xbd, 0xfb, 0x1a, 0x4e, 0x9c, 0x80, 0xd1, 0x73, 0x93, 0xa5, 0xf0, 0x28,
+  0x01, 0xc4, 0x37, 0xd9, 0xb1, 0xd1, 0x1c, 0x5f, 0xec, 0x6c, 0x3f, 0x81,
+  0x00, 0x38, 0xfb, 0x4d, 0x53, 0x9d, 0x62, 0x51, 0x20, 0x0e, 0x0f, 0xc2,
+  0xd9, 0xfd, 0x3a, 0xc5, 0x21, 0x5c, 0x3c, 0x49, 0xcb, 0xce, 0x39, 0x17,
+  0x8c, 0xc8, 0xaa, 0xc3, 0x45, 0xc4, 0x09, 0x28, 0x01, 0x64, 0x02, 0x1f,
+  0x62, 0xbd, 0x5f, 0x23, 0x5f, 0xd4, 0x23, 0xa2, 0x61, 0xd5, 0xb2, 0x54,
+  0xc4, 0x52, 0xb1, 0xfe, 0xe6, 0xd9, 0x2c, 0xb7, 0xa2, 0x9a, 0xce, 0xe0,
+  0x72, 0x66, 0x98, 0xaf, 0xa8, 0x5b, 0xa2, 0x7e, 0x55, 0xb6, 0x6c, 0xeb,
+  0x72, 0x45, 0x98, 0x2c, 0x67, 0x50, 0x3a, 0x58, 0xf1, 0x81, 0x5c, 0xeb,
+  0xb5, 0xa5, 0xa7, 0x3d, 0x55, 0x9d, 0x54, 0xa9, 0xbc, 0xe5, 0x39, 0xe7,
+  0xf3, 0x29, 0xd1, 0x1e, 0x41, 0x9b, 0xad, 0x4d, 0xf5, 0xb8, 0x46, 0x20,
+  0x96, 0x72, 0xbd, 0x0c, 0xaa, 0x41, 0xe0, 0x87, 0xa4, 0xf2, 0x7e, 0x38,
+  0x3c, 0xf8, 0xf0, 0xd5, 0xfb, 0x77, 0xaf, 0x4f, 0x8e, 0xfa, 0x4d, 0x8a,
+  0xbc, 0xd4, 0xc8, 0x88, 0x92, 0xc3, 0x00, 0x14, 0x6e, 0x21, 0xcc, 0xac,
+  0xc6, 0x19, 0x07, 0x6e, 0x94, 0x9c, 0x76, 0xe6, 0xdc, 0xb1, 0x5f, 0xf1,
+  0xa6, 0x59, 0x64, 0x95, 0xcd, 0x80, 0xe3, 0x13, 0x4c, 0xde, 0x10, 0x56,
+  0xd4, 0xfa, 0x66, 0xe3, 0xeb, 0x44, 0x1c, 0x62, 0xe4, 0x99, 0x19, 0x74,
+  0x70, 0xcb, 0x0e, 0x94, 0xa4, 0x66, 0x5f, 0x47, 0xa6, 0xa6, 0xde, 0x73,
+  0xb6, 0x00, 0x56, 0x3d, 0xa6, 0x01, 0x75, 0x6c, 0x77, 0x59, 0x0b, 0x87,
+  0xe7, 0x56, 0x88, 0x92, 0x87, 0x3a, 0xc8, 0x69, 0x51, 0xf5, 0x07, 0x26,
+  0xb8, 0x84, 0x49, 0x3b, 0xb8, 0xe0, 0x5b, 0xd0, 0x1d, 0x9c, 0x68, 0x17,
+  0x0b, 0x5d, 0x8f, 0x92, 0x8f, 0x09, 0xe4, 0x11, 0x7d, 0xeb, 0x50, 0x25,
+  0x83, 0xef, 0xf3, 0x02, 0xf6, 0xd1, 0xd7, 0x5e, 0x42, 0x90, 0x87, 0x48,
+  0x7b, 0x6c, 0xc7, 0x2e, 0xb2, 0x14, 0x10, 0xa3, 0x2e, 0x02, 0x6a, 0xf2,
+  0x9d, 0x1d, 0x5c, 0x7c, 0xd3, 0x75, 0x84, 0xbb, 0x25, 0x36, 0x45, 0x09,
+  0x61, 0x4d, 0x01, 0x48, 0xa8, 0xaa, 0x18, 0x0d, 0xc2, 0x2f, 0x88, 0xaa,
+  0x9b, 0x0c, 0xa3, 0x4b, 0x9f, 0x08, 0xf5, 0x07, 0x11, 0x55, 0x55, 0x56,
+  0xf5, 0x77, 0xa3, 0x11, 0x76, 0x77, 0x5e, 0xad, 0x15, 0x61, 0x24, 0x06,
+  0xb8, 0x64, 0x04, 0xed, 0xdf, 0x96, 0x11, 0x81, 0x0c, 0x1b, 0x8c, 0xc8,
+  0xcb, 0x64, 0xff, 0x7d, 0x96, 0x14, 0xe4, 0x55, 0xb6, 0x4f, 0xa9, 0xf0,
+  0x29, 0xbb, 0xfe, 0xc0, 0x9b, 0x7c, 0xee, 0x06, 0x8f, 0xcc, 0x95, 0x90,
+  0x70, 0xb7, 0x01, 0xe3, 0x84, 0xba, 0x7c, 0x9a, 0x36, 0x87, 0x5b, 0xa8,
+  0x90, 0xb8, 0xdf, 0x8b, 0x36, 0x93, 0xd1, 0x15, 0xb5, 0xd7, 0xe3, 0x76,
+  0x76, 0xf7, 0xf9, 0xdf, 0x3d, 0xfc, 0xfb, 0xa4, 0xb7, 0xd5, 0xb2, 0x78,
+  0x94, 0x60, 0x5f, 0xed, 0xfc, 0x3b, 0x44, 0xfb, 0x04, 0x36, 0x0c, 0xcb,
+  0x9d, 0x4e, 0xd7, 0x11, 0x92, 0x8a, 0x78, 0x5d, 0x90, 0x10, 0x7e, 0x21,
+  0xc0, 0x2a, 0x51, 0x56, 0x6d, 0xc2, 0xb5, 0x37, 0x68, 0x6e, 0x53, 0x49,
+  0xbd, 0x0e, 0xd3, 0x0c, 0xa6, 0x1f, 0x8a, 0xe4, 0x3a, 0x2e, 0x89, 0x47,
+  0xac, 0xaa, 0x94, 0xc3, 0x00, 0x3a, 0xa0, 0xaa, 0xe7, 0x9a, 0x91, 0x44,
+  0x33, 0xd6, 0x8e, 0x1d, 0xe0, 0x89, 0x6d, 0xad, 0x98, 0x1a, 0x59, 0xd4,
+  0xd1, 0x27, 0x86, 0x5a, 0x92, 0xb2, 0x8b, 0x11, 0x9a, 0xe9, 0x8f, 0x1f,
+  0x0b, 0x0b, 0x4a, 0x2d, 0xd8, 0x94, 0x8a, 0xc0, 0x84, 0x28, 0xb9, 0xa4,
+  0x15, 0x4b, 0x05, 0x21, 0x40, 0x52, 0xab, 0x64, 0xd4, 0xed, 0x94, 0x08,
+  0xb9, 0xe3, 0x34, 0xce, 0xca, 0xfd, 0x0d, 0x0e, 0xe2, 0x74, 0x3a, 0x14,
+  0x9d, 0xaa, 0x13, 0xdf, 0xa7, 0xc4, 0xcb, 0x80, 0xbb, 0x0a, 0x38, 0x87,
+  0xf0, 0x76, 0x9d, 0xac, 0xe4, 0x94, 0x19, 0xb1, 0x2b, 0xb4, 0x6c, 0x17,
+  0xde, 0xa7, 0xe3, 0xd3, 0xbf, 0xfa, 0xe4, 0x2c, 0x53, 0x5a, 0x9e, 0xd9,
+  0x72, 0x35, 0x61, 0x65, 0xeb, 0xa5, 0xfc, 0x15, 0xd1, 0x9f, 0xf3, 0x74,
+  0xca, 0x2a, 0xd1, 0xaf, 0x3b, 0x38, 0xfe, 0x7d, 0x77, 0x95, 0xaf, 0xbf,
+  0xcb, 0xed, 0xc0, 0x5c, 0x38, 0x7c, 0x22, 0xd0, 0x95, 0xdd, 0xe7, 0xce,
+  0xad, 0x13, 0x34, 0xaa, 0x77, 0x73, 0x2b, 0xe8, 0x81, 0x85, 0xa7, 0x35,
+  0xc0, 0x75, 0xdf, 0x37, 0x81, 0xa4, 0x63, 0xc0, 0x7e, 0xe7, 0x45, 0xa3,
+  0x14, 0xab, 0xb1, 0xca, 0x26, 0x0a, 0xc0, 0x7a, 0xa9, 0x21, 0x2c, 0x94,
+  0x25, 0xf5, 0x06, 0x52, 0x04, 0x05, 0x56, 0xa4, 0x4f, 0x1e, 0xd4, 0x46,
+  0x5d, 0x9a, 0x7c, 0xde, 0xa2, 0x5a, 0xef, 0xf5, 0x6a, 0xea, 0xa7, 0xb2,
+  0xc3, 0xae, 0x0a, 0x92, 0xa5, 0x7b, 0x48, 0xf0, 0xb4, 0x2c, 0xdf, 0xaa,
+  0x65, 0xfb, 0xe1, 0x1e, 0xd1, 0xa5, 0x63, 0x37, 0x55, 0x5e, 0x0f, 0x85,
+  0x08, 0xae, 0xce, 0x49, 0x5e, 0x54, 0x0d, 0x20, 0x80, 0x16, 0x03, 0x41,
+  0x68, 0x05, 0x2f, 0x05, 0x02, 0xde, 0x0b, 0x45, 0xc7, 0x32, 0x0b, 0x68,
+  0x67, 0xdc, 0xb3, 0x05, 0xdd, 0xa9, 0x7e, 0x6c, 0x85, 0x5d, 0x50, 0xb1,
+  0x84, 0x25, 0x12, 0x1f, 0x36, 0xed, 0x99, 0x8d, 0x42, 0x73, 0x74, 0x41,
+  0xaa, 0x7e, 0x3d, 0xfe, 0x96, 0xd3, 0x59, 0xc5, 0x5d, 0x52, 0xfe, 0xe3,
+  0xef, 0x92, 0xf5, 0xc9, 0xc3, 0x4f, 0x5e, 0xd4, 0x1c, 0x2d, 0x97, 0x88,
+  0x8a, 0xa0, 0x2b, 0xb0, 0xdb, 0xbf, 0xf2, 0x86, 0xd1, 0x9c, 0x4a, 0x8e,
+  0x17, 0xe6, 0x29, 0x6f, 0x72, 0xfd, 0x19, 0xa9, 0xa7, 0x15, 0x43, 0x1b,
+  0xdd, 0x62, 0x83, 0xae, 0xd1, 0x16, 0xd0, 0x21, 0xac, 0xd2, 0x49, 0x5b,
+  0x27, 0xb0, 0x82, 0x38, 0xc8, 0xca, 0xc3, 0xdd, 0x8b, 0xc8, 0x29, 0x8d,
+  0x34, 0x41, 0x95, 0x5b, 0x22, 0xb6, 0xa4, 0x9a, 0x06, 0x5f, 0xce, 0x12,
+  0xad, 0xbe, 0xd7, 0x24, 0x30, 0x29, 0x8e, 0xab, 0x81, 0x33, 0xd4, 0xe7,
+  0x71, 0xa6, 0x91, 0x36, 0x1a, 0x70, 0x0f, 0x73, 0x7c, 0xac, 0xb0, 0x91,
+  0x6e, 0x84, 0x97, 0x82, 0xed, 0xd2, 0xba, 0xf0, 0xd8, 0xf0, 0x75, 0x2b,
+  0x00, 0x6d, 0x0e, 0x67, 0x43, 0xe3, 0x6b, 0x7c, 0xc2, 0x0d, 0xb2, 0xdc,
+  0xde, 0x9e, 0xb8, 0x07, 0x38, 0x97, 0x08, 0x87, 0xa4, 0x65, 0x6f, 0xd3,
+  0x50, 0x0d, 0xd4, 0x5f, 0x14, 0x25, 0xcd, 0x12, 0x5f, 0x78, 0x60, 0xf7,
+  0xae, 0xcc, 0xf1, 0x96, 0x8a, 0x90, 0x12, 0xde, 0x2a, 0x11, 0xd7, 0xcb,
+  0xa2, 0xa5, 0xe4, 0x72, 0xc8, 0xa6, 0x50, 0xb8, 0x94, 0xc2, 0xc6, 0x06,
+  0x54, 0xa2, 0x5f, 0xc7, 0x95, 0x16, 0x58, 0xe3, 0x51, 0x2a, 0xc8, 0xd6,
+  0xde, 0xde, 0x1a, 0xbf, 0xa0, 0xa2, 0xf5, 0xa9, 0x11, 0x90, 0x17, 0x63,
+  0x58, 0xc6, 0x97, 0x89, 0x41, 0x85, 0x70, 0xbd, 0x2e, 0x06, 0x58, 0x9e,
+  0xd2, 0x12, 0x4a, 0xae, 0x0c, 0x3e, 0xcb, 0xda, 0x80, 0x19, 0xe5, 0x6a,
+  0xca, 0x57, 0x23, 0x6b, 0xdf, 0x2e, 0xad, 0x8d, 0xed, 0x51, 0x9a, 0xaf,
+  0x10, 0x95, 0xf3, 0x74, 0x19, 0x59, 0x0c, 0x0c, 0x97, 0xad, 0xd1, 0x9a,
+  0xa0, 0x7c, 0x39, 0x75, 0x84, 0x53, 0x35, 0x40, 0x05, 0xa1, 0x3f, 0xde,
+  0xb2, 0x3f, 0x72, 0x16, 0x6d, 0x36, 0xda, 0x7f, 0xba, 0xb3, 0x8b, 0xe1,
+  0x3e, 0xdd, 0xf9, 0x2c, 0xc4, 0x1c, 0x77, 0x89, 0xd7, 0x8a, 0xab, 0xab,
+  0xa1, 0xda, 0x0f, 0xa7, 0x9d, 0xcd, 0xd9, 0x94, 0x81, 0x75, 0x4d, 0x48,
+  0xc9, 0x02, 0x87, 0xd2, 0x7c, 0xf4, 0x61, 0x9a, 0x49, 0xf6, 0x33, 0x67,
+  0xe6, 0x60, 0x2f, 0x63, 0xd8, 0xe9, 0x9a, 0x08, 0x36, 0x71, 0x19, 0x19,
+  0x3c, 0xcb, 0xba, 0x24, 0x75, 0x85, 0xa5, 0x0c, 0xc2, 0x86, 0x90, 0x68,
+  0x0f, 0x26, 0xd3, 0xd2, 0xb5, 0xbc, 0x98, 0x71, 0xa8, 0x49, 0xe9, 0x17,
+  0xac, 0x77, 0xab, 0x0e, 0x18, 0x17, 0xd5, 0x36, 0xf2, 0xcf, 0x35, 0x50,
+  0x7e, 0xca, 0xe0, 0x71, 0x56, 0xfe, 0xf2, 0xfc, 0xcd, 0x61, 0xa3, 0xb9,
+  0xbd, 0x27, 0x9f, 0x7f, 0xae, 0x83, 0x48, 0x34, 0xaa, 0xd8, 0xe3, 0x17,
+  0xb3, 0x19, 0x4a, 0xf2, 0xf3, 0xc4, 0x66, 0xce, 0x55, 0x0b, 0x91, 0xb9,
+  0x24, 0x81, 0x76, 0x1d, 0x72, 0x52, 0x5f, 0xd7, 0xb4, 0x6f, 0xc5, 0xa2,
+  0x2d, 0xd7, 0x22, 0x8e, 0xb4, 0xae, 0x9e, 0xd6, 0xc7, 0x32, 0x9c, 0x53,
+  0x03, 0x3b, 0x93, 0x22, 0x22, 0x5f, 0xb6, 0xe2, 0x36, 0xaf, 0x24, 0x1d,
+  0xfd, 0x2f, 0x7c, 0x3b, 0x5e, 0x25, 0x55, 0x3b, 0x2f, 0x24, 0xc8, 0xba,
+  0xad, 0x35, 0xbe, 0x16, 0x58, 0xcd, 0xa3, 0x6d, 0x5a, 0x66, 0xcb, 0x4b,
+  0x11, 0x29, 0x0d, 0x3f, 0x29, 0xa8, 0xac, 0xf6, 0x25, 0xc8, 0xe8, 0xa5,
+  0xfa, 0x89, 0x3a, 0x01, 0x30, 0xbf, 0x54, 0xa8, 0x3e, 0x35, 0x91, 0x02,
+  0x43, 0xae, 0xaa, 0x62, 0x2b, 0x6d, 0x0c, 0xc5, 0x9d, 0x73, 0xbb, 0xa1,
+  0x37, 0x2a, 0x88, 0x99, 0x56, 0x02, 0x68, 0x39, 0x07, 0x53, 0x57, 0x04,
+  0xe7, 0xa5, 0x21, 0x00, 0x72, 0xc1, 0x7b, 0xc6, 0x23, 0x95, 0x0c, 0x7b,
+  0x1e, 0x4d, 0xd7, 0x52, 0x94, 0x61, 0xc1, 0xb8, 0x5a, 0x96, 0x81, 0x7f,
+  0x37, 0x58, 0xa8, 0xd6, 0xc9, 0x3f, 0xb2, 0x1a, 0x73, 0x06, 0xa2, 0x0f,
+  0x35, 0xcc, 0xc7, 0x7e, 0xab, 0x3c, 0xe3, 0xa3, 0xd6, 0x07, 0x7a, 0xec,
+  0xa3, 0x3e, 0x3f, 0xd4, 0x3c, 0xf9, 0xfc, 0x52, 0xdf, 0x9c, 0x6b, 0xa1,
+  0xab, 0x09, 0x84, 0x29, 0xc3, 0x71, 0x60, 0x99, 0xe2, 0xfa, 0xe1, 0xae,
+  0x66, 0x6b, 0xd0, 0xe2, 0xa4, 0x48, 0x2f, 0xb1, 0xb3, 0xfd, 0x4e, 0x0b,
+  0xc0, 0xf0, 0x8d, 0x1b, 0xe9, 0xab, 0x2f, 0x6b, 0xad, 0xdd, 0xdd, 0x8d,
+  0x16, 0xf7, 0xf6, 0x5d, 0x59, 0xab, 0x38, 0xee, 0xd3, 0xf0, 0x14, 0x55,
+  0x58, 0x48, 0xca, 0x27, 0xa2, 0x87, 0x75, 0xa5, 0x7c, 0x4d, 0x48, 0x86,
+  0xf5, 0x89, 0x4b, 0x47, 0xbd, 0x5d, 0x4e, 0x0f, 0x3d, 0x4d, 0x28, 0x86,
+  0xcc, 0xca, 0xe2, 0x24, 0x27, 0x72, 0x33, 0x42, 0xe2, 0x54, 0xde, 0xaa,
+  0x58, 0x4d, 0xab, 0xf6, 0x6d, 0xee, 0x0b, 0x5a, 0x0b, 0x14, 0x6e, 0x15,
+  0x04, 0x12, 0x4a, 0x25, 0xe0, 0xfa, 0x71, 0xe7, 0x93, 0xc5, 0x03, 0xb2,
+  0x5a, 0xe8, 0xcd, 0x93, 0x08, 0x34, 0xdc, 0xfe, 0x40, 0x02, 0x90, 0x35,
+  0xbf, 0xd4, 0xe7, 0x3e, 0xae, 0x5d, 0xca, 0xde, 0x5d, 0x32, 0x79, 0xf5,
+  0x25, 0x6a, 0x2a, 0x03, 0x4d, 0x4b, 0x50, 0x75, 0x99, 0x8e, 0xb6, 0xf9,
+  0xcf, 0x5e, 0xc4, 0x4a, 0x7f, 0xc7, 0x4a, 0x12, 0xfd, 0xad, 0x6b, 0x31,
+  0x40, 0x2b, 0x08, 0x5a, 0xbb, 0xcc, 0xf3, 0xb5, 0x8d, 0x59, 0xd5, 0x1b,
+  0xac, 0x44, 0x10, 0x70, 0x2a, 0xf1, 0x9f, 0x9e, 0xac, 0x84, 0x94, 0xb0,
+  0x43, 0xb5, 0xa3, 0xd5, 0x95, 0xce, 0x08, 0xe5, 0x53, 0x6e, 0x44, 0x4b,
+  0x6d, 0x7a, 0xa5, 0x25, 0x0b, 0x59, 0x8a, 0x5a, 0xbf, 0x20, 0xfc, 0xf4,
+  0xab, 0x2f, 0x01, 0x34, 0xc4, 0xbf, 0xfe, 0xc9, 0xbd, 0xcd, 0xff, 0x10,
+  0x5d, 0xd2, 0xe9, 0x5e, 0x3b, 0x11, 0x76, 0xad, 0xd8, 0xf3, 0xdb, 0xa2,
+  0xd3, 0x99, 0xfa, 0xd4, 0x1f, 0xf4, 0x59, 0xaa, 0xec, 0xff, 0xa9, 0x0f,
+  0xcf, 0x98, 0x99, 0xe0, 0x50, 0xeb, 0x41, 0x0a, 0x5c, 0xe5, 0xad, 0xe8,
+  0x2f, 0x0e, 0x96, 0xd5, 0x5a, 0xdd, 0x3c, 0xf0, 0xc7, 0xc6, 0xfc, 0x53,
+  0xcf, 0x8d, 0xfa, 0xa7, 0x9e, 0x1f, 0xf7, 0x4f, 0x3d, 0x3f, 0xf2, 0x9f,
+  0x7a, 0xbf, 0x62, 0x47, 0xfb, 0xd2, 0xbc, 0x6f, 0x3d, 0x68, 0x3c, 0x68,
+  0xbb, 0xd7, 0x5f, 0xd7, 0xb4, 0x77, 0x58, 0xa4, 0x76, 0xba, 0xfc, 0x0a,
+  0xf1, 0xad, 0xab, 0xab, 0x20, 0xf5, 0xa8, 0xa4, 0x50, 0xa6, 0xcc, 0x1b,
+  0x4a, 0x7c, 0xcb, 0x8b, 0x1c, 0x3c, 0xc1, 0x6b, 0xca, 0x12, 0x73, 0x39,
+  0x67, 0xfd, 0x3b, 0x40, 0xeb, 0xb2, 0x4e, 0xdc, 0x4a, 0x9b, 0xff, 0xb1,
+  0xe5, 0x94, 0x76, 0xaf, 0x77, 0x82, 0x6c, 0x5d, 0xae, 0x0a, 0x09, 0x7e,
+  0x10, 0x9e, 0x29, 0xb9, 0xd7, 0x86, 0x08, 0xa8, 0x7d, 0xbd, 0x3d, 0x78,
+  0xf7, 0xfe, 0xe0, 0xe4, 0xc1, 0x38, 0xbc, 0x30, 0x60, 0xc6, 0x59, 0x6f,
+  0x21, 0xb2, 0x87, 0x9a, 0x2a, 0x47, 0x22, 0xf3, 0x15, 0xce, 0xc5, 0x87,
+  0x7f, 0xe4, 0x1b, 0xfd, 0xe7, 0xce, 0x98, 0xf5, 0xef, 0x55, 0x90, 0x7d,
+  0x13, 0x02, 0xff, 0xdf, 0x08, 0xff, 0xe9, 0xd9, 0xfb, 0xfc, 0x7a, 0x4f,
+  0x9d, 0x1f, 0xae, 0x98, 0x5f, 0x57, 0xcd, 0x28, 0xc7, 0xf7, 0x59, 0x74,
+  0x31, 0x2b, 0x07, 0x54, 0xaa, 0x41, 0x50, 0x9d, 0x18, 0xaa, 0x3c, 0x27,
+  0x02, 0x5d, 0x5e, 0xae, 0x75, 0xe4, 0x1c, 0x1c, 0x1e, 0xfa, 0x4c, 0x86,
+  0x7a, 0x4e, 0x74, 0x2d, 0x92, 0xeb, 0x1f, 0x6f, 0x1c, 0xc3, 0xc2, 0xcd,
+  0x51, 0x7e, 0x8f, 0xa3, 0xbd, 0x87, 0x55, 0x2e, 0x89, 0x44, 0x2f, 0x75,
+  0x34, 0x5f, 0x74, 0xae, 0x23, 0x0d, 0x20, 0x14, 0x33, 0xad, 0x0c, 0x0b,
+  0x0a, 0xce, 0x8c, 0xd5, 0x49, 0x71, 0x76, 0x00, 0xfc, 0x45, 0xcd, 0xaa,
+  0x51, 0x75, 0xa1, 0x15, 0xf5, 0xa9, 0xf1, 0x91, 0x80, 0x37, 0xb7, 0xf9,
+  0x1b, 0x80, 0x88, 0xe9, 0x9c, 0x56, 0x93, 0xfc, 0x62, 0xb5, 0x20, 0xf2,
+  0x25, 0x81, 0x63, 0xd6, 0x2f, 0x1f, 0x89, 0xcc, 0xb1, 0xdd, 0x65, 0x43,
+  0xb2, 0x44, 0x0b, 0xa9, 0x3c, 0x18, 0x77, 0x06, 0x21, 0x0d, 0xba, 0x0d,
+  0x3c, 0xbd, 0xf1, 0xf1, 0xc5, 0x11, 0xed, 0xce, 0xfb, 0x8b, 0x6f, 0x7a,
+  0xaa, 0x52, 0x34, 0x13, 0x05, 0x01, 0x6a, 0x52, 0x15, 0x29, 0x2d, 0xbd,
+  0x25, 0x3f, 0x14, 0xc2, 0x72, 0xdb, 0xc8, 0xd0, 0x0d, 0x5f, 0x78, 0x63,
+  0xa3, 0x9f, 0x8d, 0x9e, 0x6d, 0x35, 0x36, 0x66, 0x3d, 0x5a, 0x5c, 0xb3,
+  0x7c, 0x92, 0xd2, 0xb4, 0xc2, 0x95, 0x71, 0xc8, 0xda, 0xb6, 0x07, 0x13,
+  0x16, 0x99, 0x39, 0x36, 0xe7, 0x5b, 0x47, 0x56, 0xb3, 0xcf, 0xf1, 0x76,
+  0x0a, 0x39, 0x30, 0xd5, 0x1c, 0x9a, 0x90, 0x0a, 0x33, 0x61, 0x91, 0x50,
+  0x97, 0x50, 0xd0, 0x4e, 0xfb, 0x33, 0xb3, 0x21, 0x23, 0xa8, 0x72, 0xd1,
+  0x8e, 0xb0, 0x5a, 0x43, 0xdb, 0xc8, 0x60, 0x02, 0x84, 0x4f, 0xdc, 0xe8,
+  0x44, 0x58, 0x8b, 0x16, 0xa9, 0xe0, 0x52, 0x04, 0x70, 0x6d, 0x4d, 0x4a,
+  0x56, 0x9d, 0xec, 0x47, 0xf9, 0xd9, 0xcd, 0x03, 0x20, 0x1e, 0x70, 0x75,
+  0x37, 0x08, 0x0b, 0xfa, 0x06, 0x46, 0xa3, 0x01, 0xa9, 0xbe, 0xa0, 0x05,
+  0x54, 0x15, 0xf1, 0x02, 0x66, 0x51, 0x2b, 0x1d, 0x89, 0x5a, 0xdb, 0x1c,
+  0x6f, 0xb9, 0x82, 0x62, 0x2c, 0x1a, 0x6b, 0x6b, 0x1c, 0x90, 0xdc, 0x08,
+  0x40, 0x0e, 0x52, 0xd9, 0x15, 0x09, 0xa0, 0x0b, 0x95, 0x27, 0x38, 0x89,
+  0xed, 0x8b, 0x16, 0xdc, 0x6f, 0x7a, 0x37, 0xeb, 0xce, 0xb1, 0x14, 0x01,
+  0x48, 0xf2, 0x19, 0x7c, 0x01, 0xf9, 0xc3, 0xef, 0x5f, 0x37, 0x4a, 0xae,
+  0x62, 0x56, 0x20, 0x04, 0xc9, 0xf7, 0xce, 0xd6, 0xe5, 0xde, 0x9a, 0x37,
+  0x87, 0x68, 0x49, 0x6a, 0x11, 0xcc, 0x92, 0x64, 0xe9, 0x70, 0x03, 0x51,
+  0x03, 0x43, 0xaa, 0x6f, 0xd0, 0x91, 0x63, 0x03, 0xde, 0x3d, 0xc0, 0xa5,
+  0xee, 0xd7, 0x8c, 0x4e, 0xd9, 0x40, 0x0d, 0x9d, 0x9f, 0x51, 0x7c, 0x49,
+  0xd3, 0x8a, 0x76, 0x3f, 0x7b, 0xf2, 0x79, 0x54, 0x72, 0x3e, 0x4f, 0x1a,
+  0x2e, 0x99, 0xa0, 0x6b, 0xac, 0xcf, 0xaa, 0x56, 0xb9, 0xd9, 0xcc, 0xa3,
+  0x9a, 0x63, 0x46, 0xea, 0x72, 0x7e, 0x97, 0xe0, 0xe6, 0xd2, 0x7c, 0x97,
+  0x76, 0x92, 0x2d, 0x2d, 0xa2, 0x55, 0x93, 0x17, 0xdb, 0x19, 0xd6, 0x49,
+  0x8c, 0x30, 0xa3, 0x80, 0x32, 0x67, 0xc4, 0x74, 0x18, 0xd1, 0x98, 0xd8,
+  0xc3, 0xf9, 0xd1, 0xc5, 0x39, 0xfd, 0x18, 0x5f, 0x9c, 0x9e, 0xaf, 0x49,
+  0x85, 0xaf, 0xa6, 0x60, 0x7b, 0xbc, 0x68, 0x4c, 0x35, 0x8c, 0x16, 0x6b,
+  0x91, 0x26, 0x01, 0xbf, 0x80, 0xe7, 0x49, 0x58, 0x48, 0xd9, 0x09, 0xd0,
+  0x15, 0xe0, 0x74, 0x95, 0xf5, 0x32, 0xa9, 0x97, 0xc4, 0xcb, 0x1f, 0x9c,
+  0x98, 0xec, 0xf9, 0xc3, 0x14, 0x82, 0x09, 0x33, 0x31, 0xf2, 0x8c, 0x1d,
+  0xd3, 0xc6, 0x68, 0xb5, 0x86, 0x9a, 0x37, 0xe1, 0xab, 0x25, 0x63, 0x0d,
+  0x85, 0x08, 0x59, 0x49, 0xb9, 0xba, 0x5a, 0x09, 0x92, 0x9e, 0x65, 0x69,
+  0xf5, 0xd8, 0x57, 0x74, 0xe3, 0xd0, 0x88, 0x1f, 0xa1, 0xdf, 0xb8, 0x74,
+  0x26, 0x1c, 0xbe, 0x32, 0xf3, 0x45, 0x22, 0xd2, 0xbc, 0x98, 0xe4, 0x8d,
+  0xeb, 0xc8, 0x3d, 0x21, 0x30, 0x20, 0x51, 0x57, 0x92, 0xa0, 0x83, 0xfe,
+  0xe2, 0x5d, 0xee, 0xbb, 0x64, 0xaf, 0x5c, 0xa9, 0x43, 0xf6, 0x85, 0x04,
+  0x9c, 0x79, 0x05, 0x4c, 0xb5, 0xbe, 0x8d, 0xaa, 0xef, 0x48, 0xad, 0xc1,
+  0x95, 0x77, 0x9b, 0x5c, 0x99, 0x33, 0xe5, 0xba, 0x39, 0x0b, 0xe2, 0x56,
+  0x2c, 0xdf, 0xca, 0x55, 0xc6, 0x70, 0xf8, 0x38, 0x21, 0x1c, 0xf3, 0x99,
+  0x3e, 0xd5, 0x19, 0xe9, 0x6f, 0xf5, 0x70, 0x3d, 0x6d, 0xeb, 0x96, 0x4b,
+  0xf2, 0xda, 0xaa, 0xc9, 0x4d, 0x6b, 0x42, 0x52, 0x9b, 0x7f, 0x76, 0xd4,
+  0xab, 0x88, 0x86, 0x67, 0xdb, 0x41, 0x82, 0xa0, 0xe2, 0xd9, 0xd5, 0x66,
+  0xbe, 0xdb, 0x2d, 0x78, 0xac, 0xc3, 0xb6, 0x69, 0x4a, 0x1f, 0x30, 0xe8,
+  0x8a, 0x3c, 0x59, 0xa8, 0x0c, 0xd2, 0x9d, 0xd5, 0x1b, 0xbd, 0xcf, 0x34,
+  0xbd, 0x36, 0xf3, 0x55, 0x4c, 0x6c, 0x11, 0x39, 0x73, 0x9c, 0x0d, 0xc3,
+  0x72, 0x3b, 0xcd, 0x72, 0x89, 0x51, 0xe4, 0x45, 0xe8, 0x88, 0xc4, 0x82,
+  0xc0, 0x8a, 0xa8, 0x33, 0xbb, 0x52, 0xb4, 0x3d, 0x35, 0x01, 0x14, 0x4c,
+  0xd8, 0xcd, 0xe4, 0x48, 0x38, 0xb5, 0x5a, 0x47, 0xe9, 0x2c, 0xdc, 0x44,
+  0x61, 0x71, 0x10, 0xc3, 0x3d, 0x6f, 0xa8, 0x24, 0xa4, 0x54, 0x92, 0xee,
+  0x2c, 0xbd, 0x51, 0xe6, 0xda, 0x36, 0x50, 0x63, 0x50, 0x92, 0x7d, 0xa8,
+  0x15, 0x45, 0xea, 0x49, 0x7d, 0x26, 0xc2, 0x35, 0xef, 0x33, 0xc6, 0x7f,
+  0x07, 0xbd, 0x0d, 0xd3, 0xe5, 0xe3, 0x49, 0x98, 0x96, 0xfe, 0xc9, 0xc3,
+  0xf2, 0x69, 0x0d, 0x21, 0xf7, 0x29, 0x57, 0x57, 0x57, 0xc8, 0xa9, 0x49,
+  0xdb, 0xf0, 0x05, 0x28, 0x85, 0xac, 0xe6, 0x41, 0x05, 0xb1, 0x21, 0x31,
+  0x8b, 0x07, 0xed, 0xa6, 0x07, 0x3b, 0x30, 0x7a, 0x53, 0x52, 0xf6, 0x80,
+  0x90, 0x6b, 0xa3, 0x6b, 0xd8, 0x9a, 0x2c, 0x9b, 0x11, 0x62, 0x20, 0x0f,
+  0x91, 0x24, 0x1a, 0xc0, 0x36, 0xd2, 0x78, 0xdd, 0x80, 0xdb, 0x41, 0x71,
+  0x8a, 0xee, 0x20, 0x92, 0x8c, 0x9d, 0x29, 0xab, 0xd2, 0x1a, 0xf6, 0x55,
+  0xa3, 0xe0, 0xa7, 0xa3, 0xbd, 0xad, 0x07, 0x73, 0x3a, 0x58, 0x6e, 0x67,
+  0x24, 0x2c, 0x49, 0xf6, 0x23, 0x15, 0x4b, 0x12, 0xae, 0x25, 0x65, 0xb7,
+  0x90, 0xad, 0xf5, 0x25, 0xb2, 0x30, 0x8b, 0x36, 0x7c, 0x3a, 0xaf, 0x50,
+  0x73, 0xdf, 0xe8, 0x98, 0x7d, 0x42, 0x5a, 0x3a, 0x84, 0xdf, 0x38, 0x3a,
+  0xa3, 0xbb, 0xc5, 0x2d, 0x71, 0x90, 0xa9, 0x4a, 0xef, 0x40, 0xcd, 0xe0,
+  0x61, 0x6c, 0x35, 0x2f, 0x42, 0x06, 0x68, 0x45, 0x44, 0xcb, 0x1b, 0x6f,
+  0x92, 0x67, 0xa5, 0x6f, 0x41, 0x1f, 0xb2, 0x5b, 0xa0, 0xa0, 0x61, 0x00,
+  0x87, 0x43, 0x0a, 0xbd, 0xe1, 0xd0, 0xb2, 0xed, 0xd9, 0xf8, 0xe8, 0x46,
+  0xe7, 0xfd, 0x8c, 0xb5, 0xf5, 0x17, 0x00, 0x07, 0xd9, 0xd1, 0xc9, 0x2c,
+  0xc3, 0x3a, 0x28, 0xab, 0xa5, 0x6a, 0x3f, 0xb3, 0xfc, 0x2e, 0x43, 0x69,
+  0x80, 0xa8, 0x4d, 0x4d, 0x18, 0x3e, 0x9f, 0x9d, 0x46, 0x5e, 0xca, 0xde,
+  0xce, 0xe8, 0x63, 0x93, 0x9d, 0x96, 0xe5, 0x7c, 0x38, 0x9d, 0x4e, 0x1f,
+  0xe0, 0xa8, 0x87, 0x87, 0x87, 0xf4, 0xc1, 0x21, 0x90, 0x12, 0x18, 0x21,
+  0x14, 0x23, 0x3d, 0xbc, 0x66, 0x53, 0xcd, 0x7c, 0x2b, 0x1a, 0x5f, 0xaf,
+  0x18, 0xb3, 0x8a, 0x2b, 0xb7, 0x33, 0x55, 0x8c, 0xc7, 0x27, 0xdb, 0x17,
+  0x27, 0xe3, 0xa6, 0xd3, 0x2b, 0xbe, 0x67, 0x5d, 0x0f, 0x3a, 0x5d, 0x5d,
+  0x73, 0x11, 0xc1, 0x0d, 0x18, 0x65, 0x16, 0xe7, 0x6d, 0x74, 0x25, 0x3d,
+  0x74, 0xa6, 0x23, 0xad, 0xb2, 0xa0, 0x28, 0x91, 0x6a, 0x56, 0x59, 0x92,
+  0x21, 0xe8, 0xd1, 0x21, 0x29, 0x6b, 0x75, 0xfa, 0x77, 0x07, 0x17, 0x5c,
+  0xac, 0xb0, 0xd2, 0x4c, 0xaa, 0xee, 0x14, 0x12, 0x07, 0x70, 0x87, 0xc4,
+  0xe7, 0x38, 0x00, 0xed, 0xb7, 0x3b, 0x00, 0xac, 0x28, 0x2d, 0x8d, 0x35,
+  0x8e, 0x34, 0x86, 0xbe, 0x03, 0x91, 0x58, 0x57, 0x74, 0xe8, 0x6e, 0x20,
+  0xc9, 0x42, 0xe0, 0x3f, 0xcb, 0xc6, 0x86, 0xec, 0x3e, 0x6f, 0xdf, 0x6f,
+  0xb5, 0xd7, 0x7f, 0x94, 0x2c, 0xe0, 0x6d, 0xed, 0xf5, 0xe7, 0x5f, 0xbf,
+  0x4d, 0x89, 0x72, 0x0b, 0x7e, 0x4c, 0x48, 0xe3, 0xa2, 0x23, 0x34, 0x37,
+  0x60, 0xbb, 0xae, 0x8c, 0x84, 0x64, 0xbe, 0x28, 0x56, 0x63, 0x49, 0xdb,
+  0x3d, 0x43, 0xf5, 0x1c, 0xb9, 0x06, 0x5c, 0x3e, 0xda, 0x5d, 0xdc, 0x62,
+  0x1b, 0xc6, 0x29, 0x02, 0x04, 0x91, 0x9c, 0x98, 0x8b, 0x04, 0x2d, 0xb9,
+  0xe6, 0x8b, 0x64, 0x39, 0xbf, 0x77, 0x62, 0x9a, 0x36, 0xbf, 0x4e, 0x7f,
+  0x0b, 0xa5, 0xfd, 0x30, 0x41, 0xda, 0xc6, 0x58, 0xd6, 0x5b, 0x41, 0x47,
+  0x71, 0xda, 0x69, 0x78, 0x8e, 0xb5, 0xe7, 0x46, 0xb5, 0xc0, 0xf6, 0x0e,
+  0xed, 0x75, 0xee, 0x90, 0x50, 0x69, 0xf7, 0x7e, 0x9c, 0xeb, 0xb1, 0xb7,
+  0xd3, 0xa0, 0x51, 0x90, 0x46, 0x63, 0xf3, 0xfc, 0x8a, 0xa3, 0xa3, 0x05,
+  0x7b, 0x04, 0x8b, 0x64, 0xc5, 0x32, 0x9a, 0x76, 0x09, 0xa1, 0x60, 0x2d,
+  0x16, 0x5a, 0xf7, 0x2c, 0x89, 0x2c, 0xc2, 0x3c, 0xc5, 0xd1, 0xbd, 0x01,
+  0x1a, 0xb9, 0xe4, 0xfd, 0x8e, 0xfd, 0x70, 0xc1, 0x15, 0x53, 0x0e, 0xa9,
+  0x86, 0x4b, 0xb4, 0x34, 0x64, 0x07, 0xa9, 0xb4, 0xa2, 0xd1, 0x14, 0x56,
+  0x95, 0x5c, 0x55, 0xd3, 0x75, 0x25, 0xe2, 0x75, 0x86, 0xed, 0x55, 0xdb,
+  0xd9, 0xd2, 0x2b, 0x9b, 0xe4, 0x0a, 0x62, 0x63, 0xde, 0xfc, 0xa1, 0x32,
+  0x61, 0x2b, 0xd3, 0x7f, 0x22, 0x80, 0xe0, 0xb7, 0x86, 0x39, 0x78, 0xb9,
+  0xaa, 0x78, 0xd6, 0x1a, 0x55, 0x56, 0x63, 0xf1, 0x6c, 0x9e, 0xd7, 0x48,
+  0x76, 0x71, 0x91, 0x3d, 0x58, 0x8f, 0x37, 0x1a, 0xab, 0x39, 0x59, 0xf3,
+  0xd0, 0xe1, 0x0c, 0x0b, 0xe1, 0x09, 0x3d, 0x54, 0xb0, 0x36, 0x7a, 0xd9,
+  0x19, 0xb8, 0x2e, 0x31, 0x69, 0x1c, 0x17, 0x44, 0x7a, 0x26, 0x2f, 0x94,
+  0x5e, 0x4d, 0x73, 0xce, 0x32, 0x60, 0x39, 0x69, 0x14, 0x9d, 0x24, 0xe2,
+  0x91, 0xea, 0x7f, 0xd9, 0x17, 0x2e, 0xdd, 0x7f, 0xd9, 0x8f, 0x34, 0xf0,
+  0xbf, 0x5d, 0x59, 0x8a, 0x6f, 0x0c, 0xab, 0x6c, 0xd0, 0x17, 0x93, 0x73,
+  0xdf, 0x86, 0xa0, 0x42, 0xbb, 0x0c, 0x0b, 0x71, 0x3c, 0x99, 0xa6, 0xe7,
+  0x90, 0x8c, 0xc7, 0x12, 0x51, 0x87, 0xfe, 0x5a, 0x87, 0xb0, 0x59, 0x4a,
+  0x9e, 0x1a, 0xfb, 0x89, 0x18, 0xce, 0x59, 0xa6, 0x2d, 0x9b, 0x5b, 0x24,
+  0xfd, 0x12, 0xd1, 0x01, 0x52, 0x3b, 0xa8, 0x2b, 0xf4, 0xc7, 0xb2, 0x96,
+  0x12, 0x57, 0xe9, 0x57, 0xc7, 0x82, 0xc4, 0xcf, 0xe9, 0x14, 0x71, 0x14,
+  0x10, 0x0e, 0xe9, 0x5b, 0x92, 0x6a, 0xe4, 0xa4, 0xf3, 0xbc, 0xd9, 0x58,
+  0xfc, 0xb2, 0x19, 0xb4, 0x78, 0x99, 0xc4, 0xbc, 0x9b, 0x25, 0x33, 0xf9,
+  0x26, 0xaa, 0xf4, 0xf0, 0x8a, 0x25, 0xc2, 0xab, 0x79, 0x3e, 0xc9, 0x2f,
+  0x2f, 0x1f, 0x30, 0x45, 0x0a, 0x34, 0x02, 0xda, 0x10, 0x12, 0xed, 0x71,
+  0x6a, 0x20, 0xbf, 0x37, 0xe1, 0xf1, 0x69, 0x5d, 0xc9, 0x91, 0x58, 0x64,
+  0x80, 0x8f, 0xd9, 0x92, 0x02, 0x42, 0xe1, 0x79, 0xe0, 0xf2, 0x17, 0x2d,
+  0xeb, 0x89, 0x9a, 0x33, 0x39, 0x53, 0x03, 0x5c, 0x3c, 0x9a, 0x66, 0x19,
+  0xfd, 0xc7, 0xdf, 0x7f, 0xfc, 0xb9, 0x23, 0x59, 0x80, 0x35, 0x1b, 0x8d,
+  0xd1, 0x46, 0x6c, 0x98, 0x60, 0x0f, 0x41, 0x85, 0x60, 0x31, 0xc4, 0x97,
+  0xdf, 0xd1, 0xd2, 0xc0, 0xa3, 0x20, 0x2d, 0xac, 0xcd, 0xe0, 0x98, 0x91,
+  0x5b, 0x87, 0x00, 0xba, 0xcc, 0x2b, 0x8b, 0x05, 0x60, 0xec, 0x25, 0x60,
+  0xcf, 0x79, 0x6f, 0x9a, 0xc3, 0x75, 0x11, 0xad, 0xbd, 0x7d, 0xa0, 0x1c,
+  0x3c, 0x97, 0x73, 0xaf, 0x2a, 0x9f, 0x7d, 0x7f, 0x7e, 0xec, 0x74, 0xba,
+  0x60, 0x27, 0xbe, 0xc6, 0x4e, 0xb4, 0x96, 0xcd, 0xe1, 0xc1, 0xd6, 0x4b,
+  0x3e, 0x78, 0x58, 0x3c, 0x54, 0x8b, 0x13, 0xe6, 0x53, 0x83, 0xb1, 0x46,
+  0x81, 0xde, 0xd9, 0xa0, 0x13, 0xb1, 0x78, 0xd0, 0x04, 0x57, 0xcd, 0x8b,
+  0x36, 0x64, 0x66, 0x90, 0xfa, 0x9c, 0xba, 0x18, 0x88, 0x66, 0xf8, 0xc9,
+  0x91, 0xc7, 0x7a, 0x0f, 0xbc, 0x61, 0x06, 0x1b, 0xe7, 0x71, 0xe0, 0x01,
+  0xbe, 0xc7, 0xe4, 0x7f, 0x87, 0x92, 0xb8, 0x06, 0x88, 0xda, 0xa9, 0x15,
+  0x5d, 0x78, 0x54, 0x55, 0x61, 0x5d, 0x06, 0xae, 0xe6, 0x57, 0xf0, 0xc4,
+  0xd2, 0x3f, 0xfa, 0xff, 0xd6, 0xf7, 0x58, 0x96, 0x1d, 0xe9, 0x4f, 0x2e,
+  0x75, 0xbb, 0xa3, 0xf2, 0xe8, 0xf0, 0x78, 0xe0, 0x47, 0xea, 0x3b, 0xb4,
+  0x79, 0x4c, 0x3a, 0x50, 0xdc, 0xd7, 0x0d, 0xe3, 0x9b, 0xa3, 0x83, 0xd7,
+  0x36, 0xd9, 0x7f, 0x0a, 0x20, 0x94, 0x37, 0x04, 0x4d, 0x12, 0x01, 0xab,
+  0x5f, 0x99, 0x2e, 0x89, 0x4d, 0xb1, 0xbb, 0x03, 0x24, 0x42, 0xd2, 0x36,
+  0xd7, 0x2f, 0x61, 0x92, 0x6d, 0xab, 0x8e, 0x6a, 0x75, 0x5a, 0xab, 0x3c,
+  0x06, 0x86, 0x39, 0x33, 0xf2, 0xf1, 0xe1, 0x15, 0x16, 0x17, 0xd0, 0x6f,
+  0x98, 0xda, 0xfc, 0x52, 0x7e, 0xae, 0xb9, 0x14, 0x8e, 0x00, 0xbf, 0xab,
+  0x8f, 0xd2, 0x5a, 0x2a, 0x5e, 0xa4, 0xf1, 0x5d, 0xa3, 0x19, 0xa8, 0x5c,
+  0x16, 0x5c, 0xd5, 0x45, 0x7c, 0x1a, 0x5c, 0x6d, 0xb2, 0xc3, 0x9f, 0x15,
+  0x5b, 0xde, 0x58, 0x0a, 0x50, 0x02, 0x5d, 0xc1, 0xb1, 0x24, 0xe8, 0xb4,
+  0xec, 0x84, 0xde, 0x33, 0x67, 0x53, 0x80, 0x85, 0x4f, 0x6a, 0x19, 0xe3,
+  0xa9, 0x90, 0x72, 0x4d, 0x72, 0x8a, 0x0d, 0x98, 0x1f, 0xbb, 0x56, 0x0f,
+  0x2f, 0x34, 0x38, 0x18, 0xbd, 0x5b, 0x15, 0x09, 0xb0, 0x79, 0x2e, 0xb1,
+  0xc6, 0xd9, 0x35, 0x04, 0xf6, 0x56, 0x14, 0x42, 0xb3, 0xb9, 0x0e, 0xc4,
+  0x99, 0xce, 0xb8, 0x54, 0x45, 0x66, 0x99, 0xd8, 0x9d, 0x85, 0xc2, 0x6b,
+  0xce, 0x8c, 0xe6, 0x89, 0x73, 0x7d, 0x20, 0x2b, 0x3e, 0x94, 0xc3, 0xdb,
+  0xbb, 0xce, 0x6b, 0x27, 0xa0, 0x8c, 0xc8, 0xba, 0xe6, 0x9b, 0x64, 0x7a,
+  0x93, 0x22, 0xb2, 0xaf, 0x5a, 0x81, 0xc7, 0xc7, 0x59, 0x38, 0x4a, 0x07,
+  0x3f, 0x34, 0xcb, 0xb1, 0xd2, 0xdd, 0x44, 0x64, 0x32, 0x25, 0x03, 0xc2,
+  0xd8, 0x68, 0x34, 0xaf, 0xdc, 0xf0, 0xba, 0x8d, 0x6f, 0xa3, 0x10, 0xa4,
+  0xa0, 0x1f, 0x25, 0x45, 0x2b, 0x1d, 0x27, 0x41, 0x34, 0x1f, 0x14, 0x2f,
+  0x98, 0xc2, 0xb4, 0xb0, 0x30, 0x28, 0x9c, 0xcb, 0x71, 0xb1, 0xac, 0xe2,
+  0xf0, 0x67, 0x78, 0xca, 0xba, 0x3c, 0xc4, 0xef, 0xaf, 0xd2, 0xdb, 0x4e,
+  0xfb, 0xb2, 0x0d, 0x0c, 0xd6, 0x69, 0x1b, 0x85, 0x83, 0x7a, 0x75, 0x86,
+  0x3c, 0x41, 0x0f, 0x8b, 0x18, 0x4d, 0xdb, 0x6d, 0x5f, 0x3b, 0xa7, 0x9a,
+  0xaf, 0xb0, 0x98, 0xaf, 0xfa, 0x7d, 0x22, 0xfc, 0xa8, 0xf7, 0x4d, 0x5e,
+  0x56, 0xfb, 0x3d, 0x07, 0x2f, 0x54, 0x26, 0x2a, 0x59, 0xd4, 0x29, 0x47,
+  0xe1, 0xa7, 0x5b, 0x61, 0x59, 0xb8, 0xdb, 0xe5, 0xfc, 0xd1, 0xc5, 0xa2,
+  0x0f, 0x9b, 0x0b, 0x52, 0x73, 0x9a, 0x1d, 0x42, 0x04, 0x43, 0xf7, 0x2e,
+  0x52, 0x1d, 0x02, 0x40, 0x10, 0x9a, 0x5c, 0xaa, 0xc4, 0x90, 0x7e, 0x18,
+  0x1e, 0xa2, 0xf3, 0xe1, 0x37, 0x68, 0xef, 0x4f, 0x3d, 0xa7, 0x76, 0x37,
+  0xbf, 0xda, 0xef, 0xad, 0x49, 0x9b, 0x08, 0xa1, 0x3b, 0xcb, 0x55, 0x61,
+  0xf9, 0xd4, 0x30, 0xa3, 0xeb, 0x28, 0x51, 0x6d, 0x69, 0x36, 0xdb, 0x76,
+  0x9b, 0x2e, 0x1e, 0xbf, 0xae, 0xc4, 0x3e, 0x4d, 0xfa, 0x59, 0x22, 0x54,
+  0x6f, 0x36, 0xcc, 0x2f, 0x87, 0x28, 0x81, 0xb9, 0x88, 0x8b, 0x1b, 0xf6,
+  0xaf, 0x04, 0xa7, 0x0e, 0xf8, 0xe4, 0x48, 0x53, 0x9b, 0xcd, 0xba, 0xee,
+  0x6a, 0xcd, 0xaf, 0x28, 0x9c, 0xda, 0xaa, 0x83, 0xd1, 0xcd, 0xdc, 0x67,
+  0x55, 0xc7, 0x5e, 0x77, 0xf0, 0xd7, 0x5c, 0x34, 0x52, 0xd1, 0xaf, 0x5b,
+  0xb5, 0xf3, 0x10, 0x99, 0x37, 0x90, 0xeb, 0x1c, 0x93, 0x06, 0x2b, 0x5e,
+  0x88, 0x05, 0x09, 0x56, 0x00, 0x52, 0xfd, 0x59, 0x30, 0x65, 0x28, 0xfa,
+  0x87, 0xab, 0x2a, 0x1d, 0x58, 0x91, 0xd9, 0x21, 0x75, 0xa4, 0x88, 0xba,
+  0x75, 0x10, 0x8a, 0x75, 0xb0, 0x81, 0x63, 0x46, 0x14, 0x57, 0xf1, 0xf3,
+  0xb3, 0xd1, 0x93, 0xcf, 0xb8, 0xc8, 0x93, 0xc3, 0x9e, 0xb2, 0x42, 0xb4,
+  0x9e, 0x69, 0x62, 0x2b, 0x03, 0xfa, 0x6a, 0x95, 0xe2, 0xe0, 0xf2, 0x41,
+  0xbc, 0x1e, 0x33, 0xcd, 0x98, 0x07, 0xe0, 0x79, 0x47, 0xb1, 0x5b, 0x0d,
+  0xec, 0x69, 0xf9, 0x5c, 0x7e, 0xa7, 0xbe, 0x7c, 0xd0, 0xd2, 0x1b, 0xbe,
+  0x90, 0x86, 0xef, 0x88, 0xd1, 0xed, 0x47, 0xff, 0x9e, 0x27, 0x3d, 0xab,
+  0xca, 0xb6, 0xfb, 0x62, 0x8f, 0x14, 0x8e, 0xcf, 0x47, 0x3b, 0xa3, 0xdd,
+  0xed, 0x87, 0x31, 0x44, 0x10, 0xb6, 0xc2, 0x61, 0x5e, 0x1d, 0xee, 0x6c,
+  0xe4, 0xeb, 0x79, 0x2a, 0xda, 0x16, 0x5d, 0xa4, 0xcb, 0x07, 0xc4, 0xaf,
+  0x18, 0x0f, 0x0f, 0xb4, 0x12, 0x2e, 0x01, 0xb7, 0x5c, 0x4d, 0x16, 0xb3,
+  0x67, 0xd1, 0x4b, 0xfa, 0xa7, 0x1d, 0x9d, 0x7d, 0x68, 0x2e, 0x43, 0xb6,
+  0x6e, 0xf2, 0x19, 0xd2, 0x5c, 0x5c, 0x91, 0x35, 0xf9, 0xd7, 0x27, 0x7b,
+  0xd4, 0xf0, 0xc7, 0xd8, 0x4a, 0x68, 0x45, 0xb3, 0xf4, 0x2a, 0xad, 0xba,
+  0x53, 0xa3, 0x4c, 0x28, 0x0f, 0x70, 0xdd, 0x79, 0xef, 0x77, 0xf7, 0x3e,
+  0x8f, 0x26, 0x69, 0x15, 0xbd, 0x7d, 0xfd, 0x8c, 0xd4, 0x8e, 0x64, 0x7a,
+  0x53, 0xae, 0x16, 0x46, 0xa1, 0x5a, 0x6e, 0x89, 0xc7, 0xd9, 0x6f, 0x5e,
+  0x14, 0x3e, 0x14, 0x7a, 0x50, 0x33, 0x14, 0x5e, 0x9a, 0x41, 0x33, 0xa8,
+  0x44, 0xe6, 0x4e, 0x12, 0xb7, 0xa4, 0x06, 0xd5, 0x0e, 0x55, 0x9d, 0xd6,
+  0x80, 0x3a, 0x2f, 0xad, 0x62, 0x7c, 0x4d, 0x3d, 0xfc, 0xac, 0x6e, 0xf6,
+  0x90, 0x28, 0x7a, 0xc3, 0xa4, 0x1d, 0x92, 0xf0, 0x77, 0xd5, 0x8a, 0x92,
+  0x35, 0x65, 0xee, 0x18, 0xcf, 0x36, 0x22, 0x0b, 0x4f, 0xf0, 0x46, 0x00,
+  0xfc, 0x21, 0x62, 0x09, 0x9f, 0xcf, 0x74, 0xba, 0x9a, 0x73, 0x99, 0xd6,
+  0xb6, 0x00, 0x63, 0xc5, 0x9f, 0x0c, 0x66, 0xa7, 0x58, 0x49, 0x41, 0xcf,
+  0x83, 0x25, 0x87, 0xc5, 0x45, 0xbb, 0xa3, 0x8f, 0x83, 0xb0, 0x48, 0xbd,
+  0x56, 0x8e, 0x43, 0x2d, 0xfa, 0xd6, 0x65, 0x01, 0xd3, 0x76, 0x63, 0x34,
+  0xdc, 0xb6, 0x04, 0x24, 0xce, 0xd9, 0xb5, 0x53, 0xc8, 0x7d, 0xb6, 0x47,
+  0x97, 0xc3, 0x55, 0x8c, 0xd2, 0xa3, 0x01, 0xf5, 0xa4, 0x03, 0x00, 0xa4,
+  0x41, 0x06, 0x59, 0x37, 0x71, 0x95, 0x50, 0x64, 0xe6, 0xfc, 0xa1, 0x9d,
+  0x44, 0x95, 0x59, 0x24, 0x96, 0x56, 0x44, 0xd7, 0xe0, 0xeb, 0xd6, 0x3d,
+  0x84, 0x66, 0x1c, 0x57, 0x81, 0x8b, 0x48, 0x96, 0x60, 0xc8, 0x42, 0xc4,
+  0x80, 0xa5, 0xd0, 0xc4, 0x0b, 0x0d, 0x41, 0x08, 0x31, 0x1a, 0x6d, 0xa7,
+  0xd7, 0x20, 0xe9, 0xcb, 0xc2, 0x80, 0x47, 0xa3, 0x60, 0x56, 0xc7, 0x26,
+  0x8e, 0x75, 0x4d, 0x89, 0x4b, 0x62, 0x6d, 0xbf, 0x39, 0x3e, 0x39, 0xda,
+  0x8a, 0xde, 0x24, 0x16, 0x31, 0x1f, 0x4e, 0x8b, 0x19, 0xe0, 0xbf, 0xc8,
+  0x27, 0xb6, 0x45, 0xaa, 0x46, 0x76, 0x39, 0xf6, 0xd5, 0xe0, 0x05, 0x21,
+  0x58, 0x76, 0x0d, 0xf2, 0xae, 0xe4, 0xc6, 0xe5, 0x88, 0x44, 0xb4, 0xb2,
+  0x68, 0x30, 0x5c, 0x05, 0x95, 0x40, 0x3a, 0x6a, 0x72, 0x06, 0xb1, 0xd3,
+  0xa3, 0xa0, 0x1c, 0x46, 0x1e, 0xba, 0xfa, 0x79, 0xec, 0x1a, 0x71, 0x27,
+  0xbe, 0x3d, 0x29, 0xee, 0xdb, 0x75, 0x16, 0xe0, 0x99, 0x2b, 0xd3, 0xbf,
+  0x49, 0x78, 0x32, 0xa2, 0x42, 0x16, 0xf9, 0xcc, 0x61, 0xdc, 0x4b, 0x25,
+  0x41, 0x9e, 0x6f, 0xc8, 0x50, 0x02, 0x18, 0xbf, 0xae, 0xa4, 0xef, 0x33,
+  0x41, 0xf4, 0xe7, 0x01, 0x85, 0xb1, 0x06, 0x22, 0x67, 0x78, 0x2d, 0xcc,
+  0xb5, 0x32, 0x72, 0xe1, 0x6a, 0x5c, 0x19, 0xb3, 0x83, 0x2e, 0x1c, 0x3a,
+  0x9f, 0x90, 0x41, 0xe8, 0xc3, 0xa0, 0xd9, 0xe2, 0xb0, 0x4b, 0xe0, 0xe0,
+  0x41, 0x66, 0x51, 0x45, 0x52, 0xf9, 0x04, 0x49, 0x7d, 0xad, 0x34, 0x87,
+  0x8e, 0xb8, 0x2f, 0xe5, 0xe6, 0xc1, 0xcc, 0x48, 0x96, 0xdf, 0xd9, 0xdf,
+  0x0d, 0x0b, 0x8d, 0x66, 0x5a, 0x46, 0x9b, 0xe3, 0xb1, 0xb6, 0x7f, 0xbb,
+  0xc8, 0x9b, 0xbf, 0x30, 0x69, 0xfe, 0x65, 0x95, 0xdd, 0x10, 0x6d, 0x95,
+  0x4c, 0xc1, 0xc3, 0xee, 0x62, 0xe7, 0x7a, 0xfa, 0xbe, 0x77, 0xae, 0x97,
+  0x66, 0x39, 0x9d, 0x69, 0x58, 0x14, 0x26, 0x0e, 0x10, 0xc4, 0x07, 0x0f,
+  0xe4, 0xdf, 0xd5, 0xc4, 0x1a, 0x8e, 0xcc, 0x27, 0xda, 0x99, 0x72, 0x50,
+  0x07, 0x2b, 0xd2, 0x3d, 0x1d, 0x91, 0x35, 0xdd, 0x5b, 0x5f, 0x22, 0x0c,
+  0x35, 0xe1, 0x21, 0xde, 0xc2, 0x44, 0xe4, 0xb4, 0x01, 0x75, 0xa9, 0xc4,
+  0x82, 0x47, 0xcd, 0x02, 0x48, 0x64, 0x8d, 0x0a, 0xf2, 0x34, 0xdf, 0xf3,
+  0xed, 0xd4, 0x8a, 0x0b, 0xc9, 0x78, 0x8d, 0xac, 0xf2, 0x59, 0xe9, 0xe0,
+  0xa1, 0xdd, 0x00, 0xa3, 0xc6, 0xe0, 0x44, 0x43, 0x62, 0xa9, 0xa5, 0xdf,
+  0x3a, 0x97, 0xd3, 0x79, 0x2e, 0xc5, 0x3e, 0xef, 0x42, 0xf3, 0xdd, 0xbf,
+  0x8b, 0x20, 0xc2, 0x77, 0x91, 0x9e, 0xf4, 0x61, 0x47, 0x84, 0x57, 0x58,
+  0x16, 0xc3, 0x92, 0x16, 0x91, 0xd9, 0x04, 0x09, 0xe7, 0x34, 0x68, 0x43,
+  0x02, 0x77, 0x5d, 0x5e, 0xa3, 0x5e, 0x58, 0x9d, 0x50, 0xb8, 0xc3, 0xc0,
+  0x38, 0xe1, 0xb8, 0xf5, 0x6b, 0x3a, 0xb6, 0x79, 0x99, 0xca, 0xbe, 0xf8,
+  0xf0, 0xbb, 0xc0, 0xb4, 0xdd, 0x8e, 0xb0, 0xb1, 0x5c, 0x7e, 0x07, 0x8f,
+  0xe4, 0x62, 0x8e, 0x4c, 0x29, 0xef, 0xca, 0x95, 0x85, 0xd9, 0x2d, 0xcb,
+  0x43, 0x88, 0x54, 0xba, 0xea, 0xd9, 0xcc, 0xf1, 0x7b, 0xa2, 0x42, 0x52,
+  0x38, 0x33, 0xae, 0x03, 0xb6, 0x79, 0x9f, 0x54, 0x5b, 0x1e, 0x02, 0xdc,
+  0x62, 0xda, 0xd6, 0x95, 0xb8, 0x6a, 0x65, 0x2e, 0xb3, 0xfa, 0xa9, 0x2f,
+  0x09, 0xce, 0x28, 0x5f, 0xd7, 0x05, 0x92, 0xfb, 0xd9, 0x49, 0xa2, 0x18,
+  0xee, 0xeb, 0x9a, 0x0b, 0x2f, 0xa5, 0x1b, 0xb9, 0x94, 0xca, 0xae, 0x50,
+  0x2f, 0x4d, 0x36, 0x0b, 0xfa, 0x0d, 0xe2, 0x5f, 0x55, 0xe3, 0x33, 0x47,
+  0x9b, 0x15, 0x1f, 0x89, 0xa2, 0x9e, 0xb5, 0xd6, 0x6b, 0x0a, 0x9e, 0xb5,
+  0x44, 0x2f, 0x09, 0x56, 0x0c, 0x30, 0x68, 0x0f, 0xe8, 0x58, 0xb4, 0x1e,
+  0x61, 0x93, 0xb8, 0xac, 0x64, 0x6b, 0x3a, 0x62, 0x36, 0x5a, 0x10, 0x71,
+  0x99, 0xf1, 0xdc, 0xc2, 0x8f, 0xc5, 0x07, 0x52, 0x4f, 0x45, 0xd5, 0x1c,
+  0x68, 0xd9, 0xf1, 0x98, 0x73, 0x26, 0x9a, 0xc7, 0xec, 0xbe, 0x8e, 0xa8,
+  0x87, 0xfc, 0x13, 0x8d, 0x7b, 0x9f, 0xcf, 0x6b, 0xa3, 0x0a, 0xaa, 0x29,
+  0xae, 0x9d, 0x2c, 0xaa, 0xca, 0x9b, 0x23, 0xba, 0xb6, 0xc8, 0x6d, 0x47,
+  0x74, 0x20, 0xe0, 0x47, 0xbe, 0x64, 0x33, 0x5d, 0x15, 0x00, 0x57, 0x10,
+  0xec, 0x43, 0x29, 0x3c, 0xae, 0xf6, 0xfd, 0xc8, 0x45, 0x7e, 0x4a, 0x32,
+  0x10, 0x02, 0x3e, 0xd7, 0x14, 0x76, 0x46, 0x66, 0xf4, 0x75, 0xfc, 0xf1,
+  0xe3, 0xa8, 0x4c, 0xa4, 0x40, 0x71, 0x59, 0xce, 0x91, 0x85, 0x5d, 0xaf,
+  0xe8, 0x3c, 0xfc, 0x56, 0xcb, 0xb9, 0x5f, 0xa6, 0x57, 0x1c, 0x9a, 0x88,
+  0x9f, 0x5d, 0x98, 0x13, 0x0e, 0x6c, 0x42, 0xcb, 0x62, 0xfb, 0x27, 0x3d,
+  0xbf, 0x04, 0xe4, 0x9b, 0x46, 0x68, 0x09, 0xdb, 0xd4, 0x54, 0xd9, 0x76,
+  0x6a, 0x8e, 0x7b, 0x19, 0x90, 0xb2, 0x9a, 0x24, 0x30, 0x4f, 0x7c, 0x26,
+  0x8b, 0xdd, 0xfa, 0x58, 0x0d, 0xdf, 0xa8, 0x09, 0xfa, 0x4d, 0x15, 0xb0,
+  0x48, 0x2b, 0xce, 0x62, 0xd2, 0x97, 0x45, 0xdd, 0xad, 0x19, 0x33, 0x84,
+  0x61, 0x8a, 0x0e, 0xc6, 0x79, 0x03, 0xf6, 0x46, 0x27, 0xd2, 0x17, 0x31,
+  0x00, 0xae, 0xc7, 0x10, 0x8e, 0xa1, 0xb5, 0x6f, 0xa7, 0xcb, 0x80, 0x9e,
+  0xaf, 0x93, 0xb4, 0xf0, 0xfe, 0x83, 0xd2, 0xa9, 0xd7, 0x9e, 0x2b, 0x85,
+  0xd5, 0x03, 0xd7, 0x2d, 0x88, 0x86, 0xf9, 0x48, 0x11, 0xc1, 0x00, 0xbb,
+  0x91, 0xa9, 0x94, 0x26, 0x46, 0x72, 0x25, 0xc9, 0xaf, 0x2c, 0x93, 0x88,
+  0x7a, 0xae, 0x3e, 0x38, 0xd4, 0x8e, 0x28, 0x3b, 0xf3, 0x56, 0x4e, 0x38,
+  0xa1, 0x5d, 0x0f, 0xb1, 0x40, 0x9a, 0x4c, 0x21, 0x53, 0xb4, 0x71, 0x1d,
+  0x3d, 0x57, 0x92, 0x9d, 0xed, 0x62, 0x22, 0xde, 0xb8, 0x22, 0xe6, 0x20,
+  0x41, 0xcd, 0x93, 0xd0, 0x67, 0x12, 0x2d, 0xcb, 0x6b, 0x0d, 0x45, 0xa6,
+  0x75, 0x2e, 0xf3, 0x81, 0xca, 0x6e, 0x73, 0x06, 0x1d, 0x68, 0x4a, 0x24,
+  0x32, 0x64, 0x0f, 0x9b, 0x54, 0xd6, 0xd1, 0xfb, 0x4a, 0x6f, 0x73, 0x2d,
+  0x47, 0x1a, 0x1a, 0x93, 0x84, 0x91, 0x31, 0xcd, 0xc9, 0x36, 0x0d, 0xd3,
+  0x62, 0x1c, 0x63, 0xb7, 0xd0, 0x5d, 0x1e, 0xe9, 0xd0, 0x24, 0xc5, 0x94,
+  0x4b, 0xa3, 0x49, 0x57, 0xc4, 0xad, 0x3f, 0x71, 0x74, 0x2e, 0x19, 0x07,
+  0xa2, 0xb8, 0xe2, 0xbc, 0xf1, 0x3c, 0xab, 0xd2, 0xef, 0x79, 0xb7, 0x59,
+  0x36, 0xa9, 0x3b, 0x95, 0x38, 0xfa, 0x43, 0xfd, 0x0f, 0xe1, 0x7e, 0xd6,
+  0x9f, 0x53, 0xda, 0x69, 0xd7, 0xbe, 0x94, 0x3b, 0xd7, 0x41, 0xa3, 0x49,
+  0x38, 0x3a, 0x03, 0x3b, 0xea, 0x07, 0xba, 0x13, 0x91, 0xc5, 0xa9, 0xd7,
+  0x6a, 0x23, 0x35, 0x9b, 0x13, 0xe0, 0x2a, 0x7f, 0x37, 0x81, 0xe7, 0x1a,
+  0xc6, 0xc0, 0x7e, 0xf4, 0xd3, 0x4f, 0x83, 0x88, 0x11, 0xb3, 0x7e, 0x22,
+  0xed, 0xe0, 0x27, 0x36, 0x05, 0xfd, 0x54, 0x68, 0x74, 0xc2, 0x4f, 0xb7,
+  0xd4, 0xe5, 0xc1, 0xba, 0x80, 0xf5, 0x28, 0x28, 0xdc, 0x23, 0xa5, 0x8b,
+  0xc4, 0x45, 0xae, 0x85, 0xcb, 0x58, 0x79, 0x93, 0xbc, 0x6a, 0x07, 0xb0,
+  0xd6, 0x85, 0x34, 0x4e, 0x1b, 0xb3, 0x5a, 0x64, 0x92, 0x56, 0xa1, 0x9c,
+  0x06, 0x7c, 0x00, 0xcc, 0xa2, 0xff, 0xbb, 0xbe, 0xdf, 0x9b, 0xa0, 0x10,
+  0x9a, 0xea, 0xc2, 0xfc, 0x60, 0xcb, 0x40, 0x24, 0x8c, 0xa0, 0x92, 0xba,
+  0xc5, 0x62, 0xe1, 0xe1, 0xc3, 0x0d, 0x1d, 0xe0, 0x94, 0xad, 0x31, 0x77,
+  0x28, 0x59, 0x88, 0x58, 0x52, 0xd9, 0x60, 0x36, 0x24, 0x2d, 0xaf, 0xef,
+  0x21, 0x84, 0xb5, 0x04, 0xe0, 0xcc, 0x59, 0x93, 0x03, 0x3e, 0xd8, 0xe6,
+  0xec, 0x1e, 0x72, 0xcf, 0x4b, 0x12, 0xec, 0xb0, 0x0b, 0x79, 0x2e, 0x8d,
+  0xa5, 0x3f, 0xec, 0x07, 0x06, 0x53, 0xc3, 0x14, 0xe9, 0xac, 0x55, 0xe9,
+  0x41, 0xb0, 0xa4, 0x56, 0x65, 0x67, 0x5a, 0x83, 0x79, 0xf8, 0x24, 0xf1,
+  0x4d, 0xd0, 0xe3, 0x3d, 0x00, 0x60, 0x0c, 0xc7, 0x42, 0x7b, 0xf8, 0x83,
+  0x0e, 0x33, 0xae, 0x01, 0x93, 0xdb, 0xbb, 0x69, 0x15, 0x5c, 0xb5, 0x43,
+  0x76, 0xe6, 0x78, 0x94, 0x77, 0x10, 0x07, 0xdb, 0xc5, 0x70, 0xa7, 0x96,
+  0x9c, 0x71, 0x7c, 0xdf, 0xc1, 0xa5, 0x7d, 0xee, 0x20, 0x0f, 0x03, 0x75,
+  0x80, 0x18, 0x89, 0xf8, 0x2e, 0x13, 0x2e, 0x1b, 0x8d, 0xf3, 0x81, 0x54,
+  0x7c, 0x31, 0xed, 0x23, 0x48, 0x19, 0xea, 0x70, 0xf9, 0xb5, 0x14, 0x11,
+  0x1e, 0xd3, 0xab, 0xa8, 0xb7, 0xf6, 0x1a, 0xec, 0x75, 0xa6, 0xa8, 0x9b,
+  0xfc, 0xcf, 0x09, 0x9d, 0x37, 0x8a, 0x0b, 0xa9, 0xf2, 0xf1, 0xa6, 0x5d,
+  0xe7, 0x7f, 0xb5, 0x2b, 0x7c, 0x4b, 0xed, 0x2f, 0x62, 0xf7, 0x5a, 0x83,
+  0x27, 0x68, 0x4b, 0xab, 0xac, 0x13, 0xab, 0x03, 0x8d, 0x35, 0x85, 0x17,
+  0xe0, 0x32, 0x5f, 0x65, 0xb3, 0x7a, 0x18, 0xca, 0x7a, 0xc6, 0xcb, 0xf9,
+  0x99, 0xdc, 0xa3, 0x9a, 0xda, 0x2c, 0x9d, 0xc4, 0x95, 0x3d, 0x83, 0x59,
+  0x4b, 0x53, 0x3f, 0x58, 0x6a, 0x63, 0x4c, 0xb3, 0xd6, 0xc2, 0xec, 0x6e,
+  0xa9, 0xd4, 0x86, 0x6a, 0xdc, 0x1c, 0x2e, 0x93, 0xaa, 0x19, 0xb9, 0x77,
+  0x9d, 0x0b, 0xd0, 0x4a, 0x6f, 0x3f, 0x3a, 0xae, 0xcc, 0x3b, 0xa4, 0x73,
+  0x74, 0xf1, 0x0d, 0xcd, 0x30, 0x29, 0x46, 0xb2, 0xf9, 0xe6, 0xf4, 0xed,
+  0x91, 0x0b, 0x66, 0x15, 0x2d, 0x9f, 0x3f, 0xe9, 0x04, 0xdb, 0x1a, 0x21,
+  0x22, 0xc1, 0xd2, 0x81, 0x07, 0xed, 0x22, 0x3f, 0x58, 0x1d, 0x52, 0xe6,
+  0x97, 0x77, 0xab, 0x74, 0xb6, 0x89, 0x94, 0xed, 0xf7, 0x59, 0xfa, 0x71,
+  0x28, 0x66, 0x0c, 0x00, 0xd1, 0x95, 0x96, 0xb3, 0x6c, 0xe9, 0xce, 0xa2,
+  0xea, 0xe7, 0x8b, 0x0e, 0xb4, 0x0c, 0x2b, 0xf9, 0x14, 0xa2, 0xc5, 0x21,
+  0x01, 0x23, 0xcd, 0xc4, 0x1f, 0x22, 0x4d, 0x6e, 0x31, 0x03, 0x20, 0x16,
+  0x0a, 0xa4, 0x1b, 0xec, 0x7b, 0x47, 0x60, 0x6e, 0xb0, 0xdf, 0xdc, 0xdc,
+  0xc1, 0xd9, 0xd9, 0xeb, 0x83, 0x8b, 0x03, 0x37, 0x37, 0x5c, 0xc5, 0x60,
+  0x2a, 0xd0, 0x4d, 0x59, 0x70, 0xd3, 0xe4, 0xfe, 0xfe, 0xef, 0x39, 0x6b,
+  0xa3, 0x79, 0xd7, 0x9f, 0x9d, 0x9f, 0xb2, 0x85, 0xe1, 0xf7, 0x3f, 0x1d,
+  0xf8, 0xc2, 0xcd, 0x28, 0xcf, 0xd8, 0x2e, 0x9f, 0xbb, 0xb7, 0x15, 0xf1,
+  0xf8, 0x0c, 0x8a, 0x67, 0xe0, 0xdc, 0xfc, 0x92, 0x1e, 0x1d, 0x7d, 0xe0,
+  0x3d, 0x2d, 0xa6, 0x4e, 0x78, 0x12, 0xe3, 0x9d, 0x6c, 0xe7, 0xa0, 0x1d,
+  0xee, 0x17, 0x4c, 0x24, 0xf7, 0x4c, 0xcc, 0x80, 0x76, 0x6c, 0xad, 0xe6,
+  0x24, 0xf1, 0x93, 0xd0, 0x5a, 0x81, 0x75, 0xb0, 0xb1, 0x8d, 0xe9, 0x6b,
+  0xc6, 0x0b, 0xd5, 0x84, 0x93, 0x73, 0xfb, 0x63, 0x1b, 0x24, 0xe9, 0xe8,
+  0x60, 0xb8, 0xc2, 0x02, 0x24, 0x9c, 0x33, 0x97, 0xb2, 0x5c, 0x23, 0x1b,
+  0xad, 0xaa, 0x53, 0xad, 0xb3, 0x23, 0xee, 0x08, 0xa2, 0x73, 0x9b, 0xc3,
+  0xa8, 0x6d, 0x37, 0x1e, 0x0e, 0x87, 0x66, 0x55, 0x96, 0x69, 0xd3, 0x07,
+  0xad, 0x87, 0x2a, 0x2b, 0x3e, 0x64, 0x7c, 0xbe, 0x9b, 0x4d, 0x84, 0xfc,
+  0xa1, 0x29, 0xcb, 0x2b, 0x82, 0x80, 0x3e, 0x85, 0x2a, 0xa6, 0xc8, 0x3f,
+  0x6c, 0x9b, 0x1b, 0xcd, 0x1a, 0x4f, 0x8f, 0x96, 0x2b, 0x36, 0xd8, 0xf0,
+  0x5f, 0xdb, 0xbb, 0xa3, 0x9d, 0x5e, 0x7b, 0xf4, 0x88, 0x05, 0x84, 0x51,
+  0xcc, 0x20, 0x76, 0x05, 0x35, 0x39, 0x7f, 0x7c, 0x80, 0xc2, 0xc0, 0x48,
+  0x22, 0x5d, 0x52, 0x07, 0x9d, 0x63, 0x19, 0x9e, 0xb6, 0x8c, 0x97, 0xe2,
+  0x15, 0xf0, 0x1c, 0x31, 0xcb, 0x91, 0x37, 0x1b, 0xb3, 0x36, 0x04, 0x43,
+  0x4c, 0xaf, 0x7b, 0x81, 0xb3, 0x99, 0xb8, 0x35, 0x1b, 0xeb, 0xfc, 0xab,
+  0xf2, 0xc9, 0xdc, 0xfe, 0x07, 0x28, 0x61, 0x6b, 0xb9, 0x5d, 0xcd, 0xf2,
+  0x7e, 0x93, 0x90, 0x20, 0x38, 0x47, 0xfa, 0x14, 0xdb, 0xd1, 0x5e, 0x4a,
+  0x9d, 0xdd, 0x36, 0x62, 0x7e, 0xcd, 0x17, 0x50, 0x72, 0x40, 0x9c, 0xb0,
+  0x06, 0xbc, 0x15, 0x85, 0x01, 0xe2, 0x1e, 0x00, 0xb4, 0x48, 0x38, 0xa4,
+  0x33, 0x4a, 0x67, 0xad, 0x2c, 0xed, 0x06, 0xf2, 0x86, 0x1b, 0x04, 0x2b,
+  0xdf, 0x93, 0xc4, 0x89, 0xfc, 0xd2, 0xba, 0x09, 0x87, 0xc0, 0x23, 0x21,
+  0xd5, 0x7c, 0xd5, 0x92, 0x17, 0x9a, 0xef, 0x8f, 0x98, 0xcb, 0xd6, 0x30,
+  0x3a, 0xc4, 0xa8, 0xc3, 0x4f, 0xe4, 0xce, 0xe4, 0x87, 0x72, 0x96, 0x38,
+  0x53, 0x2d, 0x23, 0xe6, 0xa5, 0x80, 0xf9, 0xc9, 0x14, 0x2f, 0x0e, 0xcf,
+  0x3e, 0x7c, 0x7b, 0x74, 0x74, 0x76, 0xfc, 0xfa, 0xe4, 0x48, 0xef, 0x19,
+  0xf7, 0xd1, 0xbb, 0x8b, 0xef, 0x4e, 0x0c, 0xdf, 0xcf, 0xd6, 0xa7, 0x65,
+  0x06, 0xe3, 0x90, 0x23, 0x34, 0x77, 0x92, 0x66, 0xab, 0x8f, 0x03, 0xa0,
+  0x8c, 0x10, 0x31, 0x1f, 0x1c, 0xff, 0x30, 0x88, 0xbe, 0x39, 0x1b, 0xbe,
+  0xff, 0xa1, 0x05, 0x04, 0x51, 0x0b, 0xf2, 0x6d, 0x0a, 0x96, 0x2e, 0xe4,
+  0x17, 0x55, 0x58, 0xfc, 0xdc, 0x4d, 0xff, 0xed, 0x28, 0x4c, 0xfa, 0xdb,
+  0xa2, 0x8a, 0x50, 0x73, 0xab, 0x2c, 0x80, 0x7c, 0x0e, 0xa4, 0x78, 0xbd,
+  0x7a, 0x41, 0x0e, 0xcf, 0x77, 0xb4, 0x8a, 0x73, 0x83, 0x00, 0xef, 0xa3,
+  0x97, 0x6b, 0x10, 0x79, 0xb6, 0xc7, 0xe3, 0x6f, 0xb6, 0xa2, 0xb3, 0x00,
+  0xba, 0xd9, 0xd9, 0x5a, 0x46, 0x16, 0xe0, 0xc7, 0x66, 0x1a, 0x6a, 0x3c,
+  0xb0, 0xda, 0x14, 0x8c, 0xb5, 0xd9, 0x76, 0xd2, 0x6a, 0x0b, 0x76, 0x87,
+  0x9b, 0xf2, 0x27, 0x92, 0x25, 0xb2, 0x84, 0xa8, 0x37, 0xb0, 0xff, 0x3a,
+  0x0a, 0xa1, 0x08, 0x8c, 0x4d, 0xc9, 0x08, 0x77, 0x7c, 0x14, 0x26, 0x45,
+  0x61, 0x87, 0xe9, 0x88, 0xce, 0xd2, 0x99, 0xe4, 0x96, 0xb0, 0xc6, 0x20,
+  0x92, 0x42, 0x14, 0xf5, 0xff, 0x6b, 0x7b, 0x54, 0x96, 0xd7, 0xdb, 0xe9,
+  0xec, 0x43, 0x51, 0xc6, 0xfd, 0xe6, 0xe5, 0x1c, 0x7c, 0x3d, 0xe3, 0xaf,
+  0xa3, 0xfe, 0xc8, 0x3d, 0xaa, 0xbf, 0xf3, 0xe7, 0xbf, 0x25, 0xd4, 0x18,
+  0xad, 0xcd, 0xa3, 0xc8, 0x90, 0xad, 0x9d, 0xe0, 0x47, 0x47, 0x4e, 0x0c,
+  0x57, 0xd7, 0x01, 0x37, 0x82, 0x6d, 0x90, 0xcd, 0xed, 0xaa, 0xd3, 0x2c,
+  0xe0, 0x3d, 0x51, 0x03, 0x11, 0x97, 0xce, 0xed, 0xeb, 0xa3, 0xf3, 0x81,
+  0x00, 0x46, 0x86, 0x60, 0x91, 0x0e, 0x1d, 0x75, 0xa4, 0x20, 0x91, 0xeb,
+  0xd4, 0xd3, 0xc1, 0x3f, 0x11, 0x24, 0xf2, 0xa6, 0x98, 0x44, 0x2f, 0xe7,
+  0xf4, 0xe2, 0xbc, 0x3b, 0xd1, 0x54, 0x2a, 0xf8, 0xf9, 0x32, 0x84, 0x0d,
+  0x70, 0x13, 0x05, 0x1f, 0x14, 0x09, 0x15, 0xcd, 0x88, 0x5e, 0xda, 0xa5,
+  0x98, 0x56, 0xb0, 0x89, 0xf1, 0x1b, 0xad, 0xac, 0xbc, 0x3e, 0x22, 0x61,
+  0x99, 0x4a, 0x18, 0xc1, 0x85, 0x7f, 0x82, 0xef, 0x6b, 0xf9, 0xc6, 0xfe,
+  0xa0, 0xad, 0x7c, 0xf7, 0x75, 0xd5, 0xfb, 0xb4, 0x71, 0xd2, 0x1a, 0x1f,
+  0x21, 0xc1, 0x77, 0x94, 0x71, 0x28, 0x4c, 0x74, 0xa9, 0xda, 0x46, 0x18,
+  0x08, 0x53, 0xb6, 0x40, 0xff, 0x5d, 0x73, 0xcd, 0xe0, 0xab, 0x6e, 0x63,
+  0xdc, 0xba, 0xc2, 0x14, 0xb1, 0x03, 0xf5, 0x0b, 0x0b, 0x52, 0x58, 0xb5,
+  0xc9, 0xa7, 0x46, 0x02, 0xa3, 0x35, 0x68, 0x4c, 0x3c, 0x50, 0x24, 0xf2,
+  0xb1, 0x30, 0xc2, 0xe1, 0xe7, 0x1c, 0xcd, 0x39, 0xfc, 0x8e, 0xd5, 0x40,
+  0xf3, 0xb2, 0x09, 0xd2, 0x2a, 0x40, 0xee, 0x41, 0x9d, 0x5d, 0xc7, 0xda,
+  0x95, 0xb6, 0x48, 0xab, 0xdf, 0x90, 0x74, 0xe6, 0xa8, 0x04, 0x91, 0x96,
+  0xd5, 0x90, 0xdd, 0x56, 0xdd, 0x61, 0xd0, 0x50, 0x9a, 0x34, 0x89, 0xc1,
+  0xfc, 0x66, 0x01, 0x14, 0xb3, 0xb0, 0x30, 0xa9, 0x77, 0x85, 0x50, 0xaf,
+  0x52, 0x8b, 0x46, 0x0f, 0xbb, 0x4a, 0x6d, 0xdc, 0xa6, 0xc9, 0x9d, 0xf7,
+  0xec, 0xd6, 0x50, 0x78, 0xd4, 0x97, 0x8b, 0x65, 0x01, 0x33, 0x93, 0xa2,
+  0x8b, 0x8c, 0x0c, 0xdd, 0x05, 0x90, 0xb4, 0x88, 0xa7, 0xd7, 0x24, 0x3e,
+  0x0e, 0x11, 0x30, 0x1a, 0xd5, 0xf1, 0x49, 0xd8, 0x98, 0xd0, 0x18, 0x28,
+  0xe7, 0xf5, 0x69, 0x18, 0x5a, 0x67, 0xfd, 0x47, 0xff, 0x20, 0x0f, 0xd1,
+  0x05, 0xbd, 0x09, 0x31, 0xba, 0x6c, 0x5d, 0x28, 0xa9, 0x79, 0xe1, 0x30,
+  0x4b, 0x25, 0xc5, 0x9a, 0x17, 0xb5, 0xc3, 0x71, 0x16, 0x29, 0x26, 0x69,
+  0xcd, 0xa2, 0xa5, 0xe0, 0x3b, 0x71, 0xf4, 0xee, 0x64, 0xec, 0x13, 0x56,
+  0x2a, 0x2d, 0xf0, 0x21, 0x20, 0xd8, 0xeb, 0x1c, 0x1f, 0x61, 0x94, 0xd6,
+  0xc9, 0x71, 0x47, 0x29, 0x5d, 0x36, 0x09, 0xec, 0x93, 0x5a, 0xbd, 0x48,
+  0x82, 0xe4, 0xfc, 0x52, 0x0b, 0xc7, 0x20, 0x26, 0x50, 0x3c, 0xd9, 0x66,
+  0x01, 0x64, 0xcd, 0xc9, 0xa5, 0x2b, 0xb5, 0x97, 0x98, 0x87, 0xf8, 0x27,
+  0xb1, 0xa3, 0x6a, 0x1c, 0x8c, 0xc5, 0xd7, 0x95, 0xab, 0xc9, 0x30, 0xc8,
+  0x20, 0x16, 0x86, 0x00, 0x7c, 0x9b, 0x74, 0xca, 0xca, 0xfd, 0x4d, 0x3b,
+  0x28, 0x65, 0xf3, 0xec, 0xf4, 0xec, 0x89, 0x91, 0x93, 0xa5, 0x7b, 0xd7,
+  0xdc, 0x9c, 0xd3, 0x88, 0xa5, 0x34, 0x85, 0x94, 0xe2, 0xa7, 0x6b, 0xc4,
+  0xd5, 0x55, 0x7d, 0x8f, 0xd7, 0x91, 0x17, 0xa2, 0xb1, 0x8e, 0xea, 0xa8,
+  0xa8, 0x87, 0xb5, 0x71, 0xee, 0x69, 0x90, 0x38, 0xdb, 0x01, 0xda, 0x61,
+  0x31, 0x06, 0x8e, 0x14, 0x35, 0x86, 0x1e, 0x74, 0x28, 0x64, 0xe8, 0x4f,
+  0x6e, 0x30, 0x6a, 0x3a, 0x6d, 0xad, 0xe4, 0x11, 0x92, 0xda, 0x49, 0xda,
+  0x94, 0xfc, 0xef, 0xb2, 0x9e, 0x00, 0x2e, 0xe9, 0x0c, 0x28, 0x5f, 0xc3,
+  0xae, 0x64, 0xa0, 0x0b, 0xae, 0xd9, 0x49, 0xb1, 0x57, 0x20, 0xd8, 0xd4,
+  0x15, 0x6f, 0xf9, 0x41, 0x9c, 0x66, 0x12, 0xd8, 0xe8, 0x11, 0x06, 0x06,
+  0xf5, 0xb0, 0xe8, 0x8e, 0xba, 0x0c, 0x41, 0x55, 0x3d, 0xc9, 0x99, 0x22,
+  0x9d, 0x9b, 0x04, 0x49, 0xb7, 0x76, 0xba, 0x56, 0xea, 0x89, 0xd2, 0x69,
+  0xb3, 0x1b, 0x8a, 0x7e, 0xe9, 0x2a, 0x4f, 0xcf, 0x7b, 0xd5, 0x27, 0xd6,
+  0x93, 0xa5, 0x34, 0x16, 0x45, 0xe4, 0xbb, 0xe4, 0xb8, 0x3f, 0xf5, 0x52,
+  0x09, 0xe4, 0x63, 0x5a, 0xf5, 0x01, 0xf3, 0x55, 0x62, 0x49, 0x78, 0x4d,
+  0xba, 0x8e, 0xb2, 0x16, 0x33, 0xb7, 0xb0, 0xd7, 0x7a, 0xba, 0xd3, 0x6e,
+  0x2d, 0xa7, 0xbf, 0x56, 0xbc, 0xa6, 0x33, 0x22, 0x01, 0xe5, 0x4d, 0xb6,
+  0x22, 0x67, 0x4c, 0xd6, 0x65, 0x97, 0xc8, 0x8f, 0xd2, 0x27, 0x0b, 0x68,
+  0x6f, 0xc8, 0x06, 0xb8, 0xe2, 0xf0, 0xfc, 0x26, 0x51, 0x48, 0x1a, 0x03,
+  0x40, 0xee, 0x0d, 0xae, 0xa9, 0x8a, 0x5c, 0xdd, 0x9c, 0x4d, 0x05, 0x25,
+  0xf4, 0xe1, 0x74, 0xcd, 0xda, 0x35, 0x5d, 0x70, 0x17, 0x74, 0xbb, 0x3c,
+  0xf9, 0xe1, 0x87, 0xa8, 0x0e, 0x52, 0xb6, 0xb5, 0x2e, 0x22, 0x1b, 0x0a,
+  0x3a, 0xdd, 0xb8, 0x5d, 0x3c, 0xc1, 0x68, 0x40, 0x89, 0x8b, 0xbd, 0xc3,
+  0x50, 0xde, 0x21, 0x99, 0xe8, 0x4e, 0x5f, 0x25, 0xd8, 0x0a, 0xa1, 0x9c,
+  0x30, 0x3a, 0xa5, 0x7d, 0x19, 0xfb, 0x30, 0x8f, 0x81, 0x8b, 0xb0, 0x14,
+  0x6f, 0x38, 0xa2, 0x66, 0xc2, 0xa5, 0x2a, 0xdd, 0x75, 0x42, 0x42, 0xc0,
+  0x5d, 0x36, 0xea, 0x2a, 0x37, 0xd4, 0x06, 0x50, 0x93, 0xc8, 0x73, 0xcc,
+  0x48, 0xaa, 0x2e, 0x01, 0xf7, 0x91, 0x2d, 0x82, 0x41, 0x91, 0x67, 0x57,
+  0x36, 0xb5, 0x15, 0xd7, 0x20, 0x1e, 0x08, 0x04, 0x30, 0x08, 0x42, 0x37,
+  0x87, 0x61, 0x0a, 0x0f, 0x8a, 0x2a, 0x78, 0xf1, 0xcc, 0x51, 0x19, 0xee,
+  0x16, 0x3f, 0xde, 0x61, 0x1b, 0xb9, 0x43, 0x4d, 0xa0, 0xc0, 0x62, 0x8a,
+  0x58, 0x06, 0xcd, 0x25, 0x11, 0xd2, 0xff, 0x63, 0xbd, 0xc6, 0xaf, 0xe2,
+  0x24, 0x09, 0xe9, 0xb5, 0x92, 0x40, 0x38, 0xf2, 0xa0, 0x2a, 0x56, 0x58,
+  0x21, 0xde, 0x10, 0x4e, 0xca, 0x67, 0x07, 0x80, 0x21, 0x08, 0xb1, 0x40,
+  0x69, 0x71, 0x1b, 0x28, 0x68, 0x21, 0xf1, 0xd0, 0x0b, 0x40, 0xa5, 0xb4,
+  0xfc, 0xd2, 0x36, 0x2f, 0xcb, 0x74, 0xe3, 0xcc, 0xb6, 0x9a, 0xe7, 0x73,
+  0x38, 0x5c, 0xc4, 0x1f, 0x87, 0x78, 0xac, 0x6c, 0x61, 0xab, 0xb7, 0x6c,
+  0x9d, 0xd2, 0x42, 0x19, 0x2e, 0x98, 0x69, 0xb5, 0x2e, 0xe0, 0x5e, 0xa3,
+  0x24, 0x99, 0x82, 0xf8, 0x6e, 0xf8, 0xfa, 0xe8, 0xa2, 0x79, 0xb4, 0x00,
+  0x7b, 0xa0, 0x26, 0x02, 0x84, 0xb9, 0xd3, 0xdf, 0x67, 0xef, 0x2f, 0xb6,
+  0x7c, 0x5d, 0x1d, 0xa1, 0xd2, 0x40, 0x07, 0x71, 0xe1, 0xd7, 0x6d, 0xb4,
+  0x44, 0x09, 0x2d, 0x57, 0x06, 0x0b, 0x44, 0x44, 0x77, 0x20, 0xb8, 0x12,
+  0xd8, 0x93, 0x9d, 0xdd, 0x01, 0xfd, 0xb3, 0x07, 0x6b, 0xdb, 0x93, 0x9d,
+  0x27, 0xce, 0x83, 0x60, 0x4f, 0xb5, 0x9c, 0x08, 0x1c, 0x52, 0x85, 0xb2,
+  0x72, 0x81, 0x23, 0x22, 0x7a, 0xf2, 0xf1, 0x23, 0xbe, 0xaa, 0x47, 0xc3,
+  0x0d, 0x5d, 0x50, 0xed, 0x3a, 0x8f, 0x89, 0x0d, 0xdc, 0xaf, 0x38, 0xcc,
+  0x66, 0xab, 0x4c, 0xc2, 0x7d, 0xd8, 0xe8, 0x81, 0xf0, 0xf5, 0xd1, 0x3a,
+  0x28, 0xa9, 0xaa, 0x99, 0x51, 0x1c, 0x62, 0x49, 0x11, 0xad, 0xf0, 0xe4,
+  0x5d, 0x2f, 0x16, 0x0b, 0xdf, 0x66, 0x8c, 0x78, 0x4c, 0xf2, 0x2d, 0xc1,
+  0x38, 0x76, 0x3e, 0x86, 0xf7, 0x75, 0x8d, 0x24, 0x88, 0x5d, 0x2a, 0x33,
+  0x52, 0xd5, 0x7f, 0x0d, 0x48, 0xdb, 0x3e, 0x07, 0x80, 0xd2, 0xa1, 0xc0,
+  0x0a, 0xdb, 0xaf, 0x7b, 0x12, 0x5c, 0x2a, 0x7f, 0x3c, 0x09, 0x55, 0x0b,
+  0xab, 0xcf, 0xd6, 0x59, 0x9b, 0xe0, 0x40, 0x2a, 0x86, 0x85, 0xac, 0x8b,
+  0x8f, 0x1f, 0x57, 0x6c, 0xe2, 0x34, 0x15, 0x96, 0xa0, 0x35, 0xcf, 0x59,
+  0xeb, 0xd6, 0xaa, 0xb7, 0x13, 0xbf, 0x77, 0xd4, 0x00, 0x41, 0x34, 0x0d,
+  0x30, 0xed, 0xac, 0x2e, 0xdc, 0x50, 0x26, 0x78, 0x18, 0xa9, 0x7b, 0x1c,
+  0xfb, 0x6c, 0xee, 0x5c, 0xcd, 0x9d, 0x10, 0xf5, 0xaf, 0x1b, 0x8e, 0xc5,
+  0x9c, 0xa6, 0xa4, 0x17, 0xcc, 0x05, 0x3e, 0xc8, 0x05, 0x81, 0x17, 0x36,
+  0x2c, 0x09, 0x1e, 0xf6, 0xc1, 0x57, 0xfc, 0xde, 0xbf, 0xfc, 0x37, 0x45,
+  0x6e, 0x75, 0xb4, 0x8a, 0x3f, 0xa0, 0x23, 0x2e, 0xa6, 0x26, 0x8e, 0x3f,
+  0x98, 0x4b, 0x0a, 0x6e, 0x31, 0x84, 0x79, 0xe0, 0x25, 0x49, 0x1c, 0xc9,
+  0x6c, 0xad, 0xb3, 0x1e, 0x52, 0x26, 0xf1, 0x85, 0x74, 0xb1, 0x5a, 0xf8,
+  0xec, 0x41, 0x2e, 0xe5, 0x50, 0x25, 0xbe, 0x54, 0x6d, 0x08, 0x29, 0x3c,
+  0xec, 0xa0, 0x11, 0x00, 0xc8, 0xf9, 0xac, 0x64, 0xe8, 0x86, 0x40, 0x39,
+  0x33, 0x1c, 0x0d, 0x0d, 0xde, 0xd3, 0x25, 0x50, 0x31, 0x89, 0x9b, 0x47,
+  0xec, 0x52, 0xdc, 0x92, 0x83, 0xb9, 0x7a, 0x0f, 0x5d, 0x1b, 0xe9, 0x52,
+  0xa2, 0xe6, 0x38, 0xfc, 0x7e, 0x26, 0xe2, 0x31, 0x36, 0xc1, 0x8d, 0x13,
+  0x25, 0x82, 0x65, 0x5c, 0x92, 0xc2, 0x40, 0x17, 0x42, 0x2b, 0x5e, 0x65,
+  0x42, 0x4d, 0xdc, 0xa5, 0xb3, 0xea, 0x1a, 0x38, 0x8d, 0xb8, 0x22, 0x19,
+  0xed, 0x84, 0xc1, 0x4a, 0x54, 0xe0, 0x48, 0xdb, 0xc9, 0x41, 0x93, 0x6e,
+  0xc8, 0x7b, 0xd9, 0x23, 0xac, 0x69, 0x24, 0x10, 0x2c, 0x1c, 0x99, 0x8e,
+  0x6d, 0x40, 0x5c, 0xe7, 0xb6, 0x98, 0x88, 0x1c, 0xd8, 0x00, 0x49, 0x7c,
+  0xab, 0x4b, 0x06, 0x7c, 0x6c, 0x4b, 0x8f, 0x96, 0xce, 0x33, 0x72, 0x87,
+  0x02, 0x26, 0x98, 0xfe, 0x8d, 0xe4, 0xd1, 0x7d, 0xab, 0x1a, 0xa9, 0x20,
+  0x63, 0x81, 0x07, 0x48, 0x32, 0x09, 0xf1, 0xab, 0x9b, 0x74, 0xde, 0xb2,
+  0x49, 0xa0, 0x7b, 0xd2, 0x9f, 0x17, 0x78, 0xfd, 0x6d, 0x5f, 0xa3, 0x54,
+  0x18, 0xb7, 0x2d, 0xd1, 0xa0, 0xd3, 0x81, 0x02, 0x38, 0xf6, 0xaf, 0xa4,
+  0x8b, 0xaf, 0xfb, 0x2e, 0x96, 0xa5, 0x75, 0xd9, 0xf9, 0x48, 0x55, 0xb3,
+  0xa5, 0x97, 0xfb, 0xd1, 0xde, 0xce, 0xce, 0xb7, 0xc4, 0x62, 0x17, 0xd8,
+  0x94, 0xdd, 0xaf, 0xbb, 0x8b, 0x02, 0x28, 0x19, 0x17, 0x82, 0xc1, 0xac,
+  0x45, 0xb7, 0x6f, 0x61, 0xf4, 0xd6, 0x85, 0x93, 0x02, 0xc1, 0xb3, 0x68,
+  0xb6, 0x2a, 0x8c, 0x13, 0x75, 0x6e, 0x9c, 0xcb, 0x8d, 0x65, 0x7b, 0x68,
+  0x13, 0x0a, 0x62, 0x81, 0x44, 0x09, 0xde, 0xf9, 0x6b, 0xfa, 0x2d, 0x09,
+  0x88, 0x02, 0x9d, 0x74, 0x00, 0x2d, 0x90, 0xdc, 0xc1, 0x20, 0x7b, 0xab,
+  0x82, 0x6b, 0xa0, 0x22, 0x12, 0x14, 0x18, 0x55, 0x30, 0xd2, 0x9a, 0x7b,
+  0x29, 0xcb, 0x05, 0xf5, 0x04, 0x64, 0xe1, 0x91, 0x78, 0x78, 0x32, 0x5d,
+  0xd9, 0x5d, 0x4c, 0xc2, 0x72, 0xc9, 0x5b, 0xb0, 0xf4, 0xf0, 0xcf, 0xcc,
+  0x21, 0x31, 0x04, 0x39, 0x86, 0xce, 0x01, 0x2a, 0x39, 0x68, 0x5e, 0x58,
+  0x6b, 0x4e, 0x96, 0xe9, 0x52, 0x6b, 0x13, 0xb1, 0xd2, 0x09, 0x9b, 0x2a,
+  0xe6, 0xc8, 0x88, 0xc2, 0x4b, 0xad, 0xf0, 0xcd, 0x03, 0x91, 0x76, 0x61,
+  0xff, 0x9d, 0xf3, 0x03, 0x73, 0x56, 0xa8, 0xf3, 0x56, 0xbe, 0xce, 0x7c,
+  0x09, 0xc3, 0xb2, 0xbb, 0x8c, 0x82, 0x21, 0x71, 0x16, 0xf2, 0x14, 0x65,
+  0x00, 0x38, 0x9f, 0xe5, 0x37, 0x34, 0x32, 0x01, 0x7e, 0x4f, 0xd0, 0x3e,
+  0x5e, 0x12, 0xf9, 0x7e, 0xf1, 0x23, 0x57, 0x05, 0xfd, 0xb9, 0xa3, 0xfe,
+  0x69, 0xac, 0x09, 0x5d, 0x7c, 0x96, 0x2c, 0x69, 0xaa, 0xf0, 0xd5, 0x79,
+  0xd0, 0x8e, 0x64, 0x1d, 0x5b, 0x15, 0x52, 0x5f, 0xd7, 0xa8, 0x33, 0x24,
+  0xd8, 0xcc, 0xf9, 0x9b, 0xe5, 0xd6, 0x28, 0x44, 0xf3, 0x93, 0x46, 0x5c,
+  0x2b, 0xf0, 0x45, 0x67, 0xc2, 0x9c, 0x60, 0xab, 0x6b, 0x31, 0x23, 0x8e,
+  0x7d, 0x9c, 0x26, 0x3e, 0xd8, 0x0a, 0xad, 0xd8, 0x7c, 0x27, 0xab, 0xf2,
+  0x9e, 0xd1, 0x8b, 0xc4, 0x8b, 0x51, 0xe6, 0x0e, 0xbf, 0x11, 0x0b, 0x88,
+  0xe1, 0xb7, 0xc3, 0xd3, 0x18, 0x60, 0x47, 0xa2, 0x91, 0xab, 0x9c, 0x2e,
+  0xfa, 0xb8, 0x28, 0x48, 0x54, 0xd3, 0xad, 0xd6, 0x54, 0x3a, 0x1a, 0x3c,
+  0x2b, 0x3f, 0x30, 0x08, 0x39, 0xc7, 0x04, 0xb5, 0xbd, 0x5a, 0x76, 0xc4,
+  0x93, 0x71, 0x72, 0x6d, 0x0b, 0xd1, 0xac, 0x96, 0xb9, 0x6e, 0xea, 0x87,
+  0x89, 0x9b, 0x0f, 0x6a, 0x40, 0x27, 0xb0, 0x42, 0xb0, 0xca, 0x14, 0xbc,
+  0xa9, 0x39, 0xff, 0x02, 0x4d, 0x0e, 0xd9, 0xd2, 0x9c, 0x1f, 0xdd, 0xc9,
+  0xd2, 0xd1, 0x1f, 0x3d, 0x46, 0x9f, 0x54, 0x43, 0x82, 0x54, 0x1d, 0x28,
+  0x52, 0x25, 0xc7, 0x53, 0xb0, 0xa6, 0xe8, 0x05, 0xf2, 0x7c, 0xd4, 0x05,
+  0xb9, 0xcd, 0xcf, 0xe4, 0xa2, 0x54, 0x8a, 0x35, 0xa1, 0x2a, 0xf2, 0xd9,
+  0x6a, 0x0a, 0x13, 0x0b, 0x47, 0xce, 0xa5, 0xd5, 0x7d, 0x34, 0x11, 0xc8,
+  0x30, 0xcb, 0x5f, 0xe7, 0xa6, 0x9d, 0x3c, 0xdc, 0x68, 0x4e, 0x0d, 0xee,
+  0xb1, 0x3c, 0xe5, 0x30, 0x5e, 0x71, 0xc7, 0x00, 0xf3, 0x39, 0x51, 0x41,
+  0xa3, 0x68, 0xe9, 0x23, 0x28, 0xd1, 0xd4, 0x8d, 0x91, 0x2d, 0x4e, 0x50,
+  0x56, 0x08, 0x3e, 0x56, 0x2e, 0x76, 0x82, 0xab, 0x8d, 0x11, 0xf1, 0x42,
+  0x52, 0xfd, 0x8a, 0xc3, 0x75, 0x1b, 0x0d, 0x86, 0xc8, 0xcf, 0x8b, 0x81,
+  0x0a, 0xe8, 0x0f, 0xfa, 0xb1, 0xde, 0xba, 0x9b, 0x1a, 0x7e, 0xab, 0x14,
+  0xce, 0x2c, 0x3c, 0x29, 0x0b, 0x8b, 0x7c, 0xa8, 0xb9, 0x81, 0x5a, 0xdc,
+  0x5d, 0xe7, 0xf3, 0x50, 0x48, 0x69, 0x07, 0x48, 0x10, 0xcf, 0x09, 0x52,
+  0x39, 0x83, 0xc4, 0x08, 0x46, 0x2b, 0xe2, 0x81, 0x5a, 0xbd, 0x93, 0x09,
+  0x80, 0xed, 0xff, 0x92, 0x4f, 0x54, 0xbf, 0x8b, 0x58, 0x34, 0xed, 0xca,
+  0x73, 0x93, 0x70, 0x80, 0x6b, 0xae, 0x29, 0x4b, 0xfc, 0x5d, 0x02, 0x4b,
+  0x78, 0x3c, 0x59, 0x52, 0x31, 0xbf, 0x41, 0x3c, 0x39, 0x6c, 0x3d, 0x91,
+  0x54, 0x9b, 0x47, 0x84, 0x30, 0xe7, 0xe9, 0x13, 0xcf, 0x6b, 0x34, 0xf7,
+  0xd9, 0xe8, 0xc9, 0x1e, 0x67, 0x21, 0x85, 0xcc, 0x28, 0x9e, 0xb2, 0xbe,
+  0x55, 0x46, 0x96, 0x27, 0x83, 0xe4, 0x35, 0xe5, 0xe6, 0x95, 0x00, 0x43,
+  0xac, 0x94, 0x47, 0x0d, 0xdb, 0xee, 0x5a, 0x55, 0x39, 0x12, 0x86, 0xb5,
+  0x2b, 0xe1, 0xdd, 0xa6, 0xf6, 0x56, 0x45, 0x3c, 0xbd, 0x37, 0xc8, 0x5c,
+  0x1f, 0x29, 0xc6, 0x4d, 0xf0, 0x2b, 0x34, 0x30, 0x3c, 0xdd, 0x42, 0x82,
+  0xcf, 0xdc, 0x20, 0x98, 0x6b, 0xa7, 0x40, 0x2a, 0x68, 0xa6, 0x63, 0x59,
+  0x99, 0x8b, 0xa1, 0xb5, 0xb6, 0x46, 0xef, 0xfa, 0x87, 0xb2, 0xdc, 0xab,
+  0x34, 0x1b, 0x9a, 0x3c, 0xff, 0x52, 0x7f, 0xf9, 0xe2, 0x81, 0xd0, 0x23,
+  0xbc, 0xe1, 0x34, 0x00, 0xe5, 0xab, 0x7a, 0x37, 0x9b, 0xf5, 0xa9, 0x46,
+  0xb7, 0x6b, 0x35, 0x18, 0xbb, 0x04, 0xb5, 0x49, 0xd7, 0x26, 0xf4, 0x73,
+  0x8b, 0x11, 0x92, 0x42, 0xb1, 0xd3, 0x7c, 0xee, 0x1c, 0x1f, 0xd3, 0xce,
+  0x48, 0x79, 0x2b, 0xf7, 0xac, 0x65, 0x30, 0xb1, 0x20, 0x3a, 0xaa, 0xc6,
+  0x70, 0xa2, 0x83, 0x0a, 0xf8, 0xe5, 0x10, 0xd6, 0xdb, 0x26, 0xe9, 0xe3,
+  0xb7, 0x07, 0x67, 0x03, 0xd8, 0x06, 0x71, 0xa9, 0x8e, 0xdf, 0xb2, 0x95,
+  0x53, 0x2c, 0xe5, 0xf5, 0xb9, 0x8b, 0x1b, 0x4d, 0x50, 0xcf, 0x82, 0x6a,
+  0x6c, 0x4d, 0xb9, 0x6d, 0xe2, 0x42, 0x1c, 0x1b, 0x4b, 0xa7, 0x05, 0x06,
+  0xd9, 0xd8, 0xc7, 0xe0, 0x7a, 0x7b, 0x4f, 0x3e, 0x7f, 0x3a, 0xc0, 0x6f,
+  0xcf, 0x76, 0x5e, 0x88, 0xb6, 0x74, 0x7c, 0x74, 0xf1, 0xa6, 0xa9, 0x71,
+  0x14, 0xa4, 0xab, 0xc9, 0xbf, 0xc3, 0x24, 0x2e, 0xae, 0xe3, 0xa2, 0xe2,
+  0xb8, 0xa9, 0x61, 0xb9, 0xa8, 0x96, 0xc3, 0x9d, 0x9d, 0x51, 0x45, 0x0c,
+  0xa5, 0x56, 0xf7, 0xe0, 0xe9, 0x68, 0x67, 0xeb, 0xb7, 0x24, 0x20, 0x36,
+  0xd1, 0x0d, 0x79, 0x85, 0xa3, 0x97, 0x6b, 0x0a, 0x96, 0x6f, 0xf2, 0x12,
+  0x6e, 0x39, 0x1a, 0x72, 0xa5, 0x40, 0x82, 0xd2, 0xf0, 0xa9, 0x37, 0xf7,
+  0x38, 0x6c, 0x34, 0x47, 0x02, 0x5d, 0xd5, 0x46, 0x9a, 0xac, 0xd6, 0x21,
+  0x52, 0x6d, 0x5a, 0xd9, 0x0e, 0xa9, 0x13, 0x18, 0x2b, 0x3a, 0x7d, 0x05,
+  0x7d, 0x1a, 0x06, 0xc2, 0x35, 0x65, 0x73, 0x05, 0x8d, 0xa1, 0x48, 0x18,
+  0x80, 0x48, 0x2e, 0x21, 0x8d, 0xa7, 0xb0, 0xca, 0xd9, 0x0f, 0x14, 0x97,
+  0xd8, 0x7b, 0x56, 0x2f, 0xea, 0x8e, 0x35, 0x01, 0xe3, 0xfb, 0x95, 0x6b,
+  0xe2, 0xef, 0x3d, 0x11, 0x28, 0x61, 0xb3, 0x76, 0x19, 0x7c, 0x6d, 0xd8,
+  0x85, 0xd2, 0xa0, 0xbe, 0x1f, 0x1e, 0xe6, 0x4e, 0x73, 0x98, 0x1f, 0x51,
+  0x3a, 0x0f, 0x36, 0xe2, 0x97, 0x10, 0xdf, 0x3f, 0x51, 0xf3, 0xc3, 0x1b,
+  0x9b, 0xa6, 0xc5, 0x6c, 0x79, 0x48, 0x71, 0x81, 0xee, 0x11, 0xcd, 0x8e,
+  0x0d, 0x2a, 0xeb, 0x62, 0x0e, 0xbd, 0xb1, 0x2f, 0xad, 0x27, 0xbd, 0x81,
+  0x2c, 0xc1, 0xa6, 0x07, 0x75, 0xb0, 0x99, 0x2e, 0x21, 0x18, 0xae, 0x6b,
+  0x4e, 0x50, 0xc1, 0x69, 0x09, 0xed, 0x2f, 0xa8, 0x0b, 0x01, 0x93, 0x64,
+  0xf2, 0x11, 0xe1, 0x7f, 0xa4, 0xd3, 0x3f, 0x7f, 0xd2, 0x36, 0x81, 0x9f,
+  0x5e, 0x1c, 0xed, 0x87, 0x45, 0x6b, 0xc4, 0x5c, 0xae, 0x96, 0x2a, 0x09,
+  0xd8, 0xe3, 0xcc, 0x6f, 0xc6, 0x48, 0x61, 0x00, 0xd5, 0x60, 0x76, 0x83,
+  0x0e, 0xf4, 0x38, 0xe4, 0x08, 0x72, 0x75, 0x22, 0x71, 0x81, 0x54, 0xad,
+  0xe0, 0x06, 0x0b, 0x67, 0xb0, 0xda, 0xe1, 0xde, 0xb6, 0xd0, 0x55, 0x9d,
+  0x15, 0xd3, 0x96, 0xca, 0x35, 0x0c, 0xe6, 0x25, 0x14, 0xda, 0x5a, 0x2c,
+  0xa1, 0x10, 0x48, 0xea, 0x56, 0x7c, 0x21, 0xa7, 0xdb, 0xb1, 0x68, 0x45,
+  0x66, 0x40, 0xed, 0x66, 0x9f, 0x0d, 0xb2, 0xdf, 0x2e, 0x0c, 0xc2, 0xea,
+  0xb2, 0x91, 0x9d, 0x0a, 0xe2, 0x2d, 0xa6, 0xcb, 0xea, 0xd7, 0x12, 0xef,
+  0xc0, 0x83, 0x31, 0x8b, 0x24, 0x26, 0x61, 0x7a, 0xf0, 0x10, 0x75, 0x95,
+  0xfd, 0x85, 0x15, 0x51, 0xfd, 0x29, 0xe2, 0xac, 0x01, 0xb9, 0xdb, 0xe0,
+  0x2c, 0x24, 0x77, 0x9a, 0x2e, 0xd3, 0x00, 0xaa, 0xd5, 0xdd, 0x0f, 0x71,
+  0x3b, 0x41, 0x9d, 0xbd, 0x22, 0x68, 0xc3, 0x1d, 0xa7, 0xdc, 0x67, 0xb9,
+  0x4b, 0xe3, 0xf9, 0xe8, 0x81, 0xa3, 0x11, 0x0e, 0x2c, 0x1c, 0x19, 0xaa,
+  0xa1, 0x38, 0x56, 0x83, 0x5a, 0x48, 0x8e, 0x03, 0x6d, 0x7e, 0x77, 0xfe,
+  0xe6, 0xcf, 0x66, 0xef, 0xd9, 0x1a, 0x74, 0x1a, 0xd3, 0x1b, 0x53, 0xa8,
+  0x05, 0xf4, 0xab, 0x44, 0x51, 0x5b, 0x3a, 0xff, 0x47, 0x07, 0xb1, 0xcd,
+  0x72, 0xc4, 0x1b, 0x6d, 0x72, 0x35, 0x0e, 0xae, 0xac, 0xae, 0x62, 0xff,
+  0x93, 0xd1, 0x33, 0xb8, 0xa2, 0xde, 0x1c, 0x3e, 0x7b, 0xb2, 0xb7, 0xbb,
+  0x35, 0x6a, 0xdf, 0x06, 0x1b, 0x9f, 0xb4, 0xfe, 0x6e, 0xcb, 0x92, 0x8f,
+  0x4b, 0x26, 0x98, 0xcd, 0xa3, 0x1f, 0xce, 0xde, 0xd5, 0xe7, 0x27, 0x33,
+  0x6a, 0x89, 0x75, 0xeb, 0x66, 0xe8, 0x0d, 0x89, 0xb5, 0xf6, 0x2d, 0x89,
+  0x10, 0x07, 0xa7, 0x0d, 0x4c, 0xd1, 0x7b, 0x53, 0xa4, 0x7c, 0x06, 0x7a,
+  0xbc, 0x20, 0xbd, 0x13, 0x12, 0x5e, 0x49, 0x31, 0x39, 0x65, 0x68, 0xaa,
+  0xa4, 0xd7, 0xc0, 0x92, 0xaa, 0xcf, 0xae, 0x66, 0xc0, 0x86, 0x3a, 0xd9,
+  0xa1, 0x48, 0x7a, 0x96, 0xa6, 0x6a, 0x24, 0x5c, 0xff, 0xa6, 0x0c, 0xb0,
+  0x0e, 0xe4, 0xec, 0xb7, 0x0a, 0x4f, 0xa1, 0x61, 0x19, 0xa4, 0xf0, 0xb4,
+  0xb0, 0x6a, 0x9c, 0xdb, 0xc6, 0x79, 0x22, 0xd6, 0x41, 0x7f, 0x22, 0x84,
+  0x27, 0xa9, 0x57, 0xb8, 0x69, 0x17, 0x11, 0xb4, 0x30, 0x9b, 0x60, 0x38,
+  0x25, 0x32, 0xa3, 0x48, 0xa8, 0x28, 0x57, 0xc5, 0x6c, 0xb5, 0xa0, 0x15,
+  0xf8, 0xea, 0xde, 0xc2, 0x8e, 0xf4, 0xc2, 0x86, 0xca, 0xde, 0xce, 0x69,
+  0x48, 0x60, 0xfa, 0x7a, 0xb6, 0x53, 0x6b, 0x6d, 0x84, 0x45, 0x68, 0x18,
+  0x57, 0x87, 0xbb, 0xae, 0xf4, 0x1a, 0x27, 0x1c, 0x8a, 0x75, 0xb0, 0x69,
+  0x73, 0xe3, 0x8b, 0xfb, 0xb7, 0x94, 0x2a, 0x92, 0x2a, 0x66, 0xb9, 0xff,
+  0xf1, 0x24, 0xfd, 0x9a, 0x19, 0x5c, 0x1c, 0xf5, 0x52, 0x11, 0x1a, 0x65,
+  0xec, 0x5c, 0x9e, 0x25, 0xc3, 0x18, 0xb5, 0x68, 0xeb, 0xad, 0xf6, 0x22,
+  0x3c, 0x78, 0x13, 0x0c, 0xd2, 0x02, 0x28, 0x44, 0xfa, 0x7b, 0x1a, 0x6d,
+  0xb2, 0x44, 0x16, 0x3d, 0xfb, 0xfc, 0xd9, 0xd3, 0x2d, 0x55, 0xf9, 0x5d,
+  0x7c, 0xce, 0x56, 0x97, 0xf3, 0x0d, 0xeb, 0xb6, 0x2a, 0x1d, 0x88, 0xf4,
+  0x22, 0x45, 0x7d, 0x28, 0xd0, 0xba, 0xba, 0xf1, 0xa4, 0xcc, 0x0e, 0x94,
+  0x71, 0x98, 0x94, 0x2c, 0x06, 0xb7, 0xd9, 0x1c, 0x75, 0x26, 0xc5, 0xa5,
+  0xa2, 0x4d, 0x1c, 0x8e, 0xa0, 0x4e, 0x47, 0xe4, 0xb2, 0xd1, 0x71, 0x55,
+  0xc9, 0xd5, 0xe0, 0xf2, 0x2d, 0xd8, 0x86, 0x71, 0x5c, 0x75, 0x9a, 0xbe,
+  0xc5, 0xc5, 0x14, 0x96, 0x3a, 0x44, 0x59, 0xbf, 0x3c, 0xb8, 0x8b, 0xc4,
+  0x19, 0x00, 0x83, 0xbf, 0xde, 0x75, 0x5d, 0xc8, 0x8a, 0x24, 0xbd, 0xc2,
+  0xdc, 0xc7, 0x77, 0x67, 0x7d, 0x1d, 0x05, 0xbd, 0x8a, 0xb7, 0xdf, 0xde,
+  0xd7, 0x70, 0x1e, 0x5f, 0x5a, 0xb0, 0x6d, 0x6d, 0x5b, 0x24, 0x0b, 0x43,
+  0x32, 0x96, 0x5b, 0x3d, 0x2f, 0x7c, 0xbd, 0x19, 0xb1, 0xe7, 0xc8, 0x05,
+  0x8d, 0x18, 0xc6, 0x75, 0xb0, 0x10, 0xbe, 0xbc, 0xb7, 0x42, 0x18, 0xd4,
+  0x46, 0xb6, 0xa6, 0xba, 0x84, 0x23, 0xb6, 0x30, 0xb9, 0x58, 0xdd, 0x50,
+  0x08, 0x69, 0xb5, 0xdf, 0x1d, 0x51, 0xb6, 0x6b, 0xae, 0x48, 0xa7, 0x8d,
+  0x75, 0x58, 0x33, 0x78, 0x29, 0xbb, 0x82, 0x9c, 0x70, 0xe8, 0x36, 0xc3,
+  0x76, 0xb6, 0x4a, 0xb4, 0x89, 0xf1, 0x6e, 0x6f, 0x6f, 0x3d, 0x3a, 0x66,
+  0x7d, 0xf0, 0xb1, 0x31, 0x9e, 0x89, 0xb2, 0x91, 0x85, 0x75, 0x2a, 0xfc,
+  0x10, 0xb8, 0x4b, 0xde, 0x2f, 0x41, 0xba, 0x95, 0xa0, 0x46, 0xb1, 0xbf,
+  0xb3, 0xd0, 0x12, 0x91, 0x1c, 0xd4, 0x01, 0xc8, 0x03, 0x64, 0xd8, 0x58,
+  0xe7, 0x57, 0x9f, 0xba, 0x0a, 0xaf, 0x92, 0xac, 0xae, 0x5c, 0x41, 0xb3,
+  0x35, 0x38, 0x94, 0xb1, 0x55, 0x3a, 0x2c, 0x0b, 0xf2, 0x4c, 0x38, 0x36,
+  0x27, 0x98, 0x9f, 0x9c, 0x2a, 0xef, 0x54, 0x96, 0x33, 0x68, 0x4a, 0x82,
+  0x38, 0x9f, 0xdb, 0xac, 0xd8, 0x3d, 0xdd, 0x28, 0xbf, 0x38, 0x6a, 0x01,
+  0x51, 0xc9, 0x93, 0x7c, 0x7c, 0xcc, 0x23, 0x9d, 0x66, 0x1d, 0x52, 0xab,
+  0x77, 0x1d, 0xa2, 0x41, 0xd2, 0xf1, 0x6f, 0xfc, 0x9c, 0x05, 0x50, 0xce,
+  0x92, 0xd5, 0x02, 0xbc, 0x80, 0x12, 0xc3, 0xed, 0xc6, 0x55, 0x70, 0xd4,
+  0x8d, 0x15, 0xb3, 0x52, 0x69, 0xf8, 0xb4, 0xb6, 0x98, 0x03, 0x39, 0xa1,
+  0x08, 0xb5, 0xef, 0x12, 0x82, 0x01, 0xdc, 0xff, 0xa0, 0xd8, 0x0f, 0x70,
+  0x96, 0xf4, 0xb2, 0x51, 0x1c, 0x54, 0x2e, 0x8b, 0x89, 0x5b, 0x68, 0x0d,
+  0x48, 0x1b, 0x05, 0x37, 0x68, 0xc6, 0x56, 0xa6, 0x2c, 0xa9, 0x8a, 0x69,
+  0xcb, 0xb0, 0xe4, 0x9c, 0xe1, 0xe5, 0x54, 0x4d, 0xdf, 0x23, 0x3c, 0x48,
+  0x5d, 0x7f, 0xd0, 0x5f, 0x98, 0x45, 0x6b, 0x22, 0xc4, 0x96, 0xf9, 0xa9,
+  0x34, 0x28, 0xa8, 0x23, 0xe6, 0xbd, 0x5f, 0xba, 0x20, 0x7d, 0x0d, 0x92,
+  0x62, 0x1e, 0x29, 0x1a, 0xb3, 0x40, 0x56, 0x65, 0xb3, 0xc8, 0xfb, 0xcb,
+  0x1d, 0xde, 0xfa, 0xfd, 0xb2, 0x15, 0xfd, 0x1a, 0x94, 0x62, 0xe6, 0x36,
+  0x00, 0xc2, 0x20, 0xc9, 0x1f, 0x3e, 0x6e, 0x01, 0xba, 0x01, 0x0b, 0xc1,
+  0xa1, 0xdf, 0x56, 0x2b, 0x86, 0x75, 0x8c, 0x2e, 0x6a, 0x19, 0x11, 0x60,
+  0xba, 0xc1, 0x4c, 0x37, 0xe9, 0x66, 0x60, 0x76, 0x5e, 0x2d, 0x37, 0x77,
+  0xb7, 0x04, 0x98, 0x57, 0x8b, 0xa7, 0x74, 0x26, 0x83, 0x5a, 0x35, 0x69,
+  0x04, 0x77, 0x1d, 0xba, 0xbe, 0xe1, 0xc1, 0x65, 0xc0, 0x74, 0x04, 0x91,
+  0x5f, 0xea, 0x61, 0x90, 0x55, 0x73, 0x55, 0x1f, 0xd8, 0xff, 0xd5, 0xa5,
+  0x0e, 0x0b, 0x0c, 0xd4, 0x92, 0xb3, 0x1d, 0x4a, 0x29, 0x62, 0xb7, 0xe9,
+  0x11, 0xfa, 0xe5, 0x82, 0xb0, 0x62, 0xc8, 0xb4, 0x7c, 0xf3, 0xd9, 0x90,
+  0x07, 0x7c, 0x55, 0xe4, 0x6d, 0xa8, 0x4e, 0x4e, 0x14, 0xd3, 0x2b, 0xe4,
+  0x62, 0x5d, 0xf1, 0xe9, 0x1e, 0x67, 0xe5, 0xf4, 0xc2, 0xa2, 0xee, 0x92,
+  0xfc, 0xd3, 0x31, 0xd9, 0xfa, 0x96, 0xb6, 0xc8, 0xf4, 0x80, 0xb3, 0x0b,
+  0xd3, 0xa9, 0x9d, 0x72, 0x29, 0x4e, 0x80, 0x44, 0x0f, 0x86, 0xfa, 0x52,
+  0x9e, 0x4e, 0x0c, 0x44, 0x63, 0x1d, 0x60, 0xd2, 0x26, 0x96, 0xa3, 0xa4,
+  0xd6, 0x51, 0x67, 0x9b, 0x6d, 0x87, 0x26, 0x0c, 0x00, 0xa4, 0x37, 0x57,
+  0x81, 0x13, 0x81, 0x7c, 0x12, 0xd9, 0x21, 0x82, 0x33, 0x73, 0x76, 0xa1,
+  0x02, 0xd9, 0xdf, 0x0e, 0x0f, 0x6a, 0x7f, 0x71, 0xcf, 0x37, 0x59, 0xbf,
+  0x46, 0x7a, 0x51, 0xbf, 0x64, 0x83, 0x60, 0xd5, 0xb7, 0xe5, 0x6d, 0x24,
+  0x95, 0xb5, 0xab, 0x41, 0xac, 0xe9, 0x5b, 0x48, 0x5b, 0xba, 0xf0, 0xad,
+  0x4b, 0xe3, 0xfe, 0x08, 0xbe, 0x1b, 0x48, 0xe0, 0xfb, 0x64, 0xc5, 0xe1,
+  0x26, 0xcd, 0x4a, 0xa9, 0xc2, 0xaf, 0x45, 0x2c, 0x90, 0x27, 0xb4, 0xca,
+  0x9d, 0x47, 0x79, 0x61, 0xfc, 0x9f, 0x24, 0x5e, 0x84, 0xb5, 0x22, 0x51,
+  0xd0, 0xb9, 0x6c, 0x0b, 0x75, 0x2b, 0x90, 0x76, 0x19, 0x9e, 0x88, 0x46,
+  0x6c, 0xa2, 0xf4, 0x81, 0x00, 0x14, 0x69, 0x5c, 0x5b, 0xef, 0x04, 0xa9,
+  0x44, 0x03, 0x0e, 0x6d, 0x42, 0x35, 0x5f, 0xb9, 0x7b, 0xd4, 0xb4, 0xaa,
+  0x8d, 0x38, 0xdc, 0x7d, 0x5a, 0x8f, 0xe9, 0xf5, 0x2a, 0xbb, 0xa1, 0x21,
+  0xb4, 0xc3, 0x9e, 0xcd, 0xc9, 0x91, 0xa2, 0xe6, 0x89, 0x14, 0x50, 0x35,
+  0x48, 0x09, 0x79, 0x9d, 0x01, 0xb3, 0x6e, 0x91, 0xc2, 0xaa, 0x75, 0x4c,
+  0x1e, 0x0a, 0x57, 0x13, 0xdb, 0xae, 0x2c, 0xa0, 0x8c, 0xca, 0x2d, 0xe0,
+  0xc3, 0x69, 0x90, 0x56, 0x15, 0x43, 0x02, 0xa2, 0xae, 0x82, 0x78, 0x08,
+  0xe1, 0x53, 0x86, 0x06, 0xc3, 0x97, 0x8d, 0x5a, 0x3a, 0x5b, 0x47, 0x76,
+  0x55, 0x8a, 0x73, 0x5c, 0xb7, 0x95, 0xc9, 0x34, 0x04, 0x31, 0xec, 0x18,
+  0x89, 0xf2, 0xe1, 0x61, 0x47, 0x11, 0xc0, 0x8b, 0x46, 0x39, 0x62, 0x47,
+  0x8a, 0xf6, 0xd2, 0xa0, 0x86, 0x61, 0x0b, 0x27, 0xa4, 0x25, 0x10, 0x74,
+  0x1c, 0x59, 0xa9, 0x3d, 0xb3, 0x49, 0x2a, 0x46, 0x3e, 0x5f, 0x55, 0x92,
+  0xf8, 0xcc, 0x66, 0x31, 0xce, 0x27, 0xd9, 0xb2, 0x03, 0x25, 0x07, 0xd0,
+  0x85, 0x45, 0x08, 0x1f, 0xeb, 0xc4, 0x16, 0x45, 0xd4, 0xb7, 0x33, 0xf9,
+  0x4a, 0x54, 0x96, 0xaa, 0xee, 0xac, 0x00, 0xe8, 0x5d, 0x21, 0x7c, 0x8e,
+  0xf5, 0x58, 0xe4, 0x4c, 0x3a, 0x26, 0xdb, 0xb2, 0x20, 0x99, 0x32, 0x51,
+  0x5b, 0x90, 0xc0, 0x06, 0x0c, 0xe9, 0xc0, 0x57, 0x77, 0x72, 0xc5, 0x0d,
+  0x4c, 0xe3, 0x78, 0x30, 0x48, 0xe2, 0x81, 0x98, 0xc0, 0x8e, 0xb5, 0xb6,
+  0x6a, 0x0d, 0x02, 0x90, 0xab, 0x22, 0xbf, 0x0e, 0x8b, 0x65, 0x75, 0x89,
+  0x6a, 0x95, 0x11, 0x2d, 0x56, 0xec, 0x68, 0x68, 0xd9, 0x9a, 0x69, 0x5f,
+  0xe6, 0x2b, 0x01, 0x09, 0x67, 0xa7, 0xb5, 0xfa, 0xcb, 0x48, 0x42, 0x8f,
+  0x27, 0xbc, 0x3b, 0x93, 0x7b, 0x37, 0x4d, 0x4b, 0xb2, 0x47, 0x36, 0xbc,
+  0xa9, 0xd4, 0x6d, 0xf2, 0xb0, 0xc7, 0x1a, 0xfd, 0x7c, 0x67, 0x8c, 0xb5,
+  0x45, 0x19, 0xe2, 0x09, 0x09, 0x31, 0x41, 0x6e, 0x94, 0x9f, 0x28, 0x93,
+  0x5d, 0x75, 0xd8, 0x4c, 0xdd, 0x60, 0x4c, 0x5c, 0x67, 0x9b, 0x40, 0x2c,
+  0xa5, 0x48, 0x14, 0x77, 0x45, 0x97, 0xc1, 0x12, 0x63, 0xf2, 0x7a, 0x1e,
+  0x96, 0x95, 0x70, 0x5e, 0x83, 0xe5, 0x72, 0xa4, 0x85, 0x3b, 0xdf, 0xd9,
+  0x63, 0xd1, 0xe6, 0xf8, 0xec, 0xdd, 0xd1, 0xd7, 0xa7, 0x5b, 0x8f, 0xb9,
+  0x16, 0x14, 0xd2, 0x10, 0x61, 0x28, 0x38, 0x54, 0x38, 0xde, 0x1d, 0xed,
+  0xc0, 0xef, 0x04, 0x88, 0xb9, 0xf0, 0x6a, 0xef, 0x0a, 0xba, 0x1b, 0x48,
+  0x36, 0xaa, 0x9c, 0x57, 0xc1, 0xb5, 0x73, 0xc3, 0xff, 0xd4, 0x80, 0xff,
+  0xb8, 0x2b, 0xdc, 0xff, 0xeb, 0xf1, 0x78, 0x78, 0x70, 0x76, 0x2c, 0xd5,
+  0xab, 0xe9, 0xe7, 0x1a, 0xe0, 0xec, 0xae, 0xe8, 0x7e, 0x31, 0x8f, 0x73,
+  0xc8, 0x60, 0x3d, 0xc0, 0x3f, 0x88, 0xe9, 0x47, 0xf3, 0xcd, 0xeb, 0xf6,
+  0xec, 0x78, 0x1b, 0x5d, 0xc1, 0xb1, 0x81, 0x95, 0xe8, 0x8e, 0xe9, 0x6b,
+  0x57, 0x2e, 0x11, 0x74, 0x3f, 0xe4, 0x6c, 0x80, 0x40, 0x8d, 0x81, 0xc4,
+  0x24, 0x7f, 0x92, 0xc2, 0x3b, 0x5c, 0x19, 0x92, 0x60, 0x37, 0x8c, 0x11,
+  0xdb, 0xd3, 0x39, 0x23, 0xcd, 0xc0, 0xe1, 0x1b, 0xf6, 0x7b, 0xd8, 0x67,
+  0x05, 0x6e, 0x91, 0xc1, 0xb1, 0x49, 0xb6, 0xd2, 0xf0, 0x96, 0xa6, 0x71,
+  0xaf, 0x3f, 0x24, 0xe6, 0xb5, 0xdf, 0x97, 0x7c, 0x8d, 0x24, 0xe3, 0x42,
+  0xbb, 0x91, 0x9d, 0xb5, 0x28, 0xb0, 0x97, 0xd5, 0x6e, 0x6c, 0x87, 0xb6,
+  0x33, 0x5c, 0x75, 0x8f, 0x8e, 0x8e, 0x28, 0x8b, 0x57, 0xe2, 0x0d, 0x54,
+  0xd1, 0xf1, 0x9f, 0x82, 0x8b, 0x1b, 0x1e, 0x89, 0x20, 0xb9, 0xed, 0xa1,
+  0x6b, 0x5e, 0xf9, 0x8c, 0x4f, 0x84, 0x53, 0xb7, 0x86, 0x8b, 0x00, 0xbf,
+  0x38, 0x3c, 0xab, 0x55, 0x42, 0x6f, 0x59, 0x3d, 0x26, 0xf7, 0x3e, 0x47,
+  0x1c, 0xc9, 0xb9, 0x99, 0x6b, 0x7d, 0x31, 0x5a, 0x5f, 0xd8, 0xb0, 0x0a,
+  0x2a, 0x1c, 0x75, 0xdd, 0x7b, 0xb5, 0x8b, 0xcf, 0x15, 0xff, 0x5c, 0x7f,
+  0xf5, 0xf9, 0x19, 0x04, 0xb7, 0x9f, 0xfb, 0xb0, 0xb1, 0x34, 0x8a, 0x25,
+  0x95, 0xce, 0x3a, 0x33, 0xb5, 0x6c, 0x85, 0xac, 0x16, 0x8a, 0xae, 0x11,
+  0xe3, 0x00, 0x19, 0x66, 0xd7, 0xf1, 0x6b, 0x1a, 0x0d, 0x0b, 0x62, 0xa4,
+  0x80, 0x06, 0x36, 0xb3, 0xb6, 0x00, 0xe9, 0x8d, 0xe2, 0xe0, 0xdc, 0x28,
+  0xdb, 0xed, 0x2d, 0x97, 0xdc, 0x46, 0x32, 0x0a, 0x56, 0x45, 0x6b, 0xdc,
+  0x2a, 0x60, 0x5c, 0x37, 0xce, 0x2c, 0x9b, 0xfb, 0x0b, 0x89, 0x3a, 0x8c,
+  0xae, 0x57, 0x85, 0x40, 0x1a, 0x28, 0x20, 0x91, 0x22, 0x6d, 0x17, 0x09,
+  0x8f, 0xb9, 0x3e, 0xe0, 0x56, 0x0d, 0x3e, 0x51, 0xca, 0xe9, 0xd8, 0x2f,
+  0x34, 0x09, 0x61, 0x52, 0xe4, 0x37, 0x74, 0x5a, 0xf9, 0x35, 0x57, 0x91,
+  0x5d, 0x64, 0x38, 0xd3, 0x2d, 0xe9, 0x46, 0x99, 0x39, 0xbf, 0x68, 0x47,
+  0x04, 0x2a, 0x6a, 0x0f, 0x68, 0x8c, 0x83, 0x17, 0x86, 0x04, 0x16, 0x1e,
+  0xd9, 0x7c, 0x06, 0x24, 0x0a, 0xf1, 0x9b, 0xeb, 0x5f, 0xfb, 0x60, 0xc2,
+  0xb6, 0x87, 0x5b, 0xe1, 0xfc, 0xff, 0x79, 0x34, 0xe4, 0xc8, 0x22, 0xa4,
+  0xa1, 0x8e, 0x2d, 0xaf, 0x11, 0x93, 0x70, 0xfd, 0x97, 0x44, 0x55, 0xc2,
+  0xcd, 0xd9, 0x32, 0xd7, 0xb4, 0x0d, 0xa3, 0x2a, 0xc6, 0x30, 0x80, 0xcc,
+  0x11, 0x53, 0x35, 0x54, 0x11, 0x8e, 0x4b, 0x91, 0x30, 0x8e, 0x99, 0x2f,
+  0xe5, 0xa3, 0x78, 0xa5, 0xd0, 0xb3, 0xdb, 0x62, 0x06, 0x8b, 0x65, 0xee,
+  0xd2, 0x16, 0x7f, 0x13, 0xf8, 0x04, 0x6f, 0x0f, 0xc0, 0xd2, 0x90, 0x5a,
+  0xae, 0x6e, 0x94, 0x3f, 0x84, 0x70, 0x24, 0xd2, 0x53, 0x4b, 0xa5, 0x10,
+  0x78, 0x7b, 0x17, 0x27, 0x23, 0x09, 0x84, 0x2e, 0xed, 0x97, 0x81, 0x8f,
+  0x43, 0x9e, 0x21, 0x50, 0xaa, 0xd1, 0x11, 0x07, 0xbd, 0x74, 0xe8, 0x39,
+  0x96, 0x24, 0x8a, 0x39, 0xa6, 0x8a, 0xc3, 0x29, 0x2e, 0x09, 0x55, 0x1a,
+  0x63, 0xf3, 0x36, 0x58, 0xf8, 0x8b, 0x2b, 0xfa, 0xda, 0xa9, 0xf3, 0x95,
+  0x95, 0xda, 0xf4, 0xad, 0x96, 0x85, 0x7d, 0xe4, 0x90, 0xed, 0xdf, 0xf8,
+  0x48, 0xef, 0x81, 0x58, 0x90, 0x44, 0x1f, 0xeb, 0x10, 0x20, 0x31, 0x9a,
+  0xc8, 0x3f, 0x34, 0x08, 0x7e, 0xdf, 0xff, 0x7c, 0xc7, 0x62, 0x7d, 0xd9,
+  0x68, 0x17, 0x3e, 0x03, 0xe8, 0xc6, 0x0e, 0x35, 0x02, 0xc8, 0x81, 0x79,
+  0xe5, 0x1e, 0x6d, 0xd6, 0xa3, 0x78, 0x31, 0x7a, 0xba, 0x55, 0xa3, 0x97,
+  0x6a, 0xbe, 0x70, 0xc8, 0x9a, 0x26, 0x98, 0x44, 0xef, 0x2e, 0x4e, 0xde,
+  0x76, 0xd8, 0x04, 0xe0, 0x48, 0xc4, 0x77, 0xf5, 0xaf, 0x5a, 0xc6, 0x4e,
+  0x04, 0x63, 0x73, 0x2c, 0x39, 0x89, 0x8f, 0xe9, 0x55, 0x26, 0xd8, 0xff,
+  0x6f, 0xd3, 0x69, 0x91, 0x97, 0xf9, 0xa5, 0xb8, 0x33, 0xed, 0x82, 0xa1,
+  0x2f, 0x8e, 0x8f, 0xc7, 0xd1, 0x5d, 0x32, 0xb1, 0x64, 0xab, 0x56, 0x68,
+  0xa1, 0xe4, 0x2f, 0x82, 0x04, 0x97, 0x45, 0x9a, 0x54, 0x2c, 0x68, 0x98,
+  0x5d, 0x8f, 0x13, 0xb0, 0xf9, 0xa5, 0x64, 0x98, 0x64, 0xa4, 0x70, 0x26,
+  0x50, 0xdf, 0xb8, 0xd0, 0xc0, 0x1c, 0x5c, 0x69, 0x99, 0xe4, 0x1d, 0x96,
+  0x5d, 0x19, 0x80, 0xb1, 0x14, 0x59, 0x1b, 0xdc, 0x15, 0x93, 0xb8, 0x74,
+  0xe0, 0x53, 0x69, 0xc1, 0x14, 0xc7, 0xc2, 0x86, 0x9a, 0x63, 0x6e, 0x52,
+  0x64, 0xf9, 0xb7, 0xb2, 0xdf, 0xb5, 0xfa, 0xa4, 0x63, 0x87, 0x66, 0x90,
+  0xc8, 0x66, 0x79, 0x01, 0x37, 0x49, 0x80, 0xa6, 0xcc, 0x68, 0xfe, 0x2b,
+  0x04, 0x7f, 0xf2, 0xf0, 0xee, 0x3b, 0x24, 0xf6, 0xeb, 0x5c, 0x62, 0x2f,
+  0xb1, 0xcc, 0xcc, 0x95, 0x24, 0x2f, 0x10, 0x41, 0x5a, 0x0a, 0x4e, 0xab,
+  0x65, 0x8f, 0x8c, 0x95, 0x3c, 0x26, 0xe1, 0xd9, 0x7e, 0xf8, 0xec, 0x24,
+  0xb5, 0xb6, 0xbf, 0x4e, 0xaf, 0xd6, 0x20, 0xe4, 0x8b, 0x16, 0xd5, 0x14,
+  0x33, 0x79, 0x44, 0xca, 0x2f, 0x0b, 0x15, 0x2e, 0x9b, 0xa5, 0x58, 0x3a,
+  0xd0, 0x40, 0x6a, 0x92, 0x25, 0x51, 0xdb, 0x83, 0x55, 0x76, 0x1f, 0x16,
+  0x29, 0x71, 0x81, 0x68, 0xee, 0xa8, 0x16, 0xfb, 0x21, 0xc1, 0xb1, 0x65,
+  0x1d, 0x6d, 0x27, 0x89, 0x4a, 0xb0, 0x3a, 0x94, 0x38, 0x13, 0x20, 0x79,
+  0x36, 0xa3, 0x7f, 0x46, 0x5d, 0x39, 0x7f, 0xd8, 0x72, 0x16, 0x22, 0xd5,
+  0x28, 0xd0, 0x99, 0x0d, 0xf0, 0xbd, 0xc0, 0x2a, 0xa9, 0xd9, 0x20, 0xd7,
+  0x87, 0xc2, 0x14, 0xbc, 0xb2, 0x9a, 0xe5, 0x0c, 0x6d, 0xab, 0x8a, 0x00,
+  0x5f, 0xe1, 0x72, 0x7b, 0xff, 0xc7, 0xdf, 0xdb, 0xf9, 0x48, 0x3f, 0xfe,
+  0x2c, 0x92, 0xb4, 0x00, 0x68, 0x78, 0x34, 0x09, 0x23, 0x9d, 0xd2, 0x57,
+  0xfe, 0xe0, 0x4d, 0x62, 0xa4, 0x28, 0x71, 0xcb, 0xc9, 0x11, 0x6a, 0x0a,
+  0xa7, 0xea, 0x42, 0xd4, 0xab, 0x57, 0xc7, 0x66, 0x7c, 0x1f, 0x60, 0xc3,
+  0x71, 0x60, 0x45, 0x13, 0x8b, 0x23, 0x47, 0xbc, 0x28, 0x90, 0xf4, 0x6c,
+  0x1d, 0x0e, 0xb9, 0xc1, 0xcd, 0xd4, 0x6b, 0xce, 0x00, 0xe8, 0x43, 0x1c,
+  0x3f, 0x18, 0x3f, 0xdf, 0x2c, 0x27, 0x52, 0xc5, 0xb1, 0x0d, 0xa7, 0x2a,
+  0x7b, 0xab, 0xfe, 0x8d, 0xff, 0xa0, 0xbd, 0x18, 0x54, 0x77, 0xf9, 0xdf,
+  0x47, 0x1c, 0xd4, 0x08, 0xc6, 0x3b, 0xcc, 0xa5, 0xc4, 0xf6, 0x87, 0xdf,
+  0xed, 0x72, 0x08, 0x51, 0xaf, 0x5d, 0x3a, 0x1b, 0x2b, 0x60, 0x5b, 0xec,
+  0x50, 0x78, 0xd6, 0xa0, 0xb7, 0xd6, 0xbb, 0xe3, 0x5e, 0x06, 0x7c, 0x05,
+  0xfc, 0x7d, 0xc4, 0xff, 0xfe, 0xb8, 0x3b, 0x7c, 0xf6, 0xb3, 0xeb, 0xf5,
+  0x77, 0xbb, 0x1f, 0x7e, 0xb7, 0xd7, 0xeb, 0xac, 0x1d, 0xaf, 0x89, 0x81,
+  0xf5, 0x88, 0xbe, 0x12, 0xc5, 0x4b, 0x35, 0x84, 0x56, 0xb5, 0x4d, 0x5f,
+  0x37, 0x01, 0x85, 0x59, 0xda, 0x69, 0x1f, 0x6c, 0x85, 0x7a, 0x04, 0x0a,
+  0x3d, 0xac, 0xe1, 0x1b, 0x68, 0x2d, 0x5a, 0xd2, 0x56, 0xc3, 0xb7, 0xa6,
+  0x82, 0xb5, 0x0d, 0x73, 0x66, 0xcb, 0x72, 0x0a, 0x8c, 0x84, 0xd9, 0x3d,
+  0xdd, 0x73, 0x82, 0xb4, 0x3a, 0x72, 0xe1, 0x33, 0x26, 0x3d, 0x2a, 0xe1,
+  0x2a, 0x46, 0xd7, 0xa6, 0xbb, 0xf1, 0x19, 0x51, 0x6e, 0xab, 0xcb, 0x32,
+  0xe1, 0x4d, 0x42, 0x9e, 0xe6, 0xb5, 0xe0, 0x2a, 0x0e, 0xaf, 0x10, 0xbb,
+  0x3f, 0x40, 0x4d, 0xb4, 0xd3, 0x47, 0x8e, 0x4f, 0x1c, 0x3a, 0xa7, 0xa4,
+  0x68, 0x91, 0x96, 0x8f, 0x77, 0x18, 0xe0, 0xf8, 0xea, 0x2e, 0x81, 0xf4,
+  0xda, 0xbc, 0x77, 0x36, 0x4f, 0x9d, 0xae, 0x83, 0xc7, 0x42, 0x90, 0xfb,
+  0xf0, 0xf5, 0xc0, 0x1d, 0x9e, 0x44, 0x56, 0x11, 0x7d, 0xba, 0xaa, 0xda,
+  0x40, 0x24, 0xa3, 0xad, 0xae, 0x1c, 0x81, 0xb0, 0x2d, 0x03, 0x3d, 0xd3,
+  0x60, 0xee, 0xa8, 0x94, 0x82, 0x3a, 0xa2, 0x0f, 0x0a, 0xd6, 0x2a, 0xf3,
+  0x22, 0x89, 0x3a, 0x6d, 0xcb, 0x26, 0xae, 0x52, 0xee, 0xc0, 0x61, 0x3c,
+  0x27, 0xf3, 0xb2, 0x4d, 0x1b, 0x87, 0xec, 0xeb, 0x61, 0x2c, 0xbb, 0x0a,
+  0x99, 0xe3, 0x83, 0xb0, 0x6e, 0xaa, 0x4b, 0x4c, 0x8c, 0x6f, 0xbd, 0x13,
+  0xc7, 0xce, 0xa8, 0x46, 0xc9, 0xaf, 0xcb, 0xfc, 0x1e, 0xd5, 0x2d, 0x14,
+  0x0e, 0xf0, 0x39, 0x76, 0xc5, 0xac, 0x7c, 0x5e, 0x61, 0x90, 0x01, 0xdf,
+  0x95, 0xcc, 0x8a, 0x1a, 0x07, 0x60, 0x4f, 0x92, 0xf7, 0xd5, 0x18, 0x41,
+  0xe0, 0x48, 0x51, 0xfc, 0x19, 0x7e, 0x56, 0x00, 0xc9, 0xba, 0x5c, 0x8a,
+  0x8e, 0xdb, 0xb4, 0x21, 0x73, 0x2f, 0xe7, 0xf1, 0xd5, 0xbf, 0x74, 0xa2,
+  0xd4, 0x2a, 0x6a, 0x14, 0x73, 0x22, 0xe0, 0xd3, 0x4a, 0x88, 0x6e, 0x96,
+  0x98, 0x2e, 0x1a, 0x00, 0x98, 0xd0, 0xbc, 0x53, 0xa9, 0x44, 0xf2, 0xfb,
+  0xbd, 0x9d, 0x36, 0x2b, 0xd6, 0x6c, 0x3a, 0x80, 0xb8, 0x59, 0x2d, 0x22,
+  0xa6, 0xa7, 0xd2, 0x08, 0x4a, 0x24, 0x4a, 0x5f, 0xf4, 0x20, 0x41, 0xd6,
+  0x10, 0x9d, 0xa5, 0x21, 0x00, 0x30, 0xd6, 0xa1, 0xd4, 0x76, 0x06, 0x9f,
+  0xfe, 0x5a, 0xc6, 0xf2, 0x28, 0x67, 0xa1, 0xdb, 0x8b, 0x2f, 0xfc, 0xbd,
+  0xe1, 0x24, 0xa1, 0x9b, 0xa7, 0x39, 0xc7, 0x4d, 0x1f, 0x5a, 0x3a, 0x88,
+  0xea, 0x31, 0x54, 0xdc, 0xd9, 0x57, 0x78, 0x27, 0xba, 0x80, 0x4e, 0xc7,
+  0xb4, 0x7d, 0xca, 0xf5, 0xcc, 0xa3, 0xbd, 0xd1, 0x8e, 0x0a, 0x7e, 0x0f,
+  0xa6, 0xbf, 0x8a, 0xbf, 0xa6, 0xd6, 0x86, 0xaf, 0x88, 0xc9, 0xf2, 0xfa,
+  0x5f, 0x56, 0x59, 0x1d, 0x95, 0xbf, 0xd3, 0xcd, 0x25, 0x6a, 0x98, 0x49,
+  0xf9, 0x5a, 0x05, 0xa1, 0x16, 0xa5, 0x14, 0x9e, 0x72, 0xc5, 0xec, 0x2b,
+  0xd8, 0xfe, 0xd3, 0x92, 0x32, 0xd0, 0xe0, 0xba, 0xfa, 0x11, 0xad, 0xc1,
+  0x2a, 0x42, 0x88, 0xd9, 0x6f, 0x0a, 0xf3, 0x91, 0x89, 0xfc, 0xe6, 0xaa,
+  0x52, 0xe1, 0xbe, 0x3e, 0x7f, 0x73, 0xd8, 0x68, 0xee, 0xf9, 0x67, 0xcf,
+  0x76, 0x7e, 0xcb, 0x78, 0x94, 0x5a, 0x3d, 0x8b, 0x87, 0xeb, 0x05, 0xfd,
+  0xaa, 0x82, 0x41, 0xdd, 0xf5, 0x82, 0xac, 0x08, 0xc6, 0x2f, 0x2b, 0x16,
+  0xa4, 0xae, 0xd1, 0x2e, 0x3f, 0x61, 0x98, 0xa6, 0xe8, 0xe3, 0x7d, 0xc2,
+  0x5a, 0x48, 0xac, 0x36, 0xa5, 0xa5, 0x06, 0xf5, 0xb3, 0x00, 0xcb, 0x11,
+  0x5f, 0xab, 0xac, 0xc3, 0xc7, 0x2a, 0x36, 0x70, 0xbe, 0x01, 0xac, 0x76,
+  0xf4, 0xe1, 0xe9, 0xbb, 0x77, 0x47, 0x87, 0xae, 0x8c, 0x96, 0x22, 0x7e,
+  0x7b, 0x49, 0x59, 0xca, 0x1f, 0x89, 0x4a, 0xdd, 0x5d, 0x2f, 0x48, 0x02,
+  0x59, 0x2d, 0x3f, 0x5b, 0x47, 0x80, 0xa4, 0x0b, 0x09, 0xd2, 0x0d, 0xd0,
+  0x2b, 0x2c, 0x76, 0x5f, 0x18, 0x55, 0x87, 0x0a, 0xda, 0x5d, 0x26, 0xc6,
+  0xe7, 0xbd, 0x83, 0x7f, 0xb6, 0x4a, 0xc4, 0x68, 0x8e, 0x56, 0x50, 0x24,
+  0x46, 0x60, 0xd0, 0xff, 0x3f, 0x56, 0x26, 0xe6, 0x1b, 0x0b, 0x5f, 0x68,
+  0x61, 0xe1, 0xd6, 0xa5, 0x7f, 0x11, 0x62, 0x55, 0xa1, 0x0b, 0x02, 0x1b,
+  0xba, 0x93, 0x9d, 0xc3, 0x84, 0x3c, 0x0e, 0xab, 0x2d, 0xbd, 0xeb, 0x3b,
+  0x80, 0x26, 0x59, 0x57, 0xfa, 0x65, 0x1d, 0x38, 0x5c, 0x80, 0x02, 0x27,
+  0xcc, 0x5b, 0x4a, 0x6d, 0xfd, 0xf2, 0x0a, 0x2d, 0xeb, 0x43, 0x28, 0xb8,
+  0xbe, 0x8d, 0x13, 0xd0, 0x86, 0xcb, 0x81, 0x71, 0x84, 0x8a, 0x73, 0xaf,
+  0xe6, 0x5d, 0x16, 0x74, 0x2d, 0x40, 0xa7, 0x24, 0x6c, 0xac, 0x67, 0x73,
+  0xf8, 0xd1, 0xbd, 0xdb, 0x05, 0xc8, 0x80, 0x90, 0x94, 0x56, 0x6c, 0x4c,
+  0x36, 0xb4, 0xa6, 0xa0, 0xd1, 0xdb, 0x04, 0x15, 0x1b, 0x5e, 0x4e, 0x0b,
+  0x06, 0xc2, 0xbb, 0x53, 0x88, 0x4d, 0xdc, 0x10, 0xe1, 0x3f, 0xde, 0xb7,
+  0x8c, 0x3d, 0x8a, 0x55, 0x4f, 0x64, 0xb6, 0xa0, 0x2b, 0x7c, 0x6e, 0x19,
+  0xde, 0x69, 0xa5, 0x75, 0x57, 0x51, 0x47, 0x03, 0x67, 0xda, 0xe5, 0x02,
+  0x69, 0x9c, 0x17, 0xf5, 0x32, 0x6c, 0x79, 0x65, 0xe7, 0x9c, 0x9a, 0x5a,
+  0xe4, 0xb1, 0xa4, 0x35, 0x01, 0x49, 0xdd, 0x1d, 0x0d, 0x8c, 0xdb, 0xdc,
+  0x2c, 0xc6, 0x1e, 0x7c, 0x52, 0x7a, 0x3b, 0xa8, 0xd5, 0xa9, 0xb7, 0x2e,
+  0x00, 0x5e, 0xd5, 0x68, 0x81, 0x17, 0xd0, 0xd4, 0x2f, 0x35, 0x6f, 0x1b,
+  0x27, 0x50, 0xf9, 0x90, 0xd5, 0xd6, 0x6e, 0x8d, 0x4c, 0x4e, 0xbe, 0xa1,
+  0xab, 0xe8, 0x5a, 0xd9, 0x52, 0x55, 0x79, 0xc0, 0xe8, 0xeb, 0x25, 0xc7,
+  0xd7, 0x06, 0x40, 0x03, 0xb5, 0xe8, 0x5c, 0xec, 0x2a, 0x5a, 0x5a, 0x5b,
+  0x2d, 0xea, 0x5a, 0x5e, 0x36, 0x2f, 0xb6, 0x11, 0xf0, 0x97, 0x21, 0x3b,
+  0x3a, 0x87, 0xcd, 0x08, 0xdc, 0xb0, 0x0b, 0xab, 0x1b, 0xa6, 0x7a, 0xbe,
+  0xdb, 0xe4, 0x84, 0x51, 0xe3, 0x0e, 0x44, 0x46, 0x8d, 0x1b, 0x0b, 0x1f,
+  0x6f, 0x03, 0x63, 0xa3, 0xaf, 0x67, 0xcb, 0x7e, 0xfd, 0xa6, 0xfd, 0x06,
+  0x05, 0x07, 0xa6, 0x86, 0x48, 0x20, 0x58, 0xaa, 0xae, 0x22, 0x82, 0x46,
+  0x0d, 0x82, 0x6a, 0x6c, 0x1d, 0x81, 0xb7, 0xbc, 0x0e, 0x16, 0x63, 0x3a,
+  0xe7, 0x88, 0xde, 0x7e, 0x19, 0x4a, 0x01, 0x1a, 0x02, 0x0d, 0x2f, 0x0b,
+  0x2d, 0x94, 0x65, 0x0a, 0xd7, 0xaa, 0x02, 0xc7, 0xe5, 0x4d, 0xb9, 0x1e,
+  0x66, 0xc8, 0x47, 0x73, 0x64, 0x61, 0xf9, 0x10, 0x6b, 0x51, 0xfc, 0x73,
+  0x69, 0xd5, 0x18, 0x27, 0xef, 0x55, 0xbd, 0x39, 0xb7, 0x45, 0x2d, 0xb0,
+  0xb0, 0x96, 0x56, 0xea, 0x6a, 0x89, 0xb4, 0xb4, 0x55, 0xf9, 0x7a, 0x44,
+  0x27, 0xa6, 0xc7, 0x65, 0x46, 0x7a, 0xf5, 0x0c, 0x24, 0x4d, 0xd9, 0xb3,
+  0xb7, 0x69, 0x25, 0x82, 0x01, 0xb7, 0x25, 0x42, 0xbb, 0x1e, 0xd4, 0x36,
+  0xc4, 0xfb, 0xb5, 0xc9, 0xb1, 0x47, 0xe0, 0xbf, 0x6d, 0x70, 0x42, 0xd7,
+  0xd4, 0xfa, 0x51, 0xf5, 0xac, 0x6e, 0xd5, 0xee, 0xce, 0x68, 0xb7, 0x17,
+  0x02, 0x28, 0x23, 0xb0, 0x82, 0x63, 0x21, 0xc2, 0x76, 0x3a, 0xee, 0xc2,
+  0x2e, 0xab, 0x6f, 0xd8, 0xc1, 0xe2, 0x7e, 0x14, 0x84, 0xa7, 0xb4, 0xba,
+  0xd0, 0x10, 0x96, 0x66, 0xcb, 0xc3, 0x40, 0x1b, 0x01, 0xa9, 0x2d, 0x39,
+  0x94, 0xc7, 0x41, 0x59, 0xd4, 0x2a, 0xdb, 0xcb, 0xfd, 0xed, 0xea, 0xc3,
+  0x77, 0xe1, 0x59, 0x05, 0x49, 0x14, 0xdd, 0x55, 0xe3, 0x5d, 0xff, 0x2d,
+  0x2b, 0xd4, 0x2f, 0x16, 0xed, 0xd8, 0x63, 0xe4, 0x8e, 0xa1, 0x7a, 0x3d,
+  0x9c, 0x6f, 0x8d, 0x8b, 0xcb, 0x2b, 0x9e, 0x8d, 0xf0, 0x82, 0xb8, 0xbc,
+  0x1d, 0x39, 0x1f, 0x13, 0x64, 0x8f, 0x90, 0xf7, 0xae, 0xca, 0x7a, 0x1c,
+  0x05, 0xaa, 0xd2, 0x7b, 0x40, 0x8a, 0x90, 0xe1, 0xa2, 0x65, 0x87, 0xa9,
+  0x31, 0x1c, 0xaa, 0x95, 0x7e, 0x98, 0x2c, 0xd9, 0x60, 0x87, 0x17, 0x39,
+  0x11, 0x38, 0x09, 0x43, 0x05, 0xf8, 0x9d, 0x3f, 0xfe, 0xd1, 0xf3, 0xa8,
+  0x7a, 0xe5, 0xb5, 0xdd, 0x17, 0xa3, 0x67, 0xde, 0x4a, 0x25, 0x20, 0x01,
+  0x51, 0x6f, 0xff, 0x47, 0xa4, 0xc5, 0xfc, 0x3c, 0xfc, 0x91, 0xfe, 0xfc,
+  0xb9, 0xe7, 0x18, 0x25, 0xc2, 0xc4, 0x44, 0xbe, 0x70, 0x93, 0xb7, 0xa4,
+  0x0d, 0x3c, 0xe4, 0x82, 0xa9, 0x21, 0x71, 0xb1, 0x2b, 0x11, 0xa7, 0x51,
+  0x32, 0xab, 0x85, 0x9a, 0xd5, 0x8e, 0x25, 0x09, 0xf6, 0x10, 0x70, 0x88,
+  0x52, 0xdc, 0x5a, 0x4a, 0x42, 0x88, 0x7f, 0x69, 0x60, 0xe5, 0x6e, 0x14,
+  0x3f, 0x81, 0xaf, 0x77, 0x4b, 0xc1, 0x57, 0xf6, 0x3c, 0x42, 0x1c, 0x98,
+  0x9a, 0x42, 0xf4, 0xb3, 0x0d, 0x07, 0xa2, 0xc3, 0x49, 0xa0, 0x56, 0xd6,
+  0x5e, 0xc2, 0x15, 0x44, 0x10, 0x4a, 0x5c, 0x28, 0x91, 0x4b, 0xb9, 0xd4,
+  0x39, 0x96, 0x37, 0x3c, 0x45, 0x4d, 0x75, 0x16, 0x4c, 0xb6, 0x8d, 0x40,
+  0x08, 0xc6, 0xd8, 0x2c, 0x3d, 0x78, 0x12, 0xa0, 0xd4, 0xd7, 0xe4, 0x7d,
+  0x2e, 0xbc, 0xf6, 0x72, 0x79, 0x5d, 0x50, 0xbb, 0x0f, 0x60, 0x75, 0xd2,
+  0x53, 0xf2, 0x8c, 0xa3, 0xda, 0xa5, 0x07, 0x8d, 0xfc, 0x2d, 0xd5, 0x11,
+  0x41, 0x57, 0x59, 0x53, 0x09, 0x07, 0xbc, 0xde, 0xa2, 0xe0, 0x0a, 0xe0,
+  0xdf, 0x55, 0x48, 0x2c, 0x8c, 0xf6, 0x9e, 0xef, 0x3e, 0xdf, 0x26, 0x2e,
+  0xf2, 0x64, 0xb4, 0x17, 0x22, 0xac, 0xd3, 0x11, 0xa3, 0x31, 0x34, 0x2f,
+  0x4f, 0x20, 0xf0, 0x78, 0xd1, 0x8d, 0x39, 0x60, 0x1e, 0x96, 0xd0, 0x55,
+  0xf9, 0xde, 0x27, 0x2a, 0xc4, 0x8c, 0xa9, 0xe3, 0xf2, 0x0b, 0x5a, 0x79,
+  0x21, 0xa6, 0xa3, 0xb2, 0x40, 0xc3, 0xa3, 0x51, 0xc7, 0xc0, 0x4a, 0xea,
+  0x63, 0x4f, 0x52, 0xba, 0xf9, 0xab, 0x7c, 0xa5, 0xc8, 0x71, 0xec, 0xee,
+  0x70, 0xc5, 0x85, 0x38, 0x3b, 0x24, 0xef, 0x2c, 0xfa, 0x08, 0x00, 0x16,
+  0x57, 0x68, 0xc2, 0x85, 0x47, 0x04, 0x2e, 0x6e, 0xa4, 0x32, 0xa4, 0x52,
+  0x24, 0x01, 0x25, 0x57, 0xf8, 0x56, 0x9e, 0xde, 0x37, 0xef, 0x91, 0x6f,
+  0x88, 0x3c, 0x6f, 0x59, 0x64, 0x8f, 0xed, 0x86, 0x92, 0x64, 0x73, 0x71,
+  0x91, 0xc6, 0xb2, 0x18, 0x1e, 0xe5, 0x57, 0x3f, 0x90, 0x50, 0xf9, 0xae,
+  0xb2, 0x96, 0xb5, 0xac, 0x8d, 0x51, 0x33, 0x30, 0x44, 0xb0, 0x40, 0x18,
+  0x26, 0x97, 0x33, 0xa8, 0xc5, 0x15, 0x28, 0x41, 0x26, 0xe0, 0x0b, 0x0f,
+  0xe5, 0x96, 0x3c, 0x54, 0x1d, 0x4f, 0x91, 0x76, 0xfe, 0x07, 0x92, 0xc5,
+  0xde, 0xff, 0x4f, 0x16, 0xff, 0x44, 0xb2, 0x78, 0xd1, 0x45, 0x16, 0x4f,
+  0xfe, 0x07, 0x92, 0xc5, 0x93, 0xff, 0x9f, 0x2c, 0xfe, 0x79, 0x64, 0xb1,
+  0xf7, 0xbc, 0x9e, 0x1e, 0x07, 0x7d, 0x92, 0x2e, 0x39, 0x53, 0x2b, 0x5b,
+  0x28, 0xe8, 0xa0, 0x0c, 0x5d, 0xba, 0x50, 0xd0, 0x89, 0x2c, 0x99, 0x29,
+  0x54, 0x49, 0x55, 0x60, 0x2f, 0x3d, 0x90, 0x5e, 0xdb, 0x22, 0xc1, 0x70,
+  0x9c, 0xf1, 0x7c, 0x14, 0x9d, 0xb9, 0xd7, 0x90, 0xe3, 0xc4, 0xe9, 0xbe,
+  0x88, 0xb2, 0x98, 0x27, 0x97, 0xd8, 0x02, 0xc8, 0x29, 0x03, 0x7c, 0x09,
+  0x31, 0x8a, 0xad, 0x46, 0xc3, 0x56, 0x76, 0x14, 0xbf, 0x22, 0x81, 0x0f,
+  0x68, 0x85, 0x15, 0xd0, 0xd8, 0xa7, 0xb3, 0x58, 0x0e, 0x65, 0x9f, 0x64,
+  0xa9, 0xfe, 0x20, 0x0a, 0xab, 0x14, 0x71, 0xee, 0x5d, 0xbb, 0x5e, 0xd2,
+  0x47, 0x71, 0xea, 0xfd, 0x2d, 0x29, 0xf2, 0xc8, 0xf2, 0xfa, 0x15, 0x8b,
+  0x0d, 0x85, 0xc5, 0x4c, 0x4c, 0xf0, 0x1f, 0x72, 0xbf, 0x2d, 0x2d, 0xe3,
+  0x8f, 0xa8, 0xb7, 0x28, 0xf0, 0x7b, 0x0c, 0xf3, 0xe1, 0xd2, 0x6b, 0x32,
+  0x16, 0xb5, 0x52, 0x33, 0xba, 0xf9, 0x95, 0x33, 0x91, 0x18, 0xd1, 0xfb,
+  0xad, 0x73, 0xc0, 0x42, 0x0b, 0x1b, 0x0e, 0xc2, 0xc8, 0x19, 0xa7, 0x6b,
+  0x5e, 0x0a, 0x00, 0x91, 0x0c, 0xc7, 0x95, 0x13, 0x19, 0x75, 0xc8, 0xe9,
+  0xaf, 0x13, 0x36, 0x6d, 0x87, 0x03, 0x1a, 0x40, 0x6d, 0xbe, 0x55, 0xcd,
+  0xdf, 0x85, 0xc8, 0xf9, 0x40, 0x17, 0x3f, 0xc4, 0xf6, 0x90, 0xea, 0x63,
+  0xae, 0x3a, 0xa2, 0xe5, 0x5e, 0xb9, 0x65, 0x30, 0x47, 0x70, 0xb8, 0x18,
+  0x9b, 0x48, 0xc7, 0x31, 0xb7, 0x18, 0xba, 0xfc, 0x94, 0x65, 0x80, 0xc9,
+  0x04, 0x4a, 0x7b, 0xb9, 0x9a, 0xfc, 0x45, 0x35, 0x42, 0x1a, 0x72, 0x0c,
+  0xf4, 0xba, 0x5a, 0x9d, 0x4c, 0xa9, 0x1a, 0xb3, 0x9a, 0xa8, 0x17, 0xa7,
+  0xdd, 0x1c, 0x7d, 0x08, 0x8f, 0x9d, 0xab, 0x5c, 0xa3, 0x74, 0xa6, 0x01,
+  0x3f, 0x3c, 0xa6, 0xd6, 0xa4, 0x82, 0xa8, 0x95, 0xd6, 0xbe, 0xdb, 0x79,
+  0x62, 0x8d, 0xa1, 0xd4, 0xda, 0x2c, 0xe1, 0x66, 0xb9, 0xd5, 0x54, 0x21,
+  0xd6, 0xe2, 0x73, 0xf8, 0xf1, 0xb5, 0x6d, 0x11, 0xb9, 0x0e, 0xd8, 0x8b,
+  0x5a, 0x0e, 0xfe, 0xc8, 0x3f, 0xba, 0x15, 0xa6, 0x1a, 0xf8, 0xb1, 0x05,
+  0xf3, 0xf1, 0xe3, 0x38, 0x1b, 0x78, 0x7d, 0x5d, 0x07, 0xaf, 0xf8, 0x5b,
+  0xe9, 0xe1, 0xe1, 0xb6, 0xe1, 0x27, 0xfd, 0x05, 0x1d, 0xbc, 0xcf, 0x24,
+  0x6d, 0x3e, 0xe4, 0x10, 0x4b, 0x05, 0xe2, 0x61, 0x76, 0x77, 0x17, 0x17,
+  0x99, 0xc4, 0xe2, 0x85, 0x85, 0xdf, 0x39, 0x05, 0x6a, 0x09, 0x23, 0x4d,
+  0x0b, 0xeb, 0xf6, 0x92, 0x0d, 0x55, 0xb0, 0x56, 0xe5, 0x99, 0xa5, 0x3b,
+  0x2a, 0xae, 0xa6, 0xc5, 0xad, 0x2d, 0xf3, 0xca, 0xfc, 0x75, 0xd1, 0x8c,
+  0x75, 0x8f, 0x02, 0xf7, 0x43, 0x07, 0x20, 0xbb, 0x6d, 0x84, 0xaf, 0x40,
+  0xc6, 0x2d, 0xc3, 0x04, 0xb3, 0x5a, 0xa2, 0xe4, 0x83, 0xe2, 0x7d, 0x88,
+  0x54, 0x1f, 0xfb, 0xdd, 0x93, 0xae, 0x9b, 0x11, 0x2e, 0x08, 0xc0, 0xc0,
+  0x85, 0xe7, 0xf0, 0x41, 0x6f, 0xf3, 0x14, 0xf0, 0xb7, 0x48, 0xe0, 0x1c,
+  0xfd, 0xba, 0x3a, 0x17, 0x83, 0xa0, 0x7c, 0x5d, 0x5c, 0x86, 0x69, 0x14,
+  0xed, 0xf0, 0x32, 0xaf, 0x76, 0xc7, 0x02, 0x00, 0x40, 0x54, 0x9c, 0xc5,
+  0x95, 0x1d, 0x31, 0xbf, 0x0d, 0x18, 0xa6, 0x14, 0x6b, 0xe1, 0xb4, 0x8e,
+  0x69, 0xd2, 0x8e, 0xd8, 0xf1, 0x15, 0x0d, 0x1e, 0x83, 0x93, 0xd8, 0x6b,
+  0xdd, 0x27, 0x92, 0x70, 0xfd, 0xe8, 0xad, 0x12, 0x42, 0x04, 0x1a, 0x0b,
+  0x48, 0x66, 0x21, 0xb5, 0x78, 0x48, 0x4a, 0xbb, 0x1a, 0x25, 0xe7, 0x6a,
+  0x0d, 0x25, 0x5f, 0xa2, 0xf0, 0xec, 0x5d, 0xc8, 0x57, 0x0b, 0xb6, 0x0c,
+  0x2a, 0xd0, 0x4b, 0x07, 0x87, 0x7a, 0x64, 0x2a, 0x1f, 0xef, 0x87, 0x71,
+  0x76, 0xcf, 0x3e, 0xb6, 0x07, 0xae, 0x45, 0x66, 0xe4, 0x6c, 0xf3, 0x60,
+  0x98, 0x91, 0x54, 0xea, 0xdb, 0x34, 0x22, 0x9b, 0x2d, 0xd4, 0x4b, 0x51,
+  0x96, 0x17, 0xab, 0x96, 0xf1, 0x0f, 0x4f, 0xd2, 0x36, 0x99, 0x79, 0xdd,
+  0x63, 0xe2, 0xa9, 0xf3, 0xc7, 0xca, 0x48, 0x42, 0x79, 0x57, 0xcc, 0x2f,
+  0x20, 0x11, 0xc0, 0xef, 0xd3, 0x6d, 0x69, 0xdf, 0x76, 0xf9, 0x8a, 0x05,
+  0x57, 0x86, 0x1a, 0x12, 0xaf, 0x5b, 0x36, 0x40, 0xbf, 0x9e, 0x74, 0x4d,
+  0x19, 0x65, 0x62, 0x1f, 0x91, 0x03, 0xb8, 0xff, 0xb5, 0x20, 0x55, 0xc1,
+  0x4c, 0x6d, 0x66, 0xeb, 0xfc, 0x26, 0x32, 0x4b, 0x9d, 0xe4, 0x7b, 0x49,
+  0x87, 0x41, 0x8b, 0x80, 0x81, 0x65, 0x36, 0x63, 0x9e, 0x31, 0xed, 0x49,
+  0x20, 0x90, 0x5b, 0x13, 0x86, 0xf1, 0xd7, 0x40, 0x7b, 0xe5, 0x49, 0x77,
+  0x22, 0x8c, 0xfb, 0x76, 0xef, 0x4a, 0x07, 0x26, 0x3e, 0xf8, 0x36, 0x3a,
+  0xe2, 0x81, 0xa5, 0xf5, 0xb4, 0x05, 0x59, 0xa3, 0x19, 0xa2, 0xc2, 0x1e,
+  0x25, 0x6b, 0x0c, 0x5c, 0x22, 0xc8, 0x3a, 0xd7, 0xe8, 0x57, 0x2f, 0x92,
+  0xf4, 0xdf, 0xb1, 0x4a, 0xda, 0x59, 0x27, 0x14, 0x6e, 0x50, 0xd2, 0xbd,
+  0x3d, 0xa3, 0x75, 0xe9, 0x18, 0x6b, 0x26, 0xe5, 0xd3, 0x29, 0x7c, 0x3e,
+  0x45, 0x0b, 0x91, 0xe7, 0xae, 0xa3, 0xec, 0x55, 0x38, 0xe1, 0x07, 0xa7,
+  0xe8, 0x06, 0x54, 0x9b, 0x65, 0x53, 0x08, 0xaf, 0x8f, 0xc5, 0x0d, 0x45,
+  0x91, 0xb2, 0xc3, 0x19, 0x3f, 0xac, 0x35, 0xbb, 0xc8, 0xbb, 0x4f, 0x9c,
+  0x7e, 0x47, 0xec, 0x67, 0xf4, 0xdf, 0xdc, 0x53, 0x44, 0x99, 0xd6, 0x76,
+  0x14, 0xbd, 0xd4, 0xa6, 0xf2, 0xa0, 0x8f, 0x53, 0xa7, 0xb1, 0x3b, 0xda,
+  0x01, 0xef, 0xfd, 0x78, 0x8f, 0x48, 0xab, 0x7d, 0xbe, 0xc5, 0x7e, 0x6e,
+  0xb2, 0xe0, 0xf7, 0xca, 0x74, 0xbd, 0x41, 0x1f, 0xf3, 0xe2, 0x77, 0x75,
+  0x50, 0xae, 0x46, 0x66, 0x08, 0x7f, 0xe8, 0x8a, 0x64, 0xac, 0xaf, 0x47,
+  0x02, 0xe4, 0x09, 0x2b, 0x47, 0xc2, 0x59, 0xe0, 0x78, 0x7f, 0x77, 0xe7,
+  0xf3, 0x9d, 0x6e, 0xf0, 0x4f, 0x48, 0x14, 0x16, 0xf1, 0x32, 0x4d, 0x82,
+  0xca, 0x98, 0xa9, 0x2f, 0x8b, 0x14, 0xf8, 0xd1, 0xf4, 0xca, 0x64, 0x37,
+  0x5a, 0xd7, 0x3d, 0x00, 0xa7, 0x5a, 0xaa, 0xe6, 0x66, 0xb5, 0xd1, 0x3a,
+  0x88, 0x32, 0x73, 0x3f, 0x39, 0xbf, 0x8f, 0x73, 0x2e, 0x75, 0x24, 0x55,
+  0x7b, 0x47, 0x7b, 0x6d, 0x6d, 0x4c, 0x94, 0x77, 0xe1, 0x86, 0x21, 0x8f,
+  0xd1, 0x07, 0x77, 0x6b, 0x9b, 0xb2, 0x9a, 0x3c, 0x50, 0xf2, 0xe7, 0x1b,
+  0x3a, 0x37, 0x67, 0x12, 0xb2, 0x2a, 0x45, 0x61, 0x3e, 0xb1, 0xe0, 0x0f,
+  0x5e, 0x69, 0x55, 0x85, 0x5a, 0x57, 0xed, 0xe7, 0x37, 0xae, 0x87, 0xb4,
+  0x79, 0x80, 0x18, 0x9d, 0xcf, 0x46, 0x4f, 0x5e, 0x70, 0x9e, 0xb9, 0x54,
+  0xed, 0x0d, 0xd6, 0x9e, 0x0e, 0x4a, 0xce, 0xc8, 0x68, 0x92, 0x95, 0xad,
+  0x31, 0x5a, 0xb2, 0xfa, 0xeb, 0xe6, 0xe1, 0xd5, 0x91, 0x65, 0xa3, 0x06,
+  0x0f, 0x2a, 0x07, 0xc0, 0xcd, 0x54, 0x4f, 0x4f, 0xe2, 0x59, 0x5c, 0xb1,
+  0xb7, 0x6d, 0xd8, 0xce, 0xe8, 0x10, 0x4b, 0xaf, 0x2a, 0xe7, 0xb3, 0x51,
+  0x33, 0x1d, 0x41, 0x63, 0x86, 0xb9, 0x07, 0x2b, 0xd6, 0x1d, 0xc4, 0xd9,
+  0xb6, 0xb0, 0x86, 0x27, 0x5e, 0x1f, 0x9e, 0xa0, 0x3a, 0x28, 0x97, 0x51,
+  0xb4, 0x9c, 0x7a, 0xae, 0x0c, 0xb6, 0xbc, 0x07, 0x04, 0x69, 0x3a, 0x29,
+  0xcb, 0xeb, 0x3d, 0xa2, 0x87, 0xbd, 0xd1, 0xe7, 0xac, 0x4f, 0x8a, 0xcd,
+  0x7b, 0x0d, 0xf8, 0x98, 0x42, 0x66, 0x34, 0x5a, 0x3b, 0x5d, 0x26, 0xd9,
+  0x78, 0x7c, 0x12, 0x66, 0xe4, 0xff, 0xd5, 0x76, 0xd0, 0x2a, 0xdb, 0xfa,
+  0x00, 0x5b, 0x5f, 0xf1, 0x35, 0x0f, 0x54, 0x1a, 0x2d, 0x37, 0x6c, 0x01,
+  0x6c, 0x52, 0x30, 0xaf, 0xc5, 0x97, 0x83, 0xd2, 0x92, 0xa1, 0x47, 0x1e,
+  0x65, 0x98, 0x35, 0x30, 0x47, 0x31, 0xea, 0x11, 0xf5, 0x13, 0x16, 0x1c,
+  0x6d, 0x23, 0xaa, 0xd6, 0xb3, 0xdf, 0x1b, 0xf5, 0x28, 0x35, 0xde, 0x2d,
+  0x89, 0x0b, 0x92, 0x6a, 0x39, 0x16, 0x30, 0x38, 0x2d, 0xff, 0x8b, 0x9b,
+  0x45, 0xb5, 0x59, 0x5f, 0x73, 0xa2, 0xc3, 0xf3, 0xba, 0x3d, 0x86, 0xfb,
+  0x75, 0xac, 0x05, 0x26, 0xe2, 0x62, 0x92, 0x56, 0x45, 0xac, 0xd5, 0x70,
+  0xb4, 0x42, 0x47, 0xe0, 0x16, 0xe6, 0x34, 0x70, 0x24, 0x22, 0xf0, 0x6b,
+  0x9d, 0xce, 0x48, 0x12, 0x1b, 0xfe, 0x17, 0x7a, 0xd5, 0x06, 0x44, 0x76,
+  0x44, 0x38, 0xc2, 0x57, 0x47, 0x6f, 0x4e, 0xcf, 0x8f, 0xea, 0x48, 0x64,
+  0x52, 0x09, 0x00, 0x91, 0x05, 0xcd, 0xd1, 0xfd, 0x05, 0xf9, 0x71, 0x0e,
+  0x3f, 0xc5, 0x2a, 0x0a, 0x9c, 0x7d, 0xff, 0x3a, 0x28, 0x81, 0x61, 0x75,
+  0x63, 0x02, 0x84, 0x2b, 0x25, 0xa7, 0x56, 0x76, 0x28, 0x11, 0xe3, 0x96,
+  0x87, 0xa1, 0x76, 0xc3, 0x13, 0xf0, 0x5f, 0x44, 0xa7, 0x48, 0x67, 0xb1,
+  0xe4, 0xe6, 0x94, 0x25, 0x1b, 0x88, 0x5c, 0xb3, 0x2d, 0xbf, 0x70, 0xc2,
+  0xd0, 0xd2, 0x9c, 0xe6, 0x65, 0x17, 0x0b, 0x07, 0x9e, 0x72, 0x2c, 0xea,
+  0x28, 0x72, 0x9d, 0xf8, 0x5e, 0x10, 0x9b, 0x2c, 0x01, 0x39, 0xe8, 0xa5,
+  0xcb, 0xa4, 0xc6, 0xf1, 0x7c, 0x12, 0x7f, 0x28, 0xbc, 0xba, 0x15, 0x7c,
+  0x38, 0x88, 0xfe, 0x22, 0xf5, 0x87, 0x2f, 0x05, 0x27, 0xd9, 0xaf, 0x63,
+  0x87, 0x70, 0x40, 0xdd, 0x6e, 0x96, 0xc4, 0xc2, 0xfd, 0x48, 0xdd, 0xb2,
+  0xe9, 0x80, 0xfb, 0x7f, 0xec, 0x47, 0x6a, 0x0c, 0xc1, 0x6d, 0x24, 0xd9,
+  0x76, 0x6b, 0x32, 0x27, 0x11, 0x08, 0x2a, 0x00, 0x10, 0x5b, 0x8f, 0xc5,
+  0x50, 0xd9, 0xac, 0xad, 0x0a, 0x40, 0xb7, 0xd7, 0xda, 0xea, 0x84, 0x9a,
+  0x73, 0xc9, 0x0a, 0x5f, 0xea, 0x4d, 0x60, 0x8d, 0x0c, 0x02, 0x90, 0x6a,
+  0x04, 0x51, 0xb4, 0xb8, 0x52, 0x18, 0x3d, 0x83, 0x12, 0x11, 0x5a, 0xf0,
+  0xeb, 0xcf, 0x96, 0x64, 0x09, 0xb8, 0xb2, 0xf2, 0x3e, 0xab, 0xe0, 0xcb,
+  0x07, 0x17, 0x9b, 0xe6, 0x05, 0xa2, 0x1f, 0xda, 0x64, 0xec, 0xe9, 0xb6,
+  0x84, 0xe5, 0xf6, 0xc5, 0xb3, 0x17, 0x7c, 0xec, 0x10, 0x22, 0xa4, 0x40,
+  0x08, 0x9a, 0x3a, 0x82, 0x62, 0x07, 0x3a, 0x62, 0x33, 0x84, 0xb6, 0xa0,
+  0x7d, 0x74, 0xfb, 0xcd, 0xc8, 0x37, 0x49, 0x18, 0x55, 0x01, 0x24, 0x3a,
+  0x0e, 0x9a, 0x1a, 0xad, 0x55, 0x63, 0xd7, 0x05, 0xda, 0xe0, 0x66, 0xd1,
+  0x82, 0x46, 0xb4, 0x0b, 0xf1, 0x8d, 0x26, 0xbf, 0xe9, 0x79, 0x90, 0x76,
+  0x6b, 0xbb, 0xbf, 0x6e, 0x74, 0x4a, 0x0e, 0x1c, 0xb5, 0x49, 0x84, 0xc9,
+  0x1e, 0xbf, 0xcd, 0x3f, 0x6c, 0x39, 0xd4, 0x2a, 0x2d, 0x08, 0xc0, 0x78,
+  0xb4, 0xab, 0xa4, 0x86, 0xb5, 0xb7, 0xae, 0xb9, 0x4b, 0x30, 0x2c, 0x5a,
+  0xbd, 0x66, 0x6e, 0xa4, 0x54, 0x1e, 0xad, 0xf2, 0x25, 0x0b, 0x33, 0xc2,
+  0x67, 0x75, 0xef, 0xdb, 0xe1, 0xe4, 0x3c, 0x07, 0xa4, 0xe1, 0x4c, 0xa4,
+  0x2e, 0x81, 0xc9, 0x0b, 0x24, 0xe3, 0x65, 0x08, 0xa7, 0x51, 0x5a, 0xd4,
+  0x3b, 0x12, 0x01, 0x05, 0x34, 0x57, 0x36, 0x99, 0x76, 0xb0, 0x26, 0xe1,
+  0x83, 0xc1, 0x69, 0xd4, 0x3b, 0xa2, 0x51, 0x4c, 0x12, 0xa7, 0x59, 0x19,
+  0x9e, 0xe3, 0x66, 0x6f, 0xda, 0x20, 0x01, 0x52, 0xae, 0x5d, 0xc1, 0x51,
+  0xd1, 0x36, 0x97, 0x57, 0x23, 0x01, 0x77, 0x58, 0x56, 0xf7, 0x62, 0x47,
+  0x49, 0x16, 0x0c, 0x3f, 0x83, 0x1a, 0xe2, 0x88, 0x2c, 0xd3, 0xba, 0x59,
+  0xc8, 0x46, 0x1b, 0xb6, 0x2b, 0xda, 0x0b, 0x09, 0x44, 0x6f, 0x9c, 0x41,
+  0x5f, 0xad, 0x93, 0x52, 0x09, 0xea, 0x12, 0xc9, 0x69, 0x0e, 0x2a, 0x4b,
+  0x56, 0xe7, 0xaf, 0xc6, 0x65, 0x3b, 0x29, 0xae, 0x0d, 0x75, 0x74, 0x7d,
+  0x55, 0x2c, 0x05, 0xa6, 0x24, 0xea, 0xc0, 0x3d, 0x08, 0x04, 0x49, 0x79,
+  0xd2, 0x78, 0x05, 0x0a, 0x76, 0x42, 0xd0, 0xc6, 0xab, 0xc7, 0xaf, 0x6b,
+  0xf0, 0x56, 0x12, 0xe7, 0x4e, 0x3b, 0xdd, 0xdd, 0x9c, 0x8f, 0xf3, 0x96,
+  0xf0, 0x27, 0x7f, 0x9f, 0xb8, 0xd6, 0xbc, 0xdc, 0x3c, 0xb9, 0xf7, 0xdf,
+  0x74, 0x37, 0xa7, 0x6d, 0x88, 0x2f, 0x43, 0x5a, 0xb0, 0x66, 0x41, 0x2b,
+  0x06, 0x0a, 0xcc, 0xd4, 0xc0, 0xb8, 0x8e, 0xd6, 0x49, 0x3b, 0x7a, 0xf1,
+  0x7a, 0x91, 0xcf, 0x24, 0xb2, 0xe6, 0xb1, 0xb5, 0xe0, 0x07, 0x6d, 0x2d,
+  0xd4, 0x3a, 0x5c, 0x86, 0xf3, 0x42, 0x23, 0x44, 0xa5, 0x4c, 0x79, 0xca,
+  0x07, 0xba, 0x9b, 0xf3, 0x13, 0x95, 0xb2, 0x91, 0xdc, 0x3c, 0x5e, 0x0e,
+  0xa7, 0x90, 0x45, 0xf9, 0xb4, 0x0a, 0x66, 0xc0, 0x0f, 0x74, 0x37, 0xa7,
+  0xee, 0xfe, 0xf6, 0xcc, 0xd8, 0x52, 0x88, 0xd8, 0xdf, 0xc7, 0x66, 0xc6,
+  0x0f, 0xb6, 0x76, 0x99, 0x3e, 0x14, 0x1e, 0xde, 0xd8, 0x62, 0xd9, 0x9c,
+  0x35, 0x41, 0x26, 0xb5, 0x0d, 0xb6, 0x1d, 0xc6, 0x18, 0xba, 0x36, 0x58,
+  0x43, 0x99, 0xdb, 0x8c, 0xdc, 0x23, 0xbf, 0xc9, 0xea, 0xb8, 0x07, 0xd7,
+  0x6e, 0xb0, 0xf6, 0xd1, 0x5a, 0x85, 0x79, 0xa6, 0x05, 0x48, 0x3e, 0x08,
+  0xaa, 0x06, 0xc3, 0x7c, 0x56, 0x1f, 0x1e, 0x5e, 0x90, 0x79, 0x66, 0x55,
+  0xd1, 0x80, 0xe0, 0xe4, 0x78, 0x85, 0x26, 0xad, 0xc4, 0xf5, 0x7a, 0x69,
+  0x8a, 0xca, 0xb5, 0x86, 0xec, 0x7d, 0x7f, 0x91, 0xaf, 0x3f, 0x45, 0xd7,
+  0x68, 0x9a, 0x55, 0x16, 0x77, 0x0d, 0x1e, 0x13, 0x8c, 0xb1, 0xab, 0x4c,
+  0x51, 0x90, 0x56, 0xd7, 0x9a, 0xe2, 0xe2, 0x86, 0x4d, 0x83, 0x4e, 0x34,
+  0xf8, 0xb0, 0x3e, 0x28, 0x09, 0x84, 0x86, 0xa7, 0x6d, 0xb7, 0x65, 0x4a,
+  0xe6, 0xbd, 0xf3, 0xb9, 0x0d, 0xfe, 0x38, 0x3f, 0x40, 0xc7, 0xf5, 0x2e,
+  0xdd, 0x99, 0x6c, 0x8e, 0x6f, 0x79, 0x37, 0xb3, 0xce, 0xf9, 0x57, 0xeb,
+  0x3a, 0x2c, 0x0e, 0xee, 0x50, 0x51, 0x58, 0x74, 0x95, 0xc6, 0x2e, 0x2d,
+  0xff, 0x63, 0xcd, 0x52, 0x74, 0x27, 0x65, 0xb4, 0x3a, 0xa7, 0xc7, 0xb8,
+  0x39, 0x2b, 0x1b, 0x80, 0xed, 0x58, 0xbf, 0x38, 0xfa, 0xb4, 0x1f, 0xa2,
+  0xf0, 0xf7, 0x10, 0x1e, 0xd0, 0xaf, 0x91, 0x1d, 0x87, 0x07, 0x18, 0x9e,
+  0x76, 0xdb, 0x64, 0x79, 0xb3, 0x84, 0x4b, 0x32, 0x0a, 0x2d, 0x20, 0x71,
+  0xe7, 0xf1, 0x93, 0x25, 0x23, 0x5f, 0xbb, 0xc6, 0xc5, 0xe2, 0x91, 0x43,
+  0x4e, 0x0f, 0xf8, 0x59, 0x71, 0xd8, 0x6e, 0x30, 0xab, 0xd6, 0xb9, 0x94,
+  0xb9, 0x2e, 0xd7, 0xac, 0xfc, 0xba, 0x11, 0xd4, 0xa8, 0x70, 0xfd, 0x48,
+  0xf4, 0xc9, 0xce, 0xe1, 0xf8, 0xc5, 0x65, 0x3f, 0xd2, 0xbd, 0x1f, 0x59,
+  0x77, 0x73, 0x3a, 0x5c, 0xff, 0x96, 0x2e, 0xcf, 0xc0, 0x41, 0xd5, 0xa8,
+  0xe9, 0x84, 0xb5, 0xe6, 0x36, 0x6d, 0xd8, 0x01, 0xff, 0x45, 0x0c, 0x82,
+  0xb5, 0xb5, 0x79, 0x70, 0x08, 0x87, 0x05, 0xf2, 0x7a, 0x10, 0xc9, 0xf5,
+  0x12, 0x3f, 0x3a, 0x13, 0x18, 0xb6, 0x4d, 0xc3, 0xda, 0x66, 0x78, 0x40,
+  0x8e, 0x72, 0x85, 0xdb, 0x96, 0xb9, 0x09, 0x83, 0x3d, 0x6b, 0x28, 0xd8,
+  0x26, 0x87, 0x0d, 0x4a, 0xbc, 0x3a, 0x4a, 0xa6, 0x71, 0xc6, 0x64, 0xeb,
+  0x52, 0xa7, 0xa5, 0xd9, 0xb2, 0x54, 0xac, 0x58, 0xec, 0x75, 0xdb, 0xbb,
+  0xa3, 0xdd, 0x41, 0x54, 0xd7, 0xc9, 0x4c, 0xb8, 0xe6, 0xa2, 0xf7, 0x9a,
+  0x90, 0xc6, 0x5d, 0x37, 0xed, 0x0c, 0xe7, 0xdc, 0x71, 0x69, 0x72, 0xa6,
+  0x27, 0x05, 0xf8, 0xd7, 0xbd, 0x20, 0xcf, 0x98, 0xcd, 0xad, 0x05, 0xdc,
+  0x19, 0x3e, 0x7d, 0xf1, 0xa2, 0x76, 0xa5, 0x85, 0x9a, 0xf3, 0xb3, 0x9d,
+  0x1d, 0x01, 0xb2, 0x6e, 0xbe, 0x46, 0x5f, 0x0c, 0x5f, 0xe0, 0xc5, 0xfa,
+  0x6b, 0x52, 0x44, 0x61, 0xfd, 0x7b, 0x43, 0xfe, 0xa6, 0xa3, 0x3b, 0xd8,
+  0x53, 0xd6, 0xbe, 0xf5, 0x82, 0xbb, 0xeb, 0x78, 0x0b, 0x0f, 0xcb, 0x32,
+  0xe6, 0x97, 0x97, 0x0c, 0xe4, 0xca, 0x4f, 0x4a, 0xe5, 0xf7, 0xbc, 0xb8,
+  0x8b, 0x8b, 0x59, 0x7b, 0xba, 0x3b, 0x83, 0xe1, 0xee, 0xba, 0xe9, 0xc2,
+  0x26, 0xc0, 0x23, 0xc1, 0x7e, 0xb2, 0x06, 0x45, 0xc2, 0xf3, 0xe6, 0x37,
+  0x5b, 0x5d, 0xb3, 0xff, 0x6c, 0x67, 0x67, 0xf0, 0x9c, 0x7f, 0xbe, 0x78,
+  0xb1, 0xd6, 0x41, 0xe8, 0xfb, 0x78, 0x62, 0x53, 0xab, 0x8d, 0x96, 0xda,
+  0xe9, 0x68, 0x7d, 0x97, 0x5a, 0xdd, 0x7d, 0xf1, 0x62, 0xc0, 0xbd, 0x3c,
+  0xfb, 0xa4, 0xd6, 0xab, 0xbb, 0xdc, 0x5b, 0xb6, 0xf8, 0x75, 0x4f, 0x8f,
+  0x65, 0x63, 0x06, 0xac, 0x0d, 0xbc, 0x02, 0xba, 0x77, 0x60, 0xe8, 0xf1,
+  0x11, 0xf6, 0x61, 0x20, 0x34, 0xa2, 0x34, 0x96, 0xac, 0x45, 0x8a, 0x03,
+  0x26, 0x36, 0x85, 0x25, 0xf6, 0x21, 0x2e, 0xe6, 0x4c, 0xf1, 0x49, 0x70,
+  0x92, 0xf9, 0x38, 0x4b, 0xaf, 0xd2, 0xca, 0xa3, 0x35, 0x94, 0xd1, 0x26,
+  0xd1, 0xcb, 0x16, 0xac, 0x07, 0x82, 0x42, 0xad, 0xce, 0xe5, 0x3e, 0xa2,
+  0x31, 0x05, 0x47, 0xae, 0xcf, 0xda, 0x44, 0x9f, 0xb6, 0x22, 0x99, 0xcf,
+  0x9c, 0x75, 0x49, 0x2f, 0x11, 0x79, 0x6e, 0x28, 0x4f, 0xc8, 0x41, 0x83,
+  0x0a, 0x28, 0xb8, 0x85, 0x31, 0x62, 0x61, 0x1a, 0x7d, 0x46, 0x0e, 0x01,
+  0x3c, 0xc8, 0xba, 0x10, 0x4c, 0x40, 0x09, 0xbf, 0xf4, 0x53, 0xed, 0x97,
+  0x4d, 0x14, 0xcb, 0xa4, 0x5e, 0xc9, 0x7c, 0x96, 0x58, 0x59, 0xa9, 0x3a,
+  0x70, 0xa1, 0x7b, 0x5d, 0x4c, 0x38, 0xab, 0xa2, 0x81, 0xbd, 0xf4, 0x67,
+  0x9f, 0xe5, 0x02, 0x3f, 0x31, 0x2b, 0xb4, 0x77, 0xb1, 0x65, 0xd7, 0x20,
+  0xab, 0xce, 0xce, 0xbe, 0xab, 0x17, 0x3b, 0xcb, 0x35, 0x9a, 0x08, 0x00,
+  0x71, 0xd8, 0x20, 0x6b, 0xce, 0xaa, 0x7f, 0xa9, 0xab, 0x79, 0x86, 0x78,
+  0x1e, 0x83, 0x5f, 0x13, 0x33, 0xbb, 0x24, 0xe9, 0x04, 0x41, 0xb8, 0x52,
+  0xd1, 0x4d, 0xa7, 0x2c, 0xb5, 0x59, 0x36, 0x1a, 0x09, 0x0f, 0x57, 0x49,
+  0x15, 0x94, 0x39, 0xb1, 0x14, 0x6f, 0x3f, 0x0b, 0x43, 0x46, 0x07, 0x4b,
+  0x92, 0xc5, 0xf7, 0x35, 0xca, 0x04, 0xb7, 0x4c, 0xbd, 0xc2, 0x52, 0x34,
+  0x06, 0xd8, 0x84, 0xb5, 0x1d, 0xe3, 0xcd, 0x72, 0x4c, 0x90, 0x76, 0x8d,
+  0xe8, 0x30, 0x8c, 0x3a, 0x11, 0xfa, 0x0a, 0xcc, 0x05, 0x56, 0x55, 0x28,
+  0x97, 0x18, 0x8a, 0xad, 0x11, 0xc6, 0x80, 0x72, 0x1a, 0xd8, 0x09, 0xee,
+  0x36, 0xdc, 0xd2, 0xe4, 0x63, 0x85, 0x12, 0x60, 0x78, 0xcc, 0x6e, 0xa5,
+  0xf1, 0xf1, 0xff, 0x3e, 0x1a, 0x85, 0x91, 0xd1, 0xff, 0xa0, 0x18, 0xd3,
+  0xf3, 0x20, 0x0b, 0x94, 0x5f, 0xeb, 0x4a, 0x72, 0x09, 0x40, 0xae, 0x1b,
+  0xf5, 0x44, 0x6d, 0x6f, 0xd8, 0x33, 0xcb, 0x14, 0x83, 0xac, 0x63, 0x25,
+  0xcc, 0xae, 0x6a, 0x2b, 0xb4, 0x8c, 0x8b, 0x65, 0xe4, 0xad, 0x12, 0xe6,
+  0xd5, 0x13, 0x9b, 0xaf, 0x47, 0x56, 0x15, 0x73, 0x69, 0xec, 0x63, 0x71,
+  0xb4, 0xac, 0x6b, 0x53, 0x98, 0xf6, 0x69, 0xcd, 0xb2, 0xed, 0x5c, 0x09,
+  0x17, 0x99, 0xc3, 0xbc, 0x00, 0xdc, 0x57, 0x68, 0xa4, 0xe7, 0x9b, 0x98,
+  0x74, 0x52, 0x3c, 0xde, 0x09, 0x3b, 0x20, 0x28, 0x43, 0x61, 0xae, 0xa6,
+  0x13, 0x86, 0x64, 0x86, 0xf3, 0xc4, 0x10, 0x51, 0xe0, 0xd9, 0x0a, 0x6b,
+  0x3e, 0x75, 0xe4, 0x7b, 0x94, 0x74, 0xe1, 0x03, 0x44, 0x91, 0x81, 0xab,
+  0xa4, 0xf3, 0x08, 0x08, 0x86, 0x86, 0x20, 0x22, 0x60, 0x88, 0x65, 0x50,
+  0x4b, 0x57, 0xcd, 0x6b, 0xf2, 0x70, 0xab, 0x62, 0x3a, 0xe3, 0x7a, 0xc0,
+  0xba, 0xc0, 0xf8, 0x0f, 0x3e, 0x5e, 0xbe, 0x6c, 0x17, 0x98, 0x49, 0xae,
+  0x66, 0x43, 0x15, 0x9a, 0xea, 0x67, 0x98, 0x57, 0xe1, 0xce, 0x05, 0x05,
+  0x06, 0xbb, 0x9b, 0x06, 0xb1, 0x2a, 0xf1, 0x5c, 0xcd, 0x16, 0x8c, 0xfd,
+  0x06, 0x77, 0x87, 0xcb, 0xfa, 0x85, 0x09, 0xad, 0x35, 0xd3, 0x0a, 0xd6,
+  0x43, 0xa0, 0xc0, 0xb8, 0x3a, 0x0e, 0xc8, 0xee, 0x45, 0xfe, 0x59, 0x54,
+  0x8b, 0x8f, 0x77, 0xc8, 0x73, 0x0b, 0x18, 0xf8, 0x01, 0x33, 0xd2, 0x74,
+  0xce, 0x52, 0xbf, 0xa8, 0x0e, 0x3f, 0xa0, 0x95, 0xb8, 0x6b, 0x15, 0x35,
+  0xac, 0xf9, 0xb3, 0x83, 0x04, 0x66, 0x0e, 0xa3, 0x79, 0x28, 0x00, 0xe3,
+  0x5a, 0x24, 0x8b, 0x9a, 0xbf, 0x58, 0xbc, 0x00, 0xbc, 0xa6, 0x3c, 0x69,
+  0x97, 0x36, 0x5e, 0x76, 0x5b, 0x6a, 0x67, 0x49, 0x6c, 0x10, 0x1c, 0xb4,
+  0xa7, 0x44, 0xa9, 0xed, 0x24, 0xea, 0xbb, 0xa4, 0x48, 0x3c, 0x26, 0x2d,
+  0xa2, 0xd5, 0xe8, 0xf4, 0x8d, 0xa2, 0x71, 0x4e, 0xcf, 0x77, 0x14, 0x9d,
+  0xb2, 0xfc, 0x91, 0x1a, 0x44, 0x25, 0xc6, 0xe3, 0xab, 0x42, 0x73, 0xb6,
+  0xb4, 0x18, 0x80, 0xeb, 0xf3, 0xed, 0x40, 0xb5, 0x82, 0xa5, 0x96, 0x06,
+  0x6e, 0xb5, 0xc4, 0x07, 0xca, 0x44, 0x61, 0x6c, 0x64, 0x96, 0xd3, 0x1b,
+  0xe6, 0xd1, 0x10, 0x20, 0xfb, 0x00, 0xdc, 0x0a, 0x9a, 0x7b, 0x28, 0x31,
+  0x6e, 0xf7, 0x45, 0x3d, 0xa6, 0x90, 0xeb, 0x9e, 0xcd, 0x89, 0xa1, 0xbf,
+  0x64, 0xf7, 0x23, 0xbc, 0x8f, 0xfb, 0x6b, 0x72, 0xa8, 0xce, 0x1c, 0x80,
+  0xdc, 0x94, 0x86, 0xc0, 0x29, 0x02, 0x9a, 0x2b, 0x22, 0x73, 0xf4, 0x93,
+  0x94, 0x04, 0x16, 0xa1, 0x15, 0x71, 0x47, 0x2e, 0xe3, 0xb4, 0x18, 0xb5,
+  0x7c, 0x9a, 0x0e, 0xf0, 0xd3, 0xa6, 0xc6, 0x92, 0xa2, 0x2b, 0xfb, 0xac,
+  0x55, 0x8e, 0x25, 0x14, 0x75, 0xb3, 0xdc, 0x32, 0x64, 0xd3, 0x35, 0x72,
+  0x7b, 0x2d, 0x1f, 0x49, 0x91, 0xfa, 0x61, 0x6b, 0x70, 0x75, 0x1f, 0x05,
+  0x4b, 0x15, 0x41, 0x49, 0x98, 0xf2, 0x2c, 0xa8, 0x0c, 0xd1, 0x8a, 0x5f,
+  0xb2, 0xba, 0x36, 0x23, 0x41, 0x16, 0xe0, 0xf3, 0xcf, 0x07, 0x8b, 0xfa,
+  0xcf, 0x25, 0xe1, 0x73, 0x3b, 0xa9, 0xa6, 0xdb, 0x02, 0x2d, 0x05, 0x12,
+  0xcf, 0x00, 0xb7, 0xe9, 0xb4, 0x83, 0x56, 0x99, 0xfb, 0x96, 0x83, 0x47,
+  0xcc, 0x0f, 0x41, 0xc9, 0xbb, 0x20, 0x1f, 0x0a, 0x1c, 0xd5, 0x7c, 0xb8,
+  0x1d, 0x06, 0xda, 0x4b, 0x83, 0x69, 0x0a, 0x16, 0xdd, 0x39, 0x3b, 0x0d,
+  0xbe, 0xa9, 0x76, 0x4f, 0xf0, 0x2b, 0xbe, 0xcc, 0x62, 0x07, 0xf5, 0x66,
+  0x49, 0x70, 0xeb, 0xb8, 0x50, 0xbb, 0x3a, 0x38, 0xa3, 0x83, 0x10, 0x0c,
+  0x36, 0xbe, 0xcb, 0xf4, 0xce, 0xa7, 0x07, 0x23, 0x90, 0xb8, 0x39, 0x83,
+  0x47, 0x00, 0x4a, 0xcd, 0x23, 0x00, 0x8c, 0x96, 0xc0, 0xae, 0xd1, 0x55,
+  0x3e, 0xbf, 0x9f, 0xad, 0xce, 0x33, 0xfd, 0xc4, 0x25, 0x48, 0x75, 0x04,
+  0x9e, 0xe9, 0xe6, 0x3e, 0x1c, 0x3c, 0xb4, 0x3b, 0x7a, 0x52, 0x3f, 0x03,
+  0xac, 0x11, 0x76, 0x55, 0x9c, 0x80, 0x10, 0x07, 0x4e, 0x88, 0x22, 0x19,
+  0x88, 0x0d, 0x93, 0x84, 0x1f, 0xb6, 0x30, 0x24, 0x16, 0x26, 0x84, 0x80,
+  0x03, 0x81, 0x13, 0x61, 0x6e, 0xa3, 0xa5, 0x39, 0xda, 0x60, 0x88, 0x81,
+  0xff, 0x88, 0xe3, 0x2c, 0xad, 0xf4, 0x4d, 0xa1, 0xd1, 0x96, 0x5e, 0x27,
+  0x92, 0x39, 0xab, 0xe5, 0x98, 0x78, 0x19, 0x1f, 0x95, 0xd5, 0x72, 0xd4,
+  0xae, 0x87, 0xe1, 0xe2, 0xc5, 0xf4, 0x5d, 0xea, 0x7e, 0x27, 0x4c, 0x3e,
+  0x44, 0xea, 0x8d, 0x46, 0xf2, 0x96, 0x56, 0xcc, 0xce, 0x82, 0x6d, 0x5a,
+  0x3c, 0x11, 0xac, 0x94, 0x6b, 0x11, 0x5c, 0xb8, 0x29, 0xeb, 0x9c, 0x35,
+  0x7b, 0x48, 0xd0, 0xc5, 0xf6, 0x79, 0x51, 0xa4, 0xe0, 0xd9, 0xc0, 0x7c,
+  0x01, 0x4f, 0x3f, 0x7e, 0x6c, 0xef, 0x84, 0x2f, 0x66, 0x0e, 0x5d, 0x51,
+  0x5d, 0xf3, 0xcf, 0x3e, 0x7e, 0xac, 0x7f, 0xf9, 0x40, 0x99, 0x6a, 0x96,
+  0x1d, 0x50, 0x8f, 0xab, 0xca, 0x75, 0xa5, 0xe2, 0x60, 0x15, 0x0d, 0x96,
+  0x58, 0x71, 0x1b, 0xef, 0x62, 0x89, 0x5e, 0x6d, 0xfb, 0x82, 0xa0, 0xfd,
+  0x09, 0x47, 0xaa, 0xae, 0x13, 0x7f, 0x4d, 0x30, 0x18, 0xd6, 0x35, 0x9d,
+  0x4a, 0xa9, 0x24, 0xa5, 0x44, 0xef, 0x2a, 0x57, 0xaf, 0x34, 0x7b, 0xac,
+  0x19, 0x16, 0x12, 0x4b, 0x75, 0x4e, 0x80, 0xe5, 0xaf, 0xb2, 0x2a, 0x9d,
+  0xf3, 0x3b, 0xa8, 0x50, 0x48, 0xaf, 0xef, 0xd2, 0xfa, 0xa7, 0xd9, 0x8a,
+  0x75, 0x2a, 0x59, 0x6d, 0x74, 0xe8, 0x8a, 0x65, 0x75, 0x2d, 0xfb, 0x3c,
+  0xbe, 0x8f, 0x5c, 0x24, 0x85, 0x81, 0xd7, 0x07, 0xc0, 0x2c, 0x18, 0x97,
+  0xa0, 0x20, 0x5a, 0x1e, 0x1a, 0xd6, 0x62, 0x88, 0x57, 0x3b, 0x0e, 0xb3,
+  0xbb, 0x83, 0x34, 0xe9, 0x2e, 0xf9, 0x48, 0x8b, 0x2d, 0xa1, 0x96, 0x92,
+  0x3a, 0x4a, 0x8a, 0x1e, 0xdf, 0x32, 0x57, 0x79, 0x41, 0x1b, 0xba, 0x50,
+  0xa9, 0x43, 0x82, 0x46, 0x5b, 0x61, 0x1a, 0xd2, 0x95, 0x2b, 0x5d, 0x28,
+  0x01, 0xbc, 0xa8, 0x59, 0x22, 0xde, 0xc1, 0xbc, 0x52, 0x39, 0xd5, 0xca,
+  0xad, 0x60, 0x75, 0x6d, 0xd4, 0x0f, 0x5d, 0x45, 0x7b, 0xe1, 0x31, 0xfc,
+  0xc7, 0xe7, 0x5c, 0x05, 0x6b, 0xf4, 0x40, 0xc1, 0x45, 0x13, 0x80, 0xcb,
+  0x79, 0x92, 0x2c, 0x35, 0x8e, 0xc5, 0x4a, 0xb0, 0xcb, 0xb4, 0xf4, 0x18,
+  0x8a, 0x08, 0xa0, 0x54, 0xa8, 0x6a, 0xcd, 0xba, 0x03, 0xae, 0xb7, 0x37,
+  0x7b, 0x9e, 0x7c, 0x22, 0x7e, 0x1c, 0x05, 0xac, 0x44, 0xcf, 0xd5, 0x66,
+  0x5a, 0x85, 0xe2, 0x4c, 0xf7, 0x89, 0x74, 0x5b, 0xa6, 0xab, 0xac, 0xdb,
+  0xe6, 0x48, 0x46, 0xd7, 0x7a, 0x6b, 0x54, 0x93, 0x92, 0xda, 0x88, 0x12,
+  0xe2, 0x7b, 0x85, 0x3c, 0x08, 0x33, 0xe1, 0x15, 0x04, 0x1f, 0x65, 0x7f,
+  0x08, 0xea, 0x95, 0x42, 0xb7, 0x88, 0x1c, 0x08, 0xea, 0x9c, 0xca, 0x12,
+  0xb6, 0x58, 0x2d, 0x02, 0xef, 0x1b, 0x6a, 0x84, 0xe9, 0xea, 0x36, 0x72,
+  0x4f, 0x6d, 0x3c, 0xf6, 0x91, 0xa7, 0x80, 0x36, 0xe4, 0xc0, 0x3f, 0x8b,
+  0x20, 0x1e, 0x2d, 0xc2, 0x29, 0xa6, 0x44, 0xd9, 0x66, 0x7e, 0x50, 0xe3,
+  0xa8, 0x38, 0x2e, 0x95, 0x27, 0xe4, 0x1d, 0xe3, 0xc2, 0x76, 0xdc, 0x9e,
+  0xab, 0x0a, 0xd5, 0x32, 0x83, 0x29, 0x5f, 0xb1, 0x51, 0x01, 0x6e, 0x27,
+  0xe6, 0x69, 0x30, 0x1a, 0xc6, 0x26, 0xe3, 0xb9, 0xe9, 0xd0, 0xb6, 0xf8,
+  0xe3, 0x79, 0xce, 0x91, 0xd2, 0xa5, 0x2b, 0xc7, 0x51, 0xb4, 0xf0, 0x6b,
+  0x50, 0x59, 0x40, 0xd8, 0xcd, 0xac, 0xa3, 0xa2, 0xd8, 0xbb, 0x9c, 0x73,
+  0xc9, 0x5d, 0xcd, 0x10, 0xd7, 0x8e, 0xbe, 0xd9, 0x2e, 0x1f, 0xa0, 0xed,
+  0x68, 0x25, 0xa2, 0x41, 0x1d, 0xf3, 0x44, 0x07, 0x0d, 0x94, 0x00, 0x81,
+  0x6d, 0xbc, 0x36, 0xe4, 0x6f, 0xbe, 0xe3, 0x3a, 0x4a, 0x84, 0xca, 0xe5,
+  0xc6, 0x8e, 0x4b, 0x44, 0x3d, 0xf0, 0x7c, 0x3a, 0xca, 0x9f, 0x61, 0x07,
+  0xa8, 0x91, 0x34, 0x9f, 0x21, 0x5e, 0x42, 0x38, 0x4a, 0xab, 0x38, 0xaf,
+  0xe4, 0x98, 0xea, 0x68, 0xfa, 0xa5, 0xab, 0xfe, 0xc4, 0xaf, 0x4b, 0x59,
+  0x16, 0x94, 0x56, 0x0d, 0x6a, 0xab, 0x8e, 0x22, 0x2d, 0x14, 0x55, 0xb5,
+  0x4b, 0xcd, 0x7a, 0x08, 0x15, 0xd0, 0x6e, 0x25, 0x00, 0x1d, 0x56, 0xbb,
+  0xd3, 0x31, 0xda, 0x7f, 0x22, 0x93, 0x2a, 0x51, 0x4d, 0x3a, 0x9d, 0xb7,
+  0x33, 0x1e, 0xc6, 0xf8, 0x50, 0x74, 0xb1, 0xbf, 0xae, 0x52, 0x94, 0xbe,
+  0x02, 0x7c, 0xc0, 0xeb, 0x9c, 0xf7, 0xbf, 0xd4, 0xd8, 0xe9, 0x2b, 0x48,
+  0x62, 0x1a, 0x46, 0x54, 0x28, 0x57, 0xa1, 0xee, 0x5b, 0x2a, 0x2c, 0x23,
+  0x0e, 0x8f, 0xac, 0x10, 0x08, 0xd0, 0xdf, 0x17, 0x74, 0x49, 0x8d, 0x1c,
+  0x8a, 0x39, 0x31, 0x84, 0x0e, 0x80, 0x7f, 0x35, 0xdc, 0x94, 0x37, 0x6d,
+  0x09, 0x74, 0x50, 0x8b, 0xdf, 0x87, 0xd3, 0x5e, 0x9d, 0x10, 0x15, 0x67,
+  0x84, 0x90, 0xe6, 0xb7, 0x2d, 0x70, 0x67, 0x56, 0x2b, 0x9d, 0x9b, 0xb2,
+  0xd0, 0xf0, 0x26, 0xd9, 0xd4, 0x02, 0x23, 0xcb, 0xb8, 0x9c, 0x0f, 0xd3,
+  0x26, 0xe1, 0x0b, 0x94, 0xa7, 0x0b, 0xd1, 0xf1, 0x22, 0x04, 0x12, 0xca,
+  0xc6, 0x07, 0xa4, 0x49, 0xb7, 0xf1, 0x3d, 0x1f, 0x62, 0x37, 0x4f, 0x76,
+  0x6b, 0xaa, 0xd0, 0x18, 0x5b, 0x41, 0xcb, 0x3a, 0xc4, 0x22, 0xae, 0x41,
+  0xd9, 0xf6, 0xec, 0x7c, 0x58, 0x8a, 0x14, 0x17, 0x48, 0x5b, 0xd8, 0x14,
+  0xcb, 0x21, 0x30, 0x9c, 0x67, 0x3e, 0x84, 0xad, 0xf2, 0xeb, 0x88, 0x5f,
+  0xa8, 0xcd, 0xb9, 0x9c, 0x4b, 0xb0, 0x94, 0xc1, 0x4d, 0x09, 0xf4, 0x94,
+  0x80, 0x4e, 0x5d, 0x14, 0xf7, 0x16, 0x14, 0xc9, 0xa9, 0xcc, 0x17, 0x27,
+  0xe3, 0x40, 0x05, 0xf0, 0xe6, 0x83, 0x36, 0xe7, 0xe1, 0xb4, 0x3f, 0x91,
+  0x9d, 0x61, 0x8a, 0x44, 0x3d, 0xe5, 0xb0, 0x7a, 0xb6, 0xab, 0xa8, 0x2c,
+  0xa6, 0x55, 0x2b, 0x5b, 0xa2, 0x76, 0xb3, 0x26, 0x45, 0x4a, 0xd7, 0xa1,
+  0x8d, 0x42, 0xd2, 0xed, 0x69, 0xec, 0x43, 0x4b, 0xfe, 0x67, 0x1e, 0x81,
+  0xd9, 0x10, 0x4b, 0xfb, 0xab, 0x88, 0x02, 0xaa, 0x02, 0x0c, 0x5b, 0x56,
+  0x90, 0x2a, 0x62, 0x48, 0xd3, 0x39, 0xa2, 0x11, 0x93, 0x6c, 0x5a, 0xdc,
+  0xd7, 0x10, 0x33, 0x67, 0x9f, 0x50, 0xf0, 0xaf, 0xae, 0x3c, 0x30, 0x3c,
+  0x2b, 0x33, 0x25, 0xc6, 0x24, 0xd7, 0x2a, 0x90, 0xf4, 0x89, 0x1b, 0x63,
+  0xfd, 0x5c, 0xef, 0xa2, 0xcc, 0x6a, 0xb3, 0x39, 0x5f, 0xc2, 0x5d, 0xdc,
+  0x75, 0xb4, 0x99, 0x72, 0x30, 0x4c, 0x8f, 0x02, 0x4a, 0x6d, 0x88, 0x04,
+  0xc9, 0x2e, 0xa6, 0x99, 0xd0, 0x60, 0x93, 0x7b, 0x5d, 0xae, 0x60, 0x16,
+  0xd5, 0xb4, 0xc5, 0xc6, 0x6e, 0x63, 0x7d, 0x3a, 0x82, 0xe5, 0x06, 0x91,
+  0x12, 0x80, 0x52, 0x80, 0x92, 0x00, 0x6d, 0xa6, 0x82, 0x3f, 0x87, 0x14,
+  0x50, 0xaf, 0x85, 0xde, 0x9a, 0x8e, 0x9c, 0xc3, 0x4a, 0x4d, 0x25, 0x9f,
+  0xba, 0xed, 0x6e, 0xa3, 0x3f, 0xb9, 0x32, 0xe9, 0xda, 0xdd, 0xf0, 0xdb,
+  0xa1, 0xfb, 0x01, 0x0b, 0x9a, 0xa7, 0x1a, 0xd0, 0xc8, 0x66, 0x3c, 0xeb,
+  0xc4, 0x20, 0x42, 0x9d, 0xf3, 0x67, 0x5b, 0xa3, 0x4f, 0xdd, 0x16, 0x27,
+  0x63, 0xeb, 0xa6, 0xb4, 0x41, 0x93, 0xe3, 0x47, 0xb6, 0x04, 0x02, 0x2c,
+  0x43, 0xc1, 0xb5, 0xb2, 0x05, 0x14, 0xb6, 0x3c, 0x94, 0xaf, 0xaa, 0x5a,
+  0xb0, 0x39, 0x5f, 0x24, 0x28, 0xd3, 0x12, 0x23, 0x7f, 0x23, 0x2c, 0x5e,
+  0x7e, 0x39, 0x8f, 0xef, 0xba, 0x00, 0x9c, 0x71, 0x98, 0xa5, 0x6a, 0x1d,
+  0xad, 0x76, 0x18, 0xb0, 0x5c, 0x7a, 0xea, 0xfd, 0xea, 0xe8, 0x60, 0x7c,
+  0x31, 0x6a, 0x5e, 0x39, 0xad, 0x74, 0x22, 0x14, 0x1b, 0x52, 0x33, 0x11,
+  0xb8, 0x02, 0x1b, 0x16, 0x23, 0x2e, 0x8d, 0x5b, 0x38, 0xf0, 0x3c, 0x1e,
+  0x9e, 0x8c, 0xce, 0xda, 0xe7, 0xfc, 0xa7, 0x0e, 0x00, 0x23, 0x48, 0x88,
+  0x70, 0x78, 0x4e, 0xd2, 0x39, 0xcf, 0x80, 0xc6, 0x45, 0xac, 0x77, 0xa1,
+  0x79, 0x16, 0x5c, 0xdf, 0x3e, 0xca, 0xe7, 0x00, 0xdf, 0x42, 0x37, 0x0d,
+  0x28, 0xf3, 0x56, 0xb9, 0xd0, 0x83, 0xf3, 0x77, 0xc7, 0xef, 0xbe, 0xde,
+  0xaf, 0xdd, 0x99, 0xf3, 0x3c, 0x2f, 0x13, 0xf5, 0xd1, 0x0b, 0x8a, 0xba,
+  0xac, 0x96, 0xe4, 0x87, 0x3a, 0xc4, 0x8d, 0x8e, 0x4b, 0x9c, 0xc1, 0x0d,
+  0x05, 0x2a, 0xb6, 0xbc, 0x11, 0xd3, 0x9c, 0xd6, 0x96, 0x61, 0x89, 0x67,
+  0xf4, 0x70, 0x9d, 0xdf, 0x32, 0x9f, 0xde, 0x94, 0x4f, 0xc5, 0xd8, 0xf5,
+  0xc9, 0xb1, 0xf6, 0xe3, 0xd3, 0xc3, 0x6f, 0xc7, 0x4f, 0x83, 0x48, 0xfb,
+  0xaa, 0x61, 0xb8, 0xd1, 0xf2, 0xb3, 0x78, 0xa3, 0x9d, 0xa6, 0xfa, 0x48,
+  0x98, 0x7d, 0x9d, 0x2b, 0x3d, 0x0b, 0x6d, 0xa2, 0x9d, 0xc7, 0xaa, 0x5e,
+  0xc4, 0x84, 0x4d, 0x5d, 0x69, 0xbe, 0x72, 0x08, 0xfa, 0x01, 0x5c, 0xd5,
+  0x40, 0xa5, 0xc8, 0xfb, 0x8e, 0x2a, 0x85, 0x56, 0xdd, 0x24, 0xa8, 0x67,
+  0xd2, 0x8a, 0x8e, 0x63, 0x18, 0x0e, 0x31, 0x96, 0x7c, 0x36, 0x68, 0x8a,
+  0x3b, 0xc4, 0x29, 0x48, 0xfe, 0x9b, 0xaf, 0xb8, 0x67, 0xe0, 0x75, 0x38,
+  0x40, 0x13, 0x17, 0xac, 0xd9, 0x94, 0x3f, 0x64, 0xe5, 0x2d, 0x7e, 0x9f,
+  0xa1, 0x5a, 0xfc, 0x50, 0x75, 0xb3, 0x63, 0x7d, 0x6a, 0x7f, 0x7b, 0xdb,
+  0x9b, 0xb3, 0x24, 0xb8, 0x70, 0xf4, 0xdb, 0x69, 0x05, 0xd2, 0x67, 0xfc,
+  0xab, 0x88, 0x22, 0xfe, 0x34, 0xaa, 0x68, 0x49, 0xc9, 0xbf, 0x90, 0x2a,
+  0x3e, 0x5f, 0xc7, 0x6c, 0x3b, 0x0b, 0xdb, 0x3c, 0x48, 0x13, 0xae, 0xce,
+  0xcd, 0xff, 0x20, 0xaa, 0x88, 0x3f, 0x8d, 0x2c, 0xe2, 0x1a, 0x5d, 0xac,
+  0xc9, 0x09, 0xff, 0x2d, 0x31, 0x25, 0x31, 0x8c, 0x67, 0x43, 0x87, 0x8d,
+  0xff, 0x18, 0xc5, 0xd4, 0x4c, 0xb4, 0x2c, 0x24, 0x80, 0x68, 0x9e, 0xe9,
+  0x6c, 0x37, 0x61, 0x09, 0x4e, 0x42, 0xd0, 0x34, 0x33, 0xc6, 0x77, 0x43,
+  0xf4, 0xe3, 0xee, 0xdb, 0x7a, 0x94, 0x03, 0x39, 0xda, 0x12, 0xfc, 0x26,
+  0xa1, 0xae, 0x56, 0x38, 0xf3, 0x2f, 0xa7, 0xb5, 0xff, 0x57, 0x70, 0xa0,
+  0x67, 0xbe, 0xb2, 0xc1, 0xa7, 0xd0, 0xdc, 0xb3, 0x6b, 0x47, 0x73, 0x5d,
+  0x45, 0x3f, 0x8d, 0x37, 0xfd, 0xc6, 0xf9, 0x3a, 0x1d, 0x72, 0x95, 0xad,
+  0x3a, 0xdc, 0xd4, 0x05, 0xa9, 0xd8, 0x88, 0x6e, 0x08, 0x01, 0xf4, 0x35,
+  0x09, 0xa4, 0x8d, 0xb4, 0xab, 0x74, 0xec, 0x52, 0xa9, 0x03, 0xeb, 0xb1,
+  0xa0, 0x51, 0xd1, 0x08, 0x5a, 0x77, 0xe6, 0xb3, 0x5f, 0xc3, 0x1e, 0x8d,
+  0xd2, 0x19, 0xcf, 0x60, 0x22, 0x49, 0xdb, 0x42, 0xdf, 0x5a, 0x71, 0x33,
+  0xb7, 0x62, 0xd2, 0x5d, 0xce, 0x60, 0xc0, 0x71, 0x5b, 0x5a, 0xdb, 0xa3,
+  0xb4, 0x5e, 0xe3, 0xa3, 0x1d, 0x99, 0x05, 0xeb, 0x52, 0xda, 0xfe, 0xdf,
+  0xc2, 0x43, 0x9f, 0x7d, 0x1a, 0x39, 0xff, 0x33, 0x6e, 0xd6, 0xff, 0x41,
+  0xc4, 0xdb, 0xb1, 0xcd, 0x9b, 0x8a, 0x4c, 0x26, 0x9a, 0xa1, 0x5c, 0x2c,
+  0x5b, 0x82, 0x33, 0xe3, 0x44, 0x78, 0x2c, 0xe2, 0xf1, 0xd9, 0x77, 0xcf,
+  0x25, 0xf0, 0x6d, 0xdc, 0x86, 0xd6, 0x3f, 0x79, 0x7d, 0x70, 0xd6, 0x71,
+  0x33, 0x5c, 0x91, 0xc2, 0xbf, 0x4c, 0x87, 0xac, 0x56, 0xb1, 0x09, 0xee,
+  0xa5, 0xfe, 0xc2, 0x24, 0xde, 0x65, 0x64, 0x34, 0x23, 0xa9, 0x3d, 0x2f,
+  0xd8, 0xdd, 0xe2, 0x31, 0xc6, 0x2c, 0x55, 0x3f, 0x63, 0x87, 0xd3, 0x74,
+  0x31, 0xdb, 0x96, 0x3f, 0x87, 0x97, 0x7f, 0x9d, 0xb5, 0x55, 0xbd, 0x10,
+  0x18, 0xbb, 0x96, 0x88, 0xa8, 0x60, 0xe3, 0x69, 0xb5, 0xae, 0x04, 0x73,
+  0xb9, 0x1f, 0x9c, 0xf2, 0x48, 0x73, 0x6b, 0x01, 0x2a, 0xbd, 0x6e, 0x5e,
+  0x42, 0x73, 0xad, 0xea, 0x07, 0x52, 0x2b, 0x04, 0x55, 0x07, 0xf8, 0xeb,
+  0xed, 0xa0, 0x29, 0xd7, 0x7e, 0xc7, 0x67, 0xd6, 0x7a, 0x47, 0x02, 0x0f,
+  0x77, 0x26, 0x6d, 0x31, 0xc2, 0x9e, 0x8e, 0x2a, 0xe8, 0xa7, 0xfd, 0x25,
+  0xec, 0x0d, 0x8c, 0xbd, 0x50, 0xb6, 0xaa, 0x90, 0xb0, 0x3b, 0xdf, 0xdf,
+  0xb5, 0x43, 0x2d, 0xfd, 0xa8, 0xfb, 0x2e, 0x35, 0x6b, 0x34, 0x81, 0x31,
+  0x9b, 0xa6, 0xcb, 0x78, 0xae, 0x69, 0x9d, 0x0f, 0xd5, 0x4e, 0x6a, 0x96,
+  0x9e, 0xa9, 0x4f, 0x88, 0x94, 0xed, 0x66, 0x39, 0xb7, 0x3a, 0x18, 0xb7,
+  0xd5, 0x93, 0xb3, 0xe4, 0x69, 0x6c, 0x1e, 0xce, 0xa7, 0xaa, 0xe9, 0x08,
+  0xdd, 0x47, 0x0e, 0x2f, 0x9e, 0x68, 0x27, 0x25, 0xc1, 0x41, 0x0d, 0xe8,
+  0xa7, 0xdd, 0x17, 0xcf, 0x77, 0xa3, 0x32, 0xbe, 0x07, 0x3e, 0x4a, 0xa9,
+  0xef, 0x3f, 0x1d, 0x3d, 0xd9, 0x7e, 0x3a, 0x7a, 0x1a, 0xf9, 0xd2, 0xb2,
+  0x93, 0xc4, 0xda, 0x27, 0xc6, 0xd9, 0x42, 0xc5, 0x90, 0xf3, 0xf4, 0xee,
+  0xe8, 0x90, 0x59, 0xb5, 0xa5, 0xf8, 0x36, 0xd4, 0x3b, 0x03, 0x65, 0xa2,
+  0x55, 0x1b, 0xb9, 0xac, 0xe0, 0x2e, 0xa5, 0xb4, 0x63, 0x39, 0x22, 0xa3,
+  0x4d, 0x84, 0xe8, 0x67, 0x6e, 0x24, 0xcc, 0x2c, 0x85, 0x4c, 0x75, 0x65,
+  0xba, 0x20, 0x40, 0xc2, 0x35, 0x09, 0x56, 0x6c, 0xf4, 0x70, 0x35, 0xa0,
+  0xb2, 0x22, 0x3d, 0xb5, 0xe8, 0x8e, 0x12, 0x3a, 0x57, 0x63, 0x24, 0x5c,
+  0x81, 0x5c, 0xed, 0x5a, 0xfc, 0xcc, 0xfa, 0x8a, 0xc5, 0xcf, 0xd7, 0x52,
+  0x2a, 0x2c, 0xf8, 0xa5, 0xab, 0xd2, 0x65, 0x2d, 0x9b, 0x41, 0xeb, 0xfb,
+  0xa0, 0x38, 0x70, 0x7f, 0xd8, 0xb7, 0x4b, 0xca, 0x62, 0x67, 0xb8, 0xb7,
+  0x4a, 0x2c, 0xa6, 0xcd, 0x9a, 0x10, 0xff, 0x70, 0xb9, 0xb5, 0xe2, 0xdb,
+  0xa0, 0x4a, 0xe6, 0x59, 0x52, 0x69, 0xb9, 0xc9, 0xe8, 0xe5, 0xe9, 0xd9,
+  0xc5, 0xab, 0xdb, 0x78, 0xde, 0x8a, 0xf1, 0x60, 0x14, 0x45, 0x2b, 0xcd,
+  0xe9, 0xac, 0xb9, 0xfc, 0x66, 0x90, 0x1c, 0x35, 0x76, 0x39, 0x42, 0xf6,
+  0x64, 0x17, 0xac, 0xd2, 0xc5, 0xc5, 0x9f, 0xcf, 0x8e, 0x5e, 0xbd, 0x64,
+  0x5b, 0xf0, 0x17, 0x6c, 0x90, 0x2f, 0x6b, 0xa6, 0x61, 0x2e, 0x03, 0xdd,
+  0xbe, 0x19, 0x7f, 0x78, 0x7d, 0x3c, 0x3e, 0x3b, 0x39, 0x3d, 0x7c, 0xf5,
+  0xf2, 0x07, 0x76, 0x61, 0xd2, 0xea, 0xdd, 0x07, 0xef, 0xba, 0xcf, 0x5c,
+  0xba, 0x43, 0xbb, 0xf8, 0xdd, 0xd1, 0xf7, 0x1f, 0x8e, 0xde, 0x7d, 0xf7,
+  0xea, 0xe5, 0x6d, 0x5c, 0x0c, 0x78, 0x7e, 0xf2, 0x36, 0x9b, 0x64, 0x3b,
+  0xea, 0x22, 0x07, 0x6b, 0x74, 0x81, 0x6a, 0x88, 0x4b, 0x8e, 0x1d, 0x7c,
+  0x20, 0xac, 0x4c, 0xee, 0x32, 0x5f, 0x6f, 0xae, 0x29, 0xe0, 0x07, 0x51,
+  0x6c, 0xf5, 0x94, 0xd6, 0xf7, 0xe7, 0x27, 0xa3, 0x4e, 0x82, 0x71, 0x15,
+  0x19, 0x7c, 0x3d, 0x0e, 0xb5, 0x0d, 0xf9, 0x56, 0x51, 0xfc, 0xc2, 0xd7,
+  0x9d, 0x56, 0xc8, 0xd0, 0x07, 0x63, 0xe8, 0x84, 0x75, 0xf9, 0x70, 0x5a,
+  0x57, 0x0a, 0x52, 0x82, 0x68, 0x68, 0x06, 0x29, 0x30, 0x0b, 0xb6, 0x2d,
+  0x32, 0x65, 0xde, 0x36, 0x79, 0xf9, 0xd8, 0x77, 0xf8, 0xde, 0x21, 0xd4,
+  0x70, 0x04, 0x08, 0xe6, 0x76, 0x28, 0x40, 0xc5, 0x92, 0xa0, 0x52, 0x9f,
+  0x84, 0x30, 0xe2, 0xbc, 0x58, 0x0b, 0xe6, 0xce, 0x60, 0xe6, 0x37, 0x6e,
+  0x5c, 0x85, 0xd0, 0x6f, 0x3d, 0xf9, 0xc1, 0x52, 0xd3, 0x82, 0x42, 0x22,
+  0x1d, 0xe9, 0x71, 0x75, 0x7c, 0x53, 0xf1, 0x44, 0xb2, 0x4c, 0xc9, 0xb9,
+  0x7b, 0x9c, 0x7e, 0xe9, 0x22, 0x87, 0x65, 0x63, 0x3d, 0x3a, 0x76, 0xdb,
+  0x97, 0x89, 0x9a, 0xec, 0xee, 0xcc, 0xd9, 0x61, 0xcb, 0x1d, 0x2c, 0xf8,
+  0xe6, 0x78, 0xcb, 0xa5, 0x3b, 0x72, 0x8b, 0x67, 0xef, 0x2f, 0x82, 0x4c,
+  0xd7, 0x56, 0xb4, 0x5a, 0xeb, 0x10, 0x36, 0x04, 0x65, 0xbf, 0x50, 0xbd,
+  0x61, 0xaf, 0x59, 0x57, 0xc6, 0x4c, 0xfd, 0xc4, 0x18, 0xb8, 0xb2, 0xb8,
+  0xc7, 0x2e, 0x68, 0x89, 0x7e, 0x1a, 0x47, 0x2c, 0xb9, 0x5e, 0x74, 0xbd,
+  0x68, 0x20, 0x52, 0xe2, 0xea, 0x9f, 0x04, 0xfd, 0x8c, 0xc2, 0x7e, 0xc4,
+  0xf1, 0xb6, 0xd5, 0x4a, 0xea, 0xbb, 0x6f, 0x46, 0xea, 0xbb, 0xbe, 0x79,
+  0x9c, 0x0e, 0x52, 0x4e, 0x46, 0x06, 0x9b, 0x37, 0xbb, 0x15, 0x26, 0x44,
+  0x79, 0x1d, 0x35, 0x54, 0x24, 0x6b, 0x0d, 0xc8, 0xe7, 0x28, 0xf3, 0x8d,
+  0xec, 0x74, 0x04, 0x7d, 0x19, 0xa4, 0xb5, 0xd5, 0xa4, 0x56, 0x9f, 0xa2,
+  0x35, 0x5b, 0x76, 0x82, 0x36, 0xc9, 0x26, 0x76, 0x2c, 0xea, 0x9f, 0x1b,
+  0x02, 0x32, 0xb3, 0xc2, 0xe1, 0x85, 0x8f, 0xda, 0xe3, 0xa0, 0xbb, 0xce,
+  0x00, 0x2c, 0x94, 0xd7, 0x1b, 0x5e, 0xb4, 0xf0, 0xe0, 0xf8, 0x05, 0x0e,
+  0x59, 0x0b, 0x42, 0xd9, 0x11, 0x21, 0xca, 0xfb, 0x22, 0x94, 0xa4, 0x19,
+  0x37, 0x10, 0x2a, 0x46, 0x1a, 0x40, 0xcb, 0xfe, 0x90, 0x35, 0x79, 0xcd,
+  0x65, 0xd4, 0xbb, 0x9a, 0xe7, 0x93, 0x09, 0x4d, 0xaa, 0xe7, 0x2a, 0x71,
+  0x5c, 0x10, 0xdb, 0xbc, 0x82, 0xc8, 0x3b, 0x30, 0xb4, 0x40, 0x7f, 0x58,
+  0x51, 0xc1, 0x0a, 0x7d, 0xad, 0xcb, 0xcd, 0xc5, 0xde, 0x1a, 0xb2, 0xbc,
+  0xed, 0x2b, 0x2a, 0x4c, 0xdd, 0x07, 0xe5, 0x2f, 0x11, 0x8b, 0xc5, 0x9f,
+  0x5a, 0xff, 0xad, 0x30, 0x5e, 0xce, 0x25, 0xf5, 0x59, 0x9f, 0xca, 0x7c,
+  0xc0, 0x72, 0xb4, 0xb2, 0x50, 0xda, 0x91, 0xe7, 0xc9, 0x13, 0xa6, 0x09,
+  0xf4, 0xfe, 0x83, 0x07, 0xb1, 0x3b, 0xe0, 0x7f, 0xf7, 0xfe, 0xde, 0xb3,
+  0xfa, 0x51, 0x5c, 0xb1, 0x4f, 0x06, 0x5f, 0x71, 0xc9, 0x9e, 0xd2, 0x8a,
+  0x56, 0x75, 0xd4, 0xa8, 0x62, 0xb7, 0xe1, 0xda, 0xd6, 0xd3, 0xc5, 0xd5,
+  0x8f, 0xbb, 0xc3, 0xdd, 0x9d, 0x9d, 0x9d, 0x9f, 0x47, 0x4b, 0x5e, 0xba,
+  0x4b, 0x34, 0x4f, 0xff, 0x8e, 0x96, 0xe9, 0x94, 0x0d, 0xf9, 0xb4, 0x99,
+  0x69, 0xcc, 0x4d, 0x6f, 0x4b, 0x7f, 0xdb, 0xc1, 0xcd, 0x5f, 0x4d, 0x97,
+  0xc3, 0x2c, 0xef, 0x0a, 0x91, 0xb9, 0x58, 0x15, 0x59, 0x50, 0x7c, 0xf5,
+  0xc3, 0xbb, 0xd3, 0xd7, 0x47, 0x27, 0x07, 0x7f, 0xb6, 0x10, 0x5b, 0x07,
+  0x9b, 0xc0, 0x03, 0xf9, 0x90, 0xc4, 0xe5, 0xfd, 0x87, 0x32, 0xa9, 0xe8,
+  0xcb, 0xcd, 0x27, 0x5b, 0xc8, 0x7c, 0x6d, 0xd5, 0xdf, 0xbe, 0x12, 0xb1,
+  0xdd, 0x70, 0x14, 0x34, 0x62, 0xc9, 0xdf, 0xde, 0xa3, 0xa6, 0xeb, 0xa9,
+  0x16, 0xf8, 0x5a, 0xb1, 0x37, 0x64, 0x32, 0xbf, 0x29, 0xd3, 0xbf, 0xd1,
+  0xbd, 0xc3, 0xd8, 0x8a, 0xed, 0x78, 0xe6, 0x0b, 0x45, 0x50, 0xa8, 0x22,
+  0xfe, 0x2d, 0xfa, 0xea, 0xe4, 0x5b, 0x0e, 0x23, 0x77, 0x4a, 0xcd, 0x42,
+  0x52, 0xf6, 0xa3, 0x2f, 0x9e, 0xed, 0xee, 0x6d, 0xb9, 0x82, 0x22, 0x92,
+  0x8c, 0xc2, 0x87, 0xb3, 0xe5, 0x56, 0xff, 0x5b, 0x12, 0x54, 0x76, 0x10,
+  0xae, 0xec, 0x7d, 0x8c, 0x52, 0xa4, 0x5d, 0x6f, 0x39, 0x80, 0xfe, 0xc1,
+  0x17, 0x5c, 0x01, 0x66, 0x91, 0x13, 0x45, 0x5a, 0x60, 0x45, 0x17, 0x3e,
+  0x2b, 0x68, 0x14, 0x14, 0x6b, 0x8d, 0x68, 0x38, 0x9a, 0x5f, 0xd2, 0x2d,
+  0x9b, 0xfc, 0xa3, 0x65, 0x9d, 0x47, 0x3d, 0x55, 0xb4, 0xda, 0xf3, 0x92,
+  0xbd, 0xc4, 0x2c, 0x7f, 0x44, 0x2f, 0xed, 0xb7, 0x2f, 0xda, 0x91, 0x75,
+  0x11, 0x3b, 0x65, 0xda, 0xa8, 0x41, 0x90, 0x5b, 0x22, 0xbe, 0xff, 0x38,
+  0xa6, 0xd1, 0x17, 0x9a, 0x0a, 0xf3, 0x0d, 0xda, 0xe1, 0x9f, 0x6e, 0x5e,
+  0xbd, 0xf1, 0xf9, 0x59, 0x6f, 0xa0, 0x7a, 0x0a, 0x75, 0x30, 0xa4, 0xbf,
+  0x69, 0xbc, 0x10, 0xe1, 0x9f, 0xed, 0x3c, 0x7b, 0xba, 0xa5, 0x46, 0x0f,
+  0x8c, 0x53, 0x0a, 0xfc, 0xb4, 0x6b, 0x2e, 0xe0, 0x4b, 0x57, 0x2c, 0x59,
+  0xb0, 0x2f, 0x7c, 0xa2, 0x1d, 0x91, 0x5e, 0x7d, 0x96, 0x62, 0x30, 0xd1,
+  0xaa, 0xd8, 0xeb, 0xa3, 0x22, 0x74, 0xcf, 0x20, 0xf7, 0x61, 0x98, 0xed,
+  0xf2, 0xea, 0x4f, 0x1b, 0x0b, 0xe9, 0xc6, 0xf0, 0xd2, 0x7e, 0xeb, 0x5a,
+  0x48, 0x5f, 0xd6, 0x59, 0x8b, 0xd2, 0x39, 0x5c, 0x25, 0x5e, 0xe1, 0xe6,
+  0x02, 0x2b, 0xd2, 0xd7, 0x7a, 0x6f, 0x8a, 0xf3, 0xbf, 0x87, 0x93, 0x1c,
+  0x39, 0x07, 0xa9, 0x82, 0x09, 0xf9, 0x05, 0xb4, 0x0c, 0x97, 0xb2, 0xa3,
+  0x1e, 0xda, 0xc3, 0xd3, 0xc3, 0xeb, 0x2f, 0xf9, 0xdf, 0xae, 0x69, 0xf1,
+  0xe7, 0x4e, 0x63, 0xff, 0x27, 0x4c, 0x2b, 0x98, 0x97, 0x5b, 0x51, 0x9d,
+  0x5b, 0x4b, 0x75, 0xae, 0x1e, 0xdf, 0xbb, 0xdb, 0xdd, 0xd1, 0x4e, 0xa7,
+  0x93, 0xf3, 0x0d, 0x97, 0xb0, 0xab, 0xa3, 0x68, 0xf1, 0x84, 0x0c, 0x7c,
+  0x97, 0xfd, 0x94, 0x60, 0x10, 0x4e, 0x07, 0x33, 0x68, 0xb0, 0x35, 0x40,
+  0x6f, 0xfc, 0xb2, 0x03, 0x3a, 0xa8, 0xd5, 0x68, 0x79, 0xda, 0x3a, 0x99,
+  0x34, 0xa8, 0xdd, 0x5f, 0x37, 0xa8, 0xdd, 0xdf, 0x74, 0x50, 0x7b, 0xbf,
+  0x6e, 0x50, 0x7b, 0xbf, 0xd5, 0xa0, 0x8a, 0xa1, 0x25, 0x65, 0x74, 0x63,
+  0x44, 0x9f, 0x6b, 0xf8, 0x16, 0xc3, 0x1b, 0x2d, 0x18, 0x51, 0x91, 0xd9,
+  0xe9, 0x85, 0x72, 0xf4, 0xe1, 0x91, 0xbe, 0xeb, 0x43, 0x68, 0x44, 0x60,
+  0x68, 0x47, 0xce, 0xaa, 0xac, 0xe2, 0x42, 0x0e, 0xcb, 0x7a, 0xc9, 0x51,
+  0x71, 0xd6, 0xae, 0x32, 0xeb, 0x44, 0x73, 0xbd, 0x11, 0x38, 0x04, 0x99,
+  0xae, 0x35, 0xcf, 0x69, 0x92, 0x2a, 0x82, 0xed, 0x63, 0x11, 0xda, 0xcf,
+  0xeb, 0x13, 0x66, 0xe8, 0x9c, 0x4e, 0x9d, 0xcc, 0x55, 0xf8, 0x8d, 0x39,
+  0xe0, 0x82, 0xe3, 0x32, 0xe4, 0xe1, 0x68, 0xb6, 0x5a, 0x2c, 0x0d, 0xd6,
+  0x22, 0xcd, 0x34, 0xc8, 0x97, 0xc7, 0x4b, 0x97, 0xf3, 0x55, 0x6e, 0xb7,
+  0xda, 0xa0, 0x65, 0xd8, 0xe1, 0x92, 0x48, 0xf8, 0x36, 0x11, 0x74, 0x53,
+  0x0e, 0xeb, 0x4f, 0x33, 0xa9, 0x6d, 0x26, 0x15, 0x61, 0xf3, 0x00, 0x14,
+  0x4e, 0x45, 0x58, 0x11, 0xc1, 0xdf, 0xb7, 0x5c, 0xe9, 0x2c, 0x36, 0x73,
+  0x54, 0x0a, 0x07, 0x73, 0xa9, 0xc6, 0x82, 0xfc, 0xb9, 0xa0, 0x42, 0xa4,
+  0x55, 0x51, 0x5a, 0x63, 0x07, 0xe8, 0xb6, 0x51, 0x87, 0xf6, 0x69, 0xc4,
+  0xcf, 0x0c, 0x6f, 0x07, 0x52, 0x27, 0x76, 0x92, 0x97, 0x89, 0x24, 0x85,
+  0x60, 0x1d, 0x5a, 0x36, 0xa3, 0x72, 0x9a, 0xa6, 0xbf, 0xa5, 0x93, 0x4c,
+  0x7a, 0x45, 0x37, 0x0f, 0x6f, 0x58, 0x2c, 0xdb, 0x25, 0xbb, 0x15, 0x6e,
+  0x96, 0xdf, 0x2d, 0x89, 0x38, 0x74, 0xfb, 0xf5, 0x7f, 0xd0, 0x86, 0xd1,
+  0xff, 0x73, 0x35, 0x64, 0xce, 0x3a, 0x4c, 0xe7, 0x31, 0x8c, 0x49, 0xba,
+  0x34, 0x82, 0x26, 0x3c, 0x4f, 0x62, 0xce, 0x4c, 0x37, 0x13, 0xf6, 0x75,
+  0xf2, 0x51, 0x94, 0xff, 0xf6, 0x65, 0xaf, 0x80, 0x49, 0xd7, 0x6c, 0x36,
+  0xc3, 0xb3, 0x07, 0xe3, 0xc3, 0xe3, 0xe3, 0x9a, 0x1d, 0x91, 0x17, 0x4f,
+  0x92, 0x3b, 0x10, 0x8a, 0x56, 0x72, 0x9a, 0x0b, 0x87, 0x03, 0x62, 0xb8,
+  0x5d, 0x00, 0x66, 0x82, 0x4c, 0xca, 0x15, 0x9d, 0xe3, 0x32, 0xb5, 0x94,
+  0xda, 0x58, 0x2f, 0xe8, 0x8c, 0xad, 0x03, 0x9c, 0xdb, 0x70, 0xbd, 0x22,
+  0x59, 0xb7, 0xfc, 0x47, 0x13, 0xe4, 0xe8, 0xb7, 0x26, 0xbd, 0x8e, 0xdc,
+  0xc7, 0xb3, 0x42, 0xd3, 0x33, 0x25, 0x6f, 0x41, 0x93, 0x17, 0x19, 0x41,
+  0x87, 0x35, 0x40, 0xa1, 0x40, 0x1a, 0xa1, 0x0d, 0x16, 0xea, 0xa1, 0xe5,
+  0xaf, 0x76, 0x40, 0x8e, 0xaa, 0x19, 0xaa, 0x6c, 0x56, 0x22, 0x6f, 0x70,
+  0xe9, 0x55, 0x96, 0x7e, 0x84, 0x0d, 0x94, 0x84, 0x85, 0x97, 0x9c, 0x7f,
+  0xb8, 0xa6, 0xfe, 0xe0, 0xa1, 0x15, 0xc7, 0x72, 0x38, 0x87, 0xb4, 0x08,
+  0x28, 0x40, 0xa4, 0x35, 0xdc, 0xa5, 0x8d, 0x41, 0xa8, 0x8e, 0x83, 0x61,
+  0x77, 0xd8, 0x1f, 0xb3, 0xa4, 0x62, 0x17, 0x46, 0x5d, 0xe1, 0x78, 0x5a,
+  0x17, 0x81, 0x57, 0x03, 0xab, 0xf5, 0x08, 0xd9, 0x66, 0x7f, 0xad, 0xec,
+  0x16, 0xa4, 0x4f, 0x06, 0x85, 0x1e, 0x39, 0xc1, 0xca, 0xe4, 0x8f, 0xb0,
+  0xae, 0xab, 0xe8, 0xf4, 0x0f, 0x17, 0xee, 0x1e, 0x45, 0xa7, 0x8e, 0x62,
+  0x86, 0xd9, 0x00, 0xc0, 0xa1, 0x55, 0x31, 0xd5, 0xa8, 0x41, 0xfc, 0x3e,
+  0xb4, 0x0c, 0xdc, 0xf5, 0x55, 0xbc, 0x91, 0xca, 0x7b, 0xef, 0x31, 0x1f,
+  0xe5, 0xda, 0x71, 0x43, 0x1c, 0x04, 0x5a, 0xcd, 0x92, 0xb4, 0x95, 0xa5,
+  0xa6, 0xe1, 0xb5, 0xd4, 0x36, 0x99, 0x44, 0x27, 0xd0, 0x65, 0xf7, 0x7c,
+  0x15, 0x67, 0x6e, 0x39, 0x4f, 0x2b, 0xae, 0xc5, 0x17, 0xe5, 0x99, 0x83,
+  0x1f, 0x42, 0x02, 0xca, 0x34, 0x9f, 0x13, 0xbf, 0x69, 0x79, 0x1e, 0x90,
+  0x73, 0x23, 0x67, 0x13, 0x66, 0xe0, 0xc5, 0x32, 0x27, 0x9d, 0x58, 0xc1,
+  0xb0, 0xc5, 0x22, 0x87, 0x37, 0x4d, 0xfb, 0xf6, 0x9d, 0x77, 0x20, 0xc3,
+  0xd6, 0xd4, 0x4a, 0xa4, 0x90, 0xd9, 0x66, 0x4c, 0x63, 0x5a, 0x51, 0x84,
+  0xc5, 0x75, 0x27, 0xd4, 0xc8, 0x25, 0xff, 0x2d, 0x11, 0x79, 0x52, 0xe4,
+  0x65, 0xf4, 0xdd, 0x33, 0xc3, 0x68, 0xfb, 0x3e, 0xcd, 0x66, 0xcc, 0x5e,
+  0xa4, 0x56, 0xbc, 0xb3, 0xce, 0xc8, 0x5a, 0xc3, 0x6f, 0xd0, 0xc9, 0x73,
+  0xcd, 0x8f, 0x6b, 0xaf, 0x2b, 0xb5, 0x8a, 0xfd, 0xae, 0x31, 0x13, 0x20,
+  0x63, 0xd3, 0x20, 0x19, 0x32, 0x28, 0x2f, 0x3a, 0x08, 0x37, 0xa8, 0x32,
+  0x06, 0x60, 0x3c, 0xbe, 0x1b, 0xee, 0xa3, 0x7c, 0x52, 0x49, 0x39, 0x06,
+  0x37, 0xea, 0x8b, 0x94, 0xcf, 0x82, 0xab, 0xca, 0x3b, 0xcb, 0xdb, 0x21,
+  0xed, 0xaa, 0xe7, 0xf8, 0x50, 0xe1, 0x86, 0x2c, 0x7e, 0xcd, 0x90, 0x3b,
+  0xd7, 0x1c, 0x9b, 0xce, 0x06, 0x2f, 0x58, 0xfe, 0x36, 0xd6, 0x44, 0xfb,
+  0xe2, 0xd6, 0x61, 0x60, 0x57, 0x55, 0xf3, 0xfc, 0xce, 0xb4, 0x50, 0x2d,
+  0x94, 0x28, 0xe3, 0x72, 0x5d, 0xa5, 0x56, 0x59, 0x86, 0xd0, 0x71, 0x29,
+  0x0b, 0x36, 0xd0, 0x68, 0xcc, 0x42, 0x7d, 0x06, 0x56, 0x57, 0x49, 0x97,
+  0xb3, 0xe3, 0x4a, 0xe0, 0x04, 0x84, 0x12, 0x86, 0x62, 0xd8, 0x4f, 0xa5,
+  0x2c, 0xdb, 0xa5, 0x87, 0xba, 0x6f, 0x53, 0x74, 0xde, 0x38, 0x2c, 0xe1,
+  0x56, 0x31, 0x01, 0x4a, 0x5e, 0x57, 0xf4, 0x3a, 0xbf, 0xcb, 0x86, 0x27,
+  0x1c, 0x93, 0x1b, 0x9d, 0xe4, 0x57, 0xb4, 0x54, 0xef, 0xa4, 0x26, 0x43,
+  0xd3, 0x8a, 0x79, 0xf6, 0x2e, 0xda, 0x7c, 0xcf, 0x73, 0x3a, 0x73, 0xce,
+  0x32, 0x7e, 0x72, 0x4b, 0x2b, 0xc0, 0x12, 0x63, 0x0c, 0x80, 0xf7, 0x07,
+  0xd1, 0xd1, 0x0f, 0x07, 0x6f, 0xcf, 0x4e, 0x8e, 0x7e, 0x12, 0x75, 0xac,
+  0x35, 0x1d, 0xfe, 0xf8, 0x4b, 0x1b, 0x3a, 0x57, 0x19, 0xd7, 0x9a, 0x26,
+  0x74, 0x5d, 0xcf, 0xef, 0xd7, 0x73, 0x01, 0x39, 0x38, 0x46, 0x7c, 0xe3,
+  0xf1, 0xd9, 0xf1, 0x50, 0xf1, 0x07, 0xe4, 0xfc, 0x2b, 0xa8, 0x1b, 0xce,
+  0xaf, 0x26, 0xe4, 0x7d, 0xdb, 0x8e, 0x42, 0xb6, 0xb3, 0x30, 0xf0, 0xc0,
+  0xc4, 0x03, 0x81, 0xf2, 0xa5, 0x19, 0x74, 0x83, 0x41, 0x57, 0xae, 0x48,
+  0xea, 0xb4, 0x65, 0x0b, 0x42, 0x3d, 0x2e, 0x8f, 0xbc, 0x5d, 0x26, 0xf3,
+  0x44, 0xb1, 0x53, 0xd7, 0x70, 0x50, 0xe0, 0x6e, 0x60, 0x1b, 0xd9, 0x43,
+  0xd1, 0x2a, 0x51, 0xae, 0x1e, 0x8b, 0x89, 0x43, 0x41, 0x54, 0x6f, 0xbe,
+  0xd0, 0x88, 0x70, 0x0d, 0xd5, 0x3b, 0x1d, 0x5b, 0xd8, 0x27, 0x21, 0x66,
+  0x15, 0xed, 0xf7, 0x7e, 0x43, 0x29, 0xef, 0xbd, 0x0b, 0x30, 0xf8, 0xc7,
+  0x5f, 0x24, 0x1a, 0x33, 0xf2, 0xc8, 0x45, 0xf2, 0x20, 0x59, 0xb0, 0x2e,
+  0x60, 0x84, 0xf1, 0x30, 0x65, 0xcc, 0x72, 0xa5, 0xfd, 0xa6, 0x23, 0xc9,
+  0xa1, 0x54, 0xd3, 0x88, 0x40, 0x0e, 0x2d, 0x43, 0x90, 0xc7, 0xb5, 0x40,
+  0xd2, 0x6a, 0x7d, 0xe7, 0x5b, 0x1a, 0xf9, 0x2f, 0xa3, 0x83, 0xc6, 0xbe,
+  0xb7, 0xe3, 0x07, 0x3f, 0x95, 0x0e, 0xde, 0xff, 0xb6, 0x74, 0x80, 0x6a,
+  0xd2, 0x2f, 0xdf, 0x9f, 0x9f, 0xac, 0xdb, 0xf2, 0x18, 0xc6, 0x67, 0x86,
+  0x5c, 0x48, 0xaa, 0xe9, 0x75, 0x3d, 0x41, 0x0d, 0x18, 0xf9, 0x79, 0xc9,
+  0xa1, 0xbb, 0xe0, 0xc9, 0xf7, 0x01, 0x58, 0x48, 0x2b, 0xe5, 0x52, 0x45,
+  0x6e, 0x6d, 0x96, 0x1a, 0xe5, 0x94, 0x70, 0x5c, 0x0d, 0x01, 0x4c, 0xed,
+  0x23, 0xc9, 0xc5, 0x0b, 0xc9, 0xb3, 0xd4, 0xd0, 0x92, 0x1a, 0x9a, 0xa8,
+  0x22, 0x5d, 0x12, 0xa3, 0xb4, 0x44, 0x06, 0xd8, 0xf6, 0xbb, 0xee, 0x5e,
+  0x9e, 0x10, 0xe3, 0x67, 0x88, 0x07, 0x77, 0xe0, 0x52, 0xde, 0x86, 0x39,
+  0x1f, 0x0a, 0xd5, 0x11, 0x34, 0x36, 0x1f, 0xb0, 0x02, 0x3e, 0xd7, 0xbf,
+  0xcb, 0x87, 0xe5, 0xea, 0x6d, 0xdb, 0x9a, 0x86, 0x72, 0x73, 0xe3, 0x85,
+  0xaf, 0x80, 0x05, 0xc8, 0x71, 0x0c, 0xfa, 0xfd, 0x76, 0x15, 0xcf, 0x6f,
+  0x24, 0xf3, 0x9c, 0xb4, 0x80, 0x42, 0x33, 0xea, 0x0d, 0x16, 0x4c, 0x73,
+  0x60, 0x88, 0x53, 0x33, 0xca, 0x6c, 0x17, 0xee, 0xef, 0x64, 0x75, 0x75,
+  0x65, 0x6a, 0x71, 0x99, 0x24, 0x86, 0x85, 0xd1, 0x2f, 0x23, 0xd1, 0xb8,
+  0x68, 0xd5, 0x7a, 0xab, 0x6c, 0xa6, 0xe8, 0xb8, 0xd1, 0x75, 0x9e, 0xcf,
+  0x7a, 0x52, 0xfd, 0x8f, 0x45, 0xe4, 0x36, 0x24, 0x48, 0x11, 0x96, 0x45,
+  0xed, 0x7f, 0xd1, 0xb7, 0xbc, 0xe1, 0x9e, 0xd6, 0x46, 0x66, 0x05, 0xae,
+  0x27, 0x0a, 0x14, 0x91, 0x36, 0x1f, 0x96, 0x41, 0xd4, 0x7f, 0xd9, 0xef,
+  0xcc, 0x4a, 0xaf, 0xbf, 0x23, 0xa6, 0x03, 0x01, 0x12, 0x9b, 0x3a, 0xe7,
+  0x23, 0xed, 0xc3, 0x75, 0x4a, 0x82, 0x6e, 0xa6, 0xbe, 0x28, 0xce, 0xf0,
+  0xd7, 0xf8, 0x8f, 0xa6, 0x18, 0x06, 0x55, 0x32, 0x56, 0xd9, 0xde, 0x0d,
+  0x15, 0x23, 0xed, 0xff, 0x41, 0x47, 0xe0, 0x0a, 0xfe, 0x00, 0xfe, 0xef,
+  0x32, 0xf7, 0x60, 0x5f, 0x2d, 0x2c, 0x36, 0x1e, 0x43, 0xdb, 0xfd, 0xec,
+  0xab, 0x1c, 0x8a, 0x78, 0x22, 0xa5, 0x9f, 0x50, 0x4a, 0x5b, 0x2a, 0xeb,
+  0x5e, 0x5b, 0x99, 0xe6, 0xd4, 0x44, 0x47, 0x21, 0x18, 0xa6, 0x92, 0xb4,
+  0x0d, 0x91, 0x6e, 0x82, 0x96, 0x53, 0xd8, 0x7c, 0xa5, 0x0f, 0x80, 0xe6,
+  0x14, 0x9c, 0x5f, 0x97, 0x03, 0xa8, 0xee, 0xb2, 0xa3, 0x6a, 0x89, 0x31,
+  0x45, 0xf3, 0xb8, 0xfa, 0xb3, 0x27, 0xd9, 0x13, 0x96, 0xf8, 0xc1, 0x9a,
+  0x31, 0x1e, 0x4c, 0x32, 0x68, 0x20, 0xea, 0xc8, 0x18, 0xb4, 0x61, 0xa7,
+  0x05, 0x09, 0xc1, 0xb2, 0x90, 0x9d, 0xe6, 0x54, 0x57, 0xfb, 0x2d, 0x46,
+  0xe2, 0xd7, 0x6a, 0x8e, 0xb5, 0xc6, 0x42, 0xcd, 0xb1, 0xc3, 0x9b, 0x1a,
+  0x66, 0xd0, 0xd5, 0xf1, 0x64, 0x91, 0x34, 0x17, 0xf0, 0xaa, 0x3b, 0x7e,
+  0x10, 0x51, 0x1e, 0x7c, 0x48, 0xa3, 0x97, 0x22, 0xab, 0xac, 0x4f, 0x08,
+  0xb6, 0x60, 0x83, 0xc0, 0x94, 0x10, 0x61, 0xe5, 0x90, 0xd3, 0x66, 0x30,
+  0xce, 0x6c, 0xfa, 0x9a, 0x27, 0xec, 0x3a, 0x83, 0xc3, 0xa4, 0x65, 0xd9,
+  0x85, 0x2d, 0x0f, 0x41, 0x32, 0xd2, 0x4a, 0xa4, 0x42, 0x5e, 0x55, 0x38,
+  0x7f, 0x1f, 0xb3, 0x25, 0x05, 0xa3, 0xd1, 0x80, 0x91, 0x2a, 0xf9, 0xc8,
+  0x4a, 0xfa, 0xc7, 0x96, 0x23, 0x41, 0x51, 0x74, 0x43, 0xce, 0x65, 0xc1,
+  0x0c, 0x5a, 0xf1, 0x59, 0x7b, 0x69, 0x89, 0xa7, 0x88, 0x59, 0x8c, 0x5b,
+  0xe0, 0xe8, 0x15, 0x38, 0x7e, 0xd4, 0x93, 0xf1, 0xb0, 0x67, 0x22, 0x57,
+  0xc9, 0x9f, 0x5b, 0x80, 0xe5, 0x43, 0x81, 0x38, 0x62, 0xc9, 0x11, 0xd5,
+  0xf6, 0xa5, 0x46, 0xe8, 0x46, 0x07, 0x46, 0x27, 0x86, 0xd8, 0xfb, 0xd2,
+  0x0c, 0x28, 0x3d, 0xf3, 0x95, 0xfa, 0x4a, 0xa5, 0x66, 0x6d, 0xa8, 0xc2,
+  0x55, 0xe9, 0x70, 0x2b, 0x89, 0x3b, 0x18, 0x00, 0x14, 0xbc, 0x6b, 0xd4,
+  0xe8, 0xb0, 0xd7, 0x5d, 0x95, 0xc0, 0xad, 0x01, 0x62, 0x0b, 0xc1, 0x5e,
+  0x54, 0x01, 0x31, 0x6b, 0x8f, 0xf4, 0x62, 0xb7, 0x18, 0x97, 0x99, 0xaa,
+  0xd2, 0x6a, 0xd5, 0xf6, 0xd4, 0x28, 0xee, 0x1f, 0x9c, 0x70, 0x60, 0xe2,
+  0xbc, 0x13, 0xde, 0x53, 0x86, 0x83, 0xc4, 0xd6, 0xa1, 0x0a, 0xb1, 0xcd,
+  0x6a, 0x72, 0x9a, 0x38, 0xd0, 0xe5, 0xa6, 0x71, 0xe3, 0x80, 0x65, 0x02,
+  0x3f, 0xba, 0xba, 0xa7, 0x86, 0x1a, 0xf8, 0xfd, 0x7f, 0xd8, 0x97, 0x00,
+  0xba, 0xfc, 0xbb, 0x2d, 0x96, 0x0e, 0x3b, 0x6e, 0x55, 0x16, 0x07, 0x83,
+  0xfb, 0x3d, 0x16, 0x05, 0x30, 0xdd, 0xb2, 0x32, 0xc0, 0xe0, 0xe1, 0xe6,
+  0x7e, 0x3f, 0x72, 0xde, 0x70, 0x6b, 0xc2, 0x6a, 0xcf, 0x77, 0x00, 0xe8,
+  0xca, 0x31, 0xfe, 0x29, 0xe3, 0xaa, 0x78, 0x56, 0x95, 0x5e, 0xa1, 0x2d,
+  0x64, 0x1b, 0x7f, 0x2a, 0xa4, 0x5a, 0x5b, 0x54, 0xc5, 0x13, 0xc1, 0x19,
+  0xd6, 0xcf, 0xdb, 0x56, 0x2f, 0x8e, 0x35, 0xd9, 0xc7, 0x6e, 0xfc, 0x7e,
+  0x28, 0x20, 0xa6, 0x4a, 0xe8, 0x8a, 0x49, 0x6c, 0x9f, 0xc9, 0xb6, 0xdc,
+  0xa5, 0xd9, 0x93, 0xbd, 0x61, 0x20, 0xe9, 0x0c, 0x3a, 0xc3, 0xf5, 0xd8,
+  0x1a, 0x98, 0x4f, 0xa7, 0xf0, 0xb5, 0x4d, 0x85, 0x39, 0xfc, 0x5e, 0x11,
+  0x70, 0x90, 0xe8, 0x25, 0x10, 0x0d, 0x33, 0x93, 0x1b, 0x56, 0x1e, 0x52,
+  0xa6, 0xd3, 0xc5, 0xd5, 0x49, 0x3c, 0xc1, 0xee, 0x38, 0x90, 0xaa, 0xae,
+  0x78, 0x26, 0x3e, 0xa1, 0x34, 0xd0, 0x0f, 0x70, 0xa9, 0x29, 0xdd, 0x1d,
+  0xca, 0x67, 0xc3, 0x0b, 0x7c, 0x66, 0x58, 0x58, 0x9a, 0xad, 0x9c, 0xcc,
+  0x5c, 0x4c, 0xeb, 0xa0, 0x8d, 0x18, 0x14, 0x75, 0x85, 0x02, 0x71, 0x74,
+  0x2c, 0x9d, 0xee, 0xd6, 0x38, 0xed, 0x30, 0x7d, 0x90, 0x62, 0x52, 0xc4,
+  0xad, 0x1f, 0x6e, 0x0d, 0x16, 0x8c, 0x39, 0xc9, 0x34, 0x56, 0x52, 0x42,
+  0x4c, 0x99, 0x8e, 0x8c, 0x2d, 0xd8, 0x4d, 0x31, 0xbe, 0x5a, 0x35, 0xba,
+  0xa3, 0x2e, 0x29, 0x2a, 0x55, 0x50, 0xb5, 0xa0, 0xb2, 0x21, 0xdd, 0x72,
+  0x86, 0xd2, 0x51, 0xe5, 0x73, 0x09, 0x89, 0xe0, 0x96, 0x1f, 0x99, 0x2b,
+  0xa7, 0xa3, 0x0a, 0x6e, 0x6d, 0x50, 0x42, 0xa9, 0x0e, 0xbe, 0x04, 0x36,
+  0x64, 0xd2, 0xd4, 0x23, 0x55, 0xd4, 0xd4, 0x16, 0x12, 0x1d, 0x23, 0x41,
+  0x3c, 0x97, 0x28, 0x27, 0x0c, 0x0f, 0xd8, 0xc3, 0x13, 0xc3, 0x43, 0x35,
+  0xff, 0xdc, 0xc3, 0xcd, 0xb9, 0x71, 0xc8, 0x55, 0x3d, 0x0c, 0x84, 0xb4,
+  0x51, 0x33, 0xb7, 0x6c, 0xb7, 0x15, 0x6a, 0x7c, 0x59, 0x2d, 0x3f, 0x00,
+  0x60, 0xf4, 0x03, 0x00, 0xc7, 0x2e, 0x02, 0x2b, 0x04, 0x3e, 0xc0, 0x72,
+  0x09, 0x26, 0x1c, 0xe9, 0xec, 0xa9, 0x56, 0x16, 0x9a, 0xe7, 0x22, 0x86,
+  0xb5, 0x62, 0x28, 0xdb, 0x2b, 0xd7, 0xa8, 0x93, 0x60, 0xee, 0xa2, 0x46,
+  0x12, 0xd9, 0xd3, 0xd6, 0xc0, 0x38, 0x34, 0xe3, 0x03, 0x90, 0x58, 0x1c,
+  0x85, 0xd0, 0x1d, 0x92, 0x14, 0x0c, 0x55, 0xdf, 0x80, 0x6a, 0x01, 0x9d,
+  0x48, 0x2e, 0xed, 0x2a, 0xb3, 0x90, 0x90, 0x87, 0x07, 0x06, 0x3d, 0x41,
+  0xeb, 0x45, 0x6a, 0x75, 0x1a, 0x8e, 0x98, 0xc2, 0x2e, 0xd2, 0x30, 0x59,
+  0x56, 0x77, 0x01, 0x05, 0xbc, 0x53, 0x8f, 0xcc, 0x13, 0x69, 0x28, 0x7b,
+  0x91, 0xfa, 0x9e, 0xd2, 0xd8, 0xe3, 0x20, 0xca, 0x14, 0x70, 0x4e, 0x30,
+  0x61, 0xd6, 0x09, 0xae, 0xf3, 0xbb, 0x47, 0x0f, 0x97, 0x04, 0xc2, 0xf0,
+  0x55, 0x3e, 0x5a, 0xb3, 0x32, 0x5a, 0xb0, 0xbe, 0xb1, 0x32, 0xf5, 0x05,
+  0xd1, 0x15, 0xf1, 0xc2, 0x5b, 0x47, 0xd8, 0x5c, 0xb4, 0x06, 0x05, 0x27,
+  0x8a, 0x36, 0x1d, 0xb0, 0xaa, 0x54, 0xbe, 0xb1, 0xd8, 0x1d, 0x3d, 0x93,
+  0x5a, 0xee, 0xe6, 0xb1, 0xe6, 0xc0, 0x5b, 0x5a, 0x18, 0x05, 0xed, 0x0d,
+  0x47, 0x34, 0xe0, 0x87, 0x74, 0x19, 0xb0, 0x84, 0xa0, 0xbe, 0xbb, 0xc3,
+  0xed, 0x93, 0xa0, 0x41, 0x26, 0xc9, 0x00, 0xcc, 0x8f, 0x0f, 0xd1, 0x63,
+  0xe3, 0x98, 0x22, 0xfc, 0x21, 0x12, 0x38, 0x8b, 0x20, 0xb5, 0x78, 0x68,
+  0xb2, 0x87, 0xda, 0x94, 0x8e, 0xcf, 0x6e, 0x9f, 0xb6, 0x4d, 0x48, 0x8d,
+  0xff, 0xe8, 0xa1, 0xe7, 0xf5, 0xc3, 0xf5, 0xa2, 0x23, 0x0d, 0x49, 0xa6,
+  0x24, 0x90, 0x62, 0x3a, 0x25, 0x19, 0x7e, 0x98, 0x1e, 0xa2, 0x3e, 0x11,
+  0xf0, 0x81, 0xc6, 0x30, 0x1f, 0x1e, 0x43, 0x30, 0x87, 0x47, 0x47, 0x42,
+  0x7d, 0x19, 0xc9, 0x70, 0xfd, 0xd4, 0x77, 0x0a, 0xd5, 0x45, 0x7d, 0xd3,
+  0x6d, 0x1b, 0xb9, 0x6f, 0x80, 0x9a, 0xa1, 0x57, 0x9e, 0x0c, 0xa5, 0x5b,
+  0x4a, 0x8c, 0x3a, 0x84, 0xc6, 0x47, 0x41, 0x28, 0x78, 0x0c, 0x06, 0xa7,
+  0x50, 0xba, 0x31, 0xd0, 0x10, 0xfc, 0x87, 0x8a, 0xc0, 0x89, 0xc8, 0x77,
+  0xa9, 0xe3, 0x9b, 0x78, 0xea, 0xfd, 0x75, 0x84, 0xd6, 0x1e, 0x87, 0x75,
+  0xf7, 0x01, 0x54, 0xac, 0xa6, 0x53, 0xc3, 0x7a, 0x72, 0x38, 0x22, 0xb1,
+  0xae, 0x86, 0xd9, 0x3f, 0x87, 0x62, 0x15, 0xc8, 0xe7, 0x8f, 0xac, 0x05,
+  0x07, 0x0e, 0xba, 0x09, 0x69, 0xb6, 0x8c, 0x5d, 0xd9, 0x0a, 0x5c, 0xc1,
+  0xa0, 0x0b, 0xe0, 0x14, 0x53, 0x4e, 0xbd, 0x79, 0xb8, 0x39, 0x56, 0xde,
+  0xc3, 0x12, 0x85, 0x2e, 0x9d, 0x00, 0x58, 0x25, 0x62, 0xce, 0xa1, 0xfb,
+  0xd0, 0xcf, 0xfa, 0x53, 0x18, 0x55, 0xc7, 0x92, 0x30, 0x83, 0x76, 0x87,
+  0xef, 0xc2, 0xf3, 0xec, 0xfa, 0x11, 0xfc, 0x6f, 0x13, 0xea, 0x9a, 0xc3,
+  0xd6, 0x38, 0x4f, 0x8f, 0xcd, 0xa1, 0x93, 0xc4, 0x75, 0x0e, 0x76, 0xda,
+  0x82, 0x39, 0xac, 0x3b, 0x6d, 0xbf, 0xd5, 0x61, 0xe3, 0x68, 0xb5, 0x0f,
+  0x86, 0xec, 0x2a, 0x23, 0x11, 0xd0, 0x29, 0x8f, 0xd3, 0x24, 0x31, 0x66,
+  0xc2, 0xa7, 0x99, 0xda, 0xed, 0xe9, 0x8e, 0xd8, 0x30, 0xb4, 0xa6, 0xa6,
+  0x85, 0xe8, 0xa1, 0xd6, 0xcc, 0xb9, 0xea, 0x9a, 0x82, 0xf2, 0xfe, 0x08,
+  0xb9, 0x72, 0x8d, 0x8d, 0xce, 0x1e, 0xed, 0x20, 0x7c, 0xda, 0xf8, 0xa5,
+  0x88, 0xcf, 0x27, 0x1d, 0xd4, 0xf0, 0x98, 0x75, 0x77, 0xad, 0x31, 0xab,
+  0x9f, 0xd8, 0xf5, 0xda, 0x30, 0x5b, 0x92, 0xe4, 0x93, 0x99, 0xdf, 0x07,
+  0x6e, 0x2b, 0x66, 0x83, 0x61, 0x00, 0xbb, 0x2b, 0xcf, 0x04, 0x82, 0x26,
+  0xc9, 0x8a, 0xe5, 0xaa, 0x10, 0x48, 0xb0, 0xc7, 0xef, 0x68, 0xd3, 0xa5,
+  0x5d, 0x7b, 0x1c, 0x4b, 0xc8, 0xa3, 0x5b, 0x32, 0x3a, 0x22, 0xc0, 0x9a,
+  0xd6, 0x8c, 0xca, 0x4d, 0x31, 0x1c, 0x95, 0x7e, 0xd8, 0x1c, 0x93, 0x1f,
+  0xd4, 0x2f, 0x1c, 0x95, 0xb4, 0xf7, 0x29, 0x63, 0x2a, 0xe7, 0x1f, 0x68,
+  0x0c, 0xe9, 0xe5, 0x3d, 0x6d, 0x7b, 0x49, 0x82, 0xf8, 0xe3, 0xd2, 0x7a,
+  0x24, 0x0f, 0x1a, 0xd1, 0x31, 0x22, 0x02, 0x0d, 0xbb, 0x88, 0xa6, 0x49,
+  0x51, 0x49, 0x8d, 0x64, 0x80, 0x56, 0xe0, 0xd7, 0x47, 0x48, 0x50, 0x7d,
+  0x14, 0x2a, 0xb2, 0x38, 0x65, 0x64, 0xc4, 0xc0, 0x80, 0x30, 0x72, 0x41,
+  0xc1, 0xd5, 0xb6, 0x3a, 0xf2, 0x76, 0xa2, 0xa6, 0xe9, 0xb5, 0x0c, 0x6a,
+  0x55, 0x8d, 0x1e, 0x00, 0x13, 0x75, 0xfd, 0x93, 0xa2, 0x12, 0x2f, 0x97,
+  0x7a, 0xc4, 0x3f, 0x61, 0xee, 0x02, 0xe6, 0x04, 0x72, 0x57, 0x48, 0x2e,
+  0x05, 0x48, 0xac, 0xf2, 0xfc, 0xc6, 0x97, 0x96, 0x83, 0xd1, 0xee, 0xe1,
+  0xe6, 0x04, 0x8d, 0x4f, 0x57, 0x70, 0x7b, 0x3c, 0xfe, 0x86, 0x61, 0x3a,
+  0x1d, 0xb7, 0xd9, 0xf6, 0x9e, 0x3f, 0x88, 0x5e, 0x9f, 0x70, 0x09, 0xba,
+  0x8a, 0x94, 0x58, 0x07, 0x67, 0xec, 0xf9, 0xd4, 0x65, 0xa8, 0x8b, 0x95,
+  0xbf, 0xc9, 0x44, 0x2f, 0x0e, 0xcf, 0x22, 0xd7, 0x8d, 0xce, 0xaa, 0x5e,
+  0x64, 0x95, 0x51, 0xad, 0x1f, 0xa1, 0x73, 0x15, 0x48, 0xeb, 0x73, 0xec,
+  0x9c, 0x11, 0xab, 0x43, 0x6c, 0x72, 0x5c, 0x2d, 0xff, 0x1f, 0xda, 0x58,
+  0xe8, 0x63, 0x92, 0x48, 0x0c, 0x03, 0xee, 0xe3, 0x43, 0xe6, 0x92, 0x4d,
+  0xdd, 0x25, 0xcc, 0x3a, 0xc6, 0x2c, 0x43, 0x96, 0x1c, 0xba, 0xe6, 0x80,
+  0xb5, 0x32, 0x82, 0x24, 0xfd, 0x7c, 0xea, 0x98, 0x7d, 0x1e, 0x86, 0x03,
+  0x8a, 0xe3, 0x31, 0x4b, 0xe1, 0x39, 0x83, 0xb6, 0x9c, 0x24, 0xa4, 0xff,
+  0x7d, 0x8a, 0x16, 0xae, 0x06, 0x61, 0x41, 0x76, 0x66, 0x04, 0x04, 0xd7,
+  0xa8, 0x2f, 0x29, 0x46, 0xa2, 0x3c, 0x47, 0x1c, 0x3e, 0xca, 0x26, 0x62,
+  0x4d, 0xf3, 0x42, 0xed, 0x4d, 0x6f, 0x99, 0x9a, 0x9a, 0x9a, 0x89, 0x5a,
+  0x11, 0xd3, 0x15, 0x87, 0x2f, 0x75, 0xe4, 0xe3, 0xb5, 0x54, 0xd3, 0x69,
+  0x3e, 0x17, 0x9f, 0xcc, 0x2d, 0xd0, 0x75, 0xbb, 0xf7, 0xc2, 0xcb, 0x5d,
+  0xdd, 0x8b, 0x9d, 0x56, 0x4a, 0x1b, 0x0a, 0xd0, 0x69, 0xcf, 0x3f, 0xca,
+  0xa6, 0x88, 0xc5, 0x2d, 0xcb, 0x20, 0x32, 0x01, 0x64, 0x22, 0x84, 0x3a,
+  0xb0, 0xf3, 0x81, 0x4a, 0x65, 0x9f, 0x46, 0x0a, 0xb0, 0xc3, 0xd9, 0xd2,
+  0x1a, 0x00, 0xa4, 0x86, 0x7a, 0xb0, 0x77, 0x40, 0xbe, 0x54, 0xd0, 0x69,
+  0xde, 0xd0, 0xc7, 0x46, 0x17, 0x4b, 0xb9, 0xb8, 0xc6, 0x2a, 0x48, 0x58,
+  0x57, 0xed, 0x96, 0x49, 0x3e, 0x26, 0xed, 0xca, 0x1c, 0x9d, 0x2c, 0x3e,
+  0xd5, 0xd8, 0x63, 0x9f, 0x12, 0x12, 0xac, 0x56, 0x10, 0x9c, 0xf4, 0x29,
+  0x52, 0x6c, 0x97, 0x60, 0x8f, 0xa1, 0x62, 0xe4, 0x9f, 0x7e, 0x7c, 0x7e,
+  0x93, 0x23, 0x2f, 0xd1, 0x35, 0x28, 0x1e, 0xd1, 0x75, 0x74, 0xa2, 0x4f,
+  0x55, 0xaa, 0x80, 0x29, 0x66, 0xd6, 0x2c, 0x3b, 0x48, 0x4d, 0x16, 0x21,
+  0x16, 0xcf, 0x36, 0x10, 0x6a, 0x87, 0x64, 0xa0, 0x78, 0xa8, 0x60, 0x07,
+  0x1a, 0x33, 0xc3, 0x30, 0xca, 0x89, 0xd4, 0xa7, 0x22, 0xd1, 0x7c, 0xce,
+  0xa7, 0xa7, 0x4a, 0x3e, 0xe9, 0xa6, 0xe1, 0xeb, 0xbf, 0xfb, 0xcc, 0x88,
+  0xc4, 0xe6, 0x57, 0xd8, 0x01, 0xae, 0xd6, 0x8f, 0x8e, 0x65, 0xe3, 0x49,
+  0x58, 0x25, 0x1c, 0x80, 0x9f, 0x42, 0x46, 0x6c, 0xc2, 0x48, 0xb4, 0x18,
+  0x16, 0x26, 0xe4, 0x70, 0x2a, 0xc5, 0xff, 0x91, 0x68, 0xed, 0xbe, 0x45,
+  0xfa, 0xa8, 0xaa, 0x96, 0x2a, 0xd0, 0x2e, 0xb8, 0xf3, 0xaa, 0xd3, 0xe2,
+  0x8a, 0x8c, 0x1a, 0x33, 0x62, 0xca, 0x84, 0xe0, 0x20, 0x76, 0x26, 0x27,
+  0x76, 0x13, 0x27, 0x52, 0xee, 0xc4, 0xe7, 0xb1, 0x40, 0xbd, 0x60, 0xe1,
+  0xe5, 0x91, 0x11, 0x78, 0xb3, 0x24, 0x3b, 0xc7, 0x90, 0xa9, 0x38, 0x9f,
+  0xf9, 0x68, 0x0c, 0xd5, 0x81, 0x7d, 0xb9, 0xac, 0xfd, 0x87, 0x9b, 0x53,
+  0x67, 0xdd, 0x6f, 0x51, 0xac, 0x21, 0x40, 0x68, 0x78, 0xf9, 0xa3, 0xa5,
+  0xd6, 0xee, 0x6f, 0x6f, 0xff, 0xfc, 0x63, 0x2d, 0x92, 0xe2, 0xcb, 0x9f,
+  0x7f, 0x79, 0x69, 0x68, 0x41, 0x24, 0xea, 0xf4, 0x93, 0x68, 0x68, 0x85,
+  0x3a, 0x9f, 0x5a, 0x3e, 0x22, 0x0d, 0x07, 0x0b, 0x86, 0xe3, 0x4a, 0x3b,
+  0xe6, 0xeb, 0xca, 0x2d, 0xd7, 0xb1, 0xcf, 0x3f, 0xfa, 0x22, 0x8a, 0xa5,
+  0x54, 0xca, 0x76, 0x88, 0x4e, 0x83, 0x28, 0x80, 0xf1, 0x19, 0x74, 0x62,
+  0x58, 0x70, 0x87, 0x1c, 0x49, 0xe8, 0x91, 0x57, 0xe0, 0x2a, 0x12, 0xc5,
+  0x29, 0x98, 0xe4, 0x54, 0xe0, 0x45, 0x5c, 0xa0, 0x7d, 0x17, 0x7a, 0xbb,
+  0xc0, 0xd8, 0xbe, 0xcb, 0x3d, 0xdc, 0x45, 0x00, 0x18, 0xa2, 0x79, 0x6a,
+  0x7a, 0xd4, 0xe7, 0x02, 0x12, 0x5f, 0x7a, 0x5c, 0xbf, 0x16, 0xaa, 0x2f,
+  0x97, 0x32, 0x83, 0xc3, 0xc6, 0x95, 0xb6, 0x16, 0xa0, 0xd0, 0x0b, 0xc9,
+  0x55, 0xd7, 0x0e, 0x14, 0x3e, 0xcf, 0x5b, 0x27, 0xd3, 0xac, 0x2b, 0x7c,
+  0x54, 0x90, 0x3f, 0xba, 0x41, 0x45, 0x1f, 0x86, 0x3a, 0x31, 0x5b, 0x92,
+  0xac, 0xb4, 0x6c, 0xa3, 0xb2, 0xd7, 0x96, 0xcb, 0xc3, 0xe0, 0x50, 0x84,
+  0x45, 0xae, 0x87, 0x3f, 0xe9, 0x80, 0xf5, 0xa1, 0x3b, 0x28, 0x15, 0x7c,
+  0xe0, 0xae, 0xac, 0x69, 0x95, 0x18, 0xca, 0xa4, 0x23, 0xee, 0x4e, 0x47,
+  0x66, 0x79, 0xb9, 0xc7, 0x1a, 0xd8, 0xd6, 0x5f, 0x9b, 0x82, 0x8d, 0x64,
+  0x15, 0x09, 0x1a, 0x68, 0xc5, 0x67, 0x0a, 0xd8, 0x8a, 0x83, 0x3f, 0x91,
+  0x1c, 0x74, 0x69, 0xbd, 0x87, 0x64, 0x54, 0x1b, 0x71, 0x57, 0x36, 0xc1,
+  0x81, 0xf1, 0xc0, 0x86, 0x90, 0xa3, 0xa1, 0x60, 0x9c, 0xdc, 0x8b, 0x70,
+  0xd5, 0x2c, 0xac, 0x56, 0xae, 0x89, 0x70, 0x1d, 0x97, 0x09, 0xc9, 0x42,
+  0x62, 0xdb, 0x90, 0x02, 0x21, 0x8c, 0xab, 0x29, 0x6b, 0xcb, 0x6f, 0x7b,
+  0x60, 0x7d, 0x17, 0x34, 0x4c, 0xdf, 0x23, 0x78, 0xcf, 0x88, 0xa3, 0xbb,
+  0x02, 0xfb, 0x34, 0x1c, 0xa2, 0xf8, 0xf8, 0xb5, 0x90, 0xb3, 0xf3, 0x45,
+  0x79, 0x26, 0x08, 0xa8, 0x5a, 0x96, 0x14, 0xe2, 0x36, 0x60, 0xdf, 0xa5,
+  0x5b, 0xa6, 0x6a, 0x45, 0xa2, 0xce, 0xbc, 0x5d, 0x33, 0x1d, 0xfe, 0x4a,
+  0x61, 0x48, 0x9a, 0xa5, 0x34, 0x5c, 0x1a, 0x0f, 0x6a, 0x4e, 0xf6, 0x5e,
+  0x1b, 0x59, 0xe3, 0x35, 0x7b, 0xaf, 0x61, 0x7c, 0x41, 0xf4, 0x56, 0x2d,
+  0xa8, 0xdc, 0x57, 0x48, 0x6b, 0x53, 0x2b, 0xef, 0xc1, 0x46, 0xdb, 0x24,
+  0x87, 0xaa, 0x24, 0x3e, 0xb8, 0x43, 0x27, 0x5d, 0x07, 0x32, 0xe1, 0xde,
+  0x70, 0xe1, 0xa9, 0x47, 0x51, 0x4b, 0x2a, 0xb5, 0x71, 0x22, 0x0a, 0x28,
+  0xac, 0x28, 0xec, 0xf1, 0xa5, 0xcf, 0x86, 0xfd, 0xfd, 0xd3, 0x1d, 0x66,
+  0x2e, 0xd6, 0x4a, 0x1c, 0x06, 0x4d, 0xfd, 0xfe, 0x49, 0xfc, 0x10, 0xc3,
+  0x84, 0x12, 0xd5, 0xe2, 0x96, 0x52, 0xe0, 0x87, 0x4b, 0xa3, 0xc3, 0xb7,
+  0x70, 0x17, 0x5b, 0xf0, 0xa7, 0xbc, 0xd5, 0x42, 0x3b, 0xed, 0x38, 0x49,
+  0x83, 0x20, 0x7b, 0xa1, 0x0a, 0x59, 0x89, 0xf1, 0xdd, 0x68, 0x53, 0x59,
+  0xd5, 0x56, 0x47, 0x34, 0x0b, 0x06, 0xc0, 0x25, 0x60, 0xe1, 0x4d, 0xe2,
+  0x4d, 0xf9, 0xe3, 0xfa, 0xa0, 0xe6, 0x7f, 0xdc, 0xd5, 0xf5, 0x83, 0x14,
+  0x4a, 0x11, 0xae, 0xbc, 0xb6, 0xec, 0xb7, 0x84, 0xb6, 0x8f, 0x5d, 0x02,
+  0xb5, 0xab, 0x1a, 0x62, 0x6f, 0x6a, 0x42, 0x5c, 0x98, 0x72, 0xca, 0x6d,
+  0xad, 0x32, 0xb6, 0x4a, 0x74, 0xc0, 0x4a, 0x7b, 0xc2, 0xc5, 0x81, 0x75,
+  0x79, 0x52, 0x17, 0xb5, 0xcb, 0xcf, 0x99, 0xd9, 0x3c, 0x44, 0x6b, 0x47,
+  0xfd, 0x0c, 0x0b, 0xa4, 0x0f, 0x3c, 0x1e, 0x32, 0x1a, 0x5f, 0x2d, 0x04,
+  0xab, 0xa3, 0xf5, 0x12, 0xc2, 0xcc, 0xc8, 0xaf, 0x8f, 0x2e, 0xb6, 0xda,
+  0x38, 0xbb, 0x1a, 0xcd, 0x80, 0x91, 0xa1, 0x68, 0x96, 0x9e, 0xef, 0xd8,
+  0x15, 0xa5, 0x71, 0xc9, 0xc1, 0x12, 0x88, 0x94, 0x7c, 0x24, 0xd9, 0x2a,
+  0xeb, 0xc6, 0xcb, 0x3c, 0xa4, 0x65, 0x60, 0x86, 0x1c, 0x04, 0x23, 0x69,
+  0xf4, 0x90, 0x95, 0x43, 0x09, 0xf4, 0x1c, 0x06, 0x22, 0xe0, 0x16, 0x5f,
+  0x1f, 0x9d, 0x1c, 0x5d, 0x1c, 0x21, 0xb9, 0xa4, 0x65, 0xc8, 0x9d, 0xe3,
+  0xf6, 0xaa, 0x92, 0xe9, 0x75, 0x46, 0x34, 0x7f, 0xc5, 0xdb, 0x81, 0xdc,
+  0xee, 0xef, 0x93, 0xc9, 0xeb, 0x83, 0xef, 0xb8, 0xea, 0x1b, 0x9f, 0x99,
+  0xb3, 0xf3, 0xd3, 0xb3, 0x37, 0xc7, 0xef, 0x5e, 0x0f, 0xa2, 0xc3, 0xd3,
+  0xb3, 0x3f, 0x0f, 0xa2, 0xb7, 0xa7, 0xdf, 0x1d, 0x75, 0x44, 0xeb, 0x72,
+  0xfc, 0x59, 0x47, 0xe0, 0x93, 0xd6, 0x56, 0xd1, 0xf2, 0x03, 0x80, 0xa8,
+  0x96, 0x9a, 0x22, 0xf5, 0x80, 0x75, 0x66, 0xcb, 0x25, 0x32, 0xe2, 0x69,
+  0xe9, 0x69, 0x2d, 0x07, 0xd1, 0x37, 0x47, 0x07, 0xaf, 0x9b, 0xe2, 0xc0,
+  0xd9, 0xe9, 0x58, 0x66, 0xc5, 0xb3, 0x73, 0x93, 0x66, 0xf6, 0x4d, 0xcc,
+  0x92, 0xed, 0xdc, 0xac, 0x64, 0xde, 0x24, 0x01, 0x4e, 0x28, 0x1d, 0x01,
+  0x18, 0xc9, 0x66, 0x6b, 0x2b, 0x46, 0x23, 0x06, 0xc2, 0x05, 0xdb, 0x3d,
+  0x7c, 0x13, 0x22, 0xe5, 0xc6, 0x60, 0xf9, 0x85, 0x40, 0xc4, 0xb9, 0xc0,
+  0xee, 0x82, 0x62, 0xa6, 0x38, 0xd0, 0xca, 0xde, 0x78, 0x6b, 0x36, 0x3a,
+  0x9d, 0x27, 0x52, 0x8b, 0xc9, 0x20, 0x86, 0x20, 0x2a, 0x49, 0xf4, 0x43,
+  0xac, 0x31, 0x6c, 0x93, 0x84, 0x23, 0x6c, 0x4a, 0xd4, 0x14, 0x02, 0x91,
+  0x68, 0x14, 0x74, 0x9b, 0xbd, 0xcb, 0xba, 0x4a, 0x24, 0x99, 0x45, 0x39,
+  0x41, 0x52, 0x63, 0x33, 0x24, 0x2f, 0xa1, 0xef, 0x53, 0x83, 0xb3, 0x7e,
+  0x90, 0x8f, 0x3b, 0xc0, 0x29, 0x20, 0x52, 0xac, 0x2e, 0x89, 0x3c, 0x13,
+  0x09, 0x17, 0xc1, 0x3e, 0xe9, 0x41, 0xc4, 0xcd, 0x70, 0xcc, 0x47, 0xfc,
+  0x1a, 0xa9, 0x26, 0xdd, 0x57, 0xc0, 0xe6, 0x9b, 0x35, 0xa7, 0x3b, 0x2c,
+  0x74, 0xa6, 0x2d, 0x06, 0x59, 0x2b, 0x27, 0xc7, 0xb4, 0xaf, 0x7c, 0xd4,
+  0x9b, 0x81, 0x88, 0x08, 0x36, 0x94, 0x12, 0xb5, 0x29, 0x6f, 0x35, 0xce,
+  0x3a, 0xb5, 0xd5, 0xee, 0x98, 0xb1, 0x91, 0x3b, 0x7b, 0xe6, 0x2f, 0x1e,
+  0xeb, 0xba, 0x65, 0x06, 0x3b, 0x3f, 0xba, 0x38, 0x6f, 0x78, 0xf5, 0x9f,
+  0x77, 0xd8, 0xf2, 0x36, 0x19, 0x8a, 0xb9, 0xb3, 0x57, 0xfe, 0x62, 0x5d,
+  0xaf, 0xe0, 0x2e, 0xdc, 0xef, 0x43, 0x69, 0xc7, 0x4f, 0xba, 0x80, 0x94,
+  0x37, 0x05, 0xf3, 0xb9, 0xa3, 0x3f, 0xfe, 0xe2, 0x81, 0x59, 0x7e, 0x73,
+  0x74, 0x72, 0xd6, 0x9e, 0xe5, 0x77, 0xe7, 0x6f, 0xfe, 0x3c, 0x7a, 0x20,
+  0xa1, 0xf4, 0x1f, 0x1f, 0x16, 0xfc, 0x31, 0xae, 0xaa, 0x4e, 0x04, 0xf5,
+  0x32, 0x86, 0xd5, 0xce, 0x60, 0xe6, 0x2d, 0x12, 0xa4, 0x0e, 0x83, 0x27,
+  0xc8, 0xca, 0x81, 0xde, 0x46, 0x53, 0x6f, 0x89, 0x0d, 0x4e, 0xc4, 0xd2,
+  0x12, 0xd9, 0xc4, 0x5e, 0x25, 0xf1, 0x94, 0x3e, 0x73, 0x75, 0xf7, 0xf0,
+  0x1d, 0x8f, 0x25, 0x9d, 0x70, 0x45, 0x96, 0x51, 0x90, 0xb7, 0xdf, 0x21,
+  0xbc, 0x6a, 0x64, 0x2f, 0x7a, 0x73, 0xc7, 0xfb, 0xe3, 0xec, 0x6a, 0x94,
+  0x17, 0x29, 0xdb, 0xe7, 0xb4, 0x4e, 0x9e, 0x34, 0x16, 0xa1, 0x1a, 0x2c,
+  0x9f, 0x5a, 0x66, 0x00, 0x5d, 0xcd, 0x59, 0xc8, 0x90, 0x80, 0x06, 0x44,
+  0xed, 0xa6, 0x17, 0xd0, 0xee, 0xf9, 0x3b, 0xd7, 0xaa, 0xc9, 0xcc, 0x5d,
+  0x91, 0x75, 0xe5, 0x3d, 0xed, 0xf3, 0xc2, 0x33, 0x14, 0xd3, 0x37, 0xdc,
+  0x6c, 0xfd, 0x44, 0x39, 0xa2, 0x8b, 0xb8, 0x45, 0x01, 0x50, 0x91, 0xb6,
+  0x6e, 0x90, 0x92, 0x6e, 0x50, 0xdb, 0xb0, 0x7b, 0x04, 0x51, 0xb2, 0xa3,
+  0x44, 0x4b, 0x63, 0xf0, 0xbf, 0x9d, 0xc5, 0x90, 0x9c, 0xab, 0x87, 0x67,
+  0xc3, 0x0e, 0x65, 0x2d, 0xed, 0x20, 0x2f, 0x4b, 0x15, 0x87, 0x49, 0xc3,
+  0x41, 0xa2, 0xa1, 0xc9, 0x2d, 0xd4, 0x88, 0xa0, 0x43, 0x01, 0xa4, 0x19,
+  0xd4, 0x3c, 0x6e, 0x5c, 0x09, 0x10, 0x60, 0x1a, 0x62, 0x3a, 0xa3, 0xee,
+  0x83, 0x17, 0x5a, 0x73, 0xb2, 0xd2, 0x86, 0x01, 0xac, 0x5e, 0x30, 0x24,
+  0x23, 0xd4, 0x5d, 0x2b, 0x46, 0xc0, 0xea, 0x84, 0x80, 0x25, 0xfe, 0xf9,
+  0xb1, 0x92, 0x54, 0x12, 0x10, 0x5e, 0x07, 0x7e, 0x12, 0xf9, 0x6b, 0xa5,
+  0xb8, 0x16, 0x60, 0xef, 0xb0, 0x6a, 0x60, 0x4d, 0x36, 0x3a, 0x7d, 0x9d,
+  0x65, 0x94, 0x54, 0xd3, 0x1a, 0xc6, 0x10, 0x62, 0xd7, 0x89, 0x8e, 0x45,
+  0x42, 0x20, 0x0e, 0x3f, 0x88, 0xa4, 0xe8, 0x88, 0xc4, 0x43, 0xe9, 0x7b,
+  0xc3, 0x0e, 0x9b, 0x10, 0xdb, 0xbe, 0xd6, 0xb0, 0xe6, 0x7f, 0xdc, 0x29,
+  0xfe, 0xb3, 0x27, 0x0a, 0x59, 0xc4, 0x97, 0xf8, 0xe3, 0x17, 0x91, 0x45,
+  0x50, 0xf1, 0x43, 0xfc, 0x70, 0x9b, 0x44, 0xfb, 0x35, 0xfa, 0x18, 0xb6,
+  0xf2, 0x5d, 0x67, 0x5b, 0x92, 0x50, 0xe8, 0x37, 0x5b, 0x6d, 0x5c, 0x7c,
+  0x9d, 0xd6, 0x69, 0x22, 0x78, 0x06, 0xe9, 0x04, 0x6d, 0xa5, 0x54, 0xf6,
+  0x58, 0x92, 0x3d, 0x52, 0x2e, 0x78, 0xcb, 0xb7, 0x29, 0x4e, 0x4f, 0xf2,
+  0x5b, 0x62, 0xae, 0xfd, 0x0d, 0x98, 0x6b, 0x5c, 0x37, 0x13, 0x07, 0xe0,
+  0xe5, 0x2c, 0x86, 0x69, 0x17, 0x59, 0xf2, 0xd4, 0xf4, 0x17, 0xff, 0xd9,
+  0x5d, 0xb6, 0xd2, 0xea, 0x39, 0x2b, 0xde, 0xbf, 0xa4, 0xf0, 0x8b, 0xf3,
+  0x80, 0x55, 0x2c, 0x2e, 0x2a, 0x84, 0x8a, 0x80, 0x8b, 0x7c, 0xa6, 0x88,
+  0x63, 0x71, 0xe5, 0x97, 0x3a, 0xe9, 0x84, 0x87, 0x92, 0xa2, 0x41, 0x7c,
+  0x0a, 0x91, 0xdb, 0x44, 0x2b, 0xcb, 0xe3, 0x5e, 0xd3, 0x5e, 0x60, 0xeb,
+  0x6e, 0xe1, 0xa8, 0x6a, 0x75, 0x15, 0x16, 0xb8, 0x5b, 0xf3, 0x31, 0xf5,
+  0x28, 0x0e, 0xe5, 0x3b, 0x3c, 0x24, 0x7a, 0x5f, 0xd9, 0xbe, 0x95, 0x50,
+  0x16, 0xc3, 0x85, 0xa0, 0x0b, 0x00, 0x23, 0x87, 0x36, 0xbb, 0x7a, 0x95,
+  0x34, 0xcc, 0xd2, 0x70, 0xf3, 0x38, 0x3c, 0x03, 0x78, 0xf8, 0xb1, 0x8b,
+  0x67, 0xec, 0x8a, 0xef, 0x0f, 0x8a, 0xb0, 0x5d, 0x25, 0x95, 0x8b, 0x66,
+  0x9a, 0x79, 0x59, 0x5c, 0x06, 0xb5, 0xb9, 0xe0, 0xc9, 0x6c, 0x89, 0x3d,
+  0xba, 0x73, 0x2b, 0x1c, 0xce, 0x5f, 0x0d, 0x0c, 0x88, 0x1a, 0xe5, 0xf7,
+  0x19, 0x08, 0x88, 0x6e, 0x60, 0x20, 0xff, 0x68, 0x19, 0x3c, 0x34, 0x1b,
+  0xac, 0x48, 0x2b, 0xd5, 0xa2, 0xaa, 0x57, 0xfc, 0xb0, 0x3c, 0x19, 0xb6,
+  0x83, 0x5b, 0xb9, 0x95, 0x70, 0x45, 0xcd, 0x18, 0xc7, 0x88, 0x60, 0xd1,
+  0xe6, 0x70, 0xcb, 0x49, 0x7d, 0x28, 0x35, 0x26, 0xa4, 0xd1, 0x76, 0x5f,
+  0xc7, 0x2e, 0xe4, 0xd4, 0xe5, 0x47, 0x08, 0x50, 0xbf, 0x51, 0x88, 0xd2,
+  0x04, 0x77, 0xb6, 0x2d, 0x26, 0x64, 0xe3, 0x96, 0x69, 0x47, 0x7c, 0x78,
+  0xab, 0xb1, 0x2c, 0xb9, 0x0b, 0x1b, 0xf3, 0x7a, 0x97, 0x6b, 0xf0, 0x37,
+  0x3c, 0x53, 0xd7, 0x22, 0x95, 0xce, 0x97, 0x2d, 0x7b, 0x04, 0x7b, 0xfb,
+  0x23, 0xfe, 0xc6, 0xcc, 0xfb, 0x22, 0x45, 0xc6, 0x12, 0x71, 0x8e, 0xe2,
+  0x83, 0x21, 0xf2, 0x97, 0xc3, 0x2d, 0xec, 0x04, 0xe3, 0x28, 0xaf, 0xf9,
+  0x52, 0x75, 0x60, 0x02, 0xb5, 0x2a, 0x11, 0x6f, 0x07, 0xa8, 0x34, 0x94,
+  0xb5, 0xe3, 0x8c, 0xde, 0xe2, 0xc3, 0x51, 0xf4, 0x5a, 0xb3, 0x06, 0x90,
+  0xd5, 0xbf, 0xba, 0x4a, 0x30, 0x2c, 0x84, 0x91, 0x07, 0xcd, 0x7c, 0xa7,
+  0x29, 0x3e, 0x1d, 0x84, 0xa2, 0xef, 0x97, 0xb5, 0xb4, 0x03, 0x71, 0x76,
+  0x08, 0xcc, 0x58, 0x66, 0xb5, 0x9a, 0x26, 0xf8, 0xdb, 0x6c, 0xa0, 0x29,
+  0xa2, 0x5e, 0xcb, 0x51, 0x87, 0x15, 0x43, 0xdc, 0x27, 0x98, 0xb8, 0xf7,
+  0x7a, 0x98, 0x9f, 0xc0, 0xde, 0x67, 0x59, 0x55, 0xf2, 0x71, 0x5c, 0xd3,
+  0x5d, 0x60, 0x04, 0xd0, 0xbe, 0x9e, 0x14, 0x33, 0x38, 0x07, 0xef, 0xf9,
+  0xd1, 0x22, 0x2e, 0x44, 0xa1, 0xcc, 0x6e, 0xcc, 0x84, 0x2c, 0x96, 0x91,
+  0x64, 0xba, 0xaa, 0xea, 0x28, 0x8b, 0xa1, 0x65, 0xc5, 0x6a, 0xf2, 0x61,
+  0x58, 0x9b, 0x70, 0x07, 0xe9, 0x7e, 0xf4, 0xce, 0xcc, 0x82, 0xbc, 0xdf,
+  0xdb, 0x52, 0x0f, 0x99, 0x78, 0x3b, 0xf5, 0xe3, 0x2e, 0x44, 0x03, 0x1b,
+  0x73, 0x91, 0x08, 0xde, 0x1a, 0xf2, 0x88, 0x21, 0x1e, 0x75, 0x76, 0x4f,
+  0x14, 0x59, 0xcc, 0xba, 0xfa, 0x7e, 0x23, 0xa5, 0xac, 0x83, 0xae, 0x9d,
+  0xa9, 0x4e, 0xab, 0x5c, 0x97, 0xad, 0x1c, 0x8a, 0x56, 0xcf, 0x50, 0xa8,
+  0x49, 0xd7, 0x75, 0xf1, 0xe4, 0xf6, 0xaa, 0xad, 0x7f, 0x2b, 0xb8, 0x1c,
+  0xf1, 0x5a, 0x1e, 0xc9, 0x8e, 0xa5, 0x7a, 0x7c, 0xe4, 0x52, 0xfa, 0x5a,
+  0xb3, 0xb8, 0x29, 0x26, 0x4f, 0xe9, 0xc7, 0xb7, 0xfc, 0x83, 0x19, 0x10,
+  0x2b, 0x5e, 0x02, 0x1f, 0x2d, 0x08, 0x54, 0x6d, 0x4e, 0xc3, 0x95, 0x3a,
+  0xf4, 0x87, 0x6e, 0x7a, 0x69, 0xf9, 0x23, 0x9c, 0x7d, 0xe3, 0x6b, 0x8f,
+  0xc0, 0x17, 0x6c, 0xed, 0x0c, 0xcc, 0x96, 0xb6, 0xb1, 0x36, 0xfa, 0x68,
+  0x3c, 0x00, 0x4a, 0xb2, 0x14, 0x2e, 0x1a, 0x4b, 0x2e, 0x19, 0x2d, 0x42,
+  0x5b, 0x34, 0xa1, 0xa5, 0xfa, 0x1b, 0x9b, 0x66, 0x57, 0xa4, 0xc9, 0x10,
+  0x61, 0x4f, 0x61, 0xf6, 0x5b, 0x38, 0x8e, 0x87, 0x8a, 0xc4, 0x0e, 0xad,
+  0x46, 0xe0, 0xed, 0x60, 0xa4, 0x15, 0xe3, 0x47, 0xba, 0x66, 0x08, 0xeb,
+  0xa7, 0x8c, 0xbc, 0xcd, 0xa8, 0x33, 0x7d, 0xf3, 0xc1, 0xa5, 0x7a, 0xcd,
+  0x79, 0x71, 0x26, 0x06, 0xca, 0x51, 0x40, 0x6e, 0x52, 0xec, 0x36, 0x7b,
+  0xb2, 0x4a, 0xad, 0x7c, 0x30, 0x1e, 0x56, 0x83, 0xa5, 0x64, 0x99, 0xae,
+  0x19, 0x27, 0x12, 0xf7, 0x50, 0x19, 0x0a, 0xe9, 0x4c, 0x37, 0x96, 0x77,
+  0xb7, 0x48, 0x16, 0x0c, 0x7b, 0xe9, 0x93, 0xf1, 0x20, 0x26, 0x22, 0x83,
+  0x1a, 0x9d, 0xaf, 0xf1, 0x79, 0xcd, 0x38, 0x4d, 0x9b, 0xd5, 0x7f, 0x09,
+  0xcb, 0xff, 0x97, 0x96, 0x01, 0xbc, 0xbc, 0xcf, 0xa6, 0xd7, 0xaf, 0xdf,
+  0x8d, 0x37, 0x1e, 0x88, 0xe9, 0x0f, 0x27, 0x87, 0xe7, 0x8b, 0x3c, 0x63,
+  0x62, 0x08, 0x82, 0x2c, 0x58, 0x6b, 0x3a, 0x08, 0xbe, 0xeb, 0x6e, 0xae,
+  0xf6, 0x82, 0x09, 0x03, 0x08, 0x0d, 0x16, 0x73, 0x84, 0xc6, 0x27, 0xe2,
+  0x22, 0x1d, 0xc6, 0x7c, 0x14, 0xba, 0x6b, 0xc7, 0xba, 0x33, 0xcd, 0x19,
+  0x42, 0xc9, 0xcc, 0x9a, 0x2c, 0x50, 0x47, 0x90, 0x21, 0x3c, 0xda, 0x74,
+  0x7d, 0xf6, 0xee, 0xe8, 0xeb, 0x53, 0xfb, 0xf1, 0x4b, 0xb6, 0xf9, 0x24,
+  0x2e, 0xae, 0x92, 0x0e, 0x68, 0xd1, 0x70, 0x85, 0x6a, 0x70, 0x47, 0x81,
+  0x02, 0x40, 0xb4, 0x3a, 0xe7, 0xd7, 0x85, 0x4c, 0x07, 0x4a, 0xad, 0xf8,
+  0xa8, 0x58, 0x37, 0x25, 0x5a, 0x94, 0xbd, 0xaf, 0xbf, 0x6a, 0x5f, 0x90,
+  0xaf, 0xdf, 0xad, 0xe9, 0x8e, 0xbf, 0x19, 0x9a, 0x3c, 0xa4, 0x96, 0xc0,
+  0x20, 0x73, 0xbf, 0xbd, 0x16, 0x0a, 0x28, 0xdd, 0x3d, 0x00, 0x43, 0x9b,
+  0x7e, 0x84, 0x4b, 0xd0, 0x13, 0xfa, 0xe3, 0xc1, 0x07, 0x15, 0xbb, 0xae,
+  0xbb, 0x2b, 0x06, 0xb5, 0xdb, 0x1c, 0x4b, 0xb1, 0xb1, 0x73, 0x89, 0x44,
+  0x3a, 0x53, 0xc3, 0xf4, 0x56, 0xc7, 0x16, 0xad, 0xc5, 0xcd, 0xf3, 0x78,
+  0x07, 0x11, 0xea, 0x51, 0x6d, 0xb4, 0x99, 0xcf, 0x9e, 0xfc, 0xd8, 0xde,
+  0x73, 0xea, 0xb0, 0x13, 0x6a, 0x71, 0x48, 0x87, 0x69, 0x9b, 0x0f, 0xbd,
+  0x25, 0x61, 0x8c, 0xef, 0xab, 0xc7, 0x4f, 0x86, 0xdb, 0x0a, 0xf7, 0x4e,
+  0xb4, 0x39, 0xa1, 0x4b, 0xd0, 0x5d, 0x9b, 0x52, 0xbe, 0xe9, 0x29, 0x10,
+  0xfc, 0xba, 0x9b, 0x7b, 0xf6, 0xf9, 0xb3, 0xa7, 0x5b, 0x5b, 0x83, 0xc8,
+  0x4c, 0xc9, 0x92, 0x30, 0xc6, 0xee, 0x1e, 0x66, 0x05, 0x12, 0xae, 0xc3,
+  0x63, 0xbe, 0x46, 0x79, 0x3e, 0xcb, 0xcf, 0x69, 0x5b, 0xed, 0xbc, 0x9a,
+  0xeb, 0x5e, 0xe5, 0x75, 0x61, 0xf8, 0x0a, 0x30, 0x49, 0x07, 0x22, 0x11,
+  0x1b, 0x9b, 0x29, 0xe9, 0x6e, 0x53, 0x3f, 0xc8, 0xda, 0x83, 0x26, 0xa5,
+  0xe5, 0x1d, 0x7a, 0x8b, 0x78, 0x9f, 0xc0, 0x99, 0xec, 0xf2, 0x62, 0x34,
+  0xed, 0x37, 0xc7, 0x27, 0x47, 0x8e, 0x8f, 0xfc, 0xd7, 0xf6, 0x88, 0x07,
+  0x59, 0x4c, 0x5b, 0x5c, 0x53, 0x04, 0xc9, 0x20, 0x1f, 0x7b, 0x10, 0xa1,
+  0xba, 0xe5, 0xb7, 0x03, 0xd1, 0x66, 0xf1, 0xb1, 0xc7, 0xc9, 0xa4, 0x86,
+  0x8f, 0xde, 0x7d, 0x77, 0x7c, 0x7e, 0xfa, 0xee, 0xed, 0xd1, 0x3b, 0x97,
+  0xf7, 0xc0, 0xd7, 0x73, 0xb7, 0xdb, 0xb1, 0xe5, 0x81, 0x49, 0x39, 0x73,
+  0x86, 0x05, 0x52, 0x76, 0x89, 0xf1, 0x2c, 0x68, 0xb7, 0xf4, 0xaf, 0x51,
+  0xd8, 0x5c, 0xf0, 0x90, 0xed, 0x1b, 0x13, 0xc9, 0x92, 0x03, 0x96, 0x67,
+  0x9c, 0x59, 0x36, 0x92, 0x24, 0x10, 0xf1, 0xf6, 0xa4, 0xe2, 0xac, 0xfc,
+  0x38, 0x4d, 0x14, 0x4e, 0xbf, 0x0c, 0xca, 0xf7, 0x59, 0x12, 0x94, 0xcf,
+  0x15, 0xab, 0x0d, 0xc2, 0x93, 0x9a, 0x94, 0x37, 0x5f, 0xe7, 0xf5, 0x04,
+  0x34, 0x44, 0x58, 0xf9, 0xe5, 0x5a, 0x5d, 0x47, 0x70, 0x25, 0x45, 0x12,
+  0x21, 0x11, 0x05, 0xb7, 0xae, 0x47, 0x74, 0xb5, 0xb0, 0x81, 0xa6, 0xfa,
+  0x1f, 0xcc, 0xa0, 0x16, 0x50, 0x80, 0xba, 0x1d, 0x5f, 0x68, 0xf4, 0x40,
+  0x1b, 0xc6, 0xb0, 0x0c, 0x5d, 0x74, 0x0e, 0x83, 0xc5, 0xb0, 0x18, 0xe0,
+  0xdd, 0xdc, 0x08, 0xef, 0xfa, 0x0f, 0x67, 0xe7, 0xa7, 0x3f, 0xfc, 0xf9,
+  0x1f, 0xdc, 0x45, 0x70, 0xb4, 0x7f, 0xe4, 0x1b, 0xcf, 0x1a, 0xff, 0xf9,
+  0x57, 0xf5, 0xf6, 0x60, 0x77, 0xf5, 0xf6, 0x07, 0x9a, 0x68, 0xb8, 0x0e,
+  0x73, 0x1e, 0xce, 0x38, 0x41, 0x72, 0xf7, 0xe5, 0xd5, 0x2d, 0x90, 0xd8,
+  0x31, 0x07, 0x49, 0x2d, 0x2f, 0x6b, 0xa5, 0x7e, 0xba, 0xea, 0x01, 0x02,
+  0x05, 0x1c, 0x25, 0xfe, 0xbc, 0xbc, 0x14, 0x16, 0x7a, 0x1c, 0xa0, 0xae,
+  0x04, 0xee, 0x7f, 0xb7, 0x1e, 0x07, 0x27, 0x27, 0xbf, 0x7e, 0x11, 0x5c,
+  0xc0, 0x47, 0x6d, 0x19, 0x60, 0x00, 0x71, 0x13, 0x1a, 0x3a, 0x01, 0xd7,
+  0xc8, 0xbf, 0x03, 0x4d, 0xd2, 0x0d, 0xe7, 0xdd, 0xa9, 0x8e, 0x46, 0x1c,
+  0x7f, 0xc3, 0x32, 0x21, 0x45, 0x00, 0x7e, 0x17, 0x56, 0xb9, 0xf8, 0x5a,
+  0xe4, 0x81, 0xb5, 0x4a, 0xea, 0x86, 0x5f, 0x5a, 0xe5, 0x76, 0x04, 0x11,
+  0x00, 0x5d, 0x08, 0x29, 0xe8, 0xb9, 0xf3, 0x59, 0x4b, 0xfd, 0x15, 0x94,
+  0xd5, 0x42, 0x06, 0x7b, 0x47, 0xa4, 0x01, 0xdb, 0x8d, 0x39, 0x6e, 0xa9,
+  0x48, 0xcb, 0x1b, 0xa4, 0xef, 0xf3, 0xa1, 0x1c, 0x48, 0xdd, 0xd9, 0x0a,
+  0x65, 0xb8, 0x59, 0x63, 0xc0, 0x50, 0x68, 0xec, 0x32, 0x62, 0xfa, 0xf7,
+  0xe2, 0xf4, 0xf0, 0xf4, 0x84, 0x7e, 0x39, 0x7a, 0x73, 0xfc, 0x83, 0x67,
+  0x68, 0x52, 0x8f, 0x45, 0x39, 0xaf, 0x31, 0x08, 0x57, 0x9f, 0xa5, 0xed,
+  0xc2, 0x6e, 0xc1, 0x64, 0xd7, 0xd5, 0xc8, 0xce, 0xf0, 0x99, 0x4f, 0x0a,
+  0x98, 0x09, 0xe3, 0x8c, 0x82, 0x1d, 0xc2, 0x45, 0x1c, 0x32, 0xbd, 0xfa,
+  0xde, 0xca, 0xa0, 0x20, 0x4f, 0xa5, 0x97, 0x2e, 0x3a, 0x35, 0x34, 0xb8,
+  0x9a, 0x8d, 0x45, 0x8d, 0x2c, 0x6c, 0x1b, 0xf6, 0x88, 0xcf, 0xac, 0x71,
+  0x0f, 0x82, 0x49, 0x9a, 0xf2, 0x1d, 0x04, 0xbd, 0x68, 0x90, 0xc4, 0x46,
+  0x18, 0x98, 0xe1, 0x07, 0x0b, 0x07, 0xac, 0x6b, 0xae, 0x3e, 0x27, 0x5d,
+  0x00, 0x4d, 0x7d, 0x46, 0x4a, 0x21, 0x7c, 0xfa, 0x5e, 0x01, 0x72, 0xf1,
+  0x41, 0x1d, 0x79, 0xf8, 0x30, 0xf8, 0x41, 0x99, 0xfc, 0xeb, 0x2a, 0xbd,
+  0x8d, 0x91, 0xe2, 0x0f, 0x7c, 0x00, 0x79, 0xa9, 0xd1, 0x46, 0xfc, 0xab,
+  0x1a, 0x89, 0xeb, 0xad, 0x3c, 0xfb, 0x35, 0x8d, 0x3c, 0x6b, 0xb4, 0x71,
+  0xfd, 0xab, 0x1a, 0x71, 0x75, 0xc5, 0xe8, 0x5a, 0xfc, 0xe1, 0xf8, 0x22,
+  0x3a, 0x3c, 0x7d, 0xed, 0x69, 0xf4, 0xc2, 0x5d, 0xed, 0x31, 0xc9, 0x35,
+  0x24, 0x8c, 0xc3, 0xbe, 0x86, 0xba, 0xaa, 0x41, 0x35, 0x71, 0xa4, 0x2b,
+  0x96, 0xbe, 0xd0, 0x7d, 0x8a, 0x8f, 0x0a, 0xc9, 0x41, 0x0c, 0xd1, 0x42,
+  0xf5, 0x71, 0xad, 0x50, 0xeb, 0xc2, 0x56, 0x98, 0xb2, 0xb9, 0xbc, 0x40,
+  0x5c, 0x18, 0x9a, 0xc8, 0x24, 0x66, 0x8f, 0x6a, 0x26, 0x8e, 0x68, 0xd6,
+  0x04, 0x2a, 0x1f, 0xf9, 0x98, 0xbb, 0x9c, 0x66, 0x18, 0x78, 0x38, 0xf3,
+  0x17, 0xf1, 0x48, 0xa2, 0xfe, 0x73, 0x61, 0x73, 0x8c, 0xa6, 0x96, 0x4c,
+  0xbd, 0xab, 0x9c, 0x30, 0xab, 0x51, 0x8c, 0x16, 0x96, 0x80, 0xe4, 0xc5,
+  0x52, 0x1b, 0x7c, 0x59, 0x38, 0x8f, 0x7c, 0x2f, 0x66, 0x4e, 0x97, 0xd7,
+  0x9a, 0xa7, 0x2d, 0x16, 0xe5, 0x9a, 0x70, 0xfd, 0xec, 0xc9, 0x8f, 0x37,
+  0x52, 0x80, 0x9d, 0xce, 0x9f, 0x66, 0xe1, 0xa6, 0x7f, 0x0b, 0xee, 0xe8,
+  0x27, 0x3e, 0x00, 0x65, 0x11, 0xcf, 0x25, 0x2c, 0x48, 0x02, 0x21, 0x49,
+  0xdf, 0xa9, 0xe2, 0x8f, 0x88, 0xe4, 0x62, 0x91, 0x08, 0x6b, 0x38, 0x0d,
+  0xd8, 0xe0, 0x53, 0x65, 0xce, 0x91, 0xa9, 0xf6, 0x72, 0xfe, 0xcc, 0x65,
+  0xa0, 0x79, 0x77, 0x71, 0xe9, 0x02, 0x42, 0x39, 0x7e, 0x45, 0x41, 0xa8,
+  0xc4, 0x45, 0x51, 0x72, 0x85, 0xdb, 0x6e, 0xb7, 0xb1, 0xeb, 0xd6, 0x40,
+  0x8b, 0x72, 0x09, 0x19, 0x47, 0xd0, 0x40, 0x3a, 0x4d, 0x25, 0xc5, 0x2a,
+  0x2d, 0xe5, 0x4b, 0xae, 0xe5, 0x26, 0x8b, 0x36, 0x5c, 0x63, 0xaf, 0xcd,
+  0x05, 0x7c, 0x4e, 0x39, 0x9c, 0xc9, 0x1f, 0xb3, 0x1c, 0x2b, 0x29, 0x01,
+  0x56, 0x5c, 0xe0, 0x93, 0xbe, 0xb8, 0x17, 0x57, 0x70, 0x9c, 0xe5, 0x1d,
+  0x90, 0x48, 0x6e, 0x63, 0x54, 0x09, 0xf6, 0x1a, 0xe7, 0x33, 0x8b, 0x5b,
+  0x50, 0x5e, 0x6e, 0x65, 0xbe, 0x8c, 0x89, 0xc3, 0xe0, 0xa3, 0xb5, 0x0a,
+  0x94, 0x6b, 0x49, 0x5e, 0xc2, 0x54, 0x72, 0xef, 0x78, 0xae, 0xed, 0xa8,
+  0x3b, 0x6d, 0x25, 0x50, 0x3d, 0x9e, 0xaf, 0xe9, 0x87, 0x1b, 0x93, 0x7d,
+  0x93, 0x4e, 0x9a, 0x69, 0x1b, 0xdc, 0x7e, 0xbb, 0xb5, 0xcf, 0x9a, 0x24,
+  0x62, 0x59, 0x14, 0x0c, 0xf9, 0x99, 0x87, 0xc9, 0x54, 0x9f, 0xeb, 0x93,
+  0x6c, 0x85, 0xb8, 0x4b, 0xd8, 0x72, 0xe4, 0xe2, 0x7d, 0x8b, 0x64, 0x39,
+  0x77, 0x53, 0xb4, 0x0f, 0x91, 0xbd, 0x05, 0x67, 0x24, 0x56, 0x7c, 0xaa,
+  0xe3, 0x6d, 0x87, 0x94, 0x85, 0x02, 0xe3, 0x0b, 0xdf, 0x49, 0x8c, 0x6c,
+  0x1b, 0x22, 0x92, 0x2c, 0x75, 0x04, 0xa9, 0x95, 0x7a, 0xf1, 0x11, 0xe7,
+  0x8b, 0x03, 0x4e, 0xcf, 0xfe, 0xb6, 0x37, 0xda, 0x91, 0x90, 0x72, 0x53,
+  0xf8, 0x40, 0x7e, 0xac, 0xc3, 0xaa, 0x10, 0xd4, 0x16, 0x5f, 0x73, 0x03,
+  0x20, 0x1b, 0x71, 0xa6, 0x31, 0x6d, 0xa8, 0x09, 0x3f, 0x8a, 0xde, 0xb6,
+  0xb3, 0x80, 0xf3, 0xcb, 0x4a, 0xb1, 0xcf, 0xd8, 0xd2, 0x3e, 0x0b, 0xea,
+  0x4b, 0xe1, 0x4a, 0x0e, 0x4a, 0x86, 0xf0, 0x09, 0x70, 0xf7, 0x0e, 0xe2,
+  0x09, 0xa3, 0x76, 0x7a, 0xbb, 0x07, 0xfe, 0xf3, 0xeb, 0xb0, 0xbb, 0xdb,
+  0x5c, 0xec, 0xb3, 0x83, 0xf1, 0xd8, 0x16, 0xfa, 0x30, 0x5c, 0x50, 0x59,
+  0x42, 0xcd, 0xae, 0x65, 0xf0, 0x3d, 0x43, 0x66, 0x6d, 0xab, 0x3b, 0xda,
+  0x46, 0x23, 0x4b, 0x6e, 0xf7, 0x89, 0xeb, 0xcb, 0x75, 0xf5, 0x9d, 0xb4,
+  0x35, 0xf8, 0xc4, 0xae, 0xba, 0xfb, 0xfa, 0xae, 0xa3, 0xaf, 0xa7, 0x2d,
+  0x22, 0xda, 0xdb, 0xfb, 0xcc, 0x00, 0x50, 0x04, 0x52, 0x7e, 0x1e, 0xf9,
+  0x0e, 0x83, 0x1e, 0xe9, 0xb9, 0x21, 0x6c, 0x95, 0xed, 0xbe, 0x94, 0x2e,
+  0x78, 0x34, 0x41, 0x57, 0xcf, 0x5c, 0x57, 0xa4, 0x33, 0xf5, 0xe1, 0x34,
+  0xd3, 0x43, 0xd2, 0x3a, 0x3b, 0xb0, 0x53, 0xf3, 0x41, 0x39, 0xe6, 0x35,
+  0x20, 0x31, 0x6c, 0x6d, 0xde, 0xa1, 0x8d, 0x22, 0xe8, 0xe7, 0x33, 0x3f,
+  0x25, 0x3f, 0x6e, 0x56, 0x6c, 0x14, 0x62, 0x6d, 0x14, 0x1c, 0x56, 0x47,
+  0x28, 0x16, 0x67, 0xef, 0x02, 0xc0, 0x9a, 0x7c, 0x46, 0x5e, 0xf5, 0xbd,
+  0xc8, 0xf1, 0x3b, 0x63, 0x22, 0xd6, 0xfa, 0x36, 0xa3, 0xe8, 0x14, 0x4a,
+  0x58, 0x0d, 0x05, 0x57, 0xd0, 0x67, 0x62, 0x6f, 0xa5, 0x29, 0xc2, 0xd3,
+  0xbe, 0xfb, 0xc2, 0xaf, 0x89, 0x0d, 0xc9, 0x9c, 0x96, 0xdb, 0x7a, 0x7c,
+  0xbc, 0x7f, 0xc4, 0x62, 0x12, 0x12, 0x44, 0x88, 0x70, 0xfe, 0x14, 0x50,
+  0x47, 0x5b, 0xf8, 0x7c, 0x74, 0xa4, 0xb6, 0x9c, 0x6b, 0xe1, 0x12, 0x9c,
+  0x24, 0xb8, 0x83, 0x3c, 0x25, 0xff, 0x75, 0xc5, 0x0c, 0x09, 0xb7, 0x2e,
+  0xdd, 0xa1, 0xfa, 0xa7, 0xbd, 0x27, 0x88, 0x2b, 0x5c, 0x05, 0x0b, 0xb7,
+  0xb2, 0xcf, 0x91, 0xd0, 0x93, 0xe1, 0xd6, 0xdf, 0xe7, 0x7b, 0x4a, 0xcd,
+  0x09, 0x61, 0x9c, 0x0e, 0x76, 0x61, 0xe4, 0x52, 0x09, 0x0d, 0x7f, 0x04,
+  0x30, 0xa8, 0xca, 0x00, 0x05, 0xba, 0xa0, 0xe5, 0x31, 0x72, 0x9d, 0x2b,
+  0xd3, 0xd7, 0x41, 0xd4, 0x83, 0xed, 0x02, 0xe9, 0x22, 0x52, 0xfb, 0x40,
+  0xf4, 0x74, 0x67, 0xa7, 0xa3, 0xca, 0x4f, 0x3c, 0xc9, 0x6f, 0x2d, 0x66,
+  0x55, 0x91, 0x64, 0xf0, 0x96, 0x28, 0xcd, 0x10, 0x2d, 0x4a, 0x16, 0x53,
+  0x87, 0x97, 0x6c, 0x13, 0xe0, 0x15, 0x33, 0x8f, 0x50, 0xb0, 0x6e, 0x72,
+  0x2a, 0xbf, 0x07, 0xb4, 0x8d, 0x2d, 0x5a, 0xe3, 0x38, 0x0a, 0xee, 0x8d,
+  0x95, 0xa5, 0x88, 0x83, 0xda, 0x47, 0x1a, 0x25, 0xd1, 0x1a, 0x99, 0x22,
+  0x31, 0x07, 0xdd, 0x3c, 0x6b, 0x53, 0xc4, 0xf8, 0xe2, 0xf4, 0x5c, 0x29,
+  0xac, 0xcd, 0x75, 0xb5, 0xb0, 0x36, 0x3f, 0xe2, 0xe3, 0x76, 0x07, 0x1d,
+  0x61, 0x08, 0xce, 0x20, 0x2f, 0x19, 0xa3, 0xb4, 0x5c, 0x41, 0xaf, 0xcf,
+  0x7d, 0xc8, 0xa0, 0x4e, 0xed, 0x3b, 0xb5, 0xc0, 0x5b, 0x79, 0x1c, 0xab,
+  0xb6, 0x1d, 0xbc, 0x24, 0x07, 0xed, 0x74, 0x05, 0x62, 0x17, 0x83, 0x31,
+  0xd3, 0x91, 0x9a, 0x8e, 0x39, 0x4e, 0x56, 0xad, 0x69, 0xce, 0x35, 0xd8,
+  0xa4, 0x45, 0x39, 0x44, 0xa7, 0xae, 0x02, 0x92, 0x85, 0x11, 0xb8, 0xbb,
+  0xcb, 0xab, 0xae, 0x70, 0x5b, 0xb3, 0xc3, 0x49, 0x82, 0x32, 0x34, 0x8d,
+  0x34, 0xe6, 0xbc, 0x8c, 0xe6, 0x6e, 0x4f, 0x49, 0x32, 0x92, 0xe8, 0xd5,
+  0xdc, 0x4a, 0xcc, 0x9b, 0xa8, 0xe8, 0xa5, 0xac, 0x1d, 0xb7, 0xce, 0x67,
+  0xa7, 0xe7, 0x17, 0x36, 0x34, 0x74, 0x8b, 0x0f, 0x1a, 0xe7, 0x87, 0x51,
+  0xd4, 0x22, 0x01, 0x02, 0x07, 0x67, 0x91, 0x4d, 0x68, 0x69, 0xa5, 0x2a,
+  0x11, 0xca, 0xa6, 0xa0, 0x1d, 0x6b, 0x88, 0x75, 0xb6, 0xe2, 0xde, 0xa2,
+  0xca, 0x58, 0xdb, 0x71, 0x3c, 0x47, 0xcc, 0x28, 0xcc, 0xa0, 0xbb, 0xdd,
+  0xbd, 0x5e, 0xa6, 0x79, 0xb2, 0xdb, 0xa6, 0x0e, 0x56, 0x9e, 0xcf, 0x8f,
+  0xb8, 0x1c, 0xfb, 0xc5, 0xb5, 0xfc, 0xd6, 0x1a, 0xbb, 0x58, 0x71, 0xf5,
+  0xc3, 0xee, 0x20, 0x15, 0x50, 0x07, 0xe7, 0xfb, 0x70, 0x10, 0x3a, 0xb7,
+  0xef, 0xac, 0xca, 0xc1, 0x9a, 0x3d, 0x09, 0x72, 0xbb, 0xc1, 0x36, 0x95,
+  0x56, 0x90, 0x86, 0x8f, 0x0f, 0x7a, 0xda, 0x4b, 0x8f, 0x6e, 0x5d, 0x39,
+  0x12, 0x8c, 0xfb, 0xec, 0x5b, 0x78, 0xea, 0x5b, 0x58, 0x32, 0x7f, 0xd7,
+  0x06, 0x8e, 0xcd, 0xbb, 0xce, 0x1f, 0xba, 0x30, 0xde, 0xab, 0x24, 0x33,
+  0xc2, 0x90, 0xe7, 0x7c, 0x3b, 0xcf, 0x9c, 0xf7, 0xc8, 0xe4, 0xa3, 0x60,
+  0x28, 0xfc, 0xb1, 0x25, 0xd5, 0x22, 0x84, 0xaf, 0x41, 0x76, 0x4f, 0x9e,
+  0xfb, 0x1b, 0x82, 0x55, 0x09, 0x1f, 0x27, 0xa2, 0x2b, 0x10, 0xdc, 0x48,
+  0x1c, 0x67, 0x93, 0x66, 0xab, 0x04, 0x46, 0xb3, 0xb8, 0x98, 0x33, 0x30,
+  0xb9, 0x06, 0x7a, 0xb4, 0xdc, 0xd2, 0x9a, 0x1e, 0xee, 0xfb, 0xd1, 0x9b,
+  0xe8, 0xf8, 0xe4, 0xc8, 0x6f, 0x97, 0x40, 0x9a, 0xe3, 0x30, 0x7b, 0x21,
+  0x8f, 0x0e, 0x6e, 0xe6, 0xae, 0x8b, 0x51, 0x74, 0xc6, 0xf5, 0xe8, 0xe0,
+  0x7e, 0x2a, 0xff, 0xcd, 0xb7, 0x26, 0x87, 0x05, 0xc6, 0x18, 0xba, 0x40,
+  0x61, 0x14, 0x4d, 0x33, 0xda, 0x5d, 0x7c, 0xc2, 0xbf, 0x06, 0xa5, 0xc4,
+  0x5a, 0x53, 0x7e, 0xe1, 0x5f, 0x2e, 0x69, 0x1e, 0xa4, 0xaa, 0x35, 0x1f,
+  0x79, 0xaa, 0xb4, 0x45, 0x7a, 0x1c, 0x9a, 0x70, 0xec, 0x99, 0xcf, 0x74,
+  0x21, 0xf5, 0x3e, 0x66, 0xd2, 0xc2, 0xa5, 0x3d, 0x53, 0x63, 0xe3, 0x41,
+  0x53, 0x72, 0x29, 0x1c, 0xc8, 0x3a, 0x21, 0x7e, 0x9e, 0x4e, 0x0e, 0x3b,
+  0x4b, 0xa8, 0xad, 0x8c, 0x39, 0xee, 0xdc, 0xc1, 0xd6, 0xba, 0x5c, 0x28,
+  0xe6, 0x98, 0xfc, 0x82, 0xa2, 0x09, 0xb6, 0x41, 0x71, 0x1b, 0xc5, 0xf5,
+  0x9e, 0x0a, 0x35, 0x3a, 0xd2, 0x71, 0xf7, 0x58, 0x6d, 0x74, 0xdc, 0xb1,
+  0x4f, 0x22, 0xe2, 0xdd, 0x66, 0xd3, 0x10, 0xdd, 0xf2, 0xa1, 0x74, 0xf7,
+  0xf4, 0x99, 0x6f, 0xea, 0x12, 0x65, 0x1a, 0x8c, 0xbf, 0x1f, 0xd4, 0x78,
+  0x90, 0xc3, 0xfc, 0x4f, 0xdd, 0x93, 0xa2, 0x2c, 0x88, 0x85, 0xba, 0xe3,
+  0x58, 0x05, 0x7d, 0x08, 0x31, 0x5c, 0xe4, 0x1c, 0x31, 0x91, 0xdd, 0x7b,
+  0xf8, 0x90, 0x91, 0xc4, 0x20, 0x8a, 0x0d, 0x42, 0xea, 0x5f, 0x38, 0x60,
+  0x11, 0xd1, 0x36, 0x55, 0x41, 0x5f, 0xc4, 0x1f, 0x5b, 0x57, 0xfd, 0x62,
+  0xb5, 0x50, 0xd4, 0x84, 0xa0, 0xa7, 0xcf, 0x55, 0x9b, 0xbd, 0xc9, 0x88,
+  0x24, 0xbd, 0xfe, 0x17, 0x32, 0xd3, 0xdc, 0xb9, 0x88, 0x2d, 0x95, 0x23,
+  0x93, 0x50, 0xe5, 0xd2, 0x55, 0xfb, 0xea, 0x00, 0x26, 0xe7, 0x0b, 0x59,
+  0xc5, 0x44, 0x0b, 0x8a, 0xcc, 0x03, 0xdc, 0x4b, 0x5e, 0x6f, 0x7d, 0x4c,
+  0xbe, 0x7a, 0xc0, 0x67, 0x5f, 0x24, 0x7f, 0x41, 0x91, 0xcd, 0x91, 0x5c,
+  0x3a, 0x02, 0x3b, 0x25, 0xb3, 0xe4, 0x90, 0x05, 0xcf, 0xf2, 0x9e, 0xbe,
+  0x50, 0x53, 0x85, 0xaa, 0xc2, 0x56, 0xf9, 0xb1, 0x69, 0x69, 0x7e, 0xb6,
+  0xeb, 0xec, 0x3e, 0x8c, 0x51, 0xd0, 0x2f, 0x85, 0x3b, 0x04, 0x48, 0x05,
+  0xc4, 0xe0, 0xc6, 0xe3, 0x6f, 0xa2, 0xb7, 0xaf, 0x9f, 0x71, 0xba, 0xec,
+  0x55, 0x52, 0x70, 0x51, 0x55, 0xaf, 0x8b, 0x9d, 0x7e, 0x1b, 0x34, 0xb6,
+  0x17, 0xc6, 0x04, 0x88, 0xfe, 0xa4, 0x0c, 0x4d, 0x25, 0x6d, 0xda, 0x42,
+  0x86, 0xdd, 0xbb, 0x32, 0x17, 0x8a, 0x21, 0x65, 0x1b, 0x1a, 0x25, 0x64,
+  0x97, 0x66, 0xb6, 0x45, 0x9d, 0x89, 0x3d, 0x7b, 0xe2, 0x99, 0x58, 0x71,
+  0xbf, 0x64, 0xe0, 0xff, 0xec, 0x8a, 0x05, 0xea, 0x8e, 0x13, 0xf5, 0x4c,
+  0x18, 0xe7, 0xa1, 0x9c, 0x7b, 0x16, 0x66, 0xdb, 0xaf, 0xc5, 0xa5, 0x85,
+  0xcd, 0x04, 0xef, 0x3d, 0x0b, 0xd5, 0x49, 0x12, 0xc8, 0x71, 0x2f, 0x2a,
+  0x1e, 0x3f, 0x24, 0x95, 0xe0, 0xd9, 0xe7, 0xee, 0x59, 0xb6, 0x1d, 0xa4,
+  0x59, 0x50, 0x19, 0x65, 0xcd, 0x1b, 0x2a, 0x04, 0x8b, 0x68, 0xe0, 0xc5,
+  0x33, 0x91, 0x7b, 0x82, 0xb5, 0x0f, 0x5e, 0x79, 0x51, 0xd7, 0x96, 0x51,
+  0x52, 0xd0, 0x17, 0xe8, 0xe6, 0x49, 0xa5, 0xcb, 0xeb, 0xf0, 0x70, 0x3e,
+  0x97, 0x9b, 0xfa, 0xac, 0x09, 0x3c, 0x61, 0x3c, 0x30, 0x09, 0x7d, 0x77,
+  0x76, 0xd4, 0x85, 0xf4, 0x0f, 0x0f, 0x22, 0x7b, 0xa5, 0x55, 0x28, 0x9d,
+  0x69, 0x3d, 0xe8, 0x64, 0x57, 0xcf, 0x0c, 0x4d, 0x39, 0xbf, 0xca, 0xd2,
+  0xbf, 0x25, 0x41, 0xa6, 0xb5, 0x55, 0xb5, 0x09, 0x1e, 0xdf, 0x53, 0x86,
+  0x71, 0x1b, 0xcf, 0x53, 0x65, 0x8a, 0x6c, 0x47, 0xf7, 0x0f, 0x3c, 0x51,
+  0xaa, 0xfd, 0x98, 0xf2, 0x11, 0x95, 0x48, 0x59, 0xae, 0x6f, 0xc6, 0x1e,
+  0x9c, 0xa4, 0x06, 0x64, 0xf2, 0xfc, 0xa9, 0xca, 0x5e, 0x26, 0x1f, 0xf3,
+  0xbd, 0xc4, 0x0b, 0x31, 0x07, 0xe4, 0x79, 0x93, 0x4d, 0x3f, 0xd7, 0xab,
+  0x4f, 0xb7, 0x52, 0x83, 0xb4, 0x62, 0xe3, 0xd0, 0xec, 0x15, 0x28, 0x92,
+  0xbb, 0x34, 0xd3, 0xfc, 0xa7, 0xd6, 0xeb, 0xcf, 0xd7, 0x98, 0xa0, 0x4a,
+  0xb9, 0x37, 0x8f, 0x40, 0x4b, 0xc1, 0xf3, 0x9f, 0xf9, 0x93, 0x20, 0x95,
+  0xbf, 0x04, 0x31, 0xde, 0xe5, 0xf4, 0x20, 0x76, 0xcf, 0x0a, 0x8a, 0xd8,
+  0x59, 0x62, 0xd5, 0x65, 0x09, 0x3b, 0x6d, 0x36, 0xeb, 0x4a, 0x36, 0xbc,
+  0x74, 0xdd, 0xcf, 0x73, 0xe6, 0xa6, 0x41, 0x7f, 0x42, 0x52, 0x6f, 0x50,
+  0x22, 0xd2, 0x2b, 0x08, 0x59, 0xad, 0x98, 0x9b, 0x7f, 0xfa, 0x85, 0xd2,
+  0x86, 0xdd, 0x97, 0x26, 0xa6, 0xae, 0x7d, 0xe3, 0xb3, 0x9d, 0x50, 0x68,
+  0x9d, 0xb1, 0xa5, 0x5e, 0x20, 0x24, 0xd7, 0xbe, 0x20, 0x94, 0x71, 0x4c,
+  0xd7, 0xc8, 0x15, 0x11, 0x35, 0x9e, 0xf1, 0x38, 0xc6, 0xfe, 0xb1, 0xbd,
+  0x1a, 0xd3, 0xbd, 0x08, 0x45, 0xa8, 0xe8, 0xf8, 0x75, 0xf0, 0xe0, 0x13,
+  0x3f, 0xc1, 0x78, 0xce, 0xd2, 0xc0, 0xbd, 0x58, 0x22, 0x4a, 0xad, 0xa7,
+  0x17, 0x3c, 0xfa, 0x54, 0xd3, 0x58, 0x24, 0xda, 0x05, 0xcb, 0xdf, 0x7a,
+  0x46, 0xc8, 0xe1, 0x10, 0x59, 0x67, 0x15, 0x10, 0x17, 0x32, 0xf3, 0x16,
+  0x34, 0xf7, 0xfe, 0xb3, 0xe7, 0x0f, 0x3c, 0xab, 0x97, 0x66, 0xe9, 0xae,
+  0xfa, 0xe0, 0xbd, 0xcf, 0xda, 0xc7, 0xdc, 0xd4, 0x02, 0xc3, 0x85, 0xa1,
+  0xa3, 0xc6, 0x27, 0x2d, 0xda, 0x64, 0x40, 0xc1, 0x7f, 0x33, 0xd3, 0x4f,
+  0xc1, 0xd9, 0x77, 0xe5, 0xbf, 0x85, 0xe3, 0xfd, 0x3c, 0x00, 0x9f, 0x52,
+  0xa3, 0x8f, 0xab, 0xea, 0x1c, 0x56, 0x7a, 0xf4, 0x11, 0xe5, 0x58, 0x9d,
+  0xa0, 0x05, 0xd9, 0x73, 0x92, 0x23, 0x56, 0x99, 0xe7, 0x1c, 0xa2, 0x0c,
+  0x2a, 0x2c, 0xa7, 0xc5, 0x76, 0xeb, 0xe8, 0xbe, 0xa1, 0x4d, 0x05, 0x75,
+  0x04, 0xc6, 0xb3, 0x9d, 0xc6, 0x31, 0x28, 0xaf, 0x57, 0xa2, 0x7a, 0xbb,
+  0x19, 0x79, 0x30, 0xa8, 0xe0, 0xb5, 0x3d, 0xcf, 0xbd, 0x30, 0x36, 0x48,
+  0x8d, 0x87, 0x34, 0x5a, 0xd1, 0xcd, 0x23, 0x90, 0xa1, 0x39, 0x3e, 0x50,
+  0x45, 0xde, 0x83, 0xc9, 0x6e, 0xc6, 0x6b, 0x80, 0x0f, 0x14, 0xab, 0x25,
+  0xe8, 0x46, 0x45, 0x1b, 0x0e, 0x88, 0xa7, 0x5d, 0xba, 0x4e, 0xa6, 0x37,
+  0x76, 0x64, 0x36, 0xe3, 0x06, 0xc2, 0x4b, 0xf0, 0xd6, 0x53, 0xb7, 0xb4,
+  0x50, 0x6b, 0xce, 0x8f, 0x9a, 0x9a, 0x80, 0x7f, 0x54, 0xa8, 0xe6, 0xfc,
+  0x62, 0x7c, 0xb6, 0xcf, 0x63, 0x16, 0x17, 0x0c, 0x1d, 0x88, 0xc3, 0x71,
+  0xf2, 0x57, 0xcd, 0xf3, 0x2d, 0xfd, 0xd3, 0xcf, 0xd7, 0x3c, 0x3d, 0xd6,
+  0x18, 0xa9, 0xe3, 0x19, 0xb3, 0x5f, 0xda, 0x87, 0xf0, 0xa5, 0xcf, 0x14,
+  0x2f, 0xc1, 0x4c, 0xbb, 0x62, 0x39, 0xe2, 0x91, 0xb9, 0x94, 0x1a, 0xff,
+  0xf0, 0xe7, 0x5e, 0xaf, 0xb9, 0x5e, 0x65, 0x37, 0x4e, 0x5e, 0xd4, 0x00,
+  0x36, 0xdb, 0x60, 0xff, 0xc2, 0x0b, 0x3b, 0x1a, 0x01, 0x66, 0x97, 0x73,
+  0x7f, 0x0f, 0xd4, 0x52, 0x61, 0x31, 0xab, 0xe2, 0x3b, 0x22, 0xfe, 0xba,
+  0x0a, 0xd6, 0xe0, 0xc5, 0x8e, 0xbb, 0x7e, 0x97, 0xab, 0x09, 0x09, 0xa4,
+  0xd1, 0x4d, 0x72, 0xdf, 0xa8, 0xbd, 0xce, 0x8e, 0x80, 0x34, 0x63, 0x43,
+  0x84, 0x7f, 0xc4, 0x35, 0xf0, 0xc3, 0x0f, 0xc2, 0xe3, 0x5d, 0x04, 0x95,
+  0xba, 0x16, 0x5c, 0x3d, 0x64, 0x62, 0x88, 0x22, 0x16, 0xf0, 0xf1, 0x82,
+  0x3d, 0xbe, 0x48, 0xe6, 0x09, 0xc3, 0x80, 0x8b, 0x9e, 0x02, 0xc2, 0xee,
+  0x4a, 0x2a, 0xe4, 0x18, 0x63, 0xb8, 0x55, 0x38, 0x7d, 0x17, 0x06, 0xbd,
+  0x8c, 0x03, 0x53, 0xd5, 0x58, 0x45, 0x3b, 0x7e, 0xf0, 0xfe, 0xe2, 0x9b,
+  0xd3, 0xf3, 0x71, 0xb4, 0xcd, 0xf8, 0x8c, 0x17, 0xe7, 0xc7, 0x5f, 0xbd,
+  0x27, 0xfd, 0xdf, 0xb9, 0x65, 0x5e, 0xc7, 0x59, 0x4a, 0x37, 0xc7, 0xb8,
+  0x4a, 0x32, 0xda, 0xc7, 0x2b, 0xab, 0xb9, 0x89, 0x10, 0x1d, 0xbe, 0x2b,
+  0xf3, 0x62, 0xe0, 0xca, 0xaa, 0xdf, 0x5d, 0xe7, 0xba, 0x19, 0x12, 0x6c,
+  0xc9, 0x69, 0x05, 0x9c, 0xad, 0x91, 0x7b, 0xdd, 0x36, 0xad, 0x63, 0x6e,
+  0x46, 0xe6, 0x5d, 0x8d, 0x2e, 0xbe, 0x39, 0x78, 0xf7, 0xed, 0xd8, 0x30,
+  0xee, 0xbf, 0xff, 0xfe, 0xfb, 0xd0, 0xeb, 0xbf, 0xbf, 0xbd, 0x0d, 0xf1,
+  0xf2, 0x3a, 0xfe, 0xf8, 0x71, 0x54, 0x26, 0x1b, 0x1b, 0x6f, 0xbc, 0xaf,
+  0xce, 0x57, 0x4c, 0x2d, 0x57, 0x24, 0x59, 0xd0, 0xd7, 0xdb, 0xb4, 0xbe,
+  0x5c, 0xa1, 0x75, 0x7b, 0x55, 0xa5, 0x73, 0xba, 0x90, 0x92, 0x12, 0x6f,
+  0x6f, 0x6f, 0x6c, 0x8c, 0x8f, 0x8e, 0xa2, 0x83, 0x93, 0xf1, 0x69, 0xf0,
+  0xee, 0xe6, 0x2e, 0x47, 0xae, 0x5c, 0x25, 0xd5, 0x26, 0x43, 0x9d, 0x9e,
+  0x1c, 0x5c, 0xb0, 0xce, 0xfb, 0xdd, 0xd1, 0xf9, 0xf8, 0xf8, 0xf4, 0x1d,
+  0xef, 0x0e, 0x07, 0x2c, 0xc6, 0xf3, 0x3b, 0x8e, 0x57, 0xbd, 0x4c, 0x81,
+  0x3b, 0x73, 0x67, 0xe5, 0x4f, 0x9b, 0x38, 0xf2, 0x74, 0x5f, 0xdd, 0x31,
+  0x04, 0xb4, 0x06, 0x3a, 0x70, 0xe0, 0x3a, 0xad, 0x84, 0x45, 0x22, 0x6e,
+  0x44, 0xde, 0xee, 0x25, 0xd5, 0x7b, 0x92, 0x89, 0x84, 0x57, 0x0f, 0x04,
+  0xad, 0x01, 0xe9, 0x2d, 0x41, 0xdc, 0x64, 0xe7, 0xc4, 0xc7, 0xc7, 0x5c,
+  0x67, 0x24, 0x7a, 0x3f, 0x3e, 0xf8, 0xfa, 0x88, 0x1f, 0xfd, 0x3a, 0xa9,
+  0xfc, 0x7e, 0x48, 0x99, 0x56, 0xee, 0xe4, 0x5d, 0x52, 0x95, 0xd3, 0x78,
+  0xc9, 0x69, 0xe9, 0xd4, 0xcd, 0x50, 0xee, 0xa1, 0xa0, 0x6d, 0xd1, 0x05,
+  0x7c, 0x2d, 0xdb, 0x4c, 0x9f, 0x47, 0xa1, 0xd9, 0xb0, 0xdd, 0xf3, 0xa3,
+  0x83, 0xd7, 0x6f, 0x8f, 0x2c, 0x40, 0x5f, 0x6a, 0x3b, 0x50, 0xa3, 0xd7,
+  0xf9, 0x22, 0x09, 0x6c, 0xe1, 0x2c, 0x1b, 0xf0, 0xe2, 0xd3, 0x37, 0x5c,
+  0xe9, 0xb5, 0xbb, 0x3b, 0xbf, 0x51, 0x78, 0x76, 0x74, 0x99, 0x6e, 0x4b,
+  0xeb, 0xd6, 0x5f, 0xec, 0x96, 0x44, 0xc1, 0xb7, 0x4d, 0x5c, 0x16, 0x9b,
+  0x06, 0x8c, 0x21, 0x9f, 0xef, 0xec, 0xec, 0x3c, 0x30, 0x0f, 0xe8, 0x13,
+  0x7a, 0xeb, 0xd2, 0x54, 0xf6, 0xf9, 0xf1, 0x6d, 0xdf, 0xbe, 0x1f, 0xf1,
+  0x5c, 0xd3, 0xff, 0xb9, 0x20, 0x5b, 0x26, 0x38, 0xb3, 0x69, 0x95, 0x74,
+  0x0f, 0x79, 0x9a, 0xe7, 0x6e, 0x07, 0x6a, 0x8b, 0x43, 0x12, 0x32, 0x24,
+  0x1e, 0x8d, 0xec, 0xc4, 0x1b, 0x32, 0x70, 0xd2, 0x7f, 0x10, 0xcd, 0x56,
+  0xdc, 0x37, 0x9b, 0xe4, 0x6f, 0xa8, 0x4d, 0xfe, 0x31, 0xca, 0x8b, 0xab,
+  0xed, 0xc5, 0x3e, 0x44, 0x1a, 0x7a, 0xe8, 0x0d, 0x03, 0x83, 0x44, 0x24,
+  0x1a, 0xbb, 0xa0, 0xf4, 0x92, 0x17, 0x96, 0xf3, 0x67, 0x3e, 0x61, 0x5c,
+  0xbf, 0x60, 0x15, 0x24, 0x22, 0xea, 0xd2, 0x66, 0x6e, 0x15, 0x19, 0x3b,
+  0x3a, 0x29, 0x79, 0xc3, 0xd8, 0xe2, 0x38, 0x22, 0x06, 0x42, 0xbd, 0x70,
+  0xb8, 0x1b, 0x48, 0x84, 0x7e, 0x2d, 0x88, 0x64, 0x46, 0xd5, 0x47, 0xf0,
+  0x5d, 0x2d, 0x0f, 0x2a, 0x38, 0x89, 0xec, 0xc1, 0x5d, 0x72, 0xde, 0x66,
+  0x81, 0xea, 0x22, 0xe8, 0x81, 0xf3, 0x41, 0x89, 0xf3, 0x5c, 0xe9, 0xc2,
+  0x21, 0x06, 0x88, 0x1b, 0x6e, 0xf6, 0x39, 0x1c, 0x82, 0x7e, 0x4a, 0x47,
+  0x2d, 0x9f, 0xd0, 0x79, 0x30, 0x29, 0x59, 0xfd, 0x4c, 0xaf, 0xe9, 0x80,
+  0x76, 0xc6, 0x34, 0x8a, 0x56, 0x5f, 0x2b, 0x5f, 0xe0, 0xb4, 0x94, 0xee,
+  0x82, 0x12, 0x3d, 0x0c, 0xab, 0xb6, 0x8d, 0x2c, 0xb2, 0x4f, 0xee, 0xe3,
+  0xf0, 0x4c, 0x7f, 0xe3, 0x58, 0x9a, 0xf4, 0x96, 0x27, 0xcf, 0x2c, 0x9e,
+  0x2e, 0x6b, 0xbe, 0x03, 0x4c, 0xc6, 0x45, 0x68, 0x0e, 0xd4, 0x55, 0x64,
+  0x3c, 0x84, 0xfa, 0xc6, 0x03, 0x23, 0xdc, 0xa7, 0xa5, 0xe1, 0x2b, 0xe5,
+  0xbf, 0xb6, 0x47, 0x65, 0x79, 0xbd, 0x9d, 0xce, 0x3e, 0x14, 0x65, 0x1c,
+  0xfd, 0x54, 0xe7, 0xf7, 0xe5, 0xb4, 0x39, 0x89, 0xff, 0xc2, 0x0a, 0xfe,
+  0xa2, 0x95, 0x5a, 0x3f, 0x8b, 0xdf, 0x62, 0x06, 0xc3, 0x21, 0xe0, 0x0a,
+  0xb4, 0xa7, 0x0f, 0xf4, 0xc0, 0x07, 0x87, 0xb9, 0xf0, 0x2b, 0x66, 0xd7,
+  0xc1, 0x0a, 0x69, 0x92, 0x12, 0x68, 0x4e, 0xbc, 0xa5, 0x9b, 0xd0, 0x7b,
+  0x7a, 0x74, 0x7e, 0xdc, 0xdb, 0xd9, 0xd9, 0xdd, 0xdf, 0xfd, 0xfc, 0xc5,
+  0xce, 0xfe, 0xee, 0xee, 0xee, 0xde, 0xfe, 0xee, 0xfe, 0xfe, 0xde, 0xce,
+  0xcf, 0xdb, 0xbd, 0x75, 0x4b, 0xf7, 0xf6, 0xab, 0x35, 0x0d, 0xd2, 0xac,
+  0x7b, 0x12, 0xc5, 0xfa, 0x93, 0x9b, 0x3d, 0x66, 0x35, 0xeb, 0x45, 0xe5,
+  0x62, 0x42, 0x5d, 0xe9, 0xe1, 0x0c, 0x27, 0x53, 0x92, 0x24, 0x9d, 0x04,
+  0x13, 0x7a, 0x7d, 0xfa, 0xfd, 0xbb, 0x93, 0xd3, 0x83, 0xd7, 0xd1, 0xc5,
+  0x69, 0x74, 0x00, 0xbb, 0x5f, 0x07, 0x9f, 0x44, 0x24, 0x3a, 0x67, 0x5c,
+  0x0a, 0xe0, 0x83, 0xf7, 0x11, 0x98, 0x91, 0xca, 0x85, 0x3e, 0x61, 0x10,
+  0xcd, 0x71, 0xe6, 0xd0, 0xeb, 0xb8, 0xa5, 0xd1, 0x75, 0xb5, 0x78, 0xfc,
+  0x46, 0xf8, 0x94, 0x9e, 0x07, 0xe2, 0x8a, 0xf7, 0xaa, 0x3b, 0x86, 0x63,
+  0x27, 0x5f, 0xd3, 0x9a, 0xd4, 0xa1, 0xa5, 0x6e, 0x6c, 0x97, 0x84, 0xb3,
+  0x29, 0x81, 0x5b, 0x78, 0x03, 0xe7, 0x12, 0xde, 0xaf, 0x66, 0x70, 0x90,
+  0x2b, 0xdf, 0xae, 0x71, 0x12, 0x90, 0x91, 0x58, 0x28, 0xdd, 0x6a, 0x4d,
+  0xf0, 0x74, 0xed, 0x94, 0xe8, 0x2e, 0x4f, 0x3e, 0x62, 0xd6, 0x75, 0xde,
+  0x2b, 0x61, 0xce, 0x7e, 0x76, 0x28, 0x3c, 0x60, 0xc6, 0x88, 0xb4, 0xb0,
+  0x21, 0x23, 0xc2, 0xab, 0xa3, 0x3b, 0xee, 0xc7, 0x58, 0xb2, 0xef, 0x82,
+  0xbf, 0x09, 0xef, 0xf1, 0x6d, 0x67, 0xdf, 0x95, 0x01, 0xbc, 0x1f, 0x1f,
+  0xbf, 0xfb, 0x1a, 0x1e, 0xdc, 0xef, 0x4f, 0xcf, 0x5f, 0x8f, 0xa9, 0x59,
+  0x16, 0x70, 0x36, 0x60, 0xe2, 0x63, 0x4e, 0xa8, 0xa3, 0x92, 0x73, 0xc9,
+  0x5d, 0xff, 0x51, 0xc8, 0x69, 0xe0, 0x50, 0x12, 0x30, 0xcc, 0x40, 0xe1,
+  0x61, 0xf4, 0x83, 0xee, 0x5b, 0x23, 0xa0, 0xc6, 0x2f, 0x17, 0xf1, 0xf4,
+  0x9a, 0x35, 0x74, 0x21, 0x56, 0x84, 0xda, 0x6d, 0x73, 0xce, 0xcc, 0x36,
+  0x2b, 0x5e, 0xdb, 0x55, 0x0e, 0x72, 0x44, 0x2b, 0x92, 0xad, 0x68, 0x35,
+  0xae, 0x02, 0xf3, 0x0c, 0xd1, 0xfa, 0xe5, 0x3c, 0xbe, 0x42, 0x87, 0xed,
+  0x63, 0x10, 0x74, 0xa6, 0xdd, 0x7f, 0x6a, 0x97, 0x7c, 0x6d, 0xa0, 0xbd,
+  0x63, 0x10, 0x00, 0x10, 0xd1, 0x00, 0xe9, 0xa0, 0x9e, 0x27, 0x91, 0x3a,
+  0xd9, 0x4f, 0x8f, 0x90, 0x1e, 0xae, 0x12, 0xdd, 0x2c, 0xa1, 0x84, 0xca,
+  0xbd, 0x82, 0x24, 0x43, 0x82, 0xf9, 0x30, 0x40, 0xa4, 0x11, 0xe5, 0x94,
+  0x5b, 0x0a, 0x8c, 0x40, 0xa5, 0x0f, 0x4b, 0xf4, 0x55, 0x6e, 0x64, 0xc9,
+  0x79, 0x30, 0x40, 0x53, 0x2a, 0x2d, 0xde, 0x4d, 0xc5, 0xe0, 0x1e, 0x97,
+  0xc4, 0xe3, 0x80, 0x95, 0x9e, 0xa1, 0xa3, 0xf8, 0x7a, 0x19, 0x1e, 0x55,
+  0xbe, 0xac, 0x68, 0x28, 0x31, 0x17, 0x57, 0x44, 0xc9, 0x60, 0x03, 0xcb,
+  0x26, 0x75, 0x4a, 0xb2, 0x9a, 0x7b, 0x16, 0xf6, 0x22, 0xad, 0xa4, 0xa5,
+  0xe4, 0x15, 0x38, 0xe8, 0x07, 0xbe, 0xbc, 0x04, 0xcb, 0x69, 0x43, 0x43,
+  0x0a, 0xfc, 0x3d, 0xe9, 0x4d, 0x97, 0x7c, 0xc7, 0x91, 0x10, 0x4f, 0x0c,
+  0x5c, 0x28, 0x47, 0x53, 0x70, 0x83, 0xfa, 0xac, 0xb5, 0x65, 0xb3, 0x2c,
+  0x1c, 0x69, 0x8e, 0x39, 0xb3, 0x37, 0xc3, 0xba, 0x15, 0xdc, 0x40, 0xe8,
+  0x91, 0xbb, 0x05, 0x3a, 0xf2, 0xf1, 0x63, 0x0f, 0xc8, 0x12, 0x2c, 0x9b,
+  0x04, 0xdb, 0xf9, 0xf7, 0x68, 0x8f, 0xb8, 0xa9, 0xb4, 0x2a, 0x93, 0xf9,
+  0xa5, 0x22, 0xe8, 0xc8, 0x15, 0xc2, 0xb3, 0x8c, 0x1b, 0x38, 0x3b, 0xec,
+  0x2f, 0xcd, 0x1c, 0xa8, 0x47, 0xae, 0xbc, 0xe4, 0x0a, 0x6c, 0x5d, 0x9e,
+  0x03, 0x49, 0xd6, 0x78, 0x88, 0x38, 0x45, 0xff, 0x24, 0x81, 0x5a, 0xae,
+  0xb9, 0x1a, 0xeb, 0xa8, 0x45, 0x18, 0xf3, 0xad, 0x63, 0x6b, 0xc7, 0xab,
+  0x75, 0xbf, 0x64, 0x34, 0x7c, 0x8e, 0x8a, 0xf0, 0xa5, 0x35, 0x63, 0x4b,
+  0xe3, 0x01, 0xf0, 0x47, 0xf2, 0x91, 0x93, 0x5a, 0x74, 0x6e, 0x5e, 0xc9,
+  0x73, 0x42, 0xbd, 0xce, 0x97, 0x5b, 0xc3, 0xe7, 0xe0, 0x85, 0xbc, 0xda,
+  0x8c, 0x91, 0xc5, 0x8a, 0x9a, 0x46, 0xe2, 0x8a, 0x18, 0x68, 0xaa, 0xa1,
+  0x2b, 0xbd, 0xab, 0x48, 0x17, 0x92, 0x6f, 0x76, 0x6f, 0xde, 0x3f, 0x38,
+  0x5f, 0x63, 0x51, 0x20, 0x21, 0x04, 0x07, 0x1d, 0x33, 0x29, 0xa1, 0x52,
+  0x48, 0x2d, 0x54, 0xb3, 0x36, 0xcb, 0xd5, 0xc4, 0x6f, 0x2c, 0xd3, 0x08,
+  0x82, 0x1c, 0xb9, 0x49, 0xf8, 0x9a, 0x71, 0x6a, 0x5c, 0x8c, 0xef, 0xaa,
+  0x05, 0x7a, 0x94, 0x2a, 0x74, 0x14, 0x31, 0x14, 0x24, 0x30, 0xae, 0x4a,
+  0x47, 0x39, 0xb4, 0x5a, 0x37, 0x7a, 0x21, 0x6e, 0x20, 0xfa, 0xb5, 0xcd,
+  0x6e, 0x94, 0xf3, 0xae, 0xe7, 0x37, 0x8f, 0xb3, 0x9a, 0xf6, 0x90, 0x4c,
+  0x5f, 0x9c, 0xdf, 0x0b, 0x37, 0x48, 0xb3, 0x87, 0x99, 0x8e, 0x0e, 0xe2,
+  0x93, 0x3a, 0xc6, 0x5c, 0x15, 0x2a, 0x06, 0x6e, 0x15, 0x1f, 0x7d, 0x28,
+  0x91, 0x1c, 0x48, 0x8a, 0x69, 0x24, 0x77, 0x98, 0x51, 0xd2, 0xad, 0x23,
+  0x0e, 0xbc, 0xa4, 0x7e, 0xee, 0x47, 0x5f, 0xc5, 0x65, 0x3a, 0x1d, 0x68,
+  0x95, 0x45, 0xad, 0xba, 0xc8, 0x6f, 0xf8, 0xe2, 0x7b, 0x9b, 0x92, 0xd6,
+  0xb3, 0x35, 0x8a, 0xbe, 0xb7, 0xba, 0x99, 0xa4, 0x43, 0x4a, 0x99, 0xb2,
+  0x74, 0x8a, 0xd2, 0xa8, 0x35, 0x1c, 0x21, 0xa5, 0xcf, 0x10, 0xb0, 0x07,
+  0x9d, 0xf8, 0xb2, 0x38, 0xd8, 0xd5, 0xb8, 0xbc, 0x71, 0x9e, 0x30, 0xec,
+  0x95, 0xb2, 0x22, 0xe0, 0x0c, 0x8a, 0x2c, 0x2d, 0x96, 0x81, 0x7c, 0xe5,
+  0xc2, 0x4b, 0xf0, 0xb7, 0x3b, 0xbe, 0x56, 0xed, 0x16, 0xd6, 0xd7, 0x52,
+  0xe3, 0x12, 0x2d, 0x7a, 0x84, 0xaf, 0x5f, 0x6e, 0xce, 0xb1, 0xa8, 0xe1,
+  0x90, 0x16, 0x8c, 0x97, 0x46, 0x19, 0xe8, 0xe9, 0xc5, 0xd1, 0xbf, 0x44,
+  0x07, 0x4d, 0xe7, 0x39, 0xdf, 0x4c, 0x35, 0xe0, 0xa0, 0x81, 0x27, 0x30,
+  0x8c, 0x5d, 0x42, 0x11, 0x33, 0x2d, 0x89, 0xca, 0xdb, 0xbf, 0xa1, 0x89,
+  0xcf, 0xde, 0x44, 0x5c, 0xe6, 0x1a, 0x59, 0x5d, 0xdd, 0x1b, 0x40, 0x3e,
+  0xbf, 0x06, 0x97, 0xc2, 0x9d, 0xaf, 0x02, 0x2b, 0xb9, 0xa3, 0x69, 0x2c,
+  0x91, 0xed, 0x0c, 0x0f, 0x46, 0x9b, 0x92, 0x09, 0x03, 0x45, 0x10, 0xb6,
+  0xc4, 0x0a, 0x0a, 0x00, 0x57, 0x5a, 0x41, 0xd5, 0x92, 0x0c, 0x2e, 0x29,
+  0x94, 0x17, 0x14, 0x94, 0x8d, 0x43, 0xa4, 0xb6, 0x0f, 0x7c, 0xe4, 0x3e,
+  0xd8, 0xc5, 0xa2, 0x57, 0xa0, 0x8c, 0xe5, 0x52, 0xf4, 0xa0, 0x3a, 0xc9,
+  0xda, 0xb1, 0x93, 0xdb, 0xec, 0xcc, 0xc2, 0x10, 0xb1, 0x11, 0x53, 0xe0,
+  0x20, 0xcd, 0xef, 0xc5, 0x6b, 0x8e, 0x3b, 0xd5, 0xb8, 0x66, 0x78, 0x31,
+  0x01, 0xd9, 0x0c, 0x78, 0x4a, 0xa8, 0x5a, 0xad, 0x75, 0x98, 0x24, 0xe8,
+  0x9b, 0x5a, 0xad, 0x87, 0xea, 0x23, 0x79, 0x07, 0xab, 0xca, 0xa3, 0x10,
+  0x18, 0xc1, 0x30, 0x55, 0xa0, 0x94, 0x0a, 0xad, 0x91, 0x15, 0x21, 0x6e,
+  0x10, 0x34, 0x71, 0xc3, 0xe3, 0xaa, 0xc1, 0x9e, 0x5c, 0x85, 0xa3, 0x20,
+  0x46, 0xf5, 0x8d, 0x83, 0x94, 0xd3, 0x66, 0xb9, 0x52, 0xe3, 0x34, 0x09,
+  0x32, 0x74, 0xb2, 0x7c, 0x23, 0xb8, 0xf9, 0x84, 0x7e, 0xf2, 0xd2, 0x78,
+  0xa2, 0xc0, 0x8d, 0x49, 0x91, 0xb6, 0x49, 0x22, 0x95, 0x13, 0xb8, 0xb8,
+  0x0e, 0x76, 0x11, 0x68, 0x9c, 0x7c, 0x02, 0x85, 0x32, 0x17, 0x20, 0xee,
+  0x0d, 0x4f, 0xdd, 0x7c, 0x07, 0xad, 0x9b, 0x27, 0xa7, 0xea, 0x32, 0xb9,
+  0x99, 0xbd, 0x5c, 0x44, 0x27, 0xd6, 0x53, 0x32, 0xad, 0x41, 0x09, 0xe3,
+  0x91, 0x8e, 0x9a, 0x77, 0x07, 0x92, 0x6d, 0xe6, 0xe4, 0x2c, 0xdb, 0xf4,
+  0x1a, 0x6e, 0x1e, 0xf3, 0x94, 0x59, 0xb4, 0xb8, 0xd7, 0xd4, 0x14, 0x95,
+  0x0d, 0x18, 0xe3, 0x01, 0x56, 0x89, 0xcf, 0x3f, 0x6f, 0xc9, 0x82, 0x1f,
+  0xdd, 0xd3, 0xfb, 0xf4, 0x75, 0x60, 0xfd, 0x98, 0x73, 0xa0, 0x09, 0x5b,
+  0x1b, 0x20, 0x87, 0x3a, 0x13, 0x48, 0x87, 0x86, 0x11, 0xc0, 0x80, 0x49,
+  0x8f, 0xce, 0x2f, 0xd3, 0xa2, 0xb2, 0x81, 0xe7, 0xfb, 0x1b, 0xa2, 0x5e,
+  0xcb, 0x40, 0xe3, 0x52, 0x02, 0x96, 0xd6, 0x28, 0x66, 0xc6, 0x26, 0x9b,
+  0xa3, 0x0d, 0xa4, 0x66, 0x92, 0xdc, 0x47, 0x7c, 0xa9, 0xb2, 0x12, 0x30,
+  0xce, 0xb5, 0x61, 0x5e, 0x64, 0x1d, 0x8c, 0xa3, 0x8e, 0x06, 0x1d, 0xb9,
+  0x02, 0x99, 0x9e, 0x47, 0xbc, 0x5f, 0x3f, 0x9c, 0xf7, 0xbf, 0x66, 0x38,
+  0x07, 0xd1, 0x83, 0x29, 0x1a, 0x5a, 0xfe, 0x94, 0x39, 0x7e, 0x69, 0xc9,
+  0x69, 0x39, 0xa8, 0xda, 0xe4, 0x1e, 0x59, 0x23, 0xd4, 0xb8, 0x9d, 0xd4,
+  0xeb, 0x96, 0xb5, 0x0d, 0x13, 0x59, 0x2e, 0x4f, 0x43, 0xa9, 0xe1, 0xf6,
+  0x07, 0x36, 0x94, 0x4f, 0x1d, 0xae, 0xc1, 0x5f, 0x5a, 0x0e, 0x56, 0x23,
+  0xbd, 0x42, 0xd3, 0x9e, 0x76, 0x47, 0x3b, 0xa1, 0x7c, 0xe5, 0x92, 0xa1,
+  0x0a, 0x40, 0xaa, 0x56, 0x80, 0x96, 0xf2, 0x22, 0x0a, 0xcf, 0x04, 0xd9,
+  0x81, 0x8d, 0xd7, 0xf4, 0xb3, 0x5d, 0x81, 0x99, 0xa6, 0x93, 0xa4, 0xb5,
+  0x77, 0x18, 0x41, 0x27, 0x59, 0x2c, 0x91, 0x34, 0x62, 0x1c, 0x30, 0x14,
+  0x02, 0x70, 0x8e, 0x9e, 0xfa, 0x23, 0xf5, 0xcc, 0x6d, 0xb7, 0x8e, 0x51,
+  0x72, 0x0a, 0xb4, 0x9c, 0xb9, 0x84, 0xf5, 0x43, 0xf8, 0x4c, 0x12, 0x69,
+  0xa9, 0x5a, 0x9b, 0xdc, 0x76, 0x58, 0x4f, 0x34, 0x65, 0x7a, 0xc6, 0x65,
+  0x1b, 0x5d, 0xae, 0x0a, 0x30, 0x5e, 0x05, 0x15, 0x54, 0x34, 0x1a, 0x6e,
+  0x95, 0xe3, 0x73, 0x3b, 0x38, 0x0d, 0xd2, 0xb7, 0x13, 0x14, 0x28, 0xe7,
+  0x73, 0x2d, 0xd6, 0x71, 0x20, 0x67, 0x68, 0xf9, 0x38, 0xef, 0x7b, 0x73,
+  0xe2, 0x19, 0xb5, 0x3b, 0x4f, 0x69, 0x40, 0x7d, 0xc0, 0xb2, 0x58, 0xf5,
+  0x65, 0xe5, 0x85, 0x46, 0xc2, 0x0e, 0x61, 0xbc, 0x5e, 0xd8, 0xb8, 0x5d,
+  0x8d, 0xaa, 0xc9, 0x74, 0xe5, 0x1a, 0x18, 0x44, 0xc3, 0xff, 0xa5, 0x2b,
+  0xc3, 0xe2, 0x39, 0xc7, 0x8e, 0xa1, 0x04, 0xc5, 0x32, 0x40, 0xe8, 0xd4,
+  0x14, 0x3f, 0x30, 0x7c, 0x0e, 0x0c, 0xb5, 0x79, 0xb8, 0xbc, 0x5b, 0xcb,
+  0x11, 0x02, 0xff, 0x7b, 0x13, 0x62, 0xb1, 0xd6, 0x2a, 0x4e, 0x2b, 0xab,
+  0x90, 0xe6, 0x36, 0x5c, 0x4d, 0x0b, 0x89, 0x15, 0x6c, 0x0d, 0xd8, 0x5d,
+  0x64, 0x5f, 0x71, 0xd5, 0xbf, 0xc3, 0x3c, 0x0e, 0x97, 0xd5, 0x57, 0x0d,
+  0xd3, 0x91, 0x0a, 0xf1, 0x3b, 0x53, 0x86, 0xe4, 0xb7, 0x0e, 0xe9, 0x85,
+  0xe1, 0x7b, 0x35, 0x67, 0x7c, 0x29, 0x3d, 0x8c, 0x60, 0x76, 0x97, 0x1e,
+  0xce, 0x50, 0x2b, 0xd9, 0x1e, 0xd8, 0xd7, 0x97, 0x38, 0x29, 0xb6, 0xa7,
+  0x96, 0x9c, 0xfa, 0xaa, 0xc8, 0xf3, 0x96, 0x34, 0xcb, 0x85, 0x76, 0x31,
+  0x85, 0xa1, 0x38, 0x74, 0xf8, 0x90, 0xc9, 0xaf, 0xf2, 0xae, 0x2a, 0x8f,
+  0xf7, 0xdc, 0xc4, 0x48, 0xa2, 0xee, 0xd5, 0xf6, 0xb2, 0xb7, 0xbb, 0x2d,
+  0x83, 0xd9, 0x96, 0x06, 0x44, 0xae, 0x53, 0x92, 0xf4, 0x41, 0x20, 0x06,
+  0x40, 0x14, 0xde, 0x5c, 0x9c, 0x23, 0xc0, 0xc1, 0x3b, 0x0b, 0x8d, 0x3c,
+  0x86, 0x77, 0x8d, 0xaf, 0x26, 0xba, 0x6b, 0xa5, 0xba, 0x50, 0xae, 0xfb,
+  0xb3, 0xe1, 0x37, 0x68, 0xe0, 0x44, 0x3e, 0x22, 0xa5, 0xe1, 0x6d, 0xa8,
+  0x35, 0x25, 0x0a, 0x97, 0xc9, 0x15, 0x51, 0x5d, 0x0e, 0x1d, 0x1f, 0x74,
+  0xf1, 0xaf, 0x13, 0x45, 0x9f, 0x1f, 0xbc, 0xfb, 0xfa, 0x08, 0x92, 0x80,
+  0x03, 0x52, 0x4c, 0x99, 0xda, 0x67, 0xab, 0x29, 0x54, 0x21, 0x5a, 0x31,
+  0xc4, 0xbe, 0x01, 0x5a, 0x58, 0xf8, 0x79, 0x0a, 0xa8, 0x2b, 0x21, 0x5e,
+  0x6c, 0xb7, 0x46, 0xb4, 0x6d, 0x44, 0x66, 0x51, 0x85, 0x04, 0xc1, 0x0a,
+  0x23, 0x23, 0xa5, 0xe7, 0x80, 0x36, 0x98, 0x2c, 0x63, 0x45, 0xa8, 0x89,
+  0x43, 0x08, 0x13, 0xb5, 0xb3, 0x8c, 0xea, 0x67, 0x71, 0xc3, 0xd2, 0x5b,
+  0x9c, 0x4e, 0x5f, 0x40, 0xa7, 0x1f, 0x85, 0x56, 0x35, 0x81, 0xd8, 0xd8,
+  0xdd, 0xd9, 0xf1, 0xb5, 0x63, 0x3c, 0x14, 0x4b, 0x8b, 0x5b, 0x16, 0xd1,
+  0xce, 0xf0, 0xc5, 0x8b, 0x75, 0x8c, 0xd0, 0x35, 0x0a, 0x3c, 0x94, 0x67,
+  0x9f, 0xdc, 0xe6, 0x90, 0x1f, 0x5d, 0xd7, 0x66, 0x87, 0x46, 0x83, 0x82,
+  0xf5, 0x1a, 0x4d, 0x58, 0x3a, 0xa9, 0x45, 0x2d, 0x3c, 0xe2, 0xac, 0x81,
+  0xf3, 0x2c, 0x73, 0x6a, 0x0d, 0x2f, 0xe5, 0x86, 0xc7, 0x7e, 0x06, 0x70,
+  0x86, 0x19, 0x83, 0x96, 0x1c, 0x50, 0x98, 0x3a, 0x1f, 0xee, 0x27, 0x2d,
+  0x4c, 0xa0, 0xc0, 0xaf, 0x59, 0xa2, 0xcb, 0xf6, 0x6c, 0x4c, 0x24, 0x78,
+  0x7f, 0xc6, 0xf6, 0xbf, 0xe3, 0x77, 0x5f, 0x8b, 0x39, 0x84, 0x74, 0x7b,
+  0xd8, 0xd2, 0xb7, 0x1b, 0x9a, 0xfe, 0x7b, 0x29, 0x02, 0xc3, 0xe1, 0xa4,
+  0x08, 0xde, 0x90, 0x0a, 0xae, 0x69, 0x26, 0xac, 0xc0, 0xef, 0xfe, 0x1a,
+  0x5b, 0xe5, 0x45, 0x34, 0x0c, 0x84, 0x13, 0xad, 0x00, 0xc3, 0x92, 0xc9,
+  0xe2, 0xde, 0x34, 0x23, 0xed, 0x01, 0xad, 0x9b, 0x67, 0xc6, 0x35, 0x2b,
+  0x7a, 0xae, 0xa8, 0xe7, 0xa0, 0xa0, 0x96, 0x6c, 0xd2, 0xd1, 0xa5, 0x74,
+  0x83, 0xf3, 0xdd, 0x90, 0x44, 0x3e, 0x6d, 0x28, 0x35, 0x53, 0x67, 0xbd,
+  0x66, 0x20, 0x4b, 0x56, 0x03, 0xb3, 0xfd, 0x34, 0xcd, 0x90, 0x52, 0x95,
+  0x3c, 0xe4, 0xea, 0xbc, 0xdb, 0x28, 0x30, 0x9a, 0xe7, 0xff, 0xfd, 0x71,
+  0x3e, 0x30, 0x42, 0x3e, 0xa8, 0x7c, 0x53, 0x65, 0x33, 0x6f, 0xd3, 0xd0,
+  0x11, 0x77, 0x3a, 0x42, 0x2e, 0xe4, 0x7d, 0xe9, 0x3a, 0xee, 0xee, 0x4e,
+  0xde, 0xb7, 0xa5, 0xe9, 0x38, 0x00, 0x2c, 0xd2, 0x6a, 0x8d, 0x20, 0x97,
+  0x7a, 0x6a, 0xba, 0x0c, 0x4b, 0xe1, 0xe0, 0x1c, 0x69, 0x5d, 0x2c, 0xd9,
+  0x88, 0x34, 0xbf, 0x1d, 0x05, 0x84, 0x98, 0x86, 0x80, 0x28, 0x8f, 0xcb,
+  0xeb, 0x06, 0x81, 0xa1, 0x97, 0x0a, 0xc1, 0xcc, 0x2c, 0x8d, 0x85, 0x1a,
+  0xc5, 0xb8, 0xf2, 0x40, 0xd6, 0xc5, 0x2a, 0x53, 0xde, 0xc7, 0xfa, 0x16,
+  0x0d, 0x3e, 0x2e, 0xaf, 0x51, 0x92, 0xd9, 0x99, 0xa2, 0xda, 0xe2, 0x15,
+  0xba, 0x57, 0x54, 0x66, 0x92, 0xa7, 0x44, 0x98, 0x82, 0x70, 0x5d, 0x5b,
+  0x8a, 0xfa, 0x0a, 0x6c, 0x6c, 0xb0, 0x11, 0x7e, 0x9b, 0x4d, 0xf1, 0xe3,
+  0xf6, 0x02, 0x9a, 0x2d, 0xfd, 0x41, 0x7b, 0xbc, 0xf7, 0x31, 0x3c, 0x62,
+  0x99, 0x0f, 0xac, 0x27, 0x9f, 0x7a, 0xe2, 0x44, 0x7e, 0xef, 0xf0, 0x2b,
+  0xe2, 0xd0, 0x05, 0x8c, 0xac, 0x93, 0xd4, 0xeb, 0xd6, 0xb4, 0x50, 0x17,
+  0x80, 0xd1, 0x07, 0x9a, 0x19, 0x50, 0x20, 0x1a, 0xdb, 0x05, 0x85, 0x1d,
+  0xb8, 0xb2, 0x82, 0x74, 0x66, 0xec, 0x3d, 0x84, 0x2c, 0xf1, 0xe5, 0x8e,
+  0xe6, 0x92, 0x87, 0xc2, 0xb2, 0x85, 0xa8, 0xbf, 0x70, 0x75, 0x4b, 0xf6,
+  0x1c, 0xfa, 0xc4, 0x0c, 0x65, 0x80, 0x02, 0x76, 0x50, 0x21, 0xaa, 0x7d,
+  0x7c, 0xc1, 0x66, 0x04, 0x5c, 0x7d, 0xa6, 0x8f, 0x7e, 0x77, 0x74, 0xfe,
+  0xd5, 0xe9, 0xf8, 0x88, 0xf6, 0xe3, 0xf5, 0xd1, 0x57, 0xef, 0x99, 0x6b,
+  0x31, 0x75, 0x88, 0xe9, 0x19, 0xc0, 0xc0, 0x62, 0xff, 0x02, 0xdc, 0x19,
+  0x87, 0xeb, 0x81, 0x4c, 0x45, 0x0e, 0x1a, 0x18, 0x15, 0x9a, 0x88, 0x27,
+  0xf8, 0xba, 0xf3, 0x44, 0x6c, 0x95, 0x29, 0x92, 0x10, 0x3c, 0x06, 0x38,
+  0xc7, 0xfa, 0x71, 0xcd, 0x76, 0xa8, 0x97, 0x7a, 0x94, 0xa4, 0x08, 0x65,
+  0xb9, 0xef, 0x8d, 0x9a, 0xb7, 0x62, 0x99, 0xd6, 0xc3, 0xe7, 0xeb, 0xcd,
+  0xa3, 0x02, 0x03, 0x88, 0xf7, 0xd0, 0xc9, 0xd1, 0x0a, 0xd7, 0x39, 0xcf,
+  0xe5, 0xd6, 0x44, 0x69, 0x74, 0x6e, 0x1b, 0xf7, 0x78, 0x5a, 0xe1, 0x0a,
+  0x17, 0x85, 0x42, 0xcb, 0xb4, 0x97, 0x42, 0xdc, 0xc4, 0xde, 0x24, 0xed,
+  0x7c, 0xae, 0xd7, 0x01, 0xb8, 0x5f, 0x99, 0x08, 0x4e, 0x9c, 0xdc, 0xda,
+  0xea, 0x0f, 0x97, 0x40, 0x5f, 0x2d, 0xa8, 0xb2, 0xa9, 0x4a, 0xf0, 0x1d,
+  0xe6, 0xa9, 0x05, 0x3e, 0xa5, 0x90, 0xb9, 0x95, 0xf9, 0xc3, 0xca, 0x07,
+  0x21, 0x39, 0x4a, 0x3a, 0xb7, 0xeb, 0x59, 0xcf, 0x85, 0xcc, 0x94, 0xed,
+  0x1c, 0x22, 0x08, 0x18, 0x22, 0x33, 0xa0, 0x01, 0xeb, 0x45, 0xbe, 0xbd,
+  0x80, 0x22, 0x67, 0x97, 0xf3, 0x09, 0x02, 0x15, 0x72, 0x7d, 0xe9, 0xf3,
+  0x3a, 0xb2, 0x58, 0x90, 0x4d, 0x24, 0xcc, 0x55, 0xc3, 0xf0, 0x78, 0x4b,
+  0xe1, 0x12, 0x10, 0xe2, 0x6b, 0x9f, 0x77, 0x69, 0x5d, 0xaa, 0x9e, 0xf3,
+  0x19, 0x0d, 0x1c, 0x27, 0x1b, 0x1b, 0x1b, 0xaf, 0x8f, 0x2e, 0x0e, 0x8e,
+  0x4f, 0x8e, 0x5e, 0x47, 0xc7, 0xef, 0xde, 0x9c, 0x9e, 0xbf, 0x3d, 0xb8,
+  0xd0, 0x68, 0x8c, 0xd7, 0xce, 0x22, 0xe7, 0xc1, 0x9c, 0x14, 0x8c, 0x3d,
+  0xb0, 0xd6, 0x81, 0x84, 0x69, 0x17, 0xaf, 0x14, 0x78, 0x5f, 0x96, 0x21,
+  0xa9, 0xad, 0xc1, 0x46, 0xa4, 0x51, 0x1c, 0x1e, 0xfd, 0x8a, 0xe5, 0x82,
+  0x6d, 0xe7, 0x7b, 0x1f, 0xd9, 0x72, 0x9a, 0x19, 0x0d, 0x55, 0x18, 0x1f,
+  0x6c, 0x2a, 0x66, 0x1b, 0xc8, 0xd5, 0x3c, 0xd1, 0x3b, 0x91, 0xb7, 0x53,
+  0xd2, 0xff, 0x41, 0x93, 0xc3, 0xe3, 0xed, 0x3a, 0xe4, 0x30, 0x0c, 0x2d,
+  0x06, 0x86, 0x16, 0x03, 0x0e, 0x25, 0x04, 0xdd, 0xb8, 0xcc, 0x11, 0x54,
+  0x12, 0xb6, 0xe9, 0xe0, 0x24, 0xb0, 0xa3, 0x8c, 0x1e, 0x8c, 0xd8, 0x1f,
+  0x7c, 0x12, 0xee, 0x2f, 0xe3, 0x39, 0x6c, 0x70, 0x11, 0x90, 0x4a, 0x31,
+  0x99, 0x18, 0x3f, 0xb5, 0xa4, 0x9d, 0x72, 0x67, 0x1d, 0x88, 0xae, 0x8e,
+  0x61, 0x9b, 0x77, 0x4e, 0x8b, 0x06, 0x86, 0x4d, 0x6d, 0x3a, 0x7f, 0x3d,
+  0x49, 0x4c, 0xc3, 0x63, 0x2d, 0x26, 0xc9, 0x6b, 0xc1, 0x80, 0xed, 0xfc,
+  0x33, 0x33, 0x44, 0x45, 0x17, 0x3e, 0xea, 0x35, 0xfe, 0x94, 0xa6, 0xac,
+  0x2e, 0x2a, 0x3d, 0x6d, 0xfe, 0xdc, 0x1a, 0x66, 0xcb, 0xf0, 0x35, 0x3d,
+  0x34, 0x5b, 0x2d, 0x96, 0x5a, 0x8f, 0xd8, 0x24, 0x6a, 0xd8, 0xf2, 0x6c,
+  0x0b, 0x45, 0x68, 0x83, 0xf0, 0x01, 0xc3, 0xcf, 0x1b, 0x5d, 0x03, 0x99,
+  0x07, 0xe8, 0xbb, 0x32, 0x57, 0x60, 0x05, 0x18, 0x5e, 0xf3, 0xde, 0x59,
+  0x8d, 0x13, 0x17, 0x71, 0x54, 0x93, 0x5c, 0xb0, 0x20, 0x63, 0xf7, 0x2c,
+  0x56, 0x32, 0x78, 0x21, 0xf6, 0x01, 0x4a, 0x58, 0xff, 0x4d, 0x2b, 0x98,
+  0xc2, 0x24, 0xab, 0x0d, 0xea, 0x55, 0xd1, 0x76, 0x3e, 0xd6, 0x26, 0x15,
+  0xbe, 0x58, 0x0f, 0xe9, 0x09, 0x39, 0xbd, 0x75, 0xed, 0x51, 0x74, 0x9b,
+  0x23, 0x50, 0x2e, 0x4e, 0xfc, 0xe4, 0xde, 0x8a, 0x40, 0x73, 0xdd, 0x07,
+  0x81, 0xc9, 0xdc, 0x90, 0xd4, 0x26, 0xe3, 0x94, 0x70, 0x88, 0x19, 0xf9,
+  0xae, 0x50, 0xfc, 0x38, 0xbf, 0x61, 0x5d, 0x1e, 0xa9, 0x9d, 0x5a, 0x08,
+  0xde, 0x60, 0xe6, 0x11, 0x7a, 0xa6, 0x35, 0x87, 0xc0, 0xf4, 0xb2, 0x0d,
+  0xab, 0x0e, 0x68, 0x2f, 0x59, 0x00, 0x23, 0xb8, 0xbf, 0xe0, 0xdf, 0x83,
+  0xc9, 0xb3, 0x52, 0x9d, 0xc4, 0x25, 0x14, 0x2a, 0x64, 0xe2, 0xc8, 0x9d,
+  0xe1, 0xcc, 0xb0, 0xbe, 0xc2, 0x43, 0x80, 0x97, 0x05, 0x16, 0x2d, 0xb8,
+  0xa1, 0x31, 0x83, 0x69, 0xb8, 0x22, 0xd7, 0x88, 0xba, 0x77, 0xad, 0x98,
+  0x83, 0x83, 0x9a, 0x41, 0xe8, 0xb4, 0xc6, 0x92, 0x9e, 0xe5, 0xa5, 0x9c,
+  0x37, 0x48, 0xf8, 0x3d, 0x66, 0x3d, 0x3d, 0x90, 0x41, 0x6f, 0x79, 0x4d,
+  0x7d, 0xf4, 0xa2, 0x2b, 0xd6, 0x91, 0x26, 0x34, 0xf4, 0x16, 0x03, 0x9d,
+  0xc9, 0xe3, 0xaf, 0xce, 0xe3, 0xcb, 0x38, 0x99, 0xff, 0x7e, 0x6f, 0x67,
+  0x1c, 0x5f, 0xad, 0xe6, 0xf1, 0xbf, 0xe2, 0xc5, 0x57, 0x4f, 0x9e, 0xec,
+  0xed, 0x7c, 0xf6, 0xf9, 0x4e, 0xaf, 0x19, 0x7d, 0xe0, 0x03, 0xb2, 0x10,
+  0x61, 0xc3, 0x37, 0x19, 0xf8, 0x2e, 0xfa, 0x19, 0x4d, 0xaf, 0x52, 0x28,
+  0x75, 0x2c, 0x28, 0xe9, 0x1a, 0xc4, 0xa2, 0x4d, 0x82, 0x4d, 0x0a, 0xec,
+  0x20, 0xa3, 0xf2, 0x12, 0x5d, 0xff, 0x6e, 0x77, 0x5f, 0x58, 0x19, 0x40,
+  0xa2, 0x71, 0x4f, 0xf0, 0x5a, 0xbc, 0x4c, 0x33, 0xba, 0x81, 0xbe, 0x88,
+  0xaa, 0xf8, 0xca, 0xd1, 0xaa, 0x66, 0xd3, 0x4b, 0x0e, 0x85, 0xf3, 0x6f,
+  0x5e, 0x32, 0x91, 0xa7, 0x99, 0x14, 0x67, 0xe1, 0xd2, 0x23, 0x10, 0xb2,
+  0x96, 0x49, 0x01, 0x04, 0xc1, 0xab, 0x22, 0x5e, 0x58, 0xa6, 0x0a, 0xbf,
+  0xcf, 0x51, 0x6b, 0xa3, 0xe5, 0x1c, 0x59, 0x14, 0x16, 0x7a, 0x26, 0x12,
+  0xaf, 0x10, 0xdc, 0x7c, 0x59, 0x7a, 0x10, 0x3e, 0xb9, 0x6e, 0xc2, 0xa2,
+  0x26, 0xb4, 0x58, 0xb0, 0xa9, 0xf4, 0x30, 0x2b, 0x61, 0x19, 0xe0, 0x66,
+  0x33, 0x9b, 0xe9, 0x08, 0xbf, 0x03, 0xfd, 0x21, 0x16, 0xc4, 0xc5, 0xde,
+  0x52, 0xf2, 0xaa, 0x05, 0xa3, 0xa3, 0x67, 0x69, 0x0d, 0x69, 0x6d, 0x5e,
+  0xb1, 0x8f, 0xd8, 0x8c, 0x5e, 0x9a, 0x95, 0x68, 0xf7, 0x8b, 0x57, 0x20,
+  0x88, 0xdd, 0x2f, 0xfe, 0xd5, 0x7d, 0xb6, 0xa7, 0x9f, 0xed, 0x7d, 0xf1,
+  0xaf, 0xa3, 0x11, 0xc6, 0xc7, 0x14, 0xd2, 0xb7, 0xaf, 0xfb, 0x8a, 0xb6,
+  0x12, 0xeb, 0x11, 0x96, 0xbf, 0x1c, 0xf8, 0xb1, 0xec, 0x75, 0xcf, 0x7a,
+  0x0e, 0x57, 0x79, 0xa0, 0x1e, 0x55, 0xc7, 0xb7, 0x52, 0x2b, 0x54, 0x06,
+  0x50, 0xeb, 0xb2, 0x6b, 0xd1, 0x9d, 0x1f, 0x04, 0xed, 0x68, 0xec, 0x25,
+  0x5e, 0xfe, 0x03, 0x53, 0xea, 0x1f, 0x36, 0x22, 0xf5, 0x6e, 0xf2, 0x76,
+  0xdc, 0xc3, 0xe1, 0x61, 0x64, 0x4b, 0x8f, 0xc6, 0x56, 0x44, 0x85, 0x5b,
+  0xe6, 0xdc, 0x0f, 0xbe, 0x03, 0x25, 0x64, 0x1c, 0x83, 0xfd, 0xa3, 0x82,
+  0x5f, 0xba, 0xa4, 0x19, 0x7b, 0x46, 0xf2, 0x64, 0x48, 0xc6, 0x40, 0xed,
+  0x0f, 0xa9, 0xe8, 0xf1, 0xc3, 0x0f, 0x2a, 0x50, 0xd1, 0x2f, 0x3a, 0xf2,
+  0x6b, 0xe2, 0x45, 0x33, 0x62, 0x6f, 0x0b, 0x54, 0x3c, 0x67, 0x9c, 0x41,
+  0x9a, 0x87, 0x5e, 0xf9, 0x97, 0x3a, 0x53, 0x69, 0x84, 0xb6, 0xf6, 0x60,
+  0x7c, 0x78, 0x7c, 0x8c, 0x30, 0x53, 0x2c, 0xea, 0x91, 0xb0, 0x31, 0xd0,
+  0xe6, 0x26, 0x42, 0x3c, 0x7c, 0x54, 0x62, 0x48, 0xfa, 0xbc, 0x77, 0xd8,
+  0x76, 0x50, 0x3f, 0x35, 0x66, 0x0a, 0xb8, 0x6e, 0x25, 0x68, 0x56, 0xa4,
+  0x9c, 0x57, 0x3d, 0x79, 0xf0, 0x2a, 0xed, 0xa9, 0x13, 0x4b, 0x3e, 0xe9,
+  0x79, 0xf0, 0x1c, 0xd9, 0x0f, 0x6c, 0xda, 0x2b, 0x11, 0x9d, 0xd2, 0xbf,
+  0x25, 0xaf, 0x76, 0x77, 0xba, 0x9f, 0x80, 0xd7, 0x96, 0xe1, 0xc4, 0x5f,
+  0x79, 0x87, 0xe0, 0x43, 0xcf, 0xa7, 0x33, 0x79, 0xfa, 0x3a, 0x9d, 0xcd,
+  0xe8, 0x4e, 0xb8, 0x8d, 0xe7, 0x2b, 0xa2, 0x85, 0x09, 0xdf, 0xb0, 0xfc,
+  0xff, 0x6b, 0xc6, 0x01, 0x8f, 0x95, 0x3e, 0x5b, 0xae, 0x26, 0x8b, 0xb4,
+  0x36, 0xe0, 0x6d, 0x9e, 0xe0, 0x17, 0x3c, 0xe1, 0xef, 0x13, 0x47, 0x1d,
+  0x09, 0x8b, 0x76, 0x22, 0xfb, 0xf5, 0x2f, 0xf3, 0x7c, 0x12, 0x17, 0x7d,
+  0x75, 0xe7, 0xd8, 0x38, 0xfb, 0xbb, 0x7b, 0x4f, 0x9e, 0x3e, 0xeb, 0x8f,
+  0x54, 0x4e, 0x03, 0x8b, 0xa8, 0x42, 0x80, 0x0a, 0x69, 0xc2, 0x01, 0x2a,
+  0x04, 0x58, 0xae, 0x5d, 0xce, 0x55, 0xe6, 0x62, 0xdc, 0xdd, 0x2b, 0xe9,
+  0xed, 0x5f, 0xb9, 0x9f, 0x57, 0xe8, 0xe2, 0x5f, 0xd3, 0xd9, 0x2b, 0x37,
+  0xc3, 0x7f, 0xe5, 0xb9, 0xbc, 0xd2, 0x49, 0xd0, 0xbe, 0x5a, 0x06, 0x62,
+  0x19, 0x56, 0x5b, 0x79, 0x6c, 0x73, 0x6d, 0x13, 0x37, 0x30, 0x69, 0x44,
+  0x30, 0x0c, 0x67, 0xe2, 0xfd, 0x80, 0xb4, 0xea, 0x33, 0xf0, 0xb6, 0x3f,
+  0x0e, 0xa9, 0x95, 0x21, 0xb7, 0x32, 0xf4, 0x0c, 0x1b, 0x28, 0xf0, 0x43,
+  0xde, 0x88, 0x81, 0xa6, 0x61, 0xce, 0x61, 0x65, 0x51, 0x51, 0x20, 0xcf,
+  0x11, 0x04, 0x70, 0xf8, 0xf5, 0x71, 0x5f, 0x03, 0x6f, 0x44, 0x4d, 0x1c,
+  0x74, 0xd9, 0xa7, 0x5d, 0x88, 0xe1, 0x34, 0x5e, 0xf2, 0xe9, 0xdf, 0x88,
+  0xb4, 0x38, 0x60, 0xcc, 0x71, 0x24, 0xdc, 0xaf, 0x64, 0x4c, 0x53, 0x67,
+  0x7a, 0xeb, 0xcc, 0xd9, 0xe2, 0x5d, 0x08, 0x40, 0x7d, 0xd0, 0x0c, 0x10,
+  0x9b, 0x25, 0xa0, 0x04, 0x3e, 0x9f, 0xa5, 0x4b, 0xb7, 0x1c, 0xbe, 0x71,
+  0x4e, 0x4f, 0x97, 0xde, 0xa7, 0x8f, 0xd2, 0x57, 0xc2, 0x4f, 0x8c, 0x45,
+  0xf4, 0xa0, 0x00, 0x7b, 0x3e, 0x11, 0x72, 0x0f, 0xa4, 0xfd, 0x4f, 0x12,
+  0x4d, 0xd2, 0x14, 0xb3, 0x89, 0x08, 0x86, 0xcc, 0x3f, 0x5f, 0x7e, 0x69,
+  0x28, 0xcf, 0x5f, 0x44, 0x28, 0xf0, 0x29, 0x6f, 0xa9, 0xdf, 0x51, 0x0d,
+  0x50, 0x62, 0xb3, 0xc5, 0x4b, 0xaa, 0x1e, 0x38, 0x17, 0x58, 0x10, 0x8d,
+  0xa3, 0x82, 0x81, 0x42, 0xf1, 0x63, 0xa2, 0x93, 0x7b, 0x35, 0x36, 0x70,
+  0x0b, 0xfd, 0x3f, 0xe1, 0x10, 0xbc, 0xe4, 0x6d, 0xc0, 0xd7, 0x5f, 0xf4,
+  0xc5, 0x78, 0xe8, 0xde, 0xe5, 0x61, 0x34, 0x1c, 0xc8, 0x42, 0xa0, 0xe1,
+  0x7c, 0x48, 0xa0, 0x36, 0x48, 0x63, 0x91, 0xc6, 0x18, 0xa0, 0x03, 0x55,
+  0xb0, 0x49, 0x9a, 0x9a, 0xcf, 0x14, 0xd0, 0xd3, 0x19, 0xa8, 0xa5, 0xf1,
+  0x84, 0x73, 0x1b, 0x58, 0x7a, 0xec, 0x73, 0xb4, 0x2a, 0xde, 0xeb, 0x3b,
+  0x84, 0x64, 0xd8, 0x4c, 0xc1, 0xf0, 0x8a, 0xc4, 0x70, 0x26, 0x37, 0x14,
+  0xd0, 0xdc, 0x4b, 0xf3, 0xe1, 0xc4, 0xca, 0x40, 0x78, 0xf0, 0x49, 0x8e,
+  0x82, 0x65, 0xd3, 0x3a, 0x22, 0x6f, 0x38, 0x83, 0x58, 0x3b, 0x7d, 0xc5,
+  0xcb, 0xbd, 0x3b, 0xba, 0x4a, 0x2f, 0x65, 0x31, 0x88, 0x45, 0x5e, 0x25,
+  0xdb, 0xf4, 0xe7, 0x80, 0x3e, 0xdf, 0x63, 0xa9, 0x8c, 0x7f, 0x79, 0x82,
+  0x78, 0xac, 0xf0, 0xee, 0x0f, 0xce, 0x86, 0x3b, 0x17, 0xfc, 0x4b, 0xea,
+  0xee, 0x7c, 0xf5, 0xea, 0xe8, 0x28, 0x41, 0xe6, 0xad, 0xaa, 0x66, 0x61,
+  0x50, 0x09, 0x2b, 0x5a, 0xac, 0x92, 0xae, 0x38, 0xa7, 0xc5, 0x05, 0x8f,
+  0x68, 0x20, 0x85, 0x0a, 0xea, 0x2c, 0x77, 0xa7, 0x6a, 0x9e, 0xe1, 0x1c,
+  0x20, 0xdc, 0xac, 0xc9, 0xdd, 0xd6, 0x20, 0x8c, 0xb4, 0x25, 0xf6, 0x7e,
+  0xcb, 0x59, 0xf5, 0x0c, 0xd5, 0xe1, 0x4b, 0x36, 0x71, 0xf7, 0x9b, 0xdc,
+  0xec, 0x46, 0x14, 0xa6, 0x19, 0x63, 0x9b, 0xd3, 0xe6, 0x0e, 0x06, 0x35,
+  0x51, 0x4d, 0xda, 0x64, 0x0f, 0xda, 0x16, 0x77, 0x93, 0xcc, 0x4b, 0xe8,
+  0xea, 0x0a, 0xd4, 0x68, 0xbd, 0x1a, 0x98, 0x36, 0x3a, 0xea, 0x87, 0x67,
+  0x3f, 0x9f, 0x56, 0x09, 0xe9, 0xba, 0x8c, 0xaa, 0xb5, 0x10, 0x3e, 0x77,
+  0xb4, 0x90, 0xe2, 0x90, 0x20, 0xe1, 0xf9, 0x50, 0x6e, 0x4f, 0x15, 0x89,
+  0x86, 0x6f, 0x46, 0xd1, 0x09, 0x22, 0xc6, 0xcb, 0x58, 0xd0, 0x59, 0xec,
+  0x86, 0x35, 0x6a, 0x20, 0xd2, 0x11, 0x19, 0x7c, 0x43, 0xd2, 0x5e, 0x18,
+  0x12, 0xc3, 0x48, 0x2a, 0x35, 0x98, 0x74, 0x21, 0x2e, 0x91, 0x2f, 0x54,
+  0x1e, 0x19, 0xc0, 0x16, 0xee, 0x9e, 0x83, 0xcd, 0x5f, 0xec, 0x7e, 0x48,
+  0xfe, 0x72, 0x04, 0x1b, 0x34, 0x12, 0x42, 0x61, 0x87, 0x6c, 0xdd, 0x1d,
+  0x02, 0x09, 0xa9, 0x4c, 0xc4, 0xe8, 0xc2, 0xc8, 0x0c, 0x0c, 0x12, 0x03,
+  0x9f, 0x30, 0xb5, 0x06, 0x2a, 0x03, 0xfe, 0x35, 0x91, 0x51, 0x0f, 0x7a,
+  0xe3, 0x3c, 0x71, 0xca, 0xb5, 0x96, 0xbc, 0x73, 0xe1, 0xe6, 0xb0, 0xc5,
+  0x88, 0xb8, 0xe1, 0xdd, 0x75, 0x3c, 0x48, 0x1e, 0x57, 0x7c, 0x4b, 0xbf,
+  0xb0, 0x70, 0x36, 0x29, 0x68, 0xd7, 0x93, 0x42, 0xae, 0x06, 0x89, 0x11,
+  0xca, 0x85, 0x93, 0x88, 0x9a, 0xf2, 0xf6, 0x24, 0x32, 0x94, 0x9b, 0x4b,
+  0x2f, 0x2a, 0x5a, 0x64, 0x26, 0xa6, 0xa8, 0x96, 0x11, 0x91, 0x87, 0xf4,
+  0x29, 0xb9, 0xe5, 0x64, 0x6d, 0x39, 0x53, 0x3e, 0xe2, 0xc5, 0xa9, 0x1d,
+  0xd9, 0xe0, 0x09, 0x79, 0x95, 0xe9, 0x88, 0xc8, 0xa4, 0xcf, 0x4b, 0xd0,
+  0x1f, 0x44, 0x7d, 0x1e, 0x2a, 0x7f, 0xd1, 0xc7, 0x7a, 0xe2, 0xe3, 0x60,
+  0xf9, 0xfa, 0xa3, 0x8e, 0x53, 0xc8, 0xcf, 0xbc, 0xfa, 0xb2, 0xb6, 0x4a,
+  0xf8, 0xdc, 0x9a, 0x7a, 0x25, 0x49, 0x26, 0x2d, 0x99, 0xdb, 0xde, 0x0d,
+  0xda, 0x7f, 0x75, 0x98, 0x33, 0x42, 0x21, 0x35, 0x13, 0x84, 0xb9, 0x4e,
+  0xdd, 0x67, 0x29, 0x12, 0x66, 0x5b, 0x0d, 0x3d, 0x7e, 0x8a, 0x2f, 0x8c,
+  0x15, 0xb9, 0x10, 0x50, 0xe1, 0x6e, 0x42, 0x02, 0xc6, 0x79, 0x69, 0x37,
+  0x53, 0xd1, 0xfb, 0xee, 0x72, 0x58, 0x19, 0xc0, 0x73, 0x76, 0x47, 0xc8,
+  0xa0, 0xf4, 0x55, 0x6a, 0x5d, 0x03, 0x4e, 0x79, 0xef, 0x61, 0x41, 0x7b,
+  0x2e, 0x2a, 0xd7, 0x54, 0x7a, 0x5b, 0xe5, 0x2e, 0xde, 0xb5, 0x4c, 0xa7,
+  0x80, 0xd4, 0x7e, 0xf5, 0xe5, 0x2c, 0xbf, 0x62, 0xce, 0x35, 0xa0, 0x83,
+  0xc6, 0x3f, 0x11, 0x90, 0xbc, 0xa7, 0x9d, 0xca, 0x80, 0x71, 0x56, 0x44,
+  0x8a, 0xb7, 0xbf, 0xd7, 0x84, 0xa8, 0xbe, 0x61, 0x53, 0xe8, 0x54, 0xdb,
+  0x76, 0x4d, 0xcb, 0x7e, 0x50, 0xfb, 0xee, 0x8b, 0xb0, 0x2f, 0x5b, 0x9c,
+  0x58, 0x5b, 0x86, 0x6c, 0x44, 0x9c, 0xa2, 0x92, 0xab, 0x1c, 0x1d, 0xe7,
+  0x08, 0x74, 0xab, 0x38, 0x11, 0x3a, 0xa9, 0xe4, 0xde, 0x9a, 0x6b, 0x5a,
+  0x5f, 0xff, 0xcb, 0xbe, 0xe4, 0x08, 0xf4, 0x5f, 0xf6, 0xc1, 0xc1, 0x98,
+  0x2f, 0x59, 0x55, 0x37, 0xbd, 0x9c, 0xfa, 0x72, 0x2b, 0x0e, 0x45, 0x76,
+  0x50, 0xc4, 0x3f, 0x7f, 0x40, 0x70, 0x2d, 0x7b, 0x35, 0x32, 0x0c, 0x9e,
+  0x84, 0x99, 0x00, 0x05, 0xdf, 0x31, 0x2a, 0x86, 0x2f, 0x9d, 0x54, 0x12,
+  0x28, 0xa3, 0x97, 0x2e, 0xc4, 0x32, 0xa0, 0xa5, 0x94, 0x1c, 0xbf, 0x20,
+  0x66, 0xce, 0x55, 0xb6, 0xe4, 0xdc, 0xf8, 0x29, 0x00, 0xdc, 0xf5, 0x2c,
+  0x8d, 0xa2, 0xf7, 0x99, 0x94, 0x12, 0x48, 0x58, 0x59, 0x4e, 0x8b, 0xe9,
+  0x6a, 0xc1, 0xa6, 0x8a, 0x29, 0x1b, 0xc8, 0x70, 0xf1, 0x88, 0x78, 0x50,
+  0x73, 0xcf, 0x87, 0x03, 0x16, 0xe3, 0x88, 0x18, 0xcc, 0xb5, 0x5f, 0x84,
+  0xa2, 0x70, 0x00, 0x96, 0x1a, 0xc4, 0x21, 0x15, 0x38, 0xd4, 0x14, 0x65,
+  0x40, 0xec, 0x19, 0x3c, 0x7a, 0x73, 0x74, 0x7e, 0x7e, 0x74, 0xce, 0xeb,
+  0x7d, 0xa0, 0xa1, 0x1f, 0x86, 0x5d, 0x61, 0xd0, 0xa9, 0xde, 0xd5, 0x68,
+  0x61, 0xbf, 0x6d, 0x08, 0x7d, 0x61, 0x85, 0xf1, 0x6c, 0xc6, 0x20, 0xe3,
+  0xd0, 0x20, 0x04, 0x27, 0x48, 0xea, 0x4e, 0x87, 0xe6, 0x45, 0x84, 0x7d,
+  0x3b, 0xb7, 0x41, 0x58, 0x87, 0x30, 0x90, 0x2d, 0x7c, 0x0b, 0x85, 0xd6,
+  0xd9, 0x5c, 0x59, 0x4a, 0xfe, 0x75, 0x52, 0x13, 0x53, 0x47, 0x1a, 0xa9,
+  0x9b, 0xa8, 0x33, 0x7d, 0xee, 0xec, 0x13, 0x98, 0xf2, 0x25, 0x9f, 0x51,
+  0xd6, 0x9d, 0xb0, 0x18, 0x65, 0xb5, 0x5a, 0xa6, 0x33, 0x67, 0xed, 0xa5,
+  0xcf, 0x49, 0xfc, 0x8b, 0xe4, 0x94, 0x97, 0x16, 0xeb, 0x02, 0xaf, 0xa6,
+  0x19, 0x23, 0x42, 0x6b, 0x5b, 0x03, 0xbf, 0x37, 0x42, 0xb6, 0x9c, 0x04,
+  0x8d, 0x59, 0xcd, 0xa4, 0x7a, 0x6e, 0xb9, 0xd2, 0x7e, 0x02, 0x2b, 0x23,
+  0x73, 0x0b, 0x0b, 0xbf, 0x09, 0x39, 0x03, 0xdb, 0xb2, 0x16, 0x3e, 0xde,
+  0x9d, 0x43, 0xd8, 0xf6, 0x05, 0x06, 0x05, 0x29, 0xa5, 0xc5, 0x7e, 0xf4,
+  0x63, 0x99, 0x4e, 0x7f, 0xf6, 0x97, 0x07, 0xd2, 0x7f, 0xea, 0x55, 0xd2,
+  0xb0, 0x74, 0xba, 0x50, 0xaa, 0x0c, 0x4b, 0x2a, 0xf7, 0xfb, 0xf1, 0xd1,
+  0x79, 0x74, 0xf0, 0x35, 0xa3, 0x00, 0xff, 0x37, 0x37, 0x98, 0x9f, 0xd3,
+  0xdb, 0x61, 0x43, 0x71, 0xf8, 0x14, 0xdb, 0x24, 0x31, 0x53, 0xb8, 0xe0,
+  0x72, 0xd5, 0x76, 0x36, 0xb5, 0x4a, 0xd2, 0xfe, 0xba, 0xaf, 0xef, 0xe1,
+  0x46, 0xf4, 0xe8, 0x2e, 0x7e, 0xca, 0x1e, 0xf2, 0x21, 0x0b, 0x77, 0x51,
+  0x50, 0x91, 0xc4, 0x25, 0x61, 0x7b, 0xa3, 0xa3, 0x2f, 0x5b, 0x6a, 0xa7,
+  0xec, 0xd2, 0x41, 0xd4, 0x7f, 0x9b, 0xff, 0x8d, 0x84, 0x81, 0x78, 0xfb,
+  0xc9, 0x68, 0x27, 0xda, 0xfc, 0x3e, 0xcd, 0x5e, 0x3c, 0xfb, 0x53, 0x74,
+  0xbc, 0xd5, 0xaf, 0x05, 0xf3, 0x4b, 0x65, 0xc1, 0x49, 0x9c, 0xdd, 0xb8,
+  0x2d, 0x3b, 0xc5, 0xc9, 0x96, 0xa0, 0x3a, 0xab, 0xca, 0x22, 0x05, 0x90,
+  0xd7, 0xb6, 0x88, 0xc4, 0x4f, 0xcd, 0x0b, 0x88, 0xbe, 0x73, 0x90, 0xd7,
+  0xac, 0xe5, 0xd3, 0x53, 0x33, 0x5e, 0xba, 0x17, 0xcf, 0x5a, 0x4d, 0x3c,
+  0x75, 0x6d, 0xbc, 0x97, 0x36, 0x7e, 0x61, 0x13, 0x7b, 0xa3, 0x9d, 0xbd,
+  0x68, 0xf3, 0x74, 0xbc, 0xbd, 0xe7, 0x5a, 0x68, 0x37, 0xb1, 0x87, 0x26,
+  0xf8, 0xa1, 0xfa, 0xcb, 0x4f, 0xb9, 0xff, 0x1f, 0x93, 0xec, 0xe7, 0x68,
+  0xf3, 0x87, 0xdd, 0x5d, 0x6a, 0xe0, 0x4f, 0xd1, 0xc1, 0xf1, 0x0f, 0xd1,
+  0xd3, 0x11, 0x35, 0xf6, 0x2e, 0xbe, 0xd5, 0xe6, 0x14, 0xcc, 0x76, 0x8c,
+  0x46, 0xe8, 0xfb, 0x56, 0x1b, 0xcf, 0x1a, 0x6d, 0x9c, 0x90, 0x5e, 0xf8,
+  0x91, 0xae, 0x95, 0x9d, 0xd1, 0x93, 0xbd, 0x28, 0x7d, 0xf6, 0xf9, 0x73,
+  0x6b, 0x48, 0xdb, 0xc0, 0xf7, 0x75, 0x6b, 0xa5, 0xc0, 0xa5, 0x90, 0xa8,
+  0x73, 0xf4, 0x91, 0x18, 0x1a, 0x58, 0x04, 0x2a, 0x65, 0x5c, 0xc7, 0x85,
+  0x55, 0xe5, 0xe5, 0x72, 0x07, 0xb4, 0x53, 0x0a, 0x23, 0x9d, 0xc0, 0x6c,
+  0x49, 0x17, 0xe7, 0x7e, 0x6b, 0x38, 0xac, 0x9b, 0xda, 0xa3, 0x7f, 0x8a,
+  0xde, 0x8e, 0x8f, 0x8f, 0x68, 0x46, 0x3b, 0x34, 0x34, 0xbf, 0x86, 0x32,
+  0x20, 0x7c, 0x85, 0xc5, 0x7d, 0x01, 0x54, 0x52, 0x6d, 0x23, 0xac, 0x1f,
+  0x0b, 0xa2, 0xa3, 0x8b, 0xbb, 0x44, 0xbf, 0x1c, 0x92, 0x32, 0x3c, 0xb8,
+  0x62, 0x15, 0x42, 0xae, 0x5a, 0x74, 0xfd, 0x6d, 0x9e, 0xd1, 0x31, 0x29,
+  0xf2, 0x82, 0x23, 0xa7, 0xfa, 0x35, 0x69, 0xe1, 0xdb, 0xd7, 0x47, 0x92,
+  0x52, 0xff, 0x36, 0xce, 0x88, 0x47, 0x32, 0x3a, 0x56, 0x79, 0xc3, 0xfe,
+  0x7f, 0x71, 0xe7, 0xc8, 0xfb, 0x27, 0xf7, 0xd9, 0x47, 0xda, 0xc7, 0xcf,
+  0x46, 0xbb, 0x1c, 0xb2, 0xcd, 0x5a, 0xef, 0x9b, 0xb7, 0xf4, 0xf7, 0xee,
+  0xd3, 0x7e, 0xc4, 0x5f, 0xd5, 0x35, 0x78, 0x3b, 0xaf, 0x1b, 0x87, 0xa7,
+  0xa7, 0xdf, 0x1e, 0x4b, 0x00, 0xc8, 0xa1, 0x9a, 0x55, 0x59, 0xb8, 0x72,
+  0x5a, 0xb1, 0x70, 0x57, 0xd2, 0xde, 0x7c, 0xb6, 0x12, 0x9c, 0x71, 0x37,
+  0x49, 0xb2, 0xe4, 0x68, 0x84, 0xaa, 0xc1, 0x11, 0x2a, 0xe5, 0xd1, 0x2e,
+  0xb6, 0x89, 0xc5, 0x9f, 0x1a, 0xb2, 0x57, 0xc9, 0x50, 0xc9, 0x66, 0xc2,
+  0x9d, 0xdc, 0x3b, 0xd8, 0x8e, 0xd8, 0xb9, 0xcc, 0xac, 0x6e, 0x8a, 0x36,
+  0x65, 0x26, 0x68, 0x29, 0x3a, 0x42, 0x2f, 0xaa, 0xee, 0xdb, 0x1f, 0x93,
+  0x74, 0x2f, 0x83, 0xde, 0x57, 0xab, 0x6d, 0x3f, 0xc0, 0x96, 0x86, 0x44,
+  0xbb, 0xd4, 0x52, 0x3f, 0x30, 0x1d, 0x5b, 0x44, 0xbd, 0xf1, 0xe6, 0x12,
+  0xb6, 0x6c, 0x84, 0xe7, 0xbd, 0x3b, 0x78, 0x7b, 0xf4, 0xea, 0xbb, 0x83,
+  0x93, 0xf7, 0x47, 0xf4, 0x4a, 0x0a, 0x18, 0x77, 0x17, 0xc2, 0x87, 0x31,
+  0x2e, 0x52, 0xd4, 0xae, 0x2d, 0x49, 0x3c, 0xe8, 0x6f, 0x48, 0x78, 0x79,
+  0xd4, 0xe3, 0xb7, 0x76, 0xe5, 0x35, 0xa2, 0x0b, 0xfe, 0x6b, 0x4f, 0xfe,
+  0xda, 0xfb, 0x53, 0x6f, 0xab, 0x36, 0xe9, 0x96, 0x96, 0xcc, 0xf4, 0x72,
+  0x27, 0xf5, 0x9e, 0x38, 0x3c, 0x48, 0x72, 0x37, 0x64, 0x55, 0x7a, 0xe6,
+  0xa3, 0xb1, 0xbb, 0x8d, 0x9f, 0xdd, 0x9c, 0xdc, 0x87, 0x3a, 0x78, 0x8f,
+  0x5f, 0x7a, 0x05, 0x01, 0xa3, 0x07, 0xa0, 0xfb, 0xc4, 0x56, 0x4b, 0xda,
+  0xb0, 0x26, 0x92, 0x8f, 0x4b, 0x8e, 0x88, 0xdc, 0xec, 0xc9, 0x2f, 0xaf,
+  0x5e, 0x1f, 0x5c, 0x1c, 0xf1, 0x0b, 0xd6, 0xbd, 0xd5, 0x36, 0xb0, 0x34,
+  0x0a, 0x1e, 0xcf, 0xa6, 0xba, 0xa6, 0x5f, 0xf1, 0x84, 0x7a, 0x5b, 0xe2,
+  0xcb, 0x80, 0x53, 0xbd, 0x31, 0x2e, 0xe6, 0x69, 0x12, 0xb8, 0xed, 0xd3,
+  0xd4, 0x4b, 0x8b, 0x58, 0xd9, 0xec, 0xc9, 0x77, 0x3d, 0x67, 0xc1, 0xd5,
+  0xfa, 0xf0, 0xea, 0xae, 0x9c, 0x21, 0xc9, 0xa2, 0x95, 0x59, 0x2b, 0x21,
+  0x69, 0x7e, 0x7f, 0xd4, 0x59, 0x21, 0x16, 0xa7, 0x00, 0x6d, 0xdb, 0x6d,
+  0xbc, 0xe6, 0xc1, 0xb3, 0x8d, 0x29, 0xcf, 0x77, 0xf7, 0x9e, 0xfc, 0x09,
+  0xeb, 0xf9, 0xaa, 0xb7, 0x4d, 0x77, 0x43, 0xef, 0x4f, 0xdc, 0x75, 0x6a,
+  0x36, 0xce, 0x20, 0x88, 0x9c, 0xf5, 0x29, 0xa5, 0x28, 0x09, 0x97, 0xe1,
+  0x5d, 0x0f, 0xe0, 0x7d, 0xb0, 0xa0, 0x77, 0x92, 0x25, 0x66, 0x60, 0x38,
+  0x16, 0x3c, 0x80, 0xfd, 0x9a, 0x24, 0x57, 0x69, 0x96, 0xb9, 0x1a, 0xb9,
+  0xd2, 0x5d, 0x78, 0x7f, 0x0c, 0xe4, 0x5d, 0x99, 0xa3, 0x02, 0x08, 0x71,
+  0x9f, 0x8b, 0x7b, 0x4b, 0x24, 0x2b, 0x4b, 0x53, 0x71, 0x65, 0xcf, 0x5a,
+  0x92, 0xf1, 0x44, 0x6d, 0x3b, 0xa6, 0x8c, 0x40, 0x26, 0x20, 0xd6, 0x72,
+  0x0f, 0x41, 0x09, 0xd1, 0x06, 0x61, 0x90, 0x85, 0xdd, 0xd9, 0xf1, 0x84,
+  0x93, 0xcc, 0x5d, 0x6a, 0x4c, 0xa0, 0x95, 0xbb, 0xa5, 0xb7, 0xe3, 0x97,
+  0x06, 0xc8, 0x4c, 0x7c, 0x51, 0xca, 0x5a, 0x96, 0xce, 0x86, 0x04, 0x6f,
+  0xa3, 0x3e, 0x5b, 0xdf, 0xa7, 0x46, 0x3e, 0x1a, 0xa6, 0x21, 0x2a, 0xbd,
+  0xe8, 0xc7, 0xc4, 0x6a, 0xb2, 0xa4, 0x78, 0x30, 0xc0, 0xa2, 0xc3, 0x19,
+  0x85, 0x29, 0x06, 0x91, 0x0e, 0xfc, 0xce, 0x68, 0x34, 0xf2, 0x95, 0xb6,
+  0x79, 0x5b, 0xd4, 0x07, 0x85, 0x5a, 0x46, 0x01, 0x7e, 0x2c, 0xd6, 0x78,
+  0x13, 0xc2, 0x3c, 0x04, 0xea, 0x2d, 0x0d, 0xbc, 0x51, 0x3b, 0x81, 0x3b,
+  0x1a, 0x81, 0x8d, 0xa3, 0xaf, 0xdd, 0xf6, 0x0d, 0xb4, 0xe1, 0xa6, 0x6b,
+  0x13, 0x1e, 0x18, 0x9b, 0xd8, 0x1e, 0xb5, 0xc0, 0xa6, 0xe3, 0x53, 0xb9,
+  0x5b, 0x0b, 0xa6, 0x60, 0x0e, 0x20, 0x07, 0x9d, 0x48, 0xc6, 0xb1, 0x2c,
+  0x9a, 0x0e, 0x45, 0x4b, 0xad, 0x31, 0x93, 0xcb, 0xef, 0x00, 0x82, 0x20,
+  0xc5, 0x6a, 0x96, 0x05, 0x6b, 0x7a, 0xbc, 0xc6, 0x76, 0x83, 0x2c, 0x9d,
+  0xd8, 0xac, 0xed, 0x28, 0x96, 0x30, 0xeb, 0xcc, 0x90, 0xfd, 0x35, 0xcb,
+  0x51, 0xe1, 0x68, 0x4a, 0x4b, 0xe2, 0x21, 0xb1, 0x2d, 0x5f, 0xc0, 0xed,
+  0xa5, 0x93, 0xf7, 0xe6, 0x2a, 0x8e, 0x36, 0x1b, 0x0a, 0xa0, 0x8b, 0x25,
+  0x22, 0x1a, 0xf7, 0x50, 0x50, 0x8f, 0x87, 0xfc, 0xe5, 0x53, 0x6b, 0xd1,
+  0x39, 0xcb, 0x1b, 0x6b, 0xe3, 0x6f, 0xe5, 0x3a, 0xeb, 0xa2, 0x15, 0x15,
+  0xeb, 0xb2, 0x40, 0x67, 0x78, 0xbe, 0x17, 0xc5, 0x77, 0x5c, 0xf1, 0x3d,
+  0xe1, 0xf8, 0x4c, 0x44, 0x3a, 0xc0, 0x2a, 0x73, 0x12, 0xd8, 0x19, 0xdd,
+  0x0c, 0x95, 0x6a, 0x35, 0xa6, 0x89, 0xf9, 0xce, 0xbe, 0x15, 0x8e, 0x16,
+  0xb8, 0x5c, 0x33, 0xe8, 0xa5, 0xa8, 0x70, 0xcd, 0xf0, 0xa6, 0x2a, 0xa9,
+  0x9b, 0x7a, 0xce, 0x23, 0xdf, 0x42, 0x11, 0x60, 0x11, 0xe7, 0x11, 0x97,
+  0xc8, 0x76, 0x0e, 0x89, 0xab, 0xb0, 0xd5, 0x8a, 0xb3, 0x59, 0xd0, 0x89,
+  0xf3, 0x4f, 0xab, 0xf9, 0x89, 0xc3, 0x7b, 0xb3, 0x21, 0x80, 0x2e, 0x5c,
+  0x31, 0x5d, 0x51, 0xaf, 0xae, 0xae, 0xac, 0xf2, 0x4e, 0x63, 0x6a, 0xdd,
+  0x44, 0x76, 0xc2, 0xab, 0xc2, 0x51, 0xd0, 0xf7, 0xeb, 0x56, 0xf3, 0xc2,
+  0x6c, 0x3e, 0x66, 0x75, 0xa9, 0x11, 0xb3, 0xf9, 0x24, 0x65, 0xdf, 0x2a,
+  0x97, 0x74, 0x85, 0x04, 0x8d, 0xba, 0x0f, 0xf9, 0xf4, 0x7c, 0x03, 0x85,
+  0x13, 0x32, 0x0f, 0xc8, 0x60, 0x9b, 0x0e, 0x74, 0x3e, 0x1f, 0x81, 0xe2,
+  0x23, 0x51, 0xef, 0x5c, 0xa8, 0x95, 0x54, 0x06, 0x9c, 0xc4, 0x5e, 0xe5,
+  0xda, 0x88, 0x6a, 0xd6, 0x5e, 0x2e, 0xa8, 0x72, 0x9c, 0x29, 0x1f, 0xca,
+  0x6f, 0x13, 0x0f, 0x10, 0xe9, 0x0d, 0x8e, 0x1e, 0x65, 0x57, 0x4f, 0xbf,
+  0x63, 0x26, 0x0d, 0x07, 0xaf, 0xe3, 0x57, 0x98, 0x64, 0x63, 0x55, 0x46,
+  0x51, 0xd0, 0xa4, 0x98, 0x4a, 0xf2, 0x90, 0xc5, 0xcb, 0xd8, 0xd4, 0x6f,
+  0x6d, 0x2d, 0x0a, 0x8d, 0x08, 0xc4, 0x4b, 0xa0, 0x9a, 0x48, 0xc1, 0x11,
+  0x43, 0xca, 0x77, 0x31, 0x7a, 0xde, 0xff, 0x6b, 0xb3, 0xec, 0xb9, 0x4d,
+  0xea, 0x59, 0x4d, 0x02, 0x10, 0x01, 0x68, 0x80, 0x05, 0x3a, 0xe7, 0xc2,
+  0x3f, 0x98, 0xc7, 0x1c, 0xc4, 0x92, 0x4b, 0x74, 0x00, 0xb6, 0x0c, 0x44,
+  0x0d, 0x63, 0x5a, 0x83, 0xa7, 0xb6, 0x8e, 0x9f, 0x8b, 0xd6, 0x10, 0x5a,
+  0x63, 0x21, 0x05, 0xcd, 0x10, 0x95, 0x20, 0x9a, 0x7b, 0x1a, 0x96, 0x8e,
+  0x5e, 0x8f, 0x5d, 0x30, 0xa9, 0x9d, 0xd1, 0xc7, 0x8e, 0xec, 0xd9, 0xf9,
+  0xe9, 0xd7, 0xe7, 0x47, 0xe3, 0x71, 0xf4, 0xf6, 0xe8, 0x42, 0xd4, 0xfe,
+  0x0b, 0x89, 0xc2, 0xbb, 0x62, 0xcd, 0x3d, 0x82, 0xdb, 0xc1, 0xc0, 0x9c,
+  0x2c, 0xfa, 0xc4, 0x6c, 0x0a, 0x48, 0x7f, 0xca, 0xd9, 0xa5, 0x06, 0x51,
+  0x0e, 0xfa, 0xfc, 0x5c, 0x83, 0xf7, 0xae, 0x61, 0xf8, 0x47, 0x78, 0x13,
+  0x7c, 0x93, 0xce, 0x8e, 0xee, 0x2d, 0xaa, 0x90, 0x91, 0x25, 0xe0, 0xc9,
+  0xa5, 0x1f, 0x7a, 0x6b, 0x3a, 0xdf, 0xde, 0xf4, 0x13, 0xd3, 0xfb, 0x7d,
+  0x74, 0x91, 0x57, 0x5c, 0x14, 0x9c, 0x7f, 0x3d, 0x37, 0xfa, 0xf8, 0x7d,
+  0xf4, 0x03, 0xb5, 0x39, 0xa3, 0x55, 0x67, 0x63, 0x32, 0x5d, 0xb8, 0x63,
+  0x14, 0x3e, 0xf5, 0xf5, 0x85, 0x50, 0xad, 0x34, 0xac, 0xf7, 0xbe, 0x2a,
+  0x8a, 0x51, 0x77, 0x79, 0x9e, 0x5a, 0x7d, 0x1d, 0xc1, 0xcd, 0xd4, 0xf0,
+  0x3a, 0xd7, 0xb3, 0x56, 0x34, 0x8e, 0xa2, 0x93, 0xe4, 0xb2, 0x82, 0x40,
+  0xc2, 0xdd, 0x51, 0x73, 0x3b, 0x0c, 0x04, 0xbd, 0xcb, 0x05, 0xd0, 0xe8,
+  0xd7, 0x27, 0x9f, 0x3f, 0xdf, 0xf9, 0x5c, 0x7e, 0xb5, 0x7f, 0x5f, 0x3c,
+  0xdd, 0x51, 0x40, 0x75, 0xfa, 0xeb, 0xe9, 0xfe, 0xd3, 0xdd, 0x7d, 0xc6,
+  0x79, 0xdc, 0xd9, 0xdf, 0xa1, 0xff, 0x7f, 0xaa, 0x9f, 0x30, 0x98, 0xe5,
+  0x8b, 0xbd, 0xcf, 0x3f, 0x43, 0x60, 0x0c, 0xd3, 0xc7, 0x9c, 0x3a, 0x19,
+  0x56, 0xf9, 0x10, 0x70, 0x53, 0x10, 0x82, 0x7e, 0x5f, 0x37, 0x4a, 0xb2,
+  0xa7, 0x7d, 0xca, 0x7e, 0xd5, 0x2b, 0x51, 0x6f, 0xe6, 0x09, 0x73, 0x00,
+  0x35, 0xb0, 0x0a, 0x04, 0x8e, 0x05, 0x8b, 0x4b, 0x06, 0xb7, 0x4e, 0x43,
+  0xdf, 0xae, 0xf0, 0x37, 0xf0, 0xdb, 0x6a, 0xef, 0x48, 0xcc, 0x79, 0x00,
+  0x15, 0xf7, 0x4b, 0xbb, 0xb6, 0x9c, 0xf2, 0x0d, 0x00, 0xc0, 0xe9, 0x56,
+  0xe9, 0x7b, 0x53, 0x2b, 0x0a, 0xed, 0x9e, 0x62, 0x89, 0x70, 0x21, 0xe9,
+  0x09, 0x97, 0x12, 0xb9, 0xfc, 0x4b, 0xfb, 0x13, 0x23, 0x16, 0xbf, 0xa5,
+  0xd4, 0x10, 0xb5, 0x7b, 0x73, 0x69, 0x09, 0x1d, 0x7d, 0xd5, 0x88, 0x67,
+  0xc3, 0x6f, 0xbf, 0x5f, 0x29, 0xe6, 0x6a, 0xfa, 0x90, 0x4b, 0xe7, 0x92,
+  0x1a, 0xbb, 0x1d, 0x53, 0x6e, 0x35, 0xa7, 0x64, 0xf4, 0x0b, 0x9a, 0xf3,
+  0x33, 0x02, 0x05, 0xbb, 0x9d, 0x1b, 0x06, 0x9b, 0x93, 0x4a, 0x8c, 0x9b,
+  0xad, 0x86, 0x03, 0x18, 0xb5, 0x1b, 0x4f, 0x5e, 0x75, 0x24, 0x3b, 0x94,
+  0x37, 0x54, 0xfc, 0x74, 0x29, 0x72, 0x74, 0x0a, 0x6f, 0x73, 0xdc, 0xf6,
+  0xf2, 0xbc, 0x51, 0x76, 0xab, 0x2b, 0xa6, 0xc6, 0xa0, 0x3f, 0xed, 0x03,
+  0xe7, 0xc9, 0x1d, 0xba, 0x07, 0xa7, 0xe6, 0xc3, 0xec, 0x5d, 0x8d, 0xe1,
+  0x4d, 0x17, 0xb6, 0xde, 0x75, 0x24, 0xfd, 0x73, 0x88, 0x64, 0x77, 0xcd,
+  0x85, 0x17, 0x11, 0xea, 0x4b, 0x6b, 0x85, 0x0c, 0x46, 0x2d, 0x65, 0x98,
+  0xff, 0x2d, 0x63, 0x61, 0xc3, 0xdf, 0xb9, 0x08, 0x2e, 0xdc, 0x6b, 0x5a,
+  0x2e, 0x34, 0x16, 0xca, 0x9f, 0x87, 0x69, 0xb5, 0x8e, 0xdb, 0x4d, 0xe2,
+  0xa2, 0x06, 0xa8, 0xbf, 0x21, 0x65, 0x25, 0xe8, 0xa6, 0xa5, 0x9b, 0x03,
+  0x99, 0x8f, 0x22, 0x52, 0xfc, 0xcb, 0xc6, 0xc6, 0xf8, 0xec, 0xe8, 0xe8,
+  0x75, 0x74, 0x72, 0xfc, 0xf6, 0xf8, 0x22, 0x10, 0xc8, 0xdd, 0x45, 0x62,
+  0x46, 0x57, 0x2b, 0x3e, 0xd5, 0x58, 0x0e, 0x0f, 0xdf, 0x2c, 0xfd, 0xd9,
+  0x55, 0xbe, 0x48, 0x34, 0xa1, 0x62, 0xde, 0x7c, 0x0f, 0xaa, 0x37, 0x30,
+  0x9e, 0x46, 0xd1, 0x57, 0x41, 0x8c, 0x64, 0x54, 0x92, 0x70, 0x33, 0x75,
+  0x95, 0x97, 0x87, 0x7f, 0xd6, 0x90, 0x8d, 0xba, 0xe4, 0xa4, 0x28, 0xb4,
+  0x2e, 0xbb, 0x47, 0xc3, 0x5c, 0x1b, 0xa3, 0xe2, 0xb5, 0x4d, 0x24, 0xca,
+  0x3a, 0xb0, 0xd0, 0x21, 0x82, 0xef, 0x2e, 0x01, 0xf0, 0xc1, 0x22, 0x95,
+  0xb4, 0xcb, 0x30, 0xbc, 0xd8, 0x15, 0xa3, 0xbd, 0xc8, 0x85, 0x8f, 0x87,
+  0x3d, 0x86, 0x55, 0xc6, 0x2d, 0xb6, 0xd6, 0xfa, 0x0a, 0xcb, 0x57, 0x3f,
+  0xd9, 0x71, 0x99, 0x0b, 0x4b, 0xf0, 0x1c, 0x15, 0xf5, 0xb9, 0xb3, 0xdd,
+  0x88, 0xe4, 0x91, 0x15, 0x4b, 0xf5, 0xc5, 0x2a, 0x6b, 0x5d, 0x77, 0x7f,
+  0x96, 0x77, 0x69, 0xfe, 0xcf, 0x77, 0x70, 0xbd, 0x5d, 0xc6, 0xc5, 0x90,
+  0x24, 0xaf, 0xfb, 0xa1, 0x59, 0x57, 0x85, 0x22, 0x34, 0xf4, 0x58, 0x4c,
+  0x3f, 0x89, 0xaf, 0x7b, 0xdb, 0x90, 0x16, 0x7d, 0xfa, 0x49, 0x0e, 0x17,
+  0xe5, 0x5c, 0x0f, 0x00, 0x4f, 0x9d, 0x93, 0x7e, 0xcd, 0xd8, 0xe9, 0x65,
+  0x1d, 0x8f, 0x50, 0x6c, 0xbb, 0xe8, 0x79, 0x14, 0x27, 0x23, 0x80, 0xad,
+  0x72, 0xab, 0x29, 0x4f, 0x53, 0xe7, 0xd2, 0x16, 0xad, 0x17, 0xd1, 0xee,
+  0xe7, 0x3c, 0x8f, 0x4f, 0x9b, 0xcf, 0x9b, 0xbc, 0x98, 0xba, 0xf4, 0x62,
+  0xa8, 0x0b, 0x41, 0xae, 0xa9, 0x64, 0x48, 0xa0, 0x6c, 0x93, 0xac, 0xae,
+  0xc5, 0xc7, 0x22, 0x7e, 0x8f, 0xf5, 0x13, 0x75, 0xad, 0xc3, 0x32, 0x05,
+  0x5f, 0xb7, 0x48, 0x48, 0x7c, 0xd7, 0xe8, 0xba, 0xb0, 0xad, 0x55, 0xe2,
+  0xf7, 0xfa, 0x85, 0xcb, 0x45, 0x95, 0x65, 0x60, 0xeb, 0x08, 0xd1, 0xda,
+  0x5d, 0x3a, 0x83, 0x54, 0xed, 0xb1, 0xea, 0x68, 0xbf, 0x84, 0xf8, 0x24,
+  0x6c, 0x1a, 0xee, 0x4b, 0xf8, 0x3d, 0xdd, 0xc8, 0x54, 0x80, 0xe1, 0x65,
+  0xcd, 0x61, 0x5c, 0xd8, 0x84, 0xfc, 0xc0, 0xa9, 0xce, 0xde, 0x45, 0xc0,
+  0xaa, 0x14, 0xb3, 0xe6, 0x9e, 0xef, 0x85, 0xd3, 0x06, 0xaa, 0x6a, 0x6e,
+  0x76, 0x85, 0xb7, 0x8e, 0xb0, 0xeb, 0x73, 0x66, 0xd0, 0x96, 0x60, 0xda,
+  0xbb, 0x3b, 0x24, 0xbf, 0xce, 0xf3, 0x5a, 0x15, 0x74, 0x22, 0xaa, 0xb6,
+  0x52, 0x8a, 0x69, 0x0d, 0xb1, 0x3a, 0xbb, 0x3b, 0xdf, 0xae, 0x5f, 0x75,
+  0xe0, 0xf0, 0x3f, 0xf8, 0xf2, 0xde, 0xd3, 0x07, 0x36, 0xed, 0xb4, 0x80,
+  0x5e, 0x9e, 0x58, 0x38, 0x24, 0x04, 0x41, 0xef, 0x84, 0x69, 0x6d, 0x1b,
+  0x11, 0x7e, 0x72, 0x15, 0xf3, 0xf0, 0x1f, 0x1a, 0xbd, 0xa5, 0x87, 0x34,
+  0x86, 0xf2, 0x56, 0x03, 0xb4, 0xe5, 0xcb, 0x92, 0x2d, 0x64, 0x4b, 0x20,
+  0xf5, 0x79, 0x35, 0xd6, 0x65, 0x96, 0x0b, 0x4c, 0x43, 0xf0, 0xb6, 0x70,
+  0xce, 0x41, 0x9d, 0x49, 0x18, 0xf5, 0x14, 0xc9, 0xd5, 0x4a, 0x40, 0x31,
+  0x72, 0x51, 0xfb, 0x19, 0xd8, 0x5a, 0xcf, 0x2b, 0xf1, 0x66, 0x8e, 0x24,
+  0x12, 0x7a, 0x02, 0xe3, 0x9d, 0xc6, 0x26, 0xb2, 0x8a, 0xc8, 0xd1, 0xbc,
+  0x18, 0xd8, 0x3e, 0x3b, 0x65, 0x87, 0x18, 0xb8, 0xc1, 0x46, 0xd4, 0xac,
+  0xa0, 0x2d, 0xc8, 0x8d, 0x23, 0x24, 0xfd, 0x0a, 0xa1, 0x38, 0x66, 0xcf,
+  0x19, 0x66, 0xec, 0x18, 0xab, 0xc4, 0x43, 0x80, 0x06, 0x06, 0x4a, 0xb5,
+  0x68, 0xc9, 0x75, 0xc5, 0x1c, 0xbf, 0x34, 0x04, 0x4d, 0x41, 0xdb, 0x67,
+  0xbb, 0xff, 0xe1, 0xe9, 0xbb, 0x37, 0xc7, 0x5f, 0x3b, 0x54, 0x23, 0x61,
+  0xe2, 0x35, 0xb4, 0x0d, 0xb1, 0x24, 0x87, 0x4e, 0x6f, 0xad, 0xc9, 0xa8,
+  0x81, 0xb8, 0xc4, 0x9e, 0x3e, 0x84, 0x1f, 0x80, 0x81, 0x64, 0x4f, 0xd8,
+  0x56, 0x2e, 0x50, 0x20, 0xe5, 0x96, 0xb7, 0x3c, 0x34, 0x50, 0xeb, 0x24,
+  0x61, 0x23, 0x2e, 0xaa, 0xd5, 0xd2, 0xc5, 0x13, 0x06, 0x35, 0x1d, 0x15,
+  0x87, 0xdb, 0xb2, 0xd2, 0x57, 0x4b, 0x61, 0x4d, 0x9a, 0x5b, 0x5a, 0x33,
+  0xec, 0xca, 0x1d, 0xc0, 0x96, 0x05, 0x85, 0x55, 0xd1, 0x0b, 0xa0, 0x15,
+  0xa2, 0x33, 0x67, 0xf4, 0xce, 0x30, 0x74, 0xde, 0x5c, 0x39, 0x33, 0xd4,
+  0xc5, 0x0c, 0x6b, 0x9f, 0x2f, 0x44, 0x33, 0xe3, 0x79, 0xa3, 0xb8, 0xb4,
+  0x8b, 0xcb, 0x71, 0x81, 0xc0, 0xde, 0x55, 0x54, 0xba, 0x6a, 0xd9, 0x2e,
+  0x54, 0xc9, 0x32, 0x5a, 0x63, 0x78, 0x2d, 0xe1, 0xf6, 0xc4, 0x27, 0xaf,
+  0xd8, 0x43, 0xb3, 0xcf, 0x68, 0xf4, 0x0b, 0xc1, 0x96, 0x0b, 0x33, 0x51,
+  0x95, 0x4b, 0x7a, 0xd4, 0xf8, 0xe3, 0xcb, 0x20, 0xb9, 0x4d, 0x42, 0x06,
+  0x8d, 0xe8, 0xc4, 0x5c, 0xcc, 0xb6, 0x96, 0xfe, 0xef, 0xfa, 0xc3, 0xf2,
+  0x7e, 0x31, 0xc9, 0xe7, 0x96, 0x83, 0xe1, 0xb0, 0x24, 0xec, 0xa1, 0xb0,
+  0xc6, 0x5a, 0x24, 0x4e, 0xdb, 0x2a, 0xb0, 0x50, 0xfa, 0xb0, 0x29, 0x3f,
+  0x7e, 0xa9, 0x53, 0x04, 0x4f, 0x91, 0xcd, 0x02, 0x30, 0x3f, 0xcc, 0xe3,
+  0x93, 0x6c, 0x3a, 0xcf, 0x95, 0xaa, 0x39, 0xd7, 0x1c, 0x2b, 0x55, 0x9f,
+  0x3a, 0x3b, 0xff, 0xf2, 0x15, 0x1b, 0x3b, 0x50, 0x83, 0x84, 0xc4, 0x9d,
+  0x9e, 0x82, 0x6b, 0x60, 0x82, 0xfc, 0xb6, 0x7c, 0xa1, 0x01, 0xfa, 0x01,
+  0xd4, 0x8d, 0x14, 0x2d, 0xa1, 0xa1, 0xfe, 0x24, 0xb6, 0x45, 0x71, 0x01,
+  0xfe, 0xd9, 0x3a, 0xb7, 0x47, 0x1b, 0x4b, 0x4f, 0xf4, 0x14, 0x17, 0x57,
+  0x0a, 0xd8, 0xa7, 0x4e, 0x35, 0x28, 0x89, 0xae, 0x94, 0x8c, 0xb3, 0x51,
+  0xb2, 0x50, 0xe2, 0x02, 0x68, 0x20, 0x3e, 0xad, 0x24, 0xbd, 0x50, 0x93,
+  0xaf, 0xc4, 0x3a, 0xe9, 0x08, 0x31, 0xe0, 0x38, 0xbf, 0x73, 0x61, 0x29,
+  0xb1, 0xbf, 0xcb, 0xac, 0xc2, 0x85, 0x37, 0xd5, 0xea, 0x65, 0x16, 0xbc,
+  0xc6, 0xf6, 0x3c, 0x68, 0xc2, 0x89, 0xda, 0x50, 0xa4, 0x2b, 0xc8, 0x12,
+  0x0c, 0x71, 0x83, 0x3c, 0xa0, 0xa4, 0xf4, 0x4d, 0xc8, 0xf7, 0xaf, 0xb4,
+  0xb4, 0x15, 0x9d, 0x67, 0x05, 0x4d, 0x51, 0x24, 0xc1, 0xcf, 0x77, 0xd4,
+  0x12, 0x57, 0x69, 0xe4, 0x6a, 0x19, 0x1d, 0x9c, 0x1f, 0x91, 0x64, 0x7b,
+  0x95, 0x01, 0xae, 0x22, 0xab, 0x2c, 0xbf, 0x2e, 0xc9, 0xb4, 0x96, 0x56,
+  0x66, 0xe7, 0x83, 0x3b, 0xbc, 0x0b, 0xde, 0x64, 0x62, 0xd2, 0x18, 0x01,
+  0x49, 0xe5, 0xf6, 0x24, 0x37, 0x35, 0x5c, 0x61, 0x70, 0x1d, 0x46, 0x4c,
+  0x10, 0x92, 0x62, 0x6f, 0x09, 0x75, 0x95, 0x1b, 0xa6, 0xf0, 0x59, 0x8b,
+  0xad, 0x87, 0x60, 0xc2, 0xb6, 0xd6, 0x38, 0xd5, 0x3e, 0x2b, 0xe1, 0xaf,
+  0x06, 0xd1, 0xa9, 0x7d, 0xd5, 0x3c, 0xa0, 0x9e, 0x9c, 0x06, 0xdd, 0xd6,
+  0xa3, 0xbf, 0xe2, 0x9e, 0x61, 0x59, 0xa4, 0x29, 0x17, 0x24, 0x2e, 0xd8,
+  0x5e, 0x0c, 0xd9, 0xb3, 0x40, 0xf8, 0x95, 0x6c, 0x40, 0x0e, 0xb7, 0x16,
+  0x1b, 0xb5, 0x82, 0x02, 0xa9, 0x89, 0x47, 0xd4, 0x81, 0x99, 0x9e, 0x55,
+  0xa6, 0x0a, 0x8e, 0x1c, 0x9e, 0x30, 0x70, 0x92, 0x54, 0xd1, 0xae, 0xf1,
+  0xa7, 0x4e, 0x33, 0xef, 0xef, 0xdc, 0x6c, 0xfd, 0x18, 0xdc, 0x97, 0xfc,
+  0xd1, 0x2b, 0x07, 0x74, 0xc7, 0xa3, 0x18, 0x71, 0x47, 0x60, 0xa9, 0x70,
+  0x9f, 0xf2, 0x2f, 0xf8, 0x18, 0x01, 0x70, 0x06, 0x7c, 0x0a, 0xae, 0xe3,
+  0xd0, 0xb4, 0x72, 0x75, 0xaf, 0xfa, 0x81, 0x88, 0x8f, 0x0f, 0x1c, 0x7a,
+  0x12, 0x8a, 0xc6, 0xc3, 0x6f, 0xb7, 0xad, 0x1c, 0x2e, 0x9b, 0x72, 0x38,
+  0x97, 0xd8, 0x0e, 0x7c, 0x99, 0xd4, 0xea, 0xe7, 0xba, 0xa4, 0xa1, 0xde,
+  0xb0, 0x47, 0x6b, 0xd1, 0x9f, 0xcf, 0x3d, 0xc3, 0xb7, 0xc7, 0x78, 0x57,
+  0x91, 0x5f, 0xe7, 0x05, 0x26, 0xe5, 0x5d, 0x5c, 0x98, 0xe3, 0xbe, 0x96,
+  0xed, 0xc0, 0x95, 0xcd, 0x38, 0x19, 0xc8, 0x61, 0x7c, 0x21, 0x63, 0x04,
+  0xf1, 0x02, 0xb7, 0x69, 0x69, 0x7e, 0x48, 0xa2, 0xed, 0xa9, 0x84, 0x47,
+  0x54, 0x82, 0x4d, 0x90, 0x54, 0xd3, 0x60, 0x29, 0x93, 0xe9, 0x75, 0x2e,
+  0xe1, 0xb5, 0xb4, 0x68, 0x41, 0xd2, 0x67, 0x2f, 0xfa, 0x4f, 0xa5, 0x81,
+  0x6f, 0x7d, 0xfe, 0x1e, 0x13, 0xc2, 0x48, 0x20, 0x29, 0x47, 0x9e, 0x20,
+  0x8e, 0x7e, 0xb8, 0x38, 0x3f, 0x88, 0xbe, 0x39, 0x3a, 0x78, 0x7d, 0x74,
+  0x3e, 0x6e, 0x5c, 0xfa, 0x1a, 0x09, 0x22, 0x12, 0x1a, 0xdb, 0x83, 0x21,
+  0x1a, 0x1b, 0x06, 0x81, 0x86, 0xf0, 0x1b, 0xd7, 0x23, 0xe2, 0xe1, 0x83,
+  0x44, 0xe7, 0x83, 0x15, 0x22, 0x71, 0x1c, 0x00, 0x00, 0xb9, 0x04, 0xb3,
+  0x71, 0x6d, 0x4c, 0x89, 0x43, 0x71, 0x3c, 0x83, 0x59, 0xcf, 0xc3, 0xe4,
+  0x19, 0x0f, 0xdb, 0xe7, 0x2f, 0x93, 0x59, 0x6e, 0x79, 0x81, 0xf5, 0x9d,
+  0xfb, 0xc6, 0xa7, 0x7e, 0x07, 0x6c, 0x4b, 0x2f, 0x19, 0x35, 0x20, 0xf6,
+  0x7e, 0x18, 0x52, 0xbf, 0x43, 0x5a, 0xfc, 0x21, 0xe3, 0x3a, 0xde, 0x27,
+  0x65, 0xaf, 0x61, 0x0d, 0xac, 0x77, 0xbf, 0x21, 0xd5, 0x9c, 0x5a, 0x27,
+  0xe9, 0x9b, 0xce, 0x96, 0xf8, 0x74, 0x71, 0xc1, 0xe7, 0x96, 0x06, 0x81,
+  0x4b, 0x35, 0x10, 0x92, 0xf5, 0x04, 0xb5, 0x32, 0x5d, 0x34, 0x56, 0xc9,
+  0xab, 0x99, 0x1a, 0x1a, 0x86, 0x81, 0xe8, 0x14, 0x20, 0xeb, 0xd0, 0xd9,
+  0x93, 0x4b, 0x7d, 0x2e, 0x58, 0xcd, 0x62, 0x31, 0xa3, 0x61, 0xe9, 0x43,
+  0xe1, 0xfd, 0x00, 0x5f, 0x88, 0x86, 0xe3, 0x97, 0x35, 0x57, 0xa9, 0xda,
+  0x45, 0x15, 0xc6, 0x5b, 0x9b, 0xe3, 0x31, 0x38, 0x9a, 0xb7, 0x28, 0x7e,
+  0xee, 0xd2, 0x2a, 0x8c, 0xe8, 0xbb, 0x12, 0x10, 0xc6, 0x4a, 0x3d, 0x4c,
+  0x9d, 0x52, 0xaa, 0x54, 0xea, 0x15, 0x0a, 0x63, 0x0b, 0xd2, 0x82, 0x42,
+  0x62, 0x46, 0x39, 0x34, 0x04, 0x92, 0xbb, 0xe7, 0x92, 0xe8, 0x9b, 0xbc,
+  0xc4, 0x5d, 0xd0, 0x7e, 0x9c, 0x2f, 0xf9, 0xae, 0xe5, 0xc7, 0x1b, 0xea,
+  0xea, 0x72, 0x78, 0xb1, 0x80, 0x57, 0x06, 0xfb, 0x3a, 0x3b, 0xb8, 0xf8,
+  0x06, 0x8e, 0x56, 0x90, 0xf0, 0x6b, 0x80, 0xa7, 0x98, 0x7b, 0xad, 0x9d,
+  0x9d, 0xe5, 0x14, 0x38, 0x91, 0x7f, 0x0d, 0xa3, 0xd1, 0xe4, 0x49, 0x38,
+  0xf2, 0x52, 0x89, 0x49, 0x9a, 0x4b, 0x79, 0x58, 0xf0, 0xe8, 0x5a, 0x89,
+  0x3e, 0x44, 0xc1, 0xbb, 0xd4, 0x3b, 0x17, 0x7a, 0xd9, 0x97, 0x9c, 0xf8,
+  0xbe, 0xcc, 0x09, 0x44, 0xcf, 0xc2, 0x1c, 0x6b, 0x3c, 0x21, 0x08, 0x31,
+  0xbe, 0xe0, 0xa4, 0x67, 0xf1, 0x45, 0xcd, 0xf2, 0x6e, 0x08, 0xc4, 0xe0,
+  0x48, 0x7f, 0xb9, 0xb8, 0x1f, 0xb5, 0xb1, 0x78, 0xa2, 0xaf, 0x56, 0x55,
+  0x9d, 0xad, 0x34, 0xa0, 0x90, 0x9d, 0x64, 0x59, 0xe4, 0x79, 0x15, 0x8c,
+  0x01, 0xd2, 0x4f, 0x5c, 0xe9, 0x89, 0x16, 0xac, 0x4b, 0x19, 0x0b, 0x37,
+  0x95, 0xa9, 0xdc, 0x1d, 0x0a, 0x86, 0xf1, 0xa4, 0xcc, 0xe7, 0xab, 0x2a,
+  0x08, 0xc4, 0xfe, 0x65, 0x63, 0x0e, 0x06, 0xbd, 0x79, 0x3c, 0x32, 0xdc,
+  0xcf, 0x4c, 0xd0, 0xea, 0x48, 0xd3, 0x27, 0xf1, 0x12, 0x7e, 0xc7, 0x22,
+  0xcf, 0xea, 0x75, 0xe4, 0x10, 0xf3, 0xbd, 0xb5, 0xb1, 0x31, 0xb6, 0xcd,
+  0x66, 0xe4, 0xd7, 0xf6, 0xa6, 0x7f, 0x0f, 0x69, 0x92, 0xc7, 0x20, 0x7e,
+  0x83, 0x29, 0xfd, 0x62, 0x78, 0x70, 0x89, 0xec, 0x29, 0x58, 0xb8, 0xec,
+  0x71, 0x5a, 0xd6, 0x27, 0x85, 0xaf, 0x9c, 0xe7, 0xc2, 0x52, 0xcd, 0x2e,
+  0x72, 0xc3, 0xf4, 0x57, 0xcf, 0x9d, 0x27, 0x88, 0x5a, 0x62, 0x7c, 0x27,
+  0xd8, 0x34, 0x5f, 0x02, 0x56, 0x74, 0xd8, 0x45, 0xe6, 0xf2, 0x20, 0xb7,
+  0xff, 0x6b, 0x3b, 0x1a, 0x44, 0x5a, 0x0f, 0xbe, 0x03, 0xef, 0xe8, 0xff,
+  0x42, 0x0c, 0x96, 0x22, 0xfd, 0x72, 0x9b, 0xa3, 0x3a, 0x96, 0xec, 0x88,
+  0x54, 0xa8, 0xeb, 0x62, 0xea, 0xa9, 0x9f, 0xa4, 0x83, 0xe4, 0x8e, 0xf5,
+  0x17, 0xd3, 0x11, 0x14, 0x39, 0x44, 0xea, 0xfe, 0x3a, 0x2c, 0x26, 0x20,
+  0x6f, 0x5c, 0x3a, 0xab, 0x1e, 0x97, 0xe0, 0x94, 0x7a, 0x94, 0x22, 0xd6,
+  0xa3, 0x1c, 0x93, 0x79, 0x50, 0x25, 0xb9, 0xde, 0xe9, 0xed, 0x65, 0x54,
+  0xe6, 0xf2, 0xd3, 0xf2, 0x8f, 0x34, 0xc6, 0x4b, 0xc9, 0x3f, 0x28, 0xf3,
+  0x17, 0xd4, 0xc7, 0xb5, 0xe0, 0x53, 0x09, 0xac, 0x33, 0xcf, 0xa4, 0x0d,
+  0xd2, 0xa4, 0x00, 0x76, 0x5c, 0x02, 0xe1, 0x52, 0x41, 0x48, 0x38, 0xa8,
+  0x8c, 0xe1, 0x8c, 0x25, 0x7f, 0x9b, 0x0b, 0x38, 0x9a, 0x26, 0x63, 0x57,
+  0xaa, 0x65, 0x74, 0x6c, 0x84, 0xe5, 0xb4, 0x65, 0xf8, 0x7a, 0xf7, 0x23,
+  0x1f, 0x1f, 0x4e, 0xba, 0xbb, 0x98, 0x21, 0xd3, 0xbc, 0x48, 0x60, 0x53,
+  0xd2, 0x12, 0xb0, 0x12, 0xc7, 0x11, 0xc6, 0xa6, 0xf8, 0xe0, 0xcd, 0x2b,
+  0x4e, 0xf8, 0x50, 0x93, 0x94, 0xc2, 0x9a, 0xc0, 0xfe, 0x75, 0x9d, 0x6a,
+  0x88, 0xa9, 0xac, 0x7a, 0xbd, 0xc0, 0x26, 0x2c, 0x7c, 0x1c, 0x5d, 0xe0,
+  0x1d, 0xac, 0x2e, 0x06, 0x62, 0xd4, 0x3e, 0x30, 0x23, 0x07, 0xb0, 0xaa,
+  0x97, 0xc8, 0x71, 0x98, 0x5e, 0x2e, 0x01, 0x19, 0x2e, 0xec, 0xf9, 0x13,
+  0x7b, 0x0f, 0xbb, 0xe4, 0x78, 0xd6, 0x2c, 0x92, 0x5c, 0x12, 0x45, 0x8d,
+  0xe3, 0x0b, 0x65, 0x6f, 0x17, 0x8a, 0xa9, 0x84, 0x6f, 0x00, 0xb2, 0xd4,
+  0x5a, 0x30, 0xe8, 0xb4, 0xe6, 0xe2, 0x6f, 0x0d, 0x74, 0x95, 0x5c, 0xf2,
+  0xbd, 0x7a, 0x9b, 0x45, 0x2e, 0x0c, 0xfc, 0x4e, 0xb5, 0x42, 0x72, 0x92,
+  0xd0, 0x5d, 0x56, 0xc5, 0x6a, 0x5a, 0x43, 0xeb, 0x03, 0x45, 0xd4, 0xbc,
+  0xf4, 0x6e, 0x8d, 0xf3, 0x50, 0xb7, 0x3f, 0x3e, 0x53, 0xf5, 0x5e, 0xb4,
+  0x0f, 0x1e, 0xd9, 0x66, 0x5c, 0xcb, 0x77, 0x71, 0x35, 0x46, 0xc3, 0x7e,
+  0xb7, 0x1c, 0x95, 0x0d, 0xcf, 0x5c, 0x72, 0x7d, 0xa3, 0x52, 0x3c, 0x27,
+  0x2a, 0x04, 0x77, 0xaf, 0x0a, 0x62, 0x10, 0x3c, 0x8a, 0x48, 0x71, 0x18,
+  0x21, 0xd6, 0xb0, 0xc9, 0x72, 0xc3, 0x61, 0x25, 0xd2, 0x90, 0x86, 0x1a,
+  0xb5, 0x2a, 0x8e, 0xe0, 0x6d, 0x5a, 0x48, 0xab, 0x14, 0xe4, 0x4a, 0x64,
+  0x95, 0x1e, 0x6f, 0xb1, 0x11, 0xb2, 0x0a, 0xb4, 0x26, 0x27, 0x1f, 0x2a,
+  0x6e, 0x9c, 0xae, 0xdf, 0x28, 0x7a, 0xad, 0x87, 0x42, 0x7b, 0x68, 0x8a,
+  0x13, 0xed, 0xbb, 0xf1, 0x4c, 0x50, 0x51, 0x5a, 0x74, 0xf4, 0xda, 0x6c,
+  0xaa, 0x60, 0x39, 0x58, 0x1b, 0xd6, 0x6c, 0x6c, 0x93, 0x68, 0x5d, 0xad,
+  0x0b, 0x1a, 0x02, 0xcf, 0xb8, 0x3f, 0x4f, 0x76, 0xfa, 0x41, 0x8d, 0xaf,
+  0x4d, 0x89, 0xff, 0xcf, 0xa1, 0xfd, 0x38, 0xdc, 0x42, 0xb1, 0x5e, 0x70,
+  0x9c, 0xdb, 0x56, 0xc7, 0x50, 0xa8, 0x89, 0x5f, 0x3a, 0x98, 0xdd, 0x17,
+  0x7b, 0xa3, 0xdd, 0xe7, 0x9f, 0x8f, 0x76, 0x46, 0xbb, 0x3b, 0xcc, 0x5f,
+  0x78, 0x28, 0xc1, 0xe0, 0x64, 0x5d, 0x3a, 0xba, 0xaa, 0xbd, 0xd7, 0xee,
+  0xf3, 0xdd, 0xd1, 0xc5, 0xf7, 0xa7, 0xe7, 0xdf, 0x46, 0xc7, 0xef, 0x2e,
+  0x8e, 0xce, 0xdf, 0x1c, 0x1c, 0x7e, 0x2a, 0x76, 0x7f, 0x68, 0xb6, 0x0e,
+  0xca, 0x5c, 0x27, 0x7e, 0x61, 0xda, 0xb6, 0x41, 0xbf, 0x66, 0x49, 0x75,
+  0xbd, 0xb3, 0xbf, 0xfb, 0x20, 0x3a, 0x75, 0x87, 0x79, 0xd0, 0xbf, 0x6f,
+  0x93, 0xda, 0xe5, 0x49, 0xad, 0x6f, 0xc5, 0xa1, 0x34, 0x8e, 0x25, 0xcc,
+  0xca, 0x85, 0xe8, 0x82, 0xcd, 0xa3, 0x8a, 0x12, 0xc0, 0x59, 0x95, 0xb1,
+  0x4f, 0x04, 0x07, 0x57, 0x32, 0x6d, 0x15, 0x6f, 0x46, 0xc3, 0xd1, 0x95,
+  0xe7, 0x6e, 0x48, 0x49, 0xe9, 0x4a, 0xcd, 0x29, 0x82, 0x6c, 0x3b, 0x83,
+  0x88, 0x67, 0x5c, 0x59, 0xd3, 0xd8, 0x98, 0x5a, 0xb4, 0xca, 0xa9, 0x60,
+  0x0f, 0xce, 0x5c, 0xca, 0x88, 0x03, 0x24, 0x40, 0x14, 0x84, 0xc9, 0xe9,
+  0x18, 0x6b, 0xbd, 0x2a, 0x78, 0x18, 0x49, 0xdb, 0x80, 0x61, 0x2d, 0x2d,
+  0xc4, 0x19, 0x13, 0xab, 0x99, 0x46, 0x0f, 0x75, 0x20, 0x38, 0x0d, 0xc1,
+  0x68, 0xa4, 0x2b, 0x08, 0x54, 0x8c, 0x97, 0x06, 0xa4, 0xc8, 0x1a, 0x58,
+  0xb2, 0xdc, 0x51, 0x48, 0xa3, 0x10, 0xf9, 0xcf, 0x0a, 0x5c, 0x70, 0xeb,
+  0x65, 0x0d, 0xaf, 0x30, 0x92, 0xca, 0x56, 0xe1, 0xeb, 0x22, 0x6a, 0x23,
+  0x50, 0x73, 0x56, 0xc4, 0x77, 0x28, 0xcf, 0x92, 0x7a, 0xf4, 0xd1, 0x8d,
+  0xa8, 0x56, 0x9e, 0x8b, 0x05, 0x27, 0xbf, 0xe6, 0xd1, 0xd9, 0xd1, 0xdb,
+  0xa1, 0x15, 0x15, 0xa6, 0xdf, 0xc5, 0x18, 0x65, 0x50, 0x93, 0x92, 0xe6,
+  0xb3, 0x4c, 0x32, 0x0b, 0xab, 0x01, 0x4f, 0xd4, 0x38, 0xa0, 0x70, 0x02,
+  0x7c, 0x68, 0x1c, 0x18, 0xa5, 0x46, 0x8f, 0x5a, 0xf8, 0xa5, 0xa4, 0x19,
+  0x36, 0x11, 0x3a, 0x79, 0x3f, 0x35, 0x76, 0x39, 0xda, 0x74, 0xf1, 0xba,
+  0xdc, 0x1f, 0x82, 0x52, 0x11, 0x33, 0xe0, 0xc2, 0x04, 0x72, 0x4b, 0xc2,
+  0x3e, 0xfb, 0xf6, 0x70, 0xfc, 0xbb, 0xdd, 0x3d, 0x1d, 0xce, 0x96, 0x69,
+  0x05, 0xcc, 0xab, 0x9a, 0xf9, 0xf9, 0x60, 0xd7, 0xe1, 0x18, 0x2d, 0xdb,
+  0x1a, 0x07, 0x1c, 0x9b, 0xb1, 0xe9, 0x72, 0x84, 0xb6, 0x6a, 0x49, 0x42,
+  0x1b, 0x52, 0xdb, 0xde, 0x44, 0x4c, 0x57, 0xf8, 0x97, 0x5d, 0x22, 0x28,
+  0x0f, 0xa5, 0x05, 0x9a, 0x2a, 0x17, 0xf5, 0x17, 0x67, 0xf6, 0x91, 0xb4,
+  0xac, 0xad, 0x21, 0x9d, 0xdc, 0x47, 0xb6, 0x34, 0xf7, 0x9c, 0xd7, 0xdb,
+  0x7f, 0xcb, 0x90, 0xb1, 0x7a, 0xb3, 0x1b, 0x36, 0x90, 0xef, 0x06, 0x07,
+  0x40, 0x03, 0xd9, 0x67, 0x56, 0x02, 0x2e, 0xf3, 0x15, 0x51, 0xf8, 0xe9,
+  0x53, 0xda, 0x28, 0x3a, 0x59, 0x02, 0xe1, 0xc0, 0x4c, 0x21, 0x9f, 0xb3,
+  0xea, 0xe2, 0x1e, 0x79, 0x5d, 0x70, 0xe9, 0x99, 0xa5, 0x84, 0x94, 0xbe,
+  0x1b, 0x45, 0xdf, 0x24, 0x19, 0xe7, 0xd0, 0x73, 0xf0, 0x9d, 0xa5, 0x61,
+  0x21, 0x44, 0x90, 0x6b, 0x50, 0xa2, 0x26, 0xdf, 0x49, 0x12, 0x2b, 0x3c,
+  0x27, 0xf1, 0xba, 0x52, 0x34, 0x5c, 0xab, 0x47, 0x15, 0x73, 0xa0, 0x9e,
+  0x62, 0x89, 0x3a, 0xdc, 0x0b, 0xc1, 0x8b, 0xe6, 0x06, 0x36, 0xeb, 0x18,
+  0x9b, 0xa8, 0x8e, 0x80, 0xe6, 0xf4, 0x98, 0xc3, 0xd7, 0xa4, 0x56, 0xe5,
+  0x6b, 0x20, 0x6b, 0xb3, 0xb5, 0x50, 0x34, 0x2e, 0xcf, 0x54, 0x66, 0xc5,
+  0x35, 0x9b, 0x3e, 0x4a, 0xba, 0x6e, 0xe2, 0x6c, 0x7a, 0x3f, 0x9a, 0x91,
+  0x2c, 0xcb, 0xc6, 0xb3, 0xd1, 0xea, 0x66, 0x3b, 0x38, 0xa6, 0xcc, 0xf2,
+  0xaf, 0x05, 0x2e, 0xa0, 0x6e, 0xf8, 0xb6, 0x62, 0xc7, 0x6d, 0x14, 0xb1,
+  0xb8, 0x76, 0x26, 0x98, 0x24, 0x2c, 0xf1, 0x5f, 0x8e, 0xe7, 0x5a, 0xbc,
+  0xad, 0xa3, 0xc8, 0x81, 0x1d, 0x73, 0x0b, 0xa3, 0x65, 0xb2, 0xd8, 0x77,
+  0x89, 0xc9, 0xc6, 0x1f, 0xb4, 0xc0, 0x86, 0x53, 0x2c, 0x02, 0x23, 0x6d,
+  0x96, 0x5c, 0xcd, 0x55, 0xa0, 0x08, 0x55, 0x17, 0xd7, 0x44, 0x47, 0x36,
+  0x88, 0x28, 0x3c, 0x5a, 0x2d, 0x09, 0x12, 0x3b, 0xd1, 0x61, 0xa5, 0xd1,
+  0xb5, 0xf2, 0x70, 0xc1, 0x02, 0xbd, 0x6f, 0x44, 0x41, 0x44, 0x80, 0xbb,
+  0x8c, 0xc2, 0xf2, 0x62, 0xe2, 0xb1, 0xa0, 0x24, 0x75, 0x3f, 0x31, 0x26,
+  0x2c, 0x28, 0x04, 0x88, 0xee, 0x1a, 0x20, 0x0d, 0xe7, 0xa7, 0xd5, 0x14,
+  0x96, 0xb3, 0x42, 0x5f, 0xdf, 0x3e, 0x61, 0x8b, 0xf7, 0xc5, 0xc9, 0xd8,
+  0xbc, 0x22, 0x59, 0x72, 0x17, 0x90, 0x96, 0x54, 0x21, 0x50, 0xfa, 0x63,
+  0x03, 0x90, 0xa0, 0x2b, 0x03, 0xf8, 0x00, 0x23, 0x11, 0xae, 0xe0, 0xdd,
+  0x64, 0x3e, 0x0f, 0xc2, 0x16, 0x41, 0x23, 0x8a, 0x79, 0x28, 0x56, 0xfa,
+  0x4c, 0x84, 0x21, 0x07, 0xfa, 0xc2, 0x30, 0x7e, 0x24, 0x2c, 0x3d, 0x19,
+  0x44, 0xc3, 0x3d, 0x40, 0xe9, 0xec, 0xd6, 0x17, 0x31, 0xae, 0x04, 0x31,
+  0x90, 0xdb, 0xa0, 0x96, 0xac, 0x15, 0x65, 0x07, 0x9b, 0x4a, 0xd2, 0xb7,
+  0xf4, 0x3e, 0xff, 0xd8, 0xd3, 0x09, 0xdd, 0xee, 0x22, 0x78, 0x5b, 0x20,
+  0x2c, 0xe7, 0xf7, 0x6d, 0x91, 0x61, 0xef, 0xc1, 0x5d, 0x45, 0x9a, 0xc4,
+  0x5d, 0xea, 0xb0, 0xa4, 0xa5, 0x7e, 0x02, 0x4c, 0xa1, 0x8a, 0x0e, 0x6a,
+  0x03, 0xa0, 0x25, 0x54, 0x23, 0x77, 0x16, 0xdd, 0xee, 0x99, 0xaf, 0x99,
+  0xbf, 0xb1, 0x75, 0x13, 0x63, 0xbd, 0x67, 0x22, 0xad, 0x0c, 0x46, 0x0e,
+  0x78, 0x0b, 0xa8, 0x96, 0x13, 0xa0, 0x88, 0x66, 0x89, 0x8b, 0xd4, 0xb8,
+  0x4c, 0x9e, 0xa9, 0x59, 0x41, 0xb2, 0xdf, 0x05, 0x9a, 0x9e, 0x15, 0xf8,
+  0x20, 0xcc, 0x09, 0x41, 0xe0, 0x41, 0x70, 0xe4, 0x71, 0xe6, 0x72, 0x26,
+  0xd4, 0x94, 0x0f, 0xb4, 0x3e, 0x6c, 0xff, 0x75, 0x2a, 0x86, 0x09, 0x84,
+  0x9d, 0xe2, 0x3a, 0xa7, 0x93, 0xdf, 0x8f, 0xe8, 0x30, 0xad, 0x98, 0xe3,
+  0x57, 0xae, 0x0e, 0xdb, 0x58, 0x50, 0x3e, 0xfb, 0x21, 0x9b, 0x1b, 0x7e,
+  0xc1, 0x53, 0x29, 0xfb, 0x7e, 0xee, 0x8a, 0x76, 0x5e, 0x9f, 0x88, 0xfa,
+  0x39, 0xac, 0xf2, 0xd8, 0x59, 0x61, 0x05, 0xd6, 0xfb, 0x47, 0x1f, 0x59,
+  0xc6, 0xe9, 0x6b, 0x4f, 0xf2, 0xb5, 0xa4, 0xf7, 0x63, 0x8d, 0xce, 0x8e,
+  0xdf, 0x49, 0xc9, 0x70, 0x77, 0x16, 0x12, 0x46, 0x61, 0xdc, 0x90, 0x6a,
+  0xf7, 0x18, 0x4f, 0x6c, 0x70, 0xf0, 0x62, 0x38, 0x62, 0x9a, 0x61, 0x1a,
+  0x4f, 0xb5, 0xaf, 0xf3, 0x95, 0xf4, 0xde, 0xe7, 0x7b, 0xae, 0x2c, 0xe7,
+  0xfd, 0x46, 0x19, 0x5c, 0xb7, 0x27, 0x8d, 0x0b, 0xc5, 0x59, 0xa4, 0xa6,
+  0x33, 0x2f, 0xe0, 0xa3, 0xd4, 0x37, 0xb7, 0x52, 0xe3, 0x73, 0x83, 0x46,
+  0xd2, 0x63, 0x68, 0x0a, 0xff, 0x5d, 0x34, 0xda, 0xa6, 0x0e, 0xcb, 0x6d,
+  0x7b, 0x71, 0x79, 0x33, 0x2d, 0xe9, 0x86, 0xe3, 0x0c, 0xdf, 0x1f, 0xa1,
+  0x90, 0x63, 0x3b, 0x68, 0xc4, 0xb3, 0x9f, 0xa3, 0xe1, 0x74, 0x8e, 0xf9,
+  0x45, 0x28, 0xb8, 0xfd, 0x23, 0xed, 0x3c, 0x3f, 0xf1, 0xb3, 0xdb, 0xc3,
+  0x37, 0x29, 0x9f, 0xb7, 0x8f, 0x03, 0x9b, 0xfa, 0xa9, 0x28, 0x0c, 0x02,
+  0x75, 0x1b, 0x1d, 0xcc, 0x6e, 0x39, 0xff, 0x6e, 0xa6, 0x7f, 0xf2, 0x7c,
+  0x8e, 0x32, 0x94, 0x2a, 0xc5, 0x4c, 0xe3, 0x89, 0x54, 0x27, 0xff, 0x2e,
+  0x25, 0xa5, 0xe3, 0xb0, 0x21, 0x5f, 0x70, 0x2a, 0x20, 0x0f, 0x10, 0x6f,
+  0x05, 0x5f, 0x5a, 0x5e, 0xc7, 0x40, 0xd3, 0x17, 0x7c, 0xe4, 0x1f, 0x73,
+  0x67, 0xde, 0xba, 0x51, 0xf4, 0x15, 0xfb, 0x38, 0x8b, 0x24, 0x00, 0x82,
+  0xd5, 0x8b, 0x4f, 0x4a, 0xfa, 0xf1, 0x66, 0xc4, 0x02, 0x45, 0x31, 0x72,
+  0x33, 0x69, 0xa5, 0xc3, 0xb8, 0x39, 0xb9, 0x6f, 0xea, 0x93, 0xc3, 0xb8,
+  0x2c, 0xbb, 0x9d, 0xa6, 0x62, 0xa9, 0x13, 0x51, 0x6b, 0x2a, 0x01, 0x44,
+  0xa5, 0x8c, 0x50, 0x2e, 0xcc, 0x59, 0x62, 0x39, 0xfe, 0x79, 0x08, 0xac,
+  0x62, 0x96, 0x63, 0x34, 0x65, 0x12, 0x81, 0x23, 0x09, 0xdc, 0xe1, 0x7e,
+  0xd4, 0x87, 0xd7, 0xc4, 0x9a, 0x13, 0x37, 0xd4, 0xb1, 0x98, 0xf4, 0x6c,
+  0x88, 0x63, 0xbe, 0xa3, 0x6c, 0x13, 0xdc, 0x97, 0x96, 0x28, 0x09, 0x29,
+  0x74, 0x5b, 0x78, 0x97, 0xa3, 0x5d, 0x59, 0xdd, 0xfa, 0x14, 0x38, 0xbf,
+  0x71, 0xfc, 0xfe, 0x2d, 0x57, 0x39, 0x41, 0x05, 0xeb, 0x8b, 0xf3, 0x83,
+  0x77, 0xe3, 0x37, 0x62, 0x1a, 0xbf, 0xc8, 0x83, 0xc2, 0xd8, 0xea, 0x57,
+  0x30, 0xff, 0xb1, 0x43, 0x8c, 0xbb, 0x93, 0xd2, 0x1b, 0x16, 0x5a, 0xaf,
+  0x55, 0xb3, 0x07, 0x4d, 0xe8, 0x7d, 0x29, 0xb9, 0xcd, 0xab, 0xc1, 0x43,
+  0xdb, 0x1c, 0x6f, 0x39, 0x41, 0xa8, 0x0c, 0xcb, 0xb3, 0xf9, 0xca, 0xf5,
+  0x06, 0x12, 0xad, 0x0f, 0xf1, 0xb2, 0x1c, 0xda, 0x60, 0xec, 0x53, 0xb9,
+  0x7b, 0xd7, 0xe2, 0x92, 0x1e, 0x92, 0xaa, 0x38, 0xd4, 0xa2, 0x35, 0x41,
+  0x31, 0x3a, 0x67, 0x4e, 0x95, 0xbb, 0x57, 0x51, 0xfd, 0x5c, 0xe3, 0x61,
+  0x0a, 0xa8, 0x35, 0xbd, 0xf9, 0x87, 0xdd, 0xad, 0xee, 0xe6, 0x2f, 0x7e,
+  0x69, 0xf3, 0xdd, 0x63, 0x37, 0xdd, 0xcc, 0x67, 0x17, 0x6d, 0xfe, 0x61,
+  0x6f, 0xeb, 0xc1, 0x19, 0x85, 0x09, 0x92, 0xbe, 0x4f, 0x7a, 0x83, 0x07,
+  0x1b, 0xbd, 0x92, 0x63, 0xe6, 0x64, 0x26, 0x17, 0xa1, 0x13, 0x40, 0x0f,
+  0xd7, 0xb0, 0x3b, 0x38, 0x82, 0xdb, 0x49, 0xea, 0xde, 0xf1, 0xa6, 0x89,
+  0x26, 0xc7, 0xff, 0xfb, 0x28, 0x44, 0x94, 0xcc, 0xfa, 0x55, 0x78, 0x45,
+  0x31, 0x50, 0x40, 0x99, 0x8f, 0xd0, 0xf7, 0xde, 0x03, 0x7d, 0xfb, 0xd9,
+  0x05, 0x66, 0x09, 0xf6, 0x62, 0x73, 0x18, 0x9c, 0x01, 0x63, 0x6b, 0x3f,
+  0x1b, 0xbe, 0xe2, 0xfa, 0xfa, 0xfe, 0x2e, 0x8e, 0xdf, 0x1e, 0x31, 0x80,
+  0xf6, 0xeb, 0x63, 0xc6, 0xa1, 0x1b, 0x2b, 0x12, 0xa4, 0x59, 0x20, 0x1c,
+  0x38, 0x6f, 0x58, 0x38, 0x45, 0xdc, 0xbb, 0x2e, 0xda, 0xcc, 0x71, 0x0e,
+  0xb7, 0x13, 0xdc, 0xb5, 0x86, 0x43, 0x97, 0x96, 0x74, 0x79, 0x7c, 0x39,
+  0x7c, 0x9b, 0xcf, 0xa0, 0x25, 0x0f, 0xc7, 0x08, 0x15, 0xa4, 0xb7, 0xe8,
+  0xc3, 0xf7, 0xd9, 0xa2, 0xf6, 0xf1, 0xa8, 0x23, 0x69, 0x77, 0x63, 0x5d,
+  0x7d, 0x9e, 0xbf, 0x6d, 0x0f, 0x87, 0x3c, 0x98, 0xa1, 0x84, 0x75, 0xa9,
+  0x73, 0xa7, 0x06, 0xd5, 0x61, 0xac, 0x85, 0x16, 0x28, 0x9d, 0xdf, 0x4b,
+  0x20, 0x42, 0xec, 0xc3, 0xc7, 0x7c, 0x22, 0xe7, 0x15, 0x27, 0x93, 0x79,
+  0x13, 0x9f, 0x18, 0xf1, 0x36, 0x42, 0x1c, 0x53, 0x28, 0x52, 0xc9, 0x9d,
+  0x8f, 0x7f, 0xd2, 0xf2, 0xcd, 0xf9, 0xf2, 0x1e, 0xb3, 0xbc, 0xab, 0x85,
+  0x56, 0x74, 0xfa, 0x57, 0xff, 0x26, 0xef, 0xd4, 0x2a, 0x52, 0x29, 0xdc,
+  0x74, 0x40, 0x81, 0xfa, 0x89, 0x16, 0x70, 0x3a, 0x2d, 0x82, 0xeb, 0x4a,
+  0x87, 0x6d, 0x85, 0xee, 0x02, 0x8c, 0xd3, 0x00, 0x92, 0xb5, 0x3e, 0xce,
+  0x10, 0x0f, 0x36, 0xe7, 0x2c, 0xd8, 0xd7, 0xb9, 0x73, 0x8e, 0x11, 0xdb,
+  0x59, 0xd6, 0x0b, 0x24, 0x27, 0x91, 0xe5, 0x7b, 0x4b, 0x3a, 0x7f, 0x7f,
+  0xd8, 0x47, 0x89, 0x86, 0x34, 0xeb, 0x98, 0xcc, 0xf0, 0x97, 0xcf, 0xa6,
+  0xe5, 0x7a, 0x8d, 0x7a, 0x97, 0x8c, 0x89, 0xc1, 0x7e, 0xac, 0x9e, 0x0c,
+  0x40, 0x20, 0x63, 0x84, 0xb8, 0xe8, 0x82, 0x60, 0xbe, 0x66, 0x8a, 0xa4,
+  0x28, 0xd5, 0x2e, 0x32, 0xd6, 0x19, 0xc9, 0xc5, 0x2a, 0xc9, 0x8c, 0x74,
+  0xb5, 0x9c, 0x21, 0x28, 0x43, 0xc2, 0x51, 0xff, 0x9d, 0xf1, 0xb1, 0x8b,
+  0xfb, 0x68, 0x77, 0x6f, 0x10, 0xed, 0xed, 0xec, 0xee, 0x75, 0xcc, 0xa1,
+  0xf7, 0xef, 0x1c, 0x14, 0xb5, 0x87, 0xaf, 0x7b, 0x9f, 0x3a, 0x0b, 0x9f,
+  0xda, 0x80, 0x9b, 0x44, 0x93, 0x80, 0x89, 0xf9, 0xb0, 0x7f, 0x16, 0x98,
+  0xcc, 0xa8, 0x9a, 0x0c, 0x64, 0x3b, 0x5c, 0x5b, 0x62, 0x24, 0xb4, 0x6a,
+  0x9b, 0xae, 0x8a, 0xd8, 0x0c, 0x45, 0x75, 0xa4, 0x70, 0x2d, 0x22, 0x5f,
+  0x9c, 0xa5, 0x34, 0x2e, 0x50, 0x4a, 0xb4, 0xbe, 0x47, 0x69, 0x65, 0xdb,
+  0xc2, 0xa1, 0x35, 0xbc, 0x37, 0x44, 0xef, 0xaf, 0x8f, 0x0f, 0x2f, 0x0c,
+  0xfa, 0xf0, 0x92, 0x85, 0xa7, 0xe2, 0xfe, 0xd3, 0xea, 0x32, 0x3e, 0xf8,
+  0xcc, 0x6c, 0xff, 0x3a, 0x21, 0x31, 0x3a, 0x9b, 0xac, 0xae, 0xf6, 0xff,
+  0x12, 0x17, 0x57, 0x79, 0xf6, 0xd8, 0xf3, 0x33, 0xe4, 0x96, 0xed, 0x13,
+  0x87, 0xda, 0x7d, 0xb1, 0xfb, 0x44, 0x12, 0x17, 0x52, 0xd4, 0x06, 0x62,
+  0x06, 0xd1, 0x5f, 0xf4, 0x05, 0x6b, 0x03, 0x19, 0x13, 0x0e, 0x60, 0x23,
+  0x9b, 0xf5, 0xe5, 0xba, 0x8f, 0xc3, 0x67, 0x67, 0xfa, 0xac, 0x64, 0xa1,
+  0xf7, 0x37, 0xa4, 0x4c, 0x4a, 0x9f, 0x33, 0x36, 0x57, 0xcb, 0x7e, 0x1d,
+  0x2d, 0xfe, 0x91, 0xb9, 0x72, 0x17, 0xae, 0x0c, 0xe5, 0xa1, 0xc3, 0xc0,
+  0x47, 0x32, 0x51, 0x91, 0xc4, 0x37, 0xbe, 0x8c, 0xb2, 0x07, 0xe2, 0x30,
+  0x97, 0xc7, 0xf9, 0x9b, 0x43, 0x01, 0x33, 0xb5, 0xd4, 0x29, 0x2c, 0x75,
+  0xe4, 0x4c, 0x53, 0x5b, 0x3c, 0xca, 0x47, 0xfa, 0xe7, 0xdc, 0x86, 0xfd,
+  0xd9, 0xe4, 0x13, 0x1e, 0xa2, 0x73, 0x27, 0xb8, 0x71, 0x07, 0xf5, 0x2a,
+  0x3c, 0xac, 0xa8, 0xa1, 0x94, 0x88, 0xd5, 0x4c, 0xde, 0x94, 0x9a, 0xb4,
+  0xe2, 0x71, 0xe0, 0xa1, 0x59, 0x25, 0x6a, 0xb3, 0xee, 0xd0, 0xb8, 0xb9,
+  0xde, 0xeb, 0xeb, 0x83, 0xb3, 0x40, 0xd1, 0x85, 0x22, 0xe9, 0x8d, 0x7a,
+  0xfc, 0x1c, 0x2b, 0x3a, 0x28, 0xc9, 0xae, 0x85, 0x99, 0x06, 0x5e, 0x45,
+  0xa9, 0xc0, 0x27, 0x59, 0x36, 0x42, 0x80, 0x7c, 0xae, 0xf7, 0x09, 0xec,
+  0x4f, 0x28, 0x6c, 0x30, 0x9f, 0xc5, 0x70, 0x84, 0xea, 0x2d, 0x04, 0x99,
+  0x0b, 0x6d, 0xa5, 0x1a, 0x0d, 0x45, 0x7b, 0xf3, 0x31, 0xd2, 0x24, 0x0e,
+  0xcd, 0x56, 0xd1, 0xd2, 0x23, 0x78, 0x8c, 0x13, 0x94, 0xef, 0x6d, 0x02,
+  0xc2, 0x9f, 0x69, 0xf0, 0x71, 0x79, 0x43, 0xac, 0x54, 0x1c, 0xf8, 0xd4,
+  0x7b, 0xaa, 0x2e, 0x70, 0x36, 0xfa, 0xa4, 0x12, 0x48, 0xc3, 0xe6, 0x27,
+  0x40, 0x22, 0xd5, 0x36, 0x4c, 0xae, 0x20, 0xd6, 0x38, 0xe7, 0x65, 0x22,
+  0x00, 0x86, 0xd1, 0xc5, 0x5d, 0x2e, 0x2a, 0x46, 0x69, 0xe1, 0xb5, 0x12,
+  0x8a, 0x5a, 0xae, 0x52, 0x91, 0x22, 0x69, 0xf3, 0xc0, 0x0f, 0x82, 0x82,
+  0xb2, 0x3d, 0x67, 0xf9, 0x7a, 0xed, 0xfc, 0x9e, 0xe3, 0xd7, 0xdf, 0x46,
+  0x9c, 0x5a, 0xcf, 0x7d, 0x1c, 0x32, 0xb4, 0x3f, 0x87, 0x30, 0x2c, 0xa0,
+  0xfd, 0x7d, 0xbd, 0xe2, 0xf3, 0x7e, 0x78, 0x1d, 0x2f, 0x59, 0x01, 0xda,
+  0xdd, 0x61, 0x73, 0xc9, 0xf7, 0x96, 0xa4, 0xc7, 0x07, 0xd5, 0x0a, 0xde,
+  0x97, 0xbd, 0xc0, 0x92, 0x32, 0xe3, 0x7a, 0xf5, 0xac, 0x01, 0xd5, 0x8d,
+  0xb4, 0x74, 0x7d, 0x96, 0xdb, 0x02, 0xe8, 0x5f, 0x12, 0x69, 0x14, 0xe5,
+  0xec, 0x66, 0x7b, 0x4a, 0xff, 0x3c, 0xd9, 0xd9, 0x06, 0xa6, 0x66, 0x05,
+  0x9b, 0x26, 0xd3, 0xe4, 0xde, 0xde, 0xb3, 0x67, 0x83, 0xa8, 0xc7, 0x56,
+  0x46, 0xeb, 0x80, 0x8f, 0x04, 0x9d, 0xac, 0x5e, 0x57, 0x65, 0xdd, 0xed,
+  0xe2, 0x72, 0xca, 0xff, 0xe3, 0xd7, 0xac, 0xa0, 0xe4, 0x85, 0x66, 0xdd,
+  0x60, 0x1d, 0xb2, 0x10, 0x26, 0x47, 0xc8, 0x8a, 0xbf, 0x3b, 0x76, 0x76,
+  0x24, 0x76, 0x1a, 0x2d, 0x93, 0x7c, 0x69, 0xde, 0xe1, 0x85, 0x96, 0x0a,
+  0x41, 0xf7, 0x81, 0x4b, 0x0d, 0xfe, 0x7c, 0x09, 0x87, 0x53, 0x3c, 0x84,
+  0x72, 0x35, 0x19, 0x6a, 0x62, 0xb0, 0x68, 0x95, 0x29, 0x9d, 0x5c, 0xfa,
+  0x73, 0x6e, 0xe6, 0xfa, 0x16, 0x47, 0xfe, 0x2a, 0xea, 0x29, 0x6d, 0xf1,
+  0x8f, 0x11, 0x9c, 0xbb, 0xc9, 0x94, 0xa7, 0x91, 0xbf, 0xd2, 0x3f, 0xfe,
+  0xed, 0xdf, 0xa8, 0xd9, 0x7f, 0xe3, 0x56, 0x5e, 0xfd, 0xa1, 0xac, 0xae,
+  0x83, 0x67, 0x7a, 0x4a, 0xf0, 0xc7, 0xde, 0xb5, 0x8d, 0x70, 0x35, 0x20,
+  0xce, 0x22, 0x7f, 0xed, 0xed, 0x89, 0x72, 0xe4, 0x41, 0x30, 0xbf, 0x14,
+  0x99, 0x85, 0x62, 0x24, 0x75, 0xd1, 0x22, 0x5f, 0xb1, 0xdb, 0x39, 0xe1,
+  0x8c, 0x74, 0xba, 0x48, 0x00, 0x28, 0xb8, 0x65, 0x22, 0xc6, 0xd1, 0xbb,
+  0xef, 0x8e, 0xcf, 0x4f, 0xdf, 0xbd, 0x3d, 0x7a, 0x77, 0x11, 0x7d, 0x77,
+  0x70, 0x7e, 0x7c, 0xf0, 0xd5, 0x89, 0x26, 0xbe, 0xf3, 0x14, 0x38, 0xc8,
+  0x47, 0x64, 0xef, 0x06, 0x20, 0x6c, 0x90, 0x88, 0xd4, 0x59, 0x46, 0xa4,
+  0x51, 0x20, 0xf9, 0x83, 0xa2, 0x99, 0x43, 0x13, 0xf9, 0x80, 0x8a, 0x48,
+  0x03, 0x16, 0x3e, 0x3f, 0x58, 0x71, 0x24, 0x56, 0x9e, 0xee, 0x83, 0x54,
+  0x6a, 0x8e, 0x3f, 0x62, 0x2a, 0x35, 0xfe, 0xe4, 0xcb, 0x02, 0xba, 0x3a,
+  0x1b, 0x5f, 0x4b, 0x36, 0xbe, 0x15, 0x1d, 0xb1, 0x57, 0x35, 0x33, 0x0c,
+  0x76, 0x37, 0x37, 0x86, 0x83, 0x93, 0x13, 0xdf, 0xd5, 0xc3, 0xf5, 0x68,
+  0x14, 0x89, 0x49, 0x92, 0xb7, 0xd0, 0x28, 0x3b, 0x06, 0xaf, 0x72, 0x0f,
+  0xcd, 0x9e, 0xdd, 0x87, 0x28, 0xec, 0xdc, 0x19, 0x6d, 0xc7, 0xa6, 0x40,
+  0x68, 0xb0, 0x97, 0x98, 0x0e, 0x50, 0x5a, 0xde, 0x0c, 0xa2, 0xfe, 0x1f,
+  0xfa, 0x5a, 0x52, 0x1c, 0xb8, 0xc1, 0x52, 0xed, 0x66, 0xcb, 0x0f, 0xea,
+  0xdd, 0xa9, 0x1f, 0x93, 0x3a, 0x3e, 0xdd, 0x00, 0xdc, 0x8b, 0xde, 0x6d,
+  0x5d, 0x9a, 0x3c, 0x83, 0x78, 0x51, 0xff, 0xb8, 0x96, 0x84, 0x70, 0xc8,
+  0x00, 0x4a, 0xa3, 0xec, 0xd8, 0xea, 0x7c, 0x17, 0x5a, 0x5b, 0x3c, 0x0d,
+  0xe0, 0xa1, 0x31, 0xd7, 0x8c, 0x4d, 0x1d, 0xae, 0x4c, 0x97, 0x59, 0x03,
+  0x69, 0xa9, 0xd9, 0xa6, 0xa7, 0xee, 0xc4, 0x55, 0xa9, 0x1c, 0x14, 0x54,
+  0xf5, 0x71, 0xdb, 0xaa, 0xde, 0xc0, 0xc7, 0xc8, 0xf9, 0x00, 0x45, 0x3a,
+  0x53, 0xb8, 0xc1, 0x4e, 0xaa, 0x18, 0xc1, 0x35, 0x75, 0x7e, 0x08, 0x74,
+  0xf6, 0x8c, 0xeb, 0x33, 0xfa, 0xaa, 0x1a, 0x88, 0x1d, 0x26, 0x2e, 0x52,
+  0x70, 0x42, 0x5e, 0xa6, 0x42, 0x08, 0xe2, 0x71, 0x21, 0xa3, 0xc7, 0x57,
+  0xb9, 0xc9, 0xdf, 0xb1, 0x73, 0x9a, 0xbb, 0xda, 0x63, 0x81, 0x4c, 0xef,
+  0x30, 0xc4, 0x9c, 0xc9, 0x12, 0xee, 0x75, 0x73, 0x10, 0x70, 0x78, 0x19,
+  0x6f, 0xb9, 0xd5, 0x92, 0x2e, 0x83, 0x2c, 0x6d, 0x9f, 0xbd, 0xc0, 0xbc,
+  0x44, 0x82, 0xf4, 0x0d, 0xd4, 0x0b, 0x40, 0x6a, 0x96, 0xd5, 0x8d, 0x40,
+  0x47, 0x0c, 0x8b, 0x1f, 0x44, 0x93, 0x1a, 0xb3, 0x8a, 0x26, 0xcd, 0x76,
+  0x4d, 0xa7, 0x67, 0xce, 0x09, 0x64, 0xc6, 0x89, 0xe2, 0x68, 0x92, 0x5e,
+  0x09, 0x3a, 0x00, 0xa7, 0xa2, 0x33, 0x95, 0x00, 0xec, 0x8d, 0x14, 0x7b,
+  0xde, 0x2a, 0x40, 0xb9, 0x41, 0x76, 0xbf, 0xce, 0xe7, 0x21, 0xde, 0x98,
+  0xcd, 0xa4, 0xd4, 0xaa, 0x6a, 0x66, 0xfa, 0x84, 0xeb, 0x63, 0xc5, 0xeb,
+  0x68, 0xd1, 0x68, 0x0a, 0x54, 0xae, 0xb1, 0x79, 0x6c, 0x53, 0x07, 0x6a,
+  0x62, 0x86, 0x4c, 0x20, 0xcb, 0xaa, 0xc6, 0x3a, 0x58, 0xdc, 0x32, 0x73,
+  0x0b, 0xd8, 0xd1, 0xb8, 0xe2, 0xe3, 0xa6, 0x43, 0x1a, 0xe7, 0x56, 0xa6,
+  0x82, 0xd5, 0xca, 0x44, 0x2f, 0x1e, 0xe5, 0x7a, 0x69, 0x20, 0xdd, 0x2c,
+  0x45, 0xd1, 0x22, 0x9a, 0xe0, 0x41, 0xd3, 0x4a, 0x6d, 0x06, 0x8c, 0x27,
+  0x23, 0x12, 0x91, 0xc7, 0x44, 0x81, 0xd4, 0xbf, 0x86, 0xae, 0xaa, 0x99,
+  0xfa, 0x9d, 0xb7, 0x7c, 0xdc, 0x81, 0x48, 0x01, 0x4c, 0xad, 0x53, 0xad,
+  0x2b, 0x09, 0x0f, 0x3d, 0x17, 0xc5, 0x04, 0x34, 0x54, 0xcd, 0xf6, 0x18,
+  0x59, 0xbe, 0xcd, 0x7c, 0x1e, 0x40, 0x8d, 0x8b, 0x39, 0x22, 0x6e, 0xc9,
+  0x1e, 0xec, 0x1c, 0x92, 0x34, 0x54, 0x8d, 0xfc, 0x11, 0x58, 0xe2, 0x60,
+  0x22, 0x1a, 0x53, 0xce, 0xd2, 0x59, 0xc3, 0xa4, 0x19, 0x30, 0x34, 0xf3,
+  0x8e, 0x87, 0x17, 0x93, 0x56, 0xd6, 0x48, 0xe3, 0x85, 0xc8, 0x8e, 0x9e,
+  0xfa, 0x16, 0xf7, 0x12, 0x75, 0xb8, 0xb1, 0x71, 0xf8, 0x7e, 0x7c, 0x71,
+  0xfa, 0x36, 0x3a, 0x7d, 0x7f, 0x71, 0xf6, 0xfe, 0x42, 0x6f, 0xae, 0x89,
+  0xc4, 0x6c, 0x4b, 0xe4, 0x82, 0x08, 0x01, 0xb6, 0x99, 0x0b, 0xf5, 0xef,
+  0x23, 0xc4, 0x24, 0x07, 0xc0, 0x60, 0x80, 0x2d, 0xe4, 0x72, 0xb2, 0x80,
+  0xba, 0x25, 0xc8, 0xc5, 0x58, 0xf2, 0x3b, 0x5a, 0x72, 0xe4, 0xd3, 0xc2,
+  0x90, 0x67, 0x29, 0x5e, 0x50, 0x7b, 0xec, 0xac, 0xd5, 0xab, 0xd6, 0xdc,
+  0xd7, 0xd5, 0x18, 0x38, 0xe7, 0xeb, 0x58, 0x4e, 0x61, 0xf1, 0x4c, 0xb1,
+  0xed, 0x78, 0xd3, 0x4f, 0x18, 0xd2, 0xa9, 0xa5, 0x37, 0xcd, 0x00, 0x6d,
+  0x51, 0xb5, 0x08, 0x35, 0xaa, 0x27, 0x16, 0x86, 0xf9, 0x8d, 0x55, 0x4e,
+  0x33, 0xbc, 0x76, 0x11, 0xf1, 0x1c, 0x45, 0x84, 0x48, 0x40, 0x09, 0xa0,
+  0xe0, 0x90, 0x3b, 0xd1, 0x18, 0x48, 0x0f, 0x64, 0x97, 0x45, 0xeb, 0x96,
+  0xbd, 0x8b, 0xfa, 0xdf, 0x27, 0x61, 0x83, 0xbf, 0xff, 0x0f, 0x4e, 0xdb,
+  0xfc, 0x60, 0x9f, 0xfc, 0x5d, 0xba, 0xfc, 0x29, 0xeb, 0x23, 0x80, 0xae,
+  0xee, 0x29, 0xff, 0xf6, 0xe8, 0xfc, 0xab, 0xa3, 0xf3, 0xd3, 0x31, 0xf8,
+  0x81, 0x99, 0xbb, 0xda, 0xb4, 0x7e, 0x93, 0x14, 0x93, 0xa4, 0xc8, 0xb5,
+  0xa2, 0x96, 0xfd, 0xf5, 0x6c, 0xfb, 0xeb, 0xf1, 0xf8, 0xe0, 0xec, 0xd8,
+  0xd5, 0xac, 0x71, 0x09, 0x64, 0xa2, 0x22, 0x65, 0x92, 0xe2, 0xc8, 0xf3,
+  0xb7, 0x57, 0x88, 0x2e, 0xa6, 0x37, 0x12, 0x58, 0xdc, 0xf2, 0x49, 0x9b,
+  0x5d, 0x9d, 0x9d, 0xd1, 0x9a, 0x57, 0xc8, 0x0d, 0x1b, 0x26, 0x54, 0x88,
+  0x3b, 0x2f, 0x00, 0xf1, 0xec, 0x0b, 0x18, 0xb8, 0x08, 0xbc, 0x9b, 0x62,
+  0x32, 0x24, 0x6a, 0xbf, 0xb1, 0x12, 0xce, 0x92, 0x07, 0x41, 0xac, 0x52,
+  0x02, 0xa4, 0xbd, 0xad, 0x81, 0x64, 0xba, 0xb4, 0xda, 0xbe, 0xe1, 0xf3,
+  0xc1, 0xf5, 0x54, 0xe6, 0x23, 0xe1, 0xee, 0x72, 0xa0, 0x2c, 0xea, 0x95,
+  0x59, 0xec, 0x43, 0x38, 0x15, 0xd4, 0x9b, 0x2b, 0x82, 0x28, 0xf6, 0x2e,
+  0xfa, 0xe4, 0xa9, 0x03, 0xec, 0x0a, 0x2b, 0x8a, 0x5f, 0x92, 0x00, 0xbe,
+  0xbc, 0x9b, 0xe9, 0x25, 0x02, 0xbc, 0xea, 0x4c, 0xdc, 0x13, 0xc2, 0xc3,
+  0x9b, 0x0e, 0x2a, 0x2e, 0xd4, 0x88, 0x84, 0x0d, 0x0d, 0x47, 0x8f, 0x26,
+  0xf3, 0x38, 0xbb, 0xc1, 0x6d, 0x86, 0xfb, 0x89, 0x55, 0x4e, 0x83, 0xa1,
+  0xe2, 0x02, 0x9a, 0xf0, 0x47, 0x2a, 0x32, 0x04, 0x84, 0xc0, 0x39, 0x33,
+  0xb7, 0x7b, 0xb1, 0xe5, 0x3b, 0xb4, 0xad, 0xc0, 0xf3, 0x86, 0xe3, 0xe4,
+  0x17, 0x81, 0x4d, 0x47, 0x47, 0x27, 0x74, 0x31, 0xb9, 0x24, 0x13, 0xa8,
+  0xe8, 0xc9, 0x9c, 0x4d, 0xc1, 0x16, 0x11, 0x24, 0x79, 0x95, 0x29, 0x18,
+  0x99, 0x70, 0x0f, 0x83, 0x52, 0x87, 0xff, 0x08, 0xe4, 0x82, 0xf4, 0xd1,
+  0xd2, 0x15, 0x1c, 0x51, 0xce, 0x2d, 0x4c, 0x0c, 0x38, 0xa1, 0xbe, 0xfe,
+  0x48, 0x58, 0x09, 0x47, 0xc3, 0xed, 0x0e, 0x7d, 0x3c, 0x90, 0x2b, 0x0d,
+  0x26, 0x83, 0xf0, 0x62, 0xa9, 0xf3, 0x30, 0xd6, 0xb2, 0x5b, 0xd6, 0x6e,
+  0x93, 0xbc, 0xde, 0x65, 0x04, 0x10, 0x78, 0xb3, 0x99, 0xfa, 0x3b, 0x1c,
+  0x32, 0x90, 0x85, 0x2c, 0xd7, 0xc3, 0x84, 0x6d, 0xe0, 0x12, 0x0d, 0xc0,
+  0xc6, 0xdb, 0x79, 0x65, 0x4e, 0x43, 0x84, 0xb8, 0xea, 0x0d, 0x5c, 0xcd,
+  0xc0, 0x72, 0x8a, 0x1a, 0x68, 0x6d, 0x18, 0x9d, 0x2b, 0xe0, 0x15, 0xb0,
+  0x0d, 0x4a, 0xbe, 0x06, 0xb4, 0x18, 0x27, 0xdf, 0x0e, 0xdf, 0xf1, 0x75,
+  0x91, 0x0f, 0x27, 0x2b, 0xe8, 0x65, 0x41, 0xc9, 0x2e, 0xc9, 0xe1, 0x24,
+  0x75, 0x4d, 0x70, 0xd5, 0xf0, 0x3d, 0xfb, 0xa3, 0x90, 0x1d, 0x2f, 0x2e,
+  0x2a, 0xa4, 0x4b, 0xd6, 0x31, 0x77, 0x1c, 0xd2, 0x8a, 0xe4, 0x20, 0xf8,
+  0x5a, 0xc2, 0x6e, 0x82, 0xba, 0xc9, 0x2e, 0x5a, 0x30, 0xd3, 0x82, 0xaf,
+  0xf0, 0xac, 0xd4, 0x23, 0xae, 0x2b, 0x07, 0x7d, 0x7f, 0x01, 0x31, 0x21,
+  0x51, 0x40, 0x78, 0x0b, 0xa5, 0xb6, 0xc4, 0x8d, 0xdb, 0x8a, 0x8b, 0x4c,
+  0x09, 0x48, 0x44, 0x3c, 0x97, 0x8a, 0x1d, 0x6b, 0xaf, 0x12, 0x39, 0x4c,
+  0xd5, 0xc5, 0xc5, 0x9f, 0xcf, 0x8e, 0x5e, 0xd9, 0x9b, 0x0f, 0xed, 0x99,
+  0x60, 0xa7, 0x21, 0x66, 0x26, 0x51, 0xac, 0xd2, 0xa0, 0x4c, 0x36, 0x11,
+  0xd9, 0xb0, 0x32, 0x5f, 0xbe, 0x74, 0x33, 0x8c, 0x7e, 0x78, 0x7d, 0x3c,
+  0x3e, 0x3b, 0x39, 0x3d, 0x7c, 0xf5, 0xf2, 0x07, 0x63, 0xc9, 0x5f, 0xb0,
+  0x8b, 0x40, 0xe4, 0x34, 0xf7, 0x99, 0xc7, 0x76, 0xd0, 0xf7, 0xde, 0x1d,
+  0x7d, 0xff, 0x81, 0xb4, 0x83, 0x57, 0x8c, 0xf0, 0x3e, 0xb8, 0x8d, 0xe7,
+  0xfa, 0x12, 0xab, 0x58, 0x1d, 0xb2, 0xdd, 0xa8, 0x0e, 0xc6, 0xd7, 0x5c,
+  0x58, 0x57, 0xa9, 0xd4, 0xe7, 0x29, 0xdc, 0x5b, 0x18, 0x5d, 0x50, 0x94,
+  0x2a, 0xae, 0xa5, 0xd5, 0x76, 0xd4, 0x15, 0xf6, 0xd7, 0x7f, 0xbf, 0x92,
+  0x98, 0x4a, 0x0e, 0x21, 0x08, 0x3d, 0xf3, 0x88, 0x5b, 0xd5, 0x6f, 0x7c,
+  0x3c, 0xaf, 0x22, 0x29, 0x17, 0x1c, 0xc0, 0xe2, 0xa0, 0x28, 0xb5, 0x58,
+  0x35, 0x7c, 0xde, 0x8a, 0x57, 0xa9, 0x20, 0x4c, 0x1c, 0x42, 0x6b, 0xd1,
+  0xf4, 0xc6, 0xc7, 0x54, 0x84, 0x71, 0x63, 0x89, 0xad, 0x6c, 0x2e, 0x6a,
+  0xf3, 0x9c, 0x1d, 0x9d, 0x8f, 0x8f, 0xc7, 0x17, 0xac, 0x46, 0x69, 0x0d,
+  0x47, 0xb5, 0x41, 0x5b, 0x81, 0x4d, 0x60, 0x36, 0xd4, 0xa1, 0x47, 0xc3,
+  0xba, 0x21, 0xb5, 0x13, 0xed, 0xd8, 0x5c, 0x3d, 0x89, 0x93, 0x6f, 0x00,
+  0xc9, 0x0c, 0x65, 0x41, 0x54, 0x00, 0x74, 0xe3, 0x4b, 0x3b, 0xc0, 0xb9,
+  0x92, 0x46, 0xa3, 0x7c, 0x06, 0x4a, 0xdf, 0x60, 0x77, 0xe6, 0xe9, 0x24,
+  0x28, 0x9a, 0x5d, 0x77, 0x21, 0x73, 0x74, 0x82, 0x82, 0x75, 0x84, 0x47,
+  0xc8, 0xec, 0xe1, 0x3e, 0x33, 0x5a, 0xcb, 0xfa, 0xea, 0xb5, 0xa6, 0x59,
+  0x8d, 0x61, 0xfe, 0xaa, 0x53, 0x54, 0xa1, 0x9c, 0x84, 0xe5, 0xcb, 0xf1,
+  0x69, 0x10, 0x84, 0xaa, 0xf8, 0x4f, 0x80, 0xae, 0x55, 0x96, 0xcd, 0x4c,
+  0x39, 0x95, 0x4c, 0x34, 0x36, 0xb4, 0x90, 0xd4, 0x82, 0xcc, 0x7a, 0xc4,
+  0x09, 0xe9, 0xcc, 0x5a, 0x22, 0x88, 0x8a, 0x8e, 0x57, 0x9c, 0xc2, 0x06,
+  0x90, 0xad, 0x19, 0xcb, 0x5b, 0xb0, 0xc0, 0x85, 0x9d, 0xd9, 0x75, 0xca,
+  0x2b, 0x38, 0x59, 0x85, 0x45, 0xe1, 0xdc, 0xe8, 0xa5, 0x3e, 0x09, 0x16,
+  0x1e, 0x11, 0x92, 0x71, 0x01, 0x14, 0xcb, 0x4a, 0x41, 0xe3, 0x4d, 0xf1,
+  0xd1, 0x70, 0xc7, 0x51, 0x1d, 0xcf, 0xc7, 0xe8, 0xd2, 0x0a, 0x97, 0x3e,
+  0xb4, 0xa2, 0x41, 0x15, 0x49, 0x26, 0xdf, 0x22, 0xb1, 0xb8, 0x25, 0x31,
+  0x33, 0x94, 0xec, 0x70, 0xc8, 0xa6, 0xee, 0x32, 0xe6, 0xa4, 0x23, 0xf6,
+  0x2f, 0x16, 0x8a, 0x95, 0x44, 0xec, 0x8f, 0x2d, 0xcb, 0x28, 0x3d, 0x89,
+  0x9a, 0xcc, 0xec, 0x75, 0x33, 0x1c, 0x3d, 0x1f, 0xc6, 0x2d, 0xcb, 0x1d,
+  0x90, 0x95, 0x98, 0xd7, 0xef, 0xb5, 0x43, 0x97, 0x20, 0x6f, 0x9b, 0x35,
+  0x90, 0x7c, 0xab, 0x18, 0xe9, 0x3d, 0x66, 0xd7, 0x0d, 0xd2, 0x44, 0x4b,
+  0x4d, 0xbe, 0x75, 0xee, 0x69, 0x30, 0xbc, 0x5a, 0xfd, 0x5d, 0x9e, 0x5d,
+  0xcd, 0x35, 0x48, 0xf2, 0xe5, 0x12, 0xc5, 0x94, 0xa6, 0x8a, 0x26, 0x8f,
+  0xa0, 0x5d, 0xd7, 0xa0, 0x5d, 0x22, 0x7e, 0xb1, 0x68, 0x55, 0xdf, 0xbe,
+  0x3f, 0xb9, 0x38, 0x3e, 0x0b, 0xdd, 0x8f, 0xd1, 0xf7, 0xc7, 0x17, 0xdf,
+  0x90, 0xd4, 0x3e, 0x3e, 0x7e, 0xf7, 0xf5, 0x09, 0xfb, 0x78, 0xde, 0xbe,
+  0x3d, 0x78, 0xc7, 0xe8, 0x02, 0xef, 0x10, 0xd9, 0x78, 0x00, 0xc5, 0x81,
+  0xd9, 0x11, 0x2d, 0x31, 0xd3, 0x0e, 0xe7, 0x9d, 0x0f, 0xda, 0xae, 0x86,
+  0xc6, 0xf1, 0x93, 0xfa, 0xca, 0x59, 0x7d, 0x91, 0x36, 0x50, 0x2d, 0x1b,
+  0x9a, 0xc1, 0x3d, 0x1b, 0x76, 0x70, 0x6c, 0x59, 0xd9, 0xe2, 0x85, 0x6e,
+  0xc2, 0xc8, 0x23, 0xc7, 0x51, 0x24, 0x74, 0xb8, 0xd1, 0xe5, 0xee, 0xf6,
+  0xee, 0x0b, 0xec, 0xa8, 0x03, 0xa1, 0x85, 0x1e, 0x43, 0x32, 0x53, 0xa6,
+  0x7a, 0x8d, 0xdc, 0x97, 0xf5, 0x9c, 0x03, 0xea, 0x11, 0x43, 0x42, 0x1c,
+  0x41, 0xee, 0x2d, 0x82, 0xac, 0x71, 0xb2, 0xd2, 0x7c, 0x7e, 0x12, 0x5e,
+  0xa8, 0xa3, 0x5a, 0xf5, 0x31, 0x0b, 0x0f, 0xbc, 0xca, 0x13, 0x7f, 0x72,
+  0x87, 0xa7, 0xd6, 0x8c, 0x99, 0x7f, 0xa1, 0x86, 0xc9, 0xe5, 0x32, 0x64,
+  0xbe, 0x36, 0xa4, 0x2d, 0xd9, 0x72, 0x15, 0x87, 0xd4, 0x7c, 0xb6, 0x2f,
+  0x62, 0xa5, 0x83, 0x59, 0xb6, 0x42, 0x7d, 0xd4, 0x9c, 0xb5, 0xac, 0xa1,
+  0x28, 0x88, 0xc7, 0xd6, 0xb4, 0x26, 0x9d, 0x33, 0xb8, 0xa5, 0x3d, 0x56,
+  0xcb, 0xca, 0x96, 0xfb, 0xee, 0xd4, 0x4c, 0x7b, 0x96, 0xd6, 0xe6, 0x4a,
+  0xc0, 0x79, 0xcf, 0x29, 0x8a, 0xac, 0xe5, 0xf9, 0x28, 0xf9, 0x98, 0xb0,
+  0x93, 0x93, 0x7f, 0xfd, 0xcb, 0xf2, 0x2a, 0xcc, 0x78, 0x93, 0x12, 0xd3,
+  0xcb, 0xae, 0x9d, 0x55, 0x4c, 0x67, 0x11, 0x8b, 0xb4, 0xac, 0x5d, 0x6d,
+  0x04, 0x5a, 0xab, 0x6e, 0x77, 0x5d, 0x87, 0xfa, 0xfd, 0x5e, 0xfb, 0xfb,
+  0x3d, 0x31, 0x3b, 0x1e, 0x9f, 0xdd, 0x3e, 0x77, 0x58, 0xa8, 0x92, 0xc7,
+  0x1d, 0x8a, 0x6f, 0x26, 0x14, 0x30, 0x85, 0xf1, 0xa3, 0x72, 0xe7, 0xc4,
+  0xc2, 0x13, 0xc5, 0xf6, 0xcf, 0x11, 0x64, 0xab, 0x02, 0xf9, 0xa9, 0x78,
+  0x04, 0x66, 0x62, 0x09, 0xfb, 0x45, 0x90, 0x1d, 0xf8, 0x14, 0x5f, 0x57,
+  0xd4, 0x20, 0x7d, 0xff, 0xd4, 0xc5, 0xe2, 0x7b, 0x9e, 0x86, 0x72, 0x6d,
+  0x9a, 0x0d, 0x35, 0x4c, 0x97, 0xb7, 0x56, 0xef, 0x97, 0x7e, 0x7d, 0xee,
+  0x4a, 0xf5, 0x94, 0x35, 0x1f, 0x55, 0x0d, 0x77, 0xd8, 0x98, 0x3f, 0x06,
+  0x87, 0xb0, 0x48, 0xe6, 0x0c, 0x5e, 0xc9, 0x68, 0x8c, 0x2b, 0xa9, 0x07,
+  0x64, 0x07, 0x05, 0x4b, 0x61, 0x60, 0x9e, 0x23, 0x33, 0x16, 0xfc, 0x28,
+  0x60, 0x2e, 0x21, 0xe6, 0xbf, 0xee, 0xfa, 0x8f, 0x7b, 0x3b, 0x3b, 0xbb,
+  0xfb, 0xbb, 0x9f, 0xbf, 0xd8, 0xd9, 0xdf, 0xdd, 0xdd, 0xdd, 0xdb, 0xdf,
+  0xdd, 0xdf, 0xdf, 0xdb, 0xf9, 0x79, 0x9b, 0xed, 0x47, 0xb7, 0x69, 0x72,
+  0x67, 0x8e, 0x29, 0xc9, 0xc5, 0x03, 0x59, 0x4b, 0xdd, 0x76, 0xd5, 0xe0,
+  0x55, 0xcf, 0x35, 0xc9, 0xc7, 0xa1, 0x4a, 0x48, 0xc8, 0xbc, 0x80, 0xc9,
+  0x2d, 0x7d, 0xa6, 0x29, 0xce, 0x60, 0x00, 0x78, 0x8d, 0x51, 0xfd, 0x75,
+  0xc5, 0x33, 0x9d, 0xb0, 0x38, 0x00, 0x99, 0xa6, 0x74, 0x79, 0x7d, 0x57,
+  0xf3, 0x7c, 0x32, 0x41, 0xe6, 0x82, 0x4b, 0x6d, 0x1d, 0x45, 0x8c, 0xaa,
+  0x7a, 0x23, 0x24, 0xa1, 0x9e, 0x03, 0x04, 0x15, 0xca, 0x41, 0xf7, 0xab,
+  0x23, 0x82, 0x97, 0x06, 0x52, 0x4f, 0x73, 0xae, 0x30, 0x30, 0x63, 0xa6,
+  0x44, 0x8b, 0x54, 0xb8, 0x94, 0x97, 0xe8, 0x32, 0xf9, 0x7c, 0x67, 0x7f,
+  0x9f, 0x8b, 0x80, 0xfc, 0x7e, 0x77, 0xa0, 0xf1, 0xa0, 0x61, 0x90, 0xfb,
+  0xc0, 0x5d, 0x4f, 0xd2, 0x06, 0xab, 0x1f, 0xe1, 0x3c, 0xb3, 0xd5, 0x22,
+  0x29, 0x48, 0x11, 0xe1, 0x32, 0xb2, 0x08, 0x88, 0x84, 0xd1, 0x5b, 0xd0,
+  0xd6, 0x00, 0xc8, 0xd2, 0x08, 0xc6, 0xe7, 0x1b, 0x41, 0x50, 0x63, 0x5d,
+  0x12, 0xba, 0xc0, 0x05, 0xf9, 0x29, 0xba, 0xb6, 0x51, 0x08, 0x07, 0x76,
+  0x7c, 0x49, 0x65, 0x91, 0x24, 0x1e, 0xb9, 0x6f, 0x95, 0x33, 0xe0, 0x70,
+  0x65, 0x52, 0xdc, 0x94, 0x1f, 0x17, 0x19, 0x1e, 0x16, 0x93, 0x40, 0xb8,
+  0xd5, 0xfc, 0x9d, 0x1f, 0x83, 0xc9, 0xee, 0x3d, 0xdb, 0xfd, 0x59, 0xc2,
+  0x15, 0xf9, 0x40, 0xf8, 0x55, 0xd3, 0xc2, 0x70, 0xb3, 0x30, 0x43, 0xc3,
+  0x08, 0x69, 0x33, 0x19, 0x5d, 0x8d, 0x4c, 0xaa, 0x50, 0x6b, 0xe3, 0x20,
+  0x0c, 0x1a, 0x17, 0xc4, 0x72, 0x29, 0x59, 0x0c, 0x3d, 0xcd, 0x0c, 0x4a,
+  0x66, 0x10, 0x16, 0x63, 0x66, 0xad, 0xc2, 0x0f, 0xdd, 0x30, 0x47, 0x17,
+  0x07, 0x74, 0x79, 0x7c, 0xdb, 0x56, 0xf4, 0xdf, 0x26, 0xa4, 0x95, 0xf3,
+  0x66, 0x6f, 0xe2, 0x3c, 0xdc, 0x3a, 0x9c, 0x60, 0x5e, 0xbb, 0xa7, 0xd1,
+  0x26, 0xfb, 0x2c, 0x9e, 0x7d, 0xfe, 0xec, 0xe9, 0x96, 0x14, 0x65, 0x90,
+  0xd7, 0x12, 0xce, 0x0f, 0x81, 0x55, 0x52, 0xc1, 0x69, 0xd8, 0x9c, 0xec,
+  0x58, 0xd2, 0xfb, 0xf3, 0x63, 0x39, 0xd2, 0xd7, 0x82, 0x21, 0x20, 0x4a,
+  0x6f, 0x13, 0x57, 0x0e, 0xf7, 0x6d, 0x20, 0x64, 0x2c, 0x52, 0xc6, 0x3c,
+  0x44, 0xee, 0x35, 0x5f, 0x8c, 0x2e, 0xf7, 0x1f, 0x37, 0x2c, 0x1d, 0xd0,
+  0x1c, 0xa5, 0x0a, 0xb5, 0x02, 0x14, 0x06, 0x03, 0x90, 0x44, 0xc6, 0x68,
+  0x55, 0x3a, 0x73, 0x1a, 0x18, 0xeb, 0x41, 0xc2, 0x8f, 0x84, 0xfb, 0x37,
+  0x70, 0xb9, 0xb7, 0xc4, 0xe3, 0x0f, 0xa1, 0x90, 0xc9, 0x90, 0x1e, 0xb4,
+  0xd0, 0x51, 0x1e, 0x71, 0x2d, 0x1b, 0xcd, 0x4b, 0x9b, 0x01, 0xa6, 0x93,
+  0xc1, 0xb9, 0x28, 0x2b, 0x72, 0x4b, 0x28, 0xee, 0xec, 0x0a, 0x96, 0xc5,
+  0xb4, 0x66, 0xf2, 0xd1, 0x5c, 0x7a, 0xe4, 0xb4, 0x23, 0xe4, 0x78, 0x41,
+  0xd7, 0x51, 0x71, 0xaf, 0x12, 0x36, 0xd4, 0x04, 0x57, 0x59, 0xad, 0x11,
+  0x10, 0x20, 0xa8, 0x11, 0x61, 0x24, 0xbd, 0x03, 0x4d, 0x31, 0xa5, 0xb9,
+  0x36, 0x80, 0x1a, 0xdb, 0x1f, 0x2e, 0xec, 0xab, 0x20, 0x5e, 0x26, 0x4c,
+  0x2f, 0xb3, 0xdf, 0xed, 0xb9, 0x20, 0x94, 0x32, 0x6e, 0x4e, 0x6c, 0xcd,
+  0xd0, 0x04, 0x5b, 0x13, 0xe1, 0x53, 0x4e, 0xfb, 0xd9, 0xc4, 0x48, 0xb6,
+  0xb7, 0xb7, 0xd6, 0x8c, 0x46, 0xbf, 0xee, 0xea, 0xfd, 0x0c, 0x98, 0x24,
+  0x41, 0x46, 0x27, 0xed, 0x79, 0xbd, 0x71, 0x5e, 0xda, 0xb4, 0xe4, 0x9d,
+  0x9c, 0x69, 0x5c, 0xac, 0x98, 0x51, 0x4d, 0xbd, 0x92, 0xc1, 0x1b, 0xf3,
+  0xaa, 0x4f, 0x42, 0x43, 0x71, 0x0c, 0x23, 0x4a, 0xea, 0x4b, 0x8b, 0x7b,
+  0x73, 0x14, 0x1d, 0x30, 0x35, 0xd4, 0x3a, 0x0e, 0x86, 0x6c, 0xf6, 0x5c,
+  0x43, 0x40, 0x37, 0x21, 0xd6, 0x99, 0xf3, 0x06, 0xc1, 0x97, 0x26, 0xe6,
+  0x19, 0x24, 0x80, 0x33, 0xf6, 0x4e, 0x12, 0x81, 0x3f, 0x71, 0x9c, 0x33,
+  0x40, 0x36, 0x4e, 0xb3, 0x5a, 0xc9, 0x50, 0x6d, 0x04, 0x8e, 0x6e, 0x37,
+  0x09, 0x80, 0x26, 0x16, 0x06, 0xc6, 0x1b, 0x96, 0x11, 0x04, 0x02, 0x81,
+  0x06, 0xb5, 0x8b, 0x60, 0xed, 0x88, 0x58, 0xbc, 0xad, 0x13, 0x21, 0xaf,
+  0xda, 0x7a, 0x0c, 0x84, 0xe2, 0x25, 0x88, 0x41, 0xe2, 0x6d, 0xe9, 0x90,
+  0x30, 0xc3, 0x38, 0x38, 0x3e, 0xe1, 0xa8, 0xb8, 0x13, 0x52, 0xf1, 0xc6,
+  0x26, 0x2a, 0x21, 0x4a, 0x14, 0xf1, 0x7a, 0x59, 0xca, 0xe2, 0xfa, 0xc0,
+  0x95, 0x1e, 0xb1, 0x64, 0x29, 0xe8, 0x2d, 0xec, 0xdc, 0x13, 0xd5, 0x5f,
+  0x31, 0x02, 0x69, 0xb7, 0x48, 0x5e, 0x2a, 0xc5, 0x68, 0x0b, 0x28, 0x5e,
+  0x06, 0xa9, 0x87, 0x23, 0x15, 0x2a, 0xb5, 0xb0, 0x69, 0x54, 0x3e, 0x2a,
+  0x92, 0x79, 0x72, 0xab, 0xd6, 0x55, 0x01, 0x36, 0xfd, 0x5a, 0x7d, 0x98,
+  0x52, 0xfa, 0xb4, 0xf2, 0xae, 0xd8, 0x9a, 0x9b, 0x94, 0xfb, 0xdc, 0x16,
+  0x4c, 0x18, 0x0f, 0xf5, 0xc1, 0xdd, 0x7b, 0x34, 0x7e, 0x73, 0x19, 0xf3,
+  0x7b, 0x43, 0xd6, 0x71, 0x35, 0xb4, 0xf5, 0x7d, 0xa9, 0x68, 0x0e, 0xcd,
+  0x58, 0x71, 0xb1, 0x15, 0x5a, 0xf1, 0x3c, 0x31, 0xbe, 0x0f, 0x0c, 0x2f,
+  0x59, 0x3c, 0x06, 0x7c, 0xf1, 0x0c, 0xd8, 0x50, 0x2b, 0xc5, 0xe0, 0x49,
+  0x21, 0xe3, 0xca, 0x18, 0x03, 0x49, 0x1c, 0x05, 0x6d, 0xe4, 0x73, 0xfa,
+  0x13, 0xe1, 0x54, 0x12, 0x60, 0x49, 0xcf, 0x32, 0xde, 0x6b, 0x10, 0xd1,
+  0x4a, 0x7f, 0x4a, 0x32, 0x84, 0xfe, 0x85, 0xa6, 0x8a, 0x15, 0x60, 0x85,
+  0x07, 0x72, 0x19, 0xb2, 0xd3, 0xb1, 0x9a, 0x8e, 0xdc, 0xe8, 0xd5, 0xe7,
+  0x2f, 0xe3, 0x7f, 0x6d, 0x2e, 0x69, 0x13, 0x43, 0xf2, 0xc2, 0x56, 0x57,
+  0x76, 0x61, 0x22, 0xb5, 0x0e, 0xbf, 0x5a, 0xb1, 0x33, 0xcc, 0x55, 0xf2,
+  0xe1, 0x51, 0x2c, 0xf8, 0x2a, 0x4a, 0xa4, 0xac, 0xa8, 0x6b, 0x9c, 0x35,
+  0xba, 0x15, 0xed, 0xae, 0xb4, 0x7e, 0x92, 0xdf, 0x71, 0x4d, 0xd4, 0xcb,
+  0xcb, 0x74, 0xca, 0x85, 0x6e, 0x3c, 0x7c, 0x30, 0xb3, 0x78, 0x79, 0x70,
+  0x61, 0x65, 0x98, 0x68, 0x6e, 0xd1, 0x72, 0x35, 0x99, 0xd3, 0x5d, 0x6d,
+  0xd1, 0xec, 0x74, 0xa8, 0xb0, 0x4a, 0xa4, 0x6c, 0xa1, 0x39, 0xf1, 0xe5,
+  0x43, 0xdf, 0x6c, 0x44, 0x50, 0x6b, 0xa1, 0x78, 0x96, 0xc0, 0x17, 0x28,
+  0x0e, 0xcb, 0x61, 0xc6, 0x8b, 0x3c, 0xb3, 0x64, 0x98, 0x55, 0x29, 0x60,
+  0x92, 0x56, 0x55, 0x7e, 0x43, 0x3c, 0x13, 0xe9, 0x5c, 0xd1, 0xdb, 0x55,
+  0x33, 0xc7, 0x1b, 0xe1, 0x64, 0x66, 0xc3, 0xe5, 0xf5, 0xd2, 0x76, 0xda,
+  0xe4, 0x21, 0x11, 0x96, 0x34, 0xfd, 0x02, 0x27, 0xef, 0xec, 0x9b, 0xb3,
+  0x51, 0x74, 0xc4, 0x2d, 0xc9, 0x98, 0x54, 0xce, 0x85, 0x89, 0x86, 0xbe,
+  0xa3, 0xc9, 0x5e, 0xf1, 0xfd, 0x75, 0x5a, 0xf0, 0x5f, 0x68, 0x4d, 0xbf,
+  0x14, 0xab, 0x2c, 0xbe, 0xad, 0xf7, 0x4a, 0x0d, 0x59, 0x90, 0xf5, 0x19,
+  0x7e, 0xa7, 0xa3, 0x42, 0xd2, 0x97, 0xdb, 0x26, 0xdf, 0x43, 0x5e, 0xd4,
+  0xa0, 0x77, 0xe4, 0xcd, 0x88, 0x84, 0x32, 0x88, 0x56, 0xcb, 0x7b, 0xec,
+  0x5f, 0xc0, 0x1b, 0x45, 0xfc, 0x94, 0x06, 0x02, 0xd2, 0x52, 0xf2, 0x73,
+  0xe1, 0x7b, 0x72, 0xae, 0x0a, 0x01, 0x9d, 0x29, 0x12, 0x0d, 0x76, 0xcc,
+  0xd5, 0x4b, 0x2a, 0x06, 0x8d, 0x32, 0x69, 0x1c, 0xd7, 0x40, 0x7d, 0xb3,
+  0x2f, 0x58, 0xeb, 0xe6, 0xb1, 0x90, 0xd0, 0x42, 0x5b, 0x30, 0xda, 0xf8,
+  0xbf, 0x01, 0x87, 0xa5, 0x00, 0x5a, 0xec, 0x78, 0x02, 0x00,
 };
 #define BUF_SIZE 0x10000
 static voidpf zalloc_func(voidpf opaque, unsigned int items, unsigned int size)
 };
 #define BUF_SIZE 0x10000
 static voidpf zalloc_func(voidpf opaque, unsigned int items, unsigned int size)
@@ -7832,5 +8454,9 @@ void hugehelp(void)
   }
   inflateEnd(&z);
 }
   }
   inflateEnd(&z);
 }
+#else /* !USE_MANUAL */
+/* built-in manual is disabled, blank function */
+#include "tool_hugehelp.h"
+void hugehelp(void) {}
 #endif /* USE_MANUAL */
 #endif /* HAVE_LIBZ */
 #endif /* USE_MANUAL */
 #endif /* HAVE_LIBZ */
index 28d44df..442579e 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
index 81b6680..a8ffb8f 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -67,6 +67,8 @@ CURLcode get_libcurl_info(void)
     { "rtsp",   CURLPROTO_RTSP   },
     { "scp",    CURLPROTO_SCP    },
     { "sftp",   CURLPROTO_SFTP   },
     { "rtsp",   CURLPROTO_RTSP   },
     { "scp",    CURLPROTO_SCP    },
     { "sftp",   CURLPROTO_SFTP   },
+    { "smb",    CURLPROTO_SMB    },
+    { "smbs",   CURLPROTO_SMBS   },
     { "smtp",   CURLPROTO_SMTP   },
     { "smtps",  CURLPROTO_SMTPS  },
     { "telnet", CURLPROTO_TELNET },
     { "smtp",   CURLPROTO_SMTP   },
     { "smtps",  CURLPROTO_SMTPS  },
     { "telnet", CURLPROTO_TELNET },
index 8f2fbb7..9a5ceba 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include <signal.h>
 #endif
 
 #include <signal.h>
 #endif
 
+#ifdef USE_NSS
+#include <nspr.h>
+#include <plarenas.h>
+#endif
+
 #define ENABLE_CURLX_PRINTF
 /* use our own printf() functions */
 #include "curlx.h"
 
 #include "tool_cfgable.h"
 #include "tool_convert.h"
 #define ENABLE_CURLX_PRINTF
 /* use our own printf() functions */
 #include "curlx.h"
 
 #include "tool_cfgable.h"
 #include "tool_convert.h"
+#include "tool_msgs.h"
 #include "tool_operate.h"
 #include "tool_panykey.h"
 #include "tool_vms.h"
 #include "tool_main.h"
 #include "tool_operate.h"
 #include "tool_panykey.h"
 #include "tool_vms.h"
 #include "tool_main.h"
+#include "tool_libinfo.h"
 
 /*
  * This is low-level hard-hacking memory leak tracking and similar. Using
 
 /*
  * This is low-level hard-hacking memory leak tracking and similar. Using
@@ -82,17 +89,151 @@ static void main_checkfds(void)
 #endif
 }
 
 #endif
 }
 
+#ifdef CURLDEBUG
+static void memory_tracking_init(void)
+{
+  char *env;
+  /* if CURL_MEMDEBUG is set, this starts memory tracking message logging */
+  env = curlx_getenv("CURL_MEMDEBUG");
+  if(env) {
+    /* use the value as file name */
+    char fname[CURL_MT_LOGFNAME_BUFSIZE];
+    if(strlen(env) >= CURL_MT_LOGFNAME_BUFSIZE)
+      env[CURL_MT_LOGFNAME_BUFSIZE-1] = '\0';
+    strcpy(fname, env);
+    curl_free(env);
+    curl_memdebug(fname);
+    /* this weird stuff here is to make curl_free() get called
+       before curl_memdebug() as otherwise memory tracking will
+       log a free() without an alloc! */
+  }
+  /* if CURL_MEMLIMIT is set, this enables fail-on-alloc-number-N feature */
+  env = curlx_getenv("CURL_MEMLIMIT");
+  if(env) {
+    char *endptr;
+    long num = strtol(env, &endptr, 10);
+    if((endptr != env) && (endptr == env + strlen(env)) && (num > 0))
+      curl_memlimit(num);
+    curl_free(env);
+  }
+}
+#else
+#  define memory_tracking_init() Curl_nop_stmt
+#endif
+
+/*
+ * This is the main global constructor for the app. Call this before
+ * _any_ libcurl usage. If this fails, *NO* libcurl functions may be
+ * used, or havoc may be the result.
+ */
+static CURLcode main_init(struct GlobalConfig *config)
+{
+  CURLcode result = CURLE_OK;
+
+#if defined(__DJGPP__) || defined(__GO32__)
+  /* stop stat() wasting time */
+  _djstat_flags |= _STAT_INODE | _STAT_EXEC_MAGIC | _STAT_DIRSIZE;
+#endif
+
+  /* Initialise the global config */
+  config->showerror = -1;             /* Will show errors */
+  config->errors = stderr;            /* Default errors to stderr */
+
+  /* Allocate the initial operate config */
+  config->first = config->last = malloc(sizeof(struct OperationConfig));
+  if(config->first) {
+    /* Perform the libcurl initialization */
+    result = curl_global_init(CURL_GLOBAL_DEFAULT);
+    if(!result) {
+      /* Get information about libcurl */
+      result = get_libcurl_info();
+
+      if(!result) {
+        /* Get a curl handle to use for all forthcoming curl transfers */
+        config->easy = curl_easy_init();
+        if(config->easy) {
+          /* Initialise the config */
+          config_init(config->first);
+          config->first->easy = config->easy;
+          config->first->global = config;
+        }
+        else {
+          helpf(stderr, "error initializing curl easy handle\n");
+          result = CURLE_FAILED_INIT;
+          free(config->first);
+        }
+      }
+      else {
+        helpf(stderr, "error retrieving curl library information\n");
+        free(config->first);
+      }
+    }
+    else {
+      helpf(stderr, "error initializing curl library\n");
+      free(config->first);
+    }
+  }
+  else {
+    helpf(stderr, "error initializing curl\n");
+    result = CURLE_FAILED_INIT;
+  }
+
+  return result;
+}
+
+static void free_config_fields(struct GlobalConfig *config)
+{
+  Curl_safefree(config->trace_dump);
+
+  if(config->errors_fopened && config->errors)
+    fclose(config->errors);
+  config->errors = NULL;
+
+  if(config->trace_fopened && config->trace_stream)
+    fclose(config->trace_stream);
+  config->trace_stream = NULL;
+
+  Curl_safefree(config->libcurl);
+}
+
+/*
+ * This is the main global destructor for the app. Call this after
+ * _all_ libcurl usage is done.
+ */
+static void main_free(struct GlobalConfig *config)
+{
+  /* Cleanup the easy handle */
+  curl_easy_cleanup(config->easy);
+  config->easy = NULL;
+
+  /* Main cleanup */
+  curl_global_cleanup();
+  convert_cleanup();
+  metalink_cleanup();
+#ifdef USE_NSS
+  if(PR_Initialized()) {
+    /* prevent valgrind from reporting still reachable mem from NSRP arenas */
+    PL_ArenaFinish();
+    /* prevent valgrind from reporting possibly lost memory (fd cache, ...) */
+    PR_Cleanup();
+  }
+#endif
+  free_config_fields(config);
+
+  /* Free the config structures */
+  config_free(config->last);
+  config->first = NULL;
+  config->last = NULL;
+}
+
 /*
 ** curl tool main function.
 */
 int main(int argc, char *argv[])
 {
 /*
 ** curl tool main function.
 */
 int main(int argc, char *argv[])
 {
-  int res;
-  struct Configurable config;
-
-  memset(&config, 0, sizeof(struct Configurable));
-
-  config.errors = stderr; /* default errors to stderr */
+  CURLcode result = CURLE_OK;
+  struct GlobalConfig global;
+  memset(&global, 0, sizeof(global));
 
   main_checkfds();
 
 
   main_checkfds();
 
@@ -100,14 +241,24 @@ int main(int argc, char *argv[])
   (void)signal(SIGPIPE, SIG_IGN);
 #endif
 
   (void)signal(SIGPIPE, SIG_IGN);
 #endif
 
-  res = operate(&config, argc, argv);
+  /* Initialize memory tracking */
+  memory_tracking_init();
+
+  /* Initialize the curl library - do not call any libcurl functions before
+     this point */
+  result = main_init(&global);
+  if(!result) {
+    /* Start our curl operation */
+    result = operate(&global, argc, argv);
 
 #ifdef __SYMBIAN32__
 
 #ifdef __SYMBIAN32__
-  if(config.showerror)
-    tool_pressanykey();
+    if(global.showerror)
+      tool_pressanykey();
 #endif
 
 #endif
 
-  free_config_fields(&config);
+    /* Perform the main cleanup */
+    main_free(&global);
+  }
 
 #ifdef __NOVELL_LIBC__
   if(getenv("_IN_NETWARE_BASH_") == NULL)
 
 #ifdef __NOVELL_LIBC__
   if(getenv("_IN_NETWARE_BASH_") == NULL)
@@ -115,9 +266,9 @@ int main(int argc, char *argv[])
 #endif
 
 #ifdef __VMS
 #endif
 
 #ifdef __VMS
-  vms_special_exit(res, vms_show);
+  vms_special_exit(result, vms_show);
 #else
 #else
-  return res;
+  return (int)result;
 #endif
 }
 
 #endif
 }
 
index be5fc26..3573b05 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #  define MD5_CTX    void *
 #  define SHA_CTX    void *
 #  define SHA256_CTX void *
 #  define MD5_CTX    void *
 #  define SHA_CTX    void *
 #  define SHA256_CTX void *
-#  ifdef HAVE_NSS_INITCONTEXT
-     static NSSInitContext *nss_context;
-#  endif
+   static NSSInitContext *nss_context;
+#elif defined(USE_POLARSSL)
+#  include <polarssl/md5.h>
+#  include <polarssl/sha1.h>
+#  include <polarssl/sha256.h>
+#  define MD5_CTX    md5_context
+#  define SHA_CTX    sha1_context
+#  define SHA256_CTX sha256_context
 #elif (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && \
               (__MAC_OS_X_VERSION_MAX_ALLOWED >= 1040)) || \
       (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && \
 #elif (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && \
               (__MAC_OS_X_VERSION_MAX_ALLOWED >= 1040)) || \
       (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && \
@@ -240,7 +245,6 @@ static int nss_hash_init(void **pctx, SECOidTag hash_alg)
   PK11Context *ctx;
 
   /* we have to initialize NSS if not initialized alraedy */
   PK11Context *ctx;
 
   /* we have to initialize NSS if not initialized alraedy */
-#ifdef HAVE_NSS_INITCONTEXT
   if(!NSS_IsInitialized() && !nss_context) {
     static NSSInitParameters params;
     params.length = sizeof params;
   if(!NSS_IsInitialized() && !nss_context) {
     static NSSInitParameters params;
     params.length = sizeof params;
@@ -248,7 +252,6 @@ static int nss_hash_init(void **pctx, SECOidTag hash_alg)
         | NSS_INIT_NOCERTDB   | NSS_INIT_NOMODDB       | NSS_INIT_FORCEOPEN
         | NSS_INIT_NOROOTINIT | NSS_INIT_OPTIMIZESPACE | NSS_INIT_PK11RELOAD);
   }
         | NSS_INIT_NOCERTDB   | NSS_INIT_NOMODDB       | NSS_INIT_FORCEOPEN
         | NSS_INIT_NOROOTINIT | NSS_INIT_OPTIMIZESPACE | NSS_INIT_PK11RELOAD);
   }
-#endif
 
   ctx = PK11_CreateDigestContext(hash_alg);
   if(!ctx)
 
   ctx = PK11_CreateDigestContext(hash_alg);
   if(!ctx)
@@ -322,6 +325,62 @@ static void SHA256_Final(unsigned char digest[32], SHA256_CTX *pctx)
   nss_hash_final(pctx, digest, 32);
 }
 
   nss_hash_final(pctx, digest, 32);
 }
 
+#elif defined(USE_POLARSSL)
+
+static int MD5_Init(MD5_CTX *ctx)
+{
+  md5_starts(ctx);
+  return 1;
+}
+
+static void MD5_Update(MD5_CTX *ctx,
+                       const unsigned char *input,
+                       unsigned int inputLen)
+{
+  md5_update(ctx, input, inputLen);
+}
+
+static void MD5_Final(unsigned char digest[16], MD5_CTX *ctx)
+{
+  md5_finish(ctx, digest);
+}
+
+static int SHA1_Init(SHA_CTX *ctx)
+{
+  sha1_starts(ctx);
+  return 1;
+}
+
+static void SHA1_Update(SHA_CTX *ctx,
+                        const unsigned char *input,
+                        unsigned int inputLen)
+{
+  sha1_update(ctx, input, inputLen);
+}
+
+static void SHA1_Final(unsigned char digest[20], SHA_CTX *ctx)
+{
+  sha1_finish(ctx, digest);
+}
+
+static int SHA256_Init(SHA256_CTX *ctx)
+{
+  sha256_starts(ctx, 0); /* 0 = sha256 */
+  return 1;
+}
+
+static void SHA256_Update(SHA256_CTX *ctx,
+                          const unsigned char *input,
+                          unsigned int inputLen)
+{
+  sha256_update(ctx, input, inputLen);
+}
+
+static void SHA256_Final(unsigned char digest[32], SHA256_CTX *ctx)
+{
+  sha256_finish(ctx, digest);
+}
+
 #elif defined(_WIN32) && !defined(USE_SSLEAY)
 
 static void win32_crypto_final(struct win32_crypto_hash *ctx,
 #elif defined(_WIN32) && !defined(USE_SSLEAY)
 
 static void win32_crypto_final(struct win32_crypto_hash *ctx,
@@ -598,7 +657,7 @@ static int check_hash(const char *filename,
   return check_ok;
 }
 
   return check_ok;
 }
 
-int metalink_check_hash(struct Configurable *config,
+int metalink_check_hash(struct GlobalConfig *config,
                         metalinkfile *mlfile,
                         const char *filename)
 {
                         metalinkfile *mlfile,
                         const char *filename)
 {
@@ -606,8 +665,7 @@ int metalink_check_hash(struct Configurable *config,
   fprintf(config->errors, "Metalink: validating (%s)...\n", filename);
   if(mlfile->checksum == NULL) {
     fprintf(config->errors,
   fprintf(config->errors, "Metalink: validating (%s)...\n", filename);
   if(mlfile->checksum == NULL) {
     fprintf(config->errors,
-            "Metalink: validating (%s) FAILED (digest missing)\n",
-            filename);
+            "Metalink: validating (%s) FAILED (digest missing)\n", filename);
     return -2;
   }
   rv = check_hash(filename, mlfile->checksum->digest_def,
     return -2;
   }
   rv = check_hash(filename, mlfile->checksum->digest_def,
@@ -716,7 +774,7 @@ static metalinkfile *new_metalinkfile(metalink_file_t *fileinfo)
   return f;
 }
 
   return f;
 }
 
-int parse_metalink(struct Configurable *config, struct OutStruct *outs,
+int parse_metalink(struct OperationConfig *config, struct OutStruct *outs,
                    const char *metalink_url)
 {
   metalink_error_t r;
                    const char *metalink_url)
 {
   metalink_error_t r;
@@ -731,7 +789,7 @@ int parse_metalink(struct Configurable *config, struct OutStruct *outs,
     return -1;
   }
   if(metalink->files == NULL) {
     return -1;
   }
   if(metalink->files == NULL) {
-    fprintf(config->errors, "Metalink: parsing (%s) WARNING "
+    fprintf(config->global->errors, "Metalink: parsing (%s) WARNING "
             "(missing or invalid file name)\n",
             metalink_url);
     metalink_delete(metalink);
             "(missing or invalid file name)\n",
             metalink_url);
     metalink_delete(metalink);
@@ -741,7 +799,7 @@ int parse_metalink(struct Configurable *config, struct OutStruct *outs,
     struct getout *url;
     /* Skip an entry which has no resource. */
     if(!(*files)->resources) {
     struct getout *url;
     /* Skip an entry which has no resource. */
     if(!(*files)->resources) {
-      fprintf(config->errors, "Metalink: parsing (%s) WARNING "
+      fprintf(config->global->errors, "Metalink: parsing (%s) WARNING "
               "(missing or invalid resource)\n",
               metalink_url, (*files)->name);
       continue;
               "(missing or invalid resource)\n",
               metalink_url, (*files)->name);
       continue;
@@ -768,8 +826,8 @@ int parse_metalink(struct Configurable *config, struct OutStruct *outs,
       mlfile = new_metalinkfile(*files);
       if(!mlfile->checksum) {
         warnings = TRUE;
       mlfile = new_metalinkfile(*files);
       if(!mlfile->checksum) {
         warnings = TRUE;
-        fprintf(config->errors, "Metalink: parsing (%s) WARNING "
-                "(digest missing)\n",
+        fprintf(config->global->errors,
+                "Metalink: parsing (%s) WARNING (digest missing)\n",
                 metalink_url);
       }
       /* Set name as url */
                 metalink_url);
       }
       /* Set name as url */
@@ -795,7 +853,7 @@ size_t metalink_write_cb(void *buffer, size_t sz, size_t nmemb,
                          void *userdata)
 {
   struct OutStruct *outs = userdata;
                          void *userdata)
 {
   struct OutStruct *outs = userdata;
-  struct Configurable *config = outs->config;
+  struct OperationConfig *config = outs->config;
   int rv;
 
   /*
   int rv;
 
   /*
@@ -813,7 +871,7 @@ size_t metalink_write_cb(void *buffer, size_t sz, size_t nmemb,
   if(rv == 0)
     return sz * nmemb;
   else {
   if(rv == 0)
     return sz * nmemb;
   else {
-    fprintf(config->errors, "Metalink: parsing FAILED\n");
+    fprintf(config->global->errors, "Metalink: parsing FAILED\n");
     return failure;
   }
 }
     return failure;
   }
 }
@@ -882,7 +940,7 @@ static void delete_metalinkfile(metalinkfile *mlfile)
   Curl_safefree(mlfile);
 }
 
   Curl_safefree(mlfile);
 }
 
-void clean_metalink(struct Configurable *config)
+void clean_metalink(struct OperationConfig *config)
 {
   while(config->metalinkfile_list) {
     metalinkfile *mlfile = config->metalinkfile_list;
 {
   while(config->metalinkfile_list) {
     metalinkfile *mlfile = config->metalinkfile_list;
@@ -894,7 +952,7 @@ void clean_metalink(struct Configurable *config)
 
 void metalink_cleanup(void)
 {
 
 void metalink_cleanup(void)
 {
-#if defined(USE_NSS) && defined(HAVE_NSS_INITCONTEXT)
+#ifdef USE_NSS
   if(nss_context) {
     NSS_ShutdownContext(nss_context);
     nss_context = NULL;
   if(nss_context) {
     NSS_ShutdownContext(nss_context);
     nss_context = NULL;
index a7ff0e8..3685906 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -23,6 +23,9 @@
  ***************************************************************************/
 #include "tool_setup.h"
 
  ***************************************************************************/
 #include "tool_setup.h"
 
+struct GlobalConfig;
+struct OperationConfig;
+
 /* returns 1 for success, 0 otherwise (we use OpenSSL *_Init fncs directly) */
 typedef int (* Curl_digest_init_func)(void *context);
 
 /* returns 1 for success, 0 otherwise (we use OpenSSL *_Init fncs directly) */
 typedef int (* Curl_digest_init_func)(void *context);
 
@@ -101,7 +104,7 @@ extern const digest_params SHA256_DIGEST_PARAMS[1];
  * Counts the resource in the metalinkfile.
  */
 int count_next_metalink_resource(metalinkfile *mlfile);
  * Counts the resource in the metalinkfile.
  */
 int count_next_metalink_resource(metalinkfile *mlfile);
-void clean_metalink(struct Configurable *config);
+void clean_metalink(struct OperationConfig *config);
 
 /*
  * Performs final parse operation and extracts information from
 
 /*
  * Performs final parse operation and extracts information from
@@ -113,7 +116,7 @@ void clean_metalink(struct Configurable *config);
  * -1: Parsing failed; or no file is found
  * -2: Parsing succeeded with some warnings.
  */
  * -1: Parsing failed; or no file is found
  * -2: Parsing succeeded with some warnings.
  */
-int parse_metalink(struct Configurable *config, struct OutStruct *outs,
+int parse_metalink(struct OperationConfig *config, struct OutStruct *outs,
                    const char *metalink_url);
 
 /*
                    const char *metalink_url);
 
 /*
@@ -142,7 +145,7 @@ int check_metalink_content_type(const char *content_type);
  *   No checksum in Metalink supported, hash algorithm not available, or
  *   Metalink does not contain checksum.
  */
  *   No checksum in Metalink supported, hash algorithm not available, or
  *   Metalink does not contain checksum.
  */
-int metalink_check_hash(struct Configurable *config,
+int metalink_check_hash(struct GlobalConfig *config,
                         metalinkfile *mlfile,
                         const char *filename);
 
                         metalinkfile *mlfile,
                         const char *filename);
 
@@ -154,7 +157,7 @@ void metalink_cleanup(void);
 #else /* USE_METALINK */
 
 #define count_next_metalink_resource(x)  0
 #else /* USE_METALINK */
 
 #define count_next_metalink_resource(x)  0
-#define clean_metalink(x)  Curl_nop_stmt
+#define clean_metalink(x)  (void)x
 
 /* metalink_cleanup() takes no arguments */
 #define metalink_cleanup() Curl_nop_stmt
 
 /* metalink_cleanup() takes no arguments */
 #define metalink_cleanup() Curl_nop_stmt
index 80fdf4e..3311b55 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -38,9 +38,9 @@
  * mute (--silent) was selected.
  */
 
  * mute (--silent) was selected.
  */
 
-void warnf(struct Configurable *config, const char *fmt, ...)
+void warnf(struct OperationConfig *config, const char *fmt, ...)
 {
 {
-  if(!config->mute) {
+  if(!config->global->mute) {
     va_list ap;
     int len;
     char *ptr;
     va_list ap;
     int len;
     char *ptr;
@@ -52,7 +52,7 @@ void warnf(struct Configurable *config, const char *fmt, ...)
 
     ptr = print_buffer;
     while(len > 0) {
 
     ptr = print_buffer;
     while(len > 0) {
-      fputs(WARN_PREFIX, config->errors);
+      fputs(WARN_PREFIX, config->global->errors);
 
       if(len > (int)WARN_TEXTWIDTH) {
         int cut = WARN_TEXTWIDTH-1;
 
       if(len > (int)WARN_TEXTWIDTH) {
         int cut = WARN_TEXTWIDTH-1;
@@ -65,13 +65,13 @@ void warnf(struct Configurable *config, const char *fmt, ...)
              max text width then! */
           cut = WARN_TEXTWIDTH-1;
 
              max text width then! */
           cut = WARN_TEXTWIDTH-1;
 
-        (void)fwrite(ptr, cut + 1, 1, config->errors);
-        fputs("\n", config->errors);
+        (void)fwrite(ptr, cut + 1, 1, config->global->errors);
+        fputs("\n", config->global->errors);
         ptr += cut+1; /* skip the space too */
         len -= cut;
       }
       else {
         ptr += cut+1; /* skip the space too */
         len -= cut;
       }
       else {
-        fputs(ptr, config->errors);
+        fputs(ptr, config->global->errors);
         len = 0;
       }
     }
         len = 0;
       }
     }
index 7b06089..1575469 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -23,7 +23,7 @@
  ***************************************************************************/
 #include "tool_setup.h"
 
  ***************************************************************************/
 #include "tool_setup.h"
 
-void warnf(struct Configurable *config, const char *fmt, ...);
+void warnf(struct OperationConfig *config, const char *fmt, ...);
 
 void helpf(FILE *errors, const char *fmt, ...);
 
 
 void helpf(FILE *errors, const char *fmt, ...);
 
index ed60e70..a21bbca 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -69,6 +69,7 @@
 #include "tool_msgs.h"
 #include "tool_operate.h"
 #include "tool_operhlp.h"
 #include "tool_msgs.h"
 #include "tool_operate.h"
 #include "tool_operhlp.h"
+#include "tool_paramhlp.h"
 #include "tool_parsecfg.h"
 #include "tool_setopt.h"
 #include "tool_sleep.h"
 #include "tool_parsecfg.h"
 #include "tool_setopt.h"
 #include "tool_sleep.h"
 #include "tool_writeout.h"
 #include "tool_xattr.h"
 #include "tool_vms.h"
 #include "tool_writeout.h"
 #include "tool_xattr.h"
 #include "tool_vms.h"
+#include "tool_help.h"
+#include "tool_hugehelp.h"
 
 #include "memdebug.h" /* keep this as LAST include */
 
 
 #include "memdebug.h" /* keep this as LAST include */
 
+#ifdef CURLDEBUG
+/* libcurl's debug builds provide an extra function */
+CURLcode curl_easy_perform_ev(CURL *easy);
+#endif
+
 #define CURLseparator  "--_curl_--"
 
 #ifndef O_BINARY
 #define CURLseparator  "--_curl_--"
 
 #ifndef O_BINARY
   "If you'd like to turn off curl's verification of the certificate, use\n" \
   " the -k (or --insecure) option.\n"
 
   "If you'd like to turn off curl's verification of the certificate, use\n" \
   " the -k (or --insecure) option.\n"
 
-static int is_fatal_error(int code)
+static bool is_fatal_error(CURLcode code)
 {
   switch(code) {
   /* TODO: Should CURLE_SSL_CACERT be included as critical error ? */
 {
   switch(code) {
   /* TODO: Should CURLE_SSL_CACERT be included as critical error ? */
@@ -115,12 +123,13 @@ static int is_fatal_error(int code)
   case CURLE_FUNCTION_NOT_FOUND:
   case CURLE_BAD_FUNCTION_ARGUMENT:
     /* critical error */
   case CURLE_FUNCTION_NOT_FOUND:
   case CURLE_BAD_FUNCTION_ARGUMENT:
     /* critical error */
-    return 1;
+    return TRUE;
   default:
     break;
   }
   default:
     break;
   }
+
   /* no error or not critical */
   /* no error or not critical */
-  return 0;
+  return FALSE;
 }
 
 #ifdef __VMS
 }
 
 #ifdef __VMS
@@ -178,8 +187,8 @@ static curl_off_t VmsSpecialSize(const char * name,
 }
 #endif /* __VMS */
 
 }
 #endif /* __VMS */
 
-
-int operate(struct Configurable *config, int argc, argv_item_t argv[])
+static CURLcode operate_do(struct GlobalConfig *global,
+                           struct OperationConfig *config)
 {
   char errorbuffer[CURL_ERROR_SIZE];
   struct ProgressData progressbar;
 {
   char errorbuffer[CURL_ERROR_SIZE];
   struct ProgressData progressbar;
@@ -190,146 +199,34 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
 
   metalinkfile *mlfile_last = NULL;
 
 
   metalinkfile *mlfile_last = NULL;
 
-  CURL *curl = NULL;
+  CURL *curl = config->easy;
   char *httpgetfields = NULL;
 
   char *httpgetfields = NULL;
 
-  bool stillflags;
-  int res = 0;
-  int i;
+  CURLcode result = CURLE_OK;
+  unsigned long li;
 
 
-  bool orig_noprogress;
-  bool orig_isatty;
+  /* Save the values of noprogress and isatty to restore them later on */
+  bool orig_noprogress = global->noprogress;
+  bool orig_isatty = global->isatty;
 
   errorbuffer[0] = '\0';
 
   errorbuffer[0] = '\0';
+
   /* default headers output stream is stdout */
   memset(&hdrcbdata, 0, sizeof(struct HdrCbData));
   memset(&heads, 0, sizeof(struct OutStruct));
   heads.stream = stdout;
   heads.config = config;
 
   /* default headers output stream is stdout */
   memset(&hdrcbdata, 0, sizeof(struct HdrCbData));
   memset(&heads, 0, sizeof(struct OutStruct));
   heads.stream = stdout;
   heads.config = config;
 
-  memory_tracking_init();
-
-  /*
-  ** Initialize curl library - do not call any libcurl functions before
-  ** this point. Note that the memory_tracking_init() magic above is an
-  ** exception, but then that's not part of the official public API.
-  */
-  if(main_init() != CURLE_OK) {
-    helpf(config->errors, "error initializing curl library\n");
-    return CURLE_FAILED_INIT;
-  }
-
-  /* Get libcurl info right away */
-  if(get_libcurl_info() != CURLE_OK) {
-    helpf(config->errors, "error retrieving curl library information\n");
-    main_free();
-    return CURLE_FAILED_INIT;
-  }
-
-  /* Get a curl handle to use for all forthcoming curl transfers */
-  curl = curl_easy_init();
-  if(!curl) {
-    helpf(config->errors, "error initializing curl easy handle\n");
-    main_free();
-    return CURLE_FAILED_INIT;
-  }
-  config->easy = curl;
-
   /*
   ** Beyond this point no return'ing from this function allowed.
   ** Jump to label 'quit_curl' in order to abandon this function
   ** from outside of nested loops further down below.
   */
 
   /*
   ** Beyond this point no return'ing from this function allowed.
   ** Jump to label 'quit_curl' in order to abandon this function
   ** from outside of nested loops further down below.
   */
 
-  /* setup proper locale from environment */
-#ifdef HAVE_SETLOCALE
-  setlocale(LC_ALL, "");
-#endif
-
-  /* inits */
-  config->postfieldsize = -1;
-  config->showerror = -1; /* will show errors */
-  config->use_httpget = FALSE;
-  config->create_dirs = FALSE;
-  config->maxredirs = DEFAULT_MAXREDIRS;
-  config->proto = CURLPROTO_ALL; /* FIXME: better to read from library */
-  config->proto_present = FALSE;
-  config->proto_redir =
-    CURLPROTO_ALL & ~(CURLPROTO_FILE|CURLPROTO_SCP); /* not FILE or SCP */
-  config->proto_redir_present = FALSE;
-
-  if((argc > 1) &&
-     (!curlx_strnequal("--", argv[1], 2) && (argv[1][0] == '-')) &&
-     strchr(argv[1], 'q')) {
-    /*
-     * The first flag, that is not a verbose name, but a shortname
-     * and it includes the 'q' flag!
-     */
-    ;
-  }
-  else {
-    parseconfig(NULL, config); /* ignore possible failure */
-  }
-
-  if((argc < 2)  && !config->url_list) {
-    helpf(config->errors, NULL);
-    res = CURLE_FAILED_INIT;
-    goto quit_curl;
-  }
-
-  /* Parse options */
-  for(i = 1, stillflags = TRUE; i < argc; i++) {
-    if(stillflags &&
-       ('-' == argv[i][0])) {
-      char *nextarg;
-      bool passarg;
-      char *orig_opt = argv[i];
-
-      char *flag = argv[i];
-
-      if(curlx_strequal("--", argv[i]))
-        /* this indicates the end of the flags and thus enables the
-           following (URL) argument to start with -. */
-        stillflags = FALSE;
-      else {
-        nextarg = (i < (argc-1)) ? argv[i+1] : NULL;
-
-        res = getparameter(flag, nextarg, &passarg, config);
-        if(res) {
-          int retval = CURLE_OK;
-          if(res != PARAM_HELP_REQUESTED) {
-            const char *reason = param2text(res);
-            helpf(config->errors, "option %s: %s\n", orig_opt, reason);
-            retval = CURLE_FAILED_INIT;
-          }
-          res = retval;
-          goto quit_curl;
-        }
-
-        if(passarg) /* we're supposed to skip this */
-          i++;
-      }
-    }
-    else {
-      bool used;
-      /* just add the URL please */
-      res = getparameter((char *)"--url", argv[i], &used, config);
-      if(res)
-        goto quit_curl;
-    }
-  }
-
-  if((!config->url_list || !config->url_list->url) && !config->list_engines) {
-    helpf(config->errors, "no URL specified!\n");
-    res = CURLE_FAILED_INIT;
-    goto quit_curl;
-  }
-
-  if(!config->useragent)
-    config->useragent = my_useragent();
-  if(!config->useragent) {
-    helpf(config->errors, "out of memory\n");
-    res = CURLE_OUT_OF_MEMORY;
+  /* Check we have a url */
+  if(!config->url_list || !config->url_list->url) {
+    helpf(global->errors, "no URL specified!\n");
+    result = CURLE_FAILED_INIT;
     goto quit_curl;
   }
 
     goto quit_curl;
   }
 
@@ -351,8 +248,8 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
       config->cacert = strdup(env);
       if(!config->cacert) {
         curl_free(env);
       config->cacert = strdup(env);
       if(!config->cacert) {
         curl_free(env);
-        helpf(config->errors, "out of memory\n");
-        res = CURLE_OUT_OF_MEMORY;
+        helpf(global->errors, "out of memory\n");
+        result = CURLE_OUT_OF_MEMORY;
         goto quit_curl;
       }
     }
         goto quit_curl;
       }
     }
@@ -362,8 +259,8 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
         config->capath = strdup(env);
         if(!config->capath) {
           curl_free(env);
         config->capath = strdup(env);
         if(!config->capath) {
           curl_free(env);
-          helpf(config->errors, "out of memory\n");
-          res = CURLE_OUT_OF_MEMORY;
+          helpf(global->errors, "out of memory\n");
+          result = CURLE_OUT_OF_MEMORY;
           goto quit_curl;
         }
       }
           goto quit_curl;
         }
       }
@@ -373,8 +270,8 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
           config->cacert = strdup(env);
           if(!config->cacert) {
             curl_free(env);
           config->cacert = strdup(env);
           if(!config->cacert) {
             curl_free(env);
-            helpf(config->errors, "out of memory\n");
-            res = CURLE_OUT_OF_MEMORY;
+            helpf(global->errors, "out of memory\n");
+            result = CURLE_OUT_OF_MEMORY;
             goto quit_curl;
           }
         }
             goto quit_curl;
           }
         }
@@ -385,8 +282,8 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
       curl_free(env);
 #ifdef WIN32
     else {
       curl_free(env);
 #ifdef WIN32
     else {
-      res = FindWin32CACert(config, "curl-ca-bundle.crt");
-      if(res)
+      result = FindWin32CACert(config, "curl-ca-bundle.crt");
+      if(result)
         goto quit_curl;
     }
 #endif
         goto quit_curl;
     }
 #endif
@@ -398,42 +295,25 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
       httpgetfields = strdup(config->postfields);
       Curl_safefree(config->postfields);
       if(!httpgetfields) {
       httpgetfields = strdup(config->postfields);
       Curl_safefree(config->postfields);
       if(!httpgetfields) {
-        helpf(config->errors, "out of memory\n");
-        res = CURLE_OUT_OF_MEMORY;
+        helpf(global->errors, "out of memory\n");
+        result = CURLE_OUT_OF_MEMORY;
         goto quit_curl;
       }
       if(SetHTTPrequest(config,
                         (config->no_body?HTTPREQ_HEAD:HTTPREQ_GET),
                         &config->httpreq)) {
         goto quit_curl;
       }
       if(SetHTTPrequest(config,
                         (config->no_body?HTTPREQ_HEAD:HTTPREQ_GET),
                         &config->httpreq)) {
-        res = PARAM_BAD_USE;
+        result = CURLE_FAILED_INIT;
         goto quit_curl;
       }
     }
     else {
       if(SetHTTPrequest(config, HTTPREQ_SIMPLEPOST, &config->httpreq)) {
         goto quit_curl;
       }
     }
     else {
       if(SetHTTPrequest(config, HTTPREQ_SIMPLEPOST, &config->httpreq)) {
-        res = PARAM_BAD_USE;
+        result = CURLE_FAILED_INIT;
         goto quit_curl;
       }
     }
   }
 
         goto quit_curl;
       }
     }
   }
 
-#ifndef CURL_DISABLE_LIBCURL_OPTION
-  res = easysrc_init();
-  if(res) {
-    helpf(config->errors, "out of memory\n");
-    goto quit_curl;
-  }
-#endif
-
-  if(config->list_engines) {
-    struct curl_slist *engines = NULL;
-    curl_easy_getinfo(curl, CURLINFO_SSL_ENGINES, &engines);
-    list_engines(engines);
-    curl_slist_free_all(engines);
-    res = CURLE_OK;
-    goto quit_curl;
-  }
-
   /* Single header file for all URLs */
   if(config->headerfile) {
     /* open file for output: */
   /* Single header file for all URLs */
   if(config->headerfile) {
     /* open file for output: */
@@ -441,7 +321,7 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
       FILE *newfile = fopen(config->headerfile, "wb");
       if(!newfile) {
         warnf(config, "Failed to open %s\n", config->headerfile);
       FILE *newfile = fopen(config->headerfile, "wb");
       if(!newfile) {
         warnf(config, "Failed to open %s\n", config->headerfile);
-        res = CURLE_WRITE_ERROR;
+        result = CURLE_WRITE_ERROR;
         goto quit_curl;
       }
       else {
         goto quit_curl;
       }
       else {
@@ -451,12 +331,12 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
         heads.stream = newfile;
       }
     }
         heads.stream = newfile;
       }
     }
+    else {
+      /* always use binary mode for protocol header output */
+      set_binmode(heads.stream);
+    }
   }
 
   }
 
-  /* save the values of noprogress and isatty to restore them later on */
-  orig_noprogress = config->noprogress;
-  orig_isatty = config->isatty;
-
   /*
   ** Nested loops start here.
   */
   /*
   ** Nested loops start here.
   */
@@ -465,10 +345,10 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
 
   for(urlnode = config->url_list; urlnode; urlnode = urlnode->next) {
 
 
   for(urlnode = config->url_list; urlnode; urlnode = urlnode->next) {
 
-    int up; /* upload file counter within a single upload glob */
+    unsigned long up; /* upload file counter within a single upload glob */
     char *infiles; /* might be a glob pattern */
     char *outfiles;
     char *infiles; /* might be a glob pattern */
     char *outfiles;
-    int infilenum;
+    unsigned long infilenum;
     URLGlob *inglob;
 
     int metalink = 0; /* nonzero for metalink download. */
     URLGlob *inglob;
 
     int metalink = 0; /* nonzero for metalink download. */
@@ -508,8 +388,8 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
     if(urlnode->outfile) {
       outfiles = strdup(urlnode->outfile);
       if(!outfiles) {
     if(urlnode->outfile) {
       outfiles = strdup(urlnode->outfile);
       if(!outfiles) {
-        helpf(config->errors, "out of memory\n");
-        res = CURLE_OUT_OF_MEMORY;
+        helpf(global->errors, "out of memory\n");
+        result = CURLE_OUT_OF_MEMORY;
         break;
       }
     }
         break;
       }
     }
@@ -518,9 +398,9 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
 
     if(!config->globoff && infiles) {
       /* Unless explicitly shut off */
 
     if(!config->globoff && infiles) {
       /* Unless explicitly shut off */
-      res = glob_url(&inglob, infiles, &infilenum,
-                     config->showerror?config->errors:NULL);
-      if(res) {
+      result = glob_url(&inglob, infiles, &infilenum,
+                        global->showerror?global->errors:NULL);
+      if(result) {
         Curl_safefree(outfiles);
         break;
       }
         Curl_safefree(outfiles);
         break;
       }
@@ -533,7 +413,7 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
       char *uploadfile; /* a single file, never a glob */
       int separator;
       URLGlob *urls;
       char *uploadfile; /* a single file, never a glob */
       int separator;
       URLGlob *urls;
-      int urlnum;
+      unsigned long urlnum;
 
       uploadfile = NULL;
       urls = NULL;
 
       uploadfile = NULL;
       urls = NULL;
@@ -543,15 +423,15 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
         Curl_nop_stmt;
       else {
         if(inglob) {
         Curl_nop_stmt;
       else {
         if(inglob) {
-          res = glob_next_url(&uploadfile, inglob);
-          if(res == CURLE_OUT_OF_MEMORY)
-            helpf(config->errors, "out of memory\n");
+          result = glob_next_url(&uploadfile, inglob);
+          if(result == CURLE_OUT_OF_MEMORY)
+            helpf(global->errors, "out of memory\n");
         }
         else if(!up) {
           uploadfile = strdup(infiles);
           if(!uploadfile) {
         }
         else if(!up) {
           uploadfile = strdup(infiles);
           if(!uploadfile) {
-            helpf(config->errors, "out of memory\n");
-            res = CURLE_OUT_OF_MEMORY;
+            helpf(global->errors, "out of memory\n");
+            result = CURLE_OUT_OF_MEMORY;
           }
         }
         else
           }
         }
         else
@@ -569,9 +449,9 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
       if(!config->globoff) {
         /* Unless explicitly shut off, we expand '{...}' and '[...]'
            expressions and return total number of URLs in pattern set */
       if(!config->globoff) {
         /* Unless explicitly shut off, we expand '{...}' and '[...]'
            expressions and return total number of URLs in pattern set */
-        res = glob_url(&urls, urlnode->url, &urlnum,
-                       config->showerror?config->errors:NULL);
-        if(res) {
+        result = glob_url(&urls, urlnode->url, &urlnum,
+                          global->showerror?global->errors:NULL);
+        if(result) {
           Curl_safefree(uploadfile);
           break;
         }
           Curl_safefree(uploadfile);
           break;
         }
@@ -583,7 +463,7 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
       separator= ((!outfiles || curlx_strequal(outfiles, "-")) && urlnum > 1);
 
       /* Here's looping around each globbed URL */
       separator= ((!outfiles || curlx_strequal(outfiles, "-")) && urlnum > 1);
 
       /* Here's looping around each globbed URL */
-      for(i = 0 ; i < urlnum; i++) {
+      for(li = 0 ; li < urlnum; li++) {
 
         int infd;
         bool infdopen;
 
         int infd;
         bool infdopen;
@@ -613,25 +493,25 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
              filename. */
           outfile = strdup(mlfile->filename);
           if(!outfile) {
              filename. */
           outfile = strdup(mlfile->filename);
           if(!outfile) {
-            res = CURLE_OUT_OF_MEMORY;
+            result = CURLE_OUT_OF_MEMORY;
             goto show_error;
           }
           this_url = strdup(mlres->url);
           if(!this_url) {
             goto show_error;
           }
           this_url = strdup(mlres->url);
           if(!this_url) {
-            res = CURLE_OUT_OF_MEMORY;
+            result = CURLE_OUT_OF_MEMORY;
             goto show_error;
           }
         }
         else {
           if(urls) {
             goto show_error;
           }
         }
         else {
           if(urls) {
-            res = glob_next_url(&this_url, urls);
-            if(res)
+            result = glob_next_url(&this_url, urls);
+            if(result)
               goto show_error;
           }
               goto show_error;
           }
-          else if(!i) {
+          else if(!li) {
             this_url = strdup(urlnode->url);
             if(!this_url) {
             this_url = strdup(urlnode->url);
             if(!this_url) {
-              res = CURLE_OUT_OF_MEMORY;
+              result = CURLE_OUT_OF_MEMORY;
               goto show_error;
             }
           }
               goto show_error;
             }
           }
@@ -643,7 +523,7 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
           if(outfiles) {
             outfile = strdup(outfiles);
             if(!outfile) {
           if(outfiles) {
             outfile = strdup(outfiles);
             if(!outfile) {
-              res = CURLE_OUT_OF_MEMORY;
+              result = CURLE_OUT_OF_MEMORY;
               goto show_error;
             }
           }
               goto show_error;
             }
           }
@@ -660,12 +540,12 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
 
           if(!outfile) {
             /* extract the file name from the URL */
 
           if(!outfile) {
             /* extract the file name from the URL */
-            res = get_url_file_name(&outfile, this_url);
-            if(res)
+            result = get_url_file_name(&outfile, this_url);
+            if(result)
               goto show_error;
               goto show_error;
-            if((!outfile || !*outfile) && !config->content_disposition) {
-              helpf(config->errors, "Remote file name has no length!\n");
-              res = CURLE_WRITE_ERROR;
+            if(!*outfile && !config->content_disposition) {
+              helpf(global->errors, "Remote file name has no length!\n");
+              result = CURLE_WRITE_ERROR;
               goto quit_urls;
             }
 #if defined(MSDOS) || defined(WIN32)
               goto quit_urls;
             }
 #if defined(MSDOS) || defined(WIN32)
@@ -673,7 +553,7 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
                bad characters in the file name before using it */
             outfile = sanitize_dos_name(outfile);
             if(!outfile) {
                bad characters in the file name before using it */
             outfile = sanitize_dos_name(outfile);
             if(!outfile) {
-              res = CURLE_OUT_OF_MEMORY;
+              result = CURLE_OUT_OF_MEMORY;
               goto show_error;
             }
 #endif /* MSDOS || WIN32 */
               goto show_error;
             }
 #endif /* MSDOS || WIN32 */
@@ -681,9 +561,9 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
           else if(urls) {
             /* fill '#1' ... '#9' terms from URL pattern */
             char *storefile = outfile;
           else if(urls) {
             /* fill '#1' ... '#9' terms from URL pattern */
             char *storefile = outfile;
-            res = glob_match_url(&outfile, storefile, urls);
+            result = glob_match_url(&outfile, storefile, urls);
             Curl_safefree(storefile);
             Curl_safefree(storefile);
-            if(res) {
+            if(result) {
               /* bad globbing */
               warnf(config, "bad output glob!\n");
               goto quit_urls;
               /* bad globbing */
               warnf(config, "bad output glob!\n");
               goto quit_urls;
@@ -694,11 +574,11 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
              file output call */
 
           if(config->create_dirs || metalink) {
              file output call */
 
           if(config->create_dirs || metalink) {
-            res = create_dir_hierarchy(outfile, config->errors);
+            result = create_dir_hierarchy(outfile, global->errors);
             /* create_dir_hierarchy shows error upon CURLE_WRITE_ERROR */
             /* create_dir_hierarchy shows error upon CURLE_WRITE_ERROR */
-            if(res == CURLE_WRITE_ERROR)
+            if(result == CURLE_WRITE_ERROR)
               goto quit_urls;
               goto quit_urls;
-            if(res) {
+            if(result) {
               goto show_error;
             }
           }
               goto show_error;
             }
           }
@@ -733,8 +613,8 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
             FILE *file = fopen(outfile, config->resume_from?"ab":"wb");
 #endif
             if(!file) {
             FILE *file = fopen(outfile, config->resume_from?"ab":"wb");
 #endif
             if(!file) {
-              helpf(config->errors, "Can't open '%s'!\n", outfile);
-              res = CURLE_WRITE_ERROR;
+              helpf(global->errors, "Can't open '%s'!\n", outfile);
+              result = CURLE_WRITE_ERROR;
               goto quit_urls;
             }
             outs.fopened = TRUE;
               goto quit_urls;
             }
             outs.fopened = TRUE;
@@ -756,7 +636,7 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
 
           this_url = add_file_name_to_url(curl, this_url, uploadfile);
           if(!this_url) {
 
           this_url = add_file_name_to_url(curl, this_url, uploadfile);
           if(!this_url) {
-            res = CURLE_OUT_OF_MEMORY;
+            result = CURLE_OUT_OF_MEMORY;
             goto show_error;
           }
           /* VMS Note:
             goto show_error;
           }
           /* VMS Note:
@@ -795,12 +675,12 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
           if((infd == -1) || fstat(infd, &fileinfo))
 #endif
           {
           if((infd == -1) || fstat(infd, &fileinfo))
 #endif
           {
-            helpf(config->errors, "Can't open '%s'!\n", uploadfile);
+            helpf(global->errors, "Can't open '%s'!\n", uploadfile);
             if(infd != -1) {
               close(infd);
               infd = STDIN_FILENO;
             }
             if(infd != -1) {
               close(infd);
               infd = STDIN_FILENO;
             }
-            res = CURLE_READ_ERROR;
+            result = CURLE_READ_ERROR;
             goto quit_urls;
           }
           infdopen = TRUE;
             goto quit_urls;
           }
           infdopen = TRUE;
@@ -850,21 +730,21 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
         if(uploadfile && config->resume_from_current)
           config->resume_from = -1; /* -1 will then force get-it-yourself */
 
         if(uploadfile && config->resume_from_current)
           config->resume_from = -1; /* -1 will then force get-it-yourself */
 
-        if(output_expected(this_url, uploadfile)
-           && outs.stream && isatty(fileno(outs.stream)))
+        if(output_expected(this_url, uploadfile) && outs.stream &&
+           isatty(fileno(outs.stream)))
           /* we send the output to a tty, therefore we switch off the progress
              meter */
           /* we send the output to a tty, therefore we switch off the progress
              meter */
-          config->noprogress = config->isatty = TRUE;
+          global->noprogress = global->isatty = TRUE;
         else {
           /* progress meter is per download, so restore config
              values */
         else {
           /* progress meter is per download, so restore config
              values */
-          config->noprogress = orig_noprogress;
-          config->isatty = orig_isatty;
+          global->noprogress = orig_noprogress;
+          global->isatty = orig_isatty;
         }
 
         }
 
-        if(urlnum > 1 && !(config->mute)) {
-          fprintf(config->errors, "\n[%d/%d]: %s --> %s\n",
-                  i+1, urlnum, this_url, outfile ? outfile : "<stdout>");
+        if(urlnum > 1 && !global->mute) {
+          fprintf(global->errors, "\n[%lu/%lu]: %s --> %s\n",
+                  li+1, urlnum, this_url, outfile ? outfile : "<stdout>");
           if(separator)
             printf("%s%s\n", CURLseparator, this_url);
         }
           if(separator)
             printf("%s%s\n", CURLseparator, this_url);
         }
@@ -900,7 +780,7 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
             urlbuffer = aprintf("%s/?%s", this_url, httpgetfields);
 
           if(!urlbuffer) {
             urlbuffer = aprintf("%s/?%s", this_url, httpgetfields);
 
           if(!urlbuffer) {
-            res = CURLE_OUT_OF_MEMORY;
+            result = CURLE_OUT_OF_MEMORY;
             goto show_error;
           }
 
             goto show_error;
           }
 
@@ -908,8 +788,8 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
           this_url = urlbuffer; /* use our new URL instead! */
         }
 
           this_url = urlbuffer; /* use our new URL instead! */
         }
 
-        if(!config->errors)
-          config->errors = stderr;
+        if(!global->errors)
+          global->errors = stderr;
 
         if((!outfile || !strcmp(outfile, "-")) && !config->use_ascii) {
           /* We get the output to stdout and we have not got the ASCII/text
 
         if((!outfile || !strcmp(outfile, "-")) && !config->use_ascii) {
           /* We get the output to stdout and we have not got the ASCII/text
@@ -960,7 +840,7 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
         if(uploadfilesize != -1)
           my_setopt(curl, CURLOPT_INFILESIZE_LARGE, uploadfilesize);
         my_setopt_str(curl, CURLOPT_URL, this_url);     /* what to fetch */
         if(uploadfilesize != -1)
           my_setopt(curl, CURLOPT_INFILESIZE_LARGE, uploadfilesize);
         my_setopt_str(curl, CURLOPT_URL, this_url);     /* what to fetch */
-        my_setopt(curl, CURLOPT_NOPROGRESS, config->noprogress?1L:0L);
+        my_setopt(curl, CURLOPT_NOPROGRESS, global->noprogress?1L:0L);
         if(config->no_body) {
           my_setopt(curl, CURLOPT_NOBODY, 1L);
           my_setopt(curl, CURLOPT_HEADER, 1L);
         if(config->no_body) {
           my_setopt(curl, CURLOPT_NOBODY, 1L);
           my_setopt(curl, CURLOPT_HEADER, 1L);
@@ -971,6 +851,9 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
         else if(!config->use_metalink)
           my_setopt(curl, CURLOPT_HEADER, config->include_headers?1L:0L);
 
         else if(!config->use_metalink)
           my_setopt(curl, CURLOPT_HEADER, config->include_headers?1L:0L);
 
+        if(config->xoauth2_bearer)
+          my_setopt_str(curl, CURLOPT_XOAUTH2_BEARER, config->xoauth2_bearer);
+
 #if !defined(CURL_DISABLE_PROXY)
         {
           /* TODO: Make this a run-time check instead of compile-time one. */
 #if !defined(CURL_DISABLE_PROXY)
         {
           /* TODO: Make this a run-time check instead of compile-time one. */
@@ -1029,6 +912,8 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
           my_setopt(curl, CURLOPT_NETRC_FILE, config->netrc_file);
 
         my_setopt(curl, CURLOPT_TRANSFERTEXT, config->use_ascii?1L:0L);
           my_setopt(curl, CURLOPT_NETRC_FILE, config->netrc_file);
 
         my_setopt(curl, CURLOPT_TRANSFERTEXT, config->use_ascii?1L:0L);
+        if(config->login_options)
+          my_setopt_str(curl, CURLOPT_LOGIN_OPTIONS, config->login_options);
         my_setopt_str(curl, CURLOPT_USERPWD, config->userpwd);
         my_setopt_str(curl, CURLOPT_RANGE, config->range);
         my_setopt(curl, CURLOPT_ERRORBUFFER, errorbuffer);
         my_setopt_str(curl, CURLOPT_USERPWD, config->userpwd);
         my_setopt_str(curl, CURLOPT_RANGE, config->range);
         my_setopt(curl, CURLOPT_ERRORBUFFER, errorbuffer);
@@ -1062,6 +947,12 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
           my_setopt_str(curl, CURLOPT_USERAGENT, config->useragent);
           my_setopt_slist(curl, CURLOPT_HTTPHEADER, config->headers);
 
           my_setopt_str(curl, CURLOPT_USERAGENT, config->useragent);
           my_setopt_slist(curl, CURLOPT_HTTPHEADER, config->headers);
 
+          /* new in libcurl 7.36.0 */
+          if(config->proxyheaders) {
+            my_setopt_slist(curl, CURLOPT_PROXYHEADER, config->proxyheaders);
+            my_setopt(curl, CURLOPT_HEADEROPT, CURLHEADER_SEPARATE);
+          }
+
           /* new in libcurl 7.5 */
           my_setopt(curl, CURLOPT_MAXREDIRS, config->maxredirs);
 
           /* new in libcurl 7.5 */
           my_setopt(curl, CURLOPT_MAXREDIRS, config->maxredirs);
 
@@ -1134,6 +1025,9 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
         if(config->crlfile)
           my_setopt_str(curl, CURLOPT_CRLFILE, config->crlfile);
 
         if(config->crlfile)
           my_setopt_str(curl, CURLOPT_CRLFILE, config->crlfile);
 
+        if(config->pinnedpubkey)
+          my_setopt_str(curl, CURLOPT_PINNEDPUBLICKEY, config->pinnedpubkey);
+
         if(curlinfo->features & CURL_VERSION_SSL) {
           if(config->insecure_ok) {
             my_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
         if(curlinfo->features & CURL_VERSION_SSL) {
           if(config->insecure_ok) {
             my_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
@@ -1150,21 +1044,21 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
           if(!config->insecure_ok) {
             char *home;
             char *file;
           if(!config->insecure_ok) {
             char *home;
             char *file;
-            res = CURLE_OUT_OF_MEMORY;
+            result = CURLE_OUT_OF_MEMORY;
             home = homedir();
             if(home) {
               file = aprintf("%s/%sssh/known_hosts", home, DOT_CHAR);
               if(file) {
                 /* new in curl 7.19.6 */
             home = homedir();
             if(home) {
               file = aprintf("%s/%sssh/known_hosts", home, DOT_CHAR);
               if(file) {
                 /* new in curl 7.19.6 */
-                res = res_setopt_str(curl, CURLOPT_SSH_KNOWNHOSTS, file);
+                result = res_setopt_str(curl, CURLOPT_SSH_KNOWNHOSTS, file);
                 curl_free(file);
                 curl_free(file);
-                if(res == CURLE_UNKNOWN_OPTION)
+                if(result == CURLE_UNKNOWN_OPTION)
                   /* libssh2 version older than 1.1.1 */
                   /* libssh2 version older than 1.1.1 */
-                  res = CURLE_OK;
+                  result = CURLE_OK;
               }
               Curl_safefree(home);
             }
               }
               Curl_safefree(home);
             }
-            if(res)
+            if(result)
               goto show_error;
           }
         }
               goto show_error;
           }
         }
@@ -1180,21 +1074,23 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
         my_setopt_slist(curl, CURLOPT_PREQUOTE, config->prequote);
 
 #if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_COOKIES)
         my_setopt_slist(curl, CURLOPT_PREQUOTE, config->prequote);
 
 #if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_COOKIES)
-        {
-          /* TODO: Make this a run-time check instead of compile-time one. */
-
-          if(config->cookie)
-            my_setopt_str(curl, CURLOPT_COOKIE, config->cookie);
+        if(config->cookie)
+          my_setopt_str(curl, CURLOPT_COOKIE, config->cookie);
 
 
-          if(config->cookiefile)
-            my_setopt_str(curl, CURLOPT_COOKIEFILE, config->cookiefile);
+        if(config->cookiefile)
+          my_setopt_str(curl, CURLOPT_COOKIEFILE, config->cookiefile);
 
 
-          /* new in libcurl 7.9 */
-          if(config->cookiejar)
-            my_setopt_str(curl, CURLOPT_COOKIEJAR, config->cookiejar);
+        /* new in libcurl 7.9 */
+        if(config->cookiejar)
+          my_setopt_str(curl, CURLOPT_COOKIEJAR, config->cookiejar);
 
 
-          /* new in libcurl 7.9.7 */
-          my_setopt(curl, CURLOPT_COOKIESESSION, config->cookiesession?1L:0L);
+        /* new in libcurl 7.9.7 */
+        my_setopt(curl, CURLOPT_COOKIESESSION, config->cookiesession?1L:0L);
+#else
+        if(config->cookie || config->cookiefile || config->cookiejar) {
+          warnf(config, "cookie option(s) used even though cookie support "
+                "is disabled!\n");
+          return CURLE_NOT_BUILT_IN;
         }
 #endif
 
         }
 #endif
 
@@ -1202,21 +1098,33 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
         my_setopt_enum(curl, CURLOPT_TIMECONDITION, (long)config->timecond);
         my_setopt(curl, CURLOPT_TIMEVALUE, (long)config->condtime);
         my_setopt_str(curl, CURLOPT_CUSTOMREQUEST, config->customrequest);
         my_setopt_enum(curl, CURLOPT_TIMECONDITION, (long)config->timecond);
         my_setopt(curl, CURLOPT_TIMEVALUE, (long)config->condtime);
         my_setopt_str(curl, CURLOPT_CUSTOMREQUEST, config->customrequest);
-        my_setopt(curl, CURLOPT_STDERR, config->errors);
+        my_setopt(curl, CURLOPT_STDERR, global->errors);
 
         /* three new ones in libcurl 7.3: */
         my_setopt_str(curl, CURLOPT_INTERFACE, config->iface);
         my_setopt_str(curl, CURLOPT_KRBLEVEL, config->krblevel);
 
         progressbarinit(&progressbar, config);
 
         /* three new ones in libcurl 7.3: */
         my_setopt_str(curl, CURLOPT_INTERFACE, config->iface);
         my_setopt_str(curl, CURLOPT_KRBLEVEL, config->krblevel);
 
         progressbarinit(&progressbar, config);
-        if((config->progressmode == CURL_PROGRESS_BAR) &&
-           !config->noprogress && !config->mute) {
+        if((global->progressmode == CURL_PROGRESS_BAR) &&
+           !global->noprogress && !global->mute) {
           /* we want the alternative style, then we have to implement it
              ourselves! */
           /* we want the alternative style, then we have to implement it
              ourselves! */
-          my_setopt(curl, CURLOPT_PROGRESSFUNCTION, tool_progress_cb);
-          my_setopt(curl, CURLOPT_PROGRESSDATA, &progressbar);
+          my_setopt(curl, CURLOPT_XFERINFOFUNCTION, tool_progress_cb);
+          my_setopt(curl, CURLOPT_XFERINFODATA, &progressbar);
         }
 
         }
 
+        /* new in libcurl 7.24.0: */
+        if(config->dns_servers)
+          my_setopt_str(curl, CURLOPT_DNS_SERVERS, config->dns_servers);
+
+        /* new in libcurl 7.33.0: */
+        if(config->dns_interface)
+          my_setopt_str(curl, CURLOPT_DNS_INTERFACE, config->dns_interface);
+        if(config->dns_ipv4_addr)
+          my_setopt_str(curl, CURLOPT_DNS_LOCAL_IP4, config->dns_ipv4_addr);
+        if(config->dns_ipv6_addr)
+        my_setopt_str(curl, CURLOPT_DNS_LOCAL_IP6, config->dns_ipv6_addr);
+
         /* new in libcurl 7.6.2: */
         my_setopt_slist(curl, CURLOPT_TELNETOPTIONS, config->telnet_options);
 
         /* new in libcurl 7.6.2: */
         my_setopt_slist(curl, CURLOPT_TELNETOPTIONS, config->telnet_options);
 
@@ -1239,7 +1147,7 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
           /* disable it */
           my_setopt(curl, CURLOPT_FTP_USE_EPRT, 0L);
 
           /* disable it */
           my_setopt(curl, CURLOPT_FTP_USE_EPRT, 0L);
 
-        if(config->tracetype != TRACE_NONE) {
+        if(global->tracetype != TRACE_NONE) {
           my_setopt(curl, CURLOPT_DEBUGFUNCTION, tool_debug_cb);
           my_setopt(curl, CURLOPT_DEBUGDATA, config);
           my_setopt(curl, CURLOPT_VERBOSE, 1L);
           my_setopt(curl, CURLOPT_DEBUGFUNCTION, tool_debug_cb);
           my_setopt(curl, CURLOPT_DEBUGDATA, config);
           my_setopt(curl, CURLOPT_VERBOSE, 1L);
@@ -1247,8 +1155,8 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
 
         /* new in curl 7.9.3 */
         if(config->engine) {
 
         /* new in curl 7.9.3 */
         if(config->engine) {
-          res = res_setopt_str(curl, CURLOPT_SSLENGINE, config->engine);
-          if(res)
+          result = res_setopt_str(curl, CURLOPT_SSLENGINE, config->engine);
+          if(result)
             goto show_error;
           my_setopt(curl, CURLOPT_SSLENGINE_DEFAULT, 1L);
         }
             goto show_error;
           my_setopt(curl, CURLOPT_SSLENGINE_DEFAULT, 1L);
         }
@@ -1415,6 +1323,19 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
         if(config->sasl_ir)
           my_setopt(curl, CURLOPT_SASL_IR, 1L);
 
         if(config->sasl_ir)
           my_setopt(curl, CURLOPT_SASL_IR, 1L);
 
+        if(config->nonpn) {
+          my_setopt(curl, CURLOPT_SSL_ENABLE_NPN, 0L);
+        }
+
+        if(config->noalpn) {
+          my_setopt(curl, CURLOPT_SSL_ENABLE_ALPN, 0L);
+        }
+
+        /* new in 7.40.0 */
+        if(config->unix_socket_path)
+          my_setopt_str(curl, CURLOPT_UNIX_SOCKET_PATH,
+                        config->unix_socket_path);
+
         /* initialize retry vars for loop below */
         retry_sleep_default = (config->retry_delay) ?
           config->retry_delay*1000L : RETRY_SLEEP_DEFAULT; /* ms */
         /* initialize retry vars for loop below */
         retry_sleep_default = (config->retry_delay) ?
           config->retry_delay*1000L : RETRY_SLEEP_DEFAULT; /* ms */
@@ -1424,8 +1345,8 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
         retrystart = tvnow();
 
 #ifndef CURL_DISABLE_LIBCURL_OPTION
         retrystart = tvnow();
 
 #ifndef CURL_DISABLE_LIBCURL_OPTION
-        res = easysrc_perform();
-        if(res) {
+        result = easysrc_perform();
+        if(result) {
           goto show_error;
         }
 #endif
           goto show_error;
         }
 #endif
@@ -1438,20 +1359,26 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
               metalink_parser_context_delete(outs.metalink_parser);
             outs.metalink_parser = metalink_parser_context_new();
             if(outs.metalink_parser == NULL) {
               metalink_parser_context_delete(outs.metalink_parser);
             outs.metalink_parser = metalink_parser_context_new();
             if(outs.metalink_parser == NULL) {
-              res = CURLE_OUT_OF_MEMORY;
+              result = CURLE_OUT_OF_MEMORY;
               goto show_error;
             }
               goto show_error;
             }
-            fprintf(config->errors, "Metalink: parsing (%s) metalink/XML...\n",
-                    this_url);
+            fprintf(config->global->errors,
+                    "Metalink: parsing (%s) metalink/XML...\n", this_url);
           }
           else if(metalink)
           }
           else if(metalink)
-            fprintf(config->errors, "Metalink: fetching (%s) from (%s)...\n",
+            fprintf(config->global->errors,
+                    "Metalink: fetching (%s) from (%s)...\n",
                     mlfile->filename, this_url);
 #endif /* USE_METALINK */
 
                     mlfile->filename, this_url);
 #endif /* USE_METALINK */
 
-          res = curl_easy_perform(curl);
+#ifdef CURLDEBUG
+          if(config->test_event_based)
+            result = curl_easy_perform_ev(curl);
+          else
+#endif
+          result = curl_easy_perform(curl);
 
 
-          if(outs.is_cd_filename && outs.stream && !config->mute &&
+          if(outs.is_cd_filename && outs.stream && !global->mute &&
              outs.filename)
             printf("curl: Saved to filename '%s'\n", outs.filename);
 
              outs.filename)
             printf("curl: Saved to filename '%s'\n", outs.filename);
 
@@ -1469,15 +1396,15 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
               RETRY_LAST /* not used */
             } retry = RETRY_NO;
             long response;
               RETRY_LAST /* not used */
             } retry = RETRY_NO;
             long response;
-            if((CURLE_OPERATION_TIMEDOUT == res) ||
-               (CURLE_COULDNT_RESOLVE_HOST == res) ||
-               (CURLE_COULDNT_RESOLVE_PROXY == res) ||
-               (CURLE_FTP_ACCEPT_TIMEOUT == res))
+            if((CURLE_OPERATION_TIMEDOUT == result) ||
+               (CURLE_COULDNT_RESOLVE_HOST == result) ||
+               (CURLE_COULDNT_RESOLVE_PROXY == result) ||
+               (CURLE_FTP_ACCEPT_TIMEOUT == result))
               /* retry timeout always */
               retry = RETRY_TIMEOUT;
               /* retry timeout always */
               retry = RETRY_TIMEOUT;
-            else if((CURLE_OK == res) ||
+            else if((CURLE_OK == result) ||
                     (config->failonerror &&
                     (config->failonerror &&
-                     (CURLE_HTTP_RETURNED_ERROR == res))) {
+                     (CURLE_HTTP_RETURNED_ERROR == result))) {
               /* If it returned OK. _or_ failonerror was enabled and it
                  returned due to such an error, check for HTTP transient
                  errors to retry on. */
               /* If it returned OK. _or_ failonerror was enabled and it
                  returned due to such an error, check for HTTP transient
                  errors to retry on. */
@@ -1508,7 +1435,7 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
                 }
               }
             } /* if CURLE_OK */
                 }
               }
             } /* if CURLE_OK */
-            else if(res) {
+            else if(result) {
               curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response);
 
               if(response/100 == 4)
               curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response);
 
               if(response/100 == 4)
@@ -1539,8 +1466,8 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
               if(outs.bytes && outs.filename) {
                 /* We have written data to a output file, we truncate file
                  */
               if(outs.bytes && outs.filename) {
                 /* We have written data to a output file, we truncate file
                  */
-                if(!config->mute)
-                  fprintf(config->errors, "Throwing away %"
+                if(!global->mute)
+                  fprintf(global->errors, "Throwing away %"
                           CURL_FORMAT_CURL_OFF_T " bytes\n",
                           outs.bytes);
                 fflush(outs.stream);
                           CURL_FORMAT_CURL_OFF_T " bytes\n",
                           outs.bytes);
                 fflush(outs.stream);
@@ -1549,10 +1476,10 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
                 if(ftruncate( fileno(outs.stream), outs.init)) {
                   /* when truncate fails, we can't just append as then we'll
                      create something strange, bail out */
                 if(ftruncate( fileno(outs.stream), outs.init)) {
                   /* when truncate fails, we can't just append as then we'll
                      create something strange, bail out */
-                  if(!config->mute)
-                    fprintf(config->errors,
+                  if(!global->mute)
+                    fprintf(global->errors,
                             "failed to truncate, exiting\n");
                             "failed to truncate, exiting\n");
-                  res = CURLE_WRITE_ERROR;
+                  result = CURLE_WRITE_ERROR;
                   goto quit_urls;
                 }
                 /* now seek to the end of the file, the position where we
                   goto quit_urls;
                 }
                 /* now seek to the end of the file, the position where we
@@ -1575,7 +1502,7 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
                not. Basically, we want to try the next resource if
                download was not successful. */
             long response;
                not. Basically, we want to try the next resource if
                download was not successful. */
             long response;
-            if(CURLE_OK == res) {
+            if(CURLE_OK == result) {
               /* TODO We want to try next resource when download was
                  not successful. How to know that? */
               char *effective_url = NULL;
               /* TODO We want to try next resource when download was
                  not successful. How to know that? */
               char *effective_url = NULL;
@@ -1586,7 +1513,7 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
                 curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response);
                 if(response != 200 && response != 206) {
                   metalink_next_res = 1;
                 curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response);
                 if(response != 200 && response != 206) {
                   metalink_next_res = 1;
-                  fprintf(config->errors,
+                  fprintf(global->errors,
                           "Metalink: fetching (%s) from (%s) FAILED "
                           "(HTTP status code %d)\n",
                           mlfile->filename, this_url, response);
                           "Metalink: fetching (%s) from (%s) FAILED "
                           "(HTTP status code %d)\n",
                           mlfile->filename, this_url, response);
@@ -1595,15 +1522,15 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
             }
             else {
               metalink_next_res = 1;
             }
             else {
               metalink_next_res = 1;
-              fprintf(config->errors,
+              fprintf(global->errors,
                       "Metalink: fetching (%s) from (%s) FAILED (%s)\n",
                       mlfile->filename, this_url,
                       (errorbuffer[0]) ?
                       "Metalink: fetching (%s) from (%s) FAILED (%s)\n",
                       mlfile->filename, this_url,
                       (errorbuffer[0]) ?
-                      errorbuffer : curl_easy_strerror((CURLcode)res));
+                      errorbuffer : curl_easy_strerror(result));
             }
           }
           if(metalink && !metalink_next_res)
             }
           }
           if(metalink && !metalink_next_res)
-            fprintf(config->errors, "Metalink: fetching (%s) from (%s) OK\n",
+            fprintf(global->errors, "Metalink: fetching (%s) from (%s) OK\n",
                     mlfile->filename, this_url);
 
           /* In all ordinary cases, just break out of loop here */
                     mlfile->filename, this_url);
 
           /* In all ordinary cases, just break out of loop here */
@@ -1611,7 +1538,7 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
 
         }
 
 
         }
 
-        if((config->progressmode == CURL_PROGRESS_BAR) &&
+        if((global->progressmode == CURL_PROGRESS_BAR) &&
            progressbar.calls)
           /* if the custom progress bar has been displayed, we output a
              newline here */
            progressbar.calls)
           /* if the custom progress bar has been displayed, we output a
              newline here */
@@ -1635,16 +1562,16 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
 #ifdef __VMS
         if(is_vms_shell()) {
           /* VMS DCL shell behavior */
 #ifdef __VMS
         if(is_vms_shell()) {
           /* VMS DCL shell behavior */
-          if(!config->showerror)
+          if(!global->showerror)
             vms_show = VMSSTS_HIDE;
         }
         else
 #endif
             vms_show = VMSSTS_HIDE;
         }
         else
 #endif
-        if(res && config->showerror) {
-          fprintf(config->errors, "curl: (%d) %s\n", res, (errorbuffer[0]) ?
-                  errorbuffer : curl_easy_strerror((CURLcode)res));
-          if(res == CURLE_SSL_CACERT)
-            fprintf(config->errors, "%s%s",
+        if(result && global->showerror) {
+          fprintf(global->errors, "curl: (%d) %s\n", result, (errorbuffer[0]) ?
+                  errorbuffer : curl_easy_strerror(result));
+          if(result == CURLE_SSL_CACERT)
+            fprintf(global->errors, "%s%s",
                     CURL_CA_CERT_ERRORMSG1, CURL_CA_CERT_ERRORMSG2);
         }
 
                     CURL_CA_CERT_ERRORMSG1, CURL_CA_CERT_ERRORMSG2);
         }
 
@@ -1664,7 +1591,7 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
         quit_urls:
 
         /* Set file extended attributes */
         quit_urls:
 
         /* Set file extended attributes */
-        if(!res && config->xattr && outs.fopened && outs.stream) {
+        if(!result && config->xattr && outs.fopened && outs.stream) {
           int rc = fwrite_xattr(curl, fileno(outs.stream));
           if(rc)
             warnf(config, "Error setting extended attributes: %s\n",
           int rc = fwrite_xattr(curl, fileno(outs.stream));
           if(rc)
             warnf(config, "Error setting extended attributes: %s\n",
@@ -1674,24 +1601,24 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
         /* Close the file */
         if(outs.fopened && outs.stream) {
           int rc = fclose(outs.stream);
         /* Close the file */
         if(outs.fopened && outs.stream) {
           int rc = fclose(outs.stream);
-          if(!res && rc) {
+          if(!result && rc) {
             /* something went wrong in the writing process */
             /* something went wrong in the writing process */
-            res = CURLE_WRITE_ERROR;
-            fprintf(config->errors, "(%d) Failed writing body\n", res);
+            result = CURLE_WRITE_ERROR;
+            fprintf(global->errors, "(%d) Failed writing body\n", result);
           }
         }
         else if(!outs.s_isreg && outs.stream) {
           /* Dump standard stream buffered data */
           int rc = fflush(outs.stream);
           }
         }
         else if(!outs.s_isreg && outs.stream) {
           /* Dump standard stream buffered data */
           int rc = fflush(outs.stream);
-          if(!res && rc) {
+          if(!result && rc) {
             /* something went wrong in the writing process */
             /* something went wrong in the writing process */
-            res = CURLE_WRITE_ERROR;
-            fprintf(config->errors, "(%d) Failed writing body\n", res);
+            result = CURLE_WRITE_ERROR;
+            fprintf(global->errors, "(%d) Failed writing body\n", result);
           }
         }
 
 #ifdef __AMIGA__
           }
         }
 
 #ifdef __AMIGA__
-        if(!res && outs.s_isreg && outs.filename) {
+        if(!result && outs.s_isreg && outs.filename) {
           /* Set the url (up to 80 chars) as comment for the file */
           if(strlen(url) > 78)
             url[79] = '\0';
           /* Set the url (up to 80 chars) as comment for the file */
           if(strlen(url) > 78)
             url[79] = '\0';
@@ -1701,7 +1628,7 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
 
 #ifdef HAVE_UTIME
         /* File time can only be set _after_ the file has been closed */
 
 #ifdef HAVE_UTIME
         /* File time can only be set _after_ the file has been closed */
-        if(!res && config->remote_time && outs.s_isreg && outs.filename) {
+        if(!result && config->remote_time && outs.s_isreg && outs.filename) {
           /* Ask libcurl if we got a remote file time */
           long filetime = -1;
           curl_easy_getinfo(curl, CURLINFO_FILETIME, &filetime);
           /* Ask libcurl if we got a remote file time */
           long filetime = -1;
           curl_easy_getinfo(curl, CURLINFO_FILETIME, &filetime);
@@ -1715,16 +1642,17 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
 #endif
 
 #ifdef USE_METALINK
 #endif
 
 #ifdef USE_METALINK
-        if(!metalink && config->use_metalink && res == CURLE_OK) {
+        if(!metalink && config->use_metalink && result == CURLE_OK) {
           int rv = parse_metalink(config, &outs, this_url);
           if(rv == 0)
           int rv = parse_metalink(config, &outs, this_url);
           if(rv == 0)
-            fprintf(config->errors, "Metalink: parsing (%s) OK\n", this_url);
+            fprintf(config->global->errors, "Metalink: parsing (%s) OK\n",
+                    this_url);
           else if(rv == -1)
           else if(rv == -1)
-            fprintf(config->errors, "Metalink: parsing (%s) FAILED\n",
+            fprintf(config->global->errors, "Metalink: parsing (%s) FAILED\n",
                     this_url);
         }
                     this_url);
         }
-        else if(metalink && res == CURLE_OK && !metalink_next_res) {
-          int rv = metalink_check_hash(config, mlfile, outs.filename);
+        else if(metalink && result == CURLE_OK && !metalink_next_res) {
+          int rv = metalink_check_hash(global, mlfile, outs.filename);
           if(rv == 0) {
             metalink_next_res = 1;
           }
           if(rv == 0) {
             metalink_next_res = 1;
           }
@@ -1751,7 +1679,7 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
 
         if(metalink) {
           /* Should exit if error is fatal. */
 
         if(metalink) {
           /* Should exit if error is fatal. */
-          if(is_fatal_error(res)) {
+          if(is_fatal_error(result)) {
             break;
           }
           if(!metalink_next_res)
             break;
           }
           if(!metalink_next_res)
@@ -1766,10 +1694,10 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
         else
         if(urlnum > 1) {
           /* when url globbing, exit loop upon critical error */
         else
         if(urlnum > 1) {
           /* when url globbing, exit loop upon critical error */
-          if(is_fatal_error(res))
+          if(is_fatal_error(result))
             break;
         }
             break;
         }
-        else if(res)
+        else if(result)
           /* when not url globbing, exit loop upon any error */
           break;
 
           /* when not url globbing, exit loop upon any error */
           break;
 
@@ -1787,10 +1715,10 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
 
       if(infilenum > 1) {
         /* when file globbing, exit loop upon critical error */
 
       if(infilenum > 1) {
         /* when file globbing, exit loop upon critical error */
-        if(is_fatal_error(res))
+        if(is_fatal_error(result))
           break;
       }
           break;
       }
-      else if(res)
+      else if(result)
         /* when not file globbing, exit loop upon any error */
         break;
 
         /* when not file globbing, exit loop upon any error */
         break;
 
@@ -1816,7 +1744,7 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
     /*
     ** Bail out upon critical errors
     */
     /*
     ** Bail out upon critical errors
     */
-    if(is_fatal_error(res))
+    if(is_fatal_error(result))
       goto quit_curl;
 
   } /* for-loop through all URLs */
       goto quit_curl;
 
   } /* for-loop through all URLs */
@@ -1827,49 +1755,115 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
 
   quit_curl:
 
 
   quit_curl:
 
+  /* Reset the global config variables */
+  global->noprogress = orig_noprogress;
+  global->isatty = orig_isatty;
+
   /* Free function-local referenced allocated memory */
   Curl_safefree(httpgetfields);
 
   /* Free list of given URLs */
   clean_getout(config);
 
   /* Free function-local referenced allocated memory */
   Curl_safefree(httpgetfields);
 
   /* Free list of given URLs */
   clean_getout(config);
 
-  /* Cleanup the curl handle now that our
-     progressbar struct is still in scope */
-  if(curl) {
-    curl_easy_cleanup(curl);
-    config->easy = curl = NULL;
-  }
-#ifndef CURL_DISABLE_LIBCURL_OPTION
-  easysrc_cleanup();
-#endif
-
   hdrcbdata.heads = NULL;
 
   /* Close function-local opened file descriptors */
   hdrcbdata.heads = NULL;
 
   /* Close function-local opened file descriptors */
-
   if(heads.fopened && heads.stream)
     fclose(heads.stream);
   if(heads.fopened && heads.stream)
     fclose(heads.stream);
+
   if(heads.alloc_filename)
     Curl_safefree(heads.filename);
 
   if(heads.alloc_filename)
     Curl_safefree(heads.filename);
 
-  if(config->trace_fopened && config->trace_stream)
-    fclose(config->trace_stream);
+  /* Release metalink related resources here */
+  clean_metalink(config);
+
+  return result;
+}
 
 
+CURLcode operate(struct GlobalConfig *config, int argc, argv_item_t argv[])
+{
+  CURLcode result = CURLE_OK;
+
+  /* Setup proper locale from environment */
+#ifdef HAVE_SETLOCALE
+  setlocale(LC_ALL, "");
+#endif
+
+  /* Parse .curlrc if necessary */
+  if((argc == 1) || (!curlx_strequal(argv[1], "-q"))) {
+    parseconfig(NULL, config); /* ignore possible failure */
+
+    /* If we had no arguments then make sure a url was specified in .curlrc */
+    if((argc < 2) && (!config->first->url_list)) {
+      helpf(config->errors, NULL);
+      result = CURLE_FAILED_INIT;
+    }
+  }
+
+  if(!result) {
+    /* Parse the command line arguments */
+    ParameterError res = parse_args(config, argc, argv);
+    if(res) {
+      result = CURLE_OK;
+
+      /* Check if we were asked for the help */
+      if(res == PARAM_HELP_REQUESTED)
+        tool_help();
+      /* Check if we were asked for the manual */
+      else if(res == PARAM_MANUAL_REQUESTED)
+        hugehelp();
+      /* Check if we were asked for the version information */
+      else if(res == PARAM_VERSION_INFO_REQUESTED)
+        tool_version_info();
+      /* Check if we were asked to list the SSL engines */
+      else if(res == PARAM_ENGINES_REQUESTED)
+        tool_list_engines(config->easy);
+      else
+        result = CURLE_FAILED_INIT;
+    }
+    else {
 #ifndef CURL_DISABLE_LIBCURL_OPTION
 #ifndef CURL_DISABLE_LIBCURL_OPTION
-  /* Dump the libcurl code if previously enabled.
-     NOTE: that this function relies on config->errors amongst other things
-     so not everything can be closed and cleaned before this is called */
-  dumpeasysrc(config);
+      /* Initialise the libcurl source output */
+      result = easysrc_init();
 #endif
 
 #endif
 
-  if(config->errors_fopened && config->errors)
-    fclose(config->errors);
+      /* Perform the main operations */
+      if(!result) {
+        size_t count = 0;
+        struct OperationConfig *operation = config->first;
 
 
-  /* Release metalink related resources here */
-  clean_metalink(config);
+        /* Get the required aguments for each operation */
+        while(!result && operation) {
+          result = get_args(operation, count++);
 
 
-  main_free(); /* cleanup */
+          operation = operation->next;
+        }
 
 
-  return res;
-}
+        /* Set the current operation pointer */
+        config->current = config->first;
 
 
+        /* Perform each operation */
+        while(!result && config->current) {
+          result = operate_do(config, config->current);
+
+          config->current = config->current->next;
+        }
+
+#ifndef CURL_DISABLE_LIBCURL_OPTION
+        /* Cleanup the libcurl source output */
+        easysrc_cleanup();
+
+        /* set current back to first so that isn't NULL */
+        config->current = config->first;
+
+        /* Dump the libcurl code if previously enabled */
+        dumpeasysrc(config);
+#endif
+      }
+      else
+        helpf(config->errors, "out of memory\n");
+    }
+  }
+
+  return result;
+}
index 5a0a4a0..1d5c1a9 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -23,7 +23,7 @@
  ***************************************************************************/
 #include "tool_setup.h"
 
  ***************************************************************************/
 #include "tool_setup.h"
 
-int operate(struct Configurable *config, int argc, argv_item_t argv[]);
+CURLcode operate(struct GlobalConfig *config, int argc, argv_item_t argv[]);
 
 #endif /* HEADER_CURL_TOOL_OPERATE_H */
 
 
 #endif /* HEADER_CURL_TOOL_OPERATE_H */
 
index c33ca50..abf9496 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "tool_cfgable.h"
 #include "tool_convert.h"
 #include "tool_operhlp.h"
 #include "tool_cfgable.h"
 #include "tool_convert.h"
 #include "tool_operhlp.h"
-#include "tool_version.h"
 #include "tool_metalink.h"
 
 #include "memdebug.h" /* keep this as LAST include */
 
 #include "tool_metalink.h"
 
 #include "memdebug.h" /* keep this as LAST include */
 
-/*
- * my_useragent: returns allocated string with default user agent
- */
-char *my_useragent(void)
-{
-  return strdup( CURL_NAME "/" CURL_VERSION );
-}
-
-/*
- * Print list of OpenSSL supported engines
- */
-void list_engines(const struct curl_slist *engines)
-{
-  puts("Build-time engines:");
-  if(!engines) {
-    puts("  <none>");
-    return;
-  }
-  for(; engines; engines = engines->next)
-    printf("  %s\n", engines->data);
-}
-
-void clean_getout(struct Configurable *config)
+void clean_getout(struct OperationConfig *config)
 {
   struct getout *next;
   struct getout *node = config->url_list;
 {
   struct getout *next;
   struct getout *node = config->url_list;
@@ -163,15 +140,16 @@ CURLcode get_url_file_name(char **filename, const char *url)
     pc = url;
   pc = strrchr(pc, '/');
 
     pc = url;
   pc = strrchr(pc, '/');
 
-  if(pc) {
+  if(pc)
     /* duplicate the string beyond the slash */
     pc++;
     /* duplicate the string beyond the slash */
     pc++;
-    if(*pc) {
-      *filename = strdup(pc);
-      if(!*filename)
-        return CURLE_OUT_OF_MEMORY;
-    }
-  }
+  else
+    /* no slash => empty string */
+    pc = "";
+
+  *filename = strdup(pc);
+  if(!*filename)
+    return CURLE_OUT_OF_MEMORY;
 
   /* in case we built debug enabled, we allow an environment variable
    * named CURL_TESTDIR to prefix the given file name to put it into a
 
   /* in case we built debug enabled, we allow an environment variable
    * named CURL_TESTDIR to prefix the given file name to put it into a
@@ -186,66 +164,11 @@ CURLcode get_url_file_name(char **filename, const char *url)
       Curl_safefree(*filename);
       *filename = strdup(buffer); /* clone the buffer */
       curl_free(tdir);
       Curl_safefree(*filename);
       *filename = strdup(buffer); /* clone the buffer */
       curl_free(tdir);
+      if(!*filename)
+        return CURLE_OUT_OF_MEMORY;
     }
   }
 #endif
 
   return CURLE_OK;
 }
     }
   }
 #endif
 
   return CURLE_OK;
 }
-
-/*
- * This is the main global constructor for the app. Call this before
- * _any_ libcurl usage. If this fails, *NO* libcurl functions may be
- * used, or havoc may be the result.
- */
-CURLcode main_init(void)
-{
-#if defined(__DJGPP__) || defined(__GO32__)
-  /* stop stat() wasting time */
-  _djstat_flags |= _STAT_INODE | _STAT_EXEC_MAGIC | _STAT_DIRSIZE;
-#endif
-
-  return curl_global_init(CURL_GLOBAL_DEFAULT);
-}
-
-/*
- * This is the main global destructor for the app. Call this after
- * _all_ libcurl usage is done.
- */
-void main_free(void)
-{
-  curl_global_cleanup();
-  convert_cleanup();
-  metalink_cleanup();
-}
-
-#ifdef CURLDEBUG
-void memory_tracking_init(void)
-{
-  char *env;
-  /* if CURL_MEMDEBUG is set, this starts memory tracking message logging */
-  env = curlx_getenv("CURL_MEMDEBUG");
-  if(env) {
-    /* use the value as file name */
-    char fname[CURL_MT_LOGFNAME_BUFSIZE];
-    if(strlen(env) >= CURL_MT_LOGFNAME_BUFSIZE)
-      env[CURL_MT_LOGFNAME_BUFSIZE-1] = '\0';
-    strcpy(fname, env);
-    curl_free(env);
-    curl_memdebug(fname);
-    /* this weird stuff here is to make curl_free() get called
-       before curl_memdebug() as otherwise memory tracking will
-       log a free() without an alloc! */
-  }
-  /* if CURL_MEMLIMIT is set, this enables fail-on-alloc-number-N feature */
-  env = curlx_getenv("CURL_MEMLIMIT");
-  if(env) {
-    char *endptr;
-    long num = strtol(env, &endptr, 10);
-    if((endptr != env) && (endptr == env + strlen(env)) && (num > 0))
-      curl_memlimit(num);
-    curl_free(env);
-  }
-}
-#endif
-
index 806717e..8fcaad6 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  ***************************************************************************/
 #include "tool_setup.h"
 
  ***************************************************************************/
 #include "tool_setup.h"
 
-char *my_useragent(void);
+struct OperationConfig;
 
 
-void list_engines(const struct curl_slist *engines);
-
-void clean_getout(struct Configurable *config);
+void clean_getout(struct OperationConfig *config);
 
 bool output_expected(const char *url, const char *uploadfile);
 
 
 bool output_expected(const char *url, const char *uploadfile);
 
@@ -37,15 +35,5 @@ char *add_file_name_to_url(CURL *curl, char *url, const char *filename);
 
 CURLcode get_url_file_name(char **filename, const char *url);
 
 
 CURLcode get_url_file_name(char **filename, const char *url);
 
-CURLcode main_init(void);
-
-void main_free(void);
-
-#ifdef CURLDEBUG
-void memory_tracking_init(void);
-#else
-#  define memory_tracking_init() Curl_nop_stmt
-#endif
-
 #endif /* HEADER_CURL_TOOL_OPERHLP_H */
 
 #endif /* HEADER_CURL_TOOL_OPERHLP_H */
 
index 86b8a1d..0e05184 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "tool_homedir.h"
 #include "tool_msgs.h"
 #include "tool_paramhlp.h"
 #include "tool_homedir.h"
 #include "tool_msgs.h"
 #include "tool_paramhlp.h"
+#include "tool_version.h"
 
 #include "memdebug.h" /* keep this as LAST include */
 
 
 #include "memdebug.h" /* keep this as LAST include */
 
-struct getout *new_getout(struct Configurable *config)
+struct getout *new_getout(struct OperationConfig *config)
 {
   struct getout *node = calloc(1, sizeof(struct getout));
   struct getout *last = config->url_last;
 {
   struct getout *node = calloc(1, sizeof(struct getout));
   struct getout *last = config->url_last;
@@ -240,7 +241,7 @@ ParameterError str2udouble(double *val, const char *str)
  * data.
  */
 
  * data.
  */
 
-long proto2num(struct Configurable *config, long *val, const char *str)
+long proto2num(struct OperationConfig *config, long *val, const char *str)
 {
   char *buffer;
   const char *sep = ",";
 {
   char *buffer;
   const char *sep = ",";
@@ -271,6 +272,8 @@ long proto2num(struct Configurable *config, long *val, const char *str)
     { "smtps", CURLPROTO_SMTPS },
     { "rtsp", CURLPROTO_RTSP },
     { "gopher", CURLPROTO_GOPHER },
     { "smtps", CURLPROTO_SMTPS },
     { "rtsp", CURLPROTO_RTSP },
     { "gopher", CURLPROTO_GOPHER },
+    { "smb", CURLPROTO_SMB },
+    { "smbs", CURLPROTO_SMBS },
     { NULL, 0 }
   };
 
     { NULL, 0 }
   };
 
@@ -365,14 +368,16 @@ ParameterError str2offset(curl_off_t *val, const char *str)
   return PARAM_BAD_NUMERIC;
 }
 
   return PARAM_BAD_NUMERIC;
 }
 
-ParameterError checkpasswd(const char *kind, /* for what purpose */
-                           char **userpwd)   /* pointer to allocated string */
+static CURLcode checkpasswd(const char *kind, /* for what purpose */
+                            const size_t i,   /* operation index */
+                            const bool last,  /* TRUE if last operation */
+                            char **userpwd)   /* pointer to allocated string */
 {
   char *psep;
   char *osep;
 
   if(!*userpwd)
 {
   char *psep;
   char *osep;
 
   if(!*userpwd)
-    return PARAM_OK;
+    return CURLE_OK;
 
   /* Attempt to find the password separator */
   psep = strchr(*userpwd, ':');
 
   /* Attempt to find the password separator */
   psep = strchr(*userpwd, ':');
@@ -392,9 +397,15 @@ ParameterError checkpasswd(const char *kind, /* for what purpose */
       *osep = '\0';
 
     /* build a nice-looking prompt */
       *osep = '\0';
 
     /* build a nice-looking prompt */
-    curlx_msnprintf(prompt, sizeof(prompt),
-                    "Enter %s password for user '%s':",
-                    kind, *userpwd);
+    if(!i && last)
+      curlx_msnprintf(prompt, sizeof(prompt),
+                      "Enter %s password for user '%s':",
+                      kind, *userpwd);
+    else
+      curlx_msnprintf(prompt, sizeof(prompt),
+                      "Enter %s password for user '%s' on URL #%"
+                      CURL_FORMAT_CURL_OFF_TU ":",
+                      kind, *userpwd, i + 1);
 
     /* get password */
     getpass_r(prompt, passwd, sizeof(passwd));
 
     /* get password */
     getpass_r(prompt, passwd, sizeof(passwd));
@@ -408,14 +419,15 @@ ParameterError checkpasswd(const char *kind, /* for what purpose */
                       passwdlen + 1 + /* an extra for the colon */
                       userlen + 1);   /* an extra for the zero */
     if(!passptr)
                       passwdlen + 1 + /* an extra for the colon */
                       userlen + 1);   /* an extra for the zero */
     if(!passptr)
-      return PARAM_NO_MEM;
+      return CURLE_OUT_OF_MEMORY;
 
     /* append the password separated with a colon */
     passptr[userlen] = ':';
     memcpy(&passptr[userlen+1], passwd, passwdlen+1);
     *userpwd = passptr;
   }
 
     /* append the password separated with a colon */
     passptr[userlen] = ':';
     memcpy(&passptr[userlen+1], passwd, passwdlen+1);
     *userpwd = passptr;
   }
-  return PARAM_OK;
+
+  return CURLE_OK;
 }
 
 ParameterError add2list(struct curl_slist **list, const char *ptr)
 }
 
 ParameterError add2list(struct curl_slist **list, const char *ptr)
@@ -429,7 +441,7 @@ ParameterError add2list(struct curl_slist **list, const char *ptr)
   return PARAM_OK;
 }
 
   return PARAM_OK;
 }
 
-int ftpfilemethod(struct Configurable *config, const char *str)
+int ftpfilemethod(struct OperationConfig *config, const char *str)
 {
   if(curlx_raw_equal("singlecwd", str))
     return CURLFTPMETHOD_SINGLECWD;
 {
   if(curlx_raw_equal("singlecwd", str))
     return CURLFTPMETHOD_SINGLECWD;
@@ -441,7 +453,7 @@ int ftpfilemethod(struct Configurable *config, const char *str)
   return CURLFTPMETHOD_MULTICWD;
 }
 
   return CURLFTPMETHOD_MULTICWD;
 }
 
-int ftpcccmethod(struct Configurable *config, const char *str)
+int ftpcccmethod(struct OperationConfig *config, const char *str)
 {
   if(curlx_raw_equal("passive", str))
     return CURLFTPSSL_CCC_PASSIVE;
 {
   if(curlx_raw_equal("passive", str))
     return CURLFTPSSL_CCC_PASSIVE;
@@ -451,7 +463,7 @@ int ftpcccmethod(struct Configurable *config, const char *str)
   return CURLFTPSSL_CCC_PASSIVE;
 }
 
   return CURLFTPSSL_CCC_PASSIVE;
 }
 
-long delegation(struct Configurable *config, char *str)
+long delegation(struct OperationConfig *config, char *str)
 {
   if(curlx_raw_equal("none", str))
     return CURLGSSAPI_DELEGATION_NONE;
 {
   if(curlx_raw_equal("none", str))
     return CURLGSSAPI_DELEGATION_NONE;
@@ -463,3 +475,41 @@ long delegation(struct Configurable *config, char *str)
   return CURLGSSAPI_DELEGATION_NONE;
 }
 
   return CURLGSSAPI_DELEGATION_NONE;
 }
 
+/*
+ * my_useragent: returns allocated string with default user agent
+ */
+static char *my_useragent(void)
+{
+  return strdup(CURL_NAME "/" CURL_VERSION);
+}
+
+CURLcode get_args(struct OperationConfig *config, const size_t i)
+{
+  CURLcode result = CURLE_OK;
+  bool last = (config->next ? FALSE : TRUE);
+
+  /* Check we have a password for the given host user */
+  if(config->userpwd && !config->xoauth2_bearer) {
+    result = checkpasswd("host", i, last, &config->userpwd);
+    if(result)
+      return result;
+  }
+
+  /* Check we have a password for the given proxy user */
+  if(config->proxyuserpwd) {
+    result = checkpasswd("proxy", i, last, &config->proxyuserpwd);
+    if(result)
+      return result;
+  }
+
+  /* Check we have a user agent */
+  if(!config->useragent) {
+    config->useragent = my_useragent();
+    if(!config->useragent) {
+      helpf(config->global->errors, "out of memory\n");
+      result = CURLE_OUT_OF_MEMORY;
+    }
+  }
+
+  return result;
+}
index 24734a5..69d7fd4 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -23,7 +23,7 @@
  ***************************************************************************/
 #include "tool_setup.h"
 
  ***************************************************************************/
 #include "tool_setup.h"
 
-struct getout *new_getout(struct Configurable *config);
+struct getout *new_getout(struct OperationConfig *config);
 
 ParameterError file2string(char **bufp, FILE *file);
 
 
 ParameterError file2string(char **bufp, FILE *file);
 
@@ -36,19 +36,19 @@ ParameterError str2unum(long *val, const char *str);
 ParameterError str2double(double *val, const char *str);
 ParameterError str2udouble(double *val, const char *str);
 
 ParameterError str2double(double *val, const char *str);
 ParameterError str2udouble(double *val, const char *str);
 
-long proto2num(struct Configurable *config, long *val, const char *str);
+long proto2num(struct OperationConfig *config, long *val, const char *str);
 
 ParameterError str2offset(curl_off_t *val, const char *str);
 
 
 ParameterError str2offset(curl_off_t *val, const char *str);
 
-ParameterError checkpasswd(const char *kind, char **userpwd);
+CURLcode get_args(struct OperationConfig *config, const size_t i);
 
 ParameterError add2list(struct curl_slist **list, const char *ptr);
 
 
 ParameterError add2list(struct curl_slist **list, const char *ptr);
 
-int ftpfilemethod(struct Configurable *config, const char *str);
+int ftpfilemethod(struct OperationConfig *config, const char *str);
 
 
-int ftpcccmethod(struct Configurable *config, const char *str);
+int ftpcccmethod(struct OperationConfig *config, const char *str);
 
 
-long delegation(struct Configurable *config, char *str);
+long delegation(struct OperationConfig *config, char *str);
 
 #endif /* HEADER_CURL_TOOL_PARAMHLP_H */
 
 
 #endif /* HEADER_CURL_TOOL_PARAMHLP_H */
 
index 680688a..c5d390b 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "memdebug.h" /* keep this as LAST include */
 
 #define CURLRC DOT_CHAR "curlrc"
 #include "memdebug.h" /* keep this as LAST include */
 
 #define CURLRC DOT_CHAR "curlrc"
-#define ISSEP(x) (((x) == '=') || ((x) == ':'))
+
+/* only acknowledge colon or equals as separators if the option was not
+   specified with an initial dash! */
+#define ISSEP(x,dash) (!dash && (((x) == '=') || ((x) == ':')))
 
 static const char *unslashquote(const char *line, char *param);
 static char *my_get_line(FILE *fp);
 
 /* return 0 on everything-is-fine, and non-zero otherwise */
 
 static const char *unslashquote(const char *line, char *param);
 static char *my_get_line(FILE *fp);
 
 /* return 0 on everything-is-fine, and non-zero otherwise */
-int parseconfig(const char *filename,
-                struct Configurable *config)
+int parseconfig(const char *filename, struct GlobalConfig *global)
 {
   int res;
   FILE *file;
 {
   int res;
   FILE *file;
@@ -50,6 +52,7 @@ int parseconfig(const char *filename,
   bool usedarg;
   char *home;
   int rc = 0;
   bool usedarg;
   char *home;
   int rc = 0;
+  struct OperationConfig *operation = global->first;
 
   if(!filename || !*filename) {
     /* NULL or no file name attempts to load .curlrc from the homedir! */
 
   if(!filename || !*filename) {
     /* NULL or no file name attempts to load .curlrc from the homedir! */
@@ -123,6 +126,7 @@ int parseconfig(const char *filename,
     char *param;
     int lineno = 0;
     bool alloced_param;
     char *param;
     int lineno = 0;
     bool alloced_param;
+    bool dashed_option;
 
     while(NULL != (aline = my_get_line(file))) {
       lineno++;
 
     while(NULL != (aline = my_get_line(file))) {
       lineno++;
@@ -146,7 +150,11 @@ int parseconfig(const char *filename,
 
       /* the option keywords starts here */
       option = line;
 
       /* the option keywords starts here */
       option = line;
-      while(*line && !ISSPACE(*line) && !ISSEP(*line))
+
+      /* the option starts with a dash? */
+      dashed_option = option[0]=='-'?TRUE:FALSE;
+
+      while(*line && !ISSPACE(*line) && !ISSEP(*line, dashed_option))
         line++;
       /* ... and has ended here */
 
         line++;
       /* ... and has ended here */
 
@@ -158,7 +166,7 @@ int parseconfig(const char *filename,
 #endif
 
       /* pass spaces and separator(s) */
 #endif
 
       /* pass spaces and separator(s) */
-      while(*line && (ISSPACE(*line) || ISSEP(*line)))
+      while(*line && (ISSPACE(*line) || ISSEP(*line, dashed_option)))
         line++;
 
       /* the parameter starts here (unless quoted) */
         line++;
 
       /* the parameter starts here (unless quoted) */
@@ -180,9 +188,27 @@ int parseconfig(const char *filename,
         while(*line && !ISSPACE(*line))
           line++;
         *line = '\0'; /* zero terminate */
         while(*line && !ISSPACE(*line))
           line++;
         *line = '\0'; /* zero terminate */
+
+        /* to detect mistakes better, see if there's data following */
+        line++;
+        /* pass all spaces */
+        while(*line && ISSPACE(*line))
+          line++;
+
+        switch(*line) {
+        case '\0':
+        case '\r':
+        case '\n':
+        case '#': /* comment */
+          break;
+        default:
+          warnf(operation, "%s:%d: warning: '%s' uses unquoted white space in"
+                " the line that may cause side-effects!\n",
+                filename, lineno, option);
+        }
       }
 
       }
 
-      if(param && !*param) {
+      if(!*param) {
         /* do this so getparameter can check for required parameters.
            Otherwise it always thinks there's a parameter. */
         if(alloced_param)
         /* do this so getparameter can check for required parameters.
            Otherwise it always thinks there's a parameter. */
         if(alloced_param)
@@ -193,20 +219,49 @@ int parseconfig(const char *filename,
 #ifdef DEBUG_CONFIG
       fprintf(stderr, "PARAM: \"%s\"\n",(param ? param : "(null)"));
 #endif
 #ifdef DEBUG_CONFIG
       fprintf(stderr, "PARAM: \"%s\"\n",(param ? param : "(null)"));
 #endif
-      res = getparameter(option, param, &usedarg, config);
+      res = getparameter(option, param, &usedarg, global, operation);
 
       if(param && *param && !usedarg)
         /* we passed in a parameter that wasn't used! */
         res = PARAM_GOT_EXTRA_PARAMETER;
 
 
       if(param && *param && !usedarg)
         /* we passed in a parameter that wasn't used! */
         res = PARAM_GOT_EXTRA_PARAMETER;
 
-      if(res != PARAM_OK) {
+      if(res == PARAM_NEXT_OPERATION) {
+        if(operation->url_list && operation->url_list->url) {
+          /* Allocate the next config */
+          operation->next = malloc(sizeof(struct OperationConfig));
+          if(operation->next) {
+            /* Initialise the newly created config */
+            config_init(operation->next);
+
+            /* Copy the easy handle */
+            operation->next->easy = global->easy;
+
+            /* Set the global config pointer */
+            operation->next->global = global;
+
+            /* Update the last operation pointer */
+            global->last = operation->next;
+
+            /* Move onto the new config */
+            operation->next->prev = operation;
+            operation = operation->next;
+          }
+          else
+            res = PARAM_NO_MEM;
+        }
+      }
+
+      if(res != PARAM_OK && res != PARAM_NEXT_OPERATION) {
         /* the help request isn't really an error */
         if(!strcmp(filename, "-")) {
           filename = (char *)"<stdin>";
         }
         /* the help request isn't really an error */
         if(!strcmp(filename, "-")) {
           filename = (char *)"<stdin>";
         }
-        if(PARAM_HELP_REQUESTED != res) {
+        if(res != PARAM_HELP_REQUESTED &&
+           res != PARAM_MANUAL_REQUESTED &&
+           res != PARAM_VERSION_INFO_REQUESTED &&
+           res != PARAM_ENGINES_REQUESTED) {
           const char *reason = param2text(res);
           const char *reason = param2text(res);
-          warnf(config, "%s:%d: warning: '%s' %s\n",
+          warnf(operation, "%s:%d: warning: '%s' %s\n",
                 filename, lineno, option, reason);
         }
       }
                 filename, lineno, option, reason);
         }
       }
index aa7ac57..c3b19d5 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -23,8 +23,7 @@
  ***************************************************************************/
 #include "tool_setup.h"
 
  ***************************************************************************/
 #include "tool_setup.h"
 
-int parseconfig(const char *filename,
-                struct Configurable *config);
+int parseconfig(const char *filename, struct GlobalConfig *config);
 
 #endif /* HEADER_CURL_TOOL_PARSECFG_H */
 
 
 #endif /* HEADER_CURL_TOOL_PARSECFG_H */
 
index 5468830..e74020f 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -51,7 +51,7 @@
  * 'stream' member is a pointer to a stream controlling object as returned
  * from a 'fopen' call or a standard stream.
  *
  * 'stream' member is a pointer to a stream controlling object as returned
  * from a 'fopen' call or a standard stream.
  *
- * 'config' member is a pointer to associated 'Configurable' struct.
+ * 'config' member is a pointer to associated 'OperationConfig' struct.
  *
  * 'bytes' member represents amount written so far.
  *
  *
  * 'bytes' member represents amount written so far.
  *
@@ -69,7 +69,7 @@ struct OutStruct {
   bool s_isreg;
   bool fopened;
   FILE *stream;
   bool s_isreg;
   bool fopened;
   FILE *stream;
-  struct Configurable *config;
+  struct OperationConfig *config;
   curl_off_t bytes;
   curl_off_t init;
 #ifdef USE_METALINK
   curl_off_t bytes;
   curl_off_t init;
 #ifdef USE_METALINK
@@ -85,12 +85,12 @@ struct OutStruct {
  * 'fd' member is either 'stdin' file descriptor number STDIN_FILENO
  * or a file descriptor as returned from an 'open' call for some file.
  *
  * 'fd' member is either 'stdin' file descriptor number STDIN_FILENO
  * or a file descriptor as returned from an 'open' call for some file.
  *
- * 'config' member is a pointer to associated 'Configurable' struct.
+ * 'config' member is a pointer to associated 'OperationConfig' struct.
  */
 
 struct InStruct {
   int fd;
  */
 
 struct InStruct {
   int fd;
-  struct Configurable *config;
+  struct OperationConfig *config;
 };
 
 
 };
 
 
@@ -143,7 +143,7 @@ typedef enum {
 
 
 /*
 
 
 /*
- * Complete struct declarations which have Configurable struct members,
+ * Complete struct declarations which have OperationConfig struct members,
  * just in case this header is directly included in some source file.
  */
 
  * just in case this header is directly included in some source file.
  */
 
index cb93e11..a53fdc8 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -78,6 +78,9 @@ const NameValue setopt_nv_CURL_SSLVERSION[] = {
   NV(CURL_SSLVERSION_TLSv1),
   NV(CURL_SSLVERSION_SSLv2),
   NV(CURL_SSLVERSION_SSLv3),
   NV(CURL_SSLVERSION_TLSv1),
   NV(CURL_SSLVERSION_SSLv2),
   NV(CURL_SSLVERSION_SSLv3),
+  NV(CURL_SSLVERSION_TLSv1_0),
+  NV(CURL_SSLVERSION_TLSv1_1),
+  NV(CURL_SSLVERSION_TLSv1_2),
   NVEND,
 };
 
   NVEND,
 };
 
@@ -131,6 +134,8 @@ const NameValue setopt_nv_CURLPROTO[] = {
   NV(CURLPROTO_RTSP),
   NV(CURLPROTO_SCP),
   NV(CURLPROTO_SFTP),
   NV(CURLPROTO_RTSP),
   NV(CURLPROTO_SCP),
   NV(CURLPROTO_SFTP),
+  NV(CURLPROTO_SMB),
+  NV(CURLPROTO_SMBS),
   NV(CURLPROTO_SMTP),
   NV(CURLPROTO_SMTPS),
   NV(CURLPROTO_TELNET),
   NV(CURLPROTO_SMTP),
   NV(CURLPROTO_SMTPS),
   NV(CURLPROTO_TELNET),
@@ -142,6 +147,8 @@ const NameValue setopt_nv_CURLPROTO[] = {
 static const NameValue setopt_nv_CURLNONZERODEFAULTS[] = {
   NV1(CURLOPT_SSL_VERIFYPEER, 1),
   NV1(CURLOPT_SSL_VERIFYHOST, 1),
 static const NameValue setopt_nv_CURLNONZERODEFAULTS[] = {
   NV1(CURLOPT_SSL_VERIFYPEER, 1),
   NV1(CURLOPT_SSL_VERIFYHOST, 1),
+  NV1(CURLOPT_SSL_ENABLE_NPN, 1),
+  NV1(CURLOPT_SSL_ENABLE_ALPN, 1),
   NVEND
 };
 
   NVEND
 };
 
@@ -225,7 +232,7 @@ static char *c_escape(const char *str)
 }
 
 /* setopt wrapper for enum types */
 }
 
 /* setopt wrapper for enum types */
-CURLcode tool_setopt_enum(CURL *curl, struct Configurable *config,
+CURLcode tool_setopt_enum(CURL *curl, struct GlobalConfig *config,
                           const char *name, CURLoption tag,
                           const NameValue *nvlist, long lval)
 {
                           const char *name, CURLoption tag,
                           const NameValue *nvlist, long lval)
 {
@@ -258,7 +265,7 @@ CURLcode tool_setopt_enum(CURL *curl, struct Configurable *config,
 }
 
 /* setopt wrapper for flags */
 }
 
 /* setopt wrapper for flags */
-CURLcode tool_setopt_flags(CURL *curl, struct Configurable *config,
+CURLcode tool_setopt_flags(CURL *curl, struct GlobalConfig *config,
                            const char *name, CURLoption tag,
                            const NameValue *nvlist, long lval)
 {
                            const char *name, CURLoption tag,
                            const NameValue *nvlist, long lval)
 {
@@ -300,7 +307,7 @@ CURLcode tool_setopt_flags(CURL *curl, struct Configurable *config,
 }
 
 /* setopt wrapper for bitmasks */
 }
 
 /* setopt wrapper for bitmasks */
-CURLcode tool_setopt_bitmask(CURL *curl, struct Configurable *config,
+CURLcode tool_setopt_bitmask(CURL *curl, struct GlobalConfig *config,
                              const char *name, CURLoption tag,
                              const NameValueUnsigned *nvlist,
                              long lval)
                              const char *name, CURLoption tag,
                              const NameValueUnsigned *nvlist,
                              long lval)
@@ -343,7 +350,7 @@ CURLcode tool_setopt_bitmask(CURL *curl, struct Configurable *config,
 }
 
 /* setopt wrapper for CURLOPT_HTTPPOST */
 }
 
 /* setopt wrapper for CURLOPT_HTTPPOST */
-CURLcode tool_setopt_httppost(CURL *curl, struct Configurable *config,
+CURLcode tool_setopt_httppost(CURL *curl, struct GlobalConfig *config,
                               const char *name, CURLoption tag,
                               struct curl_httppost *post)
 {
                               const char *name, CURLoption tag,
                               struct curl_httppost *post)
 {
@@ -419,7 +426,7 @@ CURLcode tool_setopt_httppost(CURL *curl, struct Configurable *config,
 }
 
 /* setopt wrapper for curl_slist options */
 }
 
 /* setopt wrapper for curl_slist options */
-CURLcode tool_setopt_slist(CURL *curl, struct Configurable *config,
+CURLcode tool_setopt_slist(CURL *curl, struct GlobalConfig *config,
                            const char *name, CURLoption tag,
                            struct curl_slist *list)
 {
                            const char *name, CURLoption tag,
                            struct curl_slist *list)
 {
@@ -459,7 +466,7 @@ CURLcode tool_setopt_slist(CURL *curl, struct Configurable *config,
 
 /* generic setopt wrapper for all other options.
  * Some type information is encoded in the tag value. */
 
 /* generic setopt wrapper for all other options.
  * Some type information is encoded in the tag value. */
-CURLcode tool_setopt(CURL *curl, bool str, struct Configurable *config,
+CURLcode tool_setopt(CURL *curl, bool str, struct GlobalConfig *config,
                      const char *name, CURLoption tag, ...)
 {
   va_list arg;
                      const char *name, CURLoption tag, ...)
 {
   va_list arg;
index ec07a96..fcba94c 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -28,8 +28,8 @@
  */
 
 #define SETOPT_CHECK(v) do { \
  */
 
 #define SETOPT_CHECK(v) do { \
-  res = (v); \
-  if(res) \
+  result = (v); \
+  if(result) \
     goto show_error; \
 } WHILE_FALSE
 
     goto show_error; \
 } WHILE_FALSE
 
@@ -71,48 +71,48 @@ extern const NameValueUnsigned setopt_nv_CURLAUTH[];
 
 /* Intercept setopt calls for --libcurl */
 
 
 /* Intercept setopt calls for --libcurl */
 
-CURLcode tool_setopt_enum(CURL *curl, struct Configurable *config,
+CURLcode tool_setopt_enum(CURL *curl, struct GlobalConfig *config,
                           const char *name, CURLoption tag,
                           const NameValue *nv, long lval);
                           const char *name, CURLoption tag,
                           const NameValue *nv, long lval);
-CURLcode tool_setopt_flags(CURL *curl, struct Configurable *config,
+CURLcode tool_setopt_flags(CURL *curl, struct GlobalConfig *config,
                            const char *name, CURLoption tag,
                            const NameValue *nv, long lval);
                            const char *name, CURLoption tag,
                            const NameValue *nv, long lval);
-CURLcode tool_setopt_bitmask(CURL *curl, struct Configurable *config,
+CURLcode tool_setopt_bitmask(CURL *curl, struct GlobalConfig *config,
                              const char *name, CURLoption tag,
                              const NameValueUnsigned *nv, long lval);
                              const char *name, CURLoption tag,
                              const NameValueUnsigned *nv, long lval);
-CURLcode tool_setopt_httppost(CURL *curl, struct Configurable *config,
+CURLcode tool_setopt_httppost(CURL *curl, struct GlobalConfig *config,
                               const char *name, CURLoption tag,
                               struct curl_httppost *httppost);
                               const char *name, CURLoption tag,
                               struct curl_httppost *httppost);
-CURLcode tool_setopt_slist(CURL *curl, struct Configurable *config,
+CURLcode tool_setopt_slist(CURL *curl, struct GlobalConfig *config,
                            const char *name, CURLoption tag,
                            struct curl_slist *list);
                            const char *name, CURLoption tag,
                            struct curl_slist *list);
-CURLcode tool_setopt(CURL *curl, bool str, struct Configurable *config,
+CURLcode tool_setopt(CURL *curl, bool str, struct GlobalConfig *config,
                      const char *name, CURLoption tag, ...);
 
 #define my_setopt(x,y,z) \
                      const char *name, CURLoption tag, ...);
 
 #define my_setopt(x,y,z) \
-  SETOPT_CHECK(tool_setopt(x, FALSE, config, #y, y, z))
+  SETOPT_CHECK(tool_setopt(x, FALSE, global, #y, y, z))
 
 #define my_setopt_str(x,y,z) \
 
 #define my_setopt_str(x,y,z) \
-  SETOPT_CHECK(tool_setopt(x, TRUE, config, #y, y, z))
+  SETOPT_CHECK(tool_setopt(x, TRUE, global, #y, y, z))
 
 #define my_setopt_enum(x,y,z) \
 
 #define my_setopt_enum(x,y,z) \
-  SETOPT_CHECK(tool_setopt_enum(x, config, #y, y, setopt_nv_ ## y, z))
+  SETOPT_CHECK(tool_setopt_enum(x, global, #y, y, setopt_nv_ ## y, z))
 
 #define my_setopt_flags(x,y,z) \
 
 #define my_setopt_flags(x,y,z) \
-  SETOPT_CHECK(tool_setopt_flags(x, config, #y, y, setopt_nv_ ## y, z))
+  SETOPT_CHECK(tool_setopt_flags(x, global, #y, y, setopt_nv_ ## y, z))
 
 #define my_setopt_bitmask(x,y,z) \
 
 #define my_setopt_bitmask(x,y,z) \
-  SETOPT_CHECK(tool_setopt_bitmask(x, config, #y, y, setopt_nv_ ## y, z))
+  SETOPT_CHECK(tool_setopt_bitmask(x, global, #y, y, setopt_nv_ ## y, z))
 
 #define my_setopt_httppost(x,y,z) \
 
 #define my_setopt_httppost(x,y,z) \
-  SETOPT_CHECK(tool_setopt_httppost(x, config, #y, y, z))
+  SETOPT_CHECK(tool_setopt_httppost(x, global, #y, y, z))
 
 #define my_setopt_slist(x,y,z) \
 
 #define my_setopt_slist(x,y,z) \
-  SETOPT_CHECK(tool_setopt_slist(x, config, #y, y, z))
+  SETOPT_CHECK(tool_setopt_slist(x, global, #y, y, z))
 
 
-#define res_setopt(x,y,z) tool_setopt(x, FALSE, config, #y, y, z)
+#define res_setopt(x,y,z) tool_setopt(x, FALSE, global, #y, y, z)
 
 
-#define res_setopt_str(x,y,z) tool_setopt(x, TRUE, config, #y, y, z)
+#define res_setopt_str(x,y,z) tool_setopt(x, TRUE, global, #y, y, z)
 
 #else /* CURL_DISABLE_LIBCURL_OPTION */
 
 
 #else /* CURL_DISABLE_LIBCURL_OPTION */
 
index c94686f..3d7c158 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -67,8 +67,7 @@
 #endif
 
 #ifndef HAVE_STRDUP
 #endif
 
 #ifndef HAVE_STRDUP
-#  include "strdup.h"
-#  define strdup(ptr) curlx_strdup(ptr)
+#  include "tool_strdup.h"
 #endif
 
 #endif /* HEADER_CURL_TOOL_SETUP_H */
 #endif
 
 #endif /* HEADER_CURL_TOOL_SETUP_H */
index 49cdc71..d023b32 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -46,7 +46,7 @@ void tool_go_sleep(long ms)
 #elif defined(WIN32)
   Sleep(ms);
 #elif defined(HAVE_POLL_FINE)
 #elif defined(WIN32)
   Sleep(ms);
 #elif defined(HAVE_POLL_FINE)
-  poll((void *)0, 0, (int)ms);
+  (void)poll((void *)0, 0, (int)ms);
 #else
   struct timeval timeout;
   timeout.tv_sec = ms / 1000L;
 #else
   struct timeval timeout;
   timeout.tv_sec = ms / 1000L;
similarity index 66%
rename from src/version.h
rename to src/tool_strdup.c
index 9260aa5..965675c 100644 (file)
@@ -1,5 +1,3 @@
-#ifndef HEADER_CURL_VERSION_H
-#define HEADER_CURL_VERSION_H
 /***************************************************************************
  *                                  _   _ ____  _
  *  Project                     ___| | | |  _ \| |
 /***************************************************************************
  *                                  _   _ ____  _
  *  Project                     ___| | | |  _ \| |
@@ -7,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * KIND, either express or implied.
  *
  ***************************************************************************/
  * KIND, either express or implied.
  *
  ***************************************************************************/
+#include "tool_strdup.h"
 
 
-#include <curl/curlver.h>
+#ifndef HAVE_STRDUP
+char *strdup(const char *str)
+{
+  size_t len;
+  char *newstr;
 
 
-#define CURL_NAME "curl"
-#define CURL_COPYRIGHT LIBCURL_COPYRIGHT
-#define CURL_VERSION "7.22.0"
-#define CURL_VERSION_MAJOR LIBCURL_VERSION_MAJOR
-#define CURL_VERSION_MINOR LIBCURL_VERSION_MINOR
-#define CURL_VERSION_PATCH LIBCURL_VERSION_PATCH
-#define CURL_ID CURL_NAME " " CURL_VERSION " (" OS ") "
+  if(!str)
+    return (char *)NULL;
 
 
-#endif /* HEADER_CURL_VERSION_H */
+  len = strlen(str);
+
+  if(len >= ((size_t)-1) / sizeof(char))
+    return (char *)NULL;
+
+  newstr = malloc((len+1)*sizeof(char));
+  if(!newstr)
+    return (char *)NULL;
+
+  memcpy(newstr,str,(len+1)*sizeof(char));
+
+  return newstr;
+
+}
+#endif
diff --git a/src/tool_strdup.h b/src/tool_strdup.h
new file mode 100644 (file)
index 0000000..83c8102
--- /dev/null
@@ -0,0 +1,30 @@
+#ifndef HEADER_TOOL_STRDUP_H
+#define HEADER_TOOL_STRDUP_H
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+#ifndef HAVE_STRDUP
+extern char *strdup(const char *str);
+#endif
+
+#endif /* HEADER_TOOL_STRDUP_H */
index 2821d00..b6d5591 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 
 #include "memdebug.h" /* keep this as LAST include */
 
 
 #include "memdebug.h" /* keep this as LAST include */
 
-typedef enum {
-  GLOB_OK,
-  GLOB_NO_MEM,
-  GLOB_ERROR
-} GlobCode;
+#define GLOBERROR(string, column, code) \
+  glob->error = string, glob->pos = column, code
 
 
-/*
- * glob_word()
+void glob_cleanup(URLGlob* glob);
+
+static CURLcode glob_fixed(URLGlob *glob, char *fixed, size_t len)
+{
+  URLPattern *pat = &glob->pattern[glob->size];
+  pat->type = UPTSet;
+  pat->content.Set.size = 1;
+  pat->content.Set.ptr_s = 0;
+  pat->globindex = -1;
+
+  pat->content.Set.elements = malloc(sizeof(char*));
+
+  if(!pat->content.Set.elements)
+    return GLOBERROR("out of memory", 0, CURLE_OUT_OF_MEMORY);
+
+  pat->content.Set.elements[0] = malloc(len+1);
+  if(!pat->content.Set.elements[0])
+    return GLOBERROR("out of memory", 0, CURLE_OUT_OF_MEMORY);
+
+  memcpy(pat->content.Set.elements[0], fixed, len);
+  pat->content.Set.elements[0][len] = 0;
+
+  return CURLE_OK;
+}
+
+/* multiply
  *
  *
- * Input a full globbed string, set the forth argument to the amount of
- * strings we get out of this. Return GlobCode.
+ * Multiplies and checks for overflow.
  */
  */
-static GlobCode glob_word(URLGlob *, /* object anchor */
-                          char *,    /* globbed string */
-                          size_t,       /* position */
-                          int *);    /* returned number of strings */
+static int multiply(unsigned long *amount, long with)
+{
+  unsigned long sum = *amount * with;
+  if(sum/with != *amount)
+    return 1; /* didn't fit, bail out */
+  *amount = sum;
+  return 0;
+}
 
 
-static GlobCode glob_set(URLGlob *glob, char *pattern,
-                         size_t pos, int *amount)
+static CURLcode glob_set(URLGlob *glob, char **patternp,
+                         size_t *posp, unsigned long *amount,
+                         int globindex)
 {
   /* processes a set expression with the point behind the opening '{'
      ','-separated elements are collected until the next closing '}'
   */
   URLPattern *pat;
 {
   /* processes a set expression with the point behind the opening '{'
      ','-separated elements are collected until the next closing '}'
   */
   URLPattern *pat;
-  GlobCode res;
   bool done = FALSE;
   bool done = FALSE;
-  char* buf = glob->glob_buffer;
+  char *buf = glob->glob_buffer;
+  char *pattern = *patternp;
+  char *opattern = pattern;
+  size_t opos = *posp-1;
 
 
-  pat = &glob->pattern[glob->size / 2];
+  pat = &glob->pattern[glob->size];
   /* patterns 0,1,2,... correspond to size=1,3,5,... */
   pat->type = UPTSet;
   pat->content.Set.size = 0;
   pat->content.Set.ptr_s = 0;
   pat->content.Set.elements = NULL;
   /* patterns 0,1,2,... correspond to size=1,3,5,... */
   pat->type = UPTSet;
   pat->content.Set.size = 0;
   pat->content.Set.ptr_s = 0;
   pat->content.Set.elements = NULL;
-
-  if(++glob->size > (GLOB_PATTERN_NUM*2)) {
-    snprintf(glob->errormsg, sizeof(glob->errormsg), "too many globs used\n");
-    return GLOB_ERROR;
-  }
+  pat->globindex = globindex;
 
   while(!done) {
     switch (*pattern) {
     case '\0':                  /* URL ended while set was still open */
 
   while(!done) {
     switch (*pattern) {
     case '\0':                  /* URL ended while set was still open */
-      snprintf(glob->errormsg, sizeof(glob->errormsg),
-               "unmatched brace at pos %zu\n", pos);
-      return GLOB_ERROR;
+      return GLOBERROR("unmatched brace", opos, CURLE_URL_MALFORMAT);
 
     case '{':
     case '[':                   /* no nested expressions at this time */
 
     case '{':
     case '[':                   /* no nested expressions at this time */
-      snprintf(glob->errormsg, sizeof(glob->errormsg),
-               "nested braces not supported at pos %zu\n", pos);
-      return GLOB_ERROR;
+      return GLOBERROR("nested brace", *posp, CURLE_URL_MALFORMAT);
 
 
-    case ',':
     case '}':                           /* set element completed */
     case '}':                           /* set element completed */
+      if(opattern == pattern)
+        return GLOBERROR("empty string within braces", *posp,
+                         CURLE_URL_MALFORMAT);
+
+      /* add 1 to size since it'll be incremented below */
+      if(multiply(amount, pat->content.Set.size+1))
+        return GLOBERROR("range overflow", 0, CURLE_URL_MALFORMAT);
+
+      /* fall-through */
+    case ',':
+
       *buf = '\0';
       if(pat->content.Set.elements) {
         char **new_arr = realloc(pat->content.Set.elements,
                                  (pat->content.Set.size + 1) * sizeof(char*));
       *buf = '\0';
       if(pat->content.Set.elements) {
         char **new_arr = realloc(pat->content.Set.elements,
                                  (pat->content.Set.size + 1) * sizeof(char*));
-        if(!new_arr) {
-          short elem;
-          for(elem = 0; elem < pat->content.Set.size; elem++)
-            Curl_safefree(pat->content.Set.elements[elem]);
-          Curl_safefree(pat->content.Set.elements);
-          pat->content.Set.ptr_s = 0;
-          pat->content.Set.size = 0;
-        }
+        if(!new_arr)
+          return GLOBERROR("out of memory", 0, CURLE_OUT_OF_MEMORY);
+
         pat->content.Set.elements = new_arr;
       }
       else
         pat->content.Set.elements = malloc(sizeof(char*));
         pat->content.Set.elements = new_arr;
       }
       else
         pat->content.Set.elements = malloc(sizeof(char*));
-      if(!pat->content.Set.elements) {
-        snprintf(glob->errormsg, sizeof(glob->errormsg), "out of memory\n");
-        return GLOB_NO_MEM;
-      }
+
+      if(!pat->content.Set.elements)
+        return GLOBERROR("out of memory", 0, CURLE_OUT_OF_MEMORY);
+
       pat->content.Set.elements[pat->content.Set.size] =
         strdup(glob->glob_buffer);
       pat->content.Set.elements[pat->content.Set.size] =
         strdup(glob->glob_buffer);
-      if(!pat->content.Set.elements[pat->content.Set.size]) {
-        short elem;
-        for(elem = 0; elem < pat->content.Set.size; elem++)
-          Curl_safefree(pat->content.Set.elements[elem]);
-        Curl_safefree(pat->content.Set.elements);
-        pat->content.Set.ptr_s = 0;
-        pat->content.Set.size = 0;
-        snprintf(glob->errormsg, sizeof(glob->errormsg), "out of memory\n");
-        return GLOB_NO_MEM;
-      }
+      if(!pat->content.Set.elements[pat->content.Set.size])
+        return GLOBERROR("out of memory", 0, CURLE_OUT_OF_MEMORY);
       ++pat->content.Set.size;
 
       if(*pattern == '}') {
       ++pat->content.Set.size;
 
       if(*pattern == '}') {
-        /* entire set pattern completed */
-        int wordamount;
-
-        /* always check for a literal (may be "") between patterns */
-        res = glob_word(glob, ++pattern, ++pos, &wordamount);
-        if(res) {
-          short elem;
-          for(elem = 0; elem < pat->content.Set.size; elem++)
-            Curl_safefree(pat->content.Set.elements[elem]);
-          Curl_safefree(pat->content.Set.elements);
-          pat->content.Set.ptr_s = 0;
-          pat->content.Set.size = 0;
-          return res;
-        }
-
-        *amount = pat->content.Set.size * wordamount;
-
+        pattern++; /* pass the closing brace */
         done = TRUE;
         continue;
       }
 
       buf = glob->glob_buffer;
       ++pattern;
         done = TRUE;
         continue;
       }
 
       buf = glob->glob_buffer;
       ++pattern;
-      ++pos;
+      ++(*posp);
       break;
 
     case ']':                           /* illegal closing bracket */
       break;
 
     case ']':                           /* illegal closing bracket */
-      snprintf(glob->errormsg, sizeof(glob->errormsg),
-               "illegal pattern at pos %zu\n", pos);
-      return GLOB_ERROR;
+      return GLOBERROR("unexpected close bracket", *posp, CURLE_URL_MALFORMAT);
 
     case '\\':                          /* escaped character, skip '\' */
       if(pattern[1]) {
         ++pattern;
 
     case '\\':                          /* escaped character, skip '\' */
       if(pattern[1]) {
         ++pattern;
-        ++pos;
+        ++(*posp);
       }
       /* intentional fallthrough */
     default:
       *buf++ = *pattern++;              /* copy character to set element */
       }
       /* intentional fallthrough */
     default:
       *buf++ = *pattern++;              /* copy character to set element */
-      ++pos;
+      ++(*posp);
     }
   }
     }
   }
-  return GLOB_OK;
+
+  *patternp = pattern; /* return with the new position */
+  return CURLE_OK;
 }
 
 }
 
-static GlobCode glob_range(URLGlob *glob, char *pattern,
-                           size_t pos, int *amount)
+static CURLcode glob_range(URLGlob *glob, char **patternp,
+                           size_t *posp, unsigned long *amount,
+                           int globindex)
 {
   /* processes a range expression with the point behind the opening '['
      - char range: e.g. "a-z]", "B-Q]"
 {
   /* processes a range expression with the point behind the opening '['
      - char range: e.g. "a-z]", "B-Q]"
@@ -174,77 +175,68 @@ static GlobCode glob_range(URLGlob *glob, char *pattern,
      expression is checked for well-formedness and collected until the next ']'
   */
   URLPattern *pat;
      expression is checked for well-formedness and collected until the next ']'
   */
   URLPattern *pat;
-  char *c;
-  char sep;
-  char sep2;
-  int step;
   int rc;
   int rc;
-  GlobCode res;
-  int wordamount = 1;
+  char *pattern = *patternp;
+  char *c;
 
 
-  pat = &glob->pattern[glob->size / 2];
-  /* patterns 0,1,2,... correspond to size=1,3,5,... */
-  if(++glob->size > (GLOB_PATTERN_NUM*2)) {
-    snprintf(glob->errormsg, sizeof(glob->errormsg), "too many globs used\n");
-    return GLOB_ERROR;
-  }
+  pat = &glob->pattern[glob->size];
+  pat->globindex = globindex;
 
   if(ISALPHA(*pattern)) {
     /* character range detected */
     char min_c;
     char max_c;
 
   if(ISALPHA(*pattern)) {
     /* character range detected */
     char min_c;
     char max_c;
+    int step=1;
 
     pat->type = UPTCharRange;
 
 
     pat->type = UPTCharRange;
 
-    rc = sscanf(pattern, "%c-%c%c%d%c", &min_c, &max_c, &sep, &step, &sep2);
+    rc = sscanf(pattern, "%c-%c", &min_c, &max_c);
 
 
-    if((rc < 3) || (min_c >= max_c) || ((max_c - min_c) > ('z' - 'a'))) {
-      /* the pattern is not well-formed */
-      snprintf(glob->errormsg, sizeof(glob->errormsg),
-               "error: bad range specification after pos %zu\n", pos);
-      return GLOB_ERROR;
+    if((rc == 2) && (pattern[3] == ':')) {
+      char *endp;
+      unsigned long lstep;
+      errno = 0;
+      lstep = strtoul(&pattern[3], &endp, 10);
+      if(errno || (*endp != ']'))
+        step = -1;
+      else {
+        pattern = endp+1;
+        step = (int)lstep;
+        if(step > (max_c - min_c))
+          step = -1;
+      }
     }
     }
+    else
+      pattern += 4;
 
 
-    /* check the (first) separating character */
-    if((sep != ']') && (sep != ':')) {
-      snprintf(glob->errormsg, sizeof(glob->errormsg),
-               "error: unsupported character (%c) after range at pos %zu\n",
-               sep, pos);
-      return GLOB_ERROR;
-    }
+    *posp += (pattern - *patternp);
 
 
-    /* if there was a ":[num]" thing, use that as step or else use 1 */
-    pat->content.CharRange.step =
-      ((sep == ':') && (rc == 5) && (sep2 == ']')) ? step : 1;
+    if((rc != 2) || (min_c >= max_c) || ((max_c - min_c) > ('z' - 'a')) ||
+       (step < 0) )
+      /* the pattern is not well-formed */
+      return GLOBERROR("bad range", *posp, CURLE_URL_MALFORMAT);
 
 
+    /* if there was a ":[num]" thing, use that as step or else use 1 */
+    pat->content.CharRange.step = step;
     pat->content.CharRange.ptr_c = pat->content.CharRange.min_c = min_c;
     pat->content.CharRange.max_c = max_c;
     pat->content.CharRange.ptr_c = pat->content.CharRange.min_c = min_c;
     pat->content.CharRange.max_c = max_c;
+
+    if(multiply(amount, (pat->content.CharRange.max_c -
+                         pat->content.CharRange.min_c + 1)))
+      return GLOBERROR("range overflow", *posp, CURLE_URL_MALFORMAT);
   }
   else if(ISDIGIT(*pattern)) {
     /* numeric range detected */
   }
   else if(ISDIGIT(*pattern)) {
     /* numeric range detected */
-    int min_n;
-    int max_n;
+    unsigned long min_n;
+    unsigned long max_n = 0;
+    unsigned long step_n = 0;
+    char *endp;
 
     pat->type = UPTNumRange;
     pat->content.NumRange.padlength = 0;
 
 
     pat->type = UPTNumRange;
     pat->content.NumRange.padlength = 0;
 
-    rc = sscanf(pattern, "%d-%d%c%d%c", &min_n, &max_n, &sep, &step, &sep2);
-
-    if((rc < 2) || (min_n > max_n)) {
-      /* the pattern is not well-formed */
-      snprintf(glob->errormsg, sizeof(glob->errormsg),
-               "error: bad range specification after pos %zu\n", pos);
-      return GLOB_ERROR;
-    }
-    pat->content.NumRange.ptr_n = pat->content.NumRange.min_n = min_n;
-    pat->content.NumRange.max_n = max_n;
-
-    /* if there was a ":[num]" thing, use that as step or else use 1 */
-    pat->content.NumRange.step =
-      ((sep == ':') && (rc == 5) && (sep2 == ']')) ? step : 1;
-
     if(*pattern == '0') {
     if(*pattern == '0') {
-      /* leading zero specified */
+      /* leading zero specified, count them! */
       c = pattern;
       while(ISDIGIT(*c)) {
         c++;
       c = pattern;
       while(ISDIGIT(*c)) {
         c++;
@@ -252,114 +244,176 @@ static GlobCode glob_range(URLGlob *glob, char *pattern,
                                               instances of this pattern */
       }
     }
                                               instances of this pattern */
       }
     }
-  }
-  else {
-    snprintf(glob->errormsg, sizeof(glob->errormsg),
-             "illegal character in range specification at pos %zu\n", pos);
-    return GLOB_ERROR;
-  }
 
 
-  c = (char*)strchr(pattern, ']'); /* continue after next ']' */
-  if(c)
-    c++;
-  else {
-    snprintf(glob->errormsg, sizeof(glob->errormsg), "missing ']'");
-    return GLOB_ERROR; /* missing ']' */
-  }
+    errno = 0;
+    min_n = strtoul(pattern, &endp, 10);
+    if(errno || (endp == pattern))
+      endp=NULL;
+    else {
+      if(*endp != '-')
+        endp = NULL;
+      else {
+        pattern = endp+1;
+        errno = 0;
+        max_n = strtoul(pattern, &endp, 10);
+        if(errno || (*endp == ':')) {
+          pattern = endp+1;
+          errno = 0;
+          step_n = strtoul(pattern, &endp, 10);
+          if(errno)
+            /* over/underflow situation */
+            endp = NULL;
+        }
+        else
+          step_n = 1;
+        if(endp && (*endp == ']')) {
+          pattern= endp+1;
+        }
+        else
+          endp = NULL;
+      }
+    }
 
 
-  /* always check for a literal (may be "") between patterns */
+    *posp += (pattern - *patternp);
 
 
-  res = glob_word(glob, c, pos + (c - pattern), &wordamount);
-  if(res == GLOB_ERROR) {
-    wordamount = 1;
-    res = GLOB_OK;
-  }
+    if(!endp || (min_n > max_n) || (step_n > (max_n - min_n)))
+      /* the pattern is not well-formed */
+      return GLOBERROR("bad range", *posp, CURLE_URL_MALFORMAT);
 
 
-  if(!res) {
-    if(pat->type == UPTCharRange)
-      *amount = wordamount * (pat->content.CharRange.max_c -
-                              pat->content.CharRange.min_c + 1);
-    else
-      *amount = wordamount * (pat->content.NumRange.max_n -
-                              pat->content.NumRange.min_n + 1);
+    /* typecasting to ints are fine here since we make sure above that we
+       are within 31 bits */
+    pat->content.NumRange.ptr_n = pat->content.NumRange.min_n = min_n;
+    pat->content.NumRange.max_n = max_n;
+    pat->content.NumRange.step = step_n;
+
+    if(multiply(amount, (pat->content.NumRange.max_n -
+                         pat->content.NumRange.min_n + 1)))
+      return GLOBERROR("range overflow", *posp, CURLE_URL_MALFORMAT);
   }
   }
+  else
+    return GLOBERROR("bad range specification", *posp, CURLE_URL_MALFORMAT);
 
 
-  return res; /* GLOB_OK or GLOB_NO_MEM */
+  *patternp = pattern;
+  return CURLE_OK;
 }
 
 }
 
-static GlobCode glob_word(URLGlob *glob, char *pattern,
-                          size_t pos, int *amount)
+static bool peek_ipv6(const char *str, size_t *skip)
+{
+  /*
+   * Scan for a potential IPv6 literal.
+   * - Valid globs contain a hyphen and <= 1 colon.
+   * - IPv6 literals contain no hyphens and >= 2 colons.
+   */
+  size_t i = 0;
+  size_t colons = 0;
+  if(str[i++] != '[') {
+    return FALSE;
+  }
+  for(;;) {
+    const char c = str[i++];
+    if(ISALNUM(c) || c == '.' || c == '%') {
+      /* ok */
+    }
+    else if(c == ':') {
+      colons++;
+    }
+    else if(c == ']') {
+      *skip = i;
+      return colons >= 2 ? TRUE : FALSE;
+    }
+    else {
+      return FALSE;
+    }
+  }
+}
+
+static CURLcode glob_parse(URLGlob *glob, char *pattern,
+                           size_t pos, unsigned long *amount)
 {
   /* processes a literal string component of a URL
      special characters '{' and '[' branch to set/range processing functions
    */
 {
   /* processes a literal string component of a URL
      special characters '{' and '[' branch to set/range processing functions
    */
-  char* buf = glob->glob_buffer;
-  size_t litindex;
-  GlobCode res = GLOB_OK;
+  CURLcode res = CURLE_OK;
+  int globindex = 0; /* count "actual" globs */
+
+  *amount = 1;
+
+  while(*pattern && !res) {
+    char *buf = glob->glob_buffer;
+    size_t sublen = 0;
+    while(*pattern && *pattern != '{') {
+      if(*pattern == '[') {
+        /* Skip over potential IPv6 literals. */
+        size_t skip;
+        if(peek_ipv6(pattern, &skip)) {
+          memcpy(buf, pattern, skip);
+          buf += skip;
+          pattern += skip;
+          sublen += skip;
+          continue;
+        }
+        break;
+      }
+      if(*pattern == '}' || *pattern == ']')
+        return GLOBERROR("unmatched close brace/bracket", pos,
+                         CURLE_URL_MALFORMAT);
 
 
-  *amount = 1; /* default is one single string */
+      /* only allow \ to escape known "special letters" */
+      if(*pattern == '\\' &&
+         (*(pattern+1) == '{' || *(pattern+1) == '[' ||
+          *(pattern+1) == '}' || *(pattern+1) == ']') ) {
 
 
-  while(*pattern != '\0' && *pattern != '{' && *pattern != '[') {
-    if(*pattern == '}' || *pattern == ']') {
-      snprintf(glob->errormsg, sizeof(glob->errormsg),
-               "unmatched close brace/bracket at pos %zu\n", pos);
-      return GLOB_ERROR;
+        /* escape character, skip '\' */
+        ++pattern;
+        ++pos;
+      }
+      *buf++ = *pattern++; /* copy character to literal */
+      ++pos;
+      sublen++;
     }
     }
+    if(sublen) {
+      /* we got a literal string, add it as a single-item list */
+      *buf = '\0';
+      res = glob_fixed(glob, glob->glob_buffer, sublen);
+    }
+    else {
+      switch (*pattern) {
+      case '\0': /* done  */
+        break;
 
 
-    /* only allow \ to escape known "special letters" */
-    if(*pattern == '\\' &&
-        (*(pattern+1) == '{' || *(pattern+1) == '[' ||
-         *(pattern+1) == '}' || *(pattern+1) == ']') ) {
+      case '{':
+        /* process set pattern */
+        pattern++;
+        pos++;
+        res = glob_set(glob, &pattern, &pos, amount, globindex++);
+        break;
 
 
-      /* escape character, skip '\' */
-      ++pattern;
-      ++pos;
+      case '[':
+        /* process range pattern */
+        pattern++;
+        pos++;
+        res = glob_range(glob, &pattern, &pos, amount, globindex++);
+        break;
+      }
     }
     }
-    *buf++ = *pattern++; /* copy character to literal */
-    ++pos;
-  }
-  *buf = '\0';
-  litindex = glob->size / 2;
-  /* literals 0,1,2,... correspond to size=0,2,4,... */
-  glob->literal[litindex] = strdup(glob->glob_buffer);
-  if(!glob->literal[litindex]) {
-    snprintf(glob->errormsg, sizeof(glob->errormsg), "out of memory\n");
-    return GLOB_NO_MEM;
-  }
-  ++glob->size;
-
-  switch (*pattern) {
-  case '\0':
-    /* singular URL processed  */
-    break;
-
-  case '{':
-    /* process set pattern */
-    res = glob_set(glob, ++pattern, ++pos, amount);
-    break;
-
-  case '[':
-    /* process range pattern */
-    res = glob_range(glob, ++pattern, ++pos, amount);
-    break;
-  }
-
-  if(res)
-    Curl_safefree(glob->literal[litindex]);
 
 
+    if(++glob->size > GLOB_PATTERN_NUM)
+      return GLOBERROR("too many globs", pos, CURLE_URL_MALFORMAT);
+  }
   return res;
 }
 
   return res;
 }
 
-int glob_url(URLGlob** glob, char* url, int *urlnum, FILE *error)
+CURLcode glob_url(URLGlob** glob, char* url, unsigned long *urlnum,
+                  FILE *error)
 {
   /*
    * We can deal with any-size, just make a buffer with the same length
    * as the specified URL!
    */
   URLGlob *glob_expand;
 {
   /*
    * We can deal with any-size, just make a buffer with the same length
    * as the specified URL!
    */
   URLGlob *glob_expand;
-  int amount;
+  unsigned long amount = 0;
   char *glob_buffer;
   char *glob_buffer;
-  GlobCode res;
+  CURLcode res;
 
   *glob = NULL;
 
 
   *glob = NULL;
 
@@ -372,26 +426,31 @@ int glob_url(URLGlob** glob, char* url, int *urlnum, FILE *error)
     Curl_safefree(glob_buffer);
     return CURLE_OUT_OF_MEMORY;
   }
     Curl_safefree(glob_buffer);
     return CURLE_OUT_OF_MEMORY;
   }
-  glob_expand->size = 0;
   glob_expand->urllen = strlen(url);
   glob_expand->glob_buffer = glob_buffer;
   glob_expand->urllen = strlen(url);
   glob_expand->glob_buffer = glob_buffer;
-  glob_expand->beenhere = 0;
 
 
-  res = glob_word(glob_expand, url, 1, &amount);
+  res = glob_parse(glob_expand, url, 1, &amount);
   if(!res)
     *urlnum = amount;
   else {
   if(!res)
     *urlnum = amount;
   else {
-    if(error && glob_expand->errormsg[0]) {
+    if(error && glob_expand->error) {
+      char text[128];
+      const char *t;
+      if(glob_expand->pos) {
+        snprintf(text, sizeof(text), "%s in column %zu", glob_expand->error,
+                 glob_expand->pos);
+        t = text;
+      }
+      else
+        t = glob_expand->error;
+
       /* send error description to the error-stream */
       /* send error description to the error-stream */
-      fprintf(error, "curl: (%d) [globbing] %s",
-              (res == GLOB_NO_MEM) ? CURLE_OUT_OF_MEMORY : CURLE_URL_MALFORMAT,
-              glob_expand->errormsg);
+      fprintf(error, "curl: (%d) [globbing] %s\n", res, t);
     }
     /* it failed, we cleanup */
     }
     /* it failed, we cleanup */
-    Curl_safefree(glob_buffer);
-    Curl_safefree(glob_expand);
+    glob_cleanup(glob_expand);
     *urlnum = 1;
     *urlnum = 1;
-    return (res == GLOB_NO_MEM) ? CURLE_OUT_OF_MEMORY : CURLE_URL_MALFORMAT;
+    return res;
   }
 
   *glob = glob_expand;
   }
 
   *glob = glob_expand;
@@ -403,32 +462,25 @@ void glob_cleanup(URLGlob* glob)
   size_t i;
   int elem;
 
   size_t i;
   int elem;
 
-  for(i = glob->size - 1; i < glob->size; --i) {
-    if(!(i & 1)) {     /* even indexes contain literals */
-      Curl_safefree(glob->literal[i/2]);
-    }
-    else {              /* odd indexes contain sets or ranges */
-      if((glob->pattern[i/2].type == UPTSet) &&
-         (glob->pattern[i/2].content.Set.elements)) {
-        for(elem = glob->pattern[i/2].content.Set.size - 1;
-             elem >= 0;
-             --elem) {
-          Curl_safefree(glob->pattern[i/2].content.Set.elements[elem]);
-        }
-        Curl_safefree(glob->pattern[i/2].content.Set.elements);
+  for(i = 0; i < glob->size; i++) {
+    if((glob->pattern[i].type == UPTSet) &&
+       (glob->pattern[i].content.Set.elements)) {
+      for(elem = glob->pattern[i].content.Set.size - 1;
+          elem >= 0;
+          --elem) {
+        Curl_safefree(glob->pattern[i].content.Set.elements[elem]);
       }
       }
+      Curl_safefree(glob->pattern[i].content.Set.elements);
     }
   }
   Curl_safefree(glob->glob_buffer);
   Curl_safefree(glob);
 }
 
     }
   }
   Curl_safefree(glob->glob_buffer);
   Curl_safefree(glob);
 }
 
-int glob_next_url(char **globbed, URLGlob *glob)
+CURLcode glob_next_url(char **globbed, URLGlob *glob)
 {
   URLPattern *pat;
 {
   URLPattern *pat;
-  char *lit;
   size_t i;
   size_t i;
-  size_t j;
   size_t len;
   size_t buflen = glob->urllen + 1;
   char *buf = glob->glob_buffer;
   size_t len;
   size_t buflen = glob->urllen + 1;
   char *buf = glob->glob_buffer;
@@ -440,11 +492,11 @@ int glob_next_url(char **globbed, URLGlob *glob)
   else {
     bool carry = TRUE;
 
   else {
     bool carry = TRUE;
 
-    /* implement a counter over the index ranges of all patterns,
-       starting with the rightmost pattern */
-    for(i = glob->size / 2 - 1; carry && (i < glob->size); --i) {
+    /* implement a counter over the index ranges of all patterns, starting
+       with the rightmost pattern */
+    for(i = 0; carry && (i < glob->size); i++) {
       carry = FALSE;
       carry = FALSE;
-      pat = &glob->pattern[i];
+      pat = &glob->pattern[glob->size - 1 - i];
       switch (pat->type) {
       case UPTSet:
         if((pat->content.Set.elements) &&
       switch (pat->type) {
       case UPTSet:
         if((pat->content.Set.elements) &&
@@ -454,8 +506,9 @@ int glob_next_url(char **globbed, URLGlob *glob)
         }
         break;
       case UPTCharRange:
         }
         break;
       case UPTCharRange:
-        pat->content.CharRange.ptr_c = (char)(pat->content.CharRange.step +
-                           (int)((unsigned char)pat->content.CharRange.ptr_c));
+        pat->content.CharRange.ptr_c =
+          (char)(pat->content.CharRange.step +
+                 (int)((unsigned char)pat->content.CharRange.ptr_c));
         if(pat->content.CharRange.ptr_c > pat->content.CharRange.max_c) {
           pat->content.CharRange.ptr_c = pat->content.CharRange.min_c;
           carry = TRUE;
         if(pat->content.CharRange.ptr_c > pat->content.CharRange.max_c) {
           pat->content.CharRange.ptr_c = pat->content.CharRange.min_c;
           carry = TRUE;
@@ -479,39 +532,31 @@ int glob_next_url(char **globbed, URLGlob *glob)
     }
   }
 
     }
   }
 
-  for(j = 0; j < glob->size; ++j) {
-    if(!(j&1)) {              /* every other term (j even) is a literal */
-      lit = glob->literal[j/2];
-      len = snprintf(buf, buflen, "%s", lit);
-      buf += len;
-      buflen -= len;
-    }
-    else {                              /* the rest (i odd) are patterns */
-      pat = &glob->pattern[j/2];
-      switch(pat->type) {
-      case UPTSet:
-        if(pat->content.Set.elements) {
-          len = strlen(pat->content.Set.elements[pat->content.Set.ptr_s]);
-          snprintf(buf, buflen, "%s",
-                   pat->content.Set.elements[pat->content.Set.ptr_s]);
-          buf += len;
-          buflen -= len;
-        }
-        break;
-      case UPTCharRange:
-        *buf++ = pat->content.CharRange.ptr_c;
-        break;
-      case UPTNumRange:
-        len = snprintf(buf, buflen, "%0*d",
-                       pat->content.NumRange.padlength,
-                       pat->content.NumRange.ptr_n);
+  for(i = 0; i < glob->size; ++i) {
+    pat = &glob->pattern[i];
+    switch(pat->type) {
+    case UPTSet:
+      if(pat->content.Set.elements) {
+        len = strlen(pat->content.Set.elements[pat->content.Set.ptr_s]);
+        snprintf(buf, buflen, "%s",
+                 pat->content.Set.elements[pat->content.Set.ptr_s]);
         buf += len;
         buflen -= len;
         buf += len;
         buflen -= len;
-        break;
-      default:
-        printf("internal error: invalid pattern type (%d)\n", (int)pat->type);
-        return CURLE_FAILED_INIT;
       }
       }
+      break;
+    case UPTCharRange:
+      *buf++ = pat->content.CharRange.ptr_c;
+      break;
+    case UPTNumRange:
+      len = snprintf(buf, buflen, "%0*ld",
+                     pat->content.NumRange.padlength,
+                     pat->content.NumRange.ptr_n);
+      buf += len;
+      buflen -= len;
+      break;
+    default:
+      printf("internal error: invalid pattern type (%d)\n", (int)pat->type);
+      return CURLE_FAILED_INIT;
     }
   }
   *buf = '\0';
     }
   }
   *buf = '\0';
@@ -523,7 +568,7 @@ int glob_next_url(char **globbed, URLGlob *glob)
   return CURLE_OK;
 }
 
   return CURLE_OK;
 }
 
-int glob_match_url(char **result, char *filename, URLGlob *glob)
+CURLcode glob_match_url(char **result, char *filename, URLGlob *glob)
 {
   char *target;
   size_t allocsize;
 {
   char *target;
   size_t allocsize;
@@ -549,34 +594,44 @@ int glob_match_url(char **result, char *filename, URLGlob *glob)
       unsigned long i;
       char *ptr = filename;
       unsigned long num = strtoul(&filename[1], &filename, 10);
       unsigned long i;
       char *ptr = filename;
       unsigned long num = strtoul(&filename[1], &filename, 10);
-      i = num - 1UL;
+      URLPattern *pat =NULL;
+
+      if(num < glob->size) {
+        num--; /* make it zero based */
+        /* find the correct glob entry */
+        for(i=0; i<glob->size; i++) {
+          if(glob->pattern[i].globindex == (int)num) {
+            pat = &glob->pattern[i];
+            break;
+          }
+        }
+      }
 
 
-      if(num && (i <= glob->size / 2)) {
-        URLPattern pat = glob->pattern[i];
-        switch (pat.type) {
+      if(pat) {
+        switch (pat->type) {
         case UPTSet:
         case UPTSet:
-          if(pat.content.Set.elements) {
-            appendthis = pat.content.Set.elements[pat.content.Set.ptr_s];
+          if(pat->content.Set.elements) {
+            appendthis = pat->content.Set.elements[pat->content.Set.ptr_s];
             appendlen =
             appendlen =
-              strlen(pat.content.Set.elements[pat.content.Set.ptr_s]);
+              strlen(pat->content.Set.elements[pat->content.Set.ptr_s]);
           }
           break;
         case UPTCharRange:
           }
           break;
         case UPTCharRange:
-          numbuf[0] = pat.content.CharRange.ptr_c;
+          numbuf[0] = pat->content.CharRange.ptr_c;
           numbuf[1] = 0;
           appendthis = numbuf;
           appendlen = 1;
           break;
         case UPTNumRange:
           snprintf(numbuf, sizeof(numbuf), "%0*d",
           numbuf[1] = 0;
           appendthis = numbuf;
           appendlen = 1;
           break;
         case UPTNumRange:
           snprintf(numbuf, sizeof(numbuf), "%0*d",
-                   pat.content.NumRange.padlength,
-                   pat.content.NumRange.ptr_n);
+                   pat->content.NumRange.padlength,
+                   pat->content.NumRange.ptr_n);
           appendthis = numbuf;
           appendlen = strlen(numbuf);
           break;
         default:
           appendthis = numbuf;
           appendlen = strlen(numbuf);
           break;
         default:
-          printf("internal error: invalid pattern type (%d)\n",
-                 (int)pat.type);
+          fprintf(stderr, "internal error: invalid pattern type (%d)\n",
+                  (int)pat->type);
           Curl_safefree(target);
           return CURLE_FAILED_INIT;
         }
           Curl_safefree(target);
           return CURLE_FAILED_INIT;
         }
index 9c08137..7a9ec59 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -31,11 +31,13 @@ typedef enum {
 
 typedef struct {
   URLPatternType type;
 
 typedef struct {
   URLPatternType type;
+  int globindex; /* the number of this particular glob or -1 if not used
+                    within {} or [] */
   union {
     struct {
       char **elements;
   union {
     struct {
       char **elements;
-      short size;
-      short ptr_s;
+      int size;
+      int ptr_s;
     } Set;
     struct {
       char min_c;
     } Set;
     struct {
       char min_c;
@@ -44,31 +46,31 @@ typedef struct {
       int step;
     } CharRange;
     struct {
       int step;
     } CharRange;
     struct {
-      int min_n;
-      int max_n;
-      short padlength;
-      int ptr_n;
-      int step;
+      unsigned long min_n;
+      unsigned long max_n;
+      int padlength;
+      unsigned long ptr_n;
+      unsigned long step;
     } NumRange ;
   } content;
 } URLPattern;
 
 /* the total number of globs supported */
     } NumRange ;
   } content;
 } URLPattern;
 
 /* the total number of globs supported */
-#define GLOB_PATTERN_NUM 9
+#define GLOB_PATTERN_NUM 100
 
 typedef struct {
 
 typedef struct {
-  char *literal[10];
-  URLPattern pattern[GLOB_PATTERN_NUM+1];
+  URLPattern pattern[GLOB_PATTERN_NUM];
   size_t size;
   size_t urllen;
   char *glob_buffer;
   char beenhere;
   size_t size;
   size_t urllen;
   char *glob_buffer;
   char beenhere;
-  char errormsg[80]; /* error message buffer */
+  const char *error; /* error message */
+  size_t pos;        /* column position of error or 0 */
 } URLGlob;
 
 } URLGlob;
 
-int glob_url(URLGlob**, char*, int *, FILE *);
-int glob_next_url(char **, URLGlob *);
-int glob_match_url(char **, char*, URLGlob *);
+CURLcode glob_url(URLGlob**, char*, unsigned long *, FILE *);
+CURLcode glob_next_url(char **, URLGlob *);
+CURLcode glob_match_url(char **, char*, URLGlob *);
 void glob_cleanup(URLGlob* glob);
 
 #endif /* HEADER_CURL_TOOL_URLGLOB_H */
 void glob_cleanup(URLGlob* glob);
 
 #endif /* HEADER_CURL_TOOL_URLGLOB_H */
index 00d205e..6c26414 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -33,10 +33,19 @@ struct timeval tool_tvnow(void)
   ** GetTickCount() is available on _all_ Windows versions from W95 up
   ** to nowadays. Returns milliseconds elapsed since last system boot,
   ** increases monotonically and wraps once 49.7 days have elapsed.
   ** GetTickCount() is available on _all_ Windows versions from W95 up
   ** to nowadays. Returns milliseconds elapsed since last system boot,
   ** increases monotonically and wraps once 49.7 days have elapsed.
+  **
+  ** GetTickCount64() is available on Windows version from Windows Vista
+  ** and Windows Server 2008 up to nowadays. The resolution of the
+  ** function is limited to the resolution of the system timer, which
+  ** is typically in the range of 10 milliseconds to 16 milliseconds.
   */
   struct timeval now;
   */
   struct timeval now;
+#if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0600)
+  ULONGLONG milliseconds = GetTickCount64();
+#else
   DWORD milliseconds = GetTickCount();
   DWORD milliseconds = GetTickCount();
-  now.tv_sec = milliseconds / 1000;
+#endif
+  now.tv_sec = (long)(milliseconds / 1000);
   now.tv_usec = (milliseconds % 1000) * 1000;
   return now;
 }
   now.tv_usec = (milliseconds % 1000) * 1000;
   return now;
 }
index a18c011..3627edc 100644 (file)
@@ -25,7 +25,7 @@
 
 #define CURL_NAME "curl"
 #define CURL_COPYRIGHT LIBCURL_COPYRIGHT
 
 #define CURL_NAME "curl"
 #define CURL_COPYRIGHT LIBCURL_COPYRIGHT
-#define CURL_VERSION "7.32.0"
+#define CURL_VERSION "7.40.0"
 #define CURL_VERSION_MAJOR LIBCURL_VERSION_MAJOR
 #define CURL_VERSION_MINOR LIBCURL_VERSION_MINOR
 #define CURL_VERSION_PATCH LIBCURL_VERSION_PATCH
 #define CURL_VERSION_MAJOR LIBCURL_VERSION_MAJOR
 #define CURL_VERSION_MINOR LIBCURL_VERSION_MINOR
 #define CURL_VERSION_PATCH LIBCURL_VERSION_PATCH
index 3c32067..f29d1ac 100644 (file)
@@ -103,7 +103,7 @@ void ourWriteOut(CURL *curl, struct OutStruct *outs, const char *writeinfo)
 {
   FILE *stream = stdout;
   const char *ptr = writeinfo;
 {
   FILE *stream = stdout;
   const char *ptr = writeinfo;
-  char *stringp;
+  char *stringp = NULL;
   long longinfo;
   double doubleinfo;
 
   long longinfo;
   double doubleinfo;
 
index 505bdb1..da0cad6 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 
 #ifdef HAVE_FSETXATTR
 #  include <sys/xattr.h> /* header from libc, not from libattr */
 
 #ifdef HAVE_FSETXATTR
 #  include <sys/xattr.h> /* header from libc, not from libattr */
+#  define USE_XATTR
+#elif defined(__FreeBSD_version) && (__FreeBSD_version > 500000)
+#  include <sys/types.h>
+#  include <sys/extattr.h>
+#  define USE_XATTR
 #endif
 
 #include "tool_xattr.h"
 
 #include "memdebug.h" /* keep this as LAST include */
 
 #endif
 
 #include "tool_xattr.h"
 
 #include "memdebug.h" /* keep this as LAST include */
 
-#ifdef HAVE_FSETXATTR
+#ifdef USE_XATTR
 
 /* mapping table of curl metadata to extended attribute names */
 static const struct xattr_mapping {
 
 /* mapping table of curl metadata to extended attribute names */
 static const struct xattr_mapping {
@@ -51,19 +56,27 @@ int fwrite_xattr(CURL *curl, int fd)
 {
   int i = 0;
   int err = 0;
 {
   int i = 0;
   int err = 0;
+
   /* loop through all xattr-curlinfo pairs and abort on a set error */
   while(err == 0 && mappings[i].attr != NULL) {
     char *value = NULL;
   /* loop through all xattr-curlinfo pairs and abort on a set error */
   while(err == 0 && mappings[i].attr != NULL) {
     char *value = NULL;
-    CURLcode rc = curl_easy_getinfo(curl, mappings[i].info, &value);
-    if(rc == CURLE_OK && value) {
+    CURLcode result = curl_easy_getinfo(curl, mappings[i].info, &value);
+    if(!result && value) {
 #ifdef HAVE_FSETXATTR_6
       err = fsetxattr(fd, mappings[i].attr, value, strlen(value), 0, 0);
 #elif defined(HAVE_FSETXATTR_5)
       err = fsetxattr(fd, mappings[i].attr, value, strlen(value), 0);
 #ifdef HAVE_FSETXATTR_6
       err = fsetxattr(fd, mappings[i].attr, value, strlen(value), 0, 0);
 #elif defined(HAVE_FSETXATTR_5)
       err = fsetxattr(fd, mappings[i].attr, value, strlen(value), 0);
+#elif defined(__FreeBSD_version)
+      err = extattr_set_fd(fd, EXTATTR_NAMESPACE_USER, mappings[i].attr, value,
+                           strlen(value));
+      /* FreeBSD's extattr_set_fd returns the length of the extended attribute
+       */
+      err = err < 0 ? err : 0;
 #endif
     }
     i++;
   }
 #endif
     }
     i++;
   }
+
   return err;
 }
 #else
   return err;
 }
 #else
@@ -71,6 +84,7 @@ int fwrite_xattr(CURL *curl, int fd)
 {
   (void)curl;
   (void)fd;
 {
   (void)curl;
   (void)fd;
+
   return 0;
 }
 #endif
   return 0;
 }
 #endif
index 04ab06e..acd9caa 100644 (file)
@@ -1,2 +1,3 @@
+add_subdirectory(data)
 add_subdirectory(libtest)
 add_subdirectory(server)
 add_subdirectory(libtest)
 add_subdirectory(server)
index 97afa96..c234c22 100644 (file)
@@ -59,6 +59,12 @@ transfers.
 of data encoded with base64. It is the only way a test case can contain binary
 data. (This attribute can in fact be used on any section, but it doesn't make
 much sense for other sections than "data").
 of data encoded with base64. It is the only way a test case can contain binary
 data. (This attribute can in fact be used on any section, but it doesn't make
 much sense for other sections than "data").
+
+For FTP file listings, the <data> section will be used *only* if you make sure
+that there has been a CWD done first to a directory named 'test-[num]' where
+[num] is the test case number. Otherwise the ftp server can't know from which
+test file to load the list content.
+
 </data>
 <dataNUM>
 Send back this contents instead of the <data> one. The num is set by:
 </data>
 <dataNUM>
 Send back this contents instead of the <data> one. The num is set by:
@@ -125,6 +131,13 @@ SLOWDOWN
  - Send FTP responses with 0.01 sec delay between each byte
 PASVBADIP
  - makes PASV send back an illegal IP in its 227 response
  - Send FTP responses with 0.01 sec delay between each byte
 PASVBADIP
  - makes PASV send back an illegal IP in its 227 response
+CAPA [capabilities]
+ - Enables support for and specifies a list of space separated capabilities to
+   return to the client for the IMAP CAPABILITY, POP3 CAPA and SMTP EHLO
+   commands
+AUTH [mechanisms]
+ - Enables support for SASL authentication and specifies a list of space
+   separated mechanisms for IMAP, POP3 and SMTP
 
 For HTTP/HTTPS:
 auth_required   if this is set and a POST/PUT is made without auth, the
 
 For HTTP/HTTPS:
 auth_required   if this is set and a POST/PUT is made without auth, the
@@ -143,7 +156,12 @@ rtp: part [num] channel [num] size [num]
 
 connection-monitor When used, this will log [DISCONNECT] to the server.input
                log when the connection is disconnected.
 
 connection-monitor When used, this will log [DISCONNECT] to the server.input
                log when the connection is disconnected.
+upgrade        when an HTTP upgrade header is found, the server will upgrade
+               to http2
 
 
+For TFTP:
+writedelay: [secs] delay this amount between reply packets (each packet being
+                   512 bytes payload)
 </servercmd>
 </reply>
 
 </servercmd>
 </reply>
 
@@ -158,47 +176,61 @@ ftp-ipv6
 ftps
 http
 http-ipv6
 ftps
 http
 http-ipv6
+http-proxy
+http-unix
 https
 https
+httptls+srp
+httptls+srp-ipv6
+imap
 none
 none
+pop3
+rtsp
+rtsp-ipv6
 scp
 sftp
 scp
 sftp
+smtp
 socks4
 socks5
 socks4
 socks5
-rtsp
-rtsp-ipv6
-imap
-pop3
-smtp
-httptls+srp
-httptls+srp-ipv6
-http-proxy
 
 Give only one per line.  This subsection is mandatory.
 </server>
 
 <features>
 A list of features that MUST be present in the client/library for this test to
 
 Give only one per line.  This subsection is mandatory.
 </server>
 
 <features>
 A list of features that MUST be present in the client/library for this test to
-be able to run (if these features are not present, the test will be
-SKIPPED). Features testable here are:
+be able to run. If a required feature is not present then the test will be
+SKIPPED.
+
+Alternatively a feature can be prefixed with an exclamation mark to indicate a
+feature is NOT required. If the feature is present then the test will be
+SKIPPED.
+
+Features testable here are:
 
 axTLS
 crypto
 
 axTLS
 crypto
+debug
 getrlimit
 GnuTLS
 idn
 ipv6
 large_file
 libz
 getrlimit
 GnuTLS
 idn
 ipv6
 large_file
 libz
+Metalink
 NSS
 NTLM
 OpenSSL
 NSS
 NTLM
 OpenSSL
-SSL
 socks
 socks
-unittest
-debug
+SSL
+SSLpinning
 TLS-SRP
 TLS-SRP
-Metalink
 TrackMemory
 TrackMemory
+unittest
+http2
+SSPI
+GSS-API
+Kerberos
+SPNEGO
+unix-sockets
 
 as well as each protocol that curl supports.  A protocol only needs to be
 specified if it is different from the server (useful when the server
 
 as well as each protocol that curl supports.  A protocol only needs to be
 specified if it is different from the server (useful when the server
@@ -257,7 +289,7 @@ data that is defined within the <reply><data></data></reply> section.
 If there's no test number found above, the HTTP test server will use the
 number following the last dot in the given hostname (made so that a CONNECT
 can still pass on test number) so that "foo.bar.123" gets treated as test case
 If there's no test number found above, the HTTP test server will use the
 number following the last dot in the given hostname (made so that a CONNECT
 can still pass on test number) so that "foo.bar.123" gets treated as test case
-123. Alternatively, if an ipv6-address is provided to CONNECT, the last
+123. Alternatively, if an IPv6 address is provided to CONNECT, the last
 hexadecimal group in the address will be used as the test numer! For example
 the address "[1234::ff]" would be treated as test case 255.
 
 hexadecimal group in the address will be used as the test numer! For example
 the address "[1234::ff]" would be treated as test case 255.
 
@@ -285,29 +317,42 @@ not negative integer number of seconds for the delay. This 'delay' attribute
 is intended for very specific test cases, and normally not needed.
 
 Available substitute variables include:
 is intended for very specific test cases, and normally not needed.
 
 Available substitute variables include:
-%CLIENTIP   - IPv4 address of the client running curl
-%CLIENT6IP  - IPv6 address of the client running curl
-%HOSTIP    - IPv4 address of the host running this test
-%HTTPPORT  - Port number of the HTTP server
-%HOST6IP   - IPv6 address of the host running this test
-%HTTP6PORT - IPv6 port number of the HTTP server
-%HTTPSPORT - Port number of the HTTPS server
-%PROXYPORT - Port number of the HTTP proxy
-%FTPPORT   - Port number of the FTP server
+%CLIENT6IP - IPv6 address of the client running curl
+%CLIENTIP  - IPv4 address of the client running curl
+%CURL      - Path to the curl executable
+%FTP2PORT  - Port number of the FTP server 2
 %FTP6PORT  - IPv6 port number of the FTP server
 %FTP6PORT  - IPv6 port number of the FTP server
+%FTPPORT   - Port number of the FTP server
 %FTPSPORT  - Port number of the FTPS server
 %FTPSPORT  - Port number of the FTPS server
-%FTP2PORT  - Port number of the FTP server 2
 %FTPTIME2  - Timeout in seconds that should be just sufficient to receive
              a response from the test FTP server
 %FTPTIME2  - Timeout in seconds that should be just sufficient to receive
              a response from the test FTP server
-%TFTPPORT  - Port number of the TFTP server
-%TFTP6PORT - IPv6 port number of the TFTP server
-%SSHPORT   - Port number of the SCP/SFTP server
-%SOCKSPORT - Port number of the SOCKS4/5 server
-%RTSPPORT  - Port number of the RTSP server
+%FTPTIME3  - Even longer than %FTPTIME2
+%GOPHER6PORT  - IPv6 port number of the Gopher server
+%GOPHERPORT   - Port number of the Gopher server
+%HOST6IP      - IPv6 address of the host running this test
+%HOSTIP       - IPv4 address of the host running this test
+%HTTP6PORT    - IPv6 port number of the HTTP server
+%HTTPPIPEPORT - Port number of the HTTP pipelining server
+%HTTPUNIXPATH - Path to the Unix socket of the HTTP server
+%HTTPPORT     - Port number of the HTTP server
+%HTTPSPORT    - Port number of the HTTPS server
+%HTTPTLS6PORT - IPv6 port number of the HTTP TLS server
+%HTTPTLSPORT  - Port number of the HTTP TLS server
+%IMAP6PORT - IPv6 port number of the IMAP server
+%IMAPPORT  - Port number of the IMAP server
+%POP36PORT - IPv6 ort number of the POP3 server
+%POP3PORT  - Port number of the POP3 server
+%PROXYPORT - Port number of the HTTP proxy
+%PWD       - Current directory
 %RTSP6PORT - IPv6 port number of the RTSP server
 %RTSP6PORT - IPv6 port number of the RTSP server
+%RTSPPORT  - Port number of the RTSP server
+%SMTP6PORT - IPv6 port number of the SMTP server
+%SMTPPORT  - Port number of the SMTP server
+%SOCKSPORT - Port number of the SOCKS4/5 server
 %SRCDIR    - Full path to the source dir
 %SRCDIR    - Full path to the source dir
-%PWD       - Current directory
-%CURL      - Path to the curl executable
+%SSHPORT   - Port number of the SCP/SFTP server
+%TFTP6PORT - IPv6 port number of the TFTP server
+%TFTPPORT  - Port number of the TFTP server
 %USER      - Login ID of the user running the test
 </command>
 
 %USER      - Login ID of the user running the test
 </command>
 
index 7ba9d96..c97f116 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -239,6 +239,7 @@ CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
+CURL_DISABLE_SMB = @CURL_DISABLE_SMB@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
@@ -263,7 +264,6 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_NSS_INITCONTEXT = @HAVE_NSS_INITCONTEXT@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
@@ -272,7 +272,6 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
-KRB4_ENABLED = @KRB4_ENABLED@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
@@ -293,6 +292,7 @@ MKDIR_P = @MKDIR_P@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
+NSS_LIBS = @NSS_LIBS@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
@@ -328,11 +328,13 @@ USE_GNUTLS = @USE_GNUTLS@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
+USE_NGHTTP2 = @USE_NGHTTP2@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
+USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
index 3ddc1c9..a8b8adc 100644 (file)
@@ -81,6 +81,9 @@ The cURL Test Suite
   machine, or just move the servers in case you have local services on any of
   those ports.
 
   machine, or just move the servers in case you have local services on any of
   those ports.
 
+  The HTTP server supports listening on a Unix domain socket, the default
+  location is 'http.sock'.
+
  1.4 Run
 
   'make test'. This builds the test suite support code and invokes the
  1.4 Run
 
   'make test'. This builds the test suite support code and invokes the
@@ -144,7 +147,9 @@ The cURL Test Suite
   runtests.pl's -t option will enable torture testing mode, which runs each
   test many times and makes each different memory allocation fail on each
   successive run.  This tests the out of memory error handling code to ensure
   runtests.pl's -t option will enable torture testing mode, which runs each
   test many times and makes each different memory allocation fail on each
   successive run.  This tests the out of memory error handling code to ensure
-  that memory leaks do not occur even in those situations.
+  that memory leaks do not occur even in those situations. It can help to
+  compile curl with CPPFLAGS=-DMEMDEBUG_LOG_SYNC when using this option, to
+  ensure that the memory log file is properly written even if curl crashes.
 
  1.7 Debug
 
 
  1.7 Debug
 
index cd35bdf..ddb5c9f 100644 (file)
@@ -40,6 +40,8 @@ CERTFILES = \
   Server-localhost-sv.p12 \
   Server-localhost-sv.pem \
   Server-localhost-sv.prm \
   Server-localhost-sv.p12 \
   Server-localhost-sv.pem \
   Server-localhost-sv.prm \
+  Server-localhost-sv.pub.der \
+  Server-localhost-sv.pub.pem \
   Server-localhost.nn-sv.crl \
   Server-localhost.nn-sv.crt \
   Server-localhost.nn-sv.csr \
   Server-localhost.nn-sv.crl \
   Server-localhost.nn-sv.crt \
   Server-localhost.nn-sv.csr \
@@ -48,6 +50,8 @@ CERTFILES = \
   Server-localhost.nn-sv.key \
   Server-localhost.nn-sv.pem \
   Server-localhost.nn-sv.prm \
   Server-localhost.nn-sv.key \
   Server-localhost.nn-sv.pem \
   Server-localhost.nn-sv.prm \
+  Server-localhost.nn-sv.pub.der \
+  Server-localhost.nn-sv.pub.pem \
   Server-localhost0h-sv.crl \
   Server-localhost0h-sv.crt \
   Server-localhost0h-sv.csr \
   Server-localhost0h-sv.crl \
   Server-localhost0h-sv.crt \
   Server-localhost0h-sv.csr \
@@ -56,7 +60,9 @@ CERTFILES = \
   Server-localhost0h-sv.key \
   Server-localhost0h-sv.p12 \
   Server-localhost0h-sv.pem \
   Server-localhost0h-sv.key \
   Server-localhost0h-sv.p12 \
   Server-localhost0h-sv.pem \
-  Server-localhost0h-sv.prm
+  Server-localhost0h-sv.prm \
+  Server-localhost0h-sv.pub.der \
+  Server-localhost0h-sv.pub.pem
 
 SRPFILES = \
   srp-verifier-conf \
 
 SRPFILES = \
   srp-verifier-conf \
index 3d71cc0..0610cae 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -218,6 +218,7 @@ CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
+CURL_DISABLE_SMB = @CURL_DISABLE_SMB@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
@@ -242,7 +243,6 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_NSS_INITCONTEXT = @HAVE_NSS_INITCONTEXT@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
@@ -251,7 +251,6 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
-KRB4_ENABLED = @KRB4_ENABLED@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
@@ -272,6 +271,7 @@ MKDIR_P = @MKDIR_P@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
+NSS_LIBS = @NSS_LIBS@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
@@ -307,11 +307,13 @@ USE_GNUTLS = @USE_GNUTLS@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
+USE_NGHTTP2 = @USE_NGHTTP2@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
+USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
@@ -411,6 +413,8 @@ CERTFILES = \
   Server-localhost-sv.p12 \
   Server-localhost-sv.pem \
   Server-localhost-sv.prm \
   Server-localhost-sv.p12 \
   Server-localhost-sv.pem \
   Server-localhost-sv.prm \
+  Server-localhost-sv.pub.der \
+  Server-localhost-sv.pub.pem \
   Server-localhost.nn-sv.crl \
   Server-localhost.nn-sv.crt \
   Server-localhost.nn-sv.csr \
   Server-localhost.nn-sv.crl \
   Server-localhost.nn-sv.crt \
   Server-localhost.nn-sv.csr \
@@ -419,6 +423,8 @@ CERTFILES = \
   Server-localhost.nn-sv.key \
   Server-localhost.nn-sv.pem \
   Server-localhost.nn-sv.prm \
   Server-localhost.nn-sv.key \
   Server-localhost.nn-sv.pem \
   Server-localhost.nn-sv.prm \
+  Server-localhost.nn-sv.pub.der \
+  Server-localhost.nn-sv.pub.pem \
   Server-localhost0h-sv.crl \
   Server-localhost0h-sv.crt \
   Server-localhost0h-sv.csr \
   Server-localhost0h-sv.crl \
   Server-localhost0h-sv.crt \
   Server-localhost0h-sv.csr \
@@ -427,7 +433,9 @@ CERTFILES = \
   Server-localhost0h-sv.key \
   Server-localhost0h-sv.p12 \
   Server-localhost0h-sv.pem \
   Server-localhost0h-sv.key \
   Server-localhost0h-sv.p12 \
   Server-localhost0h-sv.pem \
-  Server-localhost0h-sv.prm
+  Server-localhost0h-sv.prm \
+  Server-localhost0h-sv.pub.der \
+  Server-localhost0h-sv.pub.pem
 
 SRPFILES = \
   srp-verifier-conf \
 
 SRPFILES = \
   srp-verifier-conf \
diff --git a/tests/certs/Server-localhost-sv.pub.der b/tests/certs/Server-localhost-sv.pub.der
new file mode 100644 (file)
index 0000000..7e89b51
Binary files /dev/null and b/tests/certs/Server-localhost-sv.pub.der differ
diff --git a/tests/certs/Server-localhost-sv.pub.pem b/tests/certs/Server-localhost-sv.pub.pem
new file mode 100644 (file)
index 0000000..2384643
--- /dev/null
@@ -0,0 +1,6 @@
+-----BEGIN PUBLIC KEY-----
+MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwJ3kmLLnk0YEKCdJ2/prhBWgB
+s3J3lzjkYBxxnZn3JnshtW2qnxR2B2ykKi197vZviljEk97+oSUP/1dJwNmU2Qd5
+v4xt+vEYgmegP9cxA4LsuTlpB+zskxdbGnKRk7JrmGZj/mEp562GDgS6v4tVV2Gl
+SvbK58bRuGVCq2dkFwIDAQAB
+-----END PUBLIC KEY-----
diff --git a/tests/certs/Server-localhost.nn-sv.pub.der b/tests/certs/Server-localhost.nn-sv.pub.der
new file mode 100644 (file)
index 0000000..b67ab96
Binary files /dev/null and b/tests/certs/Server-localhost.nn-sv.pub.der differ
diff --git a/tests/certs/Server-localhost.nn-sv.pub.pem b/tests/certs/Server-localhost.nn-sv.pub.pem
new file mode 100644 (file)
index 0000000..3131e95
--- /dev/null
@@ -0,0 +1,6 @@
+-----BEGIN PUBLIC KEY-----
+MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDT1E7bY1w/OjpeOAmU5k1wnQ2v
+SeaCXQe39c2g369x8c+/1Zq9r3x4XVU/FL27LA5zndaCmtXm9iFdCJKicV+AX1zO
+8MI3N3kPTT3U8oBtRzZF0dKLei4ScUtHhvWMma/nDs+1yU16dfeydAxB46u7LJ1v
+VAgTWjrvfCf3PwsLcQIDAQAB
+-----END PUBLIC KEY-----
diff --git a/tests/certs/Server-localhost0h-sv.pub.der b/tests/certs/Server-localhost0h-sv.pub.der
new file mode 100644 (file)
index 0000000..2b071d3
Binary files /dev/null and b/tests/certs/Server-localhost0h-sv.pub.der differ
diff --git a/tests/certs/Server-localhost0h-sv.pub.pem b/tests/certs/Server-localhost0h-sv.pub.pem
new file mode 100644 (file)
index 0000000..c403ac5
--- /dev/null
@@ -0,0 +1,6 @@
+-----BEGIN PUBLIC KEY-----
+MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMqZErIuiQK+VM3K5t2kzzMsyl
+aGdaO7mGo5WIPuhjw+0AYBkDK11bVoraIV5xXNHj3lEYwRcUsTOQAFya5XMLqIic
+0AtUvOo6Od32ZYFLKZlMcdP3aX+A6OhtYUGDh+usLL0P6xv9ojeXbTFWuktR3bEB
+64n4Jd5bo+WyP0x3UwIDAQAB
+-----END PUBLIC KEY-----
index 9cc4671..c899d70 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -158,6 +158,7 @@ CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
+CURL_DISABLE_SMB = @CURL_DISABLE_SMB@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
@@ -182,7 +183,6 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_NSS_INITCONTEXT = @HAVE_NSS_INITCONTEXT@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
@@ -191,7 +191,6 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
-KRB4_ENABLED = @KRB4_ENABLED@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
@@ -212,6 +211,7 @@ MKDIR_P = @MKDIR_P@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
+NSS_LIBS = @NSS_LIBS@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
@@ -247,11 +247,13 @@ USE_GNUTLS = @USE_GNUTLS@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
+USE_NGHTTP2 = @USE_NGHTTP2@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
+USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
index a70da9c..80876ec 100755 (executable)
@@ -75,6 +75,12 @@ echo "openssl rsa -in $PREFIX-sv.key -out $PREFIX-sv.key"
 $OPENSSL rsa -in $PREFIX-sv.key -out $PREFIX-sv.key -passin pass:secret
 echo pseudo secrets generated
 
 $OPENSSL rsa -in $PREFIX-sv.key -out $PREFIX-sv.key -passin pass:secret
 echo pseudo secrets generated
 
+echo "openssl rsa -in $PREFIX-sv.key -pubout -outform DER -out $PREFIX-sv.pub.der"
+$OPENSSL rsa -in $PREFIX-sv.key -pubout -outform DER -out $PREFIX-sv.pub.der
+
+echo "openssl rsa -in $PREFIX-sv.key -pubout -outform PEM -out $PREFIX-sv.pub.pem"
+$OPENSSL rsa -in $PREFIX-sv.key -pubout -outform PEM -out $PREFIX-sv.pub.pem
+
 echo "openssl x509 -set_serial $SERIAL -extfile $PREFIX-sv.prm -days $DURATION  -CA $CAPREFIX-ca.cacert -CAkey $CAPREFIX-ca.key -in $PREFIX-sv.csr -req -out $PREFIX-sv.crt -text -nameopt multiline -sha1"
 
 $OPENSSL x509 -set_serial $SERIAL -extfile $PREFIX-sv.prm -days $DURATION  -CA $CAPREFIX-ca.cacert -CAkey $CAPREFIX-ca.key -in $PREFIX-sv.csr -req -out $PREFIX-sv.crt -text -nameopt multiline -sha1
 echo "openssl x509 -set_serial $SERIAL -extfile $PREFIX-sv.prm -days $DURATION  -CA $CAPREFIX-ca.cacert -CAkey $CAPREFIX-ca.key -in $PREFIX-sv.csr -req -out $PREFIX-sv.crt -text -nameopt multiline -sha1"
 
 $OPENSSL x509 -set_serial $SERIAL -extfile $PREFIX-sv.prm -days $DURATION  -CA $CAPREFIX-ca.cacert -CAkey $CAPREFIX-ca.key -in $PREFIX-sv.csr -req -out $PREFIX-sv.crt -text -nameopt multiline -sha1
index e068d54..6a0119d 100644 (file)
@@ -5,4 +5,8 @@
 594
 1209
 1211
 594
 1209
 1211
+1316
 1512
 1512
+836
+882
+938
index 0d5c29d..a4b281f 100644 (file)
@@ -2,126 +2,8 @@ iall:
 install:
 test:
 
 install:
 test:
 
-# this list is in numerical order
-TESTCASES = test1 test2 test3 test4 test5 test6 test7 test8 test9       \
-test10 test11 test12 test13 test14 test15 test16 test17 test18 test19   \
-test20 test21 test22 test23 test24 test25 test26 test27 test28 test29   \
-test30 test31 test32 test33 test34 test35 test36 test37 test38 test39   \
-test40 test41 test42 test43 test44 test45 test46 test47 test48 test49   \
-test50 test51 test52 test53 test54 test55 test56 test57 test58 test59   \
-test60 test61 test62 test63 test64 test65 test66 test67 test68 test69   \
-test70 test71 test72 test73 test74 test75 test76 test77 test78 test79   \
-test80 test81 test82 test83 test84 test85 test86 test87 test88 test89   \
-test90 test91 test92 test93 test94 test95 test96 test97 test98 test99   \
-test100 test101 test102 test103 test104 test105 test106 test107 test108 \
-test109 test110 test111 test112 test113 test114 test115 test116 test117 \
-test118 test119 test120 test121 test122 test123 test124 test125 test126 \
-test127 test128 test129 test130 test131 test132 test133 test134 test135 \
-test136 test137 test138 test139 test140 test141 test142 test143 test144 \
-test145 test146 test147 test148 test149 test150 test151 test152 test153 \
-test154 test155 test156 test157 test158 test159 test160 test161 test162 \
-test163 test164 test165 test166 test167 test168 test169 test170 test171 \
-test172 test173 test174 test175 test176 test177 test178 test179 test180 \
-test181 test182 test183 test184 test185 test186 test187 test188 test189 \
-test190 test191 test192 test193 test194 test195 test196 test197 test198 \
-test199 test200 test201 test202 test203 test204 test205 test206 test207 \
-test208 test209 test210 test211 test212 test213 test214 test215 test216 \
-test217 test218         test220 test221 test222 test223 test224 test225 \
-test226 test227 test228 test229         test231         test233 test234 \
-test235 test236 test237 test238 test239 test240 test241 test242 test243 \
-        test245 test246 test247 test248 test249 test250 test251 test252 \
-test253 test254 test255 test256 test257 test258 test259 test260 test261 \
-test262 test263 test264 test265 test266 test267 test268 test269 test270 \
-test271 test272 test273 test274 test275 test276 test277 test278 test279 \
-test280 test281 test282 test283 test284 test285 test286 test287 test288 \
-test289 test290 test291 test292 test293 test294 test295 test296 test297 \
-test298 test299 test300 test301 test302 test303 test304 test305 test306 \
-test307 test308 test309 test310 test311 test312 test313                 \
-                                test320 test321 test322 test323 test324 \
-test350 test351 test352 test353 test354 \
-\
-test400 test401 test402 test403 test404 test405 test406 test407 test408 \
-test409 \
-\
-test500 test501 test502 test503 test504 test505 test506 test507 test508 \
-test509 test510 test511 test512 test513 test514 test515 test516 test517 \
-test518 test519 test520 test521 test522 test523 test524 test525 test526 \
-test527 test528 test529 test530 test531 test532 test533 test534 test535 \
-test536 test537 test538 test539 test540 test541 test542 test543 test544 \
-test545 test546 test547 test548 test549 test550 test551 test552 test553 \
-test554 test555 test556 test557 test558         test560 test561 test562 \
-test563 test564 test565 test566 test567 test568 test569 test570 test571 \
-test572 test573 test574 test575 test576         test578 test579 test580 \
-test581 test582 test583 test584 test585 test586 test587 test588         \
-test590 test591 test592 test593 test594 test595 test596 test597 test598 \
-test599 test600 test601 test602 test603 test604 test605 test606 test607 \
-test608 test609 test610 test611 test612 test613 test614 test615 test616 \
-test617 test618 test619 test620 test621 test622 test623 test624 test625 \
-test626 test627 test628 test629 test630 test631 test632 test633 test634 \
-test635 test636 test637 test638 test639 \
-\
-test700 test701 test702 test703 test704 test705 test706 test707 test708 \
-test709 test710 test711 test712 \
-\
-test800 test801 test802 test803 test804 test805 test806 test807 test808 \
-test809 \
-\
-test850 test851 test852 test853 test854 test855 test856 test857 \
-\
-test900 test901 test902 test903 test904 test905 test906 test907 test908 \
-test909 test910 test911 \
-\
-test1000 test1001 test1002 test1003 test1004 test1005 test1006 test1007 \
-test1008 test1009 test1010 test1011 test1012 test1013 test1014 test1015 \
-test1016 test1017 test1018 test1019 test1020 test1021 test1022 test1023 \
-test1024 test1025 test1026 test1027 test1028 test1029 test1030 test1031 \
-test1032 test1033 test1034 test1035 test1036 test1037 test1038 test1039 \
-test1040 test1041 test1042 test1043 test1044 test1045 test1046 test1047 \
-test1048 test1049 test1050 test1051 test1052 test1053 test1054 test1055 \
-test1056 test1057 test1058 test1059 test1060 test1061 test1062 test1063 \
-test1064 test1065 test1066 test1067 test1068 test1069 test1070 test1071 \
-test1072 test1073 test1074 test1075 test1076 test1077 test1078 test1079 \
-test1080 test1081 test1082 test1083 test1084 test1085 test1086 test1087 \
-test1088 test1089 test1090 test1091 test1092 test1093 test1094 test1095 \
-test1096 test1097 test1098 test1099 test1100 test1101 test1102 test1103 \
-test1104 test1105 test1106 test1107 test1108 test1109 test1110 test1111 \
-test1112 test1113 test1114 test1115 test1116 test1117 test1118 test1119 \
-test1120 test1121 test1122 test1123 test1124 test1125 test1126 test1127 \
-test1128 test1129 test1130 test1131 test1132 test1133 \
-\
-test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \
-test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \
-test1216 test1217 test1218 test1219 \
-test1220 test1221 test1222 test1223 test1224 test1225 test1226 test1227 \
-test1228 test1229 test1230 test1231 test1232 test1233 \
-\
-test1300 test1301 test1302 test1303 test1304 test1305 test1306 test1307 \
-test1308 test1309 test1310 test1311 test1312 test1313 test1314 test1315 \
-test1316 test1317 test1318 test1319 test1320 test1321 test1322 test1323 \
-test1324 test1325 test1326 test1327 test1328 test1329 test1330 test1331 \
-test1332 test1333 test1334 test1335 test1336 test1337 test1338 test1339 \
-test1340 test1341 test1342 test1343 test1344 test1345 test1346 test1347 \
-test1348 test1349 test1350 test1351 test1352 test1353 test1354 test1355 \
-test1356 test1357 test1358 test1359 test1360 test1361 test1362 test1363 \
-test1364 test1365 test1366 test1367 test1368 test1369 test1370 test1371 \
-test1372 test1373 test1374 test1375 test1376 test1377 test1378 test1379 \
-test1380 test1381 test1382 test1383 test1384 test1385 test1386 test1387 \
-test1388 test1389 test1390 test1391 test1392 test1393 test1394 test1395 \
-test1396 \
-\
-test1400 test1401 test1402 test1403 test1404 test1405 test1406 test1407 \
-test1408 test1409 test1410          test1412 test1413 test1414 \
-\
-test1500 test1501 test1502 test1503 test1504 test1505 test1506 test1507 \
-test1508 test1509 test1510 test1511 test1512 \
-\
-test1900 test1901 test1902 test1903 \
-\
-test2000 test2001 test2002 test2003 test2004 test2005 test2006 test2007 \
-test2008 test2009 test2010 test2011 test2012 test2013 test2014 test2015 \
-test2016 test2017 test2018 test2019 test2020 test2021 test2022 test2023 \
-test2024 test2025 test2026 test2027 test2028 test2029 test2030 test2031 \
-test2032 test2033
+# TESTCASES are taken from Makefile.inc
+include Makefile.inc
 
 EXTRA_DIST = $(TESTCASES) DISABLED
 
 
 EXTRA_DIST = $(TESTCASES) DISABLED
 
index 83f8842..99229d9 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
 # PARTICULAR PURPOSE.
 
 @SET_MAKE@
 # PARTICULAR PURPOSE.
 
 @SET_MAKE@
+
+#***************************************************************************
+#                                  _   _ ____  _
+#  Project                     ___| | | |  _ \| |
+#                             / __| | | | |_) | |
+#                            | (__| |_| |  _ <| |___
+#                             \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at http://curl.haxx.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
 VPATH = @srcdir@
 am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
 am__make_running_with_option = \
 VPATH = @srcdir@
 am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
 am__make_running_with_option = \
@@ -77,9 +99,9 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
+DIST_COMMON = $(srcdir)/Makefile.inc $(srcdir)/Makefile.in \
+       $(srcdir)/Makefile.am $(top_srcdir)/mkinstalldirs
 subdir = tests/data
 subdir = tests/data
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-       $(top_srcdir)/mkinstalldirs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
@@ -158,6 +180,7 @@ CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
+CURL_DISABLE_SMB = @CURL_DISABLE_SMB@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
@@ -182,7 +205,6 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_NSS_INITCONTEXT = @HAVE_NSS_INITCONTEXT@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
@@ -191,7 +213,6 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
-KRB4_ENABLED = @KRB4_ENABLED@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
@@ -212,6 +233,7 @@ MKDIR_P = @MKDIR_P@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
+NSS_LIBS = @NSS_LIBS@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
@@ -247,11 +269,13 @@ USE_GNUTLS = @USE_GNUTLS@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
+USE_NGHTTP2 = @USE_NGHTTP2@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
+USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
@@ -347,6 +371,7 @@ test289 test290 test291 test292 test293 test294 test295 test296 test297 \
 test298 test299 test300 test301 test302 test303 test304 test305 test306 \
 test307 test308 test309 test310 test311 test312 test313                 \
                                 test320 test321 test322 test323 test324 \
 test298 test299 test300 test301 test302 test303 test304 test305 test306 \
 test307 test308 test309 test310 test311 test312 test313                 \
                                 test320 test321 test322 test323 test324 \
+test325 \
 test350 test351 test352 test353 test354 \
 \
 test400 test401 test402 test403 test404 test405 test406 test407 test408 \
 test350 test351 test352 test353 test354 \
 \
 test400 test401 test402 test403 test404 test405 test406 test407 test408 \
@@ -367,18 +392,27 @@ test599 test600 test601 test602 test603 test604 test605 test606 test607 \
 test608 test609 test610 test611 test612 test613 test614 test615 test616 \
 test617 test618 test619 test620 test621 test622 test623 test624 test625 \
 test626 test627 test628 test629 test630 test631 test632 test633 test634 \
 test608 test609 test610 test611 test612 test613 test614 test615 test616 \
 test617 test618 test619 test620 test621 test622 test623 test624 test625 \
 test626 test627 test628 test629 test630 test631 test632 test633 test634 \
-test635 test636 test637 test638 test639 \
+test635 test636 test637 test638 test639 test640 test641 \
 \
 test700 test701 test702 test703 test704 test705 test706 test707 test708 \
 test709 test710 test711 test712 \
 \
 test800 test801 test802 test803 test804 test805 test806 test807 test808 \
 \
 test700 test701 test702 test703 test704 test705 test706 test707 test708 \
 test709 test710 test711 test712 \
 \
 test800 test801 test802 test803 test804 test805 test806 test807 test808 \
-test809 \
+test809 test810 test811 test812 test813 test814 test815 test816 test817 \
+test818 test819 test820 test821 test822 test823 test824 test825 test826 \
+test827 test828 test829 test830 test831 test832 test833 test834 test835 \
+test836 \
 \
 \
-test850 test851 test852 test853 test854 test855 test856 test857 \
+test850 test851 test852 test853 test854 test855 test856 test857 test858 \
+test859 test860 test861 test862 test863 test864 test865 test866 test867 \
+test868 test869 test870 test871 test872 test873 test874 test875 test876 \
+test877 test878 test879 test880 test881 test882 \
 \
 test900 test901 test902 test903 test904 test905 test906 test907 test908 \
 \
 test900 test901 test902 test903 test904 test905 test906 test907 test908 \
-test909 test910 test911 \
+test909 test910 test911 test912 test913 test914 test915 test916 test917 \
+test918 test919 test920 test921 test922 test923 test924 test925 test926 \
+test927 test928 test929 test930 test931 test932 test933 test934 test935 \
+test936 test937 test938 test939 test940 test941 \
 \
 test1000 test1001 test1002 test1003 test1004 test1005 test1006 test1007 \
 test1008 test1009 test1010 test1011 test1012 test1013 test1014 test1015 \
 \
 test1000 test1001 test1002 test1003 test1004 test1005 test1006 test1007 \
 test1008 test1009 test1010 test1011 test1012 test1013 test1014 test1015 \
@@ -396,18 +430,19 @@ test1096 test1097 test1098 test1099 test1100 test1101 test1102 test1103 \
 test1104 test1105 test1106 test1107 test1108 test1109 test1110 test1111 \
 test1112 test1113 test1114 test1115 test1116 test1117 test1118 test1119 \
 test1120 test1121 test1122 test1123 test1124 test1125 test1126 test1127 \
 test1104 test1105 test1106 test1107 test1108 test1109 test1110 test1111 \
 test1112 test1113 test1114 test1115 test1116 test1117 test1118 test1119 \
 test1120 test1121 test1122 test1123 test1124 test1125 test1126 test1127 \
-test1128 test1129 test1130 test1131 test1132 test1133 \
+test1128 test1129 test1130 test1131 test1132 test1133 test1134 \
 \
 test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \
 test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \
 test1216 test1217 test1218 test1219 \
 test1220 test1221 test1222 test1223 test1224 test1225 test1226 test1227 \
 \
 test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \
 test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \
 test1216 test1217 test1218 test1219 \
 test1220 test1221 test1222 test1223 test1224 test1225 test1226 test1227 \
-test1228 test1229 test1230 test1231 test1232 test1233 \
+test1228 test1229 test1230 test1231 test1232 test1233 test1234 test1235 \
+test1236 test1237 test1238 test1239 test1240 \
 \
 test1300 test1301 test1302 test1303 test1304 test1305 test1306 test1307 \
 test1308 test1309 test1310 test1311 test1312 test1313 test1314 test1315 \
 \
 test1300 test1301 test1302 test1303 test1304 test1305 test1306 test1307 \
 test1308 test1309 test1310 test1311 test1312 test1313 test1314 test1315 \
-test1316 test1317 test1318 test1319 test1320 test1321 test1322 test1323 \
-test1324 test1325 test1326 test1327 test1328 test1329 test1330 test1331 \
+test1316 test1317 test1318 test1319 test1320 test1321                   \
+         test1325 test1326 test1327 test1328 test1329 test1330 test1331 \
 test1332 test1333 test1334 test1335 test1336 test1337 test1338 test1339 \
 test1340 test1341 test1342 test1343 test1344 test1345 test1346 test1347 \
 test1348 test1349 test1350 test1351 test1352 test1353 test1354 test1355 \
 test1332 test1333 test1334 test1335 test1336 test1337 test1338 test1339 \
 test1340 test1341 test1342 test1343 test1344 test1345 test1346 test1347 \
 test1348 test1349 test1350 test1351 test1352 test1353 test1354 test1355 \
@@ -416,13 +451,24 @@ test1364 test1365 test1366 test1367 test1368 test1369 test1370 test1371 \
 test1372 test1373 test1374 test1375 test1376 test1377 test1378 test1379 \
 test1380 test1381 test1382 test1383 test1384 test1385 test1386 test1387 \
 test1388 test1389 test1390 test1391 test1392 test1393 test1394 test1395 \
 test1372 test1373 test1374 test1375 test1376 test1377 test1378 test1379 \
 test1380 test1381 test1382 test1383 test1384 test1385 test1386 test1387 \
 test1388 test1389 test1390 test1391 test1392 test1393 test1394 test1395 \
-test1396 \
+test1396 test1397 test1398 \
 \
 test1400 test1401 test1402 test1403 test1404 test1405 test1406 test1407 \
 \
 test1400 test1401 test1402 test1403 test1404 test1405 test1406 test1407 \
-test1408 test1409 test1410          test1412 test1413 test1414 \
+test1408 test1409 test1410 test1411 test1412 test1413 test1414 test1415 \
+test1416 test1417 test1418 test1419 test1420 \
+\
+test1428 test1429 test1430 test1431 test1432 test1433 test1434 test1435 \
+test1436 \
 \
 test1500 test1501 test1502 test1503 test1504 test1505 test1506 test1507 \
 \
 test1500 test1501 test1502 test1503 test1504 test1505 test1506 test1507 \
-test1508 test1509 test1510 test1511 test1512 \
+test1508 test1509 test1510 test1511 test1512 test1513 test1514 test1515 \
+test1516 \
+\
+test1520 \
+\
+test1525 test1526 test1527 test1528 test1529 \
+\
+test1800 test1801 \
 \
 test1900 test1901 test1902 test1903 \
 \
 \
 test1900 test1901 test1902 test1903 \
 \
@@ -430,13 +476,15 @@ test2000 test2001 test2002 test2003 test2004 test2005 test2006 test2007 \
 test2008 test2009 test2010 test2011 test2012 test2013 test2014 test2015 \
 test2016 test2017 test2018 test2019 test2020 test2021 test2022 test2023 \
 test2024 test2025 test2026 test2027 test2028 test2029 test2030 test2031 \
 test2008 test2009 test2010 test2011 test2012 test2013 test2014 test2015 \
 test2016 test2017 test2018 test2019 test2020 test2021 test2022 test2023 \
 test2024 test2025 test2026 test2027 test2028 test2029 test2030 test2031 \
-test2032 test2033
+test2032 test2033 test2034 test2035 test2036 test2037 test2038
+
 
 
+# TESTCASES are taken from Makefile.inc
 EXTRA_DIST = $(TESTCASES) DISABLED
 all: all-am
 
 .SUFFIXES:
 EXTRA_DIST = $(TESTCASES) DISABLED
 all: all-am
 
 .SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/Makefile.inc $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
@@ -457,6 +505,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
            echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
            cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
        esac;
            echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
            cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
        esac;
+$(srcdir)/Makefile.inc:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
diff --git a/tests/data/Makefile.inc b/tests/data/Makefile.inc
new file mode 100644 (file)
index 0000000..6467ca0
--- /dev/null
@@ -0,0 +1,164 @@
+#***************************************************************************
+#                                  _   _ ____  _
+#  Project                     ___| | | |  _ \| |
+#                             / __| | | | |_) | |
+#                            | (__| |_| |  _ <| |___
+#                             \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at http://curl.haxx.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
+
+# this list is in numerical order
+TESTCASES = test1 test2 test3 test4 test5 test6 test7 test8 test9       \
+test10 test11 test12 test13 test14 test15 test16 test17 test18 test19   \
+test20 test21 test22 test23 test24 test25 test26 test27 test28 test29   \
+test30 test31 test32 test33 test34 test35 test36 test37 test38 test39   \
+test40 test41 test42 test43 test44 test45 test46 test47 test48 test49   \
+test50 test51 test52 test53 test54 test55 test56 test57 test58 test59   \
+test60 test61 test62 test63 test64 test65 test66 test67 test68 test69   \
+test70 test71 test72 test73 test74 test75 test76 test77 test78 test79   \
+test80 test81 test82 test83 test84 test85 test86 test87 test88 test89   \
+test90 test91 test92 test93 test94 test95 test96 test97 test98 test99   \
+test100 test101 test102 test103 test104 test105 test106 test107 test108 \
+test109 test110 test111 test112 test113 test114 test115 test116 test117 \
+test118 test119 test120 test121 test122 test123 test124 test125 test126 \
+test127 test128 test129 test130 test131 test132 test133 test134 test135 \
+test136 test137 test138 test139 test140 test141 test142 test143 test144 \
+test145 test146 test147 test148 test149 test150 test151 test152 test153 \
+test154 test155 test156 test157 test158 test159 test160 test161 test162 \
+test163 test164 test165 test166 test167 test168 test169 test170 test171 \
+test172 test173 test174 test175 test176 test177 test178 test179 test180 \
+test181 test182 test183 test184 test185 test186 test187 test188 test189 \
+test190 test191 test192 test193 test194 test195 test196 test197 test198 \
+test199 test200 test201 test202 test203 test204 test205 test206 test207 \
+test208 test209 test210 test211 test212 test213 test214 test215 test216 \
+test217 test218         test220 test221 test222 test223 test224 test225 \
+test226 test227 test228 test229         test231         test233 test234 \
+test235 test236 test237 test238 test239 test240 test241 test242 test243 \
+        test245 test246 test247 test248 test249 test250 test251 test252 \
+test253 test254 test255 test256 test257 test258 test259 test260 test261 \
+test262 test263 test264 test265 test266 test267 test268 test269 test270 \
+test271 test272 test273 test274 test275 test276 test277 test278 test279 \
+test280 test281 test282 test283 test284 test285 test286 test287 test288 \
+test289 test290 test291 test292 test293 test294 test295 test296 test297 \
+test298 test299 test300 test301 test302 test303 test304 test305 test306 \
+test307 test308 test309 test310 test311 test312 test313                 \
+                                test320 test321 test322 test323 test324 \
+test325 \
+test350 test351 test352 test353 test354 \
+\
+test400 test401 test402 test403 test404 test405 test406 test407 test408 \
+test409 \
+\
+test500 test501 test502 test503 test504 test505 test506 test507 test508 \
+test509 test510 test511 test512 test513 test514 test515 test516 test517 \
+test518 test519 test520 test521 test522 test523 test524 test525 test526 \
+test527 test528 test529 test530 test531 test532 test533 test534 test535 \
+test536 test537 test538 test539 test540 test541 test542 test543 test544 \
+test545 test546 test547 test548 test549 test550 test551 test552 test553 \
+test554 test555 test556 test557 test558         test560 test561 test562 \
+test563 test564 test565 test566 test567 test568 test569 test570 test571 \
+test572 test573 test574 test575 test576         test578 test579 test580 \
+test581 test582 test583 test584 test585 test586 test587 test588         \
+test590 test591 test592 test593 test594 test595 test596 test597 test598 \
+test599 test600 test601 test602 test603 test604 test605 test606 test607 \
+test608 test609 test610 test611 test612 test613 test614 test615 test616 \
+test617 test618 test619 test620 test621 test622 test623 test624 test625 \
+test626 test627 test628 test629 test630 test631 test632 test633 test634 \
+test635 test636 test637 test638 test639 test640 test641 \
+\
+test700 test701 test702 test703 test704 test705 test706 test707 test708 \
+test709 test710 test711 test712 \
+\
+test800 test801 test802 test803 test804 test805 test806 test807 test808 \
+test809 test810 test811 test812 test813 test814 test815 test816 test817 \
+test818 test819 test820 test821 test822 test823 test824 test825 test826 \
+test827 test828 test829 test830 test831 test832 test833 test834 test835 \
+test836 \
+\
+test850 test851 test852 test853 test854 test855 test856 test857 test858 \
+test859 test860 test861 test862 test863 test864 test865 test866 test867 \
+test868 test869 test870 test871 test872 test873 test874 test875 test876 \
+test877 test878 test879 test880 test881 test882 \
+\
+test900 test901 test902 test903 test904 test905 test906 test907 test908 \
+test909 test910 test911 test912 test913 test914 test915 test916 test917 \
+test918 test919 test920 test921 test922 test923 test924 test925 test926 \
+test927 test928 test929 test930 test931 test932 test933 test934 test935 \
+test936 test937 test938 test939 test940 test941 \
+\
+test1000 test1001 test1002 test1003 test1004 test1005 test1006 test1007 \
+test1008 test1009 test1010 test1011 test1012 test1013 test1014 test1015 \
+test1016 test1017 test1018 test1019 test1020 test1021 test1022 test1023 \
+test1024 test1025 test1026 test1027 test1028 test1029 test1030 test1031 \
+test1032 test1033 test1034 test1035 test1036 test1037 test1038 test1039 \
+test1040 test1041 test1042 test1043 test1044 test1045 test1046 test1047 \
+test1048 test1049 test1050 test1051 test1052 test1053 test1054 test1055 \
+test1056 test1057 test1058 test1059 test1060 test1061 test1062 test1063 \
+test1064 test1065 test1066 test1067 test1068 test1069 test1070 test1071 \
+test1072 test1073 test1074 test1075 test1076 test1077 test1078 test1079 \
+test1080 test1081 test1082 test1083 test1084 test1085 test1086 test1087 \
+test1088 test1089 test1090 test1091 test1092 test1093 test1094 test1095 \
+test1096 test1097 test1098 test1099 test1100 test1101 test1102 test1103 \
+test1104 test1105 test1106 test1107 test1108 test1109 test1110 test1111 \
+test1112 test1113 test1114 test1115 test1116 test1117 test1118 test1119 \
+test1120 test1121 test1122 test1123 test1124 test1125 test1126 test1127 \
+test1128 test1129 test1130 test1131 test1132 test1133 test1134 \
+\
+test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \
+test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \
+test1216 test1217 test1218 test1219 \
+test1220 test1221 test1222 test1223 test1224 test1225 test1226 test1227 \
+test1228 test1229 test1230 test1231 test1232 test1233 test1234 test1235 \
+test1236 test1237 test1238 test1239 test1240 \
+\
+test1300 test1301 test1302 test1303 test1304 test1305 test1306 test1307 \
+test1308 test1309 test1310 test1311 test1312 test1313 test1314 test1315 \
+test1316 test1317 test1318 test1319 test1320 test1321                   \
+         test1325 test1326 test1327 test1328 test1329 test1330 test1331 \
+test1332 test1333 test1334 test1335 test1336 test1337 test1338 test1339 \
+test1340 test1341 test1342 test1343 test1344 test1345 test1346 test1347 \
+test1348 test1349 test1350 test1351 test1352 test1353 test1354 test1355 \
+test1356 test1357 test1358 test1359 test1360 test1361 test1362 test1363 \
+test1364 test1365 test1366 test1367 test1368 test1369 test1370 test1371 \
+test1372 test1373 test1374 test1375 test1376 test1377 test1378 test1379 \
+test1380 test1381 test1382 test1383 test1384 test1385 test1386 test1387 \
+test1388 test1389 test1390 test1391 test1392 test1393 test1394 test1395 \
+test1396 test1397 test1398 \
+\
+test1400 test1401 test1402 test1403 test1404 test1405 test1406 test1407 \
+test1408 test1409 test1410 test1411 test1412 test1413 test1414 test1415 \
+test1416 test1417 test1418 test1419 test1420 \
+\
+test1428 test1429 test1430 test1431 test1432 test1433 test1434 test1435 \
+test1436 \
+\
+test1500 test1501 test1502 test1503 test1504 test1505 test1506 test1507 \
+test1508 test1509 test1510 test1511 test1512 test1513 test1514 test1515 \
+test1516 \
+\
+test1520 \
+\
+test1525 test1526 test1527 test1528 test1529 \
+\
+test1800 test1801 \
+\
+test1900 test1901 test1902 test1903 \
+\
+test2000 test2001 test2002 test2003 test2004 test2005 test2006 test2007 \
+test2008 test2009 test2010 test2011 test2012 test2013 test2014 test2015 \
+test2016 test2017 test2018 test2019 test2020 test2021 test2022 test2023 \
+test2024 test2025 test2026 test2027 test2028 test2029 test2030 test2031 \
+test2032 test2033 test2034 test2035 test2036 test2037 test2038
index 6127163..72f9c85 100644 (file)
@@ -11,11 +11,11 @@ LIST
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
-<datacheck>
+<data mode="text">
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
-drwxr-xr-x   2 98       98           512 May  2  1996 .NeXT
+drwxr-xr-x   2 98       98           512 May  2  1996 curl-releases
 -r--r--r--   1 0        1             35 Jul 16  1996 README
 lrwxrwxrwx   1 0        1              7 Dec  9  1999 bin -> usr/bin
 dr-xr-xr-x   2 0        1            512 Oct  1  1997 dev
 -r--r--r--   1 0        1             35 Jul 16  1996 README
 lrwxrwxrwx   1 0        1              7 Dec  9  1999 bin -> usr/bin
 dr-xr-xr-x   2 0        1            512 Oct  1  1997 dev
@@ -23,7 +23,7 @@ drwxrwxrwx   2 98       98           512 May 29 16:04 download.html
 dr-xr-xr-x   2 0        1            512 Nov 30  1995 etc
 drwxrwxrwx   2 98       1            512 Oct 30 14:33 pub
 dr-xr-xr-x   5 0        1            512 Oct  1  1997 usr
 dr-xr-xr-x   2 0        1            512 Nov 30  1995 etc
 drwxrwxrwx   2 98       1            512 Oct 30 14:33 pub
 dr-xr-xr-x   5 0        1            512 Oct  1  1997 usr
-</datacheck>
+</data>
 </reply>
 
 #
 </reply>
 
 #
@@ -36,7 +36,7 @@ ftp
 FTP dir list PASV
  </name>
  <command>
 FTP dir list PASV
  </name>
  <command>
-ftp://%HOSTIP:%FTPPORT/
+ftp://%HOSTIP:%FTPPORT/test-100/
 </command>
 </client>
 
 </command>
 </client>
 
@@ -47,6 +47,7 @@ ftp://%HOSTIP:%FTPPORT/
 USER anonymous\r
 PASS ftp@example.com\r
 PWD\r
 USER anonymous\r
 PASS ftp@example.com\r
 PWD\r
+CWD test-100\r
 EPSV\r
 TYPE A\r
 LIST\r
 EPSV\r
 TYPE A\r
 LIST\r
index 9a87d6e..4adbd89 100644 (file)
@@ -63,6 +63,10 @@ ok
 <server>
 http
 </server>
 <server>
 http
 </server>
+<features>
+!SSPI
+crypto
+</features>
  <name>
 HTTP POST --digest with PUT and resumed upload and modified method
  </name>
  <name>
 HTTP POST --digest with PUT and resumed upload and modified method
  </name>
@@ -87,7 +91,6 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 Content-Length: 0\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 Content-Length: 0\r
-Expect: 100-continue\r
 \r
 GET http://%HOSTIP:%HTTPPORT/1001 HTTP/1.1\r
 Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/1001", response="6af4d89c952f4dd4cc215a6878dc499d"\r
 \r
 GET http://%HOSTIP:%HTTPPORT/1001 HTTP/1.1\r
 Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/1001", response="6af4d89c952f4dd4cc215a6878dc499d"\r
index 04c18f9..4c3bf16 100644 (file)
@@ -62,6 +62,10 @@ ok
 <server>
 http
 </server>
 <server>
 http
 </server>
+<features>
+!SSPI
+crypto
+</features>
  <name>
 HTTP POST --digest with PUT and resumed upload and modified method, twice
  </name>
  <name>
 HTTP POST --digest with PUT and resumed upload and modified method, twice
  </name>
@@ -86,7 +90,6 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 Content-Length: 0\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 Content-Length: 0\r
-Expect: 100-continue\r
 \r
 GET http://%HOSTIP:%HTTPPORT/1002.upload1 HTTP/1.1\r
 Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/1002.upload1", response="198aa9b6acb4b0c71d02a197a5e41f54"\r
 \r
 GET http://%HOSTIP:%HTTPPORT/1002.upload1 HTTP/1.1\r
 Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/1002.upload1", response="198aa9b6acb4b0c71d02a197a5e41f54"\r
index 30714f9..bcc503e 100644 (file)
@@ -85,6 +85,8 @@ http
 </server>
 <features>
 NTLM
 </server>
 <features>
 NTLM
+!SSPI
+debug
 </features>
  <name>
 HTTP proxy CONNECT auth NTLM with chunked-encoded 407 response
 </features>
  <name>
 HTTP proxy CONNECT auth NTLM with chunked-encoded 407 response
@@ -96,7 +98,7 @@ CURL_GETHOSTNAME=curlhost
 LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
  </setenv>
  <command>
 LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
  </setenv>
  <command>
-http://test.remote.example.com.1008:%HTTPPORT/path/10080002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user silly:person --proxy-ntlm --proxytunnel
+http://test.remote.example.com.1008:%HTTPPORT/path/10080002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-ntlm --proxytunnel
 </command>
 <precheck>
 chkhostname curlhost
 </command>
 <precheck>
 chkhostname curlhost
@@ -116,7 +118,7 @@ Proxy-Connection: Keep-Alive
 \r
 CONNECT test.remote.example.com.1008:%HTTPPORT HTTP/1.1\r
 Host: test.remote.example.com.1008:%HTTPPORT\r
 \r
 CONNECT test.remote.example.com.1008:%HTTPPORT HTTP/1.1\r
 Host: test.remote.example.com.1008:%HTTPPORT\r
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAABQAFAHAAAAAIAAgAdQAAAAAAAAAAAAAABoKBAKAeQjzKtCQ7ubW8S6MN7B59436GAxPu0CVROwwNBsgxML49gcbAXLT/bU+H5wrS9XNpbGx5Y3VybGhvc3Q=\r
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 Proxy-Connection: Keep-Alive\r
 \r
 GET /path/10080002 HTTP/1.1\r
 Proxy-Connection: Keep-Alive\r
 \r
 GET /path/10080002 HTTP/1.1\r
index 815292b..09faade 100644 (file)
@@ -10,7 +10,7 @@ LIST
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
-<datacheck>
+<datacheck mode="text">
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
index 1f8bf3a..a51d68a 100644 (file)
@@ -11,7 +11,7 @@ LIST
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
-<datacheck>
+<datacheck mode="text">
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
index 8112724..3ac9e12 100644 (file)
@@ -91,6 +91,8 @@ http
 </server>
 <features>
 NTLM
 </server>
 <features>
 NTLM
+!SSPI
+debug
 </features>
  <name>
 HTTP proxy CONNECT with any proxyauth and proxy offers NTLM and close
 </features>
  <name>
 HTTP proxy CONNECT with any proxyauth and proxy offers NTLM and close
@@ -102,7 +104,7 @@ CURL_GETHOSTNAME=curlhost
 LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
  </setenv>
  <command>
 LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
  </setenv>
  <command>
-http://test.remote.example.com.1021:%HTTPPORT/path/10210002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user silly:person --proxy-anyauth --proxytunnel
+http://test.remote.example.com.1021:%HTTPPORT/path/10210002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-anyauth --proxytunnel
 </command>
 <precheck>
 chkhostname curlhost
 </command>
 <precheck>
 chkhostname curlhost
@@ -126,7 +128,7 @@ Proxy-Connection: Keep-Alive
 \r
 CONNECT test.remote.example.com.1021:%HTTPPORT HTTP/1.1\r
 Host: test.remote.example.com.1021:%HTTPPORT\r
 \r
 CONNECT test.remote.example.com.1021:%HTTPPORT HTTP/1.1\r
 Host: test.remote.example.com.1021:%HTTPPORT\r
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAABQAFAHAAAAAIAAgAdQAAAAAAAAAAAAAABoKBAKAeQjzKtCQ7ubW8S6MN7B59436GAxPu0CVROwwNBsgxML49gcbAXLT/bU+H5wrS9XNpbGx5Y3VybGhvc3Q=\r
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 Proxy-Connection: Keep-Alive\r
 \r
 GET /path/10210002 HTTP/1.1\r
 Proxy-Connection: Keep-Alive\r
 \r
 GET /path/10210002 HTTP/1.1\r
index 9c2bc5f..2ffc7c6 100644 (file)
@@ -12,11 +12,11 @@ followlocation
 # Server-side
 <reply>
 <data nocheck="yes">
 # Server-side
 <reply>
 <data nocheck="yes">
-HTTP/1.1 301 This is a weirdo text message swsclose
-Location: data/10290002.txt?coolsite=yes
-Content-Length: 62
-Connection: close
-
+HTTP/1.1 301 This is a weirdo text message swsclose\r
+Location: data/10290002.txt?coolsite=yes\r
+Content-Length: 62\r
+Connection: close\r
+\r
 This server reply is for testing a simple Location: following
 </data>
 </reply>
 This server reply is for testing a simple Location: following
 </data>
 </reply>
@@ -45,12 +45,12 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 \r
 </protocol>
 Accept: */*\r
 \r
 </protocol>
-<stdout mode="text">
-HTTP/1.1 301 This is a weirdo text message swsclose
-Location: data/10290002.txt?coolsite=yes
-Content-Length: 62
-Connection: close
-
+<stdout>
+HTTP/1.1 301 This is a weirdo text message swsclose\r
+Location: data/10290002.txt?coolsite=yes\r
+Content-Length: 62\r
+Connection: close\r
+\r
 This server reply is for testing a simple Location: following
 http://%HOSTIP:%HTTPPORT/we/want/our/data/10290002.txt?coolsite=yes
 </stdout>
 This server reply is for testing a simple Location: following
 http://%HOSTIP:%HTTPPORT/we/want/our/data/10290002.txt?coolsite=yes
 </stdout>
index d05a092..a0f215d 100644 (file)
@@ -60,6 +60,7 @@ This IS the real page!
 http
 </server>
 <features>
 http
 </server>
 <features>
+!SSPI
 crypto
 </features>
  <name>
 crypto
 </features>
  <name>
index 614cdbf..5691864 100644 (file)
@@ -3,7 +3,7 @@
 <keywords>
 HTTP
 HTTP HEAD
 <keywords>
 HTTP
 HTTP HEAD
-range
+Range
 </keywords>
 </info>
 
 </keywords>
 </info>
 
index fa1692c..c0d23c6 100644 (file)
@@ -12,7 +12,7 @@ Content-Range
 # Server-side
 <reply>
 <data>
 # Server-side
 <reply>
 <data>
-HTTP/1.1 OK swsclose\r
+HTTP/1.1 200 OK swsclose\r
 Date: Thu, 09 Nov 2010 14:49:00 GMT\r
 Server: test-server/fake\r
 Accept-Ranges: bytes\r
 Date: Thu, 09 Nov 2010 14:49:00 GMT\r
 Server: test-server/fake\r
 Accept-Ranges: bytes\r
index d532120..f9a2255 100644 (file)
@@ -56,10 +56,10 @@ Content-Type: text/plain
 http
 </server>
  <name>
 http
 </server>
  <name>
-HTTP GET from end of entirely-downloaded file, no server resume
+HTTP GET beyond end of entirely-downloaded file, no server resume
  </name>
  <command>
  </name>
  <command>
-http://%HOSTIP:%HTTPPORT/1042 -C -
+http://%HOSTIP:%HTTPPORT/1042 -C 200
 </command>
 <file name="log/curl1042.out">
 012345678
 </command>
 <file name="log/curl1042.out">
 012345678
@@ -85,7 +85,7 @@ http://%HOSTIP:%HTTPPORT/1042 -C -
 </strip>
 <protocol>
 GET /1042 HTTP/1.1\r
 </strip>
 <protocol>
 GET /1042 HTTP/1.1\r
-Range: bytes=100-\r
+Range: bytes=200-\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 \r
index 421708c..028a8a6 100644 (file)
@@ -13,7 +13,7 @@ LIST
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
-<datacheck>
+<datacheck mode="text">
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
index cba99ba..c303473 100644 (file)
@@ -2,6 +2,8 @@
 <info>
 <keywords>
 FTP
 <info>
 <keywords>
 FTP
+FTP-ipv6
+IPv6
 PASV
 LIST
 --interface
 PASV
 LIST
 --interface
index e303a89..e4aea65 100644 (file)
@@ -868,6 +868,7 @@ daniel
 http
 </server>
 <features>
 http
 </server>
 <features>
+!SSPI
 crypto
 </features>
  <name>
 crypto
 </features>
  <name>
index a1d7286..a55a272 100644 (file)
@@ -873,6 +873,7 @@ daniel
 http
 </server>
 <features>
 http
 </server>
 <features>
+!SSPI
 crypto
 </features>
  <name>
 crypto
 </features>
  <name>
index 758457a..d338e2c 100644 (file)
@@ -66,6 +66,7 @@ This IS the real page!
 http
 </server>
 <features>
 http
 </server>
 <features>
+!SSPI
 crypto
 </features>
  <name>
 crypto
 </features>
  <name>
index c188e79..24cd20d 100644 (file)
@@ -42,6 +42,7 @@ Content-Length: 26
 http
 </server>
 <features>
 http
 </server>
 <features>
+!SSPI
 crypto
 </features>
  <name>
 crypto
 </features>
  <name>
index ae37fb7..e0f7d62 100644 (file)
@@ -49,7 +49,7 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 \r
 </protocol>
 Accept: */*\r
 \r
 </protocol>
-<stdout mode="text">
+<stdout>
 HTTP/1.1 301 This is a weirdo text message swsclose\r
 Location: data/10800002.txt?coolsite=yes\r
 Content-Length: 62\r
 HTTP/1.1 301 This is a weirdo text message swsclose\r
 Location: data/10800002.txt?coolsite=yes\r
 Content-Length: 62\r
index d290020..d9f895f 100644 (file)
@@ -57,7 +57,7 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 \r
 </protocol>
 Accept: */*\r
 \r
 </protocol>
-<stdout mode="text">
+<stdout>
 HTTP/1.1 301 This is a weirdo text message swsclose\r
 Location: data/10810099.txt?coolsite=yes\r
 Content-Length: 62\r
 HTTP/1.1 301 This is a weirdo text message swsclose\r
 Location: data/10810099.txt?coolsite=yes\r
 Content-Length: 62\r
index 402e1f9..354b2e0 100644 (file)
@@ -6,6 +6,7 @@ EPSV
 RETR
 timeout
 FAILURE
 RETR
 timeout
 FAILURE
+flaky
 </keywords>
 </info>
 
 </keywords>
 </info>
 
index d401b52..a442120 100644 (file)
@@ -52,6 +52,7 @@ This IS the real page!
 http
 </server>
 <features>
 http
 </server>
 <features>
+!SSPI
 crypto
 </features>
  <name>
 crypto
 </features>
  <name>
index b899810..3b733a5 100644 (file)
@@ -47,6 +47,7 @@ https
 </server>
 <features>
 NTLM
 </server>
 <features>
 NTLM
+!SSPI
 </features>
  <name>
 HTTP POST using CONNECT with --proxy-ntlm but no auth is required
 </features>
  <name>
 HTTP POST using CONNECT with --proxy-ntlm but no auth is required
index b5c45cb..9805648 100644 (file)
@@ -11,10 +11,10 @@ CURLOPT_PROXY
 # Server-side
 <reply>
 <data nocheck="yes">
 # Server-side
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Content-Length: 6
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Content-Length: 6\r
+\r
 hello
 </data>
 
 hello
 </data>
 
@@ -57,16 +57,16 @@ Accept: */*
 Proxy-Connection: Keep-Alive\r
 \r
 </protocol>
 Proxy-Connection: Keep-Alive\r
 \r
 </protocol>
-<stdout mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Content-Length: 6
-
+<stdout>
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Content-Length: 6\r
+\r
 hello
 hello
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Content-Length: 6
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Content-Length: 6\r
+\r
 hello
 </stdout>
 </verify>
 hello
 </stdout>
 </verify>
index f81e601..cde4039 100644 (file)
@@ -38,7 +38,7 @@ opcode: 1
 filename: /1099
 mode: octet
 </protocol>
 filename: /1099
 mode: octet
 </protocol>
-<stdout mode="text">
+<stdout>
 data for 1099
 </stdout>
 </verify>
 data for 1099
 </stdout>
 </verify>
index e38c0e0..10fa25d 100644 (file)
@@ -63,6 +63,8 @@ This is the final page !
 <client>
 <features>
 NTLM
 <client>
 <features>
 NTLM
+!SSPI
+debug
 </features>
 <server>
 http
 </features>
 <server>
 http
@@ -99,7 +101,7 @@ Content-Length: 0
 Content-Type: application/x-www-form-urlencoded\r
 \r
 POST /1100 HTTP/1.1\r
 Content-Type: application/x-www-form-urlencoded\r
 \r
 POST /1100 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoKBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
index 25f194c..9564775 100644 (file)
@@ -59,8 +59,7 @@ userid=myname&password=mypassword
 # This file was generated by libcurl! Edit at your own risk.
 
 127.0.0.1      FALSE   /we/want/       FALSE   0       foobar  name
 # This file was generated by libcurl! Edit at your own risk.
 
 127.0.0.1      FALSE   /we/want/       FALSE   0       foobar  name
-.127.0.0.1     TRUE    "/silly/"       FALSE   0       mismatch        this
-.0.0.1 TRUE    /       FALSE   0       partmatch       present
+127.0.0.1      FALSE   "/silly/"       FALSE   0       mismatch        this
 </file>
 </verify>
 </testcase>
 </file>
 </verify>
 </testcase>
index 9307d93..849f671 100644 (file)
@@ -89,7 +89,7 @@ ftps
 FTPS download with strict timeout and slow data transfer
  </name>
  <command timeout="1">
 FTPS download with strict timeout and slow data transfer
  </name>
  <command timeout="1">
--k --ftp-ssl-control ftps://%HOSTIP:%FTPSPORT/1112 -m 7
+-k --ftp-ssl-control ftps://%HOSTIP:%FTPSPORT/1112 -m 16
 </command>
 </client>
 
 </command>
 </client>
 
index 4d692ae..8d10975 100644 (file)
@@ -6,13 +6,14 @@ RETR
 LIST
 wildcardmatch
 ftplistparser
 LIST
 wildcardmatch
 ftplistparser
+flaky
 </keywords>
 </info>
 
 #
 # Server-side
 <reply>
 </keywords>
 </info>
 
 #
 # Server-side
 <reply>
-<data mode="text">
+<data>
 </data>
 </reply>
 
 </data>
 </reply>
 
@@ -82,7 +83,7 @@ EPSV
 RETR someothertext.txt\r
 QUIT\r
 </protocol>
 RETR someothertext.txt\r
 QUIT\r
 </protocol>
-<stdout mode="text">
+<stdout>
 This file should have permissions 444
 This file should have permissions 666
 This file should have permissions 777
 This file should have permissions 444
 This file should have permissions 666
 This file should have permissions 777
index 8eee429..573eda4 100644 (file)
@@ -34,7 +34,7 @@ ftp://%HOSTIP:%FTPPORT/fully_simulated/DOS/*
 <errorcode>
 0
 </errorcode>
 <errorcode>
 0
 </errorcode>
-<stdout mode="text">
+<stdout>
 =============================================================
 Remains:      12
 Filename:     .
 =============================================================
 Remains:      12
 Filename:     .
index 0f294d4..f9d6e36 100644 (file)
@@ -29,9 +29,6 @@ Content-Length: 0
 <server>
 http
 </server>
 <server>
 http
 </server>
-<features>
-crypto
-</features>
  <name>
 HTTP GET with unexpected 1xx response
  </name>
  <name>
 HTTP GET with unexpected 1xx response
  </name>
index 4b5a9ec..017f598 100644 (file)
@@ -1,6 +1,7 @@
 <testcase>
 <info>
 <keywords>
 <testcase>
 <info>
 <keywords>
+source analysis
 symbols-in-versions
 </keywords>
 </info>
 symbols-in-versions
 </keywords>
 </info>
index 3172fed..bd441a9 100644 (file)
@@ -4,6 +4,7 @@
 HTTP
 HTTP GET
 compressed
 HTTP
 HTTP GET
 compressed
+Transfer-Encoding
 </keywords>
 </info>
 #
 </keywords>
 </info>
 #
index d860bee..58f63f9 100644 (file)
@@ -5,7 +5,7 @@ HTTP
 HTTP GET
 compressed
 Transfer-Encoding
 HTTP GET
 compressed
 Transfer-Encoding
-chunked
+chunked Transfer-Encoding
 </keywords>
 </info>
 #
 </keywords>
 </info>
 #
index 366ffc7..8aa6432 100644 (file)
@@ -1,6 +1,7 @@
 <testcase>
 <info>
 <keywords>
 <testcase>
 <info>
 <keywords>
+source analysis
 memory-includes
 </keywords>
 </info>
 memory-includes
 </keywords>
 </info>
index 7337931..8b016fc 100644 (file)
@@ -40,7 +40,7 @@ foo
 # Verify data after the test has been "shot"
 <verify>
 <strip>
 # Verify data after the test has been "shot"
 <verify>
 <strip>
-^(User-Agent:|Content-Type: multipart/form-data;|Content-Type: multipart/mixed, boundary=|-------).*
+^(User-Agent:|Content-Type: multipart/form-data;|Content-Type: multipart/mixed; boundary=|-------).*
 </strip>
 <protocol>
 POST /we/want/1133 HTTP/1.1\r
 </strip>
 <protocol>
 POST /we/want/1133 HTTP/1.1\r
@@ -71,7 +71,7 @@ foo
 \r
 ------------------------------24e78000bd32\r
 Content-Disposition: form-data; name="file3"\r
 \r
 ------------------------------24e78000bd32\r
 Content-Disposition: form-data; name="file3"\r
-Content-Type: multipart/mixed, boundary=----------------------------7f0e85a48b0b\r
+Content-Type: multipart/mixed; boundary=----------------------------7f0e85a48b0b\r
 \r
 Content-Disposition: attachment; filename="test1133,a\"nd;.txt"\r
 Content-Type: m/f\r
 \r
 Content-Disposition: attachment; filename="test1133,a\"nd;.txt"\r
 Content-Type: m/f\r
diff --git a/tests/data/test1134 b/tests/data/test1134
new file mode 100644 (file)
index 0000000..f8db6eb
--- /dev/null
@@ -0,0 +1,65 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP HEAD
+-G
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+<servercmd>
+connection-monitor
+</servercmd>
+<data>
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Content-Length: 10
+
+contents1
+</data>
+<data1>
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Content-Length: 10
+
+contents2
+</data1>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+HTTP connection re-use with different credentials
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/1134 -u user1:password1 --next http://%HOSTIP:%HTTPPORT/11340001 -u 2user:password2
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /1134 HTTP/1.1\r
+Authorization: Basic dXNlcjE6cGFzc3dvcmQx\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+\r
+GET /11340001 HTTP/1.1\r
+Authorization: Basic MnVzZXI6cGFzc3dvcmQy\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+\r
+[DISCONNECT]
+</protocol>
+</verify>
+</testcase>
index 9a36f97..2ed4ab0 100644 (file)
@@ -2,6 +2,7 @@
 <info>
 <keywords>
 FTP
 <info>
 <keywords>
 FTP
+EPRT
 PORT
 FAILURE
 EPRT refused
 PORT
 FAILURE
 EPRT refused
index 9d92a8d..3fd8fdd 100644 (file)
@@ -1,12 +1,13 @@
 <testcase>
 <info>
 <keywords>
 <testcase>
 <info>
 <keywords>
-Proxy
-Socks Proxy
+HTTP
+SOCKS5
 NO_PROXY
 noproxy
 </keywords>
 </info>
 NO_PROXY
 noproxy
 </keywords>
 </info>
+
 # Server-side
 <reply>
 <data>
 # Server-side
 <reply>
 <data>
index ea62eeb..d49f71f 100644 (file)
@@ -58,6 +58,8 @@ Finally, this is the real page!
 <client>
 <features>
 NTLM
 <client>
 <features>
 NTLM
+!SSPI
+debug
 </features>
 <server>
 http
 </features>
 <server>
 http
@@ -93,7 +95,7 @@ Accept: */*
 Proxy-Connection: Keep-Alive\r
 \r
 GET http://%HOSTIP:%HTTPPORT/1215 HTTP/1.1\r
 Proxy-Connection: Keep-Alive\r
 \r
 GET http://%HOSTIP:%HTTPPORT/1215 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoKBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.30.0-DEV\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 User-Agent: curl/7.30.0-DEV\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
index d365249..959abbf 100644 (file)
@@ -1,4 +1,11 @@
 <testcase>
 <testcase>
+<info>
+<keywords>
+FILE
+URL
+</keywords>
+</info>
+
 # Server-side
 <reply>
 <data>
 # Server-side
 <reply>
 <data>
index a0e3d74..261cb8c 100644 (file)
@@ -1,4 +1,11 @@
 <testcase>
 <testcase>
+<info>
+<keywords>
+build system
+source analysis
+</keywords>
+</info>
+
 #
 # Client-side
 <client>
 #
 # Client-side
 <client>
@@ -19,7 +26,7 @@ none
 <verify>
 <file1 name="log/stderr1221" mode="text">
 </file1>
 <verify>
 <file1 name="log/stderr1221" mode="text">
 </file1>
-<file2 name="log/stdout1221" mode="text">
+<file2 name="log/stdout1221">
 Testing curl_10char_object_name...
 
 result: 16AFKPQRST expected: 16AFKPQRST input: 123__678__ABC__FGH__KLM__PQRSTUV
 Testing curl_10char_object_name...
 
 result: 16AFKPQRST expected: 16AFKPQRST input: 123__678__ABC__FGH__KLM__PQRSTUV
index 0df8bde..51edc97 100644 (file)
@@ -1,4 +1,11 @@
 <testcase>
 <testcase>
+<info>
+<keywords>
+build system
+source analysis
+</keywords>
+</info>
+
 #
 # Client-side
 <client>
 #
 # Client-side
 <client>
@@ -17,9 +24,9 @@ none
 #
 # Verify data after the test has been "shot"
 <verify>
 #
 # Verify data after the test has been "shot"
 <verify>
-<file1 name="log/stderr1222" mode="text">
+<file1 name="log/stderr1222">
 </file1>
 </file1>
-<file2 name="log/stdout1222" mode="text">
+<file2 name="log/stdout1222">
 Testing curl_8char_object_name...
 
 result: 16AFKPQR expected: 16AFKPQR input: 123__678__ABC__FGH__KLM__PQRSTUV
 Testing curl_8char_object_name...
 
 result: 16AFKPQR expected: 16AFKPQR input: 123__678__ABC__FGH__KLM__PQRSTUV
index f0313ce..a7e56a7 100644 (file)
@@ -4,7 +4,7 @@
 HTTP
 HTTP GET
 HTTP proxy
 HTTP
 HTTP GET
 HTTP proxy
-cookies 
+cookies
 cookie path
 </keywords>
 </info>
 cookie path
 </keywords>
 </info>
index dcb55e8..77e7e8c 100644 (file)
@@ -52,6 +52,7 @@ This IS the real page!
 http
 </server>
 <features>
 http
 </server>
 <features>
+!SSPI
 crypto
 </features>
  <name>
 crypto
 </features>
  <name>
index a071850..3c1d3d4 100644 (file)
@@ -3,10 +3,11 @@
 <keywords>
 HTTP
 HTTP CONNECT
 <keywords>
 HTTP
 HTTP CONNECT
+HTTP proxy
 IPv6
 </keywords>
 IPv6
 </keywords>
-
 </info>
 </info>
+
 #
 # Server-side
 <reply>
 #
 # Server-side
 <reply>
@@ -55,7 +56,7 @@ HTTP CONNECT to IPv6 numerical address
  </name>
 # 0x4ce == 1230, the test number
  <command>
  </name>
 # 0x4ce == 1230, the test number
  <command>
--g http://[1234:1234:1234::4ce]:%HTTPPORT/wanted/page/1230 -p -x %HOSTIP:%HTTPPORT
+http://[1234:1234:1234::4ce]:%HTTPPORT/wanted/page/1230 -p -x %HOSTIP:%HTTPPORT
 </command>
 </client>
 
 </command>
 </client>
 
diff --git a/tests/data/test1234 b/tests/data/test1234
new file mode 100644 (file)
index 0000000..41c4bc0
--- /dev/null
@@ -0,0 +1,33 @@
+<testcase>
+<info>
+<keywords>
+globbing
+{} list
+FAILURE
+</keywords>
+</info>
+# Server-side
+<reply>
+</reply>
+
+# Client-side
+<client>
+<server>
+none
+</server>
+ <name>
+abusing {}-globbing
+ </name>
+ <command>
+"%HOSTIP:%HTTPPORT/1234[0-1]{" "%HOSTIP:%HTTPPORT/{}{}{}{"
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+# 3 == CURLE_URL_MALFORMAT
+<errorcode>
+3
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test1235 b/tests/data/test1235
new file mode 100644 (file)
index 0000000..9e51219
--- /dev/null
@@ -0,0 +1,95 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+globbing
+{} list
+</keywords>
+</info>
+# Server-side
+<reply>
+<data1>
+HTTP/1.1 200 OK\r
+Funny-head: yesyes\r
+Content-Length: 15\r
+\r
+the number one
+</data1>
+<data2>
+HTTP/1.1 200 OK\r
+Funny-head: yesyes\r
+Content-Length: 16\r
+\r
+two is nice too
+</data2>
+</reply>
+
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+multiple requests using {}{} in the URL
+ </name>
+ <command>
+"%HOSTIP:%HTTPPORT/{1235,1235}{0001,0002}"
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /12350001 HTTP/1.1\r
+User-Agent: curl/7.8.1-pre3 (sparc-sun-solaris2.7) libcurl 7.8.1-pre3 (OpenSSL 0.9.6a) (krb4 enabled)\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+\r
+GET /12350002 HTTP/1.1\r
+User-Agent: curl/7.8.1-pre3 (sparc-sun-solaris2.7) libcurl 7.8.1-pre3 (OpenSSL 0.9.6a) (krb4 enabled)\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+\r
+GET /12350001 HTTP/1.1\r
+User-Agent: curl/7.8.1-pre3 (sparc-sun-solaris2.7) libcurl 7.8.1-pre3 (OpenSSL 0.9.6a) (krb4 enabled)\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+\r
+GET /12350002 HTTP/1.1\r
+User-Agent: curl/7.8.1-pre3 (sparc-sun-solaris2.7) libcurl 7.8.1-pre3 (OpenSSL 0.9.6a) (krb4 enabled)\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+\r
+</protocol>
+<stdout>
+--_curl_--%HOSTIP:%HTTPPORT/12350001
+HTTP/1.1 200 OK\r
+Funny-head: yesyes\r
+Content-Length: 15\r
+\r
+the number one
+--_curl_--%HOSTIP:%HTTPPORT/12350002
+HTTP/1.1 200 OK\r
+Funny-head: yesyes\r
+Content-Length: 16\r
+\r
+two is nice too
+--_curl_--%HOSTIP:%HTTPPORT/12350001
+HTTP/1.1 200 OK\r
+Funny-head: yesyes\r
+Content-Length: 15\r
+\r
+the number one
+--_curl_--%HOSTIP:%HTTPPORT/12350002
+HTTP/1.1 200 OK\r
+Funny-head: yesyes\r
+Content-Length: 16\r
+\r
+two is nice too
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test1236 b/tests/data/test1236
new file mode 100644 (file)
index 0000000..0829be3
--- /dev/null
@@ -0,0 +1,33 @@
+<testcase>
+<info>
+<keywords>
+globbing
+FAILURE
+</keywords>
+</info>
+# Server-side
+<reply>
+</reply>
+
+# Client-side
+<client>
+<server>
+none
+</server>
+ <name>
+[] globbing overflowing the range counter
+ </name>
+# 2^62 == 4611686018427387904
+ <command>
+"%HOSTIP:%HTTPPORT/1234[0-1]{" "%HOSTIP:%HTTPPORT/[1-4611686018427387904][1-4611686018427387904]"
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+# 3 == CURLE_URL_MALFORMAT
+<errorcode>
+3
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test1237 b/tests/data/test1237
new file mode 100644 (file)
index 0000000..68f023d
--- /dev/null
@@ -0,0 +1,47 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP Basic auth
+</keywords>
+</info>
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Server: test-server/fake
+Content-Length: 6
+Connection: close
+Content-Type: text/html
+
+-foo-
+</data>
+</reply>
+
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+URL with 1000+ letter user name + password
+ </name>
+ <command>
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB@%HOSTIP:%HTTPPORT/1237"
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /1237 HTTP/1.1\r
+Authorization: Basic QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTpCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkI=\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test1238 b/tests/data/test1238
new file mode 100644 (file)
index 0000000..1859339
--- /dev/null
@@ -0,0 +1,49 @@
+<testcase>
+<info>
+<keywords>
+TFTP
+TFTP RRQ
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+writedelay: 1
+</servercmd>
+# ~1200 bytes (so that they don't fit in two 512 byte chunks)
+<data nocheck="yes">
+012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+tftp
+</server>
+ <name>
+slow TFTP retrieve cancel due to -Y and -y
+ </name>
+# if less than 1000 bytes/sec within 2 seconds, abort!
+ <command>
+tftp://%HOSTIP:%TFTPPORT//1238 -Y1000 -y2
+</command>
+</client>
+
+#
+# Verify pseudo protocol after the test has been "shot"
+<verify>
+<protocol>
+opcode: 1
+filename: /1238
+mode: octet
+</protocol>
+# 28 = CURLE_OPERATION_TIMEDOUT
+<errorcode>
+28
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test1239 b/tests/data/test1239
new file mode 100644 (file)
index 0000000..b3503d9
--- /dev/null
@@ -0,0 +1,68 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+-z
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Last-Modified: Tue, 13 Jun 2010 12:10:00 GMT
+ETag: "21025-dc7-39462498"
+Accept-Ranges: bytes
+Content-Length: 6
+Connection: close
+Content-Type: text/html
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+HTTP with -z + -w response_code and simulated 304
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/1239 -z "-dec 12 12:00:00 1999 GMT" -w '%{response_code}'
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /1239 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+If-Unmodified-Since: Sun, 12 Dec 1999 12:00:00 GMT\r
+\r
+</protocol>
+<stdout nonewline="yes">
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Last-Modified: Tue, 13 Jun 2010 12:10:00 GMT
+ETag: "21025-dc7-39462498"
+Accept-Ranges: bytes
+Content-Length: 6
+Connection: close
+Content-Type: text/html
+
+304
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test1240 b/tests/data/test1240
new file mode 100644 (file)
index 0000000..6435950
--- /dev/null
@@ -0,0 +1,48 @@
+<testcase>
+<info>
+<keywords>
+globbing
+HTTP
+</keywords>
+</info>
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Content-Length: 6
+Connection: close
+
+-foo-
+</data>
+</reply>
+
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+glob [0-1] with stuff after range (7.33.0 regression)
+ </name>
+ <command>
+"%HOSTIP:%HTTPPORT/0[0-1]/1240"
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /00/1240 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+\r
+GET /01/1240 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+\r
+</protocol>
+</verify>
+</testcase>
index dcc46fc..827b1a0 100644 (file)
@@ -12,7 +12,7 @@ netrc
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
-<datacheck>
+<datacheck mode="text">
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
index 0a44a91..c2f67ff 100644 (file)
@@ -24,7 +24,7 @@ unit1309
 </client>
 
 <verify>
 </client>
 
 <verify>
-<stdout mode="text">
+<stdout>
 Result:
       0.1013[3]
     0.1003[2]
 Result:
       0.1013[3]
     0.1003[2]
index 86501c6..6e99d8a 100644 (file)
@@ -13,7 +13,7 @@ netrc
 #
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
 #
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
-<datacheck>
+<datacheck mode="text">
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
index 51f58c2..d6ea5e1 100644 (file)
@@ -21,7 +21,7 @@ Magic: sure you can FTP me
 
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
 
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
-<datacheck>
+<datacheck mode="text">
 HTTP/1.1 200 Mighty fine indeed\r
 Magic: sure you can FTP me\r
 \r
 HTTP/1.1 200 Mighty fine indeed\r
 Magic: sure you can FTP me\r
 \r
@@ -54,6 +54,9 @@ dr-xr-xr-x   5 0        1            512 Oct  1  1997 usr
 ftp
 http-proxy
 </server>
 ftp
 http-proxy
 </server>
+<features>
+http
+</features>
  <name>
 FTP LIST tunneled through HTTP proxy
  </name>
  <name>
 FTP LIST tunneled through HTTP proxy
  </name>
index 7818503..0520b1b 100644 (file)
@@ -51,6 +51,9 @@ body
 pop3
 http-proxy
 </server>
 pop3
 http-proxy
 </server>
+<features>
+http
+</features>
  <name>
 POP3 fetch tunneled through HTTP proxy
  </name>
  <name>
 POP3 fetch tunneled through HTTP proxy
  </name>
index ed96953..51cb89c 100644 (file)
@@ -12,7 +12,7 @@ netrc
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
-<datacheck>
+<datacheck mode="text">
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
index 15ec7bb..7a15f80 100644 (file)
@@ -25,8 +25,11 @@ smtp: sure hit me
 smtp
 http-proxy
 </server>
 smtp
 http-proxy
 </server>
+<features>
+http
+</features>
  <name>
  <name>
-SMTP send tunneled trough HTTP proxy
+SMTP send tunneled through HTTP proxy
  </name>
 <stdin>
 From: different\r
  </name>
 <stdin>
 From: different\r
@@ -35,7 +38,7 @@ To: another
 body\r
 </stdin>
  <command>
 body\r
 </stdin>
  <command>
-smtp://smtp.1320:%SMTPPORT/user --mail-rcpt 1320@foo --mail-rcpt 1320@foobar.example --mail-from 1320@from -T - -p -x %HOSTIP:%PROXYPORT
+smtp://smtp.1320:%SMTPPORT/1320 --mail-rcpt recipient@example.com --mail-from sender@example.com -T - -p -x %HOSTIP:%PROXYPORT
 </command>
 </client>
 
 </command>
 </client>
 
@@ -46,10 +49,9 @@ smtp://smtp.1320:%SMTPPORT/user --mail-rcpt 1320@foo --mail-rcpt 1320@foobar.exa
 ^User-Agent: curl/.*
 </strip>
 <protocol>
 ^User-Agent: curl/.*
 </strip>
 <protocol>
-EHLO user\r
-MAIL FROM:<1320@from>\r
-RCPT TO:<1320@foo>\r
-RCPT TO:<1320@foobar.example>\r
+EHLO 1320\r
+MAIL FROM:<sender@example.com>\r
+RCPT TO:<recipient@example.com>\r
 DATA\r
 QUIT\r
 </protocol>
 DATA\r
 QUIT\r
 </protocol>
index bfa31e0..266fd88 100644 (file)
@@ -47,6 +47,9 @@ body
 imap
 http-proxy
 </server>
 imap
 http-proxy
 </server>
+<features>
+http
+</features>
  <name>
 IMAP FETCH tunneled through HTTP proxy
  </name>
  <name>
 IMAP FETCH tunneled through HTTP proxy
  </name>
index 2b98d6a..9f5ee58 100644 (file)
@@ -1,5 +1,5 @@
-# http://greenbytes.de/tech/webdav/draft-reschke-http-status-308-latest.html
 <testcase>
 <testcase>
+# http://greenbytes.de/tech/webdav/draft-reschke-http-status-308-latest.html
 <info>
 <keywords>
 HTTP
 <info>
 <keywords>
 HTTP
index c3991ec..0608888 100644 (file)
@@ -3,7 +3,8 @@
 <keywords>
 HTTP
 HTTP GET
 <keywords>
 HTTP
 HTTP GET
--f
+globbing
+--fail
 </keywords>
 </info>
 
 </keywords>
 </info>
 
index 085092d..0b4d2ff 100644 (file)
@@ -12,7 +12,7 @@ netrc
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
-<datacheck>
+<datacheck mode="text">
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
index 2aba0ce..1fb5a66 100644 (file)
@@ -36,7 +36,7 @@ nothing
 #
 # Verify data after the test has been "shot"
 <verify>
 #
 # Verify data after the test has been "shot"
 <verify>
-<file name="log/memdump" mode="text">
+<file name="log/memdump">
 MEM unit1330.c: malloc()
 MEM unit1330.c: free()
 </file>
 MEM unit1330.c: malloc()
 MEM unit1330.c: free()
 </file>
index 406cb9e..6896856 100644 (file)
@@ -1,8 +1,8 @@
+<testcase>
 # Test case inspired by this question on stackoverflow:
 #
 # http://stackoverflow.com/questions/10017165/use-libcurl-with-bluecoat-cookie-proxy
 #
 # Test case inspired by this question on stackoverflow:
 #
 # http://stackoverflow.com/questions/10017165/use-libcurl-with-bluecoat-cookie-proxy
 #
-<testcase>
 <info>
 <keywords>
 HTTP
 <info>
 <keywords>
 HTTP
index 1850ece..3447b2d 100644 (file)
@@ -1,5 +1,5 @@
-# test case cloned from 1076 and then 302 was replaced with 303
 <testcase>
 <testcase>
+# test case cloned from 1076 and then 302 was replaced with 303
 <info>
 <keywords>
 HTTP
 <info>
 <keywords>
 HTTP
index 93c939f..59116e3 100644 (file)
@@ -9,13 +9,13 @@ HTTP GET
 #
 <reply>
 <data nocheck="yes">
 #
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 12345
 </data>
 </reply>
 12345
 </data>
 </reply>
@@ -55,21 +55,21 @@ Accept: */*
 \r
 </protocol>
 
 \r
 </protocol>
 
-<file1 name="log/1334" mode="text">
+<file1 name="log/1334">
 12345
 </file1>
 
 12345
 </file1>
 
-<file2 name="log/heads1334" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+<file2 name="log/heads1334">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 </file2>
 
 </file2>
 
-<file3 name="log/stdout1334" mode="text">
+<file3 name="log/stdout1334">
 </file3>
 
 </verify>
 </file3>
 
 </verify>
index 3f43c7a..bb499e7 100644 (file)
@@ -9,13 +9,13 @@ HTTP GET
 #
 <reply>
 <data nocheck="yes">
 #
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 12345
 </data>
 </reply>
 12345
 </data>
 </reply>
@@ -55,18 +55,18 @@ Accept: */*
 \r
 </protocol>
 
 \r
 </protocol>
 
-<file1 name="log/1335" mode="text">
+<file1 name="log/1335">
 12345
 </file1>
 
 12345
 </file1>
 
-<file2 name="log/stdout1335" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+<file2 name="log/stdout1335">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 </file2>
 
 </verify>
 </file2>
 
 </verify>
index 9e8aca3..ebe562b 100644 (file)
@@ -9,14 +9,14 @@ HTTP GET
 #
 <reply>
 <data nocheck="yes">
 #
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1336; charset=funny; option=strange
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1336; charset=funny; option=strange\r
+\r
 12345
 </data>
 </reply>
 12345
 </data>
 </reply>
@@ -59,22 +59,22 @@ Accept: */*
 \r
 </protocol>
 
 \r
 </protocol>
 
-<file1 name="log/1336" mode="text">
+<file1 name="log/1336">
 12345
 </file1>
 
 12345
 </file1>
 
-<file2 name="log/heads1336" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1336; charset=funny; option=strange
-
+<file2 name="log/heads1336">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1336; charset=funny; option=strange\r
+\r
 </file2>
 
 </file2>
 
-<file3 name="log/stdout1336" mode="text">
+<file3 name="log/stdout1336">
 </file3>
 
 </verify>
 </file3>
 
 </verify>
index 4044190..80a99fa 100644 (file)
@@ -9,14 +9,14 @@ HTTP GET
 #
 <reply>
 <data nocheck="yes">
 #
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1337; charset=funny; option=strange
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1337; charset=funny; option=strange\r
+\r
 12345
 </data>
 </reply>
 12345
 </data>
 </reply>
@@ -59,19 +59,19 @@ Accept: */*
 \r
 </protocol>
 
 \r
 </protocol>
 
-<file1 name="log/1337" mode="text">
+<file1 name="log/1337">
 12345
 </file1>
 
 12345
 </file1>
 
-<file2 name="log/stdout1337" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1337; charset=funny; option=strange
-
+<file2 name="log/stdout1337">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1337; charset=funny; option=strange\r
+\r
 </file2>
 
 </verify>
 </file2>
 
 </verify>
index 8a1b395..d96f804 100644 (file)
@@ -10,13 +10,13 @@ HTTP GET
 #
 <reply>
 <data nocheck="yes">
 #
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 12345
 </data>
 </reply>
 12345
 </data>
 </reply>
@@ -56,21 +56,21 @@ Accept: */*
 \r
 </protocol>
 
 \r
 </protocol>
 
-<file1 name="log/1338" mode="text">
+<file1 name="log/1338">
 12345
 </file1>
 
 12345
 </file1>
 
-<file2 name="log/heads1338" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+<file2 name="log/heads1338">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 </file2>
 
 </file2>
 
-<file3 name="log/stdout1338" mode="text">
+<file3 name="log/stdout1338">
 </file3>
 
 </verify>
 </file3>
 
 </verify>
index 06106ad..a3c1f0e 100644 (file)
@@ -10,13 +10,13 @@ HTTP GET
 #
 <reply>
 <data nocheck="yes">
 #
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 12345
 </data>
 </reply>
 12345
 </data>
 </reply>
@@ -56,18 +56,18 @@ Accept: */*
 \r
 </protocol>
 
 \r
 </protocol>
 
-<file1 name="log/1339" mode="text">
+<file1 name="log/1339">
 12345
 </file1>
 
 12345
 </file1>
 
-<file2 name="log/stdout1339" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+<file2 name="log/stdout1339">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 </file2>
 
 </verify>
 </file2>
 
 </verify>
index 8a3ba62..e314b66 100644 (file)
@@ -12,7 +12,7 @@ netrc
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
-<datacheck>
+<datacheck mode="text">
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
index ad26bba..81f1ed6 100644 (file)
@@ -10,14 +10,14 @@ HTTP GET
 #
 <reply>
 <data nocheck="yes">
 #
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1340; charset=funny; option=strange
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1340; charset=funny; option=strange\r
+\r
 12345
 </data>
 </reply>
 12345
 </data>
 </reply>
@@ -57,19 +57,19 @@ Accept: */*
 \r
 </protocol>
 
 \r
 </protocol>
 
-<file1 name="log/name1340" mode="text">
+<file1 name="log/name1340">
 12345
 </file1>
 
 12345
 </file1>
 
-<file2 name="log/heads1340" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1340; charset=funny; option=strange
-
+<file2 name="log/heads1340">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1340; charset=funny; option=strange\r
+\r
 </file2>
 
 <file3 name="log/stdout1340" mode="text">
 </file2>
 
 <file3 name="log/stdout1340" mode="text">
index 013a888..b364ede 100644 (file)
@@ -10,14 +10,14 @@ HTTP GET
 #
 <reply>
 <data nocheck="yes">
 #
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1341; charset=funny; option=strange
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1341; charset=funny; option=strange\r
+\r
 12345
 </data>
 </reply>
 12345
 </data>
 </reply>
@@ -57,19 +57,19 @@ Accept: */*
 \r
 </protocol>
 
 \r
 </protocol>
 
-<file1 name="log/name1341" mode="text">
+<file1 name="log/name1341">
 12345
 </file1>
 
 12345
 </file1>
 
-<file2 name="log/stdout1341" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1341; charset=funny; option=strange
-
+<file2 name="log/stdout1341">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1341; charset=funny; option=strange\r
+\r
 curl: Saved to filename '%PWD/log/name1341'
 </file2>
 
 curl: Saved to filename '%PWD/log/name1341'
 </file2>
 
index 7820663..1d7889d 100644 (file)
@@ -9,13 +9,13 @@ HTTP GET
 #
 <reply>
 <data nocheck="yes">
 #
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 12345
 </data>
 </reply>
 12345
 </data>
 </reply>
@@ -55,28 +55,28 @@ Accept: */*
 \r
 </protocol>
 
 \r
 </protocol>
 
-<file1 name="log/1342" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+<file1 name="log/1342">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 12345
 </file1>
 
 12345
 </file1>
 
-<file2 name="log/heads1342" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+<file2 name="log/heads1342">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 </file2>
 
 </file2>
 
-<file3 name="log/stdout1342" mode="text">
+<file3 name="log/stdout1342">
 </file3>
 
 </verify>
 </file3>
 
 </verify>
index 904a379..a05cab0 100644 (file)
@@ -9,13 +9,13 @@ HTTP GET
 #
 <reply>
 <data nocheck="yes">
 #
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 12345
 </data>
 </reply>
 12345
 </data>
 </reply>
@@ -55,25 +55,25 @@ Accept: */*
 \r
 </protocol>
 
 \r
 </protocol>
 
-<file1 name="log/1343" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+<file1 name="log/1343">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 12345
 </file1>
 
 12345
 </file1>
 
-<file2 name="log/stdout1343" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+<file2 name="log/stdout1343">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 </file2>
 
 </verify>
 </file2>
 
 </verify>
index 145305d..ac354f0 100644 (file)
@@ -9,14 +9,14 @@ HTTP GET
 #
 <reply>
 <data nocheck="yes">
 #
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1344; charset=funny; option=strange
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1344; charset=funny; option=strange\r
+\r
 12345
 </data>
 </reply>
 12345
 </data>
 </reply>
@@ -59,30 +59,30 @@ Accept: */*
 \r
 </protocol>
 
 \r
 </protocol>
 
-<file1 name="log/1344" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1344; charset=funny; option=strange
-
+<file1 name="log/1344">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1344; charset=funny; option=strange\r
+\r
 12345
 </file1>
 
 12345
 </file1>
 
-<file2 name="log/heads1344" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1344; charset=funny; option=strange
-
+<file2 name="log/heads1344">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1344; charset=funny; option=strange\r
+\r
 </file2>
 
 </file2>
 
-<file3 name="log/stdout1344" mode="text">
+<file3 name="log/stdout1344">
 </file3>
 
 </verify>
 </file3>
 
 </verify>
index 7d53728..6d1201e 100644 (file)
@@ -9,14 +9,14 @@ HTTP GET
 #
 <reply>
 <data nocheck="yes">
 #
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1345; charset=funny; option=strange
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1345; charset=funny; option=strange\r
+\r
 12345
 </data>
 </reply>
 12345
 </data>
 </reply>
@@ -59,27 +59,27 @@ Accept: */*
 \r
 </protocol>
 
 \r
 </protocol>
 
-<file1 name="log/1345" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1345; charset=funny; option=strange
-
+<file1 name="log/1345">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1345; charset=funny; option=strange\r
+\r
 12345
 </file1>
 
 12345
 </file1>
 
-<file2 name="log/stdout1345" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1345; charset=funny; option=strange
-
+<file2 name="log/stdout1345">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1345; charset=funny; option=strange\r
+\r
 </file2>
 
 </verify>
 </file2>
 
 </verify>
index eda9a2c..347214e 100644 (file)
@@ -9,13 +9,13 @@ HTTP GET
 #
 <reply>
 <data nocheck="yes">
 #
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 12345
 </data>
 </reply>
 12345
 </data>
 </reply>
@@ -55,18 +55,18 @@ Accept: */*
 \r
 </protocol>
 
 \r
 </protocol>
 
-<file1 name="log/1346" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+<file1 name="log/1346">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 12345
 </file1>
 
 12345
 </file1>
 
-<file2 name="log/stdout1346" mode="text">
+<file2 name="log/stdout1346">
 </file2>
 
 </verify>
 </file2>
 
 </verify>
index b221846..8eac42c 100644 (file)
@@ -9,14 +9,14 @@ HTTP GET
 #
 <reply>
 <data nocheck="yes">
 #
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1347; charset=funny; option=strange
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1347; charset=funny; option=strange\r
+\r
 12345
 </data>
 </reply>
 12345
 </data>
 </reply>
@@ -59,19 +59,19 @@ Accept: */*
 \r
 </protocol>
 
 \r
 </protocol>
 
-<file1 name="log/1347" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1347; charset=funny; option=strange
-
+<file1 name="log/1347">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1347; charset=funny; option=strange\r
+\r
 12345
 </file1>
 
 12345
 </file1>
 
-<file2 name="log/stdout1347" mode="text">
+<file2 name="log/stdout1347">
 </file2>
 
 </verify>
 </file2>
 
 </verify>
index 77f2c0f..5f374cb 100644 (file)
@@ -49,12 +49,12 @@ RETR file1348
 QUIT\r
 </protocol>
 
 QUIT\r
 </protocol>
 
-<file1 name="log/file1348" mode="text">
+<file1 name="log/file1348">
 fooo
 mooo
 </file1>
 
 fooo
 mooo
 </file1>
 
-<file2 name="log/stdout1348" mode="text">
+<file2 name="log/stdout1348">
 </file2>
 
 </verify>
 </file2>
 
 </verify>
index 28576fe..33906f8 100644 (file)
@@ -60,7 +60,7 @@ mooo
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
-220-  | (__| |_| |  _ <| |___ \r
+220-  | (__| |_| |  _ {| |___ \r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
index df12de5..b788597 100644 (file)
@@ -60,7 +60,7 @@ mooo
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
-220-  | (__| |_| |  _ <| |___ \r
+220-  | (__| |_| |  _ {| |___ \r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
index d81265e..3e9cc21 100644 (file)
@@ -61,7 +61,7 @@ mooo
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
-220-  | (__| |_| |  _ <| |___ \r
+220-  | (__| |_| |  _ {| |___ \r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
index fa9d1ce..cf690af 100644 (file)
@@ -61,7 +61,7 @@ mooo
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
-220-  | (__| |_| |  _ <| |___ \r
+220-  | (__| |_| |  _ {| |___ \r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
index b2954b1..8bd751c 100644 (file)
@@ -60,7 +60,7 @@ mooo
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
-220-  | (__| |_| |  _ <| |___ \r
+220-  | (__| |_| |  _ {| |___ \r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
index aa54f2d..13c5a1b 100644 (file)
@@ -58,7 +58,7 @@ mooo
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
-220-  | (__| |_| |  _ <| |___ \r
+220-  | (__| |_| |  _ {| |___ \r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
index adc7346..ea610a5 100644 (file)
@@ -10,14 +10,14 @@ RETR
 <reply>
 # file1356 contents...
 <data nocheck="yes">
 <reply>
 # file1356 contents...
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1356; charset=funny; option=strange
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1356; charset=funny; option=strange\r
+\r
 MOOOO
 </data>
 </reply>
 MOOOO
 </data>
 </reply>
@@ -60,19 +60,19 @@ RETR file1356
 QUIT\r
 </protocol>
 
 QUIT\r
 </protocol>
 
-<file1 name="log/file1356" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1356; charset=funny; option=strange
-
+<file1 name="log/file1356">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1356; charset=funny; option=strange\r
+\r
 MOOOO
 </file1>
 
 MOOOO
 </file1>
 
-<file2 name="log/stdout1356" mode="text">
+<file2 name="log/stdout1356">
 </file2>
 
 </verify>
 </file2>
 
 </verify>
index 9525720..3df0ad3 100644 (file)
@@ -76,7 +76,7 @@ MOOOO
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
-220-  | (__| |_| |  _ <| |___ \r
+220-  | (__| |_| |  _ {| |___ \r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
index 24cc724..b0e2795 100644 (file)
@@ -76,7 +76,7 @@ MOOOO
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
-220-  | (__| |_| |  _ <| |___ \r
+220-  | (__| |_| |  _ {| |___ \r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
index 96445bb..fc7851d 100644 (file)
@@ -77,7 +77,7 @@ MOOOO
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
-220-  | (__| |_| |  _ <| |___ \r
+220-  | (__| |_| |  _ {| |___ \r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
index abfbe8c..0000d60 100644 (file)
@@ -77,7 +77,7 @@ MOOOO
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
-220-  | (__| |_| |  _ <| |___ \r
+220-  | (__| |_| |  _ {| |___ \r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
index b97de16..884e0b2 100644 (file)
@@ -76,7 +76,7 @@ MOOOO
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
-220-  | (__| |_| |  _ <| |___ \r
+220-  | (__| |_| |  _ {| |___ \r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
index 0ea7461..98fffb6 100644 (file)
@@ -76,7 +76,7 @@ MOOOO
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
-220-  | (__| |_| |  _ <| |___ \r
+220-  | (__| |_| |  _ {| |___ \r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
index fedc6fc..c34f05a 100644 (file)
@@ -10,14 +10,14 @@ RETR
 <reply>
 # file1363 contents...
 <data nocheck="yes">
 <reply>
 # file1363 contents...
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1363; charset=funny; option=strange
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1363; charset=funny; option=strange\r
+\r
 MOOOO
 </data>
 </reply>
 MOOOO
 </data>
 </reply>
@@ -60,19 +60,19 @@ RETR file1363
 QUIT\r
 </protocol>
 
 QUIT\r
 </protocol>
 
-<file1 name="log/file1363" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1363; charset=funny; option=strange
-
+<file1 name="log/file1363">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1363; charset=funny; option=strange\r
+\r
 MOOOO
 </file1>
 
 MOOOO
 </file1>
 
-<file2 name="log/stdout1363" mode="text">
+<file2 name="log/stdout1363">
 </file2>
 
 </verify>
 </file2>
 
 </verify>
index f4f48ff..e8c981d 100644 (file)
@@ -9,13 +9,13 @@ HTTP GET
 #
 <reply>
 <data nocheck="yes">
 #
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 12345
 </data>
 </reply>
 12345
 </data>
 </reply>
@@ -50,21 +50,21 @@ Accept: */*
 \r
 </protocol>
 
 \r
 </protocol>
 
-<file1 name="log/outfile1364" mode="text">
+<file1 name="log/outfile1364">
 12345
 </file1>
 
 12345
 </file1>
 
-<file2 name="log/heads1364" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+<file2 name="log/heads1364">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 </file2>
 
 </file2>
 
-<file3 name="log/stdout1364" mode="text">
+<file3 name="log/stdout1364">
 </file3>
 
 </verify>
 </file3>
 
 </verify>
index f5e95e8..4a09cfd 100644 (file)
@@ -9,13 +9,13 @@ HTTP GET
 #
 <reply>
 <data nocheck="yes">
 #
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 12345
 </data>
 </reply>
 12345
 </data>
 </reply>
@@ -50,18 +50,18 @@ Accept: */*
 \r
 </protocol>
 
 \r
 </protocol>
 
-<file1 name="log/outfile1365" mode="text">
+<file1 name="log/outfile1365">
 12345
 </file1>
 
 12345
 </file1>
 
-<file2 name="log/stdout1365" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+<file2 name="log/stdout1365">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 </file2>
 
 </verify>
 </file2>
 
 </verify>
index 2a7d059..62e3b0c 100644 (file)
@@ -9,14 +9,14 @@ HTTP GET
 #
 <reply>
 <data nocheck="yes">
 #
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1366; charset=funny; option=strange
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1366; charset=funny; option=strange\r
+\r
 12345
 </data>
 </reply>
 12345
 </data>
 </reply>
@@ -51,22 +51,22 @@ Accept: */*
 \r
 </protocol>
 
 \r
 </protocol>
 
-<file1 name="log/outfile1366" mode="text">
+<file1 name="log/outfile1366">
 12345
 </file1>
 
 12345
 </file1>
 
-<file2 name="log/heads1366" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1366; charset=funny; option=strange
-
+<file2 name="log/heads1366">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1366; charset=funny; option=strange\r
+\r
 </file2>
 
 </file2>
 
-<file3 name="log/stdout1366" mode="text">
+<file3 name="log/stdout1366">
 </file3>
 
 </verify>
 </file3>
 
 </verify>
index 6b576b7..d4bd3d7 100644 (file)
@@ -9,14 +9,14 @@ HTTP GET
 #
 <reply>
 <data nocheck="yes">
 #
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1367; charset=funny; option=strange
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1367; charset=funny; option=strange\r
+\r
 12345
 </data>
 </reply>
 12345
 </data>
 </reply>
@@ -51,19 +51,19 @@ Accept: */*
 \r
 </protocol>
 
 \r
 </protocol>
 
-<file1 name="log/outfile1367" mode="text">
+<file1 name="log/outfile1367">
 12345
 </file1>
 
 12345
 </file1>
 
-<file2 name="log/stdout1367" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1367; charset=funny; option=strange
-
+<file2 name="log/stdout1367">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1367; charset=funny; option=strange\r
+\r
 </file2>
 
 </verify>
 </file2>
 
 </verify>
index 9dc9a5e..6a926ab 100644 (file)
@@ -10,13 +10,13 @@ HTTP GET
 #
 <reply>
 <data nocheck="yes">
 #
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 12345
 </data>
 </reply>
 12345
 </data>
 </reply>
@@ -51,21 +51,21 @@ Accept: */*
 \r
 </protocol>
 
 \r
 </protocol>
 
-<file1 name="log/outfile1368" mode="text">
+<file1 name="log/outfile1368">
 12345
 </file1>
 
 12345
 </file1>
 
-<file2 name="log/heads1368" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+<file2 name="log/heads1368">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 </file2>
 
 </file2>
 
-<file3 name="log/stdout1368" mode="text">
+<file3 name="log/stdout1368">
 </file3>
 
 </verify>
 </file3>
 
 </verify>
index a24665a..5176ed0 100644 (file)
@@ -10,13 +10,13 @@ HTTP GET
 #
 <reply>
 <data nocheck="yes">
 #
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 12345
 </data>
 </reply>
 12345
 </data>
 </reply>
@@ -51,18 +51,18 @@ Accept: */*
 \r
 </protocol>
 
 \r
 </protocol>
 
-<file1 name="log/outfile1369" mode="text">
+<file1 name="log/outfile1369">
 12345
 </file1>
 
 12345
 </file1>
 
-<file2 name="log/stdout1369" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+<file2 name="log/stdout1369">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 </file2>
 
 </verify>
 </file2>
 
 </verify>
index 26b4b15..d0abbdd 100644 (file)
@@ -10,14 +10,14 @@ HTTP GET
 #
 <reply>
 <data nocheck="yes">
 #
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1370; charset=funny; option=strange
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1370; charset=funny; option=strange\r
+\r
 12345
 </data>
 </reply>
 12345
 </data>
 </reply>
@@ -52,22 +52,22 @@ Accept: */*
 \r
 </protocol>
 
 \r
 </protocol>
 
-<file1 name="log/outfile1370" mode="text">
+<file1 name="log/outfile1370">
 12345
 </file1>
 
 12345
 </file1>
 
-<file2 name="log/heads1370" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1370; charset=funny; option=strange
-
+<file2 name="log/heads1370">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1370; charset=funny; option=strange\r
+\r
 </file2>
 
 </file2>
 
-<file3 name="log/stdout1370" mode="text">
+<file3 name="log/stdout1370">
 </file3>
 
 </verify>
 </file3>
 
 </verify>
index 31a64a3..fe3977f 100644 (file)
@@ -10,14 +10,14 @@ HTTP GET
 #
 <reply>
 <data nocheck="yes">
 #
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1371; charset=funny; option=strange
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1371; charset=funny; option=strange\r
+\r
 12345
 </data>
 </reply>
 12345
 </data>
 </reply>
@@ -52,19 +52,19 @@ Accept: */*
 \r
 </protocol>
 
 \r
 </protocol>
 
-<file1 name="log/outfile1371" mode="text">
+<file1 name="log/outfile1371">
 12345
 </file1>
 
 12345
 </file1>
 
-<file2 name="log/stdout1371" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1371; charset=funny; option=strange
-
+<file2 name="log/stdout1371">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1371; charset=funny; option=strange\r
+\r
 </file2>
 
 </verify>
 </file2>
 
 </verify>
index 9c617f8..a2b8ec9 100644 (file)
@@ -9,13 +9,13 @@ HTTP GET
 #
 <reply>
 <data nocheck="yes">
 #
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 12345
 </data>
 </reply>
 12345
 </data>
 </reply>
@@ -50,28 +50,28 @@ Accept: */*
 \r
 </protocol>
 
 \r
 </protocol>
 
-<file1 name="log/outfile1372" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+<file1 name="log/outfile1372">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 12345
 </file1>
 
 12345
 </file1>
 
-<file2 name="log/heads1372" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+<file2 name="log/heads1372">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 </file2>
 
 </file2>
 
-<file3 name="log/stdout1372" mode="text">
+<file3 name="log/stdout1372">
 </file3>
 
 </verify>
 </file3>
 
 </verify>
index 2f6e3bd..ae906d7 100644 (file)
@@ -9,13 +9,13 @@ HTTP GET
 #
 <reply>
 <data nocheck="yes">
 #
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 12345
 </data>
 </reply>
 12345
 </data>
 </reply>
@@ -50,25 +50,25 @@ Accept: */*
 \r
 </protocol>
 
 \r
 </protocol>
 
-<file1 name="log/outfile1373" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+<file1 name="log/outfile1373">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 12345
 </file1>
 
 12345
 </file1>
 
-<file2 name="log/stdout1373" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+<file2 name="log/stdout1373">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 </file2>
 
 </verify>
 </file2>
 
 </verify>
index aef2b7d..f8d9d0d 100644 (file)
@@ -9,14 +9,14 @@ HTTP GET
 #
 <reply>
 <data nocheck="yes">
 #
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1374; charset=funny; option=strange
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1374; charset=funny; option=strange\r
+\r
 12345
 </data>
 </reply>
 12345
 </data>
 </reply>
@@ -51,30 +51,30 @@ Accept: */*
 \r
 </protocol>
 
 \r
 </protocol>
 
-<file1 name="log/outfile1374" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1374; charset=funny; option=strange
-
+<file1 name="log/outfile1374">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1374; charset=funny; option=strange\r
+\r
 12345
 </file1>
 
 12345
 </file1>
 
-<file2 name="log/heads1374" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1374; charset=funny; option=strange
-
+<file2 name="log/heads1374">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1374; charset=funny; option=strange\r
+\r
 </file2>
 
 </file2>
 
-<file3 name="log/stdout1374" mode="text">
+<file3 name="log/stdout1374">
 </file3>
 
 </verify>
 </file3>
 
 </verify>
index 717b645..595f03a 100644 (file)
@@ -9,14 +9,14 @@ HTTP GET
 #
 <reply>
 <data nocheck="yes">
 #
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1375; charset=funny; option=strange
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1375; charset=funny; option=strange\r
+\r
 12345
 </data>
 </reply>
 12345
 </data>
 </reply>
@@ -51,27 +51,27 @@ Accept: */*
 \r
 </protocol>
 
 \r
 </protocol>
 
-<file1 name="log/outfile1375" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1375; charset=funny; option=strange
-
+<file1 name="log/outfile1375">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1375; charset=funny; option=strange\r
+\r
 12345
 </file1>
 
 12345
 </file1>
 
-<file2 name="log/stdout1375" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1375; charset=funny; option=strange
-
+<file2 name="log/stdout1375">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1375; charset=funny; option=strange\r
+\r
 </file2>
 
 </verify>
 </file2>
 
 </verify>
index 02068db..f34c277 100644 (file)
@@ -9,13 +9,13 @@ HTTP GET
 #
 <reply>
 <data nocheck="yes">
 #
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 12345
 </data>
 </reply>
 12345
 </data>
 </reply>
@@ -50,18 +50,18 @@ Accept: */*
 \r
 </protocol>
 
 \r
 </protocol>
 
-<file1 name="log/outfile1376" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+<file1 name="log/outfile1376">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 12345
 </file1>
 
 12345
 </file1>
 
-<file2 name="log/stdout1376" mode="text">
+<file2 name="log/stdout1376">
 </file2>
 
 </verify>
 </file2>
 
 </verify>
index fede100..f542b11 100644 (file)
@@ -9,14 +9,14 @@ HTTP GET
 #
 <reply>
 <data nocheck="yes">
 #
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1377; charset=funny; option=strange
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1377; charset=funny; option=strange\r
+\r
 12345
 </data>
 </reply>
 12345
 </data>
 </reply>
@@ -51,19 +51,19 @@ Accept: */*
 \r
 </protocol>
 
 \r
 </protocol>
 
-<file1 name="log/outfile1377" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1377; charset=funny; option=strange
-
+<file1 name="log/outfile1377">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1377; charset=funny; option=strange\r
+\r
 12345
 </file1>
 
 12345
 </file1>
 
-<file2 name="log/stdout1377" mode="text">
+<file2 name="log/stdout1377">
 </file2>
 
 </verify>
 </file2>
 
 </verify>
index 6b24f99..e004afc 100644 (file)
@@ -44,12 +44,12 @@ RETR file1378
 QUIT\r
 </protocol>
 
 QUIT\r
 </protocol>
 
-<file1 name="log/download1378" mode="text">
+<file1 name="log/download1378">
 fooo
 mooo
 </file1>
 
 fooo
 mooo
 </file1>
 
-<file2 name="log/stdout1378" mode="text">
+<file2 name="log/stdout1378">
 </file2>
 
 </verify>
 </file2>
 
 </verify>
index 0fd06d5..81314b6 100644 (file)
@@ -53,7 +53,7 @@ mooo
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
-220-  | (__| |_| |  _ <| |___ \r
+220-  | (__| |_| |  _ {| |___ \r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
index ec7800d..e715270 100644 (file)
@@ -53,7 +53,7 @@ mooo
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
-220-  | (__| |_| |  _ <| |___ \r
+220-  | (__| |_| |  _ {| |___ \r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
index 8f3bc37..a55c6b5 100644 (file)
@@ -54,7 +54,7 @@ mooo
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
-220-  | (__| |_| |  _ <| |___ \r
+220-  | (__| |_| |  _ {| |___ \r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
index fbf5195..a657e1f 100644 (file)
@@ -54,7 +54,7 @@ mooo
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
-220-  | (__| |_| |  _ <| |___ \r
+220-  | (__| |_| |  _ {| |___ \r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
index 0469e72..0694a22 100644 (file)
@@ -53,7 +53,7 @@ mooo
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
-220-  | (__| |_| |  _ <| |___ \r
+220-  | (__| |_| |  _ {| |___ \r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
index 2deeb7c..c07c266 100644 (file)
@@ -53,7 +53,7 @@ mooo
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
-220-  | (__| |_| |  _ <| |___ \r
+220-  | (__| |_| |  _ {| |___ \r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
index cc39279..ee35ab7 100644 (file)
@@ -44,12 +44,12 @@ RETR file1385
 QUIT\r
 </protocol>
 
 QUIT\r
 </protocol>
 
-<file1 name="log/download1385" mode="text">
+<file1 name="log/download1385">
 fooo
 mooo
 </file1>
 
 fooo
 mooo
 </file1>
 
-<file2 name="log/stdout1385" mode="text">
+<file2 name="log/stdout1385">
 </file2>
 
 </verify>
 </file2>
 
 </verify>
index da47d5b..c7f5d8a 100644 (file)
@@ -10,14 +10,14 @@ RETR
 <reply>
 # file1386 contents...
 <data nocheck="yes">
 <reply>
 # file1386 contents...
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1386; charset=funny; option=strange
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1386; charset=funny; option=strange\r
+\r
 MOOOO
 </data>
 </reply>
 MOOOO
 </data>
 </reply>
@@ -52,19 +52,19 @@ RETR file1386
 QUIT\r
 </protocol>
 
 QUIT\r
 </protocol>
 
-<file1 name="log/download1386" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1386; charset=funny; option=strange
-
+<file1 name="log/download1386">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1386; charset=funny; option=strange\r
+\r
 MOOOO
 </file1>
 
 MOOOO
 </file1>
 
-<file2 name="log/stdout1386" mode="text">
+<file2 name="log/stdout1386">
 </file2>
 
 </verify>
 </file2>
 
 </verify>
index a2c5a4d..2b6c3fc 100644 (file)
@@ -10,14 +10,14 @@ RETR
 <reply>
 # file1387 contents...
 <data nocheck="yes">
 <reply>
 # file1387 contents...
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1387; charset=funny; option=strange
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1387; charset=funny; option=strange\r
+\r
 MOOOO
 </data>
 </reply>
 MOOOO
 </data>
 </reply>
@@ -53,14 +53,14 @@ QUIT
 </protocol>
 
 <file1 name="log/download1387">
 </protocol>
 
 <file1 name="log/download1387">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1387; charset=funny; option=strange
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1387; charset=funny; option=strange\r
+\r
 MOOOO
 </file1>
 
 MOOOO
 </file1>
 
@@ -68,7 +68,7 @@ MOOOO
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
-220-  | (__| |_| |  _ <| |___ \r
+220-  | (__| |_| |  _ {| |___ \r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
@@ -76,8 +76,8 @@ MOOOO
 250 CWD command successful.\r
 229 Entering Passive Mode (stripped)
 200 I modify TYPE as you wanted\r
 250 CWD command successful.\r
 229 Entering Passive Mode (stripped)
 200 I modify TYPE as you wanted\r
-213 214\r
-150 Binary data connection for 1387 () (214 bytes).\r
+213 222\r
+150 Binary data connection for 1387 () (222 bytes).\r
 226 File transfer complete\r
 </file2>
 <stripfile2>
 226 File transfer complete\r
 </file2>
 <stripfile2>
index b4662e6..3d2c59a 100644 (file)
@@ -10,14 +10,14 @@ RETR
 <reply>
 # file1388 contents...
 <data nocheck="yes">
 <reply>
 # file1388 contents...
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1388; charset=funny; option=strange
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1388; charset=funny; option=strange\r
+\r
 MOOOO
 </data>
 </reply>
 MOOOO
 </data>
 </reply>
@@ -53,14 +53,14 @@ QUIT
 </protocol>
 
 <file1 name="log/download1388">
 </protocol>
 
 <file1 name="log/download1388">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1388; charset=funny; option=strange
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1388; charset=funny; option=strange\r
+\r
 MOOOO
 </file1>
 
 MOOOO
 </file1>
 
@@ -68,7 +68,7 @@ MOOOO
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
-220-  | (__| |_| |  _ <| |___ \r
+220-  | (__| |_| |  _ {| |___ \r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
@@ -76,8 +76,8 @@ MOOOO
 250 CWD command successful.\r
 229 Entering Passive Mode (stripped)
 200 I modify TYPE as you wanted\r
 250 CWD command successful.\r
 229 Entering Passive Mode (stripped)
 200 I modify TYPE as you wanted\r
-213 214\r
-150 Binary data connection for 1388 () (214 bytes).\r
+213 222\r
+150 Binary data connection for 1388 () (222 bytes).\r
 226 File transfer complete\r
 </file2>
 <stripfile2>
 226 File transfer complete\r
 </file2>
 <stripfile2>
index c2ac3ad..4aaacd8 100644 (file)
@@ -11,14 +11,14 @@ RETR
 <reply>
 # file1389 contents...
 <data nocheck="yes">
 <reply>
 # file1389 contents...
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1389; charset=funny; option=strange
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1389; charset=funny; option=strange\r
+\r
 MOOOO
 </data>
 </reply>
 MOOOO
 </data>
 </reply>
@@ -54,14 +54,14 @@ QUIT
 </protocol>
 
 <file1 name="log/download1389">
 </protocol>
 
 <file1 name="log/download1389">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1389; charset=funny; option=strange
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1389; charset=funny; option=strange\r
+\r
 MOOOO
 </file1>
 
 MOOOO
 </file1>
 
@@ -69,7 +69,7 @@ MOOOO
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
-220-  | (__| |_| |  _ <| |___ \r
+220-  | (__| |_| |  _ {| |___ \r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
@@ -77,8 +77,8 @@ MOOOO
 250 CWD command successful.\r
 229 Entering Passive Mode (stripped)
 200 I modify TYPE as you wanted\r
 250 CWD command successful.\r
 229 Entering Passive Mode (stripped)
 200 I modify TYPE as you wanted\r
-213 214\r
-150 Binary data connection for 1389 () (214 bytes).\r
+213 222\r
+150 Binary data connection for 1389 () (222 bytes).\r
 226 File transfer complete\r
 </file2>
 <stripfile2>
 226 File transfer complete\r
 </file2>
 <stripfile2>
index 3cf86e7..0668cf7 100644 (file)
@@ -11,14 +11,14 @@ RETR
 <reply>
 # file1390 contents...
 <data nocheck="yes">
 <reply>
 # file1390 contents...
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1390; charset=funny; option=strange
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1390; charset=funny; option=strange\r
+\r
 MOOOO
 </data>
 </reply>
 MOOOO
 </data>
 </reply>
@@ -54,14 +54,14 @@ QUIT
 </protocol>
 
 <file1 name="log/download1390">
 </protocol>
 
 <file1 name="log/download1390">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1390; charset=funny; option=strange
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1390; charset=funny; option=strange\r
+\r
 MOOOO
 </file1>
 
 MOOOO
 </file1>
 
@@ -69,7 +69,7 @@ MOOOO
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
-220-  | (__| |_| |  _ <| |___ \r
+220-  | (__| |_| |  _ {| |___ \r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
@@ -77,8 +77,8 @@ MOOOO
 250 CWD command successful.\r
 229 Entering Passive Mode (stripped)
 200 I modify TYPE as you wanted\r
 250 CWD command successful.\r
 229 Entering Passive Mode (stripped)
 200 I modify TYPE as you wanted\r
-213 214\r
-150 Binary data connection for 1390 () (214 bytes).\r
+213 222\r
+150 Binary data connection for 1390 () (222 bytes).\r
 226 File transfer complete\r
 </file2>
 <stripfile2>
 226 File transfer complete\r
 </file2>
 <stripfile2>
index 913f25a..09c670a 100644 (file)
@@ -10,14 +10,14 @@ RETR
 <reply>
 # file1391 contents...
 <data nocheck="yes">
 <reply>
 # file1391 contents...
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1391; charset=funny; option=strange
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1391; charset=funny; option=strange\r
+\r
 MOOOO
 </data>
 </reply>
 MOOOO
 </data>
 </reply>
@@ -53,14 +53,14 @@ QUIT
 </protocol>
 
 <file1 name="log/download1391">
 </protocol>
 
 <file1 name="log/download1391">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1391; charset=funny; option=strange
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1391; charset=funny; option=strange\r
+\r
 MOOOO
 </file1>
 
 MOOOO
 </file1>
 
@@ -68,7 +68,7 @@ MOOOO
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
-220-  | (__| |_| |  _ <| |___ \r
+220-  | (__| |_| |  _ {| |___ \r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
@@ -76,8 +76,8 @@ MOOOO
 250 CWD command successful.\r
 229 Entering Passive Mode (stripped)
 200 I modify TYPE as you wanted\r
 250 CWD command successful.\r
 229 Entering Passive Mode (stripped)
 200 I modify TYPE as you wanted\r
-213 214\r
-150 Binary data connection for 1391 () (214 bytes).\r
+213 222\r
+150 Binary data connection for 1391 () (222 bytes).\r
 226 File transfer complete\r
 </file2>
 <stripfile2>
 226 File transfer complete\r
 </file2>
 <stripfile2>
index b05fc31..994c881 100644 (file)
@@ -10,14 +10,14 @@ RETR
 <reply>
 # file1392 contents...
 <data nocheck="yes">
 <reply>
 # file1392 contents...
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1392; charset=funny; option=strange
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1392; charset=funny; option=strange\r
+\r
 MOOOO
 </data>
 </reply>
 MOOOO
 </data>
 </reply>
@@ -53,14 +53,14 @@ QUIT
 </protocol>
 
 <file1 name="log/download1392">
 </protocol>
 
 <file1 name="log/download1392">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1392; charset=funny; option=strange
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1392; charset=funny; option=strange\r
+\r
 MOOOO
 </file1>
 
 MOOOO
 </file1>
 
@@ -68,7 +68,7 @@ MOOOO
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
 220-        _   _ ____  _     \r
 220-    ___| | | |  _ \| |    \r
 220-   / __| | | | |_) | |    \r
-220-  | (__| |_| |  _ <| |___ \r
+220-  | (__| |_| |  _ {| |___ \r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
 220    \___|\___/|_| \_\_____|\r
 331 We are happy you popped in!\r
 230 Welcome you silly person\r
@@ -76,8 +76,8 @@ MOOOO
 250 CWD command successful.\r
 229 Entering Passive Mode (stripped)
 200 I modify TYPE as you wanted\r
 250 CWD command successful.\r
 229 Entering Passive Mode (stripped)
 200 I modify TYPE as you wanted\r
-213 214\r
-150 Binary data connection for 1392 () (214 bytes).\r
+213 222\r
+150 Binary data connection for 1392 () (222 bytes).\r
 226 File transfer complete\r
 </file2>
 <stripfile2>
 226 File transfer complete\r
 </file2>
 <stripfile2>
index ebb8151..12f9284 100644 (file)
@@ -10,14 +10,14 @@ RETR
 <reply>
 # file1393 contents...
 <data nocheck="yes">
 <reply>
 # file1393 contents...
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1393; charset=funny; option=strange
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1393; charset=funny; option=strange\r
+\r
 MOOOO
 </data>
 </reply>
 MOOOO
 </data>
 </reply>
@@ -52,19 +52,19 @@ RETR file1393
 QUIT\r
 </protocol>
 
 QUIT\r
 </protocol>
 
-<file1 name="log/download1393" mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name1393; charset=funny; option=strange
-
+<file1 name="log/download1393">
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Content-Disposition: filename=name1393; charset=funny; option=strange\r
+\r
 MOOOO
 </file1>
 
 MOOOO
 </file1>
 
-<file2 name="log/stdout1393" mode="text">
+<file2 name="log/stdout1393">
 </file2>
 
 </verify>
 </file2>
 
 </verify>
diff --git a/tests/data/test1397 b/tests/data/test1397
new file mode 100644 (file)
index 0000000..5f479b4
--- /dev/null
@@ -0,0 +1,27 @@
+<testcase>
+<info>
+<keywords>
+unittest
+ssl
+wildcard
+</keywords>
+</info>
+
+#
+# Client-side
+<client>
+<server>
+none
+</server>
+<features>
+unittest
+</features>
+ <name>
+Check wildcard certificate matching function Curl_cert_hostcheck
+ </name>
+<tool>
+unit1397
+</tool>
+</client>
+
+</testcase>
diff --git a/tests/data/test1398 b/tests/data/test1398
new file mode 100644 (file)
index 0000000..dd50baa
--- /dev/null
@@ -0,0 +1,26 @@
+<testcase>
+<info>
+<keywords>
+unittest
+curl_msnprintf
+</keywords>
+</info>
+
+#
+# Client-side
+<client>
+<server>
+none
+</server>
+<features>
+unittest
+</features>
+ <name>
+curl_msnprintf unit tests
+ </name>
+<tool>
+unit1398
+</tool>
+</client>
+
+</testcase>
index 88a06ba..4415697 100644 (file)
@@ -27,7 +27,7 @@ Connection: close
 http
 </server>
  <name>
 http
 </server>
  <name>
-HTTP RFC1867-type formposting - -F with three files, one with explicit type
+--libcurl for HTTP RFC1867-type formposting - -F with three files, one with explicit type
  </name>
  <command>
 http://%HOSTIP:%HTTPPORT/we/want/1404 -F name=value -F 'file=@log/test1404.txt,log/test1404.txt;type=magic/content,log/test1404.txt' --libcurl log/test1404.c
  </name>
  <command>
 http://%HOSTIP:%HTTPPORT/we/want/1404 -F name=value -F 'file=@log/test1404.txt,log/test1404.txt;type=magic/content,log/test1404.txt' --libcurl log/test1404.c
index 692bb1a..38bfd5c 100644 (file)
@@ -5,7 +5,6 @@
 FTP
 post-quote
 pre-quote
 FTP
 post-quote
 pre-quote
-quote
 --libcurl
 </keywords>
 </info>
 --libcurl
 </keywords>
 </info>
@@ -31,7 +30,7 @@ REPLY FAIL 500 this might not be a failure!
 ftp
 </server>
  <name>
 ftp
 </server>
  <name>
-FTP with quote ops
+--libcurl for FTP with quote ops
  </name>
  <command>
 ftp://%HOSTIP:%FTPPORT/1405 -Q "NOOP 1" -Q "+NOOP 2" -Q "-NOOP 3" -Q "*FAIL" -Q "+*FAIL HARD" --libcurl log/test1405.c
  </name>
  <command>
 ftp://%HOSTIP:%FTPPORT/1405 -Q "NOOP 1" -Q "+NOOP 2" -Q "-NOOP 3" -Q "*FAIL" -Q "+*FAIL HARD" --libcurl log/test1405.c
index 6245c51..c80459f 100644 (file)
@@ -1,5 +1,5 @@
 <testcase>
 <testcase>
-# Based on test802
+# Based on test900
 # N.B. --libcurl output not sufficient to deal with uploaded files.
 <info>
 <keywords>
 # N.B. --libcurl output not sufficient to deal with uploaded files.
 <info>
 <keywords>
@@ -11,6 +11,9 @@ SMTP
 #
 # Server-side
 <reply>
 #
 # Server-side
 <reply>
+<servercmd>\r
+CAPA SIZE\r
+</servercmd>\r
 </reply>
 
 #
 </reply>
 
 #
@@ -20,7 +23,7 @@ SMTP
 smtp
 </server>
  <name>
 smtp
 </server>
  <name>
-SMTP
+--libcurl for SMTP
  </name>
 <file name="log/test1406.eml">
 From: different\r
  </name>
 <file name="log/test1406.eml">
 From: different\r
@@ -29,7 +32,7 @@ To: another
 body\r
 </file>
  <command>
 body\r
 </file>
  <command>
-smtp://%HOSTIP:%SMTPPORT/user --mail-rcpt 1406@foo --mail-rcpt 1406@foobar.example --mail-from 1406@from -T log/test1406.eml --libcurl log/test1406.c
+smtp://%HOSTIP:%SMTPPORT/1406 --mail-rcpt recipient.one@example.com --mail-rcpt recipient.two@example.com --mail-from sender@example.com -T log/test1406.eml --libcurl log/test1406.c
 </command>
 </client>
 
 </command>
 </client>
 
@@ -37,10 +40,10 @@ smtp://%HOSTIP:%SMTPPORT/user --mail-rcpt 1406@foo --mail-rcpt 1406@foobar.examp
 # Verify data after the test has been "shot"
 <verify>
 <protocol>
 # Verify data after the test has been "shot"
 <verify>
 <protocol>
-EHLO user\r
-MAIL FROM:<1406@from> SIZE=38\r
-RCPT TO:<1406@foo>\r
-RCPT TO:<1406@foobar.example>\r
+EHLO 1406\r
+MAIL FROM:<sender@example.com> SIZE=38\r
+RCPT TO:<recipient.one@example.com>\r
+RCPT TO:<recipient.two@example.com>\r
 DATA\r
 QUIT\r
 </protocol>
 DATA\r
 QUIT\r
 </protocol>
@@ -65,19 +68,19 @@ int main(int argc, char *argv[])
   struct curl_slist *slist1;
 
   slist1 = NULL;
   struct curl_slist *slist1;
 
   slist1 = NULL;
-  slist1 = curl_slist_append(slist1, "1406@foo");
-  slist1 = curl_slist_append(slist1, "1406@foobar.example");
+  slist1 = curl_slist_append(slist1, "recipient.one@example.com");
+  slist1 = curl_slist_append(slist1, "recipient.two@example.com");
 
   hnd = curl_easy_init();
   curl_easy_setopt(hnd, CURLOPT_INFILESIZE_LARGE, (curl_off_t)38);
 
   hnd = curl_easy_init();
   curl_easy_setopt(hnd, CURLOPT_INFILESIZE_LARGE, (curl_off_t)38);
-  curl_easy_setopt(hnd, CURLOPT_URL, "smtp://%HOSTIP:%SMTPPORT/user");
+  curl_easy_setopt(hnd, CURLOPT_URL, "smtp://%HOSTIP:%SMTPPORT/1406");
   curl_easy_setopt(hnd, CURLOPT_HEADER, 1L);
   curl_easy_setopt(hnd, CURLOPT_UPLOAD, 1L);
   curl_easy_setopt(hnd, CURLOPT_USERAGENT, "stripped");
   curl_easy_setopt(hnd, CURLOPT_MAXREDIRS, 50L);
   curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
   curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);
   curl_easy_setopt(hnd, CURLOPT_HEADER, 1L);
   curl_easy_setopt(hnd, CURLOPT_UPLOAD, 1L);
   curl_easy_setopt(hnd, CURLOPT_USERAGENT, "stripped");
   curl_easy_setopt(hnd, CURLOPT_MAXREDIRS, 50L);
   curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
   curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);
-  curl_easy_setopt(hnd, CURLOPT_MAIL_FROM, "1406@from");
+  curl_easy_setopt(hnd, CURLOPT_MAIL_FROM, "sender@example.com");
   curl_easy_setopt(hnd, CURLOPT_MAIL_RCPT, slist1);
 
   /* Here is a list of options the curl code used that cannot get generated
   curl_easy_setopt(hnd, CURLOPT_MAIL_RCPT, slist1);
 
   /* Here is a list of options the curl code used that cannot get generated
index 842778a..e84463a 100644 (file)
@@ -1,8 +1,9 @@
 <testcase>
 <testcase>
-# Based on test808
+# Based on test851
 <info>
 <keywords>
 POP3
 <info>
 <keywords>
 POP3
+Clear Text\r
 LIST
 --libcurl
 </keywords>
 LIST
 --libcurl
 </keywords>
@@ -23,7 +24,7 @@ REPLY LIST +OK 1407 100\r\n.
 pop3
 </server>
  <name>
 pop3
 </server>
  <name>
-POP3 LIST one message
+--libcurl for POP3 LIST one message
  </name>
  <command>
 pop3://%HOSTIP:%POP3PORT/1407 -l -u user:secret --libcurl log/test1407.c
  </name>
  <command>
 pop3://%HOSTIP:%POP3PORT/1407 -l -u user:secret --libcurl log/test1407.c
index 01b2f6d..54d5e77 100644 (file)
@@ -3,7 +3,7 @@
 <keywords>
 HTTP
 HTTP GET
 <keywords>
 HTTP
 HTTP GET
-IPV6
+IPv6
 cookies
 cookiejar
 </keywords>
 cookies
 cookiejar
 </keywords>
diff --git a/tests/data/test1411 b/tests/data/test1411
new file mode 100644 (file)
index 0000000..3ffd586
--- /dev/null
@@ -0,0 +1,60 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+PUT
+</keywords>
+</info>
+
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
+ETag: "21025-dc7-39462498"
+Accept-Ranges: bytes
+Content-Length: 6
+Connection: close
+Content-Type: text/html
+Funny-head: yesyes
+
+-foo-
+</data>
+</reply>
+
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+
+# make sure there's no Expect: 100-continue when there's no file to send!
+ <name>
+HTTP with zero size file PUT
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/1411 -T log/empty1411
+</command>
+# create an empty file
+<file name="log/empty1411">
+</file>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+PUT /1411 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+Content-Length: 0\r
+\r
+</protocol>
+</verify>
+</testcase>
index e88919d..971aac8 100644 (file)
@@ -74,6 +74,7 @@ This IS the real page!
 http
 </server>
 <features>
 http
 </server>
 <features>
+!SSPI
 crypto
 </features>
  <name>
 crypto
 </features>
  <name>
diff --git a/tests/data/test1415 b/tests/data/test1415
new file mode 100644 (file)
index 0000000..d97dfce
--- /dev/null
@@ -0,0 +1,75 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+HTTP proxy
+cookies
+cookiejar
+delete expired cookie
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 4
+Content-Type: text/html
+Funny-head: yesyes
+Set-Cookie: test1value=test1; domain=example.com; path=/;
+Set-Cookie: test2value=test2; expires=Friday, 01-Jan-2037 00:00:00 GMT; domain=example.com; path=/;
+Set-Cookie: test3value=test3; expires=Monday, 13-Jun-1988 03:04:55 GMT; domain=example.com; path=/;
+Set-Cookie: test4value=test4; expires=Friday, 01-Jan-2037 00:00:00 GMT; domain=example.com; path=/;
+Set-Cookie: test5value=test5; expires=Monday, 13-Jun-1988 03:04:55 GMT; domain=example.com; path=/;
+Set-Cookie: test6value=test6; expires=Monday, 13-Jun-1988 03:04:55 GMT; domain=example.com; path=/;
+Set-Cookie: test7value=test7; expires=Friday, 01-Jan-2037 00:00:00 GMT; domain=example.com; path=/;
+Set-Cookie: test8value=test8; expires=Monday, 13-Jun-1988 03:04:55 GMT; domain=example.com; path=/;
+
+boo
+</data>
+</reply>
+
+# Client-side
+<client>
+<server>
+http
+</server>
+<name>
+Delete expired cookies
+</name>
+<setenv>
+TZ=GMT
+</setenv>
+<command>
+http://example.com/we/want/1415 -b none -c log/jar1415.txt -x %HOSTIP:%HTTPPORT
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET http://example.com/we/want/1415 HTTP/1.1\r
+Host: example.com\r
+Accept: */*\r
+Proxy-Connection: Keep-Alive\r
+\r
+</protocol>
+
+<file name="log/jar1415.txt" mode="text">
+# Netscape HTTP Cookie File
+# http://curl.haxx.se/docs/http-cookies.html
+# This file was generated by libcurl! Edit at your own risk.
+
+.example.com   TRUE    /       FALSE   0       test1value      test1
+.example.com   TRUE    /       FALSE   2114380800      test2value      test2
+.example.com   TRUE    /       FALSE   2114380800      test4value      test4
+.example.com   TRUE    /       FALSE   2114380800      test7value      test7
+</file>
+</verify>
+</testcase>
diff --git a/tests/data/test1416 b/tests/data/test1416
new file mode 100644 (file)
index 0000000..546575e
--- /dev/null
@@ -0,0 +1,63 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+chunked Transfer-Encoding
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 funky chunky!
+Server: fakeit/0.9 fakeitbad/1.0
+Transfer-Encoding: chunked
+Connection: mooo
+
+12345678123456789\r
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r
+30\r
+bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\r
+21;heresatest=moooo\r
+cccccccccccccccccccccccccccccccc
+\r
+0\r
+\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+HTTP GET with chunked Transfer-Encoding overflowed chunked size
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/1416
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /1416 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+\r
+</protocol>
+
+# 56 = CURLE_RECV_ERROR
+<errorcode>
+56
+</errorcode>
+</verify>
+
+</testcase>
diff --git a/tests/data/test1417 b/tests/data/test1417
new file mode 100644 (file)
index 0000000..13ba6b1
--- /dev/null
@@ -0,0 +1,78 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+chunked Transfer-Encoding
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 funky chunky!\r
+Server: fakeit/0.9 fakeitbad/1.0\r
+Transfer-Encoding: chunked\r
+Trailer: chunky-trailer\r
+Connection: mooo\r
+\r
+40
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+30
+bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+21;heresatest=moooo
+cccccccccccccccccccccccccccccccc
+
+0
+chunky-trailer: header data
+
+</data>
+<datacheck>
+HTTP/1.1 200 funky chunky!\r
+Server: fakeit/0.9 fakeitbad/1.0\r
+Transfer-Encoding: chunked\r
+Trailer: chunky-trailer\r
+Connection: mooo\r
+\r
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccccccccc
+</datacheck>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+HTTP GET with chunked encoding and chunked trailer without CRs
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/1417 -D log/heads1417
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /1417 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+\r
+</protocol>
+<file name="log/heads1417">
+HTTP/1.1 200 funky chunky!\r
+Server: fakeit/0.9 fakeitbad/1.0\r
+Transfer-Encoding: chunked\r
+Trailer: chunky-trailer\r
+Connection: mooo\r
+\r
+chunky-trailer: header data\r
+</file>
+</verify>
+
+</testcase>
diff --git a/tests/data/test1418 b/tests/data/test1418
new file mode 100644 (file)
index 0000000..de133af
--- /dev/null
@@ -0,0 +1,108 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+HTTP NTLM auth
+connection re-use
+</keywords>
+</info>
+# Server-side
+<reply>
+<servercmd>
+connection-monitor
+</servercmd>
+
+<data>
+HTTP/1.1 401 Authentication please!\r
+Content-Length: 20\r
+WWW-Authenticate: Digest realm="loonie", nonce="314156592"\r
+WWW-Authenticate: Basic\r
+\r
+Please auth with me
+</data>
+
+# This is supposed to be returned when the server gets the second
+# Authorization: NTLM line passed-in from the client
+<data1000>
+HTTP/1.1 200 Things are fine in server land\r
+Server: Microsoft-IIS/5.0\r
+Content-Length: 4\r
+\r
+moo
+</data1000>
+
+<data1003>
+HTTP/1.1 200 OK\r
+Server: Another one/1.0\r
+Content-Length: 4\r
+\r
+boo
+</data1003>
+
+# This is the first reply after the redirection
+<data1011>
+HTTP/1.1 200 OK\r
+Server: Microsoft-IIS/5.0\r
+Content-Type: text/html; charset=iso-8859-1\r
+Content-Length: 34\r
+\r
+This is not the real page either!
+</data1011>
+
+<datacheck>
+HTTP/1.1 401 Authentication please!\r
+Content-Length: 20\r
+WWW-Authenticate: Digest realm="loonie", nonce="314156592"\r
+WWW-Authenticate: Basic\r
+\r
+HTTP/1.1 200 Things are fine in server land\r
+Server: Microsoft-IIS/5.0\r
+Content-Length: 4\r
+\r
+moo
+</datacheck>
+
+</reply>
+
+# Client-side
+<client>
+<server>
+http
+</server>
+<features>
+!SSPI
+crypto
+</features>
+ <name>
+HTTP with --anyauth and connection re-use
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/1418 -u testuser:testpass --anyauth http://%HOSTIP:%HTTPPORT/14180003
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /1418 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+\r
+GET /1418 HTTP/1.1\r
+Authorization: Digest username="testuser", realm="loonie", nonce="314156592", uri="/1418", response="986238b7e0077754944c966f56d9bc77"\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+\r
+GET /14180003 HTTP/1.1\r
+Authorization: Digest username="testuser", realm="loonie", nonce="314156592", uri="/14180003", response="1c6390a67bac3283a9b023402f3b3540"\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+\r
+[DISCONNECT]
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test1419 b/tests/data/test1419
new file mode 100644 (file)
index 0000000..f29ce44
--- /dev/null
@@ -0,0 +1,69 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+HTTP NTLM auth
+connection re-use
+</keywords>
+</info>
+# Server-side
+<reply>
+<servercmd>
+connection-monitor
+</servercmd>
+
+<data>
+HTTP/1.1 200 fine!\r
+Content-Length: 20\r
+\r
+Feel free to get it
+</data>
+
+<data3>
+HTTP/1.1 200 OK\r
+Server: Another one/1.0\r
+Content-Length: 4\r
+\r
+boo
+</data3>
+
+<datacheck>
+HTTP/1.1 200 fine!\r
+Content-Length: 20\r
+\r
+Feel free to get it
+</datacheck>
+</reply>
+
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+HTTP with --anyauth (but no auth!) and connection re-use
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/1419 --anyauth http://%HOSTIP:%HTTPPORT/14190003
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /1419 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+\r
+GET /14190003 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+\r
+[DISCONNECT]
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test1420 b/tests/data/test1420
new file mode 100644 (file)
index 0000000..79ca675
--- /dev/null
@@ -0,0 +1,108 @@
+<testcase>
+# Based on test800
+<info>
+<keywords>
+IMAP
+Clear Text\r
+FETCH
+--libcurl
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+ <name>
+--libcurl for IMAP FETCH message
+ </name>
+ <command>
+'imap://%HOSTIP:%IMAPPORT/1420/;UID=1' -u user:secret --libcurl log/test1420.c
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+A001 CAPABILITY\r
+A002 LOGIN user secret\r
+A003 SELECT 1420\r
+A004 FETCH 1 BODY[]\r
+A005 LOGOUT\r
+</protocol>
+<file name="log/test1420.c" mode="text">
+/********* Sample code generated by the curl command line tool **********
+ * All curl_easy_setopt() options are documented at:
+ * http://curl.haxx.se/libcurl/c/curl_easy_setopt.html
+ ************************************************************************/
+#include <curl/curl.h>
+
+int main(int argc, char *argv[])
+{
+  CURLcode ret;
+  CURL *hnd;
+
+  hnd = curl_easy_init();
+  curl_easy_setopt(hnd, CURLOPT_URL, "imap://%HOSTIP:%IMAPPORT/1420/;UID=1");
+  curl_easy_setopt(hnd, CURLOPT_HEADER, 1L);
+  curl_easy_setopt(hnd, CURLOPT_USERPWD, "user:secret");
+  curl_easy_setopt(hnd, CURLOPT_USERAGENT, "stripped");
+  curl_easy_setopt(hnd, CURLOPT_MAXREDIRS, 50L);
+  curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
+  curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);
+
+  /* Here is a list of options the curl code used that cannot get generated
+     as source easily. You may select to either not use them or implement
+     them yourself.
+
+  CURLOPT_WRITEDATA set to a objectpointer
+  CURLOPT_WRITEFUNCTION set to a functionpointer
+  CURLOPT_READDATA set to a objectpointer
+  CURLOPT_READFUNCTION set to a functionpointer
+  CURLOPT_SEEKDATA set to a objectpointer
+  CURLOPT_SEEKFUNCTION set to a functionpointer
+  CURLOPT_ERRORBUFFER set to a objectpointer
+  CURLOPT_STDERR set to a objectpointer
+  CURLOPT_DEBUGFUNCTION set to a functionpointer
+  CURLOPT_DEBUGDATA set to a objectpointer
+  CURLOPT_HEADERFUNCTION set to a functionpointer
+  CURLOPT_HEADERDATA set to a objectpointer
+
+  */
+
+  ret = curl_easy_perform(hnd);
+
+  curl_easy_cleanup(hnd);
+  hnd = NULL;
+
+  return (int)ret;
+}
+/**** End of sample code ****/
+</file>
+<stripfile>
+# curl's default user-agent varies with version, libraries etc.
+s/(USERAGENT, \")[^\"]+/${1}stripped/
+# CURLOPT_SSL_VERIFYPEER and SSH_KNOWNHOSTS vary with configurations - just
+# ignore them
+$_ = '' if /CURLOPT_SSL_VERIFYPEER/
+$_ = '' if /CURLOPT_SSH_KNOWNHOSTS/
+</stripfile>
+</verify>
+</testcase>
diff --git a/tests/data/test1428 b/tests/data/test1428
new file mode 100644 (file)
index 0000000..f976569
--- /dev/null
@@ -0,0 +1,81 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+HTTP CONNECT
+HTTP Basic auth
+proxytunnel
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake swsclose
+Content-Type: text/html
+Funny-head: yesyes
+Content-Length: 9
+
+contents
+</data>
+<connect>
+HTTP/1.1 200 Mighty fine indeed\r
+\r
+</connect>
+<datacheck>
+HTTP/1.1 200 Mighty fine indeed\r
+\r
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake swsclose
+Content-Type: text/html
+Funny-head: yesyes
+Content-Length: 9
+
+contents
+</datacheck>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+http-proxy
+</server>
+ <name>
+HTTP over proxy-tunnel with --proxy-header and --header
+ </name>
+ <command>
+http://test.1428:%HTTPPORT/we/want/that/page/1428 -p -x %HOSTIP:%PROXYPORT --user 'iam:my:;self' --header "header-type: server" --proxy-header "header-type: proxy"
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<proxy>
+CONNECT test.1428:%HTTPPORT HTTP/1.1\r
+User-Agent: curl/7.10.7-pre2 (i686-pc-linux-gnu) libcurl/7.10.7-pre2 OpenSSL/0.9.7a zlib/1.1.3\r
+Host: test.1428:%HTTPPORT\r
+Proxy-Connection: Keep-Alive\r
+header-type: proxy\r
+\r
+</proxy>
+<protocol>
+GET /we/want/that/page/1428 HTTP/1.1\r
+Authorization: Basic aWFtOm15OjtzZWxm\r
+User-Agent: curl/7.10.7-pre2 (i686-pc-linux-gnu) libcurl/7.10.7-pre2 OpenSSL/0.9.7a zlib/1.1.3\r
+Host: test.1428:%HTTPPORT\r
+Accept: */*\r
+header-type: server\r
+\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test1429 b/tests/data/test1429
new file mode 100644 (file)
index 0000000..da09dca
--- /dev/null
@@ -0,0 +1,69 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+</keywords>
+</info>
+
+<reply>
+<data nocheck="yes">
+HTTP/1.1 1234 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
+ETag: "21025-dc7-39462498"
+Accept-Ranges: bytes
+Content-Length: 6
+Connection: close
+Content-Type: text/html
+Funny-head: yesyes
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+
+<name>
+HTTP GET with 4-digit reponse code
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/1429 --write-out '%{response_code}'
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<stdout nonewline="yes">
+HTTP/1.1 1234 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
+ETag: "21025-dc7-39462498"
+Accept-Ranges: bytes
+Content-Length: 6
+Connection: close
+Content-Type: text/html
+Funny-head: yesyes
+
+-foo-
+1234
+</stdout>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /1429 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test1430 b/tests/data/test1430
new file mode 100644 (file)
index 0000000..c5f65cf
--- /dev/null
@@ -0,0 +1,53 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+</keywords>
+</info>
+
+<reply>
+<data>
+HTTP/1.1 -12 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
+ETag: "21025-dc7-39462498"
+Accept-Ranges: bytes
+Content-Length: 6
+Connection: close
+Content-Type: text/html
+Funny-head: yesyes
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+HTTP GET with negative reponse code
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/1430
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /1430 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test1431 b/tests/data/test1431
new file mode 100644 (file)
index 0000000..4ea33ed
--- /dev/null
@@ -0,0 +1,53 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+</keywords>
+</info>
+
+<reply>
+<data>
+HTTP/1.1 2 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
+ETag: "21025-dc7-39462498"
+Accept-Ranges: bytes
+Content-Length: 6
+Connection: close
+Content-Type: text/html
+Funny-head: yesyes
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+HTTP GET with single-digit reponse code
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/1431
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /1431 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test1432 b/tests/data/test1432
new file mode 100644 (file)
index 0000000..eb1d0c2
--- /dev/null
@@ -0,0 +1,54 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+</keywords>
+</info>
+
+<reply>
+<data nocheck="yes">
+HTTP/1.1 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
+ETag: "21025-dc7-39462498"
+Accept-Ranges: bytes
+Content-Length: 6
+Connection: close
+Content-Type: text/html
+Funny-head: yesyes
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+
+<name>
+HTTP GET with 100-digit reponse code and survive
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/1432
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /1432 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test1433 b/tests/data/test1433
new file mode 100644 (file)
index 0000000..8634db2
--- /dev/null
@@ -0,0 +1,69 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+</keywords>
+</info>
+
+<reply>
+<data nocheck="yes">
+HTTP/1.0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
+ETag: "21025-dc7-39462498"
+Accept-Ranges: bytes
+Content-Length: 6
+Connection: close
+Content-Type: text/html
+Funny-head: yesyes
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+
+<name>
+HTTP GET with 100-digit subversion number in response
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/1433  --write-out '%{response_code}'
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<stdout nonewline="yes">
+HTTP/1.0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
+ETag: "21025-dc7-39462498"
+Accept-Ranges: bytes
+Content-Length: 6
+Connection: close
+Content-Type: text/html
+Funny-head: yesyes
+
+-foo-
+200
+</stdout>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /1433 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test1434 b/tests/data/test1434
new file mode 100644 (file)
index 0000000..fba104b
--- /dev/null
@@ -0,0 +1,90 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+Resume
+</keywords>
+</info>
+
+# Server-side
+<reply>
+# Some servers (e.g. Apache 1.2) respond this way to an invalid byte range
+<data>
+HTTP/1.1 200 OK\r
+Connection: close\r
+Content-Length: 100\r
+Content-Type: text/plain\r
+\r
+012345678
+012345678
+012345678
+012345678
+012345678
+012345678
+012345678
+012345678
+012345678
+012345678
+</data>
+
+# The file data that exists at the start of the test must be included in
+# the verification.
+<datacheck>
+012345678
+012345678
+012345678
+012345678
+012345678
+012345678
+012345678
+012345678
+012345678
+012345678
+HTTP/1.1 200 OK\r
+Connection: close\r
+Content-Length: 100\r
+Content-Type: text/plain\r
+\r
+</datacheck>
+</reply>
+
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+HTTP GET resume at exactly the existing file size is fine
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/1434 -C 100
+</command>
+<file name="log/curl1434.out">
+012345678
+012345678
+012345678
+012345678
+012345678
+012345678
+012345678
+012345678
+012345678
+012345678
+</file>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /1434 HTTP/1.1\r
+Range: bytes=100-\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test1435 b/tests/data/test1435
new file mode 100644 (file)
index 0000000..bd171a4
--- /dev/null
@@ -0,0 +1,46 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+unix sockets
+</keywords>
+</info>
+
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Sun, 16 Nov 2014 23:47:38 GMT
+Content-Length: 17
+
+Based on test300
+</data>
+</reply>
+
+<client>
+<features>
+unix-sockets
+</features>
+<server>
+http-unix
+</server>
+ <name>
+simple HTTP GET over Unix socket
+ </name>
+ <command>
+--unix-socket %HTTPUNIXPATH http://server-interpreted.example.com/1435
+</command>
+</client>
+
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /1435 HTTP/1.1\r
+Host: server-interpreted.example.com\r
+Accept: */*\r
+\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test1436 b/tests/data/test1436
new file mode 100644 (file)
index 0000000..e40a3bf
--- /dev/null
@@ -0,0 +1,85 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+unix sockets
+</keywords>
+</info>
+
+<reply>
+<data1>
+HTTP/1.1 200 OK
+Date: Mon, 17 Nov 2014 13:42:47 GMT
+Content-Length: 6
+
+First
+</data1>
+<data2>
+HTTP/1.1 200 OK
+Date: Mon, 17 Nov 2014 13:42:48 GMT
+Content-Length: 7
+
+Second
+</data2>
+<data3>
+HTTP/1.1 200 OK
+Date: Mon, 17 Nov 2014 13:42:49 GMT
+Content-Length: 6
+
+Third
+</data3>
+</reply>
+
+<client>
+<features>
+unix-sockets
+</features>
+<server>
+http-unix
+</server>
+ <name>
+HTTP requests with multiple connections over Unix socket
+ </name>
+ <command>
+--unix-socket %HTTPUNIXPATH http://one.example.com/14360001 http://two.example.com/14360002 http://one.example.com/14360003
+</command>
+</client>
+
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /14360001 HTTP/1.1\r
+Host: one.example.com\r
+Accept: */*\r
+\r
+GET /14360002 HTTP/1.1\r
+Host: two.example.com\r
+Accept: */*\r
+\r
+GET /14360003 HTTP/1.1\r
+Host: one.example.com\r
+Accept: */*\r
+\r
+</protocol>
+<stdout>
+HTTP/1.1 200 OK
+Date: Mon, 17 Nov 2014 13:42:47 GMT
+Content-Length: 6
+
+First
+HTTP/1.1 200 OK
+Date: Mon, 17 Nov 2014 13:42:48 GMT
+Content-Length: 7
+
+Second
+HTTP/1.1 200 OK
+Date: Mon, 17 Nov 2014 13:42:49 GMT
+Content-Length: 6
+
+Third
+</stdout>
+</verify>
+</testcase>
index cdd4cf6..f846fd0 100644 (file)
@@ -1,4 +1,11 @@
 <testcase>
 <testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+HTTP NTLM auth
+</keywords>
+</info>
 
 <!-- Server-side -->
 <reply>
 
 <!-- Server-side -->
 <reply>
@@ -50,6 +57,8 @@ Finally, this is the real page!
 <client>
 <features>
 NTLM
 <client>
 <features>
 NTLM
+!SSPI
+debug
 </features>
 <server>
 http
 </features>
 <server>
 http
@@ -84,7 +93,7 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 \r
 GET /150 HTTP/1.1\r
 Accept: */*\r
 \r
 GET /150 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoKBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
index 0a5919c..cd3131e 100644 (file)
@@ -10,13 +10,13 @@ multi
 # Server-side
 <reply>
 <data>
 # Server-side
 <reply>
 <data>
-HTTP/1.1 200 all good!
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Type: text/html
-Content-Length: 12
-Connection: close
-
+HTTP/1.1 200 all good!\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Type: text/html\r
+Content-Length: 12\r
+Connection: close\r
+\r
 Hello World
 </data>
 </reply>
 Hello World
 </data>
 </reply>
index ac9e048..4c084d6 100644 (file)
@@ -10,17 +10,17 @@ CURLOPT_RESOLVE
 
 <reply>
 <data>
 
 <reply>
 <data>
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
-ETag: "21025-dc7-39462498"
-Accept-Ranges: bytes
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Funny-head: yesyes
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT\r
+ETag: "21025-dc7-39462498"\r
+Accept-Ranges: bytes\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Funny-head: yesyes\r
+\r
 -foo-
 </data>
 </reply>
 -foo-
 </data>
 </reply>
index 66bf3fa..8665de6 100644 (file)
@@ -10,17 +10,17 @@ CURLOPT_RESOLVE
 
 <reply>
 <data>
 
 <reply>
 <data>
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
-ETag: "21025-dc7-39462498"
-Accept-Ranges: bytes
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Funny-head: yesyes
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT\r
+ETag: "21025-dc7-39462498"\r
+Accept-Ranges: bytes\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Funny-head: yesyes\r
+\r
 -foo-
 </data>
 </reply>
 -foo-
 </data>
 </reply>
index cedc9cc..b8463c5 100644 (file)
@@ -10,17 +10,17 @@ CURLOPT_RESOLVE
 
 <reply>
 <data>
 
 <reply>
 <data>
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
-ETag: "21025-dc7-39462498"
-Accept-Ranges: bytes
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Funny-head: yesyes
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT\r
+ETag: "21025-dc7-39462498"\r
+Accept-Ranges: bytes\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Funny-head: yesyes\r
+\r
 -foo-
 </data>
 </reply>
 -foo-
 </data>
 </reply>
index 3ab5284..c6e5a7c 100644 (file)
@@ -10,17 +10,17 @@ CURLOPT_RESOLVE
 
 <reply>
 <data>
 
 <reply>
 <data>
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
-ETag: "21025-dc7-39462498"
-Accept-Ranges: bytes
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Funny-head: yesyes
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT\r
+ETag: "21025-dc7-39462498"\r
+Accept-Ranges: bytes\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Funny-head: yesyes\r
+\r
 -foo-
 </data>
 </reply>
 -foo-
 </data>
 </reply>
index 8870b2f..815fef9 100644 (file)
@@ -3,41 +3,42 @@
 <keywords>
 HTTP
 multi
 <keywords>
 HTTP
 multi
+verbose logs
 </keywords>
 </info>
 
 # Server-side
 <reply>
 <data1>
 </keywords>
 </info>
 
 # Server-side
 <reply>
 <data1>
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 47
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 47\r
+\r
 file contents should appear once for each file
 </data1>
 <data2>
 file contents should appear once for each file
 </data1>
 <data2>
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 47
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 47\r
+\r
 file contents should appear once for each file
 </data2>
 <data3>
 file contents should appear once for each file
 </data2>
 <data3>
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 47
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 47\r
+\r
 file contents should appear once for each file
 </data3>
 <data4>
 file contents should appear once for each file
 </data3>
 <data4>
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 47
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 47\r
+\r
 file contents should appear once for each file
 </data4>
 </reply>
 file contents should appear once for each file
 </data4>
 </reply>
index 76ec532..ab7b47e 100644 (file)
@@ -32,7 +32,7 @@ To: another
 body
 </stdin>
  <command>
 body
 </stdin>
  <command>
-smtp://%HOSTIP:%SMTPPORT/user
+smtp://%HOSTIP:%SMTPPORT/1507
 </command>
 </client>
 
 </command>
 </client>
 
@@ -40,7 +40,7 @@ smtp://%HOSTIP:%SMTPPORT/user
 # Verify data after the test has been "shot"
 <verify>
 <protocol>
 # Verify data after the test has been "shot"
 <verify>
 <protocol>
-EHLO user\r
+EHLO 1507\r
 MAIL FROM:<1507-realuser@example.com>\r
 RCPT TO:<1507-recipient@example.com>\r
 DATA\r
 MAIL FROM:<1507-realuser@example.com>\r
 RCPT TO:<1507-recipient@example.com>\r
 DATA\r
index f8607e5..b276b8b 100644 (file)
@@ -24,7 +24,7 @@ http://%HOSTIP:%HTTPPORT/path/1508
 
 # Verify data after the test has been "shot"
 <verify>
 
 # Verify data after the test has been "shot"
 <verify>
-<file name="log/stdout1508" mode="text">
+<file name="log/stdout1508">
 We are done
 </file>
 </verify>
 We are done
 </file>
 </verify>
index dd68b05..b4bfc66 100644 (file)
@@ -21,25 +21,25 @@ Server: the beast that eats naughty clients
 </connect>
 
 <data>
 </connect>
 
 <data>
-HTTP/1.1 200 OK swsclose
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
-ETag: "21025-dc7-39462498"
-
+HTTP/1.1 200 OK swsclose\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT\r
+ETag: "21025-dc7-39462498"\r
+\r
 </data>
 <datacheck>
 HTTP/1.1 200 Mighty fine indeed\r
 Server: the beast that eats naughty clients\r
 \r
 </data>
 <datacheck>
 HTTP/1.1 200 Mighty fine indeed\r
 Server: the beast that eats naughty clients\r
 \r
-HTTP/1.1 200 OK swsclose
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
-ETag: "21025-dc7-39462498"
-
-header length is ........: 239
-header length should be..: 239
+HTTP/1.1 200 OK swsclose\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT\r
+ETag: "21025-dc7-39462498"\r
+\r
+header length is ........: 245
+header length should be..: 245
 </datacheck>
 </reply>
 
 </datacheck>
 </reply>
 
index 050f051..fdf6c7d 100644 (file)
@@ -2,41 +2,42 @@
 <info>
 <keywords>
 HTTP
 <info>
 <keywords>
 HTTP
+verbose logs
 </keywords>
 </info>
 
 # Server-side
 <reply>
 <data1>
 </keywords>
 </info>
 
 # Server-side
 <reply>
 <data1>
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 47
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 47\r
+\r
 file contents should appear once for each file
 </data1>
 <data2>
 file contents should appear once for each file
 </data1>
 <data2>
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 47
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 47\r
+\r
 file contents should appear once for each file
 </data2>
 <data3>
 file contents should appear once for each file
 </data2>
 <data3>
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 47
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 47\r
+\r
 file contents should appear once for each file
 </data3>
 <data4>
 file contents should appear once for each file
 </data3>
 <data4>
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 47
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 47\r
+\r
 file contents should appear once for each file
 </data4>
 </reply>
 file contents should appear once for each file
 </data4>
 </reply>
index 806657f..d2b26e5 100644 (file)
@@ -8,7 +8,7 @@ HTTP
 # Server-side
 <reply>
 <data>
 # Server-side
 <reply>
 <data>
-HTTP/1.1 200\r
+HTTP/1.1 200 OK\r
 Date: Thu, 09 Nov 2010 14:49:00 GMT\r
 Server: test-server/fakem\r
 Last-Modified: Mon, 22 Apr 2013 17:45:05 GMT\r
 Date: Thu, 09 Nov 2010 14:49:00 GMT\r
 Server: test-server/fakem\r
 Last-Modified: Mon, 22 Apr 2013 17:45:05 GMT\r
@@ -20,7 +20,7 @@ Hello World
 </data>
 
 <datacheck>
 </data>
 
 <datacheck>
-HTTP/1.1 200\r
+HTTP/1.1 200 OK\r
 Date: Thu, 09 Nov 2010 14:49:00 GMT\r
 Server: test-server/fakem\r
 Last-Modified: Mon, 22 Apr 2013 17:45:05 GMT\r
 Date: Thu, 09 Nov 2010 14:49:00 GMT\r
 Server: test-server/fakem\r
 Last-Modified: Mon, 22 Apr 2013 17:45:05 GMT\r
@@ -28,7 +28,7 @@ Content-Type: text/html
 Content-Length: 12\r
 Connection: close\r
 \r
 Content-Length: 12\r
 Connection: close\r
 \r
-HTTP/1.1 200\r
+HTTP/1.1 200 OK\r
 Date: Thu, 09 Nov 2010 14:49:00 GMT\r
 Server: test-server/fakem\r
 Last-Modified: Mon, 22 Apr 2013 17:45:05 GMT\r
 Date: Thu, 09 Nov 2010 14:49:00 GMT\r
 Server: test-server/fakem\r
 Last-Modified: Mon, 22 Apr 2013 17:45:05 GMT\r
index 9d2134b..a5de5cd 100644 (file)
@@ -9,35 +9,35 @@ GLOBAL DNS CACHE
 # Server-side
 <reply>
 <data1>
 # Server-side
 <reply>
 <data1>
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 47
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 47\r
+\r
 file contents should appear once for each file
 </data1>
 <data2>
 file contents should appear once for each file
 </data1>
 <data2>
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 47
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 47\r
+\r
 file contents should appear once for each file
 </data2>
 <data3>
 file contents should appear once for each file
 </data2>
 <data3>
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 47
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 47\r
+\r
 file contents should appear once for each file
 </data3>
 <data4>
 file contents should appear once for each file
 </data3>
 <data4>
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 47
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 47\r
+\r
 file contents should appear once for each file
 </data4>
 </reply>
 file contents should appear once for each file
 </data4>
 </reply>
diff --git a/tests/data/test1513 b/tests/data/test1513
new file mode 100644 (file)
index 0000000..4a63f18
--- /dev/null
@@ -0,0 +1,42 @@
+<testcase>
+<info>
+<keywords>
+PROGRESSFUNCTION
+</keywords>
+</info>
+
+# Server-side
+<reply>
+</reply>
+
+# Client-side
+<client>
+<server>
+none
+</server>
+<features>
+http
+</features>
+<tool>
+lib1513
+</tool>
+ <name>
+return failure immediately from progress callback
+ </name>
+
+# this server/host won't be used for real
+ <command>
+http://localhost/1513
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+</protocol>
+# 42 == CURLE_ABORTED_BY_CALLBACK
+<errorcode>
+42
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test1514 b/tests/data/test1514
new file mode 100644 (file)
index 0000000..38f5da6
--- /dev/null
@@ -0,0 +1,48 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP POST
+Content-Length
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 411 Length Required\r
+Date: Sun, 19 Jan 2014 18:50:58 GMT\r
+Server: test-server/fake swsclose\r
+Connection: close\r
+</data>
+</reply>
+
+# Client-side
+<client>
+<server>
+http
+</server>
+<tool>
+lib1514
+</tool>
+<name>
+HTTP POST with read callback and unknown data size
+</name>
+<command>
+http://%HOSTIP:%HTTPPORT/1514
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+# Content-Length header is not present
+<protocol>
+POST /1514 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+Content-Type: application/x-www-form-urlencoded\r
+Expect: 100-continue\r
+\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test1515 b/tests/data/test1515
new file mode 100644 (file)
index 0000000..3a49d1b
--- /dev/null
@@ -0,0 +1,58 @@
+<testcase>
+
+<info>
+<keywords>
+HTTP
+multi
+FAILURE
+resolve
+</keywords>
+</info>
+
+<reply>
+# Close the connection after the first request. Second request will happen after
+# the DNS cache timeout elapses and must succeed exactly like the first one.
+<data1>
+HTTP/1.1 200 OK
+Date: Thu, 03 Feb 2014 17:04:00 GMT
+Server: test-server/fake swsclose
+Connection: close
+Content-Type: text/html
+Content-Length: 6
+
+hello
+</data1>
+<data2>
+HTTP/1.1 200 OK
+Date: Thu, 03 Feb 2014 17:04:02 GMT
+Server: test-server/fake swsclose
+Connection: close
+Content-Type: text/html
+Content-Length: 6
+
+hello
+</data2>
+</reply>
+
+<client>
+<server>
+http
+</server>
+<tool>
+lib1515
+</tool>
+<name>
+caching of manual libcurl DNS entries after DNS cache timeout
+</name>
+<command>
+/path/1515 %HOSTIP %HTTPPORT
+</command>
+</client>
+
+<verify>
+<errorcode>
+0
+</errorcode>
+</verify>
+
+</testcase>
diff --git a/tests/data/test1516 b/tests/data/test1516
new file mode 100644 (file)
index 0000000..bf2cd15
--- /dev/null
@@ -0,0 +1,58 @@
+<testcase>
+
+<info>
+<keywords>
+HTTP
+multi
+FAILURE
+resolve
+</keywords>
+</info>
+
+<reply>
+# Close the connection after the first request but don't tell the client to do
+# so! When starting the second request it'll detect a dead connection and must
+# not clean the DNS entries added manually.
+<data1>
+HTTP/1.1 200 OK
+Date: Thu, 03 Feb 2014 17:04:00 GMT
+Server: test-server/fake swsclose
+Content-Type: text/html
+Content-Length: 6
+
+hello
+</data1>
+<data2>
+HTTP/1.1 200 OK
+Date: Thu, 03 Feb 2014 17:04:02 GMT
+Server: test-server/fake swsclose
+Connection: close
+Content-Type: text/html
+Content-Length: 6
+
+hello
+</data2>
+</reply>
+
+<client>
+<server>
+http
+</server>
+<tool>
+lib1515
+</tool>
+<name>
+caching of manual libcurl DNS entries after dead connection
+</name>
+<command>
+/path/1516 %HOSTIP %HTTPPORT
+</command>
+</client>
+
+<verify>
+<errorcode>
+0
+</errorcode>
+</verify>
+
+</testcase>
diff --git a/tests/data/test1520 b/tests/data/test1520
new file mode 100644 (file)
index 0000000..5f9344d
--- /dev/null
@@ -0,0 +1,63 @@
+<testcase>
+# Based off test 901 after bug report #1456
+<info>
+<keywords>
+SMTP
+</keywords>
+</info>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+<tool>
+lib1520
+</tool>
+
+ <name>
+SMTP with CRLF-dot-CRLF in data
+ </name>
+<stdin>
+From: different\r
+To: another\r
+\r
+\r
+.\r
+.\r
+\r
+.\r
+\r
+body\r
+</stdin>
+ <command>
+smtp://%HOSTIP:%SMTPPORT/1520
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+EHLO 1520\r
+MAIL FROM:<sender@example.com>\r
+RCPT TO:<recipient@example.com>\r
+DATA\r
+QUIT\r
+</protocol>
+<upload>
+From: different\r
+To: another\r
+\r
+\r
+..\r
+..\r
+\r
+..\r
+\r
+body\r
+.\r
+</upload>
+</verify>
+</testcase>
diff --git a/tests/data/test1525 b/tests/data/test1525
new file mode 100644 (file)
index 0000000..0560d5c
--- /dev/null
@@ -0,0 +1,76 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+HTTP CONNECT
+HTTP proxy
+proxytunnel
+CURLOPT_PROXYHEADER
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<connect>
+HTTP/1.1 200 OK\r
+Content-Length: 17\r
+\r
+</connect>
+<data>
+HTTP/1.1 200 OK swsclose
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
+ETag: "21025-dc7-39462498"
+</data>
+<datacheck>
+HTTP/1.1 200 OK\r
+Content-Length: 17\r
+\r
+HTTP/1.1 200 OK swsclose
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
+ETag: "21025-dc7-39462498"
+</datacheck>
+
+</reply>
+# Client-side
+<client>
+<server>
+http
+http-proxy
+</server>
+<tool>
+lib1525
+</tool>
+ <name>
+CURLOPT_PROXYHEADER is ignored CURLHEADER_UNIFIED
+ </name>
+ <command>
+ http://the.old.moo.1525:%HTTPPORT/1525 %HOSTIP:%PROXYPORT
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<proxy>
+CONNECT the.old.moo.1525:%HTTPPORT HTTP/1.1\r
+Host: the.old.moo.1525:%HTTPPORT\r
+Proxy-Connection: Keep-Alive\r
+User-Agent: Http Agent\r
+\r
+</proxy>
+<protocol>
+PUT /1525 HTTP/1.1\r
+Host: the.old.moo.1525:%HTTPPORT\r
+Accept: */*\r
+User-Agent: Http Agent\r
+Content-Length: 13\r
+Expect: 100-continue\r
+\r
+Hello Cloud!
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test1526 b/tests/data/test1526
new file mode 100644 (file)
index 0000000..aa111c8
--- /dev/null
@@ -0,0 +1,76 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+HTTP CONNECT
+HTTP proxy
+proxytunnel
+CURLOPT_PROXYHEADER
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<connect>
+HTTP/1.1 200 OK\r
+Server: present\r
+\r
+</connect>
+<data>
+HTTP/1.1 200 OK swsclose\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT\r
+ETag: "21025-dc7-39462498"\r
+</data>
+<datacheck>
+HTTP/1.1 200 OK\r
+Server: present\r
+\r
+HTTP/1.1 200 OK swsclose\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT\r
+ETag: "21025-dc7-39462498"\r
+</datacheck>
+</reply>
+
+# Client-side
+<client>
+<server>
+http
+http-proxy
+</server>
+<tool>
+lib1526
+</tool>
+ <name>
+CURLOPT_PROXYHEADER: separate host/proxy headers
+ </name>
+ <command>
+ http://the.old.moo.1526:%HTTPPORT/1526 %HOSTIP:%PROXYPORT
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<proxy>
+CONNECT the.old.moo.1526:%HTTPPORT HTTP/1.1\r
+Host: the.old.moo.1526:%HTTPPORT\r
+Proxy-Connection: Keep-Alive\r
+User-Agent: Proxy Agent\r
+\r
+</proxy>
+<protocol>
+PUT /1526 HTTP/1.1\r
+Host: the.old.moo.1526:%HTTPPORT\r
+Accept: */*\r
+User-Agent: Http Agent\r
+Content-Length: 13\r
+Expect: 100-continue\r
+\r
+Hello Cloud!
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test1527 b/tests/data/test1527
new file mode 100644 (file)
index 0000000..ee4887a
--- /dev/null
@@ -0,0 +1,76 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+HTTP CONNECT
+HTTP proxy
+proxytunnel
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<connect>
+HTTP/1.1 200 OK\r
+We-are: good\r
+\r
+</connect>
+<data>
+HTTP/1.1 200 OK swsclose\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT\r
+ETag: "21025-dc7-39462498"\r
+</data>
+<datacheck>
+HTTP/1.1 200 OK\r
+We-are: good\r
+\r
+HTTP/1.1 200 OK swsclose\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT\r
+ETag: "21025-dc7-39462498"\r
+</datacheck>
+
+</reply>
+# Client-side
+<client>
+<server>
+http
+http-proxy
+</server>
+<tool>
+lib1527
+</tool>
+ <name>
+Check same headers are generated without CURLOPT_PROXYHEADER
+ </name>
+ <command>
+ http://the.old.moo.1527:%HTTPPORT/1527 %HOSTIP:%PROXYPORT
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<proxy>
+CONNECT the.old.moo.1527:%HTTPPORT HTTP/1.1\r
+Host: the.old.moo.1527:%HTTPPORT\r
+Proxy-Connection: Keep-Alive\r
+User-Agent: Http Agent\r
+Expect: 100-continue\r
+\r
+</proxy>
+<protocol>
+PUT /1527 HTTP/1.1\r
+Host: the.old.moo.1527:%HTTPPORT\r
+Accept: */*\r
+User-Agent: Http Agent\r
+Expect: 100-continue\r
+Content-Length: 13\r
+\r
+Hello Cloud!
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test1528 b/tests/data/test1528
new file mode 100644 (file)
index 0000000..876806a
--- /dev/null
@@ -0,0 +1,60 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+HTTP CONNECT
+HTTP proxy
+proxytunnel
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<connect>
+HTTP/1.1 200 OK\r
+We-are: good\r
+\r
+</connect>
+<data>
+HTTP/1.1 200 OK swsclose\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT\r
+ETag: "21025-dc7-39462498"\r
+Content-Length: 5\r
+
+stop
+</data>
+
+</reply>
+# Client-side
+<client>
+<server>
+http
+http-proxy
+</server>
+<tool>
+lib1528
+</tool>
+ <name>
+Separately specified proxy/server headers sent in a proxy GET
+ </name>
+ <command>
+ http://the.old.moo:%HTTPPORT/1528 %HOSTIP:%PROXYPORT
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<proxy>
+GET http://the.old.moo:%HTTPPORT/1528 HTTP/1.1\r
+Host: the.old.moo:%HTTPPORT\r
+Accept: */*\r
+Proxy-Connection: Keep-Alive\r
+User-Agent: Http Agent\r
+Proxy-User-Agent: Http Agent2\r
+\r
+</proxy>
+</verify>
+</testcase>
diff --git a/tests/data/test1529 b/tests/data/test1529
new file mode 100644 (file)
index 0000000..33df268
--- /dev/null
@@ -0,0 +1,43 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+HTTP proxy
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<connect>
+HTTP/1.1 200 OK\r
+We-are: good\r
+\r
+</connect>
+
+</reply>
+# Client-side
+<client>
+<server>
+http
+http-proxy
+</server>
+<tool>
+lib1529
+</tool>
+ <name>
+HTTP request-injection in URL sent over proxy
+ </name>
+ <command>
+ "http://the.old.moo:%HTTPPORT/1529" %HOSTIP:%PROXYPORT
+</command>
+</client>
+
+# it should be detected and an error should be reported
+<verify>
+# 3 == CURLE_URL_MALFORMAT
+<errorcode>
+3
+</errorcode>
+</verify>
+</testcase>
index 5a1db31..89560f8 100644 (file)
@@ -63,6 +63,7 @@ This IS the second real page!
 http
 </server>
 <features>
 http
 </server>
 <features>
+!SSPI
 crypto
 </features>
  <name>
 crypto
 </features>
  <name>
index 89e2bd5..aa7989e 100644 (file)
@@ -63,6 +63,7 @@ This IS the real page!
 http
 </server>
 <features>
 http
 </server>
 <features>
+!SSPI
 crypto
 </features>
  <name>
 crypto
 </features>
  <name>
index 70ac7fd..4e0870a 100644 (file)
@@ -3,6 +3,7 @@
 <keywords>
 HTTP
 HTTP PUT
 <keywords>
 HTTP
 HTTP PUT
+HTTP NTLM auth
 </keywords>
 </info>
 
 </keywords>
 </info>
 
@@ -75,6 +76,8 @@ Finally, this is the real page!
 <client>
 <features>
 NTLM
 <client>
 <features>
 NTLM
+!SSPI
+debug
 </features>
 <server>
 http
 </features>
 <server>
 http
@@ -119,10 +122,9 @@ Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 Content-Length: 0\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 Content-Length: 0\r
-Expect: 100-continue\r
 \r
 PUT /155 HTTP/1.1\r
 \r
 PUT /155 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoKBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.10.5 (i686-pc-linux-gnu) libcurl/7.10.5 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 User-Agent: curl/7.10.5 (i686-pc-linux-gnu) libcurl/7.10.5 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
index 1f8a2f8..e05ceef 100644 (file)
@@ -3,6 +3,7 @@
 <keywords>
 HTTP
 HTTP GET
 <keywords>
 HTTP
 HTTP GET
+HTTP NTLM auth
 </keywords>
 </info>
 
 </keywords>
 </info>
 
@@ -56,6 +57,8 @@ Finally, this is the real page!
 <client>
 <features>
 NTLM
 <client>
 <features>
 NTLM
+!SSPI
+debug
 </features>
 <server>
 http
 </features>
 <server>
 http
@@ -90,7 +93,7 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 \r
 GET /159 HTTP/1.0\r
 Accept: */*\r
 \r
 GET /159 HTTP/1.0\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoKBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
index 9b75f7c..828c2a5 100644 (file)
@@ -27,6 +27,7 @@ isn't because there's no Proxy-Authorization: NTLM header
 <client>
 <features>
 NTLM
 <client>
 <features>
 NTLM
+!SSPI
 </features>
 <server>
 http
 </features>
 <server>
 http
index 2ce968d..550803a 100644 (file)
@@ -43,6 +43,7 @@ Nice auth sir!
 http
 </server>
 <features>
 http
 </server>
 <features>
+!SSPI
 crypto
 </features>
  <name>
 crypto
 </features>
  <name>
index e72e931..e46b726 100644 (file)
@@ -57,6 +57,7 @@ Nice auth sir!
 http
 </server>
 <features>
 http
 </server>
 <features>
+!SSPI
 crypto
 </features>
  <name>
 crypto
 </features>
  <name>
index f7419e6..f236a89 100644 (file)
@@ -77,6 +77,8 @@ http
 </server>
 <features>
 NTLM
 </server>
 <features>
 NTLM
+!SSPI
+debug
 </features>
  <name>
 HTTP with proxy-requiring-NTLM to site-requiring-Digest
 </features>
  <name>
 HTTP with proxy-requiring-NTLM to site-requiring-Digest
@@ -88,7 +90,7 @@ CURL_GETHOSTNAME=curlhost
 LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
  </setenv>
  <command>
 LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
  </setenv>
  <command>
-http://data.from.server.requiring.digest.hohoho.com/169 --proxy http://%HOSTIP:%HTTPPORT --proxy-user foo:bar --proxy-ntlm --digest --user digest:alot
+http://data.from.server.requiring.digest.hohoho.com/169 --proxy http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-ntlm --digest --user digest:alot
 </command>
 <precheck>
 chkhostname curlhost
 </command>
 <precheck>
 chkhostname curlhost
@@ -109,7 +111,7 @@ Accept: */*
 Proxy-Connection: Keep-Alive\r
 \r
 GET http://data.from.server.requiring.digest.hohoho.com/169 HTTP/1.1\r
 Proxy-Connection: Keep-Alive\r
 \r
 GET http://data.from.server.requiring.digest.hohoho.com/169 HTTP/1.1\r
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAAAwADAHAAAAAIAAgAcwAAAAAAAAAAAAAABoKBAIP6B+XVQ6vQsx3DfDXUVhd9436GAxPu0IYcl2Z7LxHmNeOAWQ+vxUmhuCFJBUgXCWZvb2N1cmxob3N0\r
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.12.0-CVS (i686-pc-linux-gnu) libcurl/7.12.0-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS libidn/0.4.3\r
 Host: data.from.server.requiring.digest.hohoho.com\r
 Accept: */*\r
 User-Agent: curl/7.12.0-CVS (i686-pc-linux-gnu) libcurl/7.12.0-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS libidn/0.4.3\r
 Host: data.from.server.requiring.digest.hohoho.com\r
 Accept: */*\r
index a2c2217..f0e596b 100644 (file)
@@ -19,6 +19,7 @@ http
 </server>
 <features>
 NTLM
 </server>
 <features>
 NTLM
+!SSPI
 </features>
  <name>
 HTTP POST with --proxy-ntlm and no SSL with no response
 </features>
  <name>
 HTTP POST with --proxy-ntlm and no SSL with no response
index b3efae9..3d53418 100644 (file)
@@ -36,7 +36,7 @@ http://%HOSTIP:%HTTPPORT/we/want/172 -b log/jar172.txt -b "tool=curl; name=fool"
 
 .%HOSTIP       TRUE    /silly/ FALSE   0       ismatch this
 .%HOSTIP       TRUE    /       FALSE   0       partmatch       present
 
 .%HOSTIP       TRUE    /silly/ FALSE   0       ismatch this
 .%HOSTIP       TRUE    /       FALSE   0       partmatch       present
-%HOSTIP        FALSE   /we/want/       FALSE   1391252187      nodomain        value
+%HOSTIP        FALSE   /we/want/       FALSE   2139150993      nodomain        value
 </file>
 </client>
 
 </file>
 </client>
 
index 413c149..ffff82c 100644 (file)
@@ -3,6 +3,7 @@
 <keywords>
 HTTP
 HTTP POST
 <keywords>
 HTTP
 HTTP POST
+HTTP NTLM auth
 </keywords>
 </info>
 
 </keywords>
 </info>
 
@@ -47,6 +48,7 @@ content for you
 <client>
 <features>
 NTLM
 <client>
 <features>
 NTLM
+!SSPI
 </features>
 <server>
 http
 </features>
 <server>
 http
index 43e3ab3..e1d7639 100644 (file)
@@ -3,6 +3,7 @@
 <keywords>
 HTTP
 HTTP GET
 <keywords>
 HTTP
 HTTP GET
+globbing
 {} list
 </keywords>
 </info>
 {} list
 </keywords>
 </info>
diff --git a/tests/data/test1800 b/tests/data/test1800
new file mode 100644 (file)
index 0000000..b7d534e
--- /dev/null
@@ -0,0 +1,55 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+http2
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 Ignored!
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
+Content-Length: 6
+Connection: close
+Content-Type: text/html
+
+-foo-
+</data>
+</reply>
+
+# Client-side
+<client>
+<server>
+http
+</server>
+<features>
+http2
+</features>
+ <name>
+HTTP/2 upgrade refused
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/1800 --http2
+</command>
+
+</client>
+
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /1800 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+Connection: Upgrade, HTTP2-Settings\r
+Upgrade: %H2CVER\r
+HTTP2-Settings: AAMAAABkAAQAAP__\r
+\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test1801 b/tests/data/test1801
new file mode 100644 (file)
index 0000000..3e069f5
--- /dev/null
@@ -0,0 +1,66 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+http2
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<data>
+HTTP/1.1 101 Switching!
+
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
+Content-Length: 6
+Content-Type: text/html
+
+lies!
+</data>
+
+<datacheck>
+HTTP/1.1 101 Switching!
+
+</datacheck>
+
+# listen to the upgrade request!
+<servercmd>
+upgrade
+</servercmd>
+</reply>
+
+# Client-side
+<client>
+<server>
+http
+</server>
+<features>
+http2
+</features>
+ <name>
+HTTP/2 upgrade with lying server
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/1801 --http2
+</command>
+
+</client>
+
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /1801 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+Connection: Upgrade, HTTP2-Settings\r
+Upgrade: %H2CVER\r
+HTTP2-Settings: AAMAAABkAAQAAP__\r
+\r
+</protocol>
+</verify>
+</testcase>
index 857c609..04c59a8 100644 (file)
@@ -32,6 +32,9 @@ Handle 3 Completed with status 0
 <server>
 http-pipe
 </server>
 <server>
 http-pipe
 </server>
+<features>
+http
+</features>
 <tool>
 lib1900
 </tool>
 <tool>
 lib1900
 </tool>
@@ -49,6 +52,7 @@ http://%HOSTIP:%HTTPPIPEPORT/
 0 1k.txt
 0 1k.txt
 0 1k.txt
 0 1k.txt
 0 1k.txt
 0 1k.txt
+</file>
 </client>
 
 # Verify data after the test has been "shot"
 </client>
 
 # Verify data after the test has been "shot"
index bacf9cb..17c04d1 100644 (file)
@@ -4,6 +4,7 @@
 HTTP
 pipelining
 multi
 HTTP
 pipelining
 multi
+flaky
 </keywords>
 </info>
 
 </keywords>
 </info>
 
@@ -32,6 +33,9 @@ Handle 6 Completed with status 0
 <server>
 http-pipe
 </server>
 <server>
 http-pipe
 </server>
+<features>
+http
+</features>
 <tool>
 lib1900
 </tool>
 <tool>
 lib1900
 </tool>
@@ -50,6 +54,7 @@ blacklist_site 127.0.0.1:%HTTPPIPEPORT
 0 1k.txt
 0 1k.txt
 0 1k.txt
 0 1k.txt
 0 1k.txt
 0 1k.txt
+</file>
 </client>
 
 # Verify data after the test has been "shot"
 </client>
 
 # Verify data after the test has been "shot"
index 22f2621..555b486 100644 (file)
@@ -4,6 +4,7 @@
 HTTP
 pipelining
 multi
 HTTP
 pipelining
 multi
+flaky
 </keywords>
 </info>
 
 </keywords>
 </info>
 
@@ -32,6 +33,9 @@ Handle 3 Completed with status 0
 <server>
 http-pipe
 </server>
 <server>
 http-pipe
 </server>
+<features>
+http
+</features>
 <tool>
 lib1900
 </tool>
 <tool>
 lib1900
 </tool>
@@ -49,6 +53,7 @@ http://%HOSTIP:%HTTPPIPEPORT/
 0 1k.txt
 0 1k.txt
 0 1k.txt
 0 1k.txt
 0 1k.txt
 0 1k.txt
+</file>
 </client>
 
 # Verify data after the test has been "shot"
 </client>
 
 # Verify data after the test has been "shot"
index 01efa67..c725618 100644 (file)
@@ -4,6 +4,7 @@
 HTTP
 pipelining
 multi
 HTTP
 pipelining
 multi
+flaky
 </keywords>
 </info>
 
 </keywords>
 </info>
 
@@ -32,6 +33,9 @@ Handle 1 Completed with status 0
 <server>
 http-pipe
 </server>
 <server>
 http-pipe
 </server>
+<features>
+http
+</features>
 <tool>
 lib1900
 </tool>
 <tool>
 lib1900
 </tool>
@@ -49,6 +53,7 @@ http://%HOSTIP:%HTTPPIPEPORT/
 10 alphabet.txt
 10 alphabet.txt
 10 alphabet.txt
 10 alphabet.txt
 10 alphabet.txt
 10 alphabet.txt
+</file>
 </client>
 
 # Verify data after the test has been "shot"
 </client>
 
 # Verify data after the test has been "shot"
index 1010ee9..26f7f17 100644 (file)
@@ -25,6 +25,19 @@ Connection: close
 bad
 </data>
 
 bad
 </data>
 
+<datacheck>
+HTTP/1.1 416 Requested Range Not Satisfiable swsclose\r
+Date: Fri, 24 Oct 2003 21:33:12 GMT\r
+Server: Apache/1.3.19 (Unix) (Red-Hat/Linux) mod_ssl/2.8.1 OpenSSL/0.9.6 PHP/4.3.1\r
+Last-Modified: Fri, 24 Oct 2003 18:01:23 GMT\r
+ETag: "ab57a-507-3f9968f3"\r
+Accept-Ranges: bytes\r
+Content-Length: 4\r
+Content-Range: bytes */87\r
+Content-Type: image/gif\r
+Connection: close\r
+</datacheck>
+
 </reply>
 
 # Client-side
 </reply>
 
 # Client-side
@@ -52,6 +65,9 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 \r
 </protocol>
 Accept: */*\r
 \r
 </protocol>
-
+# CURLE_HTTP_RETURNED_ERROR
+<errorcode>
+22
+</errorcode>
 </verify>
 </testcase>
 </verify>
 </testcase>
index e8df66e..881ee03 100644 (file)
@@ -3,6 +3,7 @@
 <keywords>
 HTTP
 HTTP GET
 <keywords>
 HTTP
 HTTP GET
+globbing
 </keywords>
 </info>
 #
 </keywords>
 </info>
 #
index 60e85f3..0985b32 100644 (file)
@@ -35,7 +35,7 @@ file
 Metalink
 </features>
  <name>
 Metalink
 </features>
  <name>
-Metalink local XML file, attempt UNIX absolute path
+Metalink local XML file, attempt Unix absolute path
  </name>
 <command option="no-output,no-include">
 --metalink file://%PWD/log/test2013.metalink
  </name>
 <command option="no-output,no-include">
 --metalink file://%PWD/log/test2013.metalink
index 01dc8b3..d2dbdc7 100644 (file)
@@ -35,7 +35,7 @@ file
 Metalink
 </features>
  <name>
 Metalink
 </features>
  <name>
-Metalink local XML file, attempt UNIX path relative to current
+Metalink local XML file, attempt Unix path relative to current
  </name>
 <command option="no-output,no-include">
 --metalink file://%PWD/log/test2014.metalink
  </name>
 <command option="no-output,no-include">
 --metalink file://%PWD/log/test2014.metalink
index e4d09d5..a35f311 100644 (file)
@@ -35,7 +35,7 @@ file
 Metalink
 </features>
  <name>
 Metalink
 </features>
  <name>
-Metalink local XML file, attempt UNIX path relative to upper
+Metalink local XML file, attempt Unix path relative to upper
  </name>
 <command option="no-output,no-include">
 --metalink file://%PWD/log/test2015.metalink
  </name>
 <command option="no-output,no-include">
 --metalink file://%PWD/log/test2015.metalink
index fbd6cd5..572aa65 100644 (file)
@@ -35,7 +35,7 @@ file
 Metalink
 </features>
  <name>
 Metalink
 </features>
  <name>
-Metalink local XML file, attempt UNIX path traversal
+Metalink local XML file, attempt Unix path traversal
  </name>
 <command option="no-output,no-include">
 --metalink file://%PWD/log/test2016.metalink
  </name>
 <command option="no-output,no-include">
 --metalink file://%PWD/log/test2016.metalink
index 52df14e..15fd934 100644 (file)
@@ -35,7 +35,7 @@ file
 Metalink
 </features>
  <name>
 Metalink
 </features>
  <name>
-Metalink local XML file, attempt UNIX home path traversal
+Metalink local XML file, attempt Unix home path traversal
  </name>
 <command option="no-output,no-include">
 --metalink file://%PWD/log/test2017.metalink
  </name>
 <command option="no-output,no-include">
 --metalink file://%PWD/log/test2017.metalink
index b76233e..6d0652d 100644 (file)
@@ -35,7 +35,7 @@ file
 Metalink
 </features>
  <name>
 Metalink
 </features>
  <name>
-Metalink local XML file, attempt UNIX questionable file name I
+Metalink local XML file, attempt Unix questionable file name I
  </name>
 <command option="no-output,no-include">
 --metalink file://%PWD/log/test2018.metalink
  </name>
 <command option="no-output,no-include">
 --metalink file://%PWD/log/test2018.metalink
index cd09804..b17b3f2 100644 (file)
@@ -35,7 +35,7 @@ file
 Metalink
 </features>
  <name>
 Metalink
 </features>
  <name>
-Metalink local XML file, attempt UNIX questionable file name II
+Metalink local XML file, attempt Unix questionable file name II
  </name>
 <command option="no-output,no-include">
 --metalink file://%PWD/log/test2019.metalink
  </name>
 <command option="no-output,no-include">
 --metalink file://%PWD/log/test2019.metalink
index f89600b..8bf85a4 100644 (file)
@@ -35,7 +35,7 @@ file
 Metalink
 </features>
  <name>
 Metalink
 </features>
  <name>
-Metalink local XML file, attempt UNIX questionable file name III
+Metalink local XML file, attempt Unix questionable file name III
  </name>
 <command option="no-output,no-include">
 --metalink file://%PWD/log/test2020.metalink
  </name>
 <command option="no-output,no-include">
 --metalink file://%PWD/log/test2020.metalink
index 133eb16..20a9224 100644 (file)
@@ -35,7 +35,7 @@ file
 Metalink
 </features>
  <name>
 Metalink
 </features>
  <name>
-Metalink local XML file, attempt UNIX questionable file name IV
+Metalink local XML file, attempt Unix questionable file name IV
  </name>
 <command option="no-output,no-include">
 --metalink file://%PWD/log/test2021.metalink
  </name>
 <command option="no-output,no-include">
 --metalink file://%PWD/log/test2021.metalink
index 8cb0df5..4f4efd1 100644 (file)
@@ -35,7 +35,7 @@ file
 Metalink
 </features>
  <name>
 Metalink
 </features>
  <name>
-Metalink local XML file, attempt UNIX questionable file name V
+Metalink local XML file, attempt Unix questionable file name V
  </name>
 <command option="no-output,no-include">
 --metalink file://%PWD/log/test2022.metalink
  </name>
 <command option="no-output,no-include">
 --metalink file://%PWD/log/test2022.metalink
index 1fbb204..9c155a2 100644 (file)
@@ -115,6 +115,10 @@ Finally, this is the real page!
 <server>
 http
 </server>
 <server>
 http
 </server>
+<features>
+!SSPI
+crypto
+</features>
 <tool>
 libauthretry
 </tool>
 <tool>
 libauthretry
 </tool>
index 4c8df18..03b6b14 100644 (file)
@@ -195,6 +195,7 @@ Finally, this is the real page!
 <client>
 <features>
 NTLM
 <client>
 <features>
 NTLM
+!SSPI
 </features>
 <server>
 http
 </features>
 <server>
 http
index c940b6f..b1d2341 100644 (file)
@@ -151,6 +151,10 @@ Finally, this is the real page!
 <server>
 http
 </server>
 <server>
 http
 </server>
+<features>
+!SSPI
+crypto
+</features>
 <tool>
 libauthretry
 </tool>
 <tool>
 libauthretry
 </tool>
index c84e24b..e9a62d6 100644 (file)
@@ -174,6 +174,10 @@ Finally, this is the real page!
 <server>
 http
 </server>
 <server>
 http
 </server>
+<features>
+!SSPI
+crypto
+</features>
 <tool>
 libauthretry
 </tool>
 <tool>
 libauthretry
 </tool>
index 793ad3e..2a03836 100644 (file)
@@ -231,6 +231,7 @@ Finally, this is the real page!
 <client>
 <features>
 NTLM
 <client>
 <features>
 NTLM
+!SSPI
 </features>
 <server>
 http
 </features>
 <server>
 http
index 7b8a5e2..7c697e3 100644 (file)
@@ -168,6 +168,7 @@ Finally, this is the real page!
 <client>
 <features>
 NTLM
 <client>
 <features>
 NTLM
+!SSPI
 </features>
 <server>
 http
 </features>
 <server>
 http
index 8de81d0..a80c15e 100644 (file)
@@ -220,6 +220,7 @@ Finally, this is the real page!
 <client>
 <features>
 NTLM
 <client>
 <features>
 NTLM
+!SSPI
 </features>
 <server>
 http
 </features>
 <server>
 http
index 19f7533..0df841b 100644 (file)
@@ -234,6 +234,7 @@ Finally, this is the real page!
 <client>
 <features>
 NTLM
 <client>
 <features>
 NTLM
+!SSPI
 </features>
 <server>
 http
 </features>
 <server>
 http
index 02aca81..23f44e6 100644 (file)
@@ -12,75 +12,75 @@ HTTP NTLM auth
 
 <!-- Basic auth -->
 <data100>
 
 <!-- Basic auth -->
 <data100>
-HTTP/1.1 401 Need Basic or NTLM auth
-Server: Microsoft-IIS/5.0
-Content-Type: text/html; charset=iso-8859-1
-Content-Length: 29
-WWW-Authenticate: NTLM
-WWW-Authenticate: Basic realm="testrealm"
-
+HTTP/1.1 401 Need Basic or NTLM auth\r
+Server: Microsoft-IIS/5.0\r
+Content-Type: text/html; charset=iso-8859-1\r
+Content-Length: 29\r
+WWW-Authenticate: NTLM\r
+WWW-Authenticate: Basic realm="testrealm"\r
+\r
 This is a bad password page!
 </data100>
 
 <!-- NTML auth -->
 <data200>
 This is a bad password page!
 </data100>
 
 <!-- NTML auth -->
 <data200>
-HTTP/1.1 401 Need Basic or NTLM auth (2)
-Server: Microsoft-IIS/5.0
-Content-Type: text/html; charset=iso-8859-1
-Content-Length: 27
-WWW-Authenticate: NTLM
-WWW-Authenticate: Basic realm="testrealm"
-
+HTTP/1.1 401 Need Basic or NTLM auth (2)\r
+Server: Microsoft-IIS/5.0\r
+Content-Type: text/html; charset=iso-8859-1\r
+Content-Length: 27\r
+WWW-Authenticate: NTLM\r
+WWW-Authenticate: Basic realm="testrealm"\r
+\r
 This is not the real page!
 </data200>
 
 <data1201>
 This is not the real page!
 </data200>
 
 <data1201>
-HTTP/1.1 401 NTLM intermediate (2)
-Server: Microsoft-IIS/5.0
-Content-Type: text/html; charset=iso-8859-1
-Content-Length: 33
-WWW-Authenticate: NTLM TlRMTVNTUAACAAAACAAIADAAAAAGggEAq6U1NAWaJCIAAAAAAAAAAAAAAAA4AAAATlRMTUF1dGg=
-
+HTTP/1.1 401 NTLM intermediate (2)\r
+Server: Microsoft-IIS/5.0\r
+Content-Type: text/html; charset=iso-8859-1\r
+Content-Length: 33\r
+WWW-Authenticate: NTLM TlRMTVNTUAACAAAACAAIADAAAAAGggEAq6U1NAWaJCIAAAAAAAAAAAAAAAA4AAAATlRMTUF1dGg=\r
+\r
 This is still not the real page!
 </data1201>
 
 <data1202>
 This is still not the real page!
 </data1201>
 
 <data1202>
-HTTP/1.1 200 Things are fine in server land
-Server: Microsoft-IIS/5.0
-Content-Type: text/html; charset=iso-8859-1
-Content-Length: 32
-
+HTTP/1.1 200 Things are fine in server land\r
+Server: Microsoft-IIS/5.0\r
+Content-Type: text/html; charset=iso-8859-1\r
+Content-Length: 32\r
+\r
 Finally, this is the real page!
 </data1202>
 
 <datacheck>
 Finally, this is the real page!
 </data1202>
 
 <datacheck>
-HTTP/1.1 401 Need Basic or NTLM auth
-Server: Microsoft-IIS/5.0
-Content-Type: text/html; charset=iso-8859-1
-Content-Length: 29
-WWW-Authenticate: NTLM
-WWW-Authenticate: Basic realm="testrealm"
-
+HTTP/1.1 401 Need Basic or NTLM auth\r
+Server: Microsoft-IIS/5.0\r
+Content-Type: text/html; charset=iso-8859-1\r
+Content-Length: 29\r
+WWW-Authenticate: NTLM\r
+WWW-Authenticate: Basic realm="testrealm"\r
+\r
 This is a bad password page!
 This is a bad password page!
-HTTP/1.1 401 Need Basic or NTLM auth
-Server: Microsoft-IIS/5.0
-Content-Type: text/html; charset=iso-8859-1
-Content-Length: 29
-WWW-Authenticate: NTLM
-WWW-Authenticate: Basic realm="testrealm"
-
+HTTP/1.1 401 Need Basic or NTLM auth\r
+Server: Microsoft-IIS/5.0\r
+Content-Type: text/html; charset=iso-8859-1\r
+Content-Length: 29\r
+WWW-Authenticate: NTLM\r
+WWW-Authenticate: Basic realm="testrealm"\r
+\r
 This is a bad password page!
 This is a bad password page!
-HTTP/1.1 401 NTLM intermediate (2)
-Server: Microsoft-IIS/5.0
-Content-Type: text/html; charset=iso-8859-1
-Content-Length: 33
-WWW-Authenticate: NTLM TlRMTVNTUAACAAAACAAIADAAAAAGggEAq6U1NAWaJCIAAAAAAAAAAAAAAAA4AAAATlRMTUF1dGg=
-
-HTTP/1.1 200 Things are fine in server land
-Server: Microsoft-IIS/5.0
-Content-Type: text/html; charset=iso-8859-1
-Content-Length: 32
-
+HTTP/1.1 401 NTLM intermediate (2)\r
+Server: Microsoft-IIS/5.0\r
+Content-Type: text/html; charset=iso-8859-1\r
+Content-Length: 33\r
+WWW-Authenticate: NTLM TlRMTVNTUAACAAAACAAIADAAAAAGggEAq6U1NAWaJCIAAAAAAAAAAAAAAAA4AAAATlRMTUF1dGg=\r
+\r
+HTTP/1.1 200 Things are fine in server land\r
+Server: Microsoft-IIS/5.0\r
+Content-Type: text/html; charset=iso-8859-1\r
+Content-Length: 32\r
+\r
 Finally, this is the real page!
 </datacheck>
 
 Finally, this is the real page!
 </datacheck>
 
@@ -90,6 +90,7 @@ Finally, this is the real page!
 <client>
 <features>
 NTLM
 <client>
 <features>
 NTLM
+!SSPI
 </features>
 <server>
 http
 </features>
 <server>
 http
@@ -123,22 +124,22 @@ chkhostname curlhost
 <protocol>
 GET /20320100 HTTP/1.1\r
 Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
 <protocol>
 GET /20320100 HTTP/1.1\r
 Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
-Host: 127.0.0.1:8990\r
+Host: 127.0.0.1:%HTTPPORT\r
 Accept: */*\r
 \r
 GET /20320100 HTTP/1.1\r
 Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
 Accept: */*\r
 \r
 GET /20320100 HTTP/1.1\r
 Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
-Host: 127.0.0.1:8990\r
+Host: 127.0.0.1:%HTTPPORT\r
 Accept: */*\r
 \r
 GET /20320200 HTTP/1.1\r
 Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Accept: */*\r
 \r
 GET /20320200 HTTP/1.1\r
 Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
-Host: 127.0.0.1:8990\r
+Host: 127.0.0.1:%HTTPPORT\r
 Accept: */*\r
 \r
 GET /20320200 HTTP/1.1\r
 Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=\r
 Accept: */*\r
 \r
 GET /20320200 HTTP/1.1\r
 Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=\r
-Host: 127.0.0.1:8990\r
+Host: 127.0.0.1:%HTTPPORT\r
 Accept: */*\r
 \r
 </protocol>
 Accept: */*\r
 \r
 </protocol>
index d3e2fbd..aacbe5e 100644 (file)
@@ -13,75 +13,75 @@ pipelining
 
 <!-- Basic auth -->
 <data100>
 
 <!-- Basic auth -->
 <data100>
-HTTP/1.1 401 Need Basic or NTLM auth
-Server: Microsoft-IIS/5.0
-Content-Type: text/html; charset=iso-8859-1
-Content-Length: 29
-WWW-Authenticate: NTLM
-WWW-Authenticate: Basic realm="testrealm"
-
+HTTP/1.1 401 Need Basic or NTLM auth\r
+Server: Microsoft-IIS/5.0\r
+Content-Type: text/html; charset=iso-8859-1\r
+Content-Length: 29\r
+WWW-Authenticate: NTLM\r
+WWW-Authenticate: Basic realm="testrealm"\r
+\r
 This is a bad password page!
 </data100>
 
 <!-- NTML auth -->
 <data200>
 This is a bad password page!
 </data100>
 
 <!-- NTML auth -->
 <data200>
-HTTP/1.1 401 Need Basic or NTLM auth (2)
-Server: Microsoft-IIS/5.0
-Content-Type: text/html; charset=iso-8859-1
-Content-Length: 27
-WWW-Authenticate: NTLM
-WWW-Authenticate: Basic realm="testrealm"
-
+HTTP/1.1 401 Need Basic or NTLM auth (2)\r
+Server: Microsoft-IIS/5.0\r
+Content-Type: text/html; charset=iso-8859-1\r
+Content-Length: 27\r
+WWW-Authenticate: NTLM\r
+WWW-Authenticate: Basic realm="testrealm"\r
+\r
 This is not the real page!
 </data200>
 
 <data1201>
 This is not the real page!
 </data200>
 
 <data1201>
-HTTP/1.1 401 NTLM intermediate (2)
-Server: Microsoft-IIS/5.0
-Content-Type: text/html; charset=iso-8859-1
-Content-Length: 33
-WWW-Authenticate: NTLM TlRMTVNTUAACAAAACAAIADAAAAAGggEAq6U1NAWaJCIAAAAAAAAAAAAAAAA4AAAATlRMTUF1dGg=
-
+HTTP/1.1 401 NTLM intermediate (2)\r
+Server: Microsoft-IIS/5.0\r
+Content-Type: text/html; charset=iso-8859-1\r
+Content-Length: 33\r
+WWW-Authenticate: NTLM TlRMTVNTUAACAAAACAAIADAAAAAGggEAq6U1NAWaJCIAAAAAAAAAAAAAAAA4AAAATlRMTUF1dGg=\r
+\r
 This is still not the real page!
 </data1201>
 
 <data1202>
 This is still not the real page!
 </data1201>
 
 <data1202>
-HTTP/1.1 200 Things are fine in server land
-Server: Microsoft-IIS/5.0
-Content-Type: text/html; charset=iso-8859-1
-Content-Length: 32
-
+HTTP/1.1 200 Things are fine in server land\r
+Server: Microsoft-IIS/5.0\r
+Content-Type: text/html; charset=iso-8859-1\r
+Content-Length: 32\r
+\r
 Finally, this is the real page!
 </data1202>
 
 <datacheck>
 Finally, this is the real page!
 </data1202>
 
 <datacheck>
-HTTP/1.1 401 Need Basic or NTLM auth
-Server: Microsoft-IIS/5.0
-Content-Type: text/html; charset=iso-8859-1
-Content-Length: 29
-WWW-Authenticate: NTLM
-WWW-Authenticate: Basic realm="testrealm"
-
+HTTP/1.1 401 Need Basic or NTLM auth\r
+Server: Microsoft-IIS/5.0\r
+Content-Type: text/html; charset=iso-8859-1\r
+Content-Length: 29\r
+WWW-Authenticate: NTLM\r
+WWW-Authenticate: Basic realm="testrealm"\r
+\r
 This is a bad password page!
 This is a bad password page!
-HTTP/1.1 401 Need Basic or NTLM auth
-Server: Microsoft-IIS/5.0
-Content-Type: text/html; charset=iso-8859-1
-Content-Length: 29
-WWW-Authenticate: NTLM
-WWW-Authenticate: Basic realm="testrealm"
-
+HTTP/1.1 401 Need Basic or NTLM auth\r
+Server: Microsoft-IIS/5.0\r
+Content-Type: text/html; charset=iso-8859-1\r
+Content-Length: 29\r
+WWW-Authenticate: NTLM\r
+WWW-Authenticate: Basic realm="testrealm"\r
+\r
 This is a bad password page!
 This is a bad password page!
-HTTP/1.1 401 NTLM intermediate (2)
-Server: Microsoft-IIS/5.0
-Content-Type: text/html; charset=iso-8859-1
-Content-Length: 33
-WWW-Authenticate: NTLM TlRMTVNTUAACAAAACAAIADAAAAAGggEAq6U1NAWaJCIAAAAAAAAAAAAAAAA4AAAATlRMTUF1dGg=
-
-HTTP/1.1 200 Things are fine in server land
-Server: Microsoft-IIS/5.0
-Content-Type: text/html; charset=iso-8859-1
-Content-Length: 32
-
+HTTP/1.1 401 NTLM intermediate (2)\r
+Server: Microsoft-IIS/5.0\r
+Content-Type: text/html; charset=iso-8859-1\r
+Content-Length: 33\r
+WWW-Authenticate: NTLM TlRMTVNTUAACAAAACAAIADAAAAAGggEAq6U1NAWaJCIAAAAAAAAAAAAAAAA4AAAATlRMTUF1dGg=\r
+\r
+HTTP/1.1 200 Things are fine in server land\r
+Server: Microsoft-IIS/5.0\r
+Content-Type: text/html; charset=iso-8859-1\r
+Content-Length: 32\r
+\r
 Finally, this is the real page!
 </datacheck>
 
 Finally, this is the real page!
 </datacheck>
 
@@ -91,6 +91,7 @@ Finally, this is the real page!
 <client>
 <features>
 NTLM
 <client>
 <features>
 NTLM
+!SSPI
 </features>
 <server>
 http
 </features>
 <server>
 http
@@ -124,22 +125,22 @@ chkhostname curlhost
 <protocol>
 GET /20320100 HTTP/1.1\r
 Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
 <protocol>
 GET /20320100 HTTP/1.1\r
 Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
-Host: 127.0.0.1:8990\r
+Host: 127.0.0.1:%HTTPPORT\r
 Accept: */*\r
 \r
 GET /20320100 HTTP/1.1\r
 Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
 Accept: */*\r
 \r
 GET /20320100 HTTP/1.1\r
 Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=\r
-Host: 127.0.0.1:8990\r
+Host: 127.0.0.1:%HTTPPORT\r
 Accept: */*\r
 \r
 GET /20320200 HTTP/1.1\r
 Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
 Accept: */*\r
 \r
 GET /20320200 HTTP/1.1\r
 Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
-Host: 127.0.0.1:8990\r
+Host: 127.0.0.1:%HTTPPORT\r
 Accept: */*\r
 \r
 GET /20320200 HTTP/1.1\r
 Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=\r
 Accept: */*\r
 \r
 GET /20320200 HTTP/1.1\r
 Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoIBAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=\r
-Host: 127.0.0.1:8990\r
+Host: 127.0.0.1:%HTTPPORT\r
 Accept: */*\r
 \r
 </protocol>
 Accept: */*\r
 \r
 </protocol>
diff --git a/tests/data/test2034 b/tests/data/test2034
new file mode 100644 (file)
index 0000000..9bf0a81
--- /dev/null
@@ -0,0 +1,58 @@
+<testcase>
+<info>
+<keywords>
+HTTPS
+HTTP GET
+PEM certificate
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 7
+
+MooMoo
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<features>
+SSL
+SSLpinning
+</features>
+<server>
+https Server-localhost-sv.pem
+</server>
+ <name>
+simple HTTPS GET with DER public key pinning
+ </name>
+ <command>
+--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt --pinnedpubkey %SRCDIR/certs/Server-localhost-sv.pub.der https://localhost:%HTTPSPORT/2034
+</command>
+# Ensure that we're running on localhost because we're checking the host name
+<precheck>
+perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
+</precheck>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /2034 HTTP/1.1\r
+Host: localhost:%HTTPSPORT\r
+Accept: */*\r
+\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test2035 b/tests/data/test2035
new file mode 100644 (file)
index 0000000..7002a5b
--- /dev/null
@@ -0,0 +1,44 @@
+<testcase>
+<info>
+<keywords>
+HTTPS
+HTTP GET
+PEM certificate
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+<features>
+SSL
+SSLpinning
+</features>
+<server>
+https Server-localhost-sv.pem
+</server>
+ <name>
+HTTPS wrong DER pinnedpubkey but right CN
+ </name>
+ <command>
+--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt --pinnedpubkey %SRCDIR/certs/Server-localhost-sv.der https://localhost:%HTTPSPORT/2035
+</command>
+# Ensure that we're running on localhost because we're checking the host name
+<precheck>
+perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
+</precheck>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<errorcode>
+90
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test2036 b/tests/data/test2036
new file mode 100644 (file)
index 0000000..0ab8b66
--- /dev/null
@@ -0,0 +1,39 @@
+<testcase>
+<info>
+<keywords>
+FAILURE
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+none
+</server>
+<features>
+http
+</features>
+ <name>
+HTTP, -O with no slash at all in the URL
+ </name>
+ <command option="no-output">
+%HOSTIP:%HTTPPORT -O
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<errorcode>
+23
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test2037 b/tests/data/test2037
new file mode 100644 (file)
index 0000000..d630538
--- /dev/null
@@ -0,0 +1,58 @@
+<testcase>
+<info>
+<keywords>
+HTTPS
+HTTP GET
+PEM certificate
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 7
+
+MooMoo
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<features>
+SSL
+SSLpinning
+</features>
+<server>
+https Server-localhost-sv.pem
+</server>
+ <name>
+simple HTTPS GET with PEM public key pinning
+ </name>
+ <command>
+--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt --pinnedpubkey %SRCDIR/certs/Server-localhost-sv.pub.pem https://localhost:%HTTPSPORT/2037
+</command>
+# Ensure that we're running on localhost because we're checking the host name
+<precheck>
+perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
+</precheck>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /2037 HTTP/1.1\r
+Host: localhost:%HTTPSPORT\r
+Accept: */*\r
+\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test2038 b/tests/data/test2038
new file mode 100644 (file)
index 0000000..63d935a
--- /dev/null
@@ -0,0 +1,44 @@
+<testcase>
+<info>
+<keywords>
+HTTPS
+HTTP GET
+PEM certificate
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+<features>
+SSL
+SSLpinning
+</features>
+<server>
+https Server-localhost-sv.pem
+</server>
+ <name>
+HTTPS wrong PEM pinnedpubkey but right CN
+ </name>
+ <command>
+--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt --pinnedpubkey %SRCDIR/certs/Server-localhost-sv.pem https://localhost:%HTTPSPORT/2038
+</command>
+# Ensure that we're running on localhost because we're checking the host name
+<precheck>
+perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
+</precheck>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<errorcode>
+90
+</errorcode>
+</verify>
+</testcase>
index 902d0a6..5f0c885 100644 (file)
@@ -71,6 +71,7 @@ daniel
 http
 </server>
 <features>
 http
 </server>
 <features>
+!SSPI
 crypto
 </features>
  <name>
 crypto
 </features>
  <name>
index 85f9af6..e44385f 100644 (file)
@@ -3,6 +3,8 @@
 <keywords>
 HTTP
 HTTP GET
 <keywords>
 HTTP
 HTTP GET
+CURLE_PARTIAL_FILE
+FAILURE
 </keywords>
 </info>
 #
 </keywords>
 </info>
 #
index d8bd8bd..961eba1 100644 (file)
@@ -75,6 +75,8 @@ http
 </server>
 <features>
 NTLM
 </server>
 <features>
 NTLM
+!SSPI
+debug
 </features>
  <name>
 HTTP proxy CONNECT auth NTLM
 </features>
  <name>
 HTTP proxy CONNECT auth NTLM
@@ -86,7 +88,7 @@ CURL_GETHOSTNAME=curlhost
 LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
  </setenv>
  <command>
 LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
  </setenv>
  <command>
-http://test.remote.example.com.209:%HTTPPORT/path/2090002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user silly:person --proxy-ntlm --proxytunnel
+http://test.remote.example.com.209:%HTTPPORT/path/2090002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-ntlm --proxytunnel
 </command>
 <precheck>
 chkhostname curlhost
 </command>
 <precheck>
 chkhostname curlhost
@@ -106,7 +108,7 @@ Proxy-Connection: Keep-Alive
 \r
 CONNECT test.remote.example.com.209:%HTTPPORT HTTP/1.1\r
 Host: test.remote.example.com.209:%HTTPPORT\r
 \r
 CONNECT test.remote.example.com.209:%HTTPPORT HTTP/1.1\r
 Host: test.remote.example.com.209:%HTTPPORT\r
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAABQAFAHAAAAAIAAgAdQAAAAAAAAAAAAAABoKBAKAeQjzKtCQ7ubW8S6MN7B59436GAxPu0CVROwwNBsgxML49gcbAXLT/bU+H5wrS9XNpbGx5Y3VybGhvc3Q=\r
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 Proxy-Connection: Keep-Alive\r
 \r
 GET /path/2090002 HTTP/1.1\r
 Proxy-Connection: Keep-Alive\r
 \r
 GET /path/2090002 HTTP/1.1\r
index 8daed55..444525f 100644 (file)
@@ -2,6 +2,7 @@
 <info>
 <keywords>
 FTP
 <info>
 <keywords>
 FTP
+EPRT
 </keywords>
 </info>
 
 </keywords>
 </info>
 
index 5c14aa8..edbb6a6 100644 (file)
@@ -75,6 +75,8 @@ http
 </server>
 <features>
 NTLM
 </server>
 <features>
 NTLM
+!SSPI
+debug
 </features>
  <name>
 HTTP 1.0 proxy CONNECT auth NTLM and then POST
 </features>
  <name>
 HTTP 1.0 proxy CONNECT auth NTLM and then POST
@@ -86,7 +88,7 @@ CURL_GETHOSTNAME=curlhost
 LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
  </setenv>
  <command>
 LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
  </setenv>
  <command>
-http://test.remote.example.com.213:%HTTPPORT/path/2130002 --proxy1.0 http://%HOSTIP:%HTTPPORT --proxy-user silly:person --proxy-ntlm --proxytunnel -d "postit"
+http://test.remote.example.com.213:%HTTPPORT/path/2130002 --proxy1.0 http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-ntlm --proxytunnel -d "postit"
 </command>
 <precheck>
 chkhostname curlhost
 </command>
 <precheck>
 chkhostname curlhost
@@ -106,7 +108,7 @@ Proxy-Connection: Keep-Alive
 \r
 CONNECT test.remote.example.com.213:%HTTPPORT HTTP/1.0\r
 Host: test.remote.example.com.213:%HTTPPORT\r
 \r
 CONNECT test.remote.example.com.213:%HTTPPORT HTTP/1.0\r
 Host: test.remote.example.com.213:%HTTPPORT\r
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAABQAFAHAAAAAIAAgAdQAAAAAAAAAAAAAABoKBAKAeQjzKtCQ7ubW8S6MN7B59436GAxPu0CVROwwNBsgxML49gcbAXLT/bU+H5wrS9XNpbGx5Y3VybGhvc3Q=\r
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 Proxy-Connection: Keep-Alive\r
 \r
 POST /path/2130002 HTTP/1.1\r
 Proxy-Connection: Keep-Alive\r
 \r
 POST /path/2130002 HTTP/1.1\r
index 8770efb..987fd99 100644 (file)
@@ -9,7 +9,7 @@ FTP
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
-<datacheck>
+<datacheck mode="text">
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
index 2e8bdec..f45f862 100644 (file)
@@ -26,7 +26,7 @@ http
 get HTTP with URL > 10000 bytes
  </name>
  <command>
 get HTTP with URL > 10000 bytes
  </name>
  <command>
-%HOSTIP:%HTTPPORT/`perl -e "print \"a\" x 10000;"`/22
+%HOSTIP:%HTTPPORT/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/22
 </command>
 </client>
 
 </command>
 </client>
 
index 523fa02..5b6d98c 100644 (file)
@@ -4,7 +4,6 @@
 FTP
 post-quote
 pre-quote
 FTP
 post-quote
 pre-quote
-quote
 </keywords>
 </info>
 # Server-side
 </keywords>
 </info>
 # Server-side
index 2748100..89ccaef 100644 (file)
@@ -52,6 +52,8 @@ http
 </server>
 <features>
 NTLM
 </server>
 <features>
 NTLM
+!SSPI
+debug
 </features>
  <name>
 HTTP proxy-auth NTLM and then POST
 </features>
  <name>
 HTTP proxy-auth NTLM and then POST
@@ -63,7 +65,7 @@ CURL_GETHOSTNAME=curlhost
 LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
  </setenv>
  <command>
 LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
  </setenv>
  <command>
-http://%HOSTIP:%HTTPPORT/239 --proxy http://%HOSTIP:%HTTPPORT --proxy-user silly:person --proxy-ntlm -d "postit"
+http://%HOSTIP:%HTTPPORT/239 --proxy http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-ntlm -d "postit"
 </command>
 <precheck>
 chkhostname curlhost
 </command>
 <precheck>
 chkhostname curlhost
@@ -86,7 +88,7 @@ Content-Length: 0
 Content-Type: application/x-www-form-urlencoded\r
 \r
 POST http://%HOSTIP:%HTTPPORT/239 HTTP/1.1\r
 Content-Type: application/x-www-form-urlencoded\r
 \r
 POST http://%HOSTIP:%HTTPPORT/239 HTTP/1.1\r
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAABQAFAHAAAAAIAAgAdQAAAAAAAAAAAAAABoKBAKAeQjzKtCQ7ubW8S6MN7B59436GAxPu0CVROwwNBsgxML49gcbAXLT/bU+H5wrS9XNpbGx5Y3VybGhvc3Q=\r
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
index d53a437..0ac4222 100644 (file)
@@ -73,6 +73,8 @@ http
 </server>
 <features>
 NTLM
 </server>
 <features>
 NTLM
+!SSPI
+debug
 </features>
  <name>
 HTTP POST with --proxy-anyauth, picking NTLM
 </features>
  <name>
 HTTP POST with --proxy-anyauth, picking NTLM
@@ -84,7 +86,7 @@ CURL_GETHOSTNAME=curlhost
 LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
  </setenv>
  <command>
 LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
  </setenv>
  <command>
-http://%HOSTIP:%HTTPPORT/243 --proxy http://%HOSTIP:%HTTPPORT --proxy-user silly:person --proxy-anyauth -d "postit"
+http://%HOSTIP:%HTTPPORT/243 --proxy http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-anyauth -d "postit"
 </command>
 <precheck>
 chkhostname curlhost
 </command>
 <precheck>
 chkhostname curlhost
@@ -115,7 +117,7 @@ Content-Length: 0
 Content-Type: application/x-www-form-urlencoded\r
 \r
 POST http://%HOSTIP:%HTTPPORT/243 HTTP/1.1\r
 Content-Type: application/x-www-form-urlencoded\r
 \r
 POST http://%HOSTIP:%HTTPPORT/243 HTTP/1.1\r
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAABQAFAHAAAAAIAAgAdQAAAAAAAAAAAAAABoKBAKAeQjzKtCQ7ubW8S6MN7B59436GAxPu0CVROwwNBsgxML49gcbAXLT/bU+H5wrS9XNpbGx5Y3VybGhvc3Q=\r
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
index 8ad45d3..02a2772 100644 (file)
@@ -50,6 +50,7 @@ ok
 http
 </server>
 <features>
 http
 </server>
 <features>
+!SSPI
 crypto
 </features>
  <name>
 crypto
 </features>
  <name>
index b92c17a..cfa31db 100644 (file)
@@ -60,6 +60,7 @@ ok
 http
 </server>
 <features>
 http
 </server>
 <features>
+!SSPI
 crypto
 </features>
  <name>
 crypto
 </features>
  <name>
index aeed134..3d0a8f3 100644 (file)
@@ -10,7 +10,7 @@ FTP
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
-<datacheck>
+<datacheck mode="text">
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
index d50e1b3..cc8cbfa 100644 (file)
@@ -9,7 +9,7 @@ FTP
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
-<datacheck>
+<datacheck mode="text">
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
index 0d95dec..1173707 100644 (file)
@@ -56,6 +56,7 @@ ok
 http
 </server>
 <features>
 http
 </server>
 <features>
+!SSPI
 crypto
 </features>
  <name>
 crypto
 </features>
  <name>
index b9d8ef1..d4a8227 100644 (file)
@@ -52,6 +52,7 @@ ok
 http
 </server>
 <features>
 http
 </server>
 <features>
+!SSPI
 crypto
 </features>
  <name>
 crypto
 </features>
  <name>
index 07de455..1a162b8 100644 (file)
@@ -78,6 +78,8 @@ http
 </server>
 <features>
 NTLM
 </server>
 <features>
 NTLM
+!SSPI
+debug
 </features>
  <name>
 HTTP proxy CONNECT auth NTLM and then POST, response-body in the 407
 </features>
  <name>
 HTTP proxy CONNECT auth NTLM and then POST, response-body in the 407
@@ -89,7 +91,7 @@ CURL_GETHOSTNAME=curlhost
 LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
  </setenv>
  <command>
 LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
  </setenv>
  <command>
-http://test.remote.example.com.265:%HTTPPORT/path/2650002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user silly:person --proxy-ntlm --proxytunnel -d "postit"
+http://test.remote.example.com.265:%HTTPPORT/path/2650002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-ntlm --proxytunnel -d "postit"
 </command>
 <precheck>
 chkhostname curlhost
 </command>
 <precheck>
 chkhostname curlhost
@@ -109,7 +111,7 @@ Proxy-Connection: Keep-Alive
 \r
 CONNECT test.remote.example.com.265:%HTTPPORT HTTP/1.1\r
 Host: test.remote.example.com.265:%HTTPPORT\r
 \r
 CONNECT test.remote.example.com.265:%HTTPPORT HTTP/1.1\r
 Host: test.remote.example.com.265:%HTTPPORT\r
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAABQAFAHAAAAAIAAgAdQAAAAAAAAAAAAAABoKBAKAeQjzKtCQ7ubW8S6MN7B59436GAxPu0CVROwwNBsgxML49gcbAXLT/bU+H5wrS9XNpbGx5Y3VybGhvc3Q=\r
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 Proxy-Connection: Keep-Alive\r
 \r
 POST /path/2650002 HTTP/1.1\r
 Proxy-Connection: Keep-Alive\r
 \r
 POST /path/2650002 HTTP/1.1\r
index 479031c..ea4a9cf 100644 (file)
@@ -56,6 +56,8 @@ Finally, this is the real page!
 <client>
 <features>
 NTLM
 <client>
 <features>
 NTLM
+!SSPI
+debug
 </features>
 <server>
 http
 </features>
 <server>
 http
@@ -94,7 +96,7 @@ Content-Length: 0
 Content-Type: application/x-www-form-urlencoded\r
 \r
 POST /267 HTTP/1.1\r
 Content-Type: application/x-www-form-urlencoded\r
 \r
 POST /267 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoKBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
index dc52a10..c8010d9 100644 (file)
@@ -52,6 +52,7 @@ This IS the real page!
 http
 </server>
 <features>
 http
 </server>
 <features>
+!SSPI
 crypto
 </features>
  <name>
 crypto
 </features>
  <name>
index c169993..de7534e 100644 (file)
@@ -12,7 +12,7 @@ LIST
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
-<datacheck>
+<datacheck mode="text">
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
index 4d7f2b8..a9752a2 100644 (file)
@@ -13,7 +13,7 @@ ACCT
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
-<datacheck>
+<datacheck mode="text">
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
index 38af83b..dfcac04 100644 (file)
@@ -51,7 +51,8 @@ Set-Cookie: novalue; domain=reallysilly
 Set-Cookie: test=yes; domain=foo.com; expires=Sat Feb 2 11:56:27 GMT 2030\r
 Set-Cookie: test2=yes; domain=se; expires=Sat Feb 2 11:56:27 GMT 2030\r
 Set-Cookie: magic=yessir; path=/silly/; HttpOnly\r
 Set-Cookie: test=yes; domain=foo.com; expires=Sat Feb 2 11:56:27 GMT 2030\r
 Set-Cookie: test2=yes; domain=se; expires=Sat Feb 2 11:56:27 GMT 2030\r
 Set-Cookie: magic=yessir; path=/silly/; HttpOnly\r
-Set-Cookie: blexp=yesyes; domain=.0.0.1; domain=.0.0.1; expiry=totally bad;\r
+Set-Cookie: blexp=yesyes; domain=127.0.0.1; domain=127.0.0.1; expiry=totally bad;\r
+Set-Cookie: partialip=nono; domain=.0.0.1;\r
 \r
 boo
 </data>
 \r
 boo
 </data>
@@ -95,34 +96,34 @@ Accept: */*
 # http://curl.haxx.se/docs/http-cookies.html
 # This file was generated by libcurl! Edit at your own risk.
 
 # http://curl.haxx.se/docs/http-cookies.html
 # This file was generated by libcurl! Edit at your own risk.
 
-.127.0.0.1     TRUE    /silly/ FALSE   0       ismatch this
-.127.0.0.1     TRUE    /overwrite      FALSE   0       overwrite       this2
-.127.0.0.1     TRUE    /secure1/       TRUE    0       sec1value       secure1
-.127.0.0.1     TRUE    /secure2/       TRUE    0       sec2value       secure2
-.127.0.0.1     TRUE    /secure3/       TRUE    0       sec3value       secure3
-.127.0.0.1     TRUE    /secure4/       TRUE    0       sec4value       secure4
-.127.0.0.1     TRUE    /secure5/       TRUE    0       sec5value       secure5
-.127.0.0.1     TRUE    /secure6/       TRUE    0       sec6value       secure6
-.127.0.0.1     TRUE    /secure7/       TRUE    0       sec7value       secure7
-.127.0.0.1     TRUE    /secure8/       TRUE    0       sec8value       secure8
-.127.0.0.1     TRUE    /secure9/       TRUE    0       secure  very1
-#HttpOnly_.127.0.0.1   TRUE    /p1/    FALSE   0       httpo1  value1
-#HttpOnly_.127.0.0.1   TRUE    /p2/    FALSE   0       httpo2  value2
-#HttpOnly_.127.0.0.1   TRUE    /p3/    FALSE   0       httpo3  value3
-#HttpOnly_.127.0.0.1   TRUE    /p4/    FALSE   0       httpo4  value4
-#HttpOnly_.127.0.0.1   TRUE    /p4/    FALSE   0       httponly        myvalue1
-#HttpOnly_.127.0.0.1   TRUE    /p4/    TRUE    0       httpandsec      myvalue2
-#HttpOnly_.127.0.0.1   TRUE    /p4/    TRUE    0       httpandsec2     myvalue3
-#HttpOnly_.127.0.0.1   TRUE    /p4/    TRUE    0       httpandsec3     myvalue4
-#HttpOnly_.127.0.0.1   TRUE    /p4/    TRUE    0       httpandsec4     myvalue5
-#HttpOnly_.127.0.0.1   TRUE    /p4/    TRUE    0       httpandsec5     myvalue6
-#HttpOnly_.127.0.0.1   TRUE    /p4/    TRUE    0       httpandsec6     myvalue7
-#HttpOnly_.127.0.0.1   TRUE    /p4/    TRUE    0       httpandsec7     myvalue8
-#HttpOnly_.127.0.0.1   TRUE    /p4/    TRUE    0       httpandsec8     myvalue9
-.127.0.0.1     TRUE    /       FALSE   0       partmatch       present
+127.0.0.1      FALSE   /silly/ FALSE   0       ismatch this
+127.0.0.1      FALSE   /overwrite      FALSE   0       overwrite       this2
+127.0.0.1      FALSE   /secure1/       TRUE    0       sec1value       secure1
+127.0.0.1      FALSE   /secure2/       TRUE    0       sec2value       secure2
+127.0.0.1      FALSE   /secure3/       TRUE    0       sec3value       secure3
+127.0.0.1      FALSE   /secure4/       TRUE    0       sec4value       secure4
+127.0.0.1      FALSE   /secure5/       TRUE    0       sec5value       secure5
+127.0.0.1      FALSE   /secure6/       TRUE    0       sec6value       secure6
+127.0.0.1      FALSE   /secure7/       TRUE    0       sec7value       secure7
+127.0.0.1      FALSE   /secure8/       TRUE    0       sec8value       secure8
+127.0.0.1      FALSE   /secure9/       TRUE    0       secure  very1
+#HttpOnly_127.0.0.1    FALSE   /p1/    FALSE   0       httpo1  value1
+#HttpOnly_127.0.0.1    FALSE   /p2/    FALSE   0       httpo2  value2
+#HttpOnly_127.0.0.1    FALSE   /p3/    FALSE   0       httpo3  value3
+#HttpOnly_127.0.0.1    FALSE   /p4/    FALSE   0       httpo4  value4
+#HttpOnly_127.0.0.1    FALSE   /p4/    FALSE   0       httponly        myvalue1
+#HttpOnly_127.0.0.1    FALSE   /p4/    TRUE    0       httpandsec      myvalue2
+#HttpOnly_127.0.0.1    FALSE   /p4/    TRUE    0       httpandsec2     myvalue3
+#HttpOnly_127.0.0.1    FALSE   /p4/    TRUE    0       httpandsec3     myvalue4
+#HttpOnly_127.0.0.1    FALSE   /p4/    TRUE    0       httpandsec4     myvalue5
+#HttpOnly_127.0.0.1    FALSE   /p4/    TRUE    0       httpandsec5     myvalue6
+#HttpOnly_127.0.0.1    FALSE   /p4/    TRUE    0       httpandsec6     myvalue7
+#HttpOnly_127.0.0.1    FALSE   /p4/    TRUE    0       httpandsec7     myvalue8
+#HttpOnly_127.0.0.1    FALSE   /p4/    TRUE    0       httpandsec8     myvalue9
+127.0.0.1      FALSE   /       FALSE   0       partmatch       present
 127.0.0.1      FALSE   /we/want/       FALSE   2054030187      nodomain        value
 #HttpOnly_127.0.0.1    FALSE   /silly/ FALSE   0       magic   yessir
 127.0.0.1      FALSE   /we/want/       FALSE   2054030187      nodomain        value
 #HttpOnly_127.0.0.1    FALSE   /silly/ FALSE   0       magic   yessir
-.0.0.1 TRUE    /we/want/       FALSE   0       blexp   yesyes
+127.0.0.1      FALSE   /we/want/       FALSE   0       blexp   yesyes
 </file>
 </verify>
 </testcase>
 </file>
 </verify>
 </testcase>
index 899bec5..8f6df05 100644 (file)
@@ -15,7 +15,7 @@ Content-type: text/html
 \r
 
 <HTML><BODY>
 \r
 
 <HTML><BODY>
-<CENTER><H1>This is <a href="http://www.gnu.org/software/gnutls">GNUTLS</a></H1></CENTER>
+<CENTER><H1>This is <a href="http://www.gnu.org/software/gnutls">GnuTLS</a></H1></CENTER>
 
 
 <p>Session ID: <i>003030000100000001000000000000000030330001000000B062410001000000</i></p>
 
 
 <p>Session ID: <i>003030000100000001000000000000000030330001000000B062410001000000</i></p>
@@ -25,9 +25,9 @@ Content-type: text/html
 <TABLE border=1><TR><TD>Protocol version:</TD><TD>TLS1.2</TD></TR>
 <TR><TD>Key Exchange:</TD><TD>SRP</TD></TR>
 <TR><TD>Compression</TD><TD>NULL</TD></TR>
 <TABLE border=1><TR><TD>Protocol version:</TD><TD>TLS1.2</TD></TR>
 <TR><TD>Key Exchange:</TD><TD>SRP</TD></TR>
 <TR><TD>Compression</TD><TD>NULL</TD></TR>
-<TR><TD>Cipher</TD><TD>AES-128-CBC</TD></TR>
+<TR><TD>Cipher</TD><TD>AES-NNN-CBC</TD></TR>
 <TR><TD>MAC</TD><TD>SHA1</TD></TR>
 <TR><TD>MAC</TD><TD>SHA1</TD></TR>
-<TR><TD>Ciphersuite</TD><TD>SRP_SHA_AES_128_CBC_SHA1</TD></TR></p></TABLE>
+<TR><TD>Ciphersuite</TD><TD>SRP_SHA_AES_NNN_CBC_SHA1</TD></TR></p></TABLE>
 <hr><P>Your HTTP header was:<PRE>User-Agent: curl/7.21.4-DEV (x86_64-apple-darwin10.5.0) libcurl/7.21.4-DEV GnuTLS/2.10.4 zlib/1.2.5 libidn/1.19\r
 Host: localhost:9011\r
 Accept: */*\r
 <hr><P>Your HTTP header was:<PRE>User-Agent: curl/7.21.4-DEV (x86_64-apple-darwin10.5.0) libcurl/7.21.4-DEV GnuTLS/2.10.4 zlib/1.2.5 libidn/1.19\r
 Host: localhost:9011\r
 Accept: */*\r
@@ -50,7 +50,7 @@ TLS-SRP
 simple TLS-SRP HTTPS GET, check user in response
  </name>
 <command>
 simple TLS-SRP HTTPS GET, check user in response
  </name>
 <command>
---insecure --tlsauthtype SRP --tlsuser jsmith --tlspassword abc https://%HOSTIP:%HTTPTLSSRPPORT
+--insecure --tlsauthtype SRP --tlsuser jsmith --tlspassword abc https://%HOSTIP:%HTTPTLSPORT
 </command>
 </client>
 
 </command>
 </client>
 
@@ -64,21 +64,21 @@ Content-type: text/html
 \r
 
 <HTML><BODY>
 \r
 
 <HTML><BODY>
-<CENTER><H1>This is <a href="http://www.gnu.org/software/gnutls">GNUTLS</a></H1></CENTER>
+<CENTER><H1>This is <a href="http://www.gnu.org/software/gnutls">GnuTLS</a></H1></CENTER>
 
 
 
 <h5>If your browser supports session resuming, then you should see the same session ID, when you press the <b>reload</b> button.</h5>
 <p>Connected as user 'jsmith'.</p>
 <P>
 
 
 
 <h5>If your browser supports session resuming, then you should see the same session ID, when you press the <b>reload</b> button.</h5>
 <p>Connected as user 'jsmith'.</p>
 <P>
-<TABLE border=1><TR><TD>
+<TABLE border=1><TR><TD></TD></TR>
 <TR><TD>Key Exchange:</TD><TD>SRP</TD></TR>
 <TR><TD>Compression</TD><TD>NULL</TD></TR>
 <TR><TD>Key Exchange:</TD><TD>SRP</TD></TR>
 <TR><TD>Compression</TD><TD>NULL</TD></TR>
-<TR><TD>Cipher</TD><TD>AES-128-CBC</TD></TR>
+<TR><TD>Cipher</TD><TD>AES-NNN-CBC</TD></TR>
 <TR><TD>MAC</TD><TD>SHA1</TD></TR>
 <TR><TD>MAC</TD><TD>SHA1</TD></TR>
-<TR><TD>Ciphersuite</TD><TD>SRP_SHA_AES_128_CBC_SHA1</TD></TR></p></TABLE>
-
-Host: %HOSTIP:%HTTPTLSSRPPORT\r
+<TR><TD>Ciphersuite</TD><TD>SRP_SHA_AES_NNN_CBC_SHA1</TD></TR></p></TABLE>
+<PRE>
+Host: %HOSTIP:%HTTPTLSPORT\r
 Accept: */*\r
 \r
 </PRE></P>
 Accept: */*\r
 \r
 </PRE></P>
@@ -87,8 +87,10 @@ Accept: */*
 </file>
 <stripfile>
 s/^<p>Session ID:.*//
 </file>
 <stripfile>
 s/^<p>Session ID:.*//
-s/^<hr><P>Your HTTP header was:.*//
-s/Protocol version:.*//
+s/^<hr><P>Your HTTP header was:<PRE>.*/<PRE>/
+s/Protocol version:.*[0-9]//
+s/GNUTLS/GnuTLS/
+s/(AES[-_])\d\d\d([-_]CBC)/$1NNN$2/
 </stripfile>
 </verify>
 
 </stripfile>
 </verify>
 
index ccdfb86..c6b208b 100644 (file)
@@ -19,7 +19,7 @@ TLS-SRP
 TLS-SRP with bad username and password
  </name>
 <command>
 TLS-SRP with bad username and password
  </name>
 <command>
---insecure --tlsauthtype SRP --tlsuser baduser --tlspassword badpass https://%HOSTIP:%HTTPTLSSRPPORT
+--insecure --tlsauthtype SRP --tlsuser baduser --tlspassword badpass https://%HOSTIP:%HTTPTLSPORT
 </command>
 </client>
 
 </command>
 </client>
 
index f35345e..f7f8279 100644 (file)
@@ -19,7 +19,7 @@ TLS-SRP
 TLS-SRP with bad password
  </name>
 <command>
 TLS-SRP with bad password
  </name>
 <command>
---insecure --tlsauthtype SRP --tlsuser jsmith --tlspassword badpass https://%HOSTIP:%HTTPTLSSRPPORT
+--insecure --tlsauthtype SRP --tlsuser jsmith --tlspassword badpass https://%HOSTIP:%HTTPTLSPORT
 </command>
 </client>
 
 </command>
 </client>
 
index bc1c48f..b58d940 100644 (file)
@@ -19,7 +19,7 @@ TLS-SRP
 TLS-SRP with server cert checking
  </name>
 <command> # no --insecure
 TLS-SRP with server cert checking
  </name>
 <command> # no --insecure
---tlsauthtype SRP --tlsuser jsmith --tlspassword abc https://%HOSTIP:%HTTPTLSSRPPORT/want/323
+--tlsauthtype SRP --tlsuser jsmith --tlspassword abc https://%HOSTIP:%HTTPTLSPORT/want/323
 </command>
 </client>
 
 </command>
 </client>
 
diff --git a/tests/data/test325 b/tests/data/test325
new file mode 100644 (file)
index 0000000..6d5898d
--- /dev/null
@@ -0,0 +1,66 @@
+<testcase>
+<info>
+<keywords>
+HTTPS
+HTTP GET
+--proto-redir
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 301 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 7
+Location: http://%HOSTIP:%HTTPPORT/325
+
+MooMoo
+</data>
+<datacheck>
+HTTP/1.1 301 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 7
+Location: http://%HOSTIP:%HTTPPORT/325
+
+</datacheck>
+</reply>
+
+#
+# Client-side
+<client>
+<features>
+SSL
+</features>
+<server>
+https
+</server>
+ <name>
+HTTPS with attempted redirect to denied HTTP
+ </name>
+ <command>
+-k https://%HOSTIP:%HTTPSPORT/325 --proto-redir -http --location
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /325 HTTP/1.1\r
+Host: %HOSTIP:%HTTPSPORT\r
+Accept: */*\r
+\r
+</protocol>
+# 1 - Protocol http not supported or disabled in libcurl
+<errorcode>
+1
+</errorcode>
+</verify>
+</testcase>
index 82cf80b..9b86cd3 100644 (file)
@@ -10,7 +10,7 @@ Content-Range
 # Server-side
 <reply>
 <data>
 # Server-side
 <reply>
 <data>
-HTTP/1.1 OK swsclose
+HTTP/1.1 200 OK swsclose
 
 </data>
 </reply>
 
 </data>
 </reply>
index 9c22d30..6cb53fa 100644 (file)
@@ -11,7 +11,7 @@ LIST
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
-<datacheck>
+<datacheck mode="text">
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
index 5d44a64..219677f 100644 (file)
@@ -11,7 +11,7 @@ LIST
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
-<datacheck>
+<datacheck mode="text">
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
index d868894..5f498a2 100644 (file)
@@ -11,7 +11,7 @@ LIST
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
-<datacheck>
+<datacheck mode="text">
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
index 417b8c3..1adee37 100644 (file)
@@ -11,7 +11,7 @@ LIST
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
-<datacheck>
+<datacheck mode="text">
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
index f9b17f3..faf3d72 100644 (file)
@@ -8,18 +8,18 @@ HTTP GET
 #
 # Server-side
 <reply name="1">
 #
 # Server-side
 <reply name="1">
-<data mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
-ETag: "21025-dc7-39462498"
-Accept-Ranges: bytes
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Funny-head: yesyes
-
+<data>
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT\r
+ETag: "21025-dc7-39462498"\r
+Accept-Ranges: bytes\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Funny-head: yesyes\r
+\r
 -foo-
 </data>
 </reply>
 -foo-
 </data>
 </reply>
@@ -45,7 +45,7 @@ http://%HOSTIP:%HTTPPORT/500 log/ip500
 #
 # Verify data after the test has been "shot"
 <verify>
 #
 # Verify data after the test has been "shot"
 <verify>
-<file name="log/ip500" mode="text">
+<file name="log/ip500">
 IP: %HOSTIP
 </file>
 <protocol>
 IP: %HOSTIP
 </file>
 <protocol>
index f73a4eb..f8d776b 100644 (file)
@@ -7,7 +7,7 @@ FILE
 #
 # Server-side
 <reply>
 #
 # Server-side
 <reply>
-<data mode="text">
+<data>
 foo
    bar swsclose
 bar
 foo
    bar swsclose
 bar
index 630e816..07bbdea 100644 (file)
@@ -72,7 +72,7 @@ http://%HOSTIP:%HTTPPORT/506
 
 # Verify data after the test has been "shot"
 <verify>
 
 # Verify data after the test has been "shot"
 <verify>
-<stdout mode="text">
+<stdout>
 GLOBAL_INIT
 SHARE_INIT
 CURLSHOPT_LOCKFUNC
 GLOBAL_INIT
 SHARE_INIT
 CURLSHOPT_LOCKFUNC
@@ -156,33 +156,55 @@ unlock: share  [Pigs in space]: 53
 CURLOPT_COOKIEJAR
 CURLOPT_COOKIELIST FLUSH
 lock:   cookie [Pigs in space]: 54
 CURLOPT_COOKIEJAR
 CURLOPT_COOKIELIST FLUSH
 lock:   cookie [Pigs in space]: 54
-lock:   cookie [Pigs in space]: 55
-unlock: cookie [Pigs in space]: 56
-unlock: cookie [Pigs in space]: 57
+unlock: cookie [Pigs in space]: 55
 PERFORM
 PERFORM
-lock:   dns    [Pigs in space]: 58
-unlock: dns    [Pigs in space]: 59
+lock:   dns    [Pigs in space]: 56
+unlock: dns    [Pigs in space]: 57
+lock:   cookie [Pigs in space]: 58
+unlock: cookie [Pigs in space]: 59
 lock:   cookie [Pigs in space]: 60
 unlock: cookie [Pigs in space]: 61
 lock:   cookie [Pigs in space]: 62
 unlock: cookie [Pigs in space]: 63
 lock:   cookie [Pigs in space]: 60
 unlock: cookie [Pigs in space]: 61
 lock:   cookie [Pigs in space]: 62
 unlock: cookie [Pigs in space]: 63
-lock:   cookie [Pigs in space]: 64
-unlock: cookie [Pigs in space]: 65
 run 3: overwrite cookie 1 and 4
 run 3: overwrite cookie 1 and 4
-lock:   dns    [Pigs in space]: 66
-unlock: dns    [Pigs in space]: 67
-try SHARE_CLEANUP...
+lock:   dns    [Pigs in space]: 64
+unlock: dns    [Pigs in space]: 65
+CLEANUP
+lock:   cookie [Pigs in space]: 66
+unlock: cookie [Pigs in space]: 67
 lock:   share  [Pigs in space]: 68
 unlock: share  [Pigs in space]: 69
 lock:   share  [Pigs in space]: 68
 unlock: share  [Pigs in space]: 69
+CURLOPT_SHARE
+lock:   share  [Pigs in space]: 70
+unlock: share  [Pigs in space]: 71
+CURLOPT_COOKIELIST ALL
+lock:   cookie [Pigs in space]: 72
+unlock: cookie [Pigs in space]: 73
+CURLOPT_COOKIEJAR
+CURLOPT_COOKIELIST RELOAD
+lock:   cookie [Pigs in space]: 74
+unlock: cookie [Pigs in space]: 75
+loaded cookies:
+-----------------
+  .host.foo.com        TRUE    /       FALSE   1896263787      injected        yes
+  .foo.com     TRUE    /       FALSE   1993463787      test1   overwritten1
+  .host.foo.com        TRUE    /       FALSE   1896263787      test2   two
+  .foo.com     TRUE    /       FALSE   1896263787      test3   three
+  .host.foo.com        TRUE    /       FALSE   2061978987      test4   overwritten4
+  .host.foo.com        TRUE    /       FALSE   1896263787      test5   five
+-----------------
+try SHARE_CLEANUP...
+lock:   share  [Pigs in space]: 76
+unlock: share  [Pigs in space]: 77
 SHARE_CLEANUP failed, correct
 CLEANUP
 SHARE_CLEANUP failed, correct
 CLEANUP
-lock:   cookie [Pigs in space]: 70
-unlock: cookie [Pigs in space]: 71
-lock:   share  [Pigs in space]: 72
-unlock: share  [Pigs in space]: 73
+lock:   cookie [Pigs in space]: 78
+unlock: cookie [Pigs in space]: 79
+lock:   share  [Pigs in space]: 80
+unlock: share  [Pigs in space]: 81
 SHARE_CLEANUP
 SHARE_CLEANUP
-lock:   share  [Pigs in space]: 74
-unlock: share  [Pigs in space]: 75
+lock:   share  [Pigs in space]: 82
+unlock: share  [Pigs in space]: 83
 GLOBAL_CLEANUP
 </stdout>
 <stderr>
 GLOBAL_CLEANUP
 </stdout>
 <stderr>
index 5cd4b8c..2b8a2d5 100644 (file)
@@ -1,14 +1,21 @@
 <testcase>
 <testcase>
+<info>
+<keywords>
+HTTP
+POST
+POST callback
+</keywords>
+</info>
 #
 # Server-side
 <reply>
 #
 # Server-side
 <reply>
-<data mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake swsclose
-Connection: close
-Content-Type: text/html
-
+<data>
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake swsclose\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 hello
 </data>
 </reply>
 hello
 </data>
 </reply>
index dfe9027..5de1599 100644 (file)
@@ -1,4 +1,9 @@
 <testcase>
 <testcase>
+<info>
+<keywords>
+memory callbacks
+</keywords>
+</info>
 #
 # Server-side
 <reply>
 #
 # Server-side
 <reply>
@@ -9,6 +14,9 @@
 <server>
 none
 </server>
 <server>
 none
 </server>
+<features>
+http
+</features>
 # tool is what to use instead of 'curl'
 <tool>
 lib509
 # tool is what to use instead of 'curl'
 <tool>
 lib509
@@ -25,7 +33,7 @@ nothing
 #
 # Verify data after the test has been "shot"
 <verify>
 #
 # Verify data after the test has been "shot"
 <verify>
-<stdout mode="text">
+<stdout>
 seen custom_calloc()
 seen custom_malloc()
 seen custom_realloc()
 seen custom_calloc()
 seen custom_malloc()
 seen custom_realloc()
index f1f1a3c..5ba0a7f 100644 (file)
@@ -9,13 +9,13 @@ HTTP POST
 #
 # Server-side
 <reply>
 #
 # Server-side
 <reply>
-<data mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake swsclose
-Connection: close
-Content-Type: text/html
-
+<data>
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake swsclose\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 hello
 </data>
 </reply>
 hello
 </data>
 </reply>
index ce644db..d259f40 100644 (file)
@@ -9,7 +9,7 @@ HTTP GET
 #
 # Server-side
 <reply>
 #
 # Server-side
 <reply>
-<data mode="text">
+<data>
 HTTP/1.1 200 OK swsclose\r
 Date: Thu, 09 Nov 2010 14:49:00 GMT\r
 Server: yes\r
 HTTP/1.1 200 OK swsclose\r
 Date: Thu, 09 Nov 2010 14:49:00 GMT\r
 Server: yes\r
index a8e66ea..ca37a5d 100644 (file)
@@ -8,18 +8,18 @@ HTTP HEAD
 #
 # Server-side
 <reply>
 #
 # Server-side
 <reply>
-<data mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
-ETag: "21025-dc7-39462498"
-Accept-Ranges: bytes
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Funny-head: yesyes
-
+<data>
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT\r
+ETag: "21025-dc7-39462498"\r
+Accept-Ranges: bytes\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Funny-head: yesyes\r
+\r
 </data>
 </reply>
 
 </data>
 </reply>
 
index d139f29..526f1e1 100644 (file)
@@ -8,12 +8,12 @@ HTTP POST
 #
 # Server-side
 <reply>
 #
 # Server-side
 <reply>
-<data mode="text">
-HTTP/1.1 200 OK swsclose
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 3
-
+<data>
+HTTP/1.1 200 OK swsclose\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 3\r
+\r
 OK
 </data>
 </reply>
 OK
 </data>
 </reply>
index 93f21d6..9bc175b 100644 (file)
@@ -9,12 +9,12 @@ HTTP POST
 #
 # Server-side
 <reply>
 #
 # Server-side
 <reply>
-<data mode="text">
-HTTP/1.1 200 OK swsclose
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 3
-
+<data>
+HTTP/1.1 200 OK swsclose\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 3\r
+\r
 OK
 </data>
 </reply>
 OK
 </data>
 </reply>
index 7b703b4..c81a45e 100644 (file)
@@ -1,4 +1,10 @@
 <testcase>
 <testcase>
+<info>
+<keywords>
+getdate
+unittest
+</keywords>
+</info>
 #
 # Server-side
 <reply>
 #
 # Server-side
 <reply>
@@ -25,7 +31,7 @@ nothing
 #
 # Verify data after the test has been "shot"
 <verify>
 #
 # Verify data after the test has been "shot"
 <verify>
-<stdout mode="text">
+<stdout>
 0: Sun, 06 Nov 1994 08:49:37 GMT => 784111777
 1: Sunday, 06-Nov-94 08:49:37 GMT => 784111777
 2: Sun Nov  6 08:49:37 1994 => 784111777
 0: Sun, 06 Nov 1994 08:49:37 GMT => 784111777
 1: Sunday, 06-Nov-94 08:49:37 GMT => 784111777
 2: Sun Nov  6 08:49:37 1994 => 784111777
index 58c8b2c..0c88147 100644 (file)
@@ -10,17 +10,17 @@ HTTP GET
 # Server-side
 <reply>
 <data>
 # Server-side
 <reply>
 <data>
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
-ETag: "21025-dc7-39462498"
-Accept-Ranges: bytes
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Funny-head: yesyes
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT\r
+ETag: "21025-dc7-39462498"\r
+Accept-Ranges: bytes\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Funny-head: yesyes\r
+\r
 -foo-
 </data>
 </reply>
 -foo-
 </data>
 </reply>
index 1a9768d..b8ca9ab 100644 (file)
@@ -9,34 +9,34 @@ HTTP GET
 #
 # Server-side
 <reply>
 #
 # Server-side
 <reply>
-<data mode="text">
-HTTP/1.1 200 OK swsbounce
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 8
-
+<data>
+HTTP/1.1 200 OK swsbounce\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 8\r
+\r
 content
 </data>
 <data1>
 content
 </data>
 <data1>
-HTTP/1.1 200 OK swsclose
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 9
-
+HTTP/1.1 200 OK swsclose\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 9\r
+\r
 content2
 </data1>
 <datacheck>
 content2
 </data1>
 <datacheck>
-HTTP/1.1 200 OK swsbounce
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 8
-
+HTTP/1.1 200 OK swsbounce\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 8\r
+\r
 content
 content
-HTTP/1.1 200 OK swsclose
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 9
-
+HTTP/1.1 200 OK swsclose\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 9\r
+\r
 content2
 </datacheck>
 </reply>
 content2
 </datacheck>
 </reply>
index 9bc5501..90f51b3 100644 (file)
@@ -11,7 +11,7 @@ CURLOPT_PORT
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
 <reply>
 # When doing LIST, we get the default list output hard-coded in the test
 # FTP server
-<datacheck>
+<datacheck mode="text">
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
index 4ac46ff..56d1f3b 100644 (file)
@@ -11,14 +11,14 @@ CURLOPT_PORT
 # Server-side
 <reply>
 <data nocheck="yes">
 # Server-side
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
-ETag: "21025-dc7-39462498"
-Accept-Ranges: bytes
-Content-Length: 6
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT\r
+ETag: "21025-dc7-39462498"\r
+Accept-Ranges: bytes\r
+Content-Length: 6\r
+\r
 hello
 </data>
 </reply>
 hello
 </data>
 </reply>
@@ -53,7 +53,7 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 \r
 </protocol>
 Accept: */*\r
 \r
 </protocol>
-<stdout mode="text">
+<stdout>
 hello
 </stdout>
 </verify>
 hello
 </stdout>
 </verify>
index bae7e6f..7d3db38 100644 (file)
@@ -13,14 +13,14 @@ CURLOPT_PROXY
 # Server-side
 <reply>
 <data nocheck="yes">
 # Server-side
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK swsclose
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
-ETag: "21025-dc7-39462498"
-Accept-Ranges: bytes
-Content-Length: 6
-
+HTTP/1.1 200 OK swsclose\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT\r
+ETag: "21025-dc7-39462498"\r
+Accept-Ranges: bytes\r
+Content-Length: 6\r
+\r
 hello
 </data>
 </reply>
 hello
 </data>
 </reply>
@@ -57,7 +57,7 @@ Accept: */*
 Proxy-Connection: Keep-Alive\r
 \r
 </protocol>
 Proxy-Connection: Keep-Alive\r
 \r
 </protocol>
-<stdout mode="text">
+<stdout>
 hello
 </stdout>
 </verify>
 hello
 </stdout>
 </verify>
index 0a55fd3..1d2e415 100644 (file)
@@ -10,11 +10,11 @@ multi
 # Server-side
 <reply>
 <data>
 # Server-side
 <reply>
 <data>
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 47
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 47\r
+\r
 file contents should appear once for each file
 </data>
 <datacheck>
 file contents should appear once for each file
 </data>
 <datacheck>
index 09e7421..40182e2 100644 (file)
@@ -10,35 +10,35 @@ multi
 # Server-side
 <reply>
 <data1>
 # Server-side
 <reply>
 <data1>
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 47
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 47\r
+\r
 file contents should appear once for each file
 </data1>
 <data2>
 file contents should appear once for each file
 </data1>
 <data2>
-HTTP/1.1 200 OK
+HTTP/1.1 200 OK\r
 </data2>
 <data3>
 </data2>
 <data3>
-Date: Thu, 09 Nov 2010 14:49:00 GMT
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
 </data3>
 <data4>
 </data3>
 <data4>
-Server: test-server/fake
-Content-Length: 47
-
+Server: test-server/fake\r
+Content-Length: 47\r
+\r
 file contents should appear once for each file
 file contents should appear once for each file
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 47
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 47\r
+\r
 file contents should appear once for each file
 file contents should appear once for each file
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 47
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 47\r
+\r
 file contents should appear once for each file
 </data4>
 </reply>
 file contents should appear once for each file
 </data4>
 </reply>
index 85515a1..6837d2a 100644 (file)
@@ -8,23 +8,23 @@ multi
 </info>
 
 <reply>
 </info>
 
 <reply>
-<data mode="text">
-HTTP/1.1 404 Badness
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-ETag: "21025-dc7-39462498"
-Content-Length: 6
-Content-Type: text/html
-Funny-head: yesyes
-
+<data>
+HTTP/1.1 404 Badness\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+ETag: "21025-dc7-39462498"\r
+Content-Length: 6\r
+Content-Type: text/html\r
+Funny-head: yesyes\r
+\r
 hejsan
 </data>
 <data1>
 hejsan
 </data>
 <data1>
-HTTP/1.1 200 Fine
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Content-Length: 13
-Connection: close
-Content-Type: text/html
-
+HTTP/1.1 200 Fine\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Content-Length: 13\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 fine content
 </data1>
 
 fine content
 </data1>
 
index 51cde15..51ac971 100644 (file)
@@ -9,23 +9,23 @@ multi
 </info>
 
 <reply>
 </info>
 
 <reply>
-<data mode="text">
-HTTP/1.1 404 Badness
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-ETag: "21025-dc7-39462498"
-Content-Length: 6
-Content-Type: text/html
-Funny-head: yesyes
-
+<data>
+HTTP/1.1 404 Badness\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+ETag: "21025-dc7-39462498"\r
+Content-Length: 6\r
+Content-Type: text/html\r
+Funny-head: yesyes\r
+\r
 hejsan
 </data>
 <data1>
 hejsan
 </data>
 <data1>
-HTTP/1.1 200 Fine
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Content-Length: 13
-Connection: close
-Content-Type: text/html
-
+HTTP/1.1 200 Fine\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Content-Length: 13\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 fine content
 </data1>
 
 fine content
 </data1>
 
index bef8f83..14e285f 100644 (file)
@@ -10,17 +10,17 @@ HTTP GET
 # Server-side
 <reply>
 <data>
 # Server-side
 <reply>
 <data>
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
-ETag: "21025-dc7-39462498"
-Accept-Ranges: bytes
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Funny-head: yesyes
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT\r
+ETag: "21025-dc7-39462498"\r
+Accept-Ranges: bytes\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Funny-head: yesyes\r
+\r
 -foo-
 </data>
 </reply>
 -foo-
 </data>
 </reply>
index 15da794..eaa64d5 100644 (file)
@@ -8,11 +8,11 @@ FTP
 #
 # Server-side
 <reply>
 #
 # Server-side
 <reply>
-<data mode="text">
+<data>
 file contents
 </data>
 
 file contents
 </data>
 
-<datacheck>
+<datacheck mode="text">
 file contents
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
 file contents
 total 20
 drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
index c99f9a0..a2f7364 100644 (file)
@@ -58,6 +58,7 @@ http
 lib540
 </tool>
 <features>
 lib540
 </tool>
 <features>
+!SSPI
 crypto
 </features>
  <name>
 crypto
 </features>
  <name>
index df5c1df..4556330 100644 (file)
@@ -28,7 +28,7 @@ curl_easy_escape
 # There's no MTDM in the protocol here since this code doesn't ask for the
 # time/date of the file
 <verify>
 # There's no MTDM in the protocol here since this code doesn't ask for the
 # time/date of the file
 <verify>
-<stdout mode="text">
+<stdout>
 %9C%26K%3DI%04%A1%01%E0%D8%7C%20%B7%EFS%29%FA%1DW%E1
 </stdout>
 </verify>
 %9C%26K%3DI%04%A1%01%E0%D8%7C%20%B7%EFS%29%FA%1DW%E1
 </stdout>
 </verify>
index 963baec..78cb5a4 100644 (file)
@@ -9,12 +9,12 @@ HTTP POST
 #
 # Server-side
 <reply>
 #
 # Server-side
 <reply>
-<data mode="text">
-HTTP/1.1 200 OK swsclose
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 3
-
+<data>
+HTTP/1.1 200 OK swsclose\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 3\r
+\r
 OK
 </data>
 </reply>
 OK
 </data>
 </reply>
index 11e3fb9..f2a5ddd 100644 (file)
Binary files a/tests/data/test545 and b/tests/data/test545 differ
index 7bcf5a4..f4802e2 100644 (file)
@@ -76,6 +76,8 @@ lib547
 </tool>
 <features>
 NTLM
 </tool>
 <features>
 NTLM
+!SSPI
+debug
 </features>
  <name>
 HTTP proxy auth NTLM with POST data from read callback
 </features>
  <name>
 HTTP proxy auth NTLM with POST data from read callback
@@ -87,7 +89,7 @@ CURL_GETHOSTNAME=curlhost
 LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
  </setenv>
  <command>
 LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
  </setenv>
  <command>
-http://test.remote.example.com/path/547 http://%HOSTIP:%HTTPPORT s1lly:pers0n
+http://test.remote.example.com/path/547 http://%HOSTIP:%HTTPPORT testuser:testpass
 </command>
 <precheck>
 chkhostname curlhost
 </command>
 <precheck>
 chkhostname curlhost
@@ -119,7 +121,7 @@ Content-Length: 0
 Content-Type: application/x-www-form-urlencoded\r
 \r
 POST http://test.remote.example.com/path/547 HTTP/1.1\r
 Content-Type: application/x-www-form-urlencoded\r
 \r
 POST http://test.remote.example.com/path/547 HTTP/1.1\r
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAABQAFAHAAAAAIAAgAdQAAAAAAAAAAAAAABoKBAIYrD1xJmhNBNL9fLzuk9PV9436GAxPu0EKWzqQ/sZDVLXnp1JrySgl8A+cibE6z4HMxbGx5Y3VybGhvc3Q=\r
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
 Host: test.remote.example.com\r
 Accept: */*\r
 User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
 Host: test.remote.example.com\r
 Accept: */*\r
index a6e2a9b..54f242f 100644 (file)
@@ -76,6 +76,8 @@ lib548
 </tool>
 <features>
 NTLM
 </tool>
 <features>
 NTLM
+!SSPI
+debug
 </features>
  <name>
 HTTP proxy auth NTLM with POST data from CURLOPT_POSTFIELDS
 </features>
  <name>
 HTTP proxy auth NTLM with POST data from CURLOPT_POSTFIELDS
@@ -87,7 +89,7 @@ CURL_GETHOSTNAME=curlhost
 LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
  </setenv>
  <command>
 LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
  </setenv>
  <command>
-http://test.remote.example.com/path/548 http://%HOSTIP:%HTTPPORT s1lly:pers0n
+http://test.remote.example.com/path/548 http://%HOSTIP:%HTTPPORT testuser:testpass
 </command>
 <precheck>
 chkhostname curlhost
 </command>
 <precheck>
 chkhostname curlhost
@@ -119,7 +121,7 @@ Content-Length: 0
 Content-Type: application/x-www-form-urlencoded\r
 \r
 POST http://test.remote.example.com/path/548 HTTP/1.1\r
 Content-Type: application/x-www-form-urlencoded\r
 \r
 POST http://test.remote.example.com/path/548 HTTP/1.1\r
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAABQAFAHAAAAAIAAgAdQAAAAAAAAAAAAAABoKBAIYrD1xJmhNBNL9fLzuk9PV9436GAxPu0EKWzqQ/sZDVLXnp1JrySgl8A+cibE6z4HMxbGx5Y3VybGhvc3Q=\r
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
 Host: test.remote.example.com\r
 Accept: */*\r
 User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
 Host: test.remote.example.com\r
 Accept: */*\r
index e4bd6bf..a248edb 100644 (file)
@@ -12,14 +12,14 @@ HTTP proxy
 # Server-side
 <reply>
 <data nocheck="yes">
 # Server-side
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK swsclose
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
-ETag: "21025-dc7-39462498"
-Accept-Ranges: bytes
-Content-Length: 6
-
+HTTP/1.1 200 OK swsclose\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT\r
+ETag: "21025-dc7-39462498"\r
+Accept-Ranges: bytes\r
+Content-Length: 6\r
+\r
 hello
 </data>
 </reply>
 hello
 </data>
 </reply>
@@ -58,7 +58,7 @@ Accept: */*
 Proxy-Connection: Keep-Alive\r
 \r
 </protocol>
 Proxy-Connection: Keep-Alive\r
 \r
 </protocol>
-<stdout mode="text">
+<stdout>
 hello
 </stdout>
 </verify>
 hello
 </stdout>
 </verify>
index e9605d6..a609aa2 100644 (file)
@@ -12,14 +12,14 @@ CURLOPT_PROXY
 # Server-side
 <reply>
 <data nocheck="yes">
 # Server-side
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK swsclose
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
-ETag: "21025-dc7-39462498"
-Accept-Ranges: bytes
-Content-Length: 6
-
+HTTP/1.1 200 OK swsclose\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT\r
+ETag: "21025-dc7-39462498"\r
+Accept-Ranges: bytes\r
+Content-Length: 6\r
+\r
 hello
 </data>
 </reply>
 hello
 </data>
 </reply>
@@ -58,7 +58,7 @@ Accept: */*
 Proxy-Connection: Keep-Alive\r
 \r
 </protocol>
 Proxy-Connection: Keep-Alive\r
 \r
 </protocol>
-<stdout mode="text">
+<stdout>
 hello
 </stdout>
 </verify>
 hello
 </stdout>
 </verify>
index 4f5220a..5776303 100644 (file)
@@ -61,6 +61,8 @@ http
 lib547
 </tool>
 <features>
 lib547
 </tool>
 <features>
+!SSPI
+crypto
 </features>
  <name>
 HTTP proxy auth Digest with POST data from read callback
 </features>
  <name>
 HTTP proxy auth Digest with POST data from read callback
index a974fc5..61de9fe 100644 (file)
Binary files a/tests/data/test552 and b/tests/data/test552 differ
index 5552936..bd937f0 100644 (file)
@@ -44,8 +44,6 @@ http://%HOSTIP:%HTTPPORT/path/553
 <strip>
 ^User-Agent: curl/.*
 </strip>
 <strip>
 ^User-Agent: curl/.*
 </strip>
-# We strip off a large chunk of the type-2 NTLM message since it depends on
-# the local host name and thus differs on different machines!
 <protocol nonewline="yes">
 POST /path/553 HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
 <protocol nonewline="yes">
 POST /path/553 HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
index b08d774..b55fa3d 100644 (file)
@@ -9,13 +9,13 @@ HTTP POST
 #
 # Server-side
 <reply>
 #
 # Server-side
 <reply>
-<data mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake swsclose
-Connection: close
-Content-Type: text/html
-
+<data>
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake swsclose\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 hello
 </data>
 </reply>
 hello
 </data>
 </reply>
index bf06b52..c802fea 100644 (file)
@@ -81,6 +81,8 @@ lib555
 </tool>
 <features>
 NTLM
 </tool>
 <features>
 NTLM
+!SSPI
+debug
 </features>
  <name>
 HTTP proxy auth NTLM with POST data from read callback multi-if
 </features>
  <name>
 HTTP proxy auth NTLM with POST data from read callback multi-if
@@ -92,7 +94,7 @@ CURL_GETHOSTNAME=curlhost
 LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
  </setenv>
  <command>
 LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
  </setenv>
  <command>
-http://test.remote.example.com/path/555 http://%HOSTIP:%HTTPPORT s1lly:pers0n
+http://test.remote.example.com/path/555 http://%HOSTIP:%HTTPPORT testuser:testpass
 </command>
 <precheck>
 chkhostname curlhost
 </command>
 <precheck>
 chkhostname curlhost
@@ -128,7 +130,7 @@ Content-Length: 0
 Content-Type: application/x-www-form-urlencoded\r
 \r
 POST http://test.remote.example.com/path/555 HTTP/1.1\r
 Content-Type: application/x-www-form-urlencoded\r
 \r
 POST http://test.remote.example.com/path/555 HTTP/1.1\r
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAABQAFAHAAAAAIAAgAdQAAAAAAAAAAAAAABoKBAIYrD1xJmhNBNL9fLzuk9PV9436GAxPu0EKWzqQ/sZDVLXnp1JrySgl8A+cibE6z4HMxbGx5Y3VybGhvc3Q=\r
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
 Host: test.remote.example.com\r
 Accept: */*\r
 User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
 Host: test.remote.example.com\r
 Accept: */*\r
index 998bdfb..55c7c91 100644 (file)
@@ -8,12 +8,12 @@ HTTP GET
 
 <reply>
 <data>
 
 <reply>
 <data>
-HTTP/1.1 200 OK
-Server: test-server/fake
-Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
-Content-Length: 6
-Connection: close
-
+HTTP/1.1 200 OK\r
+Server: test-server/fake\r
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT\r
+Content-Length: 6\r
+Connection: close\r
+\r
 -foo-
 </data>
 </reply>
 -foo-
 </data>
 </reply>
index 3da67e9..ee2793f 100644 (file)
@@ -1,4 +1,10 @@
 <testcase>
 <testcase>
+<info>
+<keywords>
+printf
+unittest
+</keywords>
+</info>
 #
 # Server-side
 <reply>
 #
 # Server-side
 <reply>
@@ -25,7 +31,7 @@ nothing
 #
 # Verify data after the test has been "shot"
 <verify>
 #
 # Verify data after the test has been "shot"
 <verify>
-<stdout mode="text">
+<stdout>
 All curl_mprintf() unsigned short tests OK!
 All curl_mprintf() signed short tests OK!
 All curl_mprintf() unsigned int tests OK!
 All curl_mprintf() unsigned short tests OK!
 All curl_mprintf() signed short tests OK!
 All curl_mprintf() unsigned int tests OK!
index f8cbfbe..7a9ba70 100644 (file)
@@ -34,7 +34,7 @@ nothing
 #
 # Verify data after the test has been "shot"
 <verify>
 #
 # Verify data after the test has been "shot"
 <verify>
-<file name="log/memdump" mode="text">
+<file name="log/memdump">
 MEM lib558.c: malloc()
 MEM lib558.c: free()
 MEM escape.c: malloc()
 MEM lib558.c: malloc()
 MEM lib558.c: free()
 MEM escape.c: malloc()
index 0e991b8..8d00554 100644 (file)
@@ -11,11 +11,11 @@ multi
 # Server-side
 <reply>
 <data>
 # Server-side
 <reply>
 <data>
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 7
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 7\r
+\r
 MooMoo
 </data>
 </reply>
 MooMoo
 </data>
 </reply>
index 8f069e6..a6188ea 100644 (file)
@@ -13,14 +13,14 @@ type=
 # Server-side
 <reply>
 <data nocheck="yes">
 # Server-side
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK swsclose
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
-ETag: "21025-dc7-39462498"
-Accept-Ranges: bytes
-Content-Length: 6
-
+HTTP/1.1 200 OK swsclose\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT\r
+ETag: "21025-dc7-39462498"\r
+Accept-Ranges: bytes\r
+Content-Length: 6\r
+\r
 hello
 </data>
 </reply>
 hello
 </data>
 </reply>
@@ -59,7 +59,7 @@ Accept: */*
 Proxy-Connection: Keep-Alive\r
 \r
 </protocol>
 Proxy-Connection: Keep-Alive\r
 \r
 </protocol>
-<stdout mode="text">
+<stdout>
 hello
 </stdout>
 </verify>
 hello
 </stdout>
 </verify>
index b8d12b4..90fa4d1 100644 (file)
@@ -56,6 +56,10 @@ ok
 <server>
 http
 </server>
 <server>
 http
 </server>
+<features>
+!SSPI
+crypto
+</features>
 # tool is what to use instead of 'curl'
 <tool>
 lib565
 # tool is what to use instead of 'curl'
 <tool>
 lib565
index 95da61d..9923d8f 100644 (file)
@@ -8,18 +8,18 @@ HTTP GET
 #
 # Server-side
 <reply>
 #
 # Server-side
 <reply>
-<data mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
-ETag: "21025-dc7-39462498"
-Accept-Ranges: bytes
-Content-Length: 0
-Connection: close
-Content-Type: text/html
-Funny-head: yesyes
-
+<data>
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT\r
+ETag: "21025-dc7-39462498"\r
+Accept-Ranges: bytes\r
+Content-Length: 0\r
+Connection: close\r
+Content-Type: text/html\r
+Funny-head: yesyes\r
+\r
 </data>
 </reply>
 
 </data>
 </reply>
 
@@ -44,7 +44,7 @@ http://%HOSTIP:%HTTPPORT/566 log/ip566
 #
 # Verify data after the test has been "shot"
 <verify>
 #
 # Verify data after the test has been "shot"
 <verify>
-<file name="log/ip566" mode="text">
+<file name="log/ip566">
 CL: 0
 </file>
 <protocol>
 CL: 0
 </file>
 <protocol>
index 4fd1484..de0f632 100644 (file)
@@ -11,11 +11,11 @@ OPTIONS
 # Server-side
 <reply>
 <data>
 # Server-side
 <reply>
 <data>
-RTSP/1.0 200 OK
-Server: RTSPD/libcurl-test
-CSeq: 1
-Public: DESCRIBE, OPTIONS, SETUP, TEARDOWN, PLAY, PAUSE
-Curl-Private: swsclose
+RTSP/1.0 200 OK\r
+Server: RTSPD/libcurl-test\r
+CSeq: 1\r
+Public: DESCRIBE, OPTIONS, SETUP, TEARDOWN, PLAY, PAUSE\r
+Curl-Private: swsclose\r
 </data>
 </reply>
 
 </data>
 </reply>
 
index 0f8440f..09fa81c 100644 (file)
@@ -11,37 +11,37 @@ ANNOUNCE
 # Server-side
 <reply>
 <data1>
 # Server-side
 <reply>
 <data1>
-RTSP/1.0 200 OK
-Server: RTSPD/libcurl-test
-Cseq: 1
-
+RTSP/1.0 200 OK\r
+Server: RTSPD/libcurl-test\r
+Cseq: 1\r
+\r
 </data1>
 
 <data2>
 </data1>
 
 <data2>
-RTSP/1.0 200 OK
-Server: RTSPD/libcurl-test
-Cseq: 2
-Content-Length: 70
-Content-Type: application/sdp
-
+RTSP/1.0 200 OK\r
+Server: RTSPD/libcurl-test\r
+Cseq: 2\r
+Content-Length: 70\r
+Content-Type: application/sdp\r
+\r
 v=0
 s=rtspd SDP
 i=A fake SDP reply
 u=http://www.curl.example.com/fakesdp.ps
 </data2>
 <data3>
 v=0
 s=rtspd SDP
 i=A fake SDP reply
 u=http://www.curl.example.com/fakesdp.ps
 </data2>
 <data3>
-RTSP/1.0 200 Okie Dokie
-Server: RTSPD/libcurl-test
-Cseq: 3
-
+RTSP/1.0 200 Okie Dokie\r
+Server: RTSPD/libcurl-test\r
+Cseq: 3\r
+\r
 </data3>
 <data4>
 </data3>
 <data4>
-RTSP/1.0 200 OK
-Server: RTSPD/libcurl-test
-CSeq: 4
-Curl-private: swsclose
-Informational: Empty Options Response
-
+RTSP/1.0 200 OK\r
+Server: RTSPD/libcurl-test\r
+CSeq: 4\r
+Curl-private: swsclose\r
+Informational: Empty Options Response\r
+\r
 </data4>
 </reply>
 
 </data4>
 </reply>
 
index aec8638..65f32a5 100644 (file)
@@ -11,28 +11,28 @@ Mismatch checking
 # Server-side
 <reply>
 <data1>
 # Server-side
 <reply>
 <data1>
-RTSP/1.0 200 OK
-Server: RTSPD/libcurl-test
-CSeq: 2
-Public: DESCRIBE, OPTIONS, SETUP, TEARDOWN, PLAY, PAUSE
-Informational: CSeq Mismatch
-
+RTSP/1.0 200 OK\r
+Server: RTSPD/libcurl-test\r
+CSeq: 2\r
+Public: DESCRIBE, OPTIONS, SETUP, TEARDOWN, PLAY, PAUSE\r
+Informational: CSeq Mismatch\r
+\r
 </data1>
 <data2>
 </data1>
 <data2>
-RTSP/1.0 200 OK
-Server: RTSPD/libcurl-test
-Session: asdf
-CSeq: 999
-
+RTSP/1.0 200 OK\r
+Server: RTSPD/libcurl-test\r
+Session: asdf\r
+CSeq: 999\r
+\r
 </data2>
 <data3>
 </data2>
 <data3>
-RTSP/1.0 200 OK
-Server: RTSPD/libcurl-test
-Session: asdfWRONG
-Informational: Session ID mismatch
-Curl-Private: swsclose
-CSeq: 1000
-
+RTSP/1.0 200 OK\r
+Server: RTSPD/libcurl-test\r
+Session: asdfWRONG\r
+Informational: Session ID mismatch\r
+Curl-Private: swsclose\r
+CSeq: 1000\r
+\r
 </data3>
 
 </reply>
 </data3>
 
 </reply>
index f41ef01..5e138cd 100644 (file)
@@ -15,37 +15,37 @@ RTP
 # Server-side
 <reply>
 <data1>
 # Server-side
 <reply>
 <data1>
-RTSP/1.0 200 OK
-Server: RTSPD/libcurl-test
-Session: asdf
-CSeq: 1
-
+RTSP/1.0 200 OK\r
+Server: RTSPD/libcurl-test\r
+Session: asdf\r
+CSeq: 1\r
+\r
 </data1>
 
 <data2>
 </data1>
 
 <data2>
-RTSP/1.0 200 OK
-Server: RTSPD/libcurl-test
-CSeq: 2
-Session: asdf
-
+RTSP/1.0 200 OK\r
+Server: RTSPD/libcurl-test\r
+CSeq: 2\r
+Session: asdf\r
+\r
 </data2>
 
 <data3>
 </data2>
 
 <data3>
-RTSP/1.0 200 OK
-Server: RTSPD/libcurl-test
-Cseq: 3
-Content-Length: 4
-Content-Type: fake/evil
-
+RTSP/1.0 200 OK\r
+Server: RTSPD/libcurl-test\r
+Cseq: 3\r
+Content-Length: 4\r
+Content-Type: fake/evil\r
+\r
 $99
 </data3>
 
 <data4>
 $99
 </data3>
 
 <data4>
-RTSP/1.0 200 OK
-Server: RTSPD/libcurl-test
-Session: asdf
-CSeq: 4
-
+RTSP/1.0 200 OK\r
+Server: RTSPD/libcurl-test\r
+Session: asdf\r
+CSeq: 4\r
+\r
 </data4>
 
 <servercmd>
 </data4>
 
 <servercmd>
@@ -83,7 +83,7 @@ rtsp://%HOSTIP:%RTSPPORT/571 log/protofile.txt
 </client>
 
 <verify>
 </client>
 
 <verify>
-<stdout mode="text">
+<stdout>
 RTP: message size 10, channel 1
 RTP: message size 500, channel 0
 RTP: message size 196, channel 0
 RTP: message size 10, channel 1
 RTP: message size 500, channel 0
 RTP: message size 196, channel 0
index 83ae646..903ded9 100644 (file)
@@ -11,52 +11,52 @@ GET_PARAMETER
 # Server-side
 <reply>
 <data1>
 # Server-side
 <reply>
 <data1>
-RTSP/1.0 200 OK
-Server: RTSPD/libcurl-test
-Session: getparams-test
-CSeq: 1
-
+RTSP/1.0 200 OK\r
+Server: RTSPD/libcurl-test\r
+Session: getparams-test\r
+CSeq: 1\r
+\r
 </data1>
 
 <data2>
 </data1>
 
 <data2>
-RTSP/1.0 200 OK
-Server: RTSPD/libcurl-test
-Session: getparams-test
-Content-Type: text/parameters
-Content-Length: 32
-Cseq: 2
-
+RTSP/1.0 200 OK\r
+Server: RTSPD/libcurl-test\r
+Session: getparams-test\r
+Content-Type: text/parameters\r
+Content-Length: 32\r
+Cseq: 2\r
+\r
 scale=enormous
 speed=ludicrous
 
 </data2>
 
 <data3>
 scale=enormous
 speed=ludicrous
 
 </data2>
 
 <data3>
-RTSP/1.0 204 OK
-Server: RTSPD/libcurl-test
-Session: getparams-test
-Cseq: 3
-
+RTSP/1.0 204 OK\r
+Server: RTSPD/libcurl-test\r
+Session: getparams-test\r
+Cseq: 3\r
+\r
 </data3>
 
 <data4>
 </data3>
 
 <data4>
-RTSP/1.0 200 Okie Dokie
-Server: RTSPD/libcurl-test
-Session: getparams-test
-Cseq: 4
-Content-Length: 37
-
+RTSP/1.0 200 Okie Dokie\r
+Server: RTSPD/libcurl-test\r
+Session: getparams-test\r
+Cseq: 4\r
+Content-Length: 37\r
+\r
 packets_received: 1000
 jitter: 0.314
 </data4>
 <data5>
 packets_received: 1000
 jitter: 0.314
 </data4>
 <data5>
-RTSP/1.0 200 OK
-Server: RTSPD/libcurl-test
-Session: getparams-test
-CSeq: 5
-Curl-private: swsclose
-Informational: Empty Options Response
-
+RTSP/1.0 200 OK\r
+Server: RTSPD/libcurl-test\r
+Session: getparams-test\r
+CSeq: 5\r
+Curl-private: swsclose\r
+Informational: Empty Options Response\r
+\r
 </data5>
 </reply>
 
 </data5>
 </reply>
 
index 54ff8fb..e3299b8 100644 (file)
@@ -3,23 +3,24 @@
 <keywords>
 HTTP
 multi
 <keywords>
 HTTP
 multi
+flaky
 </keywords>
 </info>
 #
 # Server-side
 <reply>
 <data>
 </keywords>
 </info>
 #
 # Server-side
 <reply>
 <data>
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
-ETag: "21025-dc7-39462498"
-Accept-Ranges: bytes
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Funny-head: yesyes
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT\r
+ETag: "21025-dc7-39462498"\r
+Accept-Ranges: bytes\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Funny-head: yesyes\r
+\r
 -foo-
 </data>
 </reply>
 -foo-
 </data>
 </reply>
index 1fa4654..cb41f03 100644 (file)
@@ -25,7 +25,7 @@ ftp
 lib574
 </tool>
 <name>
 lib574
 </tool>
 <name>
-FTP wildcard download - changed fnmatch, 2x perform (UNIX LIST response)
+FTP wildcard download - changed fnmatch, 2x perform (Unix LIST response)
 </name>
 <command>
 ftp://%HOSTIP:%FTPPORT/fully_simulated/UNIX/*.txt
 </name>
 <command>
 ftp://%HOSTIP:%FTPPORT/fully_simulated/UNIX/*.txt
@@ -82,7 +82,7 @@ EPSV
 RETR someothertext.txt\r
 QUIT\r
 </protocol>
 RETR someothertext.txt\r
 QUIT\r
 </protocol>
-<stdout mode="text">
+<stdout>
 This file should have permissions 444
 This file should have permissions 666
 This file should have permissions 777
 This file should have permissions 444
 This file should have permissions 666
 This file should have permissions 777
index 5670e6b..8133834 100644 (file)
@@ -100,7 +100,7 @@ EPSV
 RETR someothertext.txt\r
 QUIT\r
 </protocol>
 RETR someothertext.txt\r
 QUIT\r
 </protocol>
-<stdout mode="text">
+<stdout>
 This file should have permissions 444
 This file should have permissions 666
 This file should have permissions 777
 This file should have permissions 444
 This file should have permissions 666
 This file should have permissions 777
index 4d4b90c..74a3aed 100644 (file)
@@ -22,7 +22,7 @@ ftp
 lib576
 </tool>
  <name>
 lib576
 </tool>
  <name>
-FTP wildcard download - skip/parser_correctness/CURLOPT_FNMATCH_FUNCTION (UNIX)
+FTP wildcard download - skip/parser_correctness/CURLOPT_FNMATCH_FUNCTION (Unix)
  </name>
  <command>
 ftp://%HOSTIP:%FTPPORT/fully_simulated/UNIX/*
  </name>
  <command>
 ftp://%HOSTIP:%FTPPORT/fully_simulated/UNIX/*
@@ -34,7 +34,7 @@ ftp://%HOSTIP:%FTPPORT/fully_simulated/UNIX/*
 <errorcode>
 0
 </errorcode>
 <errorcode>
 0
 </errorcode>
-<stdout mode="text">
+<stdout>
 =============================================================
 Remains:      14
 Filename:     .
 =============================================================
 Remains:      14
 Filename:     .
index 0b6a437..e4ee4ac 100644 (file)
@@ -8,18 +8,18 @@ HTTP POST
 #
 # Server-side
 <reply name="1">
 #
 # Server-side
 <reply name="1">
-<data mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
-ETag: "21025-dc7-39462498"
-Accept-Ranges: bytes
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Funny-head: yesyes
-
+<data>
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT\r
+ETag: "21025-dc7-39462498"\r
+Accept-Ranges: bytes\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Funny-head: yesyes\r
+\r
 -foo-
 </data>
 </reply>
 -foo-
 </data>
 </reply>
@@ -45,7 +45,7 @@ http://%HOSTIP:%HTTPPORT/500 log/ip578
 #
 # Verify data after the test has been "shot"
 <verify>
 #
 # Verify data after the test has been "shot"
 <verify>
-<file name="log/ip578" mode="text">
+<file name="log/ip578">
 PASSED, UL data matched data size
 </file>
 </verify>
 PASSED, UL data matched data size
 </file>
 </verify>
index 5f87944..e352e3d 100644 (file)
@@ -10,43 +10,43 @@ HTTP Digest auth
 # Server-side
 <reply>
 <data>
 # Server-side
 <reply>
 <data>
-HTTP/1.1 100 Continue
-Server: Microsoft-IIS/5.0
-Date: Sun, 03 Apr 2005 14:57:45 GMT
-X-Powered-By: ASP.NET
-
-HTTP/1.1 401 authentication please swsbounce
-Server: Microsoft-IIS/6.0
-WWW-Authenticate: Digest realm="testrealm", nonce="1053604144"
-Content-Type: text/html; charset=iso-8859-1
-Content-Length: 0
-
+HTTP/1.1 100 Continue\r
+Server: Microsoft-IIS/5.0\r
+Date: Sun, 03 Apr 2005 14:57:45 GMT\r
+X-Powered-By: ASP.NET\r
+\r
+HTTP/1.1 401 authentication please swsbounce\r
+Server: Microsoft-IIS/6.0\r
+WWW-Authenticate: Digest realm="testrealm", nonce="1053604144"\r
+Content-Type: text/html; charset=iso-8859-1\r
+Content-Length: 0\r
+\r
 </data>
 <data1>
 </data>
 <data1>
-HTTP/1.1 200 A OK
-Server: Microsoft-IIS/6.0
-Content-Type: text/html; charset=iso-8859-1
-Content-Length: 3
-
+HTTP/1.1 200 A OK\r
+Server: Microsoft-IIS/6.0\r
+Content-Type: text/html; charset=iso-8859-1\r
+Content-Length: 3\r
+\r
 ok
 </data1>
 <datacheck>
 ok
 </data1>
 <datacheck>
-HTTP/1.1 100 Continue
-Server: Microsoft-IIS/5.0
-Date: Sun, 03 Apr 2005 14:57:45 GMT
-X-Powered-By: ASP.NET
-
-HTTP/1.1 401 authentication please swsbounce
-Server: Microsoft-IIS/6.0
-WWW-Authenticate: Digest realm="testrealm", nonce="1053604144"
-Content-Type: text/html; charset=iso-8859-1
-Content-Length: 0
-
-HTTP/1.1 200 A OK
-Server: Microsoft-IIS/6.0
-Content-Type: text/html; charset=iso-8859-1
-Content-Length: 3
-
+HTTP/1.1 100 Continue\r
+Server: Microsoft-IIS/5.0\r
+Date: Sun, 03 Apr 2005 14:57:45 GMT\r
+X-Powered-By: ASP.NET\r
+\r
+HTTP/1.1 401 authentication please swsbounce\r
+Server: Microsoft-IIS/6.0\r
+WWW-Authenticate: Digest realm="testrealm", nonce="1053604144"\r
+Content-Type: text/html; charset=iso-8859-1\r
+Content-Length: 0\r
+\r
+HTTP/1.1 200 A OK\r
+Server: Microsoft-IIS/6.0\r
+Content-Type: text/html; charset=iso-8859-1\r
+Content-Length: 3\r
+\r
 ok
 </datacheck>
 </reply>
 ok
 </datacheck>
 </reply>
@@ -56,6 +56,9 @@ ok
 <server>
 http
 </server>
 <server>
 http
 </server>
+<features>
+crypto
+</features>
 # tool is what to use instead of 'curl'
 <tool>
 lib579
 # tool is what to use instead of 'curl'
 <tool>
 lib579
@@ -72,14 +75,13 @@ http://%HOSTIP:%HTTPPORT/579 log/ip579
 #
 # Verify data after the test has been "shot"
 <verify>
 #
 # Verify data after the test has been "shot"
 <verify>
-<file name="log/ip579" mode="text">
+<file name="log/ip579">
 Progress callback called with UL 0 out of 0
 Progress callback called with UL 0 out of 0
-Progress callback called with UL 0 out of -1
-Progress callback called with UL 8 out of -1
-Progress callback called with UL 16 out of -1
-Progress callback called with UL 26 out of -1
-Progress callback called with UL 61 out of -1
-Progress callback called with UL 66 out of -1
+Progress callback called with UL 8 out of 0
+Progress callback called with UL 16 out of 0
+Progress callback called with UL 26 out of 0
+Progress callback called with UL 61 out of 0
+Progress callback called with UL 66 out of 0
 </file>
 </verify>
 </testcase>
 </file>
 </verify>
 </testcase>
index 8256f0e..1396559 100644 (file)
@@ -11,14 +11,14 @@ Duplicate-header
 # Server-side
 <reply>
 <data>
 # Server-side
 <reply>
 <data>
-HTTP/1.1 302 eat this!
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Location: this-is-the-first.html
-Content-Length: 0
-Connection: close
-Location: and there's a second one too! / moo.html
-
+HTTP/1.1 302 eat this!\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Location: this-is-the-first.html\r
+Content-Length: 0\r
+Connection: close\r
+Location: and there's a second one too! / moo.html\r
+\r
 </data>
 </reply>
 
 </data>
 </reply>
 
index acaa41b..83d7b60 100644 (file)
@@ -11,14 +11,14 @@ Duplicate-header
 # Server-side
 <reply>
 <data>
 # Server-side
 <reply>
 <data>
-HTTP/1.1 200 all good!
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Type: text/html
-Content-Length: 0
-Connection: close
-Content-Type: changed/my/mind
-
+HTTP/1.1 200 all good!\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Type: text/html\r
+Content-Length: 0\r
+Connection: close\r
+Content-Type: changed/my/mind\r
+\r
 </data>
 </reply>
 
 </data>
 </reply>
 
index 8881a87..64c32db 100644 (file)
@@ -34,6 +34,9 @@ Moooooooooooo
 
 # Verify data after the test has been "shot"
 <verify>
 
 # Verify data after the test has been "shot"
 <verify>
+<valgrind>
+disable
+</valgrind>
 <strip>
 </strip>
 <protocol>
 <strip>
 </strip>
 <protocol>
index 8fca7d2..6ad7f7d 100644 (file)
@@ -35,6 +35,9 @@ sftp://localhost:%SSHPORT%PWD/log/upload583.txt %USER:
 
 # Verify data after the test has been "shot"
 <verify>
 
 # Verify data after the test has been "shot"
 <verify>
+<valgrind>
+disable
+</valgrind>
 <errorcode>
 0
 </errorcode>
 <errorcode>
 0
 </errorcode>
index 582a911..309c7b6 100644 (file)
@@ -11,31 +11,31 @@ multi
 # Silly division of the first request is solely to appease the server which expects n_data_items == n_requests
 <reply>
 <data1>
 # Silly division of the first request is solely to appease the server which expects n_data_items == n_requests
 <reply>
 <data1>
-HTTP/1.1 200 OK
-Server: test-server/fake
-Content-Length: 4
-
+HTTP/1.1 200 OK\r
+Server: test-server/fake\r
+Content-Length: 4\r
+\r
 584
 </data1>
 <data2>
 584
 </data1>
 <data2>
-HTTP/1.1 200 OK
+HTTP/1.1 200 OK\r
 </data2>
 <data3>
 </data2>
 <data3>
-Server: test-server/fake
+Server: test-server/fake\r
 </data3>
 <data4>
 </data3>
 <data4>
-Content-Length: 0
-
-HTTP/1.1 200 OK
-Server: test-server/fake
-Content-Length: 5
-
+Content-Length: 0\r
+\r
+HTTP/1.1 200 OK\r
+Server: test-server/fake\r
+Content-Length: 5\r
+\r
 585
 
 585
 
-HTTP/1.1 200 OK
-Server: test-server/fake
-Content-Length: 4
-
+HTTP/1.1 200 OK\r
+Server: test-server/fake\r
+Content-Length: 4\r
+\r
 586
 </data4>
 </reply>
 586
 </data4>
 </reply>
@@ -76,26 +76,26 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 \r
 </protocol>
 Accept: */*\r
 \r
 </protocol>
-<stdout mode="text">
-HTTP/1.1 200 OK
-Server: test-server/fake
-Content-Length: 4
-
+<stdout>
+HTTP/1.1 200 OK\r
+Server: test-server/fake\r
+Content-Length: 4\r
+\r
 584
 584
-HTTP/1.1 200 OK
-Server: test-server/fake
-Content-Length: 0
-
-HTTP/1.1 200 OK
-Server: test-server/fake
-Content-Length: 5
-
+HTTP/1.1 200 OK\r
+Server: test-server/fake\r
+Content-Length: 0\r
+\r
+HTTP/1.1 200 OK\r
+Server: test-server/fake\r
+Content-Length: 5\r
+\r
 585
 
 585
 
-HTTP/1.1 200 OK
-Server: test-server/fake
-Content-Length: 4
-
+HTTP/1.1 200 OK\r
+Server: test-server/fake\r
+Content-Length: 4\r
+\r
 586
 </stdout>
 </verify>
 586
 </stdout>
 </verify>
index 32cb06f..2096e81 100644 (file)
@@ -12,23 +12,23 @@ CURLOPT_CLOSESOCKETFUNCTION
 # Server-side
 <reply>
 <data>
 # Server-side
 <reply>
 <data>
-HTTP/1.1 302 eat this!
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Location: this-is-the-first.html
-Content-Length: 0
-Connection: close
-
+HTTP/1.1 302 eat this!\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Location: this-is-the-first.html\r
+Content-Length: 0\r
+Connection: close\r
+\r
 </data>
 <datacheck>
 [OPEN] counter: 1
 </data>
 <datacheck>
 [OPEN] counter: 1
-HTTP/1.1 302 eat this!
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Location: this-is-the-first.html
-Content-Length: 0
-Connection: close
-
+HTTP/1.1 302 eat this!\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Location: this-is-the-first.html\r
+Content-Length: 0\r
+Connection: close\r
+\r
 [CLOSE] counter: 1
 </datacheck>
 </reply>
 [CLOSE] counter: 1
 </datacheck>
 </reply>
index 0515b52..b30828c 100644 (file)
@@ -1,9 +1,9 @@
+<testcase>
 #
 # This test is exactly like 525 but the server rejects the EPRT command.
 # Written up to make sure that there's nothing in the multi interface
 # active connection case that differs between PORT and EPRT use
 #
 #
 # This test is exactly like 525 but the server rejects the EPRT command.
 # Written up to make sure that there's nothing in the multi interface
 # active connection case that differs between PORT and EPRT use
 #
-<testcase>
 <info>
 <keywords>
 FTP
 <info>
 <keywords>
 FTP
index f50664d..0712c16 100644 (file)
@@ -74,6 +74,8 @@ lib590
 </tool>
 <features>
 NTLM
 </tool>
 <features>
 NTLM
+!SSPI
+debug
 </features>
  <name>
 HTTP proxy offers Negotiate+NTLM, use only NTLM
 </features>
  <name>
 HTTP proxy offers Negotiate+NTLM, use only NTLM
@@ -112,7 +114,7 @@ Accept: */*
 Proxy-Connection: Keep-Alive\r
 \r
 GET http://test.remote.example.com/path/590 HTTP/1.1\r
 Proxy-Connection: Keep-Alive\r
 \r
 GET http://test.remote.example.com/path/590 HTTP/1.1\r
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAAAgACAHAAAAAIAAgAcgAAAAAAAAAAAAAABoKBAAQt1KW5CgG4YdWWcfXyfXBz1ZMCzYp37xYjBiAizmw58O6eQS7yR66eqYGWeSwl9W1lY3VybGhvc3Q=\r
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAAAgACAPYAAAAIAAgA+AAAAAAAAAAAAAAABoKBAB3Hr6SDn3NDNkgebbaP88ExMjM0MjIzNFIW4N7aYT44bAIg1jt2blUBAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAbWVjdXJsaG9zdA==\r
 User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
 Host: test.remote.example.com\r
 Accept: */*\r
 User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13\r
 Host: test.remote.example.com\r
 Accept: */*\r
index 1455a38..e1dfcd3 100644 (file)
@@ -1,9 +1,9 @@
+<testcase>
 #
 # For this test the server rejects the EPRT command,
 # code in lib591 makes use of curl_multi_timeout()
 # and server does not establish data connection.
 #
 #
 # For this test the server rejects the EPRT command,
 # code in lib591 makes use of curl_multi_timeout()
 # and server does not establish data connection.
 #
-<testcase>
 <info>
 <keywords>
 FTP
 <info>
 <keywords>
 FTP
index f443205..6151ccc 100644 (file)
@@ -1,9 +1,9 @@
+<testcase>
 #
 # For this test the server rejects the EPRT command,
 # code in lib591 makes use of curl_multi_timeout()
 # and server does not establish data connection.
 #
 #
 # For this test the server rejects the EPRT command,
 # code in lib591 makes use of curl_multi_timeout()
 # and server does not establish data connection.
 #
-<testcase>
 <info>
 <keywords>
 FTP
 <info>
 <keywords>
 FTP
index c3b1f91..a136000 100644 (file)
@@ -1,9 +1,9 @@
+<testcase>
 #
 # For this test the server rejects the EPRT command,
 # code in lib591 makes use of curl_multi_timeout()
 # and server does not establish data connection.
 #
 #
 # For this test the server rejects the EPRT command,
 # code in lib591 makes use of curl_multi_timeout()
 # and server does not establish data connection.
 #
-<testcase>
 <info>
 <keywords>
 FTP
 <info>
 <keywords>
 FTP
index 77b5864..d6144ae 100644 (file)
@@ -1,9 +1,9 @@
+<testcase>
 #
 # For this test the server rejects the EPRT command,
 # code in lib591 makes use of curl_multi_timeout()
 # and server does not establish data connection.
 #
 #
 # For this test the server rejects the EPRT command,
 # code in lib591 makes use of curl_multi_timeout()
 # and server does not establish data connection.
 #
-<testcase>
 <info>
 <keywords>
 FTP
 <info>
 <keywords>
 FTP
index 28ff9c1..0099a85 100644 (file)
@@ -1,7 +1,7 @@
+<testcase>
 #
 # This test is like 585 but uses passive FTP instead of HTTP
 #
 #
 # This test is like 585 but uses passive FTP instead of HTTP
 #
-<testcase>
 <info>
 <keywords>
 FTP
 <info>
 <keywords>
 FTP
index bb5def4..9377289 100644 (file)
@@ -1,7 +1,7 @@
+<testcase>
 #
 # This test is like 585 but uses active FTP instead of HTTP
 #
 #
 # This test is like 585 but uses active FTP instead of HTTP
 #
-<testcase>
 <info>
 <keywords>
 FTP
 <info>
 <keywords>
 FTP
index f43bbac..11a0dbc 100644 (file)
@@ -12,31 +12,31 @@ curl_easy_reset
 #
 # Server-side
 <reply>
 #
 # Server-side
 <reply>
-<data mode="text">
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+<data>
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 -foo-
 </data>
 
 # since the request runs twice
 <datacheck>
 -foo-
 </data>
 
 # since the request runs twice
 <datacheck>
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 -foo-
 -foo-
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 -foo-
 </datacheck>
 
 -foo-
 </datacheck>
 
index 8215137..9ce8b23 100644 (file)
@@ -9,24 +9,24 @@ HTTP POST
 # Server-side
 <reply>
 <data>
 # Server-side
 <reply>
 <data>
-HTTP/1.1 302 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Location: 5990001
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+HTTP/1.1 302 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Location: 5990001\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 -foo-
 </data>
 <data1>
 -foo-
 </data>
 <data1>
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Transfer-Encoding: chunked
-Connection: close
-Content-Type: text/html
-
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Transfer-Encoding: chunked\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 32\r
 this data is slightly larger than the first piece
 \r
 32\r
 this data is slightly larger than the first piece
 \r
@@ -35,21 +35,21 @@ this data is slightly larger than the first piece
 </data1>
 
 <datacheck>
 </data1>
 
 <datacheck>
-HTTP/1.1 302 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Location: 5990001
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
-HTTP/1.1 200 OK
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Transfer-Encoding: chunked
-Connection: close
-Content-Type: text/html
-
+HTTP/1.1 302 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Location: 5990001\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
+HTTP/1.1 200 OK\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Transfer-Encoding: chunked\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 this data is slightly larger than the first piece
 </datacheck>
 
 this data is slightly larger than the first piece
 </datacheck>
 
@@ -71,13 +71,15 @@ lib599
 HTTP GET with progress callback and redirects changing content sizes
  </name>
  <command>
 HTTP GET with progress callback and redirects changing content sizes
  </name>
  <command>
-http://%HOSTIP:%HTTPPORT/599
+http://%HOSTIP:%HTTPPORT/599 log/ip599
 </command>
 </client>
 
 #
 # Verify data after the test has been "shot"
 <verify>
 </command>
 </client>
 
 #
 # Verify data after the test has been "shot"
 <verify>
-
+<file name="log/ip599">
+CL: -1
+</file>
 </verify>
 </testcase>
 </verify>
 </testcase>
index af0259f..566086e 100644 (file)
@@ -23,6 +23,9 @@ SFTP retrieval of nonexistent file
 #
 # Verify data after the test has been "shot"
 <verify>
 #
 # Verify data after the test has been "shot"
 <verify>
+<valgrind>
+disable
+</valgrind>
 <errorcode>
 78
 </errorcode>
 <errorcode>
 78
 </errorcode>
index d2de279..e6dbbb9 100644 (file)
@@ -23,6 +23,7 @@ Set-Cookie: test3=maybe; domain=foo.com; path=/moo; secure
 Set-Cookie: test4=no; domain=nope.foo.com; path=/moo; secure\r
 Set-Cookie: test5=name; domain=anything.com; path=/ ; secure\r
 Set-Cookie: fake=fooledyou; domain=..com; path=/;\r
 Set-Cookie: test4=no; domain=nope.foo.com; path=/moo; secure\r
 Set-Cookie: test5=name; domain=anything.com; path=/ ; secure\r
 Set-Cookie: fake=fooledyou; domain=..com; path=/;\r
+Set-Cookie: supercookie=fooledyou; domain=.com; path=/;^M
 Content-Length: 4\r
 \r
 boo
 Content-Length: 4\r
 \r
 boo
index 19e505b..1a639d6 100644 (file)
@@ -33,6 +33,9 @@ for ssh upload test
 #
 # Verify data after the test has been "shot"
 <verify>
 #
 # Verify data after the test has been "shot"
 <verify>
+<valgrind>
+disable
+</valgrind>
 <errorcode>
 79
 </errorcode>
 <errorcode>
 79
 </errorcode>
index ae29d9b..01c5221 100644 (file)
@@ -2,7 +2,7 @@
 <info>
 <keywords>
 SFTP
 <info>
 <keywords>
 SFTP
-quote
+pre-quote
 NOBODY
 </keywords>
 </info>
 NOBODY
 </keywords>
 </info>
index 6bd82a8..7a2e3d0 100644 (file)
@@ -52,6 +52,7 @@ This IS the real page!
 http
 </server>
 <features>
 http
 </server>
 <features>
+!SSPI
 crypto
 </features>
  <name>
 crypto
 </features>
  <name>
diff --git a/tests/data/test640 b/tests/data/test640
new file mode 100644 (file)
index 0000000..e3e715b
--- /dev/null
@@ -0,0 +1,41 @@
+<testcase>
+<info>
+<keywords>
+SFTP
+NOBODY
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+sftp
+</server>
+ <name>
+SFTP --head retrieval
+ </name>
+ <command>
+--key curl_client_key --pubkey curl_client_key.pub -u %USER: sftp://%HOSTIP:%SSHPORT%PWD/log/file640.txt --insecure --head
+</command>
+<file name="log/file640.txt">
+Test data
+for ssh test
+</file>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<valgrind>
+disable
+</valgrind>
+</verify>
+</testcase>
diff --git a/tests/data/test641 b/tests/data/test641
new file mode 100644 (file)
index 0000000..beb59d6
--- /dev/null
@@ -0,0 +1,41 @@
+<testcase>
+<info>
+<keywords>
+SCP
+NOBODY
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+scp
+</server>
+ <name>
+SCP --head retrieval
+ </name>
+ <command>
+--key curl_client_key --pubkey curl_client_key.pub -u %USER: scp://%HOSTIP:%SSHPORT%PWD/log/file641.txt --insecure --head
+</command>
+<file name="log/file641.txt">
+Test data
+for ssh test
+</file>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<valgrind>
+disable
+</valgrind>
+</verify>
+</testcase>
index 8582a0c..001d598 100644 (file)
@@ -52,6 +52,7 @@ This is not the real page either
 http
 </server>
 <features>
 http
 </server>
 <features>
+!SSPI
 crypto
 </features>
  <name>
 crypto
 </features>
  <name>
index bfe6edd..58d35e6 100644 (file)
@@ -56,6 +56,8 @@ Finally, this is the real page!
 <client>
 <features>
 NTLM
 <client>
 <features>
 NTLM
+!SSPI
+debug
 </features>
 <server>
 http
 </features>
 <server>
 http
@@ -90,7 +92,7 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 \r
 GET /67 HTTP/1.1\r
 Accept: */*\r
 \r
 GET /67 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoKBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
index 10b4429..92a915b 100644 (file)
@@ -55,6 +55,8 @@ Wrong password dude. Get it fixed and return.
 <client>
 <features>
 NTLM
 <client>
 <features>
 NTLM
+!SSPI
+debug
 </features>
 <server>
 http
 </features>
 <server>
 http
@@ -89,7 +91,7 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 \r
 GET /68 HTTP/1.1\r
 Accept: */*\r
 \r
 GET /68 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoKBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
index 441aed7..50603b0 100644 (file)
@@ -72,6 +72,8 @@ Finally, this is the real page!
 <client>
 <features>
 NTLM
 <client>
 <features>
 NTLM
+!SSPI
+debug
 </features>
 <server>
 http
 </features>
 <server>
 http
@@ -111,7 +113,7 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 \r
 GET /69 HTTP/1.1\r
 Accept: */*\r
 \r
 GET /69 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoKBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
index 2fc0327..74f70e1 100644 (file)
@@ -52,6 +52,7 @@ This IS the real page!
 # Client-side
 <client>
 <features>
 # Client-side
 <client>
 <features>
+!SSPI
 NTLM
 </features>
 <server>
 NTLM
 </features>
 <server>
index 5c24271..b90e19c 100644 (file)
@@ -54,6 +54,7 @@ This IS the real page!
 http
 </server>
 <features>
 http
 </server>
 <features>
+!SSPI
 crypto
 </features>
  <name>
 crypto
 </features>
  <name>
index 4c08e26..dbe0e9c 100644 (file)
@@ -3,6 +3,7 @@
 <keywords>
 HTTP
 HTTP GET
 <keywords>
 HTTP
 HTTP GET
+globbing
 {} list
 </keywords>
 </info>
 {} list
 </keywords>
 </info>
index 07f6990..d8836b9 100644 (file)
@@ -3,6 +3,7 @@
 <keywords>
 HTTP
 HTTP GET
 <keywords>
 HTTP
 HTTP GET
+globbing
 FAILURE
 </keywords>
 </info>
 FAILURE
 </keywords>
 </info>
@@ -24,7 +25,7 @@ http
 HTTP, urlglob retrieval with bad range
  </name>
  <command option="no-output">
 HTTP, urlglob retrieval with bad range
  </name>
  <command option="no-output">
-"http://%HOSTIP:%HTTPPORT/[2-1]" -o "log/weee#1.dump" --stderr -
+"http://a-site-never-accessed.example.org/[2-1]" -o "log/weee#1.dump" --stderr -
 </command>
 # The error message on stdout implicitly depends on the length of the
 # URL, so refuse to run if the length is unexpected.
 </command>
 # The error message on stdout implicitly depends on the length of the
 # URL, so refuse to run if the length is unexpected.
@@ -43,7 +44,7 @@ perl %SRCDIR/libtest/test75.pl http://%HOSTIP:%HTTPPORT/ 22
 3
 </errorcode>
 <stdout mode="text">
 3
 </errorcode>
 <stdout mode="text">
-curl: (3) [globbing] error: bad range specification after pos 24
+curl: (3) [globbing] bad range in column 47
 </stdout>
 </verify>
 </testcase>
 </stdout>
 </verify>
 </testcase>
index 90f4563..6a92158 100644 (file)
@@ -3,6 +3,7 @@
 <keywords>
 HTTP
 HTTP GET
 <keywords>
 HTTP
 HTTP GET
+If-Modified-Since
 -z
 </keywords>
 </info>
 -z
 </keywords>
 </info>
index aa889c5..6768000 100644 (file)
@@ -3,6 +3,7 @@
 <keywords>
 HTTP
 HTTP GET
 <keywords>
 HTTP
 HTTP GET
+If-Modified-Since
 -z
 </keywords>
 </info>
 -z
 </keywords>
 </info>
index 4d54541..030fd55 100644 (file)
@@ -42,7 +42,8 @@ Set-Cookie: duplicate=test; domain=.0.0.1; domain=.0.0.1; path=/donkey;
 Set-Cookie: cookie=yes; path=/we;
 Set-Cookie: cookie=perhaps; path=/we/want;
 Set-Cookie: nocookie=yes; path=/WE;
 Set-Cookie: cookie=yes; path=/we;
 Set-Cookie: cookie=perhaps; path=/we/want;
 Set-Cookie: nocookie=yes; path=/WE;
-Set-Cookie: blexp=yesyes; domain=.0.0.1; domain=.0.0.1; expiry=totally bad;
+Set-Cookie: blexp=yesyes; domain=%HOSTIP; domain=%HOSTIP; expiry=totally bad;
+Set-Cookie: partialip=nono; domain=.0.0.1;
 
 </file>
 <precheck>
 
 </file>
 <precheck>
index 88e3f60..6b29f7a 100644 (file)
@@ -2,6 +2,7 @@
 <info>
 <keywords>
 IMAP
 <info>
 <keywords>
 IMAP
+Clear Text
 FETCH
 </keywords>
 </info>
 FETCH
 </keywords>
 </info>
@@ -27,7 +28,7 @@ body
 imap
 </server>
  <name>
 imap
 </server>
  <name>
-IMAP FETCH
+IMAP FETCH message
  </name>
  <command>
 'imap://%HOSTIP:%IMAPPORT/800/;UID=1' -u user:secret
  </name>
  <command>
 'imap://%HOSTIP:%IMAPPORT/800/;UID=1' -u user:secret
index d112eb2..0012d3e 100644 (file)
@@ -2,6 +2,7 @@
 <info>
 <keywords>
 IMAP
 <info>
 <keywords>
 IMAP
+Clear Text
 FETCH
 </keywords>
 </info>
 FETCH
 </keywords>
 </info>
@@ -24,7 +25,7 @@ body
 imap
 </server>
  <name>
 imap
 </server>
  <name>
-IMAP FETCH by UID and SECTION
+IMAP FETCH message by UID and SECTION
  </name>
  <command>
 'imap://%HOSTIP:%IMAPPORT/801/;UID=123/;SECTION=1' -u user:secret
  </name>
  <command>
 'imap://%HOSTIP:%IMAPPORT/801/;UID=123/;SECTION=1' -u user:secret
index 3bb7165..17349a8 100644 (file)
@@ -2,6 +2,7 @@
 <info>
 <keywords>
 IMAP
 <info>
 <keywords>
 IMAP
+Clear Text
 SELECT
 UIDVALIDITY
 </keywords>
 SELECT
 UIDVALIDITY
 </keywords>
index 220c845..5b8cc9e 100644 (file)
@@ -2,6 +2,7 @@
 <info>
 <keywords>
 IMAP
 <info>
 <keywords>
 IMAP
+Clear Text
 SELECT
 UIDVALIDITY
 FAILURE
 SELECT
 UIDVALIDITY
 FAILURE
index 3fcf955..c6dfccf 100644 (file)
@@ -2,6 +2,7 @@
 <info>
 <keywords>
 IMAP
 <info>
 <keywords>
 IMAP
+Clear Text
 SELECT
 </keywords>
 </info>
 SELECT
 </keywords>
 </info>
@@ -27,7 +28,7 @@ imap
 IMAP doesn't perform SELECT if re-using the same mailbox
  </name>
  <command>
 IMAP doesn't perform SELECT if re-using the same mailbox
  </name>
  <command>
--u user:secret 'imap://%HOSTIP:%IMAPPORT/804/;UID=123/;SECTION=1' 'imap://%HOSTIP:%IMAPPORT/804/;UID=456/;SECTION=2.3'
+'imap://%HOSTIP:%IMAPPORT/804/;UID=123/;SECTION=1' 'imap://%HOSTIP:%IMAPPORT/804/;UID=456/;SECTION=2.3' -u user:secret
 </command>
 </client>
 
 </command>
 </client>
 
index 8703951..e70c1a6 100644 (file)
@@ -2,6 +2,7 @@
 <info>
 <keywords>
 IMAP
 <info>
 <keywords>
 IMAP
+Clear Text
 APPEND
 UPLOAD
 </keywords>
 APPEND
 UPLOAD
 </keywords>
@@ -19,10 +20,10 @@ UPLOAD
 imap
 </server>
  <name>
 imap
 </server>
  <name>
-IMAP APPEND
+IMAP APPEND message
  </name>
  <command>
  </name>
  <command>
--u user:secret -T log/upload805 'imap://%HOSTIP:%IMAPPORT/805'
+imap://%HOSTIP:%IMAPPORT/805 -T log/upload805 -u user:secret
 </command>
 <file name="log/upload805">
 Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST)\r
 </command>
 <file name="log/upload805">
 Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST)\r
index 59f6b1e..37822a4 100644 (file)
@@ -2,6 +2,7 @@
 <info>
 <keywords>
 IMAP
 <info>
 <keywords>
 IMAP
+Clear Text
 LIST
 </keywords>
 </info>
 LIST
 </keywords>
 </info>
@@ -23,10 +24,10 @@ LIST
 imap
 </server>
  <name>
 imap
 </server>
  <name>
-IMAP LIST
+IMAP LIST mailbox
  </name>
  <command>
  </name>
  <command>
--u user:secret 'imap://%HOSTIP:%IMAPPORT/806/'
+imap://%HOSTIP:%IMAPPORT/806 -u user:secret
 </command>
 </client>
 
 </command>
 </client>
 
index 0a6838b..1271b6d 100644 (file)
@@ -2,7 +2,8 @@
 <info>
 <keywords>
 IMAP
 <info>
 <keywords>
 IMAP
-STORE
+Clear Text
+LSUB
 CUSTOMREQUEST
 </keywords>
 </info>
 CUSTOMREQUEST
 </keywords>
 </info>
@@ -11,7 +12,9 @@ CUSTOMREQUEST
 # Server-side
 <reply>
 <data>
 # Server-side
 <reply>
 <data>
-* 123 FETCH (FLAGS (\Seen \Deleted))\r
+* LSUB () "/" /807/blurdybloop\r
+* LSUB (\Noselect) "/" /807/foo\r
+* LSUB () "/" /807/foo/bar\r
 </data>
 </reply>
 
 </data>
 </reply>
 
@@ -22,10 +25,10 @@ CUSTOMREQUEST
 imap
 </server>
  <name>
 imap
 </server>
  <name>
-IMAP STORE (CUSTOMREQUEST)
+IMAP LSUB mailbox
  </name>
  <command>
  </name>
  <command>
--u user:secret -X 'STORE 123 +Flags \Deleted' 'imap://%HOSTIP:%IMAPPORT/807'
+imap://%HOSTIP:%IMAPPORT -u user:secret -X 'LSUB "807" *'
 </command>
 </client>
 
 </command>
 </client>
 
@@ -35,9 +38,8 @@ IMAP STORE (CUSTOMREQUEST)
 <protocol>
 A001 CAPABILITY\r
 A002 LOGIN user secret\r
 <protocol>
 A001 CAPABILITY\r
 A002 LOGIN user secret\r
-A003 SELECT 807\r
-A004 STORE 123 +Flags \Deleted\r
-A005 LOGOUT\r
+A003 LSUB "807" *\r
+A004 LOGOUT\r
 </protocol>
 </verify>
 </testcase>
 </protocol>
 </verify>
 </testcase>
index 52ecb84..30c8bdf 100644 (file)
@@ -2,6 +2,7 @@
 <info>
 <keywords>
 IMAP
 <info>
 <keywords>
 IMAP
+Clear Text
 EXAMINE
 CUSTOMREQUEST
 </keywords>
 EXAMINE
 CUSTOMREQUEST
 </keywords>
@@ -28,10 +29,10 @@ CUSTOMREQUEST
 imap
 </server>
  <name>
 imap
 </server>
  <name>
-IMAP EXAMINE (CUSTOMREQUEST)
+IMAP EXAMINE mailbox (CUSTOMREQUEST)
  </name>
  <command>
  </name>
  <command>
-'imap://%HOSTIP:%IMAPPORT' -u user:secret -X 'EXAMINE 808'
+imap://%HOSTIP:%IMAPPORT -u user:secret -X 'EXAMINE 808'
 </command>
 </client>
 
 </command>
 </client>
 
index 099dd33..4283179 100644 (file)
@@ -2,6 +2,7 @@
 <info>
 <keywords>
 IMAP
 <info>
 <keywords>
 IMAP
+Clear Text
 STATUS
 CUSTOMREQUEST
 </keywords>
 STATUS
 CUSTOMREQUEST
 </keywords>
@@ -22,7 +23,7 @@ CUSTOMREQUEST
 imap
 </server>
  <name>
 imap
 </server>
  <name>
-IMAP STATUS (CUSTOMREQUEST)
+IMAP mailbox STATUS (CUSTOMREQUEST)
  </name>
  <command>
 imap://%HOSTIP:%IMAPPORT -u user:secret -X 'STATUS 809 (UIDNEXT MESSAGES)'
  </name>
  <command>
 imap://%HOSTIP:%IMAPPORT -u user:secret -X 'STATUS 809 (UIDNEXT MESSAGES)'
index 0da0bdc..ff258ed 100644 (file)
@@ -55,6 +55,8 @@ Finally, this is the real page!
 <client>
 <features>
 NTLM
 <client>
 <features>
 NTLM
+!SSPI
+debug
 </features>
 <server>
 http
 </features>
 <server>
 http
@@ -90,7 +92,7 @@ Accept: */*
 Proxy-Connection: Keep-Alive\r
 \r
 GET http://%HOSTIP:%HTTPPORT/81 HTTP/1.1\r
 Proxy-Connection: Keep-Alive\r
 \r
 GET http://%HOSTIP:%HTTPPORT/81 HTTP/1.1\r
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoKBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
diff --git a/tests/data/test810 b/tests/data/test810
new file mode 100644 (file)
index 0000000..6b4d243
--- /dev/null
@@ -0,0 +1,43 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+Clear Text
+SEARCH
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+* SEARCH 1 123 456 810\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+ <name>
+IMAP SEARCH for NEW messages
+ </name>
+ <command>
+imap://%HOSTIP:%IMAPPORT/810?NEW -u user:secret
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+A001 CAPABILITY\r
+A002 LOGIN user secret\r
+A003 SELECT 810\r
+A004 SEARCH NEW\r
+A005 LOGOUT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test811 b/tests/data/test811
new file mode 100644 (file)
index 0000000..8fb3aa7
--- /dev/null
@@ -0,0 +1,40 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+Clear Text
+CREATE
+CUSTOMREQUEST
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+ <name>
+IMAP CREATE mailbox (CUSTOMREQUEST)
+ </name>
+ <command>
+imap://%HOSTIP:%IMAPPORT -u user:secret -X 'CREATE 811'
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+A001 CAPABILITY\r
+A002 LOGIN user secret\r
+A003 CREATE 811\r
+A004 LOGOUT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test812 b/tests/data/test812
new file mode 100644 (file)
index 0000000..6d1b42d
--- /dev/null
@@ -0,0 +1,40 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+Clear Text
+DELETE
+CUSTOMREQUEST
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+ <name>
+IMAP DELETE mailbox (CUSTOMREQUEST)
+ </name>
+ <command>
+imap://%HOSTIP:%IMAPPORT -u user:secret -X 'DELETE 812'
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+A001 CAPABILITY\r
+A002 LOGIN user secret\r
+A003 DELETE 812\r
+A004 LOGOUT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test813 b/tests/data/test813
new file mode 100644 (file)
index 0000000..3544da6
--- /dev/null
@@ -0,0 +1,40 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+Clear Text
+RENAME
+CUSTOMREQUEST
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+ <name>
+IMAP RENAME mailbox (CUSTOMREQUEST)
+ </name>
+ <command>
+imap://%HOSTIP:%IMAPPORT -u user:secret -X 'RENAME 666 813'
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+A001 CAPABILITY\r
+A002 LOGIN user secret\r
+A003 RENAME 666 813\r
+A004 LOGOUT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test814 b/tests/data/test814
new file mode 100644 (file)
index 0000000..0b90e5b
--- /dev/null
@@ -0,0 +1,41 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+Clear Text
+CHECK
+CUSTOMREQUEST
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+ <name>
+IMAP CHECK mailbox (CUSTOMREQUEST)
+ </name>
+ <command>
+imap://%HOSTIP:%IMAPPORT/814 -u user:secret -X 'CHECK'
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+A001 CAPABILITY\r
+A002 LOGIN user secret\r
+A003 SELECT 814\r
+A004 CHECK\r
+A005 LOGOUT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test815 b/tests/data/test815
new file mode 100644 (file)
index 0000000..6ebe5bf
--- /dev/null
@@ -0,0 +1,46 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+Clear Text
+STORE
+CLOSE
+CUSTOMREQUEST
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data1>
+* 123 FETCH (FLAGS (\Seen \Deleted))\r
+</data1>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+ <name>
+IMAP STORE - delete message (CUSTOMREQUEST)
+ </name>
+ <command>
+imap://%HOSTIP:%IMAPPORT/815 -X 'STORE 123 +Flags \Deleted' -u user:secret -: imap://%HOSTIP:%IMAPPORT/815 -X CLOSE -u user:secret
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+A001 CAPABILITY\r
+A002 LOGIN user secret\r
+A003 SELECT 815\r
+A004 STORE 123 +Flags \Deleted\r
+A005 CLOSE\r
+A006 LOGOUT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test816 b/tests/data/test816
new file mode 100644 (file)
index 0000000..6df9b7d
--- /dev/null
@@ -0,0 +1,49 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+Clear Text
+STORE
+EXPUNGE
+CUSTOMREQUEST
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data1>
+* 123 FETCH (FLAGS (\Seen \Deleted))\r
+</data1>
+<data2>\r
+* 123 EXPUNGE\r
+</data2>\r
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+ <name>
+IMAP STORE - delete message with confirmation (CUSTOMREQUEST)
+ </name>
+ <command>
+imap://%HOSTIP:%IMAPPORT/816 -X 'STORE 123 +Flags \Deleted' -u user:secret -: imap://%HOSTIP:%IMAPPORT/816 -X EXPUNGE -u user:secret
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+A001 CAPABILITY\r
+A002 LOGIN user secret\r
+A003 SELECT 816\r
+A004 STORE 123 +Flags \Deleted\r
+A005 EXPUNGE\r
+A006 LOGOUT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test817 b/tests/data/test817
new file mode 100644 (file)
index 0000000..9b44ae9
--- /dev/null
@@ -0,0 +1,40 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+Clear Text
+COPY
+CUSTOMREQUEST
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+ <name>
+IMAP COPY message to mailbox (CUSTOMREQUEST)
+ </name>
+ <command>
+imap://%HOSTIP:%IMAPPORT -u user:secret -X 'COPY 123 817'
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+A001 CAPABILITY\r
+A002 LOGIN user secret\r
+A003 COPY 123 817\r
+A004 LOGOUT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test818 b/tests/data/test818
new file mode 100644 (file)
index 0000000..95282c4
--- /dev/null
@@ -0,0 +1,46 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+Clear Text
+NOOP
+CUSTOMREQUEST
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+* 22 EXPUNGE\r
+* 23 EXISTS\r
+* 3 RECENT\r
+* 14 FETCH (FLAGS (\Seen \Deleted))\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+ <name>
+IMAP NOOP (CUSTOMREQUEST)
+ </name>
+ <command>
+imap://%HOSTIP:%IMAPPORT -X NOOP -u user:secret
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+A001 CAPABILITY\r
+A002 LOGIN user secret\r
+A003 NOOP\r
+A004 LOGOUT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test819 b/tests/data/test819
new file mode 100644 (file)
index 0000000..d0aa47b
--- /dev/null
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+SASL
+SASL AUTH PLAIN
+RFC4616
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH PLAIN
+REPLY AUTHENTICATE +
+REPLY dXNlcgB1c2VyAHNlY3JldA== A002 OK AUTHENTICATE completed
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+ <name>
+IMAP plain authentication
+ </name>
+ <command>
+'imap://%HOSTIP:%IMAPPORT/819/;UID=1' -u user:secret
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+A001 CAPABILITY\r
+A002 AUTHENTICATE PLAIN\r
+dXNlcgB1c2VyAHNlY3JldA==\r
+A003 SELECT 819\r
+A004 FETCH 1 BODY[]\r
+A005 LOGOUT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test820 b/tests/data/test820
new file mode 100644 (file)
index 0000000..f638f1c
--- /dev/null
@@ -0,0 +1,57 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+SASL
+SASL AUTH LOGIN
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH LOGIN
+REPLY AUTHENTICATE + VXNlcm5hbWU6
+REPLY dXNlcg== + UGFzc3dvcmQ6
+REPLY c2VjcmV0 A002 OK AUTHENTICATE completed
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+ <name>
+IMAP login authentication
+ </name>
+ <command>
+'imap://%HOSTIP:%IMAPPORT/820/;UID=1' -u user:secret
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+A001 CAPABILITY\r
+A002 AUTHENTICATE LOGIN\r
+dXNlcg==\r
+c2VjcmV0\r
+A003 SELECT 820\r
+A004 FETCH 1 BODY[]\r
+A005 LOGOUT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test821 b/tests/data/test821
new file mode 100644 (file)
index 0000000..aee373b
--- /dev/null
@@ -0,0 +1,59 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+SASL
+SASL AUTH CRAM-MD5
+RFC2195
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH CRAM-MD5
+REPLY AUTHENTICATE + PDE5NzIuOTg3NjU0MzIxQGN1cmw+
+REPLY dXNlciA3MDMxNzI1NTk5ZmRiYjVkNDEyNjg5YWEzMjNlM2UwYg== A002 OK AUTHENTICATE completed
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+<features>
+crypto
+</features>
+ <name>
+IMAP CRAM-MD5 authentication
+ </name>
+ <command>
+'imap://%HOSTIP:%IMAPPORT/821/;UID=1' -u user:secret
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+A001 CAPABILITY\r
+A002 AUTHENTICATE CRAM-MD5\r
+dXNlciA3MDMxNzI1NTk5ZmRiYjVkNDEyNjg5YWEzMjNlM2UwYg==\r
+A003 SELECT 821\r
+A004 FETCH 1 BODY[]\r
+A005 LOGOUT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test822 b/tests/data/test822
new file mode 100644 (file)
index 0000000..65ac43e
--- /dev/null
@@ -0,0 +1,71 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+SASL
+SASL AUTH NTLM
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH NTLM
+REPLY AUTHENTICATE +
+REPLY TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= + TlRMTVNTUAACAAAAAgACADAAAAAGgoEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==
+REPLY TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA== A002 OK AUTHENTICATE completed
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+<features>
+NTLM
+!SSPI
+debug
+</features>
+ <name>
+IMAP NTLM authentication
+ </name>
+ <setenv>
+# we force our own host name, in order to make the test machine independent
+CURL_GETHOSTNAME=curlhost
+# we try to use the LD_PRELOAD hack, if not a debug build
+LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
+ </setenv>
+ <command>
+'imap://%HOSTIP:%IMAPPORT/822/;UID=1' -u testuser:testpass
+</command>
+<precheck>
+chkhostname curlhost
+</precheck>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+A001 CAPABILITY\r
+A002 AUTHENTICATE NTLM\r
+TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
+TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
+A003 SELECT 822\r
+A004 FETCH 1 BODY[]\r
+A005 LOGOUT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test823 b/tests/data/test823
new file mode 100644 (file)
index 0000000..6f8249b
--- /dev/null
@@ -0,0 +1,63 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+SASL
+SASL AUTH DIGEST-MD5
+RFC2831
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH DIGEST-MD5
+REPLY AUTHENTICATE + cmVhbG09ImN1cmwiLG5vbmNlPSI1MzAwZDE3YTFkNjk1YmQ0MTFlNGNkZjk2Zjk1NDhjMjNjZWQ2MTc1IixhbGdvcml0aG09bWQ1LXNlc3MscW9wPSJhdXRoIg==
+REPLY dXNlcm5hbWU9InVzZXIiLHJlYWxtPSJjdXJsIixub25jZT0iNTMwMGQxN2ExZDY5NWJkNDExZTRjZGY5NmY5NTQ4YzIzY2VkNjE3NSIsY25vbmNlPSIzNDMzMzIzMTM0MzMzMjMyMzQzMzMyMzMzNDMzMzIzNCIsbmM9IjAwMDAwMDAxIixkaWdlc3QtdXJpPSJpbWFwL2N1cmwiLHJlc3BvbnNlPWJlYjMzYmY2MWFhMDgzNzZmZWE4ZjJkM2MwODliMjFmLHFvcD1hdXRo +
+REPLY  A002 OK AUTHENTICATE completed
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+<features>
+!SSPI
+debug
+crypto
+</features>
+ <name>
+IMAP DIGEST-MD5 authentication
+ </name>
+ <command>
+'imap://%HOSTIP:%IMAPPORT/823/;UID=1' -u user:secret
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+A001 CAPABILITY\r
+A002 AUTHENTICATE DIGEST-MD5\r
+dXNlcm5hbWU9InVzZXIiLHJlYWxtPSJjdXJsIixub25jZT0iNTMwMGQxN2ExZDY5NWJkNDExZTRjZGY5NmY5NTQ4YzIzY2VkNjE3NSIsY25vbmNlPSIzNDMzMzIzMTM0MzMzMjMyMzQzMzMyMzMzNDMzMzIzNCIsbmM9IjAwMDAwMDAxIixkaWdlc3QtdXJpPSJpbWFwL2N1cmwiLHJlc3BvbnNlPWJlYjMzYmY2MWFhMDgzNzZmZWE4ZjJkM2MwODliMjFmLHFvcD1hdXRo\r
+\r
+A003 SELECT 823\r
+A004 FETCH 1 BODY[]\r
+A005 LOGOUT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test824 b/tests/data/test824
new file mode 100644 (file)
index 0000000..242c1b4
--- /dev/null
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+SASL
+SASL AUTH OAUTH2
+RFC6749
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH XOAUTH2
+REPLY AUTHENTICATE +
+REPLY dXNlcj11c2VyAWF1dGg9QmVhcmVyIG1GXzkuQjVmLTQuMUpxTQEB A002 OK AUTHENTICATE completed
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+ <name>
+IMAP OAuth 2.0 authentication
+ </name>
+ <command>
+'imap://%HOSTIP:%IMAPPORT/824/;UID=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+A001 CAPABILITY\r
+A002 AUTHENTICATE XOAUTH2\r
+dXNlcj11c2VyAWF1dGg9QmVhcmVyIG1GXzkuQjVmLTQuMUpxTQEB\r
+A003 SELECT 824\r
+A004 FETCH 1 BODY[]\r
+A005 LOGOUT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test825 b/tests/data/test825
new file mode 100644 (file)
index 0000000..6532b3a
--- /dev/null
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+SASL
+SASL AUTH PLAIN
+SASL-IR
+RFC4616
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH PLAIN
+CAPA SASL-IR
+REPLY AUTHENTICATE A002 OK AUTHENTICATE completed
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+ <name>
+IMAP plain authentication with initial response
+ </name>
+ <command>
+'imap://%HOSTIP:%IMAPPORT/825/;UID=1' -u user:secret
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+A001 CAPABILITY\r
+A002 AUTHENTICATE PLAIN dXNlcgB1c2VyAHNlY3JldA==\r
+A003 SELECT 825\r
+A004 FETCH 1 BODY[]\r
+A005 LOGOUT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test826 b/tests/data/test826
new file mode 100644 (file)
index 0000000..0f92829
--- /dev/null
@@ -0,0 +1,57 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+SASL
+SASL AUTH LOGIN
+SASL-IR
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH LOGIN
+CAPA SASL-IR
+REPLY AUTHENTICATE + UGFzc3dvcmQ6
+REPLY c2VjcmV0 A002 OK AUTHENTICATE completed
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+ <name>
+IMAP login authentication with initial response
+ </name>
+ <command>
+'imap://%HOSTIP:%IMAPPORT/826/;UID=1' -u user:secret
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+A001 CAPABILITY\r
+A002 AUTHENTICATE LOGIN dXNlcg==\r
+c2VjcmV0\r
+A003 SELECT 826\r
+A004 FETCH 1 BODY[]\r
+A005 LOGOUT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test827 b/tests/data/test827
new file mode 100644 (file)
index 0000000..778e765
--- /dev/null
@@ -0,0 +1,71 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+SASL
+SASL AUTH NTLM
+SASL-IR
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH NTLM
+CAPA SASL-IR
+REPLY AUTHENTICATE + TlRMTVNTUAACAAAAAgACADAAAAAGgoEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==
+REPLY TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA== A002 OK AUTHENTICATE completed
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+<features>
+NTLM
+!SSPI
+debug
+</features>
+ <name>
+IMAP NTLM authentication with initial response
+ </name>
+ <setenv>
+# we force our own host name, in order to make the test machine independent
+CURL_GETHOSTNAME=curlhost
+# we try to use the LD_PRELOAD hack, if not a debug build
+LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
+ </setenv>
+ <command>
+'imap://%HOSTIP:%IMAPPORT/827/;UID=1' -u testuser:testpass
+</command>
+<precheck>
+chkhostname curlhost
+</precheck>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+A001 CAPABILITY\r
+A002 AUTHENTICATE NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
+TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
+A003 SELECT 827\r
+A004 FETCH 1 BODY[]\r
+A005 LOGOUT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test828 b/tests/data/test828
new file mode 100644 (file)
index 0000000..b2fb693
--- /dev/null
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+SASL
+SASL AUTH OAUTH2
+SASL-IR
+RFC6749
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH XOAUTH2
+CAPA SASL-IR
+REPLY AUTHENTICATE A002 OK AUTHENTICATE completed
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+ <name>
+IMAP OAuth 2.0 authentication with initial response
+ </name>
+ <command>
+'imap://%HOSTIP:%IMAPPORT/828/;UID=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+A001 CAPABILITY\r
+A002 AUTHENTICATE XOAUTH2 dXNlcj11c2VyAWF1dGg9QmVhcmVyIG1GXzkuQjVmLTQuMUpxTQEB\r
+A003 SELECT 828\r
+A004 FETCH 1 BODY[]\r
+A005 LOGOUT\r
+</protocol>
+</verify>
+</testcase>
similarity index 88%
rename from tests/data/test1324
rename to tests/data/test829
index c9835ef..cefba0d 100644 (file)
@@ -15,7 +15,7 @@ imap
 IMAP with URL-encoded CR LF in the URL
  </name>
  <command>
 IMAP with URL-encoded CR LF in the URL
  </name>
  <command>
-imap://%HOSTIP:%IMAPPORT/%0d%0a/1322
+imap://%HOSTIP:%IMAPPORT/%0d%0a/829
 </command>
 </client>
 
 </command>
 </client>
 
index 4386c12..e00a288 100644 (file)
@@ -50,7 +50,7 @@ http-proxy
 HTTP over proxy-tunnel with site authentication
  </name>
  <command>
 HTTP over proxy-tunnel with site authentication
  </name>
  <command>
-http://test.83:%HTTPPORT/we/want/that/page/83 -p -x %HOSTIP:%PROXYPORT --user iam:myself
+http://test.83:%HTTPPORT/we/want/that/page/83 -p -x %HOSTIP:%PROXYPORT --user 'iam:my:;self'
 </command>
 </client>
 
 </command>
 </client>
 
@@ -69,7 +69,7 @@ Proxy-Connection: Keep-Alive
 </proxy>
 <protocol>
 GET /we/want/that/page/83 HTTP/1.1\r
 </proxy>
 <protocol>
 GET /we/want/that/page/83 HTTP/1.1\r
-Authorization: Basic aWFtOm15c2VsZg==\r
+Authorization: Basic aWFtOm15OjtzZWxm\r
 User-Agent: curl/7.10.7-pre2 (i686-pc-linux-gnu) libcurl/7.10.7-pre2 OpenSSL/0.9.7a zlib/1.1.3\r
 Host: test.83:%HTTPPORT\r
 Accept: */*\r
 User-Agent: curl/7.10.7-pre2 (i686-pc-linux-gnu) libcurl/7.10.7-pre2 OpenSSL/0.9.7a zlib/1.1.3\r
 Host: test.83:%HTTPPORT\r
 Accept: */*\r
diff --git a/tests/data/test830 b/tests/data/test830
new file mode 100644 (file)
index 0000000..5803bb1
--- /dev/null
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+SASL
+SASL AUTH CRAM-MD5
+SASL CANCELLATION
+RFC2195
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH CRAM-MD5
+CAPA LOGINDISABLED
+REPLY AUTHENTICATE + Rubbish
+REPLY * A002 NO AUTH exchange cancelled by client
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+<features>
+crypto
+</features>
+ <name>
+IMAP CRAM-MD5 graceful cancellation
+ </name>
+ <command>
+'imap://%HOSTIP:%IMAPPORT/830/;UID=1' -u user:secret
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+# 67 - CURLE_LOGIN_DENIED
+<errorcode>
+67
+</errorcode>
+#
+# The multi interface considers a broken "CONNECT" as a prematurely broken
+# transfer and such a connection will not get a "LOGOUT"
+<protocol>
+A001 CAPABILITY\r
+A002 AUTHENTICATE CRAM-MD5\r
+*\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test831 b/tests/data/test831
new file mode 100644 (file)
index 0000000..8bff7ea
--- /dev/null
@@ -0,0 +1,67 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+SASL
+SASL AUTH NTLM
+SASL CANCELLATION
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH NTLM
+CAPA LOGINDISABLED
+REPLY AUTHENTICATE +
+REPLY TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= + Rubbish
+REPLY * A002 NO AUTH exchange cancelled by client
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+<features>
+NTLM
+!SSPI
+</features>
+ <name>
+IMAP NTLM graceful cancellation
+ </name>
+ <setenv>
+# we force our own host name, in order to make the test machine independent
+CURL_GETHOSTNAME=curlhost
+# we try to use the LD_PRELOAD hack, if not a debug build
+LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
+ </setenv>
+ <command>
+'imap://%HOSTIP:%IMAPPORT/831/;UID=1' -u testuser:testpass
+</command>
+<precheck>
+chkhostname curlhost
+</precheck>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+# 67 - CURLE_LOGIN_DENIED
+<errorcode>
+67
+</errorcode>
+#
+# The multi interface considers a broken "CONNECT" as a prematurely broken
+# transfer and such a connection will not get a "LOGOUT"
+<protocol>
+A001 CAPABILITY\r
+A002 AUTHENTICATE NTLM\r
+TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
+*\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test832 b/tests/data/test832
new file mode 100644 (file)
index 0000000..044edb1
--- /dev/null
@@ -0,0 +1,58 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+SASL
+SASL AUTH DIGEST-MD5
+SASL CANCELLATION
+RFC2831
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH DIGEST-MD5
+CAPA LOGINDISABLED
+REPLY AUTHENTICATE + Rubbish
+REPLY * A002 NO AUTH exchange cancelled by client
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+<features>
+!SSPI
+debug
+crypto
+</features>
+ <name>
+IMAP DIGEST-MD5 graceful cancellation
+ </name>
+ <command>
+'imap://%HOSTIP:%IMAPPORT/832/;UID=1' -u user:secret
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+# 67 - CURLE_LOGIN_DENIED
+<errorcode>
+67
+</errorcode>
+#
+# The multi interface considers a broken "CONNECT" as a prematurely broken
+# transfer and such a connection will not get a "LOGOUT"
+<protocol>
+A001 CAPABILITY\r
+A002 AUTHENTICATE DIGEST-MD5\r
+*\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test833 b/tests/data/test833
new file mode 100644 (file)
index 0000000..b5fa03f
--- /dev/null
@@ -0,0 +1,65 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+SASL
+SASL AUTH CRAM-MD5
+SASL AUTH PLAIN
+SASL DOWNGRADE
+RFC2195
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH CRAM-MD5 PLAIN
+REPLY "AUTHENTICATE CRAM-MD5" + Rubbish
+REPLY * A002 NO AUTH exchange cancelled by client
+REPLY "AUTHENTICATE PLAIN" +
+REPLY dXNlcgB1c2VyAHNlY3JldA== A003 OK AUTHENTICATE completed
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+<features>
+crypto
+</features>
+ <name>
+IMAP CRAM-MD5 authentication with SASL downgrade
+ </name>
+ <command>
+'imap://%HOSTIP:%IMAPPORT/833/;UID=1' -u user:secret
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+A001 CAPABILITY\r
+A002 AUTHENTICATE CRAM-MD5\r
+*\r
+A003 AUTHENTICATE PLAIN\r
+dXNlcgB1c2VyAHNlY3JldA==\r
+A004 SELECT 833\r
+A005 FETCH 1 BODY[]\r
+A006 LOGOUT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test834 b/tests/data/test834
new file mode 100644 (file)
index 0000000..17101dd
--- /dev/null
@@ -0,0 +1,76 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+SASL
+SASL AUTH NTLM
+SASL AUTH PLAIN
+SASL DOWNGRADE
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH NTLM PLAIN
+REPLY "AUTHENTICATE NTLM" +
+REPLY TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= + Rubbish
+REPLY * A002 NO AUTH exchange cancelled by client
+REPLY "AUTHENTICATE PLAIN" +
+REPLY dXNlcgB1c2VyAHNlY3JldA== A003 OK AUTHENTICATE completed
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+<features>
+NTLM
+!SSPI
+</features>
+ <name>
+IMAP NTLM authentication with SASL downgrade
+ </name>
+ <setenv>
+# we force our own host name, in order to make the test machine independent
+CURL_GETHOSTNAME=curlhost
+# we try to use the LD_PRELOAD hack, if not a debug build
+LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
+ </setenv>
+ <command>
+'imap://%HOSTIP:%IMAPPORT/834/;UID=1' -u user:secret
+</command>
+<precheck>
+chkhostname curlhost
+</precheck>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+A001 CAPABILITY\r
+A002 AUTHENTICATE NTLM\r
+TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
+*\r
+A003 AUTHENTICATE PLAIN\r
+dXNlcgB1c2VyAHNlY3JldA==\r
+A004 SELECT 834\r
+A005 FETCH 1 BODY[]\r
+A006 LOGOUT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test835 b/tests/data/test835
new file mode 100644 (file)
index 0000000..34f28b7
--- /dev/null
@@ -0,0 +1,67 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+SASL
+SASL AUTH DIGEST-MD5
+SASL AUTH PLAIN
+SASL DOWNGRADE
+RFC2831
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH DIGEST-MD5 PLAIN
+REPLY "AUTHENTICATE DIGEST-MD5" + Rubbish
+REPLY * A002 NO AUTH exchange cancelled by client
+REPLY "AUTHENTICATE PLAIN" +
+REPLY dXNlcgB1c2VyAHNlY3JldA== A003 OK AUTHENTICATE completed
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+<features>
+!SSPI
+debug
+crypto
+</features>
+ <name>
+IMAP DIGEST-MD5 authentication with SASL downgrade
+ </name>
+ <command>
+'imap://%HOSTIP:%IMAPPORT/835/;UID=1' -u user:secret
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+A001 CAPABILITY\r
+A002 AUTHENTICATE DIGEST-MD5\r
+*\r
+A003 AUTHENTICATE PLAIN\r
+dXNlcgB1c2VyAHNlY3JldA==\r
+A004 SELECT 835\r
+A005 FETCH 1 BODY[]\r
+A006 LOGOUT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test836 b/tests/data/test836
new file mode 100644 (file)
index 0000000..035d48f
--- /dev/null
@@ -0,0 +1,59 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+Clear Text
+FETCH
+connection re-use
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+REPLY "LOGIN user.one secret" A002 OK LOGIN completed\r
+REPLY "LOGIN user.two secret" B002 OK LOGIN completed\r
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+ <name>
+IMAP multiple connection authentication
+ </name>
+ <command>
+'imap://%HOSTIP:%IMAPPORT/836/;UID=1' -u user.one:secret -: 'imap://%HOSTIP:%IMAPPORT/836/;UID=2' -u user.two:secret
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+A001 CAPABILITY\r
+A002 LOGIN user.one secret\r
+A003 SELECT 836\r
+A004 FETCH 1 BODY[]\r
+A005 LOGOUT\r
+B001 CAPABILITY\r
+B002 LOGIN user.two secret\r
+B003 SELECT 836\r
+B004 FETCH 2 BODY[]\r
+B005 LOGOUT\r
+</protocol>
+</verify>
+</testcase>
index b0d0e3d..6176101 100644 (file)
@@ -2,6 +2,7 @@
 <info>
 <keywords>
 POP3
 <info>
 <keywords>
 POP3
+Clear Text
 RETR
 </keywords>
 </info>
 RETR
 </keywords>
 </info>
@@ -27,7 +28,7 @@ body
 pop3
 </server>
  <name>
 pop3
 </server>
  <name>
-POP3 RETR
+POP3 RETR message
  </name>
  <command>
 pop3://%HOSTIP:%POP3PORT/850 -u user:secret
  </name>
  <command>
 pop3://%HOSTIP:%POP3PORT/850 -u user:secret
index 5ebb3a0..60c49c4 100644 (file)
@@ -2,6 +2,7 @@
 <info>
 <keywords>
 POP3
 <info>
 <keywords>
 POP3
+Clear Text
 LIST
 </keywords>
 </info>
 LIST
 </keywords>
 </info>
index e07c172..de9fbe2 100644 (file)
@@ -2,6 +2,7 @@
 <info>
 <keywords>
 POP3
 <info>
 <keywords>
 POP3
+Clear Text
 LIST
 FAILURE
 </keywords>
 LIST
 FAILURE
 </keywords>
index 934837f..a3b9688 100644 (file)
@@ -2,6 +2,7 @@
 <info>
 <keywords>
 POP3
 <info>
 <keywords>
 POP3
+Clear Text
 LIST
 </keywords>
 </info>
 LIST
 </keywords>
 </info>
@@ -19,7 +20,7 @@ SLOWDOWN
 <datacheck>
 1 100\r
 2 4294967400\r
 <datacheck>
 1 100\r
 2 4294967400\r
-4 200\r
+3 200\r
 </datacheck>
 </reply>
 
 </datacheck>
 </reply>
 
index 074969a..a8a18b6 100644 (file)
@@ -2,6 +2,7 @@
 <info>
 <keywords>
 POP3
 <info>
 <keywords>
 POP3
+Clear Text
 LIST
 </keywords>
 </info>
 LIST
 </keywords>
 </info>
index bcbdf48..87fe744 100644 (file)
@@ -2,6 +2,7 @@
 <info>
 <keywords>
 POP3
 <info>
 <keywords>
 POP3
+Clear Text
 RETR
 FAILURE
 </keywords>
 RETR
 FAILURE
 </keywords>
index 7076cf6..4d8d7ed 100644 (file)
@@ -2,6 +2,7 @@
 <info>
 <keywords>
 POP3
 <info>
 <keywords>
 POP3
+Clear Text
 FAILURE
 </keywords>
 </info>
 FAILURE
 </keywords>
 </info>
@@ -9,9 +10,6 @@ FAILURE
 #
 # Server-side
 <reply>
 #
 # Server-side
 <reply>
-<servercmd>
-REPLY PASS -ERR invalid login
-</servercmd>
 </reply>
 
 #
 </reply>
 
 #
@@ -31,11 +29,12 @@ pop3://%HOSTIP:%POP3PORT/856 -u user:wrong
 #
 # Verify data after the test has been "shot"
 <verify>
 #
 # Verify data after the test has been "shot"
 <verify>
+# 67 - CURLE_LOGIN_DENIED
 <errorcode>
 67
 </errorcode>
 #
 <errorcode>
 67
 </errorcode>
 #
-# The multi interface considers a broken "DO" request as a prematurely broken
+# The multi interface considers a broken "CONNECT" as a prematurely broken
 # transfer and such a connection will not get a "QUIT"
 <protocol>
 CAPA\r
 # transfer and such a connection will not get a "QUIT"
 <protocol>
 CAPA\r
index 716c49e..055e35c 100644 (file)
@@ -2,6 +2,7 @@
 <info>
 <keywords>
 POP3
 <info>
 <keywords>
 POP3
+Clear Text
 RETR
 </keywords>
 </info>
 RETR
 </keywords>
 </info>
@@ -38,7 +39,7 @@ To: fake@nowhere
 pop3
 </server>
  <name>
 pop3
 </server>
  <name>
-POP3 RETR with dot-prefixed line
+POP3 RETR message with dot-prefixed line
  </name>
  <command>
 pop3://%HOSTIP:%POP3PORT/857 -u user:secret
  </name>
  <command>
 pop3://%HOSTIP:%POP3PORT/857 -u user:secret
diff --git a/tests/data/test858 b/tests/data/test858
new file mode 100644 (file)
index 0000000..926dcd9
--- /dev/null
@@ -0,0 +1,41 @@
+<testcase>
+<info>
+<keywords>
+POP3
+Clear Text
+DELE
+CUSTOMREQUEST
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+pop3
+</server>
+ <name>
+POP3 DELE message (CUSTOMREQUEST)
+ </name>
+ <command>
+pop3://%HOSTIP:%POP3PORT/858 -u user:secret -X DELE -I
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+CAPA\r
+USER user\r
+PASS secret\r
+DELE 858\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test859 b/tests/data/test859
new file mode 100644 (file)
index 0000000..3d2e1c7
--- /dev/null
@@ -0,0 +1,41 @@
+<testcase>
+<info>
+<keywords>
+POP3
+Clear Text
+STAT
+CUSTOMREQUEST
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+pop3
+</server>
+ <name>
+POP3 STAT (CUSTOMREQUEST)
+ </name>
+ <command>
+pop3://%HOSTIP:%POP3PORT -u user:secret -X STAT -I
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+CAPA\r
+USER user\r
+PASS secret\r
+STAT\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
index 70c28e9..a69509a 100644 (file)
@@ -3,6 +3,7 @@
 <keywords>
 HTTP
 HTTP GET
 <keywords>
 HTTP
 HTTP GET
+globbing
 [] range
 </keywords>
 </info>
 [] range
 </keywords>
 </info>
diff --git a/tests/data/test860 b/tests/data/test860
new file mode 100644 (file)
index 0000000..26809bf
--- /dev/null
@@ -0,0 +1,41 @@
+<testcase>
+<info>
+<keywords>
+POP3
+Clear Text
+NOOP
+CUSTOMREQUEST
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+pop3
+</server>
+ <name>
+POP3 NOOP (CUSTOMREQUEST)
+ </name>
+ <command>
+pop3://%HOSTIP:%POP3PORT -u user:secret -X NOOP -I
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+CAPA\r
+USER user\r
+PASS secret\r
+NOOP\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test861 b/tests/data/test861
new file mode 100644 (file)
index 0000000..4cc3987
--- /dev/null
@@ -0,0 +1,52 @@
+<testcase>
+<info>
+<keywords>
+POP3
+Clear Text
+UIDL
+CUSTOMREQUEST
+RFC2449
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>\r
+CAPA UIDL USER\r
+</servercmd>\r
+# When doing UIDL, we get the default list output hard-coded in the test\r
+# POP3 server\r
+<datacheck>\r
+1 1\r
+2 2\r
+3 4\r
+</datacheck>\r
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+pop3
+</server>
+ <name>
+POP3 UIDL (CUSTOMREQUEST)
+ </name>
+ <command>
+pop3://%HOSTIP:%POP3PORT -u user:secret -X UIDL
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+CAPA\r
+USER user\r
+PASS secret\r
+UIDL\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test862 b/tests/data/test862
new file mode 100644 (file)
index 0000000..a21b514
--- /dev/null
@@ -0,0 +1,50 @@
+<testcase>
+<info>
+<keywords>
+POP3
+Clear Text
+TOP
+CUSTOMREQUEST
+RFC2449
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>\r
+CAPA TOP USER\r
+</servercmd>\r
+<data>\r
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+</data>\r
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+pop3
+</server>
+ <name>
+POP3 retrieve message header (CUSTOMREQUEST)
+ </name>
+ <command>
+pop3://%HOSTIP:%POP3PORT -u user:secret -X 'TOP 862 0'
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+CAPA\r
+USER user\r
+PASS secret\r
+TOP 862 0\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test863 b/tests/data/test863
new file mode 100644 (file)
index 0000000..940045f
--- /dev/null
@@ -0,0 +1,41 @@
+<testcase>
+<info>
+<keywords>
+POP3
+Clear Text
+RSET
+CUSTOMREQUEST
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+pop3
+</server>
+ <name>
+POP3 RSET (CUSTOMREQUEST)
+ </name>
+ <command>
+pop3://%HOSTIP:%POP3PORT -u user:secret -X RSET -I
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+CAPA\r
+USER user\r
+PASS secret\r
+RSET\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test864 b/tests/data/test864
new file mode 100644 (file)
index 0000000..9ad98f7
--- /dev/null
@@ -0,0 +1,54 @@
+<testcase>
+<info>
+<keywords>
+POP3
+APOP
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+CAPA APOP
+REPLY welcome +OK cURL POP3 server ready to serve <1972.987654321\@curl>
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+pop3
+</server>
+<features>
+crypto
+</features>
+ <name>
+POP3 APOP authentication
+ </name>
+ <command>
+pop3://%HOSTIP:%POP3PORT/864 -u user:secret
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+CAPA\r
+APOP user 7501b4cdc224d469940e65e7b5e4d6eb\r
+RETR 864\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test865 b/tests/data/test865
new file mode 100644 (file)
index 0000000..6f66f82
--- /dev/null
@@ -0,0 +1,57 @@
+<testcase>
+<info>
+<keywords>
+POP3
+SASL
+SASL AUTH PLAIN
+RFC1734
+RFC4616
+RFC5034
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH PLAIN
+REPLY AUTH +
+REPLY dXNlcgB1c2VyAHNlY3JldA== +OK Login successful
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+pop3
+</server>
+ <name>
+POP3 plain authentication
+ </name>
+ <command>
+pop3://%HOSTIP:%POP3PORT/865 -u user:secret
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+CAPA\r
+AUTH PLAIN\r
+dXNlcgB1c2VyAHNlY3JldA==\r
+RETR 865\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test866 b/tests/data/test866
new file mode 100644 (file)
index 0000000..8fee23a
--- /dev/null
@@ -0,0 +1,58 @@
+<testcase>
+<info>
+<keywords>
+POP3
+SASL
+SASL AUTH LOGIN
+RFC1734
+RFC5034
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH LOGIN
+REPLY AUTH + VXNlcm5hbWU6
+REPLY dXNlcg== + UGFzc3dvcmQ6
+REPLY c2VjcmV0 +OK Login successful
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+pop3
+</server>
+ <name>
+POP3 login authentication
+ </name>
+ <command>
+pop3://%HOSTIP:%POP3PORT/866 -u user:secret
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+CAPA\r
+AUTH LOGIN\r
+dXNlcg==\r
+c2VjcmV0\r
+RETR 866\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test867 b/tests/data/test867
new file mode 100644 (file)
index 0000000..139b467
--- /dev/null
@@ -0,0 +1,60 @@
+<testcase>
+<info>
+<keywords>
+POP3
+SASL
+SASL AUTH CRAM-MD5
+RFC1734
+RFC2195
+RFC5034
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH CRAM-MD5
+REPLY AUTH + PDE5NzIuOTg3NjU0MzIxQGN1cmw+
+REPLY dXNlciA3MDMxNzI1NTk5ZmRiYjVkNDEyNjg5YWEzMjNlM2UwYg== +OK Login successful
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+pop3
+</server>
+<features>
+crypto
+</features>
+ <name>
+POP3 CRAM-MD5 authentication
+ </name>
+ <command>
+pop3://%HOSTIP:%POP3PORT/867 -u user:secret
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+CAPA\r
+AUTH CRAM-MD5\r
+dXNlciA3MDMxNzI1NTk5ZmRiYjVkNDEyNjg5YWEzMjNlM2UwYg==\r
+RETR 867\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test868 b/tests/data/test868
new file mode 100644 (file)
index 0000000..591bd50
--- /dev/null
@@ -0,0 +1,72 @@
+<testcase>
+<info>
+<keywords>
+POP3
+SASL
+SASL AUTH NTLM
+RFC1734
+RFC5034
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH NTLM
+REPLY AUTH +
+REPLY TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= + TlRMTVNTUAACAAAAAgACADAAAAAGgoEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==\r
+REPLY TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA== +OK Login successful
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+pop3
+</server>
+<features>
+NTLM
+!SSPI
+debug
+</features>
+ <name>
+POP3 NTLM authentication
+ </name>
+ <setenv>
+# we force our own host name, in order to make the test machine independent
+CURL_GETHOSTNAME=curlhost
+# we try to use the LD_PRELOAD hack, if not a debug build
+LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
+ </setenv>
+ <command>
+pop3://%HOSTIP:%POP3PORT/868 -u testuser:testpass
+</command>
+<precheck>
+chkhostname curlhost
+</precheck>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+CAPA\r
+AUTH NTLM\r
+TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
+TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
+RETR 868\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test869 b/tests/data/test869
new file mode 100644 (file)
index 0000000..cba33b3
--- /dev/null
@@ -0,0 +1,64 @@
+<testcase>
+<info>
+<keywords>
+POP3
+SASL
+SASL AUTH DIGEST-MD5
+RFC1734
+RFC2831
+RFC5034
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH DIGEST-MD5
+REPLY AUTH + cmVhbG09ImN1cmwiLG5vbmNlPSI1MzAwZDE3YTFkNjk1YmQ0MTFlNGNkZjk2Zjk1NDhjMjNjZWQ2MTc1IixhbGdvcml0aG09bWQ1LXNlc3MscW9wPSJhdXRoIg==
+REPLY dXNlcm5hbWU9InVzZXIiLHJlYWxtPSJjdXJsIixub25jZT0iNTMwMGQxN2ExZDY5NWJkNDExZTRjZGY5NmY5NTQ4YzIzY2VkNjE3NSIsY25vbmNlPSIzNDMzMzIzMTM0MzMzMjMyMzQzMzMyMzMzNDMzMzIzNCIsbmM9IjAwMDAwMDAxIixkaWdlc3QtdXJpPSJwb3AvY3VybCIscmVzcG9uc2U9MDE2MTNmOWEwNTgxODNmYTc2NmFkNWEwOThiNmE3MTUscW9wPWF1dGg= +
+REPLY  +OK Login successful
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+pop3
+</server>
+<features>
+!SSPI
+debug
+crypto
+</features>
+ <name>
+POP3 DIGEST-MD5 authentication
+ </name>
+ <command>
+pop3://%HOSTIP:%POP3PORT/869 -u user:secret
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+CAPA\r
+AUTH DIGEST-MD5\r
+dXNlcm5hbWU9InVzZXIiLHJlYWxtPSJjdXJsIixub25jZT0iNTMwMGQxN2ExZDY5NWJkNDExZTRjZGY5NmY5NTQ4YzIzY2VkNjE3NSIsY25vbmNlPSIzNDMzMzIzMTM0MzMzMjMyMzQzMzMyMzMzNDMzMzIzNCIsbmM9IjAwMDAwMDAxIixkaWdlc3QtdXJpPSJwb3AvY3VybCIscmVzcG9uc2U9MDE2MTNmOWEwNTgxODNmYTc2NmFkNWEwOThiNmE3MTUscW9wPWF1dGg=\r
+\r
+RETR 869\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
index 40b274b..488037c 100644 (file)
@@ -1,6 +1,9 @@
 <testcase>
 <info>
 <keywords>
 <testcase>
 <info>
 <keywords>
+HTTP
+HTTP GET
+globbing
 [] range
 FAILURE
 </keywords>
 [] range
 FAILURE
 </keywords>
@@ -8,29 +11,51 @@ FAILURE
 #
 # Server-side
 <reply>
 #
 # Server-side
 <reply>
+<data1>
+HTTP/1.1 200 OK\r
+Funny-head: yesyes\r
+Content-Length: 15\r
+\r
+the number one
+</data1>
+<data2>
+HTTP/1.1 200 OK\r
+Funny-head: yesyes\r
+Content-Length: 16\r
+\r
+two is nice too
+</data2>
+
 </reply>
 #
 # Client-side
 <client>
 <server>
 </reply>
 #
 # Client-side
 <client>
 <server>
-none
+http
 </server>
 <features>
 http
 </features>
  <name>
 </server>
 <features>
 http
 </features>
  <name>
-urlglob with bad -o #[num] usage
+urlglob with out of range -o #[num] usage
  </name>
  <command option="no-output">
  </name>
  <command option="no-output">
-"http://%HOSTIP:%HTTPPORT/[870001-870003]" -o "log/dumpit#2.dump"
+"http://%HOSTIP:%HTTPPORT/[870001-870002]" -o "log/dumpit#2.dump"
 </command>
 </client>
 
 #
 </command>
 </client>
 
 #
-# Verify data after the test has been "shot"
+# Verify data after the test has been "shot". Note that the command line
+# will write both responses into the same file name so only the second
+# survives
+#
 <verify>
 <verify>
-<errorcode>
-2
-</errorcode>
+<file name="log/dumpit#2.dump" mode="text">
+HTTP/1.1 200 OK\r
+Funny-head: yesyes\r
+Content-Length: 16\r
+\r
+two is nice too
+</file>
 </verify>
 </testcase>
 </verify>
 </testcase>
diff --git a/tests/data/test870 b/tests/data/test870
new file mode 100644 (file)
index 0000000..885b8c1
--- /dev/null
@@ -0,0 +1,57 @@
+<testcase>
+<info>
+<keywords>
+POP3
+SASL
+SASL AUTH OAUTH2
+RFC1734
+RFC5034
+RFC6749
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH XOAUTH2
+REPLY AUTH +
+REPLY dXNlcj11c2VyAWF1dGg9QmVhcmVyIG1GXzkuQjVmLTQuMUpxTQEB +OK Login successful
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+pop3
+</server>
+ <name>
+POP3 OAuth 2.0 authentication
+ </name>
+ <command>
+pop3://%HOSTIP:%POP3PORT/870 -u user --oauth2-bearer mF_9.B5f-4.1JqM
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+CAPA\r
+AUTH XOAUTH2\r
+dXNlcj11c2VyAWF1dGg9QmVhcmVyIG1GXzkuQjVmLTQuMUpxTQEB\r
+RETR 870\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test871 b/tests/data/test871
new file mode 100644 (file)
index 0000000..f4f2360
--- /dev/null
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+POP3
+SASL
+SASL AUTH PLAIN
+SASL-IR
+RFC1734
+RFC4616
+RFC5034
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH PLAIN
+REPLY AUTH +OK Login successful
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+pop3
+</server>
+ <name>
+POP3 plain authentication with initial response
+ </name>
+ <command>
+pop3://%HOSTIP:%POP3PORT/871 -u user:secret --sasl-ir
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+CAPA\r
+AUTH PLAIN dXNlcgB1c2VyAHNlY3JldA==\r
+RETR 871\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test872 b/tests/data/test872
new file mode 100644 (file)
index 0000000..05cb2a2
--- /dev/null
@@ -0,0 +1,57 @@
+<testcase>
+<info>
+<keywords>
+POP3
+SASL
+SASL AUTH LOGIN
+SASL-IR
+RFC1734
+RFC5034
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH LOGIN
+REPLY AUTH + UGFzc3dvcmQ6
+REPLY c2VjcmV0 +OK Login successful
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+pop3
+</server>
+ <name>
+POP3 login authentication with initial response
+ </name>
+ <command>
+pop3://%HOSTIP:%POP3PORT/872 -u user:secret --sasl-ir
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+CAPA\r
+AUTH LOGIN dXNlcg==\r
+c2VjcmV0\r
+RETR 872\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test873 b/tests/data/test873
new file mode 100644 (file)
index 0000000..a91b360
--- /dev/null
@@ -0,0 +1,71 @@
+<testcase>
+<info>
+<keywords>
+POP3
+SASL
+SASL AUTH NTLM
+SASL-IR
+RFC1734
+RFC5034
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH NTLM
+REPLY AUTH + TlRMTVNTUAACAAAAAgACADAAAAAGgoEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==
+REPLY TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA== +OK Login successful
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+pop3
+</server>
+<features>
+NTLM
+!SSPI
+debug
+</features>
+ <name>
+POP3 NTLM authentication with initial response
+ </name>
+ <setenv>
+# we force our own host name, in order to make the test machine independent
+CURL_GETHOSTNAME=curlhost
+# we try to use the LD_PRELOAD hack, if not a debug build
+LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
+ </setenv>
+ <command>
+pop3://%HOSTIP:%POP3PORT/873 -u testuser:testpass --sasl-ir
+</command>
+<precheck>
+chkhostname curlhost
+</precheck>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+CAPA\r
+AUTH NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
+TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
+RETR 873\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test874 b/tests/data/test874
new file mode 100644 (file)
index 0000000..de221fa
--- /dev/null
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+POP3
+SASL
+SASL AUTH OAUTH2
+SASL-IR
+RFC1734
+RFC5034
+RFC6749
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH XOAUTH2
+REPLY AUTH +OK Login successful
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+pop3
+</server>
+ <name>
+POP3 OAuth 2.0 authentication with initial response
+ </name>
+ <command>
+pop3://%HOSTIP:%POP3PORT/874 -u user --oauth2-bearer mF_9.B5f-4.1JqM --sasl-ir
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+CAPA\r
+AUTH XOAUTH2 dXNlcj11c2VyAWF1dGg9QmVhcmVyIG1GXzkuQjVmLTQuMUpxTQEB\r
+RETR 874\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
similarity index 88%
rename from tests/data/test1322
rename to tests/data/test875
index 996727e..53e9940 100644 (file)
@@ -15,7 +15,7 @@ pop3
 POP3 with URL-encoded CR LF in the URL
  </name>
  <command>
 POP3 with URL-encoded CR LF in the URL
  </name>
  <command>
-pop3://%HOSTIP:%POP3PORT/%0d%0a/1322
+pop3://%HOSTIP:%POP3PORT/%0d%0a/875
 </command>
 </client>
 
 </command>
 </client>
 
diff --git a/tests/data/test876 b/tests/data/test876
new file mode 100644 (file)
index 0000000..6d30e53
--- /dev/null
@@ -0,0 +1,57 @@
+<testcase>
+<info>
+<keywords>
+POP3
+SASL
+SASL AUTH CRAM-MD5
+SASL CANCELLATION
+RFC1734
+RFC2195
+RFC5034
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH CRAM-MD5
+REPLY AUTH + Rubbish
+REPLY * -ERR AUTH exchange cancelled by client
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+pop3
+</server>
+<features>
+crypto
+</features>
+ <name>
+POP3 CRAM-MD5 graceful cancellation
+ </name>
+ <command>
+pop3://%HOSTIP:%POP3PORT/876 -u user:secret
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+# 67 - CURLE_LOGIN_DENIED
+<errorcode>
+67
+</errorcode>
+#
+# The multi interface considers a broken "CONNECT" as a prematurely broken
+# transfer and such a connection will not get a "QUIT"
+<protocol>
+CAPA\r
+AUTH CRAM-MD5\r
+*\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test877 b/tests/data/test877
new file mode 100644 (file)
index 0000000..c477594
--- /dev/null
@@ -0,0 +1,68 @@
+<testcase>
+<info>
+<keywords>
+POP3
+SASL
+SASL AUTH NTLM
+SASL CANCELLATION
+RFC1734
+RFC5034
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH NTLM
+REPLY AUTH +
+REPLY TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= + Rubbish
+REPLY * -ERR AUTH exchange cancelled by client
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+pop3
+</server>
+<features>
+NTLM
+!SSPI
+</features>
+ <name>
+POP3 NTLM graceful cancellation
+ </name>
+ <setenv>
+# we force our own host name, in order to make the test machine independent
+CURL_GETHOSTNAME=curlhost
+# we try to use the LD_PRELOAD hack, if not a debug build
+LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
+ </setenv>
+ <command>
+pop3://%HOSTIP:%POP3PORT/877 -u testuser:testpass
+</command>
+<precheck>
+chkhostname curlhost
+</precheck>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+# 67 - CURLE_LOGIN_DENIED
+<errorcode>
+67
+</errorcode>
+#
+# The multi interface considers a broken "CONNECT" as a prematurely broken
+# transfer and such a connection will not get a "QUIT"
+<protocol>
+CAPA\r
+AUTH NTLM\r
+TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
+*\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test878 b/tests/data/test878
new file mode 100644 (file)
index 0000000..98961fb
--- /dev/null
@@ -0,0 +1,59 @@
+<testcase>
+<info>
+<keywords>
+POP3
+SASL
+SASL AUTH DIGEST-MD5
+SASL CANCELLATION
+RFC1734
+RFC2831
+RFC5034
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH DIGEST-MD5
+REPLY AUTH + Rubbish
+REPLY * -ERR AUTH exchange cancelled by client
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+pop3
+</server>
+<features>
+!SSPI
+debug
+crypto
+</features>
+ <name>
+POP3 DIGEST-MD5 graceful cancellation
+ </name>
+ <command>
+pop3://%HOSTIP:%POP3PORT/878 -u user:secret
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+# 67 - CURLE_LOGIN_DENIED
+<errorcode>
+67
+</errorcode>
+#
+# The multi interface considers a broken "CONNECT" as a prematurely broken
+# transfer and such a connection will not get a "QUIT"
+<protocol>
+CAPA\r
+AUTH DIGEST-MD5\r
+*\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test879 b/tests/data/test879
new file mode 100644 (file)
index 0000000..681d779
--- /dev/null
@@ -0,0 +1,66 @@
+<testcase>
+<info>
+<keywords>
+POP3
+SASL
+SASL AUTH CRAM-MD5
+SASL AUTH PLAIN
+SASL DOWNGRADE
+RFC1734
+RFC2195
+RFC5034
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH CRAM-MD5 PLAIN
+REPLY "AUTH CRAM-MD5" + Rubbish
+REPLY * -ERR AUTH exchange cancelled by client
+REPLY "AUTH PLAIN" +
+REPLY dXNlcgB1c2VyAHNlY3JldA== +OK Login successful
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+pop3
+</server>
+<features>
+crypto
+</features>
+ <name>
+POP3 CRAM-MD5 authentication with SASL downgrade
+ </name>
+ <command>
+pop3://%HOSTIP:%POP3PORT/879 -u user:secret
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+CAPA\r
+AUTH CRAM-MD5\r
+*\r
+AUTH PLAIN\r
+dXNlcgB1c2VyAHNlY3JldA==\r
+RETR 879\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
index 2495aec..253b420 100644 (file)
@@ -56,6 +56,7 @@ This IS the real page!
 http
 </server>
 <features>
 http
 </server>
 <features>
+!SSPI
 crypto
 </features>
  <name>
 crypto
 </features>
  <name>
@@ -82,7 +83,6 @@ PUT /88 HTTP/1.1
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 Content-Length: 0\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 Content-Length: 0\r
-Expect: 100-continue\r
 \r
 PUT /88 HTTP/1.1\r
 Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/88", response="78a49fa53d0c228778297687d4168e71"\r
 \r
 PUT /88 HTTP/1.1\r
 Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/88", response="78a49fa53d0c228778297687d4168e71"\r
diff --git a/tests/data/test880 b/tests/data/test880
new file mode 100644 (file)
index 0000000..f5eb697
--- /dev/null
@@ -0,0 +1,77 @@
+<testcase>
+<info>
+<keywords>
+POP3
+SASL
+SASL AUTH NTLM
+SASL AUTH PLAIN
+SASL DOWNGRADE
+RFC1734
+RFC5034
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH NTLM PLAIN
+REPLY "AUTH NTLM" +
+REPLY TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= + Rubbish
+REPLY * -ERR AUTH exchange cancelled by client
+REPLY "AUTH PLAIN" +
+REPLY dXNlcgB1c2VyAHNlY3JldA== +OK Login successful
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+pop3
+</server>
+<features>
+NTLM
+!SSPI
+</features>
+ <name>
+POP3 NTLM authentication with SASL downgrade
+ </name>
+ <setenv>
+# we force our own host name, in order to make the test machine independent
+CURL_GETHOSTNAME=curlhost
+# we try to use the LD_PRELOAD hack, if not a debug build
+LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
+ </setenv>
+ <command>
+pop3://%HOSTIP:%POP3PORT/880 -u user:secret
+</command>
+<precheck>
+chkhostname curlhost
+</precheck>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+CAPA\r
+AUTH NTLM\r
+TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
+*\r
+AUTH PLAIN\r
+dXNlcgB1c2VyAHNlY3JldA==\r
+RETR 880\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test881 b/tests/data/test881
new file mode 100644 (file)
index 0000000..80eca50
--- /dev/null
@@ -0,0 +1,68 @@
+<testcase>
+<info>
+<keywords>
+POP3
+SASL
+SASL AUTH DIGEST-MD5
+SASL AUTH PLAIN
+SASL DOWNGRADE
+RFC1734
+RFC2831
+RFC5034
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH DIGEST-MD5 PLAIN
+REPLY "AUTH DIGEST-MD5" + Rubbish
+REPLY * -ERR AUTH exchange cancelled by client
+REPLY "AUTH PLAIN" +
+REPLY dXNlcgB1c2VyAHNlY3JldA== +OK Login successful
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+pop3
+</server>
+<features>
+!SSPI
+debug
+crypto
+</features>
+ <name>
+POP3 DIGEST-MD5 authentication with SASL downgrade
+ </name>
+ <command>
+pop3://%HOSTIP:%POP3PORT/881 -u user:secret
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+CAPA\r
+AUTH DIGEST-MD5\r
+*\r
+AUTH PLAIN\r
+dXNlcgB1c2VyAHNlY3JldA==\r
+RETR 881\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test882 b/tests/data/test882
new file mode 100644 (file)
index 0000000..1e321ff
--- /dev/null
@@ -0,0 +1,58 @@
+<testcase>
+<info>
+<keywords>
+POP3
+Clear Text
+RETR
+connection re-use
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+REPLY "PASS secret" +OK Login successful\r
+</servercmd>
+<data>
+From: me@somewhere\r
+To: fake@nowhere\r
+\r
+body\r
+\r
+--\r
+  yours sincerely\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+pop3
+</server>
+ <name>
+POP3 multiple connection authentication
+ </name>
+ <command>
+pop3://%HOSTIP:%POP3PORT/882001 -u user.one:secret -: pop3://%HOSTIP:%POP3PORT/882002 -u user.two:secret
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+CAPA\r
+USER user.one\r
+PASS secret\r
+RETR 882001\r
+QUIT\r
+CAPA\r
+USER user.two\r
+PASS secret\r
+RETR 882002\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
index f348eb6..cbabe8e 100644 (file)
@@ -89,6 +89,8 @@ Finally, this is the real page!
 <client>
 <features>
 NTLM
 <client>
 <features>
 NTLM
+!SSPI
+debug
 </features>
 <server>
 http
 </features>
 <server>
 http
@@ -123,7 +125,7 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 \r
 GET /89 HTTP/1.1\r
 Accept: */*\r
 \r
 GET /89 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoKBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
@@ -135,7 +137,7 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 \r
 GET /you/890010 HTTP/1.1\r
 Accept: */*\r
 \r
 GET /you/890010 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoKBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBALIBPdoGahtQQ8gQ7TJrKTYzMjM0NDIzNBFnpKw8B1BLcb456sVeozgBAQAAAAAAAACAPtXesZ0BMzIzNDQyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.10.8-pre1 (i686-pc-linux-gnu) libcurl/7.10.8-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3 GSS\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 User-Agent: curl/7.10.8-pre1 (i686-pc-linux-gnu) libcurl/7.10.8-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3 GSS\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
index 24a7ff4..90dae2c 100644 (file)
@@ -127,6 +127,8 @@ Finally, this is the real page!
 <client>
 <features>
 NTLM
 <client>
 <features>
 NTLM
+!SSPI
+debug
 </features>
 <server>
 http
 </features>
 <server>
 http
@@ -165,7 +167,7 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 \r
 GET /90 HTTP/1.1\r
 Accept: */*\r
 \r
 GET /90 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoKBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
@@ -181,7 +183,7 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 \r
 GET /you/900010 HTTP/1.1\r
 Accept: */*\r
 \r
 GET /you/900010 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAABoKBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBALIBPdoGahtQQ8gQ7TJrKTYzMjM0NDIzNBFnpKw8B1BLcb456sVeozgBAQAAAAAAAACAPtXesZ0BMzIzNDQyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
 User-Agent: curl/7.10.8-pre1 (i686-pc-linux-gnu) libcurl/7.10.8-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3 GSS\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 User-Agent: curl/7.10.8-pre1 (i686-pc-linux-gnu) libcurl/7.10.8-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3 GSS\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
index 749a965..0dd7f52 100644 (file)
@@ -26,7 +26,7 @@ To: another
 body\r
 </stdin>
  <command>
 body\r
 </stdin>
  <command>
-smtp://%HOSTIP:%SMTPPORT/user --mail-rcpt 900@foo --mail-rcpt 900@foobar.example --mail-from 900@from -T -
+smtp://%HOSTIP:%SMTPPORT/900 --mail-rcpt recipient@example.com --mail-from sender@example.com -T -
 </command>
 </client>
 
 </command>
 </client>
 
@@ -34,10 +34,9 @@ smtp://%HOSTIP:%SMTPPORT/user --mail-rcpt 900@foo --mail-rcpt 900@foobar.example
 # Verify data after the test has been "shot"
 <verify>
 <protocol>
 # Verify data after the test has been "shot"
 <verify>
 <protocol>
-EHLO user\r
-MAIL FROM:<900@from>\r
-RCPT TO:<900@foo>\r
-RCPT TO:<900@foobar.example>\r
+EHLO 900\r
+MAIL FROM:<sender@example.com>\r
+RCPT TO:<recipient@example.com>\r
 DATA\r
 QUIT\r
 </protocol>
 DATA\r
 QUIT\r
 </protocol>
index ed24518..8148b29 100644 (file)
@@ -32,7 +32,7 @@ To: another
 body\r
 </stdin>
  <command>
 body\r
 </stdin>
  <command>
-smtp://%HOSTIP:%SMTPPORT/user --mail-rcpt 901@foo --mail-from '<901@from>' -T -
+smtp://%HOSTIP:%SMTPPORT/901 --mail-rcpt recipient@example.com --mail-from sender@example.com -T -
 </command>
 </client>
 
 </command>
 </client>
 
@@ -40,9 +40,9 @@ smtp://%HOSTIP:%SMTPPORT/user --mail-rcpt 901@foo --mail-from '<901@from>' -T -
 # Verify data after the test has been "shot"
 <verify>
 <protocol>
 # Verify data after the test has been "shot"
 <verify>
 <protocol>
-EHLO user\r
-MAIL FROM:<901@from>\r
-RCPT TO:<901@foo>\r
+EHLO 901\r
+MAIL FROM:<sender@example.com>\r
+RCPT TO:<recipient@example.com>\r
 DATA\r
 QUIT\r
 </protocol>
 DATA\r
 QUIT\r
 </protocol>
index 4da1b99..8ee105f 100644 (file)
@@ -12,7 +12,6 @@ RFC821
 <reply>
 <servercmd>
 REPLY EHLO 500 Command unrecognized
 <reply>
 <servercmd>
 REPLY EHLO 500 Command unrecognized
-REPLY HELO 250 Already old but still servicing...
 </servercmd>
 </reply>
 
 </servercmd>
 </reply>
 
@@ -32,7 +31,7 @@ To: another
 body\r
 </stdin>
  <command>
 body\r
 </stdin>
  <command>
-smtp://%HOSTIP:%SMTPPORT/user --mail-rcpt 902@foo --mail-from 902@from -T -
+smtp://%HOSTIP:%SMTPPORT/902 --mail-rcpt recipient@example.com --mail-from sender@example.com -T -
 </command>
 </client>
 
 </command>
 </client>
 
@@ -40,10 +39,10 @@ smtp://%HOSTIP:%SMTPPORT/user --mail-rcpt 902@foo --mail-from 902@from -T -
 # Verify data after the test has been "shot"
 <verify>
 <protocol>
 # Verify data after the test has been "shot"
 <verify>
 <protocol>
-EHLO user\r
-HELO user\r
-MAIL FROM:<902@from>\r
-RCPT TO:<902@foo>\r
+EHLO 902\r
+HELO 902\r
+MAIL FROM:<sender@example.com>\r
+RCPT TO:<recipient@example.com>\r
 DATA\r
 QUIT\r
 </protocol>
 DATA\r
 QUIT\r
 </protocol>
index 157bd48..2baf5e6 100644 (file)
@@ -2,7 +2,8 @@
 <info>
 <keywords>
 SMTP
 <info>
 <keywords>
 SMTP
-SMTP AUTH PLAIN
+SASL
+SASL AUTH PLAIN
 RFC4616
 RFC4954
 </keywords>
 RFC4616
 RFC4954
 </keywords>
@@ -12,9 +13,9 @@ RFC4954
 # Server-side
 <reply>
 <servercmd>
 # Server-side
 <reply>
 <servercmd>
-REPLY EHLO 250 AUTH PLAIN
+AUTH PLAIN
 REPLY AUTH 334 PLAIN supported
 REPLY AUTH 334 PLAIN supported
-REPLY dGVzdAB0ZXN0ADEyMzQ= 235 Authenticated\r
+REPLY dXNlcgB1c2VyAHNlY3JldA== 235 Authenticated
 </servercmd>
 </reply>
 
 </servercmd>
 </reply>
 
@@ -31,7 +32,7 @@ SMTP plain authentication
 mail body\r
 </stdin>
  <command>
 mail body\r
 </stdin>
  <command>
-smtp://%HOSTIP:%SMTPPORT/user --mail-rcpt 903@foo --mail-from 903@from -u test:1234 -T -
+smtp://%HOSTIP:%SMTPPORT/903 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T -
 </command>
 </client>
 
 </command>
 </client>
 
@@ -39,11 +40,11 @@ smtp://%HOSTIP:%SMTPPORT/user --mail-rcpt 903@foo --mail-from 903@from -u test:1
 # Verify data after the test has been "shot"
 <verify>
 <protocol>
 # Verify data after the test has been "shot"
 <verify>
 <protocol>
-EHLO user\r
+EHLO 903\r
 AUTH PLAIN\r
 AUTH PLAIN\r
-dGVzdAB0ZXN0ADEyMzQ=\r
-MAIL FROM:<903@from>\r
-RCPT TO:<903@foo>\r
+dXNlcgB1c2VyAHNlY3JldA==\r
+MAIL FROM:<sender@example.com>\r
+RCPT TO:<recipient@example.com>\r
 DATA\r
 QUIT\r
 </protocol>
 DATA\r
 QUIT\r
 </protocol>
index 1a23f41..dd3dad0 100644 (file)
@@ -2,7 +2,8 @@
 <info>
 <keywords>
 SMTP
 <info>
 <keywords>
 SMTP
-SMTP AUTH LOGIN
+SASL
+SASL AUTH LOGIN
 RFC4954
 </keywords>
 </info>
 RFC4954
 </keywords>
 </info>
@@ -11,10 +12,10 @@ RFC4954
 # Server-side
 <reply>
 <servercmd>
 # Server-side
 <reply>
 <servercmd>
-REPLY EHLO 250 AUTH LOGIN
-REPLY AUTH 334 LOGIN supported\r
-REPLY dGVzdA== 334 UGFzc3dvcmQ6
-REPLY MTIzNA== 235 Authenticated
+AUTH LOGIN
+REPLY AUTH 334 VXNlcm5hbWU6
+REPLY dXNlcg== 334 UGFzc3dvcmQ6
+REPLY c2VjcmV0 235 Authenticated
 </servercmd>
 </reply>
 
 </servercmd>
 </reply>
 
@@ -31,7 +32,7 @@ SMTP login authentication
 mail body\r
 </stdin>
  <command>
 mail body\r
 </stdin>
  <command>
-smtp://%HOSTIP:%SMTPPORT/user --mail-rcpt 904@foo --mail-from 904@from -u test:1234 -T -
+smtp://%HOSTIP:%SMTPPORT/904 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T -
 </command>
 </client>
 
 </command>
 </client>
 
@@ -39,12 +40,12 @@ smtp://%HOSTIP:%SMTPPORT/user --mail-rcpt 904@foo --mail-from 904@from -u test:1
 # Verify data after the test has been "shot"
 <verify>
 <protocol>
 # Verify data after the test has been "shot"
 <verify>
 <protocol>
-EHLO user\r
+EHLO 904\r
 AUTH LOGIN\r
 AUTH LOGIN\r
-dGVzdA==\r
-MTIzNA==\r
-MAIL FROM:<904@from>\r
-RCPT TO:<904@foo>\r
+dXNlcg==\r
+c2VjcmV0\r
+MAIL FROM:<sender@example.com>\r
+RCPT TO:<recipient@example.com>\r
 DATA\r
 QUIT\r
 </protocol>
 DATA\r
 QUIT\r
 </protocol>
index fccd84b..565b041 100644 (file)
@@ -2,7 +2,8 @@
 <info>
 <keywords>
 SMTP
 <info>
 <keywords>
 SMTP
-SMTP AUTH CRAM-MD5
+SASL
+SASL AUTH CRAM-MD5
 RFC2195
 RFC4954
 </keywords>
 RFC2195
 RFC4954
 </keywords>
@@ -12,9 +13,9 @@ RFC4954
 # Server-side
 <reply>
 <servercmd>
 # Server-side
 <reply>
 <servercmd>
-REPLY EHLO 250 AUTH CRAM-MD5
-REPLY AUTH 334 PDE4OTYuNjk3MTcwOTUyQHBvc3RvZmZpY2UucmVzdG9uLm1jaS5uZXQ+
-REPLY dGltIGI5MTNhNjAyYzdlZGE3YTQ5NWI0ZTZlNzMzNGQzODkw 235 Authenticated
+AUTH CRAM-MD5
+REPLY AUTH 334 PDE5NzIuOTg3NjU0MzIxQGN1cmw+
+REPLY dXNlciA3MDMxNzI1NTk5ZmRiYjVkNDEyNjg5YWEzMjNlM2UwYg== 235 Authenticated
 </servercmd>
 </reply>
 
 </servercmd>
 </reply>
 
@@ -34,7 +35,7 @@ SMTP CRAM-MD5 authentication
 mail body\r
 </stdin>
  <command>
 mail body\r
 </stdin>
  <command>
-smtp://%HOSTIP:%SMTPPORT/user --mail-rcpt 905@foo --mail-from 905@from -u tim:tanstaaftanstaaf -T -
+smtp://%HOSTIP:%SMTPPORT/905 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T -
 </command>
 </client>
 
 </command>
 </client>
 
@@ -42,11 +43,11 @@ smtp://%HOSTIP:%SMTPPORT/user --mail-rcpt 905@foo --mail-from 905@from -u tim:ta
 # Verify data after the test has been "shot"
 <verify>
 <protocol>
 # Verify data after the test has been "shot"
 <verify>
 <protocol>
-EHLO user\r
+EHLO 905\r
 AUTH CRAM-MD5\r
 AUTH CRAM-MD5\r
-dGltIGI5MTNhNjAyYzdlZGE3YTQ5NWI0ZTZlNzMzNGQzODkw\r
-MAIL FROM:<905@from>\r
-RCPT TO:<905@foo>\r
+dXNlciA3MDMxNzI1NTk5ZmRiYjVkNDEyNjg5YWEzMjNlM2UwYg==\r
+MAIL FROM:<sender@example.com>\r
+RCPT TO:<recipient@example.com>\r
 DATA\r
 QUIT\r
 </protocol>
 DATA\r
 QUIT\r
 </protocol>
index 1f88990..3c04d15 100644 (file)
@@ -2,12 +2,21 @@
 <info>
 <keywords>
 SMTP
 <info>
 <keywords>
 SMTP
+SASL
+SASL AUTH NTLM
+RFC4954
 </keywords>
 </info>
 
 #
 # Server-side
 <reply>
 </keywords>
 </info>
 
 #
 # Server-side
 <reply>
+<servercmd>
+AUTH NTLM
+REPLY AUTH 334 NTLM supported
+REPLY TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= 334 TlRMTVNTUAACAAAAAgACADAAAAAGgoEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==\r
+REPLY TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA== 235 Authenticated
+</servercmd>
 </reply>
 
 #
 </reply>
 
 #
@@ -16,35 +25,46 @@ SMTP
 <server>
 smtp
 </server>
 <server>
 smtp
 </server>
+<features>
+NTLM
+!SSPI
+debug
+</features>
  <name>
  <name>
-SMTP without --mail-from
+SMTP NTLM authentication
  </name>
  </name>
+ <setenv>
+# we force our own host name, in order to make the test machine independent
+CURL_GETHOSTNAME=curlhost
+# we try to use the LD_PRELOAD hack, if not a debug build
+LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
+ </setenv>
 <stdin>
 <stdin>
-From: different\r
-To: another\r
-\r
-body\r
+mail body\r
 </stdin>
  <command>
 </stdin>
  <command>
-smtp://%HOSTIP:%SMTPPORT/user --mail-rcpt 906@foo -T -
+smtp://%HOSTIP:%SMTPPORT/906 --mail-rcpt recipient@example.com --mail-from sender@example.com -u testuser:testpass -T -
 </command>
 </command>
+<precheck>
+chkhostname curlhost
+</precheck>
 </client>
 
 #
 # Verify data after the test has been "shot"
 <verify>
 <protocol>
 </client>
 
 #
 # Verify data after the test has been "shot"
 <verify>
 <protocol>
-EHLO user\r
-MAIL FROM:<>\r
-RCPT TO:<906@foo>\r
+EHLO 906\r
+AUTH NTLM\r
+TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
+TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
+MAIL FROM:<sender@example.com>\r
+RCPT TO:<recipient@example.com>\r
 DATA\r
 QUIT\r
 </protocol>
 <upload>
 DATA\r
 QUIT\r
 </protocol>
 <upload>
-From: different\r
-To: another\r
-\r
-body\r
+mail body\r
 .\r
 </upload>
 </verify>
 .\r
 </upload>
 </verify>
index 511d519..65c87b4 100644 (file)
@@ -2,8 +2,9 @@
 <info>
 <keywords>
 SMTP
 <info>
 <keywords>
 SMTP
-SMTP AUTH PLAIN SASL-IR
-RFC4616
+SASL
+SASL AUTH DIGEST-MD5
+RFC2831
 RFC4954
 </keywords>
 </info>
 RFC4954
 </keywords>
 </info>
@@ -12,8 +13,10 @@ RFC4954
 # Server-side
 <reply>
 <servercmd>
 # Server-side
 <reply>
 <servercmd>
-REPLY EHLO 250 AUTH PLAIN
-REPLY AUTH 235 Authenticated
+AUTH DIGEST-MD5
+REPLY AUTH 334 cmVhbG09ImN1cmwiLG5vbmNlPSI1MzAwZDE3YTFkNjk1YmQ0MTFlNGNkZjk2Zjk1NDhjMjNjZWQ2MTc1IixhbGdvcml0aG09bWQ1LXNlc3MscW9wPSJhdXRoIg==
+REPLY dXNlcm5hbWU9InVzZXIiLHJlYWxtPSJjdXJsIixub25jZT0iNTMwMGQxN2ExZDY5NWJkNDExZTRjZGY5NmY5NTQ4YzIzY2VkNjE3NSIsY25vbmNlPSIzNDMzMzIzMTM0MzMzMjMyMzQzMzMyMzMzNDMzMzIzNCIsbmM9IjAwMDAwMDAxIixkaWdlc3QtdXJpPSJzbXRwL2N1cmwiLHJlc3BvbnNlPWJkYmExNzYwOGY4NmMyZjEzYTczMTM1NzdkZjkyMzNkLHFvcD1hdXRo 334
+REPLY  235 Authenticated
 </servercmd>
 </reply>
 
 </servercmd>
 </reply>
 
@@ -23,14 +26,19 @@ REPLY AUTH 235 Authenticated
 <server>
 smtp
 </server>
 <server>
 smtp
 </server>
+<features>
+!SSPI
+debug
+crypto
+</features>
  <name>
  <name>
-SMTP plain authentication with initial response
+SMTP DIGEST-MD5 authentication
  </name>
 <stdin>
 mail body\r
 </stdin>
  <command>
  </name>
 <stdin>
 mail body\r
 </stdin>
  <command>
-smtp://%HOSTIP:%SMTPPORT/user --mail-rcpt 907@foo --mail-from 907@from -u test:1234 --sasl-ir -T -
+smtp://%HOSTIP:%SMTPPORT/907 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T -
 </command>
 </client>
 
 </command>
 </client>
 
@@ -38,10 +46,12 @@ smtp://%HOSTIP:%SMTPPORT/user --mail-rcpt 907@foo --mail-from 907@from -u test:1
 # Verify data after the test has been "shot"
 <verify>
 <protocol>
 # Verify data after the test has been "shot"
 <verify>
 <protocol>
-EHLO user\r
-AUTH PLAIN dGVzdAB0ZXN0ADEyMzQ=\r
-MAIL FROM:<907@from>\r
-RCPT TO:<907@foo>\r
+EHLO 907\r
+AUTH DIGEST-MD5\r
+dXNlcm5hbWU9InVzZXIiLHJlYWxtPSJjdXJsIixub25jZT0iNTMwMGQxN2ExZDY5NWJkNDExZTRjZGY5NmY5NTQ4YzIzY2VkNjE3NSIsY25vbmNlPSIzNDMzMzIzMTM0MzMzMjMyMzQzMzMyMzMzNDMzMzIzNCIsbmM9IjAwMDAwMDAxIixkaWdlc3QtdXJpPSJzbXRwL2N1cmwiLHJlc3BvbnNlPWJkYmExNzYwOGY4NmMyZjEzYTczMTM1NzdkZjkyMzNkLHFvcD1hdXRo\r
+\r
+MAIL FROM:<sender@example.com>\r
+RCPT TO:<recipient@example.com>\r
 DATA\r
 QUIT\r
 </protocol>
 DATA\r
 QUIT\r
 </protocol>
index 61d56c5..c471cb7 100644 (file)
@@ -2,8 +2,10 @@
 <info>
 <keywords>
 SMTP
 <info>
 <keywords>
 SMTP
-SMTP AUTH LOGIN SASL-IR
+SASL
+SASL AUTH OAUTH2
 RFC4954
 RFC4954
+RFC6749
 </keywords>
 </info>
 
 </keywords>
 </info>
 
@@ -11,9 +13,9 @@ RFC4954
 # Server-side
 <reply>
 <servercmd>
 # Server-side
 <reply>
 <servercmd>
-REPLY EHLO 250 AUTH LOGIN
-REPLY AUTH 334 UGFzc3dvcmQ6
-REPLY MTIzNA== 235 Authenticated
+AUTH XOAUTH2
+REPLY AUTH 334 XOAUTH2 supported
+REPLY dXNlcj11c2VyAWF1dGg9QmVhcmVyIG1GXzkuQjVmLTQuMUpxTQEB 235 Authenticated
 </servercmd>
 </reply>
 
 </servercmd>
 </reply>
 
@@ -24,13 +26,13 @@ REPLY MTIzNA== 235 Authenticated
 smtp
 </server>
  <name>
 smtp
 </server>
  <name>
-SMTP login authentication with initial response
+SMTP OAuth 2.0 authentication
  </name>
 <stdin>
 mail body\r
 </stdin>
  <command>
  </name>
 <stdin>
 mail body\r
 </stdin>
  <command>
-smtp://%HOSTIP:%SMTPPORT/user --mail-rcpt 908@foo --mail-from 908@from -u test:1234 --sasl-ir -T -
+smtp://%HOSTIP:%SMTPPORT/908 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user --oauth2-bearer mF_9.B5f-4.1JqM -T -
 </command>
 </client>
 
 </command>
 </client>
 
@@ -38,11 +40,11 @@ smtp://%HOSTIP:%SMTPPORT/user --mail-rcpt 908@foo --mail-from 908@from -u test:1
 # Verify data after the test has been "shot"
 <verify>
 <protocol>
 # Verify data after the test has been "shot"
 <verify>
 <protocol>
-EHLO user\r
-AUTH LOGIN dGVzdA==\r
-MTIzNA==\r
-MAIL FROM:<908@from>\r
-RCPT TO:<908@foo>\r
+EHLO 908\r
+AUTH XOAUTH2\r
+dXNlcj11c2VyAWF1dGg9QmVhcmVyIG1GXzkuQjVmLTQuMUpxTQEB\r
+MAIL FROM:<sender@example.com>\r
+RCPT TO:<recipient@example.com>\r
 DATA\r
 QUIT\r
 </protocol>
 DATA\r
 QUIT\r
 </protocol>
index 2fc1f19..e3e907a 100644 (file)
@@ -8,10 +8,6 @@ SMTP
 #
 # Server-side
 <reply>
 #
 # Server-side
 <reply>
-# the key in this response is that it doesn't include SIZE support
-<servercmd>
-REPLY EHLO 250 mooo
-</servercmd>
 </reply>
 
 #
 </reply>
 
 #
@@ -30,7 +26,7 @@ To: another
 body\r
 </file>
  <command>
 body\r
 </file>
  <command>
-smtp://%HOSTIP:%SMTPPORT/user --mail-rcpt 909@foo --mail-rcpt 909@foobar.example --mail-from 909@from -T log/test909.eml
+smtp://%HOSTIP:%SMTPPORT/909 --mail-rcpt recipient@example.com --mail-from sender@example.com -T log/test909.eml
 </command>
 </client>
 
 </command>
 </client>
 
@@ -38,10 +34,9 @@ smtp://%HOSTIP:%SMTPPORT/user --mail-rcpt 909@foo --mail-rcpt 909@foobar.example
 # Verify data after the test has been "shot"
 <verify>
 <protocol>
 # Verify data after the test has been "shot"
 <verify>
 <protocol>
-EHLO user\r
-MAIL FROM:<909@from>\r
-RCPT TO:<909@foo>\r
-RCPT TO:<909@foobar.example>\r
+EHLO 909\r
+MAIL FROM:<sender@example.com>\r
+RCPT TO:<recipient@example.com>\r
 DATA\r
 QUIT\r
 </protocol>
 DATA\r
 QUIT\r
 </protocol>
index e6f34ae..26ee318 100644 (file)
@@ -73,6 +73,8 @@ Finally, this is the real page!
 <client>
 <features>
 NTLM
 <client>
 <features>
 NTLM
+!SSPI
+debug
 </features>
 <server>
 http
 </features>
 <server>
 http
@@ -112,7 +114,7 @@ Host: %HOSTIP:%HTTPPORT
 Accept: */*\r
 \r
 GET /91 HTTP/1.1\r
 Accept: */*\r
 \r
 GET /91 HTTP/1.1\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAgACABwAAAABgAGAHgAAAAIAAgAfgAAAAAAAAAAAAAABoKBAMIyJpR5mHpg2FZha5kRaFZ9436GAxPu0C5llxexSQ5QzVkiLSfkcpVyRgCXXqR+Am15ZG9tYWlubXlzZWxmY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAgACAD2AAAABgAGAP4AAAAIAAgABAEAAAAAAAAAAAAABoKBAI9byKoy6qyyS+1JCYN1XYoxMjM0MjIzNEYCr85trkciZ2j/7/T8MmUBAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAbXlkb21haW5teXNlbGZjdXJsaG9zdA==\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
 User-Agent: curl/7.10.6-pre1 (i686-pc-linux-gnu) libcurl/7.10.6-pre1 OpenSSL/0.9.7a ipv6 zlib/1.1.3\r
 Host: %HOSTIP:%HTTPPORT\r
 Accept: */*\r
index 5013fdc..c1b84ac 100644 (file)
@@ -26,7 +26,7 @@ To: another
 body
 </stdin>
  <command>
 body
 </stdin>
  <command>
-smtp://%HOSTIP:%SMTPPORT/user --mail-rcpt 910@foo --mail-rcpt 910@foobar.example --mail-from 910@from -T -
+smtp://%HOSTIP:%SMTPPORT/910 --mail-rcpt recipient@example.com --mail-from sender@example.com -T -
 </command>
 </client>
 
 </command>
 </client>
 
@@ -34,10 +34,9 @@ smtp://%HOSTIP:%SMTPPORT/user --mail-rcpt 910@foo --mail-rcpt 910@foobar.example
 # Verify data after the test has been "shot"
 <verify>
 <protocol>
 # Verify data after the test has been "shot"
 <verify>
 <protocol>
-EHLO user\r
-MAIL FROM:<910@from>\r
-RCPT TO:<910@foo>\r
-RCPT TO:<910@foobar.example>\r
+EHLO 910\r
+MAIL FROM:<sender@example.com>\r
+RCPT TO:<recipient@example.com>\r
 DATA\r
 QUIT\r
 </protocol>
 DATA\r
 QUIT\r
 </protocol>
index 6b7a1f4..cc87349 100644 (file)
@@ -25,7 +25,7 @@ SMTP with no mail data
 </stdin>
 
  <command>
 </stdin>
 
  <command>
-smtp://%HOSTIP:%SMTPPORT/user --mail-rcpt 911@foo --mail-rcpt 911@foobar.example --mail-from 911@from -T -
+smtp://%HOSTIP:%SMTPPORT/911 --mail-rcpt recipient@example.com --mail-from sender@example.com -T -
 </command>
 </client>
 
 </command>
 </client>
 
@@ -33,10 +33,9 @@ smtp://%HOSTIP:%SMTPPORT/user --mail-rcpt 911@foo --mail-rcpt 911@foobar.example
 # Verify data after the test has been "shot"
 <verify>
 <protocol>
 # Verify data after the test has been "shot"
 <verify>
 <protocol>
-EHLO user\r
-MAIL FROM:<911@from>\r
-RCPT TO:<911@foo>\r
-RCPT TO:<911@foobar.example>\r
+EHLO 911\r
+MAIL FROM:<sender@example.com>\r
+RCPT TO:<recipient@example.com>\r
 DATA\r
 QUIT\r
 </protocol>
 DATA\r
 QUIT\r
 </protocol>
diff --git a/tests/data/test912 b/tests/data/test912
new file mode 100644 (file)
index 0000000..8970c3f
--- /dev/null
@@ -0,0 +1,55 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+SIZE
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+CAPA SIZE
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+ <name>
+SMTP with SIZE support
+ </name>
+<file name="log/test912.eml">
+From: different\r
+To: another\r
+\r
+body\r
+</file>
+ <command>
+smtp://%HOSTIP:%SMTPPORT/912 --mail-rcpt recipient@example.com --mail-from sender@example.com -T log/test912.eml
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+EHLO 912\r
+MAIL FROM:<sender@example.com> SIZE=38\r
+RCPT TO:<recipient@example.com>\r
+DATA\r
+QUIT\r
+</protocol>
+<upload>
+From: different\r
+To: another\r
+\r
+body\r
+.\r
+</upload>
+</verify>
+</testcase>
diff --git a/tests/data/test913 b/tests/data/test913
new file mode 100644 (file)
index 0000000..d13a11a
--- /dev/null
@@ -0,0 +1,50 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+SIZE
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+CAPA "SIZE 32"
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+ <name>
+SMTP with large message SIZE
+ </name>
+<file name="log/test913.eml">
+From: different\r
+To: another\r
+\r
+body\r
+</file>
+ <command>
+smtp://%HOSTIP:%SMTPPORT/913 --mail-rcpt recipient@example.com --mail-from sender@example.com -T log/test913.eml
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+# 55 - CURLE_SEND_ERROR
+<errorcode>
+55
+</errorcode>
+<protocol>
+EHLO 913\r
+MAIL FROM:<sender@example.com> SIZE=38\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test914 b/tests/data/test914
new file mode 100644 (file)
index 0000000..d1532c8
--- /dev/null
@@ -0,0 +1,46 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+ <name>
+SMTP invalid --mail-from
+ </name>
+<file name="log/test914.eml">
+From: different\r
+To: another\r
+\r
+body\r
+</file>
+ <command>
+smtp://%HOSTIP:%SMTPPORT/914 --mail-rcpt recipient@example.com --mail-from invalid -T log/test914.eml
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+# 55 - CURLE_SEND_ERROR
+<errorcode>
+55
+</errorcode>
+<protocol>
+EHLO 914\r
+MAIL FROM:<invalid>\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test915 b/tests/data/test915
new file mode 100644 (file)
index 0000000..4d31db3
--- /dev/null
@@ -0,0 +1,51 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+ <name>
+SMTP without --mail-from
+ </name>
+<stdin>
+From: different\r
+To: another\r
+\r
+body\r
+</stdin>
+ <command>
+smtp://%HOSTIP:%SMTPPORT/915 --mail-rcpt recipient@example.com -T -
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+EHLO 915\r
+MAIL FROM:<>\r
+RCPT TO:<recipient@example.com>\r
+DATA\r
+QUIT\r
+</protocol>
+<upload>
+From: different\r
+To: another\r
+\r
+body\r
+.\r
+</upload>
+</verify>
+</testcase>
diff --git a/tests/data/test916 b/tests/data/test916
new file mode 100644 (file)
index 0000000..0021155
--- /dev/null
@@ -0,0 +1,47 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+ <name>
+SMTP with invalid --mail-rcpt
+ </name>
+<stdin>
+From: different\r
+To: another\r
+\r
+body\r
+</stdin>
+ <command>
+smtp://%HOSTIP:%SMTPPORT/916 --mail-rcpt invalid --mail-from sender@example.com -T -
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+# 55 - CURLE_SEND_ERROR
+<errorcode>
+55
+</errorcode>
+<protocol>
+EHLO 916\r
+MAIL FROM:<sender@example.com>\r
+RCPT TO:<invalid>\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test917 b/tests/data/test917
new file mode 100644 (file)
index 0000000..cc75da3
--- /dev/null
@@ -0,0 +1,55 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+ <name>
+SMTP with multiple --mail-rcpt
+ </name>
+<stdin>
+From: different\r
+To: another\r
+\r
+body\r
+</stdin>
+ <command>
+smtp://%HOSTIP:%SMTPPORT/917 --mail-rcpt recipient.one@example.com --mail-rcpt recipient.two@example.com --mail-rcpt recipient.three@example.com --mail-rcpt recipient.four@example.com --mail-rcpt recipient.five@example.com --mail-from sender@example.com -T -
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+EHLO 917\r
+MAIL FROM:<sender@example.com>\r
+RCPT TO:<recipient.one@example.com>\r
+RCPT TO:<recipient.two@example.com>\r
+RCPT TO:<recipient.three@example.com>\r
+RCPT TO:<recipient.four@example.com>\r
+RCPT TO:<recipient.five@example.com>\r
+DATA\r
+QUIT\r
+</protocol>
+<upload>
+From: different\r
+To: another\r
+\r
+body\r
+.\r
+</upload>
+</verify>
+</testcase>
diff --git a/tests/data/test918 b/tests/data/test918
new file mode 100644 (file)
index 0000000..3756edd
--- /dev/null
@@ -0,0 +1,48 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+ <name>
+SMTP with multiple and invalid --mail-rcpt
+ </name>
+<stdin>
+From: different\r
+To: another\r
+\r
+body\r
+</stdin>
+ <command>
+smtp://%HOSTIP:%SMTPPORT/918 --mail-rcpt recipient.one@example.com --mail-rcpt invalid --mail-rcpt recipient.three@example.com --mail-rcpt sTrAnGe --mail-rcpt recipient.five@example.com --mail-from sender@example.com -T -
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+# 55 - CURLE_SEND_ERROR
+<errorcode>
+55
+</errorcode>
+<protocol>
+EHLO 918\r
+MAIL FROM:<sender@example.com>\r
+RCPT TO:<recipient.one@example.com>\r
+RCPT TO:<invalid>\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test919 b/tests/data/test919
new file mode 100644 (file)
index 0000000..3e74494
--- /dev/null
@@ -0,0 +1,55 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+SASL
+SASL AUTH PLAIN
+SASL-IR
+RFC4616
+RFC4954
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH PLAIN
+REPLY AUTH 235 Authenticated
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+ <name>
+SMTP plain authentication with initial response
+ </name>
+<stdin>
+mail body\r
+</stdin>
+ <command>
+smtp://%HOSTIP:%SMTPPORT/919 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret --sasl-ir -T -
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+EHLO 919\r
+AUTH PLAIN dXNlcgB1c2VyAHNlY3JldA==\r
+MAIL FROM:<sender@example.com>\r
+RCPT TO:<recipient@example.com>\r
+DATA\r
+QUIT\r
+</protocol>
+<upload>
+mail body\r
+.\r
+</upload>
+</verify>
+</testcase>
diff --git a/tests/data/test920 b/tests/data/test920
new file mode 100644 (file)
index 0000000..82f6c56
--- /dev/null
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+SASL
+SASL AUTH LOGIN
+SASL-IR
+RFC4954
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH LOGIN
+REPLY AUTH 334 UGFzc3dvcmQ6
+REPLY c2VjcmV0 235 Authenticated
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+ <name>
+SMTP login authentication with initial response
+ </name>
+<stdin>
+mail body\r
+</stdin>
+ <command>
+smtp://%HOSTIP:%SMTPPORT/920 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret --sasl-ir -T -
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+EHLO 920\r
+AUTH LOGIN dXNlcg==\r
+c2VjcmV0\r
+MAIL FROM:<sender@example.com>\r
+RCPT TO:<recipient@example.com>\r
+DATA\r
+QUIT\r
+</protocol>
+<upload>
+mail body\r
+.\r
+</upload>
+</verify>
+</testcase>
diff --git a/tests/data/test921 b/tests/data/test921
new file mode 100644 (file)
index 0000000..91a7c6f
--- /dev/null
@@ -0,0 +1,70 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+SASL
+SASL AUTH NTLM
+SASL-IR
+RFC4954
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH NTLM
+REPLY AUTH 334 TlRMTVNTUAACAAAAAgACADAAAAAGgoEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==\r
+REPLY TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA== 235 Authenticated
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+<features>
+NTLM
+!SSPI
+debug
+</features>
+ <name>
+SMTP NTLM authentication with initial response
+ </name>
+ <setenv>
+# we force our own host name, in order to make the test machine independent
+CURL_GETHOSTNAME=curlhost
+# we try to use the LD_PRELOAD hack, if not a debug build
+LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
+ </setenv>
+<stdin>
+mail body\r
+</stdin>
+ <command>
+smtp://%HOSTIP:%SMTPPORT/921 --mail-rcpt recipient@example.com --mail-from sender@example.com -u testuser:testpass --sasl-ir -T -
+</command>
+<precheck>
+chkhostname curlhost
+</precheck>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>\r
+EHLO 921\r
+AUTH NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
+TlRMTVNTUAADAAAAGAAYAEAAAACeAJ4AWAAAAAAAAAD2AAAACAAIAPYAAAAIAAgA/gAAAAAAAAAAAAAABoKBAL9LNW5+nkyHZRmyFaL/LJ4xMjM0MjIzNGUCyhgQ9hw6eWAT13EbDa0BAQAAAAAAAACAPtXesZ0BMTIzNDIyMzQAAAAAAgAEAEMAQwABABIARQBMAEkAUwBBAEIARQBUAEgABAAYAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAMALABlAGwAaQBzAGEAYgBlAHQAaAAuAGMAYwAuAGkAYwBlAGQAZQB2AC4AbgB1AAAAAAAAAAAAdGVzdHVzZXJjdXJsaG9zdA==\r
+MAIL FROM:<sender@example.com>\r
+RCPT TO:<recipient@example.com>\r
+DATA\r
+QUIT\r
+</protocol>
+<upload>
+mail body\r
+.\r
+</upload>
+</verify>
+</testcase>
diff --git a/tests/data/test922 b/tests/data/test922
new file mode 100644 (file)
index 0000000..e9e0d5f
--- /dev/null
@@ -0,0 +1,55 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+SASL
+SASL AUTH OAUTH2
+SASL-IR
+RFC4954
+RFC6749
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH XOAUTH2
+REPLY AUTH 235 Authenticated
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+ <name>
+SMTP OAuth 2.0 authentication with initial response
+ </name>
+<stdin>
+mail body\r
+</stdin>
+ <command>
+smtp://%HOSTIP:%SMTPPORT/922 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user --oauth2-bearer mF_9.B5f-4.1JqM --sasl-ir -T -
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+EHLO 922\r
+AUTH XOAUTH2 dXNlcj11c2VyAWF1dGg9QmVhcmVyIG1GXzkuQjVmLTQuMUpxTQEB\r
+MAIL FROM:<sender@example.com>\r
+RCPT TO:<recipient@example.com>\r
+DATA\r
+QUIT\r
+</protocol>
+<upload>
+mail body\r
+.\r
+</upload>
+</verify>
+</testcase>
diff --git a/tests/data/test923 b/tests/data/test923
new file mode 100644 (file)
index 0000000..cb811bb
--- /dev/null
@@ -0,0 +1,40 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+VRFY
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+250 <recipient@example.com>\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+ <name>
+SMTP VRFY
+ </name>
+ <command>
+smtp://%HOSTIP:%SMTPPORT/923 --mail-rcpt recipient
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+EHLO 923\r
+VRFY recipient\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test924 b/tests/data/test924
new file mode 100644 (file)
index 0000000..51e373c
--- /dev/null
@@ -0,0 +1,43 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+VRFY
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+553-Ambiguous; Possibilities are:\r
+553-Joe Smith <joe.smith@example.com>\r
+553-Harry Smith <harry.smith@example.com>\r
+553 Melvin Smith <melvin.smith@example.com>\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+ <name>
+SMTP ambiguous VRFY
+ </name>
+ <command>
+smtp://%HOSTIP:%SMTPPORT/924 --mail-rcpt smith
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+EHLO 924\r
+VRFY smith\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test925 b/tests/data/test925
new file mode 100644 (file)
index 0000000..2d53100
--- /dev/null
@@ -0,0 +1,40 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+VRFY
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+252 Send some mail and I'll try my best\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+ <name>
+SMTP external VRFY
+ </name>
+ <command>
+smtp://%HOSTIP:%SMTPPORT/925 --mail-rcpt user@example.net
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+EHLO 925\r
+VRFY user@example.net\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test926 b/tests/data/test926
new file mode 100644 (file)
index 0000000..4c4576c
--- /dev/null
@@ -0,0 +1,44 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+VRFY
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+REPLY VRFY 550 Unknown user\r
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+ <name>
+SMTP unknown user VRFY
+ </name>
+ <command>
+smtp://%HOSTIP:%SMTPPORT/926 --mail-rcpt recipient
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+# 56 - CURLE_RECV_ERROR
+<errorcode>
+56
+</errorcode>
+<protocol>
+EHLO 926\r
+VRFY recipient\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test927 b/tests/data/test927
new file mode 100644 (file)
index 0000000..b199710
--- /dev/null
@@ -0,0 +1,43 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+EXPN
+CUSTOMREQUEST
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+250-Joe Smith <joe.smith@example.com>\r
+250-Harry Smith <harry.smith@example.com>\r
+250 Melvin Smith <melvin.smith@example.com>\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+ <name>
+SMTP mailing list EXPN (CUSTOMREQUEST)
+ </name>
+ <command>
+smtp://%HOSTIP:%SMTPPORT/927 --mail-rcpt Friends -X EXPN
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+EHLO 927\r
+EXPN Friends\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test928 b/tests/data/test928
new file mode 100644 (file)
index 0000000..81bbdc2
--- /dev/null
@@ -0,0 +1,41 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+HELP
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+214-This server supports the following commands:\r
+214 HELO EHLO RCPT DATA RSET MAIL VRFY EXPN QUIT HELP\r
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+ <name>
+SMTP HELP
+ </name>
+ <command>
+smtp://%HOSTIP:%SMTPPORT/928
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+EHLO 928\r
+HELP\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test929 b/tests/data/test929
new file mode 100644 (file)
index 0000000..3761ab5
--- /dev/null
@@ -0,0 +1,38 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+NOOP
+CUSTOMREQUEST
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+ <name>
+SMTP NOOP (CUSTOMREQUEST)
+ </name>
+ <command>
+smtp://%HOSTIP:%SMTPPORT/929 -X NOOP -I
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+EHLO 929\r
+NOOP\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test930 b/tests/data/test930
new file mode 100644 (file)
index 0000000..be633c1
--- /dev/null
@@ -0,0 +1,38 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+RSET
+CUSTOMREQUEST
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+ <name>
+SMTP RSET (CUSTOMREQUEST)
+ </name>
+ <command>
+smtp://%HOSTIP:%SMTPPORT/930 -X RSET -I
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+EHLO 930\r
+RSET\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
similarity index 88%
rename from tests/data/test1323
rename to tests/data/test931
index 90eb88b..722aa02 100644 (file)
@@ -15,7 +15,7 @@ smtp
 SMTP with URL-encoded CR LF in the URL
  </name>
  <command>
 SMTP with URL-encoded CR LF in the URL
  </name>
  <command>
-smtp://%HOSTIP:%SMTPPORT/%0d%0a/1323
+smtp://%HOSTIP:%SMTPPORT/%0d%0a/931
 </command>
 </client>
 
 </command>
 </client>
 
diff --git a/tests/data/test932 b/tests/data/test932
new file mode 100644 (file)
index 0000000..13ab790
--- /dev/null
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+SASL
+SASL AUTH CRAM-MD5
+SASL CANCELLATION
+RFC2195
+RFC4954
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH CRAM-MD5
+REPLY AUTH 334 Rubbish
+REPLY * 501 AUTH exchange cancelled by client
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+<features>
+crypto
+</features>
+ <name>
+SMTP CRAM-MD5 graceful cancellation
+ </name>
+ <command>
+smtp://%HOSTIP:%SMTPPORT/932 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T -
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+# 67 - CURLE_LOGIN_DENIED
+<errorcode>
+67
+</errorcode>
+#
+# The multi interface considers a broken "CONNECT" as a prematurely broken
+# transfer and such a connection will not get a "QUIT"
+<protocol>
+EHLO 932\r
+AUTH CRAM-MD5\r
+*\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test933 b/tests/data/test933
new file mode 100644 (file)
index 0000000..08b4e9d
--- /dev/null
@@ -0,0 +1,67 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+SASL
+SASL AUTH NTLM
+SASL CANCELLATION
+RFC4954
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH NTLM
+REPLY AUTH 334 NTLM supported
+REPLY TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= 334 Rubbish
+REPLY * 501 AUTH exchange cancelled by client
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+<features>
+NTLM
+!SSPI
+</features>
+ <name>
+SMTP NTLM graceful cancellation
+ </name>
+ <setenv>
+# we force our own host name, in order to make the test machine independent
+CURL_GETHOSTNAME=curlhost
+# we try to use the LD_PRELOAD hack, if not a debug build
+LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
+ </setenv>
+ <command>
+smtp://%HOSTIP:%SMTPPORT/933 --mail-rcpt recipient@example.com --mail-from sender@example.com -u testuser:testpass -T -
+</command>
+<precheck>
+chkhostname curlhost
+</precheck>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+# 67 - CURLE_LOGIN_DENIED
+<errorcode>
+67
+</errorcode>
+#
+# The multi interface considers a broken "CONNECT" as a prematurely broken
+# transfer and such a connection will not get a "QUIT"
+<protocol>
+EHLO 933\r
+AUTH NTLM\r
+TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
+*\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test934 b/tests/data/test934
new file mode 100644 (file)
index 0000000..1794d81
--- /dev/null
@@ -0,0 +1,58 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+SASL
+SASL AUTH DIGEST-MD5
+SASL CANCELLATION
+RFC2831
+RFC4954
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH DIGEST-MD5
+REPLY AUTH 334 Rubbish
+REPLY * 501 AUTH exchange cancelled by client
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+<features>
+!SSPI
+debug
+crypto
+</features>
+ <name>
+SMTP DIGEST-MD5 graceful cancellation
+ </name>
+ <command>
+smtp://%HOSTIP:%SMTPPORT/934 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T -
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+# 67 - CURLE_LOGIN_DENIED
+<errorcode>
+67
+</errorcode>
+#
+# The multi interface considers a broken "CONNECT" as a prematurely broken
+# transfer and such a connection will not get a "QUIT"
+<protocol>
+EHLO 934\r
+AUTH DIGEST-MD5\r
+*\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test935 b/tests/data/test935
new file mode 100644 (file)
index 0000000..3fd5c2e
--- /dev/null
@@ -0,0 +1,65 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+SASL
+SASL AUTH CRAM-MD5
+SASL AUTH PLAIN
+SASL DOWNGRADE
+RFC2195
+RFC4954
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH CRAM-MD5 PLAIN
+REPLY "AUTH CRAM-MD5" 334 Rubbish
+REPLY * 501 AUTH exchange cancelled by client
+REPLY "AUTH PLAIN" 334 PLAIN supported
+REPLY dXNlcgB1c2VyAHNlY3JldA== 235 Authenticated
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+<features>
+crypto
+</features>
+ <name>
+SMTP CRAM-MD5 authentication with SASL downgrade
+ </name>
+<stdin>
+mail body\r
+</stdin>
+ <command>
+smtp://%HOSTIP:%SMTPPORT/935 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T -
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+EHLO 935\r
+AUTH CRAM-MD5\r
+*\r
+AUTH PLAIN\r
+dXNlcgB1c2VyAHNlY3JldA==\r
+MAIL FROM:<sender@example.com>\r
+RCPT TO:<recipient@example.com>\r
+DATA\r
+QUIT\r
+</protocol>
+<upload>
+mail body\r
+.\r
+</upload>
+</verify>
+</testcase>
diff --git a/tests/data/test936 b/tests/data/test936
new file mode 100644 (file)
index 0000000..88c8a93
--- /dev/null
@@ -0,0 +1,76 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+SASL
+SASL AUTH NTLM
+SASL AUTH PLAIN
+SASL DOWNGRADE
+RFC4954
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH NTLM PLAIN
+REPLY "AUTH NTLM" 334 NTLM supported
+REPLY TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= 334 Rubbish
+REPLY * 501 AUTH exchange cancelled by client
+REPLY "AUTH PLAIN" 334 PLAIN supported
+REPLY dXNlcgB1c2VyAHNlY3JldA== 235 Authenticated
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+<features>
+NTLM
+!SSPI
+</features>
+ <name>
+SMTP NTLM authentication with SASL downgrade
+ </name>
+<stdin>
+mail body\r
+</stdin>
+ <setenv>
+# we force our own host name, in order to make the test machine independent
+CURL_GETHOSTNAME=curlhost
+# we try to use the LD_PRELOAD hack, if not a debug build
+LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
+ </setenv>
+ <command>
+smtp://%HOSTIP:%SMTPPORT/936 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T -
+</command>
+<precheck>
+chkhostname curlhost
+</precheck>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+EHLO 936\r
+AUTH NTLM\r
+TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
+*\r
+AUTH PLAIN\r
+dXNlcgB1c2VyAHNlY3JldA==\r
+MAIL FROM:<sender@example.com>\r
+RCPT TO:<recipient@example.com>\r
+DATA\r
+QUIT\r
+</protocol>
+<upload>
+mail body\r
+.\r
+</upload>
+</verify>
+</testcase>
diff --git a/tests/data/test937 b/tests/data/test937
new file mode 100644 (file)
index 0000000..a2cb9b5
--- /dev/null
@@ -0,0 +1,67 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+SASL
+SASL AUTH DIGEST-MD5
+SASL AUTH PLAIN
+SASL DOWNGRADE
+RFC2831
+RFC4954
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH DIGEST-MD5 PLAIN
+REPLY "AUTH DIGEST-MD5" 334 Rubbish
+REPLY * 501 AUTH exchange cancelled by client
+REPLY "AUTH PLAIN" 334 PLAIN supported
+REPLY dXNlcgB1c2VyAHNlY3JldA== 235 Authenticated
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+<features>
+!SSPI
+debug
+crypto
+</features>
+ <name>
+SMTP DIGEST-MD5 authentication with SASL downgrade
+ </name>
+<stdin>
+mail body\r
+</stdin>
+ <command>
+smtp://%HOSTIP:%SMTPPORT/937 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T -
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+EHLO 937\r
+AUTH DIGEST-MD5\r
+*\r
+AUTH PLAIN\r
+dXNlcgB1c2VyAHNlY3JldA==\r
+MAIL FROM:<sender@example.com>\r
+RCPT TO:<recipient@example.com>\r
+DATA\r
+QUIT\r
+</protocol>
+<upload>
+mail body\r
+.\r
+</upload>
+</verify>
+</testcase>
diff --git a/tests/data/test938 b/tests/data/test938
new file mode 100644 (file)
index 0000000..7299d34
--- /dev/null
@@ -0,0 +1,63 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+SASL
+SASL AUTH PLAIN
+connection re-use
+RFC4616
+RFC4954
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH PLAIN
+REPLY AUTH 334 PLAIN supported
+REPLY dXNlci5vbmUAdXNlci5vbmUAc2VjcmV0 235 Authenticated
+REPLY dXNlci50d28AdXNlci50d28Ac2VjcmV0 235 Authenticated\r
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+ <name>
+SMTP multiple connection authentication
+ </name>
+<file name="log/upload938">
+mail body\r
+</file>
+ <command>
+smtp://%HOSTIP:%SMTPPORT/938001 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user.one:secret -T log/upload938 -: smtp://%HOSTIP:%SMTPPORT/938002 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user.two:secret -T log/upload938
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+EHLO 938001\r
+AUTH PLAIN\r
+dXNlci5vbmUAdXNlci5vbmUAc2VjcmV0\r
+MAIL FROM:<sender@example.com>\r
+RCPT TO:<recipient@example.com>\r
+DATA\r
+QUIT\r
+EHLO 938002\r
+AUTH PLAIN\r
+dXNlci50d28AdXNlci50d28Ac2VjcmV0\r
+MAIL FROM:<sender@example.com>\r
+RCPT TO:<recipient@example.com>\r
+DATA\r
+QUIT\r
+</protocol>
+<upload>
+mail body\r
+.\r
+</upload>
diff --git a/tests/data/test939 b/tests/data/test939
new file mode 100644 (file)
index 0000000..34ba8a0
--- /dev/null
@@ -0,0 +1,50 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+RFC821
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+REPLY EHLO 500 Command unrecognized
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+ <name>
+RFC821-only SMTP with username and password
+ </name>
+<stdin>
+mail body\r
+</stdin>
+ <command>
+smtp://%HOSTIP:%SMTPPORT/939 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T -
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+EHLO 939\r
+HELO 939\r
+MAIL FROM:<sender@example.com>\r
+RCPT TO:<recipient@example.com>\r
+DATA\r
+QUIT\r
+</protocol>
+<upload>
+mail body\r
+.\r
+</upload>
+</verify>
+</testcase>
diff --git a/tests/data/test940 b/tests/data/test940
new file mode 100644 (file)
index 0000000..4dfb72c
--- /dev/null
@@ -0,0 +1,45 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+ <name>
+SMTP with username and password but no AUTH capability
+ </name>
+<stdin>
+mail body\r
+</stdin>
+ <command>
+smtp://%HOSTIP:%SMTPPORT/940 --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret -T -
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+EHLO 940\r
+MAIL FROM:<sender@example.com>\r
+RCPT TO:<recipient@example.com>\r
+DATA\r
+QUIT\r
+</protocol>
+<upload>
+mail body\r
+.\r
+</upload>
+</verify>
+</testcase>
diff --git a/tests/data/test941 b/tests/data/test941
new file mode 100644 (file)
index 0000000..fd69b87
--- /dev/null
@@ -0,0 +1,66 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+--crlf
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+ <name>
+SMTP with --crlf
+ </name>
+<file name="log/upload941">
+From: different
+To: another
+
+email
+headers and body
+with unix newlines
+meant to be
+converted
+with
+the
+--crlf option
+</file>
+ <command>
+smtp://%HOSTIP:%SMTPPORT/941 --mail-rcpt recipient@example.com --mail-from sender@example.com -T log/upload941 --crlf
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+EHLO 941\r
+MAIL FROM:<sender@example.com>\r
+RCPT TO:<recipient@example.com>\r
+DATA\r
+QUIT\r
+</protocol>
+<upload>
+From: different\r
+To: another\r
+\r
+email\r
+headers and body\r
+with unix newlines\r
+meant to be\r
+converted\r
+with\r
+the\r
+--crlf option\r
+.\r
+</upload>
+</verify>
+</testcase>
index 865aff9..3d9a933 100644 (file)
@@ -30,9 +30,11 @@ curl memory tracking operational
 #
 # Verify data after the test has been "shot"
 <verify>
 #
 # Verify data after the test has been "shot"
 <verify>
-<file name="log/memdump" mode="text">
+<file name="log/memdump">
 MEM tool_paramhlp.c
 MEM tool_cfgable.c
 MEM tool_paramhlp.c
 MEM tool_cfgable.c
+MEM tool_cfgable.c
+MEM tool_cfgable.c
 </file>
 <stripfile>
 $_ = '' if (($_ !~ /tool_paramhlp/) && ($_ !~ /tool_cfgable/))
 </file>
 <stripfile>
 $_ = '' if (($_ !~ /tool_paramhlp/) && ($_ !~ /tool_cfgable/))
index c32165b..4807a1f 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -52,6 +52,7 @@ BEGIN {
 use strict;
 use warnings;
 use IPC::Open2;
 use strict;
 use warnings;
 use IPC::Open2;
+use Digest::MD5;
 
 require "getpart.pm";
 require "ftp.pm";
 
 require "getpart.pm";
 require "ftp.pm";
@@ -77,7 +78,7 @@ my $ipvnum = 4;     # server IPv number (4 or 6)
 my $proto = 'ftp';  # default server protocol
 my $srcdir;         # directory where ftpserver.pl is located
 my $srvrname;       # server name for presentation purposes
 my $proto = 'ftp';  # default server protocol
 my $srcdir;         # directory where ftpserver.pl is located
 my $srvrname;       # server name for presentation purposes
-
+my $cwd_testno;     # test case numbers extracted from CWD command
 my $path   = '.';
 my $logdir = $path .'/log';
 
 my $path   = '.';
 my $logdir = $path .'/log';
 
@@ -122,8 +123,8 @@ my $sockfilt_timeout = 5;  # default timeout for sockfilter eXsysreads
 #**********************************************************************
 # global vars which depend on server protocol selection
 #
 #**********************************************************************
 # global vars which depend on server protocol selection
 #
-my %commandfunc;  # protocol command specific function callbacks
-my %displaytext;  # text returned to client before callback runs
+my %commandfunc;   # protocol command specific function callbacks
+my %displaytext;   # text returned to client before callback runs
 
 #**********************************************************************
 # global vars customized for each test from the server commands file
 
 #**********************************************************************
 # global vars customized for each test from the server commands file
@@ -138,9 +139,10 @@ my $nodataconn;    # set if ftp srvr doesn't establish or accepts data channel
 my $nodataconn425; # set if ftp srvr doesn't establish data ch and replies 425
 my $nodataconn421; # set if ftp srvr doesn't establish data ch and replies 421
 my $nodataconn150; # set if ftp srvr doesn't establish data ch and replies 150
 my $nodataconn425; # set if ftp srvr doesn't establish data ch and replies 425
 my $nodataconn421; # set if ftp srvr doesn't establish data ch and replies 421
 my $nodataconn150; # set if ftp srvr doesn't establish data ch and replies 150
-my $support_capa;  # set if server supports capability command
-my $support_auth;  # set if server supports authentication command
-my %customreply;   #
+my @capabilities;  # set if server supports capability commands
+my @auth_mechs;    # set if server supports authentication commands
+my %fulltextreply; #
+my %commandreply;  #
 my %customcount;   #
 my %delayreply;    #
 
 my %customcount;   #
 my %delayreply;    #
 
@@ -150,7 +152,7 @@ my %delayreply;    #
 # $ftptargetdir is keeping the fake "name" of LIST directory.
 #
 my $ftplistparserstate;
 # $ftptargetdir is keeping the fake "name" of LIST directory.
 #
 my $ftplistparserstate;
-my $ftptargetdir;
+my $ftptargetdir="";
 
 #**********************************************************************
 # global variables used when running a ftp server to keep state info
 
 #**********************************************************************
 # global variables used when running a ftp server to keep state info
@@ -170,6 +172,13 @@ my $got_exit_signal = 0; # set if program should finish execution ASAP
 my $exit_signal;         # first signal handled in exit_signal_handler
 
 #**********************************************************************
 my $exit_signal;         # first signal handled in exit_signal_handler
 
 #**********************************************************************
+# Mail related definitions
+#
+my $TEXT_USERNAME = "user";
+my $TEXT_PASSWORD = "secret";
+my $POP3_TIMESTAMP = "<1972.987654321\@curl>";
+
+#**********************************************************************
 # exit_signal_handler will be triggered to indicate that the program
 # should finish its execution in a controlled way as soon as possible.
 # For now, program will also terminate from within this handler.
 # exit_signal_handler will be triggered to indicate that the program
 # should finish its execution in a controlled way as soon as possible.
 # For now, program will also terminate from within this handler.
@@ -427,6 +436,28 @@ sub startsf {
     }
 }
 
     }
 }
 
+#**********************************************************************
+# Returns the given test's reply data
+#
+sub getreplydata {
+    my ($testno) = @_;
+    my $testpart = "";
+
+    $testno =~ s/^([^0-9]*)//;
+    if($testno > 10000) {
+       $testpart = $testno % 10000;
+       $testno = int($testno / 10000);
+    }
+
+    loadtest("$srcdir/data/test$testno");
+
+    my @data = getpart("reply", "data$testpart");
+    if((!@data) && ($testpart ne "")) {
+        @data = getpart("reply", "data");
+    }
+
+    return @data;
+}
 
 sub sockfilt {
     my $l;
 
 sub sockfilt {
     my $l;
@@ -436,7 +467,6 @@ sub sockfilt {
     }
 }
 
     }
 }
 
-
 sub sockfiltsecondary {
     my $l;
     foreach $l (@_) {
 sub sockfiltsecondary {
     my $l;
     foreach $l (@_) {
@@ -445,10 +475,10 @@ sub sockfiltsecondary {
     }
 }
 
     }
 }
 
-
+#**********************************************************************
 # Send data to the client on the control stream, which happens to be plain
 # stdout.
 # Send data to the client on the control stream, which happens to be plain
 # stdout.
-
+#
 sub sendcontrol {
     if(!$ctrldelay) {
         # spit it all out at once
 sub sendcontrol {
     if(!$ctrldelay) {
         # spit it all out at once
@@ -487,18 +517,19 @@ sub senddata {
         }
         return;
     }
         }
         return;
     }
+
     foreach $l (@_) {
     foreach $l (@_) {
-      if(!$datadelay) {
-        # spit it all out at once
-        sockfiltsecondary $l;
-      }
-      else {
-          # pause between each byte
-          for (split(//,$l)) {
-              sockfiltsecondary $_;
-              select(undef, undef, undef, 0.01);
-          }
-      }
+        if(!$datadelay) {
+            # spit it all out at once
+            sockfiltsecondary $l;
+        }
+        else {
+            # pause between each byte
+            for (split(//,$l)) {
+                sockfiltsecondary $_;
+                select(undef, undef, undef, 0.01);
+            }
+        }
     }
 }
 
     }
 }
 
@@ -550,49 +581,67 @@ sub protocolsetup {
             '220-        _   _ ____  _     '."\r\n",
             '220-    ___| | | |  _ \| |    '."\r\n",
             '220-   / __| | | | |_) | |    '."\r\n",
             '220-        _   _ ____  _     '."\r\n",
             '220-    ___| | | |  _ \| |    '."\r\n",
             '220-   / __| | | | |_) | |    '."\r\n",
-            '220-  | (__| |_| |  _ <| |___ '."\r\n",
+            '220-  | (__| |_| |  _ {| |___ '."\r\n",
             '220    \___|\___/|_| \_\_____|'."\r\n")
         );
     }
     elsif($proto eq 'pop3') {
         %commandfunc = (
             '220    \___|\___/|_| \_\_____|'."\r\n")
         );
     }
     elsif($proto eq 'pop3') {
         %commandfunc = (
-            'CAPA' => \&CAPA_pop3,
+            'APOP' => \&APOP_pop3,
             'AUTH' => \&AUTH_pop3,
             'AUTH' => \&AUTH_pop3,
-            'RETR' => \&RETR_pop3,
+            'CAPA' => \&CAPA_pop3,
+            'DELE' => \&DELE_pop3,
             'LIST' => \&LIST_pop3,
             'LIST' => \&LIST_pop3,
+            'NOOP' => \&NOOP_pop3,
+            'PASS' => \&PASS_pop3,
+            'QUIT' => \&QUIT_pop3,
+            'RETR' => \&RETR_pop3,
+            'RSET' => \&RSET_pop3,
+            'STAT' => \&STAT_pop3,
+            'TOP'  => \&TOP_pop3,
+            'UIDL' => \&UIDL_pop3,
+            'USER' => \&USER_pop3,
         );
         %displaytext = (
         );
         %displaytext = (
-            'USER' => '+OK We are happy you popped in!',
-            'PASS' => '+OK Access granted',
-            'QUIT' => '+OK byebye',
             'welcome' => join("",
             '        _   _ ____  _     '."\r\n",
             '    ___| | | |  _ \| |    '."\r\n",
             '   / __| | | | |_) | |    '."\r\n",
             'welcome' => join("",
             '        _   _ ____  _     '."\r\n",
             '    ___| | | |  _ \| |    '."\r\n",
             '   / __| | | | |_) | |    '."\r\n",
-            '  | (__| |_| |  _ <| |___ '."\r\n",
+            '  | (__| |_| |  _ {| |___ '."\r\n",
             '   \___|\___/|_| \_\_____|'."\r\n",
             '   \___|\___/|_| \_\_____|'."\r\n",
-            '+OK cURL POP3 server ready to serve'."\r\n")
+            '+OK cURL POP3 server ready to serve '."\r\n")
         );
     }
     elsif($proto eq 'imap') {
         %commandfunc = (
         );
     }
     elsif($proto eq 'imap') {
         %commandfunc = (
-            'APPEND' => \&APPEND_imap,
+            'APPEND'     => \&APPEND_imap,
             'CAPABILITY' => \&CAPABILITY_imap,
             'CAPABILITY' => \&CAPABILITY_imap,
-            'EXAMINE' => \&EXAMINE_imap,
-            'FETCH'  => \&FETCH_imap,
-            'LIST'   => \&LIST_imap,
-            'LOGOUT'   => \&LOGOUT_imap,
-            'SELECT' => \&SELECT_imap,
-            'STATUS'  => \&STATUS_imap,
-            'STORE'  => \&STORE_imap
+            'CHECK'      => \&CHECK_imap,
+            'CLOSE'      => \&CLOSE_imap,
+            'COPY'       => \&COPY_imap,
+            'CREATE'     => \&CREATE_imap,
+            'DELETE'     => \&DELETE_imap,
+            'EXAMINE'    => \&EXAMINE_imap,
+            'EXPUNGE'    => \&EXPUNGE_imap,
+            'FETCH'      => \&FETCH_imap,
+            'LIST'       => \&LIST_imap,
+            'LSUB'       => \&LSUB_imap,
+            'LOGIN'      => \&LOGIN_imap,
+            'LOGOUT'     => \&LOGOUT_imap,
+            'NOOP'       => \&NOOP_imap,
+            'RENAME'     => \&RENAME_imap,
+            'SEARCH'     => \&SEARCH_imap,
+            'SELECT'     => \&SELECT_imap,
+            'STATUS'     => \&STATUS_imap,
+            'STORE'      => \&STORE_imap,
+            'UID'        => \&UID_imap,
         );
         %displaytext = (
         );
         %displaytext = (
-            'LOGIN'  => ' OK LOGIN completed',
             'welcome' => join("",
             '        _   _ ____  _     '."\r\n",
             '    ___| | | |  _ \| |    '."\r\n",
             '   / __| | | | |_) | |    '."\r\n",
             'welcome' => join("",
             '        _   _ ____  _     '."\r\n",
             '    ___| | | |  _ \| |    '."\r\n",
             '   / __| | | | |_) | |    '."\r\n",
-            '  | (__| |_| |  _ <| |___ '."\r\n",
+            '  | (__| |_| |  _ {| |___ '."\r\n",
             '   \___|\___/|_| \_\_____|'."\r\n",
             '* OK cURL IMAP server ready to serve'."\r\n")
         );
             '   \___|\___/|_| \_\_____|'."\r\n",
             '* OK cURL IMAP server ready to serve'."\r\n")
         );
@@ -600,18 +649,23 @@ sub protocolsetup {
     elsif($proto eq 'smtp') {
         %commandfunc = (
             'DATA' => \&DATA_smtp,
     elsif($proto eq 'smtp') {
         %commandfunc = (
             'DATA' => \&DATA_smtp,
+            'EHLO' => \&EHLO_smtp,
+            'EXPN' => \&EXPN_smtp,
+            'HELO' => \&HELO_smtp,
+            'HELP' => \&HELP_smtp,
+            'MAIL' => \&MAIL_smtp,
+            'NOOP' => \&NOOP_smtp,
+            'RSET' => \&RSET_smtp,
             'RCPT' => \&RCPT_smtp,
             'RCPT' => \&RCPT_smtp,
+            'VRFY' => \&VRFY_smtp,
+            'QUIT' => \&QUIT_smtp,
         );
         %displaytext = (
         );
         %displaytext = (
-            'EHLO' => "250-SIZE\r\n250 Welcome visitor, stay a while staaaaaay forever",
-            'MAIL' => '200 Note taken',
-            'RCPT' => '200 Receivers accepted',
-            'QUIT' => '200 byebye',
             'welcome' => join("",
             '220-        _   _ ____  _     '."\r\n",
             '220-    ___| | | |  _ \| |    '."\r\n",
             '220-   / __| | | | |_) | |    '."\r\n",
             'welcome' => join("",
             '220-        _   _ ____  _     '."\r\n",
             '220-    ___| | | |  _ \| |    '."\r\n",
             '220-   / __| | | | |_) | |    '."\r\n",
-            '220-  | (__| |_| |  _ <| |___ '."\r\n",
+            '220-  | (__| |_| |  _ {| |___ '."\r\n",
             '220    \___|\___/|_| \_\_____|'."\r\n")
         );
     }
             '220    \___|\___/|_| \_\_____|'."\r\n")
         );
     }
@@ -662,93 +716,355 @@ sub close_dataconn {
 ################ SMTP commands
 ################
 
 ################ SMTP commands
 ################
 
-# what set by "RCPT"
-my $smtp_rcpt;
+# The type of server (SMTP or ESMTP)
+my $smtp_type;
 
 
-sub DATA_smtp {
-    my $testno;
+# The client (which normally contains the test number)
+my $smtp_client;
 
 
-    if($smtp_rcpt =~ /^TO:(.*)/) {
-        $testno = $1;
+sub EHLO_smtp {
+    my ($client) = @_;
+    my @data;
+
+    # TODO: Get the IP address of the client connection to use in the
+    # EHLO response when the client doesn't specify one but for now use
+    # 127.0.0.1
+    if(!$client) {
+        $client = "[127.0.0.1]";
+    }
+
+    # Set the server type to ESMTP
+    $smtp_type = "ESMTP";
+
+    # Calculate the EHLO response
+    push @data, "$smtp_type pingpong test server Hello $client";
+
+    if((@capabilities) || (@auth_mechs)) {
+        my $mechs;
+
+        for my $c (@capabilities) {
+            push @data, $c;
+        }
+
+        for my $am (@auth_mechs) {
+            if(!$mechs) {
+                $mechs = "$am";
+            }
+            else {
+                $mechs .= " $am";
+            }
+        }
+
+        if($mechs) {
+            push @data, "AUTH $mechs";
+        }
+    }
+
+    # Send the EHLO response
+    for(my $i = 0; $i < @data; $i++) {
+        my $d = $data[$i];
+
+        if($i < @data - 1) {
+            sendcontrol "250-$d\r\n";
+        }
+        else {
+            sendcontrol "250 $d\r\n";
+        }
+    }
+
+    # Store the client (as it may contain the test number)
+    $smtp_client = $client;
+
+    return 0;
+}
+
+sub HELO_smtp {
+    my ($client) = @_;
+
+    # TODO: Get the IP address of the client connection to use in the HELO
+    # response when the client doesn't specify one but for now use 127.0.0.1
+    if(!$client) {
+        $client = "[127.0.0.1]";
+    }
+
+    # Set the server type to SMTP
+    $smtp_type = "SMTP";
+
+    # Send the HELO response
+    sendcontrol "250 $smtp_type pingpong test server Hello $client\r\n";
+
+    # Store the client (as it may contain the test number)
+    $smtp_client = $client;
+
+    return 0;
+}
+
+sub MAIL_smtp {
+    my ($args) = @_;
+
+    logmsg "MAIL_smtp got $args\n";
+
+    if (!$args) {
+        sendcontrol "501 Unrecognized parameter\r\n";
     }
     else {
     }
     else {
-        return; # failure
+        my $from;
+        my $size;
+        my @elements = split(/ /, $args);
+
+        # Get the FROM and SIZE parameters
+        for my $e (@elements) {
+            if($e =~ /^FROM:(.*)$/) {
+                $from = $1;
+            }
+            elsif($e =~ /^SIZE=(\d+)$/) {
+                $size = $1;
+            }
+        }
+
+        # Validate the from address (only <> and a valid email address inside
+        # <> are allowed, such as <user@example.com>)
+        if ((!$from) || (($from ne "<>") && ($from !~
+            /^<([a-zA-Z0-9._%+-]+)\@([a-zA-Z0-9.-]+).([a-zA-Z]{2,4})>$/))) {
+            sendcontrol "501 Invalid address\r\n";
+        }
+        else {
+            my @found;
+            my $valid = 1;
+
+            # Check the capabilities for SIZE and if the specified size is
+            # greater than the message size then reject it
+            if (@found = grep /^SIZE (\d+)$/, @capabilities) {
+                if ($found[0] =~ /^SIZE (\d+)$/) {
+                    if ($size > $1) {
+                        $valid = 0;
+                    }
+                }
+            }
+
+            if(!$valid) {
+                sendcontrol "552 Message size too large\r\n";
+            }
+            else {
+                sendcontrol "250 Sender OK\r\n";
+            }
+        }
     }
 
     }
 
-    if($testno eq "<verifiedserver>") {
-        sendcontrol "554 WE ROOLZ: $$\r\n";
-        return 0; # don't wait for data now
+    return 0;
+}
+
+sub RCPT_smtp {
+    my ($args) = @_;
+
+    logmsg "RCPT_smtp got $args\n";
+
+    # Get the TO parameter
+    if($args !~ /^TO:(.*)/) {
+        sendcontrol "501 Unrecognized parameter\r\n";
     }
     else {
     }
     else {
-        $testno =~ s/^([^0-9]*)([0-9]+).*/$2/;
-        sendcontrol "354 Show me the mail\r\n";
+        my $to = $1;
+
+        # Validate the to address (only a valid email address inside <> is
+        # allowed, such as <user@example.com>)
+        if ($to !~
+            /^<([a-zA-Z0-9._%+-]+)\@([a-zA-Z0-9.-]+).([a-zA-Z]{2,4})>$/) {
+            sendcontrol "501 Invalid address\r\n";
+        }
+        else {
+            sendcontrol "250 Recipient OK\r\n";
+        }
     }
 
     }
 
-    logmsg "===> rcpt $testno was $smtp_rcpt\n";
+    return 0;
+}
 
 
-    my $filename = "log/upload.$testno";
+sub DATA_smtp {
+    my ($args) = @_;
 
 
-    logmsg "Store test number $testno in $filename\n";
+    if ($args) {
+        sendcontrol "501 Unrecognized parameter\r\n";
+    }
+    elsif ($smtp_client !~ /^(\d*)$/) {
+        sendcontrol "501 Invalid arguments\r\n";
+    }
+    else {
+        sendcontrol "354 Show me the mail\r\n";
 
 
-    open(FILE, ">$filename") ||
-        return 0; # failed to open output
+        my $testno = $smtp_client;
+        my $filename = "log/upload.$testno";
 
 
-    my $line;
-    my $ulsize=0;
-    my $disc=0;
-    my $raw;
-    while (5 == (sysread \*SFREAD, $line, 5)) {
-        if($line eq "DATA\n") {
-            my $i;
-            my $eob;
-            sysread \*SFREAD, $i, 5;
+        logmsg "Store test number $testno in $filename\n";
 
 
-            my $size = 0;
-            if($i =~ /^([0-9a-fA-F]{4})\n/) {
-                $size = hex($1);
-            }
+        open(FILE, ">$filename") ||
+            return 0; # failed to open output
 
 
-            read_mainsockf(\$line, $size);
+        my $line;
+        my $ulsize=0;
+        my $disc=0;
+        my $raw;
+        while (5 == (sysread \*SFREAD, $line, 5)) {
+            if($line eq "DATA\n") {
+                my $i;
+                my $eob;
+                sysread \*SFREAD, $i, 5;
 
 
-            $ulsize += $size;
-            print FILE $line if(!$nosave);
+                my $size = 0;
+                if($i =~ /^([0-9a-fA-F]{4})\n/) {
+                    $size = hex($1);
+                }
+
+                read_mainsockf(\$line, $size);
+
+                $ulsize += $size;
+                print FILE $line if(!$nosave);
+
+                $raw .= $line;
+                if($raw =~ /\x0d\x0a\x2e\x0d\x0a/) {
+                    # end of data marker!
+                    $eob = 1;
+                }
+
+                logmsg "> Appending $size bytes to file\n";
 
 
-            $raw .= $line;
-            if($raw =~ /\x0d\x0a\x2e\x0d\x0a/) {
-                # end of data marker!
-                $eob = 1;
+                if($eob) {
+                    logmsg "Found SMTP EOB marker\n";
+                    last;
+                }
             }
             }
-            logmsg "> Appending $size bytes to file\n";
-            if($eob) {
-                logmsg "Found SMTP EOB marker\n";
+            elsif($line eq "DISC\n") {
+                # disconnect!
+                $disc=1;
+                last;
+            }
+            else {
+                logmsg "No support for: $line";
                 last;
             }
         }
                 last;
             }
         }
-        elsif($line eq "DISC\n") {
-            # disconnect!
-            $disc=1;
-            last;
+
+        if($nosave) {
+            print FILE "$ulsize bytes would've been stored here\n";
         }
         }
-        else {
-            logmsg "No support for: $line";
-            last;
+
+        close(FILE);
+
+        logmsg "received $ulsize bytes upload\n";
+
+        sendcontrol "250 OK, data received!\r\n";
+    }
+
+    return 0;
+}
+
+sub NOOP_smtp {
+    my ($args) = @_;
+
+    if($args) {
+        sendcontrol "501 Unrecognized parameter\r\n";
+    }
+    else {
+        sendcontrol "250 OK\r\n";
+    }
+
+    return 0;
+}
+
+sub RSET_smtp {
+    my ($args) = @_;
+
+    if($args) {
+        sendcontrol "501 Unrecognized parameter\r\n";
+    }
+    else {
+        sendcontrol "250 Resetting\r\n";
+    }
+
+    return 0;
+}
+
+sub HELP_smtp {
+    my ($args) = @_;
+
+    # One argument is optional
+    if($args) {
+        logmsg "HELP_smtp got $args\n";
+    }
+
+    if($smtp_client eq "verifiedserver") {
+        # This is the secret command that verifies that this actually is
+        # the curl test server
+        sendcontrol "214 WE ROOLZ: $$\r\n";
+
+        if($verbose) {
+            print STDERR "FTPD: We returned proof we are the test server\n";
         }
         }
+
+        logmsg "return proof we are we\n";
     }
     }
-    if($nosave) {
-        print FILE "$ulsize bytes would've been stored here\n";
+    else {
+        sendcontrol "214-This server supports the following commands:\r\n";
+
+        if(@auth_mechs) {
+            sendcontrol "214 HELO EHLO RCPT DATA RSET MAIL VRFY EXPN QUIT HELP AUTH\r\n";
+        }
+        else {
+            sendcontrol "214 HELO EHLO RCPT DATA RSET MAIL VRFY EXPN QUIT HELP\r\n";
+        }
     }
     }
-    close(FILE);
-    sendcontrol "250 OK, data received!\r\n";
-    logmsg "received $ulsize bytes upload\n";
 
 
+    return 0;
 }
 
 }
 
-sub RCPT_smtp {
+sub VRFY_smtp {
     my ($args) = @_;
     my ($args) = @_;
+    my ($username, $address) = split(/ /, $args, 2);
+
+    logmsg "VRFY_smtp got $args\n";
+
+    if($username eq "") {
+        sendcontrol "501 Unrecognized parameter\r\n";
+    }
+    else {
+        my @data = getreplydata($smtp_client);
+
+        for my $d (@data) {
+            sendcontrol $d;
+        }
+    }
 
 
-    $smtp_rcpt = $args;
+    return 0;
 }
 
 }
 
+sub EXPN_smtp {
+    my ($list_name) = @_;
+
+    logmsg "EXPN_smtp got $list_name\n";
+
+    if(!$list_name) {
+        sendcontrol "501 Unrecognized parameter\r\n";
+    }
+    else {
+        my @data = getreplydata($smtp_client);
+
+        for my $d (@data) {
+            sendcontrol $d;
+        }
+    }
+
+    return 0;
+}
+
+sub QUIT_smtp {
+    sendcontrol "221 cURL $smtp_type server signing off\r\n";
+
+    return 0;
+}
+
+# What was deleted by IMAP STORE / POP3 DELE commands
+my @deleted;
+
 ################
 ################ IMAP commands
 ################
 ################
 ################ IMAP commands
 ################
@@ -767,389 +1083,867 @@ sub fix_imap_params {
     }
 }
 
     }
 }
 
-sub CAPABILITY_imap {
-    my ($testno) = @_;
-    my $data;
+sub CAPABILITY_imap {
+    if((!@capabilities) && (!@auth_mechs)) {
+        sendcontrol "$cmdid BAD Command\r\n";
+    }
+    else {
+        my $data;
+
+        # Calculate the CAPABILITY response
+        $data = "* CAPABILITY IMAP4";
+
+        for my $c (@capabilities) {
+            $data .= " $c";
+        }
+
+        for my $am (@auth_mechs) {
+            $data .= " AUTH=$am";
+        }
+
+        $data .= " pingpong test server\r\n";
+
+        # Send the CAPABILITY response
+        sendcontrol $data;
+        sendcontrol "$cmdid OK CAPABILITY completed\r\n";
+    }
+
+    return 0;
+}
+
+sub LOGIN_imap {
+    my ($args) = @_;
+    my ($user, $password) = split(/ /, $args, 2);
+    fix_imap_params($user, $password);
+
+    logmsg "LOGIN_imap got $args\n";
+
+    if ($user eq "") {
+        sendcontrol "$cmdid BAD Command Argument\r\n";
+    }
+    elsif (($user ne $TEXT_USERNAME) || ($password ne $TEXT_PASSWORD)) {
+        sendcontrol "$cmdid NO LOGIN failed\r\n";
+    }
+    else {
+        sendcontrol "$cmdid OK LOGIN completed\r\n";
+    }
+
+    return 0;
+}
+
+sub SELECT_imap {
+    my ($mailbox) = @_;
+    fix_imap_params($mailbox);
+
+    logmsg "SELECT_imap got test $mailbox\n";
+
+    if($mailbox eq "") {
+        sendcontrol "$cmdid BAD Command Argument\r\n";
+    }
+    else {
+        # Example from RFC 3501, 6.3.1. SELECT Command
+        sendcontrol "* 172 EXISTS\r\n";
+        sendcontrol "* 1 RECENT\r\n";
+        sendcontrol "* OK [UNSEEN 12] Message 12 is first unseen\r\n";
+        sendcontrol "* OK [UIDVALIDITY 3857529045] UIDs valid\r\n";
+        sendcontrol "* OK [UIDNEXT 4392] Predicted next UID\r\n";
+        sendcontrol "* FLAGS (\\Answered \\Flagged \\Deleted \\Seen \\Draft)\r\n";
+        sendcontrol "* OK [PERMANENTFLAGS (\\Deleted \\Seen \\*)] Limited\r\n";
+        sendcontrol "$cmdid OK [READ-WRITE] SELECT completed\r\n";
+
+        $selected = $mailbox;
+    }
+
+    return 0;
+}
+
+sub FETCH_imap {
+    my ($args) = @_;
+    my ($uid, $how) = split(/ /, $args, 2);
+    fix_imap_params($uid, $how);
+
+    logmsg "FETCH_imap got $args\n";
+
+    if ($selected eq "") {
+        sendcontrol "$cmdid BAD Command received in Invalid state\r\n";
+    }
+    else {
+        my @data;
+        my $size;
+
+        if($selected eq "verifiedserver") {
+            # this is the secret command that verifies that this actually is
+            # the curl test server
+            my $response = "WE ROOLZ: $$\r\n";
+            if($verbose) {
+                print STDERR "FTPD: We returned proof we are the test server\n";
+            }
+            $data[0] = $response;
+            logmsg "return proof we are we\n";
+        }
+        else {
+            # send mail content
+            logmsg "retrieve a mail\n";
+
+            @data = getreplydata($selected);
+        }
+
+        for (@data) {
+            $size += length($_);
+        }
+
+        sendcontrol "* $uid FETCH ($how {$size}\r\n";
+
+        for my $d (@data) {
+            sendcontrol $d;
+        }
+
+        sendcontrol ")\r\n";
+        sendcontrol "$cmdid OK FETCH completed\r\n";
+    }
+
+    return 0;
+}
+
+sub APPEND_imap {
+    my ($args) = @_;
+
+    logmsg "APPEND_imap got $args\r\n";
+
+    $args =~ /^([^ ]+) [^{]*\{(\d+)\}$/;
+    my ($mailbox, $size) = ($1, $2);
+    fix_imap_params($mailbox);
+
+    if($mailbox eq "") {
+        sendcontrol "$cmdid BAD Command Argument\r\n";
+    }
+    else {
+        sendcontrol "+ Ready for literal data\r\n";
+
+        my $testno = $mailbox;
+        my $filename = "log/upload.$testno";
+
+        logmsg "Store test number $testno in $filename\n";
+
+        open(FILE, ">$filename") ||
+            return 0; # failed to open output
+
+        my $received = 0;
+        my $line;
+        while(5 == (sysread \*SFREAD, $line, 5)) {
+            if($line eq "DATA\n") {
+                sysread \*SFREAD, $line, 5;
+
+                my $chunksize = 0;
+                if($line =~ /^([0-9a-fA-F]{4})\n/) {
+                    $chunksize = hex($1);
+                }
+
+                read_mainsockf(\$line, $chunksize);
+
+                my $left = $size - $received;
+                my $datasize = ($left > $chunksize) ? $chunksize : $left;
+
+                if($datasize > 0) {
+                    logmsg "> Appending $datasize bytes to file\n";
+                    print FILE substr($line, 0, $datasize) if(!$nosave);
+                    $line = substr($line, $datasize);
+
+                    $received += $datasize;
+                    if($received == $size) {
+                        logmsg "Received all data, waiting for final CRLF.\n";
+                    }
+                }
+
+                if($received == $size && $line eq "\r\n") {
+                    last;
+                }
+            }
+            elsif($line eq "DISC\n") {
+                logmsg "Unexpected disconnect!\n";
+                last;
+            }
+            else {
+                logmsg "No support for: $line";
+                last;
+            }
+        }
+
+        if($nosave) {
+            print FILE "$size bytes would've been stored here\n";
+        }
+
+        close(FILE);
+
+        logmsg "received $size bytes upload\n";
+
+        sendcontrol "$cmdid OK APPEND completed\r\n";
+    }
+
+    return 0;
+}
+
+sub STORE_imap {
+    my ($args) = @_;
+    my ($uid, $what, $value) = split(/ /, $args, 3);
+    fix_imap_params($uid);
+
+    logmsg "STORE_imap got $args\n";
+
+    if ($selected eq "") {
+        sendcontrol "$cmdid BAD Command received in Invalid state\r\n";
+    }
+    elsif (($uid eq "") || ($what ne "+Flags") || ($value eq "")) {
+        sendcontrol "$cmdid BAD Command Argument\r\n";
+    }
+    else {
+        if($value eq "\\Deleted") {
+            push(@deleted, $uid);
+        }
+
+        sendcontrol "* $uid FETCH (FLAGS (\\Seen $value))\r\n";
+        sendcontrol "$cmdid OK STORE completed\r\n";
+    }
+
+    return 0;
+}
+
+sub LIST_imap {
+    my ($args) = @_;
+    my ($reference, $mailbox) = split(/ /, $args, 2);
+    fix_imap_params($reference, $mailbox);
+
+    logmsg "LIST_imap got $args\n";
+
+    if ($reference eq "") {
+        sendcontrol "$cmdid BAD Command Argument\r\n";
+    }
+    elsif ($reference eq "verifiedserver") {
+        # this is the secret command that verifies that this actually is
+        # the curl test server
+        sendcontrol "* LIST () \"/\" \"WE ROOLZ: $$\"\r\n";
+        sendcontrol "$cmdid OK LIST Completed\r\n";
+
+        if($verbose) {
+            print STDERR "FTPD: We returned proof we are the test server\n";
+        }
+
+        logmsg "return proof we are we\n";
+    }
+    else {
+        my @data = getreplydata($reference);
+
+        for my $d (@data) {
+            sendcontrol $d;
+        }
+
+        sendcontrol "$cmdid OK LIST Completed\r\n";
+    }
+
+    return 0;
+}
+
+sub LSUB_imap {
+    my ($args) = @_;
+    my ($reference, $mailbox) = split(/ /, $args, 2);
+    fix_imap_params($reference, $mailbox);
+
+    logmsg "LSUB_imap got $args\n";
+
+    if ($reference eq "") {
+        sendcontrol "$cmdid BAD Command Argument\r\n";
+    }
+    else {
+        my @data = getreplydata($reference);
+
+        for my $d (@data) {
+            sendcontrol $d;
+        }
+
+        sendcontrol "$cmdid OK LSUB Completed\r\n";
+    }
+
+    return 0;
+}
+
+sub EXAMINE_imap {
+    my ($mailbox) = @_;
+    fix_imap_params($mailbox);
+
+    logmsg "EXAMINE_imap got $mailbox\n";
+
+    if ($mailbox eq "") {
+        sendcontrol "$cmdid BAD Command Argument\r\n";
+    }
+    else {
+        my @data = getreplydata($mailbox);
+
+        for my $d (@data) {
+            sendcontrol $d;
+        }
+
+        sendcontrol "$cmdid OK [READ-ONLY] EXAMINE completed\r\n";
+    }
+
+    return 0;
+}
+
+sub STATUS_imap {
+    my ($args) = @_;
+    my ($mailbox, $what) = split(/ /, $args, 2);
+    fix_imap_params($mailbox);
+
+    logmsg "STATUS_imap got $args\n";
+
+    if ($mailbox eq "") {
+        sendcontrol "$cmdid BAD Command Argument\r\n";
+    }
+    else {
+        my @data = getreplydata($mailbox);
+
+        for my $d (@data) {
+            sendcontrol $d;
+        }
+
+        sendcontrol "$cmdid OK STATUS completed\r\n";
+    }
+
+    return 0;
+}
+
+sub SEARCH_imap {
+    my ($what) = @_;
+    fix_imap_params($what);
+
+    logmsg "SEARCH_imap got $what\n";
+
+    if ($selected eq "") {
+        sendcontrol "$cmdid BAD Command received in Invalid state\r\n";
+    }
+    elsif ($what eq "") {
+        sendcontrol "$cmdid BAD Command Argument\r\n";
+    }
+    else {
+        my @data = getreplydata($selected);
+
+        for my $d (@data) {
+            sendcontrol $d;
+        }
+
+        sendcontrol "$cmdid OK SEARCH completed\r\n";
+    }
+
+    return 0;
+}
+
+sub CREATE_imap {
+    my ($args) = @_;
+    fix_imap_params($args);
+
+    logmsg "CREATE_imap got $args\n";
+
+    if ($args eq "") {
+        sendcontrol "$cmdid BAD Command Argument\r\n";
+    }
+    else {
+        sendcontrol "$cmdid OK CREATE completed\r\n";
+    }
+
+    return 0;
+}
+
+sub DELETE_imap {
+    my ($args) = @_;
+    fix_imap_params($args);
+
+    logmsg "DELETE_imap got $args\n";
+
+    if ($args eq "") {
+        sendcontrol "$cmdid BAD Command Argument\r\n";
+    }
+    else {
+        sendcontrol "$cmdid OK DELETE completed\r\n";
+    }
+
+    return 0;
+}
+
+sub RENAME_imap {
+    my ($args) = @_;
+    my ($from_mailbox, $to_mailbox) = split(/ /, $args, 2);
+    fix_imap_params($from_mailbox, $to_mailbox);
+
+    logmsg "RENAME_imap got $args\n";
+
+    if (($from_mailbox eq "") || ($to_mailbox eq "")) {
+        sendcontrol "$cmdid BAD Command Argument\r\n";
+    }
+    else {
+        sendcontrol "$cmdid OK RENAME completed\r\n";
+    }
+
+    return 0;
+}
+
+sub CHECK_imap {
+    if ($selected eq "") {
+        sendcontrol "$cmdid BAD Command received in Invalid state\r\n";
+    }
+    else {
+        sendcontrol "$cmdid OK CHECK completed\r\n";
+    }
+
+    return 0;
+}
+
+sub CLOSE_imap {
+    if ($selected eq "") {
+        sendcontrol "$cmdid BAD Command received in Invalid state\r\n";
+    }
+    elsif (!@deleted) {
+        sendcontrol "$cmdid BAD Command Argument\r\n";
+    }
+    else {
+        sendcontrol "$cmdid OK CLOSE completed\r\n";
+
+        @deleted = ();
+    }
+
+    return 0;
+}
+
+sub EXPUNGE_imap {
+    if ($selected eq "") {
+        sendcontrol "$cmdid BAD Command received in Invalid state\r\n";
+    }
+    else {
+        if (!@deleted) {
+            # Report the number of existing messages as per the SELECT
+            # command
+            sendcontrol "* 172 EXISTS\r\n";
+        }
+        else {
+            # Report the message UIDs being deleted
+            for my $d (@deleted) {
+                sendcontrol "* $d EXPUNGE\r\n";
+            }
+
+            @deleted = ();
+        }
+
+        sendcontrol "$cmdid OK EXPUNGE completed\r\n";
+    }
+
+    return 0;
+}
+
+sub COPY_imap {
+    my ($args) = @_;
+    my ($uid, $mailbox) = split(/ /, $args, 2);
+    fix_imap_params($uid, $mailbox);
+
+    logmsg "COPY_imap got $args\n";
+
+    if (($uid eq "") || ($mailbox eq "")) {
+        sendcontrol "$cmdid BAD Command Argument\r\n";
+    }
+    else {
+        sendcontrol "$cmdid OK COPY completed\r\n";
+    }
+
+    return 0;
+}
+
+sub UID_imap {
+    my ($args) = @_;
+    my ($command) = split(/ /, $args, 1);
+    fix_imap_params($command);
+
+    logmsg "UID_imap got $args\n";
 
 
-    if(!$support_capa) {
-        sendcontrol "$cmdid BAD Command\r\n";
+    if ($selected eq "") {
+        sendcontrol "$cmdid BAD Command received in Invalid state\r\n";
+    }
+    elsif (($command ne "COPY") && ($command ne "FETCH") &&
+           ($command ne "STORE") && ($command ne "SEARCH")) {
+        sendcontrol "$cmdid BAD Command Argument\r\n";
     }
     else {
     }
     else {
-        $data = "* CAPABILITY IMAP4";
-        if($support_auth) {
-            $data .= " AUTH=UNKNOWN";
+        my @data = getreplydata($selected);
+
+        for my $d (@data) {
+            sendcontrol $d;
         }
         }
-        $data .= " pingpong test server\r\n";
 
 
-        sendcontrol $data;
-        sendcontrol "$cmdid OK CAPABILITY completed\r\n";
+        sendcontrol "$cmdid OK $command completed\r\n";
     }
 
     return 0;
 }
 
     }
 
     return 0;
 }
 
-sub SELECT_imap {
-    my ($testno) = @_;
-    fix_imap_params($testno);
+sub NOOP_imap {
+    my ($args) = @_;
+    my @data = (
+        "* 22 EXPUNGE\r\n",
+        "* 23 EXISTS\r\n",
+        "* 3 RECENT\r\n",
+        "* 14 FETCH (FLAGS (\\Seen \\Deleted))\r\n",
+    );
+
+    if ($args) {
+        sendcontrol "$cmdid BAD Command Argument\r\n";
+    }
+    else {
+        for my $d (@data) {
+            sendcontrol $d;
+        }
 
 
-    logmsg "SELECT_imap got test $testno\n";
+        sendcontrol "$cmdid OK NOOP completed\r\n";
+    }
 
 
-    # Example from RFC 3501, 6.3.1. SELECT Command
-    sendcontrol "* 172 EXISTS\r\n";
-    sendcontrol "* 1 RECENT\r\n";
-    sendcontrol "* OK [UNSEEN 12] Message 12 is first unseen\r\n";
-    sendcontrol "* OK [UIDVALIDITY 3857529045] UIDs valid\r\n";
-    sendcontrol "* OK [UIDNEXT 4392] Predicted next UID\r\n";
-    sendcontrol "* FLAGS (\\Answered \\Flagged \\Deleted \\Seen \\Draft)\r\n";
-    sendcontrol "* OK [PERMANENTFLAGS (\\Deleted \\Seen \\*)] Limited\r\n";
-    sendcontrol "$cmdid OK [READ-WRITE] SELECT completed\r\n";
+    return 0;
+}
 
 
-    $selected = $testno;
+sub LOGOUT_imap {
+    sendcontrol "* BYE cURL IMAP server signing off\r\n";
+    sendcontrol "$cmdid OK LOGOUT completed\r\n";
 
     return 0;
 }
 
 
     return 0;
 }
 
-sub FETCH_imap {
-    my ($args) = @_;
-    my ($uid, $how) = split(/ /, $args, 2);
-    my @data;
-    my $size;
-    fix_imap_params($uid, $how);
+################
+################ POP3 commands
+################
 
 
-    logmsg "FETCH_imap got $args\n";
+# Who is attempting to log in
+my $username;
 
 
-    if($selected eq "verifiedserver") {
-        # this is the secret command that verifies that this actually is
-        # the curl test server
-        my $response = "WE ROOLZ: $$\r\n";
-        if($verbose) {
-            print STDERR "FTPD: We returned proof we are the test server\n";
-        }
-        $data[0] = $response;
-        logmsg "return proof we are we\n";
+sub CAPA_pop3 {
+    my @list = ();
+    my $mechs;
+
+    # Calculate the capability list based on the specified capabilities
+    # (except APOP) and any authentication mechanisms
+    for my $c (@capabilities) {
+        push @list, "$c\r\n" unless $c eq "APOP";
     }
     }
-    else {
-        logmsg "retrieve a mail\n";
 
 
-        my $testno = $selected;
-        $testno =~ s/^([^0-9]*)//;
-        my $testpart = "";
-        if ($testno > 10000) {
-            $testpart = $testno % 10000;
-            $testno = int($testno / 10000);
+    for my $am (@auth_mechs) {
+        if(!$mechs) {
+            $mechs = "$am";
         }
         }
+        else {
+            $mechs .= " $am";
+        }
+    }
 
 
-        # send mail content
-        loadtest("$srcdir/data/test$testno");
-
-        @data = getpart("reply", "data$testpart");
+    if($mechs) {
+        push @list, "SASL $mechs\r\n";
     }
 
     }
 
-    for (@data) {
-        $size += length($_);
+    if(!@list) {
+        sendcontrol "-ERR Unrecognized command\r\n";
     }
     }
+    else {
+        my @data = ();
 
 
-    sendcontrol "* $uid FETCH ($how {$size}\r\n";
+        # Calculate the CAPA response
+        push @data, "+OK List of capabilities follows\r\n";
 
 
-    for my $d (@data) {
-        sendcontrol $d;
-    }
+        for my $l (@list) {
+            push @data, "$l\r\n";
+        }
+
+        push @data, "IMPLEMENTATION POP3 pingpong test server\r\n";
+
+        # Send the CAPA response
+        for my $d (@data) {
+            sendcontrol $d;
+        }
 
 
-    sendcontrol ")\r\n";
-    sendcontrol "$cmdid OK FETCH completed\r\n";
+        # End with the magic 3-byte end of listing marker
+        sendcontrol ".\r\n";
+    }
 
     return 0;
 }
 
 
     return 0;
 }
 
-sub APPEND_imap {
+sub APOP_pop3 {
     my ($args) = @_;
     my ($args) = @_;
+    my ($user, $secret) = split(/ /, $args, 2);
 
 
-    logmsg "APPEND_imap got $args\r\n";
-
-    $args =~ /^([^ ]+) [^{]*\{(\d+)\}$/;
-    my ($folder, $size) = ($1, $2);
-    fix_imap_params($folder);
+    if (!grep /^APOP$/, @capabilities) {
+        sendcontrol "-ERR Unrecognized command\r\n";
+    }
+    elsif (($user eq "") || ($secret eq "")) {
+        sendcontrol "-ERR Protocol error\r\n";
+    }
+    else {
+        my $digest = Digest::MD5::md5_hex($POP3_TIMESTAMP, $TEXT_PASSWORD);
 
 
-    sendcontrol "+ Ready for literal data\r\n";
+        if (($user ne $TEXT_USERNAME) || ($secret ne $digest)) {
+            sendcontrol "-ERR Login failure\r\n";
+        }
+        else {
+            sendcontrol "+OK Login successful\r\n";
+        }
+    }
 
 
-    my $testno = $folder;
-    my $filename = "log/upload.$testno";
+    return 0;
+}
 
 
-    logmsg "Store test number $testno in $filename\n";
+sub AUTH_pop3 {
+    if(!@auth_mechs) {
+        sendcontrol "-ERR Unrecognized command\r\n";
+    }
+    else {
+        my @data = ();
 
 
-    open(FILE, ">$filename") ||
-        return 0; # failed to open output
+        # Calculate the AUTH response
+        push @data, "+OK List of supported mechanisms follows\r\n";
 
 
-    my $received = 0;
-    my $line;
-    while(5 == (sysread \*SFREAD, $line, 5)) {
-        if($line eq "DATA\n") {
-            sysread \*SFREAD, $line, 5;
+        for my $am (@auth_mechs) {
+            push @data, "$am\r\n";
+        }
 
 
-            my $chunksize = 0;
-            if($line =~ /^([0-9a-fA-F]{4})\n/) {
-                $chunksize = hex($1);
-            }
+        # Send the AUTH response
+        for my $d (@data) {
+            sendcontrol $d;
+        }
 
 
-            read_mainsockf(\$line, $chunksize);
+        # End with the magic 3-byte end of listing marker
+        sendcontrol ".\r\n";
+    }
 
 
-            my $left = $size - $received;
-            my $datasize = ($left > $chunksize) ? $chunksize : $left;
+    return 0;
+}
 
 
-            if($datasize > 0) {
-                logmsg "> Appending $datasize bytes to file\n";
-                print FILE substr($line, 0, $datasize) if(!$nosave);
-                $line = substr($line, $datasize);
+sub USER_pop3 {
+    my ($user) = @_;
 
 
-                $received += $datasize;
-                if($received == $size) {
-                    logmsg "Received all data, waiting for final CRLF.\n";
-                }
-            }
+    logmsg "USER_pop3 got $user\n";
 
 
-            if($received == $size && $line eq "\r\n") {
-                last;
-            }
-        }
-        elsif($line eq "DISC\n") {
-            logmsg "Unexpected disconnect!\n";
-            last;
-        }
-        else {
-            logmsg "No support for: $line";
-            last;
-        }
+    if (!$user) {
+        sendcontrol "-ERR Protocol error\r\n";
     }
     }
+    else {
+        $username = $user;
 
 
-    if($nosave) {
-        print FILE "$size bytes would've been stored here\n";
+        sendcontrol "+OK\r\n";
     }
     }
-    close(FILE);
-
-    logmsg "received $size bytes upload\n";
-
-    sendcontrol "$cmdid OK APPEND completed\r\n";
 
     return 0;
 }
 
 
     return 0;
 }
 
-sub STORE_imap {
-    my ($args) = @_;
-    my ($uid, $what) = split(/ /, $args, 2);
-    fix_imap_params($uid);
+sub PASS_pop3 {
+    my ($password) = @_;
 
 
-    logmsg "STORE_imap got $args\n";
+    logmsg "PASS_pop3 got $password\n";
 
 
-    sendcontrol "* $uid FETCH (FLAGS (\\Seen \\Deleted))\r\n";
-    sendcontrol "$cmdid OK STORE completed\r\n";
+    if (($username ne $TEXT_USERNAME) || ($password ne $TEXT_PASSWORD)) {
+        sendcontrol "-ERR Login failure\r\n";
+    }
+    else {
+        sendcontrol "+OK Login successful\r\n";
+    }
 
     return 0;
 }
 
 
     return 0;
 }
 
-sub LIST_imap {
-    my ($args) = @_;
-    my ($reference, $mailbox) = split(/ /, $args, 2);
+sub RETR_pop3 {
+    my ($msgid) = @_;
     my @data;
     my @data;
-    fix_imap_params($reference, $mailbox);
-
-    logmsg "LIST_imap got $args\n";
 
 
-    if ($reference eq "verifiedserver") {
-         # this is the secret command that verifies that this actually is
-         # the curl test server
-         @data = ("* LIST () \"/\" \"WE ROOLZ: $$\"\r\n");
-         if($verbose) {
-             print STDERR "FTPD: We returned proof we are the test server\n";
-         }
-         logmsg "return proof we are we\n";
+    if($msgid =~ /^verifiedserver$/) {
+        # this is the secret command that verifies that this actually is
+        # the curl test server
+        my $response = "WE ROOLZ: $$\r\n";
+        if($verbose) {
+            print STDERR "FTPD: We returned proof we are the test server\n";
+        }
+        $data[0] = $response;
+        logmsg "return proof we are we\n";
     }
     else {
     }
     else {
-        my $testno = $reference;
-        $testno =~ s/^([^0-9]*)//;
-        my $testpart = "";
-        if ($testno > 10000) {
-            $testpart = $testno % 10000;
-            $testno = int($testno / 10000);
-        }
-    
-        loadtest("$srcdir/data/test$testno");
+        # send mail content
+        logmsg "retrieve a mail\n";
 
 
-        @data = getpart("reply", "data$testpart");
+        @data = getreplydata($msgid);
     }
 
     }
 
+    sendcontrol "+OK Mail transfer starts\r\n";
+
     for my $d (@data) {
         sendcontrol $d;
     }
 
     for my $d (@data) {
         sendcontrol $d;
     }
 
-    sendcontrol "$cmdid OK LIST Completed\r\n";
+    # end with the magic 3-byte end of mail marker, assumes that the
+    # mail body ends with a CRLF!
+    sendcontrol ".\r\n";
 
     return 0;
 }
 
 
     return 0;
 }
 
-sub EXAMINE_imap {
-    my ($testno) = @_;
-    fix_imap_params($testno);
+sub LIST_pop3 {
+    # This is a built-in fake-message list
+    my @data = (
+        "1 100\r\n",
+        "2 4294967400\r\n",    # > 4 GB
+        "3 200\r\n",
+    );
+
+    logmsg "retrieve a message list\n";
+
+    sendcontrol "+OK Listing starts\r\n";
 
 
-    logmsg "EXAMINE_imap got test $testno\n";
+    for my $d (@data) {
+        sendcontrol $d;
+    }
 
 
-    # Example from RFC 3501, 6.3.2. EXAMINE Command
-    sendcontrol "* 17 EXISTS\r\n";
-    sendcontrol "* 2 RECENT\r\n";
-    sendcontrol "* OK [UNSEEN 8] Message 8 is first unseen\r\n";
-    sendcontrol "* OK [UIDVALIDITY 3857529045] UIDs valid\r\n";
-    sendcontrol "* OK [UIDNEXT 4392] Predicted next UID\r\n";
-    sendcontrol "* FLAGS (\\Answered \\Flagged \\Deleted \\Seen \\Draft)\r\n";
-    sendcontrol "* OK [PERMANENTFLAGS ()] No permanent flags permitted\r\n";
-    sendcontrol "$cmdid OK [READ-ONLY] EXAMINE completed\r\n";
+    # End with the magic 3-byte end of listing marker
+    sendcontrol ".\r\n";
 
     return 0;
 }
 
 
     return 0;
 }
 
-sub STATUS_imap {
-    my ($testno) = @_;
-    fix_imap_params($testno);
+sub DELE_pop3 {
+    my ($msgid) = @_;
 
 
-    logmsg "STATUS_imap got test $testno\n";
+    logmsg "DELE_pop3 got $msgid\n";
 
 
-    $testno =~ s/[^0-9]//g;
-    my $testpart = "";
-    if ($testno > 10000) {
-        $testpart = $testno % 10000;
-        $testno = int($testno / 10000);
+    if (!$msgid) {
+        sendcontrol "-ERR Protocol error\r\n";
     }
     }
+    else {
+        push (@deleted, $msgid);
 
 
-    loadtest("$srcdir/data/test$testno");
-
-    my @data = getpart("reply", "data$testpart");
-
-    for my $d (@data) {
-        sendcontrol $d;
+        sendcontrol "+OK\r\n";
     }
 
     }
 
-    sendcontrol "$cmdid OK STATUS completed\r\n";
-
     return 0;
 }
 
     return 0;
 }
 
-sub LOGOUT_imap {
-    sendcontrol "* BYE cURL IMAP server signing off\r\n";
-    sendcontrol "$cmdid OK LOGOUT completed\r\n";
+sub STAT_pop3 {
+    my ($args) = @_;
+
+    if ($args) {
+        sendcontrol "-ERR Protocol error\r\n";
+    }
+    else {
+        # Send statistics for the built-in fake message list as
+        # detailed in the LIST_pop3 function above
+        sendcontrol "+OK 3 4294967800\r\n";
+    }
 
     return 0;
 }
 
 
     return 0;
 }
 
-################
-################ POP3 commands
-################
-
-sub CAPA_pop3 {
-    my ($testno) = @_;
-    my @data = ();
+sub NOOP_pop3 {
+    my ($args) = @_;
 
 
-    if(!$support_capa) {
-        push @data, "-ERR Unsupported command: 'CAPA'\r\n";
+    if ($args) {
+        sendcontrol "-ERR Protocol error\r\n";
     }
     else {
     }
     else {
-        push @data, "+OK List of capabilities follows\r\n";
-        push @data, "USER\r\n";
-        if($support_auth) {
-            push @data, "SASL UNKNOWN\r\n";
-        }
-        push @data, "IMPLEMENTATION POP3 pingpong test server\r\n";
-        push @data, ".\r\n";
-    }
-
-    for my $d (@data) {
-        sendcontrol $d;
+        sendcontrol "+OK\r\n";
     }
 
     return 0;
 }
 
     }
 
     return 0;
 }
 
-sub AUTH_pop3 {
-    my ($testno) = @_;
-    my @data = ();
+sub UIDL_pop3 {
+    # This is a built-in fake-message UID list
+    my @data = (
+        "1 1\r\n",
+        "2 2\r\n",
+        "3 4\r\n", # Note that UID 3 is a simulated "deleted" message
+    );
 
 
-    if(!$support_auth) {
-        push @data, "-ERR Unsupported command: 'AUTH'\r\n";
+    if (!grep /^UIDL$/, @capabilities) {
+        sendcontrol "-ERR Unrecognized command\r\n";
     }
     else {
     }
     else {
-        push @data, "+OK List of supported mechanisms follows\r\n";
-        push @data, "UNKNOWN\r\n";
-        push @data, ".\r\n";
-    }
+        logmsg "retrieve a message UID list\n";
 
 
-    for my $d (@data) {
-        sendcontrol $d;
+        sendcontrol "+OK Listing starts\r\n";
+
+        for my $d (@data) {
+            sendcontrol $d;
+        }
+
+        # End with the magic 3-byte end of listing marker
+        sendcontrol ".\r\n";
     }
 
     return 0;
 }
 
     }
 
     return 0;
 }
 
-sub RETR_pop3 {
-     my ($testno) = @_;
-     my @data;
-
-     if($testno =~ /^verifiedserver$/) {
-         # this is the secret command that verifies that this actually is
-         # the curl test server
-         my $response = "WE ROOLZ: $$\r\n";
-         if($verbose) {
-             print STDERR "FTPD: We returned proof we are the test server\n";
-         }
-         $data[0] = $response;
-         logmsg "return proof we are we\n";
-     }
-     else {
-         logmsg "retrieve a mail\n";
+sub TOP_pop3 {
+    my ($args) = @_;
+    my ($msgid, $lines) = split(/ /, $args, 2);
 
 
-         $testno =~ s/^([^0-9]*)//;
-         my $testpart = "";
-         if ($testno > 10000) {
-             $testpart = $testno % 10000;
-             $testno = int($testno / 10000);
-         }
+    logmsg "TOP_pop3 got $args\n";
 
 
-         # send mail content
-         loadtest("$srcdir/data/test$testno");
+    if (!grep /^TOP$/, @capabilities) {
+        sendcontrol "-ERR Unrecognized command\r\n";
+    }
+    elsif (($msgid eq "") || ($lines eq "")) {
+        sendcontrol "-ERR Protocol error\r\n";
+    }
+    else {
+        if ($lines == "0") {
+            logmsg "retrieve header of mail\n";
+        }
+        else {
+            logmsg "retrieve top $lines lines of mail\n";
+        }
 
 
-         @data = getpart("reply", "data$testpart");
-     }
+        my @data = getreplydata($msgid);
 
 
-     sendcontrol "+OK Mail transfer starts\r\n";
+        sendcontrol "+OK Mail transfer starts\r\n";
 
 
-     for my $d (@data) {
-         sendcontrol $d;
-     }
+        # Send mail content
+        for my $d (@data) {
+            sendcontrol $d;
+        }
 
 
-     # end with the magic 3-byte end of mail marker, assumes that the
-     # mail body ends with a CRLF!
-     sendcontrol ".\r\n";
+        # End with the magic 3-byte end of mail marker, assumes that the
+        # mail body ends with a CRLF!
+        sendcontrol ".\r\n";
+    }
 
 
-     return 0;
+    return 0;
 }
 
 }
 
-sub LIST_pop3 {
+sub RSET_pop3 {
+    my ($args) = @_;
+
+    if ($args) {
+        sendcontrol "-ERR Protocol error\r\n";
+    }
+    else {
+        if (@deleted) {
+            logmsg "resetting @deleted message(s)\n";
+
+            @deleted = ();
+        }
 
 
-# this is a built-in fake-message list
-my @pop3list=(
-"1 100\r\n",
-"2 4294967400\r\n",    # > 4 GB
-"4 200\r\n", # Note that message 3 is a simulated "deleted" message
-);
+        sendcontrol "+OK\r\n";
+    }
 
 
-     logmsg "retrieve a message list\n";
+    return 0;
+}
 
 
-     sendcontrol "+OK Listing starts\r\n";
+sub QUIT_pop3 {
+    if(@deleted) {
+        logmsg "deleting @deleted message(s)\n";
 
 
-     for my $d (@pop3list) {
-         sendcontrol $d;
-     }
+        @deleted = ();
+    }
 
 
-     # end with the magic 3-byte end of listing marker
-     sendcontrol ".\r\n";
+    sendcontrol "+OK cURL POP3 server signing off\r\n";
 
 
-     return 0;
+    return 0;
 }
 
 ################
 }
 
 ################
@@ -1187,7 +1981,10 @@ sub switch_directory_goto {
 sub switch_directory {
     my $target_dir = $_[0];
 
 sub switch_directory {
     my $target_dir = $_[0];
 
-    if($target_dir eq "/") {
+    if($target_dir =~ /^test-(\d+)/) {
+        $cwd_testno = $1;
+    }
+    elsif($target_dir eq "/") {
         $ftptargetdir = "/";
     }
     else {
         $ftptargetdir = "/";
     }
     else {
@@ -1220,7 +2017,7 @@ sub PWD_ftp {
 }
 
 sub LIST_ftp {
 }
 
 sub LIST_ftp {
-  #  print "150 ASCII data connection for /bin/ls (193.15.23.1,59196) (0 bytes)\r\n";
+    #  print "150 ASCII data connection for /bin/ls (193.15.23.1,59196) (0 bytes)\r\n";
 
 # this is a built-in fake-dir ;-)
 my @ftpdir=("total 20\r\n",
 
 # this is a built-in fake-dir ;-)
 my @ftpdir=("total 20\r\n",
@@ -1259,8 +2056,26 @@ my @ftpdir=("total 20\r\n",
     }
 
     logmsg "pass LIST data on data connection\n";
     }
 
     logmsg "pass LIST data on data connection\n";
-    for(@ftpdir) {
-        senddata $_;
+
+    if($cwd_testno) {
+        loadtest("$srcdir/data/test$cwd_testno");
+
+        my @data = getpart("reply", "data");
+        for(@data) {
+            my $send = $_;
+            # convert all \n to \r\n for ASCII transfer
+            $send =~ s/\r\n/\n/g;
+            $send =~ s/\n/\r\n/g;
+            logmsg "send $send as data\n";
+            senddata $send;
+        }
+        $cwd_testno = 0; # forget it again
+    }
+    else {
+        # old hard-coded style
+        for(@ftpdir) {
+            senddata $_;
+        }
     }
     close_dataconn(0);
     sendcontrol "226 ASCII transfer complete\r\n";
     }
     close_dataconn(0);
     sendcontrol "226 ASCII transfer complete\r\n";
@@ -1932,9 +2747,10 @@ sub customize {
     $nodataconn425 = 0; # default is to not send 425 without data channel
     $nodataconn421 = 0; # default is to not send 421 without data channel
     $nodataconn150 = 0; # default is to not send 150 without data channel
     $nodataconn425 = 0; # default is to not send 425 without data channel
     $nodataconn421 = 0; # default is to not send 421 without data channel
     $nodataconn150 = 0; # default is to not send 150 without data channel
-    $support_capa = 0;  # default is to not support capability command
-    $support_auth = 0;  # default is to not support authentication command
-    %customreply = ();  #
+    @capabilities = (); # default is to not support capability commands
+    @auth_mechs = ();   # default is to not support authentication commands
+    %fulltextreply = ();#
+    %commandreply = (); #
     %customcount = ();  #
     %delayreply = ();   #
 
     %customcount = ();  #
     %delayreply = ();   #
 
@@ -1944,15 +2760,24 @@ sub customize {
     logmsg "FTPD: Getting commands from log/ftpserver.cmd\n";
 
     while(<CUSTOM>) {
     logmsg "FTPD: Getting commands from log/ftpserver.cmd\n";
 
     while(<CUSTOM>) {
-        if($_ =~ /REPLY ([A-Za-z0-9+\/=]+) (.*)/) {
-            $customreply{$1}=eval "qq{$2}";
+        if($_ =~ /REPLY \"([A-Z]+ [A-Za-z0-9+-\/=\*. ]+)\" (.*)/) {
+            $fulltextreply{$1}=eval "qq{$2}";
             logmsg "FTPD: set custom reply for $1\n";
         }
             logmsg "FTPD: set custom reply for $1\n";
         }
+        elsif($_ =~ /REPLY ([A-Za-z0-9+\/=\*]*) (.*)/) {
+            $commandreply{$1}=eval "qq{$2}";
+            if($1 eq "") {
+                logmsg "FTPD: set custom reply for empty command\n";
+            }
+            else {
+                logmsg "FTPD: set custom reply for $1 command\n";
+            }
+        }
         elsif($_ =~ /COUNT ([A-Z]+) (.*)/) {
         elsif($_ =~ /COUNT ([A-Z]+) (.*)/) {
-            # we blank the customreply for this command when having
+            # we blank the custom reply for this command when having
             # been used this number of times
             $customcount{$1}=$2;
             # been used this number of times
             $customcount{$1}=$2;
-            logmsg "FTPD: blank custom reply for $1 after $2 uses\n";
+            logmsg "FTPD: blank custom reply for $1 command after $2 uses\n";
         }
         elsif($_ =~ /DELAY ([A-Z]+) (\d*)/) {
             $delayreply{$1}=$2;
         }
         elsif($_ =~ /DELAY ([A-Z]+) (\d*)/) {
             $delayreply{$1}=$2;
@@ -1998,13 +2823,16 @@ sub customize {
             logmsg "FTPD: instructed to use NODATACONN\n";
             $nodataconn=1;
         }
             logmsg "FTPD: instructed to use NODATACONN\n";
             $nodataconn=1;
         }
-        elsif($_ =~ /SUPPORTCAPA/) {
+        elsif($_ =~ /CAPA (.*)/) {
             logmsg "FTPD: instructed to support CAPABILITY command\n";
             logmsg "FTPD: instructed to support CAPABILITY command\n";
-            $support_capa=1;
+            @capabilities = split(/ (?!(?:[^" ]|[^"] [^"])+")/, $1);
+            foreach (@capabilities) {
+                $_ = $1 if /^"(.*)"$/;
+            }
         }
         }
-        elsif($_ =~ /SUPPORTAUTH/) {
+        elsif($_ =~ /AUTH (.*)/) {
             logmsg "FTPD: instructed to support AUTHENTICATION command\n";
             logmsg "FTPD: instructed to support AUTHENTICATION command\n";
-            $support_auth=1;
+            @auth_mechs = split(/ /, $1);
         }
         elsif($_ =~ /NOSAVE/) {
             # don't actually store the file we upload - to be used when
         }
         elsif($_ =~ /NOSAVE/) {
             # don't actually store the file we upload - to be used when
@@ -2186,13 +3014,13 @@ while(1) {
 
     &customize(); # read test control instructions
 
 
     &customize(); # read test control instructions
 
-    my $welcome = $customreply{"welcome"};
+    my $welcome = $commandreply{"welcome"};
     if(!$welcome) {
         $welcome = $displaytext{"welcome"};
     }
     else {
         # clear it after use
     if(!$welcome) {
         $welcome = $displaytext{"welcome"};
     }
     else {
         # clear it after use
-        $customreply{"welcome"}="";
+        $commandreply{"welcome"}="";
         if($welcome !~ /\r\n\z/) {
             $welcome .= "\r\n";
         }
         if($welcome !~ /\r\n\z/) {
             $welcome .= "\r\n";
         }
@@ -2256,26 +3084,67 @@ while(1) {
         my $FTPARG;
         if($proto eq "imap") {
             # IMAP is different with its identifier first on the command line
         my $FTPARG;
         if($proto eq "imap") {
             # IMAP is different with its identifier first on the command line
-            unless(($full =~ /^([^ ]+) ([^ ]+) (.*)/) ||
-                   ($full =~ /^([^ ]+) ([^ ]+)/)) {
-                sendcontrol "$1 '$full': command not understood.\r\n";
+            if(($full =~ /^([^ ]+) ([^ ]+) (.*)/) ||
+               ($full =~ /^([^ ]+) ([^ ]+)/)) {
+                $cmdid=$1; # set the global variable
+                $FTPCMD=$2;
+                $FTPARG=$3;
+            }
+            # IMAP authentication cancellation
+            elsif($full =~ /^\*$/) {
+                # Command id has already been set
+                $FTPCMD="*";
+                $FTPARG="";
+            }
+            # IMAP long "commands" are base64 authentication data
+            elsif($full =~ /^[A-Z0-9+\/]*={0,2}$/i) {
+                # Command id has already been set
+                $FTPCMD=$full;
+                $FTPARG="";
+            }
+            else {
+                sendcontrol "$full BAD Command\r\n";
                 last;
             }
                 last;
             }
-            $cmdid=$1; # set the global variable
-            $FTPCMD=$2;
-            $FTPARG=$3;
         }
         elsif($full =~ /^([A-Z]{3,4})(\s(.*))?$/i) {
             $FTPCMD=$1;
             $FTPARG=$3;
         }
         }
         elsif($full =~ /^([A-Z]{3,4})(\s(.*))?$/i) {
             $FTPCMD=$1;
             $FTPARG=$3;
         }
-        elsif(($proto eq "smtp") && ($full =~ /^[A-Z0-9+\/]{0,512}={0,2}$/i)) {
-            # SMTP long "commands" are base64 authentication data.
-            $FTPCMD=$full;
-            $FTPARG="";
+        elsif($proto eq "pop3") {
+            # POP3 authentication cancellation
+            if($full =~ /^\*$/) {
+                $FTPCMD="*";
+                $FTPARG="";
+            }
+            # POP3 long "commands" are base64 authentication data
+            elsif($full =~ /^[A-Z0-9+\/]*={0,2}$/i) {
+                $FTPCMD=$full;
+                $FTPARG="";
+            }
+            else {
+                sendcontrol "-ERR Unrecognized command\r\n";
+                last;
+            }
+        }
+        elsif($proto eq "smtp") {
+            # SMTP authentication cancellation
+            if($full =~ /^\*$/) {
+                $FTPCMD="*";
+                $FTPARG="";
+            }
+            # SMTP long "commands" are base64 authentication data
+            elsif($full =~ /^[A-Z0-9+\/]{0,512}={0,2}$/i) {
+                $FTPCMD=$full;
+                $FTPARG="";
+            }
+            else {
+                sendcontrol "500 Unrecognized command\r\n";
+                last;
+            }
         }
         else {
         }
         else {
-            sendcontrol "500 '$full': command not understood.\r\n";
+            sendcontrol "500 Unrecognized command\r\n";
             last;
         }
 
             last;
         }
 
@@ -2297,38 +3166,47 @@ while(1) {
             }
         }
 
             }
         }
 
-        my $text;
-        $text = $customreply{$FTPCMD};
-        my $fake = $text;
+        my $check = 1; # no response yet
 
 
+        # See if there is a custom reply for the full text
+        my $fulltext = $FTPARG ? $FTPCMD . " " . $FTPARG : $FTPCMD;
+        my $text = $fulltextreply{$fulltext};
         if($text && ($text ne "")) {
         if($text && ($text ne "")) {
-            if($customcount{$FTPCMD} && (!--$customcount{$FTPCMD})) {
-                # used enough number of times, now blank the customreply
-                $customreply{$FTPCMD}="";
-            }
+            sendcontrol "$text\r\n";
+            $check = 0;
         }
         else {
         }
         else {
-            $text = $displaytext{$FTPCMD};
-        }
-        my $check;
-        if($text && ($text ne "")) {
-            if($cmdid && ($cmdid ne "")) {
-                sendcontrol "$cmdid$text\r\n";
-            }
-            else {
+            # See if there is a custom reply for the command
+            $text = $commandreply{$FTPCMD};
+            if($text && ($text ne "")) {
+                if($customcount{$FTPCMD} && (!--$customcount{$FTPCMD})) {
+                    # used enough times so blank the custom command reply
+                    $commandreply{$FTPCMD}="";
+                }
+
                 sendcontrol "$text\r\n";
                 sendcontrol "$text\r\n";
+                $check = 0;
             }
             }
-        }
-        else {
-            $check=1; # no response yet
-        }
+            else {
+                # See if there is any display text for the command
+                $text = $displaytext{$FTPCMD};
+                if($text && ($text ne "")) {
+                    if($proto eq 'imap') {
+                        sendcontrol "$cmdid $text\r\n";
+                    }
+                    else {
+                        sendcontrol "$text\r\n";
+                    }
+
+                    $check = 0;
+                }
 
 
-        unless($fake && ($fake ne "")) {
-            # only perform this if we're not faking a reply
-            my $func = $commandfunc{$FTPCMD};
-            if($func) {
-                &$func($FTPARG, $FTPCMD);
-                $check=0; # taken care of
+                # only perform this if we're not faking a reply
+                my $func = $commandfunc{$FTPCMD};
+                if($func) {
+                    &$func($FTPARG, $FTPCMD);
+                    $check = 0;
+                }
             }
         }
 
             }
         }
 
index 92a2378..0729cf4 100644 (file)
@@ -239,7 +239,7 @@ sub writearray {
 }
 
 #
 }
 
 #
-# Load a specified file an return it as an array
+# Load a specified file and return it as an array
 #
 sub loadarray {
     my ($filename)=@_;
 #
 sub loadarray {
     my ($filename)=@_;
@@ -264,13 +264,21 @@ sub showdiff {
 
     open(TEMP, ">$file1");
     for(@$firstref) {
 
     open(TEMP, ">$file1");
     for(@$firstref) {
-        print TEMP $_;
+        my $l = $_;
+        $l =~ s/\r/[CR]/g;
+        $l =~ s/\n/[LF]/g;
+        print TEMP $l;
+        print TEMP "\n";
     }
     close(TEMP);
 
     open(TEMP, ">$file2");
     for(@$secondref) {
     }
     close(TEMP);
 
     open(TEMP, ">$file2");
     for(@$secondref) {
-        print TEMP $_;
+        my $l = $_;
+        $l =~ s/\r/[CR]/g;
+        $l =~ s/\n/[LF]/g;
+        print TEMP $l;
+        print TEMP "\n";
     }
     close(TEMP);
     my @out = `diff -u $file2 $file1 2>/dev/null`;
     }
     close(TEMP);
     my @out = `diff -u $file2 $file1 2>/dev/null`;
index 67185be..19ebec7 100755 (executable)
 # Modified by Linus Nielsen Feltzing for inclusion in the libcurl test
 # framework
 #
 # Modified by Linus Nielsen Feltzing for inclusion in the libcurl test
 # framework
 #
-import SocketServer
+try:
+    import socketserver
+except:
+    import SocketServer as socketserver
 import argparse
 import re
 import select
 import argparse
 import re
 import select
@@ -251,24 +254,21 @@ class ResponseBuilder(object):
         self._processed_end = True
 
       elif path == '/1k.txt':
         self._processed_end = True
 
       elif path == '/1k.txt':
-        str = '0123456789abcdef'
-        body = ''.join([str for num in xrange(64)])
+        body = '0123456789abcdef' * 64
         result += self._BuildResponse(
             '200 OK', ['Server: Apache',
                        'Content-Length: 1024',
                        'Cache-Control: max-age=60'], body)
 
       elif path == '/10k.txt':
         result += self._BuildResponse(
             '200 OK', ['Server: Apache',
                        'Content-Length: 1024',
                        'Cache-Control: max-age=60'], body)
 
       elif path == '/10k.txt':
-        str = '0123456789abcdef'
-        body = ''.join([str for num in xrange(640)])
+        body = '0123456789abcdef' * 640
         result += self._BuildResponse(
             '200 OK', ['Server: Apache',
                        'Content-Length: 10240',
                        'Cache-Control: max-age=60'], body)
 
       elif path == '/100k.txt':
         result += self._BuildResponse(
             '200 OK', ['Server: Apache',
                        'Content-Length: 10240',
                        'Cache-Control: max-age=60'], body)
 
       elif path == '/100k.txt':
-        str = '0123456789abcdef'
-        body = ''.join([str for num in xrange(6400)])
+        body = '0123456789abcdef' * 6400
         result += self._BuildResponse(
             '200 OK',
             ['Server: Apache',
         result += self._BuildResponse(
             '200 OK',
             ['Server: Apache',
@@ -277,9 +277,7 @@ class ResponseBuilder(object):
             body)
 
       elif path == '/100k_chunked.txt':
             body)
 
       elif path == '/100k_chunked.txt':
-        str = '0123456789abcdef'
-        moo = ''.join([str for num in xrange(6400)])
-        body = self.Chunkify(moo, 20480)
+        body = self.Chunkify('0123456789abcdef' * 6400, 20480)
         body.append('0\r\n\r\n')
         body = ''.join(body)
 
         body.append('0\r\n\r\n')
         body = ''.join(body)
 
@@ -337,7 +335,7 @@ class ResponseBuilder(object):
             '%s' % (status, '\r\n'.join(headers), body))
 
 
             '%s' % (status, '\r\n'.join(headers), body))
 
 
-class PipelineRequestHandler(SocketServer.BaseRequestHandler):
+class PipelineRequestHandler(socketserver.BaseRequestHandler):
   """Called on an incoming TCP connection."""
 
   def _GetTimeUntilTimeout(self):
   """Called on an incoming TCP connection."""
 
   def _GetTimeUntilTimeout(self):
@@ -357,22 +355,19 @@ class PipelineRequestHandler(SocketServer.BaseRequestHandler):
     self._send_buffer = ""
     self._start_time = time.time()
     try:
     self._send_buffer = ""
     self._start_time = time.time()
     try:
-      poller = select.epoll(sizehint=1)
-      poller.register(self.request.fileno(), select.EPOLLIN)
       while not self._response_builder.processed_end or self._send_buffer:
 
         time_left = self._GetTimeUntilTimeout()
         time_until_next_send = self._GetTimeUntilNextSend()
         max_poll_time = min(time_left, time_until_next_send) + MIN_POLL_TIME
 
       while not self._response_builder.processed_end or self._send_buffer:
 
         time_left = self._GetTimeUntilTimeout()
         time_until_next_send = self._GetTimeUntilNextSend()
         max_poll_time = min(time_left, time_until_next_send) + MIN_POLL_TIME
 
-        events = None
+        rlist, wlist, xlist = [], [], []
+        fileno = self.request.fileno()
         if max_poll_time > 0:
         if max_poll_time > 0:
+          rlist.append(fileno)
           if self._send_buffer:
           if self._send_buffer:
-            poller.modify(self.request.fileno(),
-                          select.EPOLLIN | select.EPOLLOUT)
-          else:
-            poller.modify(self.request.fileno(), select.EPOLLIN)
-          events = poller.poll(timeout=max_poll_time)
+            wlist.append(fileno)
+          rlist, wlist, xlist = select.select(rlist, wlist, xlist, max_poll_time)
 
         if self._GetTimeUntilTimeout() <= 0:
           return
 
         if self._GetTimeUntilTimeout() <= 0:
           return
@@ -382,22 +377,21 @@ class PipelineRequestHandler(SocketServer.BaseRequestHandler):
           self._num_written = self._num_queued
           self._last_queued_time = 0
 
           self._num_written = self._num_queued
           self._last_queued_time = 0
 
-        for fd, mode in events:
-          if mode & select.EPOLLIN:
-            new_data = self.request.recv(MAX_REQUEST_SIZE, socket.MSG_DONTWAIT)
-            if not new_data:
-              return
-            new_requests = self._request_parser.ParseAdditionalData(new_data)
-            self._response_builder.QueueRequests(
-                new_requests, self._request_parser.were_all_requests_http_1_1)
-            self._num_queued += len(new_requests)
-            self._last_queued_time = time.time()
-          elif mode & select.EPOLLOUT:
-            num_bytes_sent = self.request.send(self._send_buffer[0:4096])
-            self._send_buffer = self._send_buffer[num_bytes_sent:]
-            time.sleep(0.05)
-          else:
+        if fileno in rlist:
+          self.request.setblocking(False)
+          new_data = self.request.recv(MAX_REQUEST_SIZE)
+          self.request.setblocking(True)
+          if not new_data:
             return
             return
+          new_requests = self._request_parser.ParseAdditionalData(new_data)
+          self._response_builder.QueueRequests(
+              new_requests, self._request_parser.were_all_requests_http_1_1)
+          self._num_queued += len(new_requests)
+          self._last_queued_time = time.time()
+        elif fileno in wlist:
+          num_bytes_sent = self.request.send(self._send_buffer[0:4096])
+          self._send_buffer = self._send_buffer[num_bytes_sent:]
+          time.sleep(0.05)
 
     except RequestTooLargeError as e:
       self.request.send(self._response_builder.WriteError(
 
     except RequestTooLargeError as e:
       self.request.send(self._response_builder.WriteError(
@@ -411,11 +405,11 @@ class PipelineRequestHandler(SocketServer.BaseRequestHandler):
       self.request.send(self._response_builder.WriteError(
           '200 OK', INFO_MESSAGE))
     except Exception as e:
       self.request.send(self._response_builder.WriteError(
           '200 OK', INFO_MESSAGE))
     except Exception as e:
-      print e
+      print(e)
     self.request.close()
 
 
     self.request.close()
 
 
-class PipelineServer(SocketServer.ForkingMixIn, SocketServer.TCPServer):
+class PipelineServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
   pass
 
 
   pass
 
 
index a38c3ce..b60dadc 100755 (executable)
@@ -36,6 +36,7 @@ use serverhelp qw(
 
 my $verbose = 0;     # set to 1 for debugging
 my $port = 8990;     # just a default
 
 my $verbose = 0;     # set to 1 for debugging
 my $port = 8990;     # just a default
+my $unix_socket;     # location to place a listening Unix socket
 my $ipvnum = 4;      # default IP version of http server
 my $idnum = 1;       # dafault http server instance number
 my $proto = 'http';  # protocol the http server speaks
 my $ipvnum = 4;      # default IP version of http server
 my $idnum = 1;       # dafault http server instance number
 my $proto = 'http';  # protocol the http server speaks
@@ -74,6 +75,13 @@ while(@ARGV) {
     elsif($ARGV[0] eq '--ipv6') {
         $ipvnum = 6;
     }
     elsif($ARGV[0] eq '--ipv6') {
         $ipvnum = 6;
     }
+    elsif($ARGV[0] eq '--unix-socket') {
+        $ipvnum = 'unix';
+        if($ARGV[1]) {
+            $unix_socket = $ARGV[1];
+            shift @ARGV;
+        }
+    }
     elsif($ARGV[0] eq '--gopher') {
         $gopher = 1;
     }
     elsif($ARGV[0] eq '--gopher') {
         $gopher = 1;
     }
@@ -117,7 +125,12 @@ if(!$logfile) {
 $flags .= "--pidfile \"$pidfile\" --logfile \"$logfile\" ";
 $flags .= "--gopher " if($gopher);
 $flags .= "--connect $connect " if($connect);
 $flags .= "--pidfile \"$pidfile\" --logfile \"$logfile\" ";
 $flags .= "--gopher " if($gopher);
 $flags .= "--connect $connect " if($connect);
-$flags .= "--ipv$ipvnum --port $port --srcdir \"$srcdir\"";
+if($ipvnum eq 'unix') {
+    $flags .= "--unix-socket '$unix_socket' ";
+} else {
+    $flags .= "--ipv$ipvnum --port $port ";
+}
+$flags .= "--srcdir \"$srcdir\"";
 
 if($verbose) {
     print STDERR "RUN: server/sws $flags\n";
 
 if($verbose) {
     print STDERR "RUN: server/sws $flags\n";
index b14ca78..bc276f5 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -113,7 +113,10 @@ noinst_PROGRAMS = chkhostname$(EXEEXT) libauthretry$(EXEEXT) \
        lib1503$(EXEEXT) lib1504$(EXEEXT) lib1505$(EXEEXT) \
        lib1506$(EXEEXT) lib1507$(EXEEXT) lib1508$(EXEEXT) \
        lib1509$(EXEEXT) lib1510$(EXEEXT) lib1511$(EXEEXT) \
        lib1503$(EXEEXT) lib1504$(EXEEXT) lib1505$(EXEEXT) \
        lib1506$(EXEEXT) lib1507$(EXEEXT) lib1508$(EXEEXT) \
        lib1509$(EXEEXT) lib1510$(EXEEXT) lib1511$(EXEEXT) \
-       lib1512$(EXEEXT) lib1900$(EXEEXT) lib2033$(EXEEXT)
+       lib1512$(EXEEXT) lib1513$(EXEEXT) lib1514$(EXEEXT) \
+       lib1515$(EXEEXT) lib1520$(EXEEXT) lib1525$(EXEEXT) \
+       lib1526$(EXEEXT) lib1527$(EXEEXT) lib1528$(EXEEXT) \
+       lib1529$(EXEEXT) lib1900$(EXEEXT) lib2033$(EXEEXT)
 @USE_CPPFLAG_CURL_STATICLIB_TRUE@am__append_1 = -DCURL_STATICLIB
 @CURL_LT_SHLIB_USE_NO_UNDEFINED_TRUE@am__append_2 = -no-undefined
 @CURL_LT_SHLIB_USE_MIMPURE_TEXT_TRUE@am__append_3 = -mimpure-text
 @USE_CPPFLAG_CURL_STATICLIB_TRUE@am__append_1 = -DCURL_STATICLIB
 @CURL_LT_SHLIB_USE_NO_UNDEFINED_TRUE@am__append_2 = -no-undefined
 @CURL_LT_SHLIB_USE_MIMPURE_TEXT_TRUE@am__append_3 = -mimpure-text
@@ -158,8 +161,9 @@ libhostname_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
        $(LDFLAGS) -o $@
 @BUILD_LIBHOSTNAME_TRUE@am_libhostname_la_rpath =
 PROGRAMS = $(noinst_PROGRAMS)
        $(LDFLAGS) -o $@
 @BUILD_LIBHOSTNAME_TRUE@am_libhostname_la_rpath =
 PROGRAMS = $(noinst_PROGRAMS)
+am__dirstamp = $(am__leading_dot)dirstamp
 am_chkhostname_OBJECTS = chkhostname-chkhostname.$(OBJEXT) \
 am_chkhostname_OBJECTS = chkhostname-chkhostname.$(OBJEXT) \
-       chkhostname-curl_gethostname.$(OBJEXT)
+       ../../lib/chkhostname-curl_gethostname.$(OBJEXT)
 chkhostname_OBJECTS = $(am_chkhostname_OBJECTS)
 am__objects_1 = lib1500-first.$(OBJEXT)
 am__objects_2 = lib1500-testutil.$(OBJEXT)
 chkhostname_OBJECTS = $(am_chkhostname_OBJECTS)
 am__objects_1 = lib1500-first.$(OBJEXT)
 am__objects_2 = lib1500-testutil.$(OBJEXT)
@@ -173,553 +177,616 @@ lib1500_OBJECTS = $(am_lib1500_OBJECTS)
 lib1500_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am__objects_3 = lib1501-first.$(OBJEXT)
 am__objects_4 = lib1501-testutil.$(OBJEXT)
 lib1500_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am__objects_3 = lib1501-first.$(OBJEXT)
 am__objects_4 = lib1501-testutil.$(OBJEXT)
-am__objects_5 = lib1501-warnless.$(OBJEXT)
+am__objects_5 = ../../lib/lib1501-warnless.$(OBJEXT)
 am_lib1501_OBJECTS = lib1501-lib1501.$(OBJEXT) $(am__objects_3) \
        $(am__objects_4) $(am__objects_5)
 lib1501_OBJECTS = $(am_lib1501_OBJECTS)
 lib1501_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am__objects_6 = lib1502-first.$(OBJEXT)
 am__objects_7 = lib1502-testutil.$(OBJEXT)
 am_lib1501_OBJECTS = lib1501-lib1501.$(OBJEXT) $(am__objects_3) \
        $(am__objects_4) $(am__objects_5)
 lib1501_OBJECTS = $(am_lib1501_OBJECTS)
 lib1501_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am__objects_6 = lib1502-first.$(OBJEXT)
 am__objects_7 = lib1502-testutil.$(OBJEXT)
-am__objects_8 = lib1502-warnless.$(OBJEXT)
+am__objects_8 = ../../lib/lib1502-warnless.$(OBJEXT)
 am_lib1502_OBJECTS = lib1502-lib1502.$(OBJEXT) $(am__objects_6) \
        $(am__objects_7) $(am__objects_8)
 lib1502_OBJECTS = $(am_lib1502_OBJECTS)
 lib1502_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am__objects_9 = lib1503-first.$(OBJEXT)
 am__objects_10 = lib1503-testutil.$(OBJEXT)
 am_lib1502_OBJECTS = lib1502-lib1502.$(OBJEXT) $(am__objects_6) \
        $(am__objects_7) $(am__objects_8)
 lib1502_OBJECTS = $(am_lib1502_OBJECTS)
 lib1502_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am__objects_9 = lib1503-first.$(OBJEXT)
 am__objects_10 = lib1503-testutil.$(OBJEXT)
-am__objects_11 = lib1503-warnless.$(OBJEXT)
+am__objects_11 = ../../lib/lib1503-warnless.$(OBJEXT)
 am_lib1503_OBJECTS = lib1503-lib1502.$(OBJEXT) $(am__objects_9) \
        $(am__objects_10) $(am__objects_11)
 lib1503_OBJECTS = $(am_lib1503_OBJECTS)
 lib1503_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am__objects_12 = lib1504-first.$(OBJEXT)
 am__objects_13 = lib1504-testutil.$(OBJEXT)
 am_lib1503_OBJECTS = lib1503-lib1502.$(OBJEXT) $(am__objects_9) \
        $(am__objects_10) $(am__objects_11)
 lib1503_OBJECTS = $(am_lib1503_OBJECTS)
 lib1503_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am__objects_12 = lib1504-first.$(OBJEXT)
 am__objects_13 = lib1504-testutil.$(OBJEXT)
-am__objects_14 = lib1504-warnless.$(OBJEXT)
+am__objects_14 = ../../lib/lib1504-warnless.$(OBJEXT)
 am_lib1504_OBJECTS = lib1504-lib1502.$(OBJEXT) $(am__objects_12) \
        $(am__objects_13) $(am__objects_14)
 lib1504_OBJECTS = $(am_lib1504_OBJECTS)
 lib1504_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am__objects_15 = lib1505-first.$(OBJEXT)
 am__objects_16 = lib1505-testutil.$(OBJEXT)
 am_lib1504_OBJECTS = lib1504-lib1502.$(OBJEXT) $(am__objects_12) \
        $(am__objects_13) $(am__objects_14)
 lib1504_OBJECTS = $(am_lib1504_OBJECTS)
 lib1504_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am__objects_15 = lib1505-first.$(OBJEXT)
 am__objects_16 = lib1505-testutil.$(OBJEXT)
-am__objects_17 = lib1505-warnless.$(OBJEXT)
+am__objects_17 = ../../lib/lib1505-warnless.$(OBJEXT)
 am_lib1505_OBJECTS = lib1505-lib1502.$(OBJEXT) $(am__objects_15) \
        $(am__objects_16) $(am__objects_17)
 lib1505_OBJECTS = $(am_lib1505_OBJECTS)
 lib1505_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am__objects_18 = lib1506-first.$(OBJEXT)
 am__objects_19 = lib1506-testutil.$(OBJEXT)
 am_lib1505_OBJECTS = lib1505-lib1502.$(OBJEXT) $(am__objects_15) \
        $(am__objects_16) $(am__objects_17)
 lib1505_OBJECTS = $(am_lib1505_OBJECTS)
 lib1505_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am__objects_18 = lib1506-first.$(OBJEXT)
 am__objects_19 = lib1506-testutil.$(OBJEXT)
-am__objects_20 = lib1506-warnless.$(OBJEXT)
+am__objects_20 = ../../lib/lib1506-warnless.$(OBJEXT)
 am_lib1506_OBJECTS = lib1506-lib1506.$(OBJEXT) $(am__objects_18) \
        $(am__objects_19) $(am__objects_20)
 lib1506_OBJECTS = $(am_lib1506_OBJECTS)
 lib1506_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am__objects_21 = lib1507-first.$(OBJEXT)
 am__objects_22 = lib1507-testutil.$(OBJEXT)
 am_lib1506_OBJECTS = lib1506-lib1506.$(OBJEXT) $(am__objects_18) \
        $(am__objects_19) $(am__objects_20)
 lib1506_OBJECTS = $(am_lib1506_OBJECTS)
 lib1506_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am__objects_21 = lib1507-first.$(OBJEXT)
 am__objects_22 = lib1507-testutil.$(OBJEXT)
-am__objects_23 = lib1507-warnless.$(OBJEXT)
+am__objects_23 = ../../lib/lib1507-warnless.$(OBJEXT)
 am_lib1507_OBJECTS = lib1507-lib1507.$(OBJEXT) $(am__objects_21) \
        $(am__objects_22) $(am__objects_23)
 lib1507_OBJECTS = $(am_lib1507_OBJECTS)
 lib1507_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am__objects_24 = lib1508-first.$(OBJEXT)
 am__objects_25 = lib1508-testutil.$(OBJEXT)
 am_lib1507_OBJECTS = lib1507-lib1507.$(OBJEXT) $(am__objects_21) \
        $(am__objects_22) $(am__objects_23)
 lib1507_OBJECTS = $(am_lib1507_OBJECTS)
 lib1507_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am__objects_24 = lib1508-first.$(OBJEXT)
 am__objects_25 = lib1508-testutil.$(OBJEXT)
-am__objects_26 = lib1508-warnless.$(OBJEXT)
+am__objects_26 = ../../lib/lib1508-warnless.$(OBJEXT)
 am_lib1508_OBJECTS = lib1508-lib1508.$(OBJEXT) $(am__objects_24) \
        $(am__objects_25) $(am__objects_26)
 lib1508_OBJECTS = $(am_lib1508_OBJECTS)
 lib1508_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am__objects_27 = lib1509-first.$(OBJEXT)
 am__objects_28 = lib1509-testutil.$(OBJEXT)
 am_lib1508_OBJECTS = lib1508-lib1508.$(OBJEXT) $(am__objects_24) \
        $(am__objects_25) $(am__objects_26)
 lib1508_OBJECTS = $(am_lib1508_OBJECTS)
 lib1508_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am__objects_27 = lib1509-first.$(OBJEXT)
 am__objects_28 = lib1509-testutil.$(OBJEXT)
-am__objects_29 = lib1509-warnless.$(OBJEXT)
+am__objects_29 = ../../lib/lib1509-warnless.$(OBJEXT)
 am_lib1509_OBJECTS = lib1509-lib1509.$(OBJEXT) $(am__objects_27) \
        $(am__objects_28) $(am__objects_29)
 lib1509_OBJECTS = $(am_lib1509_OBJECTS)
 lib1509_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am__objects_30 = lib1510-first.$(OBJEXT)
 am__objects_31 = lib1510-testutil.$(OBJEXT)
 am_lib1509_OBJECTS = lib1509-lib1509.$(OBJEXT) $(am__objects_27) \
        $(am__objects_28) $(am__objects_29)
 lib1509_OBJECTS = $(am_lib1509_OBJECTS)
 lib1509_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am__objects_30 = lib1510-first.$(OBJEXT)
 am__objects_31 = lib1510-testutil.$(OBJEXT)
-am__objects_32 = lib1510-warnless.$(OBJEXT)
+am__objects_32 = ../../lib/lib1510-warnless.$(OBJEXT)
 am_lib1510_OBJECTS = lib1510-lib1510.$(OBJEXT) $(am__objects_30) \
        $(am__objects_31) $(am__objects_32)
 lib1510_OBJECTS = $(am_lib1510_OBJECTS)
 lib1510_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am__objects_33 = lib1511-first.$(OBJEXT)
 am__objects_34 = lib1511-testutil.$(OBJEXT)
 am_lib1510_OBJECTS = lib1510-lib1510.$(OBJEXT) $(am__objects_30) \
        $(am__objects_31) $(am__objects_32)
 lib1510_OBJECTS = $(am_lib1510_OBJECTS)
 lib1510_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am__objects_33 = lib1511-first.$(OBJEXT)
 am__objects_34 = lib1511-testutil.$(OBJEXT)
-am__objects_35 = lib1511-warnless.$(OBJEXT)
+am__objects_35 = ../../lib/lib1511-warnless.$(OBJEXT)
 am_lib1511_OBJECTS = lib1511-lib1511.$(OBJEXT) $(am__objects_33) \
        $(am__objects_34) $(am__objects_35)
 lib1511_OBJECTS = $(am_lib1511_OBJECTS)
 lib1511_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am__objects_36 = lib1512-first.$(OBJEXT)
 am__objects_37 = lib1512-testutil.$(OBJEXT)
 am_lib1511_OBJECTS = lib1511-lib1511.$(OBJEXT) $(am__objects_33) \
        $(am__objects_34) $(am__objects_35)
 lib1511_OBJECTS = $(am_lib1511_OBJECTS)
 lib1511_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am__objects_36 = lib1512-first.$(OBJEXT)
 am__objects_37 = lib1512-testutil.$(OBJEXT)
-am__objects_38 = lib1512-warnless.$(OBJEXT)
+am__objects_38 = ../../lib/lib1512-warnless.$(OBJEXT)
 am_lib1512_OBJECTS = lib1512-lib1512.$(OBJEXT) $(am__objects_36) \
        $(am__objects_37) $(am__objects_38)
 lib1512_OBJECTS = $(am_lib1512_OBJECTS)
 lib1512_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am_lib1512_OBJECTS = lib1512-lib1512.$(OBJEXT) $(am__objects_36) \
        $(am__objects_37) $(am__objects_38)
 lib1512_OBJECTS = $(am_lib1512_OBJECTS)
 lib1512_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_39 = lib1900-first.$(OBJEXT)
-am__objects_40 = lib1900-testutil.$(OBJEXT)
-am__objects_41 = lib1900-warnless.$(OBJEXT)
-am_lib1900_OBJECTS = lib1900-lib1900.$(OBJEXT) $(am__objects_39) \
+am__objects_39 = lib1513-first.$(OBJEXT)
+am__objects_40 = lib1513-testutil.$(OBJEXT)
+am__objects_41 = ../../lib/lib1513-warnless.$(OBJEXT)
+am_lib1513_OBJECTS = lib1513-lib1513.$(OBJEXT) $(am__objects_39) \
        $(am__objects_40) $(am__objects_41)
        $(am__objects_40) $(am__objects_41)
+lib1513_OBJECTS = $(am_lib1513_OBJECTS)
+lib1513_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_42 = lib1514-first.$(OBJEXT)
+am__objects_43 = lib1514-testutil.$(OBJEXT)
+am__objects_44 = ../../lib/lib1514-warnless.$(OBJEXT)
+am_lib1514_OBJECTS = lib1514-lib1514.$(OBJEXT) $(am__objects_42) \
+       $(am__objects_43) $(am__objects_44)
+lib1514_OBJECTS = $(am_lib1514_OBJECTS)
+lib1514_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_45 = lib1515-first.$(OBJEXT)
+am__objects_46 = lib1515-testutil.$(OBJEXT)
+am__objects_47 = ../../lib/lib1515-warnless.$(OBJEXT)
+am_lib1515_OBJECTS = lib1515-lib1515.$(OBJEXT) $(am__objects_45) \
+       $(am__objects_46) $(am__objects_47)
+lib1515_OBJECTS = $(am_lib1515_OBJECTS)
+lib1515_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_48 = lib1520-first.$(OBJEXT)
+am_lib1520_OBJECTS = lib1520-lib1520.$(OBJEXT) $(am__objects_48)
+lib1520_OBJECTS = $(am_lib1520_OBJECTS)
+lib1520_LDADD = $(LDADD)
+lib1520_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_49 = lib1525-first.$(OBJEXT)
+am__objects_50 = lib1525-testutil.$(OBJEXT)
+am__objects_51 = ../../lib/lib1525-warnless.$(OBJEXT)
+am_lib1525_OBJECTS = lib1525-lib1525.$(OBJEXT) $(am__objects_49) \
+       $(am__objects_50) $(am__objects_51)
+lib1525_OBJECTS = $(am_lib1525_OBJECTS)
+lib1525_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_52 = lib1526-first.$(OBJEXT)
+am__objects_53 = lib1526-testutil.$(OBJEXT)
+am__objects_54 = ../../lib/lib1526-warnless.$(OBJEXT)
+am_lib1526_OBJECTS = lib1526-lib1526.$(OBJEXT) $(am__objects_52) \
+       $(am__objects_53) $(am__objects_54)
+lib1526_OBJECTS = $(am_lib1526_OBJECTS)
+lib1526_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_55 = lib1527-first.$(OBJEXT)
+am__objects_56 = lib1527-testutil.$(OBJEXT)
+am__objects_57 = ../../lib/lib1527-warnless.$(OBJEXT)
+am_lib1527_OBJECTS = lib1527-lib1527.$(OBJEXT) $(am__objects_55) \
+       $(am__objects_56) $(am__objects_57)
+lib1527_OBJECTS = $(am_lib1527_OBJECTS)
+lib1527_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_58 = lib1528-first.$(OBJEXT)
+am__objects_59 = lib1528-testutil.$(OBJEXT)
+am__objects_60 = ../../lib/lib1528-warnless.$(OBJEXT)
+am_lib1528_OBJECTS = lib1528-lib1528.$(OBJEXT) $(am__objects_58) \
+       $(am__objects_59) $(am__objects_60)
+lib1528_OBJECTS = $(am_lib1528_OBJECTS)
+lib1528_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_61 = lib1529-first.$(OBJEXT)
+am__objects_62 = lib1529-testutil.$(OBJEXT)
+am__objects_63 = ../../lib/lib1529-warnless.$(OBJEXT)
+am_lib1529_OBJECTS = lib1529-lib1529.$(OBJEXT) $(am__objects_61) \
+       $(am__objects_62) $(am__objects_63)
+lib1529_OBJECTS = $(am_lib1529_OBJECTS)
+lib1529_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_64 = lib1900-first.$(OBJEXT)
+am__objects_65 = lib1900-testutil.$(OBJEXT)
+am__objects_66 = ../../lib/lib1900-warnless.$(OBJEXT)
+am_lib1900_OBJECTS = lib1900-lib1900.$(OBJEXT) $(am__objects_64) \
+       $(am__objects_65) $(am__objects_66)
 lib1900_OBJECTS = $(am_lib1900_OBJECTS)
 lib1900_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib1900_OBJECTS = $(am_lib1900_OBJECTS)
 lib1900_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_42 = lib2033-first.$(OBJEXT)
-am__objects_43 = lib2033-testutil.$(OBJEXT)
-am__objects_44 = lib2033-warnless.$(OBJEXT)
+am__objects_67 = lib2033-first.$(OBJEXT)
+am__objects_68 = lib2033-testutil.$(OBJEXT)
+am__objects_69 = ../../lib/lib2033-warnless.$(OBJEXT)
 am_lib2033_OBJECTS = lib2033-libntlmconnect.$(OBJEXT) \
 am_lib2033_OBJECTS = lib2033-libntlmconnect.$(OBJEXT) \
-       $(am__objects_42) $(am__objects_43) $(am__objects_44)
+       $(am__objects_67) $(am__objects_68) $(am__objects_69)
 lib2033_OBJECTS = $(am_lib2033_OBJECTS)
 lib2033_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib2033_OBJECTS = $(am_lib2033_OBJECTS)
 lib2033_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_45 = lib500-first.$(OBJEXT)
-am__objects_46 = lib500-testutil.$(OBJEXT)
-am__objects_47 = lib500-testtrace.$(OBJEXT)
-am_lib500_OBJECTS = lib500-lib500.$(OBJEXT) $(am__objects_45) \
-       $(am__objects_46) $(am__objects_47)
+am__objects_70 = lib500-first.$(OBJEXT)
+am__objects_71 = lib500-testutil.$(OBJEXT)
+am__objects_72 = lib500-testtrace.$(OBJEXT)
+am_lib500_OBJECTS = lib500-lib500.$(OBJEXT) $(am__objects_70) \
+       $(am__objects_71) $(am__objects_72)
 lib500_OBJECTS = $(am_lib500_OBJECTS)
 lib500_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib500_OBJECTS = $(am_lib500_OBJECTS)
 lib500_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_48 = lib501-first.$(OBJEXT)
-am_lib501_OBJECTS = lib501-lib501.$(OBJEXT) $(am__objects_48)
+am__objects_73 = lib501-first.$(OBJEXT)
+am_lib501_OBJECTS = lib501-lib501.$(OBJEXT) $(am__objects_73)
 lib501_OBJECTS = $(am_lib501_OBJECTS)
 lib501_LDADD = $(LDADD)
 lib501_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib501_OBJECTS = $(am_lib501_OBJECTS)
 lib501_LDADD = $(LDADD)
 lib501_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_49 = lib502-first.$(OBJEXT)
-am__objects_50 = lib502-testutil.$(OBJEXT)
-am__objects_51 = lib502-warnless.$(OBJEXT)
-am_lib502_OBJECTS = lib502-lib502.$(OBJEXT) $(am__objects_49) \
-       $(am__objects_50) $(am__objects_51)
+am__objects_74 = lib502-first.$(OBJEXT)
+am__objects_75 = lib502-testutil.$(OBJEXT)
+am__objects_76 = ../../lib/lib502-warnless.$(OBJEXT)
+am_lib502_OBJECTS = lib502-lib502.$(OBJEXT) $(am__objects_74) \
+       $(am__objects_75) $(am__objects_76)
 lib502_OBJECTS = $(am_lib502_OBJECTS)
 lib502_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib502_OBJECTS = $(am_lib502_OBJECTS)
 lib502_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_52 = lib503-first.$(OBJEXT)
-am__objects_53 = lib503-testutil.$(OBJEXT)
-am__objects_54 = lib503-warnless.$(OBJEXT)
-am_lib503_OBJECTS = lib503-lib503.$(OBJEXT) $(am__objects_52) \
-       $(am__objects_53) $(am__objects_54)
+am__objects_77 = lib503-first.$(OBJEXT)
+am__objects_78 = lib503-testutil.$(OBJEXT)
+am__objects_79 = ../../lib/lib503-warnless.$(OBJEXT)
+am_lib503_OBJECTS = lib503-lib503.$(OBJEXT) $(am__objects_77) \
+       $(am__objects_78) $(am__objects_79)
 lib503_OBJECTS = $(am_lib503_OBJECTS)
 lib503_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib503_OBJECTS = $(am_lib503_OBJECTS)
 lib503_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_55 = lib504-first.$(OBJEXT)
-am__objects_56 = lib504-testutil.$(OBJEXT)
-am__objects_57 = lib504-warnless.$(OBJEXT)
-am_lib504_OBJECTS = lib504-lib504.$(OBJEXT) $(am__objects_55) \
-       $(am__objects_56) $(am__objects_57)
+am__objects_80 = lib504-first.$(OBJEXT)
+am__objects_81 = lib504-testutil.$(OBJEXT)
+am__objects_82 = ../../lib/lib504-warnless.$(OBJEXT)
+am_lib504_OBJECTS = lib504-lib504.$(OBJEXT) $(am__objects_80) \
+       $(am__objects_81) $(am__objects_82)
 lib504_OBJECTS = $(am_lib504_OBJECTS)
 lib504_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib504_OBJECTS = $(am_lib504_OBJECTS)
 lib504_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_58 = lib505-first.$(OBJEXT)
-am_lib505_OBJECTS = lib505-lib505.$(OBJEXT) $(am__objects_58)
+am__objects_83 = lib505-first.$(OBJEXT)
+am_lib505_OBJECTS = lib505-lib505.$(OBJEXT) $(am__objects_83)
 lib505_OBJECTS = $(am_lib505_OBJECTS)
 lib505_LDADD = $(LDADD)
 lib505_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib505_OBJECTS = $(am_lib505_OBJECTS)
 lib505_LDADD = $(LDADD)
 lib505_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_59 = lib506-first.$(OBJEXT)
-am_lib506_OBJECTS = lib506-lib506.$(OBJEXT) $(am__objects_59)
+am__objects_84 = lib506-first.$(OBJEXT)
+am_lib506_OBJECTS = lib506-lib506.$(OBJEXT) $(am__objects_84)
 lib506_OBJECTS = $(am_lib506_OBJECTS)
 lib506_LDADD = $(LDADD)
 lib506_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib506_OBJECTS = $(am_lib506_OBJECTS)
 lib506_LDADD = $(LDADD)
 lib506_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_60 = lib507-first.$(OBJEXT)
-am__objects_61 = lib507-testutil.$(OBJEXT)
-am__objects_62 = lib507-warnless.$(OBJEXT)
-am_lib507_OBJECTS = lib507-lib507.$(OBJEXT) $(am__objects_60) \
-       $(am__objects_61) $(am__objects_62)
+am__objects_85 = lib507-first.$(OBJEXT)
+am__objects_86 = lib507-testutil.$(OBJEXT)
+am__objects_87 = ../../lib/lib507-warnless.$(OBJEXT)
+am_lib507_OBJECTS = lib507-lib507.$(OBJEXT) $(am__objects_85) \
+       $(am__objects_86) $(am__objects_87)
 lib507_OBJECTS = $(am_lib507_OBJECTS)
 lib507_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib507_OBJECTS = $(am_lib507_OBJECTS)
 lib507_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_63 = lib508-first.$(OBJEXT)
-am_lib508_OBJECTS = lib508-lib508.$(OBJEXT) $(am__objects_63)
+am__objects_88 = lib508-first.$(OBJEXT)
+am_lib508_OBJECTS = lib508-lib508.$(OBJEXT) $(am__objects_88)
 lib508_OBJECTS = $(am_lib508_OBJECTS)
 lib508_LDADD = $(LDADD)
 lib508_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib508_OBJECTS = $(am_lib508_OBJECTS)
 lib508_LDADD = $(LDADD)
 lib508_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_64 = lib509-first.$(OBJEXT)
-am_lib509_OBJECTS = lib509-lib509.$(OBJEXT) $(am__objects_64)
+am__objects_89 = lib509-first.$(OBJEXT)
+am_lib509_OBJECTS = lib509-lib509.$(OBJEXT) $(am__objects_89)
 lib509_OBJECTS = $(am_lib509_OBJECTS)
 lib509_LDADD = $(LDADD)
 lib509_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib509_OBJECTS = $(am_lib509_OBJECTS)
 lib509_LDADD = $(LDADD)
 lib509_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_65 = lib510-first.$(OBJEXT)
-am_lib510_OBJECTS = lib510-lib510.$(OBJEXT) $(am__objects_65)
+am__objects_90 = lib510-first.$(OBJEXT)
+am_lib510_OBJECTS = lib510-lib510.$(OBJEXT) $(am__objects_90)
 lib510_OBJECTS = $(am_lib510_OBJECTS)
 lib510_LDADD = $(LDADD)
 lib510_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib510_OBJECTS = $(am_lib510_OBJECTS)
 lib510_LDADD = $(LDADD)
 lib510_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_66 = lib511-first.$(OBJEXT)
-am_lib511_OBJECTS = lib511-lib511.$(OBJEXT) $(am__objects_66)
+am__objects_91 = lib511-first.$(OBJEXT)
+am_lib511_OBJECTS = lib511-lib511.$(OBJEXT) $(am__objects_91)
 lib511_OBJECTS = $(am_lib511_OBJECTS)
 lib511_LDADD = $(LDADD)
 lib511_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib511_OBJECTS = $(am_lib511_OBJECTS)
 lib511_LDADD = $(LDADD)
 lib511_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_67 = lib512-first.$(OBJEXT)
-am_lib512_OBJECTS = lib512-lib512.$(OBJEXT) $(am__objects_67)
+am__objects_92 = lib512-first.$(OBJEXT)
+am_lib512_OBJECTS = lib512-lib512.$(OBJEXT) $(am__objects_92)
 lib512_OBJECTS = $(am_lib512_OBJECTS)
 lib512_LDADD = $(LDADD)
 lib512_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib512_OBJECTS = $(am_lib512_OBJECTS)
 lib512_LDADD = $(LDADD)
 lib512_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_68 = lib513-first.$(OBJEXT)
-am_lib513_OBJECTS = lib513-lib513.$(OBJEXT) $(am__objects_68)
+am__objects_93 = lib513-first.$(OBJEXT)
+am_lib513_OBJECTS = lib513-lib513.$(OBJEXT) $(am__objects_93)
 lib513_OBJECTS = $(am_lib513_OBJECTS)
 lib513_LDADD = $(LDADD)
 lib513_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib513_OBJECTS = $(am_lib513_OBJECTS)
 lib513_LDADD = $(LDADD)
 lib513_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_69 = lib514-first.$(OBJEXT)
-am_lib514_OBJECTS = lib514-lib514.$(OBJEXT) $(am__objects_69)
+am__objects_94 = lib514-first.$(OBJEXT)
+am_lib514_OBJECTS = lib514-lib514.$(OBJEXT) $(am__objects_94)
 lib514_OBJECTS = $(am_lib514_OBJECTS)
 lib514_LDADD = $(LDADD)
 lib514_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib514_OBJECTS = $(am_lib514_OBJECTS)
 lib514_LDADD = $(LDADD)
 lib514_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_70 = lib515-first.$(OBJEXT)
-am_lib515_OBJECTS = lib515-lib515.$(OBJEXT) $(am__objects_70)
+am__objects_95 = lib515-first.$(OBJEXT)
+am_lib515_OBJECTS = lib515-lib515.$(OBJEXT) $(am__objects_95)
 lib515_OBJECTS = $(am_lib515_OBJECTS)
 lib515_LDADD = $(LDADD)
 lib515_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib515_OBJECTS = $(am_lib515_OBJECTS)
 lib515_LDADD = $(LDADD)
 lib515_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_71 = lib516-first.$(OBJEXT)
-am_lib516_OBJECTS = lib516-lib516.$(OBJEXT) $(am__objects_71)
+am__objects_96 = lib516-first.$(OBJEXT)
+am_lib516_OBJECTS = lib516-lib516.$(OBJEXT) $(am__objects_96)
 lib516_OBJECTS = $(am_lib516_OBJECTS)
 lib516_LDADD = $(LDADD)
 lib516_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib516_OBJECTS = $(am_lib516_OBJECTS)
 lib516_LDADD = $(LDADD)
 lib516_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_72 = lib517-first.$(OBJEXT)
-am_lib517_OBJECTS = lib517-lib517.$(OBJEXT) $(am__objects_72)
+am__objects_97 = lib517-first.$(OBJEXT)
+am_lib517_OBJECTS = lib517-lib517.$(OBJEXT) $(am__objects_97)
 lib517_OBJECTS = $(am_lib517_OBJECTS)
 lib517_LDADD = $(LDADD)
 lib517_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib517_OBJECTS = $(am_lib517_OBJECTS)
 lib517_LDADD = $(LDADD)
 lib517_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_73 = lib518-first.$(OBJEXT)
-am__objects_74 = lib518-warnless.$(OBJEXT)
-am_lib518_OBJECTS = lib518-lib518.$(OBJEXT) $(am__objects_73) \
-       $(am__objects_74)
+am__objects_98 = lib518-first.$(OBJEXT)
+am__objects_99 = ../../lib/lib518-warnless.$(OBJEXT)
+am_lib518_OBJECTS = lib518-lib518.$(OBJEXT) $(am__objects_98) \
+       $(am__objects_99)
 lib518_OBJECTS = $(am_lib518_OBJECTS)
 lib518_LDADD = $(LDADD)
 lib518_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib518_OBJECTS = $(am_lib518_OBJECTS)
 lib518_LDADD = $(LDADD)
 lib518_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_75 = lib519-first.$(OBJEXT)
-am_lib519_OBJECTS = lib519-lib519.$(OBJEXT) $(am__objects_75)
+am__objects_100 = lib519-first.$(OBJEXT)
+am_lib519_OBJECTS = lib519-lib519.$(OBJEXT) $(am__objects_100)
 lib519_OBJECTS = $(am_lib519_OBJECTS)
 lib519_LDADD = $(LDADD)
 lib519_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib519_OBJECTS = $(am_lib519_OBJECTS)
 lib519_LDADD = $(LDADD)
 lib519_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_76 = lib520-first.$(OBJEXT)
-am_lib520_OBJECTS = lib520-lib520.$(OBJEXT) $(am__objects_76)
+am__objects_101 = lib520-first.$(OBJEXT)
+am_lib520_OBJECTS = lib520-lib520.$(OBJEXT) $(am__objects_101)
 lib520_OBJECTS = $(am_lib520_OBJECTS)
 lib520_LDADD = $(LDADD)
 lib520_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib520_OBJECTS = $(am_lib520_OBJECTS)
 lib520_LDADD = $(LDADD)
 lib520_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_77 = lib521-first.$(OBJEXT)
-am_lib521_OBJECTS = lib521-lib521.$(OBJEXT) $(am__objects_77)
+am__objects_102 = lib521-first.$(OBJEXT)
+am_lib521_OBJECTS = lib521-lib521.$(OBJEXT) $(am__objects_102)
 lib521_OBJECTS = $(am_lib521_OBJECTS)
 lib521_LDADD = $(LDADD)
 lib521_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib521_OBJECTS = $(am_lib521_OBJECTS)
 lib521_LDADD = $(LDADD)
 lib521_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_78 = lib523-first.$(OBJEXT)
-am_lib523_OBJECTS = lib523-lib523.$(OBJEXT) $(am__objects_78)
+am__objects_103 = lib523-first.$(OBJEXT)
+am_lib523_OBJECTS = lib523-lib523.$(OBJEXT) $(am__objects_103)
 lib523_OBJECTS = $(am_lib523_OBJECTS)
 lib523_LDADD = $(LDADD)
 lib523_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib523_OBJECTS = $(am_lib523_OBJECTS)
 lib523_LDADD = $(LDADD)
 lib523_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_79 = lib524-first.$(OBJEXT)
-am_lib524_OBJECTS = lib524-lib524.$(OBJEXT) $(am__objects_79)
+am__objects_104 = lib524-first.$(OBJEXT)
+am_lib524_OBJECTS = lib524-lib524.$(OBJEXT) $(am__objects_104)
 lib524_OBJECTS = $(am_lib524_OBJECTS)
 lib524_LDADD = $(LDADD)
 lib524_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib524_OBJECTS = $(am_lib524_OBJECTS)
 lib524_LDADD = $(LDADD)
 lib524_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_80 = lib525-first.$(OBJEXT)
-am__objects_81 = lib525-testutil.$(OBJEXT)
-am__objects_82 = lib525-warnless.$(OBJEXT)
-am_lib525_OBJECTS = lib525-lib525.$(OBJEXT) $(am__objects_80) \
-       $(am__objects_81) $(am__objects_82)
+am__objects_105 = lib525-first.$(OBJEXT)
+am__objects_106 = lib525-testutil.$(OBJEXT)
+am__objects_107 = ../../lib/lib525-warnless.$(OBJEXT)
+am_lib525_OBJECTS = lib525-lib525.$(OBJEXT) $(am__objects_105) \
+       $(am__objects_106) $(am__objects_107)
 lib525_OBJECTS = $(am_lib525_OBJECTS)
 lib525_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib525_OBJECTS = $(am_lib525_OBJECTS)
 lib525_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_83 = lib526-first.$(OBJEXT)
-am__objects_84 = lib526-testutil.$(OBJEXT)
-am__objects_85 = lib526-warnless.$(OBJEXT)
-am_lib526_OBJECTS = lib526-lib526.$(OBJEXT) $(am__objects_83) \
-       $(am__objects_84) $(am__objects_85)
+am__objects_108 = lib526-first.$(OBJEXT)
+am__objects_109 = lib526-testutil.$(OBJEXT)
+am__objects_110 = ../../lib/lib526-warnless.$(OBJEXT)
+am_lib526_OBJECTS = lib526-lib526.$(OBJEXT) $(am__objects_108) \
+       $(am__objects_109) $(am__objects_110)
 lib526_OBJECTS = $(am_lib526_OBJECTS)
 lib526_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib526_OBJECTS = $(am_lib526_OBJECTS)
 lib526_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_86 = lib527-first.$(OBJEXT)
-am__objects_87 = lib527-testutil.$(OBJEXT)
-am__objects_88 = lib527-warnless.$(OBJEXT)
-am_lib527_OBJECTS = lib527-lib526.$(OBJEXT) $(am__objects_86) \
-       $(am__objects_87) $(am__objects_88)
+am__objects_111 = lib527-first.$(OBJEXT)
+am__objects_112 = lib527-testutil.$(OBJEXT)
+am__objects_113 = ../../lib/lib527-warnless.$(OBJEXT)
+am_lib527_OBJECTS = lib527-lib526.$(OBJEXT) $(am__objects_111) \
+       $(am__objects_112) $(am__objects_113)
 lib527_OBJECTS = $(am_lib527_OBJECTS)
 lib527_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib527_OBJECTS = $(am_lib527_OBJECTS)
 lib527_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_89 = lib529-first.$(OBJEXT)
-am__objects_90 = lib529-testutil.$(OBJEXT)
-am__objects_91 = lib529-warnless.$(OBJEXT)
-am_lib529_OBJECTS = lib529-lib525.$(OBJEXT) $(am__objects_89) \
-       $(am__objects_90) $(am__objects_91)
+am__objects_114 = lib529-first.$(OBJEXT)
+am__objects_115 = lib529-testutil.$(OBJEXT)
+am__objects_116 = ../../lib/lib529-warnless.$(OBJEXT)
+am_lib529_OBJECTS = lib529-lib525.$(OBJEXT) $(am__objects_114) \
+       $(am__objects_115) $(am__objects_116)
 lib529_OBJECTS = $(am_lib529_OBJECTS)
 lib529_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib529_OBJECTS = $(am_lib529_OBJECTS)
 lib529_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_92 = lib530-first.$(OBJEXT)
-am__objects_93 = lib530-testutil.$(OBJEXT)
-am__objects_94 = lib530-warnless.$(OBJEXT)
-am_lib530_OBJECTS = lib530-lib530.$(OBJEXT) $(am__objects_92) \
-       $(am__objects_93) $(am__objects_94)
+am__objects_117 = lib530-first.$(OBJEXT)
+am__objects_118 = lib530-testutil.$(OBJEXT)
+am__objects_119 = ../../lib/lib530-warnless.$(OBJEXT)
+am_lib530_OBJECTS = lib530-lib530.$(OBJEXT) $(am__objects_117) \
+       $(am__objects_118) $(am__objects_119)
 lib530_OBJECTS = $(am_lib530_OBJECTS)
 lib530_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib530_OBJECTS = $(am_lib530_OBJECTS)
 lib530_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_95 = lib532-first.$(OBJEXT)
-am__objects_96 = lib532-testutil.$(OBJEXT)
-am__objects_97 = lib532-warnless.$(OBJEXT)
-am_lib532_OBJECTS = lib532-lib526.$(OBJEXT) $(am__objects_95) \
-       $(am__objects_96) $(am__objects_97)
+am__objects_120 = lib532-first.$(OBJEXT)
+am__objects_121 = lib532-testutil.$(OBJEXT)
+am__objects_122 = ../../lib/lib532-warnless.$(OBJEXT)
+am_lib532_OBJECTS = lib532-lib526.$(OBJEXT) $(am__objects_120) \
+       $(am__objects_121) $(am__objects_122)
 lib532_OBJECTS = $(am_lib532_OBJECTS)
 lib532_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib532_OBJECTS = $(am_lib532_OBJECTS)
 lib532_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_98 = lib533-first.$(OBJEXT)
-am__objects_99 = lib533-testutil.$(OBJEXT)
-am__objects_100 = lib533-warnless.$(OBJEXT)
-am_lib533_OBJECTS = lib533-lib533.$(OBJEXT) $(am__objects_98) \
-       $(am__objects_99) $(am__objects_100)
+am__objects_123 = lib533-first.$(OBJEXT)
+am__objects_124 = lib533-testutil.$(OBJEXT)
+am__objects_125 = ../../lib/lib533-warnless.$(OBJEXT)
+am_lib533_OBJECTS = lib533-lib533.$(OBJEXT) $(am__objects_123) \
+       $(am__objects_124) $(am__objects_125)
 lib533_OBJECTS = $(am_lib533_OBJECTS)
 lib533_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib533_OBJECTS = $(am_lib533_OBJECTS)
 lib533_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_101 = lib536-first.$(OBJEXT)
-am__objects_102 = lib536-testutil.$(OBJEXT)
-am__objects_103 = lib536-warnless.$(OBJEXT)
-am_lib536_OBJECTS = lib536-lib536.$(OBJEXT) $(am__objects_101) \
-       $(am__objects_102) $(am__objects_103)
+am__objects_126 = lib536-first.$(OBJEXT)
+am__objects_127 = lib536-testutil.$(OBJEXT)
+am__objects_128 = ../../lib/lib536-warnless.$(OBJEXT)
+am_lib536_OBJECTS = lib536-lib536.$(OBJEXT) $(am__objects_126) \
+       $(am__objects_127) $(am__objects_128)
 lib536_OBJECTS = $(am_lib536_OBJECTS)
 lib536_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib536_OBJECTS = $(am_lib536_OBJECTS)
 lib536_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_104 = lib537-first.$(OBJEXT)
-am__objects_105 = lib537-warnless.$(OBJEXT)
-am_lib537_OBJECTS = lib537-lib537.$(OBJEXT) $(am__objects_104) \
-       $(am__objects_105)
+am__objects_129 = lib537-first.$(OBJEXT)
+am__objects_130 = ../../lib/lib537-warnless.$(OBJEXT)
+am_lib537_OBJECTS = lib537-lib537.$(OBJEXT) $(am__objects_129) \
+       $(am__objects_130)
 lib537_OBJECTS = $(am_lib537_OBJECTS)
 lib537_LDADD = $(LDADD)
 lib537_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib537_OBJECTS = $(am_lib537_OBJECTS)
 lib537_LDADD = $(LDADD)
 lib537_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_106 = lib539-first.$(OBJEXT)
-am_lib539_OBJECTS = lib539-lib539.$(OBJEXT) $(am__objects_106)
+am__objects_131 = lib539-first.$(OBJEXT)
+am_lib539_OBJECTS = lib539-lib539.$(OBJEXT) $(am__objects_131)
 lib539_OBJECTS = $(am_lib539_OBJECTS)
 lib539_LDADD = $(LDADD)
 lib539_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib539_OBJECTS = $(am_lib539_OBJECTS)
 lib539_LDADD = $(LDADD)
 lib539_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_107 = lib540-first.$(OBJEXT)
-am__objects_108 = lib540-testutil.$(OBJEXT)
-am__objects_109 = lib540-warnless.$(OBJEXT)
-am_lib540_OBJECTS = lib540-lib540.$(OBJEXT) $(am__objects_107) \
-       $(am__objects_108) $(am__objects_109)
+am__objects_132 = lib540-first.$(OBJEXT)
+am__objects_133 = lib540-testutil.$(OBJEXT)
+am__objects_134 = ../../lib/lib540-warnless.$(OBJEXT)
+am_lib540_OBJECTS = lib540-lib540.$(OBJEXT) $(am__objects_132) \
+       $(am__objects_133) $(am__objects_134)
 lib540_OBJECTS = $(am_lib540_OBJECTS)
 lib540_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib540_OBJECTS = $(am_lib540_OBJECTS)
 lib540_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_110 = lib541-first.$(OBJEXT)
-am_lib541_OBJECTS = lib541-lib541.$(OBJEXT) $(am__objects_110)
+am__objects_135 = lib541-first.$(OBJEXT)
+am_lib541_OBJECTS = lib541-lib541.$(OBJEXT) $(am__objects_135)
 lib541_OBJECTS = $(am_lib541_OBJECTS)
 lib541_LDADD = $(LDADD)
 lib541_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib541_OBJECTS = $(am_lib541_OBJECTS)
 lib541_LDADD = $(LDADD)
 lib541_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_111 = lib542-first.$(OBJEXT)
-am_lib542_OBJECTS = lib542-lib542.$(OBJEXT) $(am__objects_111)
+am__objects_136 = lib542-first.$(OBJEXT)
+am_lib542_OBJECTS = lib542-lib542.$(OBJEXT) $(am__objects_136)
 lib542_OBJECTS = $(am_lib542_OBJECTS)
 lib542_LDADD = $(LDADD)
 lib542_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib542_OBJECTS = $(am_lib542_OBJECTS)
 lib542_LDADD = $(LDADD)
 lib542_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_112 = lib543-first.$(OBJEXT)
-am_lib543_OBJECTS = lib543-lib543.$(OBJEXT) $(am__objects_112)
+am__objects_137 = lib543-first.$(OBJEXT)
+am_lib543_OBJECTS = lib543-lib543.$(OBJEXT) $(am__objects_137)
 lib543_OBJECTS = $(am_lib543_OBJECTS)
 lib543_LDADD = $(LDADD)
 lib543_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib543_OBJECTS = $(am_lib543_OBJECTS)
 lib543_LDADD = $(LDADD)
 lib543_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_113 = lib544-first.$(OBJEXT)
-am_lib544_OBJECTS = lib544-lib544.$(OBJEXT) $(am__objects_113)
+am__objects_138 = lib544-first.$(OBJEXT)
+am_lib544_OBJECTS = lib544-lib544.$(OBJEXT) $(am__objects_138)
 lib544_OBJECTS = $(am_lib544_OBJECTS)
 lib544_LDADD = $(LDADD)
 lib544_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib544_OBJECTS = $(am_lib544_OBJECTS)
 lib544_LDADD = $(LDADD)
 lib544_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_114 = lib545-first.$(OBJEXT)
-am_lib545_OBJECTS = lib545-lib544.$(OBJEXT) $(am__objects_114)
+am__objects_139 = lib545-first.$(OBJEXT)
+am_lib545_OBJECTS = lib545-lib544.$(OBJEXT) $(am__objects_139)
 lib545_OBJECTS = $(am_lib545_OBJECTS)
 lib545_LDADD = $(LDADD)
 lib545_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib545_OBJECTS = $(am_lib545_OBJECTS)
 lib545_LDADD = $(LDADD)
 lib545_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_115 = lib547-first.$(OBJEXT)
-am_lib547_OBJECTS = lib547-lib547.$(OBJEXT) $(am__objects_115)
+am__objects_140 = lib547-first.$(OBJEXT)
+am_lib547_OBJECTS = lib547-lib547.$(OBJEXT) $(am__objects_140)
 lib547_OBJECTS = $(am_lib547_OBJECTS)
 lib547_LDADD = $(LDADD)
 lib547_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib547_OBJECTS = $(am_lib547_OBJECTS)
 lib547_LDADD = $(LDADD)
 lib547_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_116 = lib548-first.$(OBJEXT)
-am_lib548_OBJECTS = lib548-lib547.$(OBJEXT) $(am__objects_116)
+am__objects_141 = lib548-first.$(OBJEXT)
+am_lib548_OBJECTS = lib548-lib547.$(OBJEXT) $(am__objects_141)
 lib548_OBJECTS = $(am_lib548_OBJECTS)
 lib548_LDADD = $(LDADD)
 lib548_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib548_OBJECTS = $(am_lib548_OBJECTS)
 lib548_LDADD = $(LDADD)
 lib548_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_117 = lib549-first.$(OBJEXT)
-am_lib549_OBJECTS = lib549-lib549.$(OBJEXT) $(am__objects_117)
+am__objects_142 = lib549-first.$(OBJEXT)
+am_lib549_OBJECTS = lib549-lib549.$(OBJEXT) $(am__objects_142)
 lib549_OBJECTS = $(am_lib549_OBJECTS)
 lib549_LDADD = $(LDADD)
 lib549_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib549_OBJECTS = $(am_lib549_OBJECTS)
 lib549_LDADD = $(LDADD)
 lib549_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_118 = lib552-first.$(OBJEXT)
-am__objects_119 = lib552-warnless.$(OBJEXT)
-am_lib552_OBJECTS = lib552-lib552.$(OBJEXT) $(am__objects_118) \
-       $(am__objects_119)
+am__objects_143 = lib552-first.$(OBJEXT)
+am__objects_144 = ../../lib/lib552-warnless.$(OBJEXT)
+am_lib552_OBJECTS = lib552-lib552.$(OBJEXT) $(am__objects_143) \
+       $(am__objects_144)
 lib552_OBJECTS = $(am_lib552_OBJECTS)
 lib552_LDADD = $(LDADD)
 lib552_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib552_OBJECTS = $(am_lib552_OBJECTS)
 lib552_LDADD = $(LDADD)
 lib552_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_120 = lib553-first.$(OBJEXT)
-am_lib553_OBJECTS = lib553-lib553.$(OBJEXT) $(am__objects_120)
+am__objects_145 = lib553-first.$(OBJEXT)
+am_lib553_OBJECTS = lib553-lib553.$(OBJEXT) $(am__objects_145)
 lib553_OBJECTS = $(am_lib553_OBJECTS)
 lib553_LDADD = $(LDADD)
 lib553_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib553_OBJECTS = $(am_lib553_OBJECTS)
 lib553_LDADD = $(LDADD)
 lib553_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_121 = lib554-first.$(OBJEXT)
-am_lib554_OBJECTS = lib554-lib554.$(OBJEXT) $(am__objects_121)
+am__objects_146 = lib554-first.$(OBJEXT)
+am_lib554_OBJECTS = lib554-lib554.$(OBJEXT) $(am__objects_146)
 lib554_OBJECTS = $(am_lib554_OBJECTS)
 lib554_LDADD = $(LDADD)
 lib554_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib554_OBJECTS = $(am_lib554_OBJECTS)
 lib554_LDADD = $(LDADD)
 lib554_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_122 = lib555-first.$(OBJEXT)
-am__objects_123 = lib555-testutil.$(OBJEXT)
-am__objects_124 = lib555-warnless.$(OBJEXT)
-am_lib555_OBJECTS = lib555-lib555.$(OBJEXT) $(am__objects_122) \
-       $(am__objects_123) $(am__objects_124)
+am__objects_147 = lib555-first.$(OBJEXT)
+am__objects_148 = lib555-testutil.$(OBJEXT)
+am__objects_149 = ../../lib/lib555-warnless.$(OBJEXT)
+am_lib555_OBJECTS = lib555-lib555.$(OBJEXT) $(am__objects_147) \
+       $(am__objects_148) $(am__objects_149)
 lib555_OBJECTS = $(am_lib555_OBJECTS)
 lib555_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib555_OBJECTS = $(am_lib555_OBJECTS)
 lib555_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_125 = lib556-first.$(OBJEXT)
-am_lib556_OBJECTS = lib556-lib556.$(OBJEXT) $(am__objects_125)
+am__objects_150 = lib556-first.$(OBJEXT)
+am__objects_151 = ../../lib/lib556-warnless.$(OBJEXT)
+am_lib556_OBJECTS = lib556-lib556.$(OBJEXT) $(am__objects_150) \
+       $(am__objects_151)
 lib556_OBJECTS = $(am_lib556_OBJECTS)
 lib556_LDADD = $(LDADD)
 lib556_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib556_OBJECTS = $(am_lib556_OBJECTS)
 lib556_LDADD = $(LDADD)
 lib556_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_126 = lib557-first.$(OBJEXT)
-am_lib557_OBJECTS = lib557-lib557.$(OBJEXT) $(am__objects_126)
+am__objects_152 = lib557-first.$(OBJEXT)
+am_lib557_OBJECTS = lib557-lib557.$(OBJEXT) $(am__objects_152)
 lib557_OBJECTS = $(am_lib557_OBJECTS)
 lib557_LDADD = $(LDADD)
 lib557_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib557_OBJECTS = $(am_lib557_OBJECTS)
 lib557_LDADD = $(LDADD)
 lib557_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_127 = lib558-first.$(OBJEXT)
-am_lib558_OBJECTS = lib558-lib558.$(OBJEXT) $(am__objects_127)
+am__objects_153 = lib558-first.$(OBJEXT)
+am_lib558_OBJECTS = lib558-lib558.$(OBJEXT) $(am__objects_153)
 lib558_OBJECTS = $(am_lib558_OBJECTS)
 lib558_LDADD = $(LDADD)
 lib558_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib558_OBJECTS = $(am_lib558_OBJECTS)
 lib558_LDADD = $(LDADD)
 lib558_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_128 = lib560-first.$(OBJEXT)
-am__objects_129 = lib560-testutil.$(OBJEXT)
-am__objects_130 = lib560-warnless.$(OBJEXT)
-am_lib560_OBJECTS = lib560-lib560.$(OBJEXT) $(am__objects_128) \
-       $(am__objects_129) $(am__objects_130)
+am__objects_154 = lib560-first.$(OBJEXT)
+am__objects_155 = lib560-testutil.$(OBJEXT)
+am__objects_156 = ../../lib/lib560-warnless.$(OBJEXT)
+am_lib560_OBJECTS = lib560-lib560.$(OBJEXT) $(am__objects_154) \
+       $(am__objects_155) $(am__objects_156)
 lib560_OBJECTS = $(am_lib560_OBJECTS)
 lib560_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib560_OBJECTS = $(am_lib560_OBJECTS)
 lib560_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_131 = lib562-first.$(OBJEXT)
-am_lib562_OBJECTS = lib562-lib562.$(OBJEXT) $(am__objects_131)
+am__objects_157 = lib562-first.$(OBJEXT)
+am_lib562_OBJECTS = lib562-lib562.$(OBJEXT) $(am__objects_157)
 lib562_OBJECTS = $(am_lib562_OBJECTS)
 lib562_LDADD = $(LDADD)
 lib562_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib562_OBJECTS = $(am_lib562_OBJECTS)
 lib562_LDADD = $(LDADD)
 lib562_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_132 = lib564-first.$(OBJEXT)
-am__objects_133 = lib564-testutil.$(OBJEXT)
-am__objects_134 = lib564-warnless.$(OBJEXT)
-am_lib564_OBJECTS = lib564-lib564.$(OBJEXT) $(am__objects_132) \
-       $(am__objects_133) $(am__objects_134)
+am__objects_158 = lib564-first.$(OBJEXT)
+am__objects_159 = lib564-testutil.$(OBJEXT)
+am__objects_160 = ../../lib/lib564-warnless.$(OBJEXT)
+am_lib564_OBJECTS = lib564-lib564.$(OBJEXT) $(am__objects_158) \
+       $(am__objects_159) $(am__objects_160)
 lib564_OBJECTS = $(am_lib564_OBJECTS)
 lib564_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib564_OBJECTS = $(am_lib564_OBJECTS)
 lib564_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_135 = lib565-first.$(OBJEXT)
-am_lib565_OBJECTS = lib565-lib510.$(OBJEXT) $(am__objects_135)
+am__objects_161 = lib565-first.$(OBJEXT)
+am_lib565_OBJECTS = lib565-lib510.$(OBJEXT) $(am__objects_161)
 lib565_OBJECTS = $(am_lib565_OBJECTS)
 lib565_LDADD = $(LDADD)
 lib565_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib565_OBJECTS = $(am_lib565_OBJECTS)
 lib565_LDADD = $(LDADD)
 lib565_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_136 = lib566-first.$(OBJEXT)
-am_lib566_OBJECTS = lib566-lib566.$(OBJEXT) $(am__objects_136)
+am__objects_162 = lib566-first.$(OBJEXT)
+am_lib566_OBJECTS = lib566-lib566.$(OBJEXT) $(am__objects_162)
 lib566_OBJECTS = $(am_lib566_OBJECTS)
 lib566_LDADD = $(LDADD)
 lib566_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib566_OBJECTS = $(am_lib566_OBJECTS)
 lib566_LDADD = $(LDADD)
 lib566_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_137 = lib567-first.$(OBJEXT)
-am_lib567_OBJECTS = lib567-lib567.$(OBJEXT) $(am__objects_137)
+am__objects_163 = lib567-first.$(OBJEXT)
+am_lib567_OBJECTS = lib567-lib567.$(OBJEXT) $(am__objects_163)
 lib567_OBJECTS = $(am_lib567_OBJECTS)
 lib567_LDADD = $(LDADD)
 lib567_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib567_OBJECTS = $(am_lib567_OBJECTS)
 lib567_LDADD = $(LDADD)
 lib567_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_138 = lib568-first.$(OBJEXT)
-am_lib568_OBJECTS = lib568-lib568.$(OBJEXT) $(am__objects_138)
+am__objects_164 = lib568-first.$(OBJEXT)
+am_lib568_OBJECTS = lib568-lib568.$(OBJEXT) $(am__objects_164)
 lib568_OBJECTS = $(am_lib568_OBJECTS)
 lib568_LDADD = $(LDADD)
 lib568_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib568_OBJECTS = $(am_lib568_OBJECTS)
 lib568_LDADD = $(LDADD)
 lib568_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_139 = lib569-first.$(OBJEXT)
-am_lib569_OBJECTS = lib569-lib569.$(OBJEXT) $(am__objects_139)
+am__objects_165 = lib569-first.$(OBJEXT)
+am_lib569_OBJECTS = lib569-lib569.$(OBJEXT) $(am__objects_165)
 lib569_OBJECTS = $(am_lib569_OBJECTS)
 lib569_LDADD = $(LDADD)
 lib569_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib569_OBJECTS = $(am_lib569_OBJECTS)
 lib569_LDADD = $(LDADD)
 lib569_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_140 = lib570-first.$(OBJEXT)
-am_lib570_OBJECTS = lib570-lib570.$(OBJEXT) $(am__objects_140)
+am__objects_166 = lib570-first.$(OBJEXT)
+am_lib570_OBJECTS = lib570-lib570.$(OBJEXT) $(am__objects_166)
 lib570_OBJECTS = $(am_lib570_OBJECTS)
 lib570_LDADD = $(LDADD)
 lib570_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib570_OBJECTS = $(am_lib570_OBJECTS)
 lib570_LDADD = $(LDADD)
 lib570_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_141 = lib571-first.$(OBJEXT)
-am__objects_142 = lib571-warnless.$(OBJEXT)
-am_lib571_OBJECTS = lib571-lib571.$(OBJEXT) $(am__objects_141) \
-       $(am__objects_142)
+am__objects_167 = lib571-first.$(OBJEXT)
+am__objects_168 = ../../lib/lib571-warnless.$(OBJEXT)
+am_lib571_OBJECTS = lib571-lib571.$(OBJEXT) $(am__objects_167) \
+       $(am__objects_168)
 lib571_OBJECTS = $(am_lib571_OBJECTS)
 lib571_LDADD = $(LDADD)
 lib571_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib571_OBJECTS = $(am_lib571_OBJECTS)
 lib571_LDADD = $(LDADD)
 lib571_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_143 = lib572-first.$(OBJEXT)
-am_lib572_OBJECTS = lib572-lib572.$(OBJEXT) $(am__objects_143)
+am__objects_169 = lib572-first.$(OBJEXT)
+am_lib572_OBJECTS = lib572-lib572.$(OBJEXT) $(am__objects_169)
 lib572_OBJECTS = $(am_lib572_OBJECTS)
 lib572_LDADD = $(LDADD)
 lib572_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib572_OBJECTS = $(am_lib572_OBJECTS)
 lib572_LDADD = $(LDADD)
 lib572_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_144 = lib573-first.$(OBJEXT)
-am__objects_145 = lib573-testutil.$(OBJEXT)
-am__objects_146 = lib573-warnless.$(OBJEXT)
-am__objects_147 = lib573-testtrace.$(OBJEXT)
-am_lib573_OBJECTS = lib573-lib573.$(OBJEXT) $(am__objects_144) \
-       $(am__objects_145) $(am__objects_146) $(am__objects_147)
+am__objects_170 = lib573-first.$(OBJEXT)
+am__objects_171 = lib573-testutil.$(OBJEXT)
+am__objects_172 = ../../lib/lib573-warnless.$(OBJEXT)
+am__objects_173 = lib573-testtrace.$(OBJEXT)
+am_lib573_OBJECTS = lib573-lib573.$(OBJEXT) $(am__objects_170) \
+       $(am__objects_171) $(am__objects_172) $(am__objects_173)
 lib573_OBJECTS = $(am_lib573_OBJECTS)
 lib573_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib573_OBJECTS = $(am_lib573_OBJECTS)
 lib573_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_148 = lib574-first.$(OBJEXT)
-am_lib574_OBJECTS = lib574-lib574.$(OBJEXT) $(am__objects_148)
+am__objects_174 = lib574-first.$(OBJEXT)
+am_lib574_OBJECTS = lib574-lib574.$(OBJEXT) $(am__objects_174)
 lib574_OBJECTS = $(am_lib574_OBJECTS)
 lib574_LDADD = $(LDADD)
 lib574_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib574_OBJECTS = $(am_lib574_OBJECTS)
 lib574_LDADD = $(LDADD)
 lib574_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_149 = lib575-first.$(OBJEXT)
-am__objects_150 = lib575-testutil.$(OBJEXT)
-am__objects_151 = lib575-warnless.$(OBJEXT)
-am_lib575_OBJECTS = lib575-lib575.$(OBJEXT) $(am__objects_149) \
-       $(am__objects_150) $(am__objects_151)
+am__objects_175 = lib575-first.$(OBJEXT)
+am__objects_176 = lib575-testutil.$(OBJEXT)
+am__objects_177 = ../../lib/lib575-warnless.$(OBJEXT)
+am_lib575_OBJECTS = lib575-lib575.$(OBJEXT) $(am__objects_175) \
+       $(am__objects_176) $(am__objects_177)
 lib575_OBJECTS = $(am_lib575_OBJECTS)
 lib575_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib575_OBJECTS = $(am_lib575_OBJECTS)
 lib575_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_152 = lib576-first.$(OBJEXT)
-am_lib576_OBJECTS = lib576-lib576.$(OBJEXT) $(am__objects_152)
+am__objects_178 = lib576-first.$(OBJEXT)
+am_lib576_OBJECTS = lib576-lib576.$(OBJEXT) $(am__objects_178)
 lib576_OBJECTS = $(am_lib576_OBJECTS)
 lib576_LDADD = $(LDADD)
 lib576_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib576_OBJECTS = $(am_lib576_OBJECTS)
 lib576_LDADD = $(LDADD)
 lib576_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_153 = lib578-first.$(OBJEXT)
-am_lib578_OBJECTS = lib578-lib578.$(OBJEXT) $(am__objects_153)
+am__objects_179 = lib578-first.$(OBJEXT)
+am_lib578_OBJECTS = lib578-lib578.$(OBJEXT) $(am__objects_179)
 lib578_OBJECTS = $(am_lib578_OBJECTS)
 lib578_LDADD = $(LDADD)
 lib578_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib578_OBJECTS = $(am_lib578_OBJECTS)
 lib578_LDADD = $(LDADD)
 lib578_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_154 = lib579-first.$(OBJEXT)
-am_lib579_OBJECTS = lib579-lib579.$(OBJEXT) $(am__objects_154)
+am__objects_180 = lib579-first.$(OBJEXT)
+am_lib579_OBJECTS = lib579-lib579.$(OBJEXT) $(am__objects_180)
 lib579_OBJECTS = $(am_lib579_OBJECTS)
 lib579_LDADD = $(LDADD)
 lib579_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib579_OBJECTS = $(am_lib579_OBJECTS)
 lib579_LDADD = $(LDADD)
 lib579_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_155 = lib582-first.$(OBJEXT)
-am__objects_156 = lib582-testutil.$(OBJEXT)
-am__objects_157 = lib582-warnless.$(OBJEXT)
-am_lib582_OBJECTS = lib582-lib582.$(OBJEXT) $(am__objects_155) \
-       $(am__objects_156) $(am__objects_157)
+am__objects_181 = lib582-first.$(OBJEXT)
+am__objects_182 = lib582-testutil.$(OBJEXT)
+am__objects_183 = ../../lib/lib582-warnless.$(OBJEXT)
+am_lib582_OBJECTS = lib582-lib582.$(OBJEXT) $(am__objects_181) \
+       $(am__objects_182) $(am__objects_183)
 lib582_OBJECTS = $(am_lib582_OBJECTS)
 lib582_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib582_OBJECTS = $(am_lib582_OBJECTS)
 lib582_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_158 = lib583-first.$(OBJEXT)
-am_lib583_OBJECTS = lib583-lib583.$(OBJEXT) $(am__objects_158)
+am__objects_184 = lib583-first.$(OBJEXT)
+am_lib583_OBJECTS = lib583-lib583.$(OBJEXT) $(am__objects_184)
 lib583_OBJECTS = $(am_lib583_OBJECTS)
 lib583_LDADD = $(LDADD)
 lib583_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib583_OBJECTS = $(am_lib583_OBJECTS)
 lib583_LDADD = $(LDADD)
 lib583_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_159 = lib585-first.$(OBJEXT)
-am__objects_160 = lib585-testutil.$(OBJEXT)
-am__objects_161 = lib585-testtrace.$(OBJEXT)
-am_lib585_OBJECTS = lib585-lib500.$(OBJEXT) $(am__objects_159) \
-       $(am__objects_160) $(am__objects_161)
+am__objects_185 = lib585-first.$(OBJEXT)
+am__objects_186 = lib585-testutil.$(OBJEXT)
+am__objects_187 = lib585-testtrace.$(OBJEXT)
+am_lib585_OBJECTS = lib585-lib500.$(OBJEXT) $(am__objects_185) \
+       $(am__objects_186) $(am__objects_187)
 lib585_OBJECTS = $(am_lib585_OBJECTS)
 lib585_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib585_OBJECTS = $(am_lib585_OBJECTS)
 lib585_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_162 = lib586-first.$(OBJEXT)
-am_lib586_OBJECTS = lib586-lib586.$(OBJEXT) $(am__objects_162)
+am__objects_188 = lib586-first.$(OBJEXT)
+am_lib586_OBJECTS = lib586-lib586.$(OBJEXT) $(am__objects_188)
 lib586_OBJECTS = $(am_lib586_OBJECTS)
 lib586_LDADD = $(LDADD)
 lib586_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib586_OBJECTS = $(am_lib586_OBJECTS)
 lib586_LDADD = $(LDADD)
 lib586_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_163 = lib587-first.$(OBJEXT)
-am_lib587_OBJECTS = lib587-lib554.$(OBJEXT) $(am__objects_163)
+am__objects_189 = lib587-first.$(OBJEXT)
+am_lib587_OBJECTS = lib587-lib554.$(OBJEXT) $(am__objects_189)
 lib587_OBJECTS = $(am_lib587_OBJECTS)
 lib587_LDADD = $(LDADD)
 lib587_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib587_OBJECTS = $(am_lib587_OBJECTS)
 lib587_LDADD = $(LDADD)
 lib587_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_164 = lib590-first.$(OBJEXT)
-am_lib590_OBJECTS = lib590-lib590.$(OBJEXT) $(am__objects_164)
+am__objects_190 = lib590-first.$(OBJEXT)
+am_lib590_OBJECTS = lib590-lib590.$(OBJEXT) $(am__objects_190)
 lib590_OBJECTS = $(am_lib590_OBJECTS)
 lib590_LDADD = $(LDADD)
 lib590_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib590_OBJECTS = $(am_lib590_OBJECTS)
 lib590_LDADD = $(LDADD)
 lib590_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_165 = lib591-first.$(OBJEXT)
-am__objects_166 = lib591-testutil.$(OBJEXT)
-am__objects_167 = lib591-warnless.$(OBJEXT)
-am_lib591_OBJECTS = lib591-lib591.$(OBJEXT) $(am__objects_165) \
-       $(am__objects_166) $(am__objects_167)
+am__objects_191 = lib591-first.$(OBJEXT)
+am__objects_192 = lib591-testutil.$(OBJEXT)
+am__objects_193 = ../../lib/lib591-warnless.$(OBJEXT)
+am_lib591_OBJECTS = lib591-lib591.$(OBJEXT) $(am__objects_191) \
+       $(am__objects_192) $(am__objects_193)
 lib591_OBJECTS = $(am_lib591_OBJECTS)
 lib591_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib591_OBJECTS = $(am_lib591_OBJECTS)
 lib591_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_168 = lib597-first.$(OBJEXT)
-am__objects_169 = lib597-testutil.$(OBJEXT)
-am__objects_170 = lib597-warnless.$(OBJEXT)
-am_lib597_OBJECTS = lib597-lib597.$(OBJEXT) $(am__objects_168) \
-       $(am__objects_169) $(am__objects_170)
+am__objects_194 = lib597-first.$(OBJEXT)
+am__objects_195 = lib597-testutil.$(OBJEXT)
+am__objects_196 = ../../lib/lib597-warnless.$(OBJEXT)
+am_lib597_OBJECTS = lib597-lib597.$(OBJEXT) $(am__objects_194) \
+       $(am__objects_195) $(am__objects_196)
 lib597_OBJECTS = $(am_lib597_OBJECTS)
 lib597_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib597_OBJECTS = $(am_lib597_OBJECTS)
 lib597_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_171 = lib598-first.$(OBJEXT)
-am_lib598_OBJECTS = lib598-lib598.$(OBJEXT) $(am__objects_171)
+am__objects_197 = lib598-first.$(OBJEXT)
+am_lib598_OBJECTS = lib598-lib598.$(OBJEXT) $(am__objects_197)
 lib598_OBJECTS = $(am_lib598_OBJECTS)
 lib598_LDADD = $(LDADD)
 lib598_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib598_OBJECTS = $(am_lib598_OBJECTS)
 lib598_LDADD = $(LDADD)
 lib598_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_172 = lib599-first.$(OBJEXT)
-am_lib599_OBJECTS = lib599-lib599.$(OBJEXT) $(am__objects_172)
+am__objects_198 = lib599-first.$(OBJEXT)
+am_lib599_OBJECTS = lib599-lib599.$(OBJEXT) $(am__objects_198)
 lib599_OBJECTS = $(am_lib599_OBJECTS)
 lib599_LDADD = $(LDADD)
 lib599_DEPENDENCIES = $(am__DEPENDENCIES_1)
 lib599_OBJECTS = $(am_lib599_OBJECTS)
 lib599_LDADD = $(LDADD)
 lib599_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_173 = libauthretry-first.$(OBJEXT)
+am__objects_199 = libauthretry-first.$(OBJEXT)
 am_libauthretry_OBJECTS = libauthretry-libauthretry.$(OBJEXT) \
 am_libauthretry_OBJECTS = libauthretry-libauthretry.$(OBJEXT) \
-       $(am__objects_173)
+       $(am__objects_199)
 libauthretry_OBJECTS = $(am_libauthretry_OBJECTS)
 libauthretry_LDADD = $(LDADD)
 libauthretry_DEPENDENCIES = $(am__DEPENDENCIES_1)
 libauthretry_OBJECTS = $(am_libauthretry_OBJECTS)
 libauthretry_LDADD = $(LDADD)
 libauthretry_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_174 = libntlmconnect-first.$(OBJEXT)
-am__objects_175 = libntlmconnect-testutil.$(OBJEXT)
-am__objects_176 = libntlmconnect-warnless.$(OBJEXT)
+am__objects_200 = libntlmconnect-first.$(OBJEXT)
+am__objects_201 = libntlmconnect-testutil.$(OBJEXT)
+am__objects_202 = ../../lib/libntlmconnect-warnless.$(OBJEXT)
 am_libntlmconnect_OBJECTS = libntlmconnect-libntlmconnect.$(OBJEXT) \
 am_libntlmconnect_OBJECTS = libntlmconnect-libntlmconnect.$(OBJEXT) \
-       $(am__objects_174) $(am__objects_175) $(am__objects_176)
+       $(am__objects_200) $(am__objects_201) $(am__objects_202)
 libntlmconnect_OBJECTS = $(am_libntlmconnect_OBJECTS)
 libntlmconnect_DEPENDENCIES = $(am__DEPENDENCIES_1)
 AM_V_P = $(am__v_P_@AM_V@)
 libntlmconnect_OBJECTS = $(am_libntlmconnect_OBJECTS)
 libntlmconnect_DEPENDENCIES = $(am__DEPENDENCIES_1)
 AM_V_P = $(am__v_P_@AM_V@)
@@ -761,7 +828,10 @@ SOURCES = $(libhostname_la_SOURCES) $(chkhostname_SOURCES) \
        $(lib1503_SOURCES) $(lib1504_SOURCES) $(lib1505_SOURCES) \
        $(lib1506_SOURCES) $(lib1507_SOURCES) $(lib1508_SOURCES) \
        $(lib1509_SOURCES) $(lib1510_SOURCES) $(lib1511_SOURCES) \
        $(lib1503_SOURCES) $(lib1504_SOURCES) $(lib1505_SOURCES) \
        $(lib1506_SOURCES) $(lib1507_SOURCES) $(lib1508_SOURCES) \
        $(lib1509_SOURCES) $(lib1510_SOURCES) $(lib1511_SOURCES) \
-       $(lib1512_SOURCES) $(lib1900_SOURCES) $(lib2033_SOURCES) \
+       $(lib1512_SOURCES) $(lib1513_SOURCES) $(lib1514_SOURCES) \
+       $(lib1515_SOURCES) $(lib1520_SOURCES) $(lib1525_SOURCES) \
+       $(lib1526_SOURCES) $(lib1527_SOURCES) $(lib1528_SOURCES) \
+       $(lib1529_SOURCES) $(lib1900_SOURCES) $(lib2033_SOURCES) \
        $(lib500_SOURCES) $(lib501_SOURCES) $(lib502_SOURCES) \
        $(lib503_SOURCES) $(lib504_SOURCES) $(lib505_SOURCES) \
        $(lib506_SOURCES) $(lib507_SOURCES) $(lib508_SOURCES) \
        $(lib500_SOURCES) $(lib501_SOURCES) $(lib502_SOURCES) \
        $(lib503_SOURCES) $(lib504_SOURCES) $(lib505_SOURCES) \
        $(lib506_SOURCES) $(lib507_SOURCES) $(lib508_SOURCES) \
@@ -794,7 +864,10 @@ DIST_SOURCES = $(libhostname_la_SOURCES) $(chkhostname_SOURCES) \
        $(lib1503_SOURCES) $(lib1504_SOURCES) $(lib1505_SOURCES) \
        $(lib1506_SOURCES) $(lib1507_SOURCES) $(lib1508_SOURCES) \
        $(lib1509_SOURCES) $(lib1510_SOURCES) $(lib1511_SOURCES) \
        $(lib1503_SOURCES) $(lib1504_SOURCES) $(lib1505_SOURCES) \
        $(lib1506_SOURCES) $(lib1507_SOURCES) $(lib1508_SOURCES) \
        $(lib1509_SOURCES) $(lib1510_SOURCES) $(lib1511_SOURCES) \
-       $(lib1512_SOURCES) $(lib1900_SOURCES) $(lib2033_SOURCES) \
+       $(lib1512_SOURCES) $(lib1513_SOURCES) $(lib1514_SOURCES) \
+       $(lib1515_SOURCES) $(lib1520_SOURCES) $(lib1525_SOURCES) \
+       $(lib1526_SOURCES) $(lib1527_SOURCES) $(lib1528_SOURCES) \
+       $(lib1529_SOURCES) $(lib1900_SOURCES) $(lib2033_SOURCES) \
        $(lib500_SOURCES) $(lib501_SOURCES) $(lib502_SOURCES) \
        $(lib503_SOURCES) $(lib504_SOURCES) $(lib505_SOURCES) \
        $(lib506_SOURCES) $(lib507_SOURCES) $(lib508_SOURCES) \
        $(lib500_SOURCES) $(lib501_SOURCES) $(lib502_SOURCES) \
        $(lib503_SOURCES) $(lib504_SOURCES) $(lib505_SOURCES) \
        $(lib506_SOURCES) $(lib507_SOURCES) $(lib508_SOURCES) \
@@ -879,6 +952,7 @@ CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
+CURL_DISABLE_SMB = @CURL_DISABLE_SMB@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
@@ -903,7 +977,6 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_NSS_INITCONTEXT = @HAVE_NSS_INITCONTEXT@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
@@ -912,7 +985,6 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
-KRB4_ENABLED = @KRB4_ENABLED@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
@@ -935,6 +1007,7 @@ MKDIR_P = @MKDIR_P@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
+NSS_LIBS = @NSS_LIBS@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
@@ -970,11 +1043,13 @@ USE_GNUTLS = @USE_GNUTLS@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
+USE_NGHTTP2 = @USE_NGHTTP2@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
+USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
@@ -1222,7 +1297,7 @@ lib554_CPPFLAGS = $(AM_CPPFLAGS)
 lib555_SOURCES = lib555.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
 lib555_LDADD = $(TESTUTIL_LIBS)
 lib555_CPPFLAGS = $(AM_CPPFLAGS)
 lib555_SOURCES = lib555.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
 lib555_LDADD = $(TESTUTIL_LIBS)
 lib555_CPPFLAGS = $(AM_CPPFLAGS)
-lib556_SOURCES = lib556.c $(SUPPORTFILES)
+lib556_SOURCES = lib556.c $(SUPPORTFILES) $(WARNLESS)
 lib556_CPPFLAGS = $(AM_CPPFLAGS)
 lib557_SOURCES = lib557.c $(SUPPORTFILES)
 lib557_CPPFLAGS = $(AM_CPPFLAGS)
 lib556_CPPFLAGS = $(AM_CPPFLAGS)
 lib557_SOURCES = lib557.c $(SUPPORTFILES)
 lib557_CPPFLAGS = $(AM_CPPFLAGS)
@@ -1329,6 +1404,32 @@ lib1511_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1511
 lib1512_SOURCES = lib1512.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
 lib1512_LDADD = $(TESTUTIL_LIBS)
 lib1512_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1512
 lib1512_SOURCES = lib1512.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
 lib1512_LDADD = $(TESTUTIL_LIBS)
 lib1512_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1512
+lib1513_SOURCES = lib1513.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1513_LDADD = $(TESTUTIL_LIBS)
+lib1513_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1513
+lib1514_SOURCES = lib1514.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1514_LDADD = $(TESTUTIL_LIBS)
+lib1514_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1514
+lib1515_SOURCES = lib1515.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1515_LDADD = $(TESTUTIL_LIBS)
+lib1515_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1515
+lib1520_SOURCES = lib1520.c $(SUPPORTFILES)
+lib1520_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1520
+lib1525_SOURCES = lib1525.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1525_LDADD = $(TESTUTIL_LIBS)
+lib1525_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1525
+lib1526_SOURCES = lib1526.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1526_LDADD = $(TESTUTIL_LIBS)
+lib1526_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1526
+lib1527_SOURCES = lib1527.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1527_LDADD = $(TESTUTIL_LIBS)
+lib1527_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1527
+lib1528_SOURCES = lib1528.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1528_LDADD = $(TESTUTIL_LIBS)
+lib1528_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1528
+lib1529_SOURCES = lib1529.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1529_LDADD = $(TESTUTIL_LIBS)
+lib1529_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1529
 lib1900_SOURCES = lib1900.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
 lib1900_LDADD = $(TESTUTIL_LIBS)
 lib1900_CPPFLAGS = $(AM_CPPFLAGS)
 lib1900_SOURCES = lib1900.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
 lib1900_LDADD = $(TESTUTIL_LIBS)
 lib1900_CPPFLAGS = $(AM_CPPFLAGS)
@@ -1413,6 +1514,14 @@ clean-noinstPROGRAMS:
        list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
        echo " rm -f" $$list; \
        rm -f $$list
        list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
        echo " rm -f" $$list; \
        rm -f $$list
+../../lib/$(am__dirstamp):
+       @$(MKDIR_P) ../../lib
+       @: > ../../lib/$(am__dirstamp)
+../../lib/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) ../../lib/$(DEPDIR)
+       @: > ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/chkhostname-curl_gethostname.$(OBJEXT):  \
+       ../../lib/$(am__dirstamp) ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 chkhostname$(EXEEXT): $(chkhostname_OBJECTS) $(chkhostname_DEPENDENCIES) $(EXTRA_chkhostname_DEPENDENCIES) 
        @rm -f chkhostname$(EXEEXT)
 
 chkhostname$(EXEEXT): $(chkhostname_OBJECTS) $(chkhostname_DEPENDENCIES) $(EXTRA_chkhostname_DEPENDENCIES) 
        @rm -f chkhostname$(EXEEXT)
@@ -1421,58 +1530,138 @@ chkhostname$(EXEEXT): $(chkhostname_OBJECTS) $(chkhostname_DEPENDENCIES) $(EXTRA
 lib1500$(EXEEXT): $(lib1500_OBJECTS) $(lib1500_DEPENDENCIES) $(EXTRA_lib1500_DEPENDENCIES) 
        @rm -f lib1500$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1500_OBJECTS) $(lib1500_LDADD) $(LIBS)
 lib1500$(EXEEXT): $(lib1500_OBJECTS) $(lib1500_DEPENDENCIES) $(EXTRA_lib1500_DEPENDENCIES) 
        @rm -f lib1500$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1500_OBJECTS) $(lib1500_LDADD) $(LIBS)
+../../lib/lib1501-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1501$(EXEEXT): $(lib1501_OBJECTS) $(lib1501_DEPENDENCIES) $(EXTRA_lib1501_DEPENDENCIES) 
        @rm -f lib1501$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1501_OBJECTS) $(lib1501_LDADD) $(LIBS)
 
 lib1501$(EXEEXT): $(lib1501_OBJECTS) $(lib1501_DEPENDENCIES) $(EXTRA_lib1501_DEPENDENCIES) 
        @rm -f lib1501$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1501_OBJECTS) $(lib1501_LDADD) $(LIBS)
+../../lib/lib1502-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1502$(EXEEXT): $(lib1502_OBJECTS) $(lib1502_DEPENDENCIES) $(EXTRA_lib1502_DEPENDENCIES) 
        @rm -f lib1502$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1502_OBJECTS) $(lib1502_LDADD) $(LIBS)
 
 lib1502$(EXEEXT): $(lib1502_OBJECTS) $(lib1502_DEPENDENCIES) $(EXTRA_lib1502_DEPENDENCIES) 
        @rm -f lib1502$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1502_OBJECTS) $(lib1502_LDADD) $(LIBS)
+../../lib/lib1503-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1503$(EXEEXT): $(lib1503_OBJECTS) $(lib1503_DEPENDENCIES) $(EXTRA_lib1503_DEPENDENCIES) 
        @rm -f lib1503$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1503_OBJECTS) $(lib1503_LDADD) $(LIBS)
 
 lib1503$(EXEEXT): $(lib1503_OBJECTS) $(lib1503_DEPENDENCIES) $(EXTRA_lib1503_DEPENDENCIES) 
        @rm -f lib1503$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1503_OBJECTS) $(lib1503_LDADD) $(LIBS)
+../../lib/lib1504-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1504$(EXEEXT): $(lib1504_OBJECTS) $(lib1504_DEPENDENCIES) $(EXTRA_lib1504_DEPENDENCIES) 
        @rm -f lib1504$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1504_OBJECTS) $(lib1504_LDADD) $(LIBS)
 
 lib1504$(EXEEXT): $(lib1504_OBJECTS) $(lib1504_DEPENDENCIES) $(EXTRA_lib1504_DEPENDENCIES) 
        @rm -f lib1504$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1504_OBJECTS) $(lib1504_LDADD) $(LIBS)
+../../lib/lib1505-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1505$(EXEEXT): $(lib1505_OBJECTS) $(lib1505_DEPENDENCIES) $(EXTRA_lib1505_DEPENDENCIES) 
        @rm -f lib1505$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1505_OBJECTS) $(lib1505_LDADD) $(LIBS)
 
 lib1505$(EXEEXT): $(lib1505_OBJECTS) $(lib1505_DEPENDENCIES) $(EXTRA_lib1505_DEPENDENCIES) 
        @rm -f lib1505$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1505_OBJECTS) $(lib1505_LDADD) $(LIBS)
+../../lib/lib1506-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1506$(EXEEXT): $(lib1506_OBJECTS) $(lib1506_DEPENDENCIES) $(EXTRA_lib1506_DEPENDENCIES) 
        @rm -f lib1506$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1506_OBJECTS) $(lib1506_LDADD) $(LIBS)
 
 lib1506$(EXEEXT): $(lib1506_OBJECTS) $(lib1506_DEPENDENCIES) $(EXTRA_lib1506_DEPENDENCIES) 
        @rm -f lib1506$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1506_OBJECTS) $(lib1506_LDADD) $(LIBS)
+../../lib/lib1507-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1507$(EXEEXT): $(lib1507_OBJECTS) $(lib1507_DEPENDENCIES) $(EXTRA_lib1507_DEPENDENCIES) 
        @rm -f lib1507$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1507_OBJECTS) $(lib1507_LDADD) $(LIBS)
 
 lib1507$(EXEEXT): $(lib1507_OBJECTS) $(lib1507_DEPENDENCIES) $(EXTRA_lib1507_DEPENDENCIES) 
        @rm -f lib1507$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1507_OBJECTS) $(lib1507_LDADD) $(LIBS)
+../../lib/lib1508-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1508$(EXEEXT): $(lib1508_OBJECTS) $(lib1508_DEPENDENCIES) $(EXTRA_lib1508_DEPENDENCIES) 
        @rm -f lib1508$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1508_OBJECTS) $(lib1508_LDADD) $(LIBS)
 
 lib1508$(EXEEXT): $(lib1508_OBJECTS) $(lib1508_DEPENDENCIES) $(EXTRA_lib1508_DEPENDENCIES) 
        @rm -f lib1508$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1508_OBJECTS) $(lib1508_LDADD) $(LIBS)
+../../lib/lib1509-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1509$(EXEEXT): $(lib1509_OBJECTS) $(lib1509_DEPENDENCIES) $(EXTRA_lib1509_DEPENDENCIES) 
        @rm -f lib1509$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1509_OBJECTS) $(lib1509_LDADD) $(LIBS)
 
 lib1509$(EXEEXT): $(lib1509_OBJECTS) $(lib1509_DEPENDENCIES) $(EXTRA_lib1509_DEPENDENCIES) 
        @rm -f lib1509$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1509_OBJECTS) $(lib1509_LDADD) $(LIBS)
+../../lib/lib1510-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1510$(EXEEXT): $(lib1510_OBJECTS) $(lib1510_DEPENDENCIES) $(EXTRA_lib1510_DEPENDENCIES) 
        @rm -f lib1510$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1510_OBJECTS) $(lib1510_LDADD) $(LIBS)
 
 lib1510$(EXEEXT): $(lib1510_OBJECTS) $(lib1510_DEPENDENCIES) $(EXTRA_lib1510_DEPENDENCIES) 
        @rm -f lib1510$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1510_OBJECTS) $(lib1510_LDADD) $(LIBS)
+../../lib/lib1511-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1511$(EXEEXT): $(lib1511_OBJECTS) $(lib1511_DEPENDENCIES) $(EXTRA_lib1511_DEPENDENCIES) 
        @rm -f lib1511$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1511_OBJECTS) $(lib1511_LDADD) $(LIBS)
 
 lib1511$(EXEEXT): $(lib1511_OBJECTS) $(lib1511_DEPENDENCIES) $(EXTRA_lib1511_DEPENDENCIES) 
        @rm -f lib1511$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1511_OBJECTS) $(lib1511_LDADD) $(LIBS)
+../../lib/lib1512-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1512$(EXEEXT): $(lib1512_OBJECTS) $(lib1512_DEPENDENCIES) $(EXTRA_lib1512_DEPENDENCIES) 
        @rm -f lib1512$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1512_OBJECTS) $(lib1512_LDADD) $(LIBS)
 
 lib1512$(EXEEXT): $(lib1512_OBJECTS) $(lib1512_DEPENDENCIES) $(EXTRA_lib1512_DEPENDENCIES) 
        @rm -f lib1512$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1512_OBJECTS) $(lib1512_LDADD) $(LIBS)
+../../lib/lib1513-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+
+lib1513$(EXEEXT): $(lib1513_OBJECTS) $(lib1513_DEPENDENCIES) $(EXTRA_lib1513_DEPENDENCIES) 
+       @rm -f lib1513$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(lib1513_OBJECTS) $(lib1513_LDADD) $(LIBS)
+../../lib/lib1514-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+
+lib1514$(EXEEXT): $(lib1514_OBJECTS) $(lib1514_DEPENDENCIES) $(EXTRA_lib1514_DEPENDENCIES) 
+       @rm -f lib1514$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(lib1514_OBJECTS) $(lib1514_LDADD) $(LIBS)
+../../lib/lib1515-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+
+lib1515$(EXEEXT): $(lib1515_OBJECTS) $(lib1515_DEPENDENCIES) $(EXTRA_lib1515_DEPENDENCIES) 
+       @rm -f lib1515$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(lib1515_OBJECTS) $(lib1515_LDADD) $(LIBS)
+
+lib1520$(EXEEXT): $(lib1520_OBJECTS) $(lib1520_DEPENDENCIES) $(EXTRA_lib1520_DEPENDENCIES) 
+       @rm -f lib1520$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(lib1520_OBJECTS) $(lib1520_LDADD) $(LIBS)
+../../lib/lib1525-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+
+lib1525$(EXEEXT): $(lib1525_OBJECTS) $(lib1525_DEPENDENCIES) $(EXTRA_lib1525_DEPENDENCIES) 
+       @rm -f lib1525$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(lib1525_OBJECTS) $(lib1525_LDADD) $(LIBS)
+../../lib/lib1526-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+
+lib1526$(EXEEXT): $(lib1526_OBJECTS) $(lib1526_DEPENDENCIES) $(EXTRA_lib1526_DEPENDENCIES) 
+       @rm -f lib1526$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(lib1526_OBJECTS) $(lib1526_LDADD) $(LIBS)
+../../lib/lib1527-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+
+lib1527$(EXEEXT): $(lib1527_OBJECTS) $(lib1527_DEPENDENCIES) $(EXTRA_lib1527_DEPENDENCIES) 
+       @rm -f lib1527$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(lib1527_OBJECTS) $(lib1527_LDADD) $(LIBS)
+../../lib/lib1528-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+
+lib1528$(EXEEXT): $(lib1528_OBJECTS) $(lib1528_DEPENDENCIES) $(EXTRA_lib1528_DEPENDENCIES) 
+       @rm -f lib1528$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(lib1528_OBJECTS) $(lib1528_LDADD) $(LIBS)
+../../lib/lib1529-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+
+lib1529$(EXEEXT): $(lib1529_OBJECTS) $(lib1529_DEPENDENCIES) $(EXTRA_lib1529_DEPENDENCIES) 
+       @rm -f lib1529$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(lib1529_OBJECTS) $(lib1529_LDADD) $(LIBS)
+../../lib/lib1900-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1900$(EXEEXT): $(lib1900_OBJECTS) $(lib1900_DEPENDENCIES) $(EXTRA_lib1900_DEPENDENCIES) 
        @rm -f lib1900$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1900_OBJECTS) $(lib1900_LDADD) $(LIBS)
 
 lib1900$(EXEEXT): $(lib1900_OBJECTS) $(lib1900_DEPENDENCIES) $(EXTRA_lib1900_DEPENDENCIES) 
        @rm -f lib1900$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1900_OBJECTS) $(lib1900_LDADD) $(LIBS)
+../../lib/lib2033-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib2033$(EXEEXT): $(lib2033_OBJECTS) $(lib2033_DEPENDENCIES) $(EXTRA_lib2033_DEPENDENCIES) 
        @rm -f lib2033$(EXEEXT)
 
 lib2033$(EXEEXT): $(lib2033_OBJECTS) $(lib2033_DEPENDENCIES) $(EXTRA_lib2033_DEPENDENCIES) 
        @rm -f lib2033$(EXEEXT)
@@ -1485,14 +1674,20 @@ lib500$(EXEEXT): $(lib500_OBJECTS) $(lib500_DEPENDENCIES) $(EXTRA_lib500_DEPENDE
 lib501$(EXEEXT): $(lib501_OBJECTS) $(lib501_DEPENDENCIES) $(EXTRA_lib501_DEPENDENCIES) 
        @rm -f lib501$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib501_OBJECTS) $(lib501_LDADD) $(LIBS)
 lib501$(EXEEXT): $(lib501_OBJECTS) $(lib501_DEPENDENCIES) $(EXTRA_lib501_DEPENDENCIES) 
        @rm -f lib501$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib501_OBJECTS) $(lib501_LDADD) $(LIBS)
+../../lib/lib502-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib502$(EXEEXT): $(lib502_OBJECTS) $(lib502_DEPENDENCIES) $(EXTRA_lib502_DEPENDENCIES) 
        @rm -f lib502$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib502_OBJECTS) $(lib502_LDADD) $(LIBS)
 
 lib502$(EXEEXT): $(lib502_OBJECTS) $(lib502_DEPENDENCIES) $(EXTRA_lib502_DEPENDENCIES) 
        @rm -f lib502$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib502_OBJECTS) $(lib502_LDADD) $(LIBS)
+../../lib/lib503-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib503$(EXEEXT): $(lib503_OBJECTS) $(lib503_DEPENDENCIES) $(EXTRA_lib503_DEPENDENCIES) 
        @rm -f lib503$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib503_OBJECTS) $(lib503_LDADD) $(LIBS)
 
 lib503$(EXEEXT): $(lib503_OBJECTS) $(lib503_DEPENDENCIES) $(EXTRA_lib503_DEPENDENCIES) 
        @rm -f lib503$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib503_OBJECTS) $(lib503_LDADD) $(LIBS)
+../../lib/lib504-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib504$(EXEEXT): $(lib504_OBJECTS) $(lib504_DEPENDENCIES) $(EXTRA_lib504_DEPENDENCIES) 
        @rm -f lib504$(EXEEXT)
 
 lib504$(EXEEXT): $(lib504_OBJECTS) $(lib504_DEPENDENCIES) $(EXTRA_lib504_DEPENDENCIES) 
        @rm -f lib504$(EXEEXT)
@@ -1505,6 +1700,8 @@ lib505$(EXEEXT): $(lib505_OBJECTS) $(lib505_DEPENDENCIES) $(EXTRA_lib505_DEPENDE
 lib506$(EXEEXT): $(lib506_OBJECTS) $(lib506_DEPENDENCIES) $(EXTRA_lib506_DEPENDENCIES) 
        @rm -f lib506$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib506_OBJECTS) $(lib506_LDADD) $(LIBS)
 lib506$(EXEEXT): $(lib506_OBJECTS) $(lib506_DEPENDENCIES) $(EXTRA_lib506_DEPENDENCIES) 
        @rm -f lib506$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib506_OBJECTS) $(lib506_LDADD) $(LIBS)
+../../lib/lib507-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib507$(EXEEXT): $(lib507_OBJECTS) $(lib507_DEPENDENCIES) $(EXTRA_lib507_DEPENDENCIES) 
        @rm -f lib507$(EXEEXT)
 
 lib507$(EXEEXT): $(lib507_OBJECTS) $(lib507_DEPENDENCIES) $(EXTRA_lib507_DEPENDENCIES) 
        @rm -f lib507$(EXEEXT)
@@ -1549,6 +1746,8 @@ lib516$(EXEEXT): $(lib516_OBJECTS) $(lib516_DEPENDENCIES) $(EXTRA_lib516_DEPENDE
 lib517$(EXEEXT): $(lib517_OBJECTS) $(lib517_DEPENDENCIES) $(EXTRA_lib517_DEPENDENCIES) 
        @rm -f lib517$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib517_OBJECTS) $(lib517_LDADD) $(LIBS)
 lib517$(EXEEXT): $(lib517_OBJECTS) $(lib517_DEPENDENCIES) $(EXTRA_lib517_DEPENDENCIES) 
        @rm -f lib517$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib517_OBJECTS) $(lib517_LDADD) $(LIBS)
+../../lib/lib518-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib518$(EXEEXT): $(lib518_OBJECTS) $(lib518_DEPENDENCIES) $(EXTRA_lib518_DEPENDENCIES) 
        @rm -f lib518$(EXEEXT)
 
 lib518$(EXEEXT): $(lib518_OBJECTS) $(lib518_DEPENDENCIES) $(EXTRA_lib518_DEPENDENCIES) 
        @rm -f lib518$(EXEEXT)
@@ -1573,38 +1772,56 @@ lib523$(EXEEXT): $(lib523_OBJECTS) $(lib523_DEPENDENCIES) $(EXTRA_lib523_DEPENDE
 lib524$(EXEEXT): $(lib524_OBJECTS) $(lib524_DEPENDENCIES) $(EXTRA_lib524_DEPENDENCIES) 
        @rm -f lib524$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib524_OBJECTS) $(lib524_LDADD) $(LIBS)
 lib524$(EXEEXT): $(lib524_OBJECTS) $(lib524_DEPENDENCIES) $(EXTRA_lib524_DEPENDENCIES) 
        @rm -f lib524$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib524_OBJECTS) $(lib524_LDADD) $(LIBS)
+../../lib/lib525-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib525$(EXEEXT): $(lib525_OBJECTS) $(lib525_DEPENDENCIES) $(EXTRA_lib525_DEPENDENCIES) 
        @rm -f lib525$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib525_OBJECTS) $(lib525_LDADD) $(LIBS)
 
 lib525$(EXEEXT): $(lib525_OBJECTS) $(lib525_DEPENDENCIES) $(EXTRA_lib525_DEPENDENCIES) 
        @rm -f lib525$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib525_OBJECTS) $(lib525_LDADD) $(LIBS)
+../../lib/lib526-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib526$(EXEEXT): $(lib526_OBJECTS) $(lib526_DEPENDENCIES) $(EXTRA_lib526_DEPENDENCIES) 
        @rm -f lib526$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib526_OBJECTS) $(lib526_LDADD) $(LIBS)
 
 lib526$(EXEEXT): $(lib526_OBJECTS) $(lib526_DEPENDENCIES) $(EXTRA_lib526_DEPENDENCIES) 
        @rm -f lib526$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib526_OBJECTS) $(lib526_LDADD) $(LIBS)
+../../lib/lib527-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib527$(EXEEXT): $(lib527_OBJECTS) $(lib527_DEPENDENCIES) $(EXTRA_lib527_DEPENDENCIES) 
        @rm -f lib527$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib527_OBJECTS) $(lib527_LDADD) $(LIBS)
 
 lib527$(EXEEXT): $(lib527_OBJECTS) $(lib527_DEPENDENCIES) $(EXTRA_lib527_DEPENDENCIES) 
        @rm -f lib527$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib527_OBJECTS) $(lib527_LDADD) $(LIBS)
+../../lib/lib529-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib529$(EXEEXT): $(lib529_OBJECTS) $(lib529_DEPENDENCIES) $(EXTRA_lib529_DEPENDENCIES) 
        @rm -f lib529$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib529_OBJECTS) $(lib529_LDADD) $(LIBS)
 
 lib529$(EXEEXT): $(lib529_OBJECTS) $(lib529_DEPENDENCIES) $(EXTRA_lib529_DEPENDENCIES) 
        @rm -f lib529$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib529_OBJECTS) $(lib529_LDADD) $(LIBS)
+../../lib/lib530-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib530$(EXEEXT): $(lib530_OBJECTS) $(lib530_DEPENDENCIES) $(EXTRA_lib530_DEPENDENCIES) 
        @rm -f lib530$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib530_OBJECTS) $(lib530_LDADD) $(LIBS)
 
 lib530$(EXEEXT): $(lib530_OBJECTS) $(lib530_DEPENDENCIES) $(EXTRA_lib530_DEPENDENCIES) 
        @rm -f lib530$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib530_OBJECTS) $(lib530_LDADD) $(LIBS)
+../../lib/lib532-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib532$(EXEEXT): $(lib532_OBJECTS) $(lib532_DEPENDENCIES) $(EXTRA_lib532_DEPENDENCIES) 
        @rm -f lib532$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib532_OBJECTS) $(lib532_LDADD) $(LIBS)
 
 lib532$(EXEEXT): $(lib532_OBJECTS) $(lib532_DEPENDENCIES) $(EXTRA_lib532_DEPENDENCIES) 
        @rm -f lib532$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib532_OBJECTS) $(lib532_LDADD) $(LIBS)
+../../lib/lib533-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib533$(EXEEXT): $(lib533_OBJECTS) $(lib533_DEPENDENCIES) $(EXTRA_lib533_DEPENDENCIES) 
        @rm -f lib533$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib533_OBJECTS) $(lib533_LDADD) $(LIBS)
 
 lib533$(EXEEXT): $(lib533_OBJECTS) $(lib533_DEPENDENCIES) $(EXTRA_lib533_DEPENDENCIES) 
        @rm -f lib533$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib533_OBJECTS) $(lib533_LDADD) $(LIBS)
+../../lib/lib536-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib536$(EXEEXT): $(lib536_OBJECTS) $(lib536_DEPENDENCIES) $(EXTRA_lib536_DEPENDENCIES) 
        @rm -f lib536$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib536_OBJECTS) $(lib536_LDADD) $(LIBS)
 
 lib536$(EXEEXT): $(lib536_OBJECTS) $(lib536_DEPENDENCIES) $(EXTRA_lib536_DEPENDENCIES) 
        @rm -f lib536$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib536_OBJECTS) $(lib536_LDADD) $(LIBS)
+../../lib/lib537-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib537$(EXEEXT): $(lib537_OBJECTS) $(lib537_DEPENDENCIES) $(EXTRA_lib537_DEPENDENCIES) 
        @rm -f lib537$(EXEEXT)
 
 lib537$(EXEEXT): $(lib537_OBJECTS) $(lib537_DEPENDENCIES) $(EXTRA_lib537_DEPENDENCIES) 
        @rm -f lib537$(EXEEXT)
@@ -1613,6 +1830,8 @@ lib537$(EXEEXT): $(lib537_OBJECTS) $(lib537_DEPENDENCIES) $(EXTRA_lib537_DEPENDE
 lib539$(EXEEXT): $(lib539_OBJECTS) $(lib539_DEPENDENCIES) $(EXTRA_lib539_DEPENDENCIES) 
        @rm -f lib539$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib539_OBJECTS) $(lib539_LDADD) $(LIBS)
 lib539$(EXEEXT): $(lib539_OBJECTS) $(lib539_DEPENDENCIES) $(EXTRA_lib539_DEPENDENCIES) 
        @rm -f lib539$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib539_OBJECTS) $(lib539_LDADD) $(LIBS)
+../../lib/lib540-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib540$(EXEEXT): $(lib540_OBJECTS) $(lib540_DEPENDENCIES) $(EXTRA_lib540_DEPENDENCIES) 
        @rm -f lib540$(EXEEXT)
 
 lib540$(EXEEXT): $(lib540_OBJECTS) $(lib540_DEPENDENCIES) $(EXTRA_lib540_DEPENDENCIES) 
        @rm -f lib540$(EXEEXT)
@@ -1649,6 +1868,8 @@ lib548$(EXEEXT): $(lib548_OBJECTS) $(lib548_DEPENDENCIES) $(EXTRA_lib548_DEPENDE
 lib549$(EXEEXT): $(lib549_OBJECTS) $(lib549_DEPENDENCIES) $(EXTRA_lib549_DEPENDENCIES) 
        @rm -f lib549$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib549_OBJECTS) $(lib549_LDADD) $(LIBS)
 lib549$(EXEEXT): $(lib549_OBJECTS) $(lib549_DEPENDENCIES) $(EXTRA_lib549_DEPENDENCIES) 
        @rm -f lib549$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib549_OBJECTS) $(lib549_LDADD) $(LIBS)
+../../lib/lib552-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib552$(EXEEXT): $(lib552_OBJECTS) $(lib552_DEPENDENCIES) $(EXTRA_lib552_DEPENDENCIES) 
        @rm -f lib552$(EXEEXT)
 
 lib552$(EXEEXT): $(lib552_OBJECTS) $(lib552_DEPENDENCIES) $(EXTRA_lib552_DEPENDENCIES) 
        @rm -f lib552$(EXEEXT)
@@ -1661,10 +1882,14 @@ lib553$(EXEEXT): $(lib553_OBJECTS) $(lib553_DEPENDENCIES) $(EXTRA_lib553_DEPENDE
 lib554$(EXEEXT): $(lib554_OBJECTS) $(lib554_DEPENDENCIES) $(EXTRA_lib554_DEPENDENCIES) 
        @rm -f lib554$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib554_OBJECTS) $(lib554_LDADD) $(LIBS)
 lib554$(EXEEXT): $(lib554_OBJECTS) $(lib554_DEPENDENCIES) $(EXTRA_lib554_DEPENDENCIES) 
        @rm -f lib554$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib554_OBJECTS) $(lib554_LDADD) $(LIBS)
+../../lib/lib555-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib555$(EXEEXT): $(lib555_OBJECTS) $(lib555_DEPENDENCIES) $(EXTRA_lib555_DEPENDENCIES) 
        @rm -f lib555$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib555_OBJECTS) $(lib555_LDADD) $(LIBS)
 
 lib555$(EXEEXT): $(lib555_OBJECTS) $(lib555_DEPENDENCIES) $(EXTRA_lib555_DEPENDENCIES) 
        @rm -f lib555$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib555_OBJECTS) $(lib555_LDADD) $(LIBS)
+../../lib/lib556-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib556$(EXEEXT): $(lib556_OBJECTS) $(lib556_DEPENDENCIES) $(EXTRA_lib556_DEPENDENCIES) 
        @rm -f lib556$(EXEEXT)
 
 lib556$(EXEEXT): $(lib556_OBJECTS) $(lib556_DEPENDENCIES) $(EXTRA_lib556_DEPENDENCIES) 
        @rm -f lib556$(EXEEXT)
@@ -1677,6 +1902,8 @@ lib557$(EXEEXT): $(lib557_OBJECTS) $(lib557_DEPENDENCIES) $(EXTRA_lib557_DEPENDE
 lib558$(EXEEXT): $(lib558_OBJECTS) $(lib558_DEPENDENCIES) $(EXTRA_lib558_DEPENDENCIES) 
        @rm -f lib558$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib558_OBJECTS) $(lib558_LDADD) $(LIBS)
 lib558$(EXEEXT): $(lib558_OBJECTS) $(lib558_DEPENDENCIES) $(EXTRA_lib558_DEPENDENCIES) 
        @rm -f lib558$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib558_OBJECTS) $(lib558_LDADD) $(LIBS)
+../../lib/lib560-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib560$(EXEEXT): $(lib560_OBJECTS) $(lib560_DEPENDENCIES) $(EXTRA_lib560_DEPENDENCIES) 
        @rm -f lib560$(EXEEXT)
 
 lib560$(EXEEXT): $(lib560_OBJECTS) $(lib560_DEPENDENCIES) $(EXTRA_lib560_DEPENDENCIES) 
        @rm -f lib560$(EXEEXT)
@@ -1685,6 +1912,8 @@ lib560$(EXEEXT): $(lib560_OBJECTS) $(lib560_DEPENDENCIES) $(EXTRA_lib560_DEPENDE
 lib562$(EXEEXT): $(lib562_OBJECTS) $(lib562_DEPENDENCIES) $(EXTRA_lib562_DEPENDENCIES) 
        @rm -f lib562$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib562_OBJECTS) $(lib562_LDADD) $(LIBS)
 lib562$(EXEEXT): $(lib562_OBJECTS) $(lib562_DEPENDENCIES) $(EXTRA_lib562_DEPENDENCIES) 
        @rm -f lib562$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib562_OBJECTS) $(lib562_LDADD) $(LIBS)
+../../lib/lib564-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib564$(EXEEXT): $(lib564_OBJECTS) $(lib564_DEPENDENCIES) $(EXTRA_lib564_DEPENDENCIES) 
        @rm -f lib564$(EXEEXT)
 
 lib564$(EXEEXT): $(lib564_OBJECTS) $(lib564_DEPENDENCIES) $(EXTRA_lib564_DEPENDENCIES) 
        @rm -f lib564$(EXEEXT)
@@ -1713,6 +1942,8 @@ lib569$(EXEEXT): $(lib569_OBJECTS) $(lib569_DEPENDENCIES) $(EXTRA_lib569_DEPENDE
 lib570$(EXEEXT): $(lib570_OBJECTS) $(lib570_DEPENDENCIES) $(EXTRA_lib570_DEPENDENCIES) 
        @rm -f lib570$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib570_OBJECTS) $(lib570_LDADD) $(LIBS)
 lib570$(EXEEXT): $(lib570_OBJECTS) $(lib570_DEPENDENCIES) $(EXTRA_lib570_DEPENDENCIES) 
        @rm -f lib570$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib570_OBJECTS) $(lib570_LDADD) $(LIBS)
+../../lib/lib571-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib571$(EXEEXT): $(lib571_OBJECTS) $(lib571_DEPENDENCIES) $(EXTRA_lib571_DEPENDENCIES) 
        @rm -f lib571$(EXEEXT)
 
 lib571$(EXEEXT): $(lib571_OBJECTS) $(lib571_DEPENDENCIES) $(EXTRA_lib571_DEPENDENCIES) 
        @rm -f lib571$(EXEEXT)
@@ -1721,6 +1952,8 @@ lib571$(EXEEXT): $(lib571_OBJECTS) $(lib571_DEPENDENCIES) $(EXTRA_lib571_DEPENDE
 lib572$(EXEEXT): $(lib572_OBJECTS) $(lib572_DEPENDENCIES) $(EXTRA_lib572_DEPENDENCIES) 
        @rm -f lib572$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib572_OBJECTS) $(lib572_LDADD) $(LIBS)
 lib572$(EXEEXT): $(lib572_OBJECTS) $(lib572_DEPENDENCIES) $(EXTRA_lib572_DEPENDENCIES) 
        @rm -f lib572$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib572_OBJECTS) $(lib572_LDADD) $(LIBS)
+../../lib/lib573-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib573$(EXEEXT): $(lib573_OBJECTS) $(lib573_DEPENDENCIES) $(EXTRA_lib573_DEPENDENCIES) 
        @rm -f lib573$(EXEEXT)
 
 lib573$(EXEEXT): $(lib573_OBJECTS) $(lib573_DEPENDENCIES) $(EXTRA_lib573_DEPENDENCIES) 
        @rm -f lib573$(EXEEXT)
@@ -1729,6 +1962,8 @@ lib573$(EXEEXT): $(lib573_OBJECTS) $(lib573_DEPENDENCIES) $(EXTRA_lib573_DEPENDE
 lib574$(EXEEXT): $(lib574_OBJECTS) $(lib574_DEPENDENCIES) $(EXTRA_lib574_DEPENDENCIES) 
        @rm -f lib574$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib574_OBJECTS) $(lib574_LDADD) $(LIBS)
 lib574$(EXEEXT): $(lib574_OBJECTS) $(lib574_DEPENDENCIES) $(EXTRA_lib574_DEPENDENCIES) 
        @rm -f lib574$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib574_OBJECTS) $(lib574_LDADD) $(LIBS)
+../../lib/lib575-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib575$(EXEEXT): $(lib575_OBJECTS) $(lib575_DEPENDENCIES) $(EXTRA_lib575_DEPENDENCIES) 
        @rm -f lib575$(EXEEXT)
 
 lib575$(EXEEXT): $(lib575_OBJECTS) $(lib575_DEPENDENCIES) $(EXTRA_lib575_DEPENDENCIES) 
        @rm -f lib575$(EXEEXT)
@@ -1745,6 +1980,8 @@ lib578$(EXEEXT): $(lib578_OBJECTS) $(lib578_DEPENDENCIES) $(EXTRA_lib578_DEPENDE
 lib579$(EXEEXT): $(lib579_OBJECTS) $(lib579_DEPENDENCIES) $(EXTRA_lib579_DEPENDENCIES) 
        @rm -f lib579$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib579_OBJECTS) $(lib579_LDADD) $(LIBS)
 lib579$(EXEEXT): $(lib579_OBJECTS) $(lib579_DEPENDENCIES) $(EXTRA_lib579_DEPENDENCIES) 
        @rm -f lib579$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib579_OBJECTS) $(lib579_LDADD) $(LIBS)
+../../lib/lib582-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib582$(EXEEXT): $(lib582_OBJECTS) $(lib582_DEPENDENCIES) $(EXTRA_lib582_DEPENDENCIES) 
        @rm -f lib582$(EXEEXT)
 
 lib582$(EXEEXT): $(lib582_OBJECTS) $(lib582_DEPENDENCIES) $(EXTRA_lib582_DEPENDENCIES) 
        @rm -f lib582$(EXEEXT)
@@ -1769,10 +2006,14 @@ lib587$(EXEEXT): $(lib587_OBJECTS) $(lib587_DEPENDENCIES) $(EXTRA_lib587_DEPENDE
 lib590$(EXEEXT): $(lib590_OBJECTS) $(lib590_DEPENDENCIES) $(EXTRA_lib590_DEPENDENCIES) 
        @rm -f lib590$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib590_OBJECTS) $(lib590_LDADD) $(LIBS)
 lib590$(EXEEXT): $(lib590_OBJECTS) $(lib590_DEPENDENCIES) $(EXTRA_lib590_DEPENDENCIES) 
        @rm -f lib590$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib590_OBJECTS) $(lib590_LDADD) $(LIBS)
+../../lib/lib591-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib591$(EXEEXT): $(lib591_OBJECTS) $(lib591_DEPENDENCIES) $(EXTRA_lib591_DEPENDENCIES) 
        @rm -f lib591$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib591_OBJECTS) $(lib591_LDADD) $(LIBS)
 
 lib591$(EXEEXT): $(lib591_OBJECTS) $(lib591_DEPENDENCIES) $(EXTRA_lib591_DEPENDENCIES) 
        @rm -f lib591$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib591_OBJECTS) $(lib591_LDADD) $(LIBS)
+../../lib/lib597-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib597$(EXEEXT): $(lib597_OBJECTS) $(lib597_DEPENDENCIES) $(EXTRA_lib597_DEPENDENCIES) 
        @rm -f lib597$(EXEEXT)
 
 lib597$(EXEEXT): $(lib597_OBJECTS) $(lib597_DEPENDENCIES) $(EXTRA_lib597_DEPENDENCIES) 
        @rm -f lib597$(EXEEXT)
@@ -1789,6 +2030,8 @@ lib599$(EXEEXT): $(lib599_OBJECTS) $(lib599_DEPENDENCIES) $(EXTRA_lib599_DEPENDE
 libauthretry$(EXEEXT): $(libauthretry_OBJECTS) $(libauthretry_DEPENDENCIES) $(EXTRA_libauthretry_DEPENDENCIES) 
        @rm -f libauthretry$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(libauthretry_OBJECTS) $(libauthretry_LDADD) $(LIBS)
 libauthretry$(EXEEXT): $(libauthretry_OBJECTS) $(libauthretry_DEPENDENCIES) $(EXTRA_libauthretry_DEPENDENCIES) 
        @rm -f libauthretry$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(libauthretry_OBJECTS) $(libauthretry_LDADD) $(LIBS)
+../../lib/libntlmconnect-warnless.$(OBJEXT):  \
+       ../../lib/$(am__dirstamp) ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 libntlmconnect$(EXEEXT): $(libntlmconnect_OBJECTS) $(libntlmconnect_DEPENDENCIES) $(EXTRA_libntlmconnect_DEPENDENCIES) 
        @rm -f libntlmconnect$(EXEEXT)
 
 libntlmconnect$(EXEEXT): $(libntlmconnect_OBJECTS) $(libntlmconnect_DEPENDENCIES) $(EXTRA_libntlmconnect_DEPENDENCIES) 
        @rm -f libntlmconnect$(EXEEXT)
@@ -1796,71 +2039,133 @@ libntlmconnect$(EXEEXT): $(libntlmconnect_OBJECTS) $(libntlmconnect_DEPENDENCIES
 
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
 
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
+       -rm -f ../../lib/*.$(OBJEXT)
 
 distclean-compile:
        -rm -f *.tab.c
 
 
 distclean-compile:
        -rm -f *.tab.c
 
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/chkhostname-curl_gethostname.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1501-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1502-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1503-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1504-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1505-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1506-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1507-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1508-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1509-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1510-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1511-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1512-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1513-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1514-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1515-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1525-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1526-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1527-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1528-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1529-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1900-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib2033-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib502-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib503-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib504-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib507-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib518-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib525-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib526-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib527-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib529-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib530-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib532-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib533-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib536-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib537-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib540-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib552-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib555-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib556-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib560-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib564-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib571-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib573-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib575-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib582-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib591-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib597-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/libntlmconnect-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chkhostname-chkhostname.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chkhostname-chkhostname.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chkhostname-curl_gethostname.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1500-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1500-lib1500.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1500-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1501-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1501-lib1501.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1501-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1500-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1500-lib1500.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1500-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1501-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1501-lib1501.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1501-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1501-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1502-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1502-lib1502.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1502-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1502-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1502-lib1502.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1502-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1502-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1503-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1503-lib1502.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1503-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1503-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1503-lib1502.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1503-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1503-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1504-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1504-lib1502.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1504-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1504-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1504-lib1502.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1504-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1504-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1505-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1505-lib1502.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1505-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1505-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1505-lib1502.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1505-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1505-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1506-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1506-lib1506.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1506-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1506-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1506-lib1506.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1506-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1506-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1507-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1507-lib1507.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1507-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1507-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1507-lib1507.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1507-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1507-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1508-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1508-lib1508.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1508-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1508-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1508-lib1508.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1508-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1508-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1509-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1509-lib1509.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1509-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1509-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1509-lib1509.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1509-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1509-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1510-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1510-lib1510.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1510-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1510-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1510-lib1510.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1510-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1510-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1511-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1511-lib1511.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1511-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1511-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1511-lib1511.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1511-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1511-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1512-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1512-lib1512.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1512-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1512-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1512-lib1512.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1512-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1512-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1513-first.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1513-lib1513.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1513-testutil.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1514-first.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1514-lib1514.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1514-testutil.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1515-first.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1515-lib1515.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1515-testutil.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1520-first.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1520-lib1520.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1525-first.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1525-lib1525.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1525-testutil.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1526-first.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1526-lib1526.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1526-testutil.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1527-first.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1527-lib1527.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1527-testutil.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1528-first.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1528-lib1528.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1528-testutil.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1529-first.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1529-lib1529.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1529-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1900-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1900-lib1900.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1900-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1900-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1900-lib1900.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1900-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1900-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib2033-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib2033-libntlmconnect.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib2033-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib2033-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib2033-libntlmconnect.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib2033-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib2033-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib500-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib500-lib500.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib500-testtrace.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib500-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib500-lib500.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib500-testtrace.Po@am__quote@
@@ -1870,15 +2175,12 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib502-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib502-lib502.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib502-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib502-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib502-lib502.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib502-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib502-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib503-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib503-lib503.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib503-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib503-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib503-lib503.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib503-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib503-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib504-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib504-lib504.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib504-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib504-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib504-lib504.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib504-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib504-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib505-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib505-lib505.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib506-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib505-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib505-lib505.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib506-first.Po@am__quote@
@@ -1886,7 +2188,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib507-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib507-lib507.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib507-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib507-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib507-lib507.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib507-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib507-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib508-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib508-lib508.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib509-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib508-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib508-lib508.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib509-first.Po@am__quote@
@@ -1909,7 +2210,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib517-lib517.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib518-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib518-lib518.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib517-lib517.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib518-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib518-lib518.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib518-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib519-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib519-lib519.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib520-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib519-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib519-lib519.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib520-first.Po@am__quote@
@@ -1923,44 +2223,34 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib525-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib525-lib525.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib525-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib525-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib525-lib525.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib525-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib525-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib526-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib526-lib526.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib526-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib526-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib526-lib526.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib526-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib526-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib527-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib527-lib526.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib527-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib527-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib527-lib526.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib527-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib527-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib529-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib529-lib525.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib529-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib529-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib529-lib525.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib529-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib529-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib530-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib530-lib530.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib530-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib530-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib530-lib530.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib530-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib530-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib532-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib532-lib526.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib532-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib532-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib532-lib526.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib532-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib532-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib533-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib533-lib533.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib533-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib533-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib533-lib533.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib533-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib533-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib536-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib536-lib536.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib536-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib536-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib536-lib536.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib536-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib536-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib537-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib537-lib537.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib537-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib537-lib537.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib537-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib539-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib539-lib539.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib540-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib540-lib540.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib540-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib539-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib539-lib539.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib540-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib540-lib540.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib540-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib540-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib541-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib541-lib541.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib542-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib541-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib541-lib541.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib542-first.Po@am__quote@
@@ -1979,7 +2269,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib549-lib549.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib552-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib552-lib552.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib549-lib549.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib552-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib552-lib552.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib552-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib553-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib553-lib553.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib554-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib553-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib553-lib553.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib554-first.Po@am__quote@
@@ -1987,7 +2276,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib555-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib555-lib555.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib555-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib555-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib555-lib555.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib555-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib555-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib556-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib556-lib556.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib557-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib556-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib556-lib556.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib557-first.Po@am__quote@
@@ -1997,13 +2285,11 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib560-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib560-lib560.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib560-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib560-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib560-lib560.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib560-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib560-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib562-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib562-lib562.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib564-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib564-lib564.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib564-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib562-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib562-lib562.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib564-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib564-lib564.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib564-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib564-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib565-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib565-lib510.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib566-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib565-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib565-lib510.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib566-first.Po@am__quote@
@@ -2018,20 +2304,17 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib570-lib570.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib571-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib571-lib571.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib570-lib570.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib571-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib571-lib571.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib571-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib572-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib572-lib572.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib573-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib573-lib573.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib573-testtrace.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib573-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib572-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib572-lib572.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib573-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib573-lib573.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib573-testtrace.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib573-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib573-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib574-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib574-lib574.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib575-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib575-lib575.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib575-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib574-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib574-lib574.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib575-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib575-lib575.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib575-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib575-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib576-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib576-lib576.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib578-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib576-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib576-lib576.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib578-first.Po@am__quote@
@@ -2041,7 +2324,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib582-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib582-lib582.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib582-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib582-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib582-lib582.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib582-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib582-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib583-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib583-lib583.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib585-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib583-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib583-lib583.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib585-first.Po@am__quote@
@@ -2057,11 +2339,9 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib591-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib591-lib591.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib591-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib591-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib591-lib591.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib591-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib591-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib597-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib597-lib597.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib597-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib597-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib597-lib597.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib597-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib597-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib598-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib598-lib598.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib599-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib598-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib598-lib598.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib599-first.Po@am__quote@
@@ -2072,25 +2352,27 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libntlmconnect-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libntlmconnect-libntlmconnect.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libntlmconnect-testutil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libntlmconnect-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libntlmconnect-libntlmconnect.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libntlmconnect-testutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libntlmconnect-warnless.Po@am__quote@
 
 .c.o:
 
 .c.o:
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
 
 .c.obj:
 
 .c.obj:
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
 
 .c.lo:
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+@am__fastdepCC_TRUE@   $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Plo
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
@@ -2116,19 +2398,19 @@ chkhostname-chkhostname.obj: chkhostname.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(chkhostname_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o chkhostname-chkhostname.obj `if test -f 'chkhostname.c'; then $(CYGPATH_W) 'chkhostname.c'; else $(CYGPATH_W) '$(srcdir)/chkhostname.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(chkhostname_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o chkhostname-chkhostname.obj `if test -f 'chkhostname.c'; then $(CYGPATH_W) 'chkhostname.c'; else $(CYGPATH_W) '$(srcdir)/chkhostname.c'; fi`
 
-chkhostname-curl_gethostname.o: ../../lib/curl_gethostname.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(chkhostname_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT chkhostname-curl_gethostname.o -MD -MP -MF $(DEPDIR)/chkhostname-curl_gethostname.Tpo -c -o chkhostname-curl_gethostname.o `test -f '../../lib/curl_gethostname.c' || echo '$(srcdir)/'`../../lib/curl_gethostname.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/chkhostname-curl_gethostname.Tpo $(DEPDIR)/chkhostname-curl_gethostname.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/curl_gethostname.c' object='chkhostname-curl_gethostname.o' libtool=no @AMDEPBACKSLASH@
+../../lib/chkhostname-curl_gethostname.o: ../../lib/curl_gethostname.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(chkhostname_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/chkhostname-curl_gethostname.o -MD -MP -MF ../../lib/$(DEPDIR)/chkhostname-curl_gethostname.Tpo -c -o ../../lib/chkhostname-curl_gethostname.o `test -f '../../lib/curl_gethostname.c' || echo '$(srcdir)/'`../../lib/curl_gethostname.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/chkhostname-curl_gethostname.Tpo ../../lib/$(DEPDIR)/chkhostname-curl_gethostname.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/curl_gethostname.c' object='../../lib/chkhostname-curl_gethostname.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(chkhostname_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o chkhostname-curl_gethostname.o `test -f '../../lib/curl_gethostname.c' || echo '$(srcdir)/'`../../lib/curl_gethostname.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(chkhostname_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/chkhostname-curl_gethostname.o `test -f '../../lib/curl_gethostname.c' || echo '$(srcdir)/'`../../lib/curl_gethostname.c
 
 
-chkhostname-curl_gethostname.obj: ../../lib/curl_gethostname.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(chkhostname_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT chkhostname-curl_gethostname.obj -MD -MP -MF $(DEPDIR)/chkhostname-curl_gethostname.Tpo -c -o chkhostname-curl_gethostname.obj `if test -f '../../lib/curl_gethostname.c'; then $(CYGPATH_W) '../../lib/curl_gethostname.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_gethostname.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/chkhostname-curl_gethostname.Tpo $(DEPDIR)/chkhostname-curl_gethostname.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/curl_gethostname.c' object='chkhostname-curl_gethostname.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/chkhostname-curl_gethostname.obj: ../../lib/curl_gethostname.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(chkhostname_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/chkhostname-curl_gethostname.obj -MD -MP -MF ../../lib/$(DEPDIR)/chkhostname-curl_gethostname.Tpo -c -o ../../lib/chkhostname-curl_gethostname.obj `if test -f '../../lib/curl_gethostname.c'; then $(CYGPATH_W) '../../lib/curl_gethostname.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_gethostname.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/chkhostname-curl_gethostname.Tpo ../../lib/$(DEPDIR)/chkhostname-curl_gethostname.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/curl_gethostname.c' object='../../lib/chkhostname-curl_gethostname.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(chkhostname_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o chkhostname-curl_gethostname.obj `if test -f '../../lib/curl_gethostname.c'; then $(CYGPATH_W) '../../lib/curl_gethostname.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_gethostname.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(chkhostname_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/chkhostname-curl_gethostname.obj `if test -f '../../lib/curl_gethostname.c'; then $(CYGPATH_W) '../../lib/curl_gethostname.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_gethostname.c'; fi`
 
 lib1500-lib1500.o: lib1500.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1500_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1500-lib1500.o -MD -MP -MF $(DEPDIR)/lib1500-lib1500.Tpo -c -o lib1500-lib1500.o `test -f 'lib1500.c' || echo '$(srcdir)/'`lib1500.c
 
 lib1500-lib1500.o: lib1500.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1500_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1500-lib1500.o -MD -MP -MF $(DEPDIR)/lib1500-lib1500.Tpo -c -o lib1500-lib1500.o `test -f 'lib1500.c' || echo '$(srcdir)/'`lib1500.c
@@ -2214,19 +2496,19 @@ lib1501-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1501_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1501-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1501_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1501-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-lib1501-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1501_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1501-warnless.o -MD -MP -MF $(DEPDIR)/lib1501-warnless.Tpo -c -o lib1501-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1501-warnless.Tpo $(DEPDIR)/lib1501-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib1501-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib1501-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1501_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1501-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1501-warnless.Tpo -c -o ../../lib/lib1501-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1501-warnless.Tpo ../../lib/$(DEPDIR)/lib1501-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1501-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1501_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1501-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1501_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1501-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib1501-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1501_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1501-warnless.obj -MD -MP -MF $(DEPDIR)/lib1501-warnless.Tpo -c -o lib1501-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1501-warnless.Tpo $(DEPDIR)/lib1501-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib1501-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib1501-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1501_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1501-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1501-warnless.Tpo -c -o ../../lib/lib1501-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1501-warnless.Tpo ../../lib/$(DEPDIR)/lib1501-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1501-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1501_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1501-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1501_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1501-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib1502-lib1502.o: lib1502.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1502-lib1502.o -MD -MP -MF $(DEPDIR)/lib1502-lib1502.Tpo -c -o lib1502-lib1502.o `test -f 'lib1502.c' || echo '$(srcdir)/'`lib1502.c
 
 lib1502-lib1502.o: lib1502.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1502-lib1502.o -MD -MP -MF $(DEPDIR)/lib1502-lib1502.Tpo -c -o lib1502-lib1502.o `test -f 'lib1502.c' || echo '$(srcdir)/'`lib1502.c
@@ -2270,19 +2552,19 @@ lib1502-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1502-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1502-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-lib1502-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1502-warnless.o -MD -MP -MF $(DEPDIR)/lib1502-warnless.Tpo -c -o lib1502-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1502-warnless.Tpo $(DEPDIR)/lib1502-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib1502-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib1502-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1502-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1502-warnless.Tpo -c -o ../../lib/lib1502-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1502-warnless.Tpo ../../lib/$(DEPDIR)/lib1502-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1502-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1502-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1502-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib1502-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1502-warnless.obj -MD -MP -MF $(DEPDIR)/lib1502-warnless.Tpo -c -o lib1502-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1502-warnless.Tpo $(DEPDIR)/lib1502-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib1502-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib1502-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1502-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1502-warnless.Tpo -c -o ../../lib/lib1502-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1502-warnless.Tpo ../../lib/$(DEPDIR)/lib1502-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1502-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1502-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1502-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib1503-lib1502.o: lib1502.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1503-lib1502.o -MD -MP -MF $(DEPDIR)/lib1503-lib1502.Tpo -c -o lib1503-lib1502.o `test -f 'lib1502.c' || echo '$(srcdir)/'`lib1502.c
 
 lib1503-lib1502.o: lib1502.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1503-lib1502.o -MD -MP -MF $(DEPDIR)/lib1503-lib1502.Tpo -c -o lib1503-lib1502.o `test -f 'lib1502.c' || echo '$(srcdir)/'`lib1502.c
@@ -2326,19 +2608,19 @@ lib1503-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1503-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1503-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-lib1503-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1503-warnless.o -MD -MP -MF $(DEPDIR)/lib1503-warnless.Tpo -c -o lib1503-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1503-warnless.Tpo $(DEPDIR)/lib1503-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib1503-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib1503-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1503-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1503-warnless.Tpo -c -o ../../lib/lib1503-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1503-warnless.Tpo ../../lib/$(DEPDIR)/lib1503-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1503-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1503-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1503-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib1503-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1503-warnless.obj -MD -MP -MF $(DEPDIR)/lib1503-warnless.Tpo -c -o lib1503-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1503-warnless.Tpo $(DEPDIR)/lib1503-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib1503-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib1503-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1503-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1503-warnless.Tpo -c -o ../../lib/lib1503-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1503-warnless.Tpo ../../lib/$(DEPDIR)/lib1503-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1503-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1503-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1503-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib1504-lib1502.o: lib1502.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1504-lib1502.o -MD -MP -MF $(DEPDIR)/lib1504-lib1502.Tpo -c -o lib1504-lib1502.o `test -f 'lib1502.c' || echo '$(srcdir)/'`lib1502.c
 
 lib1504-lib1502.o: lib1502.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1504-lib1502.o -MD -MP -MF $(DEPDIR)/lib1504-lib1502.Tpo -c -o lib1504-lib1502.o `test -f 'lib1502.c' || echo '$(srcdir)/'`lib1502.c
@@ -2382,19 +2664,19 @@ lib1504-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1504-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1504-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-lib1504-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1504-warnless.o -MD -MP -MF $(DEPDIR)/lib1504-warnless.Tpo -c -o lib1504-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1504-warnless.Tpo $(DEPDIR)/lib1504-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib1504-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib1504-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1504-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1504-warnless.Tpo -c -o ../../lib/lib1504-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1504-warnless.Tpo ../../lib/$(DEPDIR)/lib1504-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1504-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1504-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1504-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib1504-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1504-warnless.obj -MD -MP -MF $(DEPDIR)/lib1504-warnless.Tpo -c -o lib1504-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1504-warnless.Tpo $(DEPDIR)/lib1504-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib1504-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib1504-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1504-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1504-warnless.Tpo -c -o ../../lib/lib1504-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1504-warnless.Tpo ../../lib/$(DEPDIR)/lib1504-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1504-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1504-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1504-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib1505-lib1502.o: lib1502.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1505-lib1502.o -MD -MP -MF $(DEPDIR)/lib1505-lib1502.Tpo -c -o lib1505-lib1502.o `test -f 'lib1502.c' || echo '$(srcdir)/'`lib1502.c
 
 lib1505-lib1502.o: lib1502.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1505-lib1502.o -MD -MP -MF $(DEPDIR)/lib1505-lib1502.Tpo -c -o lib1505-lib1502.o `test -f 'lib1502.c' || echo '$(srcdir)/'`lib1502.c
@@ -2438,19 +2720,19 @@ lib1505-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1505-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1505-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-lib1505-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1505-warnless.o -MD -MP -MF $(DEPDIR)/lib1505-warnless.Tpo -c -o lib1505-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1505-warnless.Tpo $(DEPDIR)/lib1505-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib1505-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib1505-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1505-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1505-warnless.Tpo -c -o ../../lib/lib1505-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1505-warnless.Tpo ../../lib/$(DEPDIR)/lib1505-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1505-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1505-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1505-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib1505-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1505-warnless.obj -MD -MP -MF $(DEPDIR)/lib1505-warnless.Tpo -c -o lib1505-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1505-warnless.Tpo $(DEPDIR)/lib1505-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib1505-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib1505-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1505-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1505-warnless.Tpo -c -o ../../lib/lib1505-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1505-warnless.Tpo ../../lib/$(DEPDIR)/lib1505-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1505-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1505-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1505-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib1506-lib1506.o: lib1506.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1506_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1506-lib1506.o -MD -MP -MF $(DEPDIR)/lib1506-lib1506.Tpo -c -o lib1506-lib1506.o `test -f 'lib1506.c' || echo '$(srcdir)/'`lib1506.c
 
 lib1506-lib1506.o: lib1506.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1506_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1506-lib1506.o -MD -MP -MF $(DEPDIR)/lib1506-lib1506.Tpo -c -o lib1506-lib1506.o `test -f 'lib1506.c' || echo '$(srcdir)/'`lib1506.c
@@ -2494,19 +2776,19 @@ lib1506-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1506_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1506-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1506_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1506-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-lib1506-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1506_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1506-warnless.o -MD -MP -MF $(DEPDIR)/lib1506-warnless.Tpo -c -o lib1506-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1506-warnless.Tpo $(DEPDIR)/lib1506-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib1506-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib1506-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1506_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1506-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1506-warnless.Tpo -c -o ../../lib/lib1506-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1506-warnless.Tpo ../../lib/$(DEPDIR)/lib1506-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1506-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1506_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1506-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1506_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1506-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib1506-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1506_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1506-warnless.obj -MD -MP -MF $(DEPDIR)/lib1506-warnless.Tpo -c -o lib1506-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1506-warnless.Tpo $(DEPDIR)/lib1506-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib1506-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib1506-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1506_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1506-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1506-warnless.Tpo -c -o ../../lib/lib1506-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1506-warnless.Tpo ../../lib/$(DEPDIR)/lib1506-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1506-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1506_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1506-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1506_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1506-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib1507-lib1507.o: lib1507.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1507-lib1507.o -MD -MP -MF $(DEPDIR)/lib1507-lib1507.Tpo -c -o lib1507-lib1507.o `test -f 'lib1507.c' || echo '$(srcdir)/'`lib1507.c
 
 lib1507-lib1507.o: lib1507.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1507-lib1507.o -MD -MP -MF $(DEPDIR)/lib1507-lib1507.Tpo -c -o lib1507-lib1507.o `test -f 'lib1507.c' || echo '$(srcdir)/'`lib1507.c
@@ -2550,19 +2832,19 @@ lib1507-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1507-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1507-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-lib1507-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1507-warnless.o -MD -MP -MF $(DEPDIR)/lib1507-warnless.Tpo -c -o lib1507-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1507-warnless.Tpo $(DEPDIR)/lib1507-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib1507-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib1507-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1507-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1507-warnless.Tpo -c -o ../../lib/lib1507-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1507-warnless.Tpo ../../lib/$(DEPDIR)/lib1507-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1507-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1507-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1507-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib1507-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1507-warnless.obj -MD -MP -MF $(DEPDIR)/lib1507-warnless.Tpo -c -o lib1507-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1507-warnless.Tpo $(DEPDIR)/lib1507-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib1507-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib1507-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1507-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1507-warnless.Tpo -c -o ../../lib/lib1507-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1507-warnless.Tpo ../../lib/$(DEPDIR)/lib1507-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1507-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1507-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1507-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib1508-lib1508.o: lib1508.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1508-lib1508.o -MD -MP -MF $(DEPDIR)/lib1508-lib1508.Tpo -c -o lib1508-lib1508.o `test -f 'lib1508.c' || echo '$(srcdir)/'`lib1508.c
 
 lib1508-lib1508.o: lib1508.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1508-lib1508.o -MD -MP -MF $(DEPDIR)/lib1508-lib1508.Tpo -c -o lib1508-lib1508.o `test -f 'lib1508.c' || echo '$(srcdir)/'`lib1508.c
@@ -2606,19 +2888,19 @@ lib1508-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1508-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1508-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-lib1508-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1508-warnless.o -MD -MP -MF $(DEPDIR)/lib1508-warnless.Tpo -c -o lib1508-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1508-warnless.Tpo $(DEPDIR)/lib1508-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib1508-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib1508-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1508-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1508-warnless.Tpo -c -o ../../lib/lib1508-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1508-warnless.Tpo ../../lib/$(DEPDIR)/lib1508-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1508-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1508-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1508-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib1508-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1508-warnless.obj -MD -MP -MF $(DEPDIR)/lib1508-warnless.Tpo -c -o lib1508-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1508-warnless.Tpo $(DEPDIR)/lib1508-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib1508-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib1508-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1508-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1508-warnless.Tpo -c -o ../../lib/lib1508-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1508-warnless.Tpo ../../lib/$(DEPDIR)/lib1508-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1508-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1508-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1508-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib1509-lib1509.o: lib1509.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1509_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1509-lib1509.o -MD -MP -MF $(DEPDIR)/lib1509-lib1509.Tpo -c -o lib1509-lib1509.o `test -f 'lib1509.c' || echo '$(srcdir)/'`lib1509.c
 
 lib1509-lib1509.o: lib1509.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1509_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1509-lib1509.o -MD -MP -MF $(DEPDIR)/lib1509-lib1509.Tpo -c -o lib1509-lib1509.o `test -f 'lib1509.c' || echo '$(srcdir)/'`lib1509.c
@@ -2662,19 +2944,19 @@ lib1509-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1509_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1509-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1509_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1509-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-lib1509-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1509_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1509-warnless.o -MD -MP -MF $(DEPDIR)/lib1509-warnless.Tpo -c -o lib1509-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1509-warnless.Tpo $(DEPDIR)/lib1509-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib1509-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib1509-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1509_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1509-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1509-warnless.Tpo -c -o ../../lib/lib1509-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1509-warnless.Tpo ../../lib/$(DEPDIR)/lib1509-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1509-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1509_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1509-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1509_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1509-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib1509-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1509_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1509-warnless.obj -MD -MP -MF $(DEPDIR)/lib1509-warnless.Tpo -c -o lib1509-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1509-warnless.Tpo $(DEPDIR)/lib1509-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib1509-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib1509-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1509_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1509-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1509-warnless.Tpo -c -o ../../lib/lib1509-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1509-warnless.Tpo ../../lib/$(DEPDIR)/lib1509-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1509-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1509_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1509-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1509_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1509-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib1510-lib1510.o: lib1510.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1510_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1510-lib1510.o -MD -MP -MF $(DEPDIR)/lib1510-lib1510.Tpo -c -o lib1510-lib1510.o `test -f 'lib1510.c' || echo '$(srcdir)/'`lib1510.c
 
 lib1510-lib1510.o: lib1510.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1510_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1510-lib1510.o -MD -MP -MF $(DEPDIR)/lib1510-lib1510.Tpo -c -o lib1510-lib1510.o `test -f 'lib1510.c' || echo '$(srcdir)/'`lib1510.c
@@ -2718,19 +3000,19 @@ lib1510-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1510_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1510-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1510_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1510-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-lib1510-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1510_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1510-warnless.o -MD -MP -MF $(DEPDIR)/lib1510-warnless.Tpo -c -o lib1510-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1510-warnless.Tpo $(DEPDIR)/lib1510-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib1510-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib1510-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1510_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1510-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1510-warnless.Tpo -c -o ../../lib/lib1510-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1510-warnless.Tpo ../../lib/$(DEPDIR)/lib1510-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1510-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1510_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1510-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1510_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1510-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib1510-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1510_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1510-warnless.obj -MD -MP -MF $(DEPDIR)/lib1510-warnless.Tpo -c -o lib1510-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1510-warnless.Tpo $(DEPDIR)/lib1510-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib1510-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib1510-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1510_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1510-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1510-warnless.Tpo -c -o ../../lib/lib1510-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1510-warnless.Tpo ../../lib/$(DEPDIR)/lib1510-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1510-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1510_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1510-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1510_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1510-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib1511-lib1511.o: lib1511.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1511_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1511-lib1511.o -MD -MP -MF $(DEPDIR)/lib1511-lib1511.Tpo -c -o lib1511-lib1511.o `test -f 'lib1511.c' || echo '$(srcdir)/'`lib1511.c
 
 lib1511-lib1511.o: lib1511.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1511_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1511-lib1511.o -MD -MP -MF $(DEPDIR)/lib1511-lib1511.Tpo -c -o lib1511-lib1511.o `test -f 'lib1511.c' || echo '$(srcdir)/'`lib1511.c
@@ -2774,19 +3056,19 @@ lib1511-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1511_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1511-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1511_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1511-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-lib1511-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1511_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1511-warnless.o -MD -MP -MF $(DEPDIR)/lib1511-warnless.Tpo -c -o lib1511-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1511-warnless.Tpo $(DEPDIR)/lib1511-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib1511-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib1511-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1511_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1511-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1511-warnless.Tpo -c -o ../../lib/lib1511-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1511-warnless.Tpo ../../lib/$(DEPDIR)/lib1511-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1511-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1511_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1511-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1511_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1511-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib1511-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1511_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1511-warnless.obj -MD -MP -MF $(DEPDIR)/lib1511-warnless.Tpo -c -o lib1511-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1511-warnless.Tpo $(DEPDIR)/lib1511-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib1511-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib1511-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1511_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1511-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1511-warnless.Tpo -c -o ../../lib/lib1511-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1511-warnless.Tpo ../../lib/$(DEPDIR)/lib1511-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1511-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1511_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1511-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1511_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1511-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib1512-lib1512.o: lib1512.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1512_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1512-lib1512.o -MD -MP -MF $(DEPDIR)/lib1512-lib1512.Tpo -c -o lib1512-lib1512.o `test -f 'lib1512.c' || echo '$(srcdir)/'`lib1512.c
 
 lib1512-lib1512.o: lib1512.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1512_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1512-lib1512.o -MD -MP -MF $(DEPDIR)/lib1512-lib1512.Tpo -c -o lib1512-lib1512.o `test -f 'lib1512.c' || echo '$(srcdir)/'`lib1512.c
@@ -2830,19 +3112,495 @@ lib1512-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1512_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1512-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1512_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1512-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-lib1512-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1512_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1512-warnless.o -MD -MP -MF $(DEPDIR)/lib1512-warnless.Tpo -c -o lib1512-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1512-warnless.Tpo $(DEPDIR)/lib1512-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib1512-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib1512-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1512_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1512-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1512-warnless.Tpo -c -o ../../lib/lib1512-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1512-warnless.Tpo ../../lib/$(DEPDIR)/lib1512-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1512-warnless.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1512_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1512-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+
+../../lib/lib1512-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1512_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1512-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1512-warnless.Tpo -c -o ../../lib/lib1512-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1512-warnless.Tpo ../../lib/$(DEPDIR)/lib1512-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1512-warnless.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1512_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1512-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+
+lib1513-lib1513.o: lib1513.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1513-lib1513.o -MD -MP -MF $(DEPDIR)/lib1513-lib1513.Tpo -c -o lib1513-lib1513.o `test -f 'lib1513.c' || echo '$(srcdir)/'`lib1513.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1513-lib1513.Tpo $(DEPDIR)/lib1513-lib1513.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1513.c' object='lib1513-lib1513.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1513-lib1513.o `test -f 'lib1513.c' || echo '$(srcdir)/'`lib1513.c
+
+lib1513-lib1513.obj: lib1513.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1513-lib1513.obj -MD -MP -MF $(DEPDIR)/lib1513-lib1513.Tpo -c -o lib1513-lib1513.obj `if test -f 'lib1513.c'; then $(CYGPATH_W) 'lib1513.c'; else $(CYGPATH_W) '$(srcdir)/lib1513.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1513-lib1513.Tpo $(DEPDIR)/lib1513-lib1513.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1513.c' object='lib1513-lib1513.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1513-lib1513.obj `if test -f 'lib1513.c'; then $(CYGPATH_W) 'lib1513.c'; else $(CYGPATH_W) '$(srcdir)/lib1513.c'; fi`
+
+lib1513-first.o: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1513-first.o -MD -MP -MF $(DEPDIR)/lib1513-first.Tpo -c -o lib1513-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1513-first.Tpo $(DEPDIR)/lib1513-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1513-first.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1513-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+
+lib1513-first.obj: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1513-first.obj -MD -MP -MF $(DEPDIR)/lib1513-first.Tpo -c -o lib1513-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1513-first.Tpo $(DEPDIR)/lib1513-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1513-first.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1513-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+
+lib1513-testutil.o: testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1513-testutil.o -MD -MP -MF $(DEPDIR)/lib1513-testutil.Tpo -c -o lib1513-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1513-testutil.Tpo $(DEPDIR)/lib1513-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='testutil.c' object='lib1513-testutil.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1513-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+
+lib1513-testutil.obj: testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1513-testutil.obj -MD -MP -MF $(DEPDIR)/lib1513-testutil.Tpo -c -o lib1513-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1513-testutil.Tpo $(DEPDIR)/lib1513-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='testutil.c' object='lib1513-testutil.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1513-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
+
+../../lib/lib1513-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1513-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1513-warnless.Tpo -c -o ../../lib/lib1513-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1513-warnless.Tpo ../../lib/$(DEPDIR)/lib1513-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1513-warnless.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1513-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+
+../../lib/lib1513-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1513-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1513-warnless.Tpo -c -o ../../lib/lib1513-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1513-warnless.Tpo ../../lib/$(DEPDIR)/lib1513-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1513-warnless.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1513-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+
+lib1514-lib1514.o: lib1514.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1514-lib1514.o -MD -MP -MF $(DEPDIR)/lib1514-lib1514.Tpo -c -o lib1514-lib1514.o `test -f 'lib1514.c' || echo '$(srcdir)/'`lib1514.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1514-lib1514.Tpo $(DEPDIR)/lib1514-lib1514.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1514.c' object='lib1514-lib1514.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1514-lib1514.o `test -f 'lib1514.c' || echo '$(srcdir)/'`lib1514.c
+
+lib1514-lib1514.obj: lib1514.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1514-lib1514.obj -MD -MP -MF $(DEPDIR)/lib1514-lib1514.Tpo -c -o lib1514-lib1514.obj `if test -f 'lib1514.c'; then $(CYGPATH_W) 'lib1514.c'; else $(CYGPATH_W) '$(srcdir)/lib1514.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1514-lib1514.Tpo $(DEPDIR)/lib1514-lib1514.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1514.c' object='lib1514-lib1514.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1514-lib1514.obj `if test -f 'lib1514.c'; then $(CYGPATH_W) 'lib1514.c'; else $(CYGPATH_W) '$(srcdir)/lib1514.c'; fi`
+
+lib1514-first.o: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1514-first.o -MD -MP -MF $(DEPDIR)/lib1514-first.Tpo -c -o lib1514-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1514-first.Tpo $(DEPDIR)/lib1514-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1514-first.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1514-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+
+lib1514-first.obj: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1514-first.obj -MD -MP -MF $(DEPDIR)/lib1514-first.Tpo -c -o lib1514-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1514-first.Tpo $(DEPDIR)/lib1514-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1514-first.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1514-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+
+lib1514-testutil.o: testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1514-testutil.o -MD -MP -MF $(DEPDIR)/lib1514-testutil.Tpo -c -o lib1514-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1514-testutil.Tpo $(DEPDIR)/lib1514-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='testutil.c' object='lib1514-testutil.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1514-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+
+lib1514-testutil.obj: testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1514-testutil.obj -MD -MP -MF $(DEPDIR)/lib1514-testutil.Tpo -c -o lib1514-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1514-testutil.Tpo $(DEPDIR)/lib1514-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='testutil.c' object='lib1514-testutil.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1514-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
+
+../../lib/lib1514-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1514-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1514-warnless.Tpo -c -o ../../lib/lib1514-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1514-warnless.Tpo ../../lib/$(DEPDIR)/lib1514-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1514-warnless.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1514-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+
+../../lib/lib1514-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1514-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1514-warnless.Tpo -c -o ../../lib/lib1514-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1514-warnless.Tpo ../../lib/$(DEPDIR)/lib1514-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1514-warnless.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1514-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+
+lib1515-lib1515.o: lib1515.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1515-lib1515.o -MD -MP -MF $(DEPDIR)/lib1515-lib1515.Tpo -c -o lib1515-lib1515.o `test -f 'lib1515.c' || echo '$(srcdir)/'`lib1515.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1515-lib1515.Tpo $(DEPDIR)/lib1515-lib1515.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1515.c' object='lib1515-lib1515.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1515-lib1515.o `test -f 'lib1515.c' || echo '$(srcdir)/'`lib1515.c
+
+lib1515-lib1515.obj: lib1515.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1515-lib1515.obj -MD -MP -MF $(DEPDIR)/lib1515-lib1515.Tpo -c -o lib1515-lib1515.obj `if test -f 'lib1515.c'; then $(CYGPATH_W) 'lib1515.c'; else $(CYGPATH_W) '$(srcdir)/lib1515.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1515-lib1515.Tpo $(DEPDIR)/lib1515-lib1515.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1515.c' object='lib1515-lib1515.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1515-lib1515.obj `if test -f 'lib1515.c'; then $(CYGPATH_W) 'lib1515.c'; else $(CYGPATH_W) '$(srcdir)/lib1515.c'; fi`
+
+lib1515-first.o: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1515-first.o -MD -MP -MF $(DEPDIR)/lib1515-first.Tpo -c -o lib1515-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1515-first.Tpo $(DEPDIR)/lib1515-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1515-first.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1515-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+
+lib1515-first.obj: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1515-first.obj -MD -MP -MF $(DEPDIR)/lib1515-first.Tpo -c -o lib1515-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1515-first.Tpo $(DEPDIR)/lib1515-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1515-first.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1515-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+
+lib1515-testutil.o: testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1515-testutil.o -MD -MP -MF $(DEPDIR)/lib1515-testutil.Tpo -c -o lib1515-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1515-testutil.Tpo $(DEPDIR)/lib1515-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='testutil.c' object='lib1515-testutil.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1515-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+
+lib1515-testutil.obj: testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1515-testutil.obj -MD -MP -MF $(DEPDIR)/lib1515-testutil.Tpo -c -o lib1515-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1515-testutil.Tpo $(DEPDIR)/lib1515-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='testutil.c' object='lib1515-testutil.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1515-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
+
+../../lib/lib1515-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1515-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1515-warnless.Tpo -c -o ../../lib/lib1515-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1515-warnless.Tpo ../../lib/$(DEPDIR)/lib1515-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1515-warnless.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1515-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+
+../../lib/lib1515-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1515-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1515-warnless.Tpo -c -o ../../lib/lib1515-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1515-warnless.Tpo ../../lib/$(DEPDIR)/lib1515-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1515-warnless.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1515-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+
+lib1520-lib1520.o: lib1520.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1520_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1520-lib1520.o -MD -MP -MF $(DEPDIR)/lib1520-lib1520.Tpo -c -o lib1520-lib1520.o `test -f 'lib1520.c' || echo '$(srcdir)/'`lib1520.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1520-lib1520.Tpo $(DEPDIR)/lib1520-lib1520.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1520.c' object='lib1520-lib1520.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1520_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1520-lib1520.o `test -f 'lib1520.c' || echo '$(srcdir)/'`lib1520.c
+
+lib1520-lib1520.obj: lib1520.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1520_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1520-lib1520.obj -MD -MP -MF $(DEPDIR)/lib1520-lib1520.Tpo -c -o lib1520-lib1520.obj `if test -f 'lib1520.c'; then $(CYGPATH_W) 'lib1520.c'; else $(CYGPATH_W) '$(srcdir)/lib1520.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1520-lib1520.Tpo $(DEPDIR)/lib1520-lib1520.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1520.c' object='lib1520-lib1520.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1520_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1520-lib1520.obj `if test -f 'lib1520.c'; then $(CYGPATH_W) 'lib1520.c'; else $(CYGPATH_W) '$(srcdir)/lib1520.c'; fi`
+
+lib1520-first.o: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1520_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1520-first.o -MD -MP -MF $(DEPDIR)/lib1520-first.Tpo -c -o lib1520-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1520-first.Tpo $(DEPDIR)/lib1520-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1520-first.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1520_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1520-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+
+lib1520-first.obj: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1520_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1520-first.obj -MD -MP -MF $(DEPDIR)/lib1520-first.Tpo -c -o lib1520-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1520-first.Tpo $(DEPDIR)/lib1520-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1520-first.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1520_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1520-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+
+lib1525-lib1525.o: lib1525.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1525-lib1525.o -MD -MP -MF $(DEPDIR)/lib1525-lib1525.Tpo -c -o lib1525-lib1525.o `test -f 'lib1525.c' || echo '$(srcdir)/'`lib1525.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1525-lib1525.Tpo $(DEPDIR)/lib1525-lib1525.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1525.c' object='lib1525-lib1525.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1525-lib1525.o `test -f 'lib1525.c' || echo '$(srcdir)/'`lib1525.c
+
+lib1525-lib1525.obj: lib1525.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1525-lib1525.obj -MD -MP -MF $(DEPDIR)/lib1525-lib1525.Tpo -c -o lib1525-lib1525.obj `if test -f 'lib1525.c'; then $(CYGPATH_W) 'lib1525.c'; else $(CYGPATH_W) '$(srcdir)/lib1525.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1525-lib1525.Tpo $(DEPDIR)/lib1525-lib1525.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1525.c' object='lib1525-lib1525.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1525-lib1525.obj `if test -f 'lib1525.c'; then $(CYGPATH_W) 'lib1525.c'; else $(CYGPATH_W) '$(srcdir)/lib1525.c'; fi`
+
+lib1525-first.o: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1525-first.o -MD -MP -MF $(DEPDIR)/lib1525-first.Tpo -c -o lib1525-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1525-first.Tpo $(DEPDIR)/lib1525-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1525-first.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1512_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1512-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1525-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 
 
-lib1512-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1512_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1512-warnless.obj -MD -MP -MF $(DEPDIR)/lib1512-warnless.Tpo -c -o lib1512-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1512-warnless.Tpo $(DEPDIR)/lib1512-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib1512-warnless.obj' libtool=no @AMDEPBACKSLASH@
+lib1525-first.obj: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1525-first.obj -MD -MP -MF $(DEPDIR)/lib1525-first.Tpo -c -o lib1525-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1525-first.Tpo $(DEPDIR)/lib1525-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1525-first.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1512_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1512-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1525-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+
+lib1525-testutil.o: testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1525-testutil.o -MD -MP -MF $(DEPDIR)/lib1525-testutil.Tpo -c -o lib1525-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1525-testutil.Tpo $(DEPDIR)/lib1525-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='testutil.c' object='lib1525-testutil.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1525-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+
+lib1525-testutil.obj: testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1525-testutil.obj -MD -MP -MF $(DEPDIR)/lib1525-testutil.Tpo -c -o lib1525-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1525-testutil.Tpo $(DEPDIR)/lib1525-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='testutil.c' object='lib1525-testutil.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1525-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
+
+../../lib/lib1525-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1525-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1525-warnless.Tpo -c -o ../../lib/lib1525-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1525-warnless.Tpo ../../lib/$(DEPDIR)/lib1525-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1525-warnless.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1525-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+
+../../lib/lib1525-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1525-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1525-warnless.Tpo -c -o ../../lib/lib1525-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1525-warnless.Tpo ../../lib/$(DEPDIR)/lib1525-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1525-warnless.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1525-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+
+lib1526-lib1526.o: lib1526.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1526-lib1526.o -MD -MP -MF $(DEPDIR)/lib1526-lib1526.Tpo -c -o lib1526-lib1526.o `test -f 'lib1526.c' || echo '$(srcdir)/'`lib1526.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1526-lib1526.Tpo $(DEPDIR)/lib1526-lib1526.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1526.c' object='lib1526-lib1526.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1526-lib1526.o `test -f 'lib1526.c' || echo '$(srcdir)/'`lib1526.c
+
+lib1526-lib1526.obj: lib1526.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1526-lib1526.obj -MD -MP -MF $(DEPDIR)/lib1526-lib1526.Tpo -c -o lib1526-lib1526.obj `if test -f 'lib1526.c'; then $(CYGPATH_W) 'lib1526.c'; else $(CYGPATH_W) '$(srcdir)/lib1526.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1526-lib1526.Tpo $(DEPDIR)/lib1526-lib1526.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1526.c' object='lib1526-lib1526.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1526-lib1526.obj `if test -f 'lib1526.c'; then $(CYGPATH_W) 'lib1526.c'; else $(CYGPATH_W) '$(srcdir)/lib1526.c'; fi`
+
+lib1526-first.o: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1526-first.o -MD -MP -MF $(DEPDIR)/lib1526-first.Tpo -c -o lib1526-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1526-first.Tpo $(DEPDIR)/lib1526-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1526-first.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1526-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+
+lib1526-first.obj: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1526-first.obj -MD -MP -MF $(DEPDIR)/lib1526-first.Tpo -c -o lib1526-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1526-first.Tpo $(DEPDIR)/lib1526-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1526-first.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1526-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+
+lib1526-testutil.o: testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1526-testutil.o -MD -MP -MF $(DEPDIR)/lib1526-testutil.Tpo -c -o lib1526-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1526-testutil.Tpo $(DEPDIR)/lib1526-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='testutil.c' object='lib1526-testutil.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1526-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+
+lib1526-testutil.obj: testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1526-testutil.obj -MD -MP -MF $(DEPDIR)/lib1526-testutil.Tpo -c -o lib1526-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1526-testutil.Tpo $(DEPDIR)/lib1526-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='testutil.c' object='lib1526-testutil.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1526-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
+
+../../lib/lib1526-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1526-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1526-warnless.Tpo -c -o ../../lib/lib1526-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1526-warnless.Tpo ../../lib/$(DEPDIR)/lib1526-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1526-warnless.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1526-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+
+../../lib/lib1526-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1526-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1526-warnless.Tpo -c -o ../../lib/lib1526-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1526-warnless.Tpo ../../lib/$(DEPDIR)/lib1526-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1526-warnless.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1526-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+
+lib1527-lib1527.o: lib1527.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1527-lib1527.o -MD -MP -MF $(DEPDIR)/lib1527-lib1527.Tpo -c -o lib1527-lib1527.o `test -f 'lib1527.c' || echo '$(srcdir)/'`lib1527.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1527-lib1527.Tpo $(DEPDIR)/lib1527-lib1527.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1527.c' object='lib1527-lib1527.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1527-lib1527.o `test -f 'lib1527.c' || echo '$(srcdir)/'`lib1527.c
+
+lib1527-lib1527.obj: lib1527.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1527-lib1527.obj -MD -MP -MF $(DEPDIR)/lib1527-lib1527.Tpo -c -o lib1527-lib1527.obj `if test -f 'lib1527.c'; then $(CYGPATH_W) 'lib1527.c'; else $(CYGPATH_W) '$(srcdir)/lib1527.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1527-lib1527.Tpo $(DEPDIR)/lib1527-lib1527.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1527.c' object='lib1527-lib1527.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1527-lib1527.obj `if test -f 'lib1527.c'; then $(CYGPATH_W) 'lib1527.c'; else $(CYGPATH_W) '$(srcdir)/lib1527.c'; fi`
+
+lib1527-first.o: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1527-first.o -MD -MP -MF $(DEPDIR)/lib1527-first.Tpo -c -o lib1527-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1527-first.Tpo $(DEPDIR)/lib1527-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1527-first.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1527-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+
+lib1527-first.obj: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1527-first.obj -MD -MP -MF $(DEPDIR)/lib1527-first.Tpo -c -o lib1527-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1527-first.Tpo $(DEPDIR)/lib1527-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1527-first.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1527-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+
+lib1527-testutil.o: testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1527-testutil.o -MD -MP -MF $(DEPDIR)/lib1527-testutil.Tpo -c -o lib1527-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1527-testutil.Tpo $(DEPDIR)/lib1527-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='testutil.c' object='lib1527-testutil.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1527-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+
+lib1527-testutil.obj: testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1527-testutil.obj -MD -MP -MF $(DEPDIR)/lib1527-testutil.Tpo -c -o lib1527-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1527-testutil.Tpo $(DEPDIR)/lib1527-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='testutil.c' object='lib1527-testutil.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1527-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
+
+../../lib/lib1527-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1527-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1527-warnless.Tpo -c -o ../../lib/lib1527-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1527-warnless.Tpo ../../lib/$(DEPDIR)/lib1527-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1527-warnless.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1527-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+
+../../lib/lib1527-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1527-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1527-warnless.Tpo -c -o ../../lib/lib1527-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1527-warnless.Tpo ../../lib/$(DEPDIR)/lib1527-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1527-warnless.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1527-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+
+lib1528-lib1528.o: lib1528.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1528_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1528-lib1528.o -MD -MP -MF $(DEPDIR)/lib1528-lib1528.Tpo -c -o lib1528-lib1528.o `test -f 'lib1528.c' || echo '$(srcdir)/'`lib1528.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1528-lib1528.Tpo $(DEPDIR)/lib1528-lib1528.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1528.c' object='lib1528-lib1528.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1528_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1528-lib1528.o `test -f 'lib1528.c' || echo '$(srcdir)/'`lib1528.c
+
+lib1528-lib1528.obj: lib1528.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1528_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1528-lib1528.obj -MD -MP -MF $(DEPDIR)/lib1528-lib1528.Tpo -c -o lib1528-lib1528.obj `if test -f 'lib1528.c'; then $(CYGPATH_W) 'lib1528.c'; else $(CYGPATH_W) '$(srcdir)/lib1528.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1528-lib1528.Tpo $(DEPDIR)/lib1528-lib1528.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1528.c' object='lib1528-lib1528.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1528_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1528-lib1528.obj `if test -f 'lib1528.c'; then $(CYGPATH_W) 'lib1528.c'; else $(CYGPATH_W) '$(srcdir)/lib1528.c'; fi`
+
+lib1528-first.o: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1528_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1528-first.o -MD -MP -MF $(DEPDIR)/lib1528-first.Tpo -c -o lib1528-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1528-first.Tpo $(DEPDIR)/lib1528-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1528-first.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1528_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1528-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+
+lib1528-first.obj: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1528_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1528-first.obj -MD -MP -MF $(DEPDIR)/lib1528-first.Tpo -c -o lib1528-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1528-first.Tpo $(DEPDIR)/lib1528-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1528-first.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1528_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1528-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+
+lib1528-testutil.o: testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1528_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1528-testutil.o -MD -MP -MF $(DEPDIR)/lib1528-testutil.Tpo -c -o lib1528-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1528-testutil.Tpo $(DEPDIR)/lib1528-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='testutil.c' object='lib1528-testutil.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1528_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1528-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+
+lib1528-testutil.obj: testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1528_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1528-testutil.obj -MD -MP -MF $(DEPDIR)/lib1528-testutil.Tpo -c -o lib1528-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1528-testutil.Tpo $(DEPDIR)/lib1528-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='testutil.c' object='lib1528-testutil.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1528_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1528-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
+
+../../lib/lib1528-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1528_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1528-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1528-warnless.Tpo -c -o ../../lib/lib1528-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1528-warnless.Tpo ../../lib/$(DEPDIR)/lib1528-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1528-warnless.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1528_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1528-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+
+../../lib/lib1528-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1528_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1528-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1528-warnless.Tpo -c -o ../../lib/lib1528-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1528-warnless.Tpo ../../lib/$(DEPDIR)/lib1528-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1528-warnless.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1528_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1528-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+
+lib1529-lib1529.o: lib1529.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1529-lib1529.o -MD -MP -MF $(DEPDIR)/lib1529-lib1529.Tpo -c -o lib1529-lib1529.o `test -f 'lib1529.c' || echo '$(srcdir)/'`lib1529.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1529-lib1529.Tpo $(DEPDIR)/lib1529-lib1529.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1529.c' object='lib1529-lib1529.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1529-lib1529.o `test -f 'lib1529.c' || echo '$(srcdir)/'`lib1529.c
+
+lib1529-lib1529.obj: lib1529.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1529-lib1529.obj -MD -MP -MF $(DEPDIR)/lib1529-lib1529.Tpo -c -o lib1529-lib1529.obj `if test -f 'lib1529.c'; then $(CYGPATH_W) 'lib1529.c'; else $(CYGPATH_W) '$(srcdir)/lib1529.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1529-lib1529.Tpo $(DEPDIR)/lib1529-lib1529.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1529.c' object='lib1529-lib1529.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1529-lib1529.obj `if test -f 'lib1529.c'; then $(CYGPATH_W) 'lib1529.c'; else $(CYGPATH_W) '$(srcdir)/lib1529.c'; fi`
+
+lib1529-first.o: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1529-first.o -MD -MP -MF $(DEPDIR)/lib1529-first.Tpo -c -o lib1529-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1529-first.Tpo $(DEPDIR)/lib1529-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1529-first.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1529-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+
+lib1529-first.obj: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1529-first.obj -MD -MP -MF $(DEPDIR)/lib1529-first.Tpo -c -o lib1529-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1529-first.Tpo $(DEPDIR)/lib1529-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1529-first.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1529-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+
+lib1529-testutil.o: testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1529-testutil.o -MD -MP -MF $(DEPDIR)/lib1529-testutil.Tpo -c -o lib1529-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1529-testutil.Tpo $(DEPDIR)/lib1529-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='testutil.c' object='lib1529-testutil.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1529-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+
+lib1529-testutil.obj: testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1529-testutil.obj -MD -MP -MF $(DEPDIR)/lib1529-testutil.Tpo -c -o lib1529-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1529-testutil.Tpo $(DEPDIR)/lib1529-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='testutil.c' object='lib1529-testutil.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1529-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
+
+../../lib/lib1529-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1529-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1529-warnless.Tpo -c -o ../../lib/lib1529-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1529-warnless.Tpo ../../lib/$(DEPDIR)/lib1529-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1529-warnless.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1529-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+
+../../lib/lib1529-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1529-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1529-warnless.Tpo -c -o ../../lib/lib1529-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1529-warnless.Tpo ../../lib/$(DEPDIR)/lib1529-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1529-warnless.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1529-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib1900-lib1900.o: lib1900.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1900_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1900-lib1900.o -MD -MP -MF $(DEPDIR)/lib1900-lib1900.Tpo -c -o lib1900-lib1900.o `test -f 'lib1900.c' || echo '$(srcdir)/'`lib1900.c
 
 lib1900-lib1900.o: lib1900.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1900_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1900-lib1900.o -MD -MP -MF $(DEPDIR)/lib1900-lib1900.Tpo -c -o lib1900-lib1900.o `test -f 'lib1900.c' || echo '$(srcdir)/'`lib1900.c
@@ -2886,19 +3644,19 @@ lib1900-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1900_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1900-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1900_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1900-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-lib1900-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1900_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1900-warnless.o -MD -MP -MF $(DEPDIR)/lib1900-warnless.Tpo -c -o lib1900-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1900-warnless.Tpo $(DEPDIR)/lib1900-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib1900-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib1900-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1900_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1900-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1900-warnless.Tpo -c -o ../../lib/lib1900-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1900-warnless.Tpo ../../lib/$(DEPDIR)/lib1900-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1900-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1900_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1900-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1900_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1900-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib1900-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1900_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1900-warnless.obj -MD -MP -MF $(DEPDIR)/lib1900-warnless.Tpo -c -o lib1900-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1900-warnless.Tpo $(DEPDIR)/lib1900-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib1900-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib1900-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1900_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1900-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1900-warnless.Tpo -c -o ../../lib/lib1900-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1900-warnless.Tpo ../../lib/$(DEPDIR)/lib1900-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1900-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1900_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1900-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1900_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1900-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib2033-libntlmconnect.o: libntlmconnect.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib2033_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib2033-libntlmconnect.o -MD -MP -MF $(DEPDIR)/lib2033-libntlmconnect.Tpo -c -o lib2033-libntlmconnect.o `test -f 'libntlmconnect.c' || echo '$(srcdir)/'`libntlmconnect.c
 
 lib2033-libntlmconnect.o: libntlmconnect.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib2033_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib2033-libntlmconnect.o -MD -MP -MF $(DEPDIR)/lib2033-libntlmconnect.Tpo -c -o lib2033-libntlmconnect.o `test -f 'libntlmconnect.c' || echo '$(srcdir)/'`libntlmconnect.c
@@ -2942,19 +3700,19 @@ lib2033-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib2033_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib2033-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib2033_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib2033-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-lib2033-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib2033_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib2033-warnless.o -MD -MP -MF $(DEPDIR)/lib2033-warnless.Tpo -c -o lib2033-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib2033-warnless.Tpo $(DEPDIR)/lib2033-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib2033-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib2033-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib2033_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib2033-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib2033-warnless.Tpo -c -o ../../lib/lib2033-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib2033-warnless.Tpo ../../lib/$(DEPDIR)/lib2033-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib2033-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib2033_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib2033-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib2033_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib2033-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib2033-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib2033_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib2033-warnless.obj -MD -MP -MF $(DEPDIR)/lib2033-warnless.Tpo -c -o lib2033-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib2033-warnless.Tpo $(DEPDIR)/lib2033-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib2033-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib2033-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib2033_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib2033-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib2033-warnless.Tpo -c -o ../../lib/lib2033-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib2033-warnless.Tpo ../../lib/$(DEPDIR)/lib2033-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib2033-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib2033_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib2033-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib2033_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib2033-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib500-lib500.o: lib500.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib500_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib500-lib500.o -MD -MP -MF $(DEPDIR)/lib500-lib500.Tpo -c -o lib500-lib500.o `test -f 'lib500.c' || echo '$(srcdir)/'`lib500.c
 
 lib500-lib500.o: lib500.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib500_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib500-lib500.o -MD -MP -MF $(DEPDIR)/lib500-lib500.Tpo -c -o lib500-lib500.o `test -f 'lib500.c' || echo '$(srcdir)/'`lib500.c
@@ -3082,19 +3840,19 @@ lib502-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib502-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib502-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-lib502-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib502-warnless.o -MD -MP -MF $(DEPDIR)/lib502-warnless.Tpo -c -o lib502-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib502-warnless.Tpo $(DEPDIR)/lib502-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib502-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib502-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib502-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib502-warnless.Tpo -c -o ../../lib/lib502-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib502-warnless.Tpo ../../lib/$(DEPDIR)/lib502-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib502-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib502-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib502-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib502-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib502-warnless.obj -MD -MP -MF $(DEPDIR)/lib502-warnless.Tpo -c -o lib502-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib502-warnless.Tpo $(DEPDIR)/lib502-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib502-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib502-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib502-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib502-warnless.Tpo -c -o ../../lib/lib502-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib502-warnless.Tpo ../../lib/$(DEPDIR)/lib502-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib502-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib502-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib502-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib503-lib503.o: lib503.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib503-lib503.o -MD -MP -MF $(DEPDIR)/lib503-lib503.Tpo -c -o lib503-lib503.o `test -f 'lib503.c' || echo '$(srcdir)/'`lib503.c
 
 lib503-lib503.o: lib503.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib503-lib503.o -MD -MP -MF $(DEPDIR)/lib503-lib503.Tpo -c -o lib503-lib503.o `test -f 'lib503.c' || echo '$(srcdir)/'`lib503.c
@@ -3138,19 +3896,19 @@ lib503-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib503-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib503-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-lib503-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib503-warnless.o -MD -MP -MF $(DEPDIR)/lib503-warnless.Tpo -c -o lib503-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib503-warnless.Tpo $(DEPDIR)/lib503-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib503-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib503-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib503-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib503-warnless.Tpo -c -o ../../lib/lib503-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib503-warnless.Tpo ../../lib/$(DEPDIR)/lib503-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib503-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib503-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib503-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib503-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib503-warnless.obj -MD -MP -MF $(DEPDIR)/lib503-warnless.Tpo -c -o lib503-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib503-warnless.Tpo $(DEPDIR)/lib503-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib503-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib503-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib503-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib503-warnless.Tpo -c -o ../../lib/lib503-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib503-warnless.Tpo ../../lib/$(DEPDIR)/lib503-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib503-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib503-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib503-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib504-lib504.o: lib504.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib504-lib504.o -MD -MP -MF $(DEPDIR)/lib504-lib504.Tpo -c -o lib504-lib504.o `test -f 'lib504.c' || echo '$(srcdir)/'`lib504.c
 
 lib504-lib504.o: lib504.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib504-lib504.o -MD -MP -MF $(DEPDIR)/lib504-lib504.Tpo -c -o lib504-lib504.o `test -f 'lib504.c' || echo '$(srcdir)/'`lib504.c
@@ -3194,19 +3952,19 @@ lib504-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib504-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib504-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-lib504-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib504-warnless.o -MD -MP -MF $(DEPDIR)/lib504-warnless.Tpo -c -o lib504-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib504-warnless.Tpo $(DEPDIR)/lib504-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib504-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib504-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib504-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib504-warnless.Tpo -c -o ../../lib/lib504-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib504-warnless.Tpo ../../lib/$(DEPDIR)/lib504-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib504-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib504-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib504-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib504-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib504-warnless.obj -MD -MP -MF $(DEPDIR)/lib504-warnless.Tpo -c -o lib504-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib504-warnless.Tpo $(DEPDIR)/lib504-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib504-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib504-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib504-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib504-warnless.Tpo -c -o ../../lib/lib504-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib504-warnless.Tpo ../../lib/$(DEPDIR)/lib504-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib504-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib504-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib504-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib505-lib505.o: lib505.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib505-lib505.o -MD -MP -MF $(DEPDIR)/lib505-lib505.Tpo -c -o lib505-lib505.o `test -f 'lib505.c' || echo '$(srcdir)/'`lib505.c
 
 lib505-lib505.o: lib505.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib505-lib505.o -MD -MP -MF $(DEPDIR)/lib505-lib505.Tpo -c -o lib505-lib505.o `test -f 'lib505.c' || echo '$(srcdir)/'`lib505.c
@@ -3306,19 +4064,19 @@ lib507-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib507-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib507-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-lib507-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib507-warnless.o -MD -MP -MF $(DEPDIR)/lib507-warnless.Tpo -c -o lib507-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib507-warnless.Tpo $(DEPDIR)/lib507-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib507-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib507-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib507-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib507-warnless.Tpo -c -o ../../lib/lib507-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib507-warnless.Tpo ../../lib/$(DEPDIR)/lib507-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib507-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib507-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib507-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib507-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib507-warnless.obj -MD -MP -MF $(DEPDIR)/lib507-warnless.Tpo -c -o lib507-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib507-warnless.Tpo $(DEPDIR)/lib507-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib507-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib507-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib507-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib507-warnless.Tpo -c -o ../../lib/lib507-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib507-warnless.Tpo ../../lib/$(DEPDIR)/lib507-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib507-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib507-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib507-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib508-lib508.o: lib508.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib508-lib508.o -MD -MP -MF $(DEPDIR)/lib508-lib508.Tpo -c -o lib508-lib508.o `test -f 'lib508.c' || echo '$(srcdir)/'`lib508.c
 
 lib508-lib508.o: lib508.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib508-lib508.o -MD -MP -MF $(DEPDIR)/lib508-lib508.Tpo -c -o lib508-lib508.o `test -f 'lib508.c' || echo '$(srcdir)/'`lib508.c
@@ -3628,19 +4386,19 @@ lib518-first.obj: first.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib518_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib518-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib518_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib518-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
 
-lib518-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib518_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib518-warnless.o -MD -MP -MF $(DEPDIR)/lib518-warnless.Tpo -c -o lib518-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib518-warnless.Tpo $(DEPDIR)/lib518-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib518-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib518-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib518_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib518-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib518-warnless.Tpo -c -o ../../lib/lib518-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib518-warnless.Tpo ../../lib/$(DEPDIR)/lib518-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib518-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib518_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib518-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib518_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib518-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib518-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib518_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib518-warnless.obj -MD -MP -MF $(DEPDIR)/lib518-warnless.Tpo -c -o lib518-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib518-warnless.Tpo $(DEPDIR)/lib518-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib518-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib518-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib518_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib518-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib518-warnless.Tpo -c -o ../../lib/lib518-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib518-warnless.Tpo ../../lib/$(DEPDIR)/lib518-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib518-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib518_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib518-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib518_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib518-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib519-lib519.o: lib519.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib519_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib519-lib519.o -MD -MP -MF $(DEPDIR)/lib519-lib519.Tpo -c -o lib519-lib519.o `test -f 'lib519.c' || echo '$(srcdir)/'`lib519.c
 
 lib519-lib519.o: lib519.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib519_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib519-lib519.o -MD -MP -MF $(DEPDIR)/lib519-lib519.Tpo -c -o lib519-lib519.o `test -f 'lib519.c' || echo '$(srcdir)/'`lib519.c
@@ -3824,19 +4582,19 @@ lib525-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib525-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib525-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-lib525-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib525-warnless.o -MD -MP -MF $(DEPDIR)/lib525-warnless.Tpo -c -o lib525-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib525-warnless.Tpo $(DEPDIR)/lib525-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib525-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib525-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib525-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib525-warnless.Tpo -c -o ../../lib/lib525-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib525-warnless.Tpo ../../lib/$(DEPDIR)/lib525-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib525-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib525-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib525-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib525-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib525-warnless.obj -MD -MP -MF $(DEPDIR)/lib525-warnless.Tpo -c -o lib525-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib525-warnless.Tpo $(DEPDIR)/lib525-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib525-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib525-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib525-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib525-warnless.Tpo -c -o ../../lib/lib525-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib525-warnless.Tpo ../../lib/$(DEPDIR)/lib525-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib525-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib525-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib525-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib526-lib526.o: lib526.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib526-lib526.o -MD -MP -MF $(DEPDIR)/lib526-lib526.Tpo -c -o lib526-lib526.o `test -f 'lib526.c' || echo '$(srcdir)/'`lib526.c
 
 lib526-lib526.o: lib526.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib526-lib526.o -MD -MP -MF $(DEPDIR)/lib526-lib526.Tpo -c -o lib526-lib526.o `test -f 'lib526.c' || echo '$(srcdir)/'`lib526.c
@@ -3880,19 +4638,19 @@ lib526-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib526-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib526-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-lib526-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib526-warnless.o -MD -MP -MF $(DEPDIR)/lib526-warnless.Tpo -c -o lib526-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib526-warnless.Tpo $(DEPDIR)/lib526-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib526-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib526-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib526-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib526-warnless.Tpo -c -o ../../lib/lib526-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib526-warnless.Tpo ../../lib/$(DEPDIR)/lib526-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib526-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib526-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib526-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib526-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib526-warnless.obj -MD -MP -MF $(DEPDIR)/lib526-warnless.Tpo -c -o lib526-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib526-warnless.Tpo $(DEPDIR)/lib526-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib526-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib526-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib526-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib526-warnless.Tpo -c -o ../../lib/lib526-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib526-warnless.Tpo ../../lib/$(DEPDIR)/lib526-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib526-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib526-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib526-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib527-lib526.o: lib526.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib527-lib526.o -MD -MP -MF $(DEPDIR)/lib527-lib526.Tpo -c -o lib527-lib526.o `test -f 'lib526.c' || echo '$(srcdir)/'`lib526.c
 
 lib527-lib526.o: lib526.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib527-lib526.o -MD -MP -MF $(DEPDIR)/lib527-lib526.Tpo -c -o lib527-lib526.o `test -f 'lib526.c' || echo '$(srcdir)/'`lib526.c
@@ -3936,19 +4694,19 @@ lib527-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib527-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib527-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-lib527-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib527-warnless.o -MD -MP -MF $(DEPDIR)/lib527-warnless.Tpo -c -o lib527-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib527-warnless.Tpo $(DEPDIR)/lib527-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib527-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib527-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib527-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib527-warnless.Tpo -c -o ../../lib/lib527-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib527-warnless.Tpo ../../lib/$(DEPDIR)/lib527-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib527-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib527-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib527-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib527-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib527-warnless.obj -MD -MP -MF $(DEPDIR)/lib527-warnless.Tpo -c -o lib527-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib527-warnless.Tpo $(DEPDIR)/lib527-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib527-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib527-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib527-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib527-warnless.Tpo -c -o ../../lib/lib527-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib527-warnless.Tpo ../../lib/$(DEPDIR)/lib527-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib527-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib527-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib527-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib529-lib525.o: lib525.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib529-lib525.o -MD -MP -MF $(DEPDIR)/lib529-lib525.Tpo -c -o lib529-lib525.o `test -f 'lib525.c' || echo '$(srcdir)/'`lib525.c
 
 lib529-lib525.o: lib525.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib529-lib525.o -MD -MP -MF $(DEPDIR)/lib529-lib525.Tpo -c -o lib529-lib525.o `test -f 'lib525.c' || echo '$(srcdir)/'`lib525.c
@@ -3992,19 +4750,19 @@ lib529-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib529-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib529-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-lib529-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib529-warnless.o -MD -MP -MF $(DEPDIR)/lib529-warnless.Tpo -c -o lib529-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib529-warnless.Tpo $(DEPDIR)/lib529-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib529-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib529-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib529-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib529-warnless.Tpo -c -o ../../lib/lib529-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib529-warnless.Tpo ../../lib/$(DEPDIR)/lib529-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib529-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib529-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib529-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib529-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib529-warnless.obj -MD -MP -MF $(DEPDIR)/lib529-warnless.Tpo -c -o lib529-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib529-warnless.Tpo $(DEPDIR)/lib529-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib529-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib529-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib529-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib529-warnless.Tpo -c -o ../../lib/lib529-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib529-warnless.Tpo ../../lib/$(DEPDIR)/lib529-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib529-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib529-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib529-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib530-lib530.o: lib530.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib530-lib530.o -MD -MP -MF $(DEPDIR)/lib530-lib530.Tpo -c -o lib530-lib530.o `test -f 'lib530.c' || echo '$(srcdir)/'`lib530.c
 
 lib530-lib530.o: lib530.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib530-lib530.o -MD -MP -MF $(DEPDIR)/lib530-lib530.Tpo -c -o lib530-lib530.o `test -f 'lib530.c' || echo '$(srcdir)/'`lib530.c
@@ -4048,19 +4806,19 @@ lib530-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib530-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib530-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-lib530-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib530-warnless.o -MD -MP -MF $(DEPDIR)/lib530-warnless.Tpo -c -o lib530-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib530-warnless.Tpo $(DEPDIR)/lib530-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib530-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib530-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib530-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib530-warnless.Tpo -c -o ../../lib/lib530-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib530-warnless.Tpo ../../lib/$(DEPDIR)/lib530-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib530-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib530-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib530-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib530-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib530-warnless.obj -MD -MP -MF $(DEPDIR)/lib530-warnless.Tpo -c -o lib530-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib530-warnless.Tpo $(DEPDIR)/lib530-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib530-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib530-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib530-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib530-warnless.Tpo -c -o ../../lib/lib530-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib530-warnless.Tpo ../../lib/$(DEPDIR)/lib530-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib530-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib530-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib530-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib532-lib526.o: lib526.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib532_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib532-lib526.o -MD -MP -MF $(DEPDIR)/lib532-lib526.Tpo -c -o lib532-lib526.o `test -f 'lib526.c' || echo '$(srcdir)/'`lib526.c
 
 lib532-lib526.o: lib526.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib532_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib532-lib526.o -MD -MP -MF $(DEPDIR)/lib532-lib526.Tpo -c -o lib532-lib526.o `test -f 'lib526.c' || echo '$(srcdir)/'`lib526.c
@@ -4104,19 +4862,19 @@ lib532-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib532_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib532-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib532_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib532-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-lib532-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib532_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib532-warnless.o -MD -MP -MF $(DEPDIR)/lib532-warnless.Tpo -c -o lib532-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib532-warnless.Tpo $(DEPDIR)/lib532-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib532-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib532-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib532_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib532-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib532-warnless.Tpo -c -o ../../lib/lib532-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib532-warnless.Tpo ../../lib/$(DEPDIR)/lib532-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib532-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib532_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib532-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib532_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib532-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib532-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib532_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib532-warnless.obj -MD -MP -MF $(DEPDIR)/lib532-warnless.Tpo -c -o lib532-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib532-warnless.Tpo $(DEPDIR)/lib532-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib532-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib532-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib532_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib532-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib532-warnless.Tpo -c -o ../../lib/lib532-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib532-warnless.Tpo ../../lib/$(DEPDIR)/lib532-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib532-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib532_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib532-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib532_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib532-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib533-lib533.o: lib533.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib533-lib533.o -MD -MP -MF $(DEPDIR)/lib533-lib533.Tpo -c -o lib533-lib533.o `test -f 'lib533.c' || echo '$(srcdir)/'`lib533.c
 
 lib533-lib533.o: lib533.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib533-lib533.o -MD -MP -MF $(DEPDIR)/lib533-lib533.Tpo -c -o lib533-lib533.o `test -f 'lib533.c' || echo '$(srcdir)/'`lib533.c
@@ -4160,19 +4918,19 @@ lib533-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib533-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib533-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-lib533-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib533-warnless.o -MD -MP -MF $(DEPDIR)/lib533-warnless.Tpo -c -o lib533-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib533-warnless.Tpo $(DEPDIR)/lib533-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib533-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib533-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib533-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib533-warnless.Tpo -c -o ../../lib/lib533-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib533-warnless.Tpo ../../lib/$(DEPDIR)/lib533-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib533-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib533-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib533-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib533-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib533-warnless.obj -MD -MP -MF $(DEPDIR)/lib533-warnless.Tpo -c -o lib533-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib533-warnless.Tpo $(DEPDIR)/lib533-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib533-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib533-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib533-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib533-warnless.Tpo -c -o ../../lib/lib533-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib533-warnless.Tpo ../../lib/$(DEPDIR)/lib533-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib533-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib533-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib533-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib536-lib536.o: lib536.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib536_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib536-lib536.o -MD -MP -MF $(DEPDIR)/lib536-lib536.Tpo -c -o lib536-lib536.o `test -f 'lib536.c' || echo '$(srcdir)/'`lib536.c
 
 lib536-lib536.o: lib536.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib536_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib536-lib536.o -MD -MP -MF $(DEPDIR)/lib536-lib536.Tpo -c -o lib536-lib536.o `test -f 'lib536.c' || echo '$(srcdir)/'`lib536.c
@@ -4216,19 +4974,19 @@ lib536-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib536_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib536-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib536_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib536-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-lib536-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib536_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib536-warnless.o -MD -MP -MF $(DEPDIR)/lib536-warnless.Tpo -c -o lib536-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib536-warnless.Tpo $(DEPDIR)/lib536-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib536-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib536-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib536_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib536-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib536-warnless.Tpo -c -o ../../lib/lib536-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib536-warnless.Tpo ../../lib/$(DEPDIR)/lib536-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib536-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib536_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib536-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib536_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib536-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib536-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib536_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib536-warnless.obj -MD -MP -MF $(DEPDIR)/lib536-warnless.Tpo -c -o lib536-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib536-warnless.Tpo $(DEPDIR)/lib536-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib536-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib536-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib536_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib536-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib536-warnless.Tpo -c -o ../../lib/lib536-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib536-warnless.Tpo ../../lib/$(DEPDIR)/lib536-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib536-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib536_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib536-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib536_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib536-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib537-lib537.o: lib537.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib537-lib537.o -MD -MP -MF $(DEPDIR)/lib537-lib537.Tpo -c -o lib537-lib537.o `test -f 'lib537.c' || echo '$(srcdir)/'`lib537.c
 
 lib537-lib537.o: lib537.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib537-lib537.o -MD -MP -MF $(DEPDIR)/lib537-lib537.Tpo -c -o lib537-lib537.o `test -f 'lib537.c' || echo '$(srcdir)/'`lib537.c
@@ -4258,19 +5016,19 @@ lib537-first.obj: first.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib537-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib537-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
 
-lib537-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib537-warnless.o -MD -MP -MF $(DEPDIR)/lib537-warnless.Tpo -c -o lib537-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib537-warnless.Tpo $(DEPDIR)/lib537-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib537-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib537-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib537-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib537-warnless.Tpo -c -o ../../lib/lib537-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib537-warnless.Tpo ../../lib/$(DEPDIR)/lib537-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib537-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib537-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib537-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib537-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib537-warnless.obj -MD -MP -MF $(DEPDIR)/lib537-warnless.Tpo -c -o lib537-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib537-warnless.Tpo $(DEPDIR)/lib537-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib537-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib537-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib537-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib537-warnless.Tpo -c -o ../../lib/lib537-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib537-warnless.Tpo ../../lib/$(DEPDIR)/lib537-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib537-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib537-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib537-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib539-lib539.o: lib539.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib539_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib539-lib539.o -MD -MP -MF $(DEPDIR)/lib539-lib539.Tpo -c -o lib539-lib539.o `test -f 'lib539.c' || echo '$(srcdir)/'`lib539.c
 
 lib539-lib539.o: lib539.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib539_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib539-lib539.o -MD -MP -MF $(DEPDIR)/lib539-lib539.Tpo -c -o lib539-lib539.o `test -f 'lib539.c' || echo '$(srcdir)/'`lib539.c
@@ -4342,19 +5100,19 @@ lib540-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib540_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib540-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib540_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib540-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-lib540-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib540_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib540-warnless.o -MD -MP -MF $(DEPDIR)/lib540-warnless.Tpo -c -o lib540-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib540-warnless.Tpo $(DEPDIR)/lib540-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib540-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib540-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib540_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib540-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib540-warnless.Tpo -c -o ../../lib/lib540-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib540-warnless.Tpo ../../lib/$(DEPDIR)/lib540-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib540-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib540_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib540-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib540_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib540-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib540-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib540_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib540-warnless.obj -MD -MP -MF $(DEPDIR)/lib540-warnless.Tpo -c -o lib540-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib540-warnless.Tpo $(DEPDIR)/lib540-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib540-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib540-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib540_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib540-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib540-warnless.Tpo -c -o ../../lib/lib540-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib540-warnless.Tpo ../../lib/$(DEPDIR)/lib540-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib540-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib540_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib540-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib540_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib540-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib541-lib541.o: lib541.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib541_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib541-lib541.o -MD -MP -MF $(DEPDIR)/lib541-lib541.Tpo -c -o lib541-lib541.o `test -f 'lib541.c' || echo '$(srcdir)/'`lib541.c
 
 lib541-lib541.o: lib541.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib541_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib541-lib541.o -MD -MP -MF $(DEPDIR)/lib541-lib541.Tpo -c -o lib541-lib541.o `test -f 'lib541.c' || echo '$(srcdir)/'`lib541.c
@@ -4608,19 +5366,19 @@ lib552-first.obj: first.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib552_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib552-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib552_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib552-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
 
-lib552-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib552_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib552-warnless.o -MD -MP -MF $(DEPDIR)/lib552-warnless.Tpo -c -o lib552-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib552-warnless.Tpo $(DEPDIR)/lib552-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib552-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib552-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib552_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib552-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib552-warnless.Tpo -c -o ../../lib/lib552-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib552-warnless.Tpo ../../lib/$(DEPDIR)/lib552-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib552-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib552_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib552-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib552_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib552-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib552-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib552_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib552-warnless.obj -MD -MP -MF $(DEPDIR)/lib552-warnless.Tpo -c -o lib552-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib552-warnless.Tpo $(DEPDIR)/lib552-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib552-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib552-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib552_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib552-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib552-warnless.Tpo -c -o ../../lib/lib552-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib552-warnless.Tpo ../../lib/$(DEPDIR)/lib552-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib552-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib552_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib552-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib552_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib552-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib553-lib553.o: lib553.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib553_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib553-lib553.o -MD -MP -MF $(DEPDIR)/lib553-lib553.Tpo -c -o lib553-lib553.o `test -f 'lib553.c' || echo '$(srcdir)/'`lib553.c
 
 lib553-lib553.o: lib553.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib553_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib553-lib553.o -MD -MP -MF $(DEPDIR)/lib553-lib553.Tpo -c -o lib553-lib553.o `test -f 'lib553.c' || echo '$(srcdir)/'`lib553.c
@@ -4720,19 +5478,19 @@ lib555-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib555_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib555-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib555_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib555-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-lib555-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib555_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib555-warnless.o -MD -MP -MF $(DEPDIR)/lib555-warnless.Tpo -c -o lib555-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib555-warnless.Tpo $(DEPDIR)/lib555-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib555-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib555-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib555_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib555-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib555-warnless.Tpo -c -o ../../lib/lib555-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib555-warnless.Tpo ../../lib/$(DEPDIR)/lib555-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib555-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib555_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib555-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib555_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib555-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib555-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib555_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib555-warnless.obj -MD -MP -MF $(DEPDIR)/lib555-warnless.Tpo -c -o lib555-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib555-warnless.Tpo $(DEPDIR)/lib555-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib555-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib555-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib555_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib555-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib555-warnless.Tpo -c -o ../../lib/lib555-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib555-warnless.Tpo ../../lib/$(DEPDIR)/lib555-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib555-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib555_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib555-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib555_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib555-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib556-lib556.o: lib556.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib556_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib556-lib556.o -MD -MP -MF $(DEPDIR)/lib556-lib556.Tpo -c -o lib556-lib556.o `test -f 'lib556.c' || echo '$(srcdir)/'`lib556.c
 
 lib556-lib556.o: lib556.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib556_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib556-lib556.o -MD -MP -MF $(DEPDIR)/lib556-lib556.Tpo -c -o lib556-lib556.o `test -f 'lib556.c' || echo '$(srcdir)/'`lib556.c
@@ -4762,6 +5520,20 @@ lib556-first.obj: first.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib556_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib556-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib556_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib556-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
 
+../../lib/lib556-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib556_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib556-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib556-warnless.Tpo -c -o ../../lib/lib556-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib556-warnless.Tpo ../../lib/$(DEPDIR)/lib556-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib556-warnless.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib556_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib556-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+
+../../lib/lib556-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib556_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib556-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib556-warnless.Tpo -c -o ../../lib/lib556-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib556-warnless.Tpo ../../lib/$(DEPDIR)/lib556-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib556-warnless.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib556_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib556-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+
 lib557-lib557.o: lib557.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib557_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib557-lib557.o -MD -MP -MF $(DEPDIR)/lib557-lib557.Tpo -c -o lib557-lib557.o `test -f 'lib557.c' || echo '$(srcdir)/'`lib557.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib557-lib557.Tpo $(DEPDIR)/lib557-lib557.Po
 lib557-lib557.o: lib557.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib557_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib557-lib557.o -MD -MP -MF $(DEPDIR)/lib557-lib557.Tpo -c -o lib557-lib557.o `test -f 'lib557.c' || echo '$(srcdir)/'`lib557.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib557-lib557.Tpo $(DEPDIR)/lib557-lib557.Po
@@ -4860,19 +5632,19 @@ lib560-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib560_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib560-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib560_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib560-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-lib560-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib560_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib560-warnless.o -MD -MP -MF $(DEPDIR)/lib560-warnless.Tpo -c -o lib560-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib560-warnless.Tpo $(DEPDIR)/lib560-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib560-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib560-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib560_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib560-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib560-warnless.Tpo -c -o ../../lib/lib560-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib560-warnless.Tpo ../../lib/$(DEPDIR)/lib560-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib560-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib560_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib560-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib560_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib560-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib560-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib560_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib560-warnless.obj -MD -MP -MF $(DEPDIR)/lib560-warnless.Tpo -c -o lib560-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib560-warnless.Tpo $(DEPDIR)/lib560-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib560-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib560-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib560_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib560-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib560-warnless.Tpo -c -o ../../lib/lib560-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib560-warnless.Tpo ../../lib/$(DEPDIR)/lib560-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib560-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib560_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib560-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib560_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib560-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib562-lib562.o: lib562.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib562_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib562-lib562.o -MD -MP -MF $(DEPDIR)/lib562-lib562.Tpo -c -o lib562-lib562.o `test -f 'lib562.c' || echo '$(srcdir)/'`lib562.c
 
 lib562-lib562.o: lib562.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib562_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib562-lib562.o -MD -MP -MF $(DEPDIR)/lib562-lib562.Tpo -c -o lib562-lib562.o `test -f 'lib562.c' || echo '$(srcdir)/'`lib562.c
@@ -4944,19 +5716,19 @@ lib564-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib564-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib564-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-lib564-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib564-warnless.o -MD -MP -MF $(DEPDIR)/lib564-warnless.Tpo -c -o lib564-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib564-warnless.Tpo $(DEPDIR)/lib564-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib564-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib564-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib564-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib564-warnless.Tpo -c -o ../../lib/lib564-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib564-warnless.Tpo ../../lib/$(DEPDIR)/lib564-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib564-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib564-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib564-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib564-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib564-warnless.obj -MD -MP -MF $(DEPDIR)/lib564-warnless.Tpo -c -o lib564-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib564-warnless.Tpo $(DEPDIR)/lib564-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib564-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib564-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib564-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib564-warnless.Tpo -c -o ../../lib/lib564-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib564-warnless.Tpo ../../lib/$(DEPDIR)/lib564-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib564-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib564-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib564-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib565-lib510.o: lib510.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib565-lib510.o -MD -MP -MF $(DEPDIR)/lib565-lib510.Tpo -c -o lib565-lib510.o `test -f 'lib510.c' || echo '$(srcdir)/'`lib510.c
 
 lib565-lib510.o: lib510.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib565-lib510.o -MD -MP -MF $(DEPDIR)/lib565-lib510.Tpo -c -o lib565-lib510.o `test -f 'lib510.c' || echo '$(srcdir)/'`lib510.c
@@ -5154,19 +5926,19 @@ lib571-first.obj: first.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib571_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib571-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib571_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib571-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
 
-lib571-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib571_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib571-warnless.o -MD -MP -MF $(DEPDIR)/lib571-warnless.Tpo -c -o lib571-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib571-warnless.Tpo $(DEPDIR)/lib571-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib571-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib571-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib571_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib571-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib571-warnless.Tpo -c -o ../../lib/lib571-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib571-warnless.Tpo ../../lib/$(DEPDIR)/lib571-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib571-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib571_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib571-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib571_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib571-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib571-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib571_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib571-warnless.obj -MD -MP -MF $(DEPDIR)/lib571-warnless.Tpo -c -o lib571-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib571-warnless.Tpo $(DEPDIR)/lib571-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib571-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib571-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib571_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib571-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib571-warnless.Tpo -c -o ../../lib/lib571-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib571-warnless.Tpo ../../lib/$(DEPDIR)/lib571-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib571-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib571_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib571-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib571_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib571-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib572-lib572.o: lib572.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib572_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib572-lib572.o -MD -MP -MF $(DEPDIR)/lib572-lib572.Tpo -c -o lib572-lib572.o `test -f 'lib572.c' || echo '$(srcdir)/'`lib572.c
 
 lib572-lib572.o: lib572.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib572_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib572-lib572.o -MD -MP -MF $(DEPDIR)/lib572-lib572.Tpo -c -o lib572-lib572.o `test -f 'lib572.c' || echo '$(srcdir)/'`lib572.c
@@ -5238,19 +6010,19 @@ lib573-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib573_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib573-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib573_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib573-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-lib573-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib573_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib573-warnless.o -MD -MP -MF $(DEPDIR)/lib573-warnless.Tpo -c -o lib573-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib573-warnless.Tpo $(DEPDIR)/lib573-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib573-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib573-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib573_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib573-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib573-warnless.Tpo -c -o ../../lib/lib573-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib573-warnless.Tpo ../../lib/$(DEPDIR)/lib573-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib573-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib573_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib573-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib573_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib573-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib573-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib573_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib573-warnless.obj -MD -MP -MF $(DEPDIR)/lib573-warnless.Tpo -c -o lib573-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib573-warnless.Tpo $(DEPDIR)/lib573-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib573-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib573-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib573_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib573-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib573-warnless.Tpo -c -o ../../lib/lib573-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib573-warnless.Tpo ../../lib/$(DEPDIR)/lib573-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib573-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib573_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib573-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib573_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib573-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib573-testtrace.o: testtrace.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib573_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib573-testtrace.o -MD -MP -MF $(DEPDIR)/lib573-testtrace.Tpo -c -o lib573-testtrace.o `test -f 'testtrace.c' || echo '$(srcdir)/'`testtrace.c
 
 lib573-testtrace.o: testtrace.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib573_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib573-testtrace.o -MD -MP -MF $(DEPDIR)/lib573-testtrace.Tpo -c -o lib573-testtrace.o `test -f 'testtrace.c' || echo '$(srcdir)/'`testtrace.c
@@ -5336,19 +6108,19 @@ lib575-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib575_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib575-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib575_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib575-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-lib575-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib575_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib575-warnless.o -MD -MP -MF $(DEPDIR)/lib575-warnless.Tpo -c -o lib575-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib575-warnless.Tpo $(DEPDIR)/lib575-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib575-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib575-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib575_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib575-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib575-warnless.Tpo -c -o ../../lib/lib575-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib575-warnless.Tpo ../../lib/$(DEPDIR)/lib575-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib575-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib575_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib575-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib575_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib575-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib575-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib575_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib575-warnless.obj -MD -MP -MF $(DEPDIR)/lib575-warnless.Tpo -c -o lib575-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib575-warnless.Tpo $(DEPDIR)/lib575-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib575-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib575-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib575_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib575-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib575-warnless.Tpo -c -o ../../lib/lib575-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib575-warnless.Tpo ../../lib/$(DEPDIR)/lib575-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib575-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib575_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib575-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib575_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib575-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib576-lib576.o: lib576.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib576_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib576-lib576.o -MD -MP -MF $(DEPDIR)/lib576-lib576.Tpo -c -o lib576-lib576.o `test -f 'lib576.c' || echo '$(srcdir)/'`lib576.c
 
 lib576-lib576.o: lib576.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib576_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib576-lib576.o -MD -MP -MF $(DEPDIR)/lib576-lib576.Tpo -c -o lib576-lib576.o `test -f 'lib576.c' || echo '$(srcdir)/'`lib576.c
@@ -5476,19 +6248,19 @@ lib582-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib582_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib582-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib582_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib582-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-lib582-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib582_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib582-warnless.o -MD -MP -MF $(DEPDIR)/lib582-warnless.Tpo -c -o lib582-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib582-warnless.Tpo $(DEPDIR)/lib582-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib582-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib582-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib582_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib582-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib582-warnless.Tpo -c -o ../../lib/lib582-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib582-warnless.Tpo ../../lib/$(DEPDIR)/lib582-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib582-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib582_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib582-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib582_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib582-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib582-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib582_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib582-warnless.obj -MD -MP -MF $(DEPDIR)/lib582-warnless.Tpo -c -o lib582-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib582-warnless.Tpo $(DEPDIR)/lib582-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib582-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib582-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib582_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib582-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib582-warnless.Tpo -c -o ../../lib/lib582-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib582-warnless.Tpo ../../lib/$(DEPDIR)/lib582-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib582-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib582_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib582-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib582_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib582-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib583-lib583.o: lib583.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib583_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib583-lib583.o -MD -MP -MF $(DEPDIR)/lib583-lib583.Tpo -c -o lib583-lib583.o `test -f 'lib583.c' || echo '$(srcdir)/'`lib583.c
 
 lib583-lib583.o: lib583.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib583_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib583-lib583.o -MD -MP -MF $(DEPDIR)/lib583-lib583.Tpo -c -o lib583-lib583.o `test -f 'lib583.c' || echo '$(srcdir)/'`lib583.c
@@ -5700,19 +6472,19 @@ lib591-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib591-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib591-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-lib591-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib591-warnless.o -MD -MP -MF $(DEPDIR)/lib591-warnless.Tpo -c -o lib591-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib591-warnless.Tpo $(DEPDIR)/lib591-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib591-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib591-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib591-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib591-warnless.Tpo -c -o ../../lib/lib591-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib591-warnless.Tpo ../../lib/$(DEPDIR)/lib591-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib591-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib591-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib591-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib591-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib591-warnless.obj -MD -MP -MF $(DEPDIR)/lib591-warnless.Tpo -c -o lib591-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib591-warnless.Tpo $(DEPDIR)/lib591-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib591-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib591-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib591-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib591-warnless.Tpo -c -o ../../lib/lib591-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib591-warnless.Tpo ../../lib/$(DEPDIR)/lib591-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib591-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib591-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib591-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib597-lib597.o: lib597.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib597_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib597-lib597.o -MD -MP -MF $(DEPDIR)/lib597-lib597.Tpo -c -o lib597-lib597.o `test -f 'lib597.c' || echo '$(srcdir)/'`lib597.c
 
 lib597-lib597.o: lib597.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib597_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib597-lib597.o -MD -MP -MF $(DEPDIR)/lib597-lib597.Tpo -c -o lib597-lib597.o `test -f 'lib597.c' || echo '$(srcdir)/'`lib597.c
@@ -5756,19 +6528,19 @@ lib597-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib597_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib597-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib597_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib597-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-lib597-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib597_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib597-warnless.o -MD -MP -MF $(DEPDIR)/lib597-warnless.Tpo -c -o lib597-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib597-warnless.Tpo $(DEPDIR)/lib597-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib597-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/lib597-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib597_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib597-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib597-warnless.Tpo -c -o ../../lib/lib597-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib597-warnless.Tpo ../../lib/$(DEPDIR)/lib597-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib597-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib597_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib597-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib597_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib597-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-lib597-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib597_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib597-warnless.obj -MD -MP -MF $(DEPDIR)/lib597-warnless.Tpo -c -o lib597-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib597-warnless.Tpo $(DEPDIR)/lib597-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='lib597-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/lib597-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib597_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib597-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib597-warnless.Tpo -c -o ../../lib/lib597-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib597-warnless.Tpo ../../lib/$(DEPDIR)/lib597-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib597-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib597_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib597-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib597_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib597-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 lib598-lib598.o: lib598.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib598_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib598-lib598.o -MD -MP -MF $(DEPDIR)/lib598-lib598.Tpo -c -o lib598-lib598.o `test -f 'lib598.c' || echo '$(srcdir)/'`lib598.c
 
 lib598-lib598.o: lib598.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib598_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib598-lib598.o -MD -MP -MF $(DEPDIR)/lib598-lib598.Tpo -c -o lib598-lib598.o `test -f 'lib598.c' || echo '$(srcdir)/'`lib598.c
@@ -5896,19 +6668,19 @@ libntlmconnect-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libntlmconnect_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libntlmconnect-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libntlmconnect_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libntlmconnect-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
 
-libntlmconnect-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libntlmconnect_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libntlmconnect-warnless.o -MD -MP -MF $(DEPDIR)/libntlmconnect-warnless.Tpo -c -o libntlmconnect-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libntlmconnect-warnless.Tpo $(DEPDIR)/libntlmconnect-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='libntlmconnect-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/libntlmconnect-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libntlmconnect_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/libntlmconnect-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/libntlmconnect-warnless.Tpo -c -o ../../lib/libntlmconnect-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/libntlmconnect-warnless.Tpo ../../lib/$(DEPDIR)/libntlmconnect-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/libntlmconnect-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libntlmconnect_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libntlmconnect-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libntlmconnect_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/libntlmconnect-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-libntlmconnect-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libntlmconnect_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libntlmconnect-warnless.obj -MD -MP -MF $(DEPDIR)/libntlmconnect-warnless.Tpo -c -o libntlmconnect-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libntlmconnect-warnless.Tpo $(DEPDIR)/libntlmconnect-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='libntlmconnect-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/libntlmconnect-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libntlmconnect_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/libntlmconnect-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/libntlmconnect-warnless.Tpo -c -o ../../lib/libntlmconnect-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/libntlmconnect-warnless.Tpo ../../lib/$(DEPDIR)/libntlmconnect-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/libntlmconnect-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libntlmconnect_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libntlmconnect-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libntlmconnect_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/libntlmconnect-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 mostlyclean-libtool:
        -rm -f *.lo
 
 mostlyclean-libtool:
        -rm -f *.lo
@@ -6028,6 +6800,8 @@ clean-generic:
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
        -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
        -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+       -rm -f ../../lib/$(DEPDIR)/$(am__dirstamp)
+       -rm -f ../../lib/$(am__dirstamp)
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
@@ -6038,7 +6812,7 @@ clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
        clean-noinstPROGRAMS mostlyclean-am
 
 distclean: distclean-am
        clean-noinstPROGRAMS mostlyclean-am
 
 distclean: distclean-am
-       -rm -rf ./$(DEPDIR)
+       -rm -rf ../../lib/$(DEPDIR) ./$(DEPDIR)
        -rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
        distclean-tags
        -rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
        distclean-tags
@@ -6084,7 +6858,7 @@ install-ps-am:
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
-       -rm -rf ./$(DEPDIR)
+       -rm -rf ../../lib/$(DEPDIR) ./$(DEPDIR)
        -rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
        -rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
index cf62105..3508b80 100644 (file)
@@ -21,7 +21,9 @@ noinst_PROGRAMS = chkhostname libauthretry libntlmconnect                \
  lib571 lib572 lib573 lib574 lib575 lib576        lib578 lib579 lib582   \
  lib583 lib585 lib586 lib587        lib590 lib591 lib597 lib598 lib599   \
  lib1500 lib1501 lib1502 lib1503 lib1504 lib1505 lib1506 lib1507 lib1508 \
  lib571 lib572 lib573 lib574 lib575 lib576        lib578 lib579 lib582   \
  lib583 lib585 lib586 lib587        lib590 lib591 lib597 lib598 lib599   \
  lib1500 lib1501 lib1502 lib1503 lib1504 lib1505 lib1506 lib1507 lib1508 \
- lib1509 lib1510 lib1511 lib1512 \
+ lib1509 lib1510 lib1511 lib1512 lib1513 lib1514 lib1515 \
+ lib1520 \
+ lib1525 lib1526 lib1527 lib1528 lib1529 \
  lib1900 \
  lib2033
 
  lib1900 \
  lib2033
 
@@ -193,7 +195,7 @@ lib555_SOURCES = lib555.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
 lib555_LDADD = $(TESTUTIL_LIBS)
 lib555_CPPFLAGS = $(AM_CPPFLAGS)
 
 lib555_LDADD = $(TESTUTIL_LIBS)
 lib555_CPPFLAGS = $(AM_CPPFLAGS)
 
-lib556_SOURCES = lib556.c $(SUPPORTFILES)
+lib556_SOURCES = lib556.c $(SUPPORTFILES) $(WARNLESS)
 lib556_CPPFLAGS = $(AM_CPPFLAGS)
 
 lib557_SOURCES = lib557.c $(SUPPORTFILES)
 lib556_CPPFLAGS = $(AM_CPPFLAGS)
 
 lib557_SOURCES = lib557.c $(SUPPORTFILES)
@@ -343,6 +345,41 @@ lib1512_SOURCES = lib1512.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
 lib1512_LDADD = $(TESTUTIL_LIBS)
 lib1512_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1512
 
 lib1512_LDADD = $(TESTUTIL_LIBS)
 lib1512_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1512
 
+lib1513_SOURCES = lib1513.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1513_LDADD = $(TESTUTIL_LIBS)
+lib1513_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1513
+
+lib1514_SOURCES = lib1514.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1514_LDADD = $(TESTUTIL_LIBS)
+lib1514_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1514
+
+lib1515_SOURCES = lib1515.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1515_LDADD = $(TESTUTIL_LIBS)
+lib1515_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1515
+
+lib1520_SOURCES = lib1520.c $(SUPPORTFILES)
+lib1520_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1520
+
+lib1525_SOURCES = lib1525.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1525_LDADD = $(TESTUTIL_LIBS)
+lib1525_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1525
+
+lib1526_SOURCES = lib1526.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1526_LDADD = $(TESTUTIL_LIBS)
+lib1526_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1526
+
+lib1527_SOURCES = lib1527.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1527_LDADD = $(TESTUTIL_LIBS)
+lib1527_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1527
+
+lib1528_SOURCES = lib1528.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1528_LDADD = $(TESTUTIL_LIBS)
+lib1528_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1528
+
+lib1529_SOURCES = lib1529.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1529_LDADD = $(TESTUTIL_LIBS)
+lib1529_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1529
+
 lib1900_SOURCES = lib1900.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
 lib1900_LDADD = $(TESTUTIL_LIBS)
 lib1900_CPPFLAGS = $(AM_CPPFLAGS)
 lib1900_SOURCES = lib1900.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
 lib1900_LDADD = $(TESTUTIL_LIBS)
 lib1900_CPPFLAGS = $(AM_CPPFLAGS)
index 253acb2..5851faf 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #include "test.h"
 
 #ifdef HAVE_LOCALE_H
 #include "test.h"
 
 #ifdef HAVE_LOCALE_H
-#include <locale.h> /* for setlocale() */
+#  include <locale.h> /* for setlocale() */
+#endif
+
+#ifdef HAVE_IO_H
+#  include <io.h> /* for setmode() */
+#endif
+
+#ifdef HAVE_FCNTL_H
+#  include <fcntl.h> /* for setmode() */
 #endif
 
 #ifdef CURLDEBUG
 #endif
 
 #ifdef CURLDEBUG
@@ -51,6 +59,15 @@ int select_wrapper(int nfds, fd_set *rd, fd_set *wr, fd_set *exc,
   return select(nfds, rd, wr, exc, tv);
 }
 
   return select(nfds, rd, wr, exc, tv);
 }
 
+void wait_ms(int ms)
+{
+  struct timeval t;
+  t.tv_sec = ms/1000;
+  ms -= (int)t.tv_sec * 1000;
+  t.tv_usec = ms * 1000;
+  select_wrapper(0, NULL, NULL , NULL, &t);
+}
+
 char *libtest_arg2=NULL;
 char *libtest_arg3=NULL;
 int test_argc;
 char *libtest_arg2=NULL;
 char *libtest_arg3=NULL;
 int test_argc;
@@ -98,6 +115,14 @@ int main(int argc, char **argv)
 {
   char *URL;
 
 {
   char *URL;
 
+#ifdef O_BINARY
+#  ifdef __HIGHC__
+  _setmode(stdout, O_BINARY);
+#  else
+  setmode(fileno(stdout), O_BINARY);
+#  endif
+#endif
+
   memory_tracking_init();
 
   /*
   memory_tracking_init();
 
   /*
index 76e3d32..08b917f 100644 (file)
@@ -32,7 +32,7 @@ int test(char *URL)
   CURL* curls = NULL;
   CURLM* multi = NULL;
   int still_running;
   CURL* curls = NULL;
   CURLM* multi = NULL;
   int still_running;
-  int i = -1;
+  int i = TEST_ERR_FAILURE;
   int res = 0;
   CURLMsg *msg;
 
   int res = 0;
   CURLMsg *msg;
 
@@ -58,7 +58,7 @@ int test(char *URL)
     res = curl_multi_wait(multi, NULL, 0, TEST_HANG_TIMEOUT, &num);
     if (res != CURLM_OK) {
       printf("curl_multi_wait() returned %d\n", res);
     res = curl_multi_wait(multi, NULL, 0, TEST_HANG_TIMEOUT, &num);
     if (res != CURLM_OK) {
       printf("curl_multi_wait() returned %d\n", res);
-      res = -1;
+      res = TEST_ERR_MAJOR_BAD;
       goto test_cleanup;
     }
 
       goto test_cleanup;
     }
 
index 008a9ca..b61c4db 100644 (file)
 int test(char *URL)
 {
   int res = 0;
 int test(char *URL)
 {
   int res = 0;
-  CURL *curl[NUM_HANDLES];
+  CURL *curl[NUM_HANDLES] = {0};
   int running;
   CURLM *m = NULL;
   int i;
   char target_url[256];
   char dnsentry[256];
   int running;
   CURLM *m = NULL;
   int i;
   char target_url[256];
   char dnsentry[256];
-  struct curl_slist *slist = NULL;
+  struct curl_slist *slist = NULL, *slist2;
   char *port = libtest_arg3;
   char *address = libtest_arg2;
 
   char *port = libtest_arg3;
   char *address = libtest_arg2;
 
@@ -48,12 +48,14 @@ int test(char *URL)
   for(i=0; i < NUM_HANDLES; i++) {
     sprintf(dnsentry, "server%d.example.com:%s:%s", i + 1, port, address);
     printf("%s\n", dnsentry);
   for(i=0; i < NUM_HANDLES; i++) {
     sprintf(dnsentry, "server%d.example.com:%s:%s", i + 1, port, address);
     printf("%s\n", dnsentry);
-    slist = curl_slist_append(slist, dnsentry);
+    slist2 = curl_slist_append(slist, dnsentry);
+    if(!slist2) {
+      fprintf(stderr, "curl_slist_append() failed\n");
+      goto test_cleanup;
+    }
+    slist = slist2;
   }
 
   }
 
-  for(i=0; i < NUM_HANDLES; i++)
-    curl[i] = NULL;
-
   start_test_timing();
 
   global_init(CURL_GLOBAL_ALL);
   start_test_timing();
 
   global_init(CURL_GLOBAL_ALL);
@@ -112,6 +114,7 @@ int test(char *URL)
 
       abort_on_test_timeout();
     }
 
       abort_on_test_timeout();
     }
+    wait_ms(1); /* to ensure different end times */
   }
 
 test_cleanup:
   }
 
 test_cleanup:
index 7c4e6ed..5bb61b3 100644 (file)
@@ -63,21 +63,18 @@ static long tvdiff(struct timeval newer, struct timeval older)
 
 int test(char *URL)
 {
 
 int test(char *URL)
 {
-   CURL *curl;
-   CURLM *mcurl;
+   int res = 0;
+   CURL *curl = NULL;
+   CURLM *mcurl = NULL;
    int still_running = 1;
    struct timeval mp_start;
    struct curl_slist* rcpt_list = NULL;
 
    curl_global_init(CURL_GLOBAL_DEFAULT);
 
    int still_running = 1;
    struct timeval mp_start;
    struct curl_slist* rcpt_list = NULL;
 
    curl_global_init(CURL_GLOBAL_DEFAULT);
 
-   curl = curl_easy_init();
-   if(!curl)
-     return 1;
+   easy_init(curl);
 
 
-   mcurl = curl_multi_init();
-   if(!mcurl)
-     return 2;
+   multi_init(mcurl);
 
    rcpt_list = curl_slist_append(rcpt_list, RECIPIENT);
    /* more addresses can be added here
 
    rcpt_list = curl_slist_append(rcpt_list, RECIPIENT);
    /* more addresses can be added here
@@ -89,11 +86,12 @@ int test(char *URL)
    curl_easy_setopt(curl, CURLOPT_USERNAME, USERNAME);
    curl_easy_setopt(curl, CURLOPT_PASSWORD, PASSWORD);
 #endif
    curl_easy_setopt(curl, CURLOPT_USERNAME, USERNAME);
    curl_easy_setopt(curl, CURLOPT_PASSWORD, PASSWORD);
 #endif
+   curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
    curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
    curl_easy_setopt(curl, CURLOPT_MAIL_FROM, MAILFROM);
    curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, rcpt_list);
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
    curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
    curl_easy_setopt(curl, CURLOPT_MAIL_FROM, MAILFROM);
    curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, rcpt_list);
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-   curl_multi_add_handle(mcurl, curl);
+   multi_add_handle(mcurl, curl);
 
    mp_start = tvnow();
 
 
    mp_start = tvnow();
 
@@ -156,12 +154,15 @@ int test(char *URL)
     }
   }
 
     }
   }
 
+test_cleanup:
+
   curl_slist_free_all(rcpt_list);
   curl_multi_remove_handle(mcurl, curl);
   curl_multi_cleanup(mcurl);
   curl_easy_cleanup(curl);
   curl_global_cleanup();
   curl_slist_free_all(rcpt_list);
   curl_multi_remove_handle(mcurl, curl);
   curl_multi_cleanup(mcurl);
   curl_easy_cleanup(curl);
   curl_global_cleanup();
-  return 0;
+
+  return res;
 }
 
 
 }
 
 
index 3c86a36..f67c7d6 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -28,7 +28,7 @@
 size_t WriteOutput(void *ptr, size_t size, size_t nmemb, void *stream);
 size_t WriteHeader(void *ptr, size_t size, size_t nmemb, void *stream);
 
 size_t WriteOutput(void *ptr, size_t size, size_t nmemb, void *stream);
 size_t WriteHeader(void *ptr, size_t size, size_t nmemb, void *stream);
 
-long realHeaderSize = 0;
+unsigned long realHeaderSize = 0;
 
 int test(char *URL)
 {
 
 int test(char *URL)
 {
@@ -90,7 +90,8 @@ size_t WriteHeader(void *ptr, size_t size, size_t nmemb, void *stream)
 {
   (void)ptr;
   (void)stream;
 {
   (void)ptr;
   (void)stream;
-  realHeaderSize += size * nmemb;
+
+  realHeaderSize += curlx_uztoul(size * nmemb);
 
   return nmemb * size;
 }
 
   return nmemb * size;
 }
index 1bcf216..d19a7b5 100644 (file)
@@ -36,7 +36,7 @@ int test(char *URL)
   int i;
   char target_url[256];
   char dnsentry[256];
   int i;
   char target_url[256];
   char dnsentry[256];
-  struct curl_slist *slist = NULL;
+  struct curl_slist *slist = NULL, *slist2;
   char *port = libtest_arg3;
   char *address = libtest_arg2;
 
   char *port = libtest_arg3;
   char *address = libtest_arg2;
 
@@ -46,7 +46,12 @@ int test(char *URL)
   for(i=0; i < NUM_URLS; i++) {
     sprintf(dnsentry, "server%d.example.com:%s:%s", i + 1, port, address);
     printf("%s\n", dnsentry);
   for(i=0; i < NUM_URLS; i++) {
     sprintf(dnsentry, "server%d.example.com:%s:%s", i + 1, port, address);
     printf("%s\n", dnsentry);
-    slist = curl_slist_append(slist, dnsentry);
+    slist2 = curl_slist_append(slist, dnsentry);
+    if(!slist2) {
+      fprintf(stderr, "curl_slist_append() failed\n");
+      goto test_cleanup;
+    }
+    slist = slist2;
   }
 
   start_test_timing();
   }
 
   start_test_timing();
index 93d5ea9..86372aa 100644 (file)
@@ -34,7 +34,7 @@
 
 int test(char *URL)
 {
 
 int test(char *URL)
 {
-  CURLcode res;
+  int res = 0;
   CURL *curl[NUM_HANDLES] = {NULL, NULL};
   char *port = libtest_arg3;
   char *address = libtest_arg2;
   CURL *curl[NUM_HANDLES] = {NULL, NULL};
   char *port = libtest_arg3;
   char *address = libtest_arg2;
@@ -44,7 +44,7 @@ int test(char *URL)
   char target_url[256];
   (void)URL; /* URL is setup in the code */
 
   char target_url[256];
   (void)URL; /* URL is setup in the code */
 
-  if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+  if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
     fprintf(stderr, "curl_global_init() failed\n");
     return TEST_ERR_MAJOR_BAD;
   }
     fprintf(stderr, "curl_global_init() failed\n");
     return TEST_ERR_MAJOR_BAD;
   }
@@ -84,6 +84,6 @@ test_cleanup:
   curl_slist_free_all(slist);
   curl_global_cleanup();
 
   curl_slist_free_all(slist);
   curl_global_cleanup();
 
-  return (int)res;
+  return res;
 }
 
 }
 
diff --git a/tests/libtest/lib1513.c b/tests/libtest/lib1513.c
new file mode 100644 (file)
index 0000000..aefb577
--- /dev/null
@@ -0,0 +1,73 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+/*
+ * Test case converted from bug report #1318 by Petr Novak.
+ *
+ * Before the fix, this test program returned 52 (CURLE_GOT_NOTHING) instead
+ * of 42 (CURLE_ABORTED_BY_CALLBACK).
+ */
+
+#include "test.h"
+
+#include "memdebug.h"
+
+static int progressKiller(void *arg,
+                          double dltotal,
+                          double dlnow,
+                          double ultotal,
+                          double ulnow)
+{
+  (void)arg;
+  (void)dltotal;
+  (void)dlnow;
+  (void)ultotal;
+  (void)ulnow;
+  return 1;
+}
+
+int test(char *URL)
+{
+  CURL *curl;
+  int res=0;
+
+  global_init(CURL_GLOBAL_ALL);
+
+  easy_init(curl);
+
+  easy_setopt(curl, CURLOPT_URL, URL);
+  easy_setopt(curl, CURLOPT_TIMEOUT, (long)7);
+  easy_setopt(curl, CURLOPT_NOSIGNAL, (long)1);
+  easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, progressKiller);
+  easy_setopt(curl, CURLOPT_PROGRESSDATA, NULL);
+  easy_setopt(curl, CURLOPT_NOPROGRESS, (long)0);
+
+  res = curl_easy_perform(curl);
+
+test_cleanup:
+
+  /* undocumented cleanup sequence - type UA */
+
+  curl_easy_cleanup(curl);
+  curl_global_cleanup();
+
+  return res;
+}
diff --git a/tests/libtest/lib1514.c b/tests/libtest/lib1514.c
new file mode 100644 (file)
index 0000000..ec8f8a3
--- /dev/null
@@ -0,0 +1,80 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+/*
+ * Make sure libcurl does not send a `Content-Length: -1` header when HTTP POST
+ * size is unknown.
+ */
+
+#include "test.h"
+
+#include "memdebug.h"
+
+static char data[]="dummy";
+
+struct WriteThis {
+  char *readptr;
+  size_t sizeleft;
+};
+
+static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *userp)
+{
+  struct WriteThis *pooh = (struct WriteThis *)userp;
+
+  if(size*nmemb < 1)
+    return 0;
+
+  if(pooh->sizeleft) {
+    *(char *)ptr = pooh->readptr[0]; /* copy one single byte */
+    pooh->readptr++;                 /* advance pointer */
+    pooh->sizeleft--;                /* less data left */
+    return 1;                        /* we return 1 byte at a time! */
+  }
+
+  return 0;                         /* no more data left to deliver */
+}
+
+int test(char *URL)
+{
+  CURL *curl;
+  CURLcode result = CURLE_OK;
+  int res = 0;
+  struct WriteThis pooh = { data, sizeof(data)-1 };
+
+  global_init(CURL_GLOBAL_ALL);
+
+  easy_init(curl);
+
+  easy_setopt(curl, CURLOPT_URL, URL);
+  easy_setopt(curl, CURLOPT_POST, 1L);
+  /* Purposely omit to set CURLOPT_POSTFIELDSIZE */
+  easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
+  easy_setopt(curl, CURLOPT_READDATA, &pooh);
+
+  result = curl_easy_perform(curl);
+
+test_cleanup:
+
+  curl_easy_cleanup(curl);
+  curl_global_cleanup();
+
+  return (int)result;
+}
diff --git a/tests/libtest/lib1515.c b/tests/libtest/lib1515.c
new file mode 100644 (file)
index 0000000..4ac9fcf
--- /dev/null
@@ -0,0 +1,151 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+
+/*
+ * Check for bugs #1303 and #1327: libcurl should never remove DNS entries
+ * created via CURLOPT_RESOLVE, neither after DNS_CACHE_TIMEOUT elapses
+ * (test1515) nor a dead connection is detected (test1616).
+ */
+
+#include "test.h"
+#include "testutil.h"
+#include "warnless.h"
+#include "memdebug.h"
+
+#define TEST_HANG_TIMEOUT 60 * 1000
+
+#define DNS_TIMEOUT 1
+
+#if defined(WIN32) || defined(_WIN32)
+#define sleep(s) Sleep(s * 1000)
+#endif
+
+#define _MPRINTF_REPLACE
+#include <curl/mprintf.h>
+
+static int debug_callback(CURL *curl, curl_infotype info, char *msg, size_t len, void *ptr)
+{
+  (void)curl;
+  (void)ptr;
+
+  if(info == CURLINFO_TEXT)
+    fprintf(stderr, "debug: %.*s", (int) len, msg);
+
+  return 0;
+}
+
+static int do_one_request(CURLM *m, char *URL, char *resolve)
+{
+  CURL *curls;
+  struct curl_slist *resolve_list = NULL;
+  int still_running;
+  int res = 0;
+  CURLMsg *msg;
+  int msgs_left;
+
+  resolve_list = curl_slist_append(resolve_list, resolve);
+
+  easy_init(curls);
+
+  easy_setopt(curls, CURLOPT_URL, URL);
+  easy_setopt(curls, CURLOPT_RESOLVE, resolve_list);
+  easy_setopt(curls, CURLOPT_DEBUGFUNCTION, debug_callback);
+  easy_setopt(curls, CURLOPT_VERBOSE, 1);
+  easy_setopt(curls, CURLOPT_DNS_CACHE_TIMEOUT, DNS_TIMEOUT);
+
+  multi_add_handle(m, curls);
+  multi_perform(m, &still_running);
+
+  abort_on_test_timeout();
+
+  while(still_running) {
+    struct timeval timeout;
+    fd_set fdread, fdwrite, fdexcep;
+    int maxfd = -99;
+
+    FD_ZERO(&fdread);
+    FD_ZERO(&fdwrite);
+    FD_ZERO(&fdexcep);
+    timeout.tv_sec = 1;
+    timeout.tv_usec = 0;
+
+    multi_fdset(m, &fdread, &fdwrite, &fdexcep, &maxfd);
+    select_test(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
+
+    abort_on_test_timeout();
+    multi_perform(m, &still_running);
+
+    abort_on_test_timeout();
+  }
+
+  while((msg = curl_multi_info_read(m, &msgs_left))) {
+    if(msg->msg == CURLMSG_DONE && msg->easy_handle == curls) {
+      res = msg->data.result;
+      break;
+    }
+  }
+
+test_cleanup:
+
+  curl_multi_remove_handle(m, curls);
+  curl_easy_cleanup(curls);
+  curl_slist_free_all(resolve_list);
+
+  return res;
+}
+
+int test(char *URL)
+{
+  CURLM* multi = NULL;
+  int res = 0;
+  char *address = libtest_arg2;
+  char *port = libtest_arg3;
+  char *path = URL;
+  char dns_entry[256];
+  int i;
+  int count = 2;
+
+  snprintf(dns_entry, sizeof(dns_entry), "testserver.example.com:%s:%s", port, address);
+
+  start_test_timing();
+
+  global_init(CURL_GLOBAL_ALL);
+  multi_init(multi);
+
+  for(i = 1; i <= count; i++) {
+    char target_url[256];
+    snprintf(target_url, sizeof(target_url), "http://testserver.example.com:%s%s%04d", port, path, i);
+
+    /* second request must succeed like the first one */
+    if((res = do_one_request(multi, target_url, dns_entry)))
+      goto test_cleanup;
+
+    if(i < count)
+      sleep(DNS_TIMEOUT + 1);
+  }
+
+test_cleanup:
+
+  curl_multi_cleanup(multi);
+
+  return (int) res;
+}
diff --git a/tests/libtest/lib1520.c b/tests/libtest/lib1520.c
new file mode 100644 (file)
index 0000000..c6d2e82
--- /dev/null
@@ -0,0 +1,114 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 2014, Steve Holme, <steve_holme@hotmail.com>.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include "test.h"
+
+#include "memdebug.h"
+
+/*
+ * This is the list of basic details you need to tweak to get things right.
+ */
+#define TO "<recipient@example.com>"
+#define FROM "<sender@example.com>"
+
+static const char *payload_text[] = {
+  "From: different\r\n",
+  "To: another\r\n",
+  "\r\n",
+  "\r\n",
+  ".\r\n",
+  ".\r\n",
+  "\r\n",
+  ".\r\n",
+  "\r\n",
+  "body",
+  NULL
+};
+
+struct upload_status {
+  int lines_read;
+};
+
+static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *userp)
+{
+  struct upload_status *upload_ctx = (struct upload_status *)userp;
+  const char *data;
+
+  if((size == 0) || (nmemb == 0) || ((size*nmemb) < 1)) {
+    return 0;
+  }
+
+  data = payload_text[upload_ctx->lines_read];
+
+  if(data) {
+    size_t len = strlen(data);
+    memcpy(ptr, data, len);
+    upload_ctx->lines_read++;
+
+    return len;
+  }
+
+  return 0;
+}
+
+int test(char *URL)
+{
+  CURLcode res;
+  CURL *curl;
+  struct curl_slist *rcpt_list = NULL;
+  struct upload_status upload_ctx = {0};
+
+  if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    return TEST_ERR_MAJOR_BAD;
+  }
+
+  if((curl = curl_easy_init()) == NULL) {
+    fprintf(stderr, "curl_easy_init() failed\n");
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
+
+  rcpt_list = curl_slist_append(rcpt_list, TO);
+  /* more addresses can be added here
+     rcpt_list = curl_slist_append(rcpt_list, "<others@example.com>");
+  */
+
+  test_setopt(curl, CURLOPT_URL, URL);
+  test_setopt(curl, CURLOPT_UPLOAD, 1L);
+  test_setopt(curl, CURLOPT_READFUNCTION, read_callback);
+  test_setopt(curl, CURLOPT_READDATA, &upload_ctx);
+  test_setopt(curl, CURLOPT_MAIL_FROM, FROM);
+  test_setopt(curl, CURLOPT_MAIL_RCPT, rcpt_list);
+  test_setopt(curl, CURLOPT_VERBOSE, 1L);
+
+  res = curl_easy_perform(curl);
+
+test_cleanup:
+
+  curl_slist_free_all(rcpt_list);
+  curl_easy_cleanup(curl);
+  curl_global_cleanup();
+
+  return (int)res;
+}
+
+
diff --git a/tests/libtest/lib1525.c b/tests/libtest/lib1525.c
new file mode 100644 (file)
index 0000000..957b429
--- /dev/null
@@ -0,0 +1,97 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2014, Vijay Panghal, <vpanghal@maginatics.com>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+
+/*
+ * This unit test PUT http data over proxy. Proxy header will be different
+ * from server http header
+ */
+
+#include "test.h"
+
+#include "memdebug.h"
+
+static char data [] = "Hello Cloud!\n";
+
+static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *stream)
+{
+  size_t  amount = nmemb * size; /* Total bytes curl wants */
+  if (amount < strlen(data)) {
+    return strlen(data);
+  }
+  (void)stream;
+  memcpy(ptr, data, strlen(data));
+  return strlen(data);
+}
+
+
+int test(char *URL)
+{
+  CURL *curl = NULL;
+  CURLcode res = CURLE_FAILED_INIT;
+  /* http and proxy header list*/
+  struct curl_slist *hhl = NULL;
+
+  if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    return TEST_ERR_MAJOR_BAD;
+  }
+
+  if((curl = curl_easy_init()) == NULL) {
+    fprintf(stderr, "curl_easy_init() failed\n");
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
+
+  hhl = curl_slist_append(hhl, "User-Agent: Http Agent");
+
+  if (!hhl) {
+    goto test_cleanup;
+  }
+
+  test_setopt(curl, CURLOPT_URL, URL);
+  test_setopt(curl, CURLOPT_PROXY, libtest_arg2);
+  test_setopt(curl, CURLOPT_HTTPHEADER, hhl);
+  test_setopt(curl, CURLOPT_PROXYHEADER, hhl);
+  test_setopt(curl, CURLOPT_HEADEROPT, CURLHEADER_UNIFIED);
+  test_setopt(curl, CURLOPT_POST, 0L);
+  test_setopt(curl, CURLOPT_UPLOAD, 1L);
+  test_setopt(curl, CURLOPT_VERBOSE, 1L);
+  test_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
+  test_setopt(curl, CURLOPT_HEADER, 1L);
+  test_setopt(curl, CURLOPT_WRITEFUNCTION, fwrite);
+  test_setopt(curl, CURLOPT_READFUNCTION, read_callback);
+  test_setopt(curl, CURLOPT_HTTPPROXYTUNNEL, 1L);
+  test_setopt(curl, CURLOPT_INFILESIZE, strlen(data));
+
+  res = curl_easy_perform(curl);
+
+test_cleanup:
+
+  curl_easy_cleanup(curl);
+
+  curl_slist_free_all(hhl);
+
+  curl_global_cleanup();
+
+  return (int)res;
+}
diff --git a/tests/libtest/lib1526.c b/tests/libtest/lib1526.c
new file mode 100644 (file)
index 0000000..ec21fb0
--- /dev/null
@@ -0,0 +1,103 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Vijay Panghal, <vpanghal@maginatics.com>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+
+/*
+ * This unit test PUT http data over proxy. Proxy header will be different
+ * from server http header
+ */
+
+#include "test.h"
+
+#include "memdebug.h"
+
+static char data [] = "Hello Cloud!\n";
+
+static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *stream)
+{
+  size_t  amount = nmemb * size; /* Total bytes curl wants */
+  if (amount < strlen(data)) {
+    return strlen(data);
+  }
+  (void)stream;
+  memcpy(ptr, data, strlen(data));
+  return strlen(data);
+}
+
+int test(char *URL)
+{
+  CURL *curl = NULL;
+  CURLcode res = CURLE_FAILED_INIT;
+  /* http and proxy header list*/
+  struct curl_slist *hhl = NULL, *phl = NULL, *tmp = NULL;
+
+  if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    return TEST_ERR_MAJOR_BAD;
+  }
+
+  if((curl = curl_easy_init()) == NULL) {
+    fprintf(stderr, "curl_easy_init() failed\n");
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
+
+  hhl = curl_slist_append(hhl, "User-Agent: Http Agent");
+  phl = curl_slist_append(phl, "User-Agent: Proxy Agent");
+  if (!hhl || !phl) {
+    goto test_cleanup;
+  }
+  tmp = curl_slist_append(phl, "Expect:");
+  if (!tmp) {
+    goto test_cleanup;
+  }
+  phl = tmp;
+
+  test_setopt(curl, CURLOPT_URL, URL);
+  test_setopt(curl, CURLOPT_PROXY, libtest_arg2);
+  test_setopt(curl, CURLOPT_HTTPHEADER, hhl);
+  test_setopt(curl, CURLOPT_PROXYHEADER, phl);
+  test_setopt(curl, CURLOPT_HEADEROPT, CURLHEADER_SEPARATE);
+  test_setopt(curl, CURLOPT_POST, 0L);
+  test_setopt(curl, CURLOPT_UPLOAD, 1L);
+  test_setopt(curl, CURLOPT_VERBOSE, 1L);
+  test_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
+  test_setopt(curl, CURLOPT_HEADER, 1L);
+  test_setopt(curl, CURLOPT_WRITEFUNCTION, fwrite);
+  test_setopt(curl, CURLOPT_READFUNCTION, read_callback);
+  test_setopt(curl, CURLOPT_HTTPPROXYTUNNEL, 1L);
+  test_setopt(curl, CURLOPT_INFILESIZE, strlen(data));
+
+  res = curl_easy_perform(curl);
+
+test_cleanup:
+
+  curl_easy_cleanup(curl);
+
+  curl_slist_free_all(hhl);
+
+  curl_slist_free_all(phl);
+
+  curl_global_cleanup();
+
+  return (int)res;
+}
+
diff --git a/tests/libtest/lib1527.c b/tests/libtest/lib1527.c
new file mode 100644 (file)
index 0000000..280c947
--- /dev/null
@@ -0,0 +1,98 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Vijay Panghal, <vpanghal@maginatics.com>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+
+/*
+ * This unit test PUT http data over proxy. Same  http header will be generated
+ * for server and proxy
+ */
+
+#include "test.h"
+
+#include "memdebug.h"
+
+static char data [] = "Hello Cloud!\n";
+
+static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *stream)
+{
+  size_t  amount = nmemb * size; /* Total bytes curl wants */
+  if (amount < strlen(data)) {
+    return strlen(data);
+  }
+  (void)stream;
+  memcpy(ptr, data, strlen(data));
+  return strlen(data);
+}
+
+
+int test(char *URL)
+{
+  CURL *curl = NULL;
+  CURLcode res = CURLE_FAILED_INIT;
+  /* http header list*/
+  struct curl_slist *hhl = NULL, *tmp = NULL;
+
+  if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    return TEST_ERR_MAJOR_BAD;
+  }
+
+  if((curl = curl_easy_init()) == NULL) {
+    fprintf(stderr, "curl_easy_init() failed\n");
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
+
+  hhl = curl_slist_append(hhl, "User-Agent: Http Agent");
+  if (!hhl) {
+    goto test_cleanup;
+  }
+  tmp = curl_slist_append(hhl, "Expect: 100-continue");
+  if (!tmp) {
+    goto test_cleanup;
+  }
+  hhl = tmp;
+
+  test_setopt(curl, CURLOPT_URL, URL);
+  test_setopt(curl, CURLOPT_PROXY, libtest_arg2);
+  test_setopt(curl, CURLOPT_HTTPHEADER, hhl);
+  test_setopt(curl, CURLOPT_POST, 0L);
+  test_setopt(curl, CURLOPT_UPLOAD, 1L);
+  test_setopt(curl, CURLOPT_VERBOSE, 1L);
+  test_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
+  test_setopt(curl, CURLOPT_HEADER, 1L);
+  test_setopt(curl, CURLOPT_WRITEFUNCTION, fwrite);
+  test_setopt(curl, CURLOPT_READFUNCTION, read_callback);
+  test_setopt(curl, CURLOPT_HTTPPROXYTUNNEL, 1L);
+  test_setopt(curl, CURLOPT_INFILESIZE, strlen(data));
+
+  res = curl_easy_perform(curl);
+
+test_cleanup:
+
+  curl_easy_cleanup(curl);
+
+  curl_slist_free_all(hhl);
+
+  curl_global_cleanup();
+
+  return (int)res;
+}
diff --git a/tests/libtest/lib1528.c b/tests/libtest/lib1528.c
new file mode 100644 (file)
index 0000000..94a7cd0
--- /dev/null
@@ -0,0 +1,72 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+
+#include "test.h"
+
+#include "memdebug.h"
+
+int test(char *URL)
+{
+  CURL *curl = NULL;
+  CURLcode res = CURLE_FAILED_INIT;
+  /* http header list*/
+  struct curl_slist *hhl = NULL;
+  struct curl_slist *phl = NULL;
+
+  if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    return TEST_ERR_MAJOR_BAD;
+  }
+
+  if((curl = curl_easy_init()) == NULL) {
+    fprintf(stderr, "curl_easy_init() failed\n");
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
+
+  hhl = curl_slist_append(hhl, "User-Agent: Http Agent");
+  phl = curl_slist_append(phl, "Proxy-User-Agent: Http Agent2");
+
+  if (!hhl) {
+    goto test_cleanup;
+  }
+
+  test_setopt(curl, CURLOPT_URL, URL);
+  test_setopt(curl, CURLOPT_PROXY, libtest_arg2);
+  test_setopt(curl, CURLOPT_HTTPHEADER, hhl);
+  test_setopt(curl, CURLOPT_PROXYHEADER, phl);
+  test_setopt(curl, CURLOPT_HEADEROPT, CURLHEADER_SEPARATE);
+  test_setopt(curl, CURLOPT_VERBOSE, 1L);
+  test_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
+  test_setopt(curl, CURLOPT_HEADER, 1L);
+
+  res = curl_easy_perform(curl);
+
+test_cleanup:
+
+  curl_easy_cleanup(curl);
+  curl_slist_free_all(hhl);
+  curl_slist_free_all(phl);
+  curl_global_cleanup();
+
+  return (int)res;
+}
diff --git a/tests/libtest/lib1529.c b/tests/libtest/lib1529.c
new file mode 100644 (file)
index 0000000..3def142
--- /dev/null
@@ -0,0 +1,59 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+
+#include "test.h"
+
+#include "memdebug.h"
+
+int test(char *URL)
+{
+  CURL *curl = NULL;
+  CURLcode res = CURLE_FAILED_INIT;
+  char bURL[512];
+  snprintf(bURL, sizeof(bURL), "%s HTTP/1.1\r\nGET http://1529.com/1529", URL);
+
+  if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    return TEST_ERR_MAJOR_BAD;
+  }
+
+  if((curl = curl_easy_init()) == NULL) {
+    fprintf(stderr, "curl_easy_init() failed\n");
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
+
+  test_setopt(curl, CURLOPT_URL, bURL);
+  test_setopt(curl, CURLOPT_PROXY, libtest_arg2);
+  test_setopt(curl, CURLOPT_VERBOSE, 1L);
+  test_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
+  test_setopt(curl, CURLOPT_HEADER, 1L);
+
+  res = curl_easy_perform(curl);
+
+test_cleanup:
+
+  curl_easy_cleanup(curl);
+  curl_global_cleanup();
+
+  return (int)res;
+}
index 74a0e6f..2f64742 100644 (file)
@@ -38,12 +38,6 @@ int num_handles;
 int blacklist_num_servers;
 int blacklist_num_sites;
 
 int blacklist_num_servers;
 int blacklist_num_sites;
 
-int parse_url_file(const char *filename);
-void free_urls(void);
-int create_handles(void);
-void setup_handle(char *base_url, CURLM *m, int handlenum);
-void remove_handles(void);
-
 static size_t
 write_callback(void *contents, size_t size, size_t nmemb, void *userp)
 {
 static size_t
 write_callback(void *contents, size_t size, size_t nmemb, void *userp)
 {
@@ -54,7 +48,7 @@ write_callback(void *contents, size_t size, size_t nmemb, void *userp)
   return realsize;
 }
 
   return realsize;
 }
 
-int parse_url_file(const char *filename)
+static int parse_url_file(const char *filename)
 {
   FILE *f;
   int filetime;
 {
   FILE *f;
   int filetime;
@@ -91,21 +85,21 @@ int parse_url_file(const char *filename)
   return num_handles;
 }
 
   return num_handles;
 }
 
-void free_urls(void)
+static void free_urls(void)
 {
   int i;
   for(i = 0;i < num_handles;i++) {
 {
   int i;
   for(i = 0;i < num_handles;i++) {
-    free(urlstring[i]);
+    Curl_safefree(urlstring[i]);
   }
   for(i = 0;i < blacklist_num_servers;i++) {
   }
   for(i = 0;i < blacklist_num_servers;i++) {
-    free(server_blacklist[i]);
+    Curl_safefree(server_blacklist[i]);
   }
   for(i = 0;i < blacklist_num_sites;i++) {
   }
   for(i = 0;i < blacklist_num_sites;i++) {
-    free(site_blacklist[i]);
+    Curl_safefree(site_blacklist[i]);
   }
 }
 
   }
 }
 
-int create_handles(void)
+static int create_handles(void)
 {
   int i;
 
 {
   int i;
 
@@ -115,7 +109,7 @@ int create_handles(void)
   return 0;
 }
 
   return 0;
 }
 
-void setup_handle(char *base_url, CURLM *m, int handlenum)
+static void setup_handle(char *base_url, CURLM *m, int handlenum)
 {
   char urlbuf[256];
 
 {
   char urlbuf[256];
 
@@ -128,7 +122,7 @@ void setup_handle(char *base_url, CURLM *m, int handlenum)
   curl_multi_add_handle(m, handles[handlenum]);
 }
 
   curl_multi_add_handle(m, handles[handlenum]);
 }
 
-void remove_handles(void)
+static void remove_handles(void)
 {
   int i;
 
 {
   int i;
 
@@ -155,7 +149,7 @@ int test(char *URL)
 
   curl_global_init(CURL_GLOBAL_ALL);
 
 
   curl_global_init(CURL_GLOBAL_ALL);
 
-  m = curl_multi_init();
+  multi_init(m);
 
   create_handles();
 
 
   create_handles();
 
@@ -185,7 +179,7 @@ int test(char *URL)
       now = tutil_tvnow();
       msnow = now.tv_sec * 1000 + now.tv_usec / 1000;
       mslast = last_handle_add.tv_sec * 1000 + last_handle_add.tv_usec / 1000;
       now = tutil_tvnow();
       msnow = now.tv_sec * 1000 + now.tv_usec / 1000;
       mslast = last_handle_add.tv_sec * 1000 + last_handle_add.tv_usec / 1000;
-      if(msnow - mslast >= urltime[handlenum] && handlenum < num_handles) {
+      if((msnow - mslast) >= urltime[handlenum]) {
         fprintf(stdout, "Adding handle %d\n", handlenum);
         setup_handle(URL, m, handlenum);
         last_handle_add = now;
         fprintf(stdout, "Adding handle %d\n", handlenum);
         setup_handle(URL, m, handlenum);
         last_handle_add = now;
index dda1d7f..4d62208 100644 (file)
@@ -91,43 +91,44 @@ int test(char *URL)
   res = curl_easy_perform(curl);
 
   if(!res) {
   res = curl_easy_perform(curl);
 
   if(!res) {
-    FILE *moo;
     res = curl_easy_getinfo(curl, CURLINFO_PRIMARY_IP, &ipstr);
     res = curl_easy_getinfo(curl, CURLINFO_PRIMARY_IP, &ipstr);
-    moo = fopen(libtest_arg2, "wb");
-    if(moo) {
-      double time_namelookup;
-      double time_connect;
-      double time_pretransfer;
-      double time_starttransfer;
-      double time_total;
-      fprintf(moo, "IP: %s\n", ipstr);
-      curl_easy_getinfo(curl, CURLINFO_NAMELOOKUP_TIME, &time_namelookup);
-      curl_easy_getinfo(curl, CURLINFO_CONNECT_TIME, &time_connect);
-      curl_easy_getinfo(curl, CURLINFO_PRETRANSFER_TIME, &time_pretransfer);
-      curl_easy_getinfo(curl, CURLINFO_STARTTRANSFER_TIME,
-                        &time_starttransfer);
-      curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME, &time_total);
-
-      /* since the timing will always vary we only compare relative differences
-         between these 5 times */
-      if(time_namelookup >= time_connect) {
-        fprintf(moo, "namelookup vs connect: %f %f\n",
-                time_namelookup, time_connect);
+    if (libtest_arg2) {
+      FILE *moo = fopen(libtest_arg2, "wb");
+      if(moo) {
+       double time_namelookup;
+       double time_connect;
+       double time_pretransfer;
+       double time_starttransfer;
+       double time_total;
+       fprintf(moo, "IP: %s\n", ipstr);
+       curl_easy_getinfo(curl, CURLINFO_NAMELOOKUP_TIME, &time_namelookup);
+       curl_easy_getinfo(curl, CURLINFO_CONNECT_TIME, &time_connect);
+       curl_easy_getinfo(curl, CURLINFO_PRETRANSFER_TIME, &time_pretransfer);
+       curl_easy_getinfo(curl, CURLINFO_STARTTRANSFER_TIME,
+                         &time_starttransfer);
+       curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME, &time_total);
+
+       /* since the timing will always vary we only compare relative differences
+          between these 5 times */
+       if(time_namelookup > time_connect) {
+         fprintf(moo, "namelookup vs connect: %f %f\n",
+                 time_namelookup, time_connect);
+       }
+       if(time_connect > time_pretransfer) {
+         fprintf(moo, "connect vs pretransfer: %f %f\n",
+                 time_connect, time_pretransfer);
+       }
+       if(time_pretransfer > time_starttransfer) {
+         fprintf(moo, "pretransfer vs starttransfer: %f %f\n",
+                 time_pretransfer, time_starttransfer);
+       }
+       if(time_starttransfer > time_total) {
+         fprintf(moo, "starttransfer vs total: %f %f\n",
+                 time_starttransfer, time_total);
+       }
+
+       fclose(moo);
       }
       }
-      if(time_connect >= time_pretransfer) {
-        fprintf(moo, "connect vs pretransfer: %f %f\n",
-                time_connect, time_pretransfer);
-      }
-      if(time_pretransfer >= time_starttransfer) {
-        fprintf(moo, "pretransfer vs starttransfer: %f %f\n",
-                time_pretransfer, time_starttransfer);
-      }
-      if(time_starttransfer >= time_total) {
-        fprintf(moo, "starttransfer vs total: %f %f\n",
-                time_starttransfer, time_total);
-      }
-
-      fclose(moo);
     }
   }
 
     }
   }
 
index 99b3a0a..9592e0f 100644 (file)
@@ -50,7 +50,7 @@ int test(char *URL)
 
   if (!libtest_arg2) {
     fprintf(stderr, "Usage: <url> <file-to-upload>\n");
 
   if (!libtest_arg2) {
     fprintf(stderr, "Usage: <url> <file-to-upload>\n");
-    return -1;
+    return TEST_ERR_USAGE;
   }
 
   hd_src = fopen(libtest_arg2, "rb");
   }
 
   hd_src = fopen(libtest_arg2, "rb");
@@ -59,7 +59,7 @@ int test(char *URL)
     fprintf(stderr, "fopen() failed with error: %d %s\n",
             error, strerror(error));
     fprintf(stderr, "Error opening file: %s\n", libtest_arg2);
     fprintf(stderr, "fopen() failed with error: %d %s\n",
             error, strerror(error));
     fprintf(stderr, "Error opening file: %s\n", libtest_arg2);
-    return -2; /* if this happens things are major weird */
+    return TEST_ERR_MAJOR_BAD; /* if this happens things are major weird */
   }
 
   /* get the file size of the local file */
   }
 
   /* get the file size of the local file */
@@ -71,13 +71,13 @@ int test(char *URL)
             error, strerror(error));
     fprintf(stderr, "ERROR: cannot open file %s\n", libtest_arg2);
     fclose(hd_src);
             error, strerror(error));
     fprintf(stderr, "ERROR: cannot open file %s\n", libtest_arg2);
     fclose(hd_src);
-    return -1;
+    return TEST_ERR_MAJOR_BAD;
   }
 
   if(! file_info.st_size) {
     fprintf(stderr, "ERROR: file %s has zero size!\n", libtest_arg2);
     fclose(hd_src);
   }
 
   if(! file_info.st_size) {
     fprintf(stderr, "ERROR: file %s has zero size!\n", libtest_arg2);
     fclose(hd_src);
-    return -4;
+    return TEST_ERR_MAJOR_BAD;
   }
 
   if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
   }
 
   if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
@@ -126,7 +126,7 @@ int test(char *URL)
   test_setopt(curl, CURLOPT_POSTQUOTE, headerlist);
 
   /* now specify which file to upload */
   test_setopt(curl, CURLOPT_POSTQUOTE, headerlist);
 
   /* now specify which file to upload */
-  test_setopt(curl, CURLOPT_INFILE, hd_src);
+  test_setopt(curl, CURLOPT_READDATA, hd_src);
 
   /* and give the size of the upload (optional) */
   test_setopt(curl, CURLOPT_INFILESIZE_LARGE,
 
   /* and give the size of the upload (optional) */
   test_setopt(curl, CURLOPT_INFILESIZE_LARGE,
index 4d2864d..4dad0d9 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -40,12 +40,15 @@ struct userdata {
   int counter;
 };
 
   int counter;
 };
 
+int lock[3];
+
 /* lock callback */
 static void my_lock(CURL *handle, curl_lock_data data, curl_lock_access laccess,
           void *useptr )
 {
   const char *what;
   struct userdata *user = (struct userdata *)useptr;
 /* lock callback */
 static void my_lock(CURL *handle, curl_lock_data data, curl_lock_access laccess,
           void *useptr )
 {
   const char *what;
   struct userdata *user = (struct userdata *)useptr;
+  int locknum;
 
   (void)handle;
   (void)laccess;
 
   (void)handle;
   (void)laccess;
@@ -53,17 +56,28 @@ static void my_lock(CURL *handle, curl_lock_data data, curl_lock_access laccess,
   switch ( data ) {
     case CURL_LOCK_DATA_SHARE:
       what = "share";
   switch ( data ) {
     case CURL_LOCK_DATA_SHARE:
       what = "share";
+      locknum = 0;
       break;
     case CURL_LOCK_DATA_DNS:
       what = "dns";
       break;
     case CURL_LOCK_DATA_DNS:
       what = "dns";
+      locknum = 1;
       break;
     case CURL_LOCK_DATA_COOKIE:
       what = "cookie";
       break;
     case CURL_LOCK_DATA_COOKIE:
       what = "cookie";
+      locknum = 2;
       break;
     default:
       fprintf(stderr, "lock: no such data: %d\n", (int)data);
       return;
   }
       break;
     default:
       fprintf(stderr, "lock: no such data: %d\n", (int)data);
       return;
   }
+
+  /* detect locking of locked locks */
+  if(lock[locknum]) {
+    printf("lock: double locked %s\n", what);
+    return;
+  }
+  lock[locknum]++;
+
   printf("lock:   %-6s [%s]: %d\n", what, user->text, user->counter);
   user->counter++;
 }
   printf("lock:   %-6s [%s]: %d\n", what, user->text, user->counter);
   user->counter++;
 }
@@ -73,21 +87,33 @@ static void my_unlock(CURL *handle, curl_lock_data data, void *useptr )
 {
   const char *what;
   struct userdata *user = (struct userdata *)useptr;
 {
   const char *what;
   struct userdata *user = (struct userdata *)useptr;
+  int locknum;
   (void)handle;
   switch ( data ) {
     case CURL_LOCK_DATA_SHARE:
       what = "share";
   (void)handle;
   switch ( data ) {
     case CURL_LOCK_DATA_SHARE:
       what = "share";
+      locknum = 0;
       break;
     case CURL_LOCK_DATA_DNS:
       what = "dns";
       break;
     case CURL_LOCK_DATA_DNS:
       what = "dns";
+      locknum = 1;
       break;
     case CURL_LOCK_DATA_COOKIE:
       what = "cookie";
       break;
     case CURL_LOCK_DATA_COOKIE:
       what = "cookie";
+      locknum = 2;
       break;
     default:
       fprintf(stderr, "unlock: no such data: %d\n", (int)data);
       return;
   }
       break;
     default:
       fprintf(stderr, "unlock: no such data: %d\n", (int)data);
       return;
   }
+
+  /* detect unlocking of unlocked locks */
+  if(!lock[locknum]) {
+    printf("unlock: double unlocked %s\n", what);
+    return;
+  }
+  lock[locknum]--;
+
   printf("unlock: %-6s [%s]: %d\n", what, user->text, user->counter);
   user->counter++;
 }
   printf("unlock: %-6s [%s]: %d\n", what, user->text, user->counter);
   user->counter++;
 }
@@ -149,11 +175,14 @@ int test(char *URL)
 {
   int res;
   CURLSHcode scode = CURLSHE_OK;
 {
   int res;
   CURLSHcode scode = CURLSHE_OK;
+  CURLcode code = CURLE_OK;
   char *url = NULL;
   struct Tdata tdata;
   CURL *curl;
   CURLSH *share;
   struct curl_slist *headers = NULL;
   char *url = NULL;
   struct Tdata tdata;
   CURL *curl;
   CURLSH *share;
   struct curl_slist *headers = NULL;
+  struct curl_slist *cookies = NULL;
+  struct curl_slist *next_cookie = NULL;
   int i;
   struct userdata user;
 
   int i;
   struct userdata user;
 
@@ -270,6 +299,55 @@ int test(char *URL)
   printf( "PERFORM\n" );
   curl_easy_perform( curl );
 
   printf( "PERFORM\n" );
   curl_easy_perform( curl );
 
+  printf( "CLEANUP\n" );
+  curl_easy_cleanup( curl );
+  curl_free(url);
+  curl_slist_free_all( headers );
+
+  /* load cookies */
+  if ((curl = curl_easy_init()) == NULL) {
+    fprintf(stderr, "curl_easy_init() failed\n");
+    curl_share_cleanup(share);
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
+  url = suburl( URL, i );
+  headers = sethost( NULL );
+  test_setopt( curl, CURLOPT_HTTPHEADER, headers );
+  test_setopt( curl, CURLOPT_URL,        url );
+  printf( "CURLOPT_SHARE\n" );
+  test_setopt( curl, CURLOPT_SHARE,      share );
+  printf( "CURLOPT_COOKIELIST ALL\n" );
+  test_setopt( curl, CURLOPT_COOKIELIST, "ALL" );
+  printf( "CURLOPT_COOKIEJAR\n" );
+  test_setopt( curl, CURLOPT_COOKIEFILE, JAR );
+  printf( "CURLOPT_COOKIELIST RELOAD\n" );
+  test_setopt( curl, CURLOPT_COOKIELIST, "RELOAD" );
+
+  code = curl_easy_getinfo(curl, CURLINFO_COOKIELIST, &cookies);
+  if ( code != CURLE_OK )
+  {
+    fprintf(stderr, "curl_easy_getinfo() failed\n");
+    res = TEST_ERR_MAJOR_BAD;
+    goto test_cleanup;
+  }
+  printf("loaded cookies:\n");
+  if ( !cookies )
+  {
+    fprintf(stderr, "  reloading cookies from '%s' failed\n", JAR);
+    res = TEST_ERR_MAJOR_BAD;
+    goto test_cleanup;
+  }
+  printf("-----------------\n");
+  next_cookie = cookies;
+  while ( next_cookie )
+  {
+    printf( "  %s\n", next_cookie->data );
+    next_cookie = next_cookie->next;
+  }
+  printf("-----------------\n");
+  curl_slist_free_all( cookies );
+
   /* try to free share, expect to fail because share is in use*/
   printf( "try SHARE_CLEANUP...\n" );
   scode = curl_share_cleanup( share );
   /* try to free share, expect to fail because share is in use*/
   printf( "try SHARE_CLEANUP...\n" );
   scode = curl_share_cleanup( share );
@@ -286,12 +364,8 @@ test_cleanup:
   /* clean up last handle */
   printf( "CLEANUP\n" );
   curl_easy_cleanup( curl );
   /* clean up last handle */
   printf( "CLEANUP\n" );
   curl_easy_cleanup( curl );
-
-  if ( headers )
-    curl_slist_free_all( headers );
-
-  if ( url )
-    curl_free(url);
+  curl_slist_free_all( headers );
+  curl_free(url);
 
   /* free share */
   printf( "SHARE_CLEANUP\n" );
 
   /* free share */
   printf( "SHARE_CLEANUP\n" );
index 1aca064..7f37309 100644 (file)
@@ -86,7 +86,7 @@ int test(char *URL)
   test_setopt(curl, CURLOPT_READFUNCTION, read_callback);
 
   /* pointer to pass to our read function */
   test_setopt(curl, CURLOPT_READFUNCTION, read_callback);
 
   /* pointer to pass to our read function */
-  test_setopt(curl, CURLOPT_INFILE, &pooh);
+  test_setopt(curl, CURLOPT_READDATA, &pooh);
 
   /* get verbose debug output please */
   test_setopt(curl, CURLOPT_VERBOSE, 1L);
 
   /* get verbose debug output please */
   test_setopt(curl, CURLOPT_VERBOSE, 1L);
index 8278631..c60b2ca 100644 (file)
@@ -97,7 +97,7 @@ int test(char *URL)
   test_setopt(curl, CURLOPT_READFUNCTION, read_callback);
 
   /* pointer to pass to our read function */
   test_setopt(curl, CURLOPT_READFUNCTION, read_callback);
 
   /* pointer to pass to our read function */
-  test_setopt(curl, CURLOPT_INFILE, &pooh);
+  test_setopt(curl, CURLOPT_READDATA, &pooh);
 
   /* get verbose debug output please */
   test_setopt(curl, CURLOPT_VERBOSE, 1L);
 
   /* get verbose debug output please */
   test_setopt(curl, CURLOPT_VERBOSE, 1L);
index c013ac2..7aab3b1 100644 (file)
@@ -61,7 +61,7 @@ int test(char *URL)
   test_setopt(curl, CURLOPT_READFUNCTION, read_callback);
 
   /* pointer to pass to our read function */
   test_setopt(curl, CURLOPT_READFUNCTION, read_callback);
 
   /* pointer to pass to our read function */
-  test_setopt(curl, CURLOPT_INFILE, NULL);
+  test_setopt(curl, CURLOPT_READDATA, NULL);
 
   /* get verbose debug output please */
   test_setopt(curl, CURLOPT_VERBOSE, 1L);
 
   /* get verbose debug output please */
   test_setopt(curl, CURLOPT_VERBOSE, 1L);
index 5fe8dd8..6015d2f 100644 (file)
@@ -36,13 +36,13 @@ int test(char *URL)
   CURL *curl;
   CURLcode res = CURLE_OK;
   FILE *hd_src ;
   CURL *curl;
   CURLcode res = CURLE_OK;
   FILE *hd_src ;
-  int hd ;
+  int hd;
   struct_stat file_info;
   int error;
 
   if (!libtest_arg2) {
     fprintf(stderr, "Usage: <url> <file-to-upload>\n");
   struct_stat file_info;
   int error;
 
   if (!libtest_arg2) {
     fprintf(stderr, "Usage: <url> <file-to-upload>\n");
-    return -1;
+    return TEST_ERR_USAGE;
   }
 
   hd_src = fopen(libtest_arg2, "rb");
   }
 
   hd_src = fopen(libtest_arg2, "rb");
@@ -63,13 +63,13 @@ int test(char *URL)
             error, strerror(error));
     fprintf(stderr, "ERROR: cannot open file %s\n", libtest_arg2);
     fclose(hd_src);
             error, strerror(error));
     fprintf(stderr, "ERROR: cannot open file %s\n", libtest_arg2);
     fclose(hd_src);
-    return -1;
+    return TEST_ERR_MAJOR_BAD;
   }
 
   if(! file_info.st_size) {
     fprintf(stderr, "ERROR: file %s has zero size!\n", libtest_arg2);
     fclose(hd_src);
   }
 
   if(! file_info.st_size) {
     fprintf(stderr, "ERROR: file %s has zero size!\n", libtest_arg2);
     fclose(hd_src);
-    return -4;
+    return TEST_ERR_MAJOR_BAD;
   }
 
   if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
   }
 
   if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
@@ -96,7 +96,7 @@ int test(char *URL)
   test_setopt(curl,CURLOPT_URL, URL);
 
   /* now specify which file to upload */
   test_setopt(curl,CURLOPT_URL, URL);
 
   /* now specify which file to upload */
-  test_setopt(curl, CURLOPT_INFILE, hd_src);
+  test_setopt(curl, CURLOPT_READDATA, hd_src);
 
   /* Now run off and do what you've been told! */
   res = curl_easy_perform(curl);
 
   /* Now run off and do what you've been told! */
   res = curl_easy_perform(curl);
index b766187..7e2f735 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -30,7 +30,10 @@ static char teststring[] =
   "\x72\x79\x20\x64\x61\x74\x61\x20\x77\x69\x74\x68\x20\x61\x6e\x20\x65\x6d"
   "\x62\x65\x64\x64\x65\x64\x20\x4e\x55\x4c\x20\x62\x79\x74\x65\x0a";
 #else
   "\x72\x79\x20\x64\x61\x74\x61\x20\x77\x69\x74\x68\x20\x61\x6e\x20\x65\x6d"
   "\x62\x65\x64\x64\x65\x64\x20\x4e\x55\x4c\x20\x62\x79\x74\x65\x0a";
 #else
-  "This\0 is test binary data with an embedded NUL byte\n";
+{   'T', 'h', 'i', 's', '\0', ' ', 'i', 's', ' ', 't', 'e', 's', 't', ' ',
+    'b', 'i', 'n', 'a', 'r', 'y', ' ', 'd', 'a', 't', 'a', ' ',
+    'w', 'i', 't', 'h', ' ', 'a', 'n', ' ',
+    'e', 'm', 'b', 'e', 'd', 'd', 'e', 'd', ' ', 'N', 'U', 'L'};
 #endif
 
 
 #endif
 
 
@@ -54,7 +57,7 @@ int test(char *URL)
   test_setopt(curl, CURLOPT_URL, URL);
 
 #ifdef LIB545
   test_setopt(curl, CURLOPT_URL, URL);
 
 #ifdef LIB545
-  test_setopt(curl, CURLOPT_POSTFIELDSIZE, (long) sizeof teststring - 1);
+  test_setopt(curl, CURLOPT_POSTFIELDSIZE, (long) sizeof teststring);
 #endif
 
   test_setopt(curl, CURLOPT_COPYPOSTFIELDS, teststring);
 #endif
 
   test_setopt(curl, CURLOPT_COPYPOSTFIELDS, teststring);
@@ -65,6 +68,16 @@ int test(char *URL)
   /* Update the original data to detect non-copy. */
   strcpy(teststring, "FAIL");
 
   /* Update the original data to detect non-copy. */
   strcpy(teststring, "FAIL");
 
+#ifdef LIB545
+  {
+    CURL *handle2;
+    handle2 = curl_easy_duphandle(curl);
+    curl_easy_cleanup(curl);
+
+    curl = handle2;
+  }
+#endif
+
   /* Now, this is a POST request with binary 0 embedded in POST data. */
   res = curl_easy_perform(curl);
 
   /* Now, this is a POST request with binary 0 embedded in POST data. */
   res = curl_easy_perform(curl);
 
index 9806220..a4b4b93 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -21,6 +21,7 @@
  ***************************************************************************/
 #include "test.h"
 
  ***************************************************************************/
 #include "test.h"
 
+#include "warnless.h"
 #include "memdebug.h"
 
 /* For Windows, mainly (may be moved in a config file?) */
 #include "memdebug.h"
 
 /* For Windows, mainly (may be moved in a config file?) */
index dc3bcae..7e5f9e9 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -1354,7 +1354,7 @@ static int test_curl_off_t_formatting(void)
       co_test[i].result[j] = 'X';
     co_test[i].result[BUFSZ-1] = '\0';
 
       co_test[i].result[j] = 'X';
     co_test[i].result[BUFSZ-1] = '\0';
 
-    (void)curl_msprintf(co_test[i].result, "%" FORMAT_OFF_T, co_test[i].num);
+    (void)curl_msprintf(co_test[i].result, "%" CURL_FORMAT_CURL_OFF_T, co_test[i].num);
 
     if(memcmp(co_test[i].result,
                co_test[i].expected,
 
     if(memcmp(co_test[i].result,
                co_test[i].expected,
index c5cf603..0e8bd2f 100644 (file)
@@ -126,7 +126,7 @@ int test(char *URL)
   test_setopt(curl, CURLOPT_READFUNCTION, read_callback);
 
   /* pointer to pass to our read function */
   test_setopt(curl, CURLOPT_READFUNCTION, read_callback);
 
   /* pointer to pass to our read function */
-  test_setopt(curl, CURLOPT_INFILE, &pooh);
+  test_setopt(curl, CURLOPT_READDATA, &pooh);
 
   /* get verbose debug output please */
   test_setopt(curl, CURLOPT_VERBOSE, 1L);
 
   /* get verbose debug output please */
   test_setopt(curl, CURLOPT_VERBOSE, 1L);
index 6b09267..08c536c 100644 (file)
@@ -43,6 +43,7 @@ int test(char *URL)
 {
   CURL *curl;
   CURLcode res=CURLE_OK;
 {
   CURL *curl;
   CURLcode res=CURLE_OK;
+  double content_length = 0.0;
 
   if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
     fprintf(stderr, "curl_global_init() failed\n");
 
   if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
     fprintf(stderr, "curl_global_init() failed\n");
@@ -74,6 +75,17 @@ int test(char *URL)
   /* Perform the request, res will get the return code */
   res = curl_easy_perform(curl);
 
   /* Perform the request, res will get the return code */
   res = curl_easy_perform(curl);
 
+  if (!res) {
+    FILE *moo;
+    res = curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD,
+                            &content_length);
+    moo = fopen(libtest_arg2, "wb");
+    if (moo) {
+      fprintf(moo, "CL: %.0f\n", content_length);
+      fclose(moo);
+    }
+  }
+
 test_cleanup:
 
   /* always cleanup */
 test_cleanup:
 
   /* always cleanup */
index 9576132..103a89c 100644 (file)
@@ -35,8 +35,7 @@ static CURLcode send_request(CURL *curl, const char *url, int seq,
   char* full_url = malloc(strlen(url) + 4 + 1);
   if (!full_url) {
     fprintf(stderr, "Not enough memory for full url\n");
   char* full_url = malloc(strlen(url) + 4 + 1);
   if (!full_url) {
     fprintf(stderr, "Not enough memory for full url\n");
-    res = CURLE_OUT_OF_MEMORY;
-    goto test_cleanup;
+    return CURLE_OUT_OF_MEMORY;
   }
 
   sprintf(full_url, "%s%04d", url, seq);
   }
 
   sprintf(full_url, "%s%04d", url, seq);
index 192f037..032eaa0 100644 (file)
 #ifdef CURL_STATICLIB
 #  define LIBHOSTNAME_EXTERN
 #elif defined(WIN32) || defined(__SYMBIAN32__)
 #ifdef CURL_STATICLIB
 #  define LIBHOSTNAME_EXTERN
 #elif defined(WIN32) || defined(__SYMBIAN32__)
-#  if defined(BUILDING_LIBCURL)
-#    define LIBHOSTNAME_EXTERN  __declspec(dllexport)
-#  else
-#    define LIBHOSTNAME_EXTERN  __declspec(dllimport)
-#  endif
-#elif defined(BUILDING_LIBCURL) && defined(CURL_HIDDEN_SYMBOLS)
+#  define LIBHOSTNAME_EXTERN  __declspec(dllexport)
+#elif defined(CURL_HIDDEN_SYMBOLS)
 #  define LIBHOSTNAME_EXTERN CURL_EXTERN_SYMBOL
 #else
 #  define LIBHOSTNAME_EXTERN
 #  define LIBHOSTNAME_EXTERN CURL_EXTERN_SYMBOL
 #else
 #  define LIBHOSTNAME_EXTERN
index 5de8c7c..4186c4f 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -58,6 +58,8 @@ extern struct timeval tv_test_start; /* for test timing */
 extern int select_wrapper(int nfds, fd_set *rd, fd_set *wr, fd_set *exc,
                           struct timeval *tv);
 
 extern int select_wrapper(int nfds, fd_set *rd, fd_set *wr, fd_set *exc,
                           struct timeval *tv);
 
+extern void wait_ms(int ms); /* wait this many milliseconds */
+
 extern int test(char *URL); /* the actual test function provided by each
                                individual libXXX.c file */
 
 extern int test(char *URL); /* the actual test function provided by each
                                individual libXXX.c file */
 
index 15e1214..b680273 100755 (executable)
@@ -23,7 +23,7 @@ $curl_protocols =~ /\w+: (.*)$/;
 @curl = split / /,$1;
 
 # These features are not supported by curl-config
 @curl = split / /,$1;
 
 # These features are not supported by curl-config
-@curl = grep(!/^(Debug|TrackMemory|Metalink|Largefile|CharConv|GSS-Negotiate|SPNEGO)$/i, @curl);
+@curl = grep(!/^(Debug|TrackMemory|Metalink|Largefile|CharConv)$/i, @curl);
 @curl = sort @curl;
 
 # Read the output of curl-config
 @curl = sort @curl;
 
 # Read the output of curl-config
@@ -32,6 +32,7 @@ open(CURLCONFIG, "sh $ARGV[0] --$what|") || die "Can't get curl-config $what lis
 while( <CURLCONFIG> )
 {
     chomp;
 while( <CURLCONFIG> )
 {
     chomp;
+    # ignore curl-config --features not in curl's feature list
     push @curl_config, lc($_);
 }
 close CURLCONFIG;
     push @curl_config, lc($_);
 }
 close CURLCONFIG;
index 45f8783..cb765a6 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2007, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -49,10 +49,14 @@ default, the test script stops as soon as an error is detected.
 .IP "-bN"
 Use N as the base TCP/UDP port number on which to start the test servers.
 .IP "-c <curl>"
 .IP "-bN"
 Use N as the base TCP/UDP port number on which to start the test servers.
 .IP "-c <curl>"
-Provide a custom curl binary to run the tests with. Default is the curl
-executable in the build tree.
+Provide a path to a custom curl binary to run the tests with. Default is the
+curl executable in the build tree.
 .IP "-d"
 Enable protocol debug: have the servers display protocol output.
 .IP "-d"
 Enable protocol debug: have the servers display protocol output.
+.IP "-e"
+Run the test event-based (if possible). This will make runtests invoke curl
+with --test-event option. This option only works if both curl and libcurl were
+built debug-enabled.
 .IP "-g"
 Run the given test(s) with gdb. This is best used on a single test case and
 curl built --disable-shared. This then fires up gdb with command line set to
 .IP "-g"
 Run the given test(s) with gdb. This is best used on a single test case and
 curl built --disable-shared. This then fires up gdb with command line set to
@@ -88,6 +92,10 @@ through everyone, which is very handy when debugging and then often in
 combination with \fI-g\fP.
 .IP "-v"
 Enable verbose output. Speaks more than default.
 combination with \fI-g\fP.
 .IP "-v"
 Enable verbose output. Speaks more than default.
+.IP "-vc <curl>"
+Provide a path to a custom curl binary to run when verifying that the servers
+running are indeed our test servers. Default is the curl executable in the
+build tree.
 .SH "RUNNING TESTS"
 Many tests have conditions that must be met before the test case can run
 fine. They could depend on built-in features in libcurl or features present in
 .SH "RUNNING TESTS"
 Many tests have conditions that must be met before the test case can run
 fine. They could depend on built-in features in libcurl or features present in
index b8eb475..6a02b92 100644 (file)
@@ -57,9 +57,11 @@ p.roffit {
 <p class="level0"><a name="-bN"></a><span class="nroffip">-bN</span> 
 <p class="level1">Use N as the base TCP/UDP port number on which to start the test servers. 
 <p class="level0"><a name="-c"></a><span class="nroffip">-c &lt;curl&gt;</span> 
 <p class="level0"><a name="-bN"></a><span class="nroffip">-bN</span> 
 <p class="level1">Use N as the base TCP/UDP port number on which to start the test servers. 
 <p class="level0"><a name="-c"></a><span class="nroffip">-c &lt;curl&gt;</span> 
-<p class="level1">Provide a custom curl binary to run the tests with. Default is the curl executable in the build tree. 
+<p class="level1">Provide a path to a custom curl binary to run the tests with. Default is the curl executable in the build tree. 
 <p class="level0"><a name="-d"></a><span class="nroffip">-d</span> 
 <p class="level1">Enable protocol debug: have the servers display protocol output. 
 <p class="level0"><a name="-d"></a><span class="nroffip">-d</span> 
 <p class="level1">Enable protocol debug: have the servers display protocol output. 
+<p class="level0"><a name="-e"></a><span class="nroffip">-e</span> 
+<p class="level1">Run the test event-based (if possible). This will make runtests invoke curl with --test-event option. This option only works if both curl and libcurl were built debug-enabled. 
 <p class="level0"><a name="-g"></a><span class="nroffip">-g</span> 
 <p class="level1">Run the given test(s) with gdb. This is best used on a single test case and curl built --disable-shared. This then fires up gdb with command line set to run the specified test case. Simply (set a break-point and) type 'run' to start. 
 <p class="level0"><a name="-h"></a><span class="nroffip">-h</span> 
 <p class="level0"><a name="-g"></a><span class="nroffip">-g</span> 
 <p class="level1">Run the given test(s) with gdb. This is best used on a single test case and curl built --disable-shared. This then fires up gdb with command line set to run the specified test case. Simply (set a break-point and) type 'run' to start. 
 <p class="level0"><a name="-h"></a><span class="nroffip">-h</span> 
@@ -81,7 +83,9 @@ p.roffit {
 <p class="level0"><a name="-tnum"></a><span class="nroffip">-t[num]</span> 
 <p class="level1">Selects a <span Class="bold">torture</span> test for the given tests. This makes runtests.pl first run the tests once and count the number of memory allocations made. It then reruns the test that number of times, each time forcing one of the allocations to fail until all allocs have been tested. By setting <span Class="emphasis">num</span> you can force the allocation with that number to be set to fail at once instead of looping through everyone, which is very handy when debugging and then often in combination with <a class="emphasis" href="#-g">-g</a>. 
 <p class="level0"><a name="-v"></a><span class="nroffip">-v</span> 
 <p class="level0"><a name="-tnum"></a><span class="nroffip">-t[num]</span> 
 <p class="level1">Selects a <span Class="bold">torture</span> test for the given tests. This makes runtests.pl first run the tests once and count the number of memory allocations made. It then reruns the test that number of times, each time forcing one of the allocations to fail until all allocs have been tested. By setting <span Class="emphasis">num</span> you can force the allocation with that number to be set to fail at once instead of looping through everyone, which is very handy when debugging and then often in combination with <a class="emphasis" href="#-g">-g</a>. 
 <p class="level0"><a name="-v"></a><span class="nroffip">-v</span> 
-<p class="level1">Enable verbose output. Speaks more than default. <a name="RUNNING"></a><h2 class="nroffsh">RUNNING TESTS</h2>
+<p class="level1">Enable verbose output. Speaks more than default. 
+<p class="level0"><a name="-vc"></a><span class="nroffip">-vc &lt;curl&gt;</span> 
+<p class="level1">Provide a path to a custom curl binary to run when verifying that the servers running are indeed our test servers. Default is the curl executable in the build tree. <a name="RUNNING"></a><h2 class="nroffsh">RUNNING TESTS</h2>
 <p class="level0">Many tests have conditions that must be met before the test case can run fine. They could depend on built-in features in libcurl or features present in the operating system or even in third-party libraries that curl may or may not use. 
 <p class="level0">The test script checks most of these by itself to determine when it is safe to attempt to run each test.  Those which cannot be run due to failed requirements will simply be skipped and listed at the completion of all test cases.  In some unusual configurations, the test script cannot make the correct determination for all tests.  In these cases, the problematic tests can be skipped using the "!keyword" skip feature documented earlier. <a name="WRITING"></a><h2 class="nroffsh">WRITING TESTS</h2>
 <p class="level0">The simplest way to write test cases is to start with a similar existing test, save it with a new number and then adjust it to fit. There's an attempt to document the test case file format in the tests/FILEFORMAT. <p class="roffit">
 <p class="level0">Many tests have conditions that must be met before the test case can run fine. They could depend on built-in features in libcurl or features present in the operating system or even in third-party libraries that curl may or may not use. 
 <p class="level0">The test script checks most of these by itself to determine when it is safe to attempt to run each test.  Those which cannot be run due to failed requirements will simply be skipped and listed at the completion of all test cases.  In some unusual configurations, the test script cannot make the correct determination for all tests.  In these cases, the problematic tests can be skipped using the "!keyword" skip feature documented earlier. <a name="WRITING"></a><h2 class="nroffsh">WRITING TESTS</h2>
 <p class="level0">The simplest way to write test cases is to start with a similar existing test, save it with a new number and then adjust it to fit. There's an attempt to document the test case file format in the tests/FILEFORMAT. <p class="roffit">
index df94a5e..994123a 100644 (file)
Binary files a/tests/runtests.pdf and b/tests/runtests.pdf differ
index 96df8d5..846687c 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -141,6 +141,7 @@ my $HTTPTLSPORT;         # HTTP TLS (non-stunnel) server port
 my $HTTPTLS6PORT;        # HTTP TLS (non-stunnel) IPv6 server port
 my $HTTPPROXYPORT;       # HTTP proxy port, when using CONNECT
 my $HTTPPIPEPORT;        # HTTP pipelining port
 my $HTTPTLS6PORT;        # HTTP TLS (non-stunnel) IPv6 server port
 my $HTTPPROXYPORT;       # HTTP proxy port, when using CONNECT
 my $HTTPPIPEPORT;        # HTTP pipelining port
+my $HTTPUNIXPATH;        # HTTP server Unix domain socket path
 
 my $srcdir = $ENV{'srcdir'} || '.';
 my $CURL="../src/curl".exe_ext(); # what curl executable to run on the tests
 
 my $srcdir = $ENV{'srcdir'} || '.';
 my $CURL="../src/curl".exe_ext(); # what curl executable to run on the tests
@@ -191,44 +192,60 @@ my $pwd = getcwd();          # current working directory
 my $start;
 my $ftpchecktime=1; # time it took to verify our test FTP server
 
 my $start;
 my $ftpchecktime=1; # time it took to verify our test FTP server
 
-my $stunnel = checkcmd("stunnel4") || checkcmd("stunnel");
+my $stunnel = checkcmd("stunnel4") || checkcmd("tstunnel") || checkcmd("stunnel");
 my $valgrind = checktestcmd("valgrind");
 my $valgrind_logfile="--logfile";
 my $valgrind_tool;
 my $gdb = checktestcmd("gdb");
 my $httptlssrv = find_httptlssrv();
 
 my $valgrind = checktestcmd("valgrind");
 my $valgrind_logfile="--logfile";
 my $valgrind_tool;
 my $gdb = checktestcmd("gdb");
 my $httptlssrv = find_httptlssrv();
 
-my $ssl_version; # set if libcurl is built with SSL support
-my $large_file;  # set if libcurl is built with large file support
-my $has_idn;     # set if libcurl is built with IDN support
-my $http_ipv6;   # set if HTTP server has IPv6 support
-my $ftp_ipv6;    # set if FTP server has IPv6 support
-my $tftp_ipv6;   # set if TFTP server has IPv6 support
-my $gopher_ipv6; # set if Gopher server has IPv6 support
-my $has_ipv6;    # set if libcurl is built with IPv6 support
-my $has_libz;    # set if libcurl is built with libz support
+my $ssl_version;    # set if libcurl is built with SSL support
+my $large_file;     # set if libcurl is built with large file support
+my $has_idn;        # set if libcurl is built with IDN support
+my $http_ipv6;      # set if HTTP server has IPv6 support
+my $http_unix;      # set if HTTP server has Unix sockets support
+my $ftp_ipv6;       # set if FTP server has IPv6 support
+my $tftp_ipv6;      # set if TFTP server has IPv6 support
+my $gopher_ipv6;    # set if Gopher server has IPv6 support
+my $has_ipv6;       # set if libcurl is built with IPv6 support
+my $has_unix;       # set if libcurl is built with Unix sockets support
+my $has_libz;       # set if libcurl is built with libz support
 my $has_getrlimit;  # set if system has getrlimit()
 my $has_getrlimit;  # set if system has getrlimit()
-my $has_ntlm;    # set if libcurl is built with NTLM support
-my $has_ntlm_wb; # set if libcurl is built with NTLM delegation to winbind
-my $has_charconv;# set if libcurl is built with CharConv support
-my $has_tls_srp; # set if libcurl is built with TLS-SRP support
-my $has_metalink;# set if curl is built with Metalink support
-
-my $has_openssl;  # built with a lib using an OpenSSL-like API
-my $has_gnutls;   # built with GnuTLS
-my $has_nss;      # built with NSS
-my $has_yassl;    # built with yassl
-my $has_polarssl; # built with polarssl
-my $has_axtls;    # built with axTLS
-my $has_winssl;   # built with WinSSL (Schannel/SSPI)
-my $has_darwinssl;# build with DarwinSSL (Secure Transport)
+my $has_ntlm;       # set if libcurl is built with NTLM support
+my $has_ntlm_wb;    # set if libcurl is built with NTLM delegation to winbind
+my $has_sspi;       # set if libcurl is built with Windows SSPI
+my $has_gssapi;     # set if libcurl is built with a GSS-API library
+my $has_kerberos;   # set if libcurl is built with Kerberos support
+my $has_spnego;     # set if libcurl is built with SPNEGO support
+my $has_charconv;   # set if libcurl is built with CharConv support
+my $has_tls_srp;    # set if libcurl is built with TLS-SRP support
+my $has_metalink;   # set if curl is built with Metalink support
+my $has_http2;      # set if libcurl is built with HTTP2 support
+my $has_crypto;     # set if libcurl is built with cryptographic support
+my $has_cares;      # set if built with c-ares
+my $has_threadedres;# set if built with threaded resolver
+
+# this version is decided by the particular nghttp2 library that is being used
+my $h2cver = "h2c-14";
+
+my $has_openssl;    # built with a lib using an OpenSSL-like API
+my $has_gnutls;     # built with GnuTLS
+my $has_nss;        # built with NSS
+my $has_yassl;      # built with yassl
+my $has_polarssl;   # built with polarssl
+my $has_axtls;      # built with axTLS
+my $has_winssl;     # built with WinSSL    (Secure Channel aka Schannel)
+my $has_darwinssl;  # build with DarwinSSL (Secure Transport)
+
+my $has_sslpinning; # built with a TLS backend that supports pinning
 
 my $has_shared = "unknown";  # built shared
 
 
 my $has_shared = "unknown";  # built shared
 
-my $ssllib;      # name of the lib we use (for human presentation)
-my $has_crypto;  # set if libcurl is built with cryptographic support
-my $has_textaware; # set if running on a system that has a text mode concept
-  # on files. Windows for example
+my $resolver;       # name of the resolver backend (for human presentation)
+my $ssllib;         # name of the SSL library we use (for human presentation)
+
+my $has_textaware;  # set if running on a system that has a text mode concept
+                    # on files. Windows for example
 
 my @protocols;   # array of lowercase supported protocol servers
 
 
 my @protocols;   # array of lowercase supported protocol servers
 
@@ -274,6 +291,7 @@ my $gdbxwin;      # use windowed gdb when using gdb
 my $keepoutfiles; # keep stdout and stderr files after tests
 my $listonly;     # only list the tests
 my $postmortem;   # display detailed info about failed tests
 my $keepoutfiles; # keep stdout and stderr files after tests
 my $listonly;     # only list the tests
 my $postmortem;   # display detailed info about failed tests
+my $run_event_based; # run curl with --test-event to test the event API
 
 my %run;          # running server
 my %doesntrun;    # servers that don't work, identified by pidfile
 
 my %run;          # running server
 my %doesntrun;    # servers that don't work, identified by pidfile
@@ -299,12 +317,14 @@ my $USER = $ENV{USER};          # Linux
 if (!$USER) {
     $USER = $ENV{USERNAME};     # Windows
     if (!$USER) {
 if (!$USER) {
     $USER = $ENV{USERNAME};     # Windows
     if (!$USER) {
-        $USER = $ENV{LOGNAME};  # Some UNIX (I think)
+        $USER = $ENV{LOGNAME};  # Some Unix (I think)
     }
 }
 
 # enable memory debugging if curl is compiled with it
 $ENV{'CURL_MEMDEBUG'} = $memdump;
     }
 }
 
 # enable memory debugging if curl is compiled with it
 $ENV{'CURL_MEMDEBUG'} = $memdump;
+$ENV{'CURL_ENTROPY'}="12345678";
+$ENV{'CURL_FORCETIME'}=1; # for debug NTLM magic
 $ENV{'HOME'}=$pwd;
 
 sub catch_zap {
 $ENV{'HOME'}=$pwd;
 
 sub catch_zap {
@@ -340,7 +360,7 @@ delete $ENV{'CURL_CA_BUNDLE'} if($ENV{'CURL_CA_BUNDLE'});
 # Load serverpidfile hash with pidfile names for all possible servers.
 #
 sub init_serverpidfile_hash {
 # Load serverpidfile hash with pidfile names for all possible servers.
 #
 sub init_serverpidfile_hash {
-  for my $proto (('ftp', 'http', 'imap', 'pop3', 'smtp', 'http')) {
+  for my $proto (('ftp', 'http', 'imap', 'pop3', 'smtp')) {
     for my $ssl (('', 's')) {
       for my $ipvnum ((4, 6)) {
         for my $idnum ((1, 2, 3)) {
     for my $ssl (('', 's')) {
       for my $ipvnum ((4, 6)) {
         for my $idnum ((1, 2, 3)) {
@@ -360,6 +380,13 @@ sub init_serverpidfile_hash {
       }
     }
   }
       }
     }
   }
+  for my $proto (('http', 'imap', 'pop3', 'smtp')) {
+    for my $ssl (('', 's')) {
+      my $serv = servername_id("$proto$ssl", "unix", 1);
+      my $pidf = server_pidfilename("$proto$ssl", "unix", 1);
+      $serverpidfile{$serv} = $pidf;
+    }
+  }
 }
 
 #######################################################################
 }
 
 #######################################################################
@@ -495,7 +522,7 @@ sub checktestcmd {
 sub runclient {
     my ($cmd)=@_;
     my $ret = system($cmd);
 sub runclient {
     my ($cmd)=@_;
     my $ret = system($cmd);
-    print "CMD ($ret): $cmd\n" if($verbose);
+    print "CMD ($ret): $cmd\n" if($verbose && !$torture);
     return $ret;
 
 # This is one way to test curl on a remote machine
     return $ret;
 
 # This is one way to test curl on a remote machine
@@ -579,7 +606,7 @@ sub torture {
         else {
             $ret = runclient($testcmd);
         }
         else {
             $ret = runclient($testcmd);
         }
-        #logmsg "$_ Returned " . $ret >> 8 . "\n";
+        #logmsg "$_ Returned " . ($ret >> 8) . "\n";
 
         # Now clear the variable again
         delete $ENV{'CURL_MEMLIMIT'} if($ENV{'CURL_MEMLIMIT'});
 
         # Now clear the variable again
         delete $ENV{'CURL_MEMLIMIT'} if($ENV{'CURL_MEMLIMIT'});
@@ -593,7 +620,7 @@ sub torture {
 
         # verify that it returns a proper error code, doesn't leak memory
         # and doesn't core dump
 
         # verify that it returns a proper error code, doesn't leak memory
         # and doesn't core dump
-        if($ret & 255) {
+        if(($ret & 255) || ($ret >> 8) >= 128) {
             logmsg " system() returned $ret\n";
             $fail=1;
         }
             logmsg " system() returned $ret\n";
             $fail=1;
         }
@@ -645,11 +672,11 @@ sub stopserver {
     # All servers relative to the given one must be stopped also
     #
     my @killservers;
     # All servers relative to the given one must be stopped also
     #
     my @killservers;
-    if($server =~ /^(ftp|http|imap|pop3|smtp|httppipe)s((\d*)(-ipv6|))$/) {
+    if($server =~ /^(ftp|http|imap|pop3|smtp|httppipe)s((\d*)(-ipv6|-unix|))$/) {
         # given a stunnel based ssl server, also kill non-ssl underlying one
         push @killservers, "${1}${2}";
     }
         # given a stunnel based ssl server, also kill non-ssl underlying one
         push @killservers, "${1}${2}";
     }
-    elsif($server =~ /^(ftp|http|imap|pop3|smtp|httppipe)((\d*)(-ipv6|))$/) {
+    elsif($server =~ /^(ftp|http|imap|pop3|smtp|httppipe)((\d*)(-ipv6|-unix|))$/) {
         # given a non-ssl server, also kill stunnel based ssl piggybacking one
         push @killservers, "${1}s${2}";
     }
         # given a non-ssl server, also kill stunnel based ssl piggybacking one
         push @killservers, "${1}s${2}";
     }
@@ -695,10 +722,12 @@ sub stopserver {
 # assign requested address")
 #
 sub verifyhttp {
 # assign requested address")
 #
 sub verifyhttp {
-    my ($proto, $ipvnum, $idnum, $ip, $port) = @_;
+    my ($proto, $ipvnum, $idnum, $ip, $port_or_path) = @_;
     my $server = servername_id($proto, $ipvnum, $idnum);
     my $pid = 0;
     my $bonus="";
     my $server = servername_id($proto, $ipvnum, $idnum);
     my $pid = 0;
     my $bonus="";
+    # $port_or_path contains a path for Unix sockets, sws ignores the port
+    my $port = ($ipvnum eq "unix") ? 80 : $port_or_path;
 
     my $verifyout = "$LOGDIR/".
         servername_canon($proto, $ipvnum, $idnum) .'_verify.out';
 
     my $verifyout = "$LOGDIR/".
         servername_canon($proto, $ipvnum, $idnum) .'_verify.out';
@@ -718,6 +747,7 @@ sub verifyhttp {
     $flags .= "--silent ";
     $flags .= "--verbose ";
     $flags .= "--globoff ";
     $flags .= "--silent ";
     $flags .= "--verbose ";
     $flags .= "--globoff ";
+    $flags .= "--unix-socket '$port_or_path' " if $ipvnum eq "unix";
     $flags .= "-1 "         if($has_axtls);
     $flags .= "--insecure " if($proto eq 'https');
     $flags .= "\"$proto://$ip:$port/${bonus}verifiedserver\"";
     $flags .= "-1 "         if($has_axtls);
     $flags .= "--insecure " if($proto eq 'https');
     $flags .= "\"$proto://$ip:$port/${bonus}verifiedserver\"";
@@ -788,14 +818,6 @@ sub verifyftp {
     if($proto eq "ftps") {
         $extra .= "--insecure --ftp-ssl-control ";
     }
     if($proto eq "ftps") {
         $extra .= "--insecure --ftp-ssl-control ";
     }
-    elsif($proto eq "smtp") {
-        # SMTP is a bit different since it requires more options and it
-        # has _no_ output!
-        $extra .= "--mail-rcpt verifiedserver ";
-        $extra .= "--mail-from fake ";
-        $extra .= "--upload /dev/null ";
-        $extra .= "--stderr - "; # move stderr to parse the verbose stuff
-    }
 
     my $flags = "--max-time $server_response_maxtime ";
     $flags .= "--silent ";
 
     my $flags = "--max-time $server_response_maxtime ";
     $flags .= "--silent ";
@@ -962,7 +984,7 @@ sub verifysftp {
     }
     # Connect to sftp server, authenticate and run a remote pwd
     # command using our generated configuration and key files
     }
     # Connect to sftp server, authenticate and run a remote pwd
     # command using our generated configuration and key files
-    my $cmd = "$sftp -b $sftpcmds -F $sftpconfig -S $ssh $ip > $sftplog 2>&1";
+    my $cmd = "\"$sftp\" -b $sftpcmds -F $sftpconfig -S \"$ssh\" $ip > $sftplog 2>&1";
     my $res = runclient($cmd);
     # Search for pwd command response in log file
     if(open(SFTPLOGFILE, "<$sftplog")) {
     my $res = runclient($cmd);
     # Search for pwd command response in log file
     if(open(SFTPLOGFILE, "<$sftplog")) {
@@ -1037,7 +1059,7 @@ sub verifyhttptls {
         close(FILE);
     }
 
         close(FILE);
     }
 
-    if($data && ($data =~ /GNUTLS/) && open(FILE, "<$pidfile")) {
+    if($data && ($data =~ /(GNUTLS|GnuTLS)/) && open(FILE, "<$pidfile")) {
         $pid=0+<FILE>;
         close(FILE);
         if($pid > 0) {
         $pid=0+<FILE>;
         close(FILE);
         if($pid > 0) {
@@ -1165,7 +1187,7 @@ sub responsiveserver {
 # start the http server
 #
 sub runhttpserver {
 # start the http server
 #
 sub runhttpserver {
-    my ($proto, $verbose, $alt, $port) = @_;
+    my ($proto, $verbose, $alt, $port_or_path) = @_;
     my $ip = $HOSTIP;
     my $ipvnum = 4;
     my $idnum = 1;
     my $ip = $HOSTIP;
     my $ipvnum = 4;
     my $idnum = 1;
@@ -1192,6 +1214,10 @@ sub runhttpserver {
         $exe = "python $srcdir/http_pipe.py";
         $verbose_flag .= "1 ";
     }
         $exe = "python $srcdir/http_pipe.py";
         $verbose_flag .= "1 ";
     }
+    elsif($alt eq "unix") {
+        # IP (protocol) is mutually exclusive with Unix sockets
+        $ipvnum = "unix";
+    }
 
     $server = servername_id($proto, $ipvnum, $idnum);
 
 
     $server = servername_id($proto, $ipvnum, $idnum);
 
@@ -1217,7 +1243,12 @@ sub runhttpserver {
     $flags .= $verbose_flag if($debugprotocol);
     $flags .= "--pidfile \"$pidfile\" --logfile \"$logfile\" ";
     $flags .= "--id $idnum " if($idnum > 1);
     $flags .= $verbose_flag if($debugprotocol);
     $flags .= "--pidfile \"$pidfile\" --logfile \"$logfile\" ";
     $flags .= "--id $idnum " if($idnum > 1);
-    $flags .= "--ipv$ipvnum --port $port --srcdir \"$srcdir\"";
+    if($ipvnum eq "unix") {
+        $flags .= "--unix-socket '$port_or_path' ";
+    } else {
+        $flags .= "--ipv$ipvnum --port $port_or_path ";
+    }
+    $flags .= "--srcdir \"$srcdir\"";
 
     my $cmd = "$exe $flags";
     my ($httppid, $pid2) = startnew($cmd, $pidfile, 15, 0);
 
     my $cmd = "$exe $flags";
     my ($httppid, $pid2) = startnew($cmd, $pidfile, 15, 0);
@@ -1232,7 +1263,7 @@ sub runhttpserver {
     }
 
     # Server is up. Verify that we can speak to it.
     }
 
     # Server is up. Verify that we can speak to it.
-    my $pid3 = verifyserver($proto, $ipvnum, $idnum, $ip, $port);
+    my $pid3 = verifyserver($proto, $ipvnum, $idnum, $ip, $port_or_path);
     if(!$pid3) {
         logmsg "RUN: $srvrname server failed verification\n";
         # failed to talk to it properly. Kill the server and return failure
     if(!$pid3) {
         logmsg "RUN: $srvrname server failed verification\n";
         # failed to talk to it properly. Kill the server and return failure
@@ -1452,6 +1483,7 @@ sub runhttptlsserver {
     $flags .= "--http ";
     $flags .= "--debug 1 " if($debugprotocol);
     $flags .= "--port $port ";
     $flags .= "--http ";
     $flags .= "--debug 1 " if($debugprotocol);
     $flags .= "--port $port ";
+    $flags .= "--priority NORMAL:+SRP ";
     $flags .= "--srppasswd $srcdir/certs/srp-verifier-db ";
     $flags .= "--srppasswdconf $srcdir/certs/srp-verifier-conf";
 
     $flags .= "--srppasswd $srcdir/certs/srp-verifier-db ";
     $flags .= "--srppasswdconf $srcdir/certs/srp-verifier-conf";
 
@@ -2034,7 +2066,7 @@ sub runsocksserver {
     $sshlog  = server_logfilename($LOGDIR, 'socks', $ipvnum, $idnum);
 
     # start our socks server
     $sshlog  = server_logfilename($LOGDIR, 'socks', $ipvnum, $idnum);
 
     # start our socks server
-    my $cmd="$ssh -N -F $sshconfig $ip > $sshlog 2>&1";
+    my $cmd="\"$ssh\" -N -F $sshconfig $ip > $sshlog 2>&1";
     my ($sshpid, $pid2) = startnew($cmd, $pidfile, 30, 1); # fake pidfile
 
     if($sshpid <= 0 || !pidexists($sshpid)) {
     my ($sshpid, $pid2) = startnew($cmd, $pidfile, 30, 1); # fake pidfile
 
     if($sshpid <= 0 || !pidexists($sshpid)) {
@@ -2072,7 +2104,7 @@ sub runsocksserver {
 # be used to verify that a server present in %run hash is still functional
 #
 sub responsive_http_server {
 # be used to verify that a server present in %run hash is still functional
 #
 sub responsive_http_server {
-    my ($proto, $verbose, $alt, $port) = @_;
+    my ($proto, $verbose, $alt, $port_or_path) = @_;
     my $ip = $HOSTIP;
     my $ipvnum = 4;
     my $idnum = 1;
     my $ip = $HOSTIP;
     my $ipvnum = 4;
     my $idnum = 1;
@@ -2085,8 +2117,12 @@ sub responsive_http_server {
     elsif($alt eq "proxy") {
         $idnum = 2;
     }
     elsif($alt eq "proxy") {
         $idnum = 2;
     }
+    elsif($alt eq "unix") {
+        # IP (protocol) is mutually exclusive with Unix sockets
+        $ipvnum = "unix";
+    }
 
 
-    return &responsiveserver($proto, $ipvnum, $idnum, $ip, $port);
+    return &responsiveserver($proto, $ipvnum, $idnum, $ip, $port_or_path);
 }
 
 #######################################################################
 }
 
 #######################################################################
@@ -2207,37 +2243,10 @@ sub cleardir {
 }
 
 #######################################################################
 }
 
 #######################################################################
-# filter out the specified pattern from the given input file and store the
-# results in the given output file
-#
-sub filteroff {
-    my $infile=$_[0];
-    my $filter=$_[1];
-    my $ofile=$_[2];
-
-    open(IN, "<$infile")
-        || return 1;
-
-    open(OUT, ">$ofile")
-        || return 1;
-
-    # logmsg "FILTER: off $filter from $infile to $ofile\n";
-
-    while(<IN>) {
-        $_ =~ s/$filter//;
-        print OUT $_;
-    }
-    close(IN);
-    close(OUT);
-    return 0;
-}
-
-#######################################################################
 # compare test results with the expected output, we might filter off
 # some pattern that is allowed to differ, output test results
 #
 sub compare {
 # compare test results with the expected output, we might filter off
 # some pattern that is allowed to differ, output test results
 #
 sub compare {
-    # filter off patterns _before_ this comparison!
     my ($testnum, $testname, $subject, $firstref, $secondref)=@_;
 
     my $result = compareparts($firstref, $secondref);
     my ($testnum, $testname, $subject, $firstref, $secondref)=@_;
 
     my $result = compareparts($firstref, $secondref);
@@ -2289,6 +2298,7 @@ sub checksystem {
     @version = <VERSOUT>;
     close(VERSOUT);
 
     @version = <VERSOUT>;
     close(VERSOUT);
 
+    $resolver="stock";
     for(@version) {
         chomp;
 
     for(@version) {
         chomp;
 
@@ -2324,10 +2334,12 @@ sub checksystem {
            }
            elsif ($libcurl =~ /openssl/i) {
                $has_openssl=1;
            }
            elsif ($libcurl =~ /openssl/i) {
                $has_openssl=1;
+               $has_sslpinning=1;
                $ssllib="OpenSSL";
            }
            elsif ($libcurl =~ /gnutls/i) {
                $has_gnutls=1;
                $ssllib="OpenSSL";
            }
            elsif ($libcurl =~ /gnutls/i) {
                $has_gnutls=1;
+               $has_sslpinning=1;
                $ssllib="GnuTLS";
            }
            elsif ($libcurl =~ /nss/i) {
                $ssllib="GnuTLS";
            }
            elsif ($libcurl =~ /nss/i) {
@@ -2350,15 +2362,20 @@ sub checksystem {
                $has_darwinssl=1;
                $ssllib="DarwinSSL";
            }
                $has_darwinssl=1;
                $ssllib="DarwinSSL";
            }
+           if ($libcurl =~ /ares/i) {
+               $has_cares=1;
+               $resolver="c-ares";
+           }
         }
         elsif($_ =~ /^Protocols: (.*)/i) {
             # these are the protocols compiled in to this libcurl
             @protocols = split(' ', lc($1));
 
             # Generate a "proto-ipv6" version of each protocol to match the
         }
         elsif($_ =~ /^Protocols: (.*)/i) {
             # these are the protocols compiled in to this libcurl
             @protocols = split(' ', lc($1));
 
             # Generate a "proto-ipv6" version of each protocol to match the
-            # IPv6 <server> name. This works even if IPv6 support isn't
+            # IPv6 <server> name and a "proto-unix" to match the variant which
+            # uses Unix domain sockets. This works even if support isn't
             # compiled in because the <features> test will fail.
             # compiled in because the <features> test will fail.
-            push @protocols, map($_ . '-ipv6', @protocols);
+            push @protocols, map(("$_-ipv6", "$_-unix"), @protocols);
 
             # 'http-proxy' is used in test cases to do CONNECT through
             push @protocols, 'http-proxy';
 
             # 'http-proxy' is used in test cases to do CONNECT through
             push @protocols, 'http-proxy';
@@ -2394,17 +2411,45 @@ sub checksystem {
             if($feat =~ /IPv6/i) {
                 $has_ipv6 = 1;
             }
             if($feat =~ /IPv6/i) {
                 $has_ipv6 = 1;
             }
+            if($feat =~ /UnixSockets/i) {
+                $has_unix = 1;
+            }
             if($feat =~ /libz/i) {
                 $has_libz = 1;
             }
             if($feat =~ /NTLM/i) {
                 # NTLM enabled
                 $has_ntlm=1;
             if($feat =~ /libz/i) {
                 $has_libz = 1;
             }
             if($feat =~ /NTLM/i) {
                 # NTLM enabled
                 $has_ntlm=1;
+
+                # Use this as a proxy for any cryptographic authentication
+                $has_crypto=1;
             }
             if($feat =~ /NTLM_WB/i) {
                 # NTLM delegation to winbind daemon ntlm_auth helper enabled
                 $has_ntlm_wb=1;
             }
             }
             if($feat =~ /NTLM_WB/i) {
                 # NTLM delegation to winbind daemon ntlm_auth helper enabled
                 $has_ntlm_wb=1;
             }
+            if($feat =~ /SSPI/i) {
+                # SSPI enabled
+                $has_sspi=1;
+            }
+            if($feat =~ /GSS-API/i) {
+                # GSS-API enabled
+                $has_gssapi=1;
+            }
+            if($feat =~ /Kerberos/i) {
+                # Kerberos enabled
+                $has_kerberos=1;
+
+                # Use this as a proxy for any cryptographic authentication
+                $has_crypto=1;
+            }
+            if($feat =~ /SPNEGO/i) {
+                # SPNEGO enabled
+                $has_spnego=1;
+
+                # Use this as a proxy for any cryptographic authentication
+                $has_crypto=1;
+            }
             if($feat =~ /CharConv/i) {
                 # CharConv enabled
                 $has_charconv=1;
             if($feat =~ /CharConv/i) {
                 # CharConv enabled
                 $has_charconv=1;
@@ -2417,6 +2462,17 @@ sub checksystem {
                 # Metalink enabled
                 $has_metalink=1;
             }
                 # Metalink enabled
                 $has_metalink=1;
             }
+            if($feat =~ /AsynchDNS/i) {
+                if(!$has_cares) {
+                    # this means threaded resolver
+                    $has_threadedres=1;
+                    $resolver="threaded";
+                }
+            }
+            if($feat =~ /HTTP2/) {
+                # http2 enabled
+                $has_http2=1;
+            }
         }
         #
         # Test harness currently uses a non-stunnel server in order to
         }
         #
         # Test harness currently uses a non-stunnel server in order to
@@ -2473,12 +2529,12 @@ sub checksystem {
     }
 
     if($has_ipv6) {
     }
 
     if($has_ipv6) {
-        # client has ipv6 support
+        # client has IPv6 support
 
         # check if the HTTP server has it!
         my @sws = `server/sws --version`;
         if($sws[0] =~ /IPv6/) {
 
         # check if the HTTP server has it!
         my @sws = `server/sws --version`;
         if($sws[0] =~ /IPv6/) {
-            # HTTP server has ipv6 support!
+            # HTTP server has IPv6 support!
             $http_ipv6 = 1;
             $gopher_ipv6 = 1;
         }
             $http_ipv6 = 1;
             $gopher_ipv6 = 1;
         }
@@ -2486,11 +2542,17 @@ sub checksystem {
         # check if the FTP server has it!
         @sws = `server/sockfilt --version`;
         if($sws[0] =~ /IPv6/) {
         # check if the FTP server has it!
         @sws = `server/sockfilt --version`;
         if($sws[0] =~ /IPv6/) {
-            # FTP server has ipv6 support!
+            # FTP server has IPv6 support!
             $ftp_ipv6 = 1;
         }
     }
 
             $ftp_ipv6 = 1;
         }
     }
 
+    if($has_unix) {
+        # client has Unix sockets support, check whether the HTTP server has it
+        my @sws = `server/sws --version`;
+        $http_unix = 1 if($sws[0] =~ /unix/);
+    }
+
     if(!$has_memory_tracking && $torture) {
         die "can't run torture tests since curl was built without ".
             "TrackMemory feature (--enable-curldebug)";
     if(!$has_memory_tracking && $torture) {
         die "can't run torture tests since curl was built without ".
             "TrackMemory feature (--enable-curldebug)";
@@ -2499,10 +2561,6 @@ sub checksystem {
     $has_shared = `sh $CURLCONFIG --built-shared`;
     chomp $has_shared;
 
     $has_shared = `sh $CURLCONFIG --built-shared`;
     chomp $has_shared;
 
-    # curl doesn't list cryptographic support separately, so assume it's
-    # always available
-    $has_crypto=1;
-
     my $hostname=join(' ', runclientoutput("hostname"));
     my $hosttype=join(' ', runclientoutput("uname -a"));
 
     my $hostname=join(' ', runclientoutput("hostname"));
     my $hosttype=join(' ', runclientoutput("uname -a"));
 
@@ -2513,15 +2571,24 @@ sub checksystem {
     "* Host: $hostname",
     "* System: $hosttype");
 
     "* Host: $hostname",
     "* System: $hosttype");
 
+    if($has_memory_tracking && $has_threadedres) {
+        $has_memory_tracking = 0;
+        logmsg("*\n",
+               "*** DISABLES memory tracking when using threaded resolver\n",
+               "*\n");
+    }
+
     logmsg sprintf("* Server SSL:   %8s", $stunnel?"ON ":"OFF");
     logmsg sprintf("  libcurl SSL:  %s\n", $ssl_version?"ON ":"OFF");
     logmsg sprintf("* debug build:  %8s", $debug_build?"ON ":"OFF");
     logmsg sprintf("  track memory: %s\n", $has_memory_tracking?"ON ":"OFF");
     logmsg sprintf("* valgrind:     %8s", $valgrind?"ON ":"OFF");
     logmsg sprintf("  HTTP IPv6     %s\n", $http_ipv6?"ON ":"OFF");
     logmsg sprintf("* Server SSL:   %8s", $stunnel?"ON ":"OFF");
     logmsg sprintf("  libcurl SSL:  %s\n", $ssl_version?"ON ":"OFF");
     logmsg sprintf("* debug build:  %8s", $debug_build?"ON ":"OFF");
     logmsg sprintf("  track memory: %s\n", $has_memory_tracking?"ON ":"OFF");
     logmsg sprintf("* valgrind:     %8s", $valgrind?"ON ":"OFF");
     logmsg sprintf("  HTTP IPv6     %s\n", $http_ipv6?"ON ":"OFF");
+    logmsg sprintf("* HTTP Unix     %s\n", $http_unix?"ON ":"OFF");
     logmsg sprintf("* FTP IPv6      %8s", $ftp_ipv6?"ON ":"OFF");
     logmsg sprintf("  Libtool lib:  %s\n", $libtool?"ON ":"OFF");
     logmsg sprintf("* FTP IPv6      %8s", $ftp_ipv6?"ON ":"OFF");
     logmsg sprintf("  Libtool lib:  %s\n", $libtool?"ON ":"OFF");
-    logmsg sprintf("* Shared build:      %s\n", $has_shared);
+    logmsg sprintf("* Shared build:      %-3s", $has_shared);
+    logmsg sprintf("  Resolver:     %s\n", $resolver);
     if($ssl_version) {
         logmsg sprintf("* SSL library: %13s\n", $ssllib);
     }
     if($ssl_version) {
         logmsg sprintf("* SSL library: %13s\n", $ssllib);
     }
@@ -2570,6 +2637,13 @@ sub checksystem {
     }
     logmsg sprintf("*   HTTP-PIPE/%d \n", $HTTPPIPEPORT);
 
     }
     logmsg sprintf("*   HTTP-PIPE/%d \n", $HTTPPIPEPORT);
 
+    if($has_unix) {
+        logmsg "* Unix socket paths:\n";
+        if($http_unix) {
+            logmsg sprintf("*   HTTP-Unix:%s\n", $HTTPUNIXPATH);
+        }
+    }
+
     $has_textaware = ($^O eq 'MSWin32') || ($^O eq 'msys');
 
     logmsg "***************************************** \n";
     $has_textaware = ($^O eq 'MSWin32') || ($^O eq 'msys');
 
     logmsg "***************************************** \n";
@@ -2618,6 +2692,10 @@ sub subVariables {
   $$thing =~ s/%TFTP6PORT/$TFTP6PORT/g;
   $$thing =~ s/%TFTPPORT/$TFTPPORT/g;
 
   $$thing =~ s/%TFTP6PORT/$TFTP6PORT/g;
   $$thing =~ s/%TFTPPORT/$TFTPPORT/g;
 
+  # server Unix domain socket paths
+
+  $$thing =~ s/%HTTPUNIXPATH/$HTTPUNIXPATH/g;
+
   # client IP addresses
 
   $$thing =~ s/%CLIENT6IP/$CLIENT6IP/g;
   # client IP addresses
 
   $$thing =~ s/%CLIENT6IP/$CLIENT6IP/g;
@@ -2645,6 +2723,10 @@ sub subVariables {
 
   $$thing =~ s/%FTPTIME2/$ftp2/g;
   $$thing =~ s/%FTPTIME3/$ftp3/g;
 
   $$thing =~ s/%FTPTIME2/$ftp2/g;
   $$thing =~ s/%FTPTIME3/$ftp3/g;
+
+  # HTTP2
+
+  $$thing =~ s/%H2CVER/$h2cver/g;  
 }
 
 sub fixarray {
 }
 
 sub fixarray {
@@ -2710,7 +2792,11 @@ sub timestampskippedevents {
 # Run a single specified test case
 #
 sub singletest {
 # Run a single specified test case
 #
 sub singletest {
-    my ($testnum, $count, $total)=@_;
+    my ($evbased, # 1 means switch on if possible (and "curl" is tested)
+                  # returns "not a test" if it can't be used for this test
+        $testnum,
+        $count,
+        $total)=@_;
 
     my @what;
     my $why;
 
     my @what;
     my $why;
@@ -2726,7 +2812,7 @@ sub singletest {
     $timeprepini{$testnum} = Time::HiRes::time() if($timestats);
 
     if($disttests !~ /test$testnum\W/ ) {
     $timeprepini{$testnum} = Time::HiRes::time() if($timestats);
 
     if($disttests !~ /test$testnum\W/ ) {
-        logmsg "Warning: test$testnum not present in tests/data/Makefile.am\n";
+        logmsg "Warning: test$testnum not present in tests/data/Makefile.inc\n";
     }
     if($disabled{$testnum}) {
         logmsg "Warning: test$testnum is explicitly disabled\n";
     }
     if($disabled{$testnum}) {
         logmsg "Warning: test$testnum is explicitly disabled\n";
@@ -2744,128 +2830,303 @@ sub singletest {
         @what = getpart("client", "features");
     }
 
         @what = getpart("client", "features");
     }
 
+    # We require a feature to be present
     for(@what) {
         my $f = $_;
         $f =~ s/\s//g;
 
     for(@what) {
         my $f = $_;
         $f =~ s/\s//g;
 
-        $feature{$f}=$f; # we require this feature
+        if($f =~ /^([^!].*)$/) {
+            # Store the feature for later
+            $feature{$1} = $1;
 
 
-        if($f eq "SSL") {
-            if($ssl_version) {
-                next;
+            if($1 eq "SSL") {
+                if($ssl_version) {
+                    next;
+                }
             }
             }
-        }
-        elsif($f eq "OpenSSL") {
-            if($has_openssl) {
-                next;
+            elsif($1 eq "SSLpinning") {
+                if($has_sslpinning) {
+                    next;
+                }
             }
             }
-        }
-        elsif($f eq "GnuTLS") {
-            if($has_gnutls) {
-                next;
+            elsif($1 eq "OpenSSL") {
+                if($has_openssl) {
+                    next;
+                }
             }
             }
-        }
-        elsif($f eq "NSS") {
-            if($has_nss) {
-                next;
+            elsif($1 eq "GnuTLS") {
+                if($has_gnutls) {
+                    next;
+                }
             }
             }
-        }
-        elsif($f eq "axTLS") {
-            if($has_axtls) {
-                next;
+            elsif($1 eq "NSS") {
+                if($has_nss) {
+                    next;
+                }
             }
             }
-        }
-        elsif($f eq "WinSSL") {
-            if($has_winssl) {
-                next;
+            elsif($1 eq "axTLS") {
+                if($has_axtls) {
+                    next;
+                }
             }
             }
-        }
-        elsif($f eq "DarwinSSL") {
-            if($has_darwinssl) {
-                next;
+            elsif($1 eq "WinSSL") {
+                if($has_winssl) {
+                    next;
+                }
             }
             }
-        }
-        elsif($f eq "unittest") {
-            if($debug_build) {
-                next;
+            elsif($1 eq "DarwinSSL") {
+                if($has_darwinssl) {
+                    next;
+                }
             }
             }
-        }
-        elsif($f eq "debug") {
-            if($debug_build) {
-                next;
+            elsif($1 eq "unittest") {
+                if($debug_build) {
+                    next;
+                }
             }
             }
-        }
-        elsif($f eq "TrackMemory") {
-            if($has_memory_tracking) {
-                next;
+            elsif($1 eq "debug") {
+                if($debug_build) {
+                    next;
+                }
             }
             }
-        }
-        elsif($f eq "large_file") {
-            if($large_file) {
-                next;
+            elsif($1 eq "TrackMemory") {
+                if($has_memory_tracking) {
+                    next;
+                }
             }
             }
-        }
-        elsif($f eq "idn") {
-            if($has_idn) {
-                next;
+            elsif($1 eq "large_file") {
+                if($large_file) {
+                    next;
+                }
             }
             }
-        }
-        elsif($f eq "ipv6") {
-            if($has_ipv6) {
-                next;
+            elsif($1 eq "idn") {
+                if($has_idn) {
+                    next;
+                }
             }
             }
-        }
-        elsif($f eq "libz") {
-            if($has_libz) {
-                next;
+            elsif($1 eq "ipv6") {
+                if($has_ipv6) {
+                    next;
+                }
             }
             }
-        }
-        elsif($f eq "NTLM") {
-            if($has_ntlm) {
-                next;
+            elsif($1 eq "libz") {
+                if($has_libz) {
+                    next;
+                }
             }
             }
-        }
-        elsif($f eq "NTLM_WB") {
-            if($has_ntlm_wb) {
-                next;
+            elsif($1 eq "NTLM") {
+                if($has_ntlm) {
+                    next;
+                }
             }
             }
-        }
-        elsif($f eq "getrlimit") {
-            if($has_getrlimit) {
-                next;
+            elsif($1 eq "NTLM_WB") {
+                if($has_ntlm_wb) {
+                    next;
+                }
             }
             }
-        }
-        elsif($f eq "crypto") {
-            if($has_crypto) {
+            elsif($1 eq "SSPI") {
+                if($has_sspi) {
+                    next;
+                }
+            }
+            elsif($1 eq "GSS-API") {
+                if($has_gssapi) {
+                    next;
+                }
+            }
+            elsif($1 eq "Kerberos") {
+                if($has_kerberos) {
+                    next;
+                }
+            }
+            elsif($1 eq "SPNEGO") {
+                if($has_spnego) {
+                    next;
+                }
+            }
+            elsif($1 eq "getrlimit") {
+                if($has_getrlimit) {
+                    next;
+                }
+            }
+            elsif($1 eq "crypto") {
+                if($has_crypto) {
+                    next;
+                }
+            }
+            elsif($1 eq "TLS-SRP") {
+                if($has_tls_srp) {
+                    next;
+                }
+            }
+            elsif($1 eq "Metalink") {
+                if($has_metalink) {
+                    next;
+                }
+            }
+            elsif($1 eq "http2") {
+                if($has_http2) {
+                    next;
+                }
+            }
+            elsif($1 eq "socks") {
                 next;
             }
                 next;
             }
-        }
-        elsif($f eq "TLS-SRP") {
-            if($has_tls_srp) {
+            elsif($1 eq "unix-sockets") {
+                next if $has_unix;
+            }
+            # See if this "feature" is in the list of supported protocols
+            elsif (grep /^\Q$1\E$/i, @protocols) {
                 next;
             }
                 next;
             }
+
+            $why = "curl lacks $1 support";
+            last;
         }
         }
-        elsif($f eq "Metalink") {
-            if($has_metalink) {
+    }
+
+    # We require a feature to not be present
+    if(!$why) {
+        for(@what) {
+            my $f = $_;
+            $f =~ s/\s//g;
+
+            if($f =~ /^!(.*)$/) {
+                if($1 eq "SSL") {
+                    if(!$ssl_version) {
+                        next;
+                    }
+                }
+                elsif($1 eq "OpenSSL") {
+                    if(!$has_openssl) {
+                        next;
+                    }
+                }
+                elsif($1 eq "GnuTLS") {
+                    if(!$has_gnutls) {
+                        next;
+                    }
+                }
+                elsif($1 eq "NSS") {
+                    if(!$has_nss) {
+                        next;
+                    }
+                }
+                elsif($1 eq "axTLS") {
+                    if(!$has_axtls) {
+                        next;
+                    }
+                }
+                elsif($1 eq "WinSSL") {
+                    if(!$has_winssl) {
+                        next;
+                    }
+                }
+                elsif($1 eq "DarwinSSL") {
+                    if(!$has_darwinssl) {
+                        next;
+                    }
+                }
+                elsif($1 eq "TrackMemory") {
+                    if(!$has_memory_tracking) {
+                        next;
+                    }
+                }
+                elsif($1 eq "large_file") {
+                    if(!$large_file) {
+                        next;
+                    }
+                }
+                elsif($1 eq "idn") {
+                    if(!$has_idn) {
+                        next;
+                    }
+                }
+                elsif($1 eq "ipv6") {
+                    if(!$has_ipv6) {
+                        next;
+                    }
+                }
+                elsif($1 eq "unix-sockets") {
+                    next if !$has_unix;
+                }
+                elsif($1 eq "libz") {
+                    if(!$has_libz) {
+                        next;
+                    }
+                }
+                elsif($1 eq "NTLM") {
+                    if(!$has_ntlm) {
+                        next;
+                    }
+                }
+                elsif($1 eq "NTLM_WB") {
+                    if(!$has_ntlm_wb) {
+                        next;
+                    }
+                }
+                elsif($1 eq "SSPI") {
+                    if(!$has_sspi) {
+                        next;
+                    }
+                }
+                elsif($1 eq "GSS-API") {
+                    if(!$has_gssapi) {
+                        next;
+                    }
+                }
+                elsif($1 eq "Kerberos") {
+                    if(!$has_kerberos) {
+                        next;
+                    }
+                }
+                elsif($1 eq "SPNEGO") {
+                    if(!$has_spnego) {
+                        next;
+                    }
+                }
+                elsif($1 eq "getrlimit") {
+                    if(!$has_getrlimit) {
+                        next;
+                    }
+                }
+                elsif($1 eq "crypto") {
+                    if(!$has_crypto) {
+                        next;
+                    }
+                }
+                elsif($1 eq "TLS-SRP") {
+                    if(!$has_tls_srp) {
+                        next;
+                    }
+                }
+                elsif($1 eq "Metalink") {
+                    if(!$has_metalink) {
+                        next;
+                    }
+                }
+                else {
+                    next;
+                }
+            }
+            else {
                 next;
             }
                 next;
             }
-        }
-        elsif($f eq "socks") {
-            next;
-        }
-        # See if this "feature" is in the list of supported protocols
-        elsif (grep /^\Q$f\E$/i, @protocols) {
-            next;
-        }
 
 
-        $why = "curl lacks $f support";
-        last;
+            $why = "curl has $1 support";
+            last;
+        }
     }
 
     if(!$why) {
         my @keywords = getpart("info", "keywords");
         my $match;
         my $k;
     }
 
     if(!$why) {
         my @keywords = getpart("info", "keywords");
         my $match;
         my $k;
+
+        if(!$keywords[0]) {
+            $why = "missing the <keywords> section!";
+        }
+
         for $k (@keywords) {
             chomp $k;
             if ($disabled_keywords{$k}) {
         for $k (@keywords) {
             chomp $k;
             if ($disabled_keywords{$k}) {
@@ -2984,28 +3245,33 @@ sub singletest {
         if(!$short) {
             if($skipped{$why} <= 3) {
                 # show only the first three skips for each reason
         if(!$short) {
             if($skipped{$why} <= 3) {
                 # show only the first three skips for each reason
-                logmsg sprintf("test %03d SKIPPED: $why\n", $testnum);
+                logmsg sprintf("test %04d SKIPPED: $why\n", $testnum);
             }
         }
 
         timestampskippedevents($testnum);
         return -1;
     }
             }
         }
 
         timestampskippedevents($testnum);
         return -1;
     }
-    logmsg sprintf("test %03d...", $testnum) if(!$automakestyle);
+    logmsg sprintf("test %04d...", $testnum) if(!$automakestyle);
 
     # extract the reply data
     my @reply = getpart("reply", "data");
     my @replycheck = getpart("reply", "datacheck");
 
 
     # extract the reply data
     my @reply = getpart("reply", "data");
     my @replycheck = getpart("reply", "datacheck");
 
+    my %replyattr = getpartattr("reply", "data");
+    my %replycheckattr = getpartattr("reply", "datacheck");
+
     if (@replycheck) {
         # we use this file instead to check the final output against
 
     if (@replycheck) {
         # we use this file instead to check the final output against
 
-        my %hash = getpartattr("reply", "datacheck");
-        if($hash{'nonewline'}) {
+        if($replycheckattr{'nonewline'}) {
             # Yes, we must cut off the final newline from the final line
             # of the datacheck
             chomp($replycheck[$#replycheck]);
         }
             # Yes, we must cut off the final newline from the final line
             # of the datacheck
             chomp($replycheck[$#replycheck]);
         }
+        if($replycheckattr{'mode'}) {
+            $replyattr{'mode'} = $replycheckattr{'mode'};
+        }
 
         @reply=@replycheck;
     }
 
         @reply=@replycheck;
     }
@@ -3127,6 +3393,7 @@ sub singletest {
     my $CMDLINE;
     my $cmdargs;
     my $cmdtype = $cmdhash{'type'} || "default";
     my $CMDLINE;
     my $cmdargs;
     my $cmdtype = $cmdhash{'type'} || "default";
+    my $fail_due_event_based = $evbased;
     if($cmdtype eq "perl") {
         # run the command line prepended with "perl"
         $cmdargs ="$cmd";
     if($cmdtype eq "perl") {
         # run the command line prepended with "perl"
         $cmdargs ="$cmd";
@@ -3142,15 +3409,22 @@ sub singletest {
         $disablevalgrind=1;
     }
     elsif(!$tool) {
         $disablevalgrind=1;
     }
     elsif(!$tool) {
-        # run curl, add --verbose for debug information output
+        # run curl, add suitable command line options
         $cmd = "-1 ".$cmd if(exists $feature{"SSL"} && ($has_axtls));
 
         my $inc="";
         if((!$cmdhash{'option'}) || ($cmdhash{'option'} !~ /no-include/)) {
         $cmd = "-1 ".$cmd if(exists $feature{"SSL"} && ($has_axtls));
 
         my $inc="";
         if((!$cmdhash{'option'}) || ($cmdhash{'option'} !~ /no-include/)) {
-            $inc = "--include ";
+            $inc = " --include";
         }
 
         }
 
-        $cmdargs ="$out $inc--trace-ascii log/trace$testnum --trace-time $cmd";
+        $cmdargs = "$out$inc ";
+        $cmdargs .= "--trace-ascii log/trace$testnum ";
+        $cmdargs .= "--trace-time ";
+        if($evbased) {
+            $cmdargs .= "--test-event ";
+            $fail_due_event_based--;
+        }
+        $cmdargs .= $cmd;
     }
     else {
         $cmdargs = " $cmd"; # $cmd is the command line for the test file
     }
     else {
         $cmdargs = " $cmd"; # $cmd is the command line for the test file
@@ -3171,6 +3445,18 @@ sub singletest {
         $DBGCURL=$CMDLINE;
     }
 
         $DBGCURL=$CMDLINE;
     }
 
+    if($gdbthis) {
+        # gdb is incompatible with valgrind, so disable it when debugging
+        # Perhaps a better approach would be to run it under valgrind anyway
+        # with --db-attach=yes or --vgdb=yes.
+        $disablevalgrind=1;
+    }
+
+    if($fail_due_event_based) {
+        logmsg "This test cannot run event based\n";
+        return -1;
+    }
+
     my @stdintest = getpart("client", "stdin");
 
     if(@stdintest) {
     my @stdintest = getpart("client", "stdin");
 
     if(@stdintest) {
@@ -3200,6 +3486,7 @@ sub singletest {
             $valgrindcmd .= "$valgrind_tool " if($valgrind_tool);
             $valgrindcmd .= "--leak-check=yes ";
             $valgrindcmd .= "--suppressions=$srcdir/valgrind.supp ";
             $valgrindcmd .= "$valgrind_tool " if($valgrind_tool);
             $valgrindcmd .= "--leak-check=yes ";
             $valgrindcmd .= "--suppressions=$srcdir/valgrind.supp ";
+           # $valgrindcmd .= "--gen-suppressions=all ";
             $valgrindcmd .= "--num-callers=16 ";
             $valgrindcmd .= "${valgrind_logfile}=$LOGDIR/valgrind$testnum";
             $CMDLINE = "$valgrindcmd $CMDLINE";
             $valgrindcmd .= "--num-callers=16 ";
             $valgrindcmd .= "${valgrind_logfile}=$LOGDIR/valgrind$testnum";
             $CMDLINE = "$valgrindcmd $CMDLINE";
@@ -3334,11 +3621,11 @@ sub singletest {
         my @killservers;
         foreach my $server (@killtestservers) {
             chomp $server;
         my @killservers;
         foreach my $server (@killtestservers) {
             chomp $server;
-            if($server =~ /^(ftp|http|imap|pop3|smtp)s((\d*)(-ipv6|))$/) {
+            if($server =~ /^(ftp|http|imap|pop3|smtp)s((\d*)(-ipv6|-unix|))$/) {
                 # given a stunnel ssl server, also kill non-ssl underlying one
                 push @killservers, "${1}${2}";
             }
                 # given a stunnel ssl server, also kill non-ssl underlying one
                 push @killservers, "${1}${2}";
             }
-            elsif($server =~ /^(ftp|http|imap|pop3|smtp)((\d*)(-ipv6|))$/) {
+            elsif($server =~ /^(ftp|http|imap|pop3|smtp)((\d*)(-ipv6|-unix|))$/) {
                 # given a non-ssl server, also kill stunnel piggybacking one
                 push @killservers, "${1}s${2}";
             }
                 # given a non-ssl server, also kill stunnel piggybacking one
                 push @killservers, "${1}s${2}";
             }
@@ -3453,7 +3740,8 @@ sub singletest {
         my $filemode=$hash{'mode'};
         if($filemode && ($filemode eq "text") && $has_textaware) {
             # text mode when running on windows: fix line endings
         my $filemode=$hash{'mode'};
         if($filemode && ($filemode eq "text") && $has_textaware) {
             # text mode when running on windows: fix line endings
-            map s/\r\n/\n/g, @actual;
+            map s/\r\n/\n/g, @validstdout;
+            map s/\n/\r\n/g, @validstdout;
         }
 
         if($hash{'nonewline'}) {
         }
 
         if($hash{'nonewline'}) {
@@ -3472,41 +3760,6 @@ sub singletest {
         $ok .= "-"; # stdout not checked
     }
 
         $ok .= "-"; # stdout not checked
     }
 
-    my %replyattr = getpartattr("reply", "data");
-    if(!$replyattr{'nocheck'} && (@reply || $replyattr{'sendzero'})) {
-        # verify the received data
-        my @out = loadarray($CURLOUT);
-        my %hash = getpartattr("reply", "data");
-        # get the mode attribute
-        my $filemode=$hash{'mode'};
-        if($filemode && ($filemode eq "text") && $has_textaware) {
-            # text mode when running on windows: fix line endings
-            map s/\r\n/\n/g, @out;
-        }
-
-        $res = compare($testnum, $testname, "data", \@out, \@reply);
-        if ($res) {
-            return 1;
-        }
-        $ok .= "d";
-    }
-    else {
-        $ok .= "-"; # data not checked
-    }
-
-    if(@upload) {
-        # verify uploaded data
-        my @out = loadarray("$LOGDIR/upload.$testnum");
-        $res = compare($testnum, $testname, "upload", \@out, \@upload);
-        if ($res) {
-            return 1;
-        }
-        $ok .= "u";
-    }
-    else {
-        $ok .= "-"; # upload not checked
-    }
-
     if(@protocol) {
         # Verify the sent request
         my @out = loadarray($SERVERIN);
     if(@protocol) {
         # Verify the sent request
         my @out = loadarray($SERVERIN);
@@ -3554,6 +3807,40 @@ sub singletest {
         $ok .= "-"; # protocol not checked
     }
 
         $ok .= "-"; # protocol not checked
     }
 
+    if(!$replyattr{'nocheck'} && (@reply || $replyattr{'sendzero'})) {
+        # verify the received data
+        my @out = loadarray($CURLOUT);
+        # get the mode attribute
+        my $filemode=$replyattr{'mode'};
+        if($filemode && ($filemode eq "text") && $has_textaware) {
+            # text mode when running on windows: fix line endings
+            map s/\r\n/\n/g, @reply;
+            map s/\n/\r\n/g, @reply;
+        }
+
+        $res = compare($testnum, $testname, "data", \@out, \@reply);
+        if ($res) {
+            return 1;
+        }
+        $ok .= "d";
+    }
+    else {
+        $ok .= "-"; # data not checked
+    }
+
+    if(@upload) {
+        # verify uploaded data
+        my @out = loadarray("$LOGDIR/upload.$testnum");
+        $res = compare($testnum, $testname, "upload", \@out, \@upload);
+        if ($res) {
+            return 1;
+        }
+        $ok .= "u";
+    }
+    else {
+        $ok .= "-"; # upload not checked
+    }
+
     if(@proxyprot) {
         # Verify the sent proxy request
         my @out = loadarray($PROXYIN);
     if(@proxyprot) {
         # Verify the sent proxy request
         my @out = loadarray($PROXYIN);
@@ -3625,17 +3912,24 @@ sub singletest {
 
             my $filemode=$hash{'mode'};
             if($filemode && ($filemode eq "text") && $has_textaware) {
 
             my $filemode=$hash{'mode'};
             if($filemode && ($filemode eq "text") && $has_textaware) {
-                # text mode when running on windows means adding an extra
-                # strip expression
-                push @stripfile, "s/\r\n/\n/";
+                # text mode when running on windows: fix line endings
+                map s/\r\n/\n/g, @outfile;
+                map s/\n/\r\n/g, @outfile;
             }
 
             my $strip;
             for $strip (@stripfile) {
                 chomp $strip;
             }
 
             my $strip;
             for $strip (@stripfile) {
                 chomp $strip;
+                my @newgen;
                 for(@generated) {
                     eval $strip;
                 for(@generated) {
                     eval $strip;
+                    if($_) {
+                        push @newgen, $_;
+                    }
                 }
                 }
+                # this is to get rid of array entries that vanished (zero
+                # length) because of replacements
+                @generated = @newgen;
             }
 
             @outfile = fixarray(@outfile);
             }
 
             @outfile = fixarray(@outfile);
@@ -3755,6 +4049,8 @@ sub singletest {
     else {
         $ok .= "-"; # valgrind not checked
     }
     else {
         $ok .= "-"; # valgrind not checked
     }
+    # add 'E' for event-based
+    $ok .= $evbased ? "E" : "-";
 
     logmsg "$ok " if(!$short);
 
 
     logmsg "$ok " if(!$short);
 
@@ -3843,7 +4139,7 @@ sub startservers {
         $what =~ s/[^a-z0-9-]//g;
 
         my $certfile;
         $what =~ s/[^a-z0-9-]//g;
 
         my $certfile;
-        if($what =~ /^(ftp|http|imap|pop3|smtp)s((\d*)(-ipv6|))$/) {
+        if($what =~ /^(ftp|http|imap|pop3|smtp)s((\d*)(-ipv6|-unix|))$/) {
             $certfile = ($whatlist[1]) ? $whatlist[1] : 'stunnel.pem';
         }
 
             $certfile = ($whatlist[1]) ? $whatlist[1] : 'stunnel.pem';
         }
 
@@ -3961,7 +4257,7 @@ sub startservers {
         }
         elsif($what eq "http-ipv6") {
             if($torture && $run{'http-ipv6'} &&
         }
         elsif($what eq "http-ipv6") {
             if($torture && $run{'http-ipv6'} &&
-               !responsive_http_server("http", $verbose, "IPv6", $HTTP6PORT)) {
+               !responsive_http_server("http", $verbose, "ipv6", $HTTP6PORT)) {
                 stopserver('http-ipv6');
             }
             if(!$run{'http-ipv6'}) {
                 stopserver('http-ipv6');
             }
             if(!$run{'http-ipv6'}) {
@@ -4008,11 +4304,11 @@ sub startservers {
         }
         elsif($what eq "rtsp-ipv6") {
             if($torture && $run{'rtsp-ipv6'} &&
         }
         elsif($what eq "rtsp-ipv6") {
             if($torture && $run{'rtsp-ipv6'} &&
-               !responsive_rtsp_server($verbose, "IPv6")) {
+               !responsive_rtsp_server($verbose, "ipv6")) {
                 stopserver('rtsp-ipv6');
             }
             if(!$run{'rtsp-ipv6'}) {
                 stopserver('rtsp-ipv6');
             }
             if(!$run{'rtsp-ipv6'}) {
-                ($pid, $pid2) = runrtspserver($verbose, "IPv6");
+                ($pid, $pid2) = runrtspserver($verbose, "ipv6");
                 if($pid <= 0) {
                     return "failed starting RTSP-IPv6 server";
                 }
                 if($pid <= 0) {
                     return "failed starting RTSP-IPv6 server";
                 }
@@ -4120,11 +4416,11 @@ sub startservers {
                 return "no gnutls-serv";
             }
             if($torture && $run{'httptls-ipv6'} &&
                 return "no gnutls-serv";
             }
             if($torture && $run{'httptls-ipv6'} &&
-               !responsive_httptls_server($verbose, "IPv6")) {
+               !responsive_httptls_server($verbose, "ipv6")) {
                 stopserver('httptls-ipv6');
             }
             if(!$run{'httptls-ipv6'}) {
                 stopserver('httptls-ipv6');
             }
             if(!$run{'httptls-ipv6'}) {
-                ($pid, $pid2) = runhttptlsserver($verbose, "IPv6");
+                ($pid, $pid2) = runhttptlsserver($verbose, "ipv6");
                 if($pid <= 0) {
                     return "failed starting HTTPTLS-IPv6 server (gnutls-serv)";
                 }
                 if($pid <= 0) {
                     return "failed starting HTTPTLS-IPv6 server (gnutls-serv)";
                 }
@@ -4149,11 +4445,11 @@ sub startservers {
         }
         elsif($what eq "tftp-ipv6") {
             if($torture && $run{'tftp-ipv6'} &&
         }
         elsif($what eq "tftp-ipv6") {
             if($torture && $run{'tftp-ipv6'} &&
-               !responsive_tftp_server("", $verbose, "IPv6")) {
+               !responsive_tftp_server("", $verbose, "ipv6")) {
                 stopserver('tftp-ipv6');
             }
             if(!$run{'tftp-ipv6'}) {
                 stopserver('tftp-ipv6');
             }
             if(!$run{'tftp-ipv6'}) {
-                ($pid, $pid2) = runtftpserver("", $verbose, "IPv6");
+                ($pid, $pid2) = runtftpserver("", $verbose, "ipv6");
                 if($pid <= 0) {
                     return "failed starting TFTP-IPv6 server";
                 }
                 if($pid <= 0) {
                     return "failed starting TFTP-IPv6 server";
                 }
@@ -4198,6 +4494,22 @@ sub startservers {
                 }
             }
         }
                 }
             }
         }
+        elsif($what eq "http-unix") {
+            if($torture && $run{'http-unix'} &&
+               !responsive_http_server("http", $verbose, "unix", $HTTPUNIXPATH)) {
+                stopserver('http-unix');
+            }
+            if(!$run{'http-unix'}) {
+                ($pid, $pid2) = runhttpserver("http", $verbose, "unix",
+                                              $HTTPUNIXPATH);
+                if($pid <= 0) {
+                    return "failed starting HTTP-unix server";
+                }
+                logmsg sprintf("* pid http-unix => %d %d\n", $pid, $pid2)
+                    if($verbose);
+                $run{'http-unix'}="$pid $pid2";
+            }
+        }
         elsif($what eq "none") {
             logmsg "* starts no server\n" if ($verbose);
         }
         elsif($what eq "none") {
             logmsg "* starts no server\n" if ($verbose);
         }
@@ -4413,6 +4725,16 @@ while(@ARGV) {
         $DBGCURL=$CURL=$ARGV[1];
         shift @ARGV;
     }
         $DBGCURL=$CURL=$ARGV[1];
         shift @ARGV;
     }
+    elsif ($ARGV[0] eq "-vc") {
+        # use this path to a curl used to verify servers
+
+        # Particularly useful when you introduce a crashing bug somewhere in
+        # the development version as then it won't be able to run any tests
+        # since it can't verify the servers!
+
+        $VCURL=$ARGV[1];
+        shift @ARGV;
+    }
     elsif ($ARGV[0] eq "-d") {
         # have the servers display protocol output
         $debugprotocol=1;
     elsif ($ARGV[0] eq "-d") {
         # have the servers display protocol output
         $debugprotocol=1;
@@ -4454,6 +4776,10 @@ while(@ARGV) {
         # continue anyway, even if a test fail
         $anyway=1;
     }
         # continue anyway, even if a test fail
         $anyway=1;
     }
+    elsif($ARGV[0] eq "-e") {
+        # run the tests cases event based if possible
+        $run_event_based=1;
+    }
     elsif($ARGV[0] eq "-p") {
         $postmortem=1;
     }
     elsif($ARGV[0] eq "-p") {
         $postmortem=1;
     }
@@ -4514,6 +4840,7 @@ Usage: runtests.pl [options] [test selection(s)]
   -am      automake style output PASS/FAIL: [number] [name]
   -t[N]    torture (simulate memory alloc failures); N means fail Nth alloc
   -v       verbose output
   -am      automake style output PASS/FAIL: [number] [name]
   -t[N]    torture (simulate memory alloc failures); N means fail Nth alloc
   -v       verbose output
+  -vc path use this curl only to verify the existing servers
   [num]    like "5 6 9" or " 5 to 22 " to run those tests only
   [!num]   like "!5 !6 !9" to disable those tests
   [keyword] like "IPv6" to select only tests containing the key word
   [num]    like "5 6 9" or " 5 to 22 " to run those tests only
   [!num]   like "!5 !6 !9" to disable those tests
   [keyword] like "IPv6" to select only tests containing the key word
@@ -4606,7 +4933,7 @@ if ($gdbthis) {
     if($c eq "#! /") {
         # A shell script. This is typically when built with libtool,
         $libtool = 1;
     if($c eq "#! /") {
         # A shell script. This is typically when built with libtool,
         $libtool = 1;
-        $gdb = "libtool --mode=execute gdb";
+        $gdb = "../libtool --mode=execute gdb";
     }
 }
 
     }
 }
 
@@ -4635,6 +4962,7 @@ $HTTPTLSPORT     = $base++; # HTTP TLS (non-stunnel) server port
 $HTTPTLS6PORT    = $base++; # HTTP TLS (non-stunnel) IPv6 server port
 $HTTPPROXYPORT   = $base++; # HTTP proxy port, when using CONNECT
 $HTTPPIPEPORT    = $base++; # HTTP pipelining port
 $HTTPTLS6PORT    = $base++; # HTTP TLS (non-stunnel) IPv6 server port
 $HTTPPROXYPORT   = $base++; # HTTP proxy port, when using CONNECT
 $HTTPPIPEPORT    = $base++; # HTTP pipelining port
+$HTTPUNIXPATH    = 'http.sock'; # HTTP server Unix domain socket path
 
 #######################################################################
 # clear and create logging directory:
 
 #######################################################################
 # clear and create logging directory:
@@ -4659,20 +4987,21 @@ if(!$listonly) {
 }
 
 #######################################################################
 }
 
 #######################################################################
-# Fetch all disabled tests
+# Fetch all disabled tests, if there are any
 #
 
 #
 
-open(D, "<$TESTDIR/DISABLED");
-while(<D>) {
-    if(/^ *\#/) {
-        # allow comments
-        next;
-    }
-    if($_ =~ /(\d+)/) {
-        $disabled{$1}=$1; # disable this test number
+if(open(D, "<$TESTDIR/DISABLED")) {
+    while(<D>) {
+        if(/^ *\#/) {
+            # allow comments
+            next;
+        }
+        if($_ =~ /(\d+)/) {
+            $disabled{$1}=$1; # disable this test number
+        }
     }
     }
+    close(D);
 }
 }
-close(D);
 
 #######################################################################
 # If 'all' tests are requested, find out all test numbers
 
 #######################################################################
 # If 'all' tests are requested, find out all test numbers
@@ -4703,6 +5032,19 @@ if ( $TESTCASES eq "all") {
         $TESTCASES .= " $n";
     }
 }
         $TESTCASES .= " $n";
     }
 }
+else {
+    my $verified="";
+    map {
+        if (-e "$TESTDIR/test$_") {
+            $verified.="$_ ";
+        }
+    } split(" ", $TESTCASES);
+    if($verified eq "") {
+        print "No existing test cases were specified\n";
+        exit;
+    }
+    $TESTCASES = $verified;
+}
 
 #######################################################################
 # Start the command line log
 
 #######################################################################
 # Start the command line log
@@ -4825,7 +5167,7 @@ foreach $testnum (@at) {
     $lasttest = $testnum if($testnum > $lasttest);
     $count++;
 
     $lasttest = $testnum if($testnum > $lasttest);
     $count++;
 
-    my $error = singletest($testnum, $count, scalar(@at));
+    my $error = singletest($run_event_based, $testnum, $count, scalar(@at));
     if($error < 0) {
         # not a test we can run
         next;
     if($error < 0) {
         # not a test we can run
         next;
index 36a902e..6276110 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -33,6 +33,7 @@ BEGIN {
 use strict;
 use warnings;
 use Cwd;
 use strict;
 use warnings;
 use Cwd;
+use Cwd 'abs_path';
 
 use serverhelp qw(
     server_pidfilename
 
 use serverhelp qw(
     server_pidfilename
@@ -50,7 +51,9 @@ my $stuncert;
 
 my $ver_major;
 my $ver_minor;
 
 my $ver_major;
 my $ver_minor;
+my $fips_support;
 my $stunnel_version;
 my $stunnel_version;
+my $tstunnel_windows;
 my $socketopt;
 my $cmd;
 
 my $socketopt;
 my $cmd;
 
@@ -61,6 +64,7 @@ my $ipvnum = 4;       # default IP version of stunneled server
 my $idnum = 1;        # dafault stunneled server instance number
 my $proto = 'https';  # default secure server protocol
 my $conffile;         # stunnel configuration file
 my $idnum = 1;        # dafault stunneled server instance number
 my $proto = 'https';  # default secure server protocol
 my $conffile;         # stunnel configuration file
+my $capath;           # certificate chain PEM folder
 my $certfile;         # certificate chain PEM file
 
 #***************************************************************************
 my $certfile;         # certificate chain PEM file
 
 #***************************************************************************
@@ -112,7 +116,12 @@ while(@ARGV) {
     }
     elsif($ARGV[0] eq '--stunnel') {
         if($ARGV[1]) {
     }
     elsif($ARGV[0] eq '--stunnel') {
         if($ARGV[1]) {
-            $stunnel = $ARGV[1];
+            if($ARGV[1] =~ /^([\w\/]+)$/) {
+                $stunnel = $ARGV[1];
+            }
+            else {
+                $stunnel = "\"". $ARGV[1] ."\"";
+            }
             shift @ARGV;
         }
     }
             shift @ARGV;
         }
     }
@@ -172,7 +181,9 @@ if(!$logfile) {
 
 $conffile = "$path/stunnel.conf";
 
 
 $conffile = "$path/stunnel.conf";
 
+$capath = abs_path($path);
 $certfile = "$srcdir/". ($stuncert?"certs/$stuncert":"stunnel.pem");
 $certfile = "$srcdir/". ($stuncert?"certs/$stuncert":"stunnel.pem");
+$certfile = abs_path($certfile);
 
 my $ssltext = uc($proto) ." SSL/TLS:";
 
 
 my $ssltext = uc($proto) ." SSL/TLS:";
 
@@ -184,7 +195,11 @@ foreach my $veropt (('-version', '-V')) {
         if($verstr =~ /^stunnel (\d+)\.(\d+) on /) {
             $ver_major = $1;
             $ver_minor = $2;
         if($verstr =~ /^stunnel (\d+)\.(\d+) on /) {
             $ver_major = $1;
             $ver_minor = $2;
-            last;
+        }
+        elsif($verstr =~ /^sslVersion.*fips *= *yes/) {
+            # the fips option causes an error if stunnel doesn't support it
+            $fips_support = 1;
+            last
         }
     }
     last if($ver_major);
         }
     }
     last if($ver_major);
@@ -201,7 +216,7 @@ if((!$ver_major) || (!$ver_minor)) {
 $stunnel_version = (100*$ver_major) + $ver_minor;
 
 #***************************************************************************
 $stunnel_version = (100*$ver_major) + $ver_minor;
 
 #***************************************************************************
-# Verify minimmum stunnel required version
+# Verify minimum stunnel required version
 #
 if($stunnel_version < 310) {
     print "$ssltext Unsupported stunnel version $ver_major.$ver_minor\n";
 #
 if($stunnel_version < 310) {
     print "$ssltext Unsupported stunnel version $ver_major.$ver_minor\n";
@@ -209,6 +224,17 @@ if($stunnel_version < 310) {
 }
 
 #***************************************************************************
 }
 
 #***************************************************************************
+# Find out if we are running on Windows using the tstunnel binary
+#
+if($stunnel =~ /tstunnel(\.exe)?"?$/) {
+    $tstunnel_windows = 1;
+
+    # replace Cygwin and MinGW drives within paths
+    $capath =~ s/^(\/cygdrive)?\/(\w)\//$2\:\//;
+    $certfile =~ s/^(\/cygdrive)?\/(\w)\//$2\:\//;
+}
+
+#***************************************************************************
 # Build command to execute for stunnel 3.X versions
 #
 if($stunnel_version < 400) {
 # Build command to execute for stunnel 3.X versions
 #
 if($stunnel_version < 400) {
@@ -243,19 +269,24 @@ if($stunnel_version >= 400) {
     $SIG{TERM} = \&exit_signal_handler;
     # stunnel configuration file
     if(open(STUNCONF, ">$conffile")) {
     $SIG{TERM} = \&exit_signal_handler;
     # stunnel configuration file
     if(open(STUNCONF, ">$conffile")) {
-       print STUNCONF "
-       CApath = $path
-       cert = $certfile
-       pid = $pidfile
-       debug = $loglevel
-       output = $logfile
-       socket = $socketopt
-       foreground = yes
-       
-       [curltest]
-       accept = $accept_port
-       connect = $target_port
-       ";
+        print STUNCONF "CApath = $capath\n";
+        print STUNCONF "cert = $certfile\n";
+        print STUNCONF "debug = $loglevel\n";
+        print STUNCONF "socket = $socketopt\n";
+        if($fips_support) {
+            # disable fips in case OpenSSL doesn't support it
+            print STUNCONF "fips = no\n";
+        }
+        if(!$tstunnel_windows) {
+            # do not use Linux-specific options on Windows
+            print STUNCONF "output = $logfile\n";
+            print STUNCONF "pid = $pidfile\n";
+            print STUNCONF "foreground = yes\n";
+        }
+        print STUNCONF "\n";
+        print STUNCONF "[curltest]\n";
+        print STUNCONF "accept = $accept_port\n";
+        print STUNCONF "connect = $target_port\n";
         if(!close(STUNCONF)) {
             print "$ssltext Error closing file $conffile\n";
             exit 1;
         if(!close(STUNCONF)) {
             print "$ssltext Error closing file $conffile\n";
             exit 1;
@@ -268,13 +299,18 @@ if($stunnel_version >= 400) {
     if($verbose) {
         print uc($proto) ." server (stunnel $ver_major.$ver_minor)\n";
         print "cmd: $cmd\n";
     if($verbose) {
         print uc($proto) ." server (stunnel $ver_major.$ver_minor)\n";
         print "cmd: $cmd\n";
-        print "CApath = $path\n";
+        print "CApath = $capath\n";
         print "cert = $certfile\n";
         print "cert = $certfile\n";
-        print "pid = $pidfile\n";
         print "debug = $loglevel\n";
         print "debug = $loglevel\n";
-        print "output = $logfile\n";
         print "socket = $socketopt\n";
         print "socket = $socketopt\n";
-        print "foreground = yes\n";
+        if($fips_support) {
+            print "fips = no\n";
+        }
+        if(!$tstunnel_windows) {
+            print "pid = $pidfile\n";
+            print "output = $logfile\n";
+            print "foreground = yes\n";
+        }
         print "\n";
         print "[curltest]\n";
         print "accept = $accept_port\n";
         print "\n";
         print "[curltest]\n";
         print "accept = $accept_port\n";
@@ -288,6 +324,25 @@ if($stunnel_version >= 400) {
 chmod(0600, $certfile) if(-f $certfile);
 
 #***************************************************************************
 chmod(0600, $certfile) if(-f $certfile);
 
 #***************************************************************************
+# Run tstunnel on Windows.
+#
+if($tstunnel_windows) {
+    # Fake pidfile for tstunnel on Windows.
+    if(open(OUT, ">$pidfile")) {
+        print OUT $$ . "\n";
+        close(OUT);
+    }
+
+    # Put an "exec" in front of the command so that the child process
+    # keeps this child's process ID.
+    exec("exec $cmd") || die "Can't exec() $cmd: $!";
+
+    # exec() should never return back here to this process. We protect
+    # ourselves by calling die() just in case something goes really bad.
+    die "error: exec() has returned";
+}
+
+#***************************************************************************
 # Run stunnel.
 #
 my $rc = system($cmd);
 # Run stunnel.
 #
 my $rc = system($cmd);
index b30c599..f63718a 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -112,13 +112,17 @@ CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
 PROGRAMS = $(noinst_PROGRAMS)
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
 PROGRAMS = $(noinst_PROGRAMS)
-am__objects_1 = fake_ntlm-mprintf.$(OBJEXT) \
-       fake_ntlm-nonblock.$(OBJEXT) fake_ntlm-strequal.$(OBJEXT) \
-       fake_ntlm-strtoofft.$(OBJEXT) fake_ntlm-timeval.$(OBJEXT) \
-       fake_ntlm-warnless.$(OBJEXT)
+am__dirstamp = $(am__leading_dot)dirstamp
+am__objects_1 = ../../lib/fake_ntlm-mprintf.$(OBJEXT) \
+       ../../lib/fake_ntlm-nonblock.$(OBJEXT) \
+       ../../lib/fake_ntlm-strequal.$(OBJEXT) \
+       ../../lib/fake_ntlm-strtoofft.$(OBJEXT) \
+       ../../lib/fake_ntlm-timeval.$(OBJEXT) \
+       ../../lib/fake_ntlm-warnless.$(OBJEXT)
 am__objects_2 =
 am__objects_2 =
-am__objects_3 = fake_ntlm-getpart.$(OBJEXT) fake_ntlm-base64.$(OBJEXT) \
-       fake_ntlm-memdebug.$(OBJEXT)
+am__objects_3 = fake_ntlm-getpart.$(OBJEXT) \
+       ../../lib/fake_ntlm-base64.$(OBJEXT) \
+       ../../lib/fake_ntlm-memdebug.$(OBJEXT)
 am__objects_4 = fake_ntlm-util.$(OBJEXT)
 am_fake_ntlm_OBJECTS = $(am__objects_1) $(am__objects_2) \
        $(am__objects_3) $(am__objects_4) \
 am__objects_4 = fake_ntlm-util.$(OBJEXT)
 am_fake_ntlm_OBJECTS = $(am__objects_1) $(am__objects_2) \
        $(am__objects_3) $(am__objects_4) \
@@ -132,11 +136,15 @@ am__v_lt_1 =
 fake_ntlm_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(fake_ntlm_CFLAGS) \
        $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
 fake_ntlm_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(fake_ntlm_CFLAGS) \
        $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am__objects_5 = getpart-mprintf.$(OBJEXT) getpart-nonblock.$(OBJEXT) \
-       getpart-strequal.$(OBJEXT) getpart-strtoofft.$(OBJEXT) \
-       getpart-timeval.$(OBJEXT) getpart-warnless.$(OBJEXT)
-am__objects_6 = getpart-getpart.$(OBJEXT) getpart-base64.$(OBJEXT) \
-       getpart-memdebug.$(OBJEXT)
+am__objects_5 = ../../lib/getpart-mprintf.$(OBJEXT) \
+       ../../lib/getpart-nonblock.$(OBJEXT) \
+       ../../lib/getpart-strequal.$(OBJEXT) \
+       ../../lib/getpart-strtoofft.$(OBJEXT) \
+       ../../lib/getpart-timeval.$(OBJEXT) \
+       ../../lib/getpart-warnless.$(OBJEXT)
+am__objects_6 = getpart-getpart.$(OBJEXT) \
+       ../../lib/getpart-base64.$(OBJEXT) \
+       ../../lib/getpart-memdebug.$(OBJEXT)
 am_getpart_OBJECTS = $(am__objects_5) $(am__objects_2) \
        $(am__objects_6) getpart-testpart.$(OBJEXT)
 getpart_OBJECTS = $(am_getpart_OBJECTS)
 am_getpart_OBJECTS = $(am__objects_5) $(am__objects_2) \
        $(am__objects_6) getpart-testpart.$(OBJEXT)
 getpart_OBJECTS = $(am_getpart_OBJECTS)
@@ -144,11 +152,15 @@ getpart_DEPENDENCIES =
 getpart_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(getpart_CFLAGS) \
        $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
 getpart_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(getpart_CFLAGS) \
        $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am__objects_7 = resolve-mprintf.$(OBJEXT) resolve-nonblock.$(OBJEXT) \
-       resolve-strequal.$(OBJEXT) resolve-strtoofft.$(OBJEXT) \
-       resolve-timeval.$(OBJEXT) resolve-warnless.$(OBJEXT)
-am__objects_8 = resolve-getpart.$(OBJEXT) resolve-base64.$(OBJEXT) \
-       resolve-memdebug.$(OBJEXT)
+am__objects_7 = ../../lib/resolve-mprintf.$(OBJEXT) \
+       ../../lib/resolve-nonblock.$(OBJEXT) \
+       ../../lib/resolve-strequal.$(OBJEXT) \
+       ../../lib/resolve-strtoofft.$(OBJEXT) \
+       ../../lib/resolve-timeval.$(OBJEXT) \
+       ../../lib/resolve-warnless.$(OBJEXT)
+am__objects_8 = resolve-getpart.$(OBJEXT) \
+       ../../lib/resolve-base64.$(OBJEXT) \
+       ../../lib/resolve-memdebug.$(OBJEXT)
 am__objects_9 = resolve-util.$(OBJEXT)
 am_resolve_OBJECTS = $(am__objects_7) $(am__objects_2) \
        $(am__objects_8) $(am__objects_9) resolve-resolve.$(OBJEXT)
 am__objects_9 = resolve-util.$(OBJEXT)
 am_resolve_OBJECTS = $(am__objects_7) $(am__objects_2) \
        $(am__objects_8) $(am__objects_9) resolve-resolve.$(OBJEXT)
@@ -157,11 +169,15 @@ resolve_DEPENDENCIES =
 resolve_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(resolve_CFLAGS) \
        $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
 resolve_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(resolve_CFLAGS) \
        $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am__objects_10 = rtspd-mprintf.$(OBJEXT) rtspd-nonblock.$(OBJEXT) \
-       rtspd-strequal.$(OBJEXT) rtspd-strtoofft.$(OBJEXT) \
-       rtspd-timeval.$(OBJEXT) rtspd-warnless.$(OBJEXT)
-am__objects_11 = rtspd-getpart.$(OBJEXT) rtspd-base64.$(OBJEXT) \
-       rtspd-memdebug.$(OBJEXT)
+am__objects_10 = ../../lib/rtspd-mprintf.$(OBJEXT) \
+       ../../lib/rtspd-nonblock.$(OBJEXT) \
+       ../../lib/rtspd-strequal.$(OBJEXT) \
+       ../../lib/rtspd-strtoofft.$(OBJEXT) \
+       ../../lib/rtspd-timeval.$(OBJEXT) \
+       ../../lib/rtspd-warnless.$(OBJEXT)
+am__objects_11 = rtspd-getpart.$(OBJEXT) \
+       ../../lib/rtspd-base64.$(OBJEXT) \
+       ../../lib/rtspd-memdebug.$(OBJEXT)
 am__objects_12 = rtspd-util.$(OBJEXT)
 am_rtspd_OBJECTS = $(am__objects_10) $(am__objects_2) \
        $(am__objects_11) $(am__objects_12) rtspd-rtspd.$(OBJEXT)
 am__objects_12 = rtspd-util.$(OBJEXT)
 am_rtspd_OBJECTS = $(am__objects_10) $(am__objects_2) \
        $(am__objects_11) $(am__objects_12) rtspd-rtspd.$(OBJEXT)
@@ -170,39 +186,51 @@ rtspd_DEPENDENCIES =
 rtspd_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(rtspd_CFLAGS) $(CFLAGS) \
        $(AM_LDFLAGS) $(LDFLAGS) -o $@
 rtspd_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(rtspd_CFLAGS) $(CFLAGS) \
        $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am__objects_13 = sockfilt-mprintf.$(OBJEXT) \
-       sockfilt-nonblock.$(OBJEXT) sockfilt-strequal.$(OBJEXT) \
-       sockfilt-strtoofft.$(OBJEXT) sockfilt-timeval.$(OBJEXT) \
-       sockfilt-warnless.$(OBJEXT)
-am__objects_14 = sockfilt-getpart.$(OBJEXT) sockfilt-base64.$(OBJEXT) \
-       sockfilt-memdebug.$(OBJEXT)
+am__objects_13 = ../../lib/sockfilt-mprintf.$(OBJEXT) \
+       ../../lib/sockfilt-nonblock.$(OBJEXT) \
+       ../../lib/sockfilt-strequal.$(OBJEXT) \
+       ../../lib/sockfilt-strtoofft.$(OBJEXT) \
+       ../../lib/sockfilt-timeval.$(OBJEXT) \
+       ../../lib/sockfilt-warnless.$(OBJEXT)
+am__objects_14 = sockfilt-getpart.$(OBJEXT) \
+       ../../lib/sockfilt-base64.$(OBJEXT) \
+       ../../lib/sockfilt-memdebug.$(OBJEXT)
 am__objects_15 = sockfilt-util.$(OBJEXT)
 am_sockfilt_OBJECTS = $(am__objects_13) $(am__objects_2) \
        $(am__objects_14) $(am__objects_15) \
 am__objects_15 = sockfilt-util.$(OBJEXT)
 am_sockfilt_OBJECTS = $(am__objects_13) $(am__objects_2) \
        $(am__objects_14) $(am__objects_15) \
-       sockfilt-sockfilt.$(OBJEXT) sockfilt-inet_pton.$(OBJEXT)
+       sockfilt-sockfilt.$(OBJEXT) \
+       ../../lib/sockfilt-inet_pton.$(OBJEXT)
 sockfilt_OBJECTS = $(am_sockfilt_OBJECTS)
 sockfilt_DEPENDENCIES =
 sockfilt_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(sockfilt_CFLAGS) \
        $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
 sockfilt_OBJECTS = $(am_sockfilt_OBJECTS)
 sockfilt_DEPENDENCIES =
 sockfilt_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(sockfilt_CFLAGS) \
        $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am__objects_16 = sws-mprintf.$(OBJEXT) sws-nonblock.$(OBJEXT) \
-       sws-strequal.$(OBJEXT) sws-strtoofft.$(OBJEXT) \
-       sws-timeval.$(OBJEXT) sws-warnless.$(OBJEXT)
-am__objects_17 = sws-getpart.$(OBJEXT) sws-base64.$(OBJEXT) \
-       sws-memdebug.$(OBJEXT)
+am__objects_16 = ../../lib/sws-mprintf.$(OBJEXT) \
+       ../../lib/sws-nonblock.$(OBJEXT) \
+       ../../lib/sws-strequal.$(OBJEXT) \
+       ../../lib/sws-strtoofft.$(OBJEXT) \
+       ../../lib/sws-timeval.$(OBJEXT) \
+       ../../lib/sws-warnless.$(OBJEXT)
+am__objects_17 = sws-getpart.$(OBJEXT) ../../lib/sws-base64.$(OBJEXT) \
+       ../../lib/sws-memdebug.$(OBJEXT)
 am__objects_18 = sws-util.$(OBJEXT)
 am_sws_OBJECTS = $(am__objects_16) $(am__objects_2) $(am__objects_17) \
 am__objects_18 = sws-util.$(OBJEXT)
 am_sws_OBJECTS = $(am__objects_16) $(am__objects_2) $(am__objects_17) \
-       $(am__objects_18) sws-sws.$(OBJEXT) sws-inet_pton.$(OBJEXT)
+       $(am__objects_18) sws-sws.$(OBJEXT) \
+       ../../lib/sws-inet_pton.$(OBJEXT)
 sws_OBJECTS = $(am_sws_OBJECTS)
 sws_DEPENDENCIES =
 sws_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(sws_CFLAGS) $(CFLAGS) \
        $(AM_LDFLAGS) $(LDFLAGS) -o $@
 sws_OBJECTS = $(am_sws_OBJECTS)
 sws_DEPENDENCIES =
 sws_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(sws_CFLAGS) $(CFLAGS) \
        $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am__objects_19 = tftpd-mprintf.$(OBJEXT) tftpd-nonblock.$(OBJEXT) \
-       tftpd-strequal.$(OBJEXT) tftpd-strtoofft.$(OBJEXT) \
-       tftpd-timeval.$(OBJEXT) tftpd-warnless.$(OBJEXT)
-am__objects_20 = tftpd-getpart.$(OBJEXT) tftpd-base64.$(OBJEXT) \
-       tftpd-memdebug.$(OBJEXT)
+am__objects_19 = ../../lib/tftpd-mprintf.$(OBJEXT) \
+       ../../lib/tftpd-nonblock.$(OBJEXT) \
+       ../../lib/tftpd-strequal.$(OBJEXT) \
+       ../../lib/tftpd-strtoofft.$(OBJEXT) \
+       ../../lib/tftpd-timeval.$(OBJEXT) \
+       ../../lib/tftpd-warnless.$(OBJEXT)
+am__objects_20 = tftpd-getpart.$(OBJEXT) \
+       ../../lib/tftpd-base64.$(OBJEXT) \
+       ../../lib/tftpd-memdebug.$(OBJEXT)
 am__objects_21 = tftpd-util.$(OBJEXT)
 am_tftpd_OBJECTS = $(am__objects_19) $(am__objects_2) \
        $(am__objects_20) $(am__objects_21) tftpd-tftpd.$(OBJEXT)
 am__objects_21 = tftpd-util.$(OBJEXT)
 am_tftpd_OBJECTS = $(am__objects_19) $(am__objects_2) \
        $(am__objects_20) $(am__objects_21) tftpd-tftpd.$(OBJEXT)
@@ -308,6 +336,7 @@ CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
+CURL_DISABLE_SMB = @CURL_DISABLE_SMB@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
@@ -332,7 +361,6 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_NSS_INITCONTEXT = @HAVE_NSS_INITCONTEXT@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
@@ -341,7 +369,6 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
-KRB4_ENABLED = @KRB4_ENABLED@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
@@ -364,6 +391,7 @@ MKDIR_P = @MKDIR_P@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
+NSS_LIBS = @NSS_LIBS@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
@@ -399,11 +427,13 @@ USE_GNUTLS = @USE_GNUTLS@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
+USE_NGHTTP2 = @USE_NGHTTP2@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
+USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
@@ -628,30 +658,152 @@ clean-noinstPROGRAMS:
        list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
        echo " rm -f" $$list; \
        rm -f $$list
        list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
        echo " rm -f" $$list; \
        rm -f $$list
+../../lib/$(am__dirstamp):
+       @$(MKDIR_P) ../../lib
+       @: > ../../lib/$(am__dirstamp)
+../../lib/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) ../../lib/$(DEPDIR)
+       @: > ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/fake_ntlm-mprintf.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/fake_ntlm-nonblock.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/fake_ntlm-strequal.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/fake_ntlm-strtoofft.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/fake_ntlm-timeval.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/fake_ntlm-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/fake_ntlm-base64.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/fake_ntlm-memdebug.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 fake_ntlm$(EXEEXT): $(fake_ntlm_OBJECTS) $(fake_ntlm_DEPENDENCIES) $(EXTRA_fake_ntlm_DEPENDENCIES) 
        @rm -f fake_ntlm$(EXEEXT)
        $(AM_V_CCLD)$(fake_ntlm_LINK) $(fake_ntlm_OBJECTS) $(fake_ntlm_LDADD) $(LIBS)
 
 fake_ntlm$(EXEEXT): $(fake_ntlm_OBJECTS) $(fake_ntlm_DEPENDENCIES) $(EXTRA_fake_ntlm_DEPENDENCIES) 
        @rm -f fake_ntlm$(EXEEXT)
        $(AM_V_CCLD)$(fake_ntlm_LINK) $(fake_ntlm_OBJECTS) $(fake_ntlm_LDADD) $(LIBS)
+../../lib/getpart-mprintf.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/getpart-nonblock.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/getpart-strequal.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/getpart-strtoofft.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/getpart-timeval.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/getpart-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/getpart-base64.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/getpart-memdebug.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 getpart$(EXEEXT): $(getpart_OBJECTS) $(getpart_DEPENDENCIES) $(EXTRA_getpart_DEPENDENCIES) 
        @rm -f getpart$(EXEEXT)
        $(AM_V_CCLD)$(getpart_LINK) $(getpart_OBJECTS) $(getpart_LDADD) $(LIBS)
 
 getpart$(EXEEXT): $(getpart_OBJECTS) $(getpart_DEPENDENCIES) $(EXTRA_getpart_DEPENDENCIES) 
        @rm -f getpart$(EXEEXT)
        $(AM_V_CCLD)$(getpart_LINK) $(getpart_OBJECTS) $(getpart_LDADD) $(LIBS)
+../../lib/resolve-mprintf.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/resolve-nonblock.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/resolve-strequal.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/resolve-strtoofft.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/resolve-timeval.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/resolve-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/resolve-base64.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/resolve-memdebug.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 resolve$(EXEEXT): $(resolve_OBJECTS) $(resolve_DEPENDENCIES) $(EXTRA_resolve_DEPENDENCIES) 
        @rm -f resolve$(EXEEXT)
        $(AM_V_CCLD)$(resolve_LINK) $(resolve_OBJECTS) $(resolve_LDADD) $(LIBS)
 
 resolve$(EXEEXT): $(resolve_OBJECTS) $(resolve_DEPENDENCIES) $(EXTRA_resolve_DEPENDENCIES) 
        @rm -f resolve$(EXEEXT)
        $(AM_V_CCLD)$(resolve_LINK) $(resolve_OBJECTS) $(resolve_LDADD) $(LIBS)
+../../lib/rtspd-mprintf.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/rtspd-nonblock.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/rtspd-strequal.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/rtspd-strtoofft.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/rtspd-timeval.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/rtspd-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/rtspd-base64.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/rtspd-memdebug.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 rtspd$(EXEEXT): $(rtspd_OBJECTS) $(rtspd_DEPENDENCIES) $(EXTRA_rtspd_DEPENDENCIES) 
        @rm -f rtspd$(EXEEXT)
        $(AM_V_CCLD)$(rtspd_LINK) $(rtspd_OBJECTS) $(rtspd_LDADD) $(LIBS)
 
 rtspd$(EXEEXT): $(rtspd_OBJECTS) $(rtspd_DEPENDENCIES) $(EXTRA_rtspd_DEPENDENCIES) 
        @rm -f rtspd$(EXEEXT)
        $(AM_V_CCLD)$(rtspd_LINK) $(rtspd_OBJECTS) $(rtspd_LDADD) $(LIBS)
+../../lib/sockfilt-mprintf.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/sockfilt-nonblock.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/sockfilt-strequal.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/sockfilt-strtoofft.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/sockfilt-timeval.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/sockfilt-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/sockfilt-base64.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/sockfilt-memdebug.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/sockfilt-inet_pton.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 sockfilt$(EXEEXT): $(sockfilt_OBJECTS) $(sockfilt_DEPENDENCIES) $(EXTRA_sockfilt_DEPENDENCIES) 
        @rm -f sockfilt$(EXEEXT)
        $(AM_V_CCLD)$(sockfilt_LINK) $(sockfilt_OBJECTS) $(sockfilt_LDADD) $(LIBS)
 
 sockfilt$(EXEEXT): $(sockfilt_OBJECTS) $(sockfilt_DEPENDENCIES) $(EXTRA_sockfilt_DEPENDENCIES) 
        @rm -f sockfilt$(EXEEXT)
        $(AM_V_CCLD)$(sockfilt_LINK) $(sockfilt_OBJECTS) $(sockfilt_LDADD) $(LIBS)
+../../lib/sws-mprintf.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/sws-nonblock.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/sws-strequal.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/sws-strtoofft.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/sws-timeval.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/sws-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/sws-base64.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/sws-memdebug.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/sws-inet_pton.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 sws$(EXEEXT): $(sws_OBJECTS) $(sws_DEPENDENCIES) $(EXTRA_sws_DEPENDENCIES) 
        @rm -f sws$(EXEEXT)
        $(AM_V_CCLD)$(sws_LINK) $(sws_OBJECTS) $(sws_LDADD) $(LIBS)
 
 sws$(EXEEXT): $(sws_OBJECTS) $(sws_DEPENDENCIES) $(EXTRA_sws_DEPENDENCIES) 
        @rm -f sws$(EXEEXT)
        $(AM_V_CCLD)$(sws_LINK) $(sws_OBJECTS) $(sws_LDADD) $(LIBS)
+../../lib/tftpd-mprintf.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/tftpd-nonblock.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/tftpd-strequal.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/tftpd-strtoofft.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/tftpd-timeval.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/tftpd-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/tftpd-base64.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/tftpd-memdebug.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 tftpd$(EXEEXT): $(tftpd_OBJECTS) $(tftpd_DEPENDENCIES) $(EXTRA_tftpd_DEPENDENCIES) 
        @rm -f tftpd$(EXEEXT)
 
 tftpd$(EXEEXT): $(tftpd_OBJECTS) $(tftpd_DEPENDENCIES) $(EXTRA_tftpd_DEPENDENCIES) 
        @rm -f tftpd$(EXEEXT)
@@ -659,193 +811,197 @@ tftpd$(EXEEXT): $(tftpd_OBJECTS) $(tftpd_DEPENDENCIES) $(EXTRA_tftpd_DEPENDENCIE
 
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
 
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
+       -rm -f ../../lib/*.$(OBJEXT)
 
 distclean-compile:
        -rm -f *.tab.c
 
 
 distclean-compile:
        -rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fake_ntlm-base64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/fake_ntlm-base64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/fake_ntlm-memdebug.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/fake_ntlm-mprintf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/fake_ntlm-nonblock.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/fake_ntlm-strequal.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/fake_ntlm-strtoofft.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/fake_ntlm-timeval.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/fake_ntlm-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/getpart-base64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/getpart-memdebug.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/getpart-mprintf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/getpart-nonblock.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/getpart-strequal.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/getpart-strtoofft.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/getpart-timeval.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/getpart-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/resolve-base64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/resolve-memdebug.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/resolve-mprintf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/resolve-nonblock.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/resolve-strequal.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/resolve-strtoofft.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/resolve-timeval.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/resolve-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/rtspd-base64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/rtspd-memdebug.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/rtspd-mprintf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/rtspd-nonblock.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/rtspd-strequal.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/rtspd-strtoofft.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/rtspd-timeval.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/rtspd-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-base64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-inet_pton.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-memdebug.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-mprintf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-nonblock.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-strequal.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-strtoofft.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-timeval.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-base64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-inet_pton.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-memdebug.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-mprintf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-nonblock.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-strequal.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-strtoofft.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-timeval.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-warnless.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/tftpd-base64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/tftpd-memdebug.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/tftpd-mprintf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/tftpd-nonblock.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/tftpd-strequal.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/tftpd-strtoofft.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/tftpd-timeval.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/tftpd-warnless.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fake_ntlm-fake_ntlm.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fake_ntlm-getpart.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fake_ntlm-fake_ntlm.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fake_ntlm-getpart.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fake_ntlm-memdebug.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fake_ntlm-mprintf.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fake_ntlm-nonblock.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fake_ntlm-strequal.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fake_ntlm-strtoofft.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fake_ntlm-timeval.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fake_ntlm-util.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fake_ntlm-util.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fake_ntlm-warnless.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpart-base64.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpart-getpart.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpart-getpart.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpart-memdebug.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpart-mprintf.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpart-nonblock.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpart-strequal.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpart-strtoofft.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpart-testpart.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpart-testpart.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpart-timeval.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpart-warnless.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resolve-base64.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resolve-getpart.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resolve-getpart.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resolve-memdebug.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resolve-mprintf.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resolve-nonblock.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resolve-resolve.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resolve-resolve.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resolve-strequal.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resolve-strtoofft.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resolve-timeval.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resolve-util.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resolve-util.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resolve-warnless.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtspd-base64.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtspd-getpart.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtspd-getpart.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtspd-memdebug.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtspd-mprintf.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtspd-nonblock.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtspd-rtspd.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtspd-rtspd.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtspd-strequal.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtspd-strtoofft.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtspd-timeval.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtspd-util.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtspd-util.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtspd-warnless.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockfilt-base64.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockfilt-getpart.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockfilt-getpart.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockfilt-inet_pton.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockfilt-memdebug.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockfilt-mprintf.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockfilt-nonblock.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockfilt-sockfilt.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockfilt-sockfilt.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockfilt-strequal.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockfilt-strtoofft.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockfilt-timeval.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockfilt-util.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockfilt-util.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockfilt-warnless.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sws-base64.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sws-getpart.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sws-getpart.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sws-inet_pton.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sws-memdebug.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sws-mprintf.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sws-nonblock.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sws-strequal.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sws-strtoofft.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sws-sws.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sws-sws.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sws-timeval.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sws-util.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sws-util.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sws-warnless.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tftpd-base64.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tftpd-getpart.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tftpd-getpart.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tftpd-memdebug.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tftpd-mprintf.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tftpd-nonblock.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tftpd-strequal.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tftpd-strtoofft.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tftpd-tftpd.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tftpd-tftpd.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tftpd-timeval.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tftpd-util.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tftpd-util.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tftpd-warnless.Po@am__quote@
 
 .c.o:
 
 .c.o:
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
 
 .c.obj:
 
 .c.obj:
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
 
 .c.lo:
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+@am__fastdepCC_TRUE@   $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Plo
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
-fake_ntlm-mprintf.o: ../../lib/mprintf.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT fake_ntlm-mprintf.o -MD -MP -MF $(DEPDIR)/fake_ntlm-mprintf.Tpo -c -o fake_ntlm-mprintf.o `test -f '../../lib/mprintf.c' || echo '$(srcdir)/'`../../lib/mprintf.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/fake_ntlm-mprintf.Tpo $(DEPDIR)/fake_ntlm-mprintf.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/mprintf.c' object='fake_ntlm-mprintf.o' libtool=no @AMDEPBACKSLASH@
+../../lib/fake_ntlm-mprintf.o: ../../lib/mprintf.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT ../../lib/fake_ntlm-mprintf.o -MD -MP -MF ../../lib/$(DEPDIR)/fake_ntlm-mprintf.Tpo -c -o ../../lib/fake_ntlm-mprintf.o `test -f '../../lib/mprintf.c' || echo '$(srcdir)/'`../../lib/mprintf.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/fake_ntlm-mprintf.Tpo ../../lib/$(DEPDIR)/fake_ntlm-mprintf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/mprintf.c' object='../../lib/fake_ntlm-mprintf.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o fake_ntlm-mprintf.o `test -f '../../lib/mprintf.c' || echo '$(srcdir)/'`../../lib/mprintf.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o ../../lib/fake_ntlm-mprintf.o `test -f '../../lib/mprintf.c' || echo '$(srcdir)/'`../../lib/mprintf.c
 
 
-fake_ntlm-mprintf.obj: ../../lib/mprintf.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT fake_ntlm-mprintf.obj -MD -MP -MF $(DEPDIR)/fake_ntlm-mprintf.Tpo -c -o fake_ntlm-mprintf.obj `if test -f '../../lib/mprintf.c'; then $(CYGPATH_W) '../../lib/mprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/mprintf.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/fake_ntlm-mprintf.Tpo $(DEPDIR)/fake_ntlm-mprintf.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/mprintf.c' object='fake_ntlm-mprintf.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/fake_ntlm-mprintf.obj: ../../lib/mprintf.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT ../../lib/fake_ntlm-mprintf.obj -MD -MP -MF ../../lib/$(DEPDIR)/fake_ntlm-mprintf.Tpo -c -o ../../lib/fake_ntlm-mprintf.obj `if test -f '../../lib/mprintf.c'; then $(CYGPATH_W) '../../lib/mprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/mprintf.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/fake_ntlm-mprintf.Tpo ../../lib/$(DEPDIR)/fake_ntlm-mprintf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/mprintf.c' object='../../lib/fake_ntlm-mprintf.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o fake_ntlm-mprintf.obj `if test -f '../../lib/mprintf.c'; then $(CYGPATH_W) '../../lib/mprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/mprintf.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o ../../lib/fake_ntlm-mprintf.obj `if test -f '../../lib/mprintf.c'; then $(CYGPATH_W) '../../lib/mprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/mprintf.c'; fi`
 
 
-fake_ntlm-nonblock.o: ../../lib/nonblock.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT fake_ntlm-nonblock.o -MD -MP -MF $(DEPDIR)/fake_ntlm-nonblock.Tpo -c -o fake_ntlm-nonblock.o `test -f '../../lib/nonblock.c' || echo '$(srcdir)/'`../../lib/nonblock.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/fake_ntlm-nonblock.Tpo $(DEPDIR)/fake_ntlm-nonblock.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/nonblock.c' object='fake_ntlm-nonblock.o' libtool=no @AMDEPBACKSLASH@
+../../lib/fake_ntlm-nonblock.o: ../../lib/nonblock.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT ../../lib/fake_ntlm-nonblock.o -MD -MP -MF ../../lib/$(DEPDIR)/fake_ntlm-nonblock.Tpo -c -o ../../lib/fake_ntlm-nonblock.o `test -f '../../lib/nonblock.c' || echo '$(srcdir)/'`../../lib/nonblock.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/fake_ntlm-nonblock.Tpo ../../lib/$(DEPDIR)/fake_ntlm-nonblock.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/nonblock.c' object='../../lib/fake_ntlm-nonblock.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o fake_ntlm-nonblock.o `test -f '../../lib/nonblock.c' || echo '$(srcdir)/'`../../lib/nonblock.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o ../../lib/fake_ntlm-nonblock.o `test -f '../../lib/nonblock.c' || echo '$(srcdir)/'`../../lib/nonblock.c
 
 
-fake_ntlm-nonblock.obj: ../../lib/nonblock.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT fake_ntlm-nonblock.obj -MD -MP -MF $(DEPDIR)/fake_ntlm-nonblock.Tpo -c -o fake_ntlm-nonblock.obj `if test -f '../../lib/nonblock.c'; then $(CYGPATH_W) '../../lib/nonblock.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/nonblock.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/fake_ntlm-nonblock.Tpo $(DEPDIR)/fake_ntlm-nonblock.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/nonblock.c' object='fake_ntlm-nonblock.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/fake_ntlm-nonblock.obj: ../../lib/nonblock.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT ../../lib/fake_ntlm-nonblock.obj -MD -MP -MF ../../lib/$(DEPDIR)/fake_ntlm-nonblock.Tpo -c -o ../../lib/fake_ntlm-nonblock.obj `if test -f '../../lib/nonblock.c'; then $(CYGPATH_W) '../../lib/nonblock.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/nonblock.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/fake_ntlm-nonblock.Tpo ../../lib/$(DEPDIR)/fake_ntlm-nonblock.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/nonblock.c' object='../../lib/fake_ntlm-nonblock.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o fake_ntlm-nonblock.obj `if test -f '../../lib/nonblock.c'; then $(CYGPATH_W) '../../lib/nonblock.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/nonblock.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o ../../lib/fake_ntlm-nonblock.obj `if test -f '../../lib/nonblock.c'; then $(CYGPATH_W) '../../lib/nonblock.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/nonblock.c'; fi`
 
 
-fake_ntlm-strequal.o: ../../lib/strequal.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT fake_ntlm-strequal.o -MD -MP -MF $(DEPDIR)/fake_ntlm-strequal.Tpo -c -o fake_ntlm-strequal.o `test -f '../../lib/strequal.c' || echo '$(srcdir)/'`../../lib/strequal.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/fake_ntlm-strequal.Tpo $(DEPDIR)/fake_ntlm-strequal.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strequal.c' object='fake_ntlm-strequal.o' libtool=no @AMDEPBACKSLASH@
+../../lib/fake_ntlm-strequal.o: ../../lib/strequal.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT ../../lib/fake_ntlm-strequal.o -MD -MP -MF ../../lib/$(DEPDIR)/fake_ntlm-strequal.Tpo -c -o ../../lib/fake_ntlm-strequal.o `test -f '../../lib/strequal.c' || echo '$(srcdir)/'`../../lib/strequal.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/fake_ntlm-strequal.Tpo ../../lib/$(DEPDIR)/fake_ntlm-strequal.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strequal.c' object='../../lib/fake_ntlm-strequal.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o fake_ntlm-strequal.o `test -f '../../lib/strequal.c' || echo '$(srcdir)/'`../../lib/strequal.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o ../../lib/fake_ntlm-strequal.o `test -f '../../lib/strequal.c' || echo '$(srcdir)/'`../../lib/strequal.c
 
 
-fake_ntlm-strequal.obj: ../../lib/strequal.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT fake_ntlm-strequal.obj -MD -MP -MF $(DEPDIR)/fake_ntlm-strequal.Tpo -c -o fake_ntlm-strequal.obj `if test -f '../../lib/strequal.c'; then $(CYGPATH_W) '../../lib/strequal.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strequal.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/fake_ntlm-strequal.Tpo $(DEPDIR)/fake_ntlm-strequal.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strequal.c' object='fake_ntlm-strequal.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/fake_ntlm-strequal.obj: ../../lib/strequal.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT ../../lib/fake_ntlm-strequal.obj -MD -MP -MF ../../lib/$(DEPDIR)/fake_ntlm-strequal.Tpo -c -o ../../lib/fake_ntlm-strequal.obj `if test -f '../../lib/strequal.c'; then $(CYGPATH_W) '../../lib/strequal.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strequal.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/fake_ntlm-strequal.Tpo ../../lib/$(DEPDIR)/fake_ntlm-strequal.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strequal.c' object='../../lib/fake_ntlm-strequal.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o fake_ntlm-strequal.obj `if test -f '../../lib/strequal.c'; then $(CYGPATH_W) '../../lib/strequal.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strequal.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o ../../lib/fake_ntlm-strequal.obj `if test -f '../../lib/strequal.c'; then $(CYGPATH_W) '../../lib/strequal.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strequal.c'; fi`
 
 
-fake_ntlm-strtoofft.o: ../../lib/strtoofft.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT fake_ntlm-strtoofft.o -MD -MP -MF $(DEPDIR)/fake_ntlm-strtoofft.Tpo -c -o fake_ntlm-strtoofft.o `test -f '../../lib/strtoofft.c' || echo '$(srcdir)/'`../../lib/strtoofft.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/fake_ntlm-strtoofft.Tpo $(DEPDIR)/fake_ntlm-strtoofft.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strtoofft.c' object='fake_ntlm-strtoofft.o' libtool=no @AMDEPBACKSLASH@
+../../lib/fake_ntlm-strtoofft.o: ../../lib/strtoofft.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT ../../lib/fake_ntlm-strtoofft.o -MD -MP -MF ../../lib/$(DEPDIR)/fake_ntlm-strtoofft.Tpo -c -o ../../lib/fake_ntlm-strtoofft.o `test -f '../../lib/strtoofft.c' || echo '$(srcdir)/'`../../lib/strtoofft.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/fake_ntlm-strtoofft.Tpo ../../lib/$(DEPDIR)/fake_ntlm-strtoofft.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strtoofft.c' object='../../lib/fake_ntlm-strtoofft.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o fake_ntlm-strtoofft.o `test -f '../../lib/strtoofft.c' || echo '$(srcdir)/'`../../lib/strtoofft.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o ../../lib/fake_ntlm-strtoofft.o `test -f '../../lib/strtoofft.c' || echo '$(srcdir)/'`../../lib/strtoofft.c
 
 
-fake_ntlm-strtoofft.obj: ../../lib/strtoofft.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT fake_ntlm-strtoofft.obj -MD -MP -MF $(DEPDIR)/fake_ntlm-strtoofft.Tpo -c -o fake_ntlm-strtoofft.obj `if test -f '../../lib/strtoofft.c'; then $(CYGPATH_W) '../../lib/strtoofft.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strtoofft.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/fake_ntlm-strtoofft.Tpo $(DEPDIR)/fake_ntlm-strtoofft.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strtoofft.c' object='fake_ntlm-strtoofft.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/fake_ntlm-strtoofft.obj: ../../lib/strtoofft.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT ../../lib/fake_ntlm-strtoofft.obj -MD -MP -MF ../../lib/$(DEPDIR)/fake_ntlm-strtoofft.Tpo -c -o ../../lib/fake_ntlm-strtoofft.obj `if test -f '../../lib/strtoofft.c'; then $(CYGPATH_W) '../../lib/strtoofft.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strtoofft.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/fake_ntlm-strtoofft.Tpo ../../lib/$(DEPDIR)/fake_ntlm-strtoofft.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strtoofft.c' object='../../lib/fake_ntlm-strtoofft.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o fake_ntlm-strtoofft.obj `if test -f '../../lib/strtoofft.c'; then $(CYGPATH_W) '../../lib/strtoofft.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strtoofft.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o ../../lib/fake_ntlm-strtoofft.obj `if test -f '../../lib/strtoofft.c'; then $(CYGPATH_W) '../../lib/strtoofft.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strtoofft.c'; fi`
 
 
-fake_ntlm-timeval.o: ../../lib/timeval.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT fake_ntlm-timeval.o -MD -MP -MF $(DEPDIR)/fake_ntlm-timeval.Tpo -c -o fake_ntlm-timeval.o `test -f '../../lib/timeval.c' || echo '$(srcdir)/'`../../lib/timeval.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/fake_ntlm-timeval.Tpo $(DEPDIR)/fake_ntlm-timeval.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timeval.c' object='fake_ntlm-timeval.o' libtool=no @AMDEPBACKSLASH@
+../../lib/fake_ntlm-timeval.o: ../../lib/timeval.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT ../../lib/fake_ntlm-timeval.o -MD -MP -MF ../../lib/$(DEPDIR)/fake_ntlm-timeval.Tpo -c -o ../../lib/fake_ntlm-timeval.o `test -f '../../lib/timeval.c' || echo '$(srcdir)/'`../../lib/timeval.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/fake_ntlm-timeval.Tpo ../../lib/$(DEPDIR)/fake_ntlm-timeval.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timeval.c' object='../../lib/fake_ntlm-timeval.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o fake_ntlm-timeval.o `test -f '../../lib/timeval.c' || echo '$(srcdir)/'`../../lib/timeval.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o ../../lib/fake_ntlm-timeval.o `test -f '../../lib/timeval.c' || echo '$(srcdir)/'`../../lib/timeval.c
 
 
-fake_ntlm-timeval.obj: ../../lib/timeval.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT fake_ntlm-timeval.obj -MD -MP -MF $(DEPDIR)/fake_ntlm-timeval.Tpo -c -o fake_ntlm-timeval.obj `if test -f '../../lib/timeval.c'; then $(CYGPATH_W) '../../lib/timeval.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timeval.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/fake_ntlm-timeval.Tpo $(DEPDIR)/fake_ntlm-timeval.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timeval.c' object='fake_ntlm-timeval.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/fake_ntlm-timeval.obj: ../../lib/timeval.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT ../../lib/fake_ntlm-timeval.obj -MD -MP -MF ../../lib/$(DEPDIR)/fake_ntlm-timeval.Tpo -c -o ../../lib/fake_ntlm-timeval.obj `if test -f '../../lib/timeval.c'; then $(CYGPATH_W) '../../lib/timeval.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timeval.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/fake_ntlm-timeval.Tpo ../../lib/$(DEPDIR)/fake_ntlm-timeval.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timeval.c' object='../../lib/fake_ntlm-timeval.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o fake_ntlm-timeval.obj `if test -f '../../lib/timeval.c'; then $(CYGPATH_W) '../../lib/timeval.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timeval.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o ../../lib/fake_ntlm-timeval.obj `if test -f '../../lib/timeval.c'; then $(CYGPATH_W) '../../lib/timeval.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timeval.c'; fi`
 
 
-fake_ntlm-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT fake_ntlm-warnless.o -MD -MP -MF $(DEPDIR)/fake_ntlm-warnless.Tpo -c -o fake_ntlm-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/fake_ntlm-warnless.Tpo $(DEPDIR)/fake_ntlm-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='fake_ntlm-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/fake_ntlm-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT ../../lib/fake_ntlm-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/fake_ntlm-warnless.Tpo -c -o ../../lib/fake_ntlm-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/fake_ntlm-warnless.Tpo ../../lib/$(DEPDIR)/fake_ntlm-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/fake_ntlm-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o fake_ntlm-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o ../../lib/fake_ntlm-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-fake_ntlm-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT fake_ntlm-warnless.obj -MD -MP -MF $(DEPDIR)/fake_ntlm-warnless.Tpo -c -o fake_ntlm-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/fake_ntlm-warnless.Tpo $(DEPDIR)/fake_ntlm-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='fake_ntlm-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/fake_ntlm-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT ../../lib/fake_ntlm-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/fake_ntlm-warnless.Tpo -c -o ../../lib/fake_ntlm-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/fake_ntlm-warnless.Tpo ../../lib/$(DEPDIR)/fake_ntlm-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/fake_ntlm-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o fake_ntlm-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o ../../lib/fake_ntlm-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 fake_ntlm-getpart.o: getpart.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT fake_ntlm-getpart.o -MD -MP -MF $(DEPDIR)/fake_ntlm-getpart.Tpo -c -o fake_ntlm-getpart.o `test -f 'getpart.c' || echo '$(srcdir)/'`getpart.c
 
 fake_ntlm-getpart.o: getpart.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT fake_ntlm-getpart.o -MD -MP -MF $(DEPDIR)/fake_ntlm-getpart.Tpo -c -o fake_ntlm-getpart.o `test -f 'getpart.c' || echo '$(srcdir)/'`getpart.c
@@ -861,33 +1017,33 @@ fake_ntlm-getpart.obj: getpart.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o fake_ntlm-getpart.obj `if test -f 'getpart.c'; then $(CYGPATH_W) 'getpart.c'; else $(CYGPATH_W) '$(srcdir)/getpart.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o fake_ntlm-getpart.obj `if test -f 'getpart.c'; then $(CYGPATH_W) 'getpart.c'; else $(CYGPATH_W) '$(srcdir)/getpart.c'; fi`
 
-fake_ntlm-base64.o: ../../lib/base64.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT fake_ntlm-base64.o -MD -MP -MF $(DEPDIR)/fake_ntlm-base64.Tpo -c -o fake_ntlm-base64.o `test -f '../../lib/base64.c' || echo '$(srcdir)/'`../../lib/base64.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/fake_ntlm-base64.Tpo $(DEPDIR)/fake_ntlm-base64.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/base64.c' object='fake_ntlm-base64.o' libtool=no @AMDEPBACKSLASH@
+../../lib/fake_ntlm-base64.o: ../../lib/base64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT ../../lib/fake_ntlm-base64.o -MD -MP -MF ../../lib/$(DEPDIR)/fake_ntlm-base64.Tpo -c -o ../../lib/fake_ntlm-base64.o `test -f '../../lib/base64.c' || echo '$(srcdir)/'`../../lib/base64.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/fake_ntlm-base64.Tpo ../../lib/$(DEPDIR)/fake_ntlm-base64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/base64.c' object='../../lib/fake_ntlm-base64.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o fake_ntlm-base64.o `test -f '../../lib/base64.c' || echo '$(srcdir)/'`../../lib/base64.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o ../../lib/fake_ntlm-base64.o `test -f '../../lib/base64.c' || echo '$(srcdir)/'`../../lib/base64.c
 
 
-fake_ntlm-base64.obj: ../../lib/base64.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT fake_ntlm-base64.obj -MD -MP -MF $(DEPDIR)/fake_ntlm-base64.Tpo -c -o fake_ntlm-base64.obj `if test -f '../../lib/base64.c'; then $(CYGPATH_W) '../../lib/base64.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/base64.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/fake_ntlm-base64.Tpo $(DEPDIR)/fake_ntlm-base64.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/base64.c' object='fake_ntlm-base64.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/fake_ntlm-base64.obj: ../../lib/base64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT ../../lib/fake_ntlm-base64.obj -MD -MP -MF ../../lib/$(DEPDIR)/fake_ntlm-base64.Tpo -c -o ../../lib/fake_ntlm-base64.obj `if test -f '../../lib/base64.c'; then $(CYGPATH_W) '../../lib/base64.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/base64.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/fake_ntlm-base64.Tpo ../../lib/$(DEPDIR)/fake_ntlm-base64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/base64.c' object='../../lib/fake_ntlm-base64.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o fake_ntlm-base64.obj `if test -f '../../lib/base64.c'; then $(CYGPATH_W) '../../lib/base64.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/base64.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o ../../lib/fake_ntlm-base64.obj `if test -f '../../lib/base64.c'; then $(CYGPATH_W) '../../lib/base64.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/base64.c'; fi`
 
 
-fake_ntlm-memdebug.o: ../../lib/memdebug.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT fake_ntlm-memdebug.o -MD -MP -MF $(DEPDIR)/fake_ntlm-memdebug.Tpo -c -o fake_ntlm-memdebug.o `test -f '../../lib/memdebug.c' || echo '$(srcdir)/'`../../lib/memdebug.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/fake_ntlm-memdebug.Tpo $(DEPDIR)/fake_ntlm-memdebug.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/memdebug.c' object='fake_ntlm-memdebug.o' libtool=no @AMDEPBACKSLASH@
+../../lib/fake_ntlm-memdebug.o: ../../lib/memdebug.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT ../../lib/fake_ntlm-memdebug.o -MD -MP -MF ../../lib/$(DEPDIR)/fake_ntlm-memdebug.Tpo -c -o ../../lib/fake_ntlm-memdebug.o `test -f '../../lib/memdebug.c' || echo '$(srcdir)/'`../../lib/memdebug.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/fake_ntlm-memdebug.Tpo ../../lib/$(DEPDIR)/fake_ntlm-memdebug.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/memdebug.c' object='../../lib/fake_ntlm-memdebug.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o fake_ntlm-memdebug.o `test -f '../../lib/memdebug.c' || echo '$(srcdir)/'`../../lib/memdebug.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o ../../lib/fake_ntlm-memdebug.o `test -f '../../lib/memdebug.c' || echo '$(srcdir)/'`../../lib/memdebug.c
 
 
-fake_ntlm-memdebug.obj: ../../lib/memdebug.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT fake_ntlm-memdebug.obj -MD -MP -MF $(DEPDIR)/fake_ntlm-memdebug.Tpo -c -o fake_ntlm-memdebug.obj `if test -f '../../lib/memdebug.c'; then $(CYGPATH_W) '../../lib/memdebug.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/memdebug.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/fake_ntlm-memdebug.Tpo $(DEPDIR)/fake_ntlm-memdebug.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/memdebug.c' object='fake_ntlm-memdebug.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/fake_ntlm-memdebug.obj: ../../lib/memdebug.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT ../../lib/fake_ntlm-memdebug.obj -MD -MP -MF ../../lib/$(DEPDIR)/fake_ntlm-memdebug.Tpo -c -o ../../lib/fake_ntlm-memdebug.obj `if test -f '../../lib/memdebug.c'; then $(CYGPATH_W) '../../lib/memdebug.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/memdebug.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/fake_ntlm-memdebug.Tpo ../../lib/$(DEPDIR)/fake_ntlm-memdebug.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/memdebug.c' object='../../lib/fake_ntlm-memdebug.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o fake_ntlm-memdebug.obj `if test -f '../../lib/memdebug.c'; then $(CYGPATH_W) '../../lib/memdebug.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/memdebug.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o ../../lib/fake_ntlm-memdebug.obj `if test -f '../../lib/memdebug.c'; then $(CYGPATH_W) '../../lib/memdebug.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/memdebug.c'; fi`
 
 fake_ntlm-util.o: util.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT fake_ntlm-util.o -MD -MP -MF $(DEPDIR)/fake_ntlm-util.Tpo -c -o fake_ntlm-util.o `test -f 'util.c' || echo '$(srcdir)/'`util.c
 
 fake_ntlm-util.o: util.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT fake_ntlm-util.o -MD -MP -MF $(DEPDIR)/fake_ntlm-util.Tpo -c -o fake_ntlm-util.o `test -f 'util.c' || echo '$(srcdir)/'`util.c
@@ -917,89 +1073,89 @@ fake_ntlm-fake_ntlm.obj: fake_ntlm.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o fake_ntlm-fake_ntlm.obj `if test -f 'fake_ntlm.c'; then $(CYGPATH_W) 'fake_ntlm.c'; else $(CYGPATH_W) '$(srcdir)/fake_ntlm.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o fake_ntlm-fake_ntlm.obj `if test -f 'fake_ntlm.c'; then $(CYGPATH_W) 'fake_ntlm.c'; else $(CYGPATH_W) '$(srcdir)/fake_ntlm.c'; fi`
 
-getpart-mprintf.o: ../../lib/mprintf.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT getpart-mprintf.o -MD -MP -MF $(DEPDIR)/getpart-mprintf.Tpo -c -o getpart-mprintf.o `test -f '../../lib/mprintf.c' || echo '$(srcdir)/'`../../lib/mprintf.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/getpart-mprintf.Tpo $(DEPDIR)/getpart-mprintf.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/mprintf.c' object='getpart-mprintf.o' libtool=no @AMDEPBACKSLASH@
+../../lib/getpart-mprintf.o: ../../lib/mprintf.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT ../../lib/getpart-mprintf.o -MD -MP -MF ../../lib/$(DEPDIR)/getpart-mprintf.Tpo -c -o ../../lib/getpart-mprintf.o `test -f '../../lib/mprintf.c' || echo '$(srcdir)/'`../../lib/mprintf.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/getpart-mprintf.Tpo ../../lib/$(DEPDIR)/getpart-mprintf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/mprintf.c' object='../../lib/getpart-mprintf.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o getpart-mprintf.o `test -f '../../lib/mprintf.c' || echo '$(srcdir)/'`../../lib/mprintf.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o ../../lib/getpart-mprintf.o `test -f '../../lib/mprintf.c' || echo '$(srcdir)/'`../../lib/mprintf.c
 
 
-getpart-mprintf.obj: ../../lib/mprintf.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT getpart-mprintf.obj -MD -MP -MF $(DEPDIR)/getpart-mprintf.Tpo -c -o getpart-mprintf.obj `if test -f '../../lib/mprintf.c'; then $(CYGPATH_W) '../../lib/mprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/mprintf.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/getpart-mprintf.Tpo $(DEPDIR)/getpart-mprintf.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/mprintf.c' object='getpart-mprintf.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/getpart-mprintf.obj: ../../lib/mprintf.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT ../../lib/getpart-mprintf.obj -MD -MP -MF ../../lib/$(DEPDIR)/getpart-mprintf.Tpo -c -o ../../lib/getpart-mprintf.obj `if test -f '../../lib/mprintf.c'; then $(CYGPATH_W) '../../lib/mprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/mprintf.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/getpart-mprintf.Tpo ../../lib/$(DEPDIR)/getpart-mprintf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/mprintf.c' object='../../lib/getpart-mprintf.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o getpart-mprintf.obj `if test -f '../../lib/mprintf.c'; then $(CYGPATH_W) '../../lib/mprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/mprintf.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o ../../lib/getpart-mprintf.obj `if test -f '../../lib/mprintf.c'; then $(CYGPATH_W) '../../lib/mprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/mprintf.c'; fi`
 
 
-getpart-nonblock.o: ../../lib/nonblock.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT getpart-nonblock.o -MD -MP -MF $(DEPDIR)/getpart-nonblock.Tpo -c -o getpart-nonblock.o `test -f '../../lib/nonblock.c' || echo '$(srcdir)/'`../../lib/nonblock.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/getpart-nonblock.Tpo $(DEPDIR)/getpart-nonblock.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/nonblock.c' object='getpart-nonblock.o' libtool=no @AMDEPBACKSLASH@
+../../lib/getpart-nonblock.o: ../../lib/nonblock.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT ../../lib/getpart-nonblock.o -MD -MP -MF ../../lib/$(DEPDIR)/getpart-nonblock.Tpo -c -o ../../lib/getpart-nonblock.o `test -f '../../lib/nonblock.c' || echo '$(srcdir)/'`../../lib/nonblock.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/getpart-nonblock.Tpo ../../lib/$(DEPDIR)/getpart-nonblock.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/nonblock.c' object='../../lib/getpart-nonblock.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o getpart-nonblock.o `test -f '../../lib/nonblock.c' || echo '$(srcdir)/'`../../lib/nonblock.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o ../../lib/getpart-nonblock.o `test -f '../../lib/nonblock.c' || echo '$(srcdir)/'`../../lib/nonblock.c
 
 
-getpart-nonblock.obj: ../../lib/nonblock.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT getpart-nonblock.obj -MD -MP -MF $(DEPDIR)/getpart-nonblock.Tpo -c -o getpart-nonblock.obj `if test -f '../../lib/nonblock.c'; then $(CYGPATH_W) '../../lib/nonblock.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/nonblock.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/getpart-nonblock.Tpo $(DEPDIR)/getpart-nonblock.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/nonblock.c' object='getpart-nonblock.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/getpart-nonblock.obj: ../../lib/nonblock.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT ../../lib/getpart-nonblock.obj -MD -MP -MF ../../lib/$(DEPDIR)/getpart-nonblock.Tpo -c -o ../../lib/getpart-nonblock.obj `if test -f '../../lib/nonblock.c'; then $(CYGPATH_W) '../../lib/nonblock.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/nonblock.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/getpart-nonblock.Tpo ../../lib/$(DEPDIR)/getpart-nonblock.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/nonblock.c' object='../../lib/getpart-nonblock.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o getpart-nonblock.obj `if test -f '../../lib/nonblock.c'; then $(CYGPATH_W) '../../lib/nonblock.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/nonblock.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o ../../lib/getpart-nonblock.obj `if test -f '../../lib/nonblock.c'; then $(CYGPATH_W) '../../lib/nonblock.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/nonblock.c'; fi`
 
 
-getpart-strequal.o: ../../lib/strequal.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT getpart-strequal.o -MD -MP -MF $(DEPDIR)/getpart-strequal.Tpo -c -o getpart-strequal.o `test -f '../../lib/strequal.c' || echo '$(srcdir)/'`../../lib/strequal.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/getpart-strequal.Tpo $(DEPDIR)/getpart-strequal.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strequal.c' object='getpart-strequal.o' libtool=no @AMDEPBACKSLASH@
+../../lib/getpart-strequal.o: ../../lib/strequal.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT ../../lib/getpart-strequal.o -MD -MP -MF ../../lib/$(DEPDIR)/getpart-strequal.Tpo -c -o ../../lib/getpart-strequal.o `test -f '../../lib/strequal.c' || echo '$(srcdir)/'`../../lib/strequal.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/getpart-strequal.Tpo ../../lib/$(DEPDIR)/getpart-strequal.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strequal.c' object='../../lib/getpart-strequal.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o getpart-strequal.o `test -f '../../lib/strequal.c' || echo '$(srcdir)/'`../../lib/strequal.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o ../../lib/getpart-strequal.o `test -f '../../lib/strequal.c' || echo '$(srcdir)/'`../../lib/strequal.c
 
 
-getpart-strequal.obj: ../../lib/strequal.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT getpart-strequal.obj -MD -MP -MF $(DEPDIR)/getpart-strequal.Tpo -c -o getpart-strequal.obj `if test -f '../../lib/strequal.c'; then $(CYGPATH_W) '../../lib/strequal.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strequal.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/getpart-strequal.Tpo $(DEPDIR)/getpart-strequal.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strequal.c' object='getpart-strequal.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/getpart-strequal.obj: ../../lib/strequal.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT ../../lib/getpart-strequal.obj -MD -MP -MF ../../lib/$(DEPDIR)/getpart-strequal.Tpo -c -o ../../lib/getpart-strequal.obj `if test -f '../../lib/strequal.c'; then $(CYGPATH_W) '../../lib/strequal.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strequal.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/getpart-strequal.Tpo ../../lib/$(DEPDIR)/getpart-strequal.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strequal.c' object='../../lib/getpart-strequal.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o getpart-strequal.obj `if test -f '../../lib/strequal.c'; then $(CYGPATH_W) '../../lib/strequal.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strequal.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o ../../lib/getpart-strequal.obj `if test -f '../../lib/strequal.c'; then $(CYGPATH_W) '../../lib/strequal.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strequal.c'; fi`
 
 
-getpart-strtoofft.o: ../../lib/strtoofft.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT getpart-strtoofft.o -MD -MP -MF $(DEPDIR)/getpart-strtoofft.Tpo -c -o getpart-strtoofft.o `test -f '../../lib/strtoofft.c' || echo '$(srcdir)/'`../../lib/strtoofft.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/getpart-strtoofft.Tpo $(DEPDIR)/getpart-strtoofft.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strtoofft.c' object='getpart-strtoofft.o' libtool=no @AMDEPBACKSLASH@
+../../lib/getpart-strtoofft.o: ../../lib/strtoofft.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT ../../lib/getpart-strtoofft.o -MD -MP -MF ../../lib/$(DEPDIR)/getpart-strtoofft.Tpo -c -o ../../lib/getpart-strtoofft.o `test -f '../../lib/strtoofft.c' || echo '$(srcdir)/'`../../lib/strtoofft.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/getpart-strtoofft.Tpo ../../lib/$(DEPDIR)/getpart-strtoofft.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strtoofft.c' object='../../lib/getpart-strtoofft.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o getpart-strtoofft.o `test -f '../../lib/strtoofft.c' || echo '$(srcdir)/'`../../lib/strtoofft.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o ../../lib/getpart-strtoofft.o `test -f '../../lib/strtoofft.c' || echo '$(srcdir)/'`../../lib/strtoofft.c
 
 
-getpart-strtoofft.obj: ../../lib/strtoofft.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT getpart-strtoofft.obj -MD -MP -MF $(DEPDIR)/getpart-strtoofft.Tpo -c -o getpart-strtoofft.obj `if test -f '../../lib/strtoofft.c'; then $(CYGPATH_W) '../../lib/strtoofft.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strtoofft.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/getpart-strtoofft.Tpo $(DEPDIR)/getpart-strtoofft.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strtoofft.c' object='getpart-strtoofft.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/getpart-strtoofft.obj: ../../lib/strtoofft.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT ../../lib/getpart-strtoofft.obj -MD -MP -MF ../../lib/$(DEPDIR)/getpart-strtoofft.Tpo -c -o ../../lib/getpart-strtoofft.obj `if test -f '../../lib/strtoofft.c'; then $(CYGPATH_W) '../../lib/strtoofft.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strtoofft.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/getpart-strtoofft.Tpo ../../lib/$(DEPDIR)/getpart-strtoofft.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strtoofft.c' object='../../lib/getpart-strtoofft.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o getpart-strtoofft.obj `if test -f '../../lib/strtoofft.c'; then $(CYGPATH_W) '../../lib/strtoofft.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strtoofft.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o ../../lib/getpart-strtoofft.obj `if test -f '../../lib/strtoofft.c'; then $(CYGPATH_W) '../../lib/strtoofft.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strtoofft.c'; fi`
 
 
-getpart-timeval.o: ../../lib/timeval.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT getpart-timeval.o -MD -MP -MF $(DEPDIR)/getpart-timeval.Tpo -c -o getpart-timeval.o `test -f '../../lib/timeval.c' || echo '$(srcdir)/'`../../lib/timeval.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/getpart-timeval.Tpo $(DEPDIR)/getpart-timeval.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timeval.c' object='getpart-timeval.o' libtool=no @AMDEPBACKSLASH@
+../../lib/getpart-timeval.o: ../../lib/timeval.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT ../../lib/getpart-timeval.o -MD -MP -MF ../../lib/$(DEPDIR)/getpart-timeval.Tpo -c -o ../../lib/getpart-timeval.o `test -f '../../lib/timeval.c' || echo '$(srcdir)/'`../../lib/timeval.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/getpart-timeval.Tpo ../../lib/$(DEPDIR)/getpart-timeval.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timeval.c' object='../../lib/getpart-timeval.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o getpart-timeval.o `test -f '../../lib/timeval.c' || echo '$(srcdir)/'`../../lib/timeval.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o ../../lib/getpart-timeval.o `test -f '../../lib/timeval.c' || echo '$(srcdir)/'`../../lib/timeval.c
 
 
-getpart-timeval.obj: ../../lib/timeval.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT getpart-timeval.obj -MD -MP -MF $(DEPDIR)/getpart-timeval.Tpo -c -o getpart-timeval.obj `if test -f '../../lib/timeval.c'; then $(CYGPATH_W) '../../lib/timeval.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timeval.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/getpart-timeval.Tpo $(DEPDIR)/getpart-timeval.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timeval.c' object='getpart-timeval.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/getpart-timeval.obj: ../../lib/timeval.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT ../../lib/getpart-timeval.obj -MD -MP -MF ../../lib/$(DEPDIR)/getpart-timeval.Tpo -c -o ../../lib/getpart-timeval.obj `if test -f '../../lib/timeval.c'; then $(CYGPATH_W) '../../lib/timeval.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timeval.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/getpart-timeval.Tpo ../../lib/$(DEPDIR)/getpart-timeval.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timeval.c' object='../../lib/getpart-timeval.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o getpart-timeval.obj `if test -f '../../lib/timeval.c'; then $(CYGPATH_W) '../../lib/timeval.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timeval.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o ../../lib/getpart-timeval.obj `if test -f '../../lib/timeval.c'; then $(CYGPATH_W) '../../lib/timeval.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timeval.c'; fi`
 
 
-getpart-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT getpart-warnless.o -MD -MP -MF $(DEPDIR)/getpart-warnless.Tpo -c -o getpart-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/getpart-warnless.Tpo $(DEPDIR)/getpart-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='getpart-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/getpart-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT ../../lib/getpart-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/getpart-warnless.Tpo -c -o ../../lib/getpart-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/getpart-warnless.Tpo ../../lib/$(DEPDIR)/getpart-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/getpart-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o getpart-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o ../../lib/getpart-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-getpart-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT getpart-warnless.obj -MD -MP -MF $(DEPDIR)/getpart-warnless.Tpo -c -o getpart-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/getpart-warnless.Tpo $(DEPDIR)/getpart-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='getpart-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/getpart-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT ../../lib/getpart-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/getpart-warnless.Tpo -c -o ../../lib/getpart-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/getpart-warnless.Tpo ../../lib/$(DEPDIR)/getpart-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/getpart-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o getpart-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o ../../lib/getpart-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 getpart-getpart.o: getpart.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT getpart-getpart.o -MD -MP -MF $(DEPDIR)/getpart-getpart.Tpo -c -o getpart-getpart.o `test -f 'getpart.c' || echo '$(srcdir)/'`getpart.c
 
 getpart-getpart.o: getpart.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT getpart-getpart.o -MD -MP -MF $(DEPDIR)/getpart-getpart.Tpo -c -o getpart-getpart.o `test -f 'getpart.c' || echo '$(srcdir)/'`getpart.c
@@ -1015,33 +1171,33 @@ getpart-getpart.obj: getpart.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o getpart-getpart.obj `if test -f 'getpart.c'; then $(CYGPATH_W) 'getpart.c'; else $(CYGPATH_W) '$(srcdir)/getpart.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o getpart-getpart.obj `if test -f 'getpart.c'; then $(CYGPATH_W) 'getpart.c'; else $(CYGPATH_W) '$(srcdir)/getpart.c'; fi`
 
-getpart-base64.o: ../../lib/base64.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT getpart-base64.o -MD -MP -MF $(DEPDIR)/getpart-base64.Tpo -c -o getpart-base64.o `test -f '../../lib/base64.c' || echo '$(srcdir)/'`../../lib/base64.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/getpart-base64.Tpo $(DEPDIR)/getpart-base64.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/base64.c' object='getpart-base64.o' libtool=no @AMDEPBACKSLASH@
+../../lib/getpart-base64.o: ../../lib/base64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT ../../lib/getpart-base64.o -MD -MP -MF ../../lib/$(DEPDIR)/getpart-base64.Tpo -c -o ../../lib/getpart-base64.o `test -f '../../lib/base64.c' || echo '$(srcdir)/'`../../lib/base64.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/getpart-base64.Tpo ../../lib/$(DEPDIR)/getpart-base64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/base64.c' object='../../lib/getpart-base64.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o getpart-base64.o `test -f '../../lib/base64.c' || echo '$(srcdir)/'`../../lib/base64.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o ../../lib/getpart-base64.o `test -f '../../lib/base64.c' || echo '$(srcdir)/'`../../lib/base64.c
 
 
-getpart-base64.obj: ../../lib/base64.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT getpart-base64.obj -MD -MP -MF $(DEPDIR)/getpart-base64.Tpo -c -o getpart-base64.obj `if test -f '../../lib/base64.c'; then $(CYGPATH_W) '../../lib/base64.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/base64.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/getpart-base64.Tpo $(DEPDIR)/getpart-base64.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/base64.c' object='getpart-base64.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/getpart-base64.obj: ../../lib/base64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT ../../lib/getpart-base64.obj -MD -MP -MF ../../lib/$(DEPDIR)/getpart-base64.Tpo -c -o ../../lib/getpart-base64.obj `if test -f '../../lib/base64.c'; then $(CYGPATH_W) '../../lib/base64.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/base64.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/getpart-base64.Tpo ../../lib/$(DEPDIR)/getpart-base64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/base64.c' object='../../lib/getpart-base64.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o getpart-base64.obj `if test -f '../../lib/base64.c'; then $(CYGPATH_W) '../../lib/base64.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/base64.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o ../../lib/getpart-base64.obj `if test -f '../../lib/base64.c'; then $(CYGPATH_W) '../../lib/base64.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/base64.c'; fi`
 
 
-getpart-memdebug.o: ../../lib/memdebug.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT getpart-memdebug.o -MD -MP -MF $(DEPDIR)/getpart-memdebug.Tpo -c -o getpart-memdebug.o `test -f '../../lib/memdebug.c' || echo '$(srcdir)/'`../../lib/memdebug.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/getpart-memdebug.Tpo $(DEPDIR)/getpart-memdebug.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/memdebug.c' object='getpart-memdebug.o' libtool=no @AMDEPBACKSLASH@
+../../lib/getpart-memdebug.o: ../../lib/memdebug.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT ../../lib/getpart-memdebug.o -MD -MP -MF ../../lib/$(DEPDIR)/getpart-memdebug.Tpo -c -o ../../lib/getpart-memdebug.o `test -f '../../lib/memdebug.c' || echo '$(srcdir)/'`../../lib/memdebug.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/getpart-memdebug.Tpo ../../lib/$(DEPDIR)/getpart-memdebug.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/memdebug.c' object='../../lib/getpart-memdebug.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o getpart-memdebug.o `test -f '../../lib/memdebug.c' || echo '$(srcdir)/'`../../lib/memdebug.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o ../../lib/getpart-memdebug.o `test -f '../../lib/memdebug.c' || echo '$(srcdir)/'`../../lib/memdebug.c
 
 
-getpart-memdebug.obj: ../../lib/memdebug.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT getpart-memdebug.obj -MD -MP -MF $(DEPDIR)/getpart-memdebug.Tpo -c -o getpart-memdebug.obj `if test -f '../../lib/memdebug.c'; then $(CYGPATH_W) '../../lib/memdebug.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/memdebug.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/getpart-memdebug.Tpo $(DEPDIR)/getpart-memdebug.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/memdebug.c' object='getpart-memdebug.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/getpart-memdebug.obj: ../../lib/memdebug.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT ../../lib/getpart-memdebug.obj -MD -MP -MF ../../lib/$(DEPDIR)/getpart-memdebug.Tpo -c -o ../../lib/getpart-memdebug.obj `if test -f '../../lib/memdebug.c'; then $(CYGPATH_W) '../../lib/memdebug.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/memdebug.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/getpart-memdebug.Tpo ../../lib/$(DEPDIR)/getpart-memdebug.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/memdebug.c' object='../../lib/getpart-memdebug.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o getpart-memdebug.obj `if test -f '../../lib/memdebug.c'; then $(CYGPATH_W) '../../lib/memdebug.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/memdebug.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o ../../lib/getpart-memdebug.obj `if test -f '../../lib/memdebug.c'; then $(CYGPATH_W) '../../lib/memdebug.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/memdebug.c'; fi`
 
 getpart-testpart.o: testpart.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT getpart-testpart.o -MD -MP -MF $(DEPDIR)/getpart-testpart.Tpo -c -o getpart-testpart.o `test -f 'testpart.c' || echo '$(srcdir)/'`testpart.c
 
 getpart-testpart.o: testpart.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT getpart-testpart.o -MD -MP -MF $(DEPDIR)/getpart-testpart.Tpo -c -o getpart-testpart.o `test -f 'testpart.c' || echo '$(srcdir)/'`testpart.c
@@ -1057,89 +1213,89 @@ getpart-testpart.obj: testpart.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o getpart-testpart.obj `if test -f 'testpart.c'; then $(CYGPATH_W) 'testpart.c'; else $(CYGPATH_W) '$(srcdir)/testpart.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o getpart-testpart.obj `if test -f 'testpart.c'; then $(CYGPATH_W) 'testpart.c'; else $(CYGPATH_W) '$(srcdir)/testpart.c'; fi`
 
-resolve-mprintf.o: ../../lib/mprintf.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT resolve-mprintf.o -MD -MP -MF $(DEPDIR)/resolve-mprintf.Tpo -c -o resolve-mprintf.o `test -f '../../lib/mprintf.c' || echo '$(srcdir)/'`../../lib/mprintf.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/resolve-mprintf.Tpo $(DEPDIR)/resolve-mprintf.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/mprintf.c' object='resolve-mprintf.o' libtool=no @AMDEPBACKSLASH@
+../../lib/resolve-mprintf.o: ../../lib/mprintf.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT ../../lib/resolve-mprintf.o -MD -MP -MF ../../lib/$(DEPDIR)/resolve-mprintf.Tpo -c -o ../../lib/resolve-mprintf.o `test -f '../../lib/mprintf.c' || echo '$(srcdir)/'`../../lib/mprintf.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/resolve-mprintf.Tpo ../../lib/$(DEPDIR)/resolve-mprintf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/mprintf.c' object='../../lib/resolve-mprintf.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o resolve-mprintf.o `test -f '../../lib/mprintf.c' || echo '$(srcdir)/'`../../lib/mprintf.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o ../../lib/resolve-mprintf.o `test -f '../../lib/mprintf.c' || echo '$(srcdir)/'`../../lib/mprintf.c
 
 
-resolve-mprintf.obj: ../../lib/mprintf.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT resolve-mprintf.obj -MD -MP -MF $(DEPDIR)/resolve-mprintf.Tpo -c -o resolve-mprintf.obj `if test -f '../../lib/mprintf.c'; then $(CYGPATH_W) '../../lib/mprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/mprintf.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/resolve-mprintf.Tpo $(DEPDIR)/resolve-mprintf.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/mprintf.c' object='resolve-mprintf.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/resolve-mprintf.obj: ../../lib/mprintf.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT ../../lib/resolve-mprintf.obj -MD -MP -MF ../../lib/$(DEPDIR)/resolve-mprintf.Tpo -c -o ../../lib/resolve-mprintf.obj `if test -f '../../lib/mprintf.c'; then $(CYGPATH_W) '../../lib/mprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/mprintf.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/resolve-mprintf.Tpo ../../lib/$(DEPDIR)/resolve-mprintf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/mprintf.c' object='../../lib/resolve-mprintf.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o resolve-mprintf.obj `if test -f '../../lib/mprintf.c'; then $(CYGPATH_W) '../../lib/mprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/mprintf.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o ../../lib/resolve-mprintf.obj `if test -f '../../lib/mprintf.c'; then $(CYGPATH_W) '../../lib/mprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/mprintf.c'; fi`
 
 
-resolve-nonblock.o: ../../lib/nonblock.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT resolve-nonblock.o -MD -MP -MF $(DEPDIR)/resolve-nonblock.Tpo -c -o resolve-nonblock.o `test -f '../../lib/nonblock.c' || echo '$(srcdir)/'`../../lib/nonblock.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/resolve-nonblock.Tpo $(DEPDIR)/resolve-nonblock.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/nonblock.c' object='resolve-nonblock.o' libtool=no @AMDEPBACKSLASH@
+../../lib/resolve-nonblock.o: ../../lib/nonblock.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT ../../lib/resolve-nonblock.o -MD -MP -MF ../../lib/$(DEPDIR)/resolve-nonblock.Tpo -c -o ../../lib/resolve-nonblock.o `test -f '../../lib/nonblock.c' || echo '$(srcdir)/'`../../lib/nonblock.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/resolve-nonblock.Tpo ../../lib/$(DEPDIR)/resolve-nonblock.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/nonblock.c' object='../../lib/resolve-nonblock.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o resolve-nonblock.o `test -f '../../lib/nonblock.c' || echo '$(srcdir)/'`../../lib/nonblock.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o ../../lib/resolve-nonblock.o `test -f '../../lib/nonblock.c' || echo '$(srcdir)/'`../../lib/nonblock.c
 
 
-resolve-nonblock.obj: ../../lib/nonblock.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT resolve-nonblock.obj -MD -MP -MF $(DEPDIR)/resolve-nonblock.Tpo -c -o resolve-nonblock.obj `if test -f '../../lib/nonblock.c'; then $(CYGPATH_W) '../../lib/nonblock.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/nonblock.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/resolve-nonblock.Tpo $(DEPDIR)/resolve-nonblock.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/nonblock.c' object='resolve-nonblock.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/resolve-nonblock.obj: ../../lib/nonblock.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT ../../lib/resolve-nonblock.obj -MD -MP -MF ../../lib/$(DEPDIR)/resolve-nonblock.Tpo -c -o ../../lib/resolve-nonblock.obj `if test -f '../../lib/nonblock.c'; then $(CYGPATH_W) '../../lib/nonblock.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/nonblock.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/resolve-nonblock.Tpo ../../lib/$(DEPDIR)/resolve-nonblock.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/nonblock.c' object='../../lib/resolve-nonblock.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o resolve-nonblock.obj `if test -f '../../lib/nonblock.c'; then $(CYGPATH_W) '../../lib/nonblock.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/nonblock.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o ../../lib/resolve-nonblock.obj `if test -f '../../lib/nonblock.c'; then $(CYGPATH_W) '../../lib/nonblock.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/nonblock.c'; fi`
 
 
-resolve-strequal.o: ../../lib/strequal.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT resolve-strequal.o -MD -MP -MF $(DEPDIR)/resolve-strequal.Tpo -c -o resolve-strequal.o `test -f '../../lib/strequal.c' || echo '$(srcdir)/'`../../lib/strequal.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/resolve-strequal.Tpo $(DEPDIR)/resolve-strequal.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strequal.c' object='resolve-strequal.o' libtool=no @AMDEPBACKSLASH@
+../../lib/resolve-strequal.o: ../../lib/strequal.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT ../../lib/resolve-strequal.o -MD -MP -MF ../../lib/$(DEPDIR)/resolve-strequal.Tpo -c -o ../../lib/resolve-strequal.o `test -f '../../lib/strequal.c' || echo '$(srcdir)/'`../../lib/strequal.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/resolve-strequal.Tpo ../../lib/$(DEPDIR)/resolve-strequal.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strequal.c' object='../../lib/resolve-strequal.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o resolve-strequal.o `test -f '../../lib/strequal.c' || echo '$(srcdir)/'`../../lib/strequal.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o ../../lib/resolve-strequal.o `test -f '../../lib/strequal.c' || echo '$(srcdir)/'`../../lib/strequal.c
 
 
-resolve-strequal.obj: ../../lib/strequal.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT resolve-strequal.obj -MD -MP -MF $(DEPDIR)/resolve-strequal.Tpo -c -o resolve-strequal.obj `if test -f '../../lib/strequal.c'; then $(CYGPATH_W) '../../lib/strequal.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strequal.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/resolve-strequal.Tpo $(DEPDIR)/resolve-strequal.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strequal.c' object='resolve-strequal.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/resolve-strequal.obj: ../../lib/strequal.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT ../../lib/resolve-strequal.obj -MD -MP -MF ../../lib/$(DEPDIR)/resolve-strequal.Tpo -c -o ../../lib/resolve-strequal.obj `if test -f '../../lib/strequal.c'; then $(CYGPATH_W) '../../lib/strequal.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strequal.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/resolve-strequal.Tpo ../../lib/$(DEPDIR)/resolve-strequal.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strequal.c' object='../../lib/resolve-strequal.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o resolve-strequal.obj `if test -f '../../lib/strequal.c'; then $(CYGPATH_W) '../../lib/strequal.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strequal.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o ../../lib/resolve-strequal.obj `if test -f '../../lib/strequal.c'; then $(CYGPATH_W) '../../lib/strequal.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strequal.c'; fi`
 
 
-resolve-strtoofft.o: ../../lib/strtoofft.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT resolve-strtoofft.o -MD -MP -MF $(DEPDIR)/resolve-strtoofft.Tpo -c -o resolve-strtoofft.o `test -f '../../lib/strtoofft.c' || echo '$(srcdir)/'`../../lib/strtoofft.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/resolve-strtoofft.Tpo $(DEPDIR)/resolve-strtoofft.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strtoofft.c' object='resolve-strtoofft.o' libtool=no @AMDEPBACKSLASH@
+../../lib/resolve-strtoofft.o: ../../lib/strtoofft.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT ../../lib/resolve-strtoofft.o -MD -MP -MF ../../lib/$(DEPDIR)/resolve-strtoofft.Tpo -c -o ../../lib/resolve-strtoofft.o `test -f '../../lib/strtoofft.c' || echo '$(srcdir)/'`../../lib/strtoofft.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/resolve-strtoofft.Tpo ../../lib/$(DEPDIR)/resolve-strtoofft.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strtoofft.c' object='../../lib/resolve-strtoofft.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o resolve-strtoofft.o `test -f '../../lib/strtoofft.c' || echo '$(srcdir)/'`../../lib/strtoofft.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o ../../lib/resolve-strtoofft.o `test -f '../../lib/strtoofft.c' || echo '$(srcdir)/'`../../lib/strtoofft.c
 
 
-resolve-strtoofft.obj: ../../lib/strtoofft.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT resolve-strtoofft.obj -MD -MP -MF $(DEPDIR)/resolve-strtoofft.Tpo -c -o resolve-strtoofft.obj `if test -f '../../lib/strtoofft.c'; then $(CYGPATH_W) '../../lib/strtoofft.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strtoofft.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/resolve-strtoofft.Tpo $(DEPDIR)/resolve-strtoofft.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strtoofft.c' object='resolve-strtoofft.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/resolve-strtoofft.obj: ../../lib/strtoofft.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT ../../lib/resolve-strtoofft.obj -MD -MP -MF ../../lib/$(DEPDIR)/resolve-strtoofft.Tpo -c -o ../../lib/resolve-strtoofft.obj `if test -f '../../lib/strtoofft.c'; then $(CYGPATH_W) '../../lib/strtoofft.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strtoofft.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/resolve-strtoofft.Tpo ../../lib/$(DEPDIR)/resolve-strtoofft.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strtoofft.c' object='../../lib/resolve-strtoofft.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o resolve-strtoofft.obj `if test -f '../../lib/strtoofft.c'; then $(CYGPATH_W) '../../lib/strtoofft.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strtoofft.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o ../../lib/resolve-strtoofft.obj `if test -f '../../lib/strtoofft.c'; then $(CYGPATH_W) '../../lib/strtoofft.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strtoofft.c'; fi`
 
 
-resolve-timeval.o: ../../lib/timeval.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT resolve-timeval.o -MD -MP -MF $(DEPDIR)/resolve-timeval.Tpo -c -o resolve-timeval.o `test -f '../../lib/timeval.c' || echo '$(srcdir)/'`../../lib/timeval.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/resolve-timeval.Tpo $(DEPDIR)/resolve-timeval.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timeval.c' object='resolve-timeval.o' libtool=no @AMDEPBACKSLASH@
+../../lib/resolve-timeval.o: ../../lib/timeval.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT ../../lib/resolve-timeval.o -MD -MP -MF ../../lib/$(DEPDIR)/resolve-timeval.Tpo -c -o ../../lib/resolve-timeval.o `test -f '../../lib/timeval.c' || echo '$(srcdir)/'`../../lib/timeval.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/resolve-timeval.Tpo ../../lib/$(DEPDIR)/resolve-timeval.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timeval.c' object='../../lib/resolve-timeval.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o resolve-timeval.o `test -f '../../lib/timeval.c' || echo '$(srcdir)/'`../../lib/timeval.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o ../../lib/resolve-timeval.o `test -f '../../lib/timeval.c' || echo '$(srcdir)/'`../../lib/timeval.c
 
 
-resolve-timeval.obj: ../../lib/timeval.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT resolve-timeval.obj -MD -MP -MF $(DEPDIR)/resolve-timeval.Tpo -c -o resolve-timeval.obj `if test -f '../../lib/timeval.c'; then $(CYGPATH_W) '../../lib/timeval.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timeval.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/resolve-timeval.Tpo $(DEPDIR)/resolve-timeval.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timeval.c' object='resolve-timeval.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/resolve-timeval.obj: ../../lib/timeval.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT ../../lib/resolve-timeval.obj -MD -MP -MF ../../lib/$(DEPDIR)/resolve-timeval.Tpo -c -o ../../lib/resolve-timeval.obj `if test -f '../../lib/timeval.c'; then $(CYGPATH_W) '../../lib/timeval.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timeval.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/resolve-timeval.Tpo ../../lib/$(DEPDIR)/resolve-timeval.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timeval.c' object='../../lib/resolve-timeval.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o resolve-timeval.obj `if test -f '../../lib/timeval.c'; then $(CYGPATH_W) '../../lib/timeval.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timeval.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o ../../lib/resolve-timeval.obj `if test -f '../../lib/timeval.c'; then $(CYGPATH_W) '../../lib/timeval.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timeval.c'; fi`
 
 
-resolve-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT resolve-warnless.o -MD -MP -MF $(DEPDIR)/resolve-warnless.Tpo -c -o resolve-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/resolve-warnless.Tpo $(DEPDIR)/resolve-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='resolve-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/resolve-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT ../../lib/resolve-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/resolve-warnless.Tpo -c -o ../../lib/resolve-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/resolve-warnless.Tpo ../../lib/$(DEPDIR)/resolve-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/resolve-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o resolve-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o ../../lib/resolve-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-resolve-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT resolve-warnless.obj -MD -MP -MF $(DEPDIR)/resolve-warnless.Tpo -c -o resolve-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/resolve-warnless.Tpo $(DEPDIR)/resolve-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='resolve-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/resolve-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT ../../lib/resolve-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/resolve-warnless.Tpo -c -o ../../lib/resolve-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/resolve-warnless.Tpo ../../lib/$(DEPDIR)/resolve-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/resolve-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o resolve-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o ../../lib/resolve-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 resolve-getpart.o: getpart.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT resolve-getpart.o -MD -MP -MF $(DEPDIR)/resolve-getpart.Tpo -c -o resolve-getpart.o `test -f 'getpart.c' || echo '$(srcdir)/'`getpart.c
 
 resolve-getpart.o: getpart.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT resolve-getpart.o -MD -MP -MF $(DEPDIR)/resolve-getpart.Tpo -c -o resolve-getpart.o `test -f 'getpart.c' || echo '$(srcdir)/'`getpart.c
@@ -1155,33 +1311,33 @@ resolve-getpart.obj: getpart.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o resolve-getpart.obj `if test -f 'getpart.c'; then $(CYGPATH_W) 'getpart.c'; else $(CYGPATH_W) '$(srcdir)/getpart.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o resolve-getpart.obj `if test -f 'getpart.c'; then $(CYGPATH_W) 'getpart.c'; else $(CYGPATH_W) '$(srcdir)/getpart.c'; fi`
 
-resolve-base64.o: ../../lib/base64.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT resolve-base64.o -MD -MP -MF $(DEPDIR)/resolve-base64.Tpo -c -o resolve-base64.o `test -f '../../lib/base64.c' || echo '$(srcdir)/'`../../lib/base64.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/resolve-base64.Tpo $(DEPDIR)/resolve-base64.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/base64.c' object='resolve-base64.o' libtool=no @AMDEPBACKSLASH@
+../../lib/resolve-base64.o: ../../lib/base64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT ../../lib/resolve-base64.o -MD -MP -MF ../../lib/$(DEPDIR)/resolve-base64.Tpo -c -o ../../lib/resolve-base64.o `test -f '../../lib/base64.c' || echo '$(srcdir)/'`../../lib/base64.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/resolve-base64.Tpo ../../lib/$(DEPDIR)/resolve-base64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/base64.c' object='../../lib/resolve-base64.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o resolve-base64.o `test -f '../../lib/base64.c' || echo '$(srcdir)/'`../../lib/base64.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o ../../lib/resolve-base64.o `test -f '../../lib/base64.c' || echo '$(srcdir)/'`../../lib/base64.c
 
 
-resolve-base64.obj: ../../lib/base64.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT resolve-base64.obj -MD -MP -MF $(DEPDIR)/resolve-base64.Tpo -c -o resolve-base64.obj `if test -f '../../lib/base64.c'; then $(CYGPATH_W) '../../lib/base64.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/base64.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/resolve-base64.Tpo $(DEPDIR)/resolve-base64.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/base64.c' object='resolve-base64.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/resolve-base64.obj: ../../lib/base64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT ../../lib/resolve-base64.obj -MD -MP -MF ../../lib/$(DEPDIR)/resolve-base64.Tpo -c -o ../../lib/resolve-base64.obj `if test -f '../../lib/base64.c'; then $(CYGPATH_W) '../../lib/base64.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/base64.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/resolve-base64.Tpo ../../lib/$(DEPDIR)/resolve-base64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/base64.c' object='../../lib/resolve-base64.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o resolve-base64.obj `if test -f '../../lib/base64.c'; then $(CYGPATH_W) '../../lib/base64.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/base64.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o ../../lib/resolve-base64.obj `if test -f '../../lib/base64.c'; then $(CYGPATH_W) '../../lib/base64.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/base64.c'; fi`
 
 
-resolve-memdebug.o: ../../lib/memdebug.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT resolve-memdebug.o -MD -MP -MF $(DEPDIR)/resolve-memdebug.Tpo -c -o resolve-memdebug.o `test -f '../../lib/memdebug.c' || echo '$(srcdir)/'`../../lib/memdebug.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/resolve-memdebug.Tpo $(DEPDIR)/resolve-memdebug.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/memdebug.c' object='resolve-memdebug.o' libtool=no @AMDEPBACKSLASH@
+../../lib/resolve-memdebug.o: ../../lib/memdebug.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT ../../lib/resolve-memdebug.o -MD -MP -MF ../../lib/$(DEPDIR)/resolve-memdebug.Tpo -c -o ../../lib/resolve-memdebug.o `test -f '../../lib/memdebug.c' || echo '$(srcdir)/'`../../lib/memdebug.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/resolve-memdebug.Tpo ../../lib/$(DEPDIR)/resolve-memdebug.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/memdebug.c' object='../../lib/resolve-memdebug.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o resolve-memdebug.o `test -f '../../lib/memdebug.c' || echo '$(srcdir)/'`../../lib/memdebug.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o ../../lib/resolve-memdebug.o `test -f '../../lib/memdebug.c' || echo '$(srcdir)/'`../../lib/memdebug.c
 
 
-resolve-memdebug.obj: ../../lib/memdebug.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT resolve-memdebug.obj -MD -MP -MF $(DEPDIR)/resolve-memdebug.Tpo -c -o resolve-memdebug.obj `if test -f '../../lib/memdebug.c'; then $(CYGPATH_W) '../../lib/memdebug.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/memdebug.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/resolve-memdebug.Tpo $(DEPDIR)/resolve-memdebug.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/memdebug.c' object='resolve-memdebug.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/resolve-memdebug.obj: ../../lib/memdebug.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT ../../lib/resolve-memdebug.obj -MD -MP -MF ../../lib/$(DEPDIR)/resolve-memdebug.Tpo -c -o ../../lib/resolve-memdebug.obj `if test -f '../../lib/memdebug.c'; then $(CYGPATH_W) '../../lib/memdebug.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/memdebug.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/resolve-memdebug.Tpo ../../lib/$(DEPDIR)/resolve-memdebug.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/memdebug.c' object='../../lib/resolve-memdebug.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o resolve-memdebug.obj `if test -f '../../lib/memdebug.c'; then $(CYGPATH_W) '../../lib/memdebug.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/memdebug.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o ../../lib/resolve-memdebug.obj `if test -f '../../lib/memdebug.c'; then $(CYGPATH_W) '../../lib/memdebug.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/memdebug.c'; fi`
 
 resolve-util.o: util.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT resolve-util.o -MD -MP -MF $(DEPDIR)/resolve-util.Tpo -c -o resolve-util.o `test -f 'util.c' || echo '$(srcdir)/'`util.c
 
 resolve-util.o: util.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT resolve-util.o -MD -MP -MF $(DEPDIR)/resolve-util.Tpo -c -o resolve-util.o `test -f 'util.c' || echo '$(srcdir)/'`util.c
@@ -1211,89 +1367,89 @@ resolve-resolve.obj: resolve.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o resolve-resolve.obj `if test -f 'resolve.c'; then $(CYGPATH_W) 'resolve.c'; else $(CYGPATH_W) '$(srcdir)/resolve.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o resolve-resolve.obj `if test -f 'resolve.c'; then $(CYGPATH_W) 'resolve.c'; else $(CYGPATH_W) '$(srcdir)/resolve.c'; fi`
 
-rtspd-mprintf.o: ../../lib/mprintf.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT rtspd-mprintf.o -MD -MP -MF $(DEPDIR)/rtspd-mprintf.Tpo -c -o rtspd-mprintf.o `test -f '../../lib/mprintf.c' || echo '$(srcdir)/'`../../lib/mprintf.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/rtspd-mprintf.Tpo $(DEPDIR)/rtspd-mprintf.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/mprintf.c' object='rtspd-mprintf.o' libtool=no @AMDEPBACKSLASH@
+../../lib/rtspd-mprintf.o: ../../lib/mprintf.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT ../../lib/rtspd-mprintf.o -MD -MP -MF ../../lib/$(DEPDIR)/rtspd-mprintf.Tpo -c -o ../../lib/rtspd-mprintf.o `test -f '../../lib/mprintf.c' || echo '$(srcdir)/'`../../lib/mprintf.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/rtspd-mprintf.Tpo ../../lib/$(DEPDIR)/rtspd-mprintf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/mprintf.c' object='../../lib/rtspd-mprintf.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o rtspd-mprintf.o `test -f '../../lib/mprintf.c' || echo '$(srcdir)/'`../../lib/mprintf.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o ../../lib/rtspd-mprintf.o `test -f '../../lib/mprintf.c' || echo '$(srcdir)/'`../../lib/mprintf.c
 
 
-rtspd-mprintf.obj: ../../lib/mprintf.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT rtspd-mprintf.obj -MD -MP -MF $(DEPDIR)/rtspd-mprintf.Tpo -c -o rtspd-mprintf.obj `if test -f '../../lib/mprintf.c'; then $(CYGPATH_W) '../../lib/mprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/mprintf.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/rtspd-mprintf.Tpo $(DEPDIR)/rtspd-mprintf.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/mprintf.c' object='rtspd-mprintf.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/rtspd-mprintf.obj: ../../lib/mprintf.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT ../../lib/rtspd-mprintf.obj -MD -MP -MF ../../lib/$(DEPDIR)/rtspd-mprintf.Tpo -c -o ../../lib/rtspd-mprintf.obj `if test -f '../../lib/mprintf.c'; then $(CYGPATH_W) '../../lib/mprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/mprintf.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/rtspd-mprintf.Tpo ../../lib/$(DEPDIR)/rtspd-mprintf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/mprintf.c' object='../../lib/rtspd-mprintf.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o rtspd-mprintf.obj `if test -f '../../lib/mprintf.c'; then $(CYGPATH_W) '../../lib/mprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/mprintf.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o ../../lib/rtspd-mprintf.obj `if test -f '../../lib/mprintf.c'; then $(CYGPATH_W) '../../lib/mprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/mprintf.c'; fi`
 
 
-rtspd-nonblock.o: ../../lib/nonblock.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT rtspd-nonblock.o -MD -MP -MF $(DEPDIR)/rtspd-nonblock.Tpo -c -o rtspd-nonblock.o `test -f '../../lib/nonblock.c' || echo '$(srcdir)/'`../../lib/nonblock.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/rtspd-nonblock.Tpo $(DEPDIR)/rtspd-nonblock.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/nonblock.c' object='rtspd-nonblock.o' libtool=no @AMDEPBACKSLASH@
+../../lib/rtspd-nonblock.o: ../../lib/nonblock.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT ../../lib/rtspd-nonblock.o -MD -MP -MF ../../lib/$(DEPDIR)/rtspd-nonblock.Tpo -c -o ../../lib/rtspd-nonblock.o `test -f '../../lib/nonblock.c' || echo '$(srcdir)/'`../../lib/nonblock.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/rtspd-nonblock.Tpo ../../lib/$(DEPDIR)/rtspd-nonblock.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/nonblock.c' object='../../lib/rtspd-nonblock.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o rtspd-nonblock.o `test -f '../../lib/nonblock.c' || echo '$(srcdir)/'`../../lib/nonblock.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o ../../lib/rtspd-nonblock.o `test -f '../../lib/nonblock.c' || echo '$(srcdir)/'`../../lib/nonblock.c
 
 
-rtspd-nonblock.obj: ../../lib/nonblock.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT rtspd-nonblock.obj -MD -MP -MF $(DEPDIR)/rtspd-nonblock.Tpo -c -o rtspd-nonblock.obj `if test -f '../../lib/nonblock.c'; then $(CYGPATH_W) '../../lib/nonblock.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/nonblock.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/rtspd-nonblock.Tpo $(DEPDIR)/rtspd-nonblock.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/nonblock.c' object='rtspd-nonblock.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/rtspd-nonblock.obj: ../../lib/nonblock.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT ../../lib/rtspd-nonblock.obj -MD -MP -MF ../../lib/$(DEPDIR)/rtspd-nonblock.Tpo -c -o ../../lib/rtspd-nonblock.obj `if test -f '../../lib/nonblock.c'; then $(CYGPATH_W) '../../lib/nonblock.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/nonblock.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/rtspd-nonblock.Tpo ../../lib/$(DEPDIR)/rtspd-nonblock.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/nonblock.c' object='../../lib/rtspd-nonblock.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o rtspd-nonblock.obj `if test -f '../../lib/nonblock.c'; then $(CYGPATH_W) '../../lib/nonblock.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/nonblock.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o ../../lib/rtspd-nonblock.obj `if test -f '../../lib/nonblock.c'; then $(CYGPATH_W) '../../lib/nonblock.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/nonblock.c'; fi`
 
 
-rtspd-strequal.o: ../../lib/strequal.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT rtspd-strequal.o -MD -MP -MF $(DEPDIR)/rtspd-strequal.Tpo -c -o rtspd-strequal.o `test -f '../../lib/strequal.c' || echo '$(srcdir)/'`../../lib/strequal.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/rtspd-strequal.Tpo $(DEPDIR)/rtspd-strequal.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strequal.c' object='rtspd-strequal.o' libtool=no @AMDEPBACKSLASH@
+../../lib/rtspd-strequal.o: ../../lib/strequal.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT ../../lib/rtspd-strequal.o -MD -MP -MF ../../lib/$(DEPDIR)/rtspd-strequal.Tpo -c -o ../../lib/rtspd-strequal.o `test -f '../../lib/strequal.c' || echo '$(srcdir)/'`../../lib/strequal.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/rtspd-strequal.Tpo ../../lib/$(DEPDIR)/rtspd-strequal.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strequal.c' object='../../lib/rtspd-strequal.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o rtspd-strequal.o `test -f '../../lib/strequal.c' || echo '$(srcdir)/'`../../lib/strequal.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o ../../lib/rtspd-strequal.o `test -f '../../lib/strequal.c' || echo '$(srcdir)/'`../../lib/strequal.c
 
 
-rtspd-strequal.obj: ../../lib/strequal.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT rtspd-strequal.obj -MD -MP -MF $(DEPDIR)/rtspd-strequal.Tpo -c -o rtspd-strequal.obj `if test -f '../../lib/strequal.c'; then $(CYGPATH_W) '../../lib/strequal.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strequal.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/rtspd-strequal.Tpo $(DEPDIR)/rtspd-strequal.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strequal.c' object='rtspd-strequal.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/rtspd-strequal.obj: ../../lib/strequal.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT ../../lib/rtspd-strequal.obj -MD -MP -MF ../../lib/$(DEPDIR)/rtspd-strequal.Tpo -c -o ../../lib/rtspd-strequal.obj `if test -f '../../lib/strequal.c'; then $(CYGPATH_W) '../../lib/strequal.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strequal.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/rtspd-strequal.Tpo ../../lib/$(DEPDIR)/rtspd-strequal.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strequal.c' object='../../lib/rtspd-strequal.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o rtspd-strequal.obj `if test -f '../../lib/strequal.c'; then $(CYGPATH_W) '../../lib/strequal.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strequal.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o ../../lib/rtspd-strequal.obj `if test -f '../../lib/strequal.c'; then $(CYGPATH_W) '../../lib/strequal.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strequal.c'; fi`
 
 
-rtspd-strtoofft.o: ../../lib/strtoofft.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT rtspd-strtoofft.o -MD -MP -MF $(DEPDIR)/rtspd-strtoofft.Tpo -c -o rtspd-strtoofft.o `test -f '../../lib/strtoofft.c' || echo '$(srcdir)/'`../../lib/strtoofft.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/rtspd-strtoofft.Tpo $(DEPDIR)/rtspd-strtoofft.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strtoofft.c' object='rtspd-strtoofft.o' libtool=no @AMDEPBACKSLASH@
+../../lib/rtspd-strtoofft.o: ../../lib/strtoofft.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT ../../lib/rtspd-strtoofft.o -MD -MP -MF ../../lib/$(DEPDIR)/rtspd-strtoofft.Tpo -c -o ../../lib/rtspd-strtoofft.o `test -f '../../lib/strtoofft.c' || echo '$(srcdir)/'`../../lib/strtoofft.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/rtspd-strtoofft.Tpo ../../lib/$(DEPDIR)/rtspd-strtoofft.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strtoofft.c' object='../../lib/rtspd-strtoofft.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o rtspd-strtoofft.o `test -f '../../lib/strtoofft.c' || echo '$(srcdir)/'`../../lib/strtoofft.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o ../../lib/rtspd-strtoofft.o `test -f '../../lib/strtoofft.c' || echo '$(srcdir)/'`../../lib/strtoofft.c
 
 
-rtspd-strtoofft.obj: ../../lib/strtoofft.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT rtspd-strtoofft.obj -MD -MP -MF $(DEPDIR)/rtspd-strtoofft.Tpo -c -o rtspd-strtoofft.obj `if test -f '../../lib/strtoofft.c'; then $(CYGPATH_W) '../../lib/strtoofft.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strtoofft.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/rtspd-strtoofft.Tpo $(DEPDIR)/rtspd-strtoofft.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strtoofft.c' object='rtspd-strtoofft.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/rtspd-strtoofft.obj: ../../lib/strtoofft.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT ../../lib/rtspd-strtoofft.obj -MD -MP -MF ../../lib/$(DEPDIR)/rtspd-strtoofft.Tpo -c -o ../../lib/rtspd-strtoofft.obj `if test -f '../../lib/strtoofft.c'; then $(CYGPATH_W) '../../lib/strtoofft.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strtoofft.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/rtspd-strtoofft.Tpo ../../lib/$(DEPDIR)/rtspd-strtoofft.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strtoofft.c' object='../../lib/rtspd-strtoofft.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o rtspd-strtoofft.obj `if test -f '../../lib/strtoofft.c'; then $(CYGPATH_W) '../../lib/strtoofft.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strtoofft.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o ../../lib/rtspd-strtoofft.obj `if test -f '../../lib/strtoofft.c'; then $(CYGPATH_W) '../../lib/strtoofft.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strtoofft.c'; fi`
 
 
-rtspd-timeval.o: ../../lib/timeval.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT rtspd-timeval.o -MD -MP -MF $(DEPDIR)/rtspd-timeval.Tpo -c -o rtspd-timeval.o `test -f '../../lib/timeval.c' || echo '$(srcdir)/'`../../lib/timeval.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/rtspd-timeval.Tpo $(DEPDIR)/rtspd-timeval.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timeval.c' object='rtspd-timeval.o' libtool=no @AMDEPBACKSLASH@
+../../lib/rtspd-timeval.o: ../../lib/timeval.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT ../../lib/rtspd-timeval.o -MD -MP -MF ../../lib/$(DEPDIR)/rtspd-timeval.Tpo -c -o ../../lib/rtspd-timeval.o `test -f '../../lib/timeval.c' || echo '$(srcdir)/'`../../lib/timeval.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/rtspd-timeval.Tpo ../../lib/$(DEPDIR)/rtspd-timeval.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timeval.c' object='../../lib/rtspd-timeval.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o rtspd-timeval.o `test -f '../../lib/timeval.c' || echo '$(srcdir)/'`../../lib/timeval.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o ../../lib/rtspd-timeval.o `test -f '../../lib/timeval.c' || echo '$(srcdir)/'`../../lib/timeval.c
 
 
-rtspd-timeval.obj: ../../lib/timeval.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT rtspd-timeval.obj -MD -MP -MF $(DEPDIR)/rtspd-timeval.Tpo -c -o rtspd-timeval.obj `if test -f '../../lib/timeval.c'; then $(CYGPATH_W) '../../lib/timeval.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timeval.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/rtspd-timeval.Tpo $(DEPDIR)/rtspd-timeval.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timeval.c' object='rtspd-timeval.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/rtspd-timeval.obj: ../../lib/timeval.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT ../../lib/rtspd-timeval.obj -MD -MP -MF ../../lib/$(DEPDIR)/rtspd-timeval.Tpo -c -o ../../lib/rtspd-timeval.obj `if test -f '../../lib/timeval.c'; then $(CYGPATH_W) '../../lib/timeval.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timeval.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/rtspd-timeval.Tpo ../../lib/$(DEPDIR)/rtspd-timeval.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timeval.c' object='../../lib/rtspd-timeval.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o rtspd-timeval.obj `if test -f '../../lib/timeval.c'; then $(CYGPATH_W) '../../lib/timeval.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timeval.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o ../../lib/rtspd-timeval.obj `if test -f '../../lib/timeval.c'; then $(CYGPATH_W) '../../lib/timeval.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timeval.c'; fi`
 
 
-rtspd-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT rtspd-warnless.o -MD -MP -MF $(DEPDIR)/rtspd-warnless.Tpo -c -o rtspd-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/rtspd-warnless.Tpo $(DEPDIR)/rtspd-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='rtspd-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/rtspd-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT ../../lib/rtspd-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/rtspd-warnless.Tpo -c -o ../../lib/rtspd-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/rtspd-warnless.Tpo ../../lib/$(DEPDIR)/rtspd-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/rtspd-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o rtspd-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o ../../lib/rtspd-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-rtspd-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT rtspd-warnless.obj -MD -MP -MF $(DEPDIR)/rtspd-warnless.Tpo -c -o rtspd-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/rtspd-warnless.Tpo $(DEPDIR)/rtspd-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='rtspd-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/rtspd-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT ../../lib/rtspd-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/rtspd-warnless.Tpo -c -o ../../lib/rtspd-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/rtspd-warnless.Tpo ../../lib/$(DEPDIR)/rtspd-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/rtspd-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o rtspd-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o ../../lib/rtspd-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 rtspd-getpart.o: getpart.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT rtspd-getpart.o -MD -MP -MF $(DEPDIR)/rtspd-getpart.Tpo -c -o rtspd-getpart.o `test -f 'getpart.c' || echo '$(srcdir)/'`getpart.c
 
 rtspd-getpart.o: getpart.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT rtspd-getpart.o -MD -MP -MF $(DEPDIR)/rtspd-getpart.Tpo -c -o rtspd-getpart.o `test -f 'getpart.c' || echo '$(srcdir)/'`getpart.c
@@ -1309,33 +1465,33 @@ rtspd-getpart.obj: getpart.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o rtspd-getpart.obj `if test -f 'getpart.c'; then $(CYGPATH_W) 'getpart.c'; else $(CYGPATH_W) '$(srcdir)/getpart.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o rtspd-getpart.obj `if test -f 'getpart.c'; then $(CYGPATH_W) 'getpart.c'; else $(CYGPATH_W) '$(srcdir)/getpart.c'; fi`
 
-rtspd-base64.o: ../../lib/base64.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT rtspd-base64.o -MD -MP -MF $(DEPDIR)/rtspd-base64.Tpo -c -o rtspd-base64.o `test -f '../../lib/base64.c' || echo '$(srcdir)/'`../../lib/base64.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/rtspd-base64.Tpo $(DEPDIR)/rtspd-base64.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/base64.c' object='rtspd-base64.o' libtool=no @AMDEPBACKSLASH@
+../../lib/rtspd-base64.o: ../../lib/base64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT ../../lib/rtspd-base64.o -MD -MP -MF ../../lib/$(DEPDIR)/rtspd-base64.Tpo -c -o ../../lib/rtspd-base64.o `test -f '../../lib/base64.c' || echo '$(srcdir)/'`../../lib/base64.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/rtspd-base64.Tpo ../../lib/$(DEPDIR)/rtspd-base64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/base64.c' object='../../lib/rtspd-base64.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o rtspd-base64.o `test -f '../../lib/base64.c' || echo '$(srcdir)/'`../../lib/base64.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o ../../lib/rtspd-base64.o `test -f '../../lib/base64.c' || echo '$(srcdir)/'`../../lib/base64.c
 
 
-rtspd-base64.obj: ../../lib/base64.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT rtspd-base64.obj -MD -MP -MF $(DEPDIR)/rtspd-base64.Tpo -c -o rtspd-base64.obj `if test -f '../../lib/base64.c'; then $(CYGPATH_W) '../../lib/base64.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/base64.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/rtspd-base64.Tpo $(DEPDIR)/rtspd-base64.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/base64.c' object='rtspd-base64.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/rtspd-base64.obj: ../../lib/base64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT ../../lib/rtspd-base64.obj -MD -MP -MF ../../lib/$(DEPDIR)/rtspd-base64.Tpo -c -o ../../lib/rtspd-base64.obj `if test -f '../../lib/base64.c'; then $(CYGPATH_W) '../../lib/base64.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/base64.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/rtspd-base64.Tpo ../../lib/$(DEPDIR)/rtspd-base64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/base64.c' object='../../lib/rtspd-base64.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o rtspd-base64.obj `if test -f '../../lib/base64.c'; then $(CYGPATH_W) '../../lib/base64.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/base64.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o ../../lib/rtspd-base64.obj `if test -f '../../lib/base64.c'; then $(CYGPATH_W) '../../lib/base64.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/base64.c'; fi`
 
 
-rtspd-memdebug.o: ../../lib/memdebug.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT rtspd-memdebug.o -MD -MP -MF $(DEPDIR)/rtspd-memdebug.Tpo -c -o rtspd-memdebug.o `test -f '../../lib/memdebug.c' || echo '$(srcdir)/'`../../lib/memdebug.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/rtspd-memdebug.Tpo $(DEPDIR)/rtspd-memdebug.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/memdebug.c' object='rtspd-memdebug.o' libtool=no @AMDEPBACKSLASH@
+../../lib/rtspd-memdebug.o: ../../lib/memdebug.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT ../../lib/rtspd-memdebug.o -MD -MP -MF ../../lib/$(DEPDIR)/rtspd-memdebug.Tpo -c -o ../../lib/rtspd-memdebug.o `test -f '../../lib/memdebug.c' || echo '$(srcdir)/'`../../lib/memdebug.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/rtspd-memdebug.Tpo ../../lib/$(DEPDIR)/rtspd-memdebug.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/memdebug.c' object='../../lib/rtspd-memdebug.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o rtspd-memdebug.o `test -f '../../lib/memdebug.c' || echo '$(srcdir)/'`../../lib/memdebug.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o ../../lib/rtspd-memdebug.o `test -f '../../lib/memdebug.c' || echo '$(srcdir)/'`../../lib/memdebug.c
 
 
-rtspd-memdebug.obj: ../../lib/memdebug.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT rtspd-memdebug.obj -MD -MP -MF $(DEPDIR)/rtspd-memdebug.Tpo -c -o rtspd-memdebug.obj `if test -f '../../lib/memdebug.c'; then $(CYGPATH_W) '../../lib/memdebug.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/memdebug.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/rtspd-memdebug.Tpo $(DEPDIR)/rtspd-memdebug.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/memdebug.c' object='rtspd-memdebug.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/rtspd-memdebug.obj: ../../lib/memdebug.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT ../../lib/rtspd-memdebug.obj -MD -MP -MF ../../lib/$(DEPDIR)/rtspd-memdebug.Tpo -c -o ../../lib/rtspd-memdebug.obj `if test -f '../../lib/memdebug.c'; then $(CYGPATH_W) '../../lib/memdebug.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/memdebug.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/rtspd-memdebug.Tpo ../../lib/$(DEPDIR)/rtspd-memdebug.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/memdebug.c' object='../../lib/rtspd-memdebug.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o rtspd-memdebug.obj `if test -f '../../lib/memdebug.c'; then $(CYGPATH_W) '../../lib/memdebug.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/memdebug.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o ../../lib/rtspd-memdebug.obj `if test -f '../../lib/memdebug.c'; then $(CYGPATH_W) '../../lib/memdebug.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/memdebug.c'; fi`
 
 rtspd-util.o: util.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT rtspd-util.o -MD -MP -MF $(DEPDIR)/rtspd-util.Tpo -c -o rtspd-util.o `test -f 'util.c' || echo '$(srcdir)/'`util.c
 
 rtspd-util.o: util.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT rtspd-util.o -MD -MP -MF $(DEPDIR)/rtspd-util.Tpo -c -o rtspd-util.o `test -f 'util.c' || echo '$(srcdir)/'`util.c
@@ -1365,89 +1521,89 @@ rtspd-rtspd.obj: rtspd.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o rtspd-rtspd.obj `if test -f 'rtspd.c'; then $(CYGPATH_W) 'rtspd.c'; else $(CYGPATH_W) '$(srcdir)/rtspd.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o rtspd-rtspd.obj `if test -f 'rtspd.c'; then $(CYGPATH_W) 'rtspd.c'; else $(CYGPATH_W) '$(srcdir)/rtspd.c'; fi`
 
-sockfilt-mprintf.o: ../../lib/mprintf.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT sockfilt-mprintf.o -MD -MP -MF $(DEPDIR)/sockfilt-mprintf.Tpo -c -o sockfilt-mprintf.o `test -f '../../lib/mprintf.c' || echo '$(srcdir)/'`../../lib/mprintf.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sockfilt-mprintf.Tpo $(DEPDIR)/sockfilt-mprintf.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/mprintf.c' object='sockfilt-mprintf.o' libtool=no @AMDEPBACKSLASH@
+../../lib/sockfilt-mprintf.o: ../../lib/mprintf.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT ../../lib/sockfilt-mprintf.o -MD -MP -MF ../../lib/$(DEPDIR)/sockfilt-mprintf.Tpo -c -o ../../lib/sockfilt-mprintf.o `test -f '../../lib/mprintf.c' || echo '$(srcdir)/'`../../lib/mprintf.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sockfilt-mprintf.Tpo ../../lib/$(DEPDIR)/sockfilt-mprintf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/mprintf.c' object='../../lib/sockfilt-mprintf.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o sockfilt-mprintf.o `test -f '../../lib/mprintf.c' || echo '$(srcdir)/'`../../lib/mprintf.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o ../../lib/sockfilt-mprintf.o `test -f '../../lib/mprintf.c' || echo '$(srcdir)/'`../../lib/mprintf.c
 
 
-sockfilt-mprintf.obj: ../../lib/mprintf.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT sockfilt-mprintf.obj -MD -MP -MF $(DEPDIR)/sockfilt-mprintf.Tpo -c -o sockfilt-mprintf.obj `if test -f '../../lib/mprintf.c'; then $(CYGPATH_W) '../../lib/mprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/mprintf.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sockfilt-mprintf.Tpo $(DEPDIR)/sockfilt-mprintf.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/mprintf.c' object='sockfilt-mprintf.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/sockfilt-mprintf.obj: ../../lib/mprintf.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT ../../lib/sockfilt-mprintf.obj -MD -MP -MF ../../lib/$(DEPDIR)/sockfilt-mprintf.Tpo -c -o ../../lib/sockfilt-mprintf.obj `if test -f '../../lib/mprintf.c'; then $(CYGPATH_W) '../../lib/mprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/mprintf.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sockfilt-mprintf.Tpo ../../lib/$(DEPDIR)/sockfilt-mprintf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/mprintf.c' object='../../lib/sockfilt-mprintf.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o sockfilt-mprintf.obj `if test -f '../../lib/mprintf.c'; then $(CYGPATH_W) '../../lib/mprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/mprintf.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o ../../lib/sockfilt-mprintf.obj `if test -f '../../lib/mprintf.c'; then $(CYGPATH_W) '../../lib/mprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/mprintf.c'; fi`
 
 
-sockfilt-nonblock.o: ../../lib/nonblock.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT sockfilt-nonblock.o -MD -MP -MF $(DEPDIR)/sockfilt-nonblock.Tpo -c -o sockfilt-nonblock.o `test -f '../../lib/nonblock.c' || echo '$(srcdir)/'`../../lib/nonblock.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sockfilt-nonblock.Tpo $(DEPDIR)/sockfilt-nonblock.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/nonblock.c' object='sockfilt-nonblock.o' libtool=no @AMDEPBACKSLASH@
+../../lib/sockfilt-nonblock.o: ../../lib/nonblock.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT ../../lib/sockfilt-nonblock.o -MD -MP -MF ../../lib/$(DEPDIR)/sockfilt-nonblock.Tpo -c -o ../../lib/sockfilt-nonblock.o `test -f '../../lib/nonblock.c' || echo '$(srcdir)/'`../../lib/nonblock.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sockfilt-nonblock.Tpo ../../lib/$(DEPDIR)/sockfilt-nonblock.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/nonblock.c' object='../../lib/sockfilt-nonblock.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o sockfilt-nonblock.o `test -f '../../lib/nonblock.c' || echo '$(srcdir)/'`../../lib/nonblock.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o ../../lib/sockfilt-nonblock.o `test -f '../../lib/nonblock.c' || echo '$(srcdir)/'`../../lib/nonblock.c
 
 
-sockfilt-nonblock.obj: ../../lib/nonblock.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT sockfilt-nonblock.obj -MD -MP -MF $(DEPDIR)/sockfilt-nonblock.Tpo -c -o sockfilt-nonblock.obj `if test -f '../../lib/nonblock.c'; then $(CYGPATH_W) '../../lib/nonblock.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/nonblock.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sockfilt-nonblock.Tpo $(DEPDIR)/sockfilt-nonblock.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/nonblock.c' object='sockfilt-nonblock.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/sockfilt-nonblock.obj: ../../lib/nonblock.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT ../../lib/sockfilt-nonblock.obj -MD -MP -MF ../../lib/$(DEPDIR)/sockfilt-nonblock.Tpo -c -o ../../lib/sockfilt-nonblock.obj `if test -f '../../lib/nonblock.c'; then $(CYGPATH_W) '../../lib/nonblock.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/nonblock.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sockfilt-nonblock.Tpo ../../lib/$(DEPDIR)/sockfilt-nonblock.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/nonblock.c' object='../../lib/sockfilt-nonblock.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o sockfilt-nonblock.obj `if test -f '../../lib/nonblock.c'; then $(CYGPATH_W) '../../lib/nonblock.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/nonblock.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o ../../lib/sockfilt-nonblock.obj `if test -f '../../lib/nonblock.c'; then $(CYGPATH_W) '../../lib/nonblock.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/nonblock.c'; fi`
 
 
-sockfilt-strequal.o: ../../lib/strequal.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT sockfilt-strequal.o -MD -MP -MF $(DEPDIR)/sockfilt-strequal.Tpo -c -o sockfilt-strequal.o `test -f '../../lib/strequal.c' || echo '$(srcdir)/'`../../lib/strequal.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sockfilt-strequal.Tpo $(DEPDIR)/sockfilt-strequal.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strequal.c' object='sockfilt-strequal.o' libtool=no @AMDEPBACKSLASH@
+../../lib/sockfilt-strequal.o: ../../lib/strequal.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT ../../lib/sockfilt-strequal.o -MD -MP -MF ../../lib/$(DEPDIR)/sockfilt-strequal.Tpo -c -o ../../lib/sockfilt-strequal.o `test -f '../../lib/strequal.c' || echo '$(srcdir)/'`../../lib/strequal.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sockfilt-strequal.Tpo ../../lib/$(DEPDIR)/sockfilt-strequal.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strequal.c' object='../../lib/sockfilt-strequal.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o sockfilt-strequal.o `test -f '../../lib/strequal.c' || echo '$(srcdir)/'`../../lib/strequal.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o ../../lib/sockfilt-strequal.o `test -f '../../lib/strequal.c' || echo '$(srcdir)/'`../../lib/strequal.c
 
 
-sockfilt-strequal.obj: ../../lib/strequal.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT sockfilt-strequal.obj -MD -MP -MF $(DEPDIR)/sockfilt-strequal.Tpo -c -o sockfilt-strequal.obj `if test -f '../../lib/strequal.c'; then $(CYGPATH_W) '../../lib/strequal.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strequal.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sockfilt-strequal.Tpo $(DEPDIR)/sockfilt-strequal.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strequal.c' object='sockfilt-strequal.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/sockfilt-strequal.obj: ../../lib/strequal.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT ../../lib/sockfilt-strequal.obj -MD -MP -MF ../../lib/$(DEPDIR)/sockfilt-strequal.Tpo -c -o ../../lib/sockfilt-strequal.obj `if test -f '../../lib/strequal.c'; then $(CYGPATH_W) '../../lib/strequal.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strequal.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sockfilt-strequal.Tpo ../../lib/$(DEPDIR)/sockfilt-strequal.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strequal.c' object='../../lib/sockfilt-strequal.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o sockfilt-strequal.obj `if test -f '../../lib/strequal.c'; then $(CYGPATH_W) '../../lib/strequal.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strequal.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o ../../lib/sockfilt-strequal.obj `if test -f '../../lib/strequal.c'; then $(CYGPATH_W) '../../lib/strequal.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strequal.c'; fi`
 
 
-sockfilt-strtoofft.o: ../../lib/strtoofft.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT sockfilt-strtoofft.o -MD -MP -MF $(DEPDIR)/sockfilt-strtoofft.Tpo -c -o sockfilt-strtoofft.o `test -f '../../lib/strtoofft.c' || echo '$(srcdir)/'`../../lib/strtoofft.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sockfilt-strtoofft.Tpo $(DEPDIR)/sockfilt-strtoofft.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strtoofft.c' object='sockfilt-strtoofft.o' libtool=no @AMDEPBACKSLASH@
+../../lib/sockfilt-strtoofft.o: ../../lib/strtoofft.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT ../../lib/sockfilt-strtoofft.o -MD -MP -MF ../../lib/$(DEPDIR)/sockfilt-strtoofft.Tpo -c -o ../../lib/sockfilt-strtoofft.o `test -f '../../lib/strtoofft.c' || echo '$(srcdir)/'`../../lib/strtoofft.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sockfilt-strtoofft.Tpo ../../lib/$(DEPDIR)/sockfilt-strtoofft.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strtoofft.c' object='../../lib/sockfilt-strtoofft.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o sockfilt-strtoofft.o `test -f '../../lib/strtoofft.c' || echo '$(srcdir)/'`../../lib/strtoofft.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o ../../lib/sockfilt-strtoofft.o `test -f '../../lib/strtoofft.c' || echo '$(srcdir)/'`../../lib/strtoofft.c
 
 
-sockfilt-strtoofft.obj: ../../lib/strtoofft.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT sockfilt-strtoofft.obj -MD -MP -MF $(DEPDIR)/sockfilt-strtoofft.Tpo -c -o sockfilt-strtoofft.obj `if test -f '../../lib/strtoofft.c'; then $(CYGPATH_W) '../../lib/strtoofft.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strtoofft.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sockfilt-strtoofft.Tpo $(DEPDIR)/sockfilt-strtoofft.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strtoofft.c' object='sockfilt-strtoofft.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/sockfilt-strtoofft.obj: ../../lib/strtoofft.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT ../../lib/sockfilt-strtoofft.obj -MD -MP -MF ../../lib/$(DEPDIR)/sockfilt-strtoofft.Tpo -c -o ../../lib/sockfilt-strtoofft.obj `if test -f '../../lib/strtoofft.c'; then $(CYGPATH_W) '../../lib/strtoofft.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strtoofft.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sockfilt-strtoofft.Tpo ../../lib/$(DEPDIR)/sockfilt-strtoofft.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strtoofft.c' object='../../lib/sockfilt-strtoofft.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o sockfilt-strtoofft.obj `if test -f '../../lib/strtoofft.c'; then $(CYGPATH_W) '../../lib/strtoofft.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strtoofft.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o ../../lib/sockfilt-strtoofft.obj `if test -f '../../lib/strtoofft.c'; then $(CYGPATH_W) '../../lib/strtoofft.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strtoofft.c'; fi`
 
 
-sockfilt-timeval.o: ../../lib/timeval.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT sockfilt-timeval.o -MD -MP -MF $(DEPDIR)/sockfilt-timeval.Tpo -c -o sockfilt-timeval.o `test -f '../../lib/timeval.c' || echo '$(srcdir)/'`../../lib/timeval.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sockfilt-timeval.Tpo $(DEPDIR)/sockfilt-timeval.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timeval.c' object='sockfilt-timeval.o' libtool=no @AMDEPBACKSLASH@
+../../lib/sockfilt-timeval.o: ../../lib/timeval.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT ../../lib/sockfilt-timeval.o -MD -MP -MF ../../lib/$(DEPDIR)/sockfilt-timeval.Tpo -c -o ../../lib/sockfilt-timeval.o `test -f '../../lib/timeval.c' || echo '$(srcdir)/'`../../lib/timeval.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sockfilt-timeval.Tpo ../../lib/$(DEPDIR)/sockfilt-timeval.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timeval.c' object='../../lib/sockfilt-timeval.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o sockfilt-timeval.o `test -f '../../lib/timeval.c' || echo '$(srcdir)/'`../../lib/timeval.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o ../../lib/sockfilt-timeval.o `test -f '../../lib/timeval.c' || echo '$(srcdir)/'`../../lib/timeval.c
 
 
-sockfilt-timeval.obj: ../../lib/timeval.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT sockfilt-timeval.obj -MD -MP -MF $(DEPDIR)/sockfilt-timeval.Tpo -c -o sockfilt-timeval.obj `if test -f '../../lib/timeval.c'; then $(CYGPATH_W) '../../lib/timeval.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timeval.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sockfilt-timeval.Tpo $(DEPDIR)/sockfilt-timeval.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timeval.c' object='sockfilt-timeval.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/sockfilt-timeval.obj: ../../lib/timeval.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT ../../lib/sockfilt-timeval.obj -MD -MP -MF ../../lib/$(DEPDIR)/sockfilt-timeval.Tpo -c -o ../../lib/sockfilt-timeval.obj `if test -f '../../lib/timeval.c'; then $(CYGPATH_W) '../../lib/timeval.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timeval.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sockfilt-timeval.Tpo ../../lib/$(DEPDIR)/sockfilt-timeval.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timeval.c' object='../../lib/sockfilt-timeval.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o sockfilt-timeval.obj `if test -f '../../lib/timeval.c'; then $(CYGPATH_W) '../../lib/timeval.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timeval.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o ../../lib/sockfilt-timeval.obj `if test -f '../../lib/timeval.c'; then $(CYGPATH_W) '../../lib/timeval.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timeval.c'; fi`
 
 
-sockfilt-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT sockfilt-warnless.o -MD -MP -MF $(DEPDIR)/sockfilt-warnless.Tpo -c -o sockfilt-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sockfilt-warnless.Tpo $(DEPDIR)/sockfilt-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='sockfilt-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/sockfilt-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT ../../lib/sockfilt-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/sockfilt-warnless.Tpo -c -o ../../lib/sockfilt-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sockfilt-warnless.Tpo ../../lib/$(DEPDIR)/sockfilt-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/sockfilt-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o sockfilt-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o ../../lib/sockfilt-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-sockfilt-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT sockfilt-warnless.obj -MD -MP -MF $(DEPDIR)/sockfilt-warnless.Tpo -c -o sockfilt-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sockfilt-warnless.Tpo $(DEPDIR)/sockfilt-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='sockfilt-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/sockfilt-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT ../../lib/sockfilt-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/sockfilt-warnless.Tpo -c -o ../../lib/sockfilt-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sockfilt-warnless.Tpo ../../lib/$(DEPDIR)/sockfilt-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/sockfilt-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o sockfilt-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o ../../lib/sockfilt-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 sockfilt-getpart.o: getpart.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT sockfilt-getpart.o -MD -MP -MF $(DEPDIR)/sockfilt-getpart.Tpo -c -o sockfilt-getpart.o `test -f 'getpart.c' || echo '$(srcdir)/'`getpart.c
 
 sockfilt-getpart.o: getpart.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT sockfilt-getpart.o -MD -MP -MF $(DEPDIR)/sockfilt-getpart.Tpo -c -o sockfilt-getpart.o `test -f 'getpart.c' || echo '$(srcdir)/'`getpart.c
@@ -1463,33 +1619,33 @@ sockfilt-getpart.obj: getpart.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o sockfilt-getpart.obj `if test -f 'getpart.c'; then $(CYGPATH_W) 'getpart.c'; else $(CYGPATH_W) '$(srcdir)/getpart.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o sockfilt-getpart.obj `if test -f 'getpart.c'; then $(CYGPATH_W) 'getpart.c'; else $(CYGPATH_W) '$(srcdir)/getpart.c'; fi`
 
-sockfilt-base64.o: ../../lib/base64.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT sockfilt-base64.o -MD -MP -MF $(DEPDIR)/sockfilt-base64.Tpo -c -o sockfilt-base64.o `test -f '../../lib/base64.c' || echo '$(srcdir)/'`../../lib/base64.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sockfilt-base64.Tpo $(DEPDIR)/sockfilt-base64.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/base64.c' object='sockfilt-base64.o' libtool=no @AMDEPBACKSLASH@
+../../lib/sockfilt-base64.o: ../../lib/base64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT ../../lib/sockfilt-base64.o -MD -MP -MF ../../lib/$(DEPDIR)/sockfilt-base64.Tpo -c -o ../../lib/sockfilt-base64.o `test -f '../../lib/base64.c' || echo '$(srcdir)/'`../../lib/base64.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sockfilt-base64.Tpo ../../lib/$(DEPDIR)/sockfilt-base64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/base64.c' object='../../lib/sockfilt-base64.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o sockfilt-base64.o `test -f '../../lib/base64.c' || echo '$(srcdir)/'`../../lib/base64.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o ../../lib/sockfilt-base64.o `test -f '../../lib/base64.c' || echo '$(srcdir)/'`../../lib/base64.c
 
 
-sockfilt-base64.obj: ../../lib/base64.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT sockfilt-base64.obj -MD -MP -MF $(DEPDIR)/sockfilt-base64.Tpo -c -o sockfilt-base64.obj `if test -f '../../lib/base64.c'; then $(CYGPATH_W) '../../lib/base64.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/base64.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sockfilt-base64.Tpo $(DEPDIR)/sockfilt-base64.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/base64.c' object='sockfilt-base64.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/sockfilt-base64.obj: ../../lib/base64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT ../../lib/sockfilt-base64.obj -MD -MP -MF ../../lib/$(DEPDIR)/sockfilt-base64.Tpo -c -o ../../lib/sockfilt-base64.obj `if test -f '../../lib/base64.c'; then $(CYGPATH_W) '../../lib/base64.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/base64.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sockfilt-base64.Tpo ../../lib/$(DEPDIR)/sockfilt-base64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/base64.c' object='../../lib/sockfilt-base64.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o sockfilt-base64.obj `if test -f '../../lib/base64.c'; then $(CYGPATH_W) '../../lib/base64.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/base64.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o ../../lib/sockfilt-base64.obj `if test -f '../../lib/base64.c'; then $(CYGPATH_W) '../../lib/base64.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/base64.c'; fi`
 
 
-sockfilt-memdebug.o: ../../lib/memdebug.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT sockfilt-memdebug.o -MD -MP -MF $(DEPDIR)/sockfilt-memdebug.Tpo -c -o sockfilt-memdebug.o `test -f '../../lib/memdebug.c' || echo '$(srcdir)/'`../../lib/memdebug.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sockfilt-memdebug.Tpo $(DEPDIR)/sockfilt-memdebug.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/memdebug.c' object='sockfilt-memdebug.o' libtool=no @AMDEPBACKSLASH@
+../../lib/sockfilt-memdebug.o: ../../lib/memdebug.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT ../../lib/sockfilt-memdebug.o -MD -MP -MF ../../lib/$(DEPDIR)/sockfilt-memdebug.Tpo -c -o ../../lib/sockfilt-memdebug.o `test -f '../../lib/memdebug.c' || echo '$(srcdir)/'`../../lib/memdebug.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sockfilt-memdebug.Tpo ../../lib/$(DEPDIR)/sockfilt-memdebug.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/memdebug.c' object='../../lib/sockfilt-memdebug.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o sockfilt-memdebug.o `test -f '../../lib/memdebug.c' || echo '$(srcdir)/'`../../lib/memdebug.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o ../../lib/sockfilt-memdebug.o `test -f '../../lib/memdebug.c' || echo '$(srcdir)/'`../../lib/memdebug.c
 
 
-sockfilt-memdebug.obj: ../../lib/memdebug.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT sockfilt-memdebug.obj -MD -MP -MF $(DEPDIR)/sockfilt-memdebug.Tpo -c -o sockfilt-memdebug.obj `if test -f '../../lib/memdebug.c'; then $(CYGPATH_W) '../../lib/memdebug.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/memdebug.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sockfilt-memdebug.Tpo $(DEPDIR)/sockfilt-memdebug.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/memdebug.c' object='sockfilt-memdebug.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/sockfilt-memdebug.obj: ../../lib/memdebug.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT ../../lib/sockfilt-memdebug.obj -MD -MP -MF ../../lib/$(DEPDIR)/sockfilt-memdebug.Tpo -c -o ../../lib/sockfilt-memdebug.obj `if test -f '../../lib/memdebug.c'; then $(CYGPATH_W) '../../lib/memdebug.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/memdebug.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sockfilt-memdebug.Tpo ../../lib/$(DEPDIR)/sockfilt-memdebug.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/memdebug.c' object='../../lib/sockfilt-memdebug.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o sockfilt-memdebug.obj `if test -f '../../lib/memdebug.c'; then $(CYGPATH_W) '../../lib/memdebug.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/memdebug.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o ../../lib/sockfilt-memdebug.obj `if test -f '../../lib/memdebug.c'; then $(CYGPATH_W) '../../lib/memdebug.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/memdebug.c'; fi`
 
 sockfilt-util.o: util.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT sockfilt-util.o -MD -MP -MF $(DEPDIR)/sockfilt-util.Tpo -c -o sockfilt-util.o `test -f 'util.c' || echo '$(srcdir)/'`util.c
 
 sockfilt-util.o: util.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT sockfilt-util.o -MD -MP -MF $(DEPDIR)/sockfilt-util.Tpo -c -o sockfilt-util.o `test -f 'util.c' || echo '$(srcdir)/'`util.c
@@ -1519,103 +1675,103 @@ sockfilt-sockfilt.obj: sockfilt.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o sockfilt-sockfilt.obj `if test -f 'sockfilt.c'; then $(CYGPATH_W) 'sockfilt.c'; else $(CYGPATH_W) '$(srcdir)/sockfilt.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o sockfilt-sockfilt.obj `if test -f 'sockfilt.c'; then $(CYGPATH_W) 'sockfilt.c'; else $(CYGPATH_W) '$(srcdir)/sockfilt.c'; fi`
 
-sockfilt-inet_pton.o: ../../lib/inet_pton.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT sockfilt-inet_pton.o -MD -MP -MF $(DEPDIR)/sockfilt-inet_pton.Tpo -c -o sockfilt-inet_pton.o `test -f '../../lib/inet_pton.c' || echo '$(srcdir)/'`../../lib/inet_pton.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sockfilt-inet_pton.Tpo $(DEPDIR)/sockfilt-inet_pton.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/inet_pton.c' object='sockfilt-inet_pton.o' libtool=no @AMDEPBACKSLASH@
+../../lib/sockfilt-inet_pton.o: ../../lib/inet_pton.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT ../../lib/sockfilt-inet_pton.o -MD -MP -MF ../../lib/$(DEPDIR)/sockfilt-inet_pton.Tpo -c -o ../../lib/sockfilt-inet_pton.o `test -f '../../lib/inet_pton.c' || echo '$(srcdir)/'`../../lib/inet_pton.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sockfilt-inet_pton.Tpo ../../lib/$(DEPDIR)/sockfilt-inet_pton.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/inet_pton.c' object='../../lib/sockfilt-inet_pton.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o sockfilt-inet_pton.o `test -f '../../lib/inet_pton.c' || echo '$(srcdir)/'`../../lib/inet_pton.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o ../../lib/sockfilt-inet_pton.o `test -f '../../lib/inet_pton.c' || echo '$(srcdir)/'`../../lib/inet_pton.c
 
 
-sockfilt-inet_pton.obj: ../../lib/inet_pton.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT sockfilt-inet_pton.obj -MD -MP -MF $(DEPDIR)/sockfilt-inet_pton.Tpo -c -o sockfilt-inet_pton.obj `if test -f '../../lib/inet_pton.c'; then $(CYGPATH_W) '../../lib/inet_pton.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/inet_pton.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sockfilt-inet_pton.Tpo $(DEPDIR)/sockfilt-inet_pton.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/inet_pton.c' object='sockfilt-inet_pton.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/sockfilt-inet_pton.obj: ../../lib/inet_pton.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT ../../lib/sockfilt-inet_pton.obj -MD -MP -MF ../../lib/$(DEPDIR)/sockfilt-inet_pton.Tpo -c -o ../../lib/sockfilt-inet_pton.obj `if test -f '../../lib/inet_pton.c'; then $(CYGPATH_W) '../../lib/inet_pton.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/inet_pton.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sockfilt-inet_pton.Tpo ../../lib/$(DEPDIR)/sockfilt-inet_pton.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/inet_pton.c' object='../../lib/sockfilt-inet_pton.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o sockfilt-inet_pton.obj `if test -f '../../lib/inet_pton.c'; then $(CYGPATH_W) '../../lib/inet_pton.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/inet_pton.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o ../../lib/sockfilt-inet_pton.obj `if test -f '../../lib/inet_pton.c'; then $(CYGPATH_W) '../../lib/inet_pton.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/inet_pton.c'; fi`
 
 
-sws-mprintf.o: ../../lib/mprintf.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT sws-mprintf.o -MD -MP -MF $(DEPDIR)/sws-mprintf.Tpo -c -o sws-mprintf.o `test -f '../../lib/mprintf.c' || echo '$(srcdir)/'`../../lib/mprintf.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sws-mprintf.Tpo $(DEPDIR)/sws-mprintf.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/mprintf.c' object='sws-mprintf.o' libtool=no @AMDEPBACKSLASH@
+../../lib/sws-mprintf.o: ../../lib/mprintf.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT ../../lib/sws-mprintf.o -MD -MP -MF ../../lib/$(DEPDIR)/sws-mprintf.Tpo -c -o ../../lib/sws-mprintf.o `test -f '../../lib/mprintf.c' || echo '$(srcdir)/'`../../lib/mprintf.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sws-mprintf.Tpo ../../lib/$(DEPDIR)/sws-mprintf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/mprintf.c' object='../../lib/sws-mprintf.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o sws-mprintf.o `test -f '../../lib/mprintf.c' || echo '$(srcdir)/'`../../lib/mprintf.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o ../../lib/sws-mprintf.o `test -f '../../lib/mprintf.c' || echo '$(srcdir)/'`../../lib/mprintf.c
 
 
-sws-mprintf.obj: ../../lib/mprintf.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT sws-mprintf.obj -MD -MP -MF $(DEPDIR)/sws-mprintf.Tpo -c -o sws-mprintf.obj `if test -f '../../lib/mprintf.c'; then $(CYGPATH_W) '../../lib/mprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/mprintf.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sws-mprintf.Tpo $(DEPDIR)/sws-mprintf.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/mprintf.c' object='sws-mprintf.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/sws-mprintf.obj: ../../lib/mprintf.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT ../../lib/sws-mprintf.obj -MD -MP -MF ../../lib/$(DEPDIR)/sws-mprintf.Tpo -c -o ../../lib/sws-mprintf.obj `if test -f '../../lib/mprintf.c'; then $(CYGPATH_W) '../../lib/mprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/mprintf.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sws-mprintf.Tpo ../../lib/$(DEPDIR)/sws-mprintf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/mprintf.c' object='../../lib/sws-mprintf.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o sws-mprintf.obj `if test -f '../../lib/mprintf.c'; then $(CYGPATH_W) '../../lib/mprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/mprintf.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o ../../lib/sws-mprintf.obj `if test -f '../../lib/mprintf.c'; then $(CYGPATH_W) '../../lib/mprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/mprintf.c'; fi`
 
 
-sws-nonblock.o: ../../lib/nonblock.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT sws-nonblock.o -MD -MP -MF $(DEPDIR)/sws-nonblock.Tpo -c -o sws-nonblock.o `test -f '../../lib/nonblock.c' || echo '$(srcdir)/'`../../lib/nonblock.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sws-nonblock.Tpo $(DEPDIR)/sws-nonblock.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/nonblock.c' object='sws-nonblock.o' libtool=no @AMDEPBACKSLASH@
+../../lib/sws-nonblock.o: ../../lib/nonblock.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT ../../lib/sws-nonblock.o -MD -MP -MF ../../lib/$(DEPDIR)/sws-nonblock.Tpo -c -o ../../lib/sws-nonblock.o `test -f '../../lib/nonblock.c' || echo '$(srcdir)/'`../../lib/nonblock.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sws-nonblock.Tpo ../../lib/$(DEPDIR)/sws-nonblock.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/nonblock.c' object='../../lib/sws-nonblock.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o sws-nonblock.o `test -f '../../lib/nonblock.c' || echo '$(srcdir)/'`../../lib/nonblock.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o ../../lib/sws-nonblock.o `test -f '../../lib/nonblock.c' || echo '$(srcdir)/'`../../lib/nonblock.c
 
 
-sws-nonblock.obj: ../../lib/nonblock.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT sws-nonblock.obj -MD -MP -MF $(DEPDIR)/sws-nonblock.Tpo -c -o sws-nonblock.obj `if test -f '../../lib/nonblock.c'; then $(CYGPATH_W) '../../lib/nonblock.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/nonblock.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sws-nonblock.Tpo $(DEPDIR)/sws-nonblock.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/nonblock.c' object='sws-nonblock.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/sws-nonblock.obj: ../../lib/nonblock.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT ../../lib/sws-nonblock.obj -MD -MP -MF ../../lib/$(DEPDIR)/sws-nonblock.Tpo -c -o ../../lib/sws-nonblock.obj `if test -f '../../lib/nonblock.c'; then $(CYGPATH_W) '../../lib/nonblock.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/nonblock.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sws-nonblock.Tpo ../../lib/$(DEPDIR)/sws-nonblock.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/nonblock.c' object='../../lib/sws-nonblock.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o sws-nonblock.obj `if test -f '../../lib/nonblock.c'; then $(CYGPATH_W) '../../lib/nonblock.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/nonblock.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o ../../lib/sws-nonblock.obj `if test -f '../../lib/nonblock.c'; then $(CYGPATH_W) '../../lib/nonblock.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/nonblock.c'; fi`
 
 
-sws-strequal.o: ../../lib/strequal.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT sws-strequal.o -MD -MP -MF $(DEPDIR)/sws-strequal.Tpo -c -o sws-strequal.o `test -f '../../lib/strequal.c' || echo '$(srcdir)/'`../../lib/strequal.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sws-strequal.Tpo $(DEPDIR)/sws-strequal.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strequal.c' object='sws-strequal.o' libtool=no @AMDEPBACKSLASH@
+../../lib/sws-strequal.o: ../../lib/strequal.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT ../../lib/sws-strequal.o -MD -MP -MF ../../lib/$(DEPDIR)/sws-strequal.Tpo -c -o ../../lib/sws-strequal.o `test -f '../../lib/strequal.c' || echo '$(srcdir)/'`../../lib/strequal.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sws-strequal.Tpo ../../lib/$(DEPDIR)/sws-strequal.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strequal.c' object='../../lib/sws-strequal.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o sws-strequal.o `test -f '../../lib/strequal.c' || echo '$(srcdir)/'`../../lib/strequal.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o ../../lib/sws-strequal.o `test -f '../../lib/strequal.c' || echo '$(srcdir)/'`../../lib/strequal.c
 
 
-sws-strequal.obj: ../../lib/strequal.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT sws-strequal.obj -MD -MP -MF $(DEPDIR)/sws-strequal.Tpo -c -o sws-strequal.obj `if test -f '../../lib/strequal.c'; then $(CYGPATH_W) '../../lib/strequal.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strequal.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sws-strequal.Tpo $(DEPDIR)/sws-strequal.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strequal.c' object='sws-strequal.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/sws-strequal.obj: ../../lib/strequal.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT ../../lib/sws-strequal.obj -MD -MP -MF ../../lib/$(DEPDIR)/sws-strequal.Tpo -c -o ../../lib/sws-strequal.obj `if test -f '../../lib/strequal.c'; then $(CYGPATH_W) '../../lib/strequal.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strequal.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sws-strequal.Tpo ../../lib/$(DEPDIR)/sws-strequal.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strequal.c' object='../../lib/sws-strequal.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o sws-strequal.obj `if test -f '../../lib/strequal.c'; then $(CYGPATH_W) '../../lib/strequal.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strequal.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o ../../lib/sws-strequal.obj `if test -f '../../lib/strequal.c'; then $(CYGPATH_W) '../../lib/strequal.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strequal.c'; fi`
 
 
-sws-strtoofft.o: ../../lib/strtoofft.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT sws-strtoofft.o -MD -MP -MF $(DEPDIR)/sws-strtoofft.Tpo -c -o sws-strtoofft.o `test -f '../../lib/strtoofft.c' || echo '$(srcdir)/'`../../lib/strtoofft.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sws-strtoofft.Tpo $(DEPDIR)/sws-strtoofft.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strtoofft.c' object='sws-strtoofft.o' libtool=no @AMDEPBACKSLASH@
+../../lib/sws-strtoofft.o: ../../lib/strtoofft.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT ../../lib/sws-strtoofft.o -MD -MP -MF ../../lib/$(DEPDIR)/sws-strtoofft.Tpo -c -o ../../lib/sws-strtoofft.o `test -f '../../lib/strtoofft.c' || echo '$(srcdir)/'`../../lib/strtoofft.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sws-strtoofft.Tpo ../../lib/$(DEPDIR)/sws-strtoofft.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strtoofft.c' object='../../lib/sws-strtoofft.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o sws-strtoofft.o `test -f '../../lib/strtoofft.c' || echo '$(srcdir)/'`../../lib/strtoofft.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o ../../lib/sws-strtoofft.o `test -f '../../lib/strtoofft.c' || echo '$(srcdir)/'`../../lib/strtoofft.c
 
 
-sws-strtoofft.obj: ../../lib/strtoofft.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT sws-strtoofft.obj -MD -MP -MF $(DEPDIR)/sws-strtoofft.Tpo -c -o sws-strtoofft.obj `if test -f '../../lib/strtoofft.c'; then $(CYGPATH_W) '../../lib/strtoofft.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strtoofft.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sws-strtoofft.Tpo $(DEPDIR)/sws-strtoofft.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strtoofft.c' object='sws-strtoofft.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/sws-strtoofft.obj: ../../lib/strtoofft.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT ../../lib/sws-strtoofft.obj -MD -MP -MF ../../lib/$(DEPDIR)/sws-strtoofft.Tpo -c -o ../../lib/sws-strtoofft.obj `if test -f '../../lib/strtoofft.c'; then $(CYGPATH_W) '../../lib/strtoofft.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strtoofft.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sws-strtoofft.Tpo ../../lib/$(DEPDIR)/sws-strtoofft.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strtoofft.c' object='../../lib/sws-strtoofft.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o sws-strtoofft.obj `if test -f '../../lib/strtoofft.c'; then $(CYGPATH_W) '../../lib/strtoofft.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strtoofft.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o ../../lib/sws-strtoofft.obj `if test -f '../../lib/strtoofft.c'; then $(CYGPATH_W) '../../lib/strtoofft.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strtoofft.c'; fi`
 
 
-sws-timeval.o: ../../lib/timeval.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT sws-timeval.o -MD -MP -MF $(DEPDIR)/sws-timeval.Tpo -c -o sws-timeval.o `test -f '../../lib/timeval.c' || echo '$(srcdir)/'`../../lib/timeval.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sws-timeval.Tpo $(DEPDIR)/sws-timeval.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timeval.c' object='sws-timeval.o' libtool=no @AMDEPBACKSLASH@
+../../lib/sws-timeval.o: ../../lib/timeval.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT ../../lib/sws-timeval.o -MD -MP -MF ../../lib/$(DEPDIR)/sws-timeval.Tpo -c -o ../../lib/sws-timeval.o `test -f '../../lib/timeval.c' || echo '$(srcdir)/'`../../lib/timeval.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sws-timeval.Tpo ../../lib/$(DEPDIR)/sws-timeval.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timeval.c' object='../../lib/sws-timeval.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o sws-timeval.o `test -f '../../lib/timeval.c' || echo '$(srcdir)/'`../../lib/timeval.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o ../../lib/sws-timeval.o `test -f '../../lib/timeval.c' || echo '$(srcdir)/'`../../lib/timeval.c
 
 
-sws-timeval.obj: ../../lib/timeval.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT sws-timeval.obj -MD -MP -MF $(DEPDIR)/sws-timeval.Tpo -c -o sws-timeval.obj `if test -f '../../lib/timeval.c'; then $(CYGPATH_W) '../../lib/timeval.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timeval.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sws-timeval.Tpo $(DEPDIR)/sws-timeval.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timeval.c' object='sws-timeval.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/sws-timeval.obj: ../../lib/timeval.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT ../../lib/sws-timeval.obj -MD -MP -MF ../../lib/$(DEPDIR)/sws-timeval.Tpo -c -o ../../lib/sws-timeval.obj `if test -f '../../lib/timeval.c'; then $(CYGPATH_W) '../../lib/timeval.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timeval.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sws-timeval.Tpo ../../lib/$(DEPDIR)/sws-timeval.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timeval.c' object='../../lib/sws-timeval.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o sws-timeval.obj `if test -f '../../lib/timeval.c'; then $(CYGPATH_W) '../../lib/timeval.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timeval.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o ../../lib/sws-timeval.obj `if test -f '../../lib/timeval.c'; then $(CYGPATH_W) '../../lib/timeval.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timeval.c'; fi`
 
 
-sws-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT sws-warnless.o -MD -MP -MF $(DEPDIR)/sws-warnless.Tpo -c -o sws-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sws-warnless.Tpo $(DEPDIR)/sws-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='sws-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/sws-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT ../../lib/sws-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/sws-warnless.Tpo -c -o ../../lib/sws-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sws-warnless.Tpo ../../lib/$(DEPDIR)/sws-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/sws-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o sws-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o ../../lib/sws-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-sws-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT sws-warnless.obj -MD -MP -MF $(DEPDIR)/sws-warnless.Tpo -c -o sws-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sws-warnless.Tpo $(DEPDIR)/sws-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='sws-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/sws-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT ../../lib/sws-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/sws-warnless.Tpo -c -o ../../lib/sws-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sws-warnless.Tpo ../../lib/$(DEPDIR)/sws-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/sws-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o sws-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o ../../lib/sws-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 sws-getpart.o: getpart.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT sws-getpart.o -MD -MP -MF $(DEPDIR)/sws-getpart.Tpo -c -o sws-getpart.o `test -f 'getpart.c' || echo '$(srcdir)/'`getpart.c
 
 sws-getpart.o: getpart.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT sws-getpart.o -MD -MP -MF $(DEPDIR)/sws-getpart.Tpo -c -o sws-getpart.o `test -f 'getpart.c' || echo '$(srcdir)/'`getpart.c
@@ -1631,33 +1787,33 @@ sws-getpart.obj: getpart.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o sws-getpart.obj `if test -f 'getpart.c'; then $(CYGPATH_W) 'getpart.c'; else $(CYGPATH_W) '$(srcdir)/getpart.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o sws-getpart.obj `if test -f 'getpart.c'; then $(CYGPATH_W) 'getpart.c'; else $(CYGPATH_W) '$(srcdir)/getpart.c'; fi`
 
-sws-base64.o: ../../lib/base64.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT sws-base64.o -MD -MP -MF $(DEPDIR)/sws-base64.Tpo -c -o sws-base64.o `test -f '../../lib/base64.c' || echo '$(srcdir)/'`../../lib/base64.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sws-base64.Tpo $(DEPDIR)/sws-base64.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/base64.c' object='sws-base64.o' libtool=no @AMDEPBACKSLASH@
+../../lib/sws-base64.o: ../../lib/base64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT ../../lib/sws-base64.o -MD -MP -MF ../../lib/$(DEPDIR)/sws-base64.Tpo -c -o ../../lib/sws-base64.o `test -f '../../lib/base64.c' || echo '$(srcdir)/'`../../lib/base64.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sws-base64.Tpo ../../lib/$(DEPDIR)/sws-base64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/base64.c' object='../../lib/sws-base64.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o sws-base64.o `test -f '../../lib/base64.c' || echo '$(srcdir)/'`../../lib/base64.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o ../../lib/sws-base64.o `test -f '../../lib/base64.c' || echo '$(srcdir)/'`../../lib/base64.c
 
 
-sws-base64.obj: ../../lib/base64.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT sws-base64.obj -MD -MP -MF $(DEPDIR)/sws-base64.Tpo -c -o sws-base64.obj `if test -f '../../lib/base64.c'; then $(CYGPATH_W) '../../lib/base64.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/base64.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sws-base64.Tpo $(DEPDIR)/sws-base64.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/base64.c' object='sws-base64.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/sws-base64.obj: ../../lib/base64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT ../../lib/sws-base64.obj -MD -MP -MF ../../lib/$(DEPDIR)/sws-base64.Tpo -c -o ../../lib/sws-base64.obj `if test -f '../../lib/base64.c'; then $(CYGPATH_W) '../../lib/base64.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/base64.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sws-base64.Tpo ../../lib/$(DEPDIR)/sws-base64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/base64.c' object='../../lib/sws-base64.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o sws-base64.obj `if test -f '../../lib/base64.c'; then $(CYGPATH_W) '../../lib/base64.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/base64.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o ../../lib/sws-base64.obj `if test -f '../../lib/base64.c'; then $(CYGPATH_W) '../../lib/base64.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/base64.c'; fi`
 
 
-sws-memdebug.o: ../../lib/memdebug.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT sws-memdebug.o -MD -MP -MF $(DEPDIR)/sws-memdebug.Tpo -c -o sws-memdebug.o `test -f '../../lib/memdebug.c' || echo '$(srcdir)/'`../../lib/memdebug.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sws-memdebug.Tpo $(DEPDIR)/sws-memdebug.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/memdebug.c' object='sws-memdebug.o' libtool=no @AMDEPBACKSLASH@
+../../lib/sws-memdebug.o: ../../lib/memdebug.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT ../../lib/sws-memdebug.o -MD -MP -MF ../../lib/$(DEPDIR)/sws-memdebug.Tpo -c -o ../../lib/sws-memdebug.o `test -f '../../lib/memdebug.c' || echo '$(srcdir)/'`../../lib/memdebug.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sws-memdebug.Tpo ../../lib/$(DEPDIR)/sws-memdebug.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/memdebug.c' object='../../lib/sws-memdebug.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o sws-memdebug.o `test -f '../../lib/memdebug.c' || echo '$(srcdir)/'`../../lib/memdebug.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o ../../lib/sws-memdebug.o `test -f '../../lib/memdebug.c' || echo '$(srcdir)/'`../../lib/memdebug.c
 
 
-sws-memdebug.obj: ../../lib/memdebug.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT sws-memdebug.obj -MD -MP -MF $(DEPDIR)/sws-memdebug.Tpo -c -o sws-memdebug.obj `if test -f '../../lib/memdebug.c'; then $(CYGPATH_W) '../../lib/memdebug.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/memdebug.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sws-memdebug.Tpo $(DEPDIR)/sws-memdebug.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/memdebug.c' object='sws-memdebug.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/sws-memdebug.obj: ../../lib/memdebug.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT ../../lib/sws-memdebug.obj -MD -MP -MF ../../lib/$(DEPDIR)/sws-memdebug.Tpo -c -o ../../lib/sws-memdebug.obj `if test -f '../../lib/memdebug.c'; then $(CYGPATH_W) '../../lib/memdebug.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/memdebug.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sws-memdebug.Tpo ../../lib/$(DEPDIR)/sws-memdebug.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/memdebug.c' object='../../lib/sws-memdebug.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o sws-memdebug.obj `if test -f '../../lib/memdebug.c'; then $(CYGPATH_W) '../../lib/memdebug.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/memdebug.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o ../../lib/sws-memdebug.obj `if test -f '../../lib/memdebug.c'; then $(CYGPATH_W) '../../lib/memdebug.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/memdebug.c'; fi`
 
 sws-util.o: util.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT sws-util.o -MD -MP -MF $(DEPDIR)/sws-util.Tpo -c -o sws-util.o `test -f 'util.c' || echo '$(srcdir)/'`util.c
 
 sws-util.o: util.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT sws-util.o -MD -MP -MF $(DEPDIR)/sws-util.Tpo -c -o sws-util.o `test -f 'util.c' || echo '$(srcdir)/'`util.c
@@ -1687,103 +1843,103 @@ sws-sws.obj: sws.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o sws-sws.obj `if test -f 'sws.c'; then $(CYGPATH_W) 'sws.c'; else $(CYGPATH_W) '$(srcdir)/sws.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o sws-sws.obj `if test -f 'sws.c'; then $(CYGPATH_W) 'sws.c'; else $(CYGPATH_W) '$(srcdir)/sws.c'; fi`
 
-sws-inet_pton.o: ../../lib/inet_pton.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT sws-inet_pton.o -MD -MP -MF $(DEPDIR)/sws-inet_pton.Tpo -c -o sws-inet_pton.o `test -f '../../lib/inet_pton.c' || echo '$(srcdir)/'`../../lib/inet_pton.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sws-inet_pton.Tpo $(DEPDIR)/sws-inet_pton.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/inet_pton.c' object='sws-inet_pton.o' libtool=no @AMDEPBACKSLASH@
+../../lib/sws-inet_pton.o: ../../lib/inet_pton.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT ../../lib/sws-inet_pton.o -MD -MP -MF ../../lib/$(DEPDIR)/sws-inet_pton.Tpo -c -o ../../lib/sws-inet_pton.o `test -f '../../lib/inet_pton.c' || echo '$(srcdir)/'`../../lib/inet_pton.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sws-inet_pton.Tpo ../../lib/$(DEPDIR)/sws-inet_pton.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/inet_pton.c' object='../../lib/sws-inet_pton.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o sws-inet_pton.o `test -f '../../lib/inet_pton.c' || echo '$(srcdir)/'`../../lib/inet_pton.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o ../../lib/sws-inet_pton.o `test -f '../../lib/inet_pton.c' || echo '$(srcdir)/'`../../lib/inet_pton.c
 
 
-sws-inet_pton.obj: ../../lib/inet_pton.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT sws-inet_pton.obj -MD -MP -MF $(DEPDIR)/sws-inet_pton.Tpo -c -o sws-inet_pton.obj `if test -f '../../lib/inet_pton.c'; then $(CYGPATH_W) '../../lib/inet_pton.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/inet_pton.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/sws-inet_pton.Tpo $(DEPDIR)/sws-inet_pton.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/inet_pton.c' object='sws-inet_pton.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/sws-inet_pton.obj: ../../lib/inet_pton.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT ../../lib/sws-inet_pton.obj -MD -MP -MF ../../lib/$(DEPDIR)/sws-inet_pton.Tpo -c -o ../../lib/sws-inet_pton.obj `if test -f '../../lib/inet_pton.c'; then $(CYGPATH_W) '../../lib/inet_pton.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/inet_pton.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sws-inet_pton.Tpo ../../lib/$(DEPDIR)/sws-inet_pton.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/inet_pton.c' object='../../lib/sws-inet_pton.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o sws-inet_pton.obj `if test -f '../../lib/inet_pton.c'; then $(CYGPATH_W) '../../lib/inet_pton.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/inet_pton.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o ../../lib/sws-inet_pton.obj `if test -f '../../lib/inet_pton.c'; then $(CYGPATH_W) '../../lib/inet_pton.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/inet_pton.c'; fi`
 
 
-tftpd-mprintf.o: ../../lib/mprintf.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT tftpd-mprintf.o -MD -MP -MF $(DEPDIR)/tftpd-mprintf.Tpo -c -o tftpd-mprintf.o `test -f '../../lib/mprintf.c' || echo '$(srcdir)/'`../../lib/mprintf.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/tftpd-mprintf.Tpo $(DEPDIR)/tftpd-mprintf.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/mprintf.c' object='tftpd-mprintf.o' libtool=no @AMDEPBACKSLASH@
+../../lib/tftpd-mprintf.o: ../../lib/mprintf.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT ../../lib/tftpd-mprintf.o -MD -MP -MF ../../lib/$(DEPDIR)/tftpd-mprintf.Tpo -c -o ../../lib/tftpd-mprintf.o `test -f '../../lib/mprintf.c' || echo '$(srcdir)/'`../../lib/mprintf.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/tftpd-mprintf.Tpo ../../lib/$(DEPDIR)/tftpd-mprintf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/mprintf.c' object='../../lib/tftpd-mprintf.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o tftpd-mprintf.o `test -f '../../lib/mprintf.c' || echo '$(srcdir)/'`../../lib/mprintf.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o ../../lib/tftpd-mprintf.o `test -f '../../lib/mprintf.c' || echo '$(srcdir)/'`../../lib/mprintf.c
 
 
-tftpd-mprintf.obj: ../../lib/mprintf.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT tftpd-mprintf.obj -MD -MP -MF $(DEPDIR)/tftpd-mprintf.Tpo -c -o tftpd-mprintf.obj `if test -f '../../lib/mprintf.c'; then $(CYGPATH_W) '../../lib/mprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/mprintf.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/tftpd-mprintf.Tpo $(DEPDIR)/tftpd-mprintf.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/mprintf.c' object='tftpd-mprintf.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/tftpd-mprintf.obj: ../../lib/mprintf.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT ../../lib/tftpd-mprintf.obj -MD -MP -MF ../../lib/$(DEPDIR)/tftpd-mprintf.Tpo -c -o ../../lib/tftpd-mprintf.obj `if test -f '../../lib/mprintf.c'; then $(CYGPATH_W) '../../lib/mprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/mprintf.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/tftpd-mprintf.Tpo ../../lib/$(DEPDIR)/tftpd-mprintf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/mprintf.c' object='../../lib/tftpd-mprintf.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o tftpd-mprintf.obj `if test -f '../../lib/mprintf.c'; then $(CYGPATH_W) '../../lib/mprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/mprintf.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o ../../lib/tftpd-mprintf.obj `if test -f '../../lib/mprintf.c'; then $(CYGPATH_W) '../../lib/mprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/mprintf.c'; fi`
 
 
-tftpd-nonblock.o: ../../lib/nonblock.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT tftpd-nonblock.o -MD -MP -MF $(DEPDIR)/tftpd-nonblock.Tpo -c -o tftpd-nonblock.o `test -f '../../lib/nonblock.c' || echo '$(srcdir)/'`../../lib/nonblock.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/tftpd-nonblock.Tpo $(DEPDIR)/tftpd-nonblock.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/nonblock.c' object='tftpd-nonblock.o' libtool=no @AMDEPBACKSLASH@
+../../lib/tftpd-nonblock.o: ../../lib/nonblock.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT ../../lib/tftpd-nonblock.o -MD -MP -MF ../../lib/$(DEPDIR)/tftpd-nonblock.Tpo -c -o ../../lib/tftpd-nonblock.o `test -f '../../lib/nonblock.c' || echo '$(srcdir)/'`../../lib/nonblock.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/tftpd-nonblock.Tpo ../../lib/$(DEPDIR)/tftpd-nonblock.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/nonblock.c' object='../../lib/tftpd-nonblock.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o tftpd-nonblock.o `test -f '../../lib/nonblock.c' || echo '$(srcdir)/'`../../lib/nonblock.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o ../../lib/tftpd-nonblock.o `test -f '../../lib/nonblock.c' || echo '$(srcdir)/'`../../lib/nonblock.c
 
 
-tftpd-nonblock.obj: ../../lib/nonblock.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT tftpd-nonblock.obj -MD -MP -MF $(DEPDIR)/tftpd-nonblock.Tpo -c -o tftpd-nonblock.obj `if test -f '../../lib/nonblock.c'; then $(CYGPATH_W) '../../lib/nonblock.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/nonblock.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/tftpd-nonblock.Tpo $(DEPDIR)/tftpd-nonblock.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/nonblock.c' object='tftpd-nonblock.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/tftpd-nonblock.obj: ../../lib/nonblock.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT ../../lib/tftpd-nonblock.obj -MD -MP -MF ../../lib/$(DEPDIR)/tftpd-nonblock.Tpo -c -o ../../lib/tftpd-nonblock.obj `if test -f '../../lib/nonblock.c'; then $(CYGPATH_W) '../../lib/nonblock.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/nonblock.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/tftpd-nonblock.Tpo ../../lib/$(DEPDIR)/tftpd-nonblock.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/nonblock.c' object='../../lib/tftpd-nonblock.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o tftpd-nonblock.obj `if test -f '../../lib/nonblock.c'; then $(CYGPATH_W) '../../lib/nonblock.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/nonblock.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o ../../lib/tftpd-nonblock.obj `if test -f '../../lib/nonblock.c'; then $(CYGPATH_W) '../../lib/nonblock.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/nonblock.c'; fi`
 
 
-tftpd-strequal.o: ../../lib/strequal.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT tftpd-strequal.o -MD -MP -MF $(DEPDIR)/tftpd-strequal.Tpo -c -o tftpd-strequal.o `test -f '../../lib/strequal.c' || echo '$(srcdir)/'`../../lib/strequal.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/tftpd-strequal.Tpo $(DEPDIR)/tftpd-strequal.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strequal.c' object='tftpd-strequal.o' libtool=no @AMDEPBACKSLASH@
+../../lib/tftpd-strequal.o: ../../lib/strequal.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT ../../lib/tftpd-strequal.o -MD -MP -MF ../../lib/$(DEPDIR)/tftpd-strequal.Tpo -c -o ../../lib/tftpd-strequal.o `test -f '../../lib/strequal.c' || echo '$(srcdir)/'`../../lib/strequal.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/tftpd-strequal.Tpo ../../lib/$(DEPDIR)/tftpd-strequal.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strequal.c' object='../../lib/tftpd-strequal.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o tftpd-strequal.o `test -f '../../lib/strequal.c' || echo '$(srcdir)/'`../../lib/strequal.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o ../../lib/tftpd-strequal.o `test -f '../../lib/strequal.c' || echo '$(srcdir)/'`../../lib/strequal.c
 
 
-tftpd-strequal.obj: ../../lib/strequal.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT tftpd-strequal.obj -MD -MP -MF $(DEPDIR)/tftpd-strequal.Tpo -c -o tftpd-strequal.obj `if test -f '../../lib/strequal.c'; then $(CYGPATH_W) '../../lib/strequal.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strequal.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/tftpd-strequal.Tpo $(DEPDIR)/tftpd-strequal.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strequal.c' object='tftpd-strequal.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/tftpd-strequal.obj: ../../lib/strequal.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT ../../lib/tftpd-strequal.obj -MD -MP -MF ../../lib/$(DEPDIR)/tftpd-strequal.Tpo -c -o ../../lib/tftpd-strequal.obj `if test -f '../../lib/strequal.c'; then $(CYGPATH_W) '../../lib/strequal.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strequal.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/tftpd-strequal.Tpo ../../lib/$(DEPDIR)/tftpd-strequal.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strequal.c' object='../../lib/tftpd-strequal.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o tftpd-strequal.obj `if test -f '../../lib/strequal.c'; then $(CYGPATH_W) '../../lib/strequal.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strequal.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o ../../lib/tftpd-strequal.obj `if test -f '../../lib/strequal.c'; then $(CYGPATH_W) '../../lib/strequal.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strequal.c'; fi`
 
 
-tftpd-strtoofft.o: ../../lib/strtoofft.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT tftpd-strtoofft.o -MD -MP -MF $(DEPDIR)/tftpd-strtoofft.Tpo -c -o tftpd-strtoofft.o `test -f '../../lib/strtoofft.c' || echo '$(srcdir)/'`../../lib/strtoofft.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/tftpd-strtoofft.Tpo $(DEPDIR)/tftpd-strtoofft.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strtoofft.c' object='tftpd-strtoofft.o' libtool=no @AMDEPBACKSLASH@
+../../lib/tftpd-strtoofft.o: ../../lib/strtoofft.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT ../../lib/tftpd-strtoofft.o -MD -MP -MF ../../lib/$(DEPDIR)/tftpd-strtoofft.Tpo -c -o ../../lib/tftpd-strtoofft.o `test -f '../../lib/strtoofft.c' || echo '$(srcdir)/'`../../lib/strtoofft.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/tftpd-strtoofft.Tpo ../../lib/$(DEPDIR)/tftpd-strtoofft.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strtoofft.c' object='../../lib/tftpd-strtoofft.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o tftpd-strtoofft.o `test -f '../../lib/strtoofft.c' || echo '$(srcdir)/'`../../lib/strtoofft.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o ../../lib/tftpd-strtoofft.o `test -f '../../lib/strtoofft.c' || echo '$(srcdir)/'`../../lib/strtoofft.c
 
 
-tftpd-strtoofft.obj: ../../lib/strtoofft.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT tftpd-strtoofft.obj -MD -MP -MF $(DEPDIR)/tftpd-strtoofft.Tpo -c -o tftpd-strtoofft.obj `if test -f '../../lib/strtoofft.c'; then $(CYGPATH_W) '../../lib/strtoofft.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strtoofft.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/tftpd-strtoofft.Tpo $(DEPDIR)/tftpd-strtoofft.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strtoofft.c' object='tftpd-strtoofft.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/tftpd-strtoofft.obj: ../../lib/strtoofft.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT ../../lib/tftpd-strtoofft.obj -MD -MP -MF ../../lib/$(DEPDIR)/tftpd-strtoofft.Tpo -c -o ../../lib/tftpd-strtoofft.obj `if test -f '../../lib/strtoofft.c'; then $(CYGPATH_W) '../../lib/strtoofft.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strtoofft.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/tftpd-strtoofft.Tpo ../../lib/$(DEPDIR)/tftpd-strtoofft.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/strtoofft.c' object='../../lib/tftpd-strtoofft.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o tftpd-strtoofft.obj `if test -f '../../lib/strtoofft.c'; then $(CYGPATH_W) '../../lib/strtoofft.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strtoofft.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o ../../lib/tftpd-strtoofft.obj `if test -f '../../lib/strtoofft.c'; then $(CYGPATH_W) '../../lib/strtoofft.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/strtoofft.c'; fi`
 
 
-tftpd-timeval.o: ../../lib/timeval.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT tftpd-timeval.o -MD -MP -MF $(DEPDIR)/tftpd-timeval.Tpo -c -o tftpd-timeval.o `test -f '../../lib/timeval.c' || echo '$(srcdir)/'`../../lib/timeval.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/tftpd-timeval.Tpo $(DEPDIR)/tftpd-timeval.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timeval.c' object='tftpd-timeval.o' libtool=no @AMDEPBACKSLASH@
+../../lib/tftpd-timeval.o: ../../lib/timeval.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT ../../lib/tftpd-timeval.o -MD -MP -MF ../../lib/$(DEPDIR)/tftpd-timeval.Tpo -c -o ../../lib/tftpd-timeval.o `test -f '../../lib/timeval.c' || echo '$(srcdir)/'`../../lib/timeval.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/tftpd-timeval.Tpo ../../lib/$(DEPDIR)/tftpd-timeval.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timeval.c' object='../../lib/tftpd-timeval.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o tftpd-timeval.o `test -f '../../lib/timeval.c' || echo '$(srcdir)/'`../../lib/timeval.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o ../../lib/tftpd-timeval.o `test -f '../../lib/timeval.c' || echo '$(srcdir)/'`../../lib/timeval.c
 
 
-tftpd-timeval.obj: ../../lib/timeval.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT tftpd-timeval.obj -MD -MP -MF $(DEPDIR)/tftpd-timeval.Tpo -c -o tftpd-timeval.obj `if test -f '../../lib/timeval.c'; then $(CYGPATH_W) '../../lib/timeval.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timeval.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/tftpd-timeval.Tpo $(DEPDIR)/tftpd-timeval.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timeval.c' object='tftpd-timeval.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/tftpd-timeval.obj: ../../lib/timeval.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT ../../lib/tftpd-timeval.obj -MD -MP -MF ../../lib/$(DEPDIR)/tftpd-timeval.Tpo -c -o ../../lib/tftpd-timeval.obj `if test -f '../../lib/timeval.c'; then $(CYGPATH_W) '../../lib/timeval.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timeval.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/tftpd-timeval.Tpo ../../lib/$(DEPDIR)/tftpd-timeval.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timeval.c' object='../../lib/tftpd-timeval.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o tftpd-timeval.obj `if test -f '../../lib/timeval.c'; then $(CYGPATH_W) '../../lib/timeval.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timeval.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o ../../lib/tftpd-timeval.obj `if test -f '../../lib/timeval.c'; then $(CYGPATH_W) '../../lib/timeval.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timeval.c'; fi`
 
 
-tftpd-warnless.o: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT tftpd-warnless.o -MD -MP -MF $(DEPDIR)/tftpd-warnless.Tpo -c -o tftpd-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/tftpd-warnless.Tpo $(DEPDIR)/tftpd-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='tftpd-warnless.o' libtool=no @AMDEPBACKSLASH@
+../../lib/tftpd-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT ../../lib/tftpd-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/tftpd-warnless.Tpo -c -o ../../lib/tftpd-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/tftpd-warnless.Tpo ../../lib/$(DEPDIR)/tftpd-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/tftpd-warnless.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o tftpd-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o ../../lib/tftpd-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
 
 
-tftpd-warnless.obj: ../../lib/warnless.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT tftpd-warnless.obj -MD -MP -MF $(DEPDIR)/tftpd-warnless.Tpo -c -o tftpd-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/tftpd-warnless.Tpo $(DEPDIR)/tftpd-warnless.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='tftpd-warnless.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/tftpd-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT ../../lib/tftpd-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/tftpd-warnless.Tpo -c -o ../../lib/tftpd-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/tftpd-warnless.Tpo ../../lib/$(DEPDIR)/tftpd-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/tftpd-warnless.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o tftpd-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o ../../lib/tftpd-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
 tftpd-getpart.o: getpart.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT tftpd-getpart.o -MD -MP -MF $(DEPDIR)/tftpd-getpart.Tpo -c -o tftpd-getpart.o `test -f 'getpart.c' || echo '$(srcdir)/'`getpart.c
 
 tftpd-getpart.o: getpart.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT tftpd-getpart.o -MD -MP -MF $(DEPDIR)/tftpd-getpart.Tpo -c -o tftpd-getpart.o `test -f 'getpart.c' || echo '$(srcdir)/'`getpart.c
@@ -1799,33 +1955,33 @@ tftpd-getpart.obj: getpart.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o tftpd-getpart.obj `if test -f 'getpart.c'; then $(CYGPATH_W) 'getpart.c'; else $(CYGPATH_W) '$(srcdir)/getpart.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o tftpd-getpart.obj `if test -f 'getpart.c'; then $(CYGPATH_W) 'getpart.c'; else $(CYGPATH_W) '$(srcdir)/getpart.c'; fi`
 
-tftpd-base64.o: ../../lib/base64.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT tftpd-base64.o -MD -MP -MF $(DEPDIR)/tftpd-base64.Tpo -c -o tftpd-base64.o `test -f '../../lib/base64.c' || echo '$(srcdir)/'`../../lib/base64.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/tftpd-base64.Tpo $(DEPDIR)/tftpd-base64.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/base64.c' object='tftpd-base64.o' libtool=no @AMDEPBACKSLASH@
+../../lib/tftpd-base64.o: ../../lib/base64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT ../../lib/tftpd-base64.o -MD -MP -MF ../../lib/$(DEPDIR)/tftpd-base64.Tpo -c -o ../../lib/tftpd-base64.o `test -f '../../lib/base64.c' || echo '$(srcdir)/'`../../lib/base64.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/tftpd-base64.Tpo ../../lib/$(DEPDIR)/tftpd-base64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/base64.c' object='../../lib/tftpd-base64.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o tftpd-base64.o `test -f '../../lib/base64.c' || echo '$(srcdir)/'`../../lib/base64.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o ../../lib/tftpd-base64.o `test -f '../../lib/base64.c' || echo '$(srcdir)/'`../../lib/base64.c
 
 
-tftpd-base64.obj: ../../lib/base64.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT tftpd-base64.obj -MD -MP -MF $(DEPDIR)/tftpd-base64.Tpo -c -o tftpd-base64.obj `if test -f '../../lib/base64.c'; then $(CYGPATH_W) '../../lib/base64.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/base64.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/tftpd-base64.Tpo $(DEPDIR)/tftpd-base64.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/base64.c' object='tftpd-base64.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/tftpd-base64.obj: ../../lib/base64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT ../../lib/tftpd-base64.obj -MD -MP -MF ../../lib/$(DEPDIR)/tftpd-base64.Tpo -c -o ../../lib/tftpd-base64.obj `if test -f '../../lib/base64.c'; then $(CYGPATH_W) '../../lib/base64.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/base64.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/tftpd-base64.Tpo ../../lib/$(DEPDIR)/tftpd-base64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/base64.c' object='../../lib/tftpd-base64.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o tftpd-base64.obj `if test -f '../../lib/base64.c'; then $(CYGPATH_W) '../../lib/base64.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/base64.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o ../../lib/tftpd-base64.obj `if test -f '../../lib/base64.c'; then $(CYGPATH_W) '../../lib/base64.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/base64.c'; fi`
 
 
-tftpd-memdebug.o: ../../lib/memdebug.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT tftpd-memdebug.o -MD -MP -MF $(DEPDIR)/tftpd-memdebug.Tpo -c -o tftpd-memdebug.o `test -f '../../lib/memdebug.c' || echo '$(srcdir)/'`../../lib/memdebug.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/tftpd-memdebug.Tpo $(DEPDIR)/tftpd-memdebug.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/memdebug.c' object='tftpd-memdebug.o' libtool=no @AMDEPBACKSLASH@
+../../lib/tftpd-memdebug.o: ../../lib/memdebug.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT ../../lib/tftpd-memdebug.o -MD -MP -MF ../../lib/$(DEPDIR)/tftpd-memdebug.Tpo -c -o ../../lib/tftpd-memdebug.o `test -f '../../lib/memdebug.c' || echo '$(srcdir)/'`../../lib/memdebug.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/tftpd-memdebug.Tpo ../../lib/$(DEPDIR)/tftpd-memdebug.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/memdebug.c' object='../../lib/tftpd-memdebug.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o tftpd-memdebug.o `test -f '../../lib/memdebug.c' || echo '$(srcdir)/'`../../lib/memdebug.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o ../../lib/tftpd-memdebug.o `test -f '../../lib/memdebug.c' || echo '$(srcdir)/'`../../lib/memdebug.c
 
 
-tftpd-memdebug.obj: ../../lib/memdebug.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT tftpd-memdebug.obj -MD -MP -MF $(DEPDIR)/tftpd-memdebug.Tpo -c -o tftpd-memdebug.obj `if test -f '../../lib/memdebug.c'; then $(CYGPATH_W) '../../lib/memdebug.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/memdebug.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/tftpd-memdebug.Tpo $(DEPDIR)/tftpd-memdebug.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/memdebug.c' object='tftpd-memdebug.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/tftpd-memdebug.obj: ../../lib/memdebug.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT ../../lib/tftpd-memdebug.obj -MD -MP -MF ../../lib/$(DEPDIR)/tftpd-memdebug.Tpo -c -o ../../lib/tftpd-memdebug.obj `if test -f '../../lib/memdebug.c'; then $(CYGPATH_W) '../../lib/memdebug.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/memdebug.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/tftpd-memdebug.Tpo ../../lib/$(DEPDIR)/tftpd-memdebug.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/memdebug.c' object='../../lib/tftpd-memdebug.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o tftpd-memdebug.obj `if test -f '../../lib/memdebug.c'; then $(CYGPATH_W) '../../lib/memdebug.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/memdebug.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o ../../lib/tftpd-memdebug.obj `if test -f '../../lib/memdebug.c'; then $(CYGPATH_W) '../../lib/memdebug.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/memdebug.c'; fi`
 
 tftpd-util.o: util.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT tftpd-util.o -MD -MP -MF $(DEPDIR)/tftpd-util.Tpo -c -o tftpd-util.o `test -f 'util.c' || echo '$(srcdir)/'`util.c
 
 tftpd-util.o: util.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT tftpd-util.o -MD -MP -MF $(DEPDIR)/tftpd-util.Tpo -c -o tftpd-util.o `test -f 'util.c' || echo '$(srcdir)/'`util.c
@@ -1973,6 +2129,8 @@ clean-generic:
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
        -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
        -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+       -rm -f ../../lib/$(DEPDIR)/$(am__dirstamp)
+       -rm -f ../../lib/$(am__dirstamp)
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
@@ -1983,7 +2141,7 @@ clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
        mostlyclean-am
 
 distclean: distclean-am
        mostlyclean-am
 
 distclean: distclean-am
-       -rm -rf ./$(DEPDIR)
+       -rm -rf ../../lib/$(DEPDIR) ./$(DEPDIR)
        -rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
        distclean-tags
        -rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
        distclean-tags
@@ -2029,7 +2187,7 @@ install-ps-am:
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
-       -rm -rf ./$(DEPDIR)
+       -rm -rf ../../lib/$(DEPDIR) ./$(DEPDIR)
        -rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
        -rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
index b00e852..fb86596 100644 (file)
@@ -152,46 +152,27 @@ static int appenddata(char  **dst_buf,   /* dest buffer */
                       char   *src_buf,   /* source buffer */
                       int     src_b64)   /* != 0 if source is base64 encoded */
 {
                       char   *src_buf,   /* source buffer */
                       int     src_b64)   /* != 0 if source is base64 encoded */
 {
-  size_t need_alloc, src_len;
-  union {
-    unsigned char *as_uchar;
-             char *as_char;
-  } buf64;
+  size_t need_alloc = 0;
+  size_t src_len = strlen(src_buf);
 
 
-  src_len = strlen(src_buf);
   if(!src_len)
     return GPE_OK;
 
   if(!src_len)
     return GPE_OK;
 
-  buf64.as_char = NULL;
+  need_alloc = src_len + *dst_len + 1;
 
   if(src_b64) {
 
   if(src_b64) {
-    /* base64 decode the given buffer */
-    int error = (int) Curl_base64_decode(src_buf, &buf64.as_uchar, &src_len);
-    if(error)
-      return GPE_OUT_OF_MEMORY;
-    src_buf = buf64.as_char;
-    if(!src_len || !src_buf) {
-      /*
-      ** currently there is no way to tell apart an OOM condition in
-      ** Curl_base64_decode() from zero length decoded data. For now,
-      ** let's just assume it is an OOM condition, currently we have
-      ** no input for this function that decodes to zero length data.
-      */
-      if(buf64.as_char)
-        free(buf64.as_char);
-      return GPE_OUT_OF_MEMORY;
-    }
-  }
+    if(src_buf[src_len - 1] == '\r')
+      src_len--;
 
 
-  need_alloc = src_len + *dst_len + 1;
+    if(src_buf[src_len - 1] == '\n')
+      src_len--;
+  }
 
   /* enlarge destination buffer if required */
   if(need_alloc > *dst_alloc) {
     size_t newsize = need_alloc * 2;
     char *newptr = realloc(*dst_buf, newsize);
     if(!newptr) {
 
   /* enlarge destination buffer if required */
   if(need_alloc > *dst_alloc) {
     size_t newsize = need_alloc * 2;
     char *newptr = realloc(*dst_buf, newsize);
     if(!newptr) {
-      if(buf64.as_char)
-        free(buf64.as_char);
       return GPE_OUT_OF_MEMORY;
     }
     *dst_alloc = newsize;
       return GPE_OUT_OF_MEMORY;
     }
     *dst_alloc = newsize;
@@ -203,8 +184,43 @@ static int appenddata(char  **dst_buf,   /* dest buffer */
   *dst_len += src_len;
   *(*dst_buf + *dst_len) = '\0';
 
   *dst_len += src_len;
   *(*dst_buf + *dst_len) = '\0';
 
-  if(buf64.as_char)
-    free(buf64.as_char);
+  return GPE_OK;
+}
+
+static int decodedata(char  **buf,   /* dest buffer */
+                      size_t *len)   /* dest buffer data length */
+{
+  int error = 0;
+  unsigned char *buf64 = NULL;
+  size_t src_len = 0;
+
+  if(!*len)
+    return GPE_OK;
+
+  /* base64 decode the given buffer */
+  error = (int) Curl_base64_decode(*buf, &buf64, &src_len);
+  if(error)
+    return GPE_OUT_OF_MEMORY;
+
+  if(!src_len) {
+    /*
+    ** currently there is no way to tell apart an OOM condition in
+    ** Curl_base64_decode() from zero length decoded data. For now,
+    ** let's just assume it is an OOM condition, currently we have
+    ** no input for this function that decodes to zero length data.
+    */
+    if(buf64)
+      free(buf64);
+
+    return GPE_OUT_OF_MEMORY;
+  }
+
+  /* memcpy to support binary blobs */
+  memcpy(*buf, buf64, src_len);
+  *len = src_len;
+  *(*buf + src_len) = '\0';
+
+  free(buf64);
 
   return GPE_OK;
 }
 
   return GPE_OK;
 }
@@ -308,6 +324,13 @@ int getpart(char **outbuf, size_t *outlen,
         if(in_wanted_part) {
           /* end of wanted part */
           in_wanted_part = 0;
         if(in_wanted_part) {
           /* end of wanted part */
           in_wanted_part = 0;
+
+          /* Do we need to base64 decode the data? */
+          if(base64) {
+            error = decodedata(outbuf, outlen);
+            if(error)
+              return error;
+          }
           break;
         }
       }
           break;
         }
       }
@@ -318,6 +341,13 @@ int getpart(char **outbuf, size_t *outlen,
         if(in_wanted_part) {
           /* end of wanted part */
           in_wanted_part = 0;
         if(in_wanted_part) {
           /* end of wanted part */
           in_wanted_part = 0;
+
+          /* Do we need to base64 decode the data? */
+          if(base64) {
+            error = decodedata(outbuf, outlen);
+            if(error)
+              return error;
+          }
           break;
         }
       }
           break;
         }
       }
index d060988..39849e7 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -120,7 +120,7 @@ int main(int argc, char *argv[])
     /* Check that the system has IPv6 enabled before checking the resolver */
     curl_socket_t s = socket(PF_INET6, SOCK_DGRAM, 0);
     if(s == CURL_SOCKET_BAD)
     /* Check that the system has IPv6 enabled before checking the resolver */
     curl_socket_t s = socket(PF_INET6, SOCK_DGRAM, 0);
     if(s == CURL_SOCKET_BAD)
-      /* an ipv6 address was requested and we can't get/use one */
+      /* an IPv6 address was requested and we can't get/use one */
       rc = -1;
     else {
       sclose(s);
       rc = -1;
     else {
       sclose(s);
@@ -135,9 +135,11 @@ int main(int argc, char *argv[])
       hints.ai_family = PF_INET6;
       hints.ai_socktype = SOCK_STREAM;
       hints.ai_flags = AI_CANONNAME;
       hints.ai_family = PF_INET6;
       hints.ai_socktype = SOCK_STREAM;
       hints.ai_flags = AI_CANONNAME;
-      /* Use parenthesis around function to stop it from being replaced by
-      the macro in memdebug.h */
+      /* Use parenthesis around functions to stop them from being replaced by
+         the macro in memdebug.h */
       rc = (getaddrinfo)(host, "80", &hints, &ai);
       rc = (getaddrinfo)(host, "80", &hints, &ai);
+      if (rc == 0)
+        (freeaddrinfo)(ai);
     }
 
 #else
     }
 
 #else
index 6a17fe0..3f4cd67 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  ***************************************************************************/
 #include "server_setup.h"
 
  ***************************************************************************/
 #include "server_setup.h"
 
+#ifdef HAVE_SYS_UN_H
+#include <sys/un.h> /* for sockaddr_un */
+#endif
+
 typedef union {
   struct sockaddr      sa;
   struct sockaddr_in   sa4;
 #ifdef ENABLE_IPV6
   struct sockaddr_in6  sa6;
 #endif
 typedef union {
   struct sockaddr      sa;
   struct sockaddr_in   sa4;
 #ifdef ENABLE_IPV6
   struct sockaddr_in6  sa6;
 #endif
+#ifdef USE_UNIX_SOCKETS
+  struct sockaddr_un   sau;
+#endif
 } srvr_sockaddr_union_t;
 
 #endif /* HEADER_CURL_SERVER_SOCKADDR_H */
 } srvr_sockaddr_union_t;
 
 #endif /* HEADER_CURL_SERVER_SOCKADDR_H */
index d924331..a4496e0 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -23,7 +23,7 @@
 
 /* Purpose
  *
 
 /* Purpose
  *
- * 1. Accept a TCP connection on a custom port (ipv4 or ipv6), or connect
+ * 1. Accept a TCP connection on a custom port (IPv4 or IPv6), or connect
  *    to a given (localhost) port.
  *
  * 2. Get commands on STDIN. Pass data on to the TCP stream.
  *    to a given (localhost) port.
  *
  * 2. Get commands on STDIN. Pass data on to the TCP stream.
@@ -92,9 +92,6 @@
 #ifdef HAVE_NETDB_H
 #include <netdb.h>
 #endif
 #ifdef HAVE_NETDB_H
 #include <netdb.h>
 #endif
-#ifdef USE_WINSOCK
-#include <conio.h>  /* for _kbhit() used in select_ws() */
-#endif
 
 #define ENABLE_CURLX_PRINTF
 /* make the curlx header define all printf() functions to use the curlx_*
 
 #define ENABLE_CURLX_PRINTF
 /* make the curlx header define all printf() functions to use the curlx_*
@@ -288,10 +285,10 @@ static ssize_t read_wincon(int fd, void *buf, size_t count)
   }
 
   if(GetConsoleMode(handle, &mode)) {
   }
 
   if(GetConsoleMode(handle, &mode)) {
-    success = ReadConsole(handle, buf, count, &rcount, NULL);
+    success = ReadConsole(handle, buf, curlx_uztoul(count), &rcount, NULL);
   }
   else {
   }
   else {
-    success = ReadFile(handle, buf, count, &rcount, NULL);
+    success = ReadFile(handle, buf, curlx_uztoul(count), &rcount, NULL);
   }
   if(success) {
     return rcount;
   }
   if(success) {
     return rcount;
@@ -300,6 +297,7 @@ static ssize_t read_wincon(int fd, void *buf, size_t count)
   errno = GetLastError();
   return -1;
 }
   errno = GetLastError();
   return -1;
 }
+#undef  read
 #define read(a,b,c) read_wincon(a,b,c)
 
 /*
 #define read(a,b,c) read_wincon(a,b,c)
 
 /*
@@ -322,10 +320,10 @@ static ssize_t write_wincon(int fd, const void *buf, size_t count)
   }
 
   if(GetConsoleMode(handle, &mode)) {
   }
 
   if(GetConsoleMode(handle, &mode)) {
-    success = WriteConsole(handle, buf, count, &wcount, NULL);
+    success = WriteConsole(handle, buf, curlx_uztoul(count), &wcount, NULL);
   }
   else {
   }
   else {
-    success = WriteFile(handle, buf, count, &wcount, NULL);
+    success = WriteFile(handle, buf, curlx_uztoul(count), &wcount, NULL);
   }
   if(success) {
     return wcount;
   }
   if(success) {
     return wcount;
@@ -334,6 +332,7 @@ static ssize_t write_wincon(int fd, const void *buf, size_t count)
   errno = GetLastError();
   return -1;
 }
   errno = GetLastError();
   return -1;
 }
+#undef  write
 #define write(a,b,c) write_wincon(a,b,c)
 #endif
 
 #define write(a,b,c) write_wincon(a,b,c)
 #endif
 
@@ -507,25 +506,185 @@ static void lograw(unsigned char *buffer, ssize_t len)
  * to re-create a select() function with support for other handle types.
  *
  * select() function with support for WINSOCK2 sockets and all
  * to re-create a select() function with support for other handle types.
  *
  * select() function with support for WINSOCK2 sockets and all
- * other handle types supported by WaitForMultipleObjectsEx().
- *
- * TODO: Differentiate between read/write/except for non-SOCKET handles.
+ * other handle types supported by WaitForMultipleObjectsEx() as
+ * well as disk files, anonymous and names pipes, and character input.
  *
  * http://msdn.microsoft.com/en-us/library/windows/desktop/ms687028.aspx
  * http://msdn.microsoft.com/en-us/library/windows/desktop/ms741572.aspx
  */
  *
  * http://msdn.microsoft.com/en-us/library/windows/desktop/ms687028.aspx
  * http://msdn.microsoft.com/en-us/library/windows/desktop/ms741572.aspx
  */
+struct select_ws_wait_data {
+  HANDLE handle; /* actual handle to wait for during select */
+  HANDLE event;  /* internal event to abort waiting thread */
+};
+static DWORD WINAPI select_ws_wait_thread(LPVOID lpParameter)
+{
+  struct select_ws_wait_data *data;
+  HANDLE handle, handles[2];
+  INPUT_RECORD inputrecord;
+  LARGE_INTEGER size, pos;
+  DWORD type, length;
+
+  /* retrieve handles from internal structure */
+  data = (struct select_ws_wait_data *) lpParameter;
+  if(data) {
+    handle = data->handle;
+    handles[0] = data->event;
+    handles[1] = handle;
+    free(data);
+  }
+  else
+    return -1;
+
+  /* retrieve the type of file to wait on */
+  type = GetFileType(handle);
+  switch(type) {
+    case FILE_TYPE_DISK:
+       /* The handle represents a file on disk, this means:
+        * - WaitForMultipleObjectsEx will always be signalled for it.
+        * - comparison of current position in file and total size of
+        *   the file can be used to check if we reached the end yet.
+        *
+        * Approach: Loop till either the internal event is signalled
+        *           or if the end of the file has already been reached.
+        */
+      while(WaitForMultipleObjectsEx(2, handles, FALSE, INFINITE, FALSE)
+            == WAIT_OBJECT_0 + 1) {
+        /* get total size of file */
+        length = 0;
+        size.QuadPart = 0;
+        size.LowPart = GetFileSize(handle, &length);
+        if((size.LowPart != INVALID_FILE_SIZE) ||
+           (GetLastError() == NO_ERROR)) {
+          size.HighPart = length;
+          /* get the current position within the file */
+          pos.QuadPart = 0;
+          pos.LowPart = SetFilePointer(handle, 0, &pos.HighPart, FILE_CURRENT);
+          if((pos.LowPart != INVALID_SET_FILE_POINTER) ||
+             (GetLastError() == NO_ERROR)) {
+            /* compare position with size, abort if not equal */
+            if(size.QuadPart == pos.QuadPart) {
+              /* sleep and continue waiting */
+              SleepEx(0, FALSE);
+              continue;
+            }
+          }
+        }
+        /* there is some data available, stop waiting */
+        break;
+      }
+      break;
+
+    case FILE_TYPE_CHAR:
+       /* The handle represents a character input, this means:
+        * - WaitForMultipleObjectsEx will be signalled on any kind of input,
+        *   including mouse and window size events we do not care about.
+        *
+        * Approach: Loop till either the internal event is signalled
+        *           or we get signalled for an actual key-event.
+        */
+      while(WaitForMultipleObjectsEx(2, handles, FALSE, INFINITE, FALSE)
+            == WAIT_OBJECT_0 + 1) {
+        /* check if this is an actual console handle */
+        length = 0;
+        if(GetConsoleMode(handle, &length)) {
+          /* retrieve an event from the console buffer */
+          length = 0;
+          if(PeekConsoleInput(handle, &inputrecord, 1, &length)) {
+            /* check if the event is not an actual key-event */
+            if(length == 1 && inputrecord.EventType != KEY_EVENT) {
+              /* purge the non-key-event and continue waiting */
+              ReadConsoleInput(handle, &inputrecord, 1, &length);
+              continue;
+            }
+          }
+        }
+        /* there is some data available, stop waiting */
+        break;
+      }
+      break;
+
+    case FILE_TYPE_PIPE:
+       /* The handle represents an anonymous or named pipe, this means:
+        * - WaitForMultipleObjectsEx will always be signalled for it.
+        * - peek into the pipe and retrieve the amount of data available.
+        *
+        * Approach: Loop till either the internal event is signalled
+        *           or there is data in the pipe available for reading.
+        */
+      while(WaitForMultipleObjectsEx(2, handles, FALSE, INFINITE, FALSE)
+            == WAIT_OBJECT_0 + 1) {
+        /* peek into the pipe and retrieve the amount of data available */
+        length = 0;
+        if(PeekNamedPipe(handle, NULL, 0, NULL, &length, NULL)) {
+          /* if there is no data available, sleep and continue waiting */
+          if(length == 0) {
+            SleepEx(0, FALSE);
+            continue;
+          }
+        }
+        else {
+          /* if the pipe has been closed, sleep and continue waiting */
+          if(GetLastError() == ERROR_BROKEN_PIPE) {
+            SleepEx(0, FALSE);
+            continue;
+          }
+        }
+        /* there is some data available, stop waiting */
+        break;
+      }
+      break;
+
+    default:
+      /* The handle has an unknown type, try to wait on it */
+      WaitForMultipleObjectsEx(2, handles, FALSE, INFINITE, FALSE);
+      break;
+  }
+
+  return 0;
+}
+static HANDLE select_ws_wait(HANDLE handle, HANDLE event)
+{
+  struct select_ws_wait_data *data;
+  HANDLE thread = NULL;
+
+  /* allocate internal waiting data structure */
+  data = malloc(sizeof(struct select_ws_wait_data));
+  if(data) {
+    data->handle = handle;
+    data->event = event;
+
+    /* launch waiting thread */
+    thread = CreateThread(NULL, 0,
+                          &select_ws_wait_thread,
+                          data, 0, NULL);
+
+    /* free data if thread failed to launch */
+    if(!thread) {
+      free(data);
+    }
+  }
+
+  return thread;
+}
+struct select_ws_data {
+  curl_socket_t fd;      /* the original input handle   (indexed by fds) */
+  curl_socket_t wsasock; /* the internal socket handle  (indexed by wsa) */
+  WSAEVENT wsaevent;     /* the internal WINSOCK2 event (indexed by wsa) */
+  HANDLE thread;         /* the internal threads handle (indexed by thd) */
+};
 static int select_ws(int nfds, fd_set *readfds, fd_set *writefds,
                      fd_set *exceptfds, struct timeval *timeout)
 {
 static int select_ws(int nfds, fd_set *readfds, fd_set *writefds,
                      fd_set *exceptfds, struct timeval *timeout)
 {
-  long networkevents;
-  DWORD milliseconds, wait, idx, mode, avail, events, inputs;
-  WSAEVENT wsaevent, *wsaevents;
+  DWORD milliseconds, wait, idx;
   WSANETWORKEVENTS wsanetevents;
   WSANETWORKEVENTS wsanetevents;
-  INPUT_RECORD *inputrecords;
+  struct select_ws_data *data;
   HANDLE handle, *handles;
   HANDLE handle, *handles;
-  curl_socket_t sock, *fdarr, *wsasocks;
+  curl_socket_t sock;
+  long networkevents;
+  WSAEVENT wsaevent;
   int error, fds;
   int error, fds;
-  DWORD nfd = 0, wsa = 0;
+  HANDLE waitevent = NULL;
+  DWORD nfd = 0, thd = 0, wsa = 0;
   int ret = 0;
 
   /* check if the input value is valid */
   int ret = 0;
 
   /* check if the input value is valid */
@@ -540,33 +699,31 @@ static int select_ws(int nfds, fd_set *readfds, fd_set *writefds,
     return 0;
   }
 
     return 0;
   }
 
-  /* allocate internal array for the original input handles */
-  fdarr = malloc(nfds * sizeof(curl_socket_t));
-  if(fdarr == NULL) {
+  /* create internal event to signal waiting threads */
+  waitevent = CreateEvent(NULL, TRUE, FALSE, NULL);
+  if(!waitevent) {
     errno = ENOMEM;
     return -1;
   }
 
     errno = ENOMEM;
     return -1;
   }
 
-  /* allocate internal array for the internal event handles */
-  handles = malloc(nfds * sizeof(HANDLE));
-  if(handles == NULL) {
+  /* allocate internal array for the internal data */
+  data = malloc(nfds * sizeof(struct select_ws_data));
+  if(data == NULL) {
     errno = ENOMEM;
     return -1;
   }
 
     errno = ENOMEM;
     return -1;
   }
 
-  /* allocate internal array for the internal socket handles */
-  wsasocks = malloc(nfds * sizeof(curl_socket_t));
-  if(wsasocks == NULL) {
+  /* allocate internal array for the internal event handles */
+  handles = malloc(nfds * sizeof(HANDLE));
+  if(handles == NULL) {
+    free(data);
     errno = ENOMEM;
     return -1;
   }
 
     errno = ENOMEM;
     return -1;
   }
 
-  /* allocate internal array for the internal WINSOCK2 events */
-  wsaevents = malloc(nfds * sizeof(WSAEVENT));
-  if(wsaevents == NULL) {
-    errno = ENOMEM;
-    return -1;
-  }
+  /* clear internal arrays */
+  memset(data, 0, nfds * sizeof(struct select_ws_data));
+  memset(handles, 0, nfds * sizeof(HANDLE));
 
   /* loop over the handles in the input descriptor sets */
   for(fds = 0; fds < nfds; fds++) {
 
   /* loop over the handles in the input descriptor sets */
   for(fds = 0; fds < nfds; fds++) {
@@ -584,9 +741,13 @@ static int select_ws(int nfds, fd_set *readfds, fd_set *writefds,
 
     /* only wait for events for which we actually care */
     if(networkevents) {
 
     /* only wait for events for which we actually care */
     if(networkevents) {
-      fdarr[nfd] = curlx_sitosk(fds);
+      data[nfd].fd = curlx_sitosk(fds);
       if(fds == fileno(stdin)) {
       if(fds == fileno(stdin)) {
-        handles[nfd] = GetStdHandle(STD_INPUT_HANDLE);
+        handle = GetStdHandle(STD_INPUT_HANDLE);
+        handle = select_ws_wait(handle, waitevent);
+        handles[nfd] = handle;
+        data[thd].thread = handle;
+        thd++;
       }
       else if(fds == fileno(stdout)) {
         handles[nfd] = GetStdHandle(STD_OUTPUT_HANDLE);
       }
       else if(fds == fileno(stdout)) {
         handles[nfd] = GetStdHandle(STD_OUTPUT_HANDLE);
@@ -599,14 +760,19 @@ static int select_ws(int nfds, fd_set *readfds, fd_set *writefds,
         if(wsaevent != WSA_INVALID_EVENT) {
           error = WSAEventSelect(fds, wsaevent, networkevents);
           if(error != SOCKET_ERROR) {
         if(wsaevent != WSA_INVALID_EVENT) {
           error = WSAEventSelect(fds, wsaevent, networkevents);
           if(error != SOCKET_ERROR) {
-            handles[nfd] = wsaevent;
-            wsasocks[wsa] = curlx_sitosk(fds);
-            wsaevents[wsa] = wsaevent;
+            handle = (HANDLE) wsaevent;
+            handles[nfd] = handle;
+            data[wsa].wsasock = curlx_sitosk(fds);
+            data[wsa].wsaevent = wsaevent;
             wsa++;
           }
           else {
             wsa++;
           }
           else {
-            handles[nfd] = (HANDLE) curlx_sitosk(fds);
             WSACloseEvent(wsaevent);
             WSACloseEvent(wsaevent);
+            handle = (HANDLE) curlx_sitosk(fds);
+            handle = select_ws_wait(handle, waitevent);
+            handles[nfd] = handle;
+            data[thd].thread = handle;
+            thd++;
           }
         }
       }
           }
         }
       }
@@ -625,55 +791,20 @@ static int select_ws(int nfds, fd_set *readfds, fd_set *writefds,
   /* wait for one of the internal handles to trigger */
   wait = WaitForMultipleObjectsEx(nfd, handles, FALSE, milliseconds, FALSE);
 
   /* wait for one of the internal handles to trigger */
   wait = WaitForMultipleObjectsEx(nfd, handles, FALSE, milliseconds, FALSE);
 
+  /* signal the event handle for the waiting threads */
+  SetEvent(waitevent);
+
   /* loop over the internal handles returned in the descriptors */
   for(idx = 0; idx < nfd; idx++) {
     handle = handles[idx];
   /* loop over the internal handles returned in the descriptors */
   for(idx = 0; idx < nfd; idx++) {
     handle = handles[idx];
-    sock = fdarr[idx];
+    sock = data[idx].fd;
     fds = curlx_sktosi(sock);
 
     /* check if the current internal handle was triggered */
     if(wait != WAIT_FAILED && (wait - WAIT_OBJECT_0) <= idx &&
        WaitForSingleObjectEx(handle, 0, FALSE) == WAIT_OBJECT_0) {
     fds = curlx_sktosi(sock);
 
     /* check if the current internal handle was triggered */
     if(wait != WAIT_FAILED && (wait - WAIT_OBJECT_0) <= idx &&
        WaitForSingleObjectEx(handle, 0, FALSE) == WAIT_OBJECT_0) {
-      /* try to handle the event with STD* handle functions */
+      /* first handle stdin, stdout and stderr */
       if(fds == fileno(stdin)) {
       if(fds == fileno(stdin)) {
-        /* check if there is no data in the input buffer */
-        if(!stdin->_cnt) {
-          /* check if we are getting data from a PIPE */
-          if(!GetConsoleMode(handle, &mode)) {
-            /* check if there is no data from PIPE input */
-            if(!PeekNamedPipe(handle, NULL, 0, NULL, &avail, NULL))
-              avail = 0;
-            if(!avail) {
-              FD_CLR(sock, readfds);
-              /* reduce CPU load */
-              Sleep(10);
-            }
-          } /* check if there is no data from keyboard input */
-          else if (!_kbhit()) {
-            /* check if there are INPUT_RECORDs in the input buffer */
-            if(GetNumberOfConsoleInputEvents(handle, &events)) {
-              if(events > 0) {
-                /* remove INPUT_RECORDs from the input buffer */
-                inputrecords = (INPUT_RECORD*)malloc(events *
-                                                     sizeof(INPUT_RECORD));
-                if(inputrecords) {
-                  if(!ReadConsoleInput(handle, inputrecords,
-                                       events, &inputs))
-                    inputs = 0;
-                  free(inputrecords);
-                }
-
-                /* check if we got all inputs, otherwise clear buffer */
-                if(events != inputs)
-                  FlushConsoleInputBuffer(handle);
-              }
-            }
-
-            /* remove from descriptor set since there is no real data */
-            FD_CLR(sock, readfds);
-          }
-        }
-
         /* stdin is never ready for write or exceptional */
         FD_CLR(sock, writefds);
         FD_CLR(sock, exceptfds);
         /* stdin is never ready for write or exceptional */
         FD_CLR(sock, writefds);
         FD_CLR(sock, exceptfds);
@@ -685,6 +816,7 @@ static int select_ws(int nfds, fd_set *readfds, fd_set *writefds,
       }
       else {
         /* try to handle the event with the WINSOCK2 functions */
       }
       else {
         /* try to handle the event with the WINSOCK2 functions */
+        wsanetevents.lNetworkEvents = 0;
         error = WSAEnumNetworkEvents(fds, handle, &wsanetevents);
         if(error != SOCKET_ERROR) {
           /* remove from descriptor set if not ready for read/accept/close */
         error = WSAEnumNetworkEvents(fds, handle, &wsanetevents);
         if(error != SOCKET_ERROR) {
           /* remove from descriptor set if not ready for read/accept/close */
@@ -725,14 +857,19 @@ static int select_ws(int nfds, fd_set *readfds, fd_set *writefds,
   }
 
   for(idx = 0; idx < wsa; idx++) {
   }
 
   for(idx = 0; idx < wsa; idx++) {
-    WSAEventSelect(wsasocks[idx], NULL, 0);
-    WSACloseEvent(wsaevents[idx]);
+    WSAEventSelect(data[idx].wsasock, NULL, 0);
+    WSACloseEvent(data[idx].wsaevent);
   }
 
   }
 
-  free(wsaevents);
-  free(wsasocks);
+  for(idx = 0; idx < thd; idx++) {
+    WaitForSingleObject(data[idx].thread, INFINITE);
+    CloseHandle(data[idx].thread);
+  }
+
+  CloseHandle(waitevent);
+
   free(handles);
   free(handles);
-  free(fdarr);
+  free(data);
 
   return ret;
 }
 
   return ret;
 }
index 38658cb..8cd30c5 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
 #define ERANGE  34 /* errno.h value */
 #endif
 
 #define ERANGE  34 /* errno.h value */
 #endif
 
+static enum {
+  socket_domain_inet = AF_INET
 #ifdef ENABLE_IPV6
 #ifdef ENABLE_IPV6
-static bool use_ipv6 = FALSE;
+  , socket_domain_inet6 = AF_INET6
 #endif
 #endif
+#ifdef USE_UNIX_SOCKETS
+  , socket_domain_unix = AF_UNIX
+#endif
+} socket_domain = AF_INET;
 static bool use_gopher = FALSE;
 static bool use_gopher = FALSE;
-static const char *ipv_inuse = "IPv4";
 static int serverlogslocked = 0;
 static bool is_proxy = FALSE;
 
 static int serverlogslocked = 0;
 static bool is_proxy = FALSE;
 
@@ -114,6 +119,8 @@ struct httprequest {
   bool pipelining;   /* true if request is pipelined */
   int callcount;  /* times ProcessRequest() gets called */
   bool connmon;   /* monitor the state of the connection, log disconnects */
   bool pipelining;   /* true if request is pipelined */
   int callcount;  /* times ProcessRequest() gets called */
   bool connmon;   /* monitor the state of the connection, log disconnects */
+  bool upgrade;   /* test case allows upgrade to http2 */
+  bool upgrade_request; /* upgrade request found and allowed */
   int done_processing;
 };
 
   int done_processing;
 };
 
@@ -164,6 +171,9 @@ const char *serverlogfile = DEFAULT_LOGFILE;
    proper point - like with NTLM */
 #define CMD_CONNECTIONMONITOR "connection-monitor"
 
    proper point - like with NTLM */
 #define CMD_CONNECTIONMONITOR "connection-monitor"
 
+/* upgrade to http2 */
+#define CMD_UPGRADE "upgrade"
+
 #define END_OF_HEADERS "\r\n\r\n"
 
 enum {
 #define END_OF_HEADERS "\r\n\r\n"
 
 enum {
@@ -319,6 +329,21 @@ static void restore_signal_handlers(void)
 #endif
 }
 
 #endif
 }
 
+/* returns true if the current socket is an IP one */
+static bool socket_domain_is_ip(void)
+{
+  switch(socket_domain) {
+  case AF_INET:
+#ifdef ENABLE_IPV6
+  case AF_INET6:
+#endif
+    return true;
+  default:
+  /* case AF_UNIX: */
+    return false;
+  }
+}
+
 /* based on the testno, parse the correct server commands */
 static int parse_servercmd(struct httprequest *req)
 {
 /* based on the testno, parse the correct server commands */
 static int parse_servercmd(struct httprequest *req)
 {
@@ -376,6 +401,10 @@ static int parse_servercmd(struct httprequest *req)
         logmsg("enabled connection monitoring");
         req->connmon = TRUE;
       }
         logmsg("enabled connection monitoring");
         req->connmon = TRUE;
       }
+      else if(!strncmp(CMD_UPGRADE, cmd, strlen(CMD_UPGRADE))) {
+        logmsg("enabled upgrade to http2");
+        req->upgrade = TRUE;
+      }
       else if(1 == sscanf(cmd, "pipe: %d", &num)) {
         logmsg("instructed to allow a pipe size of %d", num);
         if(num < 0)
       else if(1 == sscanf(cmd, "pipe: %d", &num)) {
         logmsg("instructed to allow a pipe size of %d", num);
         if(num < 0)
@@ -789,6 +818,12 @@ static int ProcessRequest(struct httprequest *req)
     return 1; /* done */
   }
 
     return 1; /* done */
   }
 
+  if(req->upgrade && strstr(req->reqbuf, "Upgrade:")) {
+    /* we allow upgrade and there was one! */
+    logmsg("Found Upgrade: in request and allows it");
+    req->upgrade_request = TRUE;
+  }
+
   if(req->cl > 0) {
     if(req->cl <= req->offset - (end - req->reqbuf) - strlen(end_of_headers))
       return 1; /* done */
   if(req->cl > 0) {
     if(req->cl <= req->offset - (end - req->reqbuf) - strlen(end_of_headers))
       return 1; /* done */
@@ -1266,15 +1301,12 @@ static curl_socket_t connect_to(const char *ipaddr, unsigned short port)
   srvr_sockaddr_union_t serveraddr;
   curl_socket_t serverfd;
   int error;
   srvr_sockaddr_union_t serveraddr;
   curl_socket_t serverfd;
   int error;
-  int rc;
+  int rc = 0;
   const char *op_br = "";
   const char *cl_br = "";
   const char *op_br = "";
   const char *cl_br = "";
-#ifdef TCP_NODELAY
-  curl_socklen_t flag;
-#endif
 
 #ifdef ENABLE_IPV6
 
 #ifdef ENABLE_IPV6
-  if(use_ipv6) {
+  if(socket_domain == AF_INET6) {
     op_br = "[";
     cl_br = "]";
   }
     op_br = "[";
     cl_br = "]";
   }
@@ -1286,14 +1318,8 @@ static curl_socket_t connect_to(const char *ipaddr, unsigned short port)
   logmsg("about to connect to %s%s%s:%hu",
          op_br, ipaddr, cl_br, port);
 
   logmsg("about to connect to %s%s%s:%hu",
          op_br, ipaddr, cl_br, port);
 
-#ifdef ENABLE_IPV6
-  if(!use_ipv6)
-#endif
-    serverfd = socket(AF_INET, SOCK_STREAM, 0);
-#ifdef ENABLE_IPV6
-  else
-    serverfd = socket(AF_INET6, SOCK_STREAM, 0);
-#endif
+
+  serverfd = socket(socket_domain, SOCK_STREAM, 0);
   if(CURL_SOCKET_BAD == serverfd) {
     error = SOCKERRNO;
     logmsg("Error creating socket for server conection: (%d) %s",
   if(CURL_SOCKET_BAD == serverfd) {
     error = SOCKERRNO;
     logmsg("Error creating socket for server conection: (%d) %s",
@@ -1302,18 +1328,19 @@ static curl_socket_t connect_to(const char *ipaddr, unsigned short port)
   }
 
 #ifdef TCP_NODELAY
   }
 
 #ifdef TCP_NODELAY
-  /* Disable the Nagle algorithm */
-  flag = 1;
-  if(0 != setsockopt(serverfd, IPPROTO_TCP, TCP_NODELAY,
-                     (void *)&flag, sizeof(flag)))
-    logmsg("====> TCP_NODELAY for server conection failed");
-  else
-    logmsg("TCP_NODELAY set for server conection");
+  if(socket_domain_is_ip()) {
+    /* Disable the Nagle algorithm */
+    curl_socklen_t flag = 1;
+    if(0 != setsockopt(serverfd, IPPROTO_TCP, TCP_NODELAY,
+                       (void *)&flag, sizeof(flag)))
+      logmsg("====> TCP_NODELAY for server conection failed");
+    else
+      logmsg("TCP_NODELAY set for server conection");
+  }
 #endif
 
 #endif
 
-#ifdef ENABLE_IPV6
-  if(!use_ipv6) {
-#endif
+  switch(socket_domain) {
+  case AF_INET:
     memset(&serveraddr.sa4, 0, sizeof(serveraddr.sa4));
     serveraddr.sa4.sin_family = AF_INET;
     serveraddr.sa4.sin_port = htons(port);
     memset(&serveraddr.sa4, 0, sizeof(serveraddr.sa4));
     serveraddr.sa4.sin_family = AF_INET;
     serveraddr.sa4.sin_port = htons(port);
@@ -1324,9 +1351,9 @@ static curl_socket_t connect_to(const char *ipaddr, unsigned short port)
     }
 
     rc = connect(serverfd, &serveraddr.sa, sizeof(serveraddr.sa4));
     }
 
     rc = connect(serverfd, &serveraddr.sa, sizeof(serveraddr.sa4));
+    break;
 #ifdef ENABLE_IPV6
 #ifdef ENABLE_IPV6
-  }
-  else {
+  case AF_INET6:
     memset(&serveraddr.sa6, 0, sizeof(serveraddr.sa6));
     serveraddr.sa6.sin6_family = AF_INET6;
     serveraddr.sa6.sin6_port = htons(port);
     memset(&serveraddr.sa6, 0, sizeof(serveraddr.sa6));
     serveraddr.sa6.sin6_family = AF_INET6;
     serveraddr.sa6.sin6_port = htons(port);
@@ -1337,8 +1364,14 @@ static curl_socket_t connect_to(const char *ipaddr, unsigned short port)
     }
 
     rc = connect(serverfd, &serveraddr.sa, sizeof(serveraddr.sa6));
     }
 
     rc = connect(serverfd, &serveraddr.sa, sizeof(serveraddr.sa6));
-  }
+    break;
 #endif /* ENABLE_IPV6 */
 #endif /* ENABLE_IPV6 */
+#ifdef USE_UNIX_SOCKETS
+  case AF_UNIX:
+    logmsg("Proxying through Unix socket is not (yet?) supported.");
+    return CURL_SOCKET_BAD;
+#endif /* USE_UNIX_SOCKETS */
+  }
 
   if(got_exit_signal) {
     sclose(serverfd);
 
   if(got_exit_signal) {
     sclose(serverfd);
@@ -1391,9 +1424,6 @@ static void http_connect(curl_socket_t *infdp,
   bool poll_server_rd[2] = { TRUE, TRUE };
   bool poll_client_wr[2] = { TRUE, TRUE };
   bool poll_server_wr[2] = { TRUE, TRUE };
   bool poll_server_rd[2] = { TRUE, TRUE };
   bool poll_client_wr[2] = { TRUE, TRUE };
   bool poll_server_wr[2] = { TRUE, TRUE };
-#ifdef TCP_NODELAY
-  curl_socklen_t flag;
-#endif
   bool primary = FALSE;
   bool secondary = FALSE;
   int max_tunnel_idx; /* CTRL or DATA */
   bool primary = FALSE;
   bool secondary = FALSE;
   int max_tunnel_idx; /* CTRL or DATA */
@@ -1507,13 +1537,15 @@ static void http_connect(curl_socket_t *infdp,
           memset(&req2, 0, sizeof(req2));
           logmsg("====> Client connect DATA");
 #ifdef TCP_NODELAY
           memset(&req2, 0, sizeof(req2));
           logmsg("====> Client connect DATA");
 #ifdef TCP_NODELAY
-          /* Disable the Nagle algorithm */
-          flag = 1;
-          if(0 != setsockopt(datafd, IPPROTO_TCP, TCP_NODELAY,
-                             (void *)&flag, sizeof(flag)))
-            logmsg("====> TCP_NODELAY for client DATA conection failed");
-          else
-            logmsg("TCP_NODELAY set for client DATA conection");
+          if(socket_domain_is_ip()) {
+            /* Disable the Nagle algorithm */
+            curl_socklen_t flag = 1;
+            if(0 != setsockopt(datafd, IPPROTO_TCP, TCP_NODELAY,
+                               (void *)&flag, sizeof(flag)))
+              logmsg("====> TCP_NODELAY for client DATA conection failed");
+            else
+              logmsg("TCP_NODELAY set for client DATA conection");
+          }
 #endif
           req2.pipelining = FALSE;
           init_httprequest(&req2);
 #endif
           req2.pipelining = FALSE;
           init_httprequest(&req2);
@@ -1754,6 +1786,14 @@ http_connect_cleanup:
   *infdp = CURL_SOCKET_BAD;
 }
 
   *infdp = CURL_SOCKET_BAD;
 }
 
+static void http2(struct httprequest *req)
+{
+  (void)req;
+  logmsg("switched to http2");
+  /* left to implement */
+}
+
+
 /* returns a socket handle, or 0 if there are no more waiting sockets,
    or < 0 if there was an error */
 static curl_socket_t accept_connection(curl_socket_t sock)
 /* returns a socket handle, or 0 if there are no more waiting sockets,
    or < 0 if there was an error */
 static curl_socket_t accept_connection(curl_socket_t sock)
@@ -1819,15 +1859,17 @@ static curl_socket_t accept_connection(curl_socket_t sock)
   num_sockets += 1;
 
 #ifdef TCP_NODELAY
   num_sockets += 1;
 
 #ifdef TCP_NODELAY
-  /*
-   * Disable the Nagle algorithm to make it easier to send out a large
-   * response in many small segments to torture the clients more.
-   */
-  if(0 != setsockopt(msgsock, IPPROTO_TCP, TCP_NODELAY,
-                     (void *)&flag, sizeof(flag)))
-    logmsg("====> TCP_NODELAY failed");
-  else
-    logmsg("TCP_NODELAY set");
+  if(socket_domain_is_ip()) {
+    /*
+     * Disable the Nagle algorithm to make it easier to send out a large
+     * response in many small segments to torture the clients more.
+     */
+    if(0 != setsockopt(msgsock, IPPROTO_TCP, TCP_NODELAY,
+                       (void *)&flag, sizeof(flag)))
+      logmsg("====> TCP_NODELAY failed");
+    else
+      logmsg("TCP_NODELAY set");
+  }
 #endif
 
   return msgsock;
 #endif
 
   return msgsock;
@@ -1889,6 +1931,12 @@ static int service_connection(curl_socket_t msgsock, struct httprequest *req,
     }
   }
 
     }
   }
 
+  if(req->upgrade_request) {
+    /* an upgrade request, switch to http2 here */
+    http2(req);
+    return -1;
+  }
+
   /* if we got a CONNECT, loop and get another request as well! */
 
   if(req->open) {
   /* if we got a CONNECT, loop and get another request as well! */
 
   if(req->open) {
@@ -1906,13 +1954,20 @@ int main(int argc, char *argv[])
   int wrotepidfile = 0;
   int flag;
   unsigned short port = DEFAULT_PORT;
   int wrotepidfile = 0;
   int flag;
   unsigned short port = DEFAULT_PORT;
+#ifdef USE_UNIX_SOCKETS
+  const char *unix_socket = NULL;
+  bool unlink_socket = false;
+#endif
   char *pidname= (char *)".http.pid";
   struct httprequest req;
   char *pidname= (char *)".http.pid";
   struct httprequest req;
-  int rc;
+  int rc = 0;
   int error;
   int arg=1;
   long pid;
   const char *connecthost = "127.0.0.1";
   int error;
   int arg=1;
   long pid;
   const char *connecthost = "127.0.0.1";
+  const char *socket_type = "IPv4";
+  char port_str[11];
+  const char *location_str = port_str;
 
   /* a default CONNECT port is basically pointless but still ... */
   size_t socket_idx;
 
   /* a default CONNECT port is basically pointless but still ... */
   size_t socket_idx;
@@ -1921,15 +1976,14 @@ int main(int argc, char *argv[])
 
   while(argc>arg) {
     if(!strcmp("--version", argv[arg])) {
 
   while(argc>arg) {
     if(!strcmp("--version", argv[arg])) {
-      printf("sws IPv4%s"
-             "\n"
-             ,
+      puts("sws IPv4"
 #ifdef ENABLE_IPV6
              "/IPv6"
 #ifdef ENABLE_IPV6
              "/IPv6"
-#else
-             ""
 #endif
 #endif
-             );
+#ifdef USE_UNIX_SOCKETS
+             "/unix"
+#endif
+          );
       return 0;
     }
     else if(!strcmp("--pidfile", argv[arg])) {
       return 0;
     }
     else if(!strcmp("--pidfile", argv[arg])) {
@@ -1948,19 +2002,36 @@ int main(int argc, char *argv[])
       end_of_headers = "\r\n"; /* gopher style is much simpler */
     }
     else if(!strcmp("--ipv4", argv[arg])) {
       end_of_headers = "\r\n"; /* gopher style is much simpler */
     }
     else if(!strcmp("--ipv4", argv[arg])) {
-#ifdef ENABLE_IPV6
-      ipv_inuse = "IPv4";
-      use_ipv6 = FALSE;
-#endif
+      socket_type = "IPv4";
+      socket_domain = AF_INET;
+      location_str = port_str;
       arg++;
     }
     else if(!strcmp("--ipv6", argv[arg])) {
 #ifdef ENABLE_IPV6
       arg++;
     }
     else if(!strcmp("--ipv6", argv[arg])) {
 #ifdef ENABLE_IPV6
-      ipv_inuse = "IPv6";
-      use_ipv6 = TRUE;
+      socket_type = "IPv6";
+      socket_domain = AF_INET6;
+      location_str = port_str;
 #endif
       arg++;
     }
 #endif
       arg++;
     }
+    else if(!strcmp("--unix-socket", argv[arg])) {
+      arg++;
+      if(argc>arg) {
+#ifdef USE_UNIX_SOCKETS
+        unix_socket = argv[arg];
+        if(strlen(unix_socket) >= sizeof(me.sau.sun_path)) {
+          fprintf(stderr, "sws: socket path must be shorter than %zu chars\n",
+                  sizeof(me.sau.sun_path));
+          return 0;
+        }
+        socket_type = "unix";
+        socket_domain = AF_UNIX;
+        location_str = unix_socket;
+#endif
+        arg++;
+      }
+    }
     else if(!strcmp("--port", argv[arg])) {
       arg++;
       if(argc>arg) {
     else if(!strcmp("--port", argv[arg])) {
       arg++;
       if(argc>arg) {
@@ -2002,6 +2073,7 @@ int main(int argc, char *argv[])
            " --pidfile [file]\n"
            " --ipv4\n"
            " --ipv6\n"
            " --pidfile [file]\n"
            " --ipv4\n"
            " --ipv6\n"
+           " --unix-socket [file]\n"
            " --port [port]\n"
            " --srcdir [path]\n"
            " --connect [ip4-addr]\n"
            " --port [port]\n"
            " --srcdir [path]\n"
            " --connect [ip4-addr]\n"
@@ -2010,6 +2082,8 @@ int main(int argc, char *argv[])
     }
   }
 
     }
   }
 
+  snprintf(port_str, sizeof(port_str), "port %hu", port);
+
 #ifdef WIN32
   win32_init();
   atexit(win32_cleanup);
 #ifdef WIN32
   win32_init();
   atexit(win32_cleanup);
@@ -2019,14 +2093,7 @@ int main(int argc, char *argv[])
 
   pid = (long)getpid();
 
 
   pid = (long)getpid();
 
-#ifdef ENABLE_IPV6
-  if(!use_ipv6)
-#endif
-    sock = socket(AF_INET, SOCK_STREAM, 0);
-#ifdef ENABLE_IPV6
-  else
-    sock = socket(AF_INET6, SOCK_STREAM, 0);
-#endif
+  sock = socket(socket_domain, SOCK_STREAM, 0);
 
   all_sockets[0] = sock;
   num_sockets = 1;
 
   all_sockets[0] = sock;
   num_sockets = 1;
@@ -2053,33 +2120,83 @@ int main(int argc, char *argv[])
     goto sws_cleanup;
   }
 
     goto sws_cleanup;
   }
 
-#ifdef ENABLE_IPV6
-  if(!use_ipv6) {
-#endif
+  switch(socket_domain) {
+  case AF_INET:
     memset(&me.sa4, 0, sizeof(me.sa4));
     me.sa4.sin_family = AF_INET;
     me.sa4.sin_addr.s_addr = INADDR_ANY;
     me.sa4.sin_port = htons(port);
     rc = bind(sock, &me.sa, sizeof(me.sa4));
     memset(&me.sa4, 0, sizeof(me.sa4));
     me.sa4.sin_family = AF_INET;
     me.sa4.sin_addr.s_addr = INADDR_ANY;
     me.sa4.sin_port = htons(port);
     rc = bind(sock, &me.sa, sizeof(me.sa4));
+    break;
 #ifdef ENABLE_IPV6
 #ifdef ENABLE_IPV6
-  }
-  else {
+  case AF_INET6:
     memset(&me.sa6, 0, sizeof(me.sa6));
     me.sa6.sin6_family = AF_INET6;
     me.sa6.sin6_addr = in6addr_any;
     me.sa6.sin6_port = htons(port);
     rc = bind(sock, &me.sa, sizeof(me.sa6));
     memset(&me.sa6, 0, sizeof(me.sa6));
     me.sa6.sin6_family = AF_INET6;
     me.sa6.sin6_addr = in6addr_any;
     me.sa6.sin6_port = htons(port);
     rc = bind(sock, &me.sa, sizeof(me.sa6));
-  }
+    break;
 #endif /* ENABLE_IPV6 */
 #endif /* ENABLE_IPV6 */
+#ifdef USE_UNIX_SOCKETS
+  case AF_UNIX:
+    memset(&me.sau, 0, sizeof(me.sau));
+    me.sau.sun_family = AF_UNIX;
+    strncpy(me.sau.sun_path, unix_socket, sizeof(me.sau.sun_path));
+    rc = bind(sock, &me.sa, sizeof(me.sau));
+    if(0 != rc && errno == EADDRINUSE) {
+      struct stat statbuf;
+      /* socket already exists. Perhaps it is stale? */
+      int unixfd = socket(AF_UNIX, SOCK_STREAM, 0);
+      if(CURL_SOCKET_BAD == unixfd) {
+        error = SOCKERRNO;
+        logmsg("Error binding socket, failed to create socket at %s: (%d) %s",
+               unix_socket, error, strerror(error));
+        goto sws_cleanup;
+      }
+      /* check whether the server is alive */
+      rc = connect(unixfd, &me.sa, sizeof(me.sau));
+      error = errno;
+      close(unixfd);
+      if(ECONNREFUSED != error) {
+        logmsg("Error binding socket, failed to connect to %s: (%d) %s",
+               unix_socket, error, strerror(error));
+        goto sws_cleanup;
+      }
+      /* socket server is not alive, now check if it was actually a socket.
+       * Systems which have Unix sockets will also have lstat */
+      rc = lstat(unix_socket, &statbuf);
+      if (0 != rc) {
+        logmsg("Error binding socket, failed to stat %s: (%d) %s",
+               unix_socket, errno, strerror(errno));
+        goto sws_cleanup;
+      }
+      if((statbuf.st_mode & S_IFSOCK) != S_IFSOCK) {
+        logmsg("Error binding socket, failed to stat %s: (%d) %s",
+               unix_socket, error, strerror(error));
+        goto sws_cleanup;
+      }
+      /* dead socket, cleanup and retry bind */
+      rc = unlink(unix_socket);
+      if(0 != rc) {
+        logmsg("Error binding socket, failed to unlink %s: (%d) %s",
+               unix_socket, errno, strerror(errno));
+        goto sws_cleanup;
+      }
+      /* stale socket is gone, retry bind */
+      rc = bind(sock, &me.sa, sizeof(me.sau));
+    }
+    break;
+#endif /* USE_UNIX_SOCKETS */
+  }
   if(0 != rc) {
     error = SOCKERRNO;
   if(0 != rc) {
     error = SOCKERRNO;
-    logmsg("Error binding socket on port %hu: (%d) %s",
-           port, error, strerror(error));
+    logmsg("Error binding socket on %s: (%d) %s",
+           location_str, error, strerror(error));
     goto sws_cleanup;
   }
 
     goto sws_cleanup;
   }
 
-  logmsg("Running %s %s version on port %d",
-         use_gopher?"GOPHER":"HTTP", ipv_inuse, (int)port);
+  logmsg("Running %s %s version on %s",
+         use_gopher?"GOPHER":"HTTP", socket_type, location_str);
 
   /* start accepting connections */
   rc = listen(sock, 5);
 
   /* start accepting connections */
   rc = listen(sock, 5);
@@ -2090,6 +2207,11 @@ int main(int argc, char *argv[])
     goto sws_cleanup;
   }
 
     goto sws_cleanup;
   }
 
+#ifdef USE_UNIX_SOCKETS
+  /* listen succeeds, so let's assume a valid listening Unix socket */
+  unlink_socket = true;
+#endif
+
   /*
   ** As soon as this server writes its pid file the test harness will
   ** attempt to connect to this server and initiate its verification.
   /*
   ** As soon as this server writes its pid file the test harness will
   ** attempt to connect to this server and initiate its verification.
@@ -2230,6 +2352,13 @@ sws_cleanup:
   if(sock != CURL_SOCKET_BAD)
     sclose(sock);
 
   if(sock != CURL_SOCKET_BAD)
     sclose(sock);
 
+#ifdef USE_UNIX_SOCKETS
+  if(unlink_socket && socket_domain == AF_UNIX) {
+    rc = unlink(unix_socket);
+    logmsg("unlink(%s) = %d (%s)", unix_socket, rc, strerror(rc));
+  }
+#endif
+
   if(got_exit_signal)
     logmsg("signalled to die");
 
   if(got_exit_signal)
     logmsg("signalled to die");
 
@@ -2244,8 +2373,8 @@ sws_cleanup:
   restore_signal_handlers();
 
   if(got_exit_signal) {
   restore_signal_handlers();
 
   if(got_exit_signal) {
-    logmsg("========> %s sws (port: %d pid: %ld) exits with signal (%d)",
-           ipv_inuse, (int)port, pid, exit_signal);
+    logmsg("========> %s sws (%s pid: %ld) exits with signal (%d)",
+           socket_type, location_str, pid, exit_signal);
     /*
      * To properly set the return status of the process we
      * must raise the same signal SIGINT or SIGTERM that we
     /*
      * To properly set the return status of the process we
      * must raise the same signal SIGINT or SIGTERM that we
index 10f88a1..2555793 100644 (file)
@@ -107,8 +107,10 @@ struct testcase {
   size_t bufsize; /* size of the data in buffer */
   char *rptr;     /* read pointer into the buffer */
   size_t rcount;  /* amount of data left to read of the file */
   size_t bufsize; /* size of the data in buffer */
   char *rptr;     /* read pointer into the buffer */
   size_t rcount;  /* amount of data left to read of the file */
-  long num;       /* test case number */
+  long testno;    /* test case number */
   int ofile;      /* file descriptor for output file when uploading to us */
   int ofile;      /* file descriptor for output file when uploading to us */
+
+  int writedelay; /* number of seconds between each packet */
 };
 
 struct formats {
 };
 
 struct formats {
@@ -200,14 +202,6 @@ static curl_socket_t peer = CURL_SOCKET_BAD;
 static int timeout;
 static int maxtimeout = 5 * TIMEOUT;
 
 static int timeout;
 static int maxtimeout = 5 * TIMEOUT;
 
-static unsigned short sendblock; /* block count used by sendtftp() */
-static struct tftphdr *sdp;      /* data buffer used by sendtftp() */
-static struct tftphdr *sap;      /* ack buffer  used by sendtftp() */
-
-static unsigned short recvblock; /* block count used by recvtftp() */
-static struct tftphdr *rdp;      /* data buffer used by recvtftp() */
-static struct tftphdr *rap;      /* ack buffer  used by recvtftp() */
-
 #ifdef ENABLE_IPV6
 static bool use_ipv6 = FALSE;
 #endif
 #ifdef ENABLE_IPV6
 static bool use_ipv6 = FALSE;
 #endif
@@ -274,15 +268,6 @@ static struct tftphdr *w_init(void);
 
 static struct tftphdr *r_init(void);
 
 
 static struct tftphdr *r_init(void);
 
-static int readit(struct testcase *test,
-                  struct tftphdr **dpp,
-                  int convert);
-
-static int writeit(struct testcase *test,
-                   struct tftphdr **dpp,
-                   int ct,
-                   int convert);
-
 static void read_ahead(struct testcase *test, int convert);
 
 static ssize_t write_behind(struct testcase *test, int convert);
 static void read_ahead(struct testcase *test, int convert);
 
 static ssize_t write_behind(struct testcase *test, int convert);
@@ -545,7 +530,7 @@ static void read_ahead(struct testcase *test,
 /* Update count associated with the buffer, get new buffer from the queue.
    Calls write_behind only if next buffer not available.
  */
 /* Update count associated with the buffer, get new buffer from the queue.
    Calls write_behind only if next buffer not available.
  */
-static int writeit(struct testcase *test, struct tftphdr **dpp,
+static int writeit(struct testcase *test, struct tftphdr * volatile *dpp,
                    int ct, int convert)
 {
   bfs[current].counter = ct;      /* set size of data to write */
                    int ct, int convert)
 {
   bfs[current].counter = ct;      /* set size of data to write */
@@ -579,7 +564,7 @@ static ssize_t write_behind(struct testcase *test, int convert)
 
   if(!test->ofile) {
     char outfile[256];
 
   if(!test->ofile) {
     char outfile[256];
-    snprintf(outfile, sizeof(outfile), "log/upload.%ld", test->num);
+    snprintf(outfile, sizeof(outfile), "log/upload.%ld", test->testno);
     test->ofile=open(outfile, O_CREAT|O_RDWR, 0777);
     if(test->ofile == -1) {
       logmsg("Couldn't create and/or open file %s for upload!", outfile);
     test->ofile=open(outfile, O_CREAT|O_RDWR, 0777);
     if(test->ofile == -1) {
       logmsg("Couldn't create and/or open file %s for upload!", outfile);
@@ -1045,6 +1030,73 @@ again:
   return 0;
 }
 
   return 0;
 }
 
+/* Based on the testno, parse the correct server commands. */
+static int parse_servercmd(struct testcase *req)
+{
+  FILE *stream;
+  char *filename;
+  int error;
+
+  filename = test2file(req->testno);
+
+  stream=fopen(filename, "rb");
+  if(!stream) {
+    error = errno;
+    logmsg("fopen() failed with error: %d %s", error, strerror(error));
+    logmsg("  [1] Error opening file: %s", filename);
+    logmsg("  Couldn't open test file %ld", req->testno);
+    return 1; /* done */
+  }
+  else {
+    char *orgcmd = NULL;
+    char *cmd = NULL;
+    size_t cmdsize = 0;
+    int num=0;
+
+    /* get the custom server control "commands" */
+    error = getpart(&orgcmd, &cmdsize, "reply", "servercmd", stream);
+    fclose(stream);
+    if(error) {
+      logmsg("getpart() failed with error: %d", error);
+      return 1; /* done */
+    }
+
+    cmd = orgcmd;
+    while(cmd && cmdsize) {
+      char *check;
+      if(1 == sscanf(cmd, "writedelay: %d", &num)) {
+        logmsg("instructed to delay %d secs between packets", num);
+        req->writedelay = num;
+      }
+      else {
+        logmsg("Unknown <servercmd> instruction found: %s", cmd);
+      }
+      /* try to deal with CRLF or just LF */
+      check = strchr(cmd, '\r');
+      if(!check)
+        check = strchr(cmd, '\n');
+
+      if(check) {
+        /* get to the letter following the newline */
+        while((*check == '\r') || (*check == '\n'))
+          check++;
+
+        if(!*check)
+          /* if we reached a zero, get out */
+          break;
+        cmd = check;
+      }
+      else
+        break;
+    }
+    if(orgcmd)
+      free(orgcmd);
+  }
+
+  return 0; /* OK! */
+}
+
+
 /*
  * Validate file access.
  */
 /*
  * Validate file access.
  */
@@ -1095,7 +1147,9 @@ static int validate_access(struct testcase *test,
 
     logmsg("requested test number %ld part %ld", testno, partno);
 
 
     logmsg("requested test number %ld part %ld", testno, partno);
 
-    test->num = testno;
+    test->testno = testno;
+
+    (void)parse_servercmd(test);
 
     file = test2file(testno);
 
 
     file = test2file(testno);
 
@@ -1148,6 +1202,11 @@ static void sendtftp(struct testcase *test, struct formats *pf)
 {
   int size;
   ssize_t n;
 {
   int size;
   ssize_t n;
+  /* This is volatile to live through a siglongjmp */
+  volatile unsigned short sendblock; /* block count */
+  struct tftphdr *sdp;      /* data buffer */
+  struct tftphdr *sap;      /* ack buffer */
+
   sendblock = 1;
 #if defined(HAVE_ALARM) && defined(SIGALRM)
   mysignal(SIGALRM, timer);
   sendblock = 1;
 #if defined(HAVE_ALARM) && defined(SIGALRM)
   mysignal(SIGALRM, timer);
@@ -1166,6 +1225,12 @@ static void sendtftp(struct testcase *test, struct formats *pf)
 #ifdef HAVE_SIGSETJMP
     (void) sigsetjmp(timeoutbuf, 1);
 #endif
 #ifdef HAVE_SIGSETJMP
     (void) sigsetjmp(timeoutbuf, 1);
 #endif
+    if(test->writedelay) {
+      logmsg("Pausing %d seconds before %d bytes", test->writedelay,
+             size);
+      wait_ms(1000*test->writedelay);
+    }
+
     send_data:
     if (swrite(peer, sdp, size + 4) != size + 4) {
       logmsg("write");
     send_data:
     if (swrite(peer, sdp, size + 4) != size + 4) {
       logmsg("write");
@@ -1216,11 +1281,16 @@ static void sendtftp(struct testcase *test, struct formats *pf)
 static void recvtftp(struct testcase *test, struct formats *pf)
 {
   ssize_t n, size;
 static void recvtftp(struct testcase *test, struct formats *pf)
 {
   ssize_t n, size;
+  /* These are volatile to live through a siglongjmp */
+  volatile unsigned short recvblock; /* block count */
+  struct tftphdr * volatile rdp;     /* data buffer */
+  struct tftphdr *rap;      /* ack buffer */
+
   recvblock = 0;
   recvblock = 0;
+  rdp = w_init();
 #if defined(HAVE_ALARM) && defined(SIGALRM)
   mysignal(SIGALRM, timer);
 #endif
 #if defined(HAVE_ALARM) && defined(SIGALRM)
   mysignal(SIGALRM, timer);
 #endif
-  rdp = w_init();
   rap = &ackbuf.hdr;
   do {
     timeout = 0;
   rap = &ackbuf.hdr;
   do {
     timeout = 0;
@@ -1301,7 +1371,7 @@ abort:
 
 /*
  * Send a nak packet (error message).  Error code passed in is one of the
 
 /*
  * Send a nak packet (error message).  Error code passed in is one of the
- * standard TFTP codes, or a UNIX errno offset by 100.
+ * standard TFTP codes, or a Unix errno offset by 100.
  */
 static void nak(int error)
 {
  */
 static void nak(int error)
 {
index b0b5b74..220fba9 100644 (file)
@@ -109,8 +109,8 @@ sub servername_str {
 
     $ipver = (not $ipver) ? 'ipv4' : lc($ipver);
     die "unsupported IP version: '$ipver'" unless($ipver &&
 
     $ipver = (not $ipver) ? 'ipv4' : lc($ipver);
     die "unsupported IP version: '$ipver'" unless($ipver &&
-        ($ipver =~ /^(4|6|ipv4|ipv6|-ipv4|-ipv6)$/));
-    $ipver = ($ipver =~ /6$/) ? '-IPv6' : '';
+        ($ipver =~ /^(4|6|ipv4|ipv6|-ipv4|-ipv6|unix)$/));
+    $ipver = ($ipver =~ /6$/) ? '-IPv6' : (($ipver =~ /unix$/) ? '-unix' : '');
 
     $idnum = 1 if(not $idnum);
     die "unsupported ID number: '$idnum'" unless($idnum &&
 
     $idnum = 1 if(not $idnum);
     die "unsupported ID number: '$idnum'" unless($idnum &&
index ced9a01..914879b 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -417,7 +417,7 @@ sub sshversioninfo {
         $error = "Error: cannot read or execute $sshbin";
     }
     else {
         $error = "Error: cannot read or execute $sshbin";
     }
     else {
-        my $cmd = ($sshbin =~ /$sshdexe$/) ? "$sshbin -?" : "$sshbin -V";
+        my $cmd = ($sshbin =~ /$sshdexe$/) ? "\"$sshbin\" -?" : "\"$sshbin\" -V";
         $error = "$cmd\n";
         foreach my $tmpstr (qx($cmd 2>&1)) {
             if($tmpstr =~ /OpenSSH[_-](\d+)\.(\d+)(\.(\d+))*/i) {
         $error = "$cmd\n";
         foreach my $tmpstr (qx($cmd 2>&1)) {
             if($tmpstr =~ /OpenSSH[_-](\d+)\.(\d+)(\.(\d+))*/i) {
index 447305f..d8c2d6f 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2011, 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -27,6 +27,7 @@
 use strict;
 use warnings;
 use Cwd;
 use strict;
 use warnings;
 use Cwd;
+use Cwd 'abs_path';
 
 #***************************************************************************
 # Variables and subs imported from sshhelp module
 
 #***************************************************************************
 # Variables and subs imported from sshhelp module
@@ -88,6 +89,7 @@ my $path = getcwd();          # current working directory
 my $logdir = $path .'/log';   # directory for log files
 my $username = $ENV{USER};    # default user
 my $pidfile;                  # ssh daemon pid file
 my $logdir = $path .'/log';   # directory for log files
 my $username = $ENV{USER};    # default user
 my $pidfile;                  # ssh daemon pid file
+my $identity = 'curl_client_key'; # default identity file
 
 my $error;
 my @cfgarr;
 
 my $error;
 my @cfgarr;
@@ -369,12 +371,12 @@ if((! -e $hstprvkeyf) || (! -s $hstprvkeyf) ||
     # Make sure all files are gone so ssh-keygen doesn't complain
     unlink($hstprvkeyf, $hstpubkeyf, $cliprvkeyf, $clipubkeyf);
     logmsg 'generating host keys...' if($verbose);
     # Make sure all files are gone so ssh-keygen doesn't complain
     unlink($hstprvkeyf, $hstpubkeyf, $cliprvkeyf, $clipubkeyf);
     logmsg 'generating host keys...' if($verbose);
-    if(system "$sshkeygen -q -t dsa -f $hstprvkeyf -C 'curl test server' -N ''") {
+    if(system "\"$sshkeygen\" -q -t dsa -f $hstprvkeyf -C 'curl test server' -N ''") {
         logmsg 'Could not generate host key';
         exit 1;
     }
     logmsg 'generating client keys...' if($verbose);
         logmsg 'Could not generate host key';
         exit 1;
     }
     logmsg 'generating client keys...' if($verbose);
-    if(system "$sshkeygen -q -t dsa -f $cliprvkeyf -C 'curl test client' -N ''") {
+    if(system "\"$sshkeygen\" -q -t dsa -f $cliprvkeyf -C 'curl test client' -N ''") {
         logmsg 'Could not generate client key';
         exit 1;
     }
         logmsg 'Could not generate client key';
         exit 1;
     }
@@ -382,6 +384,22 @@ if((! -e $hstprvkeyf) || (! -s $hstprvkeyf) ||
 
 
 #***************************************************************************
 
 
 #***************************************************************************
+# Convert paths for curl's tests running on Windows using Cygwin OpenSSH
+#
+my $clipubkeyf_config = abs_path("$path/$clipubkeyf");
+my $hstprvkeyf_config = abs_path("$path/$hstprvkeyf");
+my $pidfile_config = $pidfile;
+my $sftpsrv_config = $sftpsrv;
+
+if ($^O eq 'MSWin32' || $^O eq 'cygwin' || $^O eq 'msys') {
+    # convert MinGW drive paths to Cygwin drive paths
+    $clipubkeyf_config =~ s/^\/(\w)\//\/cygdrive\/$1\//;
+    $hstprvkeyf_config =~ s/^\/(\w)\//\/cygdrive\/$1\//;
+    $pidfile_config =~ s/^\/(\w)\//\/cygdrive\/$1\//;
+    $sftpsrv_config = "internal-sftp";
+}
+
+#***************************************************************************
 #  ssh daemon configuration file options we might use and version support
 #
 #  AFSTokenPassing                  : OpenSSH 1.2.1 and later [1]
 #  ssh daemon configuration file options we might use and version support
 #
 #  AFSTokenPassing                  : OpenSSH 1.2.1 and later [1]
@@ -479,10 +497,10 @@ push @cfgarr, "AllowUsers $username";
 push @cfgarr, 'DenyGroups';
 push @cfgarr, 'AllowGroups';
 push @cfgarr, '#';
 push @cfgarr, 'DenyGroups';
 push @cfgarr, 'AllowGroups';
 push @cfgarr, '#';
-push @cfgarr, "AuthorizedKeysFile $path/$clipubkeyf";
-push @cfgarr, "AuthorizedKeysFile2 $path/$clipubkeyf";
-push @cfgarr, "HostKey $path/$hstprvkeyf";
-push @cfgarr, "PidFile $pidfile";
+push @cfgarr, "AuthorizedKeysFile $clipubkeyf_config";
+push @cfgarr, "AuthorizedKeysFile2 $clipubkeyf_config";
+push @cfgarr, "HostKey $hstprvkeyf_config";
+push @cfgarr, "PidFile $pidfile_config";
 push @cfgarr, '#';
 push @cfgarr, "Port $port";
 push @cfgarr, "ListenAddress $listenaddr";
 push @cfgarr, '#';
 push @cfgarr, "Port $port";
 push @cfgarr, "ListenAddress $listenaddr";
@@ -512,7 +530,7 @@ push @cfgarr, 'RhostsRSAAuthentication no';
 push @cfgarr, 'RSAAuthentication no';
 push @cfgarr, 'ServerKeyBits 768';
 push @cfgarr, 'StrictModes no';
 push @cfgarr, 'RSAAuthentication no';
 push @cfgarr, 'ServerKeyBits 768';
 push @cfgarr, 'StrictModes no';
-push @cfgarr, "Subsystem sftp $sftpsrv";
+push @cfgarr, "Subsystem sftp \"$sftpsrv_config\"";
 push @cfgarr, 'SyslogFacility AUTH';
 push @cfgarr, 'UseLogin no';
 push @cfgarr, 'X11Forwarding no';
 push @cfgarr, 'SyslogFacility AUTH';
 push @cfgarr, 'UseLogin no';
 push @cfgarr, 'X11Forwarding no';
@@ -540,7 +558,7 @@ sub sshd_supports_opt {
         ($sshdid =~ /SunSSH/)) {
         # ssh daemon supports command line options -t -f and -o
         $err = grep /((Unsupported)|(Bad configuration)|(Deprecated)) option.*$option/,
         ($sshdid =~ /SunSSH/)) {
         # ssh daemon supports command line options -t -f and -o
         $err = grep /((Unsupported)|(Bad configuration)|(Deprecated)) option.*$option/,
-                    qx($sshd -t -f $sshdconfig -o $option=$value 2>&1);
+                    qx("$sshd" -t -f $sshdconfig -o $option=$value 2>&1);
         return !$err;
     }
     if(($sshdid =~ /OpenSSH/) && ($sshdvernum >= 299)) {
         return !$err;
     }
     if(($sshdid =~ /OpenSSH/) && ($sshdvernum >= 299)) {
@@ -551,7 +569,7 @@ sub sshd_supports_opt {
             return 0;
         }
         $err = grep /((Unsupported)|(Bad configuration)|(Deprecated)) option.*$option/,
             return 0;
         }
         $err = grep /((Unsupported)|(Bad configuration)|(Deprecated)) option.*$option/,
-                    qx($sshd -t -f $sshdconfig 2>&1);
+                    qx("$sshd" -t -f $sshdconfig 2>&1);
         unlink $sshdconfig;
         return !$err;
     }
         unlink $sshdconfig;
         return !$err;
     }
@@ -697,7 +715,7 @@ if($error) {
 #***************************************************************************
 # Verify that sshd actually supports our generated configuration file
 #
 #***************************************************************************
 # Verify that sshd actually supports our generated configuration file
 #
-if(system "$sshd -t -f $sshdconfig > $sshdlog 2>&1") {
+if(system "\"$sshd\" -t -f $sshdconfig > $sshdlog 2>&1") {
     logmsg "sshd configuration file $sshdconfig failed verification";
     display_sshdlog();
     display_sshdconfig();
     logmsg "sshd configuration file $sshdconfig failed verification";
     display_sshdlog();
     display_sshdconfig();
@@ -739,6 +757,19 @@ if((! -e $knownhosts) || (! -s $knownhosts)) {
 
 
 #***************************************************************************
 
 
 #***************************************************************************
+# Convert paths for curl's tests running on Windows using Cygwin OpenSSH
+#
+my $identity_config = abs_path("$path/$identity");
+my $knownhosts_config = abs_path("$path/$knownhosts");
+
+if ($^O eq 'MSWin32' || $^O eq 'cygwin' || $^O eq 'msys') {
+    # convert MinGW drive paths to Cygwin drive paths
+    $identity_config =~ s/^\/(\w)\//\/cygdrive\/$1\//;
+    $knownhosts_config =~ s/^\/(\w)\//\/cygdrive\/$1\//;
+}
+
+
+#***************************************************************************
 #  ssh client configuration file options we might use and version support
 #
 #  AddressFamily                     : OpenSSH 3.7.0 and later
 #  ssh client configuration file options we might use and version support
 #
 #  AddressFamily                     : OpenSSH 3.7.0 and later
@@ -834,8 +865,8 @@ push @cfgarr, '#';
 push @cfgarr, "BindAddress $listenaddr";
 push @cfgarr, "DynamicForward $socksport";
 push @cfgarr, '#';
 push @cfgarr, "BindAddress $listenaddr";
 push @cfgarr, "DynamicForward $socksport";
 push @cfgarr, '#';
-push @cfgarr, "IdentityFile $path/curl_client_key";
-push @cfgarr, "UserKnownHostsFile $path/$knownhosts";
+push @cfgarr, "IdentityFile $identity_config";
+push @cfgarr, "UserKnownHostsFile $knownhosts_config";
 push @cfgarr, '#';
 push @cfgarr, 'BatchMode yes';
 push @cfgarr, 'ChallengeResponseAuthentication no';
 push @cfgarr, '#';
 push @cfgarr, 'BatchMode yes';
 push @cfgarr, 'ChallengeResponseAuthentication no';
@@ -1025,16 +1056,16 @@ if($error) {
 # Start the ssh server daemon without forking it
 #
 logmsg "SCP/SFTP server listening on port $port" if($verbose);
 # Start the ssh server daemon without forking it
 #
 logmsg "SCP/SFTP server listening on port $port" if($verbose);
-my $rc = system "$sshd -e -D -f $sshdconfig > $sshdlog 2>&1";
+my $rc = system "\"$sshd\" -e -D -f $sshdconfig > $sshdlog 2>&1";
 if($rc == -1) {
 if($rc == -1) {
-    logmsg "$sshd failed with: $!";
+    logmsg "\"$sshd\" failed with: $!";
 }
 elsif($rc & 127) {
 }
 elsif($rc & 127) {
-    logmsg sprintf("$sshd died with signal %d, and %s coredump",
+    logmsg sprintf("\"$sshd\" died with signal %d, and %s coredump",
                    ($rc & 127), ($rc & 128)?'a':'no');
 }
 elsif($verbose && ($rc >> 8)) {
                    ($rc & 127), ($rc & 128)?'a':'no');
 }
 elsif($verbose && ($rc >> 8)) {
-    logmsg sprintf("$sshd exited with %d", $rc >> 8);
+    logmsg sprintf("\"$sshd\" exited with %d", $rc >> 8);
 }
 
 
 }
 
 
index 6a3859b..d9b9679 100644 (file)
@@ -60,17 +60,17 @@ Certificate:
     Data:
         Version: 3 (0x2)
         Serial Number:
     Data:
         Version: 3 (0x2)
         Serial Number:
-            09:c2:f9:ca:9a:d8
-        Signature Algorithm: md5WithRSAEncryption
+            a4:17:70:09:88:8c:48:cd
+    Signature Algorithm: sha1WithRSAEncryption
         Issuer: C=SE, ST=Solna, L=Mooo, O=Haxx, OU=Coolx, CN=storbror, CN=localhost
         Validity
         Issuer: C=SE, ST=Solna, L=Mooo, O=Haxx, OU=Coolx, CN=storbror, CN=localhost
         Validity
-            Not Before: Jan  5 11:25:13 2004 GMT
-            Not After : Feb 13 11:25:13 2008 GMT
+            Not Before: Feb 22 15:38:48 2014 GMT
+            Not After : Feb 20 15:38:48 2024 GMT
         Subject: C=SE, ST=Solna, L=Mooo, O=Haxx, OU=Coolx, CN=storbror, CN=localhost
         Subject Public Key Info:
             Public Key Algorithm: rsaEncryption
         Subject: C=SE, ST=Solna, L=Mooo, O=Haxx, OU=Coolx, CN=storbror, CN=localhost
         Subject Public Key Info:
             Public Key Algorithm: rsaEncryption
-            RSA Public Key: (1234 bit)
-                Modulus (1234 bit):
+                Public-Key: (1234 bit)
+                Modulus:
                     03:59:37:ea:06:ea:f2:7c:0c:0c:de:f8:5b:ce:29:
                     24:b8:f5:7e:31:18:cc:40:2e:12:91:2e:14:10:6f:
                     ba:af:33:ee:c1:70:c8:11:bf:e4:4a:c6:45:fb:48:
                     03:59:37:ea:06:ea:f2:7c:0c:0c:de:f8:5b:ce:29:
                     24:b8:f5:7e:31:18:cc:40:2e:12:91:2e:14:10:6f:
                     ba:af:33:ee:c1:70:c8:11:bf:e4:4a:c6:45:fb:48:
@@ -104,37 +104,37 @@ Certificate:
             Authority Information Access: 
                 ad dvcs - URI:https://localhost:8433/509
 
             Authority Information Access: 
                 ad dvcs - URI:https://localhost:8433/509
 
-    Signature Algorithm: md5WithRSAEncryption
-        02:47:57:18:5f:54:3f:1d:29:0a:05:7a:d1:0f:e6:b9:2c:8b:
-        29:38:50:bf:c1:a1:7f:73:4a:9d:f1:1b:bf:2e:ea:87:91:dd:
-        ff:75:73:57:78:cf:75:52:57:0b:5b:bb:d4:77:b2:dd:e8:0c:
-        06:ce:1b:c0:3d:9f:68:c0:0b:66:b8:f9:46:db:04:a9:2f:a3:
-        5e:9c:c6:70:ff:1d:af:1f:17:9c:38:3d:12:aa:af:7b:72:44:
-        a0:44:41:6b:9a:9b:60:8c:50:94:f1:d7:a5:77:6b:d3:0e:66:
-        88:a1:52:63:23:f6:66:a6:ea:f9:d0:df:4d:8a:14:f0:73:c6:
-        b6:b6:b6:68:4f:3d:9a:b6:31:ba:19:f3:66:9f:16:6d:87:64:
-        32:53:d2:90:e5:8c:1e:f5:18:61:1a
+    Signature Algorithm: sha1WithRSAEncryption
+         00:45:db:09:5b:08:5b:1a:ff:71:50:6c:12:ad:8e:78:32:1d:
+         7d:e7:e4:d3:3e:5f:ca:20:84:aa:ff:9a:c2:b6:a9:48:93:1f:
+         73:27:d1:68:05:76:36:f9:c1:53:90:ad:8a:c0:b3:12:c8:11:
+         5c:2c:65:01:ac:31:d1:8e:60:6e:c6:f5:ba:9d:69:e8:f1:ac:
+         4a:de:52:94:cd:06:24:45:72:64:89:0f:57:8b:26:2b:16:cf:
+         0b:27:c4:e8:73:c7:d3:e5:42:38:95:57:b5:bb:83:b4:92:d4:
+         e0:cd:fb:c8:f5:d2:da:1d:11:fe:3c:18:20:8b:bd:22:31:1c:
+         5a:82:d4:f5:71:8d:8a:e3:13:82:c5:2d:f3:9f:d0:b7:b8:4b:
+         d2:46:9d:8e:1a:d7:99:6e:c1:b9:a0
 -----BEGIN CERTIFICATE-----
 -----BEGIN CERTIFICATE-----
-MIIDujCCAwigAwIBAgIGCcMA3QkhMA0GCSqGSIb3DQEBBAUAMHIxCzAJBgNVBAYT
-AlNFMQ4wDAYDVQQIEwVTb2xuYTENMAsGA1UEBxMETW9vbzENMAsGA1UEChMESGF4
-eDEOMAwGA1UECxMFQ29vbHgxETAPBgNVBAMTCHN0b3Jicm9yMRIwEAYDVQQDEwls
-b2NhbGhvc3QwHhcNMDQwMTA1MTQ0MjU2WhcNMDgwMjEzMTQ0MjU2WjByMQswCQYD
-VQQGEwJTRTEOMAwGA1UECBMFU29sbmExDTALBgNVBAcTBE1vb28xDTALBgNVBAoT
-BEhheHgxDjAMBgNVBAsTBUNvb2x4MREwDwYDVQQDEwhzdG9yYnJvcjESMBAGA1UE
-AxMJbG9jYWxob3N0MIG5MA0GCSqGSIb3DQEBAQUAA4GnADCBowKBmwNZN+oG6vJ8
-DAze+FvOKSS49X4xGMxALhKRLhQQb7qvM+7BcMgRv+RKxkX7SNgcxKPLcIHf7QQ6
-DBIlLXuAuVHQtWW9b06q64kBElkEwh6gP5Ia9JrRysGbu2U6NRP+xBU33dVwZjF0
-7ocN9Pp392W4VxEc+g3+FkRzUEaahDGOabmjgKuqDdlKdZLzgJj7+9sEKpb7+FdG
-56rZAgMBAAGjggEkMIIBIDARBglghkgBhvhCAQEEBAMCBkAwMwYJYIZIAYb4QgEN
-BCYWJENVUkwgc3R1bm5lbCBzZXJ2ZXIgdGVzdCBjZXJ0aWZpY2F0ZTALBgNVHQ8E
-BAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwCQYDVR0TBAIwADAdBgNVHQ4EFgQU
-NXc1O5uYPLbHmueoBLl8cK36N6kwNgYIKwYBBQUHAQsEKjAoMCYGCCsGAQUFBzAE
-hhpodHRwczovL2xvY2FsaG9zdDo4NDMzLzUwOTA2BggrBgEFBQcBAQQqMCgwJgYI
-KwYBBQUHMASGGmh0dHBzOi8vbG9jYWxob3N0Ojg0MzMvNTA5MBoGA1UdEQQTMBGH
-BH8AAAGCCWxvY2FsaG9zdDANBgkqhkiG9w0BAQQFAAOBnAAAIHkvI0V6padfc8Lv
-onuNqBwCMIg4SugCslkN597Yb8ZDEAUe3ArkOvzAHUngsD5D0gfbKblKP/P0bN6Y
-Ft896NmH4QFsDAetZcCFf24AM4DbUQo5jtG+dkanI/7IxxNYJ1PQ64/yscdQFvHW
-xhIX3Q6FqABjcN5nc80Rog+b6eS8QRX1BRnQqbGtocuptUgW5mWsSb+DR6pZbA==
+MIIDtzCCAwWgAwIBAgIJAKQXcAmIjEjNMA0GCSqGSIb3DQEBBQUAMHIxCzAJBgNV
+BAYTAlNFMQ4wDAYDVQQIEwVTb2xuYTENMAsGA1UEBxMETW9vbzENMAsGA1UEChME
+SGF4eDEOMAwGA1UECxMFQ29vbHgxETAPBgNVBAMTCHN0b3Jicm9yMRIwEAYDVQQD
+Ewlsb2NhbGhvc3QwHhcNMTQwMjIyMTUzODQ4WhcNMjQwMjIwMTUzODQ4WjByMQsw
+CQYDVQQGEwJTRTEOMAwGA1UECBMFU29sbmExDTALBgNVBAcTBE1vb28xDTALBgNV
+BAoTBEhheHgxDjAMBgNVBAsTBUNvb2x4MREwDwYDVQQDEwhzdG9yYnJvcjESMBAG
+A1UEAxMJbG9jYWxob3N0MIG5MA0GCSqGSIb3DQEBAQUAA4GnADCBowKBmwNZN+oG
+6vJ8DAze+FvOKSS49X4xGMxALhKRLhQQb7qvM+7BcMgRv+RKxkX7SNgcxKPLcIHf
+7QQ6DBIlLXuAuVHQtWW9b06q64kBElkEwh6gP5Ia9JrRysGbu2U6NRP+xBU33dVw
+ZjF07ocN9Pp392W4VxEc+g3+FkRzUEaahDGOabmjgKuqDdlKdZLzgJj7+9sEKpb7
++FdG56rZAgMBAAGjggEeMIIBGjAUBgNVHREEDTALgglsb2NhbGhvc3QwEQYJYIZI
+AYb4QgEBBAQDAgZAMDMGCWCGSAGG+EIBDQQmFiRDVVJMIHN0dW5uZWwgc2VydmVy
+IHRlc3QgY2VydGlmaWNhdGUwCwYDVR0PBAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUF
+BwMBMAkGA1UdEwQCMAAwHQYDVR0OBBYEFDV3NTubmDy2x5rnqAS5fHCt+jepMDYG
+CCsGAQUFBwELBCowKDAmBggrBgEFBQcwBIYaaHR0cHM6Ly9sb2NhbGhvc3Q6ODQz
+My81MDkwNgYIKwYBBQUHAQEEKjAoMCYGCCsGAQUFBzAEhhpodHRwczovL2xvY2Fs
+aG9zdDo4NDMzLzUwOTANBgkqhkiG9w0BAQUFAAOBnAAARdsJWwhbGv9xUGwSrY54
+Mh195+TTPl/KIISq/5rCtqlIkx9zJ9FoBXY2+cFTkK2KwLMSyBFcLGUBrDHRjmBu
+xvW6nWno8axK3lKUzQYkRXJkiQ9XiyYrFs8LJ8Toc8fT5UI4lVe1u4O0ktTgzfvI
+9dLaHRH+PBggi70iMRxagtT1cY2K4xOCxS3zn9C3uEvSRp2OGteZbsG5oA==
 -----END CERTIFICATE-----
 -----BEGIN DH PARAMETERS-----
 MIGHAoGBAMq/KFGh2oy16WzkFs1U71Uz7dIEKvSYfc+zo439pYyVzcD8MkcC15Zb
 -----END CERTIFICATE-----
 -----BEGIN DH PARAMETERS-----
 MIGHAoGBAMq/KFGh2oy16WzkFs1U71Uz7dIEKvSYfc+zo439pYyVzcD8MkcC15Zb
index 91b859b..89f5eef 100644 (file)
 
 use strict;
 use warnings;
 
 use strict;
 use warnings;
+use vars qw($Cpreprocessor);
 
 #
 # configurehelp perl module is generated by configure script
 #
 
 #
 # configurehelp perl module is generated by configure script
 #
-use configurehelp qw(
-    $Cpreprocessor
-    );
+my $rc = eval {
+    require configurehelp;
+    configurehelp->import(qw(
+        $Cpreprocessor
+    ));
+    1;
+};
+# Set default values if configure has not generated a configurehelp.pm file.
+# This is the case with cmake.
+if (!$rc) {
+    $Cpreprocessor = 'cpp';
+}
 
 # we may get the dir root pointed out
 my $root=$ARGV[0] || ".";
 
 # we may get the dir root pointed out
 my $root=$ARGV[0] || ".";
index dafef0e..993ee5c 100644 (file)
Binary files a/tests/testcurl.pdf and b/tests/testcurl.pdf differ
index 5cb25f9..8c804e4 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -73,7 +73,7 @@ use vars qw($name $email $desc $confopts $runtestopts $setupfile $mktarball
             $timestamp $notes);
 
 # version of this script
             $timestamp $notes);
 
 # version of this script
-$version='2012-11-30';
+$version='2014-11-25';
 $fixed=0;
 
 # Determine if we're running from git or a canned copy of curl,
 $fixed=0;
 
 # Determine if we're running from git or a canned copy of curl,
@@ -258,7 +258,13 @@ sub get_host_triplet {
   return $triplet;
 }
 
   return $triplet;
 }
 
-if (open(F, "$setupfile")) {
+if($name && $email && $desc) {
+  # having these fields set are enough to continue, skip reading the setup
+  # file
+  $infixed=4;
+  $fixed=4;
+}
+elsif (open(F, "$setupfile")) {
   while (<F>) {
     if (/(\w+)=(.*)/) {
       eval "\$$1=$2;";
   while (<F>) {
     if (/(\w+)=(.*)/) {
       eval "\$$1=$2;";
@@ -266,7 +272,8 @@ if (open(F, "$setupfile")) {
   }
   close(F);
   $infixed=$fixed;
   }
   close(F);
   $infixed=$fixed;
-} else {
+}
+else {
   $infixed=0;    # so that "additional args to configure" works properly first time...
 }
 
   $infixed=0;    # so that "additional args to configure" works properly first time...
 }
 
@@ -333,6 +340,7 @@ logit "EMAIL = $email";
 logit "DESC = $desc";
 logit "NOTES = $notes";
 logit "CONFOPTS = $confopts";
 logit "DESC = $desc";
 logit "NOTES = $notes";
 logit "CONFOPTS = $confopts";
+logit "RUNTESTOPTS = ".$runtestopts;
 logit "CPPFLAGS = ".$ENV{CPPFLAGS};
 logit "CFLAGS = ".$ENV{CFLAGS};
 logit "LDFLAGS = ".$ENV{LDFLAGS};
 logit "CPPFLAGS = ".$ENV{CPPFLAGS};
 logit "CFLAGS = ".$ENV{CFLAGS};
 logit "LDFLAGS = ".$ENV{LDFLAGS};
@@ -400,40 +408,54 @@ chdir $CURLDIR;
 
 # Do the git thing, or not...
 if ($git) {
 
 # Do the git thing, or not...
 if ($git) {
+  my $gitstat = 0;
+  my @commits;
+
   # update quietly to the latest git
   if($nogitpull) {
     logit "skipping git pull (--nogitpull)";
   } else {
   # update quietly to the latest git
   if($nogitpull) {
     logit "skipping git pull (--nogitpull)";
   } else {
-    my $gitstat = 0;
-    my @commits;
     logit "run git pull in curl";
     system("git pull 2>&1");
     $gitstat += $?;
     logit "failed to update from curl git ($?), continue anyway" if ($?);
     logit "run git pull in curl";
     system("git pull 2>&1");
     $gitstat += $?;
     logit "failed to update from curl git ($?), continue anyway" if ($?);
+
+    # Set timestamp to the UTC the git update took place.
+    $timestamp = scalar(gmtime)." UTC" if (!$gitstat);
+  }
+
+  # get the last 5 commits for show (even if no pull was made)
+  @commits=`git log --pretty=oneline --abbrev-commit -5`;
+  logit "The most recent curl git commits:";
+  for (@commits) {
+    chomp ($_);
+    logit "  $_";
+  }
+
+  if (-d "ares/.git") {
+    chdir "ares";
+
+    if($nogitpull) {
+      logit "skipping git pull (--nogitpull) in ares";
+    } else {
+      logit "run git pull in ares";
+      system("git pull 2>&1");
+      $gitstat += $?;
+      logit "failed to update from ares git ($?), continue anyway" if ($?);
+
+      # Set timestamp to the UTC the git update took place.
+      $timestamp = scalar(gmtime)." UTC" if (!$gitstat);
+    }
+
     # get the last 5 commits for show (even if no pull was made)
     @commits=`git log --pretty=oneline --abbrev-commit -5`;
     # get the last 5 commits for show (even if no pull was made)
     @commits=`git log --pretty=oneline --abbrev-commit -5`;
-    logit "The most recent curl git commits:";
+    logit "The most recent ares git commits:";
     for (@commits) {
       chomp ($_);
       logit "  $_";
     }
     for (@commits) {
       chomp ($_);
       logit "  $_";
     }
-    if (-d "ares/.git") {
-      chdir "ares";
-      logit "run git pull in ares";
-      system("git pull 2>&1");
-      $gitstat += $?;
-      logit "failed to update from ares git ($?), continue anyway" if ($?);
-      # get the last 5 commits for show (even if no pull was made)
-      @commits=`git log --pretty=oneline --abbrev-commit -5`;
-      logit "The most recent ares git commits:";
-      for (@commits) {
-        chomp ($_);
-        logit "  $_";
-      }
-      chdir "$pwd/$CURLDIR";
-    }
-    # Set timestamp to the UTC the git update took place.
-    $timestamp = scalar(gmtime)." UTC" if (!$gitstat);
+
+    chdir "$pwd/$CURLDIR";
   }
 
   if($nobuildconf) {
   }
 
   if($nobuildconf) {
index eb5f964..cd2ed53 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -114,9 +114,10 @@ am__EXEEXT_1 = unit1300$(EXEEXT) unit1301$(EXEEXT) unit1302$(EXEEXT) \
        unit1303$(EXEEXT) unit1304$(EXEEXT) unit1305$(EXEEXT) \
        unit1307$(EXEEXT) unit1308$(EXEEXT) unit1309$(EXEEXT) \
        unit1330$(EXEEXT) unit1394$(EXEEXT) unit1395$(EXEEXT) \
        unit1303$(EXEEXT) unit1304$(EXEEXT) unit1305$(EXEEXT) \
        unit1307$(EXEEXT) unit1308$(EXEEXT) unit1309$(EXEEXT) \
        unit1330$(EXEEXT) unit1394$(EXEEXT) unit1395$(EXEEXT) \
-       unit1396$(EXEEXT)
+       unit1396$(EXEEXT) unit1397$(EXEEXT) unit1398$(EXEEXT)
 PROGRAMS = $(noinst_PROGRAMS)
 PROGRAMS = $(noinst_PROGRAMS)
-am__objects_1 = unit1300-first.$(OBJEXT)
+am__dirstamp = $(am__leading_dot)dirstamp
+am__objects_1 = ../libtest/unit1300-first.$(OBJEXT)
 am_unit1300_OBJECTS = unit1300-unit1300.$(OBJEXT) $(am__objects_1)
 unit1300_OBJECTS = $(am_unit1300_OBJECTS)
 unit1300_LDADD = $(LDADD)
 am_unit1300_OBJECTS = unit1300-unit1300.$(OBJEXT) $(am__objects_1)
 unit1300_OBJECTS = $(am_unit1300_OBJECTS)
 unit1300_LDADD = $(LDADD)
@@ -126,79 +127,91 @@ AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
 am__v_lt_1 = 
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
 am__v_lt_1 = 
-am__objects_2 = unit1301-first.$(OBJEXT)
+am__objects_2 = ../libtest/unit1301-first.$(OBJEXT)
 am_unit1301_OBJECTS = unit1301-unit1301.$(OBJEXT) $(am__objects_2)
 unit1301_OBJECTS = $(am_unit1301_OBJECTS)
 unit1301_LDADD = $(LDADD)
 unit1301_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
        $(top_builddir)/lib/libcurlu.la
 am_unit1301_OBJECTS = unit1301-unit1301.$(OBJEXT) $(am__objects_2)
 unit1301_OBJECTS = $(am_unit1301_OBJECTS)
 unit1301_LDADD = $(LDADD)
 unit1301_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
        $(top_builddir)/lib/libcurlu.la
-am__objects_3 = unit1302-first.$(OBJEXT)
+am__objects_3 = ../libtest/unit1302-first.$(OBJEXT)
 am_unit1302_OBJECTS = unit1302-unit1302.$(OBJEXT) $(am__objects_3)
 unit1302_OBJECTS = $(am_unit1302_OBJECTS)
 unit1302_LDADD = $(LDADD)
 unit1302_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
        $(top_builddir)/lib/libcurlu.la
 am_unit1302_OBJECTS = unit1302-unit1302.$(OBJEXT) $(am__objects_3)
 unit1302_OBJECTS = $(am_unit1302_OBJECTS)
 unit1302_LDADD = $(LDADD)
 unit1302_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
        $(top_builddir)/lib/libcurlu.la
-am__objects_4 = unit1303-first.$(OBJEXT)
+am__objects_4 = ../libtest/unit1303-first.$(OBJEXT)
 am_unit1303_OBJECTS = unit1303-unit1303.$(OBJEXT) $(am__objects_4)
 unit1303_OBJECTS = $(am_unit1303_OBJECTS)
 unit1303_LDADD = $(LDADD)
 unit1303_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
        $(top_builddir)/lib/libcurlu.la
 am_unit1303_OBJECTS = unit1303-unit1303.$(OBJEXT) $(am__objects_4)
 unit1303_OBJECTS = $(am_unit1303_OBJECTS)
 unit1303_LDADD = $(LDADD)
 unit1303_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
        $(top_builddir)/lib/libcurlu.la
-am__objects_5 = unit1304-first.$(OBJEXT)
+am__objects_5 = ../libtest/unit1304-first.$(OBJEXT)
 am_unit1304_OBJECTS = unit1304-unit1304.$(OBJEXT) $(am__objects_5)
 unit1304_OBJECTS = $(am_unit1304_OBJECTS)
 unit1304_LDADD = $(LDADD)
 unit1304_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
        $(top_builddir)/lib/libcurlu.la
 am_unit1304_OBJECTS = unit1304-unit1304.$(OBJEXT) $(am__objects_5)
 unit1304_OBJECTS = $(am_unit1304_OBJECTS)
 unit1304_LDADD = $(LDADD)
 unit1304_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
        $(top_builddir)/lib/libcurlu.la
-am__objects_6 = unit1305-first.$(OBJEXT)
+am__objects_6 = ../libtest/unit1305-first.$(OBJEXT)
 am_unit1305_OBJECTS = unit1305-unit1305.$(OBJEXT) $(am__objects_6)
 unit1305_OBJECTS = $(am_unit1305_OBJECTS)
 unit1305_LDADD = $(LDADD)
 unit1305_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
        $(top_builddir)/lib/libcurlu.la
 am_unit1305_OBJECTS = unit1305-unit1305.$(OBJEXT) $(am__objects_6)
 unit1305_OBJECTS = $(am_unit1305_OBJECTS)
 unit1305_LDADD = $(LDADD)
 unit1305_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
        $(top_builddir)/lib/libcurlu.la
-am__objects_7 = unit1307-first.$(OBJEXT)
+am__objects_7 = ../libtest/unit1307-first.$(OBJEXT)
 am_unit1307_OBJECTS = unit1307-unit1307.$(OBJEXT) $(am__objects_7)
 unit1307_OBJECTS = $(am_unit1307_OBJECTS)
 unit1307_LDADD = $(LDADD)
 unit1307_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
        $(top_builddir)/lib/libcurlu.la
 am_unit1307_OBJECTS = unit1307-unit1307.$(OBJEXT) $(am__objects_7)
 unit1307_OBJECTS = $(am_unit1307_OBJECTS)
 unit1307_LDADD = $(LDADD)
 unit1307_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
        $(top_builddir)/lib/libcurlu.la
-am__objects_8 = unit1308-first.$(OBJEXT)
+am__objects_8 = ../libtest/unit1308-first.$(OBJEXT)
 am_unit1308_OBJECTS = unit1308-unit1308.$(OBJEXT) $(am__objects_8)
 unit1308_OBJECTS = $(am_unit1308_OBJECTS)
 unit1308_LDADD = $(LDADD)
 unit1308_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
        $(top_builddir)/lib/libcurlu.la
 am_unit1308_OBJECTS = unit1308-unit1308.$(OBJEXT) $(am__objects_8)
 unit1308_OBJECTS = $(am_unit1308_OBJECTS)
 unit1308_LDADD = $(LDADD)
 unit1308_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
        $(top_builddir)/lib/libcurlu.la
-am__objects_9 = unit1309-first.$(OBJEXT)
+am__objects_9 = ../libtest/unit1309-first.$(OBJEXT)
 am_unit1309_OBJECTS = unit1309-unit1309.$(OBJEXT) $(am__objects_9)
 unit1309_OBJECTS = $(am_unit1309_OBJECTS)
 unit1309_LDADD = $(LDADD)
 unit1309_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
        $(top_builddir)/lib/libcurlu.la
 am_unit1309_OBJECTS = unit1309-unit1309.$(OBJEXT) $(am__objects_9)
 unit1309_OBJECTS = $(am_unit1309_OBJECTS)
 unit1309_LDADD = $(LDADD)
 unit1309_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
        $(top_builddir)/lib/libcurlu.la
-am__objects_10 = unit1330-first.$(OBJEXT)
+am__objects_10 = ../libtest/unit1330-first.$(OBJEXT)
 am_unit1330_OBJECTS = unit1330-unit1330.$(OBJEXT) $(am__objects_10)
 unit1330_OBJECTS = $(am_unit1330_OBJECTS)
 unit1330_LDADD = $(LDADD)
 unit1330_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
        $(top_builddir)/lib/libcurlu.la
 am_unit1330_OBJECTS = unit1330-unit1330.$(OBJEXT) $(am__objects_10)
 unit1330_OBJECTS = $(am_unit1330_OBJECTS)
 unit1330_LDADD = $(LDADD)
 unit1330_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
        $(top_builddir)/lib/libcurlu.la
-am__objects_11 = unit1394-first.$(OBJEXT)
+am__objects_11 = ../libtest/unit1394-first.$(OBJEXT)
 am_unit1394_OBJECTS = unit1394-unit1394.$(OBJEXT) $(am__objects_11)
 unit1394_OBJECTS = $(am_unit1394_OBJECTS)
 unit1394_DEPENDENCIES = $(top_builddir)/lib/libcurl.la
 unit1394_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
        $(unit1394_LDFLAGS) $(LDFLAGS) -o $@
 am_unit1394_OBJECTS = unit1394-unit1394.$(OBJEXT) $(am__objects_11)
 unit1394_OBJECTS = $(am_unit1394_OBJECTS)
 unit1394_DEPENDENCIES = $(top_builddir)/lib/libcurl.la
 unit1394_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
        $(unit1394_LDFLAGS) $(LDFLAGS) -o $@
-am__objects_12 = unit1395-first.$(OBJEXT)
+am__objects_12 = ../libtest/unit1395-first.$(OBJEXT)
 am_unit1395_OBJECTS = unit1395-unit1395.$(OBJEXT) $(am__objects_12)
 unit1395_OBJECTS = $(am_unit1395_OBJECTS)
 unit1395_LDADD = $(LDADD)
 unit1395_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
        $(top_builddir)/lib/libcurlu.la
 am_unit1395_OBJECTS = unit1395-unit1395.$(OBJEXT) $(am__objects_12)
 unit1395_OBJECTS = $(am_unit1395_OBJECTS)
 unit1395_LDADD = $(LDADD)
 unit1395_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
        $(top_builddir)/lib/libcurlu.la
-am__objects_13 = unit1396-first.$(OBJEXT)
+am__objects_13 = ../libtest/unit1396-first.$(OBJEXT)
 am_unit1396_OBJECTS = unit1396-unit1396.$(OBJEXT) $(am__objects_13)
 unit1396_OBJECTS = $(am_unit1396_OBJECTS)
 unit1396_LDADD = $(LDADD)
 unit1396_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
        $(top_builddir)/lib/libcurlu.la
 am_unit1396_OBJECTS = unit1396-unit1396.$(OBJEXT) $(am__objects_13)
 unit1396_OBJECTS = $(am_unit1396_OBJECTS)
 unit1396_LDADD = $(LDADD)
 unit1396_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
        $(top_builddir)/lib/libcurlu.la
+am__objects_14 = ../libtest/unit1397-first.$(OBJEXT)
+am_unit1397_OBJECTS = unit1397-unit1397.$(OBJEXT) $(am__objects_14)
+unit1397_OBJECTS = $(am_unit1397_OBJECTS)
+unit1397_LDADD = $(LDADD)
+unit1397_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
+       $(top_builddir)/lib/libcurlu.la
+am__objects_15 = ../libtest/unit1398-first.$(OBJEXT)
+am_unit1398_OBJECTS = unit1398-unit1398.$(OBJEXT) $(am__objects_15)
+unit1398_OBJECTS = $(am_unit1398_OBJECTS)
+unit1398_LDADD = $(LDADD)
+unit1398_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
+       $(top_builddir)/lib/libcurlu.la
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
 am__v_P_0 = false
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
 am__v_P_0 = false
@@ -237,12 +250,13 @@ SOURCES = $(unit1300_SOURCES) $(unit1301_SOURCES) $(unit1302_SOURCES) \
        $(unit1303_SOURCES) $(unit1304_SOURCES) $(unit1305_SOURCES) \
        $(unit1307_SOURCES) $(unit1308_SOURCES) $(unit1309_SOURCES) \
        $(unit1330_SOURCES) $(unit1394_SOURCES) $(unit1395_SOURCES) \
        $(unit1303_SOURCES) $(unit1304_SOURCES) $(unit1305_SOURCES) \
        $(unit1307_SOURCES) $(unit1308_SOURCES) $(unit1309_SOURCES) \
        $(unit1330_SOURCES) $(unit1394_SOURCES) $(unit1395_SOURCES) \
-       $(unit1396_SOURCES)
+       $(unit1396_SOURCES) $(unit1397_SOURCES) $(unit1398_SOURCES)
 DIST_SOURCES = $(unit1300_SOURCES) $(unit1301_SOURCES) \
        $(unit1302_SOURCES) $(unit1303_SOURCES) $(unit1304_SOURCES) \
        $(unit1305_SOURCES) $(unit1307_SOURCES) $(unit1308_SOURCES) \
        $(unit1309_SOURCES) $(unit1330_SOURCES) $(unit1394_SOURCES) \
 DIST_SOURCES = $(unit1300_SOURCES) $(unit1301_SOURCES) \
        $(unit1302_SOURCES) $(unit1303_SOURCES) $(unit1304_SOURCES) \
        $(unit1305_SOURCES) $(unit1307_SOURCES) $(unit1308_SOURCES) \
        $(unit1309_SOURCES) $(unit1330_SOURCES) $(unit1394_SOURCES) \
-       $(unit1395_SOURCES) $(unit1396_SOURCES)
+       $(unit1395_SOURCES) $(unit1396_SOURCES) $(unit1397_SOURCES) \
+       $(unit1398_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -300,6 +314,7 @@ CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
 CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
 CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
 CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
+CURL_DISABLE_SMB = @CURL_DISABLE_SMB@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
 CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
 CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
@@ -324,7 +339,6 @@ GREP = @GREP@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
 HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
 HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
 HAVE_LIBZ = @HAVE_LIBZ@
-HAVE_NSS_INITCONTEXT = @HAVE_NSS_INITCONTEXT@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
 HAVE_SSLEAY_SRP = @HAVE_SSLEAY_SRP@
 IDN_ENABLED = @IDN_ENABLED@
 INSTALL = @INSTALL@
@@ -333,7 +347,6 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 IPV6_ENABLED = @IPV6_ENABLED@
-KRB4_ENABLED = @KRB4_ENABLED@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBCURL_LIBS = @LIBCURL_LIBS@
@@ -356,6 +369,7 @@ MKDIR_P = @MKDIR_P@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
 NM = @NM@
 NMEDIT = @NMEDIT@
 NROFF = @NROFF@
+NSS_LIBS = @NSS_LIBS@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
 OTOOL = @OTOOL@
@@ -391,11 +405,13 @@ USE_GNUTLS = @USE_GNUTLS@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
 USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH2 = @USE_LIBSSH2@
+USE_NGHTTP2 = @USE_NGHTTP2@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_POLARSSL = @USE_POLARSSL@
 USE_SCHANNEL = @USE_SCHANNEL@
 USE_SSLEAY = @USE_SSLEAY@
+USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
 USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
@@ -523,7 +539,7 @@ UNITFILES = curlcheck.h \
 
 # These are all unit test programs
 UNITPROGS = unit1300 unit1301 unit1302 unit1303 unit1304 unit1305 unit1307 \
 
 # These are all unit test programs
 UNITPROGS = unit1300 unit1301 unit1302 unit1303 unit1304 unit1305 unit1307 \
- unit1308 unit1309 unit1330 unit1394 unit1395 unit1396
+ unit1308 unit1309 unit1330 unit1394 unit1395 unit1396 unit1397 unit1398
 
 unit1300_SOURCES = unit1300.c $(UNITFILES)
 unit1300_CPPFLAGS = $(AM_CPPFLAGS)
 
 unit1300_SOURCES = unit1300.c $(UNITFILES)
 unit1300_CPPFLAGS = $(AM_CPPFLAGS)
@@ -554,6 +570,10 @@ unit1395_SOURCES = unit1395.c $(UNITFILES)
 unit1395_CPPFLAGS = $(AM_CPPFLAGS)
 unit1396_SOURCES = unit1396.c $(UNITFILES)
 unit1396_CPPFLAGS = $(AM_CPPFLAGS)
 unit1395_CPPFLAGS = $(AM_CPPFLAGS)
 unit1396_SOURCES = unit1396.c $(UNITFILES)
 unit1396_CPPFLAGS = $(AM_CPPFLAGS)
+unit1397_SOURCES = unit1397.c $(UNITFILES)
+unit1397_CPPFLAGS = $(AM_CPPFLAGS)
+unit1398_SOURCES = unit1398.c $(UNITFILES)
+unit1398_CPPFLAGS = $(AM_CPPFLAGS)
 all: all-am
 
 .SUFFIXES:
 all: all-am
 
 .SUFFIXES:
@@ -598,109 +618,161 @@ clean-noinstPROGRAMS:
        list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
        echo " rm -f" $$list; \
        rm -f $$list
        list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
        echo " rm -f" $$list; \
        rm -f $$list
+../libtest/$(am__dirstamp):
+       @$(MKDIR_P) ../libtest
+       @: > ../libtest/$(am__dirstamp)
+../libtest/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) ../libtest/$(DEPDIR)
+       @: > ../libtest/$(DEPDIR)/$(am__dirstamp)
+../libtest/unit1300-first.$(OBJEXT): ../libtest/$(am__dirstamp) \
+       ../libtest/$(DEPDIR)/$(am__dirstamp)
 
 unit1300$(EXEEXT): $(unit1300_OBJECTS) $(unit1300_DEPENDENCIES) $(EXTRA_unit1300_DEPENDENCIES) 
        @rm -f unit1300$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(unit1300_OBJECTS) $(unit1300_LDADD) $(LIBS)
 
 unit1300$(EXEEXT): $(unit1300_OBJECTS) $(unit1300_DEPENDENCIES) $(EXTRA_unit1300_DEPENDENCIES) 
        @rm -f unit1300$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(unit1300_OBJECTS) $(unit1300_LDADD) $(LIBS)
+../libtest/unit1301-first.$(OBJEXT): ../libtest/$(am__dirstamp) \
+       ../libtest/$(DEPDIR)/$(am__dirstamp)
 
 unit1301$(EXEEXT): $(unit1301_OBJECTS) $(unit1301_DEPENDENCIES) $(EXTRA_unit1301_DEPENDENCIES) 
        @rm -f unit1301$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(unit1301_OBJECTS) $(unit1301_LDADD) $(LIBS)
 
 unit1301$(EXEEXT): $(unit1301_OBJECTS) $(unit1301_DEPENDENCIES) $(EXTRA_unit1301_DEPENDENCIES) 
        @rm -f unit1301$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(unit1301_OBJECTS) $(unit1301_LDADD) $(LIBS)
+../libtest/unit1302-first.$(OBJEXT): ../libtest/$(am__dirstamp) \
+       ../libtest/$(DEPDIR)/$(am__dirstamp)
 
 unit1302$(EXEEXT): $(unit1302_OBJECTS) $(unit1302_DEPENDENCIES) $(EXTRA_unit1302_DEPENDENCIES) 
        @rm -f unit1302$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(unit1302_OBJECTS) $(unit1302_LDADD) $(LIBS)
 
 unit1302$(EXEEXT): $(unit1302_OBJECTS) $(unit1302_DEPENDENCIES) $(EXTRA_unit1302_DEPENDENCIES) 
        @rm -f unit1302$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(unit1302_OBJECTS) $(unit1302_LDADD) $(LIBS)
+../libtest/unit1303-first.$(OBJEXT): ../libtest/$(am__dirstamp) \
+       ../libtest/$(DEPDIR)/$(am__dirstamp)
 
 unit1303$(EXEEXT): $(unit1303_OBJECTS) $(unit1303_DEPENDENCIES) $(EXTRA_unit1303_DEPENDENCIES) 
        @rm -f unit1303$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(unit1303_OBJECTS) $(unit1303_LDADD) $(LIBS)
 
 unit1303$(EXEEXT): $(unit1303_OBJECTS) $(unit1303_DEPENDENCIES) $(EXTRA_unit1303_DEPENDENCIES) 
        @rm -f unit1303$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(unit1303_OBJECTS) $(unit1303_LDADD) $(LIBS)
+../libtest/unit1304-first.$(OBJEXT): ../libtest/$(am__dirstamp) \
+       ../libtest/$(DEPDIR)/$(am__dirstamp)
 
 unit1304$(EXEEXT): $(unit1304_OBJECTS) $(unit1304_DEPENDENCIES) $(EXTRA_unit1304_DEPENDENCIES) 
        @rm -f unit1304$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(unit1304_OBJECTS) $(unit1304_LDADD) $(LIBS)
 
 unit1304$(EXEEXT): $(unit1304_OBJECTS) $(unit1304_DEPENDENCIES) $(EXTRA_unit1304_DEPENDENCIES) 
        @rm -f unit1304$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(unit1304_OBJECTS) $(unit1304_LDADD) $(LIBS)
+../libtest/unit1305-first.$(OBJEXT): ../libtest/$(am__dirstamp) \
+       ../libtest/$(DEPDIR)/$(am__dirstamp)
 
 unit1305$(EXEEXT): $(unit1305_OBJECTS) $(unit1305_DEPENDENCIES) $(EXTRA_unit1305_DEPENDENCIES) 
        @rm -f unit1305$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(unit1305_OBJECTS) $(unit1305_LDADD) $(LIBS)
 
 unit1305$(EXEEXT): $(unit1305_OBJECTS) $(unit1305_DEPENDENCIES) $(EXTRA_unit1305_DEPENDENCIES) 
        @rm -f unit1305$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(unit1305_OBJECTS) $(unit1305_LDADD) $(LIBS)
+../libtest/unit1307-first.$(OBJEXT): ../libtest/$(am__dirstamp) \
+       ../libtest/$(DEPDIR)/$(am__dirstamp)
 
 unit1307$(EXEEXT): $(unit1307_OBJECTS) $(unit1307_DEPENDENCIES) $(EXTRA_unit1307_DEPENDENCIES) 
        @rm -f unit1307$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(unit1307_OBJECTS) $(unit1307_LDADD) $(LIBS)
 
 unit1307$(EXEEXT): $(unit1307_OBJECTS) $(unit1307_DEPENDENCIES) $(EXTRA_unit1307_DEPENDENCIES) 
        @rm -f unit1307$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(unit1307_OBJECTS) $(unit1307_LDADD) $(LIBS)
+../libtest/unit1308-first.$(OBJEXT): ../libtest/$(am__dirstamp) \
+       ../libtest/$(DEPDIR)/$(am__dirstamp)
 
 unit1308$(EXEEXT): $(unit1308_OBJECTS) $(unit1308_DEPENDENCIES) $(EXTRA_unit1308_DEPENDENCIES) 
        @rm -f unit1308$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(unit1308_OBJECTS) $(unit1308_LDADD) $(LIBS)
 
 unit1308$(EXEEXT): $(unit1308_OBJECTS) $(unit1308_DEPENDENCIES) $(EXTRA_unit1308_DEPENDENCIES) 
        @rm -f unit1308$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(unit1308_OBJECTS) $(unit1308_LDADD) $(LIBS)
+../libtest/unit1309-first.$(OBJEXT): ../libtest/$(am__dirstamp) \
+       ../libtest/$(DEPDIR)/$(am__dirstamp)
 
 unit1309$(EXEEXT): $(unit1309_OBJECTS) $(unit1309_DEPENDENCIES) $(EXTRA_unit1309_DEPENDENCIES) 
        @rm -f unit1309$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(unit1309_OBJECTS) $(unit1309_LDADD) $(LIBS)
 
 unit1309$(EXEEXT): $(unit1309_OBJECTS) $(unit1309_DEPENDENCIES) $(EXTRA_unit1309_DEPENDENCIES) 
        @rm -f unit1309$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(unit1309_OBJECTS) $(unit1309_LDADD) $(LIBS)
+../libtest/unit1330-first.$(OBJEXT): ../libtest/$(am__dirstamp) \
+       ../libtest/$(DEPDIR)/$(am__dirstamp)
 
 unit1330$(EXEEXT): $(unit1330_OBJECTS) $(unit1330_DEPENDENCIES) $(EXTRA_unit1330_DEPENDENCIES) 
        @rm -f unit1330$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(unit1330_OBJECTS) $(unit1330_LDADD) $(LIBS)
 
 unit1330$(EXEEXT): $(unit1330_OBJECTS) $(unit1330_DEPENDENCIES) $(EXTRA_unit1330_DEPENDENCIES) 
        @rm -f unit1330$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(unit1330_OBJECTS) $(unit1330_LDADD) $(LIBS)
+../libtest/unit1394-first.$(OBJEXT): ../libtest/$(am__dirstamp) \
+       ../libtest/$(DEPDIR)/$(am__dirstamp)
 
 unit1394$(EXEEXT): $(unit1394_OBJECTS) $(unit1394_DEPENDENCIES) $(EXTRA_unit1394_DEPENDENCIES) 
        @rm -f unit1394$(EXEEXT)
        $(AM_V_CCLD)$(unit1394_LINK) $(unit1394_OBJECTS) $(unit1394_LDADD) $(LIBS)
 
 unit1394$(EXEEXT): $(unit1394_OBJECTS) $(unit1394_DEPENDENCIES) $(EXTRA_unit1394_DEPENDENCIES) 
        @rm -f unit1394$(EXEEXT)
        $(AM_V_CCLD)$(unit1394_LINK) $(unit1394_OBJECTS) $(unit1394_LDADD) $(LIBS)
+../libtest/unit1395-first.$(OBJEXT): ../libtest/$(am__dirstamp) \
+       ../libtest/$(DEPDIR)/$(am__dirstamp)
 
 unit1395$(EXEEXT): $(unit1395_OBJECTS) $(unit1395_DEPENDENCIES) $(EXTRA_unit1395_DEPENDENCIES) 
        @rm -f unit1395$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(unit1395_OBJECTS) $(unit1395_LDADD) $(LIBS)
 
 unit1395$(EXEEXT): $(unit1395_OBJECTS) $(unit1395_DEPENDENCIES) $(EXTRA_unit1395_DEPENDENCIES) 
        @rm -f unit1395$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(unit1395_OBJECTS) $(unit1395_LDADD) $(LIBS)
+../libtest/unit1396-first.$(OBJEXT): ../libtest/$(am__dirstamp) \
+       ../libtest/$(DEPDIR)/$(am__dirstamp)
 
 unit1396$(EXEEXT): $(unit1396_OBJECTS) $(unit1396_DEPENDENCIES) $(EXTRA_unit1396_DEPENDENCIES) 
        @rm -f unit1396$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(unit1396_OBJECTS) $(unit1396_LDADD) $(LIBS)
 
 unit1396$(EXEEXT): $(unit1396_OBJECTS) $(unit1396_DEPENDENCIES) $(EXTRA_unit1396_DEPENDENCIES) 
        @rm -f unit1396$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(unit1396_OBJECTS) $(unit1396_LDADD) $(LIBS)
+../libtest/unit1397-first.$(OBJEXT): ../libtest/$(am__dirstamp) \
+       ../libtest/$(DEPDIR)/$(am__dirstamp)
+
+unit1397$(EXEEXT): $(unit1397_OBJECTS) $(unit1397_DEPENDENCIES) $(EXTRA_unit1397_DEPENDENCIES) 
+       @rm -f unit1397$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(unit1397_OBJECTS) $(unit1397_LDADD) $(LIBS)
+../libtest/unit1398-first.$(OBJEXT): ../libtest/$(am__dirstamp) \
+       ../libtest/$(DEPDIR)/$(am__dirstamp)
+
+unit1398$(EXEEXT): $(unit1398_OBJECTS) $(unit1398_DEPENDENCIES) $(EXTRA_unit1398_DEPENDENCIES) 
+       @rm -f unit1398$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(unit1398_OBJECTS) $(unit1398_LDADD) $(LIBS)
 
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
 
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
+       -rm -f ../libtest/*.$(OBJEXT)
 
 distclean-compile:
        -rm -f *.tab.c
 
 
 distclean-compile:
        -rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1300-first.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1300-first.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1301-first.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1302-first.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1303-first.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1304-first.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1305-first.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1307-first.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1308-first.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1309-first.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1330-first.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1394-first.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1395-first.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1396-first.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1397-first.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1398-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1300-unit1300.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1300-unit1300.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1301-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1301-unit1301.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1301-unit1301.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1302-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1302-unit1302.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1302-unit1302.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1303-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1303-unit1303.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1303-unit1303.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1304-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1304-unit1304.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1304-unit1304.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1305-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1305-unit1305.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1305-unit1305.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1307-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1307-unit1307.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1307-unit1307.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1308-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1308-unit1308.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1308-unit1308.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1309-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1309-unit1309.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1309-unit1309.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1330-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1330-unit1330.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1330-unit1330.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1394-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1394-unit1394.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1394-unit1394.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1395-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1395-unit1395.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1395-unit1395.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1396-first.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1396-unit1396.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1396-unit1396.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1397-unit1397.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1398-unit1398.Po@am__quote@
 
 .c.o:
 
 .c.o:
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
 
 .c.obj:
 
 .c.obj:
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
 
 .c.lo:
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+@am__fastdepCC_TRUE@   $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Plo
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
@@ -719,19 +791,19 @@ unit1300-unit1300.obj: unit1300.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1300_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1300-unit1300.obj `if test -f 'unit1300.c'; then $(CYGPATH_W) 'unit1300.c'; else $(CYGPATH_W) '$(srcdir)/unit1300.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1300_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1300-unit1300.obj `if test -f 'unit1300.c'; then $(CYGPATH_W) 'unit1300.c'; else $(CYGPATH_W) '$(srcdir)/unit1300.c'; fi`
 
-unit1300-first.o: ../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1300_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1300-first.o -MD -MP -MF $(DEPDIR)/unit1300-first.Tpo -c -o unit1300-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1300-first.Tpo $(DEPDIR)/unit1300-first.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='unit1300-first.o' libtool=no @AMDEPBACKSLASH@
+../libtest/unit1300-first.o: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1300_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1300-first.o -MD -MP -MF ../libtest/$(DEPDIR)/unit1300-first.Tpo -c -o ../libtest/unit1300-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1300-first.Tpo ../libtest/$(DEPDIR)/unit1300-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1300-first.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1300_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1300-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1300_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1300-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
 
 
-unit1300-first.obj: ../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1300_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1300-first.obj -MD -MP -MF $(DEPDIR)/unit1300-first.Tpo -c -o unit1300-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1300-first.Tpo $(DEPDIR)/unit1300-first.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='unit1300-first.obj' libtool=no @AMDEPBACKSLASH@
+../libtest/unit1300-first.obj: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1300_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1300-first.obj -MD -MP -MF ../libtest/$(DEPDIR)/unit1300-first.Tpo -c -o ../libtest/unit1300-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1300-first.Tpo ../libtest/$(DEPDIR)/unit1300-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1300-first.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1300_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1300-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1300_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1300-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
 
 unit1301-unit1301.o: unit1301.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1301_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1301-unit1301.o -MD -MP -MF $(DEPDIR)/unit1301-unit1301.Tpo -c -o unit1301-unit1301.o `test -f 'unit1301.c' || echo '$(srcdir)/'`unit1301.c
 
 unit1301-unit1301.o: unit1301.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1301_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1301-unit1301.o -MD -MP -MF $(DEPDIR)/unit1301-unit1301.Tpo -c -o unit1301-unit1301.o `test -f 'unit1301.c' || echo '$(srcdir)/'`unit1301.c
@@ -747,19 +819,19 @@ unit1301-unit1301.obj: unit1301.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1301_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1301-unit1301.obj `if test -f 'unit1301.c'; then $(CYGPATH_W) 'unit1301.c'; else $(CYGPATH_W) '$(srcdir)/unit1301.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1301_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1301-unit1301.obj `if test -f 'unit1301.c'; then $(CYGPATH_W) 'unit1301.c'; else $(CYGPATH_W) '$(srcdir)/unit1301.c'; fi`
 
-unit1301-first.o: ../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1301_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1301-first.o -MD -MP -MF $(DEPDIR)/unit1301-first.Tpo -c -o unit1301-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1301-first.Tpo $(DEPDIR)/unit1301-first.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='unit1301-first.o' libtool=no @AMDEPBACKSLASH@
+../libtest/unit1301-first.o: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1301_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1301-first.o -MD -MP -MF ../libtest/$(DEPDIR)/unit1301-first.Tpo -c -o ../libtest/unit1301-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1301-first.Tpo ../libtest/$(DEPDIR)/unit1301-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1301-first.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1301_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1301-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1301_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1301-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
 
 
-unit1301-first.obj: ../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1301_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1301-first.obj -MD -MP -MF $(DEPDIR)/unit1301-first.Tpo -c -o unit1301-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1301-first.Tpo $(DEPDIR)/unit1301-first.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='unit1301-first.obj' libtool=no @AMDEPBACKSLASH@
+../libtest/unit1301-first.obj: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1301_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1301-first.obj -MD -MP -MF ../libtest/$(DEPDIR)/unit1301-first.Tpo -c -o ../libtest/unit1301-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1301-first.Tpo ../libtest/$(DEPDIR)/unit1301-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1301-first.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1301_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1301-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1301_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1301-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
 
 unit1302-unit1302.o: unit1302.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1302_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1302-unit1302.o -MD -MP -MF $(DEPDIR)/unit1302-unit1302.Tpo -c -o unit1302-unit1302.o `test -f 'unit1302.c' || echo '$(srcdir)/'`unit1302.c
 
 unit1302-unit1302.o: unit1302.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1302_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1302-unit1302.o -MD -MP -MF $(DEPDIR)/unit1302-unit1302.Tpo -c -o unit1302-unit1302.o `test -f 'unit1302.c' || echo '$(srcdir)/'`unit1302.c
@@ -775,19 +847,19 @@ unit1302-unit1302.obj: unit1302.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1302_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1302-unit1302.obj `if test -f 'unit1302.c'; then $(CYGPATH_W) 'unit1302.c'; else $(CYGPATH_W) '$(srcdir)/unit1302.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1302_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1302-unit1302.obj `if test -f 'unit1302.c'; then $(CYGPATH_W) 'unit1302.c'; else $(CYGPATH_W) '$(srcdir)/unit1302.c'; fi`
 
-unit1302-first.o: ../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1302_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1302-first.o -MD -MP -MF $(DEPDIR)/unit1302-first.Tpo -c -o unit1302-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1302-first.Tpo $(DEPDIR)/unit1302-first.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='unit1302-first.o' libtool=no @AMDEPBACKSLASH@
+../libtest/unit1302-first.o: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1302_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1302-first.o -MD -MP -MF ../libtest/$(DEPDIR)/unit1302-first.Tpo -c -o ../libtest/unit1302-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1302-first.Tpo ../libtest/$(DEPDIR)/unit1302-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1302-first.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1302_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1302-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1302_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1302-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
 
 
-unit1302-first.obj: ../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1302_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1302-first.obj -MD -MP -MF $(DEPDIR)/unit1302-first.Tpo -c -o unit1302-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1302-first.Tpo $(DEPDIR)/unit1302-first.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='unit1302-first.obj' libtool=no @AMDEPBACKSLASH@
+../libtest/unit1302-first.obj: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1302_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1302-first.obj -MD -MP -MF ../libtest/$(DEPDIR)/unit1302-first.Tpo -c -o ../libtest/unit1302-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1302-first.Tpo ../libtest/$(DEPDIR)/unit1302-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1302-first.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1302_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1302-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1302_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1302-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
 
 unit1303-unit1303.o: unit1303.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1303_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1303-unit1303.o -MD -MP -MF $(DEPDIR)/unit1303-unit1303.Tpo -c -o unit1303-unit1303.o `test -f 'unit1303.c' || echo '$(srcdir)/'`unit1303.c
 
 unit1303-unit1303.o: unit1303.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1303_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1303-unit1303.o -MD -MP -MF $(DEPDIR)/unit1303-unit1303.Tpo -c -o unit1303-unit1303.o `test -f 'unit1303.c' || echo '$(srcdir)/'`unit1303.c
@@ -803,19 +875,19 @@ unit1303-unit1303.obj: unit1303.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1303_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1303-unit1303.obj `if test -f 'unit1303.c'; then $(CYGPATH_W) 'unit1303.c'; else $(CYGPATH_W) '$(srcdir)/unit1303.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1303_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1303-unit1303.obj `if test -f 'unit1303.c'; then $(CYGPATH_W) 'unit1303.c'; else $(CYGPATH_W) '$(srcdir)/unit1303.c'; fi`
 
-unit1303-first.o: ../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1303_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1303-first.o -MD -MP -MF $(DEPDIR)/unit1303-first.Tpo -c -o unit1303-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1303-first.Tpo $(DEPDIR)/unit1303-first.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='unit1303-first.o' libtool=no @AMDEPBACKSLASH@
+../libtest/unit1303-first.o: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1303_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1303-first.o -MD -MP -MF ../libtest/$(DEPDIR)/unit1303-first.Tpo -c -o ../libtest/unit1303-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1303-first.Tpo ../libtest/$(DEPDIR)/unit1303-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1303-first.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1303_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1303-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1303_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1303-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
 
 
-unit1303-first.obj: ../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1303_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1303-first.obj -MD -MP -MF $(DEPDIR)/unit1303-first.Tpo -c -o unit1303-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1303-first.Tpo $(DEPDIR)/unit1303-first.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='unit1303-first.obj' libtool=no @AMDEPBACKSLASH@
+../libtest/unit1303-first.obj: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1303_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1303-first.obj -MD -MP -MF ../libtest/$(DEPDIR)/unit1303-first.Tpo -c -o ../libtest/unit1303-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1303-first.Tpo ../libtest/$(DEPDIR)/unit1303-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1303-first.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1303_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1303-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1303_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1303-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
 
 unit1304-unit1304.o: unit1304.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1304_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1304-unit1304.o -MD -MP -MF $(DEPDIR)/unit1304-unit1304.Tpo -c -o unit1304-unit1304.o `test -f 'unit1304.c' || echo '$(srcdir)/'`unit1304.c
 
 unit1304-unit1304.o: unit1304.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1304_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1304-unit1304.o -MD -MP -MF $(DEPDIR)/unit1304-unit1304.Tpo -c -o unit1304-unit1304.o `test -f 'unit1304.c' || echo '$(srcdir)/'`unit1304.c
@@ -831,19 +903,19 @@ unit1304-unit1304.obj: unit1304.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1304_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1304-unit1304.obj `if test -f 'unit1304.c'; then $(CYGPATH_W) 'unit1304.c'; else $(CYGPATH_W) '$(srcdir)/unit1304.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1304_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1304-unit1304.obj `if test -f 'unit1304.c'; then $(CYGPATH_W) 'unit1304.c'; else $(CYGPATH_W) '$(srcdir)/unit1304.c'; fi`
 
-unit1304-first.o: ../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1304_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1304-first.o -MD -MP -MF $(DEPDIR)/unit1304-first.Tpo -c -o unit1304-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1304-first.Tpo $(DEPDIR)/unit1304-first.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='unit1304-first.o' libtool=no @AMDEPBACKSLASH@
+../libtest/unit1304-first.o: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1304_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1304-first.o -MD -MP -MF ../libtest/$(DEPDIR)/unit1304-first.Tpo -c -o ../libtest/unit1304-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1304-first.Tpo ../libtest/$(DEPDIR)/unit1304-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1304-first.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1304_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1304-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1304_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1304-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
 
 
-unit1304-first.obj: ../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1304_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1304-first.obj -MD -MP -MF $(DEPDIR)/unit1304-first.Tpo -c -o unit1304-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1304-first.Tpo $(DEPDIR)/unit1304-first.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='unit1304-first.obj' libtool=no @AMDEPBACKSLASH@
+../libtest/unit1304-first.obj: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1304_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1304-first.obj -MD -MP -MF ../libtest/$(DEPDIR)/unit1304-first.Tpo -c -o ../libtest/unit1304-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1304-first.Tpo ../libtest/$(DEPDIR)/unit1304-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1304-first.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1304_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1304-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1304_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1304-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
 
 unit1305-unit1305.o: unit1305.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1305_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1305-unit1305.o -MD -MP -MF $(DEPDIR)/unit1305-unit1305.Tpo -c -o unit1305-unit1305.o `test -f 'unit1305.c' || echo '$(srcdir)/'`unit1305.c
 
 unit1305-unit1305.o: unit1305.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1305_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1305-unit1305.o -MD -MP -MF $(DEPDIR)/unit1305-unit1305.Tpo -c -o unit1305-unit1305.o `test -f 'unit1305.c' || echo '$(srcdir)/'`unit1305.c
@@ -859,19 +931,19 @@ unit1305-unit1305.obj: unit1305.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1305_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1305-unit1305.obj `if test -f 'unit1305.c'; then $(CYGPATH_W) 'unit1305.c'; else $(CYGPATH_W) '$(srcdir)/unit1305.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1305_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1305-unit1305.obj `if test -f 'unit1305.c'; then $(CYGPATH_W) 'unit1305.c'; else $(CYGPATH_W) '$(srcdir)/unit1305.c'; fi`
 
-unit1305-first.o: ../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1305_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1305-first.o -MD -MP -MF $(DEPDIR)/unit1305-first.Tpo -c -o unit1305-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1305-first.Tpo $(DEPDIR)/unit1305-first.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='unit1305-first.o' libtool=no @AMDEPBACKSLASH@
+../libtest/unit1305-first.o: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1305_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1305-first.o -MD -MP -MF ../libtest/$(DEPDIR)/unit1305-first.Tpo -c -o ../libtest/unit1305-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1305-first.Tpo ../libtest/$(DEPDIR)/unit1305-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1305-first.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1305_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1305-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1305_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1305-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
 
 
-unit1305-first.obj: ../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1305_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1305-first.obj -MD -MP -MF $(DEPDIR)/unit1305-first.Tpo -c -o unit1305-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1305-first.Tpo $(DEPDIR)/unit1305-first.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='unit1305-first.obj' libtool=no @AMDEPBACKSLASH@
+../libtest/unit1305-first.obj: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1305_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1305-first.obj -MD -MP -MF ../libtest/$(DEPDIR)/unit1305-first.Tpo -c -o ../libtest/unit1305-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1305-first.Tpo ../libtest/$(DEPDIR)/unit1305-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1305-first.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1305_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1305-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1305_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1305-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
 
 unit1307-unit1307.o: unit1307.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1307_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1307-unit1307.o -MD -MP -MF $(DEPDIR)/unit1307-unit1307.Tpo -c -o unit1307-unit1307.o `test -f 'unit1307.c' || echo '$(srcdir)/'`unit1307.c
 
 unit1307-unit1307.o: unit1307.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1307_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1307-unit1307.o -MD -MP -MF $(DEPDIR)/unit1307-unit1307.Tpo -c -o unit1307-unit1307.o `test -f 'unit1307.c' || echo '$(srcdir)/'`unit1307.c
@@ -887,19 +959,19 @@ unit1307-unit1307.obj: unit1307.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1307_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1307-unit1307.obj `if test -f 'unit1307.c'; then $(CYGPATH_W) 'unit1307.c'; else $(CYGPATH_W) '$(srcdir)/unit1307.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1307_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1307-unit1307.obj `if test -f 'unit1307.c'; then $(CYGPATH_W) 'unit1307.c'; else $(CYGPATH_W) '$(srcdir)/unit1307.c'; fi`
 
-unit1307-first.o: ../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1307_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1307-first.o -MD -MP -MF $(DEPDIR)/unit1307-first.Tpo -c -o unit1307-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1307-first.Tpo $(DEPDIR)/unit1307-first.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='unit1307-first.o' libtool=no @AMDEPBACKSLASH@
+../libtest/unit1307-first.o: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1307_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1307-first.o -MD -MP -MF ../libtest/$(DEPDIR)/unit1307-first.Tpo -c -o ../libtest/unit1307-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1307-first.Tpo ../libtest/$(DEPDIR)/unit1307-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1307-first.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1307_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1307-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1307_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1307-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
 
 
-unit1307-first.obj: ../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1307_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1307-first.obj -MD -MP -MF $(DEPDIR)/unit1307-first.Tpo -c -o unit1307-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1307-first.Tpo $(DEPDIR)/unit1307-first.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='unit1307-first.obj' libtool=no @AMDEPBACKSLASH@
+../libtest/unit1307-first.obj: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1307_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1307-first.obj -MD -MP -MF ../libtest/$(DEPDIR)/unit1307-first.Tpo -c -o ../libtest/unit1307-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1307-first.Tpo ../libtest/$(DEPDIR)/unit1307-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1307-first.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1307_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1307-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1307_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1307-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
 
 unit1308-unit1308.o: unit1308.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1308_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1308-unit1308.o -MD -MP -MF $(DEPDIR)/unit1308-unit1308.Tpo -c -o unit1308-unit1308.o `test -f 'unit1308.c' || echo '$(srcdir)/'`unit1308.c
 
 unit1308-unit1308.o: unit1308.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1308_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1308-unit1308.o -MD -MP -MF $(DEPDIR)/unit1308-unit1308.Tpo -c -o unit1308-unit1308.o `test -f 'unit1308.c' || echo '$(srcdir)/'`unit1308.c
@@ -915,19 +987,19 @@ unit1308-unit1308.obj: unit1308.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1308_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1308-unit1308.obj `if test -f 'unit1308.c'; then $(CYGPATH_W) 'unit1308.c'; else $(CYGPATH_W) '$(srcdir)/unit1308.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1308_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1308-unit1308.obj `if test -f 'unit1308.c'; then $(CYGPATH_W) 'unit1308.c'; else $(CYGPATH_W) '$(srcdir)/unit1308.c'; fi`
 
-unit1308-first.o: ../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1308_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1308-first.o -MD -MP -MF $(DEPDIR)/unit1308-first.Tpo -c -o unit1308-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1308-first.Tpo $(DEPDIR)/unit1308-first.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='unit1308-first.o' libtool=no @AMDEPBACKSLASH@
+../libtest/unit1308-first.o: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1308_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1308-first.o -MD -MP -MF ../libtest/$(DEPDIR)/unit1308-first.Tpo -c -o ../libtest/unit1308-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1308-first.Tpo ../libtest/$(DEPDIR)/unit1308-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1308-first.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1308_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1308-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1308_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1308-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
 
 
-unit1308-first.obj: ../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1308_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1308-first.obj -MD -MP -MF $(DEPDIR)/unit1308-first.Tpo -c -o unit1308-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1308-first.Tpo $(DEPDIR)/unit1308-first.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='unit1308-first.obj' libtool=no @AMDEPBACKSLASH@
+../libtest/unit1308-first.obj: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1308_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1308-first.obj -MD -MP -MF ../libtest/$(DEPDIR)/unit1308-first.Tpo -c -o ../libtest/unit1308-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1308-first.Tpo ../libtest/$(DEPDIR)/unit1308-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1308-first.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1308_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1308-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1308_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1308-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
 
 unit1309-unit1309.o: unit1309.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1309_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1309-unit1309.o -MD -MP -MF $(DEPDIR)/unit1309-unit1309.Tpo -c -o unit1309-unit1309.o `test -f 'unit1309.c' || echo '$(srcdir)/'`unit1309.c
 
 unit1309-unit1309.o: unit1309.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1309_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1309-unit1309.o -MD -MP -MF $(DEPDIR)/unit1309-unit1309.Tpo -c -o unit1309-unit1309.o `test -f 'unit1309.c' || echo '$(srcdir)/'`unit1309.c
@@ -943,19 +1015,19 @@ unit1309-unit1309.obj: unit1309.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1309_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1309-unit1309.obj `if test -f 'unit1309.c'; then $(CYGPATH_W) 'unit1309.c'; else $(CYGPATH_W) '$(srcdir)/unit1309.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1309_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1309-unit1309.obj `if test -f 'unit1309.c'; then $(CYGPATH_W) 'unit1309.c'; else $(CYGPATH_W) '$(srcdir)/unit1309.c'; fi`
 
-unit1309-first.o: ../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1309_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1309-first.o -MD -MP -MF $(DEPDIR)/unit1309-first.Tpo -c -o unit1309-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1309-first.Tpo $(DEPDIR)/unit1309-first.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='unit1309-first.o' libtool=no @AMDEPBACKSLASH@
+../libtest/unit1309-first.o: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1309_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1309-first.o -MD -MP -MF ../libtest/$(DEPDIR)/unit1309-first.Tpo -c -o ../libtest/unit1309-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1309-first.Tpo ../libtest/$(DEPDIR)/unit1309-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1309-first.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1309_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1309-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1309_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1309-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
 
 
-unit1309-first.obj: ../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1309_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1309-first.obj -MD -MP -MF $(DEPDIR)/unit1309-first.Tpo -c -o unit1309-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1309-first.Tpo $(DEPDIR)/unit1309-first.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='unit1309-first.obj' libtool=no @AMDEPBACKSLASH@
+../libtest/unit1309-first.obj: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1309_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1309-first.obj -MD -MP -MF ../libtest/$(DEPDIR)/unit1309-first.Tpo -c -o ../libtest/unit1309-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1309-first.Tpo ../libtest/$(DEPDIR)/unit1309-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1309-first.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1309_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1309-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1309_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1309-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
 
 unit1330-unit1330.o: unit1330.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1330_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1330-unit1330.o -MD -MP -MF $(DEPDIR)/unit1330-unit1330.Tpo -c -o unit1330-unit1330.o `test -f 'unit1330.c' || echo '$(srcdir)/'`unit1330.c
 
 unit1330-unit1330.o: unit1330.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1330_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1330-unit1330.o -MD -MP -MF $(DEPDIR)/unit1330-unit1330.Tpo -c -o unit1330-unit1330.o `test -f 'unit1330.c' || echo '$(srcdir)/'`unit1330.c
@@ -971,19 +1043,19 @@ unit1330-unit1330.obj: unit1330.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1330_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1330-unit1330.obj `if test -f 'unit1330.c'; then $(CYGPATH_W) 'unit1330.c'; else $(CYGPATH_W) '$(srcdir)/unit1330.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1330_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1330-unit1330.obj `if test -f 'unit1330.c'; then $(CYGPATH_W) 'unit1330.c'; else $(CYGPATH_W) '$(srcdir)/unit1330.c'; fi`
 
-unit1330-first.o: ../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1330_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1330-first.o -MD -MP -MF $(DEPDIR)/unit1330-first.Tpo -c -o unit1330-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1330-first.Tpo $(DEPDIR)/unit1330-first.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='unit1330-first.o' libtool=no @AMDEPBACKSLASH@
+../libtest/unit1330-first.o: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1330_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1330-first.o -MD -MP -MF ../libtest/$(DEPDIR)/unit1330-first.Tpo -c -o ../libtest/unit1330-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1330-first.Tpo ../libtest/$(DEPDIR)/unit1330-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1330-first.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1330_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1330-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1330_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1330-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
 
 
-unit1330-first.obj: ../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1330_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1330-first.obj -MD -MP -MF $(DEPDIR)/unit1330-first.Tpo -c -o unit1330-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1330-first.Tpo $(DEPDIR)/unit1330-first.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='unit1330-first.obj' libtool=no @AMDEPBACKSLASH@
+../libtest/unit1330-first.obj: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1330_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1330-first.obj -MD -MP -MF ../libtest/$(DEPDIR)/unit1330-first.Tpo -c -o ../libtest/unit1330-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1330-first.Tpo ../libtest/$(DEPDIR)/unit1330-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1330-first.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1330_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1330-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1330_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1330-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
 
 unit1394-unit1394.o: unit1394.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1394_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1394-unit1394.o -MD -MP -MF $(DEPDIR)/unit1394-unit1394.Tpo -c -o unit1394-unit1394.o `test -f 'unit1394.c' || echo '$(srcdir)/'`unit1394.c
 
 unit1394-unit1394.o: unit1394.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1394_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1394-unit1394.o -MD -MP -MF $(DEPDIR)/unit1394-unit1394.Tpo -c -o unit1394-unit1394.o `test -f 'unit1394.c' || echo '$(srcdir)/'`unit1394.c
@@ -999,19 +1071,19 @@ unit1394-unit1394.obj: unit1394.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1394_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1394-unit1394.obj `if test -f 'unit1394.c'; then $(CYGPATH_W) 'unit1394.c'; else $(CYGPATH_W) '$(srcdir)/unit1394.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1394_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1394-unit1394.obj `if test -f 'unit1394.c'; then $(CYGPATH_W) 'unit1394.c'; else $(CYGPATH_W) '$(srcdir)/unit1394.c'; fi`
 
-unit1394-first.o: ../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1394_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1394-first.o -MD -MP -MF $(DEPDIR)/unit1394-first.Tpo -c -o unit1394-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1394-first.Tpo $(DEPDIR)/unit1394-first.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='unit1394-first.o' libtool=no @AMDEPBACKSLASH@
+../libtest/unit1394-first.o: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1394_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1394-first.o -MD -MP -MF ../libtest/$(DEPDIR)/unit1394-first.Tpo -c -o ../libtest/unit1394-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1394-first.Tpo ../libtest/$(DEPDIR)/unit1394-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1394-first.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1394_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1394-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1394_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1394-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
 
 
-unit1394-first.obj: ../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1394_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1394-first.obj -MD -MP -MF $(DEPDIR)/unit1394-first.Tpo -c -o unit1394-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1394-first.Tpo $(DEPDIR)/unit1394-first.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='unit1394-first.obj' libtool=no @AMDEPBACKSLASH@
+../libtest/unit1394-first.obj: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1394_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1394-first.obj -MD -MP -MF ../libtest/$(DEPDIR)/unit1394-first.Tpo -c -o ../libtest/unit1394-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1394-first.Tpo ../libtest/$(DEPDIR)/unit1394-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1394-first.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1394_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1394-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1394_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1394-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
 
 unit1395-unit1395.o: unit1395.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1395_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1395-unit1395.o -MD -MP -MF $(DEPDIR)/unit1395-unit1395.Tpo -c -o unit1395-unit1395.o `test -f 'unit1395.c' || echo '$(srcdir)/'`unit1395.c
 
 unit1395-unit1395.o: unit1395.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1395_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1395-unit1395.o -MD -MP -MF $(DEPDIR)/unit1395-unit1395.Tpo -c -o unit1395-unit1395.o `test -f 'unit1395.c' || echo '$(srcdir)/'`unit1395.c
@@ -1027,19 +1099,19 @@ unit1395-unit1395.obj: unit1395.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1395_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1395-unit1395.obj `if test -f 'unit1395.c'; then $(CYGPATH_W) 'unit1395.c'; else $(CYGPATH_W) '$(srcdir)/unit1395.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1395_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1395-unit1395.obj `if test -f 'unit1395.c'; then $(CYGPATH_W) 'unit1395.c'; else $(CYGPATH_W) '$(srcdir)/unit1395.c'; fi`
 
-unit1395-first.o: ../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1395_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1395-first.o -MD -MP -MF $(DEPDIR)/unit1395-first.Tpo -c -o unit1395-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1395-first.Tpo $(DEPDIR)/unit1395-first.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='unit1395-first.o' libtool=no @AMDEPBACKSLASH@
+../libtest/unit1395-first.o: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1395_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1395-first.o -MD -MP -MF ../libtest/$(DEPDIR)/unit1395-first.Tpo -c -o ../libtest/unit1395-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1395-first.Tpo ../libtest/$(DEPDIR)/unit1395-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1395-first.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1395_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1395-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1395_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1395-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
 
 
-unit1395-first.obj: ../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1395_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1395-first.obj -MD -MP -MF $(DEPDIR)/unit1395-first.Tpo -c -o unit1395-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1395-first.Tpo $(DEPDIR)/unit1395-first.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='unit1395-first.obj' libtool=no @AMDEPBACKSLASH@
+../libtest/unit1395-first.obj: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1395_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1395-first.obj -MD -MP -MF ../libtest/$(DEPDIR)/unit1395-first.Tpo -c -o ../libtest/unit1395-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1395-first.Tpo ../libtest/$(DEPDIR)/unit1395-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1395-first.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1395_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1395-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1395_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1395-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
 
 unit1396-unit1396.o: unit1396.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1396_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1396-unit1396.o -MD -MP -MF $(DEPDIR)/unit1396-unit1396.Tpo -c -o unit1396-unit1396.o `test -f 'unit1396.c' || echo '$(srcdir)/'`unit1396.c
 
 unit1396-unit1396.o: unit1396.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1396_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1396-unit1396.o -MD -MP -MF $(DEPDIR)/unit1396-unit1396.Tpo -c -o unit1396-unit1396.o `test -f 'unit1396.c' || echo '$(srcdir)/'`unit1396.c
@@ -1055,19 +1127,75 @@ unit1396-unit1396.obj: unit1396.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1396_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1396-unit1396.obj `if test -f 'unit1396.c'; then $(CYGPATH_W) 'unit1396.c'; else $(CYGPATH_W) '$(srcdir)/unit1396.c'; fi`
 
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1396_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1396-unit1396.obj `if test -f 'unit1396.c'; then $(CYGPATH_W) 'unit1396.c'; else $(CYGPATH_W) '$(srcdir)/unit1396.c'; fi`
 
-unit1396-first.o: ../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1396_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1396-first.o -MD -MP -MF $(DEPDIR)/unit1396-first.Tpo -c -o unit1396-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1396-first.Tpo $(DEPDIR)/unit1396-first.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='unit1396-first.o' libtool=no @AMDEPBACKSLASH@
+../libtest/unit1396-first.o: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1396_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1396-first.o -MD -MP -MF ../libtest/$(DEPDIR)/unit1396-first.Tpo -c -o ../libtest/unit1396-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1396-first.Tpo ../libtest/$(DEPDIR)/unit1396-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1396-first.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1396_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1396-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+
+../libtest/unit1396-first.obj: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1396_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1396-first.obj -MD -MP -MF ../libtest/$(DEPDIR)/unit1396-first.Tpo -c -o ../libtest/unit1396-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1396-first.Tpo ../libtest/$(DEPDIR)/unit1396-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1396-first.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1396_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1396-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+
+unit1397-unit1397.o: unit1397.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1397_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1397-unit1397.o -MD -MP -MF $(DEPDIR)/unit1397-unit1397.Tpo -c -o unit1397-unit1397.o `test -f 'unit1397.c' || echo '$(srcdir)/'`unit1397.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1397-unit1397.Tpo $(DEPDIR)/unit1397-unit1397.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='unit1397.c' object='unit1397-unit1397.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1397_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1397-unit1397.o `test -f 'unit1397.c' || echo '$(srcdir)/'`unit1397.c
+
+unit1397-unit1397.obj: unit1397.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1397_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1397-unit1397.obj -MD -MP -MF $(DEPDIR)/unit1397-unit1397.Tpo -c -o unit1397-unit1397.obj `if test -f 'unit1397.c'; then $(CYGPATH_W) 'unit1397.c'; else $(CYGPATH_W) '$(srcdir)/unit1397.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1397-unit1397.Tpo $(DEPDIR)/unit1397-unit1397.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='unit1397.c' object='unit1397-unit1397.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1397_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1397-unit1397.obj `if test -f 'unit1397.c'; then $(CYGPATH_W) 'unit1397.c'; else $(CYGPATH_W) '$(srcdir)/unit1397.c'; fi`
+
+../libtest/unit1397-first.o: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1397_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1397-first.o -MD -MP -MF ../libtest/$(DEPDIR)/unit1397-first.Tpo -c -o ../libtest/unit1397-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1397-first.Tpo ../libtest/$(DEPDIR)/unit1397-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1397-first.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1397_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1397-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+
+../libtest/unit1397-first.obj: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1397_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1397-first.obj -MD -MP -MF ../libtest/$(DEPDIR)/unit1397-first.Tpo -c -o ../libtest/unit1397-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1397-first.Tpo ../libtest/$(DEPDIR)/unit1397-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1397-first.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1397_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1397-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+
+unit1398-unit1398.o: unit1398.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1398_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1398-unit1398.o -MD -MP -MF $(DEPDIR)/unit1398-unit1398.Tpo -c -o unit1398-unit1398.o `test -f 'unit1398.c' || echo '$(srcdir)/'`unit1398.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1398-unit1398.Tpo $(DEPDIR)/unit1398-unit1398.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='unit1398.c' object='unit1398-unit1398.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1398_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1398-unit1398.o `test -f 'unit1398.c' || echo '$(srcdir)/'`unit1398.c
+
+unit1398-unit1398.obj: unit1398.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1398_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1398-unit1398.obj -MD -MP -MF $(DEPDIR)/unit1398-unit1398.Tpo -c -o unit1398-unit1398.obj `if test -f 'unit1398.c'; then $(CYGPATH_W) 'unit1398.c'; else $(CYGPATH_W) '$(srcdir)/unit1398.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1398-unit1398.Tpo $(DEPDIR)/unit1398-unit1398.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='unit1398.c' object='unit1398-unit1398.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1398_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1398-unit1398.obj `if test -f 'unit1398.c'; then $(CYGPATH_W) 'unit1398.c'; else $(CYGPATH_W) '$(srcdir)/unit1398.c'; fi`
+
+../libtest/unit1398-first.o: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1398_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1398-first.o -MD -MP -MF ../libtest/$(DEPDIR)/unit1398-first.Tpo -c -o ../libtest/unit1398-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1398-first.Tpo ../libtest/$(DEPDIR)/unit1398-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1398-first.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1396_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1396-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1398_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1398-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
 
 
-unit1396-first.obj: ../libtest/first.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1396_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1396-first.obj -MD -MP -MF $(DEPDIR)/unit1396-first.Tpo -c -o unit1396-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1396-first.Tpo $(DEPDIR)/unit1396-first.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='unit1396-first.obj' libtool=no @AMDEPBACKSLASH@
+../libtest/unit1398-first.obj: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1398_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1398-first.obj -MD -MP -MF ../libtest/$(DEPDIR)/unit1398-first.Tpo -c -o ../libtest/unit1398-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1398-first.Tpo ../libtest/$(DEPDIR)/unit1398-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1398-first.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1396_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1396-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1398_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1398-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
 
 mostlyclean-libtool:
        -rm -f *.lo
 
 mostlyclean-libtool:
        -rm -f *.lo
@@ -1187,6 +1315,8 @@ clean-generic:
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
        -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
        -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+       -rm -f ../libtest/$(DEPDIR)/$(am__dirstamp)
+       -rm -f ../libtest/$(am__dirstamp)
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
@@ -1197,7 +1327,7 @@ clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
        mostlyclean-am
 
 distclean: distclean-am
        mostlyclean-am
 
 distclean: distclean-am
-       -rm -rf ./$(DEPDIR)
+       -rm -rf ../libtest/$(DEPDIR) ./$(DEPDIR)
        -rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
        distclean-tags
        -rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
        distclean-tags
@@ -1243,7 +1373,7 @@ install-ps-am:
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
-       -rm -rf ./$(DEPDIR)
+       -rm -rf ../libtest/$(DEPDIR) ./$(DEPDIR)
        -rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
        -rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
index 4c06fcf..526ec1f 100644 (file)
@@ -6,7 +6,7 @@ UNITFILES = curlcheck.h \
 
 # These are all unit test programs
 UNITPROGS = unit1300 unit1301 unit1302 unit1303 unit1304 unit1305 unit1307 \
 
 # These are all unit test programs
 UNITPROGS = unit1300 unit1301 unit1302 unit1303 unit1304 unit1305 unit1307 \
- unit1308 unit1309 unit1330 unit1394 unit1395 unit1396
+ unit1308 unit1309 unit1330 unit1394 unit1395 unit1396 unit1397 unit1398
 
 unit1300_SOURCES = unit1300.c $(UNITFILES)
 unit1300_CPPFLAGS = $(AM_CPPFLAGS)
 
 unit1300_SOURCES = unit1300.c $(UNITFILES)
 unit1300_CPPFLAGS = $(AM_CPPFLAGS)
@@ -49,3 +49,10 @@ unit1395_CPPFLAGS = $(AM_CPPFLAGS)
 
 unit1396_SOURCES = unit1396.c $(UNITFILES)
 unit1396_CPPFLAGS = $(AM_CPPFLAGS)
 
 unit1396_SOURCES = unit1396.c $(UNITFILES)
 unit1396_CPPFLAGS = $(AM_CPPFLAGS)
+
+unit1397_SOURCES = unit1397.c $(UNITFILES)
+unit1397_CPPFLAGS = $(AM_CPPFLAGS)
+
+unit1398_SOURCES = unit1398.c $(UNITFILES)
+unit1398_CPPFLAGS = $(AM_CPPFLAGS)
+
index fc50c88..412a71f 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -31,7 +31,7 @@ static struct SessionHandle *data;
 static CURLcode unit_setup( void )
 {
   data = curl_easy_init();
 static CURLcode unit_setup( void )
 {
   data = curl_easy_init();
-  if (!data)
+  if(!data)
     return CURLE_OUT_OF_MEMORY;
   return CURLE_OK;
 }
     return CURLE_OUT_OF_MEMORY;
   return CURLE_OK;
 }
@@ -73,6 +73,24 @@ fail_unless(size == 8, "size should be 8");
 verify_memory( output, "aWlpaQ==", 8);
 Curl_safefree(output);
 
 verify_memory( output, "aWlpaQ==", 8);
 Curl_safefree(output);
 
+rc = Curl_base64_encode(data, "\xff\x01\xfe\x02", 4, &output, &size);
+fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
+fail_unless(size == 8, "size should be 8");
+verify_memory( output, "/wH+Ag==", 8);
+Curl_safefree(output);
+
+rc = Curl_base64url_encode(data, "\xff\x01\xfe\x02", 4, &output, &size);
+fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
+fail_unless(size == 8, "size should be 8");
+verify_memory( output, "_wH-Ag==", 8);
+Curl_safefree(output);
+
+rc = Curl_base64url_encode(data, "iiii", 4, &output, &size);
+fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
+fail_unless(size == 8, "size should be 8");
+verify_memory( output, "aWlpaQ==", 8);
+Curl_safefree(output);
+
 /* 0 length makes it do strlen() */
 rc = Curl_base64_encode(data, "iiii", 0, &output, &size);
 fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
 /* 0 length makes it do strlen() */
 rc = Curl_base64_encode(data, "iiii", 0, &output, &size);
 fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
@@ -104,21 +122,36 @@ fail_unless(size == 1, "size should be 1");
 verify_memory(decoded, "i", 2);
 Curl_safefree(decoded);
 
 verify_memory(decoded, "i", 2);
 Curl_safefree(decoded);
 
-/* this is an illegal input */
+/* This is illegal input as the data is too short */
 size = 1; /* not zero */
 decoded = &anychar; /* not NULL */
 rc = Curl_base64_decode("aQ", &decoded, &size);
 size = 1; /* not zero */
 decoded = &anychar; /* not NULL */
 rc = Curl_base64_decode("aQ", &decoded, &size);
-/* return code indiferent, but output shall be as follows */
+fail_unless(rc == CURLE_BAD_CONTENT_ENCODING, "return code should be CURLE_BAD_CONTENT_ENCODING");
+fail_unless(size == 0, "size should be 0");
+fail_if(decoded, "returned pointer should be NULL");
+
+/* This is illegal input as it contains three padding characters */
+size = 1; /* not zero */
+decoded = &anychar; /* not NULL */
+rc = Curl_base64_decode("a===", &decoded, &size);
+fail_unless(rc == CURLE_BAD_CONTENT_ENCODING, "return code should be CURLE_BAD_CONTENT_ENCODING");
+fail_unless(size == 0, "size should be 0");
+fail_if(decoded, "returned pointer should be NULL");
+
+/* This is illegal input as it contains a padding character mid input */
+size = 1; /* not zero */
+decoded = &anychar; /* not NULL */
+rc = Curl_base64_decode("a=Q=", &decoded, &size);
+fail_unless(rc == CURLE_BAD_CONTENT_ENCODING, "return code should be CURLE_BAD_CONTENT_ENCODING");
 fail_unless(size == 0, "size should be 0");
 fail_if(decoded, "returned pointer should be NULL");
 
 fail_unless(size == 0, "size should be 0");
 fail_if(decoded, "returned pointer should be NULL");
 
-/* this is garbage input that libcurl decodes as far as possible */
-size = 0;
-decoded = NULL;
+/* This is garbage input as it contains an illegal base64 character */
+size = 1; /* not zero */
+decoded = &anychar; /* not NULL */
 rc = Curl_base64_decode("a\x1f==", &decoded, &size);
 rc = Curl_base64_decode("a\x1f==", &decoded, &size);
-fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
-fail_unless(size == 1, "size should be 1");
-fail_if(!decoded, "returned pointer should not be NULL");
-Curl_safefree(decoded);
+fail_unless(rc == CURLE_BAD_CONTENT_ENCODING, "return code should be CURLE_BAD_CONTENT_ENCODING");
+fail_unless(size == 0, "size should be 0");
+fail_if(decoded, "returned pointer should be NULL");
 
 UNITTEST_STOP
 
 UNITTEST_STOP
index 2e4f230..b48a625 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -131,6 +131,8 @@ const struct timetest run[] = {
 /* this is the pretended start time of the transfer */
 data->progress.t_startsingle.tv_sec = BASE;
 data->progress.t_startsingle.tv_usec = 0;
 /* this is the pretended start time of the transfer */
 data->progress.t_startsingle.tv_sec = BASE;
 data->progress.t_startsingle.tv_usec = 0;
+data->progress.t_startop.tv_sec = BASE;
+data->progress.t_startop.tv_usec = 0;
 
 for(i=0; i < sizeof(run)/sizeof(run[0]); i++) {
   NOW(run[i].now_s, run[i].now_us);
 
 for(i=0; i < sizeof(run)/sizeof(run[0]); i++) {
   NOW(run[i].now_s, run[i].now_us);
index 8ddd8ca..12b0273 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  ***************************************************************************/
 #include "curlcheck.h"
  *
  ***************************************************************************/
 #include "curlcheck.h"
-
 #include "netrc.h"
 #include "netrc.h"
+#include "memdebug.h" /* LAST include file */
 
 
-static char login[LOGINSIZE];
-static char password[PASSWORDSIZE];
+static char *login;
+static char *password;
 static char filename[64];
 
 static CURLcode unit_setup(void)
 {
 static char filename[64];
 
 static CURLcode unit_setup(void)
 {
-  password[0] = 0;
-  login[0] = 0;
+  password = strdup("");
+  login = strdup("");
+  if (!password || !login) {
+         Curl_safefree(password);
+         Curl_safefree(login);
+         return CURLE_OUT_OF_MEMORY;
+  }
   return CURLE_OK;
 }
 
 static void unit_stop(void)
 {
   return CURLE_OK;
 }
 
 static void unit_stop(void)
 {
+  Curl_safefree(password);
+  Curl_safefree(login);
 }
 
 UNITTEST_START
   int result;
 
 }
 
 UNITTEST_START
   int result;
 
-  static const char* filename1 = "log/netrc1304";
+  static const char* const filename1 = "log/netrc1304";
   memcpy(filename, filename1, strlen(filename1));
 
   /*
    * Test a non existent host in our netrc file.
    */
   memcpy(filename, filename1, strlen(filename1));
 
   /*
    * Test a non existent host in our netrc file.
    */
-  result = Curl_parsenetrc("test.example.com", login, password, filename);
+  result = Curl_parsenetrc("test.example.com", &login, &password, filename);
   fail_unless(result == 1, "Host not found should return 1");
   fail_unless(result == 1, "Host not found should return 1");
+  abort_unless(password != NULL, "returned NULL!");
   fail_unless(password[0] == 0, "password should not have been changed");
   fail_unless(password[0] == 0, "password should not have been changed");
+  abort_unless(login != NULL, "returned NULL!");
   fail_unless(login[0] == 0, "login should not have been changed");
 
   /*
    * Test a non existent login in our netrc file.
    */
   fail_unless(login[0] == 0, "login should not have been changed");
 
   /*
    * Test a non existent login in our netrc file.
    */
-  memcpy(login, "me", 2);
-  result = Curl_parsenetrc("example.com", login, password, filename);
+  free(login);
+  login = strdup("me");
+  abort_unless(login != NULL, "returned NULL!");
+  result = Curl_parsenetrc("example.com", &login, &password, filename);
   fail_unless(result == 0, "Host should be found");
   fail_unless(result == 0, "Host should be found");
+  abort_unless(password != NULL, "returned NULL!");
   fail_unless(password[0] == 0, "password should not have been changed");
   fail_unless(password[0] == 0, "password should not have been changed");
+  abort_unless(login != NULL, "returned NULL!");
   fail_unless(strncmp(login, "me", 2) == 0, "login should not have been changed");
 
   /*
    * Test a non existent login and host in our netrc file.
    */
   fail_unless(strncmp(login, "me", 2) == 0, "login should not have been changed");
 
   /*
    * Test a non existent login and host in our netrc file.
    */
-  memcpy(login, "me", 2);
-  result = Curl_parsenetrc("test.example.com", login, password, filename);
+  free(login);
+  login = strdup("me");
+  abort_unless(login != NULL, "returned NULL!");
+  result = Curl_parsenetrc("test.example.com", &login, &password, filename);
   fail_unless(result == 1, "Host should be found");
   fail_unless(result == 1, "Host should be found");
+  abort_unless(password != NULL, "returned NULL!");
   fail_unless(password[0] == 0, "password should not have been changed");
   fail_unless(password[0] == 0, "password should not have been changed");
+  abort_unless(login != NULL, "returned NULL!");
   fail_unless(strncmp(login, "me", 2) == 0, "login should not have been changed");
 
   /*
    * Test a non existent login (substring of an existing one) in our
    * netrc file.
    */
   fail_unless(strncmp(login, "me", 2) == 0, "login should not have been changed");
 
   /*
    * Test a non existent login (substring of an existing one) in our
    * netrc file.
    */
-  memcpy(login, "admi", 4);
-  result = Curl_parsenetrc("example.com", login, password, filename);
+  free(login);
+  login = strdup("admi");
+  abort_unless(login != NULL, "returned NULL!");
+  result = Curl_parsenetrc("example.com", &login, &password, filename);
   fail_unless(result == 0, "Host should be found");
   fail_unless(result == 0, "Host should be found");
+  abort_unless(password != NULL, "returned NULL!");
   fail_unless(password[0] == 0, "password should not have been changed");
   fail_unless(password[0] == 0, "password should not have been changed");
+  abort_unless(login != NULL, "returned NULL!");
   fail_unless(strncmp(login, "admi", 4) == 0, "login should not have been changed");
 
   /*
    * Test a non existent login (superstring of an existing one)
    * in our netrc file.
    */
   fail_unless(strncmp(login, "admi", 4) == 0, "login should not have been changed");
 
   /*
    * Test a non existent login (superstring of an existing one)
    * in our netrc file.
    */
-  memcpy(login, "adminn", 6);
-  result = Curl_parsenetrc("example.com", login, password, filename);
+  free(login);
+  login = strdup("adminn");
+  abort_unless(login != NULL, "returned NULL!");
+  result = Curl_parsenetrc("example.com", &login, &password, filename);
   fail_unless(result == 0, "Host should be found");
   fail_unless(result == 0, "Host should be found");
+  abort_unless(password != NULL, "returned NULL!");
   fail_unless(password[0] == 0, "password should not have been changed");
   fail_unless(password[0] == 0, "password should not have been changed");
+  abort_unless(login != NULL, "returned NULL!");
   fail_unless(strncmp(login, "adminn", 6) == 0, "login should not have been changed");
 
   /*
    * Test for the first existing host in our netrc file
    * with login[0] = 0.
    */
   fail_unless(strncmp(login, "adminn", 6) == 0, "login should not have been changed");
 
   /*
    * Test for the first existing host in our netrc file
    * with login[0] = 0.
    */
-  login[0] = 0;
-  result = Curl_parsenetrc("example.com", login, password, filename);
+  free(login);
+  login = strdup("");
+  abort_unless(login != NULL, "returned NULL!");
+  result = Curl_parsenetrc("example.com", &login, &password, filename);
   fail_unless(result == 0, "Host should have been found");
   fail_unless(result == 0, "Host should have been found");
+  abort_unless(password != NULL, "returned NULL!");
   fail_unless(strncmp(password, "passwd", 6) == 0,
               "password should be 'passwd'");
   fail_unless(strncmp(password, "passwd", 6) == 0,
               "password should be 'passwd'");
+  abort_unless(login != NULL, "returned NULL!");
   fail_unless(strncmp(login, "admin", 5) == 0, "login should be 'admin'");
 
   /*
    * Test for the first existing host in our netrc file
    * with login[0] != 0.
    */
   fail_unless(strncmp(login, "admin", 5) == 0, "login should be 'admin'");
 
   /*
    * Test for the first existing host in our netrc file
    * with login[0] != 0.
    */
-  password[0] = 0;
-  result = Curl_parsenetrc("example.com", login, password, filename);
+  free(password);
+  password = strdup("");
+  abort_unless(password != NULL, "returned NULL!");
+  result = Curl_parsenetrc("example.com", &login, &password, filename);
   fail_unless(result == 0, "Host should have been found");
   fail_unless(result == 0, "Host should have been found");
+  abort_unless(password != NULL, "returned NULL!");
   fail_unless(strncmp(password, "passwd", 6) == 0,
               "password should be 'passwd'");
   fail_unless(strncmp(password, "passwd", 6) == 0,
               "password should be 'passwd'");
+  abort_unless(login != NULL, "returned NULL!");
   fail_unless(strncmp(login, "admin", 5) == 0, "login should be 'admin'");
 
   /*
    * Test for the second existing host in our netrc file
    * with login[0] = 0.
    */
   fail_unless(strncmp(login, "admin", 5) == 0, "login should be 'admin'");
 
   /*
    * Test for the second existing host in our netrc file
    * with login[0] = 0.
    */
-  password[0] = 0;
-  login[0] = 0;
-  result = Curl_parsenetrc("curl.example.com", login, password, filename);
+  free(password);
+  password = strdup("");
+  abort_unless(password != NULL, "returned NULL!");
+  free(login);
+  login = strdup("");
+  abort_unless(login != NULL, "returned NULL!");
+  result = Curl_parsenetrc("curl.example.com", &login, &password, filename);
   fail_unless(result == 0, "Host should have been found");
   fail_unless(result == 0, "Host should have been found");
+  abort_unless(password != NULL, "returned NULL!");
   fail_unless(strncmp(password, "none", 4) == 0,
               "password should be 'none'");
   fail_unless(strncmp(password, "none", 4) == 0,
               "password should be 'none'");
+  abort_unless(login != NULL, "returned NULL!");
   fail_unless(strncmp(login, "none", 4) == 0, "login should be 'none'");
 
   /*
    * Test for the second existing host in our netrc file
    * with login[0] != 0.
    */
   fail_unless(strncmp(login, "none", 4) == 0, "login should be 'none'");
 
   /*
    * Test for the second existing host in our netrc file
    * with login[0] != 0.
    */
-  password[0] = 0;
-  result = Curl_parsenetrc("curl.example.com", login, password, filename);
+  free(password);
+  password = strdup("");
+  abort_unless(password != NULL, "returned NULL!");
+  result = Curl_parsenetrc("curl.example.com", &login, &password, filename);
   fail_unless(result == 0, "Host should have been found");
   fail_unless(result == 0, "Host should have been found");
+  abort_unless(password != NULL, "returned NULL!");
   fail_unless(strncmp(password, "none", 4) == 0,
               "password should be 'none'");
   fail_unless(strncmp(password, "none", 4) == 0,
               "password should be 'none'");
+  abort_unless(login != NULL, "returned NULL!");
   fail_unless(strncmp(login, "none", 4) == 0, "login should be 'none'");
 
   /* TODO:
   fail_unless(strncmp(login, "none", 4) == 0, "login should be 'none'");
 
   /* TODO:
index 5900c6d..91e3b0b 100644 (file)
@@ -37,7 +37,6 @@
 #include "hash.h"
 #include "hostip.h"
 
 #include "hash.h"
 #include "hostip.h"
 
-#include "curl_memory.h"
 #include "memdebug.h" /* LAST include file */
 
 static struct SessionHandle *data;
 #include "memdebug.h" /* LAST include file */
 
 static struct SessionHandle *data;
index d25e4f5..a3ef8fa 100644 (file)
@@ -27,7 +27,6 @@
 #include <stdlib.h>
 #include <string.h>
 
 #include <stdlib.h>
 #include <string.h>
 
-#include "curl_memory.h"
 #include "memdebug.h" /* LAST include file */
 
 static CURLcode unit_setup(void)
 #include "memdebug.h" /* LAST include file */
 
 static CURLcode unit_setup(void)
index 8b0b0a0..6f9fc8c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -44,7 +44,7 @@ UNITTEST_START
 
   unsigned int i;
   int fails=0;
 
   unsigned int i;
   int fails=0;
-  struct dotdot pairs[] = {
+  const struct dotdot pairs[] = {
     { "/a/b/c/./../../g", "/a/g" },
     { "mid/content=5/../6", "mid/6" },
     { "/hello/../moo", "/moo" },
     { "/a/b/c/./../../g", "/a/g" },
     { "mid/content=5/../6", "mid/6" },
     { "/hello/../moo", "/moo" },
@@ -66,6 +66,7 @@ UNITTEST_START
 
   for(i=0; i < sizeof(pairs)/sizeof(pairs[0]); i++) {
     char *out = Curl_dedotdotify((char *)pairs[i].input);
 
   for(i=0; i < sizeof(pairs)/sizeof(pairs[0]); i++) {
     char *out = Curl_dedotdotify((char *)pairs[i].input);
+    abort_unless(out != NULL, "returned NULL!");
 
     if(strcmp(out, pairs[i].output)) {
       fprintf(stderr, "Test %d: '%s' gave '%s' instead of '%s'\n",
 
     if(strcmp(out, pairs[i].output)) {
       fprintf(stderr, "Test %d: '%s' gave '%s' instead of '%s'\n",
@@ -78,10 +79,6 @@ UNITTEST_START
     free(out);
   }
 
     free(out);
   }
 
-  return fails;
+  fail_if(fails, "output mismatched");
 
 UNITTEST_STOP
 
 UNITTEST_STOP
-
-
-
-
index 797443d..b18d7a8 100644 (file)
@@ -21,6 +21,8 @@
  ***************************************************************************/
 #include "curlcheck.h"
 
  ***************************************************************************/
 #include "curlcheck.h"
 
+CURL *hnd;
+
 static CURLcode unit_setup(void)
 {
   return CURLE_OK;
 static CURLcode unit_setup(void)
 {
   return CURLE_OK;
@@ -28,6 +30,8 @@ static CURLcode unit_setup(void)
 
 static void unit_stop(void)
 {
 
 static void unit_stop(void)
 {
+  if (hnd)
+    curl_easy_cleanup(hnd);
 }
 
 struct test {
 }
 
 struct test {
@@ -40,7 +44,7 @@ struct test {
 UNITTEST_START
 {
   /* unescape, this => that */
 UNITTEST_START
 {
   /* unescape, this => that */
-  struct test list1[]={
+  const struct test list1[]={
     {"%61", 3, "a", 1},
     {"%61a", 4, "aa", 2},
     {"%61b", 4, "ab", 2},
     {"%61", 3, "a", 1},
     {"%61a", 4, "aa", 2},
     {"%61b", 4, "ab", 2},
@@ -56,7 +60,7 @@ UNITTEST_START
     {NULL, 0, NULL, 0} /* end of list marker */
   };
   /* escape, this => that */
     {NULL, 0, NULL, 0} /* end of list marker */
   };
   /* escape, this => that */
-  struct test list2[]={
+  const struct test list2[]={
     {"a", 1, "a", 1},
     {"/", 1, "%2F", 3},
     {"a=b", 3, "a%3Db", 5},
     {"a", 1, "a", 1},
     {"/", 1, "%2F", 3},
     {"a=b", 3, "a%3Db", 5},
@@ -70,16 +74,16 @@ UNITTEST_START
     {NULL, 0, NULL, 0} /* end of list marker */
   };
   int i;
     {NULL, 0, NULL, 0} /* end of list marker */
   };
   int i;
-  CURL *hnd;
 
   hnd = curl_easy_init();
 
   hnd = curl_easy_init();
+  abort_unless(hnd != NULL, "returned NULL!");
   for(i=0; list1[i].in; i++) {
     int outlen;
     char *out = curl_easy_unescape(hnd,
                                    list1[i].in, list1[i].inlen,
                                    &outlen);
 
   for(i=0; list1[i].in; i++) {
     int outlen;
     char *out = curl_easy_unescape(hnd,
                                    list1[i].in, list1[i].inlen,
                                    &outlen);
 
-    fail_unless(out != NULL, "returned NULL!");
+    abort_unless(out != NULL, "returned NULL!");
     fail_unless(outlen == list1[i].outlen, "wrong output length returned");
     fail_unless(!memcmp(out, list1[i].out, list1[i].outlen),
                 "bad output data returned");
     fail_unless(outlen == list1[i].outlen, "wrong output length returned");
     fail_unless(!memcmp(out, list1[i].out, list1[i].outlen),
                 "bad output data returned");
@@ -90,10 +94,11 @@ UNITTEST_START
   }
 
   for(i=0; list2[i].in; i++) {
   }
 
   for(i=0; list2[i].in; i++) {
+    int outlen;
     char *out = curl_easy_escape(hnd, list2[i].in, list2[i].inlen);
     char *out = curl_easy_escape(hnd, list2[i].in, list2[i].inlen);
-    int outlen = (int)strlen(out);
+    abort_unless(out != NULL, "returned NULL!");
 
 
-    fail_unless(out != NULL, "returned NULL!");
+    outlen = (int)strlen(out);
     fail_unless(outlen == list2[i].outlen, "wrong output length returned");
     fail_unless(!memcmp(out, list2[i].out, list2[i].outlen),
                 "bad output data returned");
     fail_unless(outlen == list2[i].outlen, "wrong output length returned");
     fail_unless(!memcmp(out, list2[i].out, list2[i].outlen),
                 "bad output data returned");
@@ -102,8 +107,5 @@ UNITTEST_START
 
     curl_free(out);
   }
 
     curl_free(out);
   }
-
-  curl_easy_cleanup(hnd);
-
 }
 UNITTEST_STOP
 }
 UNITTEST_STOP
diff --git a/tests/unit/unit1397.c b/tests/unit/unit1397.c
new file mode 100644 (file)
index 0000000..fd60c23
--- /dev/null
@@ -0,0 +1,51 @@
+#include "curlcheck.h"
+
+#include "hostcheck.h" /* from the lib dir */
+
+static CURLcode unit_setup(void)
+{
+  return CURLE_OK;
+}
+
+static void unit_stop( void )
+{
+  /* done before shutting down and exiting */
+}
+
+UNITTEST_START
+
+/* only these backends define the tested functions */
+#if defined(USE_SSLEAY) || defined(USE_AXTLS) || defined(USE_GSKIT)
+
+  /* here you start doing things and checking that the results are good */
+
+fail_unless( Curl_cert_hostcheck("www.example.com", "www.example.com"), "good 1" );
+fail_unless( Curl_cert_hostcheck("*.example.com", "www.example.com"), "good 2" );
+fail_unless( Curl_cert_hostcheck("xxx*.example.com", "xxxwww.example.com"), "good 3" );
+fail_unless( Curl_cert_hostcheck("f*.example.com", "foo.example.com"), "good 4" );
+fail_unless( Curl_cert_hostcheck("192.168.0.0", "192.168.0.0"), "good 5" );
+
+fail_if( Curl_cert_hostcheck("xxx.example.com", "www.example.com"), "bad 1" );
+fail_if( Curl_cert_hostcheck("*", "www.example.com"), "bad 2" );
+fail_if( Curl_cert_hostcheck("*.*.com", "www.example.com"), "bad 3" );
+fail_if( Curl_cert_hostcheck("*.example.com", "baa.foo.example.com"), "bad 4" );
+fail_if( Curl_cert_hostcheck("f*.example.com", "baa.example.com"), "bad 5" );
+fail_if( Curl_cert_hostcheck("*.com", "example.com"), "bad 6" );
+fail_if( Curl_cert_hostcheck("*fail.com", "example.com"), "bad 7" );
+fail_if( Curl_cert_hostcheck("*.example.", "www.example."), "bad 8" );
+fail_if( Curl_cert_hostcheck("*.example.", "www.example"), "bad 9" );
+fail_if( Curl_cert_hostcheck("", "www"), "bad 10" );
+fail_if( Curl_cert_hostcheck("*", "www"), "bad 11" );
+fail_if( Curl_cert_hostcheck("*.168.0.0", "192.168.0.0"), "bad 12" );
+fail_if( Curl_cert_hostcheck("www.example.com", "192.168.0.0"), "bad 13" );
+
+#ifdef ENABLE_IPV6
+fail_if( Curl_cert_hostcheck("*::3285:a9ff:fe46:b619", "fe80::3285:a9ff:fe46:b619"), "bad 14" );
+fail_unless( Curl_cert_hostcheck("fe80::3285:a9ff:fe46:b619", "fe80::3285:a9ff:fe46:b619"), "good 6" );
+#endif
+
+#endif
+
+  /* you end the test code like this: */
+
+UNITTEST_STOP
diff --git a/tests/unit/unit1398.c b/tests/unit/unit1398.c
new file mode 100644 (file)
index 0000000..e579a62
--- /dev/null
@@ -0,0 +1,91 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include "curlcheck.h"
+
+#include "curl/mprintf.h"
+
+static CURLcode unit_setup( void ) {return CURLE_OK;}
+static void unit_stop( void ) {}
+
+UNITTEST_START
+
+int rc;
+char buf[3] = {'b', 'u', 'g'};
+const char *str="bug";
+int width = 3;
+char output[24];
+
+/*#define curl_msnprintf snprintf */
+
+/* without a trailing zero */
+rc = curl_msnprintf(output, 4, "%.*s", width, buf);
+fail_unless( rc == 3 , "return code should be 3" );
+fail_unless(!strcmp(output, "bug"), "wrong output");
+
+/* with a trailing zero */
+rc = curl_msnprintf(output, 4, "%.*s", width, str);
+fail_unless( rc == 3 , "return code should be 3" );
+fail_unless(!strcmp(output, "bug"), "wrong output");
+
+width = 2;
+/* one byte less */
+rc = curl_msnprintf(output, 4, "%.*s", width, buf);
+fail_unless( rc == 2 , "return code should be 2" );
+fail_unless(!strcmp(output, "bu"), "wrong output");
+
+/* string with larger precision */
+rc = curl_msnprintf(output, 8, "%.8s", str);
+fail_unless( rc == 3 , "return code should be 3" );
+fail_unless(!strcmp(output, "bug"), "wrong output");
+
+/* longer string with precision */
+rc = curl_msnprintf(output, 8, "%.3s", "0123456789");
+fail_unless( rc == 3 , "return code should be 3" );
+fail_unless(!strcmp(output, "012"), "wrong output");
+
+/* negative width */
+rc = curl_msnprintf(output, 8, "%-8s", str);
+fail_unless( rc == 8 , "return code should be 8" );
+fail_unless(!strcmp(output, "bug    "), "wrong output");
+
+/* larger width that string length */
+rc = curl_msnprintf(output, 8, "%8s", str);
+fail_unless( rc == 8 , "return code should be 8" );
+fail_unless(!strcmp(output, "     bu"), "wrong output");
+
+/* output a number in a limited output */
+rc = curl_msnprintf(output, 4, "%d", 10240);
+/* TODO: this should return 5 to be POSIX/snprintf compliant! */
+fail_unless( rc == 4 , "return code should be 4" );
+fail_unless(!strcmp(output, "102"), "wrong output");
+
+/* padded strings */
+rc = curl_msnprintf(output, 16, "%8s%8s", str, str);
+fail_unless( rc == 16 , "return code should be 16" );
+fail_unless(!strcmp(output, "     bug     bu"), "wrong output");
+
+/* padded numbers */
+rc = curl_msnprintf(output, 16, "%8d%8d", 1234, 5678);
+fail_unless( rc == 16 , "return code should be 16" );
+fail_unless(!strcmp(output, "    1234    567"), "wrong output");
+
+UNITTEST_STOP
index 6fb9ce8..8c81327 100644 (file)
    fun:Curl_connect
    fun:multi_runsingle
    fun:curl_multi_perform
    fun:Curl_connect
    fun:multi_runsingle
    fun:curl_multi_perform
+   fun:easy_transfer
+   fun:easy_perform
    fun:curl_easy_perform
    fun:curl_easy_perform
+   fun:operate_do
+   fun:operate
+   fun:main
+}
+
+{
+   libidn-idna_to_ascii-error-eventbased
+   Memcheck:Addr4
+   fun:idna_to_ascii_4z
+   fun:idna_to_ascii_8z
+   fun:idna_to_ascii_lz
+   fun:fix_hostname
+   fun:resolve_server
+   fun:create_conn
+   fun:Curl_connect
+   fun:multi_runsingle
+   fun:multi_socket
+   fun:curl_multi_socket_action
+   fun:wait_or_timeout
+   fun:easy_events
+   fun:easy_perform
+   fun:curl_easy_perform_ev
+   fun:operate_do
+   fun:operate
+   fun:main
+}
+
+{
+   libidn-idna_to_ascii-error-inlined-functions
+   Memcheck:Addr4
+   fun:idna_to_ascii_4z
+   fun:idna_to_ascii_8z
+   fun:idna_to_ascii_lz
+   fun:fix_hostname
+   fun:Curl_connect
+   fun:multi_runsingle
+   fun:curl_multi_perform
+   fun:easy_perform.part.4
+   fun:operate_do
+   fun:operate
+   fun:main
+}
+
+{
+   libidn-idna_to_ascii-error-inlined-functions-alt
+   Memcheck:Addr4
+   fun:idna_to_ascii_4z
+   fun:idna_to_ascii_8z
+   fun:idna_to_ascii_lz
+   fun:fix_hostname
+   fun:Curl_connect
+   fun:multi_runsingle
+   fun:curl_multi_perform
+   fun:easy_perform
+   fun:operate_do.isra.0
+   fun:operate
+   fun:main
+}
+
+{
+   libidn-idna_to_ascii-error-inlined-functions-alt2
+   Memcheck:Addr4
+   fun:idna_to_ascii_4z
+   fun:idna_to_ascii_8z
+   fun:idna_to_ascii_lz
+   fun:fix_hostname
+   fun:Curl_connect
+   fun:multi_runsingle
+   fun:curl_multi_perform
+   fun:easy_perform
+   fun:operate_do
    fun:operate
    fun:main
 }
    fun:operate
    fun:main
 }
diff --git a/vs/t/README b/vs/t/README
deleted file mode 100644 (file)
index 69ebd27..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-Note:\r
-\r
-Files located in subdirectory 'vs/t' and below are 'templates' used for\r
-the generation of msvc IDE workspace and project files, distributed in\r
-subdirectories 'vs/vc6' and 'vs/vc8'.\r
-\r
-All these template files use UNIX line endings intentionally, in order\r
-to allow proper file generation. Don't convert these to crlf line-ends.\r
diff --git a/vs/t/lib/vc6_libcurl_dsp.foot b/vs/t/lib/vc6_libcurl_dsp.foot
deleted file mode 100644 (file)
index fd10e8e..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-# Begin Group "Resource Files"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\..\lib\libcurl.rc
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/vs/t/lib/vc6_libcurl_dsp.head b/vs/t/lib/vc6_libcurl_dsp.head
deleted file mode 100644 (file)
index 06fb88d..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-# Microsoft Developer Studio Project File - Name="libcurl" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=libcurl - Win32 LIB Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "vc6libcurl.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "vc6libcurl.mak" CFG="libcurl - Win32 LIB Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "libcurl - Win32 DLL Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "libcurl - Win32 DLL Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "libcurl - Win32 LIB Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "libcurl - Win32 LIB Release" (based on "Win32 (x86) Static Library")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-
-!IF  "$(CFG)" == "libcurl - Win32 DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "dll-debug"
-# PROP BASE Intermediate_Dir "dll-debug/obj"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "dll-debug"
-# PROP Intermediate_Dir "dll-debug/obj"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W3 /EHsc /Zi /Od /I "..\..\..\lib" /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "BUILDING_LIBCURL" /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /EHsc /Zi /Od /I "..\..\..\lib" /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "BUILDING_LIBCURL" /FD /GZ /c
-MTL=midl.exe
-# ADD BASE MTL /nologo /D "_DEBUG" /win32
-# ADD MTL /nologo /D "_DEBUG" /win32
-RSC=rc.exe
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 wldap32.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"dll-debug/libcurld.dll" /implib:"dll-debug/libcurld_imp.lib" /pdbtype:con /fixed:no
-# ADD LINK32 wldap32.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"dll-debug/libcurld.dll" /implib:"dll-debug/libcurld_imp.lib" /pdbtype:con /fixed:no
-
-!ELSEIF  "$(CFG)" == "libcurl - Win32 DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "dll-release"
-# PROP BASE Intermediate_Dir "dll-release/obj"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "dll-release"
-# PROP Intermediate_Dir "dll-release/obj"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "..\..\..\lib" /I "..\..\..\include" /D "WIN32" /D "NDEBUG" /D "BUILDING_LIBCURL" /FD /c
-# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "..\..\..\lib" /I "..\..\..\include" /D "WIN32" /D "NDEBUG" /D "BUILDING_LIBCURL" /FD /c
-MTL=midl.exe
-# ADD BASE MTL /nologo /D "NDEBUG" /win32
-# ADD MTL /nologo /D "NDEBUG" /win32
-RSC=rc.exe
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 wldap32.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /dll /pdb:none /machine:I386 /out:"dll-release/libcurl.dll" /implib:"dll-release/libcurl_imp.lib" /fixed:no /release /incremental:no
-# ADD LINK32 wldap32.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /dll /pdb:none /machine:I386 /out:"dll-release/libcurl.dll" /implib:"dll-release/libcurl_imp.lib" /fixed:no /release /incremental:no
-
-!ELSEIF  "$(CFG)" == "libcurl - Win32 LIB Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "lib-debug"
-# PROP BASE Intermediate_Dir "lib-debug/obj"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "lib-debug"
-# PROP Intermediate_Dir "lib-debug/obj"
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W3 /EHsc /Zi /Od /I "..\..\..\lib" /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /EHsc /Zi /Od /I "..\..\..\lib" /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /FD /GZ /c
-RSC=rc.exe
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"lib-debug/libcurld.lib" /machine:I386
-# ADD LIB32 /nologo /out:"lib-debug/libcurld.lib" /machine:I386
-
-!ELSEIF  "$(CFG)" == "libcurl - Win32 LIB Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "lib-release"
-# PROP BASE Intermediate_Dir "lib-release/obj"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "lib-release"
-# PROP Intermediate_Dir "lib-release/obj"
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "..\..\..\lib" /I "..\..\..\include" /D "WIN32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /FD /c
-# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "..\..\..\lib" /I "..\..\..\include" /D "WIN32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /FD /c
-RSC=rc.exe
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"lib-release/libcurl.lib" /machine:I386
-# ADD LIB32 /nologo /out:"lib-release/libcurl.lib" /machine:I386
-
-!ENDIF 
-
-# Begin Target
-
-# Name "libcurl - Win32 DLL Debug"
-# Name "libcurl - Win32 DLL Release"
-# Name "libcurl - Win32 LIB Debug"
-# Name "libcurl - Win32 LIB Release"
diff --git a/vs/t/lib/vc8_libcurl_prj.foot b/vs/t/lib/vc8_libcurl_prj.foot
deleted file mode 100644 (file)
index 862ef42..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-               <Filter Name="Resource Files">
-                       <File RelativePath="..\..\..\lib\libcurl.rc"></File>
-               </Filter>
-       </Files>
-       <Globals>
-       </Globals>
-</VisualStudioProject>
diff --git a/vs/t/lib/vc8_libcurl_prj.head b/vs/t/lib/vc8_libcurl_prj.head
deleted file mode 100644 (file)
index 7614688..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-       ProjectType="Visual C++"
-       Version="8.00"
-       Name="libcurl"
-       ProjectGUID="{87EE9DA4-DE1E-4448-8324-183C98DCA588}"
-       >
-       <Platforms>
-               <Platform
-                       Name="Win32"
-               />
-       </Platforms>
-       <ToolFiles>
-       </ToolFiles>
-       <Configurations>
-               <Configuration
-                       Name="Release|Win32"
-                       OutputDirectory=".\Release"
-                       IntermediateDirectory=".\Release"
-                       ConfigurationType="4"
-                       InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
-                       UseOfMFC="0"
-                       ATLMinimizesCRunTimeLibraryUsage="false"
-                       CharacterSet="2"
-                       >
-                       <Tool Name="VCPreBuildEventTool"
-                       />
-                       <Tool Name="VCCustomBuildTool"
-                       />
-                       <Tool Name="VCXMLDataGeneratorTool"
-                       />
-                       <Tool Name="VCWebServiceProxyGeneratorTool"
-                       />
-                       <Tool Name="VCMIDLTool" PreprocessorDefinitions="NDEBUG" MkTypLibCompatible="true" SuppressStartupBanner="true" TargetEnvironment="1" TypeLibraryName=".\Release/libcurl.tlb" HeaderFileName=""
-                       />
-                       <Tool Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories=".,..\include" PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;BUILDING_LIBCURL" StringPooling="true" RuntimeLibrary="2" EnableFunctionLevelLinking="true" PrecompiledHeaderFile=".\Release/libcurl.pch" AssemblerListingLocation=".\Release/" ObjectFile=".\Release/" ProgramDataBaseFileName=".\Release/" BrowseInformation="1" WarningLevel="0" SuppressStartupBanner="true" DebugInformationFormat="3"
-                       />
-                       <Tool Name="VCManagedResourceCompilerTool"
-                       />
-                       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033"
-                       />
-                       <Tool Name="VCPreLinkEventTool"
-                       />
-                       <Tool Name="VCLibrarianTool"
-                       />
-                       <Tool Name="VCALinkTool"
-                       />
-                       <Tool Name="VCXDCMakeTool"
-                       />
-                       <Tool Name="VCBscMakeTool" SuppressStartupBanner="true" OutputFile=".\Release/libcurl.bsc"
-                       />
-                       <Tool Name="VCFxCopTool"
-                       />
-                       <Tool Name="VCPostBuildEventTool"
-                       />
-               </Configuration>
-               <Configuration
-                       Name="Debug|Win32"
-                       OutputDirectory=".\Debug"
-                       IntermediateDirectory=".\Debug"
-                       ConfigurationType="4"
-                       InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
-                       UseOfMFC="0"
-                       ATLMinimizesCRunTimeLibraryUsage="false"
-                       CharacterSet="2"
-                       >
-                       <Tool Name="VCPreBuildEventTool"
-                       />
-                       <Tool Name="VCCustomBuildTool"
-                       />
-                       <Tool Name="VCXMLDataGeneratorTool"
-                       />
-                       <Tool Name="VCWebServiceProxyGeneratorTool"
-                       />
-                       <Tool Name="VCMIDLTool" PreprocessorDefinitions="_DEBUG" MkTypLibCompatible="true" SuppressStartupBanner="true" TargetEnvironment="1" TypeLibraryName=".\Debug/libcurl.tlb" HeaderFileName=""
-                       />
-                       <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories=".,..\include" PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;BUILDING_LIBCURL" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" PrecompiledHeaderFile=".\Debug/libcurl.pch" AssemblerListingLocation=".\Debug/" ObjectFile=".\Debug/" ProgramDataBaseFileName=".\Debug/" BrowseInformation="1" WarningLevel="0" SuppressStartupBanner="true" DebugInformationFormat="3"
-                       />
-                       <Tool Name="VCManagedResourceCompilerTool"
-                       />
-                       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033"
-                       />
-                       <Tool Name="VCPreLinkEventTool"
-                       />
-                       <Tool Name="VCLibrarianTool"
-                       />
-                       <Tool Name="VCALinkTool"
-                       />
-                       <Tool Name="VCXDCMakeTool"
-                       />
-                       <Tool Name="VCBscMakeTool" SuppressStartupBanner="true" OutputFile=".\Debug/libcurl.bsc"
-                       />
-                       <Tool Name="VCFxCopTool"
-                       />
-                       <Tool Name="VCPostBuildEventTool"
-                       />
-               </Configuration>
-       </Configurations>
-       <References>
-       </References>
-       <Files>
diff --git a/vs/vc6/lib/vc6libcurl.dsp b/vs/vc6/lib/vc6libcurl.dsp
deleted file mode 100644 (file)
index 71c9fac..0000000
+++ /dev/null
@@ -1,1041 +0,0 @@
-# Microsoft Developer Studio Project File - Name="libcurl" - Package Owner=<4>\r
-# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
-# ** DO NOT EDIT **\r
-\r
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102\r
-# TARGTYPE "Win32 (x86) Static Library" 0x0104\r
-\r
-CFG=libcurl - Win32 LIB Debug\r
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
-!MESSAGE use the Export Makefile command and run\r
-!MESSAGE \r
-!MESSAGE NMAKE /f "vc6libcurl.mak".\r
-!MESSAGE \r
-!MESSAGE You can specify a configuration when running NMAKE\r
-!MESSAGE by defining the macro CFG on the command line. For example:\r
-!MESSAGE \r
-!MESSAGE NMAKE /f "vc6libcurl.mak" CFG="libcurl - Win32 LIB Debug"\r
-!MESSAGE \r
-!MESSAGE Possible choices for configuration are:\r
-!MESSAGE \r
-!MESSAGE "libcurl - Win32 DLL Debug" (based on "Win32 (x86) Dynamic-Link Library")\r
-!MESSAGE "libcurl - Win32 DLL Release" (based on "Win32 (x86) Dynamic-Link Library")\r
-!MESSAGE "libcurl - Win32 LIB Debug" (based on "Win32 (x86) Static Library")\r
-!MESSAGE "libcurl - Win32 LIB Release" (based on "Win32 (x86) Static Library")\r
-!MESSAGE \r
-\r
-# Begin Project\r
-# PROP AllowPerConfigDependencies 0\r
-# PROP Scc_ProjName ""\r
-# PROP Scc_LocalPath ""\r
-\r
-!IF  "$(CFG)" == "libcurl - Win32 DLL Debug"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 1\r
-# PROP BASE Output_Dir "dll-debug"\r
-# PROP BASE Intermediate_Dir "dll-debug/obj"\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 1\r
-# PROP Output_Dir "dll-debug"\r
-# PROP Intermediate_Dir "dll-debug/obj"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-CPP=cl.exe\r
-# ADD BASE CPP /nologo /MDd /W3 /EHsc /Zi /Od /I "..\..\..\lib" /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "BUILDING_LIBCURL" /FD /GZ /c\r
-# ADD CPP /nologo /MDd /W3 /EHsc /Zi /Od /I "..\..\..\lib" /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "BUILDING_LIBCURL" /FD /GZ /c\r
-MTL=midl.exe\r
-# ADD BASE MTL /nologo /D "_DEBUG" /win32\r
-# ADD MTL /nologo /D "_DEBUG" /win32\r
-RSC=rc.exe\r
-# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
-# ADD RSC /l 0x409 /d "_DEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 wldap32.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"dll-debug/libcurld.dll" /implib:"dll-debug/libcurld_imp.lib" /pdbtype:con /fixed:no\r
-# ADD LINK32 wldap32.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"dll-debug/libcurld.dll" /implib:"dll-debug/libcurld_imp.lib" /pdbtype:con /fixed:no\r
-\r
-!ELSEIF  "$(CFG)" == "libcurl - Win32 DLL Release"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 0\r
-# PROP BASE Output_Dir "dll-release"\r
-# PROP BASE Intermediate_Dir "dll-release/obj"\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 0\r
-# PROP Output_Dir "dll-release"\r
-# PROP Intermediate_Dir "dll-release/obj"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-CPP=cl.exe\r
-# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "..\..\..\lib" /I "..\..\..\include" /D "WIN32" /D "NDEBUG" /D "BUILDING_LIBCURL" /FD /c\r
-# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "..\..\..\lib" /I "..\..\..\include" /D "WIN32" /D "NDEBUG" /D "BUILDING_LIBCURL" /FD /c\r
-MTL=midl.exe\r
-# ADD BASE MTL /nologo /D "NDEBUG" /win32\r
-# ADD MTL /nologo /D "NDEBUG" /win32\r
-RSC=rc.exe\r
-# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
-# ADD RSC /l 0x409 /d "NDEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 wldap32.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /dll /pdb:none /machine:I386 /out:"dll-release/libcurl.dll" /implib:"dll-release/libcurl_imp.lib" /fixed:no /release /incremental:no\r
-# ADD LINK32 wldap32.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /dll /pdb:none /machine:I386 /out:"dll-release/libcurl.dll" /implib:"dll-release/libcurl_imp.lib" /fixed:no /release /incremental:no\r
-\r
-!ELSEIF  "$(CFG)" == "libcurl - Win32 LIB Debug"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 1\r
-# PROP BASE Output_Dir "lib-debug"\r
-# PROP BASE Intermediate_Dir "lib-debug/obj"\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 1\r
-# PROP Output_Dir "lib-debug"\r
-# PROP Intermediate_Dir "lib-debug/obj"\r
-# PROP Target_Dir ""\r
-CPP=cl.exe\r
-# ADD BASE CPP /nologo /MDd /W3 /EHsc /Zi /Od /I "..\..\..\lib" /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /FD /GZ /c\r
-# ADD CPP /nologo /MDd /W3 /EHsc /Zi /Od /I "..\..\..\lib" /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /FD /GZ /c\r
-RSC=rc.exe\r
-# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
-# ADD RSC /l 0x409 /d "_DEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LIB32=link.exe -lib\r
-# ADD BASE LIB32 /nologo /out:"lib-debug/libcurld.lib" /machine:I386\r
-# ADD LIB32 /nologo /out:"lib-debug/libcurld.lib" /machine:I386\r
-\r
-!ELSEIF  "$(CFG)" == "libcurl - Win32 LIB Release"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 0\r
-# PROP BASE Output_Dir "lib-release"\r
-# PROP BASE Intermediate_Dir "lib-release/obj"\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 0\r
-# PROP Output_Dir "lib-release"\r
-# PROP Intermediate_Dir "lib-release/obj"\r
-# PROP Target_Dir ""\r
-CPP=cl.exe\r
-# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "..\..\..\lib" /I "..\..\..\include" /D "WIN32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /FD /c\r
-# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "..\..\..\lib" /I "..\..\..\include" /D "WIN32" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /FD /c\r
-RSC=rc.exe\r
-# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
-# ADD RSC /l 0x409 /d "NDEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LIB32=link.exe -lib\r
-# ADD BASE LIB32 /nologo /out:"lib-release/libcurl.lib" /machine:I386\r
-# ADD LIB32 /nologo /out:"lib-release/libcurl.lib" /machine:I386\r
-\r
-!ENDIF \r
-\r
-# Begin Target\r
-\r
-# Name "libcurl - Win32 DLL Debug"\r
-# Name "libcurl - Win32 DLL Release"\r
-# Name "libcurl - Win32 LIB Debug"\r
-# Name "libcurl - Win32 LIB Release"\r
-# Begin Group "Source Files"\r
-\r
-# PROP Default_Filter ""\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\amigaos.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\asyn-ares.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\asyn-thread.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\axtls.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\base64.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\bundles.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\conncache.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\connect.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\content_encoding.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\cookie.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_addrinfo.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_darwinssl.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_fnmatch.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_gethostname.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_gssapi.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_memrchr.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_multibyte.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_ntlm.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_ntlm_core.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_ntlm_msgs.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_ntlm_wb.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_rtmp.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_sasl.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_schannel.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_sspi.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_threads.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\cyassl.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\dict.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\dotdot.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\easy.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\escape.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\file.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\fileinfo.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\formdata.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\ftp.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\ftplistparser.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\getenv.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\getinfo.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\gopher.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\gskit.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\gtls.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\hash.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\hmac.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\hostasyn.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\hostcheck.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\hostip4.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\hostip6.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\hostip.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\hostsyn.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\http.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\http_chunks.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\http_digest.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\http_negotiate.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\http_negotiate_sspi.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\http_proxy.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\idn_win32.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\if2ip.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\imap.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\inet_ntop.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\inet_pton.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\krb4.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\krb5.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\ldap.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\llist.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\md4.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\md5.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\memdebug.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\mprintf.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\multi.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\netrc.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\non-ascii.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\nonblock.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\nss.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\openldap.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\parsedate.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\pingpong.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\pipeline.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\polarssl.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\polarssl_threadlock.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\pop3.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\progress.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\qssl.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\rawstr.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\rtsp.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\security.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\select.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\sendf.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\share.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\slist.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\smtp.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\socks.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\socks_gssapi.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\socks_sspi.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\speedcheck.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\splay.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\ssh.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\sslgen.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\ssluse.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\strdup.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\strequal.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\strerror.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\strtok.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\strtoofft.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\telnet.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\tftp.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\timeval.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\transfer.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\url.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\version.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\warnless.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\wildcard.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\x509asn1.c\r
-# End Source File\r
-# End Group\r
-# Begin Group "Header Files"\r
-\r
-# PROP Default_Filter ""\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\amigaos.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\arpa_telnet.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\asyn.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\axtls.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\bundles.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\config-win32.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\conncache.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\connect.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\content_encoding.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\cookie.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_addrinfo.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_base64.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_darwinssl.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_fnmatch.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_gethostname.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_gssapi.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_hmac.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_ldap.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_md4.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_md5.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_memory.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_memrchr.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_multibyte.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_ntlm_core.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_ntlm.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_ntlm_msgs.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_ntlm_wb.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_rtmp.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_sasl.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_schannel.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_setup.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_setup_once.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_sspi.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curl_threads.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\curlx.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\cyassl.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\dict.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\dotdot.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\easyif.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\escape.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\file.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\fileinfo.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\formdata.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\ftp.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\ftplistparser.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\getinfo.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\gopher.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\gskit.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\gtls.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\hash.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\hostcheck.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\hostip.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\http_chunks.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\http_digest.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\http.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\http_negotiate.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\http_proxy.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\if2ip.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\imap.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\inet_ntop.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\inet_pton.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\krb4.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\llist.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\memdebug.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\multihandle.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\multiif.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\netrc.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\non-ascii.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\nonblock.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\nssg.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\parsedate.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\pingpong.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\pipeline.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\polarssl.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\polarssl_threadlock.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\pop3.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\progress.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\qssl.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\rawstr.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\rtsp.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\select.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\sendf.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\setup-vms.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\share.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\slist.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\smtp.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\sockaddr.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\socks.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\speedcheck.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\splay.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\ssh.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\sslgen.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\ssluse.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\strdup.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\strequal.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\strerror.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\strtok.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\strtoofft.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\telnet.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\tftp.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\timeval.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\transfer.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\urldata.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\url.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\warnless.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\wildcard.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\x509asn1.h\r
-# End Source File\r
-# End Group\r
-# Begin Group "Resource Files"\r
-\r
-# PROP Default_Filter ""\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\libcurl.rc\r
-# End Source File\r
-# End Group\r
-# End Target\r
-# End Project\r
diff --git a/vs/vc6/src/vc6curltool.dsp b/vs/vc6/src/vc6curltool.dsp
deleted file mode 100644 (file)
index 131b716..0000000
+++ /dev/null
@@ -1,498 +0,0 @@
-# Microsoft Developer Studio Project File - Name="curltool" - Package Owner=<4>\r
-# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
-# ** DO NOT EDIT **\r
-\r
-# TARGTYPE "Win32 (x86) Console Application" 0x0103\r
-\r
-CFG=curltool - Win32 using libcurl LIB Debug\r
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
-!MESSAGE use the Export Makefile command and run\r
-!MESSAGE \r
-!MESSAGE NMAKE /f "vc6curltool.mak".\r
-!MESSAGE \r
-!MESSAGE You can specify a configuration when running NMAKE\r
-!MESSAGE by defining the macro CFG on the command line. For example:\r
-!MESSAGE \r
-!MESSAGE NMAKE /f "vc6curltool.mak" CFG="curltool - Win32 using libcurl LIB Debug"\r
-!MESSAGE \r
-!MESSAGE Possible choices for configuration are:\r
-!MESSAGE \r
-!MESSAGE "curltool - Win32 using libcurl DLL Debug" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curltool - Win32 using libcurl DLL Release" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curltool - Win32 using libcurl LIB Debug" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curltool - Win32 using libcurl LIB Release" (based on "Win32 (x86) Console Application")\r
-!MESSAGE \r
-\r
-# Begin Project\r
-# PROP AllowPerConfigDependencies 0\r
-# PROP Scc_ProjName ""\r
-# PROP Scc_LocalPath ""\r
-CPP=cl.exe\r
-RSC=rc.exe\r
-\r
-!IF  "$(CFG)" == "curltool - Win32 using libcurl DLL Debug"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 1\r
-# PROP BASE Output_Dir "dll-debug"\r
-# PROP BASE Intermediate_Dir "dll-debug/obj"\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 1\r
-# PROP Output_Dir "dll-debug"\r
-# PROP Intermediate_Dir "dll-debug/obj"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MDd /W3 /EHsc /Zi /Od /I "..\..\..\lib" /I "..\..\..\include" /I "..\..\..\src" /D "_CONSOLE" /D "WIN32" /D "_DEBUG" /FD /GZ /c\r
-# ADD CPP /nologo /MDd /W3 /EHsc /Zi /Od /I "..\..\..\lib" /I "..\..\..\include" /I "..\..\..\src" /D "_CONSOLE" /D "WIN32" /D "_DEBUG" /FD /GZ /c\r
-# ADD BASE RSC /l 0x409 /i "..\..\..\include" /d "_DEBUG"\r
-# ADD RSC /l 0x409 /i "..\..\..\include" /d "_DEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 libcurld_imp.lib wldap32.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"dll-debug/curl.exe" /pdbtype:con /libpath:"..\lib\dll-debug" /fixed:no\r
-# ADD LINK32 libcurld_imp.lib wldap32.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"dll-debug/curl.exe" /pdbtype:con /libpath:"..\lib\dll-debug" /fixed:no\r
-\r
-!ELSEIF  "$(CFG)" == "curltool - Win32 using libcurl DLL Release"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 0\r
-# PROP BASE Output_Dir "dll-release"\r
-# PROP BASE Intermediate_Dir "dll-release/obj"\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 0\r
-# PROP Output_Dir "dll-release"\r
-# PROP Intermediate_Dir "dll-release/obj"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "..\..\..\lib" /I "..\..\..\include" /I "..\..\..\src" /D "_CONSOLE" /D "WIN32" /D "NDEBUG" /FD /c\r
-# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "..\..\..\lib" /I "..\..\..\include" /I "..\..\..\src" /D "_CONSOLE" /D "WIN32" /D "NDEBUG" /FD /c\r
-# ADD BASE RSC /l 0x409 /i "..\..\..\include" /d "NDEBUG"\r
-# ADD RSC /l 0x409 /i "..\..\..\include" /d "NDEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 libcurl_imp.lib wldap32.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"dll-release/curl.exe" /libpath:"..\lib\dll-release" /fixed:no\r
-# ADD LINK32 libcurl_imp.lib wldap32.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"dll-release/curl.exe" /libpath:"..\lib\dll-release" /fixed:no\r
-\r
-!ELSEIF  "$(CFG)" == "curltool - Win32 using libcurl LIB Debug"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 1\r
-# PROP BASE Output_Dir "lib-debug"\r
-# PROP BASE Intermediate_Dir "lib-debug/obj"\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 1\r
-# PROP Output_Dir "lib-debug"\r
-# PROP Intermediate_Dir "lib-debug/obj"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MDd /W3 /EHsc /Zi /Od /I "..\..\..\lib" /I "..\..\..\include" /I "..\..\..\src" /D "_CONSOLE" /D "WIN32" /D "_DEBUG" /D "CURL_STATICLIB" /FD /GZ /c\r
-# ADD CPP /nologo /MDd /W3 /EHsc /Zi /Od /I "..\..\..\lib" /I "..\..\..\include" /I "..\..\..\src" /D "_CONSOLE" /D "WIN32" /D "_DEBUG" /D "CURL_STATICLIB" /FD /GZ /c\r
-# ADD BASE RSC /l 0x409 /i "..\..\..\include" /d "_DEBUG"\r
-# ADD RSC /l 0x409 /i "..\..\..\include" /d "_DEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 libcurld.lib wldap32.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"lib-debug/curl.exe" /pdbtype:con /libpath:"..\lib\lib-debug" /fixed:no\r
-# ADD LINK32 libcurld.lib wldap32.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"lib-debug/curl.exe" /pdbtype:con /libpath:"..\lib\lib-debug" /fixed:no\r
-\r
-!ELSEIF  "$(CFG)" == "curltool - Win32 using libcurl LIB Release"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 0\r
-# PROP BASE Output_Dir "lib-release"\r
-# PROP BASE Intermediate_Dir "lib-release/obj"\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 0\r
-# PROP Output_Dir "lib-release"\r
-# PROP Intermediate_Dir "lib-release/obj"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /I "..\..\..\lib" /I "..\..\..\include" /I "..\..\..\src" /D "_CONSOLE" /D "WIN32" /D "NDEBUG" /D "CURL_STATICLIB" /FD /c\r
-# ADD CPP /nologo /MD /W3 /EHsc /O2 /I "..\..\..\lib" /I "..\..\..\include" /I "..\..\..\src" /D "_CONSOLE" /D "WIN32" /D "NDEBUG" /D "CURL_STATICLIB" /FD /c\r
-# ADD BASE RSC /l 0x409 /i "..\..\..\include" /d "NDEBUG"\r
-# ADD RSC /l 0x409 /i "..\..\..\include" /d "NDEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 libcurl.lib wldap32.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"lib-release/curl.exe" /libpath:"..\lib\lib-release" /fixed:no\r
-# ADD LINK32 libcurl.lib wldap32.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"lib-release/curl.exe" /libpath:"..\lib\lib-release" /fixed:no\r
-\r
-!ENDIF \r
-\r
-# Begin Target\r
-\r
-# Name "curltool - Win32 using libcurl DLL Debug"\r
-# Name "curltool - Win32 using libcurl DLL Release"\r
-# Name "curltool - Win32 using libcurl LIB Debug"\r
-# Name "curltool - Win32 using libcurl LIB Release"\r
-# Begin Group "Source Files"\r
-\r
-# PROP Default_Filter ""\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\nonblock.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\rawstr.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\strtoofft.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_binmode.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_bname.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_cb_dbg.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_cb_hdr.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_cb_prg.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_cb_rea.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_cb_see.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_cb_wrt.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_cfgable.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_convert.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_dirhie.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_doswin.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_easysrc.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_formparse.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_getparam.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_getpass.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_help.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_helpers.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_homedir.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_hugehelp.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_libinfo.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_main.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_metalink.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_mfiles.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_msgs.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_operate.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_operhlp.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_panykey.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_paramhlp.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_parsecfg.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_setopt.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_sleep.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_urlglob.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_util.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_vms.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_writeenv.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_writeout.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_xattr.c\r
-# End Source File\r
-# End Group\r
-# Begin Group "Header Files"\r
-\r
-# PROP Default_Filter ""\r
-# Begin Source File\r
-\r
-SOURCE="..\..\..\lib\config-win32.h"\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\nonblock.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\rawstr.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\lib\strtoofft.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_binmode.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_bname.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_cb_dbg.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_cb_hdr.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_cb_prg.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_cb_rea.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_cb_see.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_cb_wrt.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_cfgable.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_convert.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_dirhie.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_doswin.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_easysrc.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_formparse.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_getparam.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_getpass.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_help.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_helpers.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_homedir.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_hugehelp.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_libinfo.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_main.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_metalink.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_mfiles.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_msgs.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_operate.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_operhlp.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_panykey.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_paramhlp.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_parsecfg.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_sdecls.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_setopt.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_setup.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_sleep.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_urlglob.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_util.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_version.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_vms.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_writeenv.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_writeout.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\tool_xattr.h\r
-# End Source File\r
-# End Group\r
-# Begin Group "Resource Files"\r
-\r
-# PROP Default_Filter ""\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\src\curl.rc\r
-# End Source File\r
-# End Group\r
-# End Target\r
-# End Project\r
diff --git a/vs/vc8/lib/vc8libcurl.vcproj b/vs/vc8/lib/vc8libcurl.vcproj
deleted file mode 100644 (file)
index 1c9600e..0000000
+++ /dev/null
@@ -1,331 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>\r
-<VisualStudioProject\r
-       ProjectType="Visual C++"\r
-       Version="8.00"\r
-       Name="libcurl"\r
-       ProjectGUID="{87EE9DA4-DE1E-4448-8324-183C98DCA588}"\r
-       >\r
-       <Platforms>\r
-               <Platform\r
-                       Name="Win32"\r
-               />\r
-       </Platforms>\r
-       <ToolFiles>\r
-       </ToolFiles>\r
-       <Configurations>\r
-               <Configuration\r
-                       Name="Release|Win32"\r
-                       OutputDirectory=".\Release"\r
-                       IntermediateDirectory=".\Release"\r
-                       ConfigurationType="4"\r
-                       InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool Name="VCMIDLTool" PreprocessorDefinitions="NDEBUG" MkTypLibCompatible="true" SuppressStartupBanner="true" TargetEnvironment="1" TypeLibraryName=".\Release/libcurl.tlb" HeaderFileName=""\r
-                       />\r
-                       <Tool Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories=".,..\include" PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;BUILDING_LIBCURL" StringPooling="true" RuntimeLibrary="2" EnableFunctionLevelLinking="true" PrecompiledHeaderFile=".\Release/libcurl.pch" AssemblerListingLocation=".\Release/" ObjectFile=".\Release/" ProgramDataBaseFileName=".\Release/" BrowseInformation="1" WarningLevel="0" SuppressStartupBanner="true" DebugInformationFormat="3"\r
-                       />\r
-                       <Tool Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033"\r
-                       />\r
-                       <Tool Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool Name="VCLibrarianTool"\r
-                       />\r
-                       <Tool Name="VCALinkTool"\r
-                       />\r
-                       <Tool Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool Name="VCBscMakeTool" SuppressStartupBanner="true" OutputFile=".\Release/libcurl.bsc"\r
-                       />\r
-                       <Tool Name="VCFxCopTool"\r
-                       />\r
-                       <Tool Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="Debug|Win32"\r
-                       OutputDirectory=".\Debug"\r
-                       IntermediateDirectory=".\Debug"\r
-                       ConfigurationType="4"\r
-                       InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool Name="VCMIDLTool" PreprocessorDefinitions="_DEBUG" MkTypLibCompatible="true" SuppressStartupBanner="true" TargetEnvironment="1" TypeLibraryName=".\Debug/libcurl.tlb" HeaderFileName=""\r
-                       />\r
-                       <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories=".,..\include" PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;BUILDING_LIBCURL" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" PrecompiledHeaderFile=".\Debug/libcurl.pch" AssemblerListingLocation=".\Debug/" ObjectFile=".\Debug/" ProgramDataBaseFileName=".\Debug/" BrowseInformation="1" WarningLevel="0" SuppressStartupBanner="true" DebugInformationFormat="3"\r
-                       />\r
-                       <Tool Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033"\r
-                       />\r
-                       <Tool Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool Name="VCLibrarianTool"\r
-                       />\r
-                       <Tool Name="VCALinkTool"\r
-                       />\r
-                       <Tool Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool Name="VCBscMakeTool" SuppressStartupBanner="true" OutputFile=".\Debug/libcurl.bsc"\r
-                       />\r
-                       <Tool Name="VCFxCopTool"\r
-                       />\r
-                       <Tool Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-       </Configurations>\r
-       <References>\r
-       </References>\r
-       <Files>\r
-               <Filter Name="Source Files">\r
-                       <File RelativePath="..\..\..\lib\amigaos.c"></File>\r
-                       <File RelativePath="..\..\..\lib\asyn-ares.c"></File>\r
-                       <File RelativePath="..\..\..\lib\asyn-thread.c"></File>\r
-                       <File RelativePath="..\..\..\lib\axtls.c"></File>\r
-                       <File RelativePath="..\..\..\lib\base64.c"></File>\r
-                       <File RelativePath="..\..\..\lib\bundles.c"></File>\r
-                       <File RelativePath="..\..\..\lib\conncache.c"></File>\r
-                       <File RelativePath="..\..\..\lib\connect.c"></File>\r
-                       <File RelativePath="..\..\..\lib\content_encoding.c"></File>\r
-                       <File RelativePath="..\..\..\lib\cookie.c"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_addrinfo.c"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_darwinssl.c"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_fnmatch.c"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_gethostname.c"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_gssapi.c"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_memrchr.c"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_multibyte.c"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_ntlm.c"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_ntlm_core.c"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_ntlm_msgs.c"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_ntlm_wb.c"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_rtmp.c"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_sasl.c"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_schannel.c"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_sspi.c"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_threads.c"></File>\r
-                       <File RelativePath="..\..\..\lib\cyassl.c"></File>\r
-                       <File RelativePath="..\..\..\lib\dict.c"></File>\r
-                       <File RelativePath="..\..\..\lib\dotdot.c"></File>\r
-                       <File RelativePath="..\..\..\lib\easy.c"></File>\r
-                       <File RelativePath="..\..\..\lib\escape.c"></File>\r
-                       <File RelativePath="..\..\..\lib\file.c"></File>\r
-                       <File RelativePath="..\..\..\lib\fileinfo.c"></File>\r
-                       <File RelativePath="..\..\..\lib\formdata.c"></File>\r
-                       <File RelativePath="..\..\..\lib\ftp.c"></File>\r
-                       <File RelativePath="..\..\..\lib\ftplistparser.c"></File>\r
-                       <File RelativePath="..\..\..\lib\getenv.c"></File>\r
-                       <File RelativePath="..\..\..\lib\getinfo.c"></File>\r
-                       <File RelativePath="..\..\..\lib\gopher.c"></File>\r
-                       <File RelativePath="..\..\..\lib\gskit.c"></File>\r
-                       <File RelativePath="..\..\..\lib\gtls.c"></File>\r
-                       <File RelativePath="..\..\..\lib\hash.c"></File>\r
-                       <File RelativePath="..\..\..\lib\hmac.c"></File>\r
-                       <File RelativePath="..\..\..\lib\hostasyn.c"></File>\r
-                       <File RelativePath="..\..\..\lib\hostcheck.c"></File>\r
-                       <File RelativePath="..\..\..\lib\hostip4.c"></File>\r
-                       <File RelativePath="..\..\..\lib\hostip6.c"></File>\r
-                       <File RelativePath="..\..\..\lib\hostip.c"></File>\r
-                       <File RelativePath="..\..\..\lib\hostsyn.c"></File>\r
-                       <File RelativePath="..\..\..\lib\http.c"></File>\r
-                       <File RelativePath="..\..\..\lib\http_chunks.c"></File>\r
-                       <File RelativePath="..\..\..\lib\http_digest.c"></File>\r
-                       <File RelativePath="..\..\..\lib\http_negotiate.c"></File>\r
-                       <File RelativePath="..\..\..\lib\http_negotiate_sspi.c"></File>\r
-                       <File RelativePath="..\..\..\lib\http_proxy.c"></File>\r
-                       <File RelativePath="..\..\..\lib\idn_win32.c"></File>\r
-                       <File RelativePath="..\..\..\lib\if2ip.c"></File>\r
-                       <File RelativePath="..\..\..\lib\imap.c"></File>\r
-                       <File RelativePath="..\..\..\lib\inet_ntop.c"></File>\r
-                       <File RelativePath="..\..\..\lib\inet_pton.c"></File>\r
-                       <File RelativePath="..\..\..\lib\krb4.c"></File>\r
-                       <File RelativePath="..\..\..\lib\krb5.c"></File>\r
-                       <File RelativePath="..\..\..\lib\ldap.c"></File>\r
-                       <File RelativePath="..\..\..\lib\llist.c"></File>\r
-                       <File RelativePath="..\..\..\lib\md4.c"></File>\r
-                       <File RelativePath="..\..\..\lib\md5.c"></File>\r
-                       <File RelativePath="..\..\..\lib\memdebug.c"></File>\r
-                       <File RelativePath="..\..\..\lib\mprintf.c"></File>\r
-                       <File RelativePath="..\..\..\lib\multi.c"></File>\r
-                       <File RelativePath="..\..\..\lib\netrc.c"></File>\r
-                       <File RelativePath="..\..\..\lib\non-ascii.c"></File>\r
-                       <File RelativePath="..\..\..\lib\nonblock.c"></File>\r
-                       <File RelativePath="..\..\..\lib\nss.c"></File>\r
-                       <File RelativePath="..\..\..\lib\openldap.c"></File>\r
-                       <File RelativePath="..\..\..\lib\parsedate.c"></File>\r
-                       <File RelativePath="..\..\..\lib\pingpong.c"></File>\r
-                       <File RelativePath="..\..\..\lib\pipeline.c"></File>\r
-                       <File RelativePath="..\..\..\lib\polarssl.c"></File>\r
-                       <File RelativePath="..\..\..\lib\polarssl_threadlock.c"></File>\r
-                       <File RelativePath="..\..\..\lib\pop3.c"></File>\r
-                       <File RelativePath="..\..\..\lib\progress.c"></File>\r
-                       <File RelativePath="..\..\..\lib\qssl.c"></File>\r
-                       <File RelativePath="..\..\..\lib\rawstr.c"></File>\r
-                       <File RelativePath="..\..\..\lib\rtsp.c"></File>\r
-                       <File RelativePath="..\..\..\lib\security.c"></File>\r
-                       <File RelativePath="..\..\..\lib\select.c"></File>\r
-                       <File RelativePath="..\..\..\lib\sendf.c"></File>\r
-                       <File RelativePath="..\..\..\lib\share.c"></File>\r
-                       <File RelativePath="..\..\..\lib\slist.c"></File>\r
-                       <File RelativePath="..\..\..\lib\smtp.c"></File>\r
-                       <File RelativePath="..\..\..\lib\socks.c"></File>\r
-                       <File RelativePath="..\..\..\lib\socks_gssapi.c"></File>\r
-                       <File RelativePath="..\..\..\lib\socks_sspi.c"></File>\r
-                       <File RelativePath="..\..\..\lib\speedcheck.c"></File>\r
-                       <File RelativePath="..\..\..\lib\splay.c"></File>\r
-                       <File RelativePath="..\..\..\lib\ssh.c"></File>\r
-                       <File RelativePath="..\..\..\lib\sslgen.c"></File>\r
-                       <File RelativePath="..\..\..\lib\ssluse.c"></File>\r
-                       <File RelativePath="..\..\..\lib\strdup.c"></File>\r
-                       <File RelativePath="..\..\..\lib\strequal.c"></File>\r
-                       <File RelativePath="..\..\..\lib\strerror.c"></File>\r
-                       <File RelativePath="..\..\..\lib\strtok.c"></File>\r
-                       <File RelativePath="..\..\..\lib\strtoofft.c"></File>\r
-                       <File RelativePath="..\..\..\lib\telnet.c"></File>\r
-                       <File RelativePath="..\..\..\lib\tftp.c"></File>\r
-                       <File RelativePath="..\..\..\lib\timeval.c"></File>\r
-                       <File RelativePath="..\..\..\lib\transfer.c"></File>\r
-                       <File RelativePath="..\..\..\lib\url.c"></File>\r
-                       <File RelativePath="..\..\..\lib\version.c"></File>\r
-                       <File RelativePath="..\..\..\lib\warnless.c"></File>\r
-                       <File RelativePath="..\..\..\lib\wildcard.c"></File>\r
-                       <File RelativePath="..\..\..\lib\x509asn1.c"></File>\r
-               </Filter>\r
-               <Filter Name="Header Files">\r
-                       <File RelativePath="..\..\..\lib\amigaos.h"></File>\r
-                       <File RelativePath="..\..\..\lib\arpa_telnet.h"></File>\r
-                       <File RelativePath="..\..\..\lib\asyn.h"></File>\r
-                       <File RelativePath="..\..\..\lib\axtls.h"></File>\r
-                       <File RelativePath="..\..\..\lib\bundles.h"></File>\r
-                       <File RelativePath="..\..\..\lib\config-win32.h"></File>\r
-                       <File RelativePath="..\..\..\lib\conncache.h"></File>\r
-                       <File RelativePath="..\..\..\lib\connect.h"></File>\r
-                       <File RelativePath="..\..\..\lib\content_encoding.h"></File>\r
-                       <File RelativePath="..\..\..\lib\cookie.h"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_addrinfo.h"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_base64.h"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_darwinssl.h"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_fnmatch.h"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_gethostname.h"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_gssapi.h"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_hmac.h"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_ldap.h"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_md4.h"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_md5.h"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_memory.h"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_memrchr.h"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_multibyte.h"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_ntlm_core.h"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_ntlm.h"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_ntlm_msgs.h"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_ntlm_wb.h"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_rtmp.h"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_sasl.h"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_schannel.h"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_setup.h"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_setup_once.h"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_sspi.h"></File>\r
-                       <File RelativePath="..\..\..\lib\curl_threads.h"></File>\r
-                       <File RelativePath="..\..\..\lib\curlx.h"></File>\r
-                       <File RelativePath="..\..\..\lib\cyassl.h"></File>\r
-                       <File RelativePath="..\..\..\lib\dict.h"></File>\r
-                       <File RelativePath="..\..\..\lib\dotdot.h"></File>\r
-                       <File RelativePath="..\..\..\lib\easyif.h"></File>\r
-                       <File RelativePath="..\..\..\lib\escape.h"></File>\r
-                       <File RelativePath="..\..\..\lib\file.h"></File>\r
-                       <File RelativePath="..\..\..\lib\fileinfo.h"></File>\r
-                       <File RelativePath="..\..\..\lib\formdata.h"></File>\r
-                       <File RelativePath="..\..\..\lib\ftp.h"></File>\r
-                       <File RelativePath="..\..\..\lib\ftplistparser.h"></File>\r
-                       <File RelativePath="..\..\..\lib\getinfo.h"></File>\r
-                       <File RelativePath="..\..\..\lib\gopher.h"></File>\r
-                       <File RelativePath="..\..\..\lib\gskit.h"></File>\r
-                       <File RelativePath="..\..\..\lib\gtls.h"></File>\r
-                       <File RelativePath="..\..\..\lib\hash.h"></File>\r
-                       <File RelativePath="..\..\..\lib\hostcheck.h"></File>\r
-                       <File RelativePath="..\..\..\lib\hostip.h"></File>\r
-                       <File RelativePath="..\..\..\lib\http_chunks.h"></File>\r
-                       <File RelativePath="..\..\..\lib\http_digest.h"></File>\r
-                       <File RelativePath="..\..\..\lib\http.h"></File>\r
-                       <File RelativePath="..\..\..\lib\http_negotiate.h"></File>\r
-                       <File RelativePath="..\..\..\lib\http_proxy.h"></File>\r
-                       <File RelativePath="..\..\..\lib\if2ip.h"></File>\r
-                       <File RelativePath="..\..\..\lib\imap.h"></File>\r
-                       <File RelativePath="..\..\..\lib\inet_ntop.h"></File>\r
-                       <File RelativePath="..\..\..\lib\inet_pton.h"></File>\r
-                       <File RelativePath="..\..\..\lib\krb4.h"></File>\r
-                       <File RelativePath="..\..\..\lib\llist.h"></File>\r
-                       <File RelativePath="..\..\..\lib\memdebug.h"></File>\r
-                       <File RelativePath="..\..\..\lib\multihandle.h"></File>\r
-                       <File RelativePath="..\..\..\lib\multiif.h"></File>\r
-                       <File RelativePath="..\..\..\lib\netrc.h"></File>\r
-                       <File RelativePath="..\..\..\lib\non-ascii.h"></File>\r
-                       <File RelativePath="..\..\..\lib\nonblock.h"></File>\r
-                       <File RelativePath="..\..\..\lib\nssg.h"></File>\r
-                       <File RelativePath="..\..\..\lib\parsedate.h"></File>\r
-                       <File RelativePath="..\..\..\lib\pingpong.h"></File>\r
-                       <File RelativePath="..\..\..\lib\pipeline.h"></File>\r
-                       <File RelativePath="..\..\..\lib\polarssl.h"></File>\r
-                       <File RelativePath="..\..\..\lib\polarssl_threadlock.h"></File>\r
-                       <File RelativePath="..\..\..\lib\pop3.h"></File>\r
-                       <File RelativePath="..\..\..\lib\progress.h"></File>\r
-                       <File RelativePath="..\..\..\lib\qssl.h"></File>\r
-                       <File RelativePath="..\..\..\lib\rawstr.h"></File>\r
-                       <File RelativePath="..\..\..\lib\rtsp.h"></File>\r
-                       <File RelativePath="..\..\..\lib\select.h"></File>\r
-                       <File RelativePath="..\..\..\lib\sendf.h"></File>\r
-                       <File RelativePath="..\..\..\lib\setup-vms.h"></File>\r
-                       <File RelativePath="..\..\..\lib\share.h"></File>\r
-                       <File RelativePath="..\..\..\lib\slist.h"></File>\r
-                       <File RelativePath="..\..\..\lib\smtp.h"></File>\r
-                       <File RelativePath="..\..\..\lib\sockaddr.h"></File>\r
-                       <File RelativePath="..\..\..\lib\socks.h"></File>\r
-                       <File RelativePath="..\..\..\lib\speedcheck.h"></File>\r
-                       <File RelativePath="..\..\..\lib\splay.h"></File>\r
-                       <File RelativePath="..\..\..\lib\ssh.h"></File>\r
-                       <File RelativePath="..\..\..\lib\sslgen.h"></File>\r
-                       <File RelativePath="..\..\..\lib\ssluse.h"></File>\r
-                       <File RelativePath="..\..\..\lib\strdup.h"></File>\r
-                       <File RelativePath="..\..\..\lib\strequal.h"></File>\r
-                       <File RelativePath="..\..\..\lib\strerror.h"></File>\r
-                       <File RelativePath="..\..\..\lib\strtok.h"></File>\r
-                       <File RelativePath="..\..\..\lib\strtoofft.h"></File>\r
-                       <File RelativePath="..\..\..\lib\telnet.h"></File>\r
-                       <File RelativePath="..\..\..\lib\tftp.h"></File>\r
-                       <File RelativePath="..\..\..\lib\timeval.h"></File>\r
-                       <File RelativePath="..\..\..\lib\transfer.h"></File>\r
-                       <File RelativePath="..\..\..\lib\urldata.h"></File>\r
-                       <File RelativePath="..\..\..\lib\url.h"></File>\r
-                       <File RelativePath="..\..\..\lib\warnless.h"></File>\r
-                       <File RelativePath="..\..\..\lib\wildcard.h"></File>\r
-                       <File RelativePath="..\..\..\lib\x509asn1.h"></File>\r
-               </Filter>\r
-               <Filter Name="Resource Files">\r
-                       <File RelativePath="..\..\..\lib\libcurl.rc"></File>\r
-               </Filter>\r
-       </Files>\r
-       <Globals>\r
-       </Globals>\r
-</VisualStudioProject>\r
index 5eac382..757c41f 100644 (file)
@@ -1,18 +1,24 @@
 Building with Visual C++, prerequises\r
 =====================================\r
 Building with Visual C++, prerequises\r
 =====================================\r
+\r
    This document describes how to compile, build and install curl and libcurl\r
    from sources using the Visual C++ build tool. To build with VC++, you will\r
    of course have to first install VC++. The minimum required version of\r
    This document describes how to compile, build and install curl and libcurl\r
    from sources using the Visual C++ build tool. To build with VC++, you will\r
    of course have to first install VC++. The minimum required version of\r
-   VC is 6 (part of Visual Studio 6). However using a more recent version like\r
-   2008 (vc9) is strongly recommended.\r
+   VC is 6 (part of Visual Studio 6). However using a more recent version is\r
+   strongly recommended.\r
 \r
    VC++ is also part of the Windows Platform SDK. You do not have to install\r
    the full Visual Studio or Visual C++ if all you want is to build curl.\r
 \r
 \r
    VC++ is also part of the Windows Platform SDK. You do not have to install\r
    the full Visual Studio or Visual C++ if all you want is to build curl.\r
 \r
-   The Platform SDK can be fetched here, freely:\r
+   The latest Platform SDK can be downloaded freely from:\r
 \r
     http://msdn.microsoft.com/en-us/windows/bb980924\r
 \r
 \r
     http://msdn.microsoft.com/en-us/windows/bb980924\r
 \r
+   If you are building with VC6 then you will also need the February 2003\r
+   Edition of the Platform SDK which can be downloaded from:\r
+\r
+    http://www.microsoft.com/en-us/download/details.aspx?id=12261\r
+\r
    If you wish to support zlib, openssl, ssh2, you will have to download\r
    them separately and copy them to the deps directory as shown below:\r
    \r
    If you wish to support zlib, openssl, ssh2, you will have to download\r
    them separately and copy them to the deps directory as shown below:\r
    \r
@@ -52,10 +58,10 @@ a directory named using the options given to the nmake call.
 nmake /f Makefile.vc mode=<static or dll> <options>\r
 \r
 where <options> is one or many of:\r
 nmake /f Makefile.vc mode=<static or dll> <options>\r
 \r
 where <options> is one or many of:\r
-  VC=<6,7,8,9,10>              - VC versions\r
+  VC=<6,7,8,9,10,11,12>        - VC versions\r
   WITH_DEVEL=<path>            - Paths for the development files (SSL, zlib, etc.)\r
                                  Defaults to sibbling directory deps: ../deps\r
   WITH_DEVEL=<path>            - Paths for the development files (SSL, zlib, etc.)\r
                                  Defaults to sibbling directory deps: ../deps\r
-                                 Libraries can be fetched at http://pecl2.php.net/downloads/php-windows-builds/\r
+                                 Libraries can be fetched at http://windows.php.net/downloads/php-sdk/deps/\r
                                  Uncompress them into the deps folder.\r
   WITH_SSL=<dll or static>     - Enable OpenSSL support, DLL or static\r
   WITH_ZLIB=<dll or static>    - Enable zlib support, DLL or static\r
                                  Uncompress them into the deps folder.\r
   WITH_SSL=<dll or static>     - Enable OpenSSL support, DLL or static\r
   WITH_ZLIB=<dll or static>    - Enable zlib support, DLL or static\r
@@ -68,4 +74,4 @@ where <options> is one or many of:
   ENABLE_WINSSL=<yes or no>    - Enable native Windows SSL support, defaults to yes\r
   GEN_PDB=<yes or no>          - Generate Program Database (debug symbols for release build)\r
   DEBUG=<yes or no>            - Debug builds\r
   ENABLE_WINSSL=<yes or no>    - Enable native Windows SSL support, defaults to yes\r
   GEN_PDB=<yes or no>          - Generate Program Database (debug symbols for release build)\r
   DEBUG=<yes or no>            - Debug builds\r
-  MACHINE=<x86 or x64>         - Target architecture (default is x86)
\ No newline at end of file
+  MACHINE=<x86 or x64>         - Target architecture (default is x86)\r
index bc42832..6dc58c4 100644 (file)
@@ -15,7 +15,7 @@ CFGSET=true
 \r
 !MESSAGE Usage: nmake /f Makefile.vc mode=<static or dll> <options>\r
 !MESSAGE where <options> is one or many of:\r
 \r
 !MESSAGE Usage: nmake /f Makefile.vc mode=<static or dll> <options>\r
 !MESSAGE where <options> is one or many of:\r
-!MESSAGE   VC=<6,7,8,9,10>              - VC versions\r
+!MESSAGE   VC=<6,7,8,9,10,11,12>        - VC versions\r
 !MESSAGE   WITH_DEVEL=<path>            - Paths for the development files (SSL, zlib, etc.)\r
 !MESSAGE                                  Defaults to sibbling directory deps: ../deps\r
 !MESSAGE                                  Libraries can be fetched at http://pecl2.php.net/downloads/php-windows-builds/\r
 !MESSAGE   WITH_DEVEL=<path>            - Paths for the development files (SSL, zlib, etc.)\r
 !MESSAGE                                  Defaults to sibbling directory deps: ../deps\r
 !MESSAGE                                  Libraries can be fetched at http://pecl2.php.net/downloads/php-windows-builds/\r
@@ -28,7 +28,6 @@ CFGSET=true
 !MESSAGE                                  http://www.microsoft.com/downloads/details.aspx?FamilyID=AD6158D7-DDBA-416A-9109-07607425A815\r
 !MESSAGE   ENABLE_IPV6=<yes or no>      - Enable IPv6, defaults to yes\r
 !MESSAGE   ENABLE_SSPI=<yes or no>      - Enable SSPI support, defaults to yes\r
 !MESSAGE                                  http://www.microsoft.com/downloads/details.aspx?FamilyID=AD6158D7-DDBA-416A-9109-07607425A815\r
 !MESSAGE   ENABLE_IPV6=<yes or no>      - Enable IPv6, defaults to yes\r
 !MESSAGE   ENABLE_SSPI=<yes or no>      - Enable SSPI support, defaults to yes\r
-!MESSAGE   ENABLE_SPNEGO=<yes or no>    - Enable Simple and Protected GSSAPI Negotiation Mechanism, defaults to yes\r
 !MESSAGE   ENABLE_WINSSL=<yes or no>    - Enable native Windows SSL support, defaults to yes\r
 !MESSAGE   GEN_PDB=<yes or no>          - Generate Program Database (debug symbols for release build)\r
 !MESSAGE   DEBUG=<yes or no>            - Debug builds\r
 !MESSAGE   ENABLE_WINSSL=<yes or no>    - Enable native Windows SSL support, defaults to yes\r
 !MESSAGE   GEN_PDB=<yes or no>          - Generate Program Database (debug symbols for release build)\r
 !MESSAGE   DEBUG=<yes or no>            - Debug builds\r
@@ -86,16 +85,12 @@ USE_SSPI = true
 USE_SSPI = false\r
 !ENDIF\r
 \r
 USE_SSPI = false\r
 !ENDIF\r
 \r
-!IFNDEF ENABLE_SPNEGO\r
-USE_SPNEGO = true\r
-!ELSEIF "$(ENABLE_SPNEGO)"=="yes"\r
-USE_SPNEGO = true\r
-!ELSEIF "$(ENABLE_SPNEGO)"=="no"\r
-USE_SPNEGO = false\r
-!ENDIF\r
-\r
 !IFNDEF ENABLE_WINSSL\r
 !IFNDEF ENABLE_WINSSL\r
+!IFDEF WITH_SSL\r
+USE_WINSSL = false\r
+!ELSE\r
 USE_WINSSL = $(USE_SSPI)\r
 USE_WINSSL = $(USE_SSPI)\r
+!ENDIF\r
 !ELSEIF "$(ENABLE_WINSSL)"=="yes"\r
 USE_WINSSL = true\r
 !ELSEIF "$(ENABLE_WINSSL)"=="no"\r
 !ELSEIF "$(ENABLE_WINSSL)"=="yes"\r
 USE_WINSSL = true\r
 !ELSEIF "$(ENABLE_WINSSL)"=="no"\r
@@ -162,10 +157,6 @@ CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-ipv6
 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-sspi\r
 !ENDIF\r
 \r
 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-sspi\r
 !ENDIF\r
 \r
-!IF "$(USE_SPNEGO)"=="true"\r
-CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-spnego\r
-!ENDIF\r
-\r
 !IF "$(USE_WINSSL)"=="true"\r
 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-winssl\r
 !ENDIF\r
 !IF "$(USE_WINSSL)"=="true"\r
 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-winssl\r
 !ENDIF\r
@@ -193,10 +184,9 @@ $(MODE):
        @SET USE_IDN=$(USE_IDN)\r
        @SET USE_IPV6=$(USE_IPV6)\r
        @SET USE_SSPI=$(USE_SSPI)\r
        @SET USE_IDN=$(USE_IDN)\r
        @SET USE_IPV6=$(USE_IPV6)\r
        @SET USE_SSPI=$(USE_SSPI)\r
-       @SET USE_SPNEGO=$(USE_SPNEGO)\r
        @SET USE_WINSSL=$(USE_WINSSL)\r
        @$(MAKE) /NOLOGO /F MakefileBuild.vc\r
 \r
 copy_from_lib:\r
        echo copying .c...\r
        @SET USE_WINSSL=$(USE_WINSSL)\r
        @$(MAKE) /NOLOGO /F MakefileBuild.vc\r
 \r
 copy_from_lib:\r
        echo copying .c...\r
-       FOR %%i IN ($(CURLX_ONES:/=\)) DO copy %%i ..\src\\r
+       FOR %%i IN ($(CURLX_CFILES:/=\)) DO copy %%i ..\src\\r
index 1f67010..b9e150c 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___\r
 #                             \___|\___/|_| \_\_____|\r
 #\r
 #                            | (__| |_| |  _ <| |___\r
 #                             \___|\___/|_| \_\_____|\r
 #\r
-# Copyright (C) 1999 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.\r
+# Copyright (C) 1999 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.\r
 #\r
 # This software is licensed as described in the file COPYING, which\r
 # you should have received as part of this distribution. The terms\r
 #\r
 # This software is licensed as described in the file COPYING, which\r
 # you should have received as part of this distribution. The terms\r
@@ -22,7 +22,7 @@
 \r
 ###########################################################################\r
 #\r
 \r
 ###########################################################################\r
 #\r
-# Makefile for building libcurl with MSVC 6, 7, 8, 9 and 10\r
+# Makefile for building libcurl with MSVC 6, 7, 8, 9, 10, 11 and 12\r
 #\r
 # Usage: see usage message below\r
 #        Should be invoked from winbuild directory\r
 #\r
 # Usage: see usage message below\r
 #        Should be invoked from winbuild directory\r
@@ -50,11 +50,11 @@ ZIP        = zip.exe
 !IF "$(VC)"=="6"\r
 CC_NODEBUG  = cl.exe /O2 /DNDEBUG\r
 CC_DEBUG    = cl.exe /Od /Gm /Zi /D_DEBUG /GZ\r
 !IF "$(VC)"=="6"\r
 CC_NODEBUG  = cl.exe /O2 /DNDEBUG\r
 CC_DEBUG    = cl.exe /Od /Gm /Zi /D_DEBUG /GZ\r
-CFLAGS     = /I. /I../include /nologo /W3 /GX /DWIN32 /YX /FD /c /DBUILDING_LIBCURL\r
+CFLAGS     = /I. /I../lib /I../include /nologo /W3 /GX /DWIN32 /YX /FD /c /DBUILDING_LIBCURL\r
 !ELSE\r
 CC_NODEBUG  = cl.exe /O2 /DNDEBUG\r
 CC_DEBUG    = cl.exe /Od /D_DEBUG /RTC1 /Z7 /LDd /W3\r
 !ELSE\r
 CC_NODEBUG  = cl.exe /O2 /DNDEBUG\r
 CC_DEBUG    = cl.exe /Od /D_DEBUG /RTC1 /Z7 /LDd /W3\r
-CFLAGS      = /I. /I../include /nologo /W3 /EHsc /DWIN32 /FD /c /DBUILDING_LIBCURL\r
+CFLAGS      = /I. /I ../lib /I../include /nologo /W3 /EHsc /DWIN32 /FD /c /DBUILDING_LIBCURL\r
 !ENDIF\r
 \r
 LFLAGS     = /nologo /machine:$(MACHINE)\r
 !ENDIF\r
 \r
 LFLAGS     = /nologo /machine:$(MACHINE)\r
@@ -112,7 +112,7 @@ SSL_LIBS     = libeay32.lib ssleay32.lib
 USE_SSL      = true\r
 SSL          = dll\r
 !ELSEIF "$(WITH_SSL)"=="static"\r
 USE_SSL      = true\r
 SSL          = dll\r
 !ELSEIF "$(WITH_SSL)"=="static"\r
-SSL_LIBS     = libeay32.lib ssleay32.lib gdi32.lib user32.lib\r
+SSL_LIBS     = libeay32.lib ssleay32.lib gdi32.lib user32.lib crypt32.lib\r
 USE_SSL      = true\r
 SSL          = static\r
 !ENDIF\r
 USE_SSL      = true\r
 SSL          = static\r
 !ENDIF\r
@@ -187,17 +187,6 @@ SSPI_CFLAGS = $(SSPI_CFLAGS) /DUSE_WINDOWS_SSPI
 !ENDIF\r
 \r
 \r
 !ENDIF\r
 \r
 \r
-!IFNDEF USE_SPNEGO\r
-USE_SPNEGO  = true\r
-!ELSEIF "$(USE_SPNEGO)"=="yes"\r
-USE_SPNEGO  = true\r
-!ENDIF\r
-\r
-!IF "$(USE_SPNEGO)"=="true"\r
-SPNEGO_CFLAGS = $(SPNEGO_CFLAGS) /DHAVE_SPNEGO\r
-!ENDIF\r
-\r
-\r
 !IFNDEF USE_WINSSL\r
 !IF "$(USE_SSL)"=="true"\r
 USE_WINSSL  = false\r
 !IFNDEF USE_WINSSL\r
 !IF "$(USE_SSL)"=="true"\r
 USE_WINSSL  = false\r
@@ -330,10 +319,6 @@ CFLAGS = $(CFLAGS) $(IPV6_CFLAGS)
 CFLAGS = $(CFLAGS) $(SSPI_CFLAGS)\r
 !ENDIF\r
 \r
 CFLAGS = $(CFLAGS) $(SSPI_CFLAGS)\r
 !ENDIF\r
 \r
-!IF "$(USE_SPNEGO)"=="true"\r
-CFLAGS = $(CFLAGS) $(SPNEGO_CFLAGS)\r
-!ENDIF\r
-\r
 !IF "$(GEN_PDB)"=="true"\r
 CFLAGS = $(CFLAGS) $(CFLAGS_PDB) /Fd"$(LIB_DIROBJ)\$(PDB)"\r
 LFLAGS = $(LFLAGS) $(LFLAGS_PDB)\r
 !IF "$(GEN_PDB)"=="true"\r
 CFLAGS = $(CFLAGS) $(CFLAGS_PDB) /Fd"$(LIB_DIROBJ)\$(PDB)"\r
 LFLAGS = $(LFLAGS) $(LFLAGS_PDB)\r
@@ -396,7 +381,6 @@ $(TARGET): $(LIB_OBJS) $(LIB_DIROBJ) $(DISTDIR)
        @echo Using IDN:  $(USE_IDN)\r
        @echo Using IPv6: $(USE_IPV6)\r
        @echo Using SSPI: $(USE_SSPI)\r
        @echo Using IDN:  $(USE_IDN)\r
        @echo Using IPv6: $(USE_IPV6)\r
        @echo Using SSPI: $(USE_SSPI)\r
-       @echo Using SPNEGO: $(USE_SPNEGO)\r
        @echo Using WinSSL: $(USE_WINSSL)\r
        @echo CFLAGS:     $(CFLAGS)\r
        @echo LFLAGS:     $(LFLAGS)\r
        @echo Using WinSSL: $(USE_WINSSL)\r
        @echo CFLAGS:     $(CFLAGS)\r
        @echo LFLAGS:     $(LFLAGS)\r
@@ -425,6 +409,7 @@ $(DIRDIST):
 \r
 $(LIB_DIROBJ):\r
        @if not exist "$(LIB_DIROBJ)" mkdir $(LIB_DIROBJ)\r
 \r
 $(LIB_DIROBJ):\r
        @if not exist "$(LIB_DIROBJ)" mkdir $(LIB_DIROBJ)\r
+       @if not exist "$(LIB_DIROBJ)\vtls" mkdir $(LIB_DIROBJ)\vtls\r
 \r
 $(CURL_DIROBJ):\r
        @if not exist "$(CURL_DIROBJ)" mkdir $(CURL_DIROBJ)\r
 \r
 $(CURL_DIROBJ):\r
        @if not exist "$(CURL_DIROBJ)" mkdir $(CURL_DIROBJ)\r
@@ -437,6 +422,9 @@ $(CURL_DIROBJ):
 {$(LIBCURL_SRC_DIR)\}.c{$(LIB_DIROBJ)\}.obj:\r
        $(CC) $(CFLAGS) /Fo"$@"  $<\r
 \r
 {$(LIBCURL_SRC_DIR)\}.c{$(LIB_DIROBJ)\}.obj:\r
        $(CC) $(CFLAGS) /Fo"$@"  $<\r
 \r
+{$(LIBCURL_SRC_DIR)\vtls\}.c{$(LIB_DIROBJ)\vtls\}.obj:\r
+       $(CC) $(CFLAGS) /Fo"$@"  $<\r
+\r
 $(LIB_DIROBJ)\libcurl.res: $(LIBCURL_SRC_DIR)\libcurl.rc\r
        rc $(RC_FLAGS)\r
 \r
 $(LIB_DIROBJ)\libcurl.res: $(LIBCURL_SRC_DIR)\libcurl.rc\r
        rc $(RC_FLAGS)\r
 \r
@@ -462,7 +450,8 @@ CURL_LIBCURL_LIBNAME=$(LIB_NAME_IMP)
 CURL_FROM_LIBCURL=$(CURL_DIROBJ)\tool_hugehelp.obj \\r
  $(CURL_DIROBJ)\nonblock.obj \\r
  $(CURL_DIROBJ)\rawstr.obj \\r
 CURL_FROM_LIBCURL=$(CURL_DIROBJ)\tool_hugehelp.obj \\r
  $(CURL_DIROBJ)\nonblock.obj \\r
  $(CURL_DIROBJ)\rawstr.obj \\r
- $(CURL_DIROBJ)\strtoofft.obj\r
+ $(CURL_DIROBJ)\strtoofft.obj \\r
+ $(CURL_DIROBJ)\warnless.obj\r
  \r
 $(PROGRAM_NAME): $(CURL_DIROBJ) $(CURL_FROM_LIBCURL) $(EXE_OBJS)\r
        $(CURL_LINK) $(CURL_LFLAGS) $(CURL_LIBCURL_LIBNAME) $(WIN_LIBS) $(CURL_FROM_LIBCURL) $(EXE_OBJS)\r
  \r
 $(PROGRAM_NAME): $(CURL_DIROBJ) $(CURL_FROM_LIBCURL) $(EXE_OBJS)\r
        $(CURL_LINK) $(CURL_LFLAGS) $(CURL_LIBCURL_LIBNAME) $(WIN_LIBS) $(CURL_FROM_LIBCURL) $(EXE_OBJS)\r
@@ -479,6 +468,8 @@ $(CURL_DIROBJ)\rawstr.obj: ../lib/rawstr.c
        $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/rawstr.c\r
 $(CURL_DIROBJ)\strtoofft.obj: ../lib/strtoofft.c\r
        $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/strtoofft.c\r
        $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/rawstr.c\r
 $(CURL_DIROBJ)\strtoofft.obj: ../lib/strtoofft.c\r
        $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/strtoofft.c\r
+$(CURL_DIROBJ)\warnless.obj: ../lib/warnless.c\r
+       $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/warnless.c\r
 $(CURL_DIROBJ)\curl.res: $(CURL_SRC_DIR)\curl.rc\r
        rc $(CURL_RC_FLAGS)\r
 \r
 $(CURL_DIROBJ)\curl.res: $(CURL_SRC_DIR)\curl.rc\r
        rc $(CURL_RC_FLAGS)\r
 \r
index d08b01e..434f369 100755 (executable)
@@ -1,6 +1,6 @@
-@echo OFF\r
-@del %OUTFILE%\r
-@echo %MACRO_NAME% = \> %OUTFILE%\r
+@echo OFF
+@del %OUTFILE%
+@echo %MACRO_NAME% = \> %OUTFILE%
 @for %%i in (%*) do @echo              %DIROBJ%/%%i \>>  %OUTFILE%
 @for %%i in (%*) do @echo              %DIROBJ%/%%i \>>  %OUTFILE%
-@echo. >>  %OUTFILE%\r
-:END\r
+@echo. >>  %OUTFILE%
+:END